plan time of MASSIVE partitioning ...

Started by PostgreSQL - Hans-Jürgen Schönigover 15 years ago64 messages

hello everybody,

we came across an issue which turned out to be more serious than previously expected.
imagine a system with, say, 1000 partitions (heavily indexed) or so. the time taken by the planner is already fairly heavy in this case.

i tried this one with 5000 unindexed tables (just one col):

test=# \timing
Timing is on.
test=# prepare x(int4) AS select * from t_data order by id desc;
PREPARE
Time: 361.552 ms

you will see similar or higher runtimes in case of 500 partitions and a handful of indexes.

does anybody see a potential way to do a shortcut through the planner?
a prepared query is no solution here as constraint exclusion would be dead in this case (making the entire thing an even bigger drama).

did anybody think of a solution to this problem.
or more precisely: can there be a solution to this problem?

many thanks,

hans

--
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de

#2Stephen Frost
sfrost@snowman.net
In reply to: PostgreSQL - Hans-Jürgen Schönig (#1)
Re: plan time of MASSIVE partitioning ...

* PostgreSQL - Hans-Jürgen Schönig (postgres@cybertec.at) wrote:

did anybody think of a solution to this problem.
or more precisely: can there be a solution to this problem?

Please post to the correct list (-performance) and provide information
like PG version, postgresql.conf, the actual table definition, the
resulting query plan, etc, etc...

Thanks,

Stephen

In reply to: Stephen Frost (#2)
Re: plan time of MASSIVE partitioning ...

On Sep 3, 2010, at 2:04 PM, Stephen Frost wrote:

* PostgreSQL - Hans-Jürgen Schönig (postgres@cybertec.at) wrote:

did anybody think of a solution to this problem.
or more precisely: can there be a solution to this problem?

Please post to the correct list (-performance) and provide information
like PG version, postgresql.conf, the actual table definition, the
resulting query plan, etc, etc...

Thanks,

Stephen

hello stephen,

this seems like more a developer question to me than a pre performance one.
it is not related to the table structure at all - it is basically an issue with incredibly large inheritance lists.
it applies to postgres 9 and most likely to everything before.
postgresql.conf is not relevant at all at this point.

the plan is pretty fine.
the question is rather: does anybody see a chance to handle such lists more efficiently inside postgres?
also, it is not the point if my data structure is sane or not. it is really more generic - namely a shortcut for this case inside the planing process.

many thanks,

hans

--
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de

#4Stephen Frost
sfrost@snowman.net
In reply to: PostgreSQL - Hans-Jürgen Schönig (#3)
Re: plan time of MASSIVE partitioning ...

* PostgreSQL - Hans-Jürgen Schönig (postgres@cybertec.at) wrote:

this seems like more a developer question to me than a pre performance one.
it is not related to the table structure at all - it is basically an issue with incredibly large inheritance lists.
it applies to postgres 9 and most likely to everything before.
postgresql.conf is not relevant at all at this point.

Really? What's constraint_exclusion set to? Is GEQO getting used?
What are the GEQO parameters set to? Do you have any CHECK constraints
on the tables?

If you want someone else to build a test case and start looking into it,
it's best to not make them have to guess at what you've done.

the plan is pretty fine.
the question is rather: does anybody see a chance to handle such lists more efficiently inside postgres?
also, it is not the point if my data structure is sane or not. it is really more generic - namely a shortcut for this case inside the planing process.

Coming up with cases where PG doesn't perform well in a completely
contrived unrealistic environment isn't likely to impress anyone to
do anything.

A small (but complete..) test case which mimics a real world environment
and real world problem would go alot farther. I can certainly believe
that people out there have partitions set up with lots of tables and
that it will likely grow- but they probably also have CHECK constraints,
have tweaked what constraint_exclusion is set to, have adjusted their
work_mem and related settings, maybe tweaked some planner GUCs, etc,
etc.

This is an area I'm actually interested in and curious about, I'd rather
work together on it than be told that the questions I'm asking aren't
relevant.

Thanks,

Stephen

#5Robert Haas
robertmhaas@gmail.com
In reply to: PostgreSQL - Hans-Jürgen Schönig (#1)
Re: plan time of MASSIVE partitioning ...

2010/9/3 PostgreSQL - Hans-Jürgen Schönig <postgres@cybertec.at>:

i tried this one with 5000 unindexed tables (just one col):

test=# \timing
Timing is on.
test=# prepare x(int4) AS select * from t_data order by id desc;
PREPARE
Time: 361.552 ms

you will see similar or higher runtimes in case of 500 partitions and a handful of indexes.

I'd like to see (1) a script to reproduce your test environment (as
Stephen also requested) and (2) gprof or oprofile results.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: PostgreSQL - Hans-Jürgen Schönig (#1)
Re: plan time of MASSIVE partitioning ...

=?iso-8859-1?Q?PostgreSQL_-_Hans-J=FCrgen_Sch=F6nig?= <postgres@cybertec.at> writes:

imagine a system with, say, 1000 partitions (heavily indexed) or so. the time taken by the planner is already fairly heavy in this case.

As the fine manual points out, the current scheme for managing
partitioned tables isn't intended to scale past a few dozen partitions.

I think we'll be able to do better when we have an explicit
representation of partitioning, since then the planner won't
have to expend large amounts of effort reverse-engineering knowledge
about how an inheritance tree is partitioned. Before that happens,
it's not really worth the trouble to worry about such cases.

regards, tom lane

In reply to: Tom Lane (#6)
Re: plan time of MASSIVE partitioning ...

On Sep 3, 2010, at 4:40 PM, Tom Lane wrote:

=?iso-8859-1?Q?PostgreSQL_-_Hans-J=FCrgen_Sch=F6nig?= <postgres@cybertec.at> writes:

imagine a system with, say, 1000 partitions (heavily indexed) or so. the time taken by the planner is already fairly heavy in this case.

As the fine manual points out, the current scheme for managing
partitioned tables isn't intended to scale past a few dozen partitions.

I think we'll be able to do better when we have an explicit
representation of partitioning, since then the planner won't
have to expend large amounts of effort reverse-engineering knowledge
about how an inheritance tree is partitioned. Before that happens,
it's not really worth the trouble to worry about such cases.

regards, tom lane

thank you ... - the manual is clear here but we wanted to see if there is some reasonably low hanging fruit to get around this.
it is no solution but at least a clear statement ...

many thanks,

hans

--
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de

#8Robert Haas
robertmhaas@gmail.com
In reply to: PostgreSQL - Hans-Jürgen Schönig (#1)
Re: plan time of MASSIVE partitioning ...

On Tue, Sep 7, 2010 at 2:14 PM, Boszormenyi Zoltan <zb@cybertec.at> wrote:

Hi,

Robert Haas írta:

2010/9/3 PostgreSQL - Hans-Jürgen Schönig <postgres@cybertec.at>:

i tried this one with 5000 unindexed tables (just one col):

test=# \timing
Timing is on.
test=# prepare x(int4) AS select * from t_data order by id desc;
PREPARE
Time: 361.552 ms

you will see similar or higher runtimes in case of 500 partitions and a handful of indexes.

I'd like to see (1) a script to reproduce your test environment (as
Stephen also requested) and (2) gprof or oprofile results.

attached are the test scripts, create_tables.sql and childtables.sql.
The following query takes 4.7 seconds according to psql with \timing on:
EXPLAIN SELECT * FROM qdrs
WHERE streamstart BETWEEN '2010-04-06' AND '2010-06-25'
ORDER BY streamhash;

Neat. Have you checked what effect this has on memory consumption?

Also, don't forget to add it to
https://commitfest.postgresql.org/action/commitfest_view/open

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company

#9Hans-Jürgen Schönig
postgres@cybertec.at
In reply to: Robert Haas (#8)
Re: plan time of MASSIVE partitioning ...

hello ...

no, we have not checked memory consumption.
there is still some stuff left to optimize away - it seems we are going close to O(n^2) somewhere.
"equal" is called really often in our sample case as well:

ach sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
18.87 0.80 0.80 4812 0.00 0.00 make_canonical_pathkey
15.33 1.45 0.65 4811 0.00 0.00
get_eclass_for_sort_expr
14.15 2.05 0.60 8342410 0.00 0.00 equal
6.13 2.31 0.26 229172 0.00 0.00 SearchCatCache
3.66 2.47 0.16 5788835 0.00 0.00 _equalList
3.07 2.60 0.13 1450043 0.00 0.00
hash_search_with_hash_value
2.36 2.70 0.10 2272545 0.00 0.00 AllocSetAlloc
2.12 2.79 0.09 811460 0.00 0.00 hash_any
1.89 2.87 0.08 3014983 0.00 0.00 list_head
1.89 2.95 0.08 574526 0.00 0.00 _bt_compare
1.77 3.02 0.08 11577670 0.00 0.00 list_head
1.42 3.08 0.06 1136 0.00 0.00 tzload
0.94 3.12 0.04 2992373 0.00 0.00 AllocSetFreeIndex

look at the number of calls ...
"equal" is scary ...

make_canonical_pathkey is fixed it seems.
get_eclass_for_sort_expr seems a little more complex to fix.

great you like it ...

regards,

hans

On Sep 8, 2010, at 3:54 PM, Robert Haas wrote:

On Tue, Sep 7, 2010 at 2:14 PM, Boszormenyi Zoltan <zb@cybertec.at> wrote:

Hi,

Robert Haas írta:

2010/9/3 PostgreSQL - Hans-Jürgen Schönig <postgres@cybertec.at>:

i tried this one with 5000 unindexed tables (just one col):

test=# \timing
Timing is on.
test=# prepare x(int4) AS select * from t_data order by id desc;
PREPARE
Time: 361.552 ms

you will see similar or higher runtimes in case of 500 partitions and a handful of indexes.

I'd like to see (1) a script to reproduce your test environment (as
Stephen also requested) and (2) gprof or oprofile results.

attached are the test scripts, create_tables.sql and childtables.sql.
The following query takes 4.7 seconds according to psql with \timing on:
EXPLAIN SELECT * FROM qdrs
WHERE streamstart BETWEEN '2010-04-06' AND '2010-06-25'
ORDER BY streamhash;

Neat. Have you checked what effect this has on memory consumption?

Also, don't forget to add it to
https://commitfest.postgresql.org/action/commitfest_view/open

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

--
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt
Web: http://www.postgresql-support.de

#10Stephen Frost
sfrost@snowman.net
In reply to: Hans-Jürgen Schönig (#9)
Re: plan time of MASSIVE partitioning ...

* Hans-Jürgen Schönig (postgres@cybertec.at) wrote:

no, we have not checked memory consumption.
there is still some stuff left to optimize away - it seems we are going close to O(n^2) somewhere.
"equal" is called really often in our sample case as well:

Did the mail with the scripts, etc, get hung up due to size or
something..? I didn't see it on the mailing list nor in the archives..
If so, could you post them somewhere so others could look..?

Thanks,

Stephen

#11Hans-Jürgen Schönig
postgres@cybertec.at
In reply to: Stephen Frost (#10)
1 attachment(s)
Re: plan time of MASSIVE partitioning ...

here is the patch again.
we accidentally attached a wrong test file to the original posting so it grew to big. we had to revoke it from the moderator (this happens if you code from 8am to 10pm).
here is just the patch - it is nice and small.

you can easily test it by making yourself a nice parent table, many subtables (hundreds or thousands) and a decent number of indexes per partition.
then run PREPARE with \timing to see what happens.
you should get scary planning times. the more potential indexes and tables the more scary it will be.

using this wonderful RB tree the time for this function call goes down to basically zero.
i hope this is something which is useful to some folks out there.

many thanks,

hans

Attachments:

canon-pathkeys-as-rbtree-3-ctxdiff.patchapplication/octet-stream; name=canon-pathkeys-as-rbtree-3-ctxdiff.patchDownload
diff -dcrpN postgresql-9.0rc1.orig/src/backend/nodes/Makefile postgresql-9.0rc1/src/backend/nodes/Makefile
*** postgresql-9.0rc1.orig/src/backend/nodes/Makefile	2008-02-19 11:30:07.000000000 +0100
--- postgresql-9.0rc1/src/backend/nodes/Makefile	2010-09-07 10:20:24.000000000 +0200
*************** subdir = src/backend/nodes
*** 12,18 ****
  top_builddir = ../../..
  include $(top_builddir)/src/Makefile.global
  
! OBJS = nodeFuncs.o nodes.o list.o bitmapset.o tidbitmap.o \
         copyfuncs.o equalfuncs.o makefuncs.o \
         outfuncs.o readfuncs.o print.o read.o params.o value.o
  
--- 12,18 ----
  top_builddir = ../../..
  include $(top_builddir)/src/Makefile.global
  
! OBJS = nodeFuncs.o nodes.o list.o tree.o bitmapset.o tidbitmap.o \
         copyfuncs.o equalfuncs.o makefuncs.o \
         outfuncs.o readfuncs.o print.o read.o params.o value.o
  
diff -dcrpN postgresql-9.0rc1.orig/src/backend/nodes/outfuncs.c postgresql-9.0rc1/src/backend/nodes/outfuncs.c
*** postgresql-9.0rc1.orig/src/backend/nodes/outfuncs.c	2010-08-18 17:22:00.000000000 +0200
--- postgresql-9.0rc1/src/backend/nodes/outfuncs.c	2010-09-07 10:18:00.000000000 +0200
*************** _outList(StringInfo str, List *node)
*** 175,180 ****
--- 175,198 ----
  	appendStringInfoChar(str, ')');
  }
  
+ static void
+ _outTree(StringInfo str, Tree *node)
+ {
+ 	TreeCell   *element;
+ 
+ 	appendStringInfoChar(str, '(');
+ 
+ 	rb_begin_iterate(node->tree, LeftRightWalk);
+ 	element = (TreeCell *)rb_iterate(node->tree);
+ 	while (element)
+ 	{
+ 		_outNode(str, element->node);
+ 		element = (TreeCell *)rb_iterate(node->tree);
+ 	}
+ 
+ 	appendStringInfoChar(str, ')');
+ }
+ 
  /*
   * _outBitmapset -
   *	   converts a bitmap set of integers
*************** _outPlannerInfo(StringInfo str, PlannerI
*** 1545,1551 ****
  	WRITE_NODE_FIELD(init_plans);
  	WRITE_NODE_FIELD(cte_plan_ids);
  	WRITE_NODE_FIELD(eq_classes);
! 	WRITE_NODE_FIELD(canon_pathkeys);
  	WRITE_NODE_FIELD(left_join_clauses);
  	WRITE_NODE_FIELD(right_join_clauses);
  	WRITE_NODE_FIELD(full_join_clauses);
--- 1563,1569 ----
  	WRITE_NODE_FIELD(init_plans);
  	WRITE_NODE_FIELD(cte_plan_ids);
  	WRITE_NODE_FIELD(eq_classes);
! 	WRITE_NODE_FIELD(rb_canon_pathkeys);
  	WRITE_NODE_FIELD(left_join_clauses);
  	WRITE_NODE_FIELD(right_join_clauses);
  	WRITE_NODE_FIELD(full_join_clauses);
*************** _outNode(StringInfo str, void *obj)
*** 2451,2456 ****
--- 2469,2476 ----
  		appendStringInfo(str, "<>");
  	else if (IsA(obj, List) ||IsA(obj, IntList) || IsA(obj, OidList))
  		_outList(str, obj);
+ 	else if (IsA(obj, Tree))
+ 		_outTree(str, obj);
  	else if (IsA(obj, Integer) ||
  			 IsA(obj, Float) ||
  			 IsA(obj, String) ||
diff -dcrpN postgresql-9.0rc1.orig/src/backend/nodes/tree.c postgresql-9.0rc1/src/backend/nodes/tree.c
*** postgresql-9.0rc1.orig/src/backend/nodes/tree.c	1970-01-01 01:00:00.000000000 +0100
--- postgresql-9.0rc1/src/backend/nodes/tree.c	2010-09-07 14:06:42.000000000 +0200
***************
*** 0 ****
--- 1,65 ----
+ /*-------------------------------------------------------------------------
+  *
+  * tree.c
+  *	  implementation for PostgreSQL generic rbtree package
+  *
+  *
+  * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
+  * Portions Copyright (c) 1994, Regents of the University of California
+  *
+  *
+  * IDENTIFICATION
+  *	  $PostgreSQL: pgsql/src/backend/nodes/list.c,v 1.74 2010/02/13 02:34:11 tgl Exp $
+  *
+  *-------------------------------------------------------------------------
+  */
+ #include "postgres.h"
+ 
+ #include "nodes/pg_tree.h"
+ #include "utils/rbtree.h"
+ 
+ RBNode *tree_allocfunc(void *arg)
+ {
+ 	return (RBNode *)palloc(sizeof(TreeCell));
+ }
+ 
+ /*
+  * Return a freshly allocated Tree.
+  */
+ Tree *
+ new_tree(rb_comparator comparator, rb_allocfunc allocfunc, void *arg)
+ {
+ 	Tree	   *tree = makeNode(Tree);
+ 
+ 	tree->tree = rb_create(sizeof(TreeCell), comparator, NULL, allocfunc, NULL, arg);
+ 
+ 	return tree;
+ }
+ 
+ Node *
+ tree_find(Tree *tree, Node *node)
+ {
+ 	TreeCell   *cell = palloc(sizeof(TreeCell));
+ 	TreeCell   *result;
+ 
+ 	cell->node = node;
+ 
+ 	result = (TreeCell *)rb_find(tree->tree, (RBNode *)cell);
+ 
+ 	pfree(cell);
+ 
+ 	if (result == NULL)
+ 		return NULL;
+ 
+ 	return result->node;
+ }
+ 
+ void
+ tree_add(Tree *tree, Node *node)
+ {
+ 	TreeCell   *rbnode = palloc(sizeof(TreeCell));
+ 	bool		isNew;
+ 
+ 	rbnode->node = node;
+ 	rb_insert(tree->tree, (RBNode *)rbnode, &isNew);
+ }
diff -dcrpN postgresql-9.0rc1.orig/src/backend/optimizer/path/pathkeys.c postgresql-9.0rc1/src/backend/optimizer/path/pathkeys.c
*** postgresql-9.0rc1.orig/src/backend/optimizer/path/pathkeys.c	2010-02-26 03:00:45.000000000 +0100
--- postgresql-9.0rc1/src/backend/optimizer/path/pathkeys.c	2010-09-07 15:41:49.000000000 +0200
*************** makePathKey(EquivalenceClass *eclass, Oi
*** 71,76 ****
--- 71,137 ----
  	return pk;
  }
  
+ RBNode *
+ pathkeys_allocfunc(void *arg)
+ {
+ 	PlannerInfo	   *root = arg;
+ 	MemoryContext oldcontext;
+ 	RBNode		   *node;
+ 
+ 	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 
+ 	node = palloc(sizeof(TreeCell));
+ 
+ 	MemoryContextSwitchTo(oldcontext);
+ 
+ 	return node;
+ }
+ 
+ int
+ pathkeys_comparator(const RBNode *a, const RBNode *b, void *arg)
+ {
+ 	TreeCell   *left = (TreeCell *)a;
+ 	TreeCell   *right = (TreeCell *)b;
+ 	PathKey	   *pk_left = (PathKey *)left->node;
+ 	PathKey	   *pk_right = (PathKey *)right->node;
+ 	long		val1, val2;
+ 
+ 	Assert((pk_left != NULL));
+ 	Assert((pk_right != NULL));
+ 
+ 	val1 = (long)pk_left->pk_eclass;
+ 	val2 = (long)pk_right->pk_eclass;
+ 
+ 	if (val1 < val2)
+ 		return -1;
+ 	else if (val1 > val2)
+ 		return 1;
+ 
+ 	if (pk_left->pk_opfamily < pk_right->pk_opfamily)
+ 		return -1;
+ 	else if (pk_left->pk_opfamily > pk_right->pk_opfamily)
+ 		return 1;
+ 
+ 	if (pk_left->pk_strategy < pk_right->pk_strategy)
+ 		return -1;
+ 	else if (pk_left->pk_strategy > pk_right->pk_strategy)
+ 		return 1;
+ 
+ 	if (pk_left->pk_nulls_first < pk_right->pk_nulls_first)
+ 		return -1;
+ 	else if (pk_left->pk_nulls_first > pk_right->pk_nulls_first)
+ 		return 1;
+ 
+ 	if (pk_left == NULL)
+ 		elog(ERROR, "pk_left NULL");
+ 	if (pk_right == NULL)
+ 		elog(ERROR, "pk_right NULL");
+ 
+ 	return 0;
+ }
+ 
+ 
+ 
  /*
   * make_canonical_pathkey
   *	  Given the parameters for a PathKey, find any pre-existing matching
*************** make_canonical_pathkey(PlannerInfo *root
*** 85,119 ****
  					   EquivalenceClass *eclass, Oid opfamily,
  					   int strategy, bool nulls_first)
  {
! 	PathKey    *pk;
! 	ListCell   *lc;
  	MemoryContext oldcontext;
  
  	/* The passed eclass might be non-canonical, so chase up to the top */
  	while (eclass->ec_merged)
  		eclass = eclass->ec_merged;
  
- 	foreach(lc, root->canon_pathkeys)
- 	{
- 		pk = (PathKey *) lfirst(lc);
- 		if (eclass == pk->pk_eclass &&
- 			opfamily == pk->pk_opfamily &&
- 			strategy == pk->pk_strategy &&
- 			nulls_first == pk->pk_nulls_first)
- 			return pk;
- 	}
- 
  	/*
  	 * Be sure canonical pathkeys are allocated in the main planning context.
  	 * Not an issue in normal planning, but it is for GEQO.
  	 */
  	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
  
! 	pk = makePathKey(eclass, opfamily, strategy, nulls_first);
! 	root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
  
  	MemoryContextSwitchTo(oldcontext);
  
  	return pk;
  }
  
--- 146,178 ----
  					   EquivalenceClass *eclass, Oid opfamily,
  					   int strategy, bool nulls_first)
  {
! 	PathKey    *pk, *pk_new;
  	MemoryContext oldcontext;
  
  	/* The passed eclass might be non-canonical, so chase up to the top */
  	while (eclass->ec_merged)
  		eclass = eclass->ec_merged;
  
  	/*
  	 * Be sure canonical pathkeys are allocated in the main planning context.
  	 * Not an issue in normal planning, but it is for GEQO.
  	 */
  	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
  
! 	pk_new = makePathKey(eclass, opfamily, strategy, nulls_first);
  
  	MemoryContextSwitchTo(oldcontext);
  
+ 	pk = (PathKey *) tree_find(root->rb_canon_pathkeys, (Node *)pk_new);
+ 
+ 	if (pk)
+ 		pfree(pk_new);
+ 	else
+ 	{
+ 		tree_add(root->rb_canon_pathkeys, (Node *)pk_new);
+ 		pk = pk_new;
+ 	}
+ 
  	return pk;
  }
  
diff -dcrpN postgresql-9.0rc1.orig/src/backend/optimizer/plan/planmain.c postgresql-9.0rc1/src/backend/optimizer/plan/planmain.c
*** postgresql-9.0rc1.orig/src/backend/optimizer/plan/planmain.c	2010-07-06 21:18:56.000000000 +0200
--- postgresql-9.0rc1/src/backend/optimizer/plan/planmain.c	2010-09-07 14:29:40.000000000 +0200
***************
*** 20,31 ****
--- 20,33 ----
   */
  #include "postgres.h"
  
+ #include "nodes/pg_tree.h"
  #include "optimizer/cost.h"
  #include "optimizer/pathnode.h"
  #include "optimizer/paths.h"
  #include "optimizer/placeholder.h"
  #include "optimizer/planmain.h"
  #include "optimizer/tlist.h"
+ #include "utils/rbtree.h"
  #include "utils/selfuncs.h"
  
  
*************** query_planner(PlannerInfo *root, List *t
*** 116,122 ****
  		 * We still are required to canonicalize any pathkeys, in case it's
  		 * something like "SELECT 2+2 ORDER BY 1".
  		 */
! 		root->canon_pathkeys = NIL;
  		root->query_pathkeys = canonicalize_pathkeys(root,
  													 root->query_pathkeys);
  		root->group_pathkeys = canonicalize_pathkeys(root,
--- 118,124 ----
  		 * We still are required to canonicalize any pathkeys, in case it's
  		 * something like "SELECT 2+2 ORDER BY 1".
  		 */
! 		root->rb_canon_pathkeys = new_tree(pathkeys_comparator, pathkeys_allocfunc, root);
  		root->query_pathkeys = canonicalize_pathkeys(root,
  													 root->query_pathkeys);
  		root->group_pathkeys = canonicalize_pathkeys(root,
*************** query_planner(PlannerInfo *root, List *t
*** 144,150 ****
  	root->join_rel_hash = NULL;
  	root->join_rel_level = NULL;
  	root->join_cur_level = 0;
! 	root->canon_pathkeys = NIL;
  	root->left_join_clauses = NIL;
  	root->right_join_clauses = NIL;
  	root->full_join_clauses = NIL;
--- 146,152 ----
  	root->join_rel_hash = NULL;
  	root->join_rel_level = NULL;
  	root->join_cur_level = 0;
! 	root->rb_canon_pathkeys = new_tree(pathkeys_comparator, pathkeys_allocfunc, root);
  	root->left_join_clauses = NIL;
  	root->right_join_clauses = NIL;
  	root->full_join_clauses = NIL;
diff -dcrpN postgresql-9.0rc1.orig/src/backend/optimizer/plan/planner.c postgresql-9.0rc1/src/backend/optimizer/plan/planner.c
*** postgresql-9.0rc1.orig/src/backend/optimizer/plan/planner.c	2010-03-30 23:58:10.000000000 +0200
--- postgresql-9.0rc1/src/backend/optimizer/plan/planner.c	2010-09-07 14:12:39.000000000 +0200
*************** subquery_planner(PlannerGlobal *glob, Qu
*** 305,310 ****
--- 305,311 ----
  	root->init_plans = NIL;
  	root->cte_plan_ids = NIL;
  	root->eq_classes = NIL;
+ 	root->rb_canon_pathkeys = new_tree(pathkeys_comparator, pathkeys_allocfunc, root);
  	root->append_rel_list = NIL;
  	root->rowMarks = NIL;
  	root->hasInheritedTarget = false;
diff -dcrpN postgresql-9.0rc1.orig/src/include/nodes/nodes.h postgresql-9.0rc1/src/include/nodes/nodes.h
*** postgresql-9.0rc1.orig/src/include/nodes/nodes.h	2010-03-29 00:59:33.000000000 +0200
--- postgresql-9.0rc1/src/include/nodes/nodes.h	2010-09-06 13:11:47.000000000 +0200
*************** typedef enum NodeTag
*** 252,257 ****
--- 252,262 ----
  	T_OidList,
  
  	/*
+ 	 * TAGS FOR TREE NODES (pg_tree.h)
+ 	 */
+ 	T_Tree,
+ 
+ 	/*
  	 * TAGS FOR STATEMENT NODES (mostly in parsenodes.h)
  	 */
  	T_Query = 700,
diff -dcrpN postgresql-9.0rc1.orig/src/include/nodes/pg_tree.h postgresql-9.0rc1/src/include/nodes/pg_tree.h
*** postgresql-9.0rc1.orig/src/include/nodes/pg_tree.h	1970-01-01 01:00:00.000000000 +0100
--- postgresql-9.0rc1/src/include/nodes/pg_tree.h	2010-09-07 14:06:09.000000000 +0200
***************
*** 0 ****
--- 1,50 ----
+ /*-------------------------------------------------------------------------
+  *
+  * pg_tree.h
+  *	  interface for PostgreSQL generic rbtree package
+  *
+  * This package implements rbtree of Node * elements of the same type.
+  * It is a replacement of List for dealing with O(n^2) behaviour
+  * found with long lists.
+  *
+  * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
+  * Portions Copyright (c) 1994, Regents of the University of California
+  *
+  * $PostgreSQL$
+  *
+  *-------------------------------------------------------------------------
+  */
+ #ifndef PG_TREE_H
+ #define PG_TREE_H
+ 
+ #include "nodes/nodes.h"
+ #include "utils/rbtree.h"
+ 
+ typedef struct TreeCell
+ {
+ 	RBNode		treenode;
+ 	Node	   *node;
+ } TreeCell;
+ 
+ 
+ typedef struct Tree
+ {
+ 	NodeTag		type;	/* T_Tree */
+ 	RBTree	   *tree;
+ } Tree;
+ 
+ extern RBNode *tree_allocfunc(void *arg);
+ 
+ extern Tree *new_tree(rb_comparator comparator, rb_allocfunc allocfunc, void *arg);
+ extern Node *tree_find(Tree *tree, Node *node);
+ extern void tree_add(Tree *tree, Node *node);
+ 
+ /*
+  * tforeach -
+  *	a convenience macro which loops through the tree elements
+  *	in "inorder" walk to make it look like a list
+  */
+ #define tforeach(cell, t)	\
+ 	for (rb_begin_iterate(t, LeftRightWalk) , (cell) = (TreeCell *)rb_iterate(t); (cell) != NULL; (cell) = (TreeCell *)rb_iterate(t))
+ 
+ #endif   /* PG_TREE_H */
diff -dcrpN postgresql-9.0rc1.orig/src/include/nodes/primnodes.h postgresql-9.0rc1/src/include/nodes/primnodes.h
*** postgresql-9.0rc1.orig/src/include/nodes/primnodes.h	2010-02-26 03:01:25.000000000 +0100
--- postgresql-9.0rc1/src/include/nodes/primnodes.h	2010-09-07 10:16:45.000000000 +0200
***************
*** 19,24 ****
--- 19,25 ----
  
  #include "access/attnum.h"
  #include "nodes/pg_list.h"
+ #include "nodes/pg_tree.h"
  
  
  /* ----------------------------------------------------------------
diff -dcrpN postgresql-9.0rc1.orig/src/include/nodes/relation.h postgresql-9.0rc1/src/include/nodes/relation.h
*** postgresql-9.0rc1.orig/src/include/nodes/relation.h	2010-07-06 21:19:00.000000000 +0200
--- postgresql-9.0rc1/src/include/nodes/relation.h	2010-09-07 14:31:16.000000000 +0200
*************** typedef struct PlannerInfo
*** 160,166 ****
  
  	List	   *eq_classes;		/* list of active EquivalenceClasses */
  
! 	List	   *canon_pathkeys; /* list of "canonical" PathKeys */
  
  	List	   *left_join_clauses;		/* list of RestrictInfos for
  										 * mergejoinable outer join clauses
--- 160,166 ----
  
  	List	   *eq_classes;		/* list of active EquivalenceClasses */
  
! 	Tree	   *rb_canon_pathkeys;	/* tree of "canonical" PathKeys */
  
  	List	   *left_join_clauses;		/* list of RestrictInfos for
  										 * mergejoinable outer join clauses
diff -dcrpN postgresql-9.0rc1.orig/src/include/optimizer/paths.h postgresql-9.0rc1/src/include/optimizer/paths.h
*** postgresql-9.0rc1.orig/src/include/optimizer/paths.h	2010-01-02 17:58:07.000000000 +0100
--- postgresql-9.0rc1/src/include/optimizer/paths.h	2010-09-07 14:11:28.000000000 +0200
***************
*** 15,20 ****
--- 15,21 ----
  #define PATHS_H
  
  #include "nodes/relation.h"
+ #include "utils/rbtree.h"
  
  
  /*
*************** typedef enum
*** 152,157 ****
--- 153,161 ----
  	PATHKEYS_DIFFERENT			/* neither pathkey includes the other */
  } PathKeysComparison;
  
+ extern RBNode *pathkeys_allocfunc(void *arg);
+ extern int pathkeys_comparator(const RBNode *a, const RBNode *b, void *arg);
+ 
  extern List *canonicalize_pathkeys(PlannerInfo *root, List *pathkeys);
  extern PathKeysComparison compare_pathkeys(List *keys1, List *keys2);
  extern bool pathkeys_contained_in(List *keys1, List *keys2);
Binary files postgresql-9.0rc1.orig/src/timezone/gmon.out and postgresql-9.0rc1/src/timezone/gmon.out differ
#12Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#8)
Re: plan time of MASSIVE partitioning ...

* Robert Haas (robertmhaas@gmail.com) wrote:

Neat. Have you checked what effect this has on memory consumption?

Also, don't forget to add it to
https://commitfest.postgresql.org/action/commitfest_view/open

Would be good to have the patch updated to be against HEAD before
posting to the commitfest.

Thanks,

Stephen

#13Hans-Jürgen Schönig
postgres@cybertec.at
In reply to: Stephen Frost (#12)
Re: plan time of MASSIVE partitioning ...

On Sep 8, 2010, at 4:57 PM, Stephen Frost wrote:

* Robert Haas (robertmhaas@gmail.com) wrote:

Neat. Have you checked what effect this has on memory consumption?

Also, don't forget to add it to
https://commitfest.postgresql.org/action/commitfest_view/open

Would be good to have the patch updated to be against HEAD before
posting to the commitfest.

Thanks,

Stephen

we will definitely provide something which is for HEAD.
but, it seems the problem we are looking is not sufficiently fixed yet.
in our case we shaved off some 18% of planning time or so - looking at the other top 2 functions i got the feeling that more can be done to reduce this. i guess we have to attack this as well.

regards,

hans

--
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt
Web: http://www.postgresql-support.de

#14Stephen Frost
sfrost@snowman.net
In reply to: Hans-Jürgen Schönig (#13)
Re: plan time of MASSIVE partitioning ...

* Hans-Jürgen Schönig (postgres@cybertec.at) wrote:

but, it seems the problem we are looking is not sufficiently fixed yet.
in our case we shaved off some 18% of planning time or so - looking at the other top 2 functions i got the feeling that more can be done to reduce this. i guess we have to attack this as well.

An 18% increase is certainly nice, provided it doesn't slow down or
break other things.. I'm looking through the patch now actually and
I'm not really happy with the naming, comments, or some of the code
flow, but I think the concept looks reasonable.

Thanks,

Stephen

#15Robert Haas
robertmhaas@gmail.com
In reply to: Hans-Jürgen Schönig (#13)
Re: plan time of MASSIVE partitioning ...

2010/9/8 Hans-Jürgen Schönig <postgres@cybertec.at>:

On Sep 8, 2010, at 4:57 PM, Stephen Frost wrote:

* Robert Haas (robertmhaas@gmail.com) wrote:

Neat.  Have you checked what effect this has on memory consumption?

Also, don't forget to add it to
https://commitfest.postgresql.org/action/commitfest_view/open

Would be good to have the patch updated to be against HEAD before
posting to the commitfest.

we will definitely provide something which is for HEAD.
but, it seems the problem we are looking is not sufficiently fixed yet.
in our case we shaved off some 18% of planning time or so - looking at the other top 2 functions i got the feeling that more can be done to reduce this. i guess we have to attack this as well.

Just remember that four small patches (say) are apt to get committed
faster than one big one.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company

#16Stephen Frost
sfrost@snowman.net
In reply to: Robert Haas (#15)
Re: plan time of MASSIVE partitioning ...

* Robert Haas (robertmhaas@gmail.com) wrote:

2010/9/8 Hans-Jürgen Schönig <postgres@cybertec.at>:

but, it seems the problem we are looking is not sufficiently fixed yet.
in our case we shaved off some 18% of planning time or so - looking at the other top 2 functions i got the feeling that more can be done to reduce this. i guess we have to attack this as well.

Just remember that four small patches (say) are apt to get committed
faster than one big one.

Indeed, but code like this makes me wonder if this is really working the
way it's supposed to:

+   val1 = (long)pk_left->pk_eclass;
+   val2 = (long)pk_right->pk_eclass;
+ 
+   if (val1 < val2)
+       return -1;
+   else if (val1 > val2)
+       return 1;

Have you compared how big the tree gets to the size of the list it's
supposed to be replacing..?

Thanks,

Stephen

#17Alvaro Herrera
alvherre@commandprompt.com
In reply to: Stephen Frost (#14)
Re: plan time of MASSIVE partitioning ...

Excerpts from Stephen Frost's message of mié sep 08 11:26:55 -0400 2010:

* Hans-Jürgen Schönig (postgres@cybertec.at) wrote:

but, it seems the problem we are looking is not sufficiently fixed yet.
in our case we shaved off some 18% of planning time or so - looking at the other top 2 functions i got the feeling that more can be done to reduce this. i guess we have to attack this as well.

An 18% increase is certainly nice, provided it doesn't slow down or
break other things.. I'm looking through the patch now actually and
I'm not really happy with the naming, comments, or some of the code
flow, but I think the concept looks reasonable.

I don't understand the layering between pg_tree and rbtree. Why does it
exist at all? At first I thought this was another implementation of
rbtrees, but then I noticed it sits on top of it. Is this really
necessary?

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

#18Tom Lane
tgl@sss.pgh.pa.us
In reply to: Hans-Jürgen Schönig (#11)
Re: plan time of MASSIVE partitioning ...

=?iso-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= <postgres@cybertec.at> writes:

here is the patch again.

This patch seems remarkably documentation-free. What is it trying to
accomplish and what is it doing to the planner data structures?
(Which do have documentation BTW.) Also, what will it do to runtime
in normal cases where the pathkeys list isn't that long?

regards, tom lane

#19Boszormenyi Zoltan
zb@cybertec.at
In reply to: Stephen Frost (#16)
Re: plan time of MASSIVE partitioning ...

Stephen Frost �rta:

* Robert Haas (robertmhaas@gmail.com) wrote:

2010/9/8 Hans-J�rgen Sch�nig <postgres@cybertec.at>:

but, it seems the problem we are looking is not sufficiently fixed yet.
in our case we shaved off some 18% of planning time or so - looking at the other top 2 functions i got the feeling that more can be done to reduce this. i guess we have to attack this as well.

Just remember that four small patches (say) are apt to get committed
faster than one big one.

Indeed, but code like this makes me wonder if this is really working the
way it's supposed to:

+   val1 = (long)pk_left->pk_eclass;
+   val2 = (long)pk_right->pk_eclass;
+ 
+   if (val1 < val2)
+       return -1;
+   else if (val1 > val2)
+       return 1;

The original code checked for pointers being equal among
other conditions. This was an (almost) straight conversion
to a comparison function for rbtree. Do you mean casting
the pointer to long? Yes, e.g. on 64-bit Windows it wouldn't
work. Back to plain pointer comparison.

Have you compared how big the tree gets to the size of the list it's
supposed to be replacing..?

No, but I think it's obvious. Now we have one TreeCell
where we had one ListCell.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

#20Boszormenyi Zoltan
zb@cybertec.at
In reply to: Alvaro Herrera (#17)
Re: plan time of MASSIVE partitioning ...

Alvaro Herrera írta:

Excerpts from Stephen Frost's message of mié sep 08 11:26:55 -0400 2010:

* Hans-Jürgen Schönig (postgres@cybertec.at) wrote:

but, it seems the problem we are looking is not sufficiently fixed yet.
in our case we shaved off some 18% of planning time or so - looking at the other top 2 functions i got the feeling that more can be done to reduce this. i guess we have to attack this as well.

An 18% increase is certainly nice, provided it doesn't slow down or
break other things.. I'm looking through the patch now actually and
I'm not really happy with the naming, comments, or some of the code
flow, but I think the concept looks reasonable.

I don't understand the layering between pg_tree and rbtree. Why does it
exist at all? At first I thought this was another implementation of
rbtrees, but then I noticed it sits on top of it. Is this really
necessary?

No, if it's acceptable to omit PlannerInfo from outfuncs.c.
Or at least its canon_pathkeys member. Otherwise yes, it's
necessary. We need to store (Node *) in a fast searchable way.

This applies to anything else that may need to be converted
from list to tree to decrease planning time. Like ec_members
in EquivalenceClass.

Best regards,
Zoltán Böszörményi

--
----------------------------------
Zoltán Böszörményi
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

#21Tom Lane
tgl@sss.pgh.pa.us
In reply to: Stephen Frost (#16)
Re: plan time of MASSIVE partitioning ...

Stephen Frost <sfrost@snowman.net> writes:

Indeed, but code like this makes me wonder if this is really working the
way it's supposed to:

+ val1 = (long)pk_left->pk_eclass;
+ val2 = (long)pk_right->pk_eclass;

Ugh. Casting a pointer to long? We do have portable ways to do what
this is trying to do, but that is not one. (For example, this is
guaranteed to misbehave on 64-bit Windows.)

Offhand I think PointerGetDatum might be the best way.

regards, tom lane

#22Tom Lane
tgl@sss.pgh.pa.us
In reply to: Boszormenyi Zoltan (#20)
Re: plan time of MASSIVE partitioning ...

Boszormenyi Zoltan <zb@cybertec.at> writes:

This applies to anything else that may need to be converted
from list to tree to decrease planning time. Like ec_members
in EquivalenceClass.

AFAIR, canonical pathkeys are the *only* thing in the planner where pure
pointer equality is interesting. So I doubt this hack is of any use for
EquivalenceClass, even if the lists were likely to be long which they
aren't.

regards, tom lane

#23Tom Lane
tgl@sss.pgh.pa.us
In reply to: Stephen Frost (#14)
Re: plan time of MASSIVE partitioning ...

Stephen Frost <sfrost@snowman.net> writes:

I'm not really happy with the naming, comments, or some of the code
flow, but I think the concept looks reasonable.

There seems to be a lot of unnecessary palloc/pfree traffic in this
implementation. Getting rid of that might help the speed.

regards, tom lane

#24Boszormenyi Zoltan
zb@cybertec.at
In reply to: Tom Lane (#22)
Re: plan time of MASSIVE partitioning ...

Tom Lane �rta:

Boszormenyi Zoltan <zb@cybertec.at> writes:

This applies to anything else that may need to be converted
from list to tree to decrease planning time. Like ec_members
in EquivalenceClass.

AFAIR, canonical pathkeys are the *only* thing in the planner where pure
pointer equality is interesting. So I doubt this hack is of any use for
EquivalenceClass, even if the lists were likely to be long which they
aren't.

regards, tom lane

No, for EquivalanceClass->ec_member, I need to do something
funnier, like implement compare(Node *, Node *) and use that
instead of equal(Node *, Node *)... Something like nodeToString()
on both Node * and strcmp() the resulting strings.

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

#25Boszormenyi Zoltan
zb@cybertec.at
In reply to: Tom Lane (#23)
Re: plan time of MASSIVE partitioning ...

Tom Lane �rta:

Stephen Frost <sfrost@snowman.net> writes:

I'm not really happy with the naming, comments, or some of the code
flow, but I think the concept looks reasonable.

There seems to be a lot of unnecessary palloc/pfree traffic in this
implementation. Getting rid of that might help the speed.

regards, tom lane

This was a first WIP implementation, I will look into it, thanks.

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

#26Tom Lane
tgl@sss.pgh.pa.us
In reply to: Boszormenyi Zoltan (#24)
Re: plan time of MASSIVE partitioning ...

Boszormenyi Zoltan <zb@cybertec.at> writes:

Tom Lane �rta:

AFAIR, canonical pathkeys are the *only* thing in the planner where pure
pointer equality is interesting. So I doubt this hack is of any use for
EquivalenceClass, even if the lists were likely to be long which they
aren't.

No, for EquivalanceClass->ec_member, I need to do something
funnier, like implement compare(Node *, Node *) and use that
instead of equal(Node *, Node *)... Something like nodeToString()
on both Node * and strcmp() the resulting strings.

Well, (a) that doesn't work (hint: there are fields in nodes that are
intentionally ignored by equal()), and (b) I still don't believe that
there's an actual bottleneck there. ECs generally aren't very big.

regards, tom lane

#27Boszormenyi Zoltan
zb@cybertec.at
In reply to: Tom Lane (#26)
Re: plan time of MASSIVE partitioning ...

Tom Lane �rta:

Boszormenyi Zoltan <zb@cybertec.at> writes:

Tom Lane �rta:

AFAIR, canonical pathkeys are the *only* thing in the planner where pure
pointer equality is interesting. So I doubt this hack is of any use for
EquivalenceClass, even if the lists were likely to be long which they
aren't.

No, for EquivalanceClass->ec_member, I need to do something
funnier, like implement compare(Node *, Node *) and use that
instead of equal(Node *, Node *)... Something like nodeToString()
on both Node * and strcmp() the resulting strings.

Well, (a) that doesn't work (hint: there are fields in nodes that are
intentionally ignored by equal()),

Then this compare() needs to work like equal(), which can
ignore the fields that are ignored by equal(), too.
nodeToString would need more space anyway and comparing
non-equal Nodes can return the !0 result faster.

and (b) I still don't believe that
there's an actual bottleneck there. ECs generally aren't very big.

Actually, PlannerInfo->eq_classes needs to be a Tree somehow,
the comparator function is not yet final in my head.

equal() is called over 8 million times with or without our patch:

without

% cumulative self self total
time seconds seconds calls s/call s/call name
18.87 0.80 0.80 4812 0.00 0.00 make_canonical_pathkey
15.33 1.45 0.65 4811 0.00 0.00
get_eclass_for_sort_expr
14.15 2.05 0.60 8342410 0.00 0.00 equal
6.13 2.31 0.26 229172 0.00 0.00 SearchCatCache
3.66 2.47 0.16 5788835 0.00 0.00 _equalList
3.07 2.60 0.13 1450043 0.00 0.00
hash_search_with_hash_value
2.36 2.70 0.10 2272545 0.00 0.00 AllocSetAlloc
2.12 2.79 0.09 811460 0.00 0.00 hash_any
1.89 2.87 0.08 3014983 0.00 0.00 list_head
1.89 2.95 0.08 574526 0.00 0.00 _bt_compare
1.77 3.02 0.08 11577670 0.00 0.00 list_head
1.42 3.08 0.06 1136 0.00 0.00 tzload
0.94 3.12 0.04 2992373 0.00 0.00 AllocSetFreeIndex
0.94 3.16 0.04 91427 0.00 0.00 _bt_checkkeys
...

with

% cumulative self self total
time seconds seconds calls s/call s/call name
24.51 0.88 0.88 4811 0.00 0.00
get_eclass_for_sort_expr
14.21 1.39 0.51 8342410 0.00 0.00 equal
8.22 1.69 0.30 5788835 0.00 0.00 _equalList
5.29 1.88 0.19 229172 0.00 0.00 SearchCatCache
2.51 1.97 0.09 1136 0.00 0.00 tzload
2.23 2.05 0.08 3014983 0.00 0.00 list_head
2.23 2.13 0.08 2283130 0.00 0.00 AllocSetAlloc
2.09 2.20 0.08 811547 0.00 0.00 hash_any
2.09 2.28 0.08 11577670 0.00 0.00 list_head
1.95 2.35 0.07 1450180 0.00 0.00
hash_search_with_hash_value
1.39 2.40 0.05 640690 0.00 0.00 _bt_compare
1.39 2.45 0.05 157944 0.00 0.00 LockAcquireExtended
1.39 2.50 0.05 11164 0.00 0.00 AllocSetCheck
1.11 2.54 0.04 3010547 0.00 0.00 AllocSetFreeIndex
1.11 2.58 0.04 874975 0.00 0.00 AllocSetFree
1.11 2.62 0.04 66211 0.00 0.00 heap_form_tuple
0.84 2.65 0.03 888128 0.00 0.00 LWLockRelease
...

The number of calls are the same for equal and _equalList
in both cases as you can see.

And if you compare the number of AllocSetAlloc calls,
it's actually smaller with our patch, so it's not that the
conversion to Tree caused this.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

#28Tom Lane
tgl@sss.pgh.pa.us
In reply to: Boszormenyi Zoltan (#27)
Re: plan time of MASSIVE partitioning ...

Boszormenyi Zoltan <zb@cybertec.at> writes:

equal() is called over 8 million times with or without our patch:

From where, though? You've provided not a shred of evidence that
searching large ec_member lists is the problem.

Also, did the test case you're using ever make it to the list?

regards, tom lane

#29Boszormenyi Zoltan
zb@cybertec.at
In reply to: Tom Lane (#28)
3 attachment(s)
Re: plan time of MASSIVE partitioning ...

Tom Lane �rta:

Boszormenyi Zoltan <zb@cybertec.at> writes:

equal() is called over 8 million times with or without our patch:

From where, though? You've provided not a shred of evidence that
searching large ec_member lists is the problem.

Indeed. I have put elog(NOTICE) calls in there to see which
lists is how long. It turned out that the length of ec_members is either 0
or 1, mostly 1, but the length of eq_classes is constantly growing.
This is what I need to attack then.

Also, did the test case you're using ever make it to the list?

No, because it was too large and because of the test case
accidentally contained confidential information, we asked
Bruce to delete it from the moderator queue.

Attached is a shortened test case that does the same and
also shows the same problem. The create_table.sql
creates the parent table, the table_generator.sql produces
the list of constraint excluded child tables and their indexes.

The gprof output of this is only slightly modified, the
number of equal() calls is still over 8 million, it is also
attached.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

Attachments:

create_table.sqltext/plain; name=create_table.sqlDownload
table_generator.sqltext/plain; name=table_generator.sqlDownload
gmon.log1.gzapplication/x-tar; name=gmon.log1.gzDownload
�8��Lgmon.log1��[w������+�r^s���[�$3^;�x�����AKf��4�D����Y��T��������n�|*�vU�j����������&���X�UW��*iV�[�^5"���y�f����j�v�d�G�4���&_���U�'���������M>���(���?�|(%���v��,�mL?x�m?���;��"-�������J���j�feGo����o�� ��_�\��|���]R@G��z�(������FQ���l��?�M��g�����G�m?������"�@�}��|p���q�0�H�V&e����[�:���|7Z;%��(��V���3�S�������)�}����Hdz����X��1)��V��V�k?���7m�V�:���h�&;���|.���<�Q����w��������Rcb�u�c��o��o��KN��O?I!�k��r�uD�+��{�><�C�:��?
\�����M���w"�]h�� d���V��s@0x0�B
���{Q�q�(���~���S��ul�������]�������e&������Hr�&!��@UW�_�ggB��O�N�VR���~W�P�Aa �8�����vQ�^u|O���w"�r��k���H�&n�eC�������rl��,r����sB0!��: �C��l]��NNhE�rK�s��Tr�3 '�7���g}��J�^HN�"�k��3i�:�����wq���z8��'���5�o8��ns.�L�]'$��FV)N�?���`��c�	�s}�!�w��dS�3�|M��T|�Y
����Gy+�G���x�u^����`������O�$�
�������lT��������Nv�:w:M]{�Q���e�|�:���Dk���A���9o�3����p�&����c���u��yR���`��.��9t:�����������f��E����3��6�@���L8�v����gc�Lg1hd�\S��W���*s2���Q�	l{.=�q���T��D~:}m[�\F#�
��9c:�W��%��Vi��Cs����	h:�W�C�C`E�� �ZgI��
�9l:�W�c�{��I�H����-|sFr�g$�Y���<�O]��%����N'8�����:�1� ���3�����~�s(�n�qU���w�=c�9��o0��-Y�;��|)��4i���t"��gM��g��>�)��#5���/�����Md����wL��
Q�=iP^H��d�i�|����v���_PT���,�q�.���C-���`Fi�:�8�f9����������]����;����X����W�pU���ut"� 7��5�1�	����"7�q�_%E��3��m�i���1?�zKd��w�xs���A��b`C�\R��N#���M+-����Q��{��sCa�A*��1�k���O��]�9Y����N�{���B{C�}[3%w*�1/���"W���b����1�yR��s��#���{V�&��L�-�&+���<��!~0�v@w��E=�������������q�]�I{M�	pE��j{���C�����"{�2?OWa��m�co���9�����{�(�UhYi�<W���zW��R0L�S�������O�CHs��kRy����3��gW`��N�W�����w~��Y�����_���N���"hD|������\+���V��^����;=yX��!���T����$��0wM��R�T���}z1��6&������������^���IM�� ���@\+$�n��me^��S��O����k�D����(f�5C9�7},�D��
�&��a���X'���~`wo�4�F����1��%$�FW����z]�.��p��`����p�P_:�96�0�4��w5QvTom�q*��c�4�����F����n����@x�q.��d=e� ����~�.����z�K{�O-cVH��`'����]���TXsh��e��K�,N��c�Kp�#�E5\F������]��v(�B�C�	�Kv������}M��f�**�S8�u���\��w�f������QZ�Z�P�)�YdS���4iE��=�-�4(�z�)��uy#��y,�N
��G�Mv�Y�9���!�R�>���bk�O.��w��=���v��+��'[���j���w����������o��@%;�
��.�G�������kX`�?�<X��1@�%G�
�W�w����p�v�QT%����y�j��N��;+L]��.x��+���[N����k�tx�tg�l:�ZI����":��wY�T�\3�p��'C��p�	�[�4[X$
�?z�:�^6k�]��}:��V�����2s��-��q)D�c����y��S���U#�����6��'����Bm���x}��V1��B�Jy�}���|,	�s\�.k��h!�m�8`3����i�	����Q�%
��c��:15sP>�2&�c{��l�+�=�"�JFA;��X�,��
��`�;���:��7"�d�ii{�xdwN���?�6��cf�i���;i���=a@g%P-��]f0p���S��c��{�o���{��a]S�/���h�;���&����0j�f�P>�I#��l*}UJdK��,2��Z6���}����#�yti2���Ps]�yt�|���<�����Vf\
H�dp���9�5}���C��8n\��K��/�23���DQ[O�b6����;���B��s�����f|J�\77})���p�3s�^��7xl�B���HT���lE���d��X�U6'hU3pV��*n��#��������N��_����JK0^PyP����-���8��N�
Yr�'wY����q5>�xL
,ul��`�n���������"aa�e����q��vh�S��K�����M�������()m;��4`��(�����%��V���gl���0�o�f�h���%��}�
=��A[u��n�4�m�R�u�}��b�Y|�L��t�Qc,�^
��(�[����b��6���M��S��VX�F���'�N�:y��r�����ia�g�e��/k@,�+7COK�k���.CO�h���6��G����	h���?n�IU�������������"����D:u2(
��0-�hG���m������A��*
CR�$�?P��')�S�~�:6���!���O�`G��!�A"r�p�d*yA��}c)	.���Lh��LA�q����6���`�]������x]�C[�C<X�;vY;t���7���=�c�������x��A,����z2�=��-"�(`��I^���1��o0��W�G�3�(��3���+U��P���#�B��O>�8hSZ4Sj�d��vD��_5����]���kM0�8�%�m�3?|~�e��^����`�����d}P���{.Z������'"�SH#W�1��_�ri�ZHAD���aC�N�j6�5Oi0fD	#r���M��(����T���(��Zf�������<������Mm����B0Q�U��s�������]��{D�@4�����!�,����V�}/���D�w�y������S����Xa��tO{u��D���:�D���
��X}���������<}�U�f�O&
9����r�0\/��]X_���~HW�W� ��E�z��k�s�!9�'Z/�sT���m{�������UUwE?&��'����' �����p��+�y�0hYe��z%�:��<�{���=�\����/L�o�e����oi��XR,����L�����l�M�"�V��jE��~W^�9�[A���"T"�h�{�<�,�&��8�Y@:��@�<�1��A�$����j��j�������B�Jp:�x8&�6H��^lWf	w4J��X�l,Q'�v_3y�N���Ty9���yW�L��4��k!��@5jcooe�W�=��+Z��z�c�h-���S��,G\&b ���\������K�8��p���q�G.����!�>�1v�L+.n��t�FVx���&e!�u��M��+/����m:/��b�+���\���b.���wmV�,/'��j��P,���}cb�y�Ce0�~�j h
W���|��z�8{t�<��� 	o��y�')t7)�*i��);6���t����?'o�#.��oq�5�q������4�����������Y���2�v�����E�������t�,�k�[�^�v#������6)yY�����6�o��fw��4A��wh�q�����0��YNQ;1�7���1pZ�y}O�P���&��(��i+Ws�i(S�W�
s5���:��:y���B��no���B��r3�.�!u���P�h}���][w�����^�Fkz�ApXw�|��K)�7��?��LErZ�,����[���tjo�
a�f��P�_�]���GW����8z����S�!���@�=Y�e��+U��W`9�q�u2W�I�������a�T�R�s"�(s��`�iZ	�B'A����k�f�Y�B�F�}���Y��r��'ef���mT7�,R��p�-����o��6	�>[4��r}�6n�w����
Z����Cu�OX�&w�'$��?�
V^�����9?]����!������=�<G������S��KL���j�5r��������'p�Q���������,�{Mw?����(��~J���>�Yvf�O#?�7c2A�x<9��_��u��$�����Iu��~'
	�C�e��2�V	������F�>p���4��1��6&[����GU�r��<��.������(��cS��e
@!�}��@.�C�b
J>��oh�\�l�:�WF�L�G�������.���FI��1k)
>^���e	;\�J��Lg�JD�����p����V�'
!]0���W1O�PO�����Zu���?4����/���)�|�Mjnt����8�k	Ti?�O�=����LM�����]c+Gs%�x��_|��	i�n���[V�h���+�C;L�����H���Bht	J��j�'����Q�)A�Pik�9���.�;�������m�G�&/������
�����(PW�Tm:�7s����J�Oo�Y;��
�����1��"�,�
E�A��c�#������x��4:$�t�'�BN^yy1�4o��v����5'o������|{xA��������+o�s*yC��
D
��kk���}��)���L;�������E�v]��_O��9���x��(�g���*��2�r�kz�O[��o����[p?���,`��KI�A�w�-� ���%F��������;�'�����g�.�@�m�x����UH�i�����?�
�)��Q�fQ4u�������>)LN���n�m��������5�V0���-��V��2��v-
��W��+��[����z�,N�x
����2
��h�1����2��r���"p�T��Ukt�[v�R����Y�4���%@#EB���n�0������X5��4f+��sx18:�q"e����4�3�j�XU���DJ�j{�,�\G���)��dMA�%JTgHp�������L��|���r�9�AxU�v'����_Zzi��*0S���@��~��y����w�;p�c��>`2�}e�;}���!Y��o
�J����t�0-=3A����_����D)������0����sO��]Q���?N���:���4a�x��
(r���}����s<����<�1X���������4�1T��|Cl��U�#n:��8�����6X`dZ����������Co�\�������#
���Y��o�0	^�Q;��A�MtR��t�mN�e�X��V�� ]dkn��4rVah��t@���~_�W�C��,�>�n�k^a,���)�o���f�A_e�jt.S���@��t������]�����N|�lp7+���E���<��u��:�����-I���P�~����M3}k~s{
O���sZUU������g�B^0e=:��+��~�"Lu�RIf�Jo����wd��z�w��?\��u�S0����|���������|H'O_�����!(���2OMN+s�}�~-�!]�2��4�O�W�
4�D]-��(��v��7��x�Hb�ak���R��-�������,z�4��{Lnl�|�
.��%��X����m��F���q~������sZ��:x1@����d�=iWuc-�6�$QIR����;�� A�� ���=B��*K�8�����j��Q������X�0�#�a9����,���b���� ��%z1�X�ciCm��:�=EqFvrx`d���	���
�e
�S�t�����E��w�����p�g�|���|������z�v���=�8n��8|��2LH��D FLB'����5���x�0e��>����7��%/�.���>��y�(��v��:����@���,=��.�T)OM/���BPlO����0{����������l@@�[�5]x�!I�,J���@]x��`X ��0*�C�iv��-�S��cn�3��{DW'���&�g�:�_�Aa�����
A����_%�����0��`��l�U�*k������d�!r��/��51����^�X!����G4�6����j;Z��N8v}c�0&�t�b��!t�=0�_�F�	' L�G
l�t��W�qb5���#5$���l�����O�
:=�y�<��{��n�����z�P�8��{�yG��}���I>d��E�uA�#[���[��Nyk=}}�2��sLI��B���Cj�y�������|��j����<=]��:5a,�����m�wu��o��P��~L���S�[���#�����}8������Bq��$�y�1�Y�E��z@���h�H����H���)��]�����3��W�G�vt�T�H_i���3��1�f������,)���iw�N�x�tX�h�� �4�s{��
��
�$z�����������~���'�Er�
;���q�l��wL�Y�C|����*��1{
���wo�t�,E+��B���4�S�5em�d�������C��S���s����3���������>	
�������S�{��:��=�8����o�<`���+-s��c����O"����g2YrdP��9�w�\�2�� ��|�!�|B�� W�c���2��q?��q'��P��z�v���'���E���z=�hX��s�3I�P�b��?M��������6K�j�k�Ft������)u��������@�����`��C����8S����V�~E8���"E�����#3fi�J��*�����Uz�:��
t����T���>H�pD"�LD9�U�[�����w:��\�[P]��
{�%����T�!dY]z*����L��BCjo���*��0��ua�`��&>�!��Ss��������D,�h7c/� J��R��*$�����%�s��SAp�"�� @)�������)�}���x�����2�L����:�r��3���n�$���JG��p�M�Ctb����t�cUi'��t8[�j��]kDH
}u�p�=-6������<)� ����`���16���K��M{���<��$�wc�bu��K!����F�����t�Zn�g��Z�%U�	������x8�P)a`�����D��Q�9������?����G���y@:���S�e4&��$�M^��.�+�AN�7�K�3����kFk2t"�����h���>1YyT�M�}H<��\������&�b_QB���ha
��.�	��U][S�������� �����8(�<������{9F���7��[t�w�`�nv,6BQ��mu�0��)Eb�eZK\��zs�?�z���
�NR�m��3\&|����v���R@~�'�����A��.�o����?I1<VG�
����j��-w���);�r�n	������.	6��
h�^Y�~��$	w���@:�/����v��x��y����^��w1����,&3Cn�,�h/n2�_���0�6��]�r����zx��ix��������T���{�������jUy�C��>��|�����:p�A[�rx=�	"K�GC���
�-���@�r����`]<�}j*�aP���>����7j7|�-��xB�a8-r����/j4�~���w���^����3-�p�Fgg2��O�R�kW������U��*����<����.��L���A���/L$x"��>C�6��|�>
s;���d��f����9c.T F�.���t����1����[�G�I�����l���mr��F��tX(�\�E�����G��~�����\+N��%M�/1��lt��0��YS��`��N�����z��t����-:95���sz�9�e��`IF�w��Ii3���0��^N������}
a�c��C���I'{�]%Ym�g���O���3����Hp
!��M�`�4�u`���z�pz�F@S�z�GIo �;z0��+N����Gc�lh�������>�p�
��Ae����- ���qG��
�y:�7���O?Wn�B��+^-e(��)E+�p�`�(1�����:�@'>�K������"�5�%��];��d��?��p{=�{c9%�1o����Yp����1�����@�����c2�J4+h�>e��6cZ����2D�s��Q���(��~��Vqb���<!H0����%��UXU��\*l�:�]����������7�1D��Y2�J�uA���Y�"w/9*5�
;0+36�5wc��G#���W0I8�7�������!�C��3��x1iBN_������sE�o�������3BQ3: %e�cA�����B+W'���L0��A�G�N��@��E .��e���!���i�6K�M��-�FBiu�r��>�w��@���	�a����&�8w����^NR��.,��+��sv���
zL�9BS)�
�R�`iv�(���G���'��zN�FH��j��y�_��w�o��N��,=?�&�OY
����,$ �
B	�],�:2G����)�M�#�P}s �������Mx+�X��{���I���
�<��{Rl���i^	g�X��0�2L6��\���Q0�:���~���o��)1]hQ����x����O��E:T��}�#��s��m������=b���0���7wI��U2�5�^��h��)a�XX�-~�=�+(t!�W!�:_`[>DL;C9���AS2�(//>3���b��*�x���������SL�C����a����#eKvY�z��-�B@�#r����Qn�p��)��D�>E�#�_
Z���?>%��},X|��DO]xf/���nN���U|C(M�S����)N�����Pr�mJ$�7JEF�}����*��������/�[�n��oE�9�����������U���_'���c6�z@�GY�0"���q���!hL�bHYvJ���QM�z`���i�8�0����E���� �Mo
t�U�|� � �T�e11����jC��	H#d���o*�=���'���
z E�{���!��7�(�JJ����������36�D���s�
��~8i��|��
��F����OY�-I�9UH�z��qt<����	�#��Q�4v���/��r� �OT��L"}x�9�,�L�����w��
�\����
���bp���|��?X�FD� � �33a���a���?������IOo0�a�6�=���}�?���	���j����.,�5J�%
#�c]�����m
�!D�`��{���������0�{�
2.�q��'�8���'�����Yg��f����=��~�zl��q7��R��Uv p�O���$������C��6=9����	,&<�Q�����(?���)�
V�%Dw�`D�)@��5C
�`"�f���M�O�>v-B>�lD�z]O��mO5hw#�J.$���N��9�FO��1��K�`��8;f��l<K��p����[
:���f�hUg����H`���@Y%���Sl�q&��x�� �V
�hcRU���2�z,`_9<>�1�������,yz��������r��q7��$���PFH�������6����Fx����
K�
��LE�	�SQn��#Pmv����U�����0���!����^Q�J�8D�P?��_��B�K	o�����<��x�</�d(x_g�=�-e*�/��IJ]�}�#�k�(e��,GC�"�
uw{=�l�����Ax�ET��0��/�r��;�U�L[7�1���N>���rq��d�U^�0Th�����}*�����8P�oQ������}�	��(��LO?K�;n9�"2p,��?�52�C�+�q&3nc&���9��}G2P��oR`���O�U��
Kv����,=�1�h���Q�������R/�8���q(4�8"��x��y}H��;�#��L �w���gT2n'
8!��t�B����~4��%��@)T!�1���Rv��R���0��
��<��t�>=)��~|s4}������.��t�?/��d��1�s���A��?>�|�)�� �s!���T�oo��?I��;U���G���e� ?G��3^�J()�h���.Kz��02=H��V����&�q�~D�0
�&��u�n!i�(�F3�����K��Pq��}�M��M&�?:aF�t"���o�`�p��]%�t�X����Pgt���F��;Q���fS���!���k������
�����@S��o�S��Bd%�����!�(nk��M��|:�3��Qc��pe0�:Z~?$)L����v	��&_�M�iw�"�H���{~��'UI����"u��k��C�dSN)�> ��"�SP��c��K���������I2�<�#
dw�@�k�����k<0�S����'>��~7���ZJ���h��?4����9�~��F����aUV-1���~�� �>0X+� �!Ar��5
l�.U����	DSd���9'|z��
Y�|�~����r���.�Ba-b�n2=9��3���"
�_�BN�]LJc��)?H���=�]����:��8�G����m���}J����8�`��
�����ua��I�x^^`��M��<R%��]1\l+q�"�t4����2���T����lC�L$S��� E��1lIQ��&0�� ����Y�/����.���<5n;I|~L����=HH�6

V�����e0��o����-Dk���0�BC�`e���������oSp��GQ��	7f��;E����EK�������������F���F(��A)��Dv5��Av�[mK4��8������p�?N�8R(�:�ss��
������v��o9��b���@��=y<��p>L0	v�)�I�g����;��6l��fQ����e�0H�L�D!�����M1�0$���A)��|�E�.�5O�-{�9��f����_��;���H�9�&��U&�FT�3����:���������8�L7�cr�c~���Tu�8�!��v`����t�c�������xTrS��S�.���p*x��������#�gPUy�(����8 ��h>w��������a:(%%_r�GP��!J��7 �L��*�U@� u�
�nL��+��Tb����L���������/h��8NZ'�	q�ee�).���O��Cu!���wC�LK��T����x]�L��97�:�;��d��@�9�zfW���#FE�8�����"��*r>�1�qf\��MM��0�u����4�|����r(�}�,nr|I7�Ae�G��j�XJ:����y���	��7
�V������0%W�b6�rM����!����|F��2�%�O�xm1�7e���fl�F������r�&�b��U���M�x6~�j���H�R���~}{���/w����6c ���S�5;��{W�\&��I��S��z����0
�Z�i0�I����q#A�->��L���1GG����������;dPV���f;+&����&je���*�cfU�E���@�B���O��nN�O���Xgz��'���?��+�L�~�axl���i�������8`��+C����B��������/����qv0�����M��85�ghO�����Q
�����3� �O�Q�<!2}Fe��`g�:�)�@$f����{a�������T�����2G~T��%u:O���w���Y���_RR�i�r*��cltE�]�eb�\�+V�r�1�w�})`�C�B���7,�1q&F�K%(��i�C����������ii�C��,P9ft#��t�����X��66�p<Y6����T]�M&��H�� �N��1b����jQ���pn��*#��wa���������"�V~MN����e_�b�A�
}���z�
B%� @�y::���.��OD�7Z��)`l���6�Q8��hF�H��*@�V:y��M0o?�m.�O]g(��dn�@�,�~���V�d�b�������<\#�wG�Y�s
5l'�$X�ul���N��K�Nx�e(���)��)�(�������.���j(8��<@����!$>��x?HUV:�
����>m���G+Q�ed�P�k�7��������">�K"&�&hq��*=��*Z������X3�pc�Q�a ��..����X�x�������p�\N%������V�\(��4��_�aA����
"�Q?�g6�y�������MX���`k����}8�+b��.��4��U��M�l�L�|����r��Tc���}8�@?<���������$�����v=P���e/���8���tc�����)��F��-����
����E�'�������f�C�(l�}XF�4����sdl�e'�����h|��n0���'��lm����fg*tT��e�����(���J���b���������X�My[Tv��H�i�N����L�'��3/�����i��a�cd�!�(�-��J�D���ZJ�'y��Z�
����qb@~��/ �HJik�t�� ^�c\[��B1/�${\�3���4���YF�F�0^��&�)�9����v��~7Up�@p�B����7��ab��0�q��z&�2a�4E���������~��x���S��2�z�C��L���{o��*��tS�#�`���CV�Y4���q7�s�n����j]0J��'Z)�N,m�,2io�:�X������s�K�'�{�S�4J��>�fb�F	��	sJ�{0OP����OS��#L^3uV9��I9.���h�{)���8���q&�'Gy�*��>Z�{�������tX�cx�L���q��z�,q&�A�P|��AH�l!R�A-��G`s���������?nT�����TJ�-����s��M�B�15�`%I:�=L�a2^
�l�u:K���|�Nb(w��T����~�7���	)<��<�A���[)&d	�4��A�v�D()�
��&����w���\K�P�`B�j�mN+����Q��4����1@���1�e�hW����x�a W�c��OT�-T����@\��ca<4tel��zf�-�BK:C��������u���im��t�cC�K�	�@����F����-�=*p���s`�h��'�
���{z<��Xn1��*��Tx����o��}H�����D��^�s�~C6� �=�~7�-�Cz�gz6�c�rg7�_�;0�Q�aV�g�KF+(��3YKn�XM�h��p���= d-$�)���DN�9A6Y����s�r"�sz|�����!����K�<6��+��@��c�-�%��|@�Y����O�z��c����U�������	�=m~��������gFLvS��	����JP8���6������q�a�sj~�:_�r�eI8J�-,�,//'�3����Mq>Aa�������AB��#<��9k:�X��tz��'l���*��3�N�z:oABK���%R�|���I�l���,�F�|<!=>��x�xm#|����7��K'�$�,5�|9�B�-Z}-=�(Jn��q+�y�{�|��p�����Pr��Ud�1;#4�s}{��!�V����_qL@Be@�V�!��XC7@�Oc��b����I�%9���zd��>�,�z�A;�x����'���]��6�#h���6�f��)�yU;S��'���x[���r�!��hD����Q�b��������i��=x�L_�
d��A*O�a�Ga����u��Lmr:�b
�/�4-���W�.47�����Q��%j�1��aj��j���sv6�������+���e���h�qA)�s��`D(��e�(X�YO@�����MC#�U�g�����X�6����j������$|c�9���j|c�=
��Jp�0�v�� ��XB6��!1Se��������~�'S��eA���!�L�R���������'0�o�	)�p��p��E�
����0��(hY�8
l)��@��"*�0E%3�sZ];�esak����QE�]��<���(�'[�JE?G�s1��F�����!��P\@��(�4(�9���K��N�{@�!�����#���3��q���p��M�[O��L���<g�=�#ss����������������
E���	X`��uY���R��>>���$���bB60���R��
������~bP@L�i���N���eR������vY��8�G��u\��N�>A&�����F��#[+4�NP���fDf�I�F��=���
>G;?����K��g��^��d�Sb,�v�!��)���1��I�'��)�����#�VEOOY��*[j�doD��$�s��`�=)��M���A��:S�2��vz*�t��leTBFCS>Qnj�A,;\��Y2}���.*�	j23�cL`\�	\]M�is�7����C�D�����T�	=[o*LeK��Q�x|d�I`���y@v<�ux���z(S�50��"�r����`��������l���
UL��9�s�k3��0�����/���)���#x�
�=�~�����*����6���P�5f@��8@�b����#@Q��mCA�z��"�i2�aPW����o�'P5L_L	�[�m�f�;�Bb>�����6�����8��D~V�k.��s���/q��N/�����[@2�O�1�[�O���
�6e[h=:2�J � �rahQ�L3Qd"�e��1k��H�����{8q�5�>�:��]��M��aw�1�6:Va����(��A����E��<�07�c��n�se�2Z���8,t���B�NM��2��^`�1z��m�����x�!(�	���{�����CY�5
�HS����y���f��mzS��(�P��wn�K���5�+a~x�&J��D�BL2�B�XM�07��X!�m���kA���B�E6����z�4�*�1�����R��
6�
z\S����S��]�<������Wo��
G��@^]A�;mRF�	j>LE���_A� �9&��<}��? !MtUHO���E��I�?�C�
������JJ��T��e�����$S��_�S�*b�
�|�dk�P���t,s[ �?$9C8�^-g���Ib|y��p��[����<����'�+������*��(����6>�S�H�o������|�P�(/����� 8�0M,^�N�E�����e{>��x}�Q����/a3��<���]���h<KG�W��9Z�&M��I�q������H
�{A�z�G��kd����Q�5P������~9����V <csl��?�6P����~���}��/8~K�w��E�(#�_d��&�1���=��&�����,�g�~kZ��C�g�����W���Gp���_e�l_,�/�C=�����X(=���?�uV;)��W�#���k:�������P����bKV�����Q,��.��WK$��&F��-k��_��
t�x���0��3�M	4c�<!��s�C�
�+�� �����g��)�Q��]�.�
�m�t���>5�w����/��������g����?c�9{.T�������/������>��_���y�G���xf�h'��,_�g��<�����fo-�����Z��
����d�cc���%f>"�X��W���8����/���b���b������VW���\�c�Z��^�l���VJ����
��F���a����A�+T2�7�� 0�U*\|qW=������f@�m�6������f��O����\����/(����S�x�����|�}��J>"��.\�gS#�@G6�v����H����K�����,�/��U=��[T��dq�G=R����Z�_8}��
;��G]:�kXw�l�O-�N�#}�:�����[dJ.p��mS;i�m����n�&8t�h�V%`��c��%-���E�s�����IQ�1{�+�
F���b���p��43W�!P�1 �|��f��
��i�aE��p�C�1�10�����@<������p���z�t[3D��������zF�l*�0���|�L����O�1y	$,6���5z�w��OI��2����>��N��.�����n)�*v�4�B����\K_�XUz�j;�}�	U#`�k��i�hM^l9�	A�������~����'��E�8=���&E���H������F�)��eoi�|��~����1����0�)�x���(^X;��#�h��x�i���7�k�f��I2~3�������Ae�������!�v!T���z=��1�,m�������-�{m�;�J�l$��>���gh��*��d
�or����eMCQ�Orc�}�D��o6�p�c�/����Yc������k��3�,)�9����M�m}W�-��-y��x$�bH!�"wg���yUu�Z,[x{���@��M���ik����	�7A���}��������Z�rW���Ei�.cP��I}�gSg_��G�DX}7���S�z��d�R�X����L*7P�5�����x��������3������_�����@~LA�]xd��La���|������M��
�0}��j/���/t\�k���[���P��M�m�u���h���b��	������Nt(�L�\mt��`s�-�A_�B�P����nV�g��c������Fm�����.���4�$��DY/��/�B���Z�_�W����g~���$	L���D����}��~G�+;��# &�8�3	�]7�Lc�8u1�.�����,��gy���+F�U9 se@��K�����LQo?[�Y�r7���n��l���/�}���	PD�v\�k���%������N�O
[��"��\��UT���X������b��W��Qc��G��H��.��OA{���'����;C�a4,��X�!��z����`p"G�
<�A��V�v�Zz�L��[���&�����C�qm�%���{�x��&��2��e�!���2����L���5-w~%y���w#����m�7�h"�(�S�C�je���"�c�T}�O��1x�|���)�V��kUg.������6���B�_CK}���d��r�dMO��� ��:
����?�/H������1��.�����3�����%�t|�����b�=�YR'��j#���E���Fq,m�g�Q
�<m�CG�+;����>��r^MO�������Q	@J��Z1��
L����s��5��v�R�����%KQ�%�@�I�L�l���� �<��~T��CxL5z�N�[�X���&���������[!�j!����(5v����K�.�x�����&���5\����� F���C�
���~�4��S}�pvHMN��0�&�P[�������,
���[z���1=B1R8.�
�;&���������]��E����e/1�����kF���rda�M$���R7c�+U�I&���A<��!E��8��R
'aV�N���������mL�������.�������s�CH9|*�+�Tf'gY|	}�kT--�FO5��.�On��.��"���;��1��=�����w��(?\��W��f�v��m��K	�a��q���#�n�rCS�c���=}�<u2Z7��'.����f	F��m5�[�M��f/�Q�^rTa��<�����=���%�����P
���=�2��#XR��s����O@��aoir�)���kUec��sI�@Y^�������\��
:�NQ��|�p\+���1�4��6G�/hE�����Q�5���b�K�F��j����}6#|'X5��5Xs*��Y�X����=��lt������?u��=Cz����w�Jp��%����p$)��fojm��G��`	�(���q\��o��0mjykRNy�K�<�P����l]R\��NUp�
��	n��<JO�Ai����i�W��C�W�w����q�C��;;�a�:
cCA��	�p	?�/pkG���
��{����1lb������x�V��o^8"�����5EEv�T���<�Iyj��z�r�z<�e�wR�C'j����0�[6
|���t!U�f��c0����f5����9f�=E�E@��R��z�p��-��l��k�*P���cb�x���])QkJ�_�U�.��6�f4T+������t.u�����oh6_	�����1�HF	��R���Eo1R�a�[�w�.����^YaRG�����)F�������n�4��@*��G8�b��@$l��&�������������A�;B�	���*���������������[��{����~����������aW�.C =�>��;�v�j��An�]���R�����]�K��+1�,�qLqs��e
��^W,<t�o)PB�KJ�dt#"�(��F��:��[� ��w]=0B�?��P���?s(
�a� w%gX3
������*�YC�:A�bs�(
�K��`��v�g���l��D���������\N��OP�d�l��'��B��
�r����>���-�����0t�����=�<8��v����=���8���o L��L����nN�q��:4�q�bs_��WB��5������������E��IqF��YXp�{n�����(�>_E��J������O��;��V�jn��w�Zk���[�0?nd�#�e�4��.����R������`Z\c���w����r������YB]�>u���BU��g�5���	������
�W*����C�ni��*a�o�"{���� 	�=�v]������7[�ZB�Ge�S�v��~�OX~���7c�Fa�5�6*�}��G��m�X�`3���^�6`H��Z��R��kQ� $�y3�i��U��
,���\y\���	J�yTo�`v���<x���,�4���V����U�|����V���+�������I����Z	����]Uk3����t����N
o���f}L�8� �N�R�0u<��]��(�����2"r����e�i�*�'�
�u���2{�$#nhX#�e�.tG� h��� 4��/�.R�����b3r�����i���'�tJ�:�Q3�P���<@��+����T�[���|w���=����������`�k����?��3i���x��G,�Bi�?����%{�*zl�F�Z�^n��V�4Ms
��h�
�L�.���i�t|����k�S�Z������/3\&C����aQ�k��j�IP�
!���M���V�?�����<�8��=�{�g��%�WUJ;�H#�%��<��+��]�S)N�a�CbX.������26���b ^��4�-���2vc}q�SP�*�-�e��j���r�����
�_$��Z��������������q�}�0�����XL�1�Od��k����>&�#{������1���4��:���a�
a�!9��I�;��d4�
��C�d�f����[Yj�,.g�NPyG�s�����+��0�Cu��7|R�3��Y����D�&�s��������5�p\�L�ow����[8�h3���F�b�WeZ��x�eI��~��LP�k��|'�nV�z)+�b|��>���0�zn��!\�/������K����Cu1v���	Q�<.��Mq�zw>^6�@�(�n��Nv,[����������E�3`RJ`�kU��
&
a�H�#p8V���;
N�7$����z.�����8O��6��~����=�0�{�s��F�h���1w*I�p��b7����,�_������u�~�R		1�N��������p��~e{7*
p�Pd{&R3��
���82����	
�V�-�'�����w����� ��a{�2�8h>�+6�0<^r�qu�FS~�,.�WrwCr�?}���7���O_�'R�����
��?�L}�@Z�`�{'=OC�B2��#��<�VF� ��D=��'��[(��aR�h����SMX��j�p�����Fd��bq�]
���
����N:6o������h��e�SZ]��S�����e���a�<���Ss[f`������������O;	�7���q���������*��=x�%/i%��l��������r�B~9��ky���_������1t�b�"��N�E�l1-�i��@�2x�&%7��������C��}0v�r��}=�Z}sI���"3!o�&e���EL�����-tiD���%��?.���:�	eBv�b������]�������kV��/�fS��I�����������#���N���;���J#�7
�B��a�1��J+k��>�\�9�q�����-��$���nK���V�.���2+^�_�]%��tM��P� �~Fs�r�*%hF�FH��.2e@��4J���>t���pF��/:�����F�=<��(;VtTS�l�&k1B�=����z����c;�+5�gB����Ay
�K�������d������(6�&
�ek]%��N����Q���2�� �&��Bz��,RvP[@&L����U�Fk���bC��;�F����>5���� ��{o��K���n5����	@V���q�9CkF�A0�:��\,�M����D��w��|�0�������:@j�D����<�Pk�.�EeTR�i��K��j��ERP�������d�[�>���kNuJ=�	���������0��Y�M.p<,e7�|�;6g���1��m1mc� '�e
�H���c�����>a6�A����y�+s��o(g�������}v�`=�Z~���c�����O��Z`������$�&���/�l|���{���������Zhfs�}k�o�����#����
[xU��HG������M�}�@��m�U�9�X�fI������SC3��
�H�Gf���eo�s�����X��e@8��9
`�����tp$�l/�Sn�n���D�U�P�l��%���k+���wq E����&�~�w�%��������>~����~f�R�X8����L�!ia�����K���Vdh���O���r�%�S�WIb_<�Pa�u�
M������c1v/��-�n����b�?����B�T���"|Tu���XOt�����G��J�Y;�c�D�U�^��Gr@�lC��7�}�g_�f���YOa
����%.�e��
7�������sh�g�R�J�2��r�x&Q���?g -Xo�Rx�u4d�m��n�����ZX#���J�%�T���+g@q������O���(��I��%��k����
��a���8Nz�q�%�)��1Y���b3)���~��H�����7�X521hyl|SBF���2o6�*�^���z��}�����;Ne��S�������}�[A]`��@A���
�Q~�yP��!kJ��A���1I)1l	����u�je���!F�@l~����1�/7p�+����%���2������;\���"�|���,�G�����p�����=�X�*@�h��Kn�����U���*��3);MNmf���7�J�y���$;"@V��������!���6�#���$r
���)�+
3���|[H�����Xd��"�D��0s�]hK�����c�t�?�q��p�
,^�.���/8�3�Tw^��p��[w�D����pu�����Na��?��f�`N��k+d�"����;C�t�.����:��R���	�Q6�	����c���Nv�p���y9�y���|c��pX�
C��1���1��Q��S�����3�^������@{����P��'R�>��[��L\�e�����7�Ob�n��xp��0HAFM��]��`kS��e�=m`[l0$&Z����� ��@�M������~��c�l(�����0�����`�T�������`�$S����� �
5�X$H]$(&%TG����:��G�O��_��t�>��J�i�b�Q7�lZH���zN�X@�(8!6������Z�����)G?��;ac� g��
���_�]��Z��L��t������[�3�/l>�����x�k���e&>4Pk���A���J��"z�
��|a��/�[��V6����6�x�)!%�]�	?��d':dSB� Wr�H~������m*'^Q�Gz���A�]��k�U�n����c�l�YC&��r����'�D�B���VV��'�p��[��pV��?���2�gJ����~��s|���y�oc���5���-��_��>�[�7x���* tC���j7}d*����B�1�:��.�@>�]��!���Z�*�� 8	��<�S|V]��9[ 0��A�q�l��I���H��u�����V�Z���j�"�6o���(�w7PR�C��*���d����h[�C�$,��������`��.P����_5����� ����{�u�
&�������=�Cp�V��B%�(K9��#�j������@*�\���@s���U�4�-j<�����+�Q%�I����x�@Nq��&���iD��%���4�6I�
P�������d@��-��R�^��
c�+�������c�Ka���]�d;(�'��o{�O����y�������W��h������|����UD�{�#T]����3TZ�m���<��j�V�BMO��d��kH*���~�w�)Sp!����n���M�kpII�34���+���W�)��5�>!���R��'v�T�+�@����
�f��Nh�
c�8�2d0*mvl�m������H�7\=C���"����%L4�d���*�DY�Iy�pz@$�T� Mw��<�)���|���n���:$y�bg;�=G�W��w,E}{~TDL��@������K$@����~�x����t�D���'a�����M.\�������j��������b��o��������DXHm������U(^�"�7%�>�)����n%�?\s�O	S�U�/e��v�p����N��jv���W|�r�&$Y�����#����W��	g�"e�l�N�+��_���*�QWL�T�0�{��w�����r��Z��D?�rl��+WQ�G[��0���oc�]U��h�i����l� �J�x�� ��m�W��@����=���_�fJ1�=��][Z�������3�t�
l�^�O�]����9�.���/�����~�ND�nE���'5�lk	?�/���y����:(�M�L-d�q��Z
{A����p��g�;.��n��
j��JV6�������J�`H��6���� ��t� �_	�'`f~/���^��������T#~�r9��i-����f��MFU��C�L[���J�m-�Y���c��&f?0#!!�O ����	�/�!(��k�K�Q����a��WD�G��\!4��qO��f���8Y���m����B������b�n����j2�!���CR-w��d�4
c#�����?�}��3��>�AF/[tt���0�����,$��xK�)����$��M��-{���*E����-�I�M�=1B����~6`�yM��%�,\>�������G�O8�5����lA��`�y�L����#���oK&�x��q�l��Z&9!����z(T�����V���%g�v�h�)� ��e��M�����/
�?N|��PT�-A��TTIT0��2������� �� ��s�3I�9��y����i�������(��-\�������	�u{	?�/�I�B���s�i���&���H��?''8�3��gT������o{k\�y�Z����C	d�������#0�@�r��R�p����5��+U���3�b�����@�0��9�I<R�3�HJ�#����W3�{��&�"z��9�����`{	*����T�2[n�\����7���($���N2���>Cv[������{Z3���">���	�	�
�v	���y�u�X1�u���U����7�N�\2���'���bx	�L���Vl
u4�jmr�I��M@�a�M�~��w��ti�Q�BOq�y�8�����DNY+�Y.��`�ie>����a�};DX!W-�xiB
������h.Ql�Q?:��w�u��00i*�U7q��e�zfB-�6��[��/���m6U�/pcY�:���^9�k)5P�j�-n[K�	+�1�� O �B��A� _�����e
���m �
��K>.��r	�K���$A�.�>��<�����J��5=�9�N
�4��c(�`Tt������D�vX@���r�!
��:��N-���,�����~��}if��b��^���S&a�y90G�6�y���W�~�h�14����}{�V��7)P�<F�d��>��'k!e�C�dB��������	5O��G�@���)'��j���>���H1�2�!�dF�C�A������������!����%\i�������1_qM�2��uF���h��0���Q^]�[@���������|X���-��M(��8�kCpZ�
ae7Bk����8l{�^)��-�N�B���$L����;�e���/`�7�p��|/�>�h��YS�������|�au�X�_���&d���Oxz�d�Yc9
���;P��I��L��=�<�0�X�;C.������<E8g�J��i�����n��&�!�F2�{,l���xz�9���a��q(
�w�-0�Zu���U�����o�E���5T��;�4�Pq�EE}{����>j
pw�/'�z��0$N]��G�������a+M��@o�>����p��k�+@+%��
��V7RE��u�<�����Gc{���N"2��WH
^�J?9L�ieR��+Rv�,C)E���@��������Tf���|��X$L0)��<�V
%,Xx�x�����b,����^ ����4��Q�0����(Gc�H�h�]�������N�������d$���H����M@#�qW���-����}7��Tn\�%
l�
��`�?�nE�_���#������H�#��:�W��:�0+A�@}g8��cw��4�d��T�Ma��wt�����9��s��o`
��PG��
���h�]�e�����8�fZ�>AW!�t�D���Crdb���
"�ksuB`���S6	eq�i���|��������E��9����$��������%V�/'5�S����o�E� +�.��)���0CpPi�Z����#S.�����4���J �����\���DY��y���������gQ|ADh���,H���%�(��Lxa�+]��qtW:�{�1�����w����?�NO�=�/r�Y��`�l����@O�����{�G����b��%��L�W���� ��_�"��lu��'�80��#,P�1�Z[
���6\����jC}hM��r3�}�J����1�V�
[�$�_���{N�E��!9n�����
D�<��"oup�I��^9�p��C`|�)��3�6�hg[�����O�H}���H�Df+��?%�
�%���t.�9�k@�j�A^�Vo��� 	�����6d�)F����f;QoV�OB���M�c��:L�&�2"��"h��{ �8�����I��z����p<��?���;�z$�u�sc RV�4;D�'�k�������OvE�yx��o�TP�-5hIQ�������>,��<��l���4����#�����m��8i�J�2(X�I����W1�	g;���2�~��a��|��4mN����?��S*v��������b�@G�C���ED�~�6/�5����a���G�*�Uzz)7h��P1n�����k$��)�G���@�,����`n�)qi']My�X��}�<=��[�s��	I��
�76���7������f���^q�!h{#l]����S��W�'>ku�A� nM�>`�f���C�K��P����G�t���>���d�)����r����J�x�r��&$lK���(�'?q��}p6�L��b�
��[�)P�������#��G,?Nr�BUke�D��-�<��pB��K~����M�9�4����A
o
�(��pf��kG]���K(�
��� ��.��������$��}Z� �%'����T���a�J�nLUE��.	[������`��Z�d�y��kS�,4�ow���F<�.����(�94f7L9P.};��������V��-?���l7)��b����px'�i*��������B�����
)���UC85����s���H�nh��A�v#@�e���x��!��@u�P����=�]�V����(x�C��<�VW>I8����#����|8�lD�l��X��[�lG��	�n�D$��Pn���4�I5Q��.��"C1 u�������=���-�WgKI���C
\u|�&jR�0�&�UdA@�p��S��2���A}���#g7*��3|��fI���v������;DG�hc���st��J&eG�O�Y7n	��E���^���,��a�g/�����#�F{�L#��G���E���]��@8L�eKO�o)l�,�����l�d��V8�9D&���DO!�9/�*��;S5�5���z]3p��Bd0�X
�2,���2&Sz����t���o����E�M}Q��K�(`X��������4���ej��&� ;l`��~��x����)��in������^�B17�{�@��)��U�at�}�����Z�^:+����'�/���/���M��B
�4z����V&�
������A����*�|0]^��Q���?����?�X&a�#G��g|&�ReM�����h��(�S��pHp��- ��xH�>��#�V$M�{Q�i6��K�:��_�"��3kAt6�[��B����O�_�i��r.��Y�0��+����u������_��:>�2	B����������X?9����U��Z�g |���1je�EA�����y.K�"9����x��0����P���\� �i���.�({:CQ�;3��5>��z�����0o@�����e67���T<$���o}l�K�����ht��v|u7���J
�L�#�/��Y���^�,��j�r�@������fm��MKS���
�(���L��+5�G��b�x:�/e��w��>x
���e�����d2�<��2 ����2�l����	�����	���0����'�:.��2��E���`2���0�������6N���P�a[`���g2 ��Q�����3�
	�h/9(�pA�����4���l�})��mg���	J��y�������C�4YC�����f��G����7�,[�.�!������x��4�Re-�)���v���MO��(b���8��&�.9>��?sd����0���=�u�Rf�z��6��Q�����C`U�5���W1,�$B$&�*HJP�;�D�)�6p��Y���M�#<:���5w;�:9���"xJ{
��F������y�:9���-���T�	�;��	U��G��;##b��}��H��)�V���^)���\��n�������Y���Z��g�p��U�p~*�jQr.]?\���R?��c4�2�#���	8��g�r�b�":����z�ly��s���Dn���nQ.�f�7���I��d8������^A�7��Ir�Ry��������6�CQ��M��q/�z"u��P�����������~���N��4�6'������}�����d��u�����U.�\�sJ�$�<N._K�O����j��!���q,�@Id�F�3�	��aUK*����T��nCK�c���9����Q�p��"�
n��&������6�omeTc�bI�������'�G��:��R> ��x�T�����!������E�I[@7����fBx*sK�����s�Vy�E�,N�T�8��w��ykfH���!���%�a�uMp��Q��d$^��b�����>����Le����pL�QJ��lc��y���7��8���c�9��s�=�n����R���X)!��X��|S���$�'�m��K2a�.	�&W2g�����S�L�){Fr���*|�La��Z$�sO��P*SZ�C���D�YB��]����%�@"�����+�ID;�s�D���{zaBF@�/�M.g�h����U�v��:�������*g��>����i�$
A6��4~#�Y��?r��-k
`V���eMY/^sM��*5+��.\a�3����_���b�,�����_8_����U]�S�V��(�K#���X�l�Z��PP
���I���$��g[6.PX6��Xl�2��F-�dz.]�2�v����J=���5@yl��8�|
��WeB�l>��	�	�*v|��p�����v����o0:g�`M2@A���"u�!�����mZm������,�|k��F�f%m��jG���sl��QZ�)�1`G�
�����[+��p��(���G�����U���=�
I��l�)���P(��$�byf��E@{�W���-u)o��[-wM]�T$o�_0���dws�v�[&N���f�����uZ0M���JAi�U��_l�[s��)w�Xj2�G�W
C/o�J-r(B�%hn�6�n�6�}�R���,F��^5�{�(Gn�%*/k)W���7���W���-��o.��H������]`����"��(�mZh��v�A{���s������_���Cv�3E���,�G��
��'v��Lb#1|7q����I�}�O�.7/s����I�6���/M�N��;�]z�m
����o����aT�79�N��-�c��D�x�'K>I.{[�	[-��3�?1a�r�k :���u+����M�Ct�:lwR���������x��h|�<b���.�h�pd-�n�P�.$��������>w�,m�n����R^�������|����'b��/�h+�7l�U��Mq4�c�,=�J
�F��g�d9l��mp�=��D�:U�V�E1X�%Y9����yR��}S��2*!�.%�����K�h��-��
Vw������=���:�S�	�=�ju
v^2�^���k��j�b�)8i���
�������6'(��	����p�n�C�=��L�c�-�l�K���S�)C5T�4�q�P�^uF2�����?�/��������Bjj��K�S3\�X9.m-PY������$�������gR�X��b���+��1-�:$���Z����JJ��B-VVE��f5%&�5��B�(��1(���;�Z�_����+���p�Y���S�Z�.���Z��Q&����������iT��=��w���5�j}�hC�s���X�F�F�4?%�v�?J��^����Y)e�I���@�q�m��I� :�%��@9���_���:J��@�U+��X7c�����	k�R>����%��9��1��:g6dP�����5>2�<K�p�\�Fdhp�`���.	s����s�j�Idj��7S�H8�44�~��$j����������g��`���Df;�����G�R�0/�jN��:���f*��C������Xn��������\3�	���k�$I����f���[HI�������'~%n8Z���QZ����Q��A�`��3�5>�m0�4����6t����$������4R�p�E|j�9�y�3�2��Bq�X�����g(5����!P?��"���=�A �5P����7��{�\/'y.�_}W��^e����/9����o��U����������,�=���3Z'��RY��7nh�>���p&�C�%�B�I�E���2�=�2Lc�l������{��m]���]Dm��%i�Uz>b��y=�F{g��X#'W���B�0��e�+��u�fe
���,U`������vg���������9�B�#�_j�Z\'�
�xtzy��K�
���/�*x&(gWm�	�gy���;����O�w}���	({��l����25��	�=<rm�t�����@�/���C�a�PY�`��<^�MSK���@�/�"x-!CK�K�B�]�\�/.�y|��jF�kV-WY�,���V��Q%V����S�t�����b��s)5����P2<B�T�cYkK=�������*��V��M#����u���[<k�P���'I:�6V�� X;��
�g�Q�a��A�l~���O��.k���\���}��w�������s�,_
c��My��p�Ts�R%#k �__*g�.i~�Q�X���<&
�������=m���t������_F�8==��Vhy�mVDO�������}P_G��1��xX-�]����.)��fdXmw�(!H9���X��Z��z����!�(�~AX -J��K��l�7���gz=���w�q���������umDq�7@w�n�Yh��?��Z-���e��U0�Y��8��[o	%o�/L�v�sj��2�����`D��-��~\p�����IH���LN/Y����8LK�P��O��uw^�r��c��U'
���^
z������������%>��&����n���zs�<��r�D:!���������{���v/�B2:���� ��f
�?���_�X����'�
��]K8��b7�� j��|��Md*	�[�)�����q���1Ovq,�����C6;��%T@�s`�-:��>�4"�[5+��v���
�1�x��Xd��-���n-���7�3C����L�_y�`�/�����-���:��:;���)_�	6}�!v��\���zN,���	��� ���Z=}��-�a!�Wp	<���ly�@�E'��\�C.�V�S�}�<k��z�F�0�<����*��F^�p&���T����J�*�5�TV���Sj1�`�=�*�2��t-k]��P����a�@�E�g@���/Hw��Di��bl�V���\��Z�n����tp��P��tP�re��9���	���S�e��C0V��g�W4	H�ZZ���h��U��K& �A?�����,vE��m``c�y����qz�0i��;�(>��+&��08���d�+!3x�:)-(�y�������`�1�o�j�<J��.���3���t#���vt0�����bU��|�O"��Oq���*�i��������(P��[��0�/~x|���@�V�K�:��{��XJ��������z&��5� �7<]�� �������<{�@��Q�=�����O(�rD�L8����>{2��st� Z�.cR{���k��C�pSV2�
�����&��t���5x���Mb��9WT���*D�9�*lNP�%�����?���,��"�2�x:���6(��-��P�����}u���
�_�T�K*
��a8�(�R�`w.Q$!�'�!��h"MdXo�	y�~5s.�5���0M��1������Y�!�GhYa�1�i4j�+Og��O���������J��K���;��m���x���/��h�a������p(3���m�����p��"�����:����������C0^�u��y�� .�&�F,Z���~��N�"�Wv��G�c�N�5o$Z(Ds���!|d����k�^-=�}<�����|V�
�L�4lOj_D�^���	�>�iy��R�(J
�vr�UxJ��YK�����#9�R�#5\o�����������<�
�u�f�;����l����t8_�F0B�x�us�T����K�t�U���&����E�1�j��Ab���[Y��
�X3�k�IY��,����i( ?�/���3������\�8$vd��
�� O��Fv-�:J��a0�^O�Y���twT����9�m��F��a�^F��\�+gi{�]�����a�������7fd|���e�����\�=?S#<]�����kK�=T�kA)��RJ�n��Gj�|��[�����I�K�)�"�6=���%$�K�fm��-v�~X�.7Qzx�|]�pj�����\��W�y��@�>�l�dUv��/��=!��&&�p��&�����V^3�������H�(]����q9_5%/q�������2Lq7.�(&�{e�C��
E�q�j���f(���7��N�d�����y�9�lv��9q���(�P��{,��>R\*���k��	��[�����ZjvrY�P�d����[N����������t��!;����T9���(�`M��p )�K	u%w����/��!�)8������m~�(w��M����3l����}Y���"mg���A��2�l�}����a��>�'A�[��XLC.��R������}���p�my�l	\�rU����)y.����C�0S�GtH���c���{tB������h�5$_3����
<�g���W�����H5��4Kz/����q��^�1R���{R<+����2"O=@\����I��.j�3��o?��9>�����o<$�s���'�Dy8�5z�I�`��]�vV��W�e�
��0�����Id�������
g�����((]�-���F��7���cM�S��Yc�m��K4{�G�`���)���-�V�~0u��H'��0���?&q���O�����j�U5�c���+6������R��),������r��n0�X?���>�,�L/i'9�������QY�����=�/W$�[�[���3� �^��x����6���wL�G1c�������/��^���n`
H�Q~�Q��}}��|�.KOwX�O�A���z�����/�U���d?*�I��h= 
�������r��0���)7���)��8��D�����n�zH0���7�"2��[�h)w�1-����|�@�w�����c�������G�a����j�ck���@L�� �
>0������3���yNNO�]\�L�����
���6p`ko�7nM+�1��y��#@m��)��Z�**�f����-~�qY��(!wX�O��>`�JL�L�U�0��r`���[y�_��g��{�����'SS�6���>%���2VI���#����U�8�8�P��`e��1��R�����C����l���D0Z�d?��+���%=rH��nR�M����J�k�'B�o_FAu���$<yn�%j4IqH��7�[���j=o�>�:�s��o,� �������La�y����}z�����TYnM
�nA��Q����U7Pi������C�$�2��Hy�6E�4���y�8D��A�>.�7�<>�R����A��I0H�dso��ulk��!��[�!2��5�x���^v#J����9�#bh������M���1�}]�'5�,1Y�g�4�0i����������8>�u*&��h�>a���S��b�7�����jT�����%�xa�Q�	�6C02�8u�K�["�[����XAy&G57c������2�V��O�P�.*�/h=&����R�����(/9����Y�.GC���}R�5to��p(����������r�������s���l�|?���#��c�b�.�P2���?�<c�68���7�!�fj���*������o�}�!Ky�2iMl4/Tm�"�i$���������w`#�n6��H5�C�"�}�������z"E;�z!�Z�r����f��"��ja��h��E|�M���{HC�YQ�!1��(��������������kDlpSc|��I2����1����
�`O����FD^9������
3z=�;�p�r��Cr��V`���<���
����?G�����N[�'���:-�ZHqI���1�y���*U�?.sQ������u�K��u�M�i:	Cm������j�s���dw�1�
����Sr� :�9�!���C
$7%����Vm�Qot��j�n,�9�iQEQ���sh8��9�������cLT���}�����~�!����W��0��B���i�Y��Je��`�/Z|N�1�j���- W����`�iQ�X�`kZ/���������N�S+�0�����F���]7y�M�Z�+�03!����G,u0�����O��i�`����	�8R�>�z�'�x,�[�b�U�V@�Wk�;XqO�/9����b�������Z))"�?�AMX�t'�uN�tyI*����P�����`n�32�\(U�-����B��_�{��h�rBl�dbz����AFl$@-��R����v��o#�y�^gCk�z��Q��c���l�K�=]�j�H�S{�yA�He����.��O�OX���l���iDJ������V��_3�g�������.l�:�3fp������,���,�fc���z���V?Dl����w�VO��%�a�����=-(�y�p�	l6����(�9{�\PD��Ce!�^�[F���
���G����`1��J��i�9=&����D�6�Ume,��C�=�X$==���G~o@�u������|��U(�����H}�!ToO5� ����Y��WO,�g��r�!{]��/�v�<W���q�nk�~���\�W���~s�������`�X����*�>Tg�l��@]m��������}����(U2%D.u
�&�is�[�Y�����*q�6�X�#
D�j����m��������
�����9{+ov;4�O������c�u��G������~���j�=VS��������dW�����f�e�]w��	��k�f������o���q!�q�M������u����C���5�d���36u��=����%z �#���������l1���c$�.�����0[��gg��>Bf"No�;�&�����M����z�0�;V��
���|���f&�@�����No�l(���C��Z�����_l
_c-a���q�Q���^���4}6�j����,����� �H�����_}#�J�{��k�Y���hZ����C��Q�����l�&��b�@�!0kZ�iu����D�T�.�YC�hv"E������?1����'0c������]��6p��L�B�Z�Ph�:�V�+�^
\S����)�sW��|y���-�N�@���2mR���eX���@IAcS���#�
j��U.���Y�+�gY�.=�-��/�l�^��2\yL%��q�����0��oJ���e�+r��l]��3p��^������!7o�Un��F�m��fP����<Xv�`kY�	E�!��R(�I�6wM
����Z��B��`���e��F��N�k�8��j�'�����bQ:N*�b1��$./��02I*~6�������F��)o�������6�������il��f�^���J��� ��5@P��O�*�>c�a| ��a�7F�����DU�����I��SYz��U��,\��8hl�A��7�=iD�]m�6�L��9���v@Z�G���u��	$x����@��8���;��9�������k��  ��ev������
�|����2��dxfa�g/h�������uK3�3��[U �i��	VA�I�z���J29�U��W|�op�P����������'�{a���
0������P���������^ s��"�����\4�����+�O�]&�}n�}
	�`S���5^-TMCz���D*|�FE5.�]VA��T�q��B����UAX�����JP�Z��������P����.�
h���,����a0��Z�H��),
h������$ocg$kI����!����C��abQT��N��&0V=
`
�28
�#�-��v����K�3o)��(R�*�h����":;�
0Z����*��������� �V v��}�������v��pLM`���`�Vi�1�u���[[��^���O��g<K��6 �{W�Q�&Rg:�����f�<X�T�Y��5��'�N��f��r���
 	�������}��IO(�aY.�l�g7�
�!���U�����f��#p�
s������l������^n'�n���������_e7����g���7�ZFx�y}dj��)s���iKcd����K��B�@����v�����~='����SG�n?R��V���Bn�Y�f�	p���,���� ��
a�����7N������l�;��z*
R�Nr��|�����#�+kn�e]�O��'����b��A�d�T1[`�o��������jl}�+��T,:�Y���vIHk���P���"MA�\�^�������v�^�O��$��du�2rZ6��).�����VCdL�a��?�������6�UQ��TU��������u+&��R�l����R�T�L{��3S���	`�����y�H�6��� 	Qtv�E	�������):+02B���P�"�p��=sl���j�P���J���"hj.c��9�������Q�U�����a)����>=��
X�
�Cr��@��amt*�B[�Z�ie;�]�j�."�B-�u2��*w���M����eqGFr�h1�q} �H��2z�poy�g�:S$ ��~_�>��-�S��n6C�{ 0�J�*�B�l+7�@j��s�;@�V�{ ��n��������~��j�9hv_�����N�PE��L����1��:-��l\���z���%���?�@������f����M���7h1~\`�K��]-��V�Zo(�D�*p#@!lS��i({�-�=R��6`�����PK���S��\A�&��(\�n��o`{s��i7u/��%�D�|^dE���]���U�����t�b(�j�����@��V!^4��T.^�v��&������Lf����FR&�uw���7-!���U���8�G���OXn�L�9,����)�,b����9=��.��!n�9�
kJ]�.D������DL�����������&��b�����TR��zm-��5���z������9��9�7����������-���|=���
?��}:��9��C@�����)����'>�l����0h|@�s�H����{3��]��C��D�����m�������{
�.�-
��
���:�-��e��>��yT|
��6��x�~��.HZ�f�l+��C�g���&&���E@��>�K�Z"����j���~��If=$W������,��3��HyE����`0	-&��(�c�+\��G�����[��ve�6��*��>�K��ib�q���LT��v������������s�qa�7�O����SG>���*X-C���p���pL�=���!����T[�dL��X+�@��__V��-8����V �����`l�Dk�x�'p`Uv,*����G�I�m4���f���)C���Yw�����g��1��K8����iW2)�D2�n!4Z�dc��4��A8�}��yx�PX`�C�Bve����,����o[|"(P����b���14KA���a8X;;Z�b�y����F��SF�W�([EW�uS�h@������s����#H$���X���f�^���b����9��3b7
W+�=b`�G�m��V
l
���r��Cg�S9�fs��D>XyY ^	E>��v��i�g`��e
[�-7�mQZ����:����\����	��<������b�h*�
���Q��')�j�TA,�`]�	U����.1�x�eN$�,�L����h�_��l�Mq�I��VT�8HU>0�iVD�w��s��B�"����AN�I��l;�������z*u~u&��1q��a�_��J�����JM	g.�R���j]L����T�wSsWe��^��QI�m�����!�T������/�0CRH��hZ�b���oSJ�a�neQS��U�9�-SB�>�Z����]������"���^C�������n@Q�����Ta��}�r��(B �G���������F���"K�I/��#m����
��;0<>7NN���8a.&D����h��C
(���C|��&(�u���=&9�@%��#�+��`L8��v�����WX���PR�C��{
]�G,��V�N��~���)�B"������!e�aUS����<=s��������m� �z��a���Z��&����w-���0�L����E�v�1��-5�����&�{����"��o�|`�p~dr��`kr�)����&F���������iI�H�����Wx'ty�\p���2GD�-S�0�`��OX>�p�m�-0�Q~!��i��^���d�����q�r��^~��Z*M���6�^�!���{��fDG�'A�������R��x
+�S����Y�}�6V���L|-P-����*24�[�|o�������%s��eT�WY�{��>���P������_���Ui���3�B���V�n�WH�Z��r^��I�g�!J5�U�:$�R�T�P�J���|�>2���#%�&8W`�:
�w�u���{uc��]o��$�����b�s�J���}��������R,vT3-�s�������1����K�=*�eK�	_�\�f�N�R���<�*��
�&TuD�4����)!��n�����$C��;EJ���xt�����h���B�0%�o�'���]����
�6��JX�>�=��]�����z����b�mk
�������vu�s7�����=������0����G����S|A���T��?��t��?R{:s���$���u���$�[����=+�����)A�P�I6U�����=H�[�l4��q��>��w�����v�v]��
�CG�u`d���8�a�)f�<�N)���K��(�:��*d�oJ@0��(VyV��!���5z�D	�0�X�SJ-���z�d�����W�k�l�&�01�����T�8`�?��y�rQ<:�?k��7@WwpV�="n�H
Sw|8�@�����Ae�g���)�7�7�=P�C�B�h�9H��Pa�l�>�^��\�{�-)��3����t<B�~����L�0�����.�J���6?��+�Y��u�3�
���-����+��Mr�@��\�������C3;�nL�������rU��*��_>K,iz��jaj�R�R�K@�f>~�����������:��^~}�������!`�s��>�;��sOE�����BOS�4(�.��J1z�I���zF&���*[COF;�=�� +�W<[��i��8�~�_���q��w�b~�HCn���4���X��`iP%s{ E���Tu�\���
��u
����x���]q�Bw��+�P��X�;T$�v'��,=\��|]��������v����)Fo�{Nr����H`�}W�m��3��Ku@
������
w��y�.�Th�O�B(x�$4�]���W��4v�@5�S&���BX�{��s�����s����B���n���tp�q��^U���qd,p��`��$�"Tcc&�0�ec&��#�'�A�2�5�<������e��(}�����X\'h���L�����������l����fO����p����z��
m3���l�8�2	�=R	^]O6q���uQ�C�����_;&"90�<�>%�C�SM%5�H�e1�zw�����`H����%�I��xr� ����d�i�������� CY@�j�D�"?�C��N���{%�b1��1��N*��������������|�����hheJ��.0PDJ,��H��������Ru�H�h.�T�5p��*�,jV�r�&1b��7P�t4�����}{p�A�7\�3��*e��]�xU���������HE�p�����]���EP-�8*Z>U�RK��#��u����)t�"����]G��[���1�O'xU�����QEFE���=����S,D�uk�v�Ql�)�_P����	�bO^���������]���t�M�U$�Au.Z<�5����yr�.�zp����~E�p)�jn��PtQ�_��M�nen����J���K�Dr��y9�|&�����(0�"���i
�����y�!X����G'T��]u~_�������_�K�	���eT��.��l��J�6�����.���+h�M��Q
.F�^UO����h��h��Lu�g�V�0����)����v��,y������y�u��k`�KT:��)R��e�
�9
u�A�Osg�({=�E){}��(�N?j��22�6�������3J����r��y�Y0�1����9�F0�i
f9f���v�T��8f�����r'��/v�c�L
��JL�����Ao$(�HP����.}�������"�LY�L��� ��=/��m7���N0�����m�	*�I#���Z5w�9ZC!�Az��fK�>d����~g7�p��O�"��z��eB����`(�+��Y�j��
;`�,��X=�R:n5U�����������sa����7�����Ky[�~���N���v���+��������/J���|�U�������):���)X>�x��4?�U���WF�Kq}x+����--�E�� ���s�Na�N(�����A�p��D[C����m%���q|T������pq����)�{jUv<���������H����3�6�e2���9@X�e���B�	��$���0^�3�okmO��kyE��pZ�)M�#�O���.�@N��N���������8B/��(K�/�"7T�h�����b�xr�C��7�p�cgr�C�^�a������O�qy�f`�c��6N��� ��a2&�`�>B�����b<��E��17'�(j��QT���=kW@
�@�X�:��g��&�I�F��x��8�7����\1+7 ����0M==g���;�H5&R��e��q�f��wU��O2	A��9�nN�<�h%]�FMm�������x��qOMi��]��3����t���~UFU��
�H�W��Ff�����'Y�q�B��;�B�����Z���lM�]���)�JM1�usBw�z2~����� p�b�nr|���Le�[�������5���p��	U�-/h�/������>i_l��V�o���:D��/\o���DH�,���6�l+�v�%�JN���9 �a/Sm�M���@���G���Z.��.��q�7]���b}�
%(THovk�����o�����G���{��E��<(����A�p`�Iq��SO�d���Z��Vk\+��� �$��=2�B�"bZ��M�����X��2^R�&�Rv�
�:�&v������M��1��Rm+p��y�$gW[�$g�g�m��<~��`s��q����4>j�)�l��c��
bYf����y�X� C��p~`��,�4�YJ&��y(�cgx /�q�R�"���\U=�����.j��a������PQ6�.o
�,�-��5k4�PmB����RrPp=�CG7O��_��������N'o7?a�8�Sc~���n���[q��h��FA=�%R(Y.:��.gNR��*�=�$��7t�rxz�T��H����_�p�<5B�z�n0*E�Q�p�"�'G��(
?���C�;�h��1��l�@Ds�G��$~��@*����%���_��>rh�&�BF����"�,���]."�i�MM�c+ �#:$�>�b����Y��S�*�����e3��� �Y�VZ:�*���X���\	SW��]�1/�7< =k�O?����P����y���
���Y�6K�����
�����Qm+�������aO�/�r�+� ���\�~=	

������&��������~f��9����'X�A�	������:�Z���_���X�I	Iy�`���.o�O�J[2R��
$�A�^Z$����G����t�"U-�oo�[��1�j�;.��J�7�8��"�0o0$��3�8�+.24������,�x�Z��;��oI�l���x@�p6�+3uR��T;�X���av�
���O��x������Nt�g���/]2���T�.VJ0��Q~AM>`����>�
I��#�{�3�1.������)���/5r�t���{`�E�w�]|f����N�4#wX�E�rN�������w�����Q�n0��e�<
�~������7��s�Y10���%��-�����y�D1��5�D�+2��7�Rd��o~���<l~~�rO�M"����P��_4#x
�����!b��������gb�F���iP���2uX�a�#���=E,�V��:��l+FVX�rE�|�H��.�VV���O��9�~��K|n���"J����#�����
ph���eP
��9����������(/](q�������K�1H/��_}���[���Z���a�X��}F����V��R�d|�Hy�|e�CG��d3��8����mx�6)�v������&\T��
��S��Z��F��V�%Q-��9��g�W~e:���X���\9o�0m������2{O��;����cG:��	(�s|j��
�A������`]����/3�L��3���S���J���Q)�����x�%jr:7ua@�E;-\A0;0�Q����R��p��:��BO��KgA"wYP@��|���hF<e�)%��rJ�����M�,vC�=w����Z[�1O�0��������e�Y���b���C���gW�hW���9������Ui��(x�&G,���Th]@f������z��^�S+����XPh/�b+�Q�J�CR"\oD����LOU}0xh	�l_H_���'^��#�py�*�0,&$U�/B#*���}$�Q��_,��vM�
�
bX�4Q�X[�Z�
�y�;3l�=&����U���9~bq���l?S��/����rW����������'��8�m�Hv��V���������	�%�������z�}SA<&�����h[��&��0z
����!�e;�����s�:�� �E<<���C���������i���6R���F��dt�����v7�c����	Cf������8�����6�L��������\���q��'���S��.�|-�?������Y��e��k�J�(����O �U�`N��X�+���mLC�u3�}
G3R�`�x�V��hIkR=�6\g���7F�c����EO����H>����qV��W�����D��)z�I�fP�~�pL%{8?I������e���Eo��U�}�v�!���@x������z�������{{~|Dfk�B����2�5@,�YA �������uS�v���$N)u2Go�Vg��c�<4>������Gu���%W&B'"�{�Xn��{@9�e��vX��k�f"��[��S�^Fb��IH`���a �� &!p�E���e���09M�Q��v�.���cv�7F��������1��A���ZH����_Xk�g��l�������=S�� �6�Y�0D�,����Z�_�!(	�ZK�Q~�in6��+�,�G���+l�w�{�gO����[h�����k^����~=7�����pyk���_x(�B���,���_����&�k����n�����P*lf0�g�:"��e58Ki,8�����Q$����ZLz���S�(4U��C�"X+�a]Wf��2���>��`��Kc,�������j=esaF�lJ��E�X���<O��W�,���.��Na�q�8����|��|!�\�������P�r.a�,�#��qq����l-d�����(�7��f�q�(i��M���B���f�f6� .e�����Z�:�$=&�h���+��/�Cq<��M|v�'���E~�Y�2��W�.��5u�8�x
o��gm18�R�����������<����z�������j~t�9����	4b��6B2��cV����Lr���'�0:^s8.f�W1���/{�n�"�/%�����:����f��dBx�)f=���+j�����Px"�b�-9F���a������b����O�.�w�O��.#a\?�l���4��s23��SE|8m�zJ�T�0���S���(1�	B9�������5}��Ol���y��>17�Q��X�����Z�-��K��tt}�E���1��WH��qC���}�������	b������as��o�XH'������kG����^Xn����6�\w����������@���P	A�qx�5�u�2�E9��������zs:CxOz�%
��r7���Sj�R������=2��3l���.���i��W���Q��
n|u����R�g��O1��-8��V��
BC*��<K����j5I��L���&a3Qn}�}�{|��t���i~)�b@�$�����E�U���%���}1d���CB��C����
���-��LTr@U���_2���I��u���Gyqs�?���J��j�2f�mt
��~~)����ZM@����&+�oj��<,�d�M�G���/l(~i2e�����n>2�����s��;h�pf��[m���G�Q�c���=��'e
5������B����k������2���?��&���������q��t�:��:�!E��&�8���l��PZ��[ ����A�q:a�������e"�@��Q��W�
��i��^t�I���}t����A;=Aidq*����Cu�@A�����h{>>EL�f��XM��&�r���{��� R�M�6v|�[����g a�l����������<��wwX�u�qa������e&����M���X���p��[��<5��0���Xo�M��c��IT6���������qQ0���O��j�kw�O�c���Mw�n��n�6�����Lz'�C\���5C�h��d���]���<j�%��a}g�=��v<��C9��k'�t����n�!d��_���s��v/���:�v���vP��������8��]g�AA��C�������)�����bU\�Q~2�������~OX���e����6�[�NACZ���*�W1�n�/gS���8�z
�\c[����\��[n��l?�w��T�;���d��������m�j�R��U��
������`�*�20A��/�����KoU��
�����r(D��2G5q�X�����S�G�@��K���~�_`{��	5KN�uP
�!D�����M���;695a���}:�xo��x��.����'?c�I���q��������z�>�@�w�_����j'cu��! o�i�����q����D�������<-���{e��p
����$�gbV�ciiyX������gJ�Z�_�m����J��9���C����V��� @�
��Aq����'��V�TfB ,����x�V"�s�H�T���$o=J���C�1TJ��8��$�������`+G��~(���y����_W���D�����,�c�,�d����#�`t�i�����D$
�����n�3!�������f�!�Y���]����bL����S%��a�s>8�ph|W��S>5�b���[.E�3�fA�YR��a���h��#��s�]�_������n����w�w�R�|{��8�����8��@Ur�:g1zI��}����D[��S����n�X,e�K~��S��mi�W�i�(5�{:�KZ$�/�#��P{���i�	.��k���'�`�������Q��}��i�k\����4�n��C�Jf!�mM����&�������"��uOwb���N-�(����!{��z����n�VU�� ��x	�3�r)�8�OQ�������������x�)���~5O�M�S�_]"���|CH�B�I�SwRJR�@��^#��~}H�1?2f7���b��G���CA�{�p�n���&H�U�O"�&t'��<�8:�f���\�b�_r�_������6���k'�w������<��L����4����c�dl!O����=����j���=���P���r^�l���+OD��cK��A��md��+��6+-�`|��c�D���H�J�7J����kF'�b<�e��0��`���!~J����������������.��0�v����xn�[Y3�`��i1z�.	����@�Q����,k�xU�~��\����oAm��Z4}�(=�?�Y������U�J�@�P�7�7?�"��5����#i���H�7o<h���L�T|'8�/e��j�7��������5]�a�"��-Px)������1&x���d���rVM8��e�W
��lr���,�lf�n��%�r6YZ���~o2���,�4��No��p��'��*U�v~�����p�X�_�������l3�1d�*����G�S>A�`zb��s��O�860������T�3LLy5�unT'M��%�A�����;`�#���VB�����x��K���a�5��@������xS;��2�q��V��Q�)2xL���s����=#L�
�7�D^�LjR��v14��u;*���H�-T����63e�#�kf��c�^�"���cZ��E�:�s����e�_�i�!�+�zv���y���%���PUY��,g�+��lLq�4��@[�G��=A�K.J�$�O����
�C
�_J�[���M0qW~c�+��L�sTj�����;��.*#��-���ZL��d�9���#?��m��[U������M#^� MaK��@��!X_���('k�5�hI�6�	#X%T���	g�@E������a���	�E/���(�Y���KDr���������������iAR�:8�AJ�l%Z���-���]�����	��R(����(�w�ct�b&�*�����|xk=�������|-7d�K����'�&�t�'��P73���1��K�[������������"��c0Ak���!�8Rb
���}(�AR
���r�2{���5r���Td;�H������Uo9�Sr�	���'�����l�qN���!����hXm�ID�C������������q�*~�����
�q���-�r\rE`s����.�fs�}��x]�����[&[��D��-���#=� �!���n����_Xe(��cz;q�h����0S5f��s���N���fv���?�Y&�g6�o1�@��{�	E���|��L����]�QX���p��:T���tre�S�yN��U�.q�8���!	|��(��l�����a�Np}���5���N�%<�s�[���4/l�n{�l!'�L������8 iV�����7�54�5��9��[V��StKA
V`�D���r{�2��o
�.�:;�@����v*9��{R<oJ�����3���RF���*t�V(+���O�����(KE���7����;a}�k�����>����F�J�������j?*�_?%1���+{�� MU�������y�/q4YrB�mek�Q���O�����!���(��G�e;j��{d�v����uY���C|2d$�LL��BE� ���/��1[���,��9��N�E�%t��f���[���"����
�}�f!c)�v�`��iG�,S��C�����s7*�ip������*<�5}�0O�l*��������|3��Z�=�A��K�%M�/�#�n�a	[I<0r���N�T�sf��V��T^0�z��W.9�2�����,�6��\4E�I���
��_4s�:�C��1��.p�4b��E���w�<V�
�/��f#��jE~����E�XMx?~\���1��������*����6(���q��i��	Q���	��~�����*��!Yn������o�����8�K�l��7mA����4�m�l����lHlv���l��}_������q��;�_���p��D�����+}D�l�=�$c��3y�v���i/�Y�D�K���|d�" >p����J�/a�%����$���0-�Y�Amz/���u
II�]�}w6$�����/T�K8��E���)��/�0��qv��P���3]�~�N��G�Y������\��v�
E1��1E���Y� F�a��_�'���cf
��P�3�F�O{��+����|W�Ei��@�4)���CA����2R��r��3�����LH[r
���sT�~}8�P9V��`)��ong0I���&��u)���j�tR�#V���� �F(
��>'�]>$�����$�\�P`���;��������e(8�8{���&�Mzz��>A�/�����C!C��y���C�����Sbw-�	����RL�}%{�y`SlN0��+��v\������U�k4w#��\0K��%<|m�?��G�k��)!��2�hQk�
BNM�#,��qw`���Jd#�)��I*b�G�f*�jU����K�09E��o���I�9,�f![�����XSJ)4����a0L�������{3�P����_�7�uB��@��,������^���r��eW��q��Zk�P�b���}���!x^��/A��0���� 6@�4��8�c-�`])����q,Gy��Y��g�a#avRL���9����""���#����X��b�/O�qIt������x�,G�b�ha�hr�
����X��_9u_�5��*e/�6	A,s��=��D[���� ���G��������j�n�����Z���������QWXs�DjQu+K(O�n�����V4��c?�#�d�����v�F���r��x�E�/����t�{@��U� �-�����w����������
��O!�Y4)���`�KJ��@{��:
�������}��%
���e�����c1<���n�������,�@��[���|H�D�]3�����8W���3%z��6��x7��+�k�Rr0�����:%��D�%��2�+���wE������Uk5��b��V�jc�p�Sm�A�^��:������)z�7�4�-u=���'c5���:-|dfwkWS<�w0<�]��*��}�o�|����-��o�]��_^i�!�G�d���
<��H���M0d�H��YVY���e����_����g��;��4����)��n�~kuI�������>c�Bn���x���"���x#x'.�gC�*��x�>���K�����r-��D�Yp������~�qF����$7
e;��<����v��1�\:���Ynvh�S|�]�����;a�|�,52�S�����a[���cW^)��g�������/�)��^E��I������D����o\r�ph���?����$�7���0�HP��B��<W�a����l�����b]�|���EW��@���+��/���w�$�vb��~C����C(�����iP��7������G������~[6��������gt�+0�X��/�$Ps�Cf��p)�|?�VmA����i��0�l6%�$���v��������A��!�q&r��T�u(��m�
��6Kmxr�����������\JIB��q�s/?�W]���c:�}2m:)?+����.��J0~��ng��P���U�5B�P��2B'��W=�
��w��hiS�0�^�g:V�����)tg.
]{M
�E;�����Z=���E��t\����TC�jh��~�w~bwet��s�oA22���.�=�i����Y�B�`N��$��'�@V��I��f ��^�)��i�^���\�fv_W�:��L,�T���;H�l�
rvNirN��$L��1���]h3dee��`�|�Z:+�J1N��4���w����\y@wy7?�-�:�{
�A���=��==���������0�0���e9���<�i3�~<+P��7�<�5�(X����+�P�<��=vC@�����T�R�m>�������>u��f(�
�z��/x��G�i��z2�����������Ej���t/!^�=�\#c������9�"��Eg_9*M�k�Y(:���h��'>��,F�b��VX-���uIt�Tp	����vO��<�sL2���]q��<���>b� �X�C�JBq�&&4��l�f��J=�z#`�������>�z8��D
��56�el�g�I����7p
������C�m����O������J���,mKJGo��TP����rIJg�����2#���x�n{���fs���������l/�0�Tc���j-��2�P�{=W7Y%��\iT����G(\Vu�7�f���A���b�`2����� ��}��q��F����k�i o/i�k�H��{-���pxQa�����[hx[6�Hl��_��dgeY�F2����*c C
O2tH�2��q�Pt���@�n[�,Kk�����T^��Ic�q!$������i�����Y����������9T���cj/�U����u�5���R�:��qf��a:D$�>U1�J|��
���+c5�5l;l�b?���-Uh��$p�l�{�lI	L�J�OI�v�3�{��2"A���csb �3Z2�{�����^C��]�`���x>B��D�l�����<�������5&���3J���B�������</`�
{�����������m/�~��d+J�G�������y��K���u��N��.�X�gQ%d�`n��A���w���Q!2�.����-��o��:$YX���B�3�F",��kOal2X~���eD��9O�OLf��|Z����z\���\->h����"c#)_��>z�V�7��lE���4���'A9��=;pVL"e�S�7�
��d�*N}�Tmvp��l��b�2>�R	*4K�I������������T��#�DJH���)m'�s(�R�7���C�f
���s�*�h.�_N�=!�0�'���c^s��$�!���������M�e�4Ox�N�\g�|���[`h�A�L�v�^�L��7;�&�;^�`���9~��|&�n$:��Jc`lL���J_P�L�J�$��,����Ok��k8�go������S�mi�;����[�m��_c�{A���A���1x��0����K���\]�Y��Z}��6r������	�d� H�&�r)9���x6��I2|f��^`�X��!�>&�zj\=�J��y8���9P-�@= u%t�T��A)}��]���
h�1RG��2����NypW�|>��T�������l�K�-�x�f�3=�}�4��(km[����vu�n�u���vO9J��S��<U0�uo���O���cxio�\�Y.��oV�d��.>��l�=<������;@u��>�� F��h/�u��<MA
�s).`�ou�M'��d��SB@��[Q�#�������B)�9�����i����,��.������`���Z��9	��Rt�[�
����~Luu"],6�������'�*��XZ����I.T4���,.z�3��'cv�������la���ro�d��������t��M��e(���{.-2�� ����#������(*W�L>!��G�~h����e�V-+�NL��M�[�������G�[T��x��5���^h(�����/��.@����Y�
n\�G(E���W��vR�G#���n�'h�P��x��rq������]_�=,t'��V�:�`_X�W��
 ]%�3:z���U��NFA�w��'�`��n�2s�:��_��s������]��
=-g�U���~�Z
����(�(�2�1�������l_����#�g�����T��fs����2��g�)[+'����=�/P���i�9HXZM8K��r��i$L%
����e����s �5g������d���lcl�.9�����S�b9WHMuH2�Y�) ��X�J~A=�Y�,6p!P- ������glHb�����x
R����uT��~������}*8K�K�e�/���\LF��#��z8�^��BV��0���a����k}��I'�.f��;�`�#�!�t�&�p>9�.��]�"��vVK������NXmj�V�f�i
��lH�S����y{~d���?
�ps�r-&��^`�zH88�_���jl���r]�/Z�$K�����7�K�Zl���z<��0���(.�
���z�d d��[���)[s@�����7��4Paj8�JU�*=���]�G��D
@��x�%��t]����i����uY�Dc�3���~����UBL�a����1�����t.���<&�IL�a~����HW@�vU�R>���Y����|,TFX$����2$�5,_��\��5K�-���H7��jb��m� f��"��!&���"� i(*��������/ee���w
����tej�w�RC�H5"�+b���:D}B��j��8�X�;G���,_��O(>-_����dS��a�&��`]$�e���A�<��H$��"���$\�����A���P���bZ�,�7�
���A�#�1����W��v���6�@�Jt����n%�0�7��������zU��g�I�����2;\�

��9�����q�{�
2x� �����Yg���Yk�&F�W�i$�]�% �&le|9���*��S}��T��f��b�-'�}W��n��W4;��5�����xS@��-�����A5>�?�K�;"�Pb>C����|�o	,�v�^3���{U1q�4"mw�;
�)�b�<I)����a�_@�G�X�=&�.P�n�����Wl�!a�\�PR�f��;�Qt�zB@M��q���s����
g�bW+/��r�#�;�(5Um+t<���f�8�w����Z?Q�2��C�
�I-��|g��@�J	Q����/���R�������
����6@XY@��c�bd(v�d��]!0h�$���V@���<�Dz����9l���yS2�^��������`�tI�k�k��Rv�Gk�^X+�*A���R�K��L����^�)�24�^-[��q�-�rB���6>R�G�)8YZD�$��8�������z$�x�<,�~TR���2	��8R�2(8�3�Z�-m�e���J�X���79��P�h�
a�
V��n/qop�H��6���~=�[8�	[K"U��~���X�%4�W���%o�|w�~_����������?��B�<M	���,�Y��k���?����D�n�*�i�De�r�a�S��s���u��r�?3��L���J�C.!`��-G"�m���G��&cg9��o��L��V�6��$��I~%�s,o���d��b�1��JF6��|�$���3�Qj|���Cr����Z�=�����$}1�;OnQ�',�����]����U���9�^uUn��j8�M���n8uA4�8�d������X�qgz<��]�8!;;��7�����;���bl-]2�����H�l~��b4�s�.k����k[����!�Y�"��K��^�W������5I��<���)���.�$$E���51Y��/�SB�[M$xr����pD��V_[r�Lmo6���'���
��J���>����S"�[Xfia��a<BN?��$������_��o�l�0��f��^z�h��0s�S?AN�_H�����E	MUE�?���s0(9� (k��G�k*^��Q�fvVK�
����e(ew�����	��0��
c��G��F����'���x%�o��~3&�Xw�a�����x~lk&������^3�2��(T&�������8c�~ �r�����o��^�p��S:<~�U<zG�.�z�Uq
O{7L�5:Ef(��
�1�C����k&����)�&�^hG9�o6^1
��k�
����H�C��vB��]�i'v����X�����%���m�@���~Xe�B�2��\�@XV��Z�Y-)@�7y�b�Y.��qc8n���W�!];��]LZ���kP"�U����S������*�vE����n� �e!�`UR������fk-
�c\\]�-����1�(p��C���a���vk�T��]���3�����}\N���C$Zp��J��D:b�&����6�������%O��"y$�1�Ly�
H���1�����}e���N�	�$&!��F�
lN���pq����Q��.�����]�o�Oq�7��s��za.)�
��������3W����J�3�TW���"�r��8�>���E�d�]��_����QK+9�~�<��[�0W�_�b�k^P�� �C�m�~xC���9�$D�E'��(R^������W���I8jU9�P��\
������`07�\"����S�&������m��a�aW_]n�3!>�g����7��m��%�����7���^�<��GyD��),������E���i���)�)��_X�n@��pEa_�|��7�lt�e�������L��q�u�[#G��>���;��
�k��p�Bv]�4�G���Y��?�ud=��������:�����
l\\5���O�x�[�.IM���i�G���'u����_v'���ta�k�N�#�����Z��Y����G�E|�#�E��4'��=�������
�C���.�+����qo��@��#"�%���$�M_����t�"K�C�4�?��m�H����!A����Z������we(^�9y<�"��T�ehmg����<&��������le�Y��0C��&g������/�2����(3�-��4���5�k7����:�"�%�Bw��yw��	/TU�I�un�bA�qJM��[����f?�u+�5s��?)�$�,�3w�z�#B���h�h�^��X�}f�������G���!��%��0�B��h����$e�@�'��_����H�S����`�vLI����'+;��v����3 �4(f.������	��T��x>�L������m��E��Hh���Cc��Z@R����}��r���,
_$`�V���O1��OX��&n-[w����1���S�!oy��������`5��G�E�@'�<�O���s����()]@����{!���c�������?�3���
;`N���m�s��Q��y�+BwnO������oq��|��2��m���b������$s��1�rM8��&WH
���c�-w�=eib&�a��S�"�����B�w�����m����{���	Y���[���`\�1�
��Lx���8��b��N�6��	n����jK��}(�:�cM�v6!���wW���L"��	=���RI��1R'N�\���d.�a�:;�Gt��+��	,��@��^�/�-{������	�M���h���!��My�D�[���v�E�Z1e������*0�Y

1����X.����
�����I+%�V�%PZ`�	b����w�#�t�_:R�^�A�1��X��B��[������1��g���Fa��m��l�y�D;�R����H����9��RN�������R����p�O}Y���2/��|��9��$l����H,�s��� ,��2I�����.��vv<��eP2����Ub��d�qC{V�~{6�_�d��k���~=������)B��E��+�:O?��b�������hA�U�����O�*-Zv�(&$%���I�2�)}�7����J��a59�����D�d1'�V�,3��g�����)$a���)A��&����(����
{��C.Za�H���;���W����!M���o�f��~�����J~��1�Y���gy����T�����_|��g��1�����e#�:�x�t��G����;	�j`�y6{y]i�ax���q=�}�_��e_�g
{bD�5)��j���G�SGL@��z�
O�����\j'���'�,2��<�~G6%�y���j*j��}\
6cu(��N���Q2���
�m���=�EkE�Ko�>��RM�c���%���z�L�~�>	]�R��>9V%$rf�7�m����'�9uAe����� y{��v~�2�DL�O�������'s���Mpz�zF�������6m��m�3o��~Co�W�������M�f���^'���/A�mJa�jV�\`k��
%7�b�������#��K��i���a�o���}�.�@�1�NI-����3�\D��
[r/�a��/��a�4���
�����e|�����G�L���A�8'�jS��xX���)�a�������B�9��?������,�k��L5vI��������[�u���:����t����V6�YR����#�}�5-=�j�lb�������u�
�5B�W�H�'1
�Y8K�F
C���e������SG�t��M�K�.����.*�w	N�������������
Q��jQ�wH���8�*D7+�X�Q��x/9�X���D��Ibd�11���De-�������"����3��x]����xrs���
i[6�#�pO���L�/���<9�
o�rp,��S#��<&�1�G,�b����E�ia��W�OX��k������N/�i���&����i{��9�:�Q�:�&�M�����G��'&�Fh��.������]�kx��]PLW	0b��+*�A
$]�(S�[ E��t��.e���j]W&�9��r�o����6<n��������Y�zy!d��"r'�n�x>n��U�����1�0�a��.�VD���pH���NL��O��0!�bB/\p9�jEB�C��i�V~M����������5��3�0GS�����!�h�<���]�iCM�4���Tk>�2�?��pz��6���3�v������=DSK,��W�����569�yF}�������j�?�������R�D�[21��<�����Xl�2�5)aOe�/�z�gT
NX���R�aO\g]=�P������ o�lw�C+�����S3��u�t��fA�@e4J��vd�"�jk�����L3({�D����KG]�+���$
u���|�J���n��DM����_����V4e���rj��F�Q���
sjQ���v���"��(���2�l��*VE�U��+%���,�\�8�o�X��:sL��N� e�z��_7v�=~�=�Mj�{�����~�����~�b
C�4�����`����CM��*$��*o$����9?��Y�%s�o���4��SC���W��j0��Yc������eNh���?'��8ip�>��bv��1�_�����&GR�����v��3�5A-�9+d�������$Z�r�AA�2a�QJ=r�{C�.yDw���y�TF������M�`{-%H������������y�~��\�0=m�� �#����q�����HO[��/D������V���#����_07��8���e0��E�Jh�hX��
��*)��]]f�{K�E�o���v��"��Hu�����2�����
������#�|�TYOj�]����m��g�v�`{�
kr_d�,��34�^�f���'��1#�80�?Y��]RMd�� x+$)��� 	2�y����Uw ���y
�m2���Ys��v�t
������r��"�E�T2�d����4���+���P��n�������D�.�f�>��f��)������l�v>���LOO*#v:���oQvL�5J7�J_�fI���f�'�a9|�S��A	������^n-�	��p���#0�oq��N�Y��}

6��f�D;�IG��U!�����sr�p��@�j�Z�eP=E��~�m��`����Y�aR�f�1���;����+(^@Yn��'(g9F;��}�
��������{>m�P*��YvJ���Y���!���/54RFf����B�iJ(����*<
���~Ws��i��rOM?����\H_V�{�������D��|�99�E�� �=\_����N$Zg�1d��a>�E�}0���Gf��~���T��,>�L�M���G4��
"��"�����Rfu�)�r�#R�:�@���	�2����|����y-�� V�S[����J����H~����������"z�%���
R�q�hu�l"��6"��#���� �q����Qk��m�2���c�76�&���1����yy�TA�"c��0��(3="�MG�j��">�>�L�Yk� ��:k�,_&8��J�����z<{w��A� ;��Z�4���?�&���4��
�l�,�(`�����
��������|Z�<�P�9n����	�z�dNL��w��M��F�A���S��&�������+��y,��G,�/c@���T�&��T���4���n,��w�4���'���,�1���*<J�&������aW�����(&�x������^X-��^,�]:�
�����s�>N��n������1���r��RZc6��e���5���/K���}\���T��g;��ezRq}|�J�x����z�T~��\�g��R����U`�	��
���<����
�c\l�����(�"�X4:XC�gu���vS�5�	�Y��SY���B�C����;��U��;��k]S�P$w�q�f��w��1"e
�����M�k?�>���w���n�.}��&���_��x
9�d���Lw�>�&��,���u��>'�Q��:'�v��!��!���'3�!x<!g��h�G�dA�r�����xa�f���A@����)���-����^�W�������'U������b�b���<R�w���?��n��/(x�)�3_������[���s��H(��,�B��fR�o�TY`�70_R�K��,C��N?�8c�]���\�J!��^�����1�������A�-�dA�����E%�@I�-���������C��E�3�0_�$���H#���E�.���l���|��+��%%����~�������r{)�s���!E������3d}�O(�����T���)g�B�������a�[�e�Wn�
���g��v�
��P���&J����v���3�3��<�
V��8���h��Y���|g#/��?��Gvr�2������C����M
���n!�����^)<\��4�R���A�lrMt�C{�������!�7�'��78�`A&3oXV���=��t�J\s����.U��������4��u�e�����^����(����
���;��J��:{�6��j�����:�
��
/*x��{�K���k��%�_�<��$���$~�FF��.��6 v�G�{��N�4��>ydK��@�-�9��k�umL���x�����(�w���9���CtzNQ$0����	�x����$���_�[N�
��#�d����"�
�
������6����.���Dfo��^!����nD�������<�%
������|���r�=�}]��N@�{n�'�������;���q����jy�euV��jS(��n�����e��O��"����l&����e�����do����XA1Qy��?o�)����{�d������h{>����%��Q�I����Z!�,G�CK[�T/LK_��t�42PT�����z���8�K(�����BV0�����
�
_����Z�8F��U�Z����-���P�r�W#3Y1�����:Ir�>������a��gu��.jYnP����>G���T�U�j�d�eGy�H9��hHy��W��������n+,��]����8F�a���1����X
��.���D�@�����M]3/�m�)�2_Lv�4!���?#�Q����~UZb��d25w��d��������x��_��!YLpn?~��8���'��I:���fl�b�"6�G�k��6LV���]����b��Yf�+\/%�"�����wd���Dz�
��#I��Yb�pJ���o��T�y��p�j��8�}�'�&S{s����3�o�#�P��??%GQ$i�M����0�zE5���p���{���U�q��D
+�'����� x��������J����s��Y`�r�q��!P6���1y�c����E�(��T���rd�����}mu��G�����io��)���x~��ozVU�����vG�S���G���1�i��5G��<�����h0iZI��J��.1��WSQ��oQ�!�x��m�|5(��nK%����i��Q�L������S:��lP�F����(?�������[@�vme�KF������w
�4�2�S�#2������Dv/��KMsM�d�I�h�WK��4gTW�&��l���������(&�[�s�=�j��jv ��O��
0������f����$��w������8�_Vf��{����
����0���.n�z��zN�TpH3�Ho�&������nH��t t��lO��n�]��E�� ����$�U�&@v���P��C�k���"��qV��1���Q��!��J\����)��E�K���p���D�y����.>!�.�V��X�^�Q	cHQy�J���W���{�8�g���&)�����H`���������&�`k��w��My��|�>�T����:p�N�b�M-�w���&__s�&	�	/�JQy��B�q��)v�T&�iA����(���'���	�����e��P�4���Bu$�����}$;���_�d�/X �]�o���K7��yt��r�d�/�PlN\��U!U}�����B>_�S��6r3��,q�:�Il�U��|�k�`w��b�h�U�LI?U�X�t3�����o'O�)S�������4[��&[Ck��	`%�����XJ@�Uzj��+	H_������6�]:=lJ,������Q��`hVgR�����Q�cN �z��TKW(��$�����������N�������(��
u:��g����!������r��q�wt���^����m��#��v�����T�#��o=������I~�m���j��>���G��B���{��d�������e2�.�� s-L�Z�{b^��A3�8}�QF��t���TQ-�W(��@�B���m�9p��J��0P��t���CMj����
��-o%�j��\��<s��G��Vhy��;�$_D���'�w��"��O(	�m��u��2��I��U�W�	��-���9
[0rj!���}�*:����1G�����b�
il5�!�1vf�;���!�����BwV�;'�$�M��U'Jh��H3�Qo�
�P�z�BV]mt:6���l�k���0����J�����(�`����X���'{x$�4'10[��
�<�=J��Z��X�p���RM<[_��+$��,-��J�wp�����#S���$U�,B������{��29	��1���n�D$]�@2�R�?&�X^�@�'+/XW���@f�;�aWU�9���)CU��Cg���w�r�rGc68���7r��Tpp����Oh���Er�)���#wgL��9:���� �6	
o���n�����d	?�oN�}�����%�Q�vL]$'�n�Vz�i|��y{���3c��f��SYL�D�������_���Y����x�0��F����|�G��w�W����>>�n��!���"������o�KO������r��!~J�9��#���am,��A�N�7�����ea��j]�]$>������;q���L��=~���5��U�)<���1:$�Q
�|�[�D��T�L&���,1"����������m_�lb+#
������@2�/�Me[ZOl5i"�X���l�Y�k��#�n����x-Qk���K�BX�9cz�
 ��d.TL(��/����cP�}�4`��s9}
l���^���h�{\E�����O_��3f��&����W���D�
���g��������4��Q���6"��zN�<.��������a���1���C���d\�
^�_�^+�c���j>u��q��X��g�sC�h,�6X����m�P,@3��o*��x_��l���$�@u�������V�������R�,�����+0�����
r
<���k��\_�9]���q~ �DM��^���ba%#20n��m��g8L��U
��o��~v�&��rC0�R��@���3�E���$M�&���M]�����������3��i�����&�����&!H�]�Vs��4fV�o���Nm�C��u~��*�O�����Oqv��yQ���2�������}#�y`�'�&>��$v@&�d)qz�Ed��!��)��0$&��#X�}�����A�������H��,{A�G{G���O������a�'k���;������������>.���\������`���3,jY<�����iJ|���;/*��k!�@����@e'9��G3���2X��r���Oo������������"[W���Cs%�/2��L;.�7	�t�������|��T������3k�i��%7��.2,��4s��am�/���@���5����u���'�ht-����@G�9���cV����t=n`,����9���Vy��;�_`��4{vY�����G����CzvL}�r�
��q�Q�4�z��oMK�� ����#��:�pB����������qH1����n��p{���V�K�f���Y�Of�2n�����0��
��I`������������,�7y�P){\2���e7��&���-�������Dw��C����$��Y�}^��7-�J�(���~K�����W$1�Ip����%���i�^ t8a5�%�X��R��<����M����H���\��m���zH@��D�L��q�{�6�g�fX�����~����m���L}���PIaP;��w��QKY�3>�Q�[+�1����.�$.{�
��yJt-u���5�������6���I�����y#i�]H�;�{QD�c�����n�1)4�hs]�S�����b?�
�x/A�K7�u�-mm�{D^���]������h�7�|���'��i�
��n0D���D.-TI�A�����4w�
Jl������2k�;��q����He��] -Rw�����i�%t�~��'�";;9���Q�r��K�<����P���F����C�\�E�%"�[����tz�&�[���oIV0���V����<��@�"�y,��>K����-�����|#%�M���K��M��KE���)`����T�&�������������x���8`��		�����=ll�����1I�(���=�����Vr��TH��
��Pz����q�n�,���1���
�\���^���C<��J�#���s�]�w��n�0�'V1��p���]�����HzA������f���s���~��e���j>���!��;��[I_�g�k���!S^!��$,�o���)��BH4��j�<_��!��h���@��3�8��~k�Vs	KQ
�.Qz����O#��'s����5���t���[4���]H�D�����j�����,������c�����9��!o\{�~��,B�zN���&��@��CY#tIU��)llb��3Eesf�,H��g���j^Z+�4��P:����R]�z"�������a&��51D��.�P�lM9���E����a�5o�$�������5
�}6�$�E�pZ�VUu���."�4��[S����MD�||��-�]�<~���i�e������r�i�(��b~�����p,����ok�q�]�'�n\���T���;��T��k]�o������<����� eiRZ�G&�	��Lj>���������P����t}�e$��hv
�p*�y��;�S�}���4�Jp����z�%0! ��*z~h'�/t=���S	3O�d!WB������Y,W�Qc�4�^�9���{�<�\���,54���3�|��1-���`���
��R|��<!r�_�I�c�0b^x�&�����BW"Iyj&�2�����},61�V��*
�^"we�k����G�6O�aS�%���T���o���^t�2�|��;��B�0}�d�	?��q���h�f�
�>1{��#�A�Ii�X�}�����+%���Qm7r����������0�$���Y����$(��~��iN��F_�fZ��]`��l-���q��q��^n����4��pG[i����`p��	X���u��+��$�y�K�2����
������`ZbH�ne#�b��^c��^����Bqg��r�8���,���a�I'��f��=&O��}}Vlb���A�����!�sy��s����s���W�,�,�>)z������@�W�I4+}���u�.w���"��2d�&CjU���AK�����X�E�:i�r�@7y�Gei�H;�����}��^Cb�{>���O7�x�&7�'�Y��L����D��N���f���>����&I�u_>�D1����x��_��~���k��f�uk��H����o�"��9���A6j��qr����i�����8�6�^����QD9D��r[�PW�,����Rgs4V��Sv��>����Z%c�|�	XO�c����
��[��?>�O��It&fq���?�%�#J���abT55&�T6�CD�?(��awku�a��8���/�!sx�^sI����E�D�Z.X�Y�s�>&Y��V3�}��u��b�)�u ��A$�
^"�Oz
�2m>���3���d�r&�O��'j���NxL�]���H����P=��-<I=���T�qcX+Ep�d�m��IA�(c����Bb5�*�@@����4q������|;��"m��������MnK����q���8sF�����z��������1�	4���I�(���o��P�@�M�������XU�����\��h������"���P��r/���?{�
���'���SaPE�,�����N�=���65e��}����'.�m"��a=�{P�@���V��[�y t�?'�����_��W�w���kJ��Q�+��"��G���,-Uw	�?D��:����]&���*���s��nU8��a���7���"����W�p�n����{�����_�Jp���5�J)�D�(��-Y�9
��s".L������t13��u	v���7�x�t��
�}���;�������k��d��0Z^r�e��6�	���(z�U�������
|v�����'��bG\�$0cd��
��T����Et0�2Y��d9�o���u� �����h��3q_��Z��O���xrBC�l*L�?��Q~�����h+'�q%�P8���:S����g����<�A�j�m�`��B�r�M�����i����e���
����\�1?�c�<
.�@6~�p'@#�3�����3�;��B)����n�Y^�p���t����I�F����+�zT���t����Y�%�������������vv�Q<���.�_���R��E�+�w)��|��?���� �y%V*�/~��������������%�����U�7.\cA�8AA(��-����>*�Hu�x���3��P�����nr<�t��qPC��%?C��etGqi�w�)M=��}
cM�m+��1~�:f���~����evc\��/(���G���E��������L�.�RN����yUV��#�eVk��m��J�0bO_����d1
�)�5��]���qv����G-d��k��7"b%�-��D�}�i�����W�5�+]Ei��s
�u�e�k%F0�����@�4o��sa^��:\��P�>��Z���X��r,��_3����
�"g���,VW*�dX.��Z<�����F���nM���6�g;�
m���y$��a��`��q��Kf@����F��d��-�@����E=�2��X�p�B�[���e�f{G�*z��e7��t��b=��8�������w��Wb~������O���9X������+�=�h�bC��O��&���
%��:!���n�O��!8�_���&'�Ex��/9;������ ��c�@����O(�O�o��%��A�r���|��?nD{M%~V3N0�eE�c�IM�^p(�=�cTB���V=�	�v����q�?�VFgB�^c_n��IV
E2"�j0�o	�xu�6�����i��x��B���z?&��-��>��a��H26�7\&Y��F�ne4(��e�������	��%��?�.k�@A�h��:�������l�}���]/0��TlsuT%H��d��Ku�~���a�MY����R*����G�$�������*H
N�����5�l`�b�s�e��:��z��(G���0};n�Y����N�E�( �}�*�g�����\I��rl�d����F7?E�<���Vzm�AP({gt��H��_#�OB���G���e���\����a�-�������	�L���t-+�yZ"p��Z��$�
^y����'#H�V�=�}d�+[m��Gx��8}ynL���G��p���v]n�
f�H���'�h'��>����(w���|9n/~��C�����d'2����g�P*1?#*��/S�v�:�.Fi��'�E�!vN��%��XA:�����d��z��K+Q���J�~z��v��D�[��c
5V�~	�~��<���|�>+u�I��AIC�O��?G8�'w��
mt�=�qp��q�{����J�S�Z�
�����U]f7��|��s�����|*�#{���di���"�K�2_�|���-V���lW����������A���e�Thm|�����g
W����(?�!���rM! ����{^�=G��r��L	�:_�/���8m�0�/�=�9DO�?��Sb<���>{"��T������/b�,*0z:O�N�\���PW�����d�q��Dq���(�y��Wx�R`���_��T-�E��M��b�_>s��1�')�����&�����kQ�8�����^���������|'�U�B�:!�L�� �G�����|2����<�J����f�!�>���R�����#q������<�	��y�Wt�oz��J=��&,^�R�C!'��}5 ����?R���\�
�B�O-$�juvy�+�����n��B��>���.����pyV�Y�,���f��o��������@:M-zW���\����	z��
�|>�����=$k����T&�(��
Jg3�G�DV0���yVh�_�I"��<t4-�o��>��g/�} ��FUz��ZG�fHO�8-u��D����N#P+t�����S�����u��o�6��(�� I�:rJ�����z���9� ���e,������PU����xz�x�~�����:�J�(7G�\���3�!�&��^<w2L,�|�?�)���+�7��bU���������M�Z�_�����[����a���m��b�q���c�fG��0�%����J����&��]���-��7�h�=&tsI�����[e`�+�����h�:�������Z	/�Yn7�d��s��bb&��,��&��<a�A�t;���7��^r�57K�T9K��"H��e2�:�#�CI����9��0NA}7p��W����~*Sx�Gk���G��#���^c '���.������P���zrF�����0������qJ���{�yi5WM�����
X�W�a�{J����E���n;��0_�����M��-b�|�=�����k�m�X�K�6�!��$o�y1���h-�4q@���E��50��8Um�4n�f�\�w�H��Ly
50�T���c����Z��h����q�)���I�pd��]&m�;��5������K�//^����A�����
��E�)�+<����R���;�	� ���T�][.X������l�����8���x��X�7? ~'6��B�G�}z������v��[�~A�����Y�{�G��RmMLy�����	��w��e��:���`�T�'��xT�<-�w��$u��1��������/�R�����?�3��?=mP����w�����$��j}��Sa'���Z�����H3�[��#����M��������z����6/���fa(��l6{��:��>�������	��T���|�"�9x�����u<�_�y���G��wkH��r>D�����q����#
�|!Q>#��|��]K'��:����y�U;k���9��(0�`G���fG�������������Z]��.�j�kyM��}��M�[���������h�1w��bm�U�O��8:�r��uu��*0����4�w#)	�dTyp�����jX�b�z�4aR�
�������q?���[���0u�x+�c�Z������yDR
G�8������P���?��s�����v\���OR0�!B��_�W��y{�x���pHN�Q�!X�����)����$!���B��O�R�%U!"%�7�t$-T�]��ua��H����R�Ank�l$e�x,����6]<([�5�Jt<�
~?�[���F�:�����A���n���D������J���8���|jku���k5�������h_E��Ls�����4�����0��!����4^Y�H�1��a!���=��^��^���9�5��4OP�K|���Q(e���T���>� �&>�f��s�9�W�h\.��U�k�e�����bzP'pK�{u.��@) C��d���/����=�Wpv����!6������Az�W�+n�
���v)T0��>��[���y�>�
�����������w����^g���������k�U��]������3|O�V��4��m�)�y$�s���UQ� ����k���'�gM��vO��|I�"O��b~��4�.�V����rZuT)F=S�e�*��v�����,������E��J4�a9��=c���(����\��I?��I�Q�Y0;�����;�)c���!�'�JP����~Q:����G�{�}}����"��t���q
��5U���Ra�hV����*��Q4b�	��6��6�����FT2�{b�����*(�*�.�n	���
W��q�B���I����o�V��s:�t�9?Ug��9��@��'�����Z�����!Y�?�p��?R�pb�r�&��`61F?������f�G��	����^����	:�@Q�i�xP@���im�����z^}�Y<���u���f�xo�e���)�hy!D�>D��+��O�n�*��q�+�����{�a����O��zTd��%QC(��P�Y��
�������u4���7(��LCK �+,���Dn�Dg�H^����S��G����c~eK�g5�����Mq}_�Vn����(S�g��v[��l?ec�]o������&^���*]|�(B�f��5�p�o��������p4.��6]�x���}�������G�)A�Ii�������"�A����$z�,���H����3/=H����h(�����Vs�����7�� J�l=�����$!��=�i3�M������$�fT!�\:��S~���������k�X���4��T�9���/������Y�d��kP����1N

���.6r���
��� 4R������^�u�u��B���FA�U0�gQ"��/Q��� ;}o�J\��m��0t;�0X�0�!|%��;A7�+�G�9^�~\,�����[��H��Y��9Y�5�H~~?�����b���c����X�	�<���x%��T��5�O�bu����,78��wf$.�3	+��^�g�T�����2�f0�|qEk+�U�u���.�0{���8����7�0��FB@?U���,�n����E��(P�z�0�$����SW���;�7M��t�t�E_��s|/�-8J�h�s�=O]��c����<�E���7���6��h`���G���"��M��K��#@���m����gR4�Z��,�S��{�ul�{�;������h���8����d�Z��`T�04Idll�d2�����Ph��(��s�{�E��L�f���p�q�/V`������+���"$�6$��-����N��
�QcVh��&B�X��(����,�R��@5�YR��~��4J�cC#�iW������Z��>�s]��
�Y�����gq�qd���P��(k����\?���Fz6@�"=��(k}����|�K
2���yu�8�r�����x�d+V>n��o8�t2>���f��|=S����O{B��K��.��H��'6O�������a&��uF���fK����+bL�@��\����p���������\�?��T^B�V�\}:�O����b�����d���s��$��BL���nJ����!$:���+���y�S�w��Cp7�:��p3��N�gM��B��������Gn�s�.�x�e�C����������C�,�	�u��i��Ilg|���L���.Q����q�=6;�9AR����o���T����#��]N��������Z����1�.hm"^5��N�q��)O8���{-� ;&mH�������w|�7d�?�Y��k����Ew�����E��'�}�],�?G�|��������|z���������o(�o)h@Z%�W��7.:�G��^*����'|��?��z����w����'�=��N����X3AZ}���~`O���2N���n�5��D2������e�CA�R)N����2��'�!=�}9�&������w�����>��U+��R���N9���$]	����C./�.������L}y�>�Z��I�[)5�]8���I[i��p��|�&��g�����#a4�n�H���;K����P/������C\�	CQ�q�<�`o�%�P��N���j��*pF��2�0���7���_sR���<��W�+�:9}�.�=�IG�W����������O��������:Z?p���u�p��/�Z
jk�~>{��,x�&P�RI�z��wh}��9D�;�K�w\R�q�����do����(�@�����X�����W��i4.KE�A�|Zi� ���}#_��f�]������b#���mC����?!���G��!���tO|)�����������+Y_ 'F�`i��%��"�q�JN�I�[P��h�X�SJ�!�k�M]���11�q�,�#Q�8�����m~�
����H5f8>}���Y"����k�|�r(E�w���h���R<�{
����\����K�9{)8 ��b���K=y�2Grr������l���4-�q�1���\�WH��"&b$�Jr��X<���1���?�VI��]�6���P>�]��E�C ����jz�)�a#��[Q������XW�F��hdR��FJ'tg�	����CY��O��:��y^����>
m��x�
�U�	L���/f(M���i���4h��M��X��-v��x�SK���+�V���R�@.�v,�V��D:i����2@�&�<'��;�FP�M+�Q_����%�����^m)<c�v�tN���I�OL�}�(mu=W�f
�`�F@>��<��j>K�k�$���s���b����|\Agyq�3j�]�^{GtiWq(��	Bi��^�B�2�7�=�o��hhr��DJ/����<
���:��Fy�X��o}#a��w2�}5�F��AA��$x�\#������e�t�@cui�[����'������c1���Lu��QF �x=��0���}�DSH��P�r�V�r����H����]����TM���"�4��o����g�}����M!�*��L�UD���Q��h��<
�wP;u�S"���g^^;�2u�I��QC{��������z��>�]��'�c������
^�O��2�q(��g����K�1�e$yF��S���y�r���.B�R�*C�.��@���i��\�yJ���������b=��h9�|$;�T^'�����,�n��T�7�*�����a�Px�-��W8T���Lq���Dq��j��[N��4-^�����c��?vJ���y
�!M���V��d7��%��h��c�l�a�l�&o��q�60��A�=������]<#�QB
���~�,+�:Ap����_������=S�x������UFR���#q��s�����]�X1���P�=B�.+�r�b
�R�1�����e�/+���h!9���)gq����Z�~�,�lH��Nb	�/G0���c�B�
mB�J$dN��[�+��)��F
q�9ro,O��wD�a{ciWv_XnK��:��*6���o�I=�u$��}?���c��t���7�ZL�IBQs\��@�����s��u�~��:�A��,�"@6���WB�2��r3B?1���P�]{������;,�o��d��I���;i�!2O��Jj��n8n@{�XG���7
��Z &� �&�Xf{L��J"�o{J��&��&P�0��}�a�:�@��~�&�8���h$����("���v��tx��C�!^�)�i�S�t��:ZQN��[
m\C�������c�DOs&^��~I�%�(9�v�j�4,�=��W{������2o��ZJ�e�i��H�X�xJ9"'�J�J����7t��f������I8��x�N��^`$Z�$�`���V+��y�-�s�����T��:�c�u���>�<O�����g���gI����d�Mk��:� /�5��7���D�\�%���F&RT��=�ZI-��{�%����|�	R�z�������������K�j���c���H**�z�������K�o]S�d&�.��1�B!�j�j{��#��Qs���:C�.�����B��^6w��p��$�E��u9������b[D6��]-����5�XE�0I��T�
G�j����c�v��'���8d
x�j/M(Bi"wlZP��a�zn1(8	_M\�� �#��z�a%����R}�i���;�M��]9f*�i�����X��������k�@�zH3���'��F��)+���?������N
p��o<lq{��x��Y�������pF����
'����V8�~$^��y��\
:hA5��-���q���>��O�w|��[��������2^1��2pEo�^
�q�� ��d)����#d�7��r�Na��z��1�6�����s'^#e�M���a4�r����u|OO����bg<���z/c�����=�8A����������h�����Jj��QQ��3��$����hYfB9�$�w��~���[1�V?8�	���,N�j�s���-~��AqIO��v�C�{���0�o�J��J��Na��='��1��1�O�.��)���h��G�o�x�P*�2��mg�a����;�`�������~jq(���|A	wO�4�����Z�3��=�����-��	���� �W'�s:��_�?n�3~�[.����6���\Z�"H�����|m_��U	��h�*����X31�������J_��G�����J�!y�:B�c���2��P�NbqL������B��������������a���w�
u~��_al��_�6U�7�����j���
^�G8(�����4�]�i��np�I�r��/t���M%�����N��"I_�/\Cyn���������u�n��\+������{�n��vCx�9!h�[��������Y5|@�I��ID�����mF����Ev�������
����r��
�}�_,�j��P��1
�{�n�-�=#[^}���I�����;���W�������h�9���{�7�^wi(tY��*V�##6rle��d�cc��1e;vw�Z�x��m�����F�W��Tpj���s��|��K�O���a�A%�j��^y�-W��a�K!����R�����;������bf�h�� �.*3kgL�u���X�aC�Ov�O��W{l��L0��y@��Q��(5�s4J��{�F8�NjK�(���8^'�8��I5��uR
�L�T�<O'����j�g���It�b%�H'�p��I������y�F��N�Q{�FY-��i���Q3�\����gh�u�#5J
�l����z�FY���i����I���EA����Z�������c����9T/5����:R/N�z�1��^���l~:8�m!<�^:q�`�F�9�s5�S',+�� ��:
��^�<�N�k���y?�����MD�����Ru}�?�k�
<�*��0�+�����]��&"F��m�bB��=�NBw�h@~"9�Z ���%I-"W-�]�9=t���"����.^
w�8�[��
�p<���'�1�h��
�H%zG�y
������9�?p
����y������Q=	�:�V�:� cA��R�p���1�sT�aw����<�4��l:�Z�>�������f.�p�uNqS��~�s�Qw��c{��.8ep���?�J?��z��$������X�8������9]�#"H5\����|��~B�c+W@D:*���w_�����\�0h*�>vZ�3L�r-q��^����S��������/���WZ�%��R����'�_����;aAm�Ge"�HSv$U
�p2��w�B��9j���cc��^V�t�=z�pq��D�u�/>�_�����cK	�n{On�n��|[���
��'5��X�p�������/.09-#&��A+��E���`�q�q����|���3�i�iv��<M�c_Dv�
���a�YW�u�\�L"���~]o*|����i�0?�1�y<r��+����m	�����9^�_?}����gq��3q^���2"S����d
�����T�s�!�&T�}�S�2b?��.�y�[4�nW�s\���qz�	J�(q �	��J
	1�Y}>{�r����m
�=K�jwD31*v*y��@�DGCoK0?�y��������5Dq�����H������!O���*�e��
���r���*G�/�Q����Hv�-��w���M��������6�1M���������_B���l���.�>�f��\-�M�f�:��m���(!���4Bh�5����.��i��
�a�����N|�/fjf����4��.Q�}���\���n���:�0�&S~sd���Y�[�"a�	v���������r����_�&	��@�Z��_d���3�2������gP�:�ps�������3'�Z��{m17���u*�v����4�w1oDm���QCod�D�����Q��T����~/�������I�h�!��j�t��a�?����#��S������p���?,� #�t����'����)>x2�����A}���gb������&��4G����g��q��{I����x��m`4q�q��`����OI9Z�:��g�q��������� �	�J��6��Vq"���qC6���2���l�����l�x8��*cRO\���l�C��j�|B�����k%�)���vl���L	��nVJ��GRY���,�&
#3q�I�y�)z���'��7�(���SAf��s�b��q�������N-�bt�N3�]�oAni#$��*Nb��qf )��8.\�83�M�l�����22^?���S�
v:sGg\gX�x?�E��������	Y�(kLh&�e�|woH��i�=��Q}��UG��.�XH�	��	�"&�]D	|�b�[�����@�X����N&�I�����#�Xn�,�t/�{>B}�cVi����:�O
<ow�+��������������:����>'���U1]�L��F ���;������2A0_����'���D��X�q�O��Q;��X��mg{���7�~�b����t�S�*A�Qu�H������@�e~K�������"���t���NH�� E�?�	BL�(NQ��a�����<w����\��+�K#�Z+�����9U���9�'o4�<Ju"'pG�fQ�9���\)v�`�t����\
}�G`��q���x�F}��'~��qp��3\��Yc��������*��^��Z@������L"5�yd��T��.q�"��K��B���2���i�G�
���C�c5��y
�v��^Y�#Q�r��A�m�Z5a�I��O&��+�]���=)��j�=�ma&@	Qn,�����o?& �, �x���������	&�s	&����:����}H�9vF�|GB�XG���,G�	�G�	C���{ �e3!�0	�c_X~�����\&������wF}lG�3�x;��,�F��F��8�GcT������&��>���H�C(4��5t����v����P`���Zf��:��9���T;�8����YCrk}?����~�C�u�7Y�&�w4�E}��� ��M�c,nV�a/7�0��]��6�3j�4�`xa�P����'��#�$Odd����0���Mf}��g��m����B�����^��ft��\�5K��\��sv�2���2����VmL�l7�W{y�zN���(�;�@��3U�9�'�����[��R�8��\Om��yt��rE<Jmv�����+���,%��FV���o�-�zv� k��Y�EK<������z!uF.��i`��=1����2�b����C�'�8�Q�Y�8 ���-��Y��'P�v����P)O�b�]wh�b�xx�az����(1�;���� �k�B4�����>���OE�H���)���q��3����t2������t�
-S��r9��^y���<4��#��D��b�6���o!���)��e@�Q@��^c���2���y`�zG�	E8��D^'���)m��N
%�v�����)���Pp���	���:�����F���!�u:<I�X&�-B<���*���-����R�m�M�yx�YQM`��]��F`b��L���T��{������X2�s��BC��+�����ACB,"���,"D�s	1x�������7�	�"�P��<5j��_��0���^�@��.�=H�w��N]�-��5�6���������~�]?�@��M6���uJS��[[,��n'�?���������J���E�������<�su��6%V4>|�?������e�s�����X$IZ�T���,�"��q����k��*�M51*6C��T��du��'�vJ���.M��Y8GHzC��M���`��s^`t)�TK���f��8�f��8}�D��CJY��^6�f��*8">�����
+�=�Vsz��a�5�&�6?�����Z�9��?x���=mXg�bSS�L�hz�����s�=�V����#�,`l�7(,�Fj����G�~p���#�B�co��H�M�e&�IF�kw��.�����=a�)��m���	��\�����	Eh��h����,A�'dlY*G����
[�	�?��#�;FH��Z89�2S�D���w���q��#�]��)��9?�6��������$���v��s�h��h��jb�K"^|�
V����<��e����~He$��=�����dc��Hes��./��|�
�c�&A|�n��&���'c��h�	��|��z�B����4�V���04�}���n�[�nS}K���/3�\�^V��o5X��7�C��brD50D�>�&f���f��}D���j���3rG��3����3���WRh�X,��6wl���2M���T����l�G�)����I:-�� \��-�{G�K�,Is��d����s�,Z'���$�.�M\u0O�%��v��7|��+W����V�����)R<�J���Z`�>C�R=B�����r- =��"S
�|��G��L$/a�h������~��	�x��S�?
�q����'.9��V��@����a8����	|����t�;�(�{Q�����]?i��[�j1�{[��_��0(.�C}��yB���{�d~=��z@��eKe�JS�%�: ��
`%���$�!P����w%k�
w$>,'P'��@�����3����s]�1�D:2��cdL��%�6���X�;�x�@LX���J�WZ�+�]������=~�8�*L�o����w]<>���6&�����2�'�����u_Q���]B�v@QJ�v_��m��@��	�s���$	�c���|~
��7��$�)v���c�7�',�Y�^	"���k��������Ir�4(r[m6��� ��������\uH��w������\5��������������&�=�T�vy����6��D���;�x�$��^
�G�x��b�<�h�C�B<��`
��P�<&�1��;����*�8���A����`��6�PX�	�m��B�-$Z*��[XF�A�S��S0q��*A.�Zi�����`n�A�\ c5G���	?��B�V�NEmMIm��77BmR=�}���Y�&D�0�zjsF�S(�����G)����|�n�����w�p�����s�}���'pQ����EK2��%���#�����i&H��"����t��5gO�����5���o���S��p��L���C.%��xU�q�V��l����W6���N ������������O$b���'*�����
����
j��F�Ee	���M�T��~�R����X[�\����0,����u��
���w�������pSi����p\���b7u~K�!}��E�g�{TN);W�LdS9����y���������4���P���c�Wo�����"GY�q_'D�p��~�{M(d�����>P�����:��z�����
VKa�%E�~��/eSj������<�9�W��u���/*�����|�����]]��p�HX�M���biV�|\��|~!��6�I��g��H�IM���&��%	�B�$p�GnJR�B|��P�����i��
���8J$O.�$4��d��28M�Y���&��������&��y�f0��]��]������_D�5;ls��P�a�b|��:vCt>h��;�`ux��H��#�{��R�v���{��a�'���>l�?�@-&]?tk��V����q���v����:g�����a���)i"Y�wOJ��O$0����"o%�2C[`"�l��j&�����3�<K����-�0��Kn�Q�����B!����,�E����N>w��B��@�����0��9a�&�\�}|�Qx(���E����F���d�`�g�:o\�h"3q�h$����I����d���s0�a���
1��DyJ�x�<��A���0m(3�	�$�B�Lt*���o�I��>"�d��N4P�_��>B@�����]�@c���gg|��L�'�>(�x��_�� ����%K����=#�H������jD���i�h�9��!��qBe��w���`�Q���B-G�����
����z��WZ/�v{������h�����$'�:+�b�����
���Z6���R7��:|z��7��q�Y��1������p
2�:�3,O��[x���,]��L�7�O�����(���c�P����q~���q���0Q4�p��z%����j$�H7L7O��P{#bI�[Pj<
d�YU����W�X���[-<z�e�Q�
=�7(��\6���Z�1�m�M�x������}�8Q�h�egft�!��O��;2����fd�����)��E�?�P�����|�w�|�tZ�uyWT�I��h�6��D"���e��J�_�i����#/���Z�<��v��_�<U���(<+ev++��Lg(���'m'bj����Q
'���I��b�z�.�"�+�"7�m6����n�q�1Z ��{L��8�HG|�J�=?0�4
����$�����dX�&�����8�X+c�Go�7�P�@�P���	��V;n�&JL�3�������Nrp<�p��e���V�0��UMm�l{��6��U���l'�q�����t���w������WI�^D��'N\�)����K�������<%��.�����YX�*p�M�����?����:; zADsZ���o�m�������)�R�P�o���k����Kzo������6;,��=k����#��1���BK)�k}�&Y����r�{8��%NW�PXG��oj�7��,��8wAEf�>���<������������	�9����
p�xX�1��G�Ix��^SK���C&���940�P��q����`E
�cI���P�*�9�pG�B�J;#�������+�d����1�W��������2u��SNTZ&���U�Wj�{�&�
�������E��M�j�7�����R��&��m���@�;7��&n���5�`?�
=	�;��zV��.��F���8���'_�w&�
v�]C���BA���Ghc���Z_057[�0������iD pHux�=�M��C��N�Q�_���K�TE|����}���5J���>�oz:+��<���?A�,�_J��.�#��_Se+�$k�V
+��M0�v��R���r%L�+������������@��f0@E��'z���M���t=S��l�L�q����`2K�oxf������i�����u�:��Y��8cr_NZ&��=�N����G��G6i�y����c��V�-7T �}��7�P��:v&6�e���~��a��5������}������Qq=0s����RE����^
�3�I'�6����������R�U�B4��p��a����.�PTN���6_dE�I��*Pe��#	�v��L������pg�JG/�<��M�E6�d�v�pp����g�2wRf&�F�	Yd���Ij��Sa���W����NUf�jE�P��2�����'����[�����������p����K�`\�6��prLzy�v<5����#g�[H]���V��D�}1�����^����B�"W���,���w}��JY<^���i���d���P�2Z�����~n$eh�
U;Z`������"we�@]eh��bB��d��U��3��*�����&�N��
�����!��A��q�hU	wG�3����'��s�Fa��<��|I�%�������n�ta����t[�J�����8�<��d�C���r��%�����!�x�����d2l��L(r�<�s9��|��i�/�#g�H�o�]��
:���v&�t�96�i�����q��?&�V���/��fqzI����`��R��1��x�Q��`��o�y����7�u<���j����d1�����N�<���`4.�{v<f8���������@6���j�r��r�=�ll����6=����=2��8ML��q��9j����W�I�9�-����8�1������(��_�	�_�\��H�����i�����hds��}C����
�I�����B����-�qV�a9��d_C/�M�)& ��j�&��&��5�O��������iJ6A��Tm��
g?���G[���pq�O�V�D��e�|���8#�uN�\Wi�f]��GQ�QS�����j�&Rdv��,rZ5~�R���B���S�Lq��X��(v�i��rR&(���V�����4�\�Pn8��b�DE���0Z
���/��"Ia��#�M��4��n{W�M��Y`Lu^2vh��'��c1�/-��$n�?,���7#����p&|���w&��Ezx+ Vu�V������JV{��>�|��g&��w.@��n��?�K���M��\��7/�3�w������Y�����ZY�h5����w����!P-�`��{N�URP2�>�~;=x*)�
�=_��yL�;df9�f��->�4b�}�"n�����t}_�D�3���v���4�V@$��| ;�i$�]b]%�A?+�v{e���v���0Q�S�bx���0}
��f�m�B�
8u�� ��'�����x[y���$���L�&���j3�_�\,n���?�J��%����V��D(+�Z0�I9*+k���Xn�D�����0�;�W0��W���j��]_,=(zD��{a�Yc�xW��P]�d�vB^D��]{4���V2^d�-b�������)-G�V�@���m��Kq��B�����j;=��bAt�{UZ2"v6��I�Io��
�p�G�u�}6W�����8��6uuh��S�����t����I4�f�U�}|
d�,�8��M��rBGB{@7�
�I�Y�3�xB�Ra�m7q��u�4O��J�V������x�����
;���w�:��$G�DkF���er�����#�&
�k�!M���2�����h^���~O���#D`t]��r}���])���)%k
�mQt�+�T������5�w��X��Lk,H�P}Xm��h4���QM�= d�KJ�����'����^��h���~�������G,���Wo���3����s��M�V:c%�V%�*��W	�X�/R-�bfp���v�k�X��*M�E!�N<�H�;2�$*���7$�)	�*���{}�^?�Y�$(;N�g]�T�8�������H#3��$�r�o���<ETN��4���-Y(�=��1��og�_��rq����0Q���[��aM�i3z=��)��?`d�y22�)k^u�UQ7��/�^��i�U|��k�}3��Jy
4%ZH)S�������� �����&�TtCt-��DV��(Z��]Q�)�&������rQ�T�llP ���53&..�m�4��.�!,z��`���C�;Ws�����z��P��� UK/pk�Yfv����o5!L����^��<������t[��N������
{�a
�.���B�$�O�L��vF���0��+�J���k��0G'�����J���sGv���Tm������A�+��g�E�/	n{��;l�c�Fh����
m��;2Y����
�����)u��Y���'I��`��^���hPiv�`��q:�U�04�E~�d9H��xJ+���������&��a���_����rE�A��(��LJ't�ds�4����`L�����K�_������,(����D�%����-"�<�3[��	'�n�Z:������2��Z~����\e����l�4��zH��uz%�L-\��'#��E�M�����B���A�Q��^i?M�v����rm�R@�
�W^V�;�����|�HR8�NIL1y�]p!��y�&��������KlFr��bS��
��V��N�aA��j|;�����AK/(O�]���#��Yn���"�g��h��A�Ew�$�,���������}o�o5$oD~����6@�]�W��R����o(���Fy;���:V�1��E��
>E����	����.��[����M�y���R�Q�x���c�c�����{6=v���+m�H��:u�n:{�
��6���H`��C��_�1�Q�U�>3�[<=-Q�0��y��
���	&f��3n���+h��T������I:�j�����9��X
���^[\���+��b��8�T������{��}�s�,�m����*{����(TP���?14�P2/@�u�M|���4Y��������,����S��*`^Q��#K���-����V�\K@B�}��urQ{|�������o���)q���H�@�o@������H
�z!`#@�V��f�V(Z�n�{��3B�������\�=b�}�B�?��
Sh�b?x���?�j�j����@��;fY��v�E'a���@��n�I�4ul�==��0	�zvw��Rde��/�k4L�<	��B�,(��L�>?���.`��N�����($�]��T��bfWr$1;P��)"�����2��*_��9TYS��"m�t��"|�o� ��If�jE<
>�����@�W)�T�����x=�3��f��T0���9�����P�U����s�R�j��pV�`�{�*�F���W��s1�C���M���8�K����b~���U���$�`Dt����h�*H�j�X��.7��~���MFU����)��V��������x��	��:������o���U��Z��~�(t��$)�������P��=�e�������A����j�����!l�������=��������fa=Yt]��u�S�=^���5�������!��%�/#X*�`��g���k����V;j�j�����)�'\�	_��(�x�a�.����%����`��n{�^����O*�-M61�����f���yf-�,�s�v
�@����	t��/��}�/�k�r����T����F���������&I����:i������g�������Jw;z�$��/L��'���K���A��'�<�i��Rt��]�vm[�)r���~��������Q�f:� �;!M#|e3C����SiP@T���pST1bB�$R�LDL[��?����#����������%��������s��.�q�������`�U�8�$�7c��n Q
�h=���wc��������>�����'�WhW�w�]�*�z��!�k���s��G{�������P{ �vM�Mu���U��
�?���<nWP
��^Qo������KF�Sq��e��3z��cu<o\�<��NF������)�]oW����HwXS�J��o�����m+_R'hm �VL�PT�i8�X0��%M�G���^?�� <{W �^*��q3���t-(�i���u�]h ���O���������{�w}�3{��[����������d��i"�l/�m����&��
�W=4�u#��.~X�K�H�S���=pEm�(!�%�D+/��0�%���%��=�g�3��&�s��M��H����&JW��@���-[9���w��N�;S����Z��+�N�����w���7D	��"�; ����Y��*�B�:J��W}��=������z�����?�Ff��"�]]?���D�Z(ZK�����@��et������h|���w�����K��H���}�u�'�5~�{��"E�}������C��?J�&���y����������� ��i�^^w������>`����� �)5��yR�t�:���S{�Zh��n5��6�jh�n�KG�p{eZ���9�@x��@w,�8�_M�J��X�!?u-)d���~]���ZR;����BA�!�wEn(d��<�%CS��4n�jK���5�����p	O�JF{=[��#��S���[��y�Vm;��|fu�Q;��#�#�yf)����\��i��#a��,�#�*ar�nuJ4u��C������y�����W���v����n^�%I�_O���sp�7}Y�U{��
�T2��F�������||�L-/}��: �0�1t�#���^��0�Z"]i�@ �r�]��C�#�����9��
�~���!�>Jp6�����,/bu��d:��^�@���ZO�[h�=�D�k�A�����V��PEl9V<�3R���x`���j3M��S���G�\�)���V����hk��'�gV&m�t�SPT6��[���b ����L�h��BI`,c��w�������%�$�^��:#u���U��U���Z�TQ�������{���D���9���*�e��7t�0���S(!aS�B��������x��� ot�8|�8����9�v�lSuq�7��[p0�%JyN�$9�s��C�$!\�,�b���U�5>�o)����m�i���K�q9����rQQP��TG�Jc���_X�sc��� 9�:7S�K�AJs�mHwy��2�r"2���K�)���kZ��!f@��#;s��o�(��X\�y�XDa��@a��}����������#���E���}����m��������1��h��z�g��W�����rg�:J��P��3aU�i5�
��K���qo�
�?��F�7 �O�%�+�N�A��i�~����n)��T��+�kd��l�5�@�/�t|��mr1d��6p�I2��k�0W(�@������%i��m������8,���0�x�<A�����	f���6 x��\G����o�@"N�B�z�2A�����J������F@/��|\�W�$����~�v�B����|��46`
�7�$���?��!�V3�AH����G�=���0K6������<d�m51
��]�,���MOH��gPH�9dA��?����j[��Z����<G4���4{R�X��R����B����i�[�`G�l�bF�������6������u.~+~`�#��PpGZ�������z{:2�YX��0>Hq���<s	W�,QzH��6C�P��kfIZJc/�%uAl���)F)X6E\a~h�=�t��;O��AV�z�)b�
H��R�l���$���z��^���T$.���������<Q	C��)~�RA�IO��!�Qj�_�s�08��Q��zU�����R���]O!S����X�o��PE���vk�k>�a1�V����Xfq�O������D�����/5x��?�t��6�z`"S����9�
�t'F�?.�[��2���ci,���q`�A���y�B��~B�b5�kS�u4]���$U+��bN�����&f����LB[2���k3,�X*����Y�h�������pmg1U��"��[r�oE���dA5�tD�PLQ~�@�I��b�p���=�b_k�^�?0������SW��%[a����(L�����)�\&Q>��}|U��,ZF�2���s}�����!�����Z�����m�Sw��#=��;a��^��iu�2S(�^W*�����k���}��)�� �����7T�����H������p�h+Xy�l`�m�~�6�����5�O�_�}�^�Ng`K��7vjN�;���������3~'���p}����e����5U�O��f�N��2��=�!pli��f�cF��arY7@��5�I��>�"�����~��f@%3.�p�}��r�v���V���-��?���M���v��U�����S��;�������������,��8�!�ca���B��+�������gG�"�C���L^]�
�8���|MN���_�Uy3?��F0�
��z���?����ZZ����9��nU�Le?�Q����De��q�Z
�lP��j���O�����)�V]���!\VM\X=�Q���J�S���J#���w��h8�c*h��L���d�|%��a/�%�;��M�[���+z�'�A�y1�V����e�D�~C�A�E�e����H���"{�A�Yx�k��q���������B�d���d/BV�yX���)����V���>MI�����:6+�<k}Hx����������	�y7��3'�������P��@XF��e�K�\,u�8��-I#���������|�$����W��m�t�A���=(�1u"�K0
l��g�����Z#&@����D}�������^�?��i5�w�N��������E�[����,����������~��vP�����o��M��~}S�$��$+N�������/twT��5	/�Y�.��_�6�"��JWX����xhS*��+�>����_�;V�8B�))��wh�/�t[�?�p��N�e�%Z�����W����!������X��y��t��D��0���oW�'�S IC#�w����h�q�C�Tw�u���;��+��U�\�t��3���AD�qHL�&�g� �K^Ulr�H�1�d_8T�W;���\�SZ2~���A�����x&j��fOz���*#���c��V7���2�?+���%F���{�9%��V���n���^���Q�-�nK<!���Vh����,����#*9)������>�%�D$�v���|'q�q��
��x��3��9^�~�.���e��
d����/�����)��+�����<<���T��g���������?|�T���E�P�^�=y��.��4�M
��^~��[4�m��k5��F�F 7�a����+�}�b-�����yA	�g���������GER���1��)ri$��v�����2j�����j� Q�.rM��FB(qO(�W~8���G	�F�^��4q���:���r(�Vs�D�B2��rn}�	}���hvme�Q�����=x7��7���<z� i@yM��J����;/dK+l����@@��0@?1V��������V���y��	<����d��QH���+K��1�^.�)4��}h���r���y�`va�W���=��Vu���i	7��b��t��[3'��a�b@	�2�
�Z�Z���������^�����N��r�8�����*�{GSXi�x������Q��b��q����Q��juDowvL�~���z����b��q���ZsC�le/�%G9�<9�xOr����K���r��bw�h��( �� Sc[��s�PAt(���zp�:6l�Ri�c���q���CUl]������9Vcw��X�|����E�<kHG������w5�F�K���$��s3��NX�e����/;x��6S"F�{����V6�O�b��->���~���?���Yn���u\��C��bk�j��G����v)�:��?�����$���z

���N��]H
��[����%�������4��k,/�x����=U ���E��R�D�./>���mF$�����CK�P(�1���K���i��n��T}\������c\Q���Q��o��%�@��l�8U
���$U _~��=B�
��������T���/��q���i��Yi���i�xx�K�����_��h����+!��BM�����!4�'�Q��ToGU�VC���U�1?>��� �x��?UE��?���\(��{�\�\`D�h�KEdBL�;�����P�7p����c$�ji�A�L(i�tjSA��"ZRj�'�%5�IdY�D�e�������6�E~����K�D��V��6(e���	L+�>�!�P�Z�S�E+���qs�~��j���
�>Xp���[uN��=y�����/�!�����#��VF����Vm��:C��5����~q��L���2�R5��zv�\
N0	E��;�Pn��N�[J$r{��*��m!���dL��e� -�<;���W��a���z�[��m����2%��|Qr���X(�=teL��N���d��2��O��b��a��9Y�������/��@�5�����eiHc[.Y�P��94�����>� F�N���ap���G%���v��-G�kW�{K��Qnu�~���f��:[��`�r�[m��6�W ��Qu��F��Oe
!�`���hd]nf%oa��lg8���
i��|����C���I=�s�N_�-0�R1��pN��������&���Y�V��t�tS����<`��
��z?P��)R'������q��nU�M��������vcK����Q�����h��>\��A��X"5DC�W�6m`�Bm��>���J�~�3�={N���o�5*C|�
���H��E|,w���?����]�����#��T�,Q����@t����c�X��:�.+�j^8�z��Z t �����q���w�_t��+�=�����H�	h��P
G������g��|9��R~�boUj4Jx��9���.}2s��*�T9&�zo�(��.�4z"�>�}Q�\��C)aU���R6�
��X��u� �eT��
�$�"k���P��b��M���+z8��|�.�����a-����YL����7	f�'�E��veN�[S��y�R��^��
S���A3yE���]�6��LOT:�*�]��D�ku���M�De�\M��s=�b��Nl��%���8Wnk�Dq��L��t�5�z�2k�z���R}�}�o�4�����yzC,|��Ds���ZI��7�j�cW��\����bWn��e``�b����G�]�����~�<��g���MU<G���n�6����4�j J��Q��7����B1�r��mb�Q6M9y��X)�S���%~��E	�/��*���:���7K4m��z�"�<�����O9�`�*�<�D��Z��+��r,~v���;`����uE�PG�*�`��M�g��&���g�9���N=K6A���m�coN�By��i��[K����5�g����*���U�WTl��h����kx{w��!U�M����������HG��5�g(�Nh!�W6q�����7�j����~�*�W~��3��E���G��MP\<�i�%Z!�������yt�������g`|����;��z�?xe�x�?���w�%��30>�X��f�d�}����Ut���M:T_�������@
�qE����8���=w���+<��g`�PH�9}��n��������u�l�xNy��'��<���fm��U�":�E���&�1!d�I��2AYG-�����cV0�$��� ��D���9� �w
��xI�"=�2�_|�����>S�i��
S��.�~7�F����@Z'E�i��<�JI�zB��'�*t��c���M��v�f��g�� u�����i@���0�.r"U���^2���Y W�������}KIt�������,�s��NItO�v�����a�M�xmI�%���Q�>����:�TW@g���M4���ee����5
d��������Dmw����Q�J��pG�\#�c���Z�@%�:z~/�A9��������5yv!�����#�>IW)����}uV[%�|E�WU�z�+�����0��PMk��
�>F�-_��(������c%���t���|���I����<��+�>D����m�\g|;=UhWsa���
�E�h��+���-������p�X�� ���N�i�F�%�7CPJ�'�\�S��E�^����}�����+����������n_��f�9��_c��M�g�����M��~n���<�k}~������X�3���I��|�O��P?H9��1�z�M�Z-�����E\������������[^�,R���U������b��z�"����5���k���l�[c�����l�N���,�nP��M�EG��d��z��u�\�#�`�����wh�+��U(���B�S�})k�f'��:�������k�*�F�[�nF����T�?�.r�%��$%.c@���Y-���Y=�?�]�,�y��H���M�=:�F#7��1�o1f��9Dk i�����i�������]m�]15����
�c��WE��PM�<��������M0&X�������v����mh�ts�����o��+����������tH�=���pr����on��������K0<�,3*W���&�"��8��}
&~������F�����R��_���n�����#����������7E��:Z?0[�U�����$�o!�x_���;�^��	i�6���d��2>�c�)�p6��7��v����q�G���_��_%f���Is��Dc���1>�2*�h8�
�����$jQ�),�
��-�q��2
�n�!�A>��{�����k���{�d"�g6��]X~�-c�������~w�
�~��q����z����:�-P]�����_��
���Q��q�CG���T�vDFX�
�/����~gC�%6c��DHC8M,mv��\N�JK@�HTJ����$YV����8��1MfM��R�B��
s�2��1������(��RrIDR����E�.73�Z(�}Q��]����X�J���f�l����`8r�~z��/�@�Z)5�C���,�nkx�;�V���2�#_P(�m������X�g�����M�peU�W��w
�����e�z�-N3V<���w���&����;B*e8�*���/XD[AI� {I��Ox�s���= ~ >
0�WwD
�Du{�t�1���!���B��wpd$�I��=���4u �;�b������0�j��ZF��S��t�*��Z��o�2��?8R��zS���eO�5��__�^_�rc'xH�M�gd��0���	��l�:����8A�q=�0���R��.�l{��V]wTA?�J����&�
����`�%����<J��pA��_a�L���7���Ho+���9���F�X37|l�I{G�s ���c���5����OD��FMa�������y���M�lgh��r7��{F�����������rGf���#�o�n�(S�qN����>y0J����a����U�@!�P�ga�h��c"����Ne��p|"�gK��	[��>i2����2�`�'_c������$�9�<3
��T��� �0s�������(��L���W5�p�����Zye��2����+�k��iJ���
R���H�+��/Q}
[%���&�O�I:O ������+���f,vM���P3^i7��|�|]��9P*�tQ� �p5�/T���R(����j���;R���O��M��j���2�Bc���P3xgo�����)�]�Qi��:����p}N��A1A���[@�1(A�3�Xa�Pk���T�d��>���-/K4uE.)t~�K�������B���,�-$b@#�O0,'S�7��$i^`yb��F�����|}�T!8��5&)��}�
@t��z��~ ����.�
���.n��~W�E�{���h��}y�������U*�
�s^7�����#��{������m�J���QJU���H5bT~�i���eb����=l�V�9�1~G��2A��Sl���uA���n�����x���a��f�d��bI���W�!����o$�>��~����ob�L�������:�th�oJ��z�+7t7��m�F���������P�����*�@h�I(���c-%*_����*NW����.��i��C�-9�{]��!<v��}s�e�� z�[�<�QiSL�V!���i���(
�����Y�\��_*�p�����+|2���y��/1�I�0l�Mr_�f�9�����'��C���w��v�_Mv�^5T�Aa?&�hg�$�:4u��S�w�g�O�.���5���R���+��tn�^�M�����=�GS?5�����i��r59��C�7���tc��U���)�����J|�q���|�G��8�3�>|ejo�
��oY�s�����fk���]�q��H� �>dy�'|�K�fl*��g����eB�"\��k�u��D�P-a�j�M��������h�����������F}��:�+������<.L�x\���:���~�;{
H|� �Bz��(:���	�/�6T�~:�
��:��
LG���*���|]����d��K��'{�B����=%_�2UX��D}-��F�E��[��&}�2�N������0��!C(���:���������e(��~�MYL���]u	����O���i������������On�_y�>�:���\C����eO������Z�g�!_��&lE*.����~��.�&��U?�0��.��!�=��P�6@C�������[0�3�p�g�����s��`������H�9����.��4#��_�A<B����FG��5@&-k������h�|��5�e�OW�:)�N����F��Ps�M�U�V�l��[uqruPM�I��W�2������i��S#�r��Pa���Z�I�;l��)�f
���<s ;�I�(9l��K!/�o)N*���jz��]#��L�"�r���Xc���7���%<��P�X�;4����'J�^+�zzW�Z8B
Z�����;��!�~?�j*�g����R0�t�=��.O;����n8���������H��d�2�����I�D|a9�F�{�o+,w�������P"�L��������0%�y^Q%���)<[&���j$�-�71�����[��E��<��Xze��N����RE�E{��q���I�2w�5r��m�~��u�{��~W���>���ui*���pK�f
�['�d��H:��
�C����,�|!%���b9OI�L?��9�2�
��jz�}��1;���M�Z.��!�}>�I_�_kn������7j j~G���&��)R�=��;�P�%��G[����g�I�.[�\�AlT��������r�������oy����W07���&{x����&����?�4�i�8��	��%�^�b������_���G�����Q��U��e�-H�M$G�������m�u��>*S��'=����p�b�"������j|�7`ug��7_���{~Yb���u�!\����/F�c�-
"u������u��m���{=q�LK�G�A�mr�z��a{�fI���i��!G�^�bv�g1Hq��i���$�����"�^���m���:�5��:�xO���>f�+77�o��l��,,X������-���U���~�u��]��B�����)U��$�F�-���7����E���"+���<ESb������&���{&���[�qO���`�]�X��9���y�]'�^�S`W��������Y+m)��&�?+|Mw,\?G�
&z"�6M$�ZF�����*>Iz/V��U�}�0��
��:5�b��+L��1��0M��H+b��<:��Yt�)��p�f���x*1�[L]F�����*=F�m���#�),����W���|Vh#��W-@6����
�g\y��5�:�P��)�U+����	����&��n��*���~p/v�F��Dxf�q)@K�����w���j�1������zSh��^1�#�i	{8O��u���e���fS
�zc�0�����9R6������El+* �:
0]�����B����=a"�a���	r���!Av6��}��l��uw�akO�7hk���������{&Hs���Rm Dt�%Ji���z��2����
\B'�#6���.�s������m�f����7D�������j�4��H�Y��~�Q�A��}x�M��:����J�[�vh�j��a'U o�q��nn���q�2������l���*��6�/.����k��f�:����&|��8<���y��@���e�3���D]:o���
��s��S0���^j�6�JZ����#$��	�;k���`��
lQ�����)
�Uz��(��9�r�%������LM;����6'����aHT�_fwjR��!���*O�����sP�h��$������ �C��v��}����f"�5'�Y�3[�K��M
���!�C%�_����HW3���N��8Q�D����6O;����B�e������5��<=ZG��XWT�co���;�E��*B|�s&x�[�3{��w�ft�\���������0d�}�r���:���������o�P�1�S���E8!�>�����(`��#=���G�Vu����s=��b��������%]�P�Y.T���������^�ErB+]�8�}-����N��W�G���x�9�����ds�r\����vxb�������H����5'O�e���������_��Tfp4��J�0Jt/�L���"�3���E{����g_�m4d'�'6�Bs������I���F��"����:0 J�JW��[u�������������T���x���c�|����J+e�H���9i+�����-�zjV�7��������=�@��.V��8�\�����?m5�r��u4��G����<�pt���"�(@�������J#���n�#����AG_B�L[�
�`b;ae�j�`����PV
������4�^������]�����/�~�P�is@!��'z��i,��B�{}���^YF������,��nbP��u��K��>�Z�=�s�|���qwQ���`L�'\�&��L��Oa��-~V��s�����,
}E���]�A0��qK�SR�������������=ev�^�09/f�������!]��]H��RcK���u�d�u6���{�/��3�x�bM�=
S��}���/#7�x�>EU�]]*Q[[N(������{�
�=����z�Z:]���z�e�LHu�sLtG�vC.i�,C%���,�7��q�2tN5������<�(�=N�.��A�%Zn���2k����|�(%wLO��+�~�U���N\���h���:��
�~����~
����(���)�D�j����?�Yu�����O�UB�gO���1�D�w�6Fq����2�b�F���nOE���P~����C��>P�4HI��^E�e��������\-v�e8,�.R8��VJ�!�NHA����=3A�L��iH��i�K�/�I�
^��ZbC����	�f������~����8�T���r�%
��(n�3�P�]u_MQ������9�\����c��-M�^V]U[d�&��x���l�;����'�������J���/W�3 D}����eA�� W�
!������=��PE��LQ8�	�e W�U���r������M��K�}��I�,����������S��=�T���{��|oW��B->��_��]E0��K�*Ko�=U����pU���F{�������p3u����J��z��"��j�U�a��}r'�H�����e��@W�
�~�(M~��#8\�����/���� 3���JT����e�������K.�C��(]>i?�5���S��o���.~Y���G"'�������Y��
"����B�U=U��_�2	V���a��Y$�XW>C"v��0XaU
��a���������4��i�f\7-b���X9#R��O>#D��Z�"��8nR�*���r^��>�y��]U+�7�r	���f�!u��"�����QA
��,����2�\����ax�%��\W�@�b��Iz�]v����}-�*�4tSz���$hC���\������V��\�b=����6{��#�<p���2���-*Z�m�;��J�/��2���RQy��B��(z����T�VI�aG.S)v�^t-H�x�b��D�F����4�h�,��}�]e	�:LSyC�|J%�����L�� � �}�^]%wd�0E�>5�v�4�k���:���e]u���W����������u�;��K�]��>�y=+�>���$�]���!p�bY�Z���0���b=/���	|��D�x*H`�r�U��~�S�M�[�?�{��>�5�_��K�y��a��^d��������
}� ��yr��r>	���a������bLjx��+/�P������P�uU��w�1��fq�'��+S���
M�������g
�6�X����bM�}=��C���<������������NvM���&����U?���v�Y�7Q���q�������C�i#�Qx����\�9�/���+E����k&������x���*>.����6�q��M��sh!�U��\�&3��7W��
4�Y���4�&�12m�j��dS��9t0�k�V������7��T��u4�3��|w��W�79��P6���>y�v���X���U�p$�����\JOa
���OjZz�i=�$l�b�"���C/)��i�K1)��s? Q����{�O�X�������9�o��z#�l��e��1��0z]��*�}������q�2}��<���7b�C=
�����}��������N���/�x����tiK��Ccw8�b=D�8�a���F��	�����x=Ua����1qW���g����U���B��������U��zY���8�z+e$��XG������uU�2E��.�4zz��[P���+1��m}��u�L�`�T������9x]e���+�\��
"��M�|<�^�/���*��3����i�
�f�`����Vm���<=�&
�����J��X!b�d���FX�m�<�V��	T��q�!0;�a-�Y�]U�lA������"|���t�<O\j�W~�Q�
u��C�>��>e����$����z"�����3��w�%���t��w}�{����zS9�b
�J���h�b�uyL^(*a��3�nl��w���_�i��@����~P�����/b�������CU�i�@��=��>��xF��������\�L�g
�/�����
]&N0�r�5`����^��U���)=&8�p�sIw�S���OQ��V'�1��_������$�t������%���U��?�4y�=���
l�4x������_n�a��Z���M-���MlXB(�yLP��f��&�����>^cR�>w���n]��U��r�^�e�\S��*�TaY0?&x�>���_Kw�{��������:��r}��y]u��}+<!�l���}'�_��lW5�3�U���Pn���up��-��$d�c�`��&�:b>���N�]�R��ZP5�R8z�w���f����u�~����oq�i�����}��@D^����R�V*��i\��SP����/�������AS\��1���.���Q�%2C���#�"�������7)�+��Q�����Fa�5'h�h�0E|!Y
�h.�����oX������_�O�U0�������_�vaE�u�3�����4�xVW��OO�����c~��*�T}�v��=�=�B��qu��2����/���Q����`dD�
�����t�ZHR��W?P���H�����jd�a;Cu���������=�z���U���*��;G��\E��S?��F�(f��J��+�'�������M;�������}�
c/#`���W.���	��d�����
N�{h������1M����|O��G/����*�"sdITq^O���v)��B�q}�T��zZ�Z4������s5#l���Csu�,����S���2�/�<�Rz�],�0%��,.���$�M��T���$�5r�#��pu������j_s��U��qu9��C��i�>�Ju�P5<SV%D�.DTT����7o�����cT���:��S���<eiPn�i4��^
)�>�W`Wc��������,�&-���;�������
V�Q�����:�Vk�w�*;G����k��o��*l������u�?��������Wnn�����'��3�]8*)S�,5uvPy%�X���k�X����iC�������%�SY�S;��(nH���|�����x�C�}5��<D��z�b+���g�~�6������g,�50����t�����^G\��t��9F�R�!�(�*��	��O�@�������X�l[����=&��z�H�}f�I�?����W��D�#��n���@�<�S��?�^^�>�����y
�.R������0�����K	��%�	M�I����:�GZ%+\�*BfZ�w��Ae�q���������~�#��f�~
k��K#�����Av����X��@]1����t
��^�:�~F�(���r9�n���Z2g���u � d����4�p��4���K��������4�����$O-�j������=���\�X��>���9P�@X���k����!e�v�8����8���WQn�l2l����$�JxH��Zl����-���X#������,���0�YbBcb���9B-�<&I���o���0���8��F�,���!y�#{�����kn�7�h���y���1������J��o��~����;A^?���������pR��"��T��9<zYy'��>^����6��P��O� �1��X���L�����2�����tKgA�O3��D�>�CS�*JU�����Mx�>l�����cR^��<��J���l�u���Ta�g��h�+h�r�K1=����\+��^E�J�����O
f���"���E9,LV�#G��`y�(����L�ye��kC�|}=�����<��//��`wp���hwXPK�(�X"~�t5��w�t�	�D�r��F����z��U�������c�A���X?*�&����2�xr���*b��D���h�kgE��Y�������
&^��`���n2��	��+g4.��G@� �QE�����J�S�@�5���_"Pw4~��)`�qA��'���Z�����B>y�����B�5��\����D�]�9oy�^����6���(�N���f���]J��Z��,����0�)��X����Y����%�p�������MQO�����}�����W�����K5{�����>�-��w{��,��(�����%�����D������leZO^9�)o�����2HS��RY�^�����p�c���j�������z>��w(�}��,(��9�)�����t|�6���}A���.@ �6U����{�������K�}r�t�=�������NI���Q'r=�D��f�`���?�Y~[�����O�U��m�8,�����Q-�V�w����=V�|�a��M��Q�i�"Z%���k����B#f5�������{���,5��;,���{�w
p��"/m���{���3y����kJ��W�zz��r[�
���������}[����2U��	�P�*��;e�3�����o��<��6O<���UU������#�'m�m���R� Vsp����y~W�'��Y����������j������������*�d�$��4��~�3i:���a9�q�g��-=���-��)m�ng`�ippG~]+M�s���[�S��r8J5,��f����E�}p��L�I�.�]���F�.������E��u+;B�=q������Q� ^d6�'_�V�jy�Dl3���������-�}!�~W�%C���b]���=�Y����`�w�X�u��^K���{���9��"p�\r�P�^���6�-���{L
��({�*5f��9�W��S��#wuWI$K.�`������s�g����hZ�Z���/�~7:����Hb>�]�������ZG�k{�.�C����U4��c�~�o#l��+���~�+I�Jwwi��L��w�z2G�>�9Q�?�8��B�W�^��6'�K���jX�������#��r��
�A��$T���:[�`D�B�����;���/'I��V!���������`�P�z��s���CQDAq����g'"�}������1�\��{�kN�%���Q�yva��dn��t�2f��{�F����������L���k�,H��`)�s�x{
��RS�Hu��m�0��_F��*3U�����lt��/,2�d?X0�����|S].��������������gW2��|�	J��=}������kcp�l����C#�6�{�����f�9�zZz�)>�'�ku�3��N����TU_�����������XK}�6�����g���Q�����_�y<�����Zh������������lP���"����c��s[�^\*b�U]3
�-����P!<�x�m��:j�
[rJY��dlbAII�T*SS���D����U�hg�n�7c������'�l�i��P�c���)Vm��Z�qN(�N">�I8>\�;(�<ye�)o���3���7�v�{G���1�8�������R)���^�bE]M�A��fK�zcW���XU�_��ht�>��_��G
���S��g[�����>��2��d25k���i"����{��^�+�b��$vu�1?��U�����7�����\����E���`�6\��=�!"(���/�Xc���S��)�c���^i)$��]Qb�[�`���@����l��m3�}	K��/���M<�NO	#MC�+"�A�~�x:vq�i��u�Zb+����i�����C���i�U��-V������~O��j
�
��bM�'f�m������������*;c��Y���TZO���j}az��'�]GVW��k|�>WI���qZ"!�)�^��������:�p����I�S���q^��U��?�c��������{�>�>$��o�?Y!D7OY=��	����=�/��G�bu�HT�H�Dd3;��B�H���bN�SH��=lO�XW�#[��jTm��k(b��
�	��#a��Hk�!]����3�������+P(�X��DqG�����Y�pxT��T~)���RS$������K�G�������Qj�	��D�����H�9)���|?������������g�!�����O�D�FYG�������a���������/�f���6FS�TW�*C��@�-g��P���q��\����^k.*0�]fI�x���U���v���e1���k����D9�@�u�
-~����+rf��;T�$�,�
e���zD��|�I���-�3�P�����D54�c��R"�]�������g�������RB���*#d���J�\����R�x����������w�4��8K��,��uMsLN����=�]u�,�����H{i	z�(�tG��j<r��(�/�W���@��8?b�8A��Z��{�
��W�5_��x�>��U���/+�MX��~��,qS$��d�3�J�#��.T��a���,4@���WF����7��b����:���������v�X��dmSi^����,iU$��`�J�F�-_��0��Kl������K�����meF#���-}y��n*�*�
�#���U���y���V/C������)�N{:[����S��*���T�J��U�������b�G���r*�JP�;+�n������	���J�L�I��33���24.[�j�_k���:b�@^H�*\et_x�1���Y/��� ��?������
Id��=�U�A�8���;IR|�w�j���+J��,�E�������J�?-�;��V�T�����}�P��!�.A��M������F�-;��|p����" �7���}k��.��m�������h�V�CZ�X�#�-W����%�gq|�F��es�Y���&N�@WL�\bW1){�0�������Q���U\+=�������#��VBxg����f�}Z,���nQ���{�����jq������eY�b�j�~�����3+���4������]u�$�)k��y���;�Ur}���Xay����M_��F������*)��k0��=Fc��z=��Z�@��|{K�k���Rp����n�m�n�
GXsF��t��#G����e�8�`v�#�Ul[u�w2dB�d�]%���n2���W]��aj�D[�bSbX��R����4�{*�	�]��!����
B���%j������QS��Un���V�'�����s��K�QUez�eM6
�"Vo8�R3�N��W��x�e�r���N��\�d�}x*�B����:�MsNiO5�v�<Q�=���G�2A��vzWY&��V�2O0�����	�
��U��'��:�W_T<@�8M���Y�u�,�g���GVy��M������_��,^|��+T�%��,U�]i���k�Z�D^�o����N�K�+�k��������v �����s��Em3}xqm�@^��^���KY'�:�=c�����2�n�����Wr�Xo���*^�����R /�u�YPE�������K]���=|�
Sy)�����*��!|o1���<���>N��['��4w�hB_h.��n�l�x��G�1~�?�4)��g"8I���T\�I<{*C	zs�����4�!�]���Jn���,Z�r=�`���C��&��R%;�y�����^�~���<��d��@^���r��l<A������{5V]���-��������>�!���^;R����r�s����
8\5F*���;�x/�����������J��	b���L
���y��[��X�CZ�E:{\|�������A�'�C(37��<v5�$�JQ������[!@�;v��c{=�bVze���W��,�I1|(�(I���BV��e�L�y�@�x�LM�&����#]q����e��j���y����r�����b��������bi�.��Y���&�I��=��M����z��"��4��'!.�����������34.,����h,�����'VB�,��w�������p�uz��sm���i`
��v����/�lO���������������c��Pt�|j��4�I�X�I�!�y�*�i���L�0����g�c���EO5��El0���������0�(�'S�wz�&+
��?���S�n�b�,YnWd\�e*����
n����������M�u�����q+��F���nT�b�7o����.��? ��&��u|?����
���ul-��,O���]|L���O>����f-�w��X��x�����_�|�p��B���U{-�h�Y.�y�V���A�)@�A���a����p�����n��
j�Ay@�t����ov�V������J@���o����H��h�[�#���x���?�-y��B��9�^�0G%T#�fPH<��wh�X�*Grm�����(k�c7e���b����%����8���E�T�����������5'���y�~7�\��!�S=�W���x�0���d���5�*�Z9#�7�7�chB�h����	1����1=����c�~��j��8� /?y}�"�%Z������

�R��s��cfb���y���N1�;e��]�TOK�|���lU1������j����S���K+��{��1��3z$$������xT���j��b�i������H&��`�l3����%�����9��z���+���8�;es�6W��b��c
U�E����<uJ�P%�.�|���<&aG:`x�P�N	����X��1a�z��2�"0�m���U���SzN��p�_)�xgW�O��%�(g��D��dMNy�(?s�kG����*`NV�Yr���T�%$���K^��n�X�����D�����������������1�9|�I����e���aG�Q���������o�{A��R�H���2di9��R�v����	�<�mZ��B����b��}V0��8�1M^*�{�&�u�*I������e����Oh+/��}�������Z�g�X�����<N�f�(�$��OO���o���g|�|��M%Vf�:R��Y�j����SUb$��T�]���y�N��M^%�<�:�a�_
;1�J�M���(W���1���������	O����|��^W�0��Q���/x*��!��d3����7W3�S�A���m�T������\G������T������0Q�)�C7��lPO���f���M���i��9M_D@tV��9]�Co�@/� �i����*��YJ���%z^��^����:���[����_�O��H���Gm�F��T�"��R��9K^j�~��������Wc��c��%g^6k����2��m��\����7��Z�Ft�
3��IAi�d,6#�qP�aP���:�c�>��=�������jH���2U�<-g�s�c(��5��5�y@9����>�����`q>+^0����&������|u�����	���`�����]%���w"u�Et[?�[�O�<��AI&,��E�P��0�������~�)yn{Z^���&��I=7�9�H
v�H��#e�`��tv}����s�{3R<�t�@�
 ��)���2����Q��	����q���q?�!c0��\��`��+:��8F0���:���8g�������W-���^7s���^4�w6��d�%����A�Z��<e3��M�\�E����r[!���e���*�,1
�U6D��o��2RTX��m9�������'u���|	�K�,(���e��&^��W�4z�aFp���e�4����+C���A�uCz/V�Y~�~,�n����@���Cl������"C�`<����F^��E_�����6��=�f�����#��;�Er�n�ap����T�O�(�3��80��H�P9���}/�����N�}��<xt�qP�+�"#v����u���uA���C�I���e�e�$�sBM%%��aw�o6��9y�
���pq�~�� ���6���g�����x�yC��l@^����,PlD����~�=����v���V�*����������%�������G`��=~�����<���p���:��7;B9o�����F:\P^�����{j�]���E���5��>�t;���@����@���P^J�%��&2^�����G���n�<ZPL�����������Q���\��Q��@����(����Yj}�3rC9�<G�m��`�$a����Y���T��c�x���Pf��VHr�3��W����{���l��n�,/4]�����JO6>��%�\)���]_�;���=8�z�1?�������TN�n���]��w?�:Vw~�3q����5���q�����X���%+FN����Q:S���,>��G�X�I6�b�'��b
����!��:�'�9T!<8����4)S���A����%	����V����:	��B#��}n����t]����ky�t�t=��x���Y|2i�uJ��������@��,�px�����Su����f"��u_9u���l�@U�L��f�#~�0��0U�/�����,g�sB���j���Nzu�&��6���D2W�8z��U8��u���d��0�Q3i����������;q�P�a������5�n���S��>M�sJ-��w�\M[����8�1?��1p�������?&i���u�R�+=�Y�����r�yMtg�h���#���4�5�
{�,q'�A8��2������I��D�",���������^��owf�����U���?���JcM�����i�K����uY�L6+������]�>����S�9O��������D�R��"����%��M�������j�R�p_�g(��F�2�������:�^�����~^f��������������^��P�0�l��06e�}]��\����S~����)��m�?���������.���f��=��1���#��,�0���x\��
���;�N��� wIE��rl�Z�9��Jr���=�a�]�2?����I3��X�8���j��X���H�P3���� ��IF��x�l%����Ic�Q(g�n��=�3���5�7C9Av!���r�(��\��e��=�'{9K6��J&��������5�^���33����.89�t{����e����i�>���1�������\3���*d���2��s�I��`���1����5]�/�<.u=��/�����\"i��O�������M�Jw�"�Z�.V�����������k�����_n��9"���*K��8&>�3T�����13t��A[��\1b#`��y���s����+��A�[�2�\W(������K��V�����7~���Z� �{.a�����������8�8Y�;)���-����� �P��7����g�B?(��5�.~X��!�?�q�N�����3G����b��,�Rus��b	��?�� VT��#����bp��0�����%4�rkOOS&*��,�m�l��8g�u|���b}A
�N��t-y��@e����I8��fz��ZAw�J��O�I����W���cnAJ��t2�v�w�����^�r}w<yE���HL�7���TZ.j�q@�^� jV�q�����������������?�B�������
���/��B����4���C�J>-W���Fvp����t��M���7�����T��=��X^���K��n��e�u��y
�m�����G^�����m�4���f\�[Sbj�7,0���kKO�0����+g�xB�P���� ������p�Y��GO�x��y���W�a5O��L�%��pX�z}�L�$�^��My2�L���������0��^�n������>���R��?��<�h��.��Z�wS����Q��w�/���E6�������.V~����2��x���_�|2�V�2���(������_���I���(l��Y<��R�b=�#��e�����q�����_UO��'�T�|^�k����h+�F5���_��1���4��_��s����(y3�r��2���hU�7��\ ��cQ����_J�l�)UJ��~�~�"Y�8��d@�-��������(w�2��E}��c���zFhL����W���.����m\�A�5JV	�W��TDOI�_��O�tiHD�I)rz��_)E�J��0nKz�#TV?��

����H
�������8��C��KDIo7����j�4Oo�?��K���h��e���pp���Zc��K��O�k=X������_�\9�b��������E�u�]�/���f��������������oU�����W�|�|��{	CWRp����b/����k,F1�n�]��a����S=.��FS���-C^/
��s�	(��Zi�����C5���$�m��%�|�Y}GVkt6X'��U�,ad|�@ �Rm&>v���������\��������a��*�e�����Jm#��������\�`}������m>R_������xwo����8�Ma��?g��btf����2�1I�����h���/��<S����Ht7^�#���ge��R���E�������w�^q�G��W�Z��f��@���d1�_U��9
������]���W�v��U8�NR�I�N���g�>���V�|������!�Y���0�A	���jfw���e-�d���������m���eE���c�D��Z����>��5I�����m�����m�o�lvB������]��i4��$���/���,�-����{�Xe/����b���A���R's?�k������B�v�\�VR�W%�jAc:�."X��
���������u �Bj�@�~b�l��l��?�G!�����y������V�������W����}}L�n6`e�
o�J�yL�sR����{�G����d!��'K�����;�vc[m��Z^���e������ZVz�ji�1�1d����PCJqgQ����/���fP����
����&�`�R��&���k�w5�YM�'�w���R������m;TBw�sp������_nn��u� ?��cTI��0���b�j�����=xL���T�q��|�E����Hz�
�S��%s����d��A���h��F6X�n	\��U��d����������M~���:1�P�q��Up/% N������hC�>Q�&[5�i���W�
�@�:���JjE.n��F�o~��'�<���Z�Q~P0��>|����g�J��x�BaF����'�6��������q�����!7��('�q��mzOM~@�_��^���?�Y��.����*�~��������X_7��,����u�n$���'�m�xx���xm��Z jB0\��y�����c-
��j��-�6�� ��w�9����i����`*"����-��~T7����MO�A���'��6�����p�	5(�W-�7����������	�@I`���p���?��<x��4���v��2���L��@3��s��n4�@WJ�2�9*T�cS�5���zD��D���8��D=�
��U?��F�G~X�����������yjX�^��TmYu���bnm,L�x���]2�O<n�-�ku]���7�e����8A����g���P7E�Tz6��'��q�%���o.������jc����Fy�v�We�+�>�8xU���v�E2�:*����0����*�<���
����8����8�0�1�e�rGD��p
�s��9>������)^�x�(��@�ayDob.3S?��N�w53��qeL���ev��Zd3�l���gN�����c��&���qI^��/Vx3v���x;O@w����T����r�U��<�"^��L��Rcxg���Sy�p���i&��,J�O+���^I�~`�I:Y��5���u��t=�dr�!����"����=�l�
�.��j�����=�S�������7|@'�
���*�����?>�G-Md&��p��������%�t��'ewob5��1�C�@������n%�\J���I��N��r������T����%Q@�S
�?x�)*�\]-`�9��N��(��o�0���X�rM�R��	�y�#t� s��8.����/
�U�������*QZo����|��}��n����!����E��xl�������sn�a����� ���X�
hb1Oi�?�A�*���=:O����T�{6������^Fy��I���E��#�2-�1u
!������C
�������&O�1PK]�4���B��=EH�����������%��>�c� �5���]�f1�������t��r�k���E5L�3�J���	�����v��xT1�b�B�@���7���!'�DEI�+����V�<1P`aS��Fjv��J�v4��4��,^�����%�@�p�x�w�n1��c��M<zyg������p��121�z���k��fl�a�����0��?�4y��Z��2���������bf Odc�aJF5\cJ����bhdn��m���A������F��V}��T����{�@���s���yypN�*�VMpQ�*�R!S�����)�em�������m8�{���5�~�6�1���d���������b�������M.2B��4�������_:��hA7�X���?l���?�Nw���j��VPs�A��C<*�OQ�n6�E~9W���~�7��S��fl�rQ�|�wC�k%J����������0��m���4��|���b��T{����b\�^��6�[M���U�OT�����NYpm��];?�o�ZiL�&n:���)�c��q5�u�8�\[@'�q?��D�]�j'������4��'[��F�����F�W��(Ij�a��0'eQ99a��z����6���"[���\���$nz-��/�<}�GjB~���np�q�]]��m9)B8/�y�[4�nW�V�s'���-N�+ur�x��!��Q������C��_��F��B�U��QcZ��x}�.�]=<�z�@+��i���+TK'CX;����d��o��S������Ko�s�F�d|K/]j�O�q��?������E�|X��p�_f��XY�1�+5�z����	�;��b����A=D*��b�&��)(��|1�&?D��4<��aX!�z4���R�:8���ZP�h?>���kbyS��:�����],������}L�!�
�i�u����2jim	;P�-�r)��m����X��<��f����y��=[�C�+C>D���P�� ET�����\��?����A6���ZZ�_�w�:�����U�Io�3]h�~�5��h�'�5	I^A�n`t��V�����Qm���4������0�V�gKW������!�;|���+	��/�8����i�����m!�I���Xc���7�)���'����G6�g��pZt�,��LDk��C����3@�8�����ux������Z�����!wc�F��~%E�0��t�N^�Q�k�wF�V���Z����>]�V2���b�~$���6m�jpVi�k=����7ttu��.3iS
�"ng�\�C���!�1ky��7.�p����'���E��-��H�����2y���a�h�q�E��Zl��1���5��+�u7u9��D����E{u��J	_p����9h&A����zS��]�0|��Gp:#7h~�CU�S��|���U��6�-�Y�q�?]�{V��o,���]}�H�d��m��F�j��p�;��d��������E)�J�C^rk�f�Y}[b��{�!�8������sLg�W\���bS,.O7����Xn�I���������Q�'[����o���R�^���k|��6Q��-?�Z}tP�����J
���il���[6~�c��T�O�tQ*f��B�t��%L=BU��L��!_������������
q���(���<0Q
����vg��&���
��m�Yr�Nn��_�]�[�7����>!�(;�n4M�( R�Pk�0�l�Q�i[

td����h�h��t���j	�P�x�C�����e(	��*P-��t�����o�o)mV"(��]��M]�
 #���Ii{jz�z�A'�?3����TF/s��P������?R6��l����8�nk�������_
L��*�l]H�E���k��6^ml'on*�l���rOx�e����r�c�x�����^>~�G���q.��h�X�Q��z
��[������W���;�-�l�J��v<{�^#������`����6����V<BBc��N����N��������}��(��U���'�U�j��%.��6z(`����Rb�)�t�M�����Z*�#e�)|d��-�r���0h��h\�����g-�����o�I9���U�ox�"B�(a7����7
���z����A��n���*�������4��[U����
&]S����,'�����a}�o�Gweu�nL�?���P2��s���,��V)���������x�X��[��}�se�Y����B'�D��H�Jn�:M�R�'H8	m��KMg��O3��>��r������@x�*�<&�,�\
6LU�},5���H��I'W����������,n�e��Q�X�F�� �y[DQ���':��N�������Z/����Z�	����m,���2[�>�������a�
,yzC�D�9f��c8o���q�l����������}�V������m�c��� 
�r���uSe��ck{Q�1��Oq��2��"���+��4.��)�?��[�//�{�CP����n[���h�u�,�m�T*��B,���%~���`7���f�����K[N�,��ELX���z��uuXZ3U�`8�����vg=�o{�h�kP���!.hRt{L��x����*U���:%��_^����f*��K�-|������n�]�����3�c����%.b�u��&G���p[Y
L���V��5�I��y[d�a�C�[�������ZR�����tQm��C$DN�u<6\���������Vkb�QO8��0�p	�����x���`]����#,3�4l��HT��S�5
��'/��)E!3|[��F[a��My��
/e]J����
�<�}ZG�u��#��Q�������G-�f�{R�v�������F�Q#�.���Z
����]5�B�_Z�1.���4X��f��V�?Z�����AYq���������1I@5�Y
L�����S.�B�G=���h>I�~�%�Mu��� )�E����6������:��~CI����s�oY�P�+h���<2�W�[�k����a�x����%(�P!��.LZ{���de��[�T�����*�R�D����7
���-�
'?5B��4M���F�Ud�@/z�R��N��O��U���Y�[��Xm66��-�!t�?m�)m��������2�� �����f#��PQ��b���x����Xf����N��(�,�x��I<�
��\J*%e�O�	.�+���.��J��x���l$���K�r_��3��d�]����rfF���z)BF��RGI>��V���`�q}+Ek
5�Z���+���M�s+C�/"���T��1�@#�����+uIf��
.�l
��w�������$�+K����{�Y��0����v��+.��p�	��	�r\j������K���bR���B8�h?&�y��J��:,p)���R�$�1We��vxmq[g���B�{�ZJy��O��TYP�����40��g���n {�)z;�f:��^�U��:�>��p-Y�BhF@�����J����1������i��QM-���NI8�x���K�:
NU-uF����[��OQ�2c��u����i������4�4���8r�n�	rJ�����Q����/��9]msN,���]#M�.$k��z�[�fk��Z��1n�����6����}!b;�-p*�l�,��/���
�R��+WIM����?����M3�%;0a�'4�KX:W��5�1������|G~�X��8~qn),>�����?�z���EO/I$���#���b�����&)T��&���[�m�ZG��v��6���^%���@�P��7�QJ��>�e	��>����xR��%Z��o��b,�n;�(�o8��!}�;��<u7T���F8fw�t�4E���uC�+�m5��^�@�@Q���I�@~����6Q��U��Ok�je���k�0�p[*m\�?N����,��56-��%dsZz���������������U����p`�Pc�Di����������z�%��/�������@������u��)a�p�f��[��_|nX�D�_���;�V��<�B��T4�k�~����j�i�8e�o��Z�IJs��a�V��/@x�n�.Y�#��U;�XoGo�J�)Z!E�:=������F�� d�&�nX�Zg+`+��J�q�:[��zwO��@W2�����fj�#=�f`�d�S��|��+��lz����V�r���t��7�v]���$N�t�B>��p
�`���;J�vh��oL8i�Vk����O)��S}��T
E���3U%��cc{XG=��?���9'zA����5{�F�� "��^�����}�S���e�1"G4�C�<6 OK�����K����j�����~���7���jL�[hwV�O�:z��Z�D��M--���*�����:�F��������AC���j��t��"%�
���Je-��{	��d:����p`OLl5��xV_���l�h;�~a!\�Z3�KI�����u�6�y��U^�k���/�)����
�lM[5S�c�����H�T���4rnb{����i�e��c�8a�5�T��WW��.�8����>���_X
�Z���z�~�T�%M��":�bIa*s��������(/���9��qn����3z�O�y�G�!7S�����������R4��,�'6?��-g����d{y��x����;��Z'���;����vG�-KHb���$���^�
���+L��H-
��Z�ty�
��!�
�,�kV-���Rg��EL��.��)#n�hF��U���[��t=�a"o ��n�t�`|����H44�X��������
U����+X��xk��J����p�&q�%,���bQ�_��k�JvW���5�1{$��^��ZCE������E�ls�bk����!����EP�+c�U{�N�������W]�����`������0�Q���;F��4Y������T1��jj���C5��vPU"]��^5[�1����g�VN���uh�������o�B��&�~������'�
th����dN�/������q���3����h\[�x����f�\�����O��2g�K�G����q~�J,�BX9���b���������PX�����kR�
F;�a0'�i�tg4���'	�ZZ*�8��1�N4���'�I�G�;�H���$����W�_�_)�r�=20���\���2��V�.5�-�����]��j�nM�_m3�^��38�������:C��`G�2���q�g�����;��$�!��Jki}=`���
�T�I���[@����0z��^��@tT�cH_��h�ZB[q�	��7������!���M�9F<<����sM���������h�*[���Z$C9������H��R_���PF�r���DU
_!�t�N
� >(�bf��9�k����p����~:��g��Z��
=K-���:���<�=6���������e���w,�i)�o�0�`>n�'Y���E�v7F�
�
7_������
�5�z[�
�m���T�J����k�8�����������������V�l#,�UK�����*^���S�90�iA����Q�$pn���>Z-�����_P,%�%J��}P���..�����?t(�8�L����':}�r:�3�9KxxBVx_Kf	m(���'e�2���W�v�fB(��x����7}��0�������@�xwy����Q�V�&���(OOS��w:���3�B�R���=p�k����C�7c��D�l-2Y���V��(I����#���^��0(w��iD�
1�M7|
&7�0�(8B�W�J5�;�}"bF�SP���1�#T��H��%�l�1U�������~�`I�J����:�����sXl���MF\�������#��9���7����i���UHS��@(wv\@��l�����za
����0[�P��2�������"�mR�vE~
�l!��!sJ�y�Qq
Q�P2o�W�{�l���[���+����%����xZ�a�z���2^qj��J.�B,����4;X�M��r��G���_�z� L���������?���-�8��
,VWC�<��.��#�brX�;��c^%���&6F{I�A�����p2z�F�Ht-��R��1�G��0�0��R�~�!�����8ed
v�K�U�{�:1����3������S#9�(��)�MG�)%$��u&��	:��Sd�*f(�����P�+#g����3d+ ���6��C;�����,'��)U�n�(7R�C�q��t�o/�-���cu�`5)x 6���4Q���?�S��^h��2������i�:���D��l�,o�d>������h���,�r�'�T����Kp?�?�54���=\�v�bB�v�=����2����:�0
F,
 ��*�>s�yv��Mq�R��X�
�u��?p���wToQ��#�����b�8�x�W8�[��_�]���yB\�0 �/��}U���6�K`
3���������JO6,;��W%_Am�2^����r��u�����MS}D@jVPb-V�Y��,�Zz�qk-�)�o�������U���6Z6`)�pZ*3�<m��z���M�)N�L2�/�T Z�����d�'�o" ����<l*�T�	$��K��Zq�
Ge��NGZ;�LA8r+��:�����d��H6��p�H���'<h�����+�o�����/�f��w'55A��-pOr�C����zqH��F%�����B��` �M��E	]{M()��]��{�T�]%�,c�
���c��t�bQ0�����A�����x�\����p	8�	DFn:�pR�SN��.|q6���M7<`XX��Q]���/2o�2������w	T��9.]^}�v��_t~ZuV�6j��Nc#�L�E|���<���g�������4C��-��� �W����M>Q6�Bc���,<t��M6M��X�P|�/[e���*���G���IMT�:y����:d8nB_tE�3������k���cg�k�}%����� ���+cM�j�=�K��U5��Z�`��Y1�����i�i08��:1)3lV��^���R<���+s��b����e�,�uoD�V����!5�8�fj�pHP�K9�����S����x8�xV��k-G�����q!��c�������%�J�G�j�h�\��H�Vw��4�}j�.S�!�pl�i�a��=���F����1�e�{���*]�\S�-O07�RY������8�~
S)yUO�=Kn�/$��
��������
��6J&��J,e�U�9�u��v��k����j<^.�2�&�J!��wkm(��n���S�f�2u������[�h�R�\v�39�Y�jWj�V[���Y���)q�&�m7���{u@��Wxa^����-��K����:3�+tW�r1�����!��^]�|	u<�L"�B[��T����|�Q�l=~��O�6.qh�|y�.���VK��V�/�����R}��=�X|5v�-T�`�S`��n��`kQ���u������7y�(Z7A�FQ&wq�y���������Aum�:&����|�]4R��TC�!��X�Xj@}��3��i��CF�����9���q��e�1�?=���^3#wX�n�+A��^���9I�u���z
NJ�F�[)�����p&X��q�����p\�S
��*����!���.�3
M@���colRLV`!�����=lj���<-�BJ;�x)�_�2�.:A�9�����]�������[�HmZf�������a�V+�w�8�Q����
�uT�7���,�����w2�sYY7�t(� a�!i�m��8�O7���|��f��#��Y�����g��0��'���?�a�*���;��U�PD���kvpQy���kB�o��!�U����0�
�KSl����3��Gpj�U!(<���$�����%:)@��F<@�%���!)C��,qv��OT'���k+���A��!�c��S�E]�D.R#��~�F�z�z&��u�\y���xy26����@����`��kU]���dA�M���1����	y�Pq������a����&Vw �y��Zk��w���R����m�{����'���)�����Z�+�>H/���\
0�"�3\�7[+�W�����t�
���v����z�=O =����X*fs����k
�d^��ai��AK��:���"�������Sa�P���i2bb�6�;�S�Y���:>+��FA�u?����S2�i�)�����O&��B�r�����eU��fk.F:����Q>��v�|E��N�>�1z��i���P�
�����}������GZ%����V%�����;^����J�'cjS�oQN1������E1��M��Z���/���2DD��� ��0sT��	��S����B���GS�2��S��?,63�i�N�9.�	�(��W�2Fj�Dq���A�������	]	��uR!��
�������������_���oZ����X�Zg`�G���2g<7�V���i����b���(Y��S5�.F���������fJn���:"�U���OT��l�<em�9k����R9Q���T�3�5�7JK*��X�y�3���E��(j8�����Sy�(��2���7p�-����B5�9:��l�����Z��)U�n����#22�.����r�@�!��kD
Z���LJA-�c������q��:� f����v1'�"����I8�3��5� �����qgHK������P1�a�J���Q%)e���3e����R����n�%�����Cc����n�EhL#<*���y�"�����'������)��i�^.�+�`�5�<q3��58X s�SQ���4ZF�J+�0�����&*�"`)��������C��k�tPo�e}}��7�=-��+���������>��#����ue9q?������L���\_:��j��)��N3�>�d��q���-�$F��^glHOFi�U?��lp�[P�=��8Y'�#r�n�y�4!��Q�-�t#�U�e*5������t�$_�	���;0�
��F�����$E���8�%�4i6�-�i��n�0��jq����x�T��5��� v5K+$w��J`���|����l!����<+���WT4e3��%(!nS�c<�/��-���f�����!x+�zKM��	����5lX��+�
6�u�6��7?�
q�V���g/�����St0���w���b��Q��`��DH`p�E�B���*@�<�hnJ���EI��,�z)���K|k��Y-���{M-_��a��W[��E�Ix%�'��������}���C�&� ��Q�
nL��b>�3E����2���f+d��&��o��?�`t��%���'�nV�3��5��Z��|3.'�+��G�Tm���u��lH�Z ���H�3�@==��C���b%�8M�L�)�<e�G�,UZv�� �S��-�_Ne��
.y���1�A�	�F�
��K#��
9+H�����)�;f\)�&t���,(v�W2����m��'"K'�i��@����r�8���v�}Hl\E@b����B�m�����0+���5�=�����"-��	����j�9u�hAj0j3�����"���1�%��(0���05>{��o�+
�������|�L���6�6�Pq�/a�`���5!9|{����x���z��X�S29uc�S����w$��
�Ta\��N��x��D�1�1^����!:���e�������Wx�����uS,�1��,Y�qgO+�����H�_,���n��-��������OB���Z�lj�{�H���J=	��H��'��n�AX�vl�c����6��Uw%}��������t2��GL5S�v�A@���)�7v���!���j��EeAI��jh�Z�N���l�����)8,Z"��W&��<#���j�P�7��To`�Eq�!�1FS{������R>�PA,p���X�������r]��Tx�������3j���+��B��:F!m���>fzd�wH��c���}�Aea�r��k���>��Pk�H�A�������9]�/?��b@�18���}�K�������,v&�
�����X!��uu�+��laB�w��Fd}8�Ww��w������`���O@�,�fI;�Xv�K�
G���":]���&���ij����m�����C7���2K������<��������������A�0y�����4?"!NX�9���</Kv?4�p�E#:�/k����������Axj������-$<�c���C�-.���1��4��L<a�n����D6������������85M�W�Qs�d�P-E;��)�+��i���m2��&��35�0�o�r������m �T������52����X��D7�uW\3	����P���8[M�
k�+>�D�:E�\����7O��H��H\jN]GK~���L76��~�$�L��l��/j%!
�JWp�$���Nd<}a�RA�������L3����2MAk�5�'�6i�`���.�o*m��8��m�9D�W��Dv9�Z��zA�+h�����f{|,�����g�������I&�nk��W�E���7��2�@���P���7��K��i�.}=���&�< �d1�.:s�n8u�U�Bd��l�
#@Q�J
R�l�~T�`���[7�;>���U,���-V:y�Y��u����p\��,J6�M�V��0��f^���]�
�h3]�o��^$]�t�))�s ���q17��X���p��LL�F����E�p�4��#|��{��]_^C�Y���Y5�,��p�T�|]��O�}!���nX6�%E^-b��HN=_#geJ#��a�b�$���`�L��*P�Z}����E��G�r�+
�4H�.�Gp�qf��Uof:�4L�L
�)k:Q��hC�	�d`�1����
�m9�|\�W?�
J��F����:��S�Lp�r����@~Y����k8���6����r]��C�8$2����ZH�
j����c��3�K�����j����
�e�^��l<��L�&x�����9Z����qL����	����d�F>D���]m�����,�f��#�J!���u����
�Q�����f<�D�@���R,����u�?��W�GKXC�wK_��(NT���X���=dWTm~����e�������9�- �>������9C<3���z�Q�P=���<.�� P��j��c��49@1�C�������c�`�p��1���#-b��%�Sg�C���,�%�~��2\B���Q�����s�/��n��nZd�t�p����!�6S��mr��(u(����iS�3��T$)�����A?����f�f�5x���]��WM5��?.�3$����+qC��[0a��PS�x�4�D���d��O?G�������zE���*���yb#S<��|/T�h����,'F����E'S���e`�d3)$��
����$��H��cI��nzf�LS�v�7��
>7���*��`6C/G�(�"�-F@�r�����|�a�,�b�����W!G�>��"�zT�`XS�2��%�B9$4������
���J]�L^G�	�u��:�x�p#^��~J��S�����Q����Y����E�9�
�PKLA��(��u.�`J,R?�4N�tnu�W
-�����n'�ul��������_B-~���3��\Fn�"�����l�������HA/�c�~�	N�W��Fa�xSpj�H{
X��u���M�A�u�� h�OA�A�j?jBO��#����T���� ��b����������`U� ��KLV5�'`����N�Qw�vs���+������\nz��:HNO�z&,�G���HL��������S_��fJ��`�/��%��5�������L>�ZE�E������p��;Wj6�_�Hr�!��	.����c��}%��e���y�Q������A�j������r�M�t��
P�D��<(��"J���>�����9t�d�I��6�"z��"b�(�����r�����y��p+���i�	��FF��������5���dp�Z�i�Q������9UR����M����=
~s�'"������hF���P��8�*����n.����at@��/~�W�.a��Q[�w3�H�]X�H�����"����v�x����[�b}q��$�����Y������@VUh�&d�nL�h\�E���fxN�]�1D\x�j�I���Fd	���T���m�|w<��=I*����K�82�&&�ix)�x���Jj�g45��}���K|�7QI-R����������z[�SW���s:�Y��c����]�	[-������45x�����\b�����ev�.�Mq�F%�Y���������&�^�z%%��;�*�3�n�)-e0���f
=�\�#�@���@yA���hj����c�V0rm���x_����
p#��������7���b:dM4��i�����?)�J��v;H-�u�i���]�����z:J�Qu&�M]��FH�E)��,��I���&���an?�x�N�$�K1`���e�a�^Z�c�� }�����y}HP
;���!��A�,01K��i��Kq��a���I9>�����-� �I�2"�� ���B����b=�{����s3��}8�X�nbS�:M*U��N����v�,cN
LuF'K+�;YC�'\@�V�1	���X��	P;�������U�	4J,p��5���kj��KT&W�q��,�A�c���(4K@?)��fs�d�������Ey�c�V#�{�*|�$N���\��0��9�`CVw��F^����!>x�Hvy��s�Xj0���8!F3����_W���D���s�}R�8l)����� ��E��R2�����z��n��������up����(��)���d���f���U[���bZ]c��SF�.,s�N��:}A����nw���������F����m��u�U��d��h!\+����9�-Z��x�t�L�O#���"}^������K��&�B^����Y
w�jH�k�fl C�H�<�q�E6��B���QU2�Q��)Jo|��lD�RG���)|.�[�'H�9uQ���:Mw:\�'Y(80G*�|�������d�%����S�ph���lGu0hOEu�V��H���[�o-P��)�q�8�'$��1�T'Q/���5	���W%���#�f�������-cD�e������f��V5��3�(r����V^������������uT�T!S���2��F/fW���K�s��8���DW�	di{R6e
m.���v�Z��}��CuE���������iG����p��(�8`or�z����<���x��EI�������^����f�8��q����`��y op���3��iu[�`r���m?�������=5�{���cvh;�SH����v��Z�Q��������g�<��:@?\��I��NW��k��:�q��8����.i�X����|N��;���s��DZZ���O�����q2�����Vd����� ���jH�IL��%��%�����2�3����?�Q�Vs�&A���~�T��CU1-�=J$��<p)���8����K��1��r�\N�pV�ki\�ir\Y`)w��,�#&�7SSd~�2��S8[�O`���>m%m����Z�9�>��(s%+{���O��i5o�*!��@�C�K�G�rfR���p�E���O[�Cm�� �?i�������kAm�G0f���d4H�����������n�[�|��+�=��$��am�%����ZGIR�y�E.pQ)�3gy��F����8{/��O�����G
l"�<�+������*��QJ�-��x������\���z%�8--A�^B�y���	���B��Z���
Q[�5��F�-	������������� ob)�Zp^+��<�������K���6��P&����^������E
JF?�|��EKF��9����9+�/�]l� �(n������>����PK�</�>�nC`O�M{?�S�*(�TzR����h�V�s����e&���|�x47^c�b��bf�2���E������z���)	$O��/-��f9��Z�vO'���h���w�L;K�3����������4�-S����sM�����9 JvB����|c$]�����.�����+���J���yTz�1@�X0/[FM���=�uG�Sa8�i�n�b�X���V',��	u��b�����'��ti

���b�Ul��O�g�F(��y�6����'�a=���R���f�O��y`�������Y����7?���Q���\��9���=�N��a2�L��6T�'��^��A+��1�@��4S�q�*��k�����QV������=�;�s$�=��T>)vr��W��<j��T6=0z0��)S�DH����-q������,�
������C�T�fi��Q�4��%�fy�Y}��O�$S���3���v�c����<��7_r����<kS^d��1����e����Z:B�����;�������OCY2�$�����b�M�bj;���ilGt�V����Jgw����Uf�?������ji+$�Mo�k���,�US�t�/�n���	��M>���s�~.*�_��� �i�f����d�AFd�rBJ���^��7�q�������<��aL���K����\���t���$���Z����$H�M�N���w��C���\�1��	KY�����������3}������!?��<�$A:��vc4�
�H���3����1��]Yy��8���k���3�a)cx�t@�L-C���\�P�E��?��f:�v1����s�t���;����o����
W��V.����vd��|�"5\R�Ko��m������9XR$���_�Z����@J u���.�����N>��@Q���Y�>����0�tZ�	w����Yd!&�X\ ���\9k�g������������������^���������\@�Z$�}����{�{M�v	r�{O�-���VV���BO70��i�%v5����,6�G��q)n����mw�-��,�2���B�?-R%H�"�Z�����������P���^|�9��M���
��>A,����z-�u5
#30Boszormenyi Zoltan
zb@cybertec.at
In reply to: Boszormenyi Zoltan (#29)
5 attachment(s)
Re: plan time of MASSIVE partitioning ...

Hi,

attached is a WIP patch against 9.1 current GIT that converts
eq_classes and canon_pathkeys in PlannerInfo.

Also attached is the test case again the slow query is:

explain select * from inh_parent
where timestamp1 between '2010-04-06' and '2010-06-25'
order by timestamp2;

There is intentionally no data, the planning time is slow.
The currect GIT version plans this query in 2.4 seconds,
the patched version does it in 0.59 seconds according to
gprof. The gprof outputs are also attached.

There is one problem with the patch, it doesn't survive
"make check". One of the regression tests fails the
Assert(!cur_em->em_is_child);
line in process_equivalence() in equivclass.c, but I couldn't
yet find it what causes it. The "why" is vaguely clear:
something modifies the ec_members list in the eq_classes'
tree nodes while the node is in the tree. Because I didn't find
the offender yet, I couldn't fix it, so I send this patch as is.
I'll try to fix it if someone doesn't beat me in fixing it. :)

The query produces the same EXPLAIN output for both the
stock and the patched version, they were checked with diff.
I didn't attach it to this mail because of the size constraints.
Almost all files are compressed because of this.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

Attachments:

9.1-planner-speedup.patch.gzapplication/x-tar; name=9.1-planner-speedup.patch.gzDownload
create_table.sqltext/plain; name=create_table.sqlDownload
childtables.sql.gzapplication/x-tar; name=childtables.sql.gzDownload
stock-gmon.log.gzapplication/x-tar; name=stock-gmon.log.gzDownload
�Q��Lstock-gmon.log��[s�8����+���Y^u���v�]������5/,��$v(R!A'���sR��v�f��|q9w��X��U��r�?�����vV��}.fI������y���Z$e�����f�5���f�@��Y���"_�z����������Lf;�F�z?��8����:���U#h����f9��U��`���o������H����uYEuY����W�f���v�����?�<
����(�����{�>���������0��?�`@
�N����M������kt��j�������S-c��BV�����?�!<��_�� �e�Bc�}�t��~���6�E8���</�!�?���9c6_�W!�Xu��Z�}�������S,����4J�Y�F��#��9�E��������&�A���9����F���d���6R�h#�S���������IFI�����������"t�|��w��.0�-p����9�<?��(�#�Z�c��3<�*��nY�E��5l������O���e��CsT��_R��������qN�K���y{1Kqq6_�7w�]����=���������d��\sE��o"�����u�����* G!�Y����QV<�U�����]+�+�MT�J��������j���]���w*�r;��}���W������1���M�"�_0=�|�,���$�,Mv�a�e���0l~�$�P��_��;��"?�������,�����DU`�s��E��BW���<���S?,��dz�?�����-29Dx��$%G�����/��[�f)C�Z�����)�J�V4�*��(�k�Tb���X�
���*Cj��� ���N���*����������^�����0�0��no������m�%p7����A^�d#�)+jX6C��OX��"�	���x����o�s�E�<w��M��r
���}����(��%��a������v�&���q���7Xe�'Qu��3�kXsCt0@�'�{�~l���u������z�prCr�3�,U��g#�R���������\�[�#���Hb�������!��`��W~�U��,�7C����-�i��:jj�nre��D������}��K�}e�#����h�'���Z�C�7`�DO�wB�K���l� ���>��_���R$�����	v\bC�`��B�J���w���E��|�z�:�a���+��o�8�@}!�����������_��fN����c�Es_�/:�|!�t�Ku���<Kc)(!����.�zV��������?�QV<��OU���c�t�R�x����X-����h�����`N����n+�
������!M���o�Q��tz}j�DOZ�{�o��)�`��Hn���4*��'i�s�>Ub|x�;b�����K�To�<��].�99!�Qk@X����o���?s��	�j�$	��L�0�=�k�gy��q�����7��g�B��S�	=�V�06%��g��O����o��{�_�5���mW�l�'���6X2�\��$����|�%����73�9��`h����{_���A�gN��K������/,�Hy��X���A��}�S�����w[����
�;�K�h��{Jy
����)r�=��-���:��t�Q�X�����i�6��~)�����!��C~���a��C}t�����-�����u��M�:���urF}h�N���3'��r>�
���b]^mcn��9�������Y����������?�I��rA��m�Z��0j��x^���g������:z��������P���F�{����1g^���S����_����`3���\f�����1��x����b�v��U�F����{���������u�;C��������������H��*`h7��H�,���}Un�{,�2���D��3����a�e���f]gQCr�9����v�D��1��/02�Fp�c�0��Y�)k��D>����G#.�
�\�W`r�q�&�3?�=6U	`p!�y����+8���.g�������+>�s.nv{y������0���).�(Qa0�yK�ee��.Q��Ej-{��p(H�4Kb)"U����a��)7���1�V�N�%��]#cYr4'\��;��dc��GG���EE�@l�k�_���,o����3w��`�UH��a�{�@��_E~&�o�>�B��]e�-#���"W���i��4����{��hG�fwx�Oo���6����-�t�KE�Q�f��~�gr�N�D(�{��`aU��
�}Gq���~�UB���0���Me�y�r!��0^�
��c�>9��H*��)��x�K��1R���,9��Z�]��D�	����pC�I���@1�Ck�	w��v���N��3�3���	������2��=7�jE����NxW!����c{R��)�������P\�J�s��]�t��>��!u[�������(���X��:p�s:x�i�"��+�]��7�D�~��oA���\LV��44�\�IXn�1@�%M�q�5�t�_oc�hI�y����s���!����[���9��{��1p���[�:�����gn��:OPPqV���*b�������2+R��j����0aa�r�����&+��V��m�`|:C�V�}El2�X:v.����[�h��S��M(�}[����/
&��d��dy��D�#�}�j�d\I�^7(7���D�6\+.�8��BU��
l��,_��T�z�"��%��#5����H�kzsmv��J�U.�
g-hF�c�a]���Ej'�
�����M����
��r1�O��:�i��ty��,Bp[�7d��]V
��������A�����]R/����*����h�O83���9��h�����J��Gk����l�wA��h�&l�uC:q�����[���`A��:��9i�^m�b������K����U-��{5��sR�*%���S��$���h��{fW��AG6��m��D���N��K�A��	h����J�Ls\�����Y�)���foO��1Wx���u �'���~v��r��q�l��Ut �����,���Q�<����sc��������n��B�y�
����mIX�A��#�1��w���}f��N�j���3�g���uy�Gr.�O�������V :Z��e����*K�����Nn�;f��l���t���.�?[�����R�����c\g�|��,������C���\�u�T�9��t=��H�������t���7�q~��9���>�R�|����)�����I��=k\���SK���>W��D���0�q��N�����2���d�`�8�rU�����h���Y�`�0��p��3���
��M��,`L8�A\�����*��7*����Xwo�\�������O��D�Qd��f�X.���?H�?���WS��g�.(���Jq�k5,����]�����������(�-��l\M2��W,�5{6�9N�12kE1�M1��
0��x�	,�7v�8����f2���<��K�M���4v��(',T�}��"�u@�e�#��-�6U	S�K�j<b�l@u��8�P���!*�hJ%-P��b������*���9��*�f��C}��i�]kgL�1�pe*���m i.hm��0���q���#���<l��?�����={�|R��TG��m���pA�����\%����V �������%K�b���
C�.�GS��g�(d��x�A�*��M��,4��E��p0�N��<����(mG��w�@,����-B�p�����H"�[��bS���*{)��x��������m�/qT@N�2�r~����^�"����`o��p���F�"�"�
�����4�jY�e,isX;+�x�����v���@�	���HcV�����w�����������U*P�
�����t�k����r�����$W��i)��;e�%%��B���W��1�*0��u�	^Se{��P��&�#��9��w���_�������g����%[����N_�
,$��*�+.@x���p"i`�$��H����c,i�Xq�p'[;S����Pm�]�`����A|���	�o�n�����{��>��]�W�0��E�N���F��l���^31���I'y�^:�J�.��S�[n��^����B����h���g����h����^I�sg-�4\��@��&g���F��\�:#t��n]�K:������c�����kzu~�2s��q�u0Y	�l0P|`^��W���L�H�US��>t4��B���Y}���8$$�w��*F�if�'��%|��g���x[�^i�����������m�cb��5&��<�����#e�$\�	���
�~M���(�no��%�5\�����\P-s�lb����C;�A���������f���-��A�Lc�T�=���#)��TV���x��w
��((m���$�i"�mN�����E��6�7�Y�H����7����,��D~���WS�0�e�)���?�������*{"m
�$��
QK���t�%��bk8�1�|U�������s�s[����[���*������U�E���|�	���Z�R�&2N����X�ikmh5O����z�D����}����������O����yn$7ap ��3-�n��c�����������l.p�h'R�
����F�[��7,��q�M�6�ho[�@��h�R�q!�e�;kS���H����g*N>t*pE����3!��������"�
�����J�L��F�����g���W������no�:4�`�Wq"/��J�U�>�#f�5q���~cw�>B@�O��x',�=MX�h�>a(�-�5A�N�?�?�����bNO�:+����~e�!���	n������:����x����%��2�?��u\,v��oZ������6I�/%Y�:^H�����O��9>'3	L7'���a���<��U/zX��<��'��RI�T�F�����;���5����2��B������[�9�������	��*���E��T��H���cs+}�T�"�F���0U@����MD���^���]�k����wE�'�8��AW��
��Q[�0�=/0F���~X�I��`��b'����k�d8���{����1X1�z"R��q<�1k����Y=�Q\U1g&i�1��<����)�6[vd�e�&R��4�)�����,�	�����c��[�6�}�	��"�p�T���	��_�-��o����O�z��P'2n
<�p���e������!wYzq����J������0�:5*,���B���{�������T'�dYY�@���S�k"�/�+ML��}������GD�R5�`�&O���$Id�w���\C9��I�����:������b�\5U
��y:�����C�>�"@�.��T����	HS_u�o=7�����*:����2�Z�����4q07������j���������h�&	���@+F@RJ�G��{�������������*�qfMbuS�����<��������P6�$�@����A��X�Se�*��ue��|���5��X-	�B�����lB+&�Zi��0��y'�Rgb�mN����L���Y�B`B����S~�ci��K)�
�\z��8��"1#B��k�<���0���S�y�,�
��C���7Q'�u,�������W1�����|^m��&]:An-g���j7`���c�����H��hOH��6D�.i7�����>�X_�>��k��������$QU�kP*���NVH���Q�JD �2{5��d���A��~���#�U;6���"��!&��7��[�X_��z��*U}�+am@��ge����Ae���xy%��2��<�$��H��)�0Q��Qg�[�SBh���������������j"I���S&wx9|e���~�FyY��'p����C����?��������'���5��w�&L�4���4�G���:z�}��y+�����ou������z�,[
i�����,��eiu!��A����IS����Mf����?���d����~8�����x?���P���&2P%�B�m�J�j���"g�kD������\N����E8��������F0�����E���<���
o�u��C�1O�h����I����;���|y��(�N��[�nqHb�8���
�Q����J2�p�H��hZh"�(��KwF��'����h`���`�*���m����N��'t�V{]�[�������=n#��(�y����
���wJ|�.6P~iOa��5U���m*�U�iI�)�v��?�I2�L�!&e�Z{	3����T2_"����\a�83�]��<*#A�rb�3@�n������Q�:T��0����k8�j'��'{y*����dxo����H�,����yAx
�:��u|J@��d����.$���
)����z�X���q�L�,'c�X���q�l+��]��d��3�]Q�<'2�����`Y�v����F���?p�DQ�6{Z���5��G`�C`�+��$sn���E������e;,�;��6������
��o��<��a���oA� �i�����cq���K�
a0�?I�|�!��;^�N��I�K�e9��n��Y�������m��K����}s�~�n*�	!�����L�"ly��*=����M���{X/:�&Y
f;��s�+�,C���A�W��K��M�`��~8���%4iud}���E.��o���"|0+�J i40�"���������`M0o�� ��L��6�t������o���5Gr��78'�{y��[���f��	(%��p���w���=�Q1^��^�T<.w�e��V�� [�#!�=��p���S�8\j�@@�&��A��V/h�f������:@��-�c�7�@B=gyR��A0s���
���>
�6N"Xd���GF���������������/OtK�E ��bf����X��h��W����~� ��D\�er�P�iPvw����FA@�>���@�h2z�@��q{�j;@�3t�� �0D���������6�����_L��'�}m�ua�[i���,8W���0B�Gw�_2���p����
`n�S._�1M����'��Jo�R�z:��'�B��"`n_�1����������a���?�u"��p�/������=N�a������Y��5������""����5���:�X�eF0�����t�������p�u�T$����a�53S�����1C��8��C!1����aI����������������P�l�.H�XLm#x\�]`Jq~�p��+0������������y����U~�c<�w�!��e�����yo�(�w��eC���f<��h�D��E_����������QKg���/�QbAe�"q#��)��� �&��� Q�r�%3�e�5���>���wN~EnE��B����M����,&'���������]���5�F5#l����Z����H���`c&��~u8>t�����:<-�QG��[}C.���t0���BT�T��j�^��Eb�RN��T�u1k'�%/>���#q����<Y'��f]X����+W���-A��V��`9�0�3dD��R����T�{�?�$�pwqv�B<������G�`��
�-��������X0�ifn����\`��Z+�y�~�r��J�3�`�����f;����y M�>��)��z�5�g4�^�G��J�#��_o�n3���F����p\n��a;H���V�r�?���HT��
�M'�a�7�>������������7�4+��~f����,O�P~�����>�F��VUC�pE���&,�4ws]�@OE��j}:����p�n�Q;O���Hi��N�#�����x��@Cb�g!��|���c���>�'�)��~g�H#&��������E��0yE����X1S�;��M��2c63�@jw�}�x��p�w��{���bp��z�d�v@`���<;�S���ZftCR�� `�
w��,>W2���~���"���;��M��3e�E
l���U�r_���5�����h���y�Bh�?g���,�
xK���K�l�r��G����a����H%�5�]aF�8��#��B�[?�X$�C��3*Y�����&�����+���J��5�d7C���V���D8��������)V�X�E��|�������`�j������1wYv:`�Utt06��6;�J�;��l8�j���������r��p��f�-���!y�p�~X��qL1?m�L�q�&7yb���Y���^o�z���{����60����D�}�����5��T�������wG��z�<�X��!G��,,$�Q���0�~9�1O�����L�����2��v����4��n2��7�U�hG�f��hEZ,E5[�_�"}�F:<Cpt�������C�00���5Gy��a^~� �~{m��o���s���:�����f
����V�0�S��^�����}�g]�(e�/��	������������`���8hTA$�{i�o_�P�����@�9��]��m7B}���K�"M���k��)y�2�zU��O�_����e�h�^�{��pdl�������O`��5�V�`?�����c��l��=���������D��e��}�%����<�N<�'W�i���"Hc������]s�������m)y��j���)��f*����k�����C4	�-g3��x�TH�
��t�(��6I7B

���;��EB�������d�9R,��.5cP��T�J%�Tu�o���d�a���>��2r�����3*@���`��\)��/����_x��N��b���~����2Q+�5V}_����J��-7in������ ��%�Sk�:��h��>3�:��SV�n�=XUb1�����H���Ud���'cOR���n��``BO������X�����a�r�+��A~?��6B���WjA���9tG�H��!�{&kY�N���;=F��
�nj^�C�����yI!f���n�k��H����
�dh�3�>�&�n��T:�W���s��x�u�T��_�nbB�W��b�t�C�����������$"���i��Kj<�E�h=��`^������>�_(S���������-�u�4��j#a"��ab���������{�`UDVp�v?��myg�8�yPyb}���Dy��������
�Ee���1���pN��D���q��rO���
��"�Kb�A���mV^`�I�}bsD$N��y)����4VZT��Ji�Q�V�[V�r�`�Km�gjRk�eq�I��+�����
7�����]�c�1C���|�o��0"��E�3E)�����y�9��{1)�F*���y�}�� O�Ot4^��rr��Z6��N�;�)�L~X��h��^j�-S�_����w#�w��D��b������3���~c{��6�;��pP 8���'O��e�-?[KMt�<�����W�[`R��*H�dq�u��z��'���)����R3)q��rr,����>�p�^F��f������������,%9'0`��R,.�.4F��]��)���+�2�����i'��G�z�����m����U��7��X��}�	z�Ix�ylf�%@����xP��z�^*I���S��q�	��\	��,C�e41�-�/�P}�k
V4�l�d�d_��x��Xs�����P�3f6Z��T���af��.�M�&z���XbV}�hz������-,���[0������<�����*�3���< f���@���
c�X���K�h������o��O��E1� ���FG�t���yF,��ufs�����*����e����4
�C���������7uT0(<��$��:P������O:�#_J�zu<6),�2��`%&u�����=�"If�=�^���W����+�I���-����m���fp`#��s$bFiN�	�|��l�6v���;$����[@G���.y��pu�`-���.����Y��[�]y��1��O9r�����}v��$``�`��I�����,'2�,���'��8'��D���@�2�koc��� �(B���E%������GX+�L-<4%�
�4xL��@�xc���y��\Fb���%����A������=�O���r,�l��Fz��0�t�X����d��u#�v�_�����=<�s���`����n��v�:�U`����T�||��z_�c=n���}&�?��=�=�HI���;U�0�����DE���.�0��#�-�8����e�{�4-a��l�X�p��(�tn��||��VA0I�;Pj*�3{Z�X����a{sg��>$���P���	�xM��:>�
�����h��,j�r�6z��WT�X�����k���L���:���K*h�11����*9���o8E�Pv;�4�����'������G��P���;?g���>QD��gvN����������A�1hB
O�����"8����w�o������&��N
C��B/�B`���l��E�\_�H��!9
�=hh!�1U�y�5�Z��`�J$5t�V&������"��f`����r�Qr��`�T���fY
$���r5
���l��D7���V��eH��\o�y:�I�p�2��u�U��gd��^}D�[����[�`���@z#�����=#��r�.���r���$��zKA���_x�#+2�����=a��l�|x|d�!�h�~{�y0T�����CB�m	tf��N���Pj�+��&B���0�"^/XWF��`��g�|�"]4�������!�L5�[4�,���4s|v�
����f� ��#����e���5�f������%��_%����I�jlh��������j��r�N��"�vu8l����x��>���3���%		���38K�W;$�)9v`��b�]=<���t�4z1k2AF���C��C{w\f �M��H

�H�	%2zw	�l�����z��EF�M�jsd�����R��-^�A�=5�+K~���`u�5#mR;<�(�PE���B���Ka["��j�?� �wX:�\K���Kr����_���i~$����	<�m#�SB
7�Zj<%}a�xM���K��e������#%�XP���
;��
fq+�'��o��h�A3d�	��������!_��=� ��_�]�k(���[l`0a�"���t��K^�X7h_c:�
��Gx��j���v$��U�O�����S���4������0�z��0 
���{�����I�ltb@�c��D�Cv����k��}"�`���:����.,���H�?|Fyc1�����BZ���k���J������3��v��A}l��Xm�jJ	7p:v^��{FsK3R�a���mP�^�Q�=��W/�sx�:��I]�|:�����"l�Mm�:��8�����������,�\3��n�9�yM�:�^���U���2�~B���b���b���f4=`d3��@�Bq$Rz������R��F/��l��{�������,�(����o�E�b��k�9�a�EI����l���t�Z������f�gJ:�0��&eh�(->���-��T�p&_
#�7f�:)��g���fRt@�kya\d����^�9���;�}���
N�)~��K��FOa�'�&*'��d�::�X�E!��O1�����Z�������W^���������KpFb�����<�rqW�E��o~Y�WO��������xj���[g'�[�Ho(�o� $�(��//�+d�?7��jC|��@�����6�D��&�4W3F;�������DIW�m��I9�m]8w�&�K����##���l�{���:EX#�n�d1��
���F�GZ"�!�d��zl��*m��jO��^�x�P�j��z
;s�=1���`(i��{��6x���=��!����m����x���`Gb���4^+"���m�����n6%��.*�{�g����(���V�H���	�iV��$�3����Y;Gj��d���-nT����4�6��27������e�-��7���NI��v�?=���o�dw���[�o�r���}��9)�f�`E����c�S��^
�����w�_Y!�>\�����Y���;l0�I�=��*f#�.��aup���M��"����A(��������^(1��8���'!��"��!��/�����`���z3��� ��`���HU�"����F�`<����(jW�������QG���cj{��,��E�r��a�R�e�lk1��d��U�������u{��>v�Y�4}��%�/��d��aM��m��������c�;��[87���B�|�	���6�������SrJ�n�$�=E�l���o�>�]�zo+_5��P�Z���\B�u`�3Nbg�@��%w�6m��7��}|?�G�~�x]���,O��q�(�M%Ge4�(�����\����BnY�s���w�g������g��n�_�X4g�n����7|��n:���~��!�S#r��T1���~u��F0������	d-WE}m�=e,���[_*��k�Is{�H6?�}����L�#J�[�&}�,Dc��d�Y���k�>���ot���*����������b�a�NUc��	����/���3
18�Y���.���E���1{���vH+�_(<MU�_����Hb>d�f����lE�)=H��6�
��d[	,5��K����y�fX�&�S���J=�@6�{]Mc�������g��G�B>g��y�l�jf������l�<&v�^�l����UFA7f�]?��^��@uo@�IM�0�-����z\��<y�t����T��?��*���'�41b����& F���^(A���B�Rv|#����6���	��A��dPR���8fXq�1Y:��A��i����M�;����p(^��8�%��-�kL�_>?��<�O3H�#��fo���n�pZ&�9q�e���,=�=MDpA���.f���"�\I�s)h����z�L��I�G�d���q���x|�]8X3`sb����8�)����b�g��Za���Y!�-�Wf�Kt�d���q�KGKBHt������m�`��	%��x�S����HE:!����YHUJ�6��p�&���	�)b.O��h��K�tC a�#���J5^������Y�f��a+P�@;9��8,�b>��9X�L�(�]��QF��m+��viD�n����L��1n��'�����	�R)�{y|�6�c��t����%�Om���9���mc�(�����5:{���/b�b�iv��Sp~Ia���-�2)��x�!:<5����Mh%��i��!���SI�e�"��"� A,N��0��X�����G�����<|������
���p����\/ek��$5vSb�?_v-����.�������E=��Yfi�G4}���)�,�P����+lHY��H�6
�9RX-W_V���.Ki<zdXR��4"R�����L�Ly�K>����+d�"Z��c�|�����������kFz��N�(s�+�b��l�m��[��8�1���tb5�2>/���o�XoQ��r��h�<]^lzd3�F�v=�EJFYz$��� 5�K���:�����_f��|lV<'��/���S2��O��Xmg�i��i������]|�m��v3��6{x��N���;�_����iw-�g�
�x���f�
���]�6��jM��b�?��`AZ���~�x�������I��(g����5*�_�����-����f����o��'<���gg��/�����4������_�����l����QE�����t��d3��]����_f���4�5��.����{���;���W8^��a_��q@=���������E��������Tc���\�08��<��Xe���-Y�����{������_-9<[�v�������+h���/���p�5���@�)��������/�8�B����I��~�5;m7�~��������q����L���$3���/������A���;fp����+A������o����������hc���?KV�g��0%t��k��?�\8XE��o���_}��,���+����W���R��
���N�'��pP�#]����x�.L��+G��nS�����������������f�l�ov���N��}������y�?�%��;F��%x��w��M���j��m�1X�T{��@��x������y�B��{��P�!\a����e
��7��]��b���2�A�K1�8���o�*�}
�U
����& ������������xc�O���L;���M���
�J�x�E���mT+GZ)RA�~! ��9@�s���%yN&��S�9�;���l���#��>-���WN�U
�����
~���x^���z[/���q�/4�*��r�u�~��h�*�{�N	y�_`��rx���T�V/#�B�7i�s�����V-�0@��4�U�� O�EPD��/%�����FXp<�B��TP�����
�O�;s��IF�.����yBiD\9����!���`\�8(gZo<��c���L_8i���C��'�(�g���;s�r�T�����#�(�I����/b��%��&�ya�U�P��g_l���>�����Z����GW��4���"����������O�7~���
�j�d����,�����T6O��vZKg�=������,�3����2��Jdn�#c$�)�@�=�_�A�0�`
�_-���0���&d��/�V��1}-�v09|���� ���J��oCW���L�C���y;������Q�Hw��d��&��������,�cy(��"sZ��:scL9�7�c&�P�H�0���
#y�h�����(����B���w�l����"��!a@F���[�����#O�]�o�zy�r���S���`��R�1������*lcvDW���M�_���D���,�������RJ�;q��h����~�W>/�
�SxD/�'g����|^J(���!�iRc��>���l@4�e�N�)��U��g5]����?fp���s����e�����Z�0A�W@N���7��p��L���
��\�L���a�������K
m��A��o�.�O�Q�����#%��t�W����#u�J6
��+��(h��f�5w��Q���7�������I3'1Ie�����>s�^���f�'����>�ft�����yH_
���3--�m=�~�Ih1w�_r��k�w�td��(Z
���3���1X����2(0�%����N c�qc�}��kb����X�vm��v�<����\gN4��:�6I��N�����:(�(�^B��y*,@��6��T�N0���,
u��j(��@�P�fL|���Z��&G��u���D�
��,�c�bj��z9o���H9[N����e�[I���t`�<�v,H����f������Dn��2���y��x/�r��S�:��uy'��F���@�����`.
���7w���%{�]~{:>�����p|F�:`��=�>���������6${��-����2CS��@hsx�u6 r��=:{7���2g��H�������T�j�@[�3�PL@�&�w��9S����v������E��G����L:y�Cr����v�y]�"g�3���H�|\=w,S(��EL"�%�����@oH���Lo��$!����t�M�E�j�2R�[�3�D�$:��FJ���Y�]��6�[��
F�Z�
����>�����T�����'�Hf���d�	g�<v��a���9]��z����[A�F�{���B��-�n���Qz����dG��En���.#�������`���M�xv:��bE�Fp%���8��;OZ^�@�N�i�;��:�DtC6��*���W�����K$m��r�FA��1���������R:��Mj��������Q���^��Y�c�7-l;�K��goX������mK��M`�GG���>��{�q�o�%:����@���*B�td��l4'w�3�w����3��	�Qd������T�+^�uCx3
����F����h�Uf�G�5gc�_���	}=`fi����!��M3�EP`�)@ct,�k�����	%K��n�<������.���3dB�*Y�H{��������1���e�9rg�����@������F���S�p&?�N�<R�W���E���uw���N,�����i���`M��sk\"�`�[X����8ky�<���������r
�b�F��d#[1���_�J�	I>d�	���F��k0����^����a�zgo���y�n� ����s>dFu�tO�exf��8�X��,Y�`]�����3k�����o��_�.�
�����5.�)}$�a��
����i��FB�����Hg��|����E��d:�E�FF5���]T�Zp��1I�`���EJ���&��*���xR��������^��=�����	�b���N��1���"x�^��F�g��u�\�������	��@E:�[�������(n^I5Lq�9s����:X��'����NU`�*m6KlU�GL�)�������pO�.�YA�0T���X��u��'vf&���D��{.�|��g�|b!��-:���F��5������W��Z�����<�x"��s��$9�+KW����)�#�o"�C1)���6h6"�����9m��f'���.�+
��Y�Sq����Z �S���<���	����$��l���x�1���C[,�$!O�}��������f���Q
��
�����8X`�����%I~��?��*.���'-�;>MC�(
������w��^��	�*r��3�z��uA(�b��&4�����BY��(�v����D|��<K0y�������	��l��q�(����=C_A�����S9�sG����\�o$�"�!,�G��'#"*��>Y�Q~!��n��^oO(R^�Bi�R��c�
�?�+��;��DE�J\A������t�d����yC��pGT��G�N*�������zW�WS����%�����@b��I��W��zn\

)1��3�����)-�"OA����8� `��Q��.�B������j��y�a�^!8����[���O.���'�r|�)
�����%�y��6q����L�.'��u4��g�P�����E��n[�
������j`���q[�K��U��X���F�_��K��U� @��v���������D�����Sz��_�[�
 ���d�EG����~:���0.��nT���������n�c�TY�=C�D��X��xz�������^)�GEmEn����n��d��4�p�D$��H����M�X3s��KQ<o#��DH���-U(��[���.J�8��R���ry��G`�F&��tS�;�b�P����Jy^�j{<m%ZpQJ;m����x1��^������fI����K�����St��|��_�[��0U�������kQ���
��*L�;��_K�@�x8�J#'�s:�/�:����E�Z��Hj
V��r����rnV?v�kQ�4��9�r,x�JM��pV�)���*��j�����j����8g��}\e�Z�q��59�Yv�&Gd-&L���]�w,�}�
�@�o9{�
�����(� \��h�O���������S�|3� ���������v*�H�%��]�W����h�&Uw4ni����
G�7}.i�n�	7�yj;�
�8~!�[��B�~��{���8�c���CX�Gb�@�N��G/M9�j��#I�p�mN��
�
�)=�
s�<���;��{�pz�A+�WA����e
d���(��qQ�I�3R�)yJ�x =-��n4�*lW�]"�~�rl��}(E+���9�uT(�5�v������/�7	�/�
���������y-4LK��p%�;g�6����'n*z��K���o;{k��\`X��^�<p<��P��*7��
��������K�Z��UF���j��K�eF���R (���*�g�q8|f�����t��su>\�>H �/R|:v�]Vj�<�+P���7���7��PRh�:�_K��t���]x�<����4qV����lu��f_��m�����Cyx>l����*0Bf_##���Q������]���*_?�^��#��7�	F����t�Rp����;���U���t�r|���/`wWR�(�)�3�s������r�:�@��y]J���;,35���(����w�7�2*"��W�q�����/����D��6&�~*����V���6TM�i�_���;_,�
K&sk�G7$b��@�`m0������%�j��y	M]����Jq�u��<Rq��8�����?(I\Y)_��>Y�<��B��04���}p��!C��2���q��"�P
��lR��A[���F�Q�Z�W�"�_�6��E#�]����c��J���"MA�W��,+�������SaD
����<D�+��V�Q��_x%��
�����������z�<�_yq��Y'���C�@���}GO'P:��8�]���5�������c0-6Q}�&�M��G�_����q�YRn�H�����~����,�8}��E_������1�T�XzY����T8���H��M��[Ey��Ji%�2��L�7IW\���D��n�)PY��3a��%����.�/�D��JB�x��g��3G����
�pQ����dN�$��0��+�"�u���a
�=XQ5����h VF��������	�oqN��s�5���>8��x�����on�0�7Ayn��0���CL�Z�:�T���
I%�(�W'��x���/���!S��u]��[�e;41f{�����2��%�P��=��Q�.���C��-P�n�~�6�#�n���4�NU8��[�>Y^���?m��%�8v��t�=m:,Z0�mf�b�!�u���#
�}�t*T��[�N�����-�3g����� j�)�P|��|Lp��(pn��Qlog����)����idZ����`>l�����S3V���<��9svm�a�P��j�L u
=v0�����T~��&c�^c�b�TbL:�D �)��D�a5AS�����;NE�; "}�o����O+a�I�a
7���s�n	'����*��@��&�\��B��2���0W�v�������_�:��
S���(.g@�C)k��e������a�����tS�rB/���J�&(/��f���
l�s��_2�w�n�@Ba��a�l	@u��YZ�B��������v�����oS���;]I
M-�M9���+_���E/4u��Z�l���=a����+���b���\4�I��0�#���jUa��13y[���at����{��sq��[*��e�{�%��WL��?�,�Z�rWp�����M;�=/���(p�z �d_�v3M��������f@WFW2��B���:�:��'��B��`��(MW�(7����1#���UcS��s����*�(�������h(wf�oh���wg����S��CB)�����L]^e N��������:�tkmEs��W9..�Wrh��0��1�c��%�oNX�(�q�>P��VyK�^9�h[��� 8)-�����8G����bW�D��_�<|x3�HEC]�`XXb�*�m�$-wLd��������)�O�5��c���x�5a����W��]�8P��`U�_�W������:���S����{h0_�o��ND�����L��:���z!�������.9V��V����j�Tp�,w�Qc�H�0+j6�<�iu*��<�s�Jla�E��r[l��������L.���
�l���R\�>�]pk`x���z���I|�9�u@����D��d
+�%��B5A�4f���]�-�(�Y���Q��L�{�[~;&�
���onLn�x:$9���r�?��bnk�s��(@;~8!��X��w���s��l0!;��["�gvsm���H�+}���������j��N}��4���r�������TA>��/� JY�H��}^#��q-4�wIq�r$H��9gIM���q|+�� �"!��X�������q3^�qO��
��AQ���|(�K0�c��i��V�9���3�Y<��a��86���&H�
�O�0-��0�J���rp�K��_�ux�WG������nc��
5�G�)�}
zTN]���p��b��zO<m2��`l*����-u����F$t�Th8Y�53��/��q�,����������p��7�������vOb0��
�s
C�����7����������t������\E=����l��.��<H��H@�e�D������BgVg���q���N���_��E0��5���	���
k+��5,h��_}y��n�]��0v����&�hI��4�
g��<�:S��N����sa�R����fy��n�
��*��FldoV�W'��X�`�+p�q;3�E`H00�����L�D�7(C���_LA����j0�v{����7����h�9����gdQ
*����RT���jr�*#ah�F�S,�%�"�M���C[�t�.Lp�j������j{��S�3
�����w�1;����W�T����k���w��&`x)�0�Wq�W����/���c�s�!mH�0:w�	�������ao\�N</q���'�H�Hj�-��V�cL���@������@)"�W���]�����A�1E���^�}Ve����O����*�fqH�����*BtF��dG-c�Q�.��/2�n�Y:
��
�o*������D�������:�)��������������h]D
(}���&B�nx
���`G��5�w���"�`�
�m�S�88�8��9MT4���o
w���
�aYk���4?���������,?���qj������a
*����q�R����|��yM��C�>=M�a��uU21�<p1	y��������Z��0P�* ;�QY��8���D��W��������}Ab�Bw��"+� �.Q��7�/���XJ9/d�%V��V���_5���l��L��"�V9�������n�5���t�.��#�^�����>��O�0��TpDq\zM��D�2�|H9*�������37���@	���RQ�@{�~�DBA��7e�����PA��v��)��'�XVX	����7���d��ZIFU��qX���#��O��B�_����*L���=e'	7X�����n�sNh5�=���!�����j���^��(f T�WsPh��!�oGd=�vk��EP�����
3�����c�*�.�V
� �<����~���+�<����[���	s)�o6�n�<������C}V:�&}�y�`*��Z�?t]�z���.A���;;����;N���(��CR�8�:�[�B��=
���@L�c��n�%��I���{��l�T���z���,7�b���ov���5f�2�`;��+��*8������"J8"�ChdP��R��	��[�������`�~�+��*D.CB���Y�iYL��3����B�n���.�
�J:<������w�Iuj}��:����y�5J��2"
���2����;4��bf~���O����8�`G%^�G���O�������525�{�u�D�Hf$���Zy:���f�+�M���'��������Jo���&����S�&�D�UI��r��+O�~+@3�H�!�E�UT���K�	r���ln�����_��q�D)~��@���2<xsp���������1l��_��N�|/L�r�|ZF�^����iQ����Ij�5��RT���}���`��]|��6�whp�Q���y���������r�����~w�S��%���=EG1g��
W��
��zc�*�������DS�G��
��;�'7�U�������I��y�S2��7b*U_�
��Z��-Y��P�O�5�i��+�Y�����f�kQ_��1�	�x���XA����0��Mi*����&kd ���!����{�c���X����j�����L�H8��Zw"^g��n�g�����{�}����]��]��W�g"��x^�|I$��r�|�����H���~��)9Ql�m7*a�O���<[+ .�ZI��s�/��b�Do��kX��/bU�O�fg�;���b���)�p^\����C�F��.�t��R��a��n^�O��zeq��J3RT��bb�g��P�8��
:���]����
�:
����N�{T�eX��9(�
�iu���<'�2�A�������t]���?*R5?0)?nG������?���7�R�*�s��h��|��]�a�G��f*�7:\�9���!�a'��G������{N�������qC�B�����{�L�����'������V^`���#X��X��F�<&;��SU����S�B��w>��B?aq�{9������&�)�jZ��k$�'n��������������%'4�z���\W���]�1qT�C�b�H���9?a���J�����`3���oV�
i�ne�pn;s���_��2���MjG����}0P�bF�Or�j�g����1d�[}[W���q�J3OJ���+e����g����!O� �@��.����>��,��;�?��GxG���F��bm�������{������p�-$��C6���m��5�C��e�|#�d��:�0��x���{���U��f`"�H��am(J
���eF%f����;65�������]�f?q%�}0�6R^��v���o��BM�IW��Pu�)?��<k�FE?�)��L�����V���Y�3�f"�1W�`k:��KO�@A&�*SC��\�p�����hw���m�����:�<���aY)��
�c���UALf�a���������"�?���S����G��$O����M��T9e�LB��~<���B�����1,������u�������I��&��_#�o��\M�
x�
�[4�D{��)�p��&n(T��-�K��f��
����>q���B���;����hTr5���x����*>-W�5�SB3��]"a|��:�8J���%�0�K���)Z&��Z�bk>cTk>7�$�Sf
������WgI|=2[����c=��O����S�8
D����r^-3�9x���OJ[m��.��i_d�#%2Q7EN����`���Q���<�����.�z�_e��,8����sW�?k�g��������{�������@L��:2���#}����1��>-j5��8m��X�W��*�M{�x��p|�����r�a0����1��W��� ��!GuN�_�(�_��2k@V�o����J�����*�Hn��9[#���X�oG��x����� �\�-8FR4$�����B?o��C�
�Xc�S��
B�������sk��Rqy5�
Q4��V`��.d-���?]�o��]����e��������d�-��� C#���G��(pJ�q���0L�6��	��A��x��*@���0��N�^5'��5�������5.m�!W��*��>���%%8A�@nt����y��;A\�6zSqh�m|����D�*���7>�J��� ����|��$��*E�i��t��������9�v���c8Q
�ZC�An*� �$#��T<�VJ���m)[R������)�3"#u�k"������[-�e�"w��X�P�~���
I��/����'��?-
�3��4�'K���l$��We����	��u� �q��U!�(�`�E]_"aJ�9��s(���N�G�k�_{���0������R5�����[W,�����o�������TL��
���;��M_m�SI�t^A�3�k��_��������h&,�i���x��
����o ymc}Z����K���<���������|k ����Y]{C���q��4m[�7R�ZJ�[�B��;�tU�����M�|�nG�L?�/r��t�p0r���xuh���b�{L�rS��]�"p9���i�<��_EA����A<�:@Y���~��
��-L.�=LH�r�<6��Zv?�{:�R����%v�<���I(/�4�3�Rk5�+;(>+��(���-�gh�)'gG����W��h�����������s��+�[E���F���s��e��
cd�_�����X���;�B�{��`�5���4FSN�����K2�/K�^�D���z���p�'�r��B'��jaf���k�����.�*�k?���8����s~E?[�H���#6UbtWw������`����=J2Nx#�/���L���j�?�������%�IOi|�l�s��������@.5��?y����J�V���d��M���I%����6/�B��(����R�c/�Ie���"��Z�a]N�2������i��<�}f����^���"�~
�.q������'����?!�}�s�DS�c ������O��p�'�NWs ��%�4���g�B��+�I&����U�}%�X"-F�b�h�Z�,�.�����	�y�{P���$w��@�����q�s�%�M��,k�
�S���L�
���y��8g�����������K�t��,�W���F��m�Q�H��i��W����X��qt�a\]D��@9��	��@���!�dq6��`��j#D�L|������F,��4y��9~��f�GL[����f"�C7���*���f*�}W�(�
�+~��F�Mh�o�P�6A���[��_}��WC�
�{o"�Q\��yM���?��P^�������S�����I����FA����� �*y���Fz;v�
v]��qX�[`6��:�&=��R��[��M��N�����1��L���p�bj9�p�s�(�I�*�RH��=F*f��k�V(9��q���B�j���Hn8a��]�5Oe bp�3*=,�0��--U1O��3`����^��|�Qe]hY�|G�=��mZ�T�Q%�y�p�"�>.���H���d��W���"z'�@(��A�\���#��5��o�������#�k� ���U~��J�����l5���G���e=>/���*=�R�U�u�W0�����$|�Yk����^h�%�g})S�(�){d���i������*U����u�|���<q;�D%Ub�t9<�-��
���\��Y�=�.�k��H{R������B��-����P_�GqC4�]N�v�)���TNDN=��5�������f0�]���$�e>�:F���%����w�8l�js�9\���5$2��I@J�pb�����A�����0.��
��P��2�����?a'�rf0�F��P��0���y{�W�m���>g$#8�����b�jrb�����y��VD���9�(�����C��Z
#���e����cW�{�l��%5�{�!KF1���&M�d}�
s<W��2���<j��}���p���X�6���j7�[�SE��U�c(:�I�|��U�U��Qq�?1�+l�2|M}���/�8�h':� �x!��\��G���?@�/P���8���bx
����/�^~��e�tG�orLs�A�q
,7�a�������d���r�1��
7�h>�S����
#��M��g�nD��	�K|�J��5�W�G���c�Q��@}���S�q�J��^��/���c�(���3c_��������@}8���&�p�Pkn���t`s�%6>]��@�'���==>W��A�xa�����v�FYm��)��
^Y��u�����X$y`�8�xa�7"���*m
�^W�kb	��~;�t:V���;�i1���Q_�JSdb6A�<�XbU�G1������������i$�Kb�������2�����U3����$����UA������b��7�@T����8�������3��@�b
�������n�|N��(en�sg+l���=��#���[������'�"���fa���w�� �;9��x�f*G.}�"�5|�t��4�f���f���V��6'�X>`:���
���OrrN��Y.;����V(<�pt�.�	z��]u2'/��`�3�&������z1vX���6?��V������y���#�����+/��:���8J�v���v��
U�~��d���{.ld��)��:�R���Qz	�~�����X4-��W���(���������`��)T���~��|��\U�bM=�VN����/�F�Rx�����g��0�V*������P��#��3�o''��N�.�v�
y�~G{EU�:*~G��r�M�E��bQ�H�g���o?!Z�q�b�d%2�"�@!��8���x�+W�l�������-��
�qBL��u�����!�*m0l�L}l�����Q2�![*Z`l�����*��}��r�A��i�������WM������tg�PgFP���8�
��!P��]�x(0\�bQ�S�f"�$���*C��U���	1P����k�_��5 g b�TH�����9c��=k&=.�����5��e��U���~�-�Q���Dq�vG%=>�X��q�	�e�p�a���0)������
�i�FD��@Em=�]#�n�*�����[�d���Y�q���)��g�BJ(�)��RH)+$��Mb]�XK+���+I]��x��9�D`y�����U�����~�y�s<?���������3:��m�>������<��`���!������5fz���<���
�H���u�!��0�{*'rtR���4owQU�V�
N�r��L�Dw��B�JqTP��6�`�oS|�\�M���d>�_f;�g� ���`��+0�U��	W�`��0�A�9���"�[�������|�	b��,�����=:��	�����������n,�d��x�m�
c�Ly����+wO9�l/����X�raOpt�~4��v`� ��dX�`�TJ���{�"��F�u!i1E���
���}~9��s�����9r�C������$���+����=�~<��7�Nv�3��M��r^��3�_�Xc�������s>����t�@���KL��c��z�R�D*}U���R��i���V\��t,������f���]~���a�2���4���)����\�4�7
�S�>��O�?F���%���	� �������V�
�4p�g�*�Lz������$����������9WJa:��������!Dm�R��CO��^��
#�Oc�T��&�t�V�b�V�
w�[�
�!�}�����M�����8�d}��h���/t�|������T���n�rx�6m�������u;*@Q���7���<�|k�@��^�?��?��`��
EE<g��*���(����)>�8��+J���T������Zs���x�v�'���}g@g����J8��U;�`P��/��
�H�;u�i^C�
I��8h������F���cl�q��F�����)�,V�S\Ks�1�ILp��i�ecR�9�uU�?��c���=�=��������i5�.����HB�����8�������0=>/�am$z�W��R�����k6<�H=�|�5�#->�j��|��f������a@W�1�d�U���I��,���%y~lq<-�|�f`�0PK��gi)|��<��F���Q�c*^P��F�C"l�E��f���
����0����o�)fmMQ�@O�q�����9�&Pe
��)���1�oLZgm2��p���F�T���LX������\H���j
���8uX����+����B�1�
�D�������-��S���pv�0�xk
����8'���N����W�~��h�����LPY['���APm�&N�q3�����L1�Po�����'�����B�$Y����	)���$V��Y�F&���H�T>�1x5�u�F7��f��-��O���/��%�W��=�
�m�H�
w�0L?3#�C��0_L�z�|�_s�tL�^k&���3kK"��S���E���1�U�M�D��7s��_�]5U"l 4�"%-�(�����D�j8B���R��|�EP^�������BL�o��_�*F]��f�=/�<:�n.��j^G<�e�QM��*t��U��L�M��Vy��8�����J/���AH�N���=������-�G�iw:U���G�*����18�y7c��s���-�T��OI�@���uRlg��Q[e��6����#��0~&���Gk��,�ZTq�f�v���{��4R��`�\�ag|��iY
G��5i[n��w�ZQHnY�a�t�s�
����
���
��5}���M�:o@�k�#����U��~8# ���_n��*�E�W�)�����l~���v�6��\��E�����;R�kL�
����&$o0{��������&��r}]
%zf�� .)E�M����z���0
�������Y���\
^A]��>���W�E� �
K4�U�`8FX!��i�k>4����)�q�p^�P0���%�������Wx\�����kQ��1��nh71h�Ej���{g8
%��
��~��(���i���>�/�R��}����1,���� M��5��Z�,-XJ���[p�����������S����/_��y�j��HX@"�,��'���@6a�I�����~j�0����Y]�C����3:��tX�#
�3Q��0r�/S�� O�H�Q���9�0q�~R�G�WT�����t��B�s�yJ���#��z��|"�f�����bW�T�N�������� �^��������5kT�D����\&�qw���;��.p�GW�3X~T��������'Z���
f�[\����f�g�h��7��U���������9)��Jk}�:${�as��I�uwnd�Z4aN�����{4��:�Z^����;���h{b��i�g���
���M�����j�'F65G�|�)��F5�@26�kb�>����?tt�����*OD�j�Qs���mO	-
�x��6��pWN���j�0����"u�B�����q`��Qvb/�b8����v��f!{������l�/���9J5O��{�����tj(I��QXlm����m��X���YL�ml���
�#EW{�\�_��3v�����a�����.D�k7Q���H�`[EB���B*�g�����?�<Gj��i5�uPN��l{

��\xg��S�BF���6�V4����P'F�����V�`��"0����|�G�'>���2��4n����5�f��[�#�Y��� ���Kh�nzo���=���E�J_�4��\�s<��d���rV>sL=����o���$`����k�3s8m6�yp:qU�T����QLp�jz��"�*A��%D>j���EW������t_Ap{�D���y-A"g��$s�W/�,�����"G��E<+��~T�������
��J1�Y��S\Na�Lh��TB�{�����E���N��[���^���#�x��
&�>
K)�B��������0��u�	���h7��(5��4']���DiY�l'*��ftU�Z��go!"�"�|W�\�~&�"����5W���_V_�q�ugd��P&Yw����w5D��gT�f�*)
��z�q)!�4A�� |W0mtC
�6yB[��	�t�^�s����e�.z��
6�T`�~|E?��~B��q��v�~{�(q+��
Q���@��L�s]�`��\���a(�N���e�Y�%(��f#��8����6C���o��F,Fj�\.g�WX5B�i�K�S~�Le�W8��=�f"J�-�����KC��:F&,N�E��R������}�>�v�Ra�T���h���'�5j�Z���
Z�s���Qg��
���M���O���� �V��*�}��C��T4����rP��g`���&��R#�=��L�
,9�	��u[�L������5�J8�/&���L�ILH
�>4�@��H�@/���w��"�j���Usyr������#�D}��F���0�,g�o�������z��8^��m��e#g���q��hs��%�����I�B�5��Q��F���d8�qU�
�`6��	�M��FQ��C�q4c8)>,j3-��+&"�ss���]���S�y!C�����/����`�]g�w�v��Bv�QM�9!���TQSK��(�[���c������1y�t�[��}������j���~3qG�X0�{�/%A��;��ef���?qu��E]���A������0d H����q��)�%�E9��0���d7�d�� ���
���$���4h�i��
���6D��9�~����PL���E51�Y�u���XW���$���OOI�
��c�����|6�
:q��=�^��Pi���
$�0��cv������!�����*���(7���xB!�o�e����@� @2������~�������/�uv@S���">'���b��O}-��S�`���ka4-a�Tr@�3���1c�k
��r��;f�x��96�OV�#>�u�cSz^c����p8�\���Ui(�3p��� ���$	)J����&�-GP�>����jk������� r���z��#/K�Vq�3����B��itL}��������� ��{�)��@�����O�vy��D\������k�@��M����'A@������zXGq��x�d�z��.~*'t���U������q����p�n���?O�_��U��0��?���"Kw���}l�KG��R�p��O���a���`&�A��%4
6��(�A��f����N���A�e��1e[��'xBkr�O(<�'T(6�g���
/{���p
��$�1<��G�UIz��}8�Sq#K���zP��Q#�xWs�F6	au�L�S�m��W���w��Dn�����3Uu�@��m
�
�T�1����y�����;Z���wG�&���
�>���������L�������o�P���\�6����)�������`��z�<���C�L_��"��FHE���B
���fO4���g����1���HE�����i
���������gg��VG}��h�T%���z��&3��gY)���=�S��h�:a:�0i=*���f����v��@�����iK�7	XZ�d_�%�I��D_g'�q��&X�M�s�?�������`f&T�YTA������6��;�+�m��g���"^7��
/�u]�����e�{9�e������iU'B2����F2;�W�%u��}U��^8'>OiIq���b�vw�Y�+bO�������6P�S��n�D�J�o��	���X�jpf�S���}&�V_����5+�GQ>n��]�~E:��(h��*�R����^^Nh��{B��[�����#���v-Y��|���9O�z�Rd�9�m75����,��N�
h��v����k������������L�tsf��cT��9��S##-p���[lX5�w������5���^�������&z�X$��u�3x�Q���2J��|���:�=d�S�������V,�M���DNPbW���lrf"G��n����QY�������Xc���yr@�'jL�
��w�&��������g}��Y�*R���}5Q��h��/��2�v��7KJ�xt�:���4�z�)���W�����%��|ij>3�*�p,(���L�"��|��YrL�,RZ����q�����,���d��PKtW	���Pg��4SQ�Q5,(������p��-B�������a�U�)T��WYnN��K�d�R��	�G�K�4
�G��8���8��8�Ec:����P���$'��v�e(������i�F�Q)��gO�}�
������c�;�d&�%����3�BVxa��3+�#H? ���h7����'}"�b�W����_�/����<C_`�K:��U�tg�J!@
�*��e0�E#^Voc��yOi`�d��q�����!�tG�`��Hv�E��b7�#��iK��o|���c��������X����[��v~��#�,��[�x���_O���{�~�}��e|�M�i|��w��S�N�6�Js���� 0(�0��O�9�9.����bPSu�-��'����L��rJ!LC��y����.e�
/���C/�oX��vDt6F4�TSP���r<
�����&f�8�+�]yV�V3����m��a������:�A�����n
�[��E���r
t����������+�����l�M��+"���o3�N4d�f��^UT"���T��p�-5��c�GD�o� B�n3o����7��T��OU*����0�][��0&�f	�R1�0F;!�N���:���������o�
,+-����K���_��@@R$��q���]���V>Sq$�~�'�������)��	��j��V�n��'��H���������nf��qX��	���S9�s�������P7��fg�cLoA��_8w}�X3G5E���$����h�"4��*,,R�*�"W��9=��qJ���k�+DI�U�����k��>�@�(�9B@H� KQ���%B�J ��e�p��z���A�)5��I6EY��C�Q#>��9���-x�mc�oV�i�t�m�*be������.}��1}QZ@�oa�rZ���z�B�I�U����=n���[Z�Fk
j-<����X�o��]�� ���Y����vL�K��;}�'��/�|����=����\4Z���k:�U�6`�#�n"tf��s����:K�u�,��C��G��S*�`P�����6�R����$��*r�/�������2{\n�/	ULq.>��S��Jyo��~����W9�/�86�P���s
�1���ZVQ��2<��{�
b��<
�S/������� �����{qz?�ba�0��.H�����
�a�:��N]5�
��U�M��.���F�(u��W��%��<V�����y�����d�-����J��X�3�U�H� �`U����Y#�N���w��Fb����~�s��3d;Qfq���UK��M�`S��7�����8�p>pF*P�?��
z�������8��h2�����G+����������t����,�j��2v�T��@�8���P `��O�(����H��E����[�� ��y����H��s%��FZ��K�q�b�\�}�0E*=�aD�C�'��c3rd�aP��rt+�����[5�n���/�S�tx�bez�K�����
���0Qk8���i�\D!�)
����&�j�X�ws+��l�G�_0/f�w�Q�PL��h���������Mt����I���pV_g��NdG�R1^#��u���9�3u�=�{��^
�����k�#$�����y.��
�I�9sZ�����x��_��xIF!f�q�9���������cx}t+�@[P��������0%��Uao�oBld�M*�@<��_�^���JN4����������\G[m6���6�� ��)�y�����p��\.��F���]g���7�����5T�����Y��N�d�� �R���K�R��L���
�E�-����tE�
'�t�S�2�,0X��	������?�/`\�N��e��Q�2���U	�lN��n��`mUy�j�P��0�#��8����	a�N0�����fG�!��c�7y|��*�1I���>���^[�(�6
���|w^����*�,�]��jR�j������]+6�W�s�
����������|Q�m��&�����.U��Y����|��~@'�
��{q�F��/��N���nU(���
�K�&)A��u�T�JK�5<L��+9fbg�M5���i�981����p�<��j	��*P�����b�fp��84���K��+����&�b�U��|�����1���2#=��r_�N���.)��b>���
��%��a�
��
�F$A@�f�vo]�{z�f���u�����~�/����8b�9��pA`	
������z;p",- �Gb���6��$��{�;����D�\�����1G��e���#�w�^��g��	��79z��T[3�QW-6q�'3��2���dZj%L?��1�����K�]c�/�Ud1��:�!�<�n�P����<<GGd����P=���V�c��}i�/>����������lV6r���J9I��U��#�+��g����5���J������E=���E�Zq�.���M�D���O�Q(���Xv_���	�04�x�,xsHNH����������f��=�3����G���^+�1m�b�����/���a�C�h�u�����������}E^�<=qYr<���3E�w���~����"w����Hnp�	��+�Q~A��*��/��9�f��H\G����s�����+��Vu�:��UT�7f�k ��"$>k�-�g�AS]x�YT����/p([��p��\���'R}���������3�e��9��Lq�[~a���^�p�����!�r�!Z�a�NQ�`�8��l��!���c7H5������y]�p�BK��CB	N��-A�����pn�O���������0������E������.�6�O�M"����g����B��S��I�/L'���"�TK���b=����Y���ZdLc�7���
�tQ��Qc��&c��P�;���P������v���.z��0�z&�P����2��W�j9��J�A��d�?��,�����a8xL�F�[�N��7�Z;������3�iFg� r�+�9+W�p���#�bd	���F��D�#?�X�B���f.�t�
=���
���'
���+�&~=�5��_��<a�\������/L�����O�R}�e�s�~]�	����&
-�Xu���'�o~�h_������$���hW�<�5�*�������D����
x}8l_@�(����H��y��`+
���q����^"�/���O�])�\�t5"\���.��6��5���ss�
�I��?�l����2��0���7sq4�f��%���GLu�������Zl*���=>v%�e��{���e��]���H5ml�}O%��������q�����\����)u���N4���;�j�`��d��4�+z�4�A��	�"b�)��XoQ��{���v��^2�)��e��e1�-�,V���o�]�O���(�i�.>�/b��Sx�7%H�Q�%��,|&X{������J��j<�![�
j�	(+A"^�;���E�jr��t��������D��?\U�Y���$k�1IQ{w��
��:�����q9"���$w�c�a@��|�y�l�O�~���y�$�,8d���I�%���Cc":����]F�<����k���g9�&Sd�5?-�y��%�Y��x�5H�Fw�9��V���o��@��+��[k3d�(����<�5��UMu.�d�Q?S[�+��-��N���{�������8�r�X��
�#
����<�m� ��0��P�6�fH��.)&��X��5K �����`n�0
��p���_� \NR�X�%���m_1+�(3;�}�*�*l��_7	v�9N����N��9�$��.��=�N����-��EW��`g��Yr*6���W/�RAc��7��9'w�� J�
su��
S�qN���.�!E���,�-�W�U����|�
�'��!y�9�=rr��qO����#�8������+c	�vf��
����KHO_�	Z_c�����"����-��i��.H?�Q�Bgh�������� j��R�~="�n��Js/�T)"�+t�����-n6�j�����=y�*�������@�>���V��X����D������z���_��]>N\ ��b�$���|��I7+�K6�+6 ���1\Af����(����(�����_e�d�����15}5�e�U�Ye`n���"���
!*�����cV�y�H����}�u�B�����K�>���F�{�����W���PbH����>��3J�@#�+"L�X]��}��������{�|yK�BQp���\=�F��O��?��<���N�DO���;!^cv4�������	j�>��!"��:$�����M����:�����X@U��x��D�������-%�����p�l@x�-e����>D��r2��/������1������+#T�/������*~���O��V�d�UD�V���/�s�O���A�~�2��j�z�vk����jX�>_�8�]7g�UP����wj�c�m���#,��1�x��i
���!�@K�3���R�X��Q��[�X�jlW��5�(���q��2���`a=�^�4^�6�<���F;���0�H��m�[Y��.�Ec}�+Ey�3|��{S9X@f g�h���z�A(�R�5�[z�?����b�/6e{�q,�Z%��7=<���Q7����������dn���(�V���g�����fry��*
�
/��� t��d�/A�>��_-��<�kI
-��v2@`Lqt�S���
O�ysB��]���5j��(um���(�&h^6�m�G���xnx��y|��8o����C��Ot!.x=�����
��~Y�8p�C�W���yL�^��Fl����>���YN��;v�v���E�9R)o3te8�-#��6	�E�:���e������$3�Q~9m��?���H:��:���v�y�'|AN��q����<#�T��P����w��q����`���m�@�ieI��Td�����NP<&'���W���W�X4S����_�}~� ��}4�f�L^M��O���=��}��+�3�K��n�_�hl%���wYK&����'�A����iP���l�WO�@
�\#�������h�8f;�=~f���G����Z�����|�@C��q�+���u��n���WJ �>i4�{��!���Q�?)�]���1��9f�{L��r�>[8x�i(,�w��"V��PU�����D�h=��n���1�H��%;[}+M��o�����~�W�������CZ���'������DS@�%�������4",U�K�9���8Wm,����~��Q� �KY����Xl����r��3�r[�\j�,�U.m��[�z�1��v�U�3���5�6�fO��)Fynv�h��c������X�M���h���j�	
���yH)0�&#
�Y��y��8|�J���gh�|C%f�,�j����_�vY��;�F�Ua^�����h%�b�:s�i��:��r��������&8��j�b�b(y�-��D�T��+O~���cg�^�n]�'#�D���8��4�vu9�<�i�4b{�����5Y�!���z�R*Ms�XZ4�Yl=0�&s����_3���dX�sJ^�y�5d��4?�H��h�����B�3�M������
�(���/tky��<�^cQ���9���Agq��e�Z3���x��/��X\����i�>I���B����Ia�-���f�=�&}�"`���_z-��VW��2dS"�����O��,L�Q��&/�{�������@�����a
"p}���
�>3�Y���~�5���vD�6���V�Q�������=v�-��K�n���Qv�9F��*��"qp*�=F:.�^��5�ck�"���9F$��r��c��_��qL��������}'�x�;NWY���(�)6^���pt`r�3Z
��MJ����e��W�	S�����4��4�	>�#BP?�p�(���z��(������/-g���{x��D������xW�������p*jn�����fG��
e��<�d��bV��J����'j�0�HY��t��k�0y�b����,��|:��S��c����1�~1����N
QV���M��	�|�=����0��TY��{�	�K(1���8F�L�`���g�������ODZ�@�S�7����OGJS"�E���v��p��"C�r�4�L���!��5aF�������y���^)�Tu�E.t
���N��o����Blh�Z��K�M�gE+u��w7�l-��� !`�3� %Y���MFkL�
1�Q?����B4}fZ`�o�/3k��nU�����.�~�@������/�w�CWF;U�V�3���|j����0u���?b;����u<d{��$;�
'�W��>e���*�$y+��):��=��Wi�>;���s�S�!�	<0���yYm�'�-8� ��36(�]v:�b9��A��������6(���@U�i��^���*���
�����Vw�{Q���@��A�H�0"�l�AMP����z�vI"J�����'����L�E��4�cJ����"A��������������tz���s;z�>�P��$����7�
FE���	>|��yZd�*(UF��z�zv��s�A'8?#G���|:1CVYO����>2���������<���%�%d��7��"��������c&�D���(�D��A�Z7^pT�$����Z�z��Ng_w��O}��;5�@���v�X�a�Z^"����%�mJ���M�s
�A��Eb6'�/��t��sX�c��I����I��=	.#s��7���<U��'�q�af.����b#����:ZY^
5e��8,���Nrk�(j����[l#��\�Drj�_�>A�
a4���=�"%E�eFZ�d���r3��s�,�I�0�r��mY���vk��j`j���
�����"�P�{��M!�jP������]�B��J	��SrJ����I}�d�q���Ey�a�=�/'��)�i7����;�Z�B�F�������S~����J�q�R>������^v��g^�u�8��������]c���-�mI��P�3�"�TPr=T�(����nZsfW�����1��=
��zh�N��G<f�%*�s��L��fQ����M�b��F�b���>k�$�}���(]�?�����u6�-	�����HL�yH�������T.���G}]�'����[��O��|�3g���{:[fH����
�.��t���f���6z����<�%�O	�I^���S<��QPS��3<
�r�}��T�P��R�J�,3��* *�/?g��E���+zr��!��w���pq��U&~P#s%F6��+�G��>s5c��y2<�v�
'�D�����0Lq��77AL{����U���Z`����Bo���~j��Kb�������7H����3��?����xmE9��/��F6w�X�a�P��j�1�V��06�D�A�j8�}�T�D/"O����$�E]7�
��3������!
���+�Q�1���y��<�-� ����,�E��L��%����Y�_f���.��� )���]�Y��Uz�w�L�:,q�s-��p	u���LV8�+�s�W�0��&��A4�<��l+�BvU|�z)�E�
��-<�H�@X���t�r���
�M��eJ�'d�@m�����-YV�fd�%�:��JX����n�c�m�|�ri�
���&`��{NU+�](_�M���5�n����6����I���6�I;��)eg���?������p�������Z������������%�2�Q|g����� �;���dU�����\V����O-�������^���v�w4aB���/v�je
�J�����XG�y��n��B��x Xf����G��^g���+L��g+�
'�M�Y�>�Xa���X�!�U�)}V��&���p,��vk	6fu0�����X�OT�����������T$f�%4��tY{�H�����5)3
���h�&����K��H��tA��bK�e�0uR���[��*`�����$I�6��AE�,���z{���^�������`}]*��^�!��@?�bUZ��V�E9�Fy����F\B��@��eBW3#�����},�������GM�j�|�x9\C��4��U�u���[x>C�`��>����;����A��D�ra�O�X	&� ���)���5s�a�m
 
DP��e72���P���n���/�Jt��u}��T8���63!h�.��}=�'���rI��K�y��'����A���ki�����u�6�a�^><��
f����������%����^djVq�O��A-%�_Z~a|��ZZ�xv��)�����pLN�L����(�
3�P*1�/z+�TH�G������6�w�2;�X�L��{A�<����0)+&\SQ�G*LXw���<7�-���4�����E����o��F��X�C�n���\w�M�:��e���0��5q��#�P���1�b�vA���b��\�N�_!�Wp&������J1��{�i�-��0T|���eU��!��+Tw��@�-��Cs'�
�DXK�|E�V��Z�)+����z������"�i�����;�^���U��@�;�k}3SaJ)W�e��Q=?i'H�s=���hjX{��H	���$�7�d��� �te4��j�s~0���u�iKv����!4�G���H8�_<��	���'����z��+���8[��>g��t��F8�<��?!�{����������pHL����
�/�J�b����\���8uD�nW43��s�������`FOpFO))	O������&�*���j�������s�)�&����4w	��9�>>�HZ�iI�_�����
�����QO���q�Xp���L��QJJ�_R��	t�H�k������h�������Y[��f���~�����*z>���}G��/�����{��+�k��p7]���~c��y�BD�PC����!��2��3��B�����[�o�>�r���<��'R�"��J��>����y�s����.�<,�s�|���x�p�K��6"��A���P�(���7��W�T�
AY+�bo���7V���+���"O��
��s��1�|���1��vLt���T����Y9��+����I�&��I���UA��jj�@��z4����|����������Z�w����^ey�,��]�c��<�
���;�.�@2L�uN��T�H�o(������v��Xs�����2���?��?���F��:��>��I�I����g�#v^��w\
����:N��Q�5�0��n���;��������9��Xb!1�����<��Mz,orr'b����.�hW��o�]�O�s���������c��S*�`R!��}�B�N�-��>C��@�r���W �����&���&2�a�:���(�@�j|��#����Ci��S��fGR��(�p~����Q��x��fh���1N��G}����Y}���������P����c�:L})���-�5����4��1�K@�$o��YJ�%��KB���U��>���(@=%O
��;,�������)����E��Tn�V��}�D�y�t���y�.)���!Y
��%��PSn������K��/����zE :���M?D�'��&Z��}gJ���3�Z����
�BS�j���s�3;������Q.��O���2A�L����c��Z���w�Zg���I�L"�p���6��Vk�f*�{��IE�
������.&��!R�������C�1*-k�v&z�A�o3�bY���}��Ii�������I�g�5-
�H��;��,'������B���(	�F���������_�(�����h�+�!��p����~N��(-PhD���9����K� ��g��9�ax|���N�;�iv��#B!re��W�F�-p�V������;�j��7��G%����)�����<
b��@��\����>��{�j+H"]Fb� ��R����6����K��1.��-���J��[����u�<�3d��g�C����"(Q�7��+�_��~W��e���!��h����R����?�����l�~��^�`����K�
��9V;Z"�u�^?�L���KBw����f��U�8�\����^��F%D�q�H���#����0�J�������vch4�3��on�CJ��gT�)�m����VE,��QQ�'ja;vE�3Wd[��5����>�!�:��J#�v,�5Q5?Z�7~����I�p�7i����)�[��(,�&�
�v�{�O���;���\">:39I��JlB4?�Dk����r����9��.�7����e��g��6�������h�d��*$3��g����	��3��c�G�Z�G>w1��S�.�)i����Q�PQFf��?){~�^����(g"�:R���0����!������Q�l������q�����`��:b��i�!L@
P��'S|��)9&A���#�� F�an�\����q������T^,����c��i��s�ik�������1���aEmY��aYS�����=�;�����^���j�m����'���U>��RI�����
�'9#������z����`m�S3�H Zy�f�f]�_b�i�:kn����&�M���@�&�GP�q�JB�0j,W�8�b�����no�{�����7��O��o�����&l�x{���>����<��y&
!�S������s����V[@�NA��c�v%�g�W��|�]��G�'7lT
�'q����P�8�J!]�xIp�������5[��=(jd��uy�
��N��3_�*/�Nt4�9D��Z�J9�
����/�Z��]���O�H��`n�&�\�lU`�-��]fTP��t#�l3B�l�Q���]��C���-���2>�TGw�6�^W��%<'�4Gd`��/�(:uG�NB����^��G�Ds�����m��q<���e�B&0�\�����q���W���&Q��L����L	8��i�{F:Hd�������1=�x: ���e
�7?���Z|����Kiv�Sf~������������\'�8�����������j����I<�0�����D{��3UHS&|	6�G��HbtD�$�p���4��0�6��;*~�{<RA��p�_���~o�����q	����Vg���lg�����������D�T�L2
C#
�z�m���������&�
MP�x�;���h���p�/�E�O���/��S��C��?�vc��[����������G���<
�$(�o������]Z����Xk<�;���X7��0j�Q�#6B�T�l�) ��2�Hc�o�/�Z5���
. B�4u��3z�w"T��u�����/�)�+�_c��R�0E����p�����i@y��Is�\���"����
#\�����1E^E�B�C^OF'����4����fO���szLq�t�U��c�� �[�n��|��6M�6$�����l�����I��M<���{D��%(b9�R�,�[�D�#��@��{�\l,?f�`����*O62X8�t����WD����I�{�G��:���Z\'��EVl�r�C�����d������V�?��F�*�����b �
v�_���S#���z+������6����������!�A7���^��h�[�WJ�};���Kv`u�,/��Z�+�
�B�I������/���r% �����)+�K�������K�@�L���#�lb���
���-�j����=�}�>�v���?�\�t�q_���~�_g�d�����xke�����[�����|T=�-��Ef�Z�����5�x���5�:��q��
!���X�������K���p^�����/I�r����Fz��������v�����"3���.��~�:�K���^H���
��q�>�.EM�X�q���
�.�-!�����=�Kj���M�pk�0�r��BW�=�}y�S�w�g�����Mzl"-�]=��/�Y����I~���qF����,W�-%�q7�uY]k0�m	�������r��0���
�������*mg&��S���Mp��hZj6����3�"�Fz�G8�`���
���8���r�GS�"�Q~!�/sU2�r�`�9��1!
@&�����cf��zfXA1+N5+��@�;��D�(x�,�T�s��)�Z�"��������suP�r�c�=�1�C��t�f�����$�B-
����VGJx�@1+���W<5�����<r��u��Km�4nb~]N�gU�2��;��b�"�X�^����WU���������1��8[`"����H����O<?��&���/t�t[�8{IH��h�;;��t���@�D�6��G����p_���X�Y�BG��K
uS$;���z�EE4���N��Mt���W�4Vn�h��?�eA�}?�tM�s���/�d���:��<{C��E[B<�vA������Q�6��m?YJ�-����������|8������+G0��IA
f�]����{J�X���L\�`�7���a��Y-4[)m��W���,��-
k�)����:0w�d�����m��4��2��)eB�?}O[I:�`>�^>�y��[���#Wt��RQ*����g���������@C�|�*����/
�_�]#��U�Y/33u�����
3��6Q;������S=�t�DS����3��d[^����PuuUo0����k�)	B���C�D�
�q�hajj��H�n�']^�*`����1
����s�\�O������r�BtyM*���	��Y�uz`���P����z���Y���5�H�E�E4���@�����l���%�u	8R
�e�n�;����aYN���_���~���0E+�{�wd���	jS��z��#�x���k� ��`:��������/�3�����
x�r���m5����B�����4�E�L99?��%S�k����������V7E��k"d�k �u��P���c�K6EK<u���a'y5?n���(�F�p z���/����������#p��e6	���u��D�^���@�����Sx(t}s!��.�ZRP��CE����	�CX4�Iy�UA�=�"g���X`uxu�c��x�
3���CO�9�l*�/`5�&"*���Bk�*���H3q�� �0��6B���]K�w�O����)CM\�K�"i�J�m����[5`���p8�t*Wt|����P��E�o8&�`�3�Y�F��P��������������W|
�*����5c�I��:��m0�����2�\g��_�"Y=Q���7��/y#�6�-�
��I�����.4��t�k\��e���P��hG1�rw���D���'I%��k�6�k���A���@o8Z�1f��Cl�Sc!z�[��d����F��a���r���><	r6iF/��3�juw>�x��5
�2�*<]��@������SFc���V\t�}�/r�S�.���n~Z��Y�4������WCgx	��&��)�I���i���p��pL�r��-6�qQ���/G�^��+D�mo}��W�p����X����~��0�gF)��f�Y^K�����K���q��S����F��\�XT��h�z+�0Kx�0w*s�V�����x�����0�����z�3�F����`�?���/���uX�J5nespx�n�}��7Q*�\F�=��u��pQT���5�fm�u��^DO�W�Ld��4!u/xZBv-�m��e�����T,���.��9E���iF,v1�a��Z69��P7y3�5�����@}|DX�B�l����G��]O�|*6����9#����Rl�����q�i�,:�O��"��L�|%�f���i��u,��_����?�_��z�d�'�X���B����=�������`=v��z�Ji�,��Sj.�`����-�Bk�<=��X�+���@
X����*��C��@�,j��p�=T�C����u1������>:3�"���
*5^Y.�b88� ����Z���YNh�d�
��k&�L�+;4��e�+r~(&�����}��~C"p}'� ��:�����^��w��y��L���0fWs��pB�.=���S3�{��
���3V
��-�~LN�f��E�;~X.�>�*0��� ?1��?�T��Vv�Cv�P�*������2
�8���ik��5���+�_0�����{�f���"�!Q��P�����O�r��8*��BVW^�p=�+:mA�o(����9�H��,��"�L�]"[��q��H&s<Q��v���\�Q�Kz��$�������p\kE����$���hb3��p�S���T��u8G���">��@E{�\${���R��{,r�&`w��!('�<
�*
�!-v����^/�e�t�KD�C����p8Acl�2���.�Y^���LO'5��:�~B���3�x�����9#����|���O���pl�8�~�v��47e����Q����*�88���C���`�R�P8�j�>��O�={c���FHi��|E��k0�T��������`����9�t�����X�@c���Rq�����c��qE��)�
t��.r�F���%D�v<= ���������1�i����p�opds�`S��Fx�����9hTG�~��Q��@��*������e
��|a�^�{S�oq��E:��I|����8!���Xf�
��12��^��
����q��0�U���M95�F���Mcb��P�K@7�%����n^g�=&�r��4�Q�1�j
E��r�0X�h}�_o�L]��2�
�Q��-����nE���I�\��H�����S�q�7Q�k*_y��"�xf�>O��z���p"��D����Dh~��fr�IT��SaE�e"����������l��q�� FDD�p&������
�}Ex��T1�<���	���T���o6���6XJ����3>���P�;/X0sKt��AqX��0Y{}}}�����H���
��|b
k��6����A<m�=/�T��0���������<-���U�:^�`4����45�F���S��� ����H^Ba�;2�f
W�����:�].A-N��R��p�/�o��O��>����&b�h~���pH�0����yz9$��:�y�#
�h�R�W~T��iBZE	��!�m��;w�q�����MV^����L�C�/���Xx�	�6C?&�4a�-"�k��T7����`(���	�m�����q�qb4��'�2><�������T@���]��������x��E-��l�{��.����Ecd��Y�	���-6u���F��?E�eR�;��b!������t�����?����������\�VG�P��0�H���J�a(���{:��	�|$�W���#	��X����/Y&�;!H)0���9b�j�
92
�����.q�Q}3Y�j�\P��z����T��3�;yB���}c\�Y/A�vXE����������F��y�IC�b��O�?�t_�PP5���[,�
��P��c��t�&'�	���:���0YH���Bzap����������N1�>��OA��s�� ���2�i
K�#�YoZ��������r�)7���)Y�%�8��y�I�	��:�$Oo�>�a��e�
���E�H^PKbt"���@���D�����)	��VdA
�&]�
(^7huW�iH�qRe35FH��gi�S�m+�$M��G���h���I�n�f�M�/6Uud?�:R��TGN��A��V�x��ag�����=�
���.9���'NN���T$���R�(=
>?3��1z~T{���E�qx��pU��	��U8l}����Y~O���y��Qry�U�M"b�uQg���N�9����.p��A�-��M�pk���R�3P�
�������=.��>G��s�{sW=��`�{�pD}�B����(?.�e�U��M-uB9����G������������fW������@��#chhw8u��A*�J:RNm���-�I	Z���=���[�I�H��p���
s`����zQ�/�r���W��&���D�u8E�B�4�65�E�VV��[T������f^�;4��EB�C���~Ym��M^b\��'2r��V�hl���������V#�WN��SS��P��l��p���X�p~����w��h��csT��&
�9Y��h��g#��JW��=pD���
�f����43v�T����Aio%��3[�z�������[��PG>3��3L���h?O���I��g��������?��{k4�9+�/�vT�a��k�
E���I�
a��N@������Q�����������w`�)�T]��KR?1�
�8~Pd��}���H���K2SA����K!���+���3L[7��������"��En#�v~,� �S�XE�K~�W>���eA��s�b��&�%������A��RpD.U3������qO������E�I{pG_J�su.���P���J@(D��u�d����0�)#���N�'P
?�V����s ����X��9���KQ�&��=��d�����}D������>NG�N2_@���!tb8
������m�I1�c�v�	�<B�A���%O)Z��/G������j������r+���h24����[It}bE�	g�v�z�4��N�Q�H�;����r�<�#,*�c�'w7w�i+�f,6/��V0�f�7`0%����Sic��)j`=#������$5����� ��PDR��^�[`�0���=W[m�y�-�
��b_��)�i��/�b*���u�Yc{^���.��t��4��s_X0k����]���[�l������j���/wt���������A��2Bs1����vC��q�����m�,y�+�D�^���z�$�'�Bo�*������N,��s�}�_c%�;,�)�++��0�
��+������Tl�!j��Zdq�cR�xN9uRM�\��'���J5���m�Zj��zP�k�s_����E�b������Bk�����	zO�qb@�����W�/����V�8�����i�[���euh�k��	�sp-)c���R;����Zx>���P�|/r5������E0B���Y-�x>]���`lB0aL�v�����A%�	�Q�}�_D��>(rTV��5���M0@}�kYR+�}���^Es8�K��
��r�g���:�0>�&Cy�f"�����]��e��M(�XH�g���a��P*7����ay���I�+%�sD��t\gy���Eoj��V�ur W����"� �j=~y�+�?,�H�S�f#����}!)l���o~,4����8���mW����0��_58�v��#�JPHI��$���c�Qd��$�*�?���F���n���+dA�B�g�9�����X@���"���+'�z�l������qHF�J&���������	��2 XhH��A��a���,�p�"9��<��+��A�.�r-q�g�
�MV
k��<���g�����&��0�Zb+�����(
�@����L%+�:�m��p��P2��6Q&r{������F�r���\.���El
����v[��{s�tN���F:=�B����H��."�Y�s��(w�6��o���OJ}5L��f���w��iu2�Z���*H�����4A]�������Kjj�e0D/���L�F�?��u��u��a�G��k�KCs�-�5��v_g*���^��E&�,oh�[�~�K����:
R]��������<)�L���#p�WA�"%�j#L��]F]�"Z�^W�L�mr*�8-�[CX�6�4n��b���2��*�!��}�����y�������x
z������3w�G��������Pw�ONp�DHL���W_h���$����OV1*�}��|������8K��M	�G�S�d#��z�nbV�N��V��D_����}��������o���>�����?o �����^�S�"�9���)�`"o�&��8A�c^������;���w���X*=��(#���#�/E���w� �����@X��v������4��T';���V	2l�ba�n����&�F�J~�Dn���p��Zu��H���"���7���`����XI��?5[�"0��p�0G3O�!�q��B��D�M���?U��]�Xf�p�*i@���]9q=.�Hr��0Y#��1���1CGI�����ht$��e�QF�D��-�����n�Z��H� ���Y�L�v%9�{����R�
������S���W�����m�g�M($���[������4Z��1���*_C9�<}��������/R�(A�0K�������c����v8f�7�c
��Y�Jv043�N@�1��9�"���N��)G[�K?�%�|��R�$@�l"Zi�Q���!�J�,GL0�@�,^��H*����6�o`�"
�L�9�=�9�JUsK4�q&��^*�4�����
{f�I���,*��/���H�������� [*N������T��1#�k��p*y?~Z���X���R����UK����6����6�&pW���e-��Ri6_$C#�����xW������9�4E���4��]GCGs���*R�����n��S�jD�f����ke1~T�ZO���!�tb
�6�)����9Jv����jh��j��S���CYg@I�/w��S��a+b�J����&AL�*��|c~����#��
�pc$W�� �-�0G�ZV���`������#�|���E���9-^���i�{v����{��Qu�RG�����:Vu����>C��'a��PVcs��3�yR��.�C3Oi$���5��$J�'�a�A��j�����T��CuA�
6�QNK�{UE+_6���K�dX����B���]��5V$�Cn�a��5\����p��E��3�j�<a��L?k�6�%}�����~#��aOkf�bH����\�j0��sgJU=Gi�bj�b��Gc2�����2fe��$�c�6���k�Qb|��
���<���aF��r{��3������u�{S|��a�~�����+�i��N!=f$e�x�K��Bs�ye���/X�oln�����<��2��CvL�L��*N����am����T;��o�2���k��P��X�ud����=:����������q(Tp�������B\>�U�LrL�/l����6�kQ��y����q�i�I�z���
R��
���5��#���09Y��e����w8��faES� �&��i�X�f��@J������h���mbV;B���V�v���L�57
wWL�!����
4^8d�[mA������5H������E������B4�^������Gk;1�������VHi�*N;���`�%b0k��b�>��_=������ ���U�1��L6�V	)h�(��Z`1�C�k9y�t�
�dK>��1����L��G|FbNa�R��@f�I��B*��A�RED��������
�c�����J�������hA�0U���nm|���|M�a��/��8���h�]���&)�_Kz���xAy��=��#z�����*"j ��	G��,D S�9~�qv4E��p����?�/telx���
��B�
>t����Z�G>tTp�:�^p�h6�#�5(K�F��}
O)<���X�7����%Y��I�r"�:�����ls�V��B?*�����/���@��
��P�Io�����H�u*H�x��|g�x�>=���0y�rrp���"=�%"=0Y5
�W#����O,r&	9��gz����6<���g������+�'��Rr�^����.�=�����������K�� �+��lPC���=��53��JB.�w��N`ytpdp�N�x	�r�`0�E�(�o�C��X�8]��
���7�8���TbWxm�M"������������W$�~�R�-J����E��C�������^���~\�&��`�d;b�I�2��$C 4]��dWT����^�vrwg�8ez����n>2G\o����f���\�[���c���F�@V��������j���k�$������S
��1�p�!e���jb�Kg�n����,���M�$�S^�p`���=����h�����<V�����G�v
r}\Fk�Kb�a���=��� �������0��a���4��E����^W�<N#��X5-3��OE`"�]���������� �K���|�������X�j�����C6���/&l@,G�`Q�4gN��{:��.E�Q��~A��Hq@��&9��|��Ra�_�M�;�[���$]�0�(T��8��Az]�*
\�p���
%=���������iV�4]�,#C���~��L���T�,l2���� �\���G����#_\�4"P2������N��S�`QQ��R~�M��/��������Q=��y�m�?��u��M�O�O�O���^���!ap�g��'�O���j����.4?��-����������x�K>���,��&��� �*)�0���kY�}�J�
�_�5@��{s��gGm�W��4@��E�}N����T����1C�z�{}���l$�Ch��I��^���{g�-)-;����K,�|��:U�N���6*�ELJ��O����2lI?&R��v��z���O�V��o
�%%>����Q��l�19�n���]
��~�A�b9`����H~T���/TuC���
��B�Lro���8��p�@c+'�U8���Y&��.���/�h8�T:\b����������{�qh�l���9��8]�+�~�m�b����b]�6B���v��f�j^f����0��������u�?���C���9<�`
�#$_qy��!l�BL���	�q�����*���x��a��s��"3~�1p�b��l�p�jJ@
Ib.!c�8F�<�t��!���.�"R�,�	���������	���o���pq�'�H"�8�(������X�������g�����N5v���1��Q"��pLH$r�!j���O�)��3�e��T����'�����.��<-+����O�L��ON�`U��lTX�^���+���$4�9I�sk������|R��E�'���F�gO@��X��.�
�>��T��	��pYb�g?V|��yV���yz=*�f.�t6z|x���F�<0_h|;o�����SD7�O�Q�7g����Qt^��,��z�nwU�QZ����!(�,�
�;qp�6����XO�ne��uq#�kL%�f^�_J�"�D�k�����(�T��v&��l��k!�1�r�����,��[�����&����L�����5�U~�� 8{%�S�)5�B,������e��RfU��e�lN��
U��="����*D�
g��'RBP4�;�E��� G$�6���:�����9�:����u�=�D�W���5���;����[�f
x�N��P�L�wv�MW���G,]��%�;�8��&�{���vL�7MR���9�X�5�����*2[crCR�pj�f�T ����Bl�K��^�7=~����]��c������]�I
�4I
�IR�����~o�
�4�����7��'�� ���9��
=��y4�H"t�Fe�+9�5&�!P��U������e��k~8^��p��� �����T�UyY�`�g��*/���0��G�0�����k�wU���s�~jj��]	����GW�|��F���y
6���'��4:#K�@��e&/�H���c��Q(��Z ��^�i��u|e�;�/���B1�Cy^HFm(Da:���S��Z�10�J�.9@a18�����F��I.'�j|�z��t���s.������n��u�S�h	�%�����@����n?z��X{]�W���.�v�O������~ci���O��`j����2k����������s�Mh��H�+{.e��9��P+�<�����3I���}��M��V��9��?W-���@���~�
�F��Z�������J�3"���06��\�?���jSX���/pq�E�_�24�F���������� �p��.���<����UFGI�{�g��W��*1K)M��2��
*���2|��r����"6�}P�� lO�7�Q��y/Ty^��_�����(n��������Gs�l����L���b1CD�&�(�$d����Y���8�,.$aW�^b|����?J�nq�b��[D�'��Q�����{,
���o`�o�|��=���#�w/��.p7dE�>�)�uVr��I��d��-Wy�%]�	�9���f������t������D�Q�e�&~@�������o�� N��\WJ������A����6&�T���4a�%_�[v��,�62{�
���[H"��TscH�$�7z���z�K�V#)9S�]���W�tK��7���aH��a���)��n)���ja:�����HX������a�t���q�i6���r���j��#�<��]��R���B<d�f��`,�����_�-�a�q����m�b}X��$���$G�1��J,��J6a7r�Y,Hr-����7�.���5j���b�y&�^8����8#�Pv�^&Y��/N9RD���[\]�y��������k����b[�V��t��e����.�M��,���3��d~)��U�����:Nu�:{����]��km�!�v�x��E��
+���9�p\��>�_���tLt.���T�����ZH[�Bu]oSdD���m(���WV�V���-��.�o����G��[������������4�lmw"�>�H�7h�qt���F��2��6^&��,d�Bb,��3�������O�$[��b���`V�����^'����Y*R�7%C���H$"�=����WS�C��u�Q����s��r���Oh���-f�l�k$�2�fMNY]RW�`}_�f4S`:Hc�������F��g�1=y=�h+_��6ax����\�9�M��D�������	���N�����-�(����H)��@�BP�xa�L#e�4D�N
�)�K�2��k��V�����r�
Y�,�������y��i��r�108]��>����O�'w�t?��pU��iC\=�Tp��\�N�1������?���:9�A��X\i�JI��:�"�X������5���e��?p��p� ��}�|��q���X��'�����\�������_����9%Ro�C@�H��A����H���@���@��������(h]��U��^�)�l{*�*�7�����7)�R.��-3c4�2����%��x�K��n�R�G������"��Q����fF����2��hT&����������+���:�������'W� @��7{���Y�P��M�|2�2��#b����W=<U���������G�;-3g����'��X��_������k�oM��j�-����2�]���}���}f$��>3���@Q�F��dv�B��Z�e�������8x��n�����d����_�H,����%$�������(M�������"�a�5]u~uPII��������L��E�����Bc�G%:Y�\`��	��zVG�}PG����6vm�e����#�Y$0��e�d>�B��2�x��R��F�3�'��P�*�,�	�)�p��w]��!d�0�[=�*��,.��"4
���a��PC���
���$�9b�IZW����\�>�~y$��g��A��!g��h*���y��.�$_}0H���H���`6��~7��[c>{ ��//��0x�����}��$F��Hc��q��F��]$=���^����L9A�<9u�"��Sm�2��w����"OM�6�3.�=
�2(5h�1/���s������	J[��J�$Mqs����j]V-9��c���hLw"������/?�HB�������J�A��"A�����x6c��%E��G�v~�cp���^�����1�����
���U���O���*�����g��G!4|���a���	���H��w`Em���t{-���g�����l�+�$��WDgV�D�4�0��9�3�9x�e[yL��
�s�	��&��o&�}��Ri������������3S���4H�Y]��=f-�wab$�L�&���;�����[u�l��U/���94�,5,}��m������7����tO&M�|�j��4,���(�YR��w���Q	1��bkJ#��
E����?�~�r����$���Lkq�D�F1g���|���.�
e"�+��e���A.Q��l:&�� 
�e�����
��j���c���T`0����E�L4�������u�L1��5��������LM
FK�s/��H)��0�k���hx��k�z��
�<J�Y���E�wI!0��8�CN��-)�]'�rc1q���$��S�����_�"��8�+lh+z����Q���S�]	��W��k�;kv�=|F��������AF���������k�:�M;���%�L���Um��<Y�Y��������"~���9�l5%�wa�i����d|=bu%�����#�=�-�o��r���O����*HoM�/a.!
����%hgMG�X��!.������P�Y�geX�k��77�>-rM�M�����g����%�?�]B��g�a+��<�V�.��R�H�w�����}f6�o�����F��+"k�	b����F��$p-a�jf���y9��LK^����N�W`~@_��������|����91���Y� \�c3����}��x����
�������|����,��H��t�zW�M�u���)�����D �>����iB��d��G*FYD�-���f+���E3��FF����w,
uV;�v/
 ����u�ex���������G��,������"�C�z�3��h��`0�@>3N�LMD��""����	��ZcW9�V��B���2�33�W�x���������T$���I�5y�
���^�4�����"s��q�"��^_m��������3�ORKQhbK�fm��3�m5�AU�Lm%����+��|�������>c^o����I�Q�8a.
����P�gDf�C8����<?0n0�z��h�K��	�B��Ua3&�bU�z9
�[*����4�}^��hN����x����M]�^$�]��;���D�@��0�Gy#jw�#_�_�w_`����wIQ7����S�6R��o�!4���:
������;�!r���:I�$�P����������u����b^S��[)�@�X;�=���M�$����f��/��s�����ogO�q��������E�}���	��Z�k2����U+�"vafSA].^n}�������{0�PzCv��uaT��7�mt�����X���6��`��\��x��`�-E�0`w�.���@,�������'G��!�,��c �<<�F��r���k�0|~�=v�|�������GPU�n���{���K_A�E�[��^`�-����+@��,�<��w��x����(O&yZ���
e�����%��`�|�,!]�8wj�MB���i],������-\���XU;q��6�G��������1#�80�?y����G?6)^X��C�{E��	1�2l���B��������G���I�7��diB�:��H�������w;���!`hE�r������}?��\*����P�;T�S#\����(H�'���_��3&4����D��a�xK��������\w�M�����'�I�1)fZ��x5A�y�`�TW��P=s��T����$�wI�k��"I��|��z~�������'�K��#�|fE�d�'����u9v
_���]P5����C���]�?%�D��^0��g�;o]���2�o�U0�C���v�����^�,�nMDQ=[33���C�����{8=.��J/cR��W�R&$1����2��_=���$9�h�k2FY+�a�W~��S%���AT;PH���s
���KQ���Uw�4J��tSH5��lT�	�,-�?U(K�C��X�����6���ff&�����H�2����K�����"�+��I��XD<N�D�S�����E����:�kx��|[oO���Q���R����K�w	5�NG4;��& c��B�nT�x�0��������)�Bx~X����yC.���"�#�#��`�Y���U�� h,	i)63���D�,i���n\�y�[����bp��9vi�H��|��4��-W��=>�fA(�:*���}�BC�����g�XA?�)A}�M�2�������4��M=m�h�/t��W�[����0��4������u�<�rD��D��1\z�-������g������_g	VVT�����S������� I7�V�g�t\ o�=��	u>c�y���z����:L�V�R����>�����T�|��E.��F�n���x��
����8����]P�|��'�B�O\����D�]~��q���n:�SSb\����Q(}���������z�%�
�����'�,�Gz�D(����,B��u/�2<o"|W�ct�*�R��`-������m��.�)��9*�}<AK��g����^��(?���z����W�9� 1�6�G������.�U?�1K8�s]0D���5
C����u^�uwL��b��cF%`���.A��ev!���?R�[�n����ey�3���`����)��Y���Q�,P�����s�`�PN�!_�kSV����/��e�^�3;�1Sl�����v�x/G��Q�����`� �b�\���8�����m�(`�^\gc�>�{1����{�>3f�S�NMb��n���H{8c|��F���F0�/$�4y�\��	L������W�2P�L���d�I��������^E�Lc����2L*��J�� �����`�D�%���X��'}����e[��m�!��O��"���nE����}��������c�v!2^?c�V�2����:�V4.�*W���[������e���d'��F����	q��� vL�M������~-��G'�|��B�|v��d�&�O������KJc��r4���_�*,�D��N?�`�K���]��d�9b5Y���������`��]V���.kaw�LuV'x����g�DWW9Ory���������9N-�%\z�<E��	i��s��/ �����5r���_�|8��
������������p��sL�}r���?����M�5��������RT���L��J�*��S�0�"�*-0��e�j��������4A.��GB�����c/<f�����A5)���v'�B.F����dT IV(��"m����Uu	0t�M�Zo)���Xg��B���ji�Fl�h�Dc�����9����I���iP�@I�[3d��#��]���S����:�(��9*f����D�|���NB�\�=�i���o�\���@���b�+���/�g�Wj#C%�?���G
����\V����j�Z�Ww�@FUw7��cm��B~��bU����k��3g����0����:���N�Vx?�4�{��
�/
�\��a�`��b�.v�=�����d�s>�
:�N�e���l
�MZ<���/��l���i�K���k��}��Z��#9�i�C�I_��aB�$O�k����]�&����c����`��G�Z�3���8����/9�)�,�7�^V����c��oV�f�l��"���3�4���J��Q���x��;�
c��` ����������p5�>���3�14|�$����&�G��O��0�
�n����T��-{���9>	QvX~��aLufZ$L�_{J�����]�K��T�A%}/=I���e��S�pnl�%�8?B�=.�-ox#y,��P�D
IU�Ev+&Q�-`i�Ql��s/���R/���@N^�3_��0�D��
����ael:�����\2���YzP��&����\����h������@��]�e������m��F�����0��%����4�)�e�b<=]N��f��6M��{�
!�.��.(�������j��������"���jB��8�#HE�Z�S�!�o�/b��6����epF��`���(Pd��Cu��
�'���q��]`�eB�u#^/���h0���������!�;�	)`Y�a�I�0���_d����K��aE�2�\��Ux�`=�	�n����� JqaLE�����,R"�+(N<w��L����i��C���n���*^���x����<}zJr"SEl�d���
���wI:V�pG�&��%�����_�I^��x��F0e�������FF����m��nE����M��wI�+��J����=����"5���G}��'-f���0�xTL��9^�7��Z�!
��3��w��Ff���Up��a�We	0��W��l#�%��g���Q0tS@$F�<�Mk����XUw���\je8Mr��
k�Z��P����P�Dw�*�hg�:������s�q��������TiO���}��yw��21�dG=)U'�4i��j��B�,���������X]�	�^�{��8W���_�k$B�aA�,��H*���0j
��X���r�)*�*3��#}���']
���t}�)R��L=n�������t��PL���L?�=��6������=hi�q�c�n�E��`ea��R����t��}����S'h�L�_X�x-��6��6*0��]*�1.U���h�,�u5��x���:2f�\�:�Sk�[Q��c�0��t��fdf2)e��Yz�Z���^�=)\�_���� #��p�@h ���>?�i��%���j��:������:�K�t�z�������[�����
o����������
.������C^i��d.()�S	��-��(%�g�A�2
����o�r�8�8���4F���o��{���e�c��.���?�8D��m�~AI���nb�t4������I�"����K��(
�w%��d�bS���J6"n0w�<X�h�������-�C��Fl���vdty0.w�M��nO������V;f{uT������p(]�~O��i���+���g�O�R���_����$�]�W����^���n��!�!����`:Dk8���^��'Q��g� ���Q�~�E��4��R�?wF-�������F]���)2#=
�t�BX���w4�Ro\P<��1�&G��A����8^�6�T�N�D�B���$�����8�O�Il�������SA��#~c[��2�z����-�������^T�X��x�j4d�+|]�P���yU�Q�U��?���(�����1������L��S��t.k�����71Q�vI��5�;F�aM8�.���	��s�����C�O��DD�V���F#�\9.�������q�F�g�c����%�:RC�.�~�D4��PR�*4��`:Z�3QTF��?A�s!o�����O�L�<��Q��p��o�����w"�
=������#���(n�k����
������&�',��bO3(U9VQ;�<���C�u�E�"��;.Q�H����6|����,�����>��8>����@T��e�������"J���&vU�zJ���B��F����:�q��SW�O3�V���c^c������>���BTF��w�
���@��vX�5f������������eg��P�y�'�W3����7e$P+��DA��c�����O�����kG�k����������#��2Q4@�r��5j4���]1�
?8�������t�|#:{�<�g�,�h��@����lStpD��A�"_c��������k�.(o,A�3+���n�_��E}����w�B�P��FiN��gYa��a��tR:�����l(��W2�
l��F�g7�����Ic�������xqyj{I���������
�
+l���J��1�Fy1������/�`��C/%�:pk���a�����;���8�.��Eq���D�7���lG�����,�1���d���M�W�����2�T���M|U���c�a��SA�E>o��CSN�:���v��y����<-���r�0�QX��i�Z����C^���"o��� jy�Q�1�����2�����g���|m1�Wx������7w�����]F���J� ���Y�"��7��@�F�q]P'H�W�t�"��Tx�0+�xt��9��+Y�	�gk��71�k�������������n���-���Rx[Um�������az�j��2���\?�yrws�����/T����g����z�N��@Y��X�OQt7����]�m0������e��g�����>V�:~+#X�������U��fw
A�8X�YZ�������y���pD
���Z�z�T���h����F-�����������������%���qu��qb�@l����1_cY��Ng��jf$FBD�Ba��1�s!���?M��Gok��
H}m�t�O:}���O���us4��0������i6��Vsc\k��hS������an������t�B�"��)x�)��OR�����luvE���W���+�
K��:J^tR��a=���{����x(������p�O2w&�{�/�����=�PF��Dj�w_��Ol����mu��l�������\v}����'���*b��,�
���Q���~O��w&�=0L��'����[���Df��i7�'�	�j3)����^����tUdv������yd���������9�u`�X���8d���F$RU	.q:�@6�f�k��|�����p���M�_���`?�l?x��l/M�|����Y��%U|�����o1���C���6���f����k�j��qU��K��m�q\E�;(������.�|���3vH��i�I������`�	m��x�K4@o�K/���Q�Z�;�U���JI��m���5��iOi5.d�c�H���<�s�u	���.%�~��/��k�kJu�HFyn��pz[Qh��pGw�'��^�WE�e���(8��A<����&��@	(�=u	��1V���7z�9��
ns3k8�o�������q���S$d�����V�����-��RCB�8Nl������V�4A)H�F�]�E�R}lWb�O ����eUe�b��8@�tY����H^��D	u�X�p�(p����U2Pe��,��a�&��"����s(^��Q>��_�s4��E�n�������%v'JH����J���ja.�������Z��+O�S�?.�~�)�i�� (&�-.C~����REI���v!U(�j���
���������m�N��`���0`��g"�
xe0!M�f�
��J��ql�z����.V�3��4$RaAz��&��T����1-�=�G"�_�`������"H�	y�w8��2R!�a��LG*X�_A]���/������e�&���b�\T�#?�����RX�8L�I0e��]^�/�i��p�@�+0��y���x���c��������PW$ur~Ts���g��4D w:��;����@s��T�LlS52�P~I
"�	
���<��B�z�g��v�>�M���������D'�=����ZDX���<O�������4f*�&�D�k�����JkR�GA"��|��z~"
}s��x���@] �d�[d�ar���S��/�C���]0d���Q�r��)[l���)��V�R�����(��|��1~��_�~JN�h�0���Fm@�l��������a-�����Y��
�������qpH�"Gg4(�W���1J9go�e�2�eG�KQ��lS���,�"�ZI�9�x���������m�w�$�t�Q���*��0�FV�k�_B�.� �����E�|;���s�)j#8�t�H����AIW�i�m�}>P���i[=�ZUo�7��}B��z��V���[��������]`N����_@7�D��<��F1�G��~���y<�N�<v��P���ReT��E�(r�����]n�4�MD��h-���u�\�Z7�w6��y�^'�Bm/Z#F�N������#�!��vU-R�P��.,���4:������
�}]�J����[gFU/�+�~5o~
����t_�t��7(C�9����G
AI�!�ub������~~��Y���T���O���3v���^DX\E-����6X�����^���k�LD������&F�u
x,M=U~� ��Ih�K���:;��3����3��1]^�PT@!|��+6���4�^gx�"�������$����B��A8�k�xw���y��G�4x��f��O�F������������nQ�"^yN���c�6@��<O���l`8�����t?h�8�I��6G�����Jr4bR�]R�gR6:z�r�h0���1��7�1����x�������eg��l�{�����{�%=�U�p}|��UvF����0`������E�]1����{5��s;c(�$�zP�b7���Q:���>1���������t/���h�G|�//�%y{�L<~�C�#�����=:m����ssLy���og!�i�������GO��Z\�P�
9(�^H�E�����$����A0S�&�Np]�~�u��A����&��<�X�YE�#�*_d^U���t��*�
�����j�����e���A��G��C��9YP�����������2y�J���-�f1U�l8�
#�����tK�b���5����,�V�����L6#3�i1�
���je�nR������5���_a�O�$[�]&~h�k<32���7�Q��-T�)�����)����d�>^D���_����wdA�o�����p�PR�����)����bK*8-�~3�6�V�V!o��[�k�V�'��$�ep;Q���g'�Z��H��Q3_��o}/R,o��v+C��>�A�����|����T���0�%@�'f��.�-�������_��%��x���63iLf��	s�1`B����
���i%���)\�;J��.U��&=6����F�35�?.�@�D��I�"�8Sa`~�gS�a�c$���@��]��?]���
�\m���#��R�/q�}WE�\S�Y�'.$����r�	D�}w�a�[y5����4�wu��G�Y�l�P�����s
�����f|^gv���;������m�w���\K�#���G�����.,W
�����������v3
�	,y��$�r���|��0�������FF�8���I����c�%���Y��.r/���1(I����l��Re�9l��'����m��6���t���n!�^��p������{D, ]�����w��X%��s��V�X�?g_���A�(���/a0d�����J�S�B(��9f`��YE������,
s<�b?�/�mx'r�`�]�����P�Qy�����m�_����tQ��T�?B_NL�83c�"�zcGG�VU��*gg��'&�C����jK�LR��~���@EB*���b:��N<��u_m�i��z�����"$������<s8Z�R���g��;�N,�@���F�A����D����t|��n���|{��;���%U�����=7�	{��)5�:nA���t}���x�Q������������l����{���g\�J26���7���M���1{h(T�v�P#i7�����������N��

4��I�-FC�wN�k�n��@�����,G��N4RO-����8�������}lQ�g����Q�yw�K�/"�R)b�9�=��/-�8���M�="�dh�G���Z�GGM�t�PGR���e<�����tE�����s~�Oe�}����*���X@�^�v{�BWy2O��r�=NW���So(l�%8���Yz���&fOx��O�4����o1��{�r����z��������O\yp����
6���S�����J	)*��v}��'�����z��Zd��FE��)@sXDp��rj�\CgF��#z�H`���XkD%n���7���o\`���@��'Rp��I��<2��t��eh�������9j��u�<�f�8 ���
Pxy��K�cK����l����E�R�Z���%��F��5�[����0�w]6Y]
���a����h]�����6����Sdc�Z���t^�>%�@�O�L��a�<��=����3U��~�����]�
�:�U����I5`�d#�G�����$����A
n��}h��Mr�s�9���Lb�3�qO)�g%�,�u���*r���9f��3���g�D�Ox��F�D]�.	ij}-O?��?��m���V������^�j�'�r������������,��$_�Y�9���	�:=[��km��'�2����28��R�lS_n����.�/q����������	��%|Rw[������'+N���C�gxr�����*��$*��e��i��B�aw�b�N�wI^<.�#�H=#�_�tZf�����zJ�}r��)���P�z^ewd�������;c��k{�V�UeO-{�{�����������~�8,S���3��
��^�.�".�1���5
��Kr���EO�E���<[qS��\"���p�����aT�Oh0@=�KzHC����S�Bo������#�[���x��x}W��������m��"�_�4~�e�.��).��(lHio@����������c�Pq8�B�m�(c�DXo{�����
��c�U�F��:�gb�q@Z��$�	3qmWO��#�KhOA=�R�i�����/�;�WM7�PK�:';k�������*������?e9��(iW�92p�o�8]����,���crP�}�=kG�Ln�S�U��2";�^]?�TK��J3g����;L:�d�X��%D�����O����Y?�Kj�Z����}�]z�e��UA�:$E6���t��>5��S/W�R��3�����iw��j
��C��s �f2������V(�u{��%_`7�9�B�(�U��jNH���>�X\-�*����x�It���r����������!�����
P��<��DF��:��}�>�Y��}���U����aT�O,�5X5��v��c�?���c������`Y�:/h����`R��.eJ�h7�0(���A.VTd��~�q9��@���t�e����d8���y��
�(c�7�
�����P����A�L�����
H��\'�*�&RngVmw���8�weg]K�)���j9}���
p��D66`�l�^���*�����2�\�4an���{���0��&U���b��dq���pH���U.������b#��I�-��m������RZ������t&y�.@xk��9�^������+��P�u\Gk�����B}J�V�������B�����_���2����T��_J���=T-���b�H	�Z�R��c&�y��y&��xY�����;<WO���A��Z���y����2��x�z1���=E�L������Zn���JjZ��ug������It<rs���:���T�u����3m��������X�!����s�[��lK����{����7T�`i���^�����G���u�����k�����jY�D�<I�}��T�t���7+��l�mj����>�(}q�������85Hb+����$��J��Q��F�����'��Q��@�VGn�}��_������5�O�������� ����	j{���'P[�z�ab)��c�dVdy�ES���)yB�l����*0��UFi3#��Oi$N�!4�u/Q��0��	�v�����7�0�Q���~]��0^<��;H�ou9��&�_^"�m����M�(�n��bG����6�YW����}d���������m���`�3��Q�ll���z�0����0�}s]������,D�g�����#�e�{"c�~��uL�%���j�:!Q����T����Z�{�������m7(����Dz���/�w���Y)S��$*���v2���Q��-5�j�2�$-��%��_����%:���fq u���jv�<��-��A����E����Z4p���L�����D����w�Y 3���E.�����5�����|����e����y����<B�CV�>�Y6d���C
S�^e�b�x��k@4���Q)��2�x�q6_�����3=C{��)����V�	^8�vg����
:.��=�#�����0�����\Z���%��%�gV�W�QE������.(R,r����[���L<2g'4�Z����Va�e*w�&:���Zw�����jl��B+@*�k����/�������}6�+g��P��Rv�d��'�	����w�w,��	�i�A�&<�X�����t���j{�E�'
�i��e�O��\��Fm��.����]�<�f����I#4��['u��OAB��������i����S^=>�y������a��s^�G��������� �uj���j�h�S��X���Xfm�Z���!���SS���e)t}r�`��m��2vOOT����O?��do1{�l���������uR�UU)d[O������&YfsE�b��x���^8T��z{��Sz
Z`���R���������	���rk0J��%��l�,��Y���/|?�$aY�'�����^@����[��q�X�1��
�qQdp�k�r��&�>�_��r���W��ob`�1������u�U��R"�o��\�lo��L���yH�;
���;K�l�cc�hQ��QeY4���i�'H�V��	�������I8n�����Tsq�r�c�hl������U�
&�xw���=�C�\v��}����������v��m7�b{Wu\[��a�g�'���4��b����y�d�=u<Y��O�/���\�ZUYWp"
�tG4����*���F��%ZZ)����y+�A�|�<����H�������,���L=[��\�`Th�R��^"���+~����]/��y�����h�E#��Z<��Cl�M��/��/�:�N���o���-��ga����eqI�2�C��kY�@PY�8S���kqau=���P�!?���U�>d��lq��'\�h��*D�}\����%_��Y��9�~�|'����Y�`k���9*�@W��)�n'��CD�@�d��ERR���{�4���j�q�N�+K��wwy�����~1jZ!�����
�%���d�vg�_"i��x��Knv��5G����������&5$�������u"�[;#��rJ�.p�SM��0U�1����%H3<�u��(4���Qgl-�8M�b$�]�A4�_(�D������S�Vz%��������n*�;��r��n��^�}^�^�E^e�J����s�7�p���<:�����
jD�����2��I�*w��
��u�mV����~A�[����u���a�i�8��FCc����~�_����%y_�a�������~�S��������$p��nT��;GWw����������j����Ao��q{n�[�62V+�w�K}b�s��#�-?�^;|%vX���c���!�9���]#3Kg�<�+��}� �04L��M���1��I�������1�E�����-����UPgi~����j,��^�\/�H{�;Yv�>��m�}�]l��:���`������kT�WI�n7-�����=n��I��K�P[J��P�1V�r&��R��k��P�5�l��L+GxI��$]�������m���2��5`v^�~����J����;�cn�H�H���P���S�Av#w������s��AT��=T$
t�]������=�:&��`#��$���H���	���#D��	a|����1,�)w���-4�rS��=����N�o���*�����US��f[��PQ����a�#�U�y�%�>C�
�{����r���mT_�����R�e��]2�7H�����������xw.t�
:;1�|	{�f�
�Zr���2��t��Np�(�y��QW���J3�e����^�����Y���k;�qI�,�������i5��qAX�p.u-��p,E�EXM�w�
���+�'m&�T3,�A�;)���:%*}w^G@q�}cN�x#�x����PUvP��x��	������h#y;k��P����F��Y���|}�u�A6��k����R7���5�F�/���S��qj�E3�!(�.{g�_���}����'2%k��n��:�������I%S��Q�{����������A���M ���DM[����E7��p&�
)���l#��#����qN#4���JGq�c(�i�b�7�d��7���v�Lk���8R��nl`]�M<��Y���Z�m}�CQ%�Y����m)T
�����Zz�M�3�`��N�A���V�>�l����N������=���U������f?����c��U�����=&�W��Q
{���R�$-c��q/��6Z��'2p_��I�1_><$�+��?�9m��v��7I�����I>�X�dM��qT1^���U��d}�x
YeO9�������s��|�T2[.��\�/�]�n`R���,�_R��nv���,2Q�>�an��������������w�ly�o@<���l.c|�7�o��3i�X��c$+���@|+��h{C �i�d��}����������8w�do�b�p�:��y6�" �IKUW�.6��4"t����mk�<7�):&?_�5�����gMv����mZf��\���a���O���@�^�04/X�� �q�6v�f�M��"��0}�<^�������-�	�+�y6!+�����@�XU�Mv'
��HX������y������<a�������z��d�6|l2����9���D,��D���r�j/��7'vT�x �uG���*+��U��5���9\�R���hcGnP����v�~�I�;6d���j5���6-�>��1����t���.���vM]��p����tN��y�0��Iu�B�5��B��-L��I[���&�Q�V�Q���E�%AZ�E�B�t{&�-��^���~��0e�����Cz����d��E<L�/%j3��%j(�I�~u��Q�[��	?�7��n�L��u'���x����{��Rc���[)�1��,��A�O�����{�Nh��4�:���J
:"����K'm��;iL����?o�m�v���:�M�h$Nd+�o�Z��y+['��PYa��l����A�j�������`�1��*:\a/������0o��QR�&9���0*}�Hv|�X���� �xD��|6���G/���/��uRl��m����#�I&�Y�������vF*NCy���38U��x�*?l�F��:;[C��m
YsF<����A�l
����sDm�LR�����i�&i��t��e���;�����[2A�8�g��s��C���&���(i��ER��4�
���������Y��-a+��a��2�:��F#U�Z)�U{�cm\7�]7���PsJRm}�u
2��7��x���*��6� U�;z�(��k�I2�DK��AvN��
��&��!��v�Q��10��@�i��<��������������m11~Z�V�!�0v��o�j��,g,��[�m$�� q��9����[�{�OsKm���(�����_���(���oY���i�[���
���jY��\*fb�q�F������.("���|T�`�
������F,g�/"U]�Yq�V��5y\�
�j������i:��v~�F��#z6���9�����,���|��!q����\}n�8�T�NS��3�\��[��i��jN�9'��������
��O��!X���E�S���`�V����sM�"6OH��_�������-`h2�B�kUuc��M7�J�PN-.�3�N�v�|�+��$����H�"KjAy�/���������H6Eg7q����HG9�E�%3t�!�z��6��{�$���I\H_���Z~	�a�*��3wN���c����7���3�WA����\�������[�%�%El��l"6����]���;��EyP��������=0Uy�l�(-��1hs�;&�F�V�q���
Q�|"
<��!`6..��=f*h�"+��:�dc�[����(�������X�.C�Q.��Y�������������M0oZ5��#�6h�!G�=$Xx �Q���#�O?j-5��S��:�����d�Tp�>���O�p��S�m�T�>�t������O}g�5|jD=�����S�
��h��
��l�TH�1|*�3>�)���L�>���8��Yq�3>��q��Sg�'>�)�O}*�>�)�O�q�����>���O�������G>��h�gu#N3|*��>�)���,�f��7�|����?��Y#�h������j�O6|*�s>�Sp�������Ot��SY,��K�|�l��x���z�N�X6v����D��X*�S-�:��K�r�������X*�sY,+)�4�e%Q�b�T ��X65�C-��|v����9�bY��T�e�y��b���o���'Z,�iK�r����>N�X�9�bY��#-��)�c��(���
��l"���'
�@F�f��)������M�D��o��x�~��s.F�Z9�$8F��(��1�Y�[��<��
������Ju���_����w�:*h�@L������{�c��M_���'y�QyI��$�d):�M<��4�*�R�<��[�UN#\r��W���b2nL��tU�=}%�Fx<�������y���MZ����+D���=��~q���h"b��q�_yo6DY��K�o�CL,�*G��DEX�;��B������H���M;�v�m���*P:*�*����OyF�p��%F��)�$��TkM}_BJp,,;��5Q�����m�H�I���P�Wu<�rv(�!Xk�g�K��R�P)9�7���Ts��V>m�����)��wbY�����M�No��,_�a�Rj�M��$];�B����EI��^�&�J�01[����������o�Y�8�����
���Hh�T�GN����>��x�\��|�Vd�R��bW���T�;���i��H�w��e��]�F���1�J�Z��;������;q?����5���%l�y���[+�=[��N�m���u��N��e����E&�������aU������&�	��,,-M(���w�8@h@����ult������ �����tJ�b�f\Q�u���%���{��dB3��)��:C�	�p�i�6����5)�V5�� ����1KC#N�_$�[���������I�����]��&NuU�FL���80��)�<\��j�!�����9��6��$�c�S�3��Z����C�&��
���Qug�`Z�������H��+�	N�

��1��	���b�KN���X;�L�����@�f.�����3�O`�4��c�u���~[�����-��I�E��N6UX��� G����.����bd>`t��d`�������8�=g�
�GN�B.�����b0l+�~��4
�%�o-�K��������;X�,|b���F~�y����<|].���UoE����2w5*��6�����[����
~�_�=�,��b1��9aW/}���K�Z�z��&=L���%B�V����|��*Lp)SCK��7�nV��|6.R��cU l@\����X�%^�����d `��{�3��Du���Z������(dcx.g���[���[]�D��l����s�r��Q��~�_�k��"�'�c�PF��$�%�`�?��PHe����hx�_KS�P�@f���s~���~�N�X�N�4��>���/:�I��h[�2�JY8l�v �E<��|���M��fm��N��4gu����9���U|�����9�u��v���7v�Ib41�N��XGZ[(G��B��r�q�\�[�_�?�t���7x�h�/�f�i�w�^v���
/:����T�KsI���uc�hmp����\�@�\���o.��:t�Sm�|N0���e91$�S,'��>�r����g9�%�������r"D��3���e���������$�GS��]�	��Dsx���6�����uZ��O���J��P����mm������{XHo0H����cE�	�|sM��X�J��$Ta)���:��j��q����_�����F7�U��8�����W�u���h�h5Z9R��!�P���=M���NQ���:R��a�U�u���h�5�X�)j�t����#`�$X:��X�I
�.G;Mn�1�*�;���
�q��c��7�t��s��V�w���
p�x�\,`R3M�S���[q��j���(��)<Vim�C�SZw�u���"a�����D���iJk�����<�[
��w
�����?��>O6%>�e O`���~�7n�FW��� �8S��(��rr#q��� �')�
bD#�N='���D��pz`.N0v�����w��H2�]L�x*���!~9��a�!�8������s^����7u�o�mf<�rd��
J���# "�J5W(�lD]�<��V���sDX��}lW�}{��XH��3���k~������:�0u�8u���^5�s��"��E�WU��\�)�����Bt��3`	����<�)Q��J9���\��%����8��~��!	���e'�Lvf�oW�D���q}�o����AY��1����G�uEb�(�7��{��~��9X�N�O���&���:�))��c���3�[2��N���~NT������l���y"�$�:!y�2���{����mhc���7`���Yc���C�O��D��u�h)����	 r��h������p;�eQ�	z���G�x���#}b�������k�-`��W��������i�{F�����E�����a��'��<�1�����m����X���r���K�3��"��3D�s�V;���q�(\��$g���u�A�85������6�czz�|��Zx�w�16��f���G����	B�P��!���=g��E�lh"F����-s:H=�9���.�P�����8h��<�K�6���g7s�5���]�9��b��7����&�8�75�q�7�H��"���w�cu^:�q�&3]�������K��!v9��,���qo7z�	�O��,C2G�Z�e��u��;0dW�v�F�x�-o�6�,*��F���/��9�}��
��������uS��^�E}e�K�����e�T�9GyY���L"u��L�tH~�}I��w�U���(�j��h�@f�E&�`�u\�z;(���|��gv�P���[�*bz��]��R�tAqFJ@Q�����s�{*���N,I�8Y��6^��8��$E�S��:����3k�@]��IQm_F4p r�B;�����5_�d�����R���6�� ��W�Ou�V��_`����
����F�b�����f}�h��<q��/H$�_��i1"��3*UE?�5�3�p�������v��jN(�Q���W�yId?���;��BI�0����w�����0����2��Tc��w��Xs��?��2����w��&O�#;�3
�O�d(�~������>����8?��d�������V3�)�����	
����nV�G=X\�
����k�c�(&kyO���i��a�Fb-�����q���F�����jH��*o�t��hH]���Mi�Q�k{r~5�M	���:G��(
��R�0u����c���wQ���3��s�h��~�l��o�d1��(6����`���%h`��gb��b���!h�r�3�z����nU��P�2Ncd �9��:�6|4B�	�vs#$��~��e_G1�m��-�������������[fq�m^�8�6�$�����9a��A��y���-��vG\���yv��!��W���VC���ZZ�LF�%[-`�����U� �����%���z��/�����='����y��������/�;�ZS4F�$�6v����f1)0NqN��d��{�\���v-�\�<�|��)�|
������{���S�BG�v��.�[G��5�'y�Jk�I���|����z��t)��j��9�Z�����s~����wi�����h�g��$�]������:���_��Y�MnD7@�Q������1��y��$���
A��%�;������<��,��:��Z�G��$��Q��bq��j0��pk?B�@c^��Q
��2c��3������M�
b�M������p��*�/�k�q'���?bu����C	�.]���+Y�]�2]���7���h�Oh���'�����-D�|3]!.O^�O�6j�����`��u��OG4r����TV�2������{g�hX�R����.�`E�������������V�#�=pm�����5��nM�y:�)���s�.��Z�S�4�����{(�s��4�+M�.{�C/V���1��|���<�K��?�������k���^����w;��\���C[%6���hm���������d��u��?���U/ ��'��vU~����f�"t��`wg2�����3t�n����k�	�+�*�#��8��.���H`	 w��<��H���EWW����ms�����������J���O9W�,�����V��s�]�d@�?y,�d};X����-V��.c+2����U��@�0
c�;x����]1��4Y%����������.����o�>��8�����-������#��nW����@�g��j�:�����Y
�xEV9Y�e�@<�
j,�Cu;�|�<���G�A�a���'��J�R=�)���g2�����Um��bW+�D��?+U�X���T��NsRo�ls�LV,DP��
a��jy�[zT�u���[)P�s������v#[p���[5� '5�n�]oS()7%��wl�e���G�����N@�����Q�IJ�<D�|���G���B����0�r)�b��=��������:���n��Ya��`���F
c����'���a�x�
{: �[rwgV�*:��e����ZJ`��lVO��������E�o`�l�"obq�]%�V��<�{@���0�q5�	��?�8��95��$�H�r������������ko�w��8%v���&�3y����\�jD�[�q�8sp�����@� �
�{��E^3����]���?��<,��������?����t9�;�f\��_�����_�nJ�L��{��a�7����{��u����\�h�&����A��S�Bo�����p�J7�<�1��Gb�����-W�{��|��4Q��]z�L����G�p����_x�Ze�-��')���Yc�����|	�5y,���p��&��dHJ�Lo�����G�6�z��a!=�uY������w�>�x]�bs����N��BF$�s���(���bu6�������P-��$��
�$~�r1 �� �\��i:�t�N����:��s�N���G����isR��I�0O��cq�8��0q��9Q��N�Y�m!|�,�u�50�)�h�0u�O�����6����X��r'Ss�l�H��*��j;MB�`� /W�M� ;��P[/^�4���Z&�%6)@�y���])?��@h���|[U���B~�;u!O/-E!�`OE��-	(�2�+���Fa�+������,����|�E�D�M����,J��iV����OI]9����kO#�5�������pi \44^,���{��N7���O��&��mR�]_�����NYv�T�4�Z��)fD#�_�M\��S�B�7��T�4�F��r0F
$`9~����x�Nn���q��f�chk�tjL�.�_^�h��`R��������8GUj�dV=+\E��M�.����&~���!6g� 	bx��x*�:5=�N�&G/�,E6�l!X��tM��
6�O����~���
?���V"A�@�[�7{����Zv�3+��R����z_�����A0
�p$g<�Ul������I99��%~
���
J^�q���NiZ����5�
�t��P+?x�n�:Z��p��k�Gk���4`
�
��D
�<Zb����D�So����f)���8�q����fH�k�2+Y%e��>Qc�N�.�}����K"J���a���3�R�`����6�16��6��h�U�3u�+�����^L����hu�K���b��k��0�i��� ��
�O������M��7u�yRf��E���EIM*��e�$����\+b�V��#<G��.�n�C5�x3�@��+`�iu��,5
������[M��6��������s����{�Yo�k�:C����[��zF��B��Id�������.�w�CI,V��%�d�V��I�?+[T]��x��l"���C��U�E
����M�q�*�q	:w��#f�l��6"�����������/\���o�����?Q�����S����cU����G���*j�1����,76���g+^��N��m�87�|{��T���+�F�����Z4���0�VY����7�X��������[�������]j�H<z��S���������*%�l���+��l��>�l5�����	]�/�20���G$��AD2bO�t���3�gkrg+��>!dt]��j����&]*�H�Q1�mM��*����y������\:��|����m��NH;�FN�}"�q_��������]/�,9"�w��
��k��G4��Gyg��h�V�N|�SP��:����8�i�A�x�2�`b�Ae���F����-fbcP��0c�PU
(�� $:_�NyY�=�^RU����:.�S;�����g�c��N�V���vS����W�	��X�)������2�A�V��yM���x���h<��a:�2�N������He����p�����t8���b8=���5�X����1$;�z��V��l�3�
�&6IG0��hyYc[&8�D�+"�oWC��F!;('Uzw�v�������_?��Nl����|�&��L�l)n�#��\L)�[���J��KXG�cd��	���C��]��<�����v*]:cph8�
S
"�"K����lF�?���*G���t8H�B�/�S�0�������v���h�W��������U��kc���:���m�d��8p NKe"�[Rn.t�f:��c��-��Y�O���~�W�:�"jtW"��X����R�~�8�ab<��v�i
c��|�rH��rxB���>�5U��,��G���9E��Uv��)��6Ni>��f�2��&��|�R��U���S���p��pA����u��}����/��S����M�G�}'2��<L���0������H�7�����c�?:�����]%��&H��|Md�l��[���8k�::V�=�
�cO6,�s���L+���f���1H
�n�x�?�/�T$:M:��s���n�(q0����U��&��UH"T��^)�?�/�
�;w�"��jZz��E�� F���I���(.B
*^x~u��d�^��5!�s}�!;�N�8.u�;�!��M;�qD�8������P�������E9�x6��N�h��r�S�8� �"Ncjq-�p�XR�d�6����/	e�Y�`���i�0��x����>Z�;B��jN`��]�SuL�M����4�5�TOmT�?^%����m6g�#���d�j:�n5A�N�Z�(��Q�A����+�{�@M1�:��U�w��8���N�rA�N!]���Tt�I1���o����L�41�n�[C���z�5,�%�%�a���IM^���d&@V�������;eOat��-�����0�J���j�J�"X,'�]b�^�c���������p���st�X2��"��������:%v�,�l7-�0�E�q^������b�b�d"�`��
Qo������9��4N����R�� 
1}n]�C+�H
gm��:���20�����l�f:q�)��O92}�|�.��+�e��%�z`{ �XM�P�#�9�}+."[p�%��(2LN�����a��5BlB���@j����TQ�b���n���6��.9��YH�)���b[<6i1�H/h��F�8�R�K
�R3�{6��Te_��)��5�i�Q�<��(�?\by�����F�pvz�*�����J���������Sv�������hoL���`;d��ou�������OO	�>�v����7�E,Qq�z�f������K�vJpmKaU������8���P�@
�4/d@���d�)�����H�,F�E\n����?�����|���s���p T'B�����N!I��q�ZM��	��4=7uH��W$�����0.��J-�r�X`MCg�p�J@�'z�����A�<S�'�T����RqC���f�p?�z�s���+	�`r���T��	N�;�K2#3��To����['�����:�@;3�S�X
gdm������J��=s�gt
�:t��f�g_3������?�C���	i�)%���>�!c�k�Fqj���>Q~dc�E���x�R,�{���S�������qgq�wz�Y-���?"4���3��>x�9��J���.vB����P>��=�,:�9P��H�)��Xl�g��OY.��������:XI��V!��|J�������\#�=$�r���bV���b����!����zlF���%��5�i�E.��y���`Sn0a�S<�A �	.�%�I�[-���CY���W}[�&4p�/8L����
���H���U��������6s)5w
�:RU����|��M?��B��2���S�0�,�+k�DB�{VQ+F�}���n�BCj����hiG8a�t�!��D?�2�����~����
���7[�
�Qnw	��[�����yBs�&A��;��~[�E��R�m���h��(>�-����/���j�@V���*����d�#��7�8#=��qLpf��J�^�����-��s'�E��wa�s�GNkNzw���9�(>��Z�m��Q �f�f�\w���F����N���5��������	����~�{2���\�����S �a(P+_�)�6;/�@�t�4"�!��P,�&(�l�@|��oSA��t����)��hr��-U|gO�s��S��KU�EF�b� k]�*�_�����c�d�E���<�������*�q�W6�RP�l�t
(i�BF�
������u��u&|�;�}����;Es����)�tP��N�����s����"�u$�~+�&��"�?n U�������+Y
�#�W�t
m����d!����*���X�@{F����2�x5������
8�k�D�IY�C��CC�����9�����W�a4��C8�7u���1���
��.��5�}����u�
 $ ���a���D���:v����p6��.2iZ@Z��En����(����H~F�����SP�So����CH�pp�C���s�v��(����-�M���p�R�D4����h\'�8�Uw��q��s���eq
��Ry�t��Fl��E�t��D�
�G:��\��S	�7�����s�b\W�B��"j���+��t���!A��p�t��B�S�F�5�F�������AzxgW��>^���0>g�WR�"a7�v^�)��]�!��P'�&x�Dk�O4�T
����K�ehy�|1o���8�p3��qH"@��e��>%OH8�
����2zS�������_&����n4L�4���UM�#j�p7?
��J��y#�N��S����8f���0�|��3��8,��)K��<��RQR��C4x�P���s����W�����g���;�F�op�
�ww���T�1#s��l�k��u�O�m�Gn��G��T���l��S$l!���]��[���$�t6�4g�(�R.x�lg�T%	�Z&W9,yw��4';k\����z�������P������1���*�
Q�������z�m�?��}��I�<�M��������D-�R����^��N�B�T`Z�t�k���93"�B������Yz�|`��gSx��Vvsfb�6r���Y'O�����q&���y�}Ff%R^<�n:;]��������L�9#}����dG�����naHK+R����,eNXmq	�+1kj,������	>jS�����Z0�,a0`�RgO��>�g��y������hr8"����WY��8z6�z�rN8�-��#S�W?Gq��#Z:�eMF�Z<�_�����z�}���~tM�#yQ+��?��	uQ+A��
�&�W���A�X��9Y�r�xT�7��/B��b����i:�B��vL�������k��|��x����RJ��}Y�S��n�_)Ig�L��R!����#�*p���F
u�����������:���|��
wm2�������H����,'���w���=
��y��D��{�'�6l�|�+����������t����s�*�}��[s�����Bs|�~�_�4I�]SW�5����$ZC�2�aR��x8�/(�"�� r�k��k����v6X5�b���F��{1����]���HU"b�W��i���v��e�f��oUG4�ipC4D�U��]��Z�
���#�H��DF��1l�BN";
wnoC���'���@�NC���I�@��!���Ex��;�9���:V�"#;���FJ��t�\�����3��-(�����I�M�Y�����S ��{� �=%%�sM��LRH�����]�����
6��;i��IhnI��T����[��Oj\��&k�9������;S��2�\��#����o�)P����
�x������*�F�B��J��J�
'v��O@�ni,�,p��R.�U�i
�-�~��"�1�e����0��P%���-v���l���$��m4�T_��\ ���[rOEC��R
��XB]�
$z�,-��������H�a8^��,IZ.��f�SQ&�J}F��gw�����=ww����������(�i�0;����m��i��������r�W�xM�G�BRc�!�����#��U�����nw�C�oh�L�`<��������$2�6&�����A�a����c���:��[��~�������������MNld�`��Q$�6e1e�� 
v��������:Q�U��:��w�����#��~����!��c���#=�21�n�P��X�Hw�I�T�P����h�)�t$�����
����W�����������6H)����S%�)U�t�xn�
�3����8��	�H6p@SUH��~�����Q���y�A
�#�E��Qk
���f�|��u�E�PoP~����I�e4���'��*��U�?���X5�m�X)���2��n^�X�Yc�.b;����bb;��h5#��)5��e�U.��E6l�9���.�	E
uw"3���������>a��s�1��� ��lz���&U��2�}��PY�t�y��T�(	�s3�u��q�����1�q�����3�hw����
��v����jT�?�$�z���<$B�IJq�1H����{Z��Y�� 5V��Q[^�����jgul�J�L�U����{B+���e���!��n �e����b�C"^D�$��F^$s�����APk"�D�R��G��u���FS����x^���Uh7�^h��c*�C�M�P)��Y���f|`�����I�*{������L��fjd�s���F
t�4c�Qq�&�*�:���r��O	���5�2�:�,���1��e����D���.3#4
��OoR��P�%�2P�/v�r^'�T��.������lt*����o.���Uw/����������{Y���u�mV����~A��lcnu^��B(���
N������v_"�B������Gd	���{\'�jbv+s�W��7���v.�J�	6�@�q=��}� ���r�M/�+��mP&��$�Is^�|���m��r��94�p���n�2���K�z��7��M��&�w����]�^�n
~��T�~�}�/&�-�=EI|�[q�!~�����iE��Mh��|��/0Z��QYh4���_�k!���������#A�k�Qv_����/�C�uie����*`%]:�s����\	�����
����g�}��o�~�JTL%�E4������}�c����x���
��wk�:�?�����#�R������������h/�;��)����2��Au��3�0���28�y`�nw����0&��-J��p\��*@]��r��`��:�X��^,q��Fx�)�w����~���m�t�]�F:�CR����
Q���j)�1���Qe�J2D
O
�HfRO�86�c$�d�����vyw�����)�y)��AZ������s��>�2}������f���K�w�15���������F��p��f������&����GL�����H��
��2��G~��ge|�0�0]� �k9��=mL�r2��YK�������kE;�eogF�	��*��4��NK�
��K����@�0D!*���O�E&]�Ilm��3����+q��_���L\�����������d�S��?�e0c�y��9-)yD��q�B�o�
�1�Ut�_C�G����I�^4]
�_P	�:j5?���MDm���(/��H!Qd�����
�K
���yLG���~�AB��~����J/�l��1�^O�\��M�u�
���t�����_��v��gd��w���_���e��@l���������4i�������59f�t�m�e��:�#�-*�����C&'�c��jC��j������U���x^���&��I����q��`uk&��m����FP����0��/�1$�����|Gv��D���f� ^�
�����dW2��+��9��.�J*��W�dv{61�p/��h�(������	�v�?��R�D�Yf�a�w!��^y�*�(����T��d��-�0�#���VInUB����-�����PUH-=vS�Kh�53���Z�1����Q7(e���fw@��YK�����_s�)���t���c�F�������qy{���=&���Z;����s� �C�,��`7$��
��9�@����M�#�*��u��
���*�L��5+kg��8]�WH��b -7�;W����bY��p����Pq��v�2O��L8M��8c��9;8������H�K:�	b�H��6��u{\F�z����a��h��������Z�����S@%D#����$�R��}&#
��s��5I�x�T
8����c����7[gN��]�ef-��������E��u�v��^�uWB���I����8�Z��
~N�+������d����vi�M�fL���,o(��$D ����r%�K$T%7i�)��~bQ��n���"�L9�hd��^�kj�!�\����%(_Gm��C��A�����'�������X�$b'�L
��4/��GAd����F�M	D����v���>[l��'�����@�����Ti�~��eNz(�����
�L(������
@@_L{\����nH������2Y-F4z�s���fw��;�D������'t'���9���1ZiHi�jq ��!)�kD��#�*���~�g�A��N��$����,Di[C���|�z�L����D�*����{���b�\-^���I��a�_�����3��>�mv�j����jEQ��Y��Pm#�C�l�|�����D�����?�3L�~P�<�}�$��B��$pzT�6I}=��C�.W��*bP ��S+����������hG���5�|X.>f�8(���W[pz�
�k�yDc�j]��������F'h(���z��V�7��^�����&V��/i�������Z���Zk���w�?_-��G5������%�P���=�@*�����RU��F���g�zclEA���F���������?e��l�]c�v�/'2p8�W���B�)pY ���$�8���83���W�����:�i
�]B��/�)�9IP��2�
H<{�������!��BB�g�V�����+d��x[>f���xG~�vM���_�Fm7R/�;���P�����n�k[A;����Q��&�����/�oi����U��5,s����SM�U�����+S�G��Pn��
�~�!`�\%C�x������\�.v�O��#����gqt��E������;.��L��dO�d�w{�|
��5)���@l���<�L1��WEC�8���k�����]!��.*l�B�"Jt4�y���dV<�W���`r�
��~�%��\��n�� Sk	g�	-��Ci8�JJp�����6]��b����8�7�pl�l������$�B��)��n�>�a\'K\������@��H�q�"
9kD��|n�&�A���-tJ+��.����P�}}'���J������M���WS�G-����&��Wd��>�_���8A�f�M�C[�j��o����Nh���9��j�m6_�	m�ht��4a���6a�f�rh;�sD�Q���35��h��"02^����\`w�������$>��e���>�NK���&F�p����y�\��{�I����fB��x���F���������%�?����*���G� ���A���Y~*ha�|�b�gr����!I����#g��&^a�k@�58
3�5���N���������P����%/?���#�HA��!P����F�c	�D�LA�&%�������{�O��1Nw%��d���$�q�1�}�����`lw�Bj/)�,cB���\���9m���@G��:��q.����_9gl�Z|y����3��m��3�h8:��5`N�<���V�mb��0N��[�o�����w�%b��{t�BxEN.����'��y-����[9h�;%S�;�g���C+�������IC�R������
id`�
����F``����K���g���/d���HJ^�������1��>�h�[9��30���w`��u�sh�:^������F5lnR���1
M{�i�!O=~�{L�I�����{���~���)��&PQ��6MY����2�Gp��Nq���bU�����A��M5�����P��?Q��d���O��*�K��*�js/�]L�<]�(�7���n6*3�2�0�Bkj�~�V��j���wZ-���E�,��a�����9��GK7����a�s�R�����+���]l�����h��
z�g�����u�L������s������="�����<��5���>���O������.Y�,� ��5M��W�h^E+Q��l[$�j�������@,��8-	��Q���b�W%�L-��'�t�c��gW�9����A6����-����p�aTH��vvFo�p�[���S�[�v�i[;PGk�@�8���+4���\��W�6�?�Nh.�s'��S`��`�a����[$��>�Eg{��jH�r������`��B��J������x_�T������{j
��X�	������������wb'�E����>������6$��Yr����xb��<�5��0���|}b��U	��f��*0�<�������%D���i����%���U���M�D�P�#[�<"��y_��hp���	�:���C,�O\�i������&����$CN���-�z�96�#�u|��$M��
��"�S9��mdo�e������&��O���:�b�6�<)�yZ��Q+��aDXs�m��'}���2��^/y��9/&�������,aV[���w��X����-`��y/���+Dn�c[�K�h�E&v�O�1L?�MBg}(�[��	���W���5�Zo�a�N����U0��S�����a���S0|�'����m�w<e;[�9����l)F�zg������r�%k�]��8�?��Z���l=���k�2@���c�me��z�"�]wA���(sO���N4	�����B(�?r5�p�:���yM���B<;��`(C�>�c�R��p����DCe
���@WY���t��+��PqW�
d���a��I�6��n������N)����[��r�����bQ!{c#�9�S-��l�sC�����G~B�{J���W���z�9[�S��>5"h�P�/_�����\[F�0�n��Y+i�#�� �t�)uuF7�Na���9�!��	��d���Y����!z����qZFb���g$��s�y9b�����L�+Be�q_��-Zz��0��TF��
"�<�G��(A
�?l���4�.�m
���y��$Xi���&+�Tu^g����&=^����c�I.���X&R�

��n�	��������}N��1����]���8����$Xt�>�1�Sze����2�;�NC��z���gyT3�K�3��iE���E%�9��,8���#n�����Kh��
�W���P�g�%�,�����3�?@0|�s��H�%���Jz�m�~��yj�����[&������*�q���y��N@��B����:�	Q3
��������df�ex���O��D����^�o��o���y��{n�&�Gn��{�/�/H�o(�(�ItMf�Th�(���l�A���-U�/����h=������cL!%��O�K����zY] �EH����#�������wu����|	�1W�������t��(^'	��C�`bL�!�����Z��*[�Z(���FC�V�s�JFB.@�[n��K��x�ur	�nZ�'�i]?���Y
#��{&{M�����[�'�i���(
��'<�]�vT��~�����9PN�������c�/�e���sMQq��O �qLQ�z��N(U����=U��>���{�Li4U�jtZKJ43�V����:��Si�px6�9~��.H�'�i�qf�_��E�L�3�/��4$�I�*-��&���V����E�N�(��c���Xi��Kco�.��56��l��@�O�m�y�/��H�%���\d_��c�}"j�i������:��������/���H�l�D�@��<�hj]~w\���#VP����[���6F1��&t��f���I:O�~�'����Jm4r�O���@P�,R����Nv�������/GO���4���:�d��~�N��E{��������Q�'���D_[��n��8usL�s�L�3��o.D�QA�����������-"�x��UI��Juw��u*�~a$��O��a^����	��0���Y���!����e��I��������1'kx�����_X�O�P���4�Sx4���U�EG4�Y�������~[��� ���*I��kzNB�):!�1�;M!�Q	�'�'��L^��e���:P? ���-���vp���o��l��4p����������{����
���.�;x�q/�=|.2��@P���7VP�Hz�U��&�{D�~��{2'is����+�����:A<����PU����x��CW]�=�O�������pC)����<���F�pj!�Y-�O�|Nz:�K)ZG�#<�
�1n���x����p������;��%�5���`������!BA�����i��%����;b���a:���"��}��y��3<C-	yy��9�}�a�9l��1��m-g���J.�x8p%���p��t�XR��������$��;u���%��p"V�[��$5����`���X�*b1����.�_g���{	1FY0
���H�7�ZL������5���x�0�tc���PCqj�!oX'����E�� �J�E�_�o��_�:����rjw8��dc3w�S���%���uR$�8�\��X������
��V�T'���TX��s%���E�Q�ued�p��D�Z�0Wy�p��������R��U��w��B<k���e��Oo��	5�A�������������]�5�g���LR�FU�2Y��Z�gf��j����*�9l
��P�~=k��Y��w,^<����*]�/���L�V�v+N�����ZF5Vw�X.���+��H�����������l���`WI�*�q���m$��Z����U2�{'�H���7e�����U/���1�s��sw^��Kk���C�2��kt.�ho�9�/&Z���v%�c�H���Tk�/�����J+����N`����%-�gA�ZS�"�������4�"�e��jqm-����|��L7+4��@%6�^.�Z �|�����;e]���������^$��M
��%���|�ek�p��=v[m-hm>SI��KHV������%����~����{3Do�����C�&�D�gs
IQ��mf�ZgX��o��|�|��5}��Z�]P�n�0�!��a��S�k���j�W����Q��a�K}��R�~�V������<���e�6�SG�*���H5^������
��x�#��S��"Q ,���������\q�J�r���
gZ��I�x��Ty�?�T:t�f#�s���j���jQ�����������)�H8���p1�:)�+�F�����\�C���N���~����,��O9�������LzR�7��#�����/����v�eN�>I��y�L�Gr����/z�iK	[����k��W�CU~�����;�hq@�i�A�h��3��������� q~�r�@+t8B���S����]j?��'��A$����J�����|�/�t]��z�������!
v_���=I�e"I�`�A��<��"Ik)j�iFG��r���}L����������XK)0�_'\�G��r=�����L�����N\B�UL���(�3�J�z�}'���'8�#�Fv��70����y�78�
��3����lRX��<Zf��x�3�����)���/������@������%>n-���j<�~�}������Y�kiZ�T�����V6���������d�7���p���e��������R3����&.�;�L�(�y�w=N��D{��$��,�+�c�����$���Bk��6�uf��w'^����mk�=�mk�V,�
��g!�Q�W��muCH9�����������6D��/���k8.����nI�g5��z.Bk�G��&
--_n��1�?���WA�S���
L��t�A(�:��`xNa��25ae�F>[������y���I^Pkf���$1��gu����Y,���?0����8KF��`���%�i����?p��[����y��b&��IQ�*�j�����d-�u����5�����
Ij����B�����u�M��I�1P���4������N�H�AIi���B.�^SatTz�)���Ad-����Y�]���O�"s���F�����/G����(CyM����\R���^�Y�I�:8�m����*������d�����=�c�I�0�'�lP����+ ���6��\
{�`-S-�l3������c������������d%�1k�������F��	��
�E:����^��w�����M�%��M��Fw��N��o�j8&D�,��q��"L�e���&��sV=g�'s<Pp���1�����iC�X�3t-)is	��Va-�/���kwm�&�B0��Q���{����q3���
������k�
�
�i��m��l���qxZIQ���O�tN��l��i����?�/<����K��|%$`:�s)�EE�[��Z�B��I�b[g�9�g������yw#����]�����T�KP��p�^��`�fd���I�,j�A��3���B2����:�?�x�%��JAC;T�4�V7��6��	�{�l��T �a-�Q�Y�1�Wh18b��rn��G�U�����LW�4�]�o$�'������l���+�5�@����:J��.}T�<�~�bQ��{+�i!�z\m��+q�-��6Y\'����?��<�n���i�x��"������l����
���p��3P�������U��aW��5�H�c��Q�vn��%�w�����,S�4��6E�,M�X0J����>>��ECI�t���\'�Pu��Y��@�k����Q�8�u���?���o)0���|��7����2e�YK���uZL�)#,����KF�\�e#<����0��,]����	M][C���|���o���
��4X/S����C�<��u�Tx�!�Z�����5 ��0�x���k��^w�Z%�l.!���W6m�ZIr�*�7f�����@��{����
���T$_�	�)�6������������C8�x>��y�/���w)����;���6�����8���`7h{_<�����#����1K��W_�G���(D�d�;�|H��v������8�@E��n)�8:�������#�T1Y���#C��2����|R���m�5-�lVB�"�_Y-I�
������	H�dY��}�������`C�5��"wv��K�^6,�)g���K_�z���l�T���=����,N�@��i�3M�^\SSf�s���Q���<�M]\2�&���8���I@<_���W^_�� ]�g�T
����Ma��q�J$�+�2q��}���?R��Hg/M��>x"}����������<��j�����l�|��h?Pc��W��F����K�d�R�$�;���1P
{�UX�?�P\�$�-J?J?:O��k}8���|
V���
��)�_|;b���b���7g.�nv�L�T�����U���WZ^��*���7�TV~���".�k:}%��]��!��(`Bx��[#�_��x�)�x�<���P�w���
��+i3�>��|C���6�*�P��F�E�>[#I9����"|w��������$��w�*��,�e4c%���3�8}e���WI�3�����{c�?U4�0.$��/4S��T����&�oI��g�y�����3�����i����CY��5����_��v��+�Dv�_�.���-4����9��]Aw�[���4���#���Xl����G��A��U��
xVz>���� �m��Q$��>��T�������9�
B"{E5�v-{��(�,�$���i�����q6��W���)\�ZZ����^���]�F�5<A��i9a�H,u���n����
��7�b>n�(��Q;P�*��|�,����U�����\�I��"�Z��o�H)�����1�q6���3�o[��"3h�3m)���o[�N��g�n5U�����y�.4!�_/�D�+�p�yN�@ml�b����H����Ll��w\F�z/��GH�o�lQ���l�
i�eC�������'
���m������p_��	C
Ht����[� �y��������W^j�e�A_g�R�P����UwN%x�H�_Va�B�eO_K��,cQeG`���|��4�'��7!�
cftw%<�������}��7���&C���4�����Aw�}�2�pb,�o������r���?�#H��qVR�Z(�P�(����N��������^Y�Xr���6�l��~���)e���.�B���T��������W��;Qc�XC'��
���I�#���=��1���YQt]��8����_? B�>���tS$�mN>����m@leh�{~DX����p#|g�*"}4j������g������/�����?T��R\�}�Xi<*>w6s��r�`7m�%t��+�t��%�!0�����&�
J���7���O����O[�<�
���9�u�����p�b�_��8��
�&�M(�'�@n��
����~}��]=
����h[*�(cq_����[�0���b�Z��=j-�}-Zj�6���i.���o�7ji3�Q@�Z������/I^H%4��18��&G�@�[=um��������e�336���/�����~�=GG������EM
Z�K1��4�2�Y��OO����x�������/f������j������n��|���8E�J��'�d���s\ \x:>�C���2���)O������l�]E�����y�)��g���o��&��k���
����m���.�N�m`��yV	�}�rv�mOm���|��R�Ojk�U���j/fY�"o�E��K\��m�<&�Q�L���e�H_����3���b�k��������/�nW�����Vj���*��bG����������S�q-f�&�d�E���\]���w>I�4?��2�FS�k�S#$)��Wm��|=���f����{��L
�7�WI�@X�G��3�N���|*����1d�xQ�x\B� ���i�<J�_�jG_{W��q��"��y�-M��Z���gQ	
�����N�LT�k�S����>P;���@@�q���X��R_c��{%�_$�L��l�E0���j���L���%�U�z�.����}���Ti"�b��J&D���.�s���I�__�"M����#�q�l������{�3��	�q,Y��4D��e�,����������m'�������(��75�m������_��r�a��L�pr	U��#z���Z��mB������QX8�x��>A5I��`�>{�ldgX��;F��`p��
�}�|�=80��<����s��>��;xUG-� ��$~����r��=e�/P����],^�	����
2&^d�Op/��K�c��1P��9��>�N_� c!���,y�t9�J[A���A9?C���%�S�3��@���x��=K_E�r�
������p
c����� u�nDQs}�����k�O�bZ�eL��Y��`����v0J_n���g��)�n���vjd9���H���y[�co����n��5�������&W����\���YA�����F86��������G����5Y�"��z�KL�b�VJ6��1�=�������Da���������[6e�c_���]�������?yU���;n�JY_����?l��/�'���Q.�
�/}�����E}}����TS���R���������k�/�)��RS�R��K9]�Rv���pCe��[m)��j��{R��2�
���5��e	O��t%���=*P�y�K����)������K���4�,G�����:�������@����h9�����3�����W�d���r��_#�~X������nx����]K��
���M���O��9d���u�q{�}Z
�]B��?��_Es)���O{�:�&�����6�Z�|m����i!����F�:����<-��c�6�Gj.�i����X��Z�z-SN����(����!�-`���mm[�@��U�E������@`��
er��;P������
�O}r������$X�������<��I�&UkT������C%�mZ�����C����u��fMXr#����5�����\P����NU���||IA WK����n��h]��9�vt�&����R`�Q\npB���Df������$T�~��m)�!3#:���~K���
�M��}��s=?��Y�c �]�F�G��P9����w�;P~T�YU��1!��o�n�?��XKW.���y�@���h��#��(�%N!�����������ZD�dW[��g$���%g�HV�I�Kp�������3�����?"��^�u��>%�K�b�+rpN!^B~�YO� �<�j(]8����5jN�Q
�j
����7��Xp-u�F0�
�jR�=O�R����x�������X�u���U�'���e�H��F�������B�/I����&.���2)�
=b���I�n_������+�6���|/K��_��7����L�KB����N�u�l����;���������]e�
:wA��`����[S���<�&/]#�xU����9s�5����!x_�s���{����T��S�(�>u��)x���:��
��L��i�dyy�k���#�O_���R`)��w��k��Nj�����O=���K~��1d��[��K�{X���J����]�FC4����aA����ld���8g��vf��S��g������|I�� ��4^����X�����,�����g��{o���B�+�����Lo��x^�+����!�������A���������q�_�%�X�%VZ1�z�h�/��U��1y�B��K�z����R\����u�����C�C�V_2�E!�G�����������f399<E\����P��k�m�[2��8�������G.4��}�kj�_��S# ����/!��]k�e����^�%v��VX�e�nW��������^
��d+:=����k����������qk����D!U�9c
�^^�Tm�
��]��x];������^�k����b|�����)�2����uT�V$���<��8�����9x����r"���*��W�!N5PK�c�b-&jK1N����Y��b���q�<��>1)��WV���;�u���x�
}+����e�[sE������	��eZ���z���&��4i��!�_���N����vS_w�q��
W���qL�Z���~
&r	��B_G��:������Ue*��t>Ky�d,6{Y���f5�3��m$�K�{
���������k�����b�{�\�����(8z�E������6��F�\�}�.�5��/����d�Q���e��E4�|�B�������L�]�*�YG���S�T����8a�_TeiV����9�;M�1���/��l����<aGll�6</����O�8��n���=9�@O��@�iq}=Gv6P�� �������������?o�m�vU'�Z6�p^�S��]9�b�����J�����Z��o���]����X6��1�����H�����/�1�qA'�P���J��o�R����l���h:��U�u�L�?����b���������bg�����D������u�c���)+n}]&�U��%����?�}�%42�)�u�4����r��W�gW1G������iGy��"����\��%c��:T���N��i����9�_�^!YG���������_a��E� ���B������S���A���,{�aCG"�����.��l|8�n��Bj�����JI��x�e�m_� ���<�)r�e
�h�C'���h�1���o-��5��YRU���>GLD_m�8������#F�<��/�g����r�
������^����]YaO�,���=��3��A�g���[��������S������u����7W<������@���
^m�9T�4�+P���9/}�6�e���9)_��5<P�
wI_�
c�����$�������l�kQ�*U�f	���s>4�P���U�}�,j�����O���Z�%�W��/����T"��
�����5��>%Oh(�%����5�H@�g�����%D���e�6������i���Z6�7BKZ��.�Gp3>L��>���v�z'h���Ct��-���+���La��=�P�u��J_���K{u����������g[z$j�p���y������'�*8�^�WB�J��j%��v�B#�9\�yWh�MV���������h!���w�"4g�u@����&��El��+��4���,J�L\��"]z�`-c�%l��Y��7hV[�,[3����`��\?����A��-�c[7{�n�����$��1K����g�5����*��{AJzn�t!��"I��z��=����&��������{�p�����BWX-�GM��@r���0����&��t�>���x Y���A����P��of�����Vl+isLu��g�	��B��A��3B;m����	Rn�F�]�^E/e���A����9�1>��h����K�C��o� 'Ep�G��	��{�y���l�
;����i5�{�m�E����x�%OSu���{<yk��n�\-fP���R���F�5lp*�x<�n]�&��w�p����0�=^d��g���K+j����_��"��keE[�
t�8��k�>1�D�������%��U/f�w����0���0G������?���$�mV��686>O�Z,�gkr���l^�Wd/Q�Z�~�����z�'�����&
'�v=[e���fv�$x�jK2�E:2�.�$Hf�w����y=�R�o �x����<��
	��N�Ru.!U������*��U���8g�!��A���]�B���� �/���X��,�mZ�O7~?E�,P��	��S��������N�'x�N����<[k��f�gi�&6s��'���<��{�4qf�tf sz��X�X �l�a�.��Q������~V��{�{�jx����+�������W`��S��M1[,��,�r���	?�}��e��Y<'��E��}����Z�	K�/��x�s(_�
��{a����w��]����<Pc����}6�W|X��9�g�{@L[\HA�l�R�EZ�?�������:�#K�Hx�'_fKm��Y��<�����}�2��c��2�W�	���8��^$J������	!�S1�p���mI�����NI��H�������jX�
r���h_q��xY�X�5/�F�U�M��<I�P�{�{,�%��_�����b����9���a���+�?�2��-H�-
6�gs����oc��B�NI
r�����}�����_Bd������~������������\��j�'e�����������g�*@���+�2���wy�/��u��L������*6E�����<$����ZAA�){6�����"Y�����DI4C�,�x���,�/$�q�3������g_��b�v��^��}�+��X}!F�)��8���G�V���=V��}���JA�+���/����G<������V\�mA�\�T#��:��+E</�*:}W�%�K�[�+����-�0�YU����J�-�@�n�����<]y<����e�O�{�w:�K��fw������G����>R�nC��j���h(]U�"�F/<�*�f�SoV���)}�����|/0���m:�����k���������g�	�SP'6���b-����L,���e�|x,�Tn�Y����av&&�PL���~��\���>�gF����,2a�t00�q���f�<N�����Q�}!�lw!�8�T�$O>o�9�v��+q|/����)��<\��)t06E��	�2�a�P���B��UX��n��h(b�o��1T(��^>��t0�:t�]��9P=sj?�]��(�K�������W/�z�m(�tb!_O#'l�N�P�Z�T^��P*���q���_ �X� ��&Ip-��&cO��G5e<>e��y��r�Uti�:�Vw���;x�?�>>.��f�I1��wB`/*� dZq[�{�D�����Fq�}��"B�1�{������x5��d:�!���
R���(���^>��,��\�&����[�F�X-�~Y�k���A�����gYP��HL?��:����D�Q�]�	�!.in���=����<��:9����P���N<�b�������0X��J�4[�W�����P��U�u/�	����C���&���#F�����m���M���_��+3&o�J��$>6�����_�ik���:�GBx����mPOLd���*~5�V������H���L�����R���S!Q��>&����y{�����:/�B�_��	|.��{"W��t�������!�f����{�F���R�\lqd���,�S��,����-�M����|�]�Ae���o�����+&U$e�B����G{������QK,������c�Ea������*XL��+�N��"�XM�����0H���Kl�:�����+����X�(��Gv��o���+�z"t!������%����	)�+����x�����V���hc�ZN+�r:��P�0�*�� >��B|_��J�����	��u���Q��y���w��]R~M���k��T��'$����,7�.@s��K�LV�B��/���P2z��������9���T]5�Pq}�v���7\�89���k�1|����Z���s6��U3s}F���_�[�u�(�:P�'��h������Y��1�5���Nq���8�����,��G��C��������=��8�b�v�G�'YnU��5?W��k�#��B,S\��p������F����M&�4�����U�����������I4�o2�#�A����J����~��){�KE�WG<�{,��<����}�:�m���������~��*����M}� 1����D�8��!�e�\!1@{l��X<�O�Y�~�/s���R� Y^����#0��)n��CO��=.�=�������F,��o��"d��L��r?�����������]�f%s�/����7^l���A3���?����d�>u~%��|t`,�df�;�!!�3)�m�?����s�3��]����w������o�M������]Ch�������Z?�i|�A�v�
l^'E�B���i������
�ur�2����V-']1��o�hq��{��A�R��m��+�C����T��K4sK�BH���Q����v��	�~*�)�����S��{Iu���n�����$���9)����u&�l�%J t��������y��||�������Q����/O��%_:th�\
���R���&��|	F�1_����D��(2�A���-d�(��F�m��R��6 ��1�&-$��X9�1����!�V~�C���?���M"�!Y��k|�O9VA$tW�����(c!������8;��P_�%�����N�9�<�����
���t'8�:�[�2<����a�`!�]��3��GC��1T�f.�4fJ���o����6�i�{(����+wM��������x���/�v����%��� ���g�s�~��}5��'�A�E��$[�-��_g]��;�-�t�$2�:��b���)Z����`�?n({�?��E���i[>r�����:����vIr�s����Y\��"��V@Cm�
��	��4*|Lhw��0�������?�yx�zS>�G�L����N373��A(�S�����N
��Y���1e$i�����d��B���O�E���gP��Ur���
����o�(���b�>�V��I���h�c���o�)i�p�
u�T�����SOa��&�7+��{��gn��dO����&�,a+��{���CQ�z�5���ib�	X�N���d�������\��m2�%],9���R�~�ZUS��*���C(t7�:���	�O;�!�O�y��`��gBmx
<%Z*���ry�N����hkV�U�t�.�����	K�0�[K�4&	��	.V����o?���j_�����.�'y�|�:H��bS������P�pag�PU��E��5���WcO��4���������\2�&	%�=%���+�W�y���*$�����{t��^�����Tg�j�o�m� ���
���_�WW��i��W�Z0��?f���������"8�G����7a)n�`�������0��@�4T�p�������5O*T1�P_}���wOH��g���F�0O�GT#M�
�:+�u?��������D�{�B�!��/Hb���+q��!�
����\*A�#^��8�	�R
8����h4���o���R�#�k<P��]g_��h�I�T6F}��/N��W(�[���9�?n*�-��j����e�����t���������oER����q��1��b1,�	j��������Hb@�N	�[�D���S�R����k�������L���D����/y����o<��F�������S���X�,�*	Q�E��"O���X�
jK�Fq�z�,^�]�%����t�*��N��a����������AJ��5�@������2����~L�%�?o��<�s�
�/���>pc��#1o�������c�W(dX�l�f������y���������m�p3a�}������/�q�,����P[!�6�d}�`\#����@��u�rw+%�S�������\��9���%��/�~E��Z�&�d�^OS��
�_NB�C�d�������<�~��j���@�sw[���F���|��st��,���p`����C�Q�K&�����S�R��;���Ob�2�3��xv���\Guh��������-���5��k�4k�B��{*q�ulDm�Ds69��b�w�����8S��MU��7�	�V���m�u�C"1������V����r�*����7�S����M�����aHf�s�B7�e���["p��
�����������D��=�}��G��s�D.��������3YfCHj�EAOY��?a���F�q�j&��ww�=��".� ��^\/ �����Z���e��X�7B�IK���-�z�����-;t�����X�[f�bcW\���16K.D6���N�BZvH��<!�<����Y�O��ER�98ck�zj����HP���X�k������b��;���I�����^=5�l�+���%�B����_$�o-��������Hr_��#�H���I��������(����;o�b��q��II0j����M����W����
���B%�_�|!��d���,o(4>dY�,��\{�J<t��|��3������S'-<u�{���yW��Y��v��z�<���7�*]�7�M)w*�>��lT�SK������!��R}��P}��-X�Bp�R=	H��v���`a$"!T���7}��������c��Y:������InMR�����c%��������U�@�����{��0���l�������UY'�������p- �e�WX�e�:N
�&S�b@qa"4>@^�'�N��[K<Ja���\x���5%Y���t��YS��*;�
F����'�y����c����8z���rjajp��/q�[�����v��1���U�Wu��$����<��>%ye1�5N�E`<3��vo�6^�+�c,����q�e�^�=�v��y��fD��=�V�Mc�_}���W���hU��xB4��Ads�M�Ap��\@o��2�P<�l�q�T���2�?��?~�@^"�I�~����ud�P�M�G���g��yR�+���x�$@�|��o�$YP/�i
O�Y?�����vo�)C���]���a5����K�\9��2��t
�#��1YoL}p
�N����*��7��K)�]W~�����E�?�?@��3*�#B���t��k��+4���&���6 [X<���|�-$�94:D�u�q*���O)��9�/~���U�[Y��&���l���VF��b��������M����p�F/R@�7YS�~�l�G�F��������^=�>���O�J�MRA+z*���JI�A�I��U�d�	��B����!d���������r �����V��k�y�i��������76:3�8�_�������+�����8$;�u[=�(�����C,B	V����y���
���1~�������Uk�z5��"��~�P]�K�*_&��Snz��X��KT�\�Na����������=R���Y�C�a	K��&uC���PB��3�B����JR�-s��L����M�$�U�sa�Q�������]x<�����(�w-�-{�����)���lA��:�\���`�H�k���1R��I�=3�M?��+�#��[��&K
����������&`�9���L��B�zL�#L#(��rB��Z��A�?[���������GH�eL���b�a���`K���+�PA]u�� P�U��^C���ML��WU0\1�����AhRpr���j�I�z��tG�xr~���(B4��d��x�_�9�\��w#��T�<�F���WH0����'&4�j=I�)�����Z�b)�s��6��l��&��bCuX|��Z��Os'�������m��H7���@�1�r]�R���9�b������^��u���X����i�5�Q��s�L$�j7�\W��C<�o��D�J���6s����F@���$M��������Bt����JK}r:�F�t.����`�M��[�Uy�y�3R^u�k1��
q�K����Q�gl�Bi�I��eT
��Hu���1������-u|���}�f�8��jTs��?_�����VV�����*����%�Np��I`�hau��i&h����0"Nx�����+�A��J���_!*��������SAO�py���ou�gU�AU�Y���(��3���'p����P����'��Ob4��j	s��B��y�$8�k.����f��Z��%B�OQg����T�Z�1�g(�{��+��UB�p�;E���������<�B��]�;��g����z����Q��vh��x�/�Zb�q�����&��#TA1�|�!?��@W��U�I��A&�^��9�Vl|^��+�3��
6�>���Zc�7~��
y��/Dxw�<�1�C2�p!��h��E����&��!�j!� �4k����J�l�y�7�(9�/�b�5�����o�v�S�R2�]���n��T�������)9io!t�f�_��j�2[/���<����x�������7�r������^�X��5N�������t>�A�����R���I����%i���
h{���_k���i��.��R��#�H���
�0�9����4
�`��_��6|B_]4]AXH�"^��oyN��
�!�
~:�w�4L(7t����jL�-����-d,e��S]�T������O���]��������WY��G9��m;���*���*���)�E�����v�����/���N�=�p�.�>P8r��^�j`N���=$��!��@�
H�)D��/$�D��k0
�j��=�(����2��f�*b!������?	��EW���bo�����cc|��sA�J>K;����1A���q2�_c�R��.�g$���
���-�Nbs��rItL��:TWc	��>C���I�Dk���l��^Q_|�%�#��r��[��6}���v�l����[���c�����Q��d�>��/�xXb�BWRVD�-�w�����6'5�q��o�+pK������"���>����#Z�U���������0��'�/�����������RMe��1����6O��r�(/�6�-G��d8�����Lq�f�$JJ�������KV�2�,H�k�t���1�!
mS>�x���,����l�C�k�k�c�e3�*���/�\�c��"V.8�
W���}�,��-��
v���X�x�VO$J(-fE5�B���D��%�0V�Tg7sG�,N!�E��99�"|�7�Wr<�&���e�O���$J���|K7���	��kD<g��aIa���(�#�j����������^�M��[�5j�~����j�+������Z#P��	JY8�8"����V�a),h1d��S��aN�&\�)�G�*�Z=�!��&�_^�D@*P���yA��r���zv�[��B'��x�U���R���l���-��p�n:��aCo��?�b���|�������!Q��������
g���"{�|IV|�����Y������{!�c	a�� b�USmJ��L+���h�A7Yn� ����[cn�k�t~�}��O������xU~�Tk�6��l��wY��l�kp����l��M<�W2���b��W��-��x�\Q���-Y� ��<�A�B%W�P�T��;���vk����!?����^Z���|R�`�}������:5���@B
�X��\�5S��i��O�h���c#}
�>=��#�,�\�MN�`����H2�j�%��	E�����#�O��t��/B�@��P�q����<A�5���6s�g�N����~�$�46M�!�+4������I�����F�	Nb�9L��.�+�{�d�
��4C�]4Y��k������\�����A�4p�p$m=}P�ld�,���[,6�W�lB���j)�������Z�U}#�z�e��x�9Bl�8�D8�0e�2Yof�*�L������W��LIq�<��_}�1K���qt��j��1:sE�\��k���
r/�IB~D��)��|d^p����6�>I�C��f�yff�Q�>������PS��;P_8�r+U<�����,�_l�E��
4����XW��s8�T�`k��0�T�E����Q�B,�_4�w�)��=
wj`�z��V��V}F\�{!������E|,�?�a.�����(V.Qn��.?c�c���*���tS�L���}e���*�q�?�9]#�S�)��
-s�-y�5�/�
@��sr:jO4!�|��7������l\L��hU�}�?�B��o~���o��W?�u�������MV����'��-�����G�'mO<�nfl'�^��*���At5��?�6?C/=/dZ}�W2p X�^��o������L�tX��'\C��>E��������g�/4i��$+b���s*�iB�
u
�H��������
�U�o[��D'H�,�����+�-��N���.� w�����+��P�������!���*e��������rE�l����p�[\?+���>���\C�7���Nl��
w��|�/�##`)�Q�*�JErcE��d�w�������Or*��f��M������=>B����a��''6��QOB��V�b���8�4�g(�Qyx�]�B:���g���&fZ��|k�y�t%f���N���?$n�2�I����C��m�Ec�7pz��GQ��.���=�[�{�X(�bEhw���v��B�v@�n��q�v��@r�*��.�Y��4�(YX��4�n����N*�CX+���9��L WX��i��lI�5�y�Z�����z��|����b���9�@>a(�Jj_��7��b�<�2ObVp(��0�,��� �#?�=�0����Q�i�2���>�|���{��������S4�����]�hW���%�X� �����p)��q'���}2(��#4jf��@d-9FHxuh�L`�U%@>}��M�w�7��n)]g�$^#������nh��	�Ds��=��!|���J-���ba�� ��4���@�p��[��/4������2�v���a�$�D>ARL���U� i|$���U�oC���������W���_}��,	��P����_v*���Tad ��UV��(������8�l�?\x6$�����0-�U]�
�:��L��T`�Xc�pvW�hs��������E�J����)���uJN�_�>���Ji���%:wu"��%�w%"a_���&x�Q�IZ�s#�����g���|��������
�����+M�%Bd��9c��7����m�b���e����qNwHP��o2���s��t[������)X��jV�rSn�|'bNI��M+���w3�o}.��wS�
{����k���
���3/���?Wy��_���>^(�B����\Lx�<i��������� ��������Q4�g�����?��K��7?��3��Il�$N$<pK��=d����O���N�7U`*?��m�,�R�����qd����-��V�[����>2�w��a4������J��9&���A!m�
�j��Y��#�VkQ�7�)�S�"�X�=�;�'�����d��<�-_�P2<�	pNh+R��cQ��d���J�?��~%MN�]��N���k�j���o��9�b\#�mpf��4���d5���$���,e��J��2{4���,K���b����k����)�W�P�}�2�Q�����dH�#��Ba7������jGQk�g���@Q]�����|�$�g��C�U���>�������;u(j.��(�����4�>W��dp�I��`���Eyh�x�J��^-�`��42p���2*��ev�����:��*+`�M�>0��������w$���y���a�N�u2�*+��vK�D%�Z�`�I97�J������'?�6��SuK}�6��n�LS1'|r�k�-Q��!3���B<��fu�����Q����2����vR]���B�����x�����S���s�*J �T���`��Kp$!������e
�0T@��������$���#3��+7u��Rgw����c_��]suP
�%NP%J��s������W���)(U�-�%���I�!�!��c��sU`����xd��e��8m����~��bf�6��Z��R��L���1Zn"�<T,���#F�����>��}��"yG8Y�@�B,���O�(������jtsHx���l.��ph`���_�,&4�mH������^���K�/�5k��&�.m
���I�B�����+��/t	Jz�u��3�m��1C��vR&^E�s��T�i$y�e�m�O�J0���J��Z�'n�,�5�=�,���a�
Q����	+$��DM4i]j�o�Ui�Sukj�6Ae������84��L�b�=qm��l�����$v�]Z>9�(>�S��������$��MpJu�$�u�Wy���<x�>�>I}��/T��r�T~@}�"��{���(=e�������vq�l�1��U�*����tE����b#?y���7����Q�"��!,��d��N��Li�7��,�+��q�*OD3��2���[IN,��S3.���,">�g(����<�Z|��M��!���P�B^�������'$fdyB�*�*�,��������!hTj�.���3�>�c'�HL��8�o�?H(Db�II�r��z��*��-��F�7Z�&�I���1>���h��������sbRm��;�`�+u`*�n��$�~�Tw��RB�������T��'��'�G�������o��B�*��"�������=���_��2�k"��'�B�=� ��gO-��ut.��r�-L�����Au�8+puFe����	����4$p���eT��;W�B�xw���&�p1GB���h�9���s)����e-�|�P&�H�����w���F�*`�0�Sq3��b�L�����T���f.C�����i����@�)}�H>��s�(��%�5�6�g����N(W9
S�p��W��jxeZ�L����1quuL0�^�2�t���|����['Nq��R!��f|����H�v1�zj�d��l�O�B���>%Z7s�(���
W�5o��(�p�]�(u�C�?W�">�b*����{Ivq(��Gj�di��uK���D�����w��4�p�xD�R����i���O$��%����?5��p\���dA
���V�$J��kH3d��S�}�(&�}9��e��H�����f����w5�Hm_�9����`�I������e�$�uHU�L=��������i�KkS
0����J�wL��R���������Q#��XK
���������*�R�?B���%Y�f��|m�	��/lj)��I���rQ����P����SB4�rv��H�,�[��Va�Ki��lU��N>�Q���7�	L�by��]=�%s3G�n��<i`V��[�F]�y���H�/1�s_}+"	��we���H'z�������ii��Oy�UZ��
�@^�)�����E���9�yH�^�7�GB��WV��@��c������<�����4Q����F*�L��9����)8��K�Z�z��(�����D�~u���r����@@����I5����+��������gb��x�k%�����������{��!�$���-�j��O�m�4p�i
��x�JW2^F�\����D�sFF���-����,F���v����-�m�AEkT&�����H��3��1�Bn�-e�qD1�U�R-�8.�Y��V+�
8/|P$�+�����HH�s�"�UJIO����`0N�AFB��H����l����l��.,���.�X���rJ_�����,�����u[S�t�x����[Jz�d��:��tK-���j�oEb������JM�
�w��7�O�g�EP��3"���i���T��-��=���2;�[�����Y��0���!��GBa���h��IJT(b��W��Q��
����������IL��O�s����hO���UX���5wH��N���<�+����x9���02��W��
���� /
#��$���F�20Q�^��Ea����j��jkq}&��L9+�y!} �<T?e���o)>P�_��mK-����A���1(T�F���FN�B����Id��c�F�]�S0i���+�R�1��_�P[�i���y�x�@PI>��t8�|����x���wD�U�HHmt���!�F���
h�LQ�U�O���v.���wi,�#�B�~
�LAXN�`w���Ch�����?��x��|{/0�B��[
��z�iwm���9�Z�%
��������XX�X�*��v
���RfB���P�;��P_�H&�X�N�q=�*���v��+���"
"E;��h���Cs~h����A������
�<P�M�T\wX��S�n-���M|V"�4?��0��0>L�L�@�kq[*��������p���M9wX����|,dX��5
��[�����-����%%�����(@I����!�;�����)��A�=���P�x�2���L)h/�Es�A������!+����P������yi!P����v�!7�%8��J���cR���n��u��gY"���=�N�a����,d6����F����!@�l`����\C�.��?g�"�lBC�&x\���v�*&(�$�|�+���3q{���[u8�@��RHjm�a�9y��8�m��~�
�)�9���'(�-O�i�Vi���L���8��^�	t�4>1��`6�'��o���TKX|����8���?S��Q����
�FS�f|�������
�4v������[9��$�X�CX��J��J���6���6?�����?1>@���o)Oh�L�h��SL��g\��K�U_���������A�lRx� �����<>q<�.l��*;7�Jq�F�0
���Do(�5����h]Gn
�S��Z��}�~H���9�t<����P���5<��`�����C�c!�->V�&�������U������LZ��I�v�'x��~��������[x����%�N����������L�4P�����d�����E����P<&�u���� ���u�6A�����;�9��n�x{���pB
��K(D�]un)�>%i�e6��>��
&�[|�nY��{�`�p�{��A��ug6�5�g������"&H~����f�4@��]��a"�����^E�SRf�Nm�jF��������L[f1����G(af+!b��T��FZb�-/R$"��O^�w r���h2�Y}g�f0�f~�!k.}L��t~B
x��|�����P�8Vs.��������n�l���U�i��=b������\�v������\��W�\CU�L�����������
�G�j�sa��/ �j������*�sj�-��Qug��K=X:�O}�������V+�W��(M���[o"?R�����y���h�+�N+�<3r+n�(b<�*��P$����&�������T��������Fk��h��P�D|"�O��
����[#����hwX��4I`��XD��M�Pj=d�
���y�����f6B�Y��\�������6@[	B�p�V��qunT�������C�JH�v�Y)�����P�q�8�*�����g'�*�i���}��%��K9�\\��_����<���L�����\"-q,�8��y!;���6��6���� ^'�E�/fZu�������;�����s��m+�M��Ou`rP�*��e���-��L��!��^��tH���bNX��6x���������>&�P�4���*)������C�P@x*���i���W��_.�`R��rO����u!N�O�d�$%~�P��&���bu�x/|�kp���!1� ����(��597*vi@���m�n�p0HAVU����0�������������d3chY��q�<9�n1��I��Jn%X���2[�S�5 ���T	|��@��f����Z�y���h-�����1�7�oS\�mzw��rQ�s���b+�����1	��.�B:�tP6�U�j�),�!�I:J�FyKe*<zd������I��z�d0�K�KRn�?�hn!QZ���T�
�=������i��<=8�F#�����JUxZ�]������Ag��^��&���d����9��9�����/�_��Rd<,����`J�9�G*�+������#���V���!�
���K��
K��8����c������urAv-H�_�FF��`�j*�L��B�%��'z�1SW�����f�BD�S��/ViQn�f�0���|�����e����r�2��c��9*D��m��+��R+>���k��D85�{�p`��;Y�`8hK�Zw��������>
�
��m#���u}>x��P���j��~�B�������%/��g�h^xj�����������i��\%�P���J~3>��gB"�}p(h�9Z���TNW�x��������4�ejP�����A���;���7���L�X���7_�L�!s�-'���r��y�����e��X�����A(g�#�TD
�l*x
������A(1[Jj��<����lhH�T�o�K�?_��S�(�C��OB@o��Q{T%�����'���������;!*S�c�b]���Ku����l�J�>�z�(�,_�6=�w�}a|E�1����� J��V���T����;��D����QX1�����
-����1 ��;\��~���� tUh����}�}��F����~HU�'����U&p�t�_
1����M�	���
�����p�����]���=.���U�|�*���w��N�[V����R(���0��1��#�)����c��u�#r���B�T
=c�<��Cq\�����$O4R�`z�j��L���^�;��w��bc��dmY�v��B��).�*�^$O3� �n8pa�W�����lE]8�f6]���`+����c��a�����������&��a�r��ke��9���V!�G����J��\�u1�:�!�}
�gt�����w(����2����TwB���?���}�n}yR����X����y,S�C[E�������/\��)��q��Z
������B��v>��j�qq�[�	�C2��8����?���@
���|���8n=�B��K.#N�����U�=U-�~�?V�-G���,��<Tj]+?�\P�wU��$�A��D��,��r^��&�Fxd�����zp����"M�V��O�6�=���[��p��,��W�����H
|rR}�%��/F�/�e��6T��zR�P�qU�2�!���o��|/�fi���{(P��C��.[��������k^�RX��|��zDphxU���?��
�=�P���m_��/{�_���co�]�,�}�JZE��D�������D���������\|� *qT9�/���;*���~W.-��='g��T�	�\�R�T�u�_=���e�1Ie����Z���RX�������T����Y:t������{5!�DVt&c�D%�R���Qg�4�o��������T�Ka�7�J1H�? x����*1��D5�EI�%�%y;���-�!�#������3��Ri���*4R�3�U��	G��������u����j�@�����T�FF]Q=MU&Cp\a�6���H������$�����RF{��+�H�<mF[�B�9���p�tJU�y���BB':�L]N�����=��E�5�7�z�;E�4�
|��>���\�nI
E�3�N
�w)��Q{����g�d�`�;�"�D�q��u$?S=E
���>����\���'�+`�\@y�����6b�k	(SND4S�����:=-��Q�{X$��������?���&�t�����[�7��F��pDIIB��[X�%��'�<~�
V���X��%ZO�Fa7��EA�-�GW}��d���gk�Y���W����v(�]#�H\��1I���u��z�!�2���v
���#
���~�^�O�E5�)�Q�as��tJ��!���)OS�%���1�`���W��y����U�'��M�����r��_�.I0m��OtU��:�"�����J�%]���=;H��F�[$!�r���as]&����d�����?�C���
patched-gmon.log.gzapplication/x-tar; name=patched-gmon.log.gzDownload
�j��Lpatched-gmon.log��I��8��������]���t��o�uf�����Q$$�L�2������2��(��K�n|�b���rv�^���W�n�l�4�vW
'��J5N�8�k�s��U��~�8��8N�n[h[<	�/�(W��?�?Q�J�������m�F�N~9YZ��c��/�:�Q��4��������^t��	�~�'������y�m�2O�(��-��RT�h^9��z@h���_�l���?q�~�eR��Jd����PB���06���|��!���s��`�G���]:0��������+p�YS�M�l�F�2�$?�I��W�����D��g�=�;��*Q��Q�JD��3p���b�	��3}7v��Pu�&�[�����ED������������?�C�����T����.x��d?����&{AA��e�=��}�O�.��������I�&�/i�:g����P�4=�L�������w�xN����x�68n�-�8 ���e���h`�WO�,R�
����5�-f�X|���:��&�](_�':eD���2zu���y���yD�.��.�l�;o>;n������Ob[����R�W�,�#d��,��������~@1�:�5
�.UJ�CN�������k'{P2o�?1r�H=�K%@&giu��;m�y1�o�Ms���q�`g�������/����|�D�)��uALU#����i�`�-��L3�T�Qe]�������e�	5:����e���xr���N�w�9*Q|�9:����N�,S�<8����H��T������0o��,������C>?g8�$�\>��[�F��*�����<����2�C��F�8�k��d[���1$�?g�WG�	�h�����q@,��_J�q������f+�o�\�5�e��bo����~�V.����Q��p�Q��6���t�<�W�8�.������2#��������j�]<7����9�`�
�\#
C��T��*�x�8����O�*9(N#��hm�H!'n0�	mQ�`|ux~���������)�'�<�50��@iO����"�	��^�`����*�Rx��Vb|59p���;�r2u���q�<vi�V;���v�i]o=��O���"�2��i|�:3���i��O�R2�AE!��Lw;:L�`17j�5#;�u0'�n4�N,�Q�s
�[�����>��h�H��8���zM�M�1���A�*-����n@\�J���7?(����^=���_�hE���#hCg@�	���<�N��o��fD�E�K���>~���c�^��e �����:��E���V��&e�.c?<7�Q<	g������i=�����������U���y/V��������z/@[
y6���}0��L�R����`C��ra�w�������o��.l7]G�?���1y����r����R8xx��	�G6}�1]�Z���9�����kG���~t�}�9R-@��n�j2��"�����#v��F#��
K�*��jWT��P8�>�N��|����`�Y]q�y�jf�ynz����y$e7e��}<�.�pbY�'}1��F��Hj� 8�7''w'E^d�IV�MS�����Vu/2P���]�U�k)����#AdZ)�A>�
;r����`)��Dn���T:�[.��\h���	</���Y��]���%��S��;] ��(�D��=�J��l�w`��V��`H�w�y�m��6��_��cS�&�~U��M �R���dd�qTo�+>i0�n�;��
�[e;���W����r�����PDZ�(�Z�`��Ko����a%�H~��w�7��uI�\-�:3i����i&|��#As���.������y�AK<d,�����\�:��0f�kv�����aD���f���K�Q}�e�� i�j�^��P��U�+�x |z�@X3;{�M��=O
}�r���[m���U
��nj�
8���)Z�cxtD=��R3����������C�(���[��v�9H�1.�Y*h��]�mM`?�6�0���p����E�d'�'.z���������7��|N��qq~Y�#2f(��G��>���9��G�qo�Cz���i�c$��ZYp���#202��OY����C�����|�%�'[���s��c�|u�?��I��n �(=(6.����MH�o��um�[|J���������>4�C���e<Q5���H^U��+�E��M��R�/�K��X�����\:��0��9)�D�.t�]n���q/�n�k�BU%��q��#s����GL�K�=�T*��k1�38C&b;�Lr����p0����U�����F�n�^}%Y$<���]��0��7�����8��)���8'��NDt��1
xU���|�(��+��o����Z�R`�(��1Y�J2y�����������,�d������R���
�P�6��
��"o��0?��	���!\z�u!��E��g�I�BZ��hl��L(�K6���v�;7�Hp����|F�I&�Ug�9�L ��2���J���\��!_�7t�=�\����%���.�,��&��#��4B2g8 ����O�z���g:\�>-��b\O�X�@��M�\��B����6Iw��
��XX������0y�|�$%s8�#��i��	O�,�����v�74�`��.��K�-��I-�)�tg����Dvc7X)&9C���5�g��3#��G���|�Kd����' t�>.��K
��U�T�I����9�w9�r-\��3(t����<9F@�z'�z�m6����L_j{e��f�^>�����AV�,��)_���;$$���T`��.h�2yJeU[.��"&U�#G�ryq������I�
���������A|���b�+�m���@��@sZ��U����������7y��H��5�GE��[@�@�8���C1]u�ETx9N'I�Z����{�iy2��n�n
�ll�M���u �8�9���d�v�F��)
:��(1]����J'�r��Nj��xG��+�=�B0�='6d�����BR6|�[#$�)��.�w�7z+mV~��uD(���|D���d�WKtq">��C0���]�����X�jr����fSp�6���aj����CXg�-�(�H�-��!B:����c#
����vel4W�jZ&��Y'������.�Ir���"�����f�G]�p�C���X'r}R��3}lSS�4��e}�����������9�������dN�1#�Z�

�����A_m�]hV*J8�����������U�-�g������O�,��
tt�w]e�����E� (�m��\�
�^���J�3��U-�+�/�H\?`[!�������c3QGq��.����LR�~?
���d��_���H��������K{����N�@As;c���0��G{���w�L�`�����M���gu)��fP��v�k�B;��#�C�T�T-�D�����+�]�>�Z7-�fX82I%�E�\1�����AyPl��H�&�"y<���0�����3<L�x#��=�������H�!��^4m9���Ut.�v��vg���C<Ye|����+(���F�n�b>K�����r��l�f:���+��N���P��y�H_�s:����mk���3���k��V��]��.���B�������fs��/���8
���V�J)X�5�>\���q"��gY!y`����������X��J}\���2���(������#�}�7����MD*	��.'@��Ie��>�n6i�������������r!�(���Bf��a��Ik,C���s1���|R��!]�7�.6���T�����q�u��W{���cS�
:���a���T�*��4�	w�����J�7���f�4C�G����n��� &N�M�cE��k,Q6�&�>�9�����������M�����.�����k���u���7���$j#��M���[���e�n7���Un��/�b�Pu���T�[���w���HC%-�������v��w���Z{|C���#�0�Q�g�y~�����8� �;P{���#����m^wili��%o_��Rd ����A���TD���5�����2��i���yn�U��
r�-������Y����?�g�Xs�j�Zc1y�}��s����������w>�F�z4?_Qy���eg�2c����umw��S+�L]�r|:]��N�bm��, ��1������V���XTV8��� �|-?�HO��8�!�G_�b9�=��y,�'/���*�f���3h�?�}��H�UR�'a91!�t�b��_:<��2T�v�nh���c#v<�8/Y�=$d�!��!�j"���O��
�_�2x�nw	���X/��������Q�'!��V��+y�,w�����(<�v����~����X3H9�j����-h�>��~�����(�|gh0�d�kI���?�
�P_�a���B��������D�;G.��������.��1t/ 5%W��4�(������������M����'YR���z���6�t�o��p`�`Z�����++���vn�N�tx����-B@F7.���qE�Y{�F9�fCY�$4��<�J����-�QU����;HX~]������D
��}�����y�
�R�"�o�,-��Y	�����A�/I�L9+�H+0�s�7ab|r���V����D��c���To`���
]�������V���fB5��� ����8E�5�b����v���|)��A��o���=�5�q[ar�;)�W�3���7@��/E~q��������nl�'W������
��/>�N�����+)])$}�h����������&��q
����p{��H��Z�_��:I{��W��� ���F���*��oY�L�,�Z����~��a-�VX����k�$��.�oq���`������z�E�C8b@|ZSh{m�VJ����U2l)]
��oaYoF���m��}<	��A��uD\k����c�e����,����
��@a�R�,2�����*��_�����-�$-���?�~���;�����-65>���!/��7��.� !	CI�������*1>{���U���z�/�����<:
&�������M9��K����6A���f���K��a�C[�N{��g��dbg�L��9Yd69��k��]
M���D�A������3���R��J��nM
��(�����-0��g`�A_7�W��0
�����%�	������R��_���T~k��+��z?���@��+n����]�B���������v�2�o�<��,gAi`��Ru����]'���e&�/|�
�
��C'�G{�;�a[u�c�y#
�?s�SIuVMcQ�,syD��kF��C���/6����z�nx0��	��!]��!��OB<�9�����X�	{/����3Q�%�uA�V_�\F�-a
(�@x��b�R���-^$4~(�z�����>u�^���r ���I�����U?S�����g��=a��%�K%~4�2�w�Q��R����Z���0�����01����z����
ITtf�_���%{�����(��]&&����?���9���9�}���`�ik���������0�:t����9�wO�c�Q4��.x
�v7��]N���`|-Mdl�8����R_��5����!��^��3�f�����9}�|Y�����{�q�`7t���
b_��9#�W��)�����k9�[�v�<?������!Z�a[��~�MG|Y&��A�J]S��,mJHP�?���,�8��:�}��H�sz"�� ������#��]j�D���C����\m��A�����Jr�#�U��vL����E���[�i<$��AE��Pi��bw���c�a\��f��t3}9�M���W/<�Mw����t��S>W�l=U"~ee�w��.�te^�2t���7������{ZS;���������cE�T���z�m�"!��~���������:�ns�{�������3�����q
�=�|z�~%��[7B��K�9��.R0�A9��c��.�#��c�c����{��n}�7Y�����Q���3��{��g:�iV�t��a����v��4�+������R��k��g�tA��Y!���FA:�����1������s�O�Z�g��
�{����+��R��P0��m�#_�a*�E����/��+6�1��s��&V��~L�����%
G7�L�K�e�BM�JV�e6�9I���w�q����<��`5S)�����i���v9;�U���@`J�L�%R&)�YO?�V�^�"��{����l��q�u�V���t;���dP��Ve�}(	&�Q��.���_��a2��(
����@��!�v/�r�T�tU6��[?��)���3�����Mz
`�J�{*�[sd������;��`���kP���C�'�p��$��w�������������]���+���F�g��O��oh�>-�.J��3��R#\�C�� @J�*��5���"��W���5�$8 ����8�.���a���<�����p�f�k��Y�M6�T��!.���5��3���%`���0HyF�m,Pm�8�-p�K��8�c���l�O�,����l>��F��)��v���8I������CX�~,��������nS�+I�H����$eP��Y����5���R�� ��\�������7�|J�_��������^�t1�O���_q��i�O�-�rM�7Z��)���#�A����0�cy���M��3�~��G�)�&w�m+�\������6fO�c���BM��G�_���(�,P���$�i1�4T��v2e����H�("��?�#%�6�=Dy��?����[[�G
�a��tqp-����Q������X�lj��_����	�I��<��~�O�����Y�����A
����_��pT��6��(�O��O���^N������(��{1�t/�-� ����g�s����~��[��
���7�^|�>:B���?���,������8��;w�V�iO�b�!�s��-F�:�5���vK r���v�5��AX�^�&mS���-��t�
���/�!�K�43����qE�Y?f�k<C�a����*�����f;���.:���e��,I����r}<N���$�?(�����J���H/��#������]�CxH�J?,�d�(��}��\��&�Y�Wl���h��P��#�f4���$Zq���
A���-|?0�/�o�
|����������+���[g�*��S���E�-2+���(A�R��~ ����v������}�&nSMH,��0�p2�r
��Ye�[���}"�$�Dh6���k�1g����N�96!�}���.)����8qk��n>��%�o1G�:O�@��s@�B0�42�C�?���k�����r��H�d���M$�3�&����XfD��q�g����:�(Q�x�i��q��QhG��x���T�<.�yZ�mE}��1!%�x�3,g
|����!06�XNI�y�!�}�}���w4��y��II�\,�
�1�g�R��>T�q�#�+����o;�����/I'�m�������tZ(�����K��t�M�J�0�}e�S�15�$K�f�f�L��d���@]�G��V�<&(�#u��71G��$Q� d��Y2��W���`�������!��V����m���������)�XH�?���^��*20��,�	)P�����B=�,�����)_�YG�0�H����F�����}��P��!��q(���8�&�Y��������l�g��$	���J����xA��zQ�E��&_����"& 
�A�P�Al��	<�C0��gZ!��}��f���x�N���R�1C�����^���|�qm �|~9�������P�>��x��b��T��A�0h����H~� �T��1�q;�)��� ���)��CXB������
%]&�'���T�hotm�r���n��$�-z����#�/H|��C!��(=�!X��E?�, ��^��� @�lr"}��2�S�������'�x��@���3��a��"f����7��M�8���]L��X<����Su�~>��9��E"aI6U��k�TD���[��:��+���[+��B�.hs(���
�8���nM�6wP|���X0aaA>9{���/l�4�M��1���{$��`��(x���p��E+�L�p z#��0H�;�>��TgC\CZ� 4���g��C�d�p�1�:�%{���Lx�D����NcZ0;�O����=������� b���/D/|?Pv���B�o�����I�H���i:�l��:�x�\��g������K�x�Z@D$���4��PWo���u��)���*���hG�W��O4���R �����E��#qZ�C c�-{]3�F�O������=���%k�/YN���/��C�<<�����GD�$��z�ngB��M����i�b��2����~|kZ�A
��A�r��+�������
�E�(��j#��v��{X�5��1�!G�O�d����b�!ZD�A^�~e
VW�g�;�&��1	��N����1w3��w�]���A�o�e�@������3*P�p�Y���n
u{���l���,��"�B<��'q9��FG0:�u��	��^��Bk
��'h	�1K��[������)���������.�5�m�!R��u~^-+,��<�p��N�&����h
e+X����k�@`����������AJLmF���������$��[��t�y<0
3?���i
�*��gl��}�7/��p������K!�,��!R�p8�0�i\���������(.Ou����5���%�-��	QbC��W�����A�A��f)h�Z�#��-�V�$}J���[n����s����I-������y�'<��`�A�5D�h�@=�/nT��f6��=h�>�O�sM�5X�
�F.G�-�a�y�����r�;oRj8��1�/����cS��
3�^��K���*���
�p��Q0��h g���,��q8���-Wr�g-������K���k��Qx�S��k�u�F+d���!5|�{�F
1o�y�x��\:�m���=2�!��9�}�z������5q��o�8�&��	Y:��J`B��]?�[�����������&�_q��G����q�
�]n�������k����%N�����y��^}����������O@X�/;�Vg]�F��w6&�A��AP�X�8�I�'f`&]
:(���.��$���Sa6wE���"T�Pq2cw�N�V
�%��8����X��������}�^yH��E� eGv�1Uh��Ez��*����3��l���l���0�\J��m;��M ��M
�+3�=�]2	M)vm���F�
��C���`$�%�"2�D���7����3�&�#����h�I�|����(ZB�wT�y�T�Hw����90N�����Wy*����p0�
c�Q1	��4�P�~e��
��:���eW	r5Av�L{�	bw�{
q�@�,~��<�5�m[���Q�-�4N��.14�E6����lw��71!�nc��X{�|��Q�`,�ig�tU�9)�Nmt{b	�{&������o�9c&� ���6O���y��<;�"t��z�n4x�����mA�����(-	i{�P" ;��H�dv���'H�^o�c:�x��6��T3���l�
3���3��t����6�@4d�x@V8���
��	�n)%�P@8�lR������9�Fk����|�O�@��Cp��X��@'{��@g�:8'��2B�?�/�k����q7���0(p%����Z3h,�4$�{_F�QW��3��p��n�ro��I��`������lW�2]�T�^W�a�B���:��\C�����>���K}����q��o�=��:��������L��0���X���L�N�Q��ARRM[aB3������|�nLz��10}
����~45��d�k$v��h"M�&P��;/�
����r�8�wf��^ �����A�vv!,�y��2�����G	6�(�c<�xLQ�*�����N���c`����LZ�J�lDw��������Bq�9��H�1W���0=�]h��R�!����	���`��'5$�tW�����m�!"h�#0b����G�x���,�-j�C�0��[�kR��f95����F{
�9zZG��aA��r�����E��'�,�B�|�[��-���P�6��������35�51^15�U�g9
tQ�&G�]�F�S�*�H8K���iu�'��:��.�kR�� *�@��G|�o>\��^��B�MQ"�+rt�a�$	3���3�����f�1�
EW�������*��O�b0�2���b�{;o��O�/0D��R�w�V8�]���L2B5�]2���#��9`x�2}�Z�����2��
��~��c�}��r�'i9p`�Or�g�~������_�`/�yQ)��j�nm�jtLB�U:cF!u��T��"a�*NL�����a��k��������&��G�� jM�~\�&��#]��!���@��#���?\�"
K�Po��~�DK$B����E�	���1�l�[����m��poR�-�4
n��F�R��|����x�M�*�UC3�{0�PX� ����T(a/0��������-���]��Z�=�x�L,C�^{�9q�2������u!�l�z��i��*����c�pS�[`0B�2��;�)�mz���Pr�w��$��������8c�Ou�Uf4�c��+A��8�1&��v��%f����.z&���@�~���xg��$���c��(��qS�)T��U�g�3xs1���W��W
��l����=��~��0�s-B#�x��4�C�^:-�|�u�&�Nk&8S'�
d��_��*�;G��Dv�!�kct')�t'����E�K5���_~��	��N+0��.8�7�4���Xh�89%z^��8��^P�Ou������WH���(������<2���}��,�S���4���l���t�w%NS�=���N��GR�[/���S
a���Q�o�ZU�{S��mPf��&Z�R��_����b�@��t����`���G��p
���1(�{�X<�~b�-���	���Y�5�X���G����������)-�v+uo�|+�!h54	�P�r�B7�A4ms���tG�.:���bx�
���5{���Y�������j��p�����2X�3t����b��D�#�X~j�E]��S&Q��L$��_���W;�G���L���_|�������Wpt�y�����o�t{�}�(��7M���n��NV��Ut�7�.��:�����5������zk�|(p��������*^9�����/���K�����	��RS����6���������q}���W�goo3����g���
�3��h���zB�8x������?�$E6?u/&���6:�L���]$�?��T;j���������!k�.]�Ad����qL��T�����v�	Cy�!�Z;nr�Ky��$SS�2��^���?����4K�6�^��?GfP�qJ��^�?������$K(Y*k��������y���;�q^��
I� ��AD(�v�&~�v[�1��7�,������1��%�=*1�t������/��#{��(]��0L���d���Lq>Kp>�)���
��R���/��\�_��5��]���)�f [�B���qnNR�a\&L��Z�k/f�0:��IX��(��c����eOW��h�r���5b���������Y��;������Q����"�����-�U�l�X"2�������g2���F\�?���>���ST�d�o2��7���8>0����7P�jV�dk:�m@�"��c�\��w�7����>fY�|24���{�������&N!r���O�TjB�����u�u! 'k]@�|8���[�\��N�1��(��crI��c�r��a�n��%DN^f��p����hQN��#h�~u��%1�A�a`�EH���uv�k�4��Fy�h�T|����.Z�t�c���,�����7uO�&�c�����%F�H��Y	����.�fr�!z����B�������B`���z7.��m�������Uw�$�~�,�!1�HR�#�����T�zm���>���f��V/{�(I���!���<o� y������]UDL���������y�8�o�G��b$��|xe�>���VW>� ��Ow^e}�/����d�g��q��v�	C�!�G�m����������]�+��n��j�������=M�@����77�Q���or�X��L�F�sF.md6�5��F(��D~�5009�`�6��l��D���9(c��2�s���'��rEX���S�d��0��Xma&;l #�)��D[c���1�����.�31� 
�$��}��Ji�g��U�`����@��(�v��<���o�
�6����I�������]&s�������|���6D��1^;��0��Ij�(������d��IP�����S ���e���.�4�%�O`�+��	�z���H�z�RE�AI��6���$�Gi]`q������tu�[��y4�Y.��(�������@�n�L��7���.G�h���Ti)��_v����T�} *�������u�� O @�Wv�v��"�uw!�}������?h���>/a���S�A�Y�3�DB�Rrbd���V�T6��NjbE#�� 
cQ��&+���{�V���&�1!"h��Z��xe~bn��y��t��&Gv�CA�un�����k/�>I!�!zx����T��{�11��Z�hO#rU�!��k���<TY��$��![�rQ��1��V�g�1��S�u/R��/:�$f��[	�����lt*�6��L��h�u��
b�n�p�������Dl@S&�'`&������D;zXh22�>�xe0&����m�)Z��B;x����i�G;?;N]K�..DF���I�����B���s&!��
��Dq����L;�A��+���jM�A�b��P��l�oL"��X�A(�� v��J�l�%��y^�������R!����\�������9�L�1�`�eH�U���R�q8���0���0��X/p�}57���{��v�uj�Q��H��!�xX�z;{7�R��dr���6��NO�T��D�zC,��
���2J���x�����h�����ik6*��/��r�_�/����5�rh�X�TrL��a�`?�.T1��F����6QZ�A���c&���Qb��(�����M:�6��(��1�a
�X����jf����W�9h�`0�Z����i?��TcO������*YFD��+���8���t��-��S�]�"�=����R��X�
H�`���((�;[��W���Vc�2��`!����?�&��57��KC�������e���e��[��jU��M��w��g��`L����N�Q�������M
5q
o��!7���Zc�yv�.�R��R�xQ�.7j�e*p!���5��hw��;;@)��4��-	��LS$;I���s�v1M�����������\d� �k�����X9�<`\�3���l�<�	V@k�`�1!)0Q��W=7!};"�cG����V��c�`���2z��=�I���n�S��[�������h�5rq���:)U�������?�&�/��8��_�f����_(��bm�~	Zi�G�;��{`��0�a���S�I�~/h���F~�����7J�f���������o�����c�E������������>��}��/H�d�����H�eD�������';�b�c3p���O?�m�8SasX������g�.���N>�}q�UF����:4������B�������#��IY, !�K����s���y��>����)�d�{[K��b��u�V�^r��mA��Cq���ju�_��
t�x��60oxg8�h��y@�������W|}dJ������"�C��o��K�����B�2[����o�������?pXW0��`�g��8�n�~��������m��6�����8�<.�2J�|�b^,lv����,�/�'�@�'�2^^b���7>����n��7����
K�*|D����n��RdW��%}a���h��h������P����W�`m�~�������Gg�=�)�i���]|t�Q�e/X_i�-kt`X�D��@U�"��T�����D�h6�VH��/ ���UBd�rk��m�6��8�� ]����������-���m�u�C������4'q���X���M�����W�B=�g���6���-}������E��F�i�b������t6v�����o��������X����5��tS�-�m����F�u�CM���}+��a@jo���v��s�,�lul���/���eS(n	�y��;��dI;��;L���n�n6������P��������J�g�8����}���uD��e�������,�(�R����B0���q�}q�/T��(�$k��-���[�L�Y�Ob`�P�epj��u,��!\���s!���u.�+���I[�#�z��`xTL��Nd���'F&�Y��;<�{�"�o��qX[�}�r\C�G���[|,����y���0�Z�k�U�$y��\]�:2������l��PAV������"/�/}�u�U]3p�\A��|3��"��p0 �P���>�_<��_����Qg��?���������
��hT����z��k�|�p�x�Jf�U��S�TT|Ft�c��\�|
'����dz �������������_�mb����I\����R���
V��h���������{��n�����P�v�k&�/�u2��T)E����Se������V����,��>���C���\|�u��
9��Q��;:�[�2�7u�\�]��JW�;�}]�������
���_"=]O��l�����.	�c��t���Uj���;\4Lo��Q:�@c��!���B-��a�t$N�6��u��:$t�������$��l�s�������{������jY�(G�e��K|�uT�����[�[������/Y�w�{��gdyZ���t�~�=�����M���@@Zn�m��z�]A�g�-5�ET���E�nsZ��h�A-ObA�M����d�����Q��O{����L��rz�^�[~��*_���q� �ZP�$����7���m��T��V�(q�V!�2e�ZA����mlK��������`}�-C3v��<���/���a������?BX�:)��SZ2�`�>�*t��,
�<V�ei���W�������h��f1�����YF6�����#iN�iX�����������J�C�@G���$�U�C;�,�B�/V���B��,�V����p4���W5RoE����.�3�p�\~S�����;�'����zvI9�,:R�T�AUQu��h��bOOCF��w�a8�w�@j����p�e#����Z~�v�<�	5w�L0��R�����ip��A��c����Pg�u3:�/����Q�,:��|�Q����������9����.�b� �X(��M��:��������T;��4��������Q�B���W���~},_�3)P>Dh9��$s���Yt��4SD��#�E�PG����o^1�_���4��ZvL�5L
A�z�K��UrB��OW��`}�QrL����gO:�9�i��9�����=��E��A��`�����_��V�����L�i��%wA ��u0gy>&��=B��#DJ�Bo�
�o�s��S��4��X�x"��
"��T����Q�b/l^�XT���X��F��/@hE��'~�.��w�0��gP����{�
Z8�g�����O����9�
�*1:���M���i|���+��;���08-�'��Meq�7kw`\��Q�.1�u�	W��o����;`3�����`�M��6T=�o<�X�UT�\����7��CI�'��+��*
���X�a���4	���^8��[�5�E��9B�[�t#����C�Q����M}���j�_�0�W�E8u���Ek����-����������@R�:XaX�)t���+���]���[�c��_!�_�[���Lq�����o��[�m�-��
����9��
�p���Z6�aAH����I����.��8q�>��$W���x�	����4�3�78lO�� ���n������T�'�n�/O����a���F����t��<x����[�����,�.3[��#DJ��,���X�����|���rZ|4�B=��h����a�yt��@<A�y���C������~Gn�aj���Y���uD!
1�u�5�h��. �B�a�����@C�]���4���S�h�}N�
����z�7�'������M,��E�/��=��!�BG�-��N�g
�2����6J��<z6Y��M'����P��:����#@�����u�Xr�F������Wl�5
-�U��\�5F���+z�mvK���3Z�}�NNF�������Iq�;8C:{@�l9G�=8�F��������3J~~�flk�T����]���j0���X#7
�A\	F��`�f��^@!�#v������\xM���f���mvG�������eB*>���%���?�7��`�H��H�\��0?"���W�������9���XBe�����q��o-Wu�h|��b�Ir��g���<a�bz��$�K����)���u���z��?����.�l���`�]b��z��n��MR��bF�iE����s�f�y��t��	\/:��nO�C�������D��n���q��<���[\@��~���������`�:���er�������U=���gR"���l���B�N�J�ax'xv}"P"��.�~Qw�|�����]�����d{W��EBm�#�NF�M���q�8�C�Cb7��p�$�������%-�(�4V&��"B,���V~�� .�w�8�����o�e}���?~��g:�dd.eO�0����[��ua��8]�D4/-v9{��V�;�p��~%��:)y�o��Fe|6@��WvZ!.���9����=K(�l1Ao}(�Q�n��_�6]pES�����z�|S����'lR��:��;_lL��|
-+p|v�Z�Su�^pRg\�Y(�Z:�b���(�zH!Q���z�F�t�$�;C}�O�c>Z<���j�����j����'��|��<{A�b-�>f��JzGaKx������8�7�WQy����T��Y����K�rNm�_H�n��G%��p/�4��82���`�B��'���V�,�W�;�
���5D��������$����T�+��yx�UPJj�m��
A7o@�������� ��m�|�-V���]LZJX#^����h�=��lXr���!�����.Mu6k@f`�
V����f�K�s	<��^����!N7�� �KcLB��X����^mCIt������R�iw�e����i\B�C��*3)�T��o_8�S�ph��d���J�RQv��"q�t��1��zZ0�&\�j0����,l7����o�_��rB�T���������C��|L��(V���^������l;`�DD�1���@�v�����a'K3OAH=�4
t���?���K���w�_�T��M�a�T,a��vA��
�r��M�dP����oJ��-����n#��	|
y�w�l���A7<�V0����%�QL����h�#*h }'��3v�e�z���|G�w�p��>�'����Fx/{;�������SP�{��|�����Io9���1�3�b/-���p`��L
��3����Vl3���H�������v	T��rb�X�[��Le`���X��T����l�y�]����W��
��C���E���3�H�� p�v{x�@�a��-kY��V�&�i�>�g��8D�h�w������d
�����Y_���#)�����.�����K�as��l[+�6h��[�i�E�o�D��T�s�Nf�Q��l\*�����^�5<���
�������M�|:�����q����buhm�"/��6���h0������(p��;�Z�N��������������)�����1�H�H�<d�d�]#$�i���q� T�`V�!-��� q8�1��.�������s�%4�^#��8%�K	�qZe�\�0��>V*�����,���ic���2����m@&����eO��,���j��!��C��c�I�������YD�V��-Ch\E$���C�w5Z0O����X�o�n��	�o`��m8�e�.p��0A�<��T���/�<�;B_8"��=p.�ZcHF`
_�L��*�m{\�d9W�w�������<Z>�&hc�hv����XL��}*�I��,���x�����J�C+�f���+^���8�7	N�MKt:������),�>�q�"u�b��4��U�%*h����@�-�wxs����s��v���Vw|�����@8*�i����e�|�{H�"-j�����`�
F���%��_�<��"��6N}�`�`@����:���]��W�xRI8�V��`�# ����g���E!�`�V09�SN�kX�=���T�����ZD�/�|������&�wN��y�I<u(l����@!k��Pm�ti��S�GN8��zW7��/H�x$&�*������LR�����*-9C��^F$��[�����d�e�&1�a�y�!��G��,�1u"8�20w��S
���9�^iL:�?A0�am<����������@��U��_���j�v
g�P�O�-X��9���'�S���(��m�0����6��4�F*���{�;u�H(�-�(����m���Ci��6�
�`:�R����aM������q�*��!�����=X	wNH���9�������	f����VW����?��l��X����/�e�+�������7q��M��+{�^�;H����
����g~�&����p	/����A��P���o�e_��/y�2���s��g]��
��8vv�>�	�t�O
La�_��_-(�
�w�Y�>�H��U���H���t���K�T�5v�����U�������'7��T�P�5'��8��a���q�������	 2�e3�%u>�`NP�.I��,��xGt�rh��e�[2.S�j&���W�T��.��(x�����
�4��lJ�	|]�o���3Qx�9�(���:t���D>�&��V}�y$$�=�5��:��u��b��9�$�	4���������U�-��-��T�&��GJ%c����^�"������O���6�  ��C�h
�-h����B(����3a����!29���z��N��M�;�>=%v
g�����������q�[������������i�����Ax�6N��hlDcS�6��9�i�z�@��b��d����,���<���'<�3?�'E�Oc�r��� Z������D��I�n>�o#�����7h��������RA9��(	�A�Qh�XM�X�UM6�~���� ����-�pR��� �����j�Se(�7��g�rI�����jt��:��A��Y�I���uH|��#���y���GQ����W�B�.7������c�k,���D������V^��S��V���H`$_=t��F*:�h���{��`j���*����gO�|:&��%`Yg�p&�����r���N����k�����D�C�9~�_6��f��-�,�,��9����7��������0����wZ��j'
�/����E�/�����s���m/��U��������3� B������6������	{xN���[�?f�����������X�Ww(�K��?}�7�����k7l�����w�SS}��_�I����f�A�g�����c����,���s�`/d (2�#;��to����Q>a�����+�[(�R]W��$����f���������$8�oT���
���>�[N�o�9G��!yV��Vh�,qR%����g������:M��~��>vUGx
��D\c�TkNsv��%�Z����f4A����MH��T����Y��_��i3�	�r)�T�
p��:s�����xa���k��Lzn����x�{frr�-L0���2���]��B�Y�+nW�A����pB����:�I7��dQ�m+TCj����h�W��c�o�w�#HCq��`��=sl��"J+������X��)IIPS���f�M���N�6f{���V���0��F�yUo�$b��,Lw�?�/���+�q9$���u�h��>����?��F
H����5`x��Sf�5f}��|��7j9s��;�����Ag�4�p�AS��t�~	�u�8lL��f�"�CWg�/&�j^cO��8���
�P�a�@p����'�uS�}wy?�I�3pg";��PX���@S�EAz�f�n9,'\��f���j��anL-^L%Z��K��j���/��O,��?JFI����J�	�7��XA�S=&��-�-<Qn$k�r�Sa�/���a.��T��cT<�LRYM��5���@	CD�ew���
	A�e�Qh,��Z�&��yj6� 	�3�Ye\�m�py������CPF��7��sH��Q������8�S�QBMpp��Q�������A�[�	�Bu?Hpx�XlWVg��	��g�7l��xs��*z@��8������6Z��%�������`�]/���q��T�Pw��b�$E��1��o���I&wv���8��8��$�t��HF1����8� ��me��k�z�u��L���.���BPD)��)������9\0 P��P�����6xu*E���zw}�S��n����F�Yh��^0)�kEY@cNP�����a0'�Ph]���kW���.�+����1J�?"���&�$s���C�U1�f������;~��}�2?�V��*X9���:���B�Bv�;aD��'~T_<�������;�i��-�D�q�xH�$��
��m�bQH���@����ao��>xbQ��U0��:J����y����`%�X�v����,/�����0�#��0�e�@}��\}�8�%PY	e.+W�U%!�a�1�i��6U��������X8���>����|�����s�Z���������H�����X���x���7���PnB���QL��3E����r6�,	
�(`3��3�j��@�Dpi����D8���R�R�������2����=��e9nk���1��vr����H=�lV��Yy���
���O�l��m�W�����������e���~g�/7��I��V2���U�Ra*�A�!3X��2���&2��_��K�a�WV�p����Hu"���].��kzgki�N��7�T)q��������P��P��[^�����E,q��?����������L�;�>�(�f
����:���9�GE�����v"�B_������������uRs�,���@��
���G�]Y34���*`�4���t(a���;��W��-�H+M��]6k�}���L+2u�L�r������c��Vc��_�� �E����}Z��1�Kp$�����*���Q�_�4.]�]�]xRV7rwD_�d�*p5��|�����PY�;x�3e��`oq���8�K<%��#���	�~s �8���P(���&>�� >����aK�����>�C;��D��.DI�y/S	�����!��a�������A���v��Z��w#[�����
��sDU/lK�O����b��_Y�����{-�t����}�"\:n���8��L0r������4�7
ILD����!�Zz�*�?�$#������_������]���r6~N�����*��������C�������������Z�1~��l|TL�%�%����a���_	��b05
i
�:-����89lGJt���?�4��������#s����	7���%���K�]�K�����U��������r��g/?k��WUd�~e���Z���p:�����>x��Wv��K�J�wx���JHoM���C�Hk_��*�<�,U���+<�����C�����%�w����Ks�������0�0/��	)�T�	wf'��r:���F����C��IP�N�.�1X�D�����}�>E��
����jzyQ��R���	��cr���������e[����t�����[WF�4�s~r<v��c��:�p�?��U�E���^b�0\T(����	�Ay,���g�py��_[��HQO:;K
�)�\�}��df@�,���s�	+p����~�����)��������f1�8>}�O17���i�����o< ���E$9x����� A�����w�Xe��|R�E�s2`�b�
N�-���:.�i	b�/�������3��,����D=�X/������%����p�+X���=�����1/���Q��9|�4+J�<���)���X��!^���>-`|�\0RoB����N�7���k�J�Q��!���\@����+g����n_�Z�Q�l.-����CJC����y/;��~��������L"�$��IM���-?�D(��`r�n��#G_�x�
�����16#q<p���5��Wc���&����������wN�������\���T1����A��<$�3U7��r#�q��������7DjN���I��;l��{���6���;[��4�����/��ZBu�����P����I�k����F������w,���T��Y
�m���j.���,�;!v���X*tSb*�*"6 �A��m"��R�@���u�8�q*�G@�_�y
�3�/pz��&����������d+�:AX%N&��������/��heD,�z�(�����lm�H�Y��1$�t���Z���X��L��-�Zj8�>�v����,�����OP�*�k{>T���M��`�`�T�F�� �\uK����J!cY�p�~0^aE��)q`�V,L[�������Oo�*b�c,���
7mZ�|��=��-p	J�:����K���n��������8��v�.{��o>!�up�%�R��]�.�����l����w�Y��=���'���u_�Gj?�W����E�����<�\���V�%[��yU��@���wj�����\��	���Tf��W*
v�QP`�ZC8��J2�.�W{3��B�`^�jvur��!�k����p+,�\��������L��P��lzP���-��h��tc5z>���y"�N�����
]o?Y�
�����%�<����~R�Dg�B��`�����k��D��<���
�gY���`	�Z�*PU"��t�s�����P#O�G&�Q��<��d�t�J�:._�X���+0M�=��Y���N�
N�L���"��p�=�������[�R1�=Y�S�fHQ����	s+�Z�Fz"�H��w����'�K�Ox^�����Hlb��x!+x\s�1&J�J&��8M�xw�u`�_�M��Z�������IJ	�z��3i	������02,�����:�4��8������\�}1��������1�j?f����p�������/4ibM�IZ��uO�����3 ����56��Gak.3V�baJ��h&Q�(����TT������4@P����N')���1N'���z�$���d�.*Q����Si�;]�����������SVVcE���f�~�@QYF_�5a��)�2�<�-������~��.����!b,~j*:��F��3�w������9�6�����;�:�x��Z ��v��_
S��S�Q,�zy�$)�$��q-��.��i/�����4�S"5�l}b������{��=�%����t��^i��?)�k\��:I����B�R�6������C2�����9(3�^c��+�X��K�Op�����@�����E�P(��2M��
OH���x'_���(��oRv�����(��W:!��]����p���=���(A��������51.�L3�@'|a��q�����-��<{*���hl����s�-��W�Rk��m��t����xN5����b#�y(6����}[@��e�5��<��
���|�������W'��>�`n�&���6��c)R�T��.8A����#������t�o������:�&�����3�I�d�CN	��$/��G�A	J!�t	:�o�����z��O{��Y�L�^�wh�[��)���O�K4�qn��f�
����/�������(����>�G�$������d�Q .��Mz�gp��80}=�H����T��@�8N(�����'�c�Q��#�������a��o0dM���F	�a� 0�W�$k�dS��5m�")j��32t�������Fv	
~���4�h��@����('l��)�yk����%�
���cy8�<���/�t�]�D��@"3�tX3����5<������3���^"��\�a�Sf&���L���<n��
�����z�����Ur�
��1/�x�g���!R������n���.�e:��~���bd|�0`����"G/2K+w�F�S�x�Z(���V��Z�b��e�����-�d/bD$��0�����'m�:bH����]�}7N����s��y��_����jk�,g���0�C��^��y��l���IP���Tg���:���J/��U�B��(���v���h����~��c������S�s:|�v�W��'��$0���eu�=�`�kb����]��=1�����vO7���}��/�)��!~��x��)���{z����?��\��gX�A|8T_�����Y��5��Z)�&��+&R�Z2�
�����=T�g�\��f/�[v��$.~���{�09>/�R�P��q�n�i������Q��)�z��v�
����������!I�f	�g�
�.���JYX�Eg��E��\����[��hs<��V�5N��HB{��j�H��a�n��
`�I�*7���������*�����bL����� l~}�T�fv�Q1W"����Yf.�����9	�!O�JD�s����3�qM�G[����y5�Q���45�����M[Z���`�!��/����9D�<J0X��g{N������K}Ld���=��x]�2$��CA�:��e������(u�z���q������B��20�wL�T�(n�A����-�g"�j&��N���d4xv^d��3�z��^�[��d���B���.��F�{�0f�����$���o@AMg�@�H���%����8���%&�l����m�3q>��`��w�2�y��I�*���M�w����%d�5/J����~�!�!e/����W�l�i�Y>
b��<��]����o�|+m1��+0`�\?=!�s�r{C�������(gZ�x�\���vG�\�@]�����;�ER���s��H�?�)��3>��5e;��d^/,�"X(�!�;����AL�FM6+�!�E�
��8W��}80����"��
@�g>�bt�"�2�D/���B�l�&o���C�w�Tg`��fH�p4vW�z����K�w;~����_�uU���v-\��� �`V�Red�,�oP���e�~��d���M������d��u��Q���M���+�W�am����bSN:XP���BWA�s$��k?w��j�vF�<R6�{�����t[�*������A�������P��K�%��D�t�-������[J�=�1���/�ebD	��"�������d�*��i0�^9m�~��5l
��o9~�<!���R��~��z�S��l���R��T�;��{����5J-��z������@,���I�E��
_x��I��C�x���q��0(��f�z$%��)���P<f����W�"|�f����6��I�K�f
������Y����1�'��O�����V)�&���gB��Lj���{a��c/����O����6`�4�����~4+��>��j���,� MT�����Kr?��^)`Y�a0v�������RB���<fN&����<�7	�	q7���b�n��h��#[nz�����j,���,W�T,�2�a�	�wm����n��BU�sP�&�yo�R1��0�]��B��{�M���1���O$E�KO���]TQ�mf�V���h4��;CB@�B�&���h��)	����YU��n����U`q��%���0�e-�1���a�5���&~aH��cK�w�E������f�?;=y��=�&�eQ���A��|�$�^Q
�?����@���������)���n|H1|���RQ9����w8�5�u�z�b�
�b3B��R���P�es�#����Pb�{����8*���Cp�������w
d~��Mi�L�{�)`���t5��XL����<9����x������k�ZfH*,7�����L��I���J��k�t*8��?+k�*�qNz��sr<���������s\���=9�r�������U>AL%<�G^
�f	��Tj[A�����R;��{�-Bb}7���� ��g�����+{�t����� )�Le� '���pWf�v�?@�L+�m���p����r����������AE�d���z?�/$iiC��R28�Y��G������C���
����S��@R�0�e�:��@������J�+��F+Bv
��4�_���qo}N��3����^�O���|��O���M�.����C���
��I*�c����K������/� ��r���&��q�0��<N7�UvL����h|��)����2��K����#�c+�zE��� �1���2���rt-�t�D��x�
��m����i����Y��qpv��x�50�<���!�6)�|b=��80���a���Thh.12��C��n��$~��:�y�V���5�����h�(���e,�%�n\t�76-pT��Y��c�G�d�d"�������.����T�s[>��E�D�[���o���b�)I�P]Y�`rc�6����&�.�+����{��=�t���<��|���<u�RN0�)���R�;�tM�o]u���/�G'h������O�|G��Q!��U��Q?�.-<~��:���0RT����k��m8(����	����IEr��m�oA%%��"��GAH���HJFZ���/��6��En��A2���r�H,�D�*�6�!��H�������y�b69+H�I;������:���
4�'�uB�x�%bB��y�3������D���s:T�:S�2 :�!���^�2A�i�s�$���Nl��)�n�����Mj l���k}[�}����\ON��q@��L.���������-���&9b�L��]g9������'��<��������i����svC&@�����Z(��e��l�p���DMb�,��=���Z�O�,�2�Wl����E������e��������n���e�����I���v�b��2]�$�8j�\g(L�F��5�5���O*�����:��yJ�h�z7���.��ZjT4-J3�����yv�e�N�G�R�`��P!J���~��k7�VO����8i��k�@�e�A����]��������MAy���y��UcW���i�H����.�w��#O���������
���$��
�W-&^�>�����L1��
�Y�z�h�I �Gn�+���v��m��k��yv��K����ZJ����I���q��0� �J�Zr�B�o�{�"g������^D�l���\[�����i��D����<��k��v(�k����gh���p�p�q�H���D���:���BN�N�R[Wf����B���������A)qz���ey1��[�!�@����5�'����Q�z���C�V�+�Tq�mb$��x2��_��!�fdk�����vjp��lu{B����)n�8��r��r�'7G����B����$��?����K��\��������	�N#��"���WH���{M�r���Iv����yY<����}���:<:����e�GO|�`N�ZCza.�@nD"�hc`-��A.�&�:������zv/���n�D�yT������*�A��m~�h/����H���%$&!UJ(��6��m�$3�6<����N# sZ��� S��Ph��I2q�6��<P��{�I*^��MP��
�,,?� ��1Q�r�1�f=��q�e���x�L��m���4�����{Zh%�d;�PO(y�\�m�����~#,O�x�]�rV��/�4d�M�9������{���^V�����bcUd�K��6e+0����P��u
D�2w@�VF5��V����`t���Q�,J��;;wiO�xP/����\�Y�z�_r��VM!���*�����Y�}G���nc�J
j�L+�X��7�{�����B��XH�BF���g�����F��Gk����������,��?��j��D0�j���S����jPD�Xl,�o!��E
�y_��������M�6�;�1�[f @�Y�d��n��G��X(l2,�3�����U<�^������=xL�nn��g�m��^l�uztq�+ ������1��	1���������-��fg��V�_e&!�;����@��T@�f ��2I����V!}%�����p?vz������!��F`�bg��sgB3``�)Ql��A������(��g=+�X�}B8��zv���!Q���p����0�Q��h��	�<&�����cB(�6.gp��I!�$m���k����Cw���2��(|+��q��*���v��0��K�'2c���"�:E���>y�eB��|�G��_��<h�u��D�.7����������f�a�.�p�IW�����X��.�a$q	�@l{�����*��
������(��6L	D	�E:X���Sw�����N��� Q�M�72�r�At��#��V�N$�g�"2!	���,d�����?A�c:���W'����F0�{��L���pxX���W����x�	�D�8����$�=��<�qK��X`��Z���7��	��]Wiu�������|��3�)�wY�n��TW�<��RPN�$��6^�
�r���"v��(�^����#��k��Ts��&"Wy_i(�����������Qz�uhy4�V��+��k4D�g<�lJ���k��] ����.���`�^�g��M�H_8<��]��U:��1��a�7iM
['�B��f5>�����K��t@��sKM2��9R�����;�7+K<��l%�V���/9����4�ev���[I���P#�L�EJ��o�8��
��n-�v�n���d�f�������]�M�x�x����iqd�r��I"��w����5'��Xh	�-($����_����7��7C�.������\w����*@C�/�4e�%7��l/�!��`1�� ��#o�B�g?�-��8��o3,5���$-I��@'�/�����{�`�@�Cx�O#ji��ap�����_L<�����/tJg� �5X.9�F���4RQ���W�JETA$0<J�OhM#�D5
��7v�a�oQ�Ren0�O����������n
��>�Ss#[jn�{�!jr��-����� 3�M$�1H�x'�I���O�;gr�����6��7`&�y=����������b\��N�1�sz�������YBJb�}����!�_��=�H�U�[�?&�W�����e?���/�h
�������� *F�Ugox�S��N�d"yH�x� ������������n��Sx���V�R���Y�V��Q�j��U�NT$n[�xXW� )���0�x�*�BP�Y5����U��L��	��	V�p*�E����tn�?Q���pwH���]�F?�u�����q}L�,*�%���d�F�ZK,W�UP������8�+k�zNO�Tc���N��R�!}M����f�;l�\���k����n��U����y�YI�D�@0����s@�c���&gi��P���b9���q�*�A=4�q�q��C����%1������i	����@k$$<��8��m��H�"K����{n�nH}�������������1�kD��[z� �x�y�.Qx��,�pd���T�=���*/sB��q���_Y76��S�F�T���ydm����J�E)���`��^���r��JX�.��.1O��;G���(�y���^7�]������I�R��u
B��L��'��i~��
���rk$t�?��.�^�Q<��������Ue��(Z.@�� 
e��Y'e/�@nM�-�����hG��R�E'������������@�]�f�����e|�7����t@z������9kBJ��V�
�;���MV;�YF�����T��|��j�.�uCJ���i}/Rs`��t����]��wXMP@Y�d� ��V_��`��|���[Q��4W_����{�[�O,��.e��g
D+@#�~��Swr�z��7��S���<;@o�	������"RP�N�U�{!A0}}s��35C�h������j�Q��@��y����AO�%���
A��%�|�Z^\���(��H~=�a�]2"6W~����k�J^'\��Z����������[(���-���Y`����� :��B��[�_�ux7���\j����}K@^���4H�����oM���4'6B�s�&���\�OU�3IPV�S��a�2?Y��T���m��e��*����Bj���Zv:>��J����'4�{�
�(��zV��A��N��W4������_NbQLL�D�4;6�s�G���T�6*���d���\��������<k�v����U�o�j������-�������0tkY��a�����q��'���4����H(3�D��.�������WFI�\Z�Y�X�v��Z�P�V]!�P���k.����Y��Yz�,W�����������'���l@��r�����Z�XK��jR�'�������~!q�%���+nQ8�4�O���,���o�o�Fg���	>��!�0#��J�8�O��c�&�Xm�������m!����v��`oM�m5��
��X`�
B���"R�U�������3�M
�5�8�/�IS��A~u�������`�}j�6�X1��bs�+MI5�7i��E�Rm���i���S	�����z=@'3��m5�P`w	�������|B�#�/��v8����%�6>�#op�C��JgR��%������/\�DuX*e��-U��r�Q�d�k�u�w���R�n�!��P"n6���9�qnbn�l&��:�LR5�k�@1�q����]��\������i�\��V#�O�2%����4��l�cZ=;�����yN�z!*Z=Bw����hDk����7d�r����!/&�yOq�@�C�u���	����n��Z+;��5���])����lPC^��8z~��w��h��4"���%���������&���gf?'A����uiX���u��9��d(�%oY��Ln>�V@2��P����!"7r��dTIQ��<�ys `��ja�O��*�z&�������L��W�1K��f��e�%�y���!��z9��)i�^ �\�A(W��s`�3oE�N�������Q+6T`u3!��9S�%Sh�����d��r�xt���L���?�2���HDp!�(�+Q��t�5@�EFD�]:r�n��b��1����_A�#����r��1{�!���J��������78,L�v��+>q�9jW`����XN��|������Og������Q����6��<Q�e�mx��6�y�
�}�m��I��Z��O�xU����#E������
1���.���*j�@}[e�����J����J�I�+n�
&T�����}x:�P����P:�u:����S\-b��w�
�
�nr"�Lh �Pn��}�'!�\��8Jx�����:�^8��M��������@���Gu� �Q��X$ �#	f���1'k
��0�����\O�@�B)��(ho�A�0�t����t�e3{	b��8}�x�0<�5	��M"j?������3��6�wq���N���ok�9�78�i��5rp}
U��|��+��4'EC�%jdi�,c��,%�f���.q����r��}�����C�G\�����7�A����m�s��[3s���b������s���W��M���������
�5K;cn����O���
�YI�A������t��uUc�W���t2V�'�d]�7uUk~^����4��pN�/��te�r�2V9]��8��m:��Gz�p�;^S�R;�z:tU;w���A��'X���d&�p*���3)*�!%�u!��LM�)0�L��	.kS-���S;cW�	����v��U�c��jU���0��k:��)n��"(��'���n���>���$-�����'QR�:������"��������7�����K����Z1'"���q��P�/]3!qWqL��{{u��%3�+�^���B���^����n��
�7r������H<��$9�?���c���bb�^���k�����Djp"?�p'� ��&Y�t���������vJk���L��
���Zg��������V� 2��
�L)J��OLL�A�q��Wo�%����A]�:��M���I@D�� ,�����^&�wOb�5��l)5�x��weRm|r����x�u7� }�_�)�������plF�Ns�)Y�����~�k�������u�689��-P�w)��D��e���*��^�b���u��`���3�X���90�$��N]?��� ���A��Pv,I���{��*���T����?�S�+�|v��zg�������$M�G>�Z�v�Qg2TOx
��M�\�G�CT��?���6v��6
UL+�q&�����\E�QQ��W��P�V_�Kd�P��O1�6���C���l���A����n�5d��4����w��@�@��d����3�D`�1�������B�b(UsJ-j���>">< h_��f=3�6!������=Y��Y�(r�6����!�S��vJZ�!�~�pN�{��7�0��6��5��1��:�\��+}�W6Lkks�.'��	L���A��K��E���{l����?����96�w86���A��F1"���[2�AL�8�X����Mw��$�D�"���
a�h�:	z|S}l�M*����F<t�kO�9�-�q���� \U�|<�V�OY�>C�8�RC\{�.�)5
sJ�=�$�h��34������2���:�o�3�)s���(N��P��������*W8$�W��
b�*���B����PS�!���}?�/`1o�es�[������{x�h�����������B���N
".M��IeT���;�}�G�'���?@��W��]7-��l����3E �����>�IS
%��j���j����0#��%m�������~���U�jV�I�Gv��0�,��^f��,c�.�sX8��v:#���W�p���l�a�}�=���%_W6_L&�_�x�r�B��z���q�U9�"�`���0�C�|�����n[��a����<���_:?U��L�m�k�����k����L�aY������KX�J4X�P��K��h���tN�8�?��`��c�5�@d'���������i3y������%u���
(�
�����U��z�v���6��-/�M��x��!���{!YI�/��c�63t�]Q��-��2�J�f�m��������P�N�(�w��0�c}W���]��!f�{��v�E���C�x�#�#��~^��f�4I!W�f� ��QfH�B�g��u���X+�@��EoN�Q!�y>�e��y>|����P}�r�98�>�N��t�(�YE^)�� r[���(��@�����3}5dR��B:��a�B�2c�����S|���w?���
3�	��x�0yp���-zgJ~^-�����c��_���CFQ�Vz�)8&y�e)X��cF����8�B��mk�i/�>��f��bRv�Ov������%C��������m���4����s�J�E�t�(�����d�>[	����Z�3�#�X��#�W�����9�7m�'=�&���D���}l4.�����ab�r��q�����j��Y�Y���U�l8
�� ���y�C5����l�2�>���=PN-w�W)�J1�����W�o�{ �����+��8x�H���$�9u������/����<CZB�=����`+������/kq�o:8\b�F�j�����Hf����@};T����W��
H�m��2�_g��
�����TCA�o�f��G�FS4;(�c��B�N�1PV?��^���<��&G���mR��Y$k �������5����</��c���T����l0����o���%�TJ0'�Dw���qX/�a�2�)!y��Fd�3|\���x�a�P���G���`��u�W���&L9���>�������3.��������DX
����J�o��"��(�n*�*������M���(`3���Bu
�9�#��P O,h�3=Oi��_"W_k�Z�	Q�[� ����8a��e,E��*T|�+�f���
T�-�;�V������>�-h�-<~Z�Yx�H6~�O+�p�����)��%[���
h���3��%�H��=� 5���#�i��3w�vT���O9�S����bw�&.
�Z$9R�-� P`Q�����p����5&�����G:T#*�?G�Fds�e-��Q�p0�A�y��l�c3.�6�A+`Mhm�G7R�i�����#�����m��`�J!��Q��+�+�1�Y�����]^�3zrdG6�_`�$9o��Z�D2���U�O1�y��`L��}��^
�D�����W��H��b\'��?��q����2�Y�x�����f�\�������E���>��k���7�#������=c��l��U���7�W���0�|Tl,����M�L���X�X�;���x-��=����r��6Q���a�E=�FM����i�H������D��Pf��`�h���5������pm>���%n{Gu�����.��oZ_T�zy*��r�D|��D*��/�.�2��q������#��,����K�T�h �pw��=nZp��e�����lI��.�z���
'F�+����[���]R���W.�Ob&%�6
sFu�)`�l���>�)��*G+)�W�*Gn�F�[��U:S�d�`��0��d�������J0�� p�M�Pj�t(w����K�����v�U7O�1��]���#K>�!(
A��(a����\��]!I�m��[v�p�lJ�A	��7�)�D)t��`�<��:����Am�r���O������h;\����IE��M�2��s+��1�<����F����RA��6�8�zY?���P�@�E���E�:	�fi���^�,Fsysy��z��+�#����<��{�Z{iw���c�EO,�Y��SDa��0�~��AF<1v�2e��+k<��@�$I����EHap�U��,k�E]�CCh�.m�8&����/fT��n]��x���B������iP��$����"�z����(��Yu���s��H���?�=��!������f_Se���<S,�������)�`e>@��w'��C�B
�eh�����f���+����X���Sn��=�O���N�W�S���>�}��������(J�Z}��G����Pf\@�d���e3�5T��b}(��6�g���8@��C�� 2^��Mc�Hm���{��~�����#}�O�}��9K��Z�|��9"��^�eP�����2E7���l��I�&nL�^Q7��q�Z���)	��"� �u�����,�Y]�O���4�"�[��w0�_�!��v��)8��Cs��	�R����uob$$X#_!|����7��Q<�I��xb!�|E�����k6��q	%/A���/�j��������ag��?`a���Q?��Y`��x��U�-9H��R;F\Jr��Ip��h��m%]�+���f����19I6��<q�����+�)#�y�l8�h�KVrB�y/�J���L*ll����=�"}�S
	�G�v!�k�PE�zp�(z��I��u���K�E�k�Q�/��S5Kt�8���������Q��~|�FD}�68qi�c7�Tf�sk��	�r�a��Y�[i"u�n�����s�����d��]����|O����2m���6�.��3J�l���C,��Z,������*��eg���u����a<rf�|�	�w�]b ��+��}���Z����E�YDI'�u�����{�6���E)�6��M.W��"��'<�S����]^@ E��T�yS��*���Ku�����������U80�����!����������x�$'��T@�{��I�X�G��56�N~����+r
O*����yo����]�4���o�&���S��y��~A����%�$o
v�gD��q�g�3�GlQPKtJI�U���,O"����s�����{`n�A�>h&�JA�V2c^%_��~���tX����	���[6�d[�V�U�����O��A����d&�����EU�<��S�_F������2,i�SL,����6xK�b;[w��������`u���@��0���(�s�Mj9���'`�!fH::J�v�ii���M�����2T���B���z���YG��Qm����b��'m���z$}���5���.z���S����G'o��b��
�gTk�����j�����E|��N������������?5�n�����<y�N��!?���b,�����G�����N|Q���&e�G���J>���N�&�@6)��������Z��d�25�F�Ad�i�]�
�
V�R&�vO���d�0��f���7e�������Z`3=cG�UG�Y��CH?�g_��z�d�',��k��������ik2?�� ��w�O���>���(���2rI�LUT�x�;T�9Q�!���A��Oj�Z�>j#����P���01/��a�����i��n]��l���=��n�$������mz3����vU�	��>B�l$�L���~�a���T�bE�r��i�yd}����"U��� p"<���*�$����Z�;�HMcMd5�8���!�q(�L�f_u��a����>����.J��8�rlq2F�e��,b�Lh�I�)aG'��.%i�;���6�/�,*Cn=���+}E�WdW����{E%=�LFh=x��4�C6{t}�sT����-!���h�A��p����!��|8�0Uu,���I����
?�/T����Hx����B����e�$�@kVO_�QZ�
(�V�'���da���{�U�������������k:BTw�~�����=��XU�?����	�����8sl��T���;�������JT[#� �� ��[+8�E��7��n:R���y��B����-�%���� ~�x��071�)���M<�jrM��1}���� $ih�h����w�����?|�{�����uV��]�O����F������tG���X0�3�W���r�ua��`[�jw���uQ�XVj8�I��U8�����X�����4�����n�����6���U�#�IL���@f�����r���4�c5�X �"#�:u�c�SL��%f��3�Z��q_qO�U��i�?q�7�EwG�����]�@�x�S]|���t����VP��2������C��tX~OI��.���\��U�@�o�'&a,�:"��t��5�?C*w��
T�r�
t��v3��\t��*��	�����
;�Ce(H?�G3S���v��Po�zL��,=���0@��q'2���O��LU�5���7���N;�b�L���%_yo�~0�1�����1��Hf�?{s����_�G��G��C���/���
a\kR����y-&�
��r�s������WC��8��;Y$�h���U(�(�����1�.=��b�:�T���H����Shl���n ��=�N�`X�M��Wm���'9d������� �jW�m�J
M%�V��G��[�	W�O���q���XD����.����n�����	����I��T��Ec7W�),���n�v��V�t�B �{T{O=��)F(���C���y��uq��c#��v����?3T��.Ay���OZ��G�8�����{�WS\X�TSd0�U]���?���9<{�B�&��R���
W L\�0A���@�o	��Y��lm�~���9rP�7�@����%n��ChB��s�:X���a�V�c�vKm;�q.<�s����[<����s�]����R4n�u��^$�>:���t9.ExBVv�PFh�=��S�:����_L,�Nd�,�W�g���!%�@��e�<���g���_V���.
��d�����`7Ub9�#{��m|��>������g>[YP���K�������6��e�d�zN�(IE�*���`F���~$43
V�(�����*��P�<%"�ue0r�p��g��G��sTyPg���bj%j��3��(���^���!r�Z�R�m�o���p��Ko�����p�\/�Y�W1F�9��Q����9�2�;/��v�S�~*�����7�}(es�g�f��I;\�'��{j�7�a�����&���_�9���I]��)�+>#���E�&��
L_��(Z)"�n�aZ�� ��=0���X}�����Q��`���1����N�6��>:��[�Q5�B�����rh�)	@�'R��#8�v�LN�C�z�@��r���&��LqqU2�d��b�c
�$!?����������F�
$���`���,���")+H���J7������G3038��nP�f�������Qbn�����?��<�!�$�X����L�i0�h���
�E��c�V����t5��p:�����;P��R+y��:G�,Tb���B��>0f�
�F�M"�	
��"��
qC���u�Wc~��7|���@���Jsx��B�g�d!�2��<?�x'���������z^v���`Z�G:��\���1���22)2��*�I5q����g ^o�� d��n_�t1.a�����R���&�6������c���.�/A�
���ai���/yx�y�M8��P����ivX7o�$����t*�N���,cj��&�3F�����L���4��
uM���P�|M��u��'���/�t$����
�n���N����>��G|���5'�L�S��i��jx&D�K�[B�3N�w�������R��2�C��)��M���1��v��M�I�N&'AV&���X�����q@���v�=�������9���eZ���`Q�$$���6�v���;�<RR��n��j�W�=�9����C����r�V��N���H{n��dD�����L���K�K���m"�GM"����Xk�h,�Q���_F/��#mJT����?�)^J^B\HB��8�m�5�B
�n.n IDPgL�����J�1�Bo��Uw'�)�K� �A������J�Sj����t��X�Q��^O{����\`��_�
g�oh��I}�E�(M�e���
��iV��7��]+��OR( Q �����E*�7���_�H�M���b2����)w3eB�D/��r�G����1����Y�8�t�2���[�R�L�������(�����N���-���;c+�KK�:�q�>�#V�;�r��I��/�p�V���:���&��m����Z��{�ly�Qy�@4!(�L8X*`UQUx�0�b�{�����^X�0i@���e� cX��#b�������p,�.���@������9����Z"$&����b����-Xsx4�y<��*�*�G�JX��h&���5��
������.JP���B4�����,�<K5�y�EF����A=��&tO���	;�@K��R$}�R��]��c�b"�}�v�HOM����������������v^
�S]F�4I���h,���c++�Z��
������������8����v�x*�;,$*z����;��
�}!�h������r���Ah(�g�z�?������ul^��B�lH���\n��K�G�������m��]I3���^E�w��E��X��b�a�.�q�/`�$l�RP�Q����v� L��%�
D��X�N�H��A-"3���������^�>%m
����#c1��
��>GX�<��������F�? e��,�3��ev����D��Q.�U�i����2����+�����AA&��
�8��
�s�������m�[��Sf_�6���������%T�H� �*��AdxA
t��J����Id�v�x���X�Pm��RC2��K��PTfA�H^V�\��;-P�ceZ��3�Ih[�?��A��u.E�����A���|��W�����]z�.Iq�I�@~ #��'1���3\o}
��}��h"����y6�[�h�q��F`��
��S��6A
���t��_iR4mG�f�2�\�S�>2pg��������������=Ae�[��O�����8���j�N��	B��K���{4����}��	F{��������cH�d�a��/� ��?�l`���\6p0t���zW�oLd�(5�����i8zL�OU��;d���4������DW�����C�������a�y56�r�E������P����hr���n��v�P�!����N����eY���A������Y�2�jmk9�������y�/(SD� ����L���i�0����n���%L6�l��i�l��N�<���l��O���\���	�n�k1B���V�I�A���[�i��Z���d�z3-��)C�e"�A|.��vY(K�(���"a��9Oui�����;������0�G�N���.
��g��C��C��zV���IO�x��%v�[<�y�T��U�V�����L��9��t��
����X�O����/�A��d( %�}��x+��="����`,�t_UB�KH��n�:��.6o��5��`|������M�E���\B�m�S�FJ����9w/a,������/3�!�g������<q��-)r�o��o�6>�R�n�,G��J������/�����S��@AK�c�O�m�no�������,���#��/��l��a���a�����{Gm(���h��+��'m�T��I&<�m�h�\�t<��@����R��p#���`��d.j���C3O�rH�"�P��H�?�k�E0@FE��<��k�L
,�0�k	.�[x�G�%4<���)��G�
�!�QK���l����6������quls�x<�\��KJkH�5����0{.]�:y�cX��������������Yp���������z�<�&g40-	?�`�����8x���i�E��qB�m�
;�u�Ky)�j5,�0�[���)�Q>I��NE��/�4��n�K,B|R�A�����dl��-O��)�d��1pTtz�<^lcD)XQ	�����9�W~+�I���u����oZ��_e��k]�<qD�c�Tk��Ne@�{f�����1��B��	^�8��V*EV��3�vL)bi�@����
����.��I�8�����06jd�e`��*��R"�M�� ��Z.�7"��U�w@r=������� ���69	b6q�������,�A
�l^�g��l������Z-���Y"�&3!{�FdO�m9��	��\O�R��|:�8u)<�n@+��b�����lM!���Q-�S��V�)� �N1g��'I�IR�}���e1��oo���RX�#Lo�jR��3s��vy�K��mv�-�4wO���3IB]����e������Kf��pC�������d�J�4Y���A���CP5�A��N���=��k����+���mJ��<c�<�r����L��K,������*a��D\U�%�Z�h�}���J��>Y�/Vc{XF�
X�����	��+ ��i������Y�,�9� ��x��M\q/o ��Z
�I�`��a�kc���Y^^Uc���m(�N�:d�������su��I���Ji��~�=P/�?�_�u0���;0P��]_���tm>�K&���{j���3,�M���5���_H����.�������q�� �R���m�^�S�C%N�� `T4����{z���^��R���$�&�+P�$�iL{9tX�M~���+g���E�PD94�C����M��+�Wp�Fh���>a�^w����m��\�'�M�z�*p�/;E@N�,,����s(�3��J������<B��"\�M{t0�}�����+��)aoP�p���(����[�~*��]u^>O^�N�G��������|�r��8�X��Y`�G�iX)�*�4����4
"O�q(��(T�R��4o2'�w��+m]"����^�����2�E"Mfv�-�v�B`�6z���Xcj��,cF����
����*�8�*29cU��5~�G����� ��.��E>�a0>%�Gr�f�����vm�1&�BZZp<y�M�3�B2�-�,� ,���S��3;�8�vQI�"?�zC?YE�\�Q�W��
�o3��	@�_�	�]��ZQ�����t��O��X��p�~�jY�)���H��(7��]<I\��xmk���*9B�l!����|���kv���C�i�	�"��4��D�����k�s4��7�^ �_"��b�u(VN��J`�}��V�w��GTB��$������N���g�>����D�'�8�+M����C�=��o:Pr���!G���*M@~3��`K�]�W|����Y �S���jb���f�h�4iQ�V���}��7U|���-D��g�������;�m�%�c�a,���*
��e<0f�f]��M��Vw�/c������KmYdb+%_J��]t�ni���~0	%���4�>�������8�,�l���1���R��0�V_0c���v��q*�11U�T�%��XJ�KJ8`rf���O��6�p��$���P�JU���I%��]��[*�8�~W�~�NF:�U������p�X ���i;$	��HZ`�dr09�Me�
�&�0�7���b>2T�.F����m"#�m�_G�aM��#y��<���`j�'E8G'�����3�:��:f�N����.(�3CT3U{��F����d�Z�{�z��0�k��y.��
��x�~�=+�c�ET,����l����u����|������jl�%,>�.���k��"eXL��*H%�l�R��~��to�`g��Q�kr%�a��;�l5d�3�!�Blyz�gw�	�00����zc�"�s;�!;q!ls��u�^H�Ts�lJ
�� &�
t�����F��8��
\>_B��
�u�^��dQ�������G_��>we���y8��'o}���(��\u���$�E�J�F������<s���=���%P~u�$�3jA��������	C����I��F��AK�)�`�b��FB��e.'y|H Li	�� ^��1���.q���0$a��w���N��I�f���hl���#���=?�@�P��q��pc-�C�Y=Ga��3���7&����+�u�%�����=���"1���
p��H)�~m�`�v��
�S�a�>������C�����.��N�k�>���s��}�����]$Ym*�PP�8���P2�DM��h���N�3�>��fIZ���C����f!Ci���Y�:�N��Y���:�^�:�i���[���i[�W�h�&6P`5�<V���<f_99	�b@<��#��hg[|�����z��:�����=P��\[�Ng�+������ �P�Xd8�������x�x����w��77�q���h����^'g0"��
���O<�\4�����2D�!�$v�`��������&A�����^�`���W�]�b�X�(4 ������X�����8�]t�G����h�]��A������[O��aR~��xuz6�1c�������lB��sW�7����S����o�����x��h"�i���]�V5�Se�y�����$j�k�d7e�Aj$��������0����;����f�a-���h����)�J�.xn�\��pj��(���)�e����AF�X���Z��X����������r�'�(�����9�
1O6C�g� u(~�8��X�P��E���O��R���v�3lk��b�<�V��,u��1�g��dZG��n�3������+�7\�`o�%�?u���6�������/����� �����v�8��%�}�����_lQ�g&X�-�:��#D������	<�7��Y�2��`�=^�������[n
|����wy����v���bj�d���F�
%�����rDRM�-Qp��qg�����1��&;���'o���E\f<�9X��"��n�G��Jt��c�>��Q`2Io�A����R����&��L��`to�p�_e���gxd.�6�-�S^�9��G)���7P����:���0j�%�mc�Y��/��|$""���Q��9D��?j�q��86lG�
�k��c�f�XGi�{�
����
d�0"~&+�r�ABr����w���*� ������rH���	�<vRW,{u��J6�������:�C};�tz>j|��N��9BML�O�,�0��S���P>�y\a9�
���j|O���)�UC5~����]r��&��MT�wY�� �R)�f������w�����x4���d��{j����kH���3���I��"fP9\�d�=������0�=������y1}3� �F�#��4��uHu�K�9j����9��dY�w�i%e�	��e�NJ#�S4�<[�=/�����"e��B!'��;�T�`Z����"�\��6��9��W��;�����5`�J*e�l��
���gN��9�;��k��M����8�}*��\�w��"���S��_��������d)Fqf��G�g��g�.��U��A��*�6'�U��9Y� =����{;1�i
�oC%@�'��3<
��g��S��)pd�!�x?�32�B�{B����
���zk�@��i|���-8	+�������P�����gB���Rh��*���"���L��\�$�R1)<�2���pn�:���yuh��P<B	����w�n����3ciY
�CG����l�-#�F����B*�Y�pM.2��I&�99�x�D�!,enO>�(��u�4bW^��+�n���X��}�(>��c�WP�`Lj�kH2a�����}��|��M�y�B�~�����)����6���z'�`�Htd��B9/�+b��i��}����;���|����1��{m��8N��C�:��9}�Y��������H�B�g��^m��C��r�'-u��PLU(�]��H��DhT����#�$X����&$�gx%o����2�g�-��V�O�|�U
v��P������W���T�`��������x���l�d���&?J7)M�{������2j�]��pj�5h�M�����Y�qtU��� ��\�$���U��9e`��Z5g��������i����q}G����`���hC�|���Q�=e�������{�(=iEQK���Z�[�5�OB��>0�(�w��B��-]�A[z���r��a8&��>�� ����|!�y�E����$"#�e�AM8�T;�~l>wVH��
z�"k@�(�_���A���q��"��qc:%{#d�
��&���	%z��oR�B�t�f4%~��w,OJ����$�����x�m���@���{���m��j�9����f�������Y��9��&���N�� N����|�G��~qXt���6W���N�V<�%Z�4�S�������Ae>#�����#���k��$F�]���L6(.�Ae����%��=���_�S�p-����Za]���[Hc-���#�HjP0����Jd������[n����1�P��J�e?�/0�T+�B��e!��M���3n# p�	�J^r=���1�9ELM�6XK#p��x�1|�D�!�D���)�a��x��Lf�o���$�vLg�7o������2^J��Q�J[��`���b������<�EIB���y�@[c�31��7M��/�~��H F����)�/���:��D��{?�����7[�gE"\��P���wQ�.9h���oy��H_�������,�K���������n����P�Wv_��J��P�����o�f��-�9^L0�!!�|�K�R��9��(�@��(���k��i���O���(@X��>"�������wi	2�R����<����5����V�;��h
�S.���C�d�Py:�� Z����&z�@����������c��.P'dx�>9�������
����c��F�������a
$�e)s���%�P�>����_X0�B"q���Tl���.��;e����-�2���c�����@��I��
�����ITB�N�������e��2
G2����F�������j���az-{i��w������*�i%��a��Bq	Y�d�X�c�e����{��O���G����~A_U&
���
���g`gZ�����J�8K�6��@��3�}��n��6k�,�h>-��j}�#����� ����wX��v����C�d#c*���Z)3hoN������1S4�7����~o��5��Y��6�A]��d(c}�U�F��~d��h(��cEU
G;4��*�X��O��Ii�����z����YrP1Y��N�l
=��4�gw�K@��)�OlQ��Fl?��@8	v�8)����y@���x��}
�����~�x��$?�`��TM����M�;���l*v��Q�t����b�h��4Ok����e���H)��5CFfE���7��Z�UQ��
u
&��1*t�C��&�
������d,�5�H~b0���I��p�aV�,�����<9>�����[j���s��a�&��V~P��AM���`�\6h5jC���^��#)@�/q�l�i�b�O���_�?��3t�����^�A����S5�Y��������e�^Gwwy�%��@���8?�2��o��2>7r���W��5�A?���
����ay��5��t�a����*�[�K\���:a�B6Kl��G V�U�!��SB`����^���E{��L����=v�a�)JTV����Q�{-R�P�Xn(�XI��������b,��1m���a��#��K����C�
��>��w�����xx��������}zol�tE�!�A���p
���9�R����x`{��)h���&���z�KR�F���,M6(�qxEN2�	_Q��~�/����L
3���X%���!T�0������|�V�*�bz��������r�}�����*��A,o�#'�}!/z���n�9�%o-W�l�|��w,L�f�{������M�""*��;�Q;���3����?��������:����-l.5���w\�w���}x5��C
`��|���$u�l���������(At���A��W}a(o�����������2����(#S+#�@���W�F�����`��m���"]w�"0;��v:��Pf����'$��Y.�N�_�\�5"�y����f��{P�;�����\zg!T��&�c�b�2���|x�K���G|S^����A�0�X���7`%�sx��%U���xE7S������C����S��g���6B�4GUi��u?X� �i�iF+���Dy�=��_q�FSnq�/�(��N+��H�x@���}�\�]x�G&b1��`A �,���_���Zs��lu���
�������,��M|=xf�d�DQr�f�AR���M
�����yk�Lz�������iC���0��I�[s{;�G1��+{��
����H��(`�c�m�!75��#R�m�� ��*q�?���R"Q�:aSu0�y
\|����D�)FZP�����:c�?��0��"�5j���H#]`����o^eA~�����V6����\{!��d��-����K���*fX;J9���p���D�������}���x�$���R)��J�������lw4���5@I  ���&p�[����z��u��j^h?�b���5�@=9HB����h\���[Q�l56���h9��;�m�����^�7��u���.-�?xFp�Q�-f*����R�W�B!����$���9%v�K�X[�E�Uc�A$xk~�>KW�c/}��?��?Q{!�����Gj����X����V��(@������?��.�����[�NX�:{�� r�O��������iM�k#���`�����wh���)��T�r�Yk�N��y�nb�;I����]�>��u���x���lIsO�<����j���]��F�j�2�,`���q����`��r��f2�C�L������p�����o������c�2��Z���&A�6����=lP�V���{z!����8���Z��0
�&��9����n�����}�H*J�������ca��5n�i�B�Kp��rA�����NnMg�p�lrLh��.����6��}�'\���";��+q��\��z�:����>A�!ZSF�rhS�F��g8�Lg���[���@]�b�'hIx��y�.>���#$����<��Fn��n�8���`]����2��}N.R5�3o�9���j3�9R����j[����[N,���|��?c0[{4���Q�� G��/Y.y=R!5� �@L����.�qI�
�!gWI	>Y�����l�M���_��V��0@�~�hk��E��� ��>�z���	g�{�g0����N7�� \����JS8���k����3��^�G���-]��Q��_�]�)-��Ru	j�4��J��X�U%Z������^Y��u���$�:'� (���Cp5�����v+�[�vq�����1����<�r�P���5vu�[d2�J��BLeQ7�����v�6��l$�l(��]
�N��4S�����S�'����z_@bw��5 I��X�P���y�p����j !��'�%�p�X�*W��{�������Bv/��L
fFJ��G)�f�7��H$(@��x
���+ A��3+A�8*:���ue�@�B��=j���Za�l;����iA�_X�6�������D}r���"n��})$"�X&�NJ@��I�*����%`S"��������u�#ekp;b��t�����)7%2��(K�vS�d�W��<��p�:����"a��"�1M��F����l���d��]�PX+����wL��t��+��!�F�,Y5����!�m�2�����MM+=�M���9�r������#��"�8Ms������,Xa�d���2j����m+AZf�.��|�au7����������q*b��X
m�T01�0�z��%-_�*=��<��h:�h{6�%�d8r��8~�2�F@��XK&��t
����j�[7��Q�t�mQt`p:���LoySdo�/�
d�}t�=��`2o��]��S�x�g����f�vf���.���)�^r;�K�1@��m��R*����E;�V���'}���
����G�&\8�E 1C�pQ�y��e0����d�N�7HZ\�����<j�
-**��3�)��=q��MN�����#|J7��g����������M��Jj��� ��J��y=�l������l�
ae�u�B�[�L�����# ��BH���A��6�;���fexq�����9������O�0f�l���m�r�����b�iL��w
|�p�JH�n��3X����X���=�x}�sp���5pL�J���1+�;*���/�:����"�oJi�!\�;_��������Oq���N�j��t
�M�%���p����Mr6X��������&�����Bik.�h��K?���2��8p/��Gup�~'E�=mvue(��7��E�!��f$���Y&g�7�Qv�r���"Y���L����\KL��]�a��3���#���3z�H�����ZV�9�
��;���]�zK
QK���������\��)���������8U�]����D8�#��r���e�3��������]��j`�����X+��&��o��5���,/�y��{�F���D}|>h<��~�21�T��B}8�Z���v������<�������~W�3y�}��#�~��kQ�-��\��t@��J��m�Rr��K������I����4�d�>[�C'�"�Dz�����h���-����D�;H0�6yzT�"�|��&a?�!���
�hJ����$�w�BL���D�x��D�����}�[�	r@=�D98h��+�y�FG��wi��R������?q=%-�uIez�@A�����u����0)�3/"#���3�Pv,4�������� �t?2�	�W�p~���,��3�W���������+�^�f��ricEfT�XTxiV)K��_~O7.,P�����R����$Ipd��5����
*u% a��U5gRpt����������{��c�'��/��N�VA�D�[z�I�F�v���m����>���^*x���~����VHg�-�3\)�f%G��P��x!h@�����:9�"U���a���Y�e����C��FP�h�����N���L?l�8A�K�����������0���m�
�Q������?��w	��e6u�<���(b���/DFD���������]5��k�r.��]�u���$$����S�)^1����$\�QK��|Qr:���
wH�)�0?7"w��3eAy��<���h�	�%^��O 2d����|�����������O1�*CT�)*�V�?�3sL���x}��0N��q"�
���������v���/�!�'���v]i�;.��^���=�K7�p5�Q��N���A��t�Ha�{v�q*N*��B�@JM��W��!��D�&)�0�%��Y��u\:JS7������rH�g��I��y����t�0�*0�p���.�G���6;@�s�b�8j����	f��O�p)����M�t�1����z;]e�u���\����{�&����+1f��!�vJ6��9M�����*>���L�T�L(���]B����+r���D�c���a��W*)$0����+��vo<1@a�'�F�6sH�8�g����Ux;u�?���S~�C�����AuM�?&,��CnqU��"b+ED��j6�q�F<�aXT��W!���N|����4P� �D����4P=y��]h�7��&�e{�v�����fM��5�c^'���
����t9�T������j��<����Oy5��������A�K�����S���%�vR���zsFW�L�ffg�p�����cP`�T*�����&��\?>��u���<�r�q�]#m��>l���0�cv�6��dBuP��@T/�V�(�H	��`-<�R&������h�{`�,/_+���5�=�wc��Bc����Ay��s:��@B\��7��� �)�z��<��$v���k&�j�^A�P����K�~x�x)!�5W�6[������\��.J j^U�`���e(�:����!���������(k�p�k��
��I�,���uG����7q�o�u���
�~��@��y{�pzE�!��7��F2^��3iu�T�#��T[M|����B���w��'�vJV�#�<�O�<�,$U�k�1q�)Pg0K�xVq�D�!��w��f��m�@�~��
�~��:���},�����b4aS�DSi�:��G��4��T��U�E�m��(_�����v��]ai��J}�������P@�D��=�� #Z���\�x����L�>z��)Fl���c��W���;��W�t.z>c�AY���Z{mz��'�;�8O��V���=v7KH{"s��|��~������m@5t��A��Y��}��,���|��\Xv��=
3������9�v @�z��~���o�����o������~{����"�p:u`�NV���mb�E1�����V���ve�p�����-v�4yDr���c�����4����.�TM"������LPM��4���=�8S�������R�N��n��S��$cM�����V�`!��E�z�WW����zUP
�q�n��^}���oy��H�2*��B���M����f	��M�� �@��'3�S�`�b�pX�?j��1t��x~��yv?2E�b��[��r^�Z.�?�����
�b��G�����v��q������o���f��2�����E��Ix��:��~���1�|�
X7��t��Xt
@H5w�.���y��sXx�0/��i��J<`>������f9gm�Xf�Q�(�8�5�L��4Vf�����zR���4`��U{Q{���j(C����k&m�6(<Ddnnk�8������C�/�>�?�&�0������D���r��:�vYX�-U���-[B��+����M��j�(��[@09Zd��9*C.�KeH���ye,Y�Q��_`SZO&j@�������^����qY��vH���c�!��<������S����rB�	Q�@G$
�f}����Ar{�E�n�G��6#qKB�6U�n����)G����8K����{3/������"�p����%H�l�Z���1�7pA����\cH�y�O������g+�*�^���f��Ti�@�`����i��g���'~��0G\T��C�rw����������������~������z��;�R~�b�z��JQ�F�z@gOE��E��9Y���0�����|X}���
$0�O/�V�y��2OL���|��a����+�I����f�(=�|2n�gu{v����*9�������S��Z�US�/�������s��3~��7�[[�������P�������0l�S~�P���2�s���U� �]sX� `���y�[��.�CZ_	�`��`!a4}*�C�����m]���?��$���jD��j�5SL�������4$:��*^+X�

s�J���������]���@��2n�u���	�m���Z���Q}S��W����!���:�Z��X��s^R
�`g�
S�7�/��]g|n���'v	�q��&�~��n���G�h���
 �K@�<��m,H��H@�^@#bk���V]o>������� f���I���H�[��J�6�����P]���_Nw78��N&���R��_��]_ ��2��[5o�4�����Q����b#���9n=��d�p*
�����0z���l�>��zV+s�\Y�a1��8����,����*�vF5Z!8�;��-
LQH�q��s��X�\t�l����)��B�|�J�����~�S���t>�{G�s7O�Q��v$�9�PSV��."\U��|�Dy7�����"JYb�~%���f�r�/��>)���=�����<�=�w`G����
�Y(|w���<OYm)o�����_��Z�}��.Vod�,*���m������)'q�J��%y�W3�O"��A>�������I�}i������J�i�-mC�1�k{20�r1�j���
�	N��YjPI���}!�7����e����t�;]0�e��7�8w��<�P�t>�/@�/7t?�nJ]�v����lj�X���[�k��
bq�kL��2e����S��)�����;�
�I2��6]C�����Z���j��h�S��t[�>�Z�QdK��!
�!x���CPc0���j�"M��^�%Pd:+���C)2"TI��
h���
<��
�3+�u���%P��������E�G�P���_����+�r�������m#���Pf�N�>9Dl"0���`��J�g�6��,��Y#�4���-�;o'�y���bIa�1��{(�;�z�H����X�O�j@4���\��g��y��I������OO����$��
���	����UEV���uU�[$oX9������G�~����w.q�3�m�^Eer�E%-�?�g��3����m���:"��@����q�����Oa5e=o@X�*��= 8��Z4��R��f3<;�]OJ9#nT��w�-����J^<<�r���F�=r������M������B���.�<���3$&�?�����`Y���gSz���l�U�$u����es���q�[J��S�����J�h�5d������nV��" xX�o�������$�r}�d�L��+���@�x� �G�`���-����P1TP�c&�I�8)��W.���T�'����e
\�9��������k)�o����\b�C�o���RG��z���2���3xyh��I�$��|4�E���J�Woc�W ������XY�"���J��"�`����<?dE���h��b`PLI']�I	o������b��'�#��{	E>q���9y��(�`.��p�!���I��T�x������Mu9#T����q�aS<n�q7D��S���Uzn.��g(98����1P��p�qz-v�.������j�=�#Uo>�j���Y�Bh��<�&'C���a"{���.1����W������!�&Z]|3��!������/Y�i��������]�?����r��7�l����i�VR�h�����h
�Iz���v��'q��\0������!GJ�"01)8�1X�Dx9�-{���	f��u5/�H�<<��U��k�V:�.kf�l�o�I���|A���'��Kt��s�uq{�%��-���$�Ez�G��j������+T�����i���1*��w���������@.�kVd���{��o��a�����$8>���������7[�p���{
� ���9"����Y��S�w�������	}
X�0dCy]`��+W������M�Usy���g����:	�syr����z�p*����Z�����Y�E���%=VZ���g��%�z�To���a~i�i����RCj��Q�f'f�'���.�"�6��T&�H�2Y�02;�Q���b��e��H��w�%�g������@���K2��{���u�����������!�A50�;�e�C��}�Tu8B"����r�'��<��mj�(rB����	��n�%���JtL��,�=jf��1w�k>��d6���X�;LC�h*/��S;H�?`r;9F@`d_��I�������� 
�B/"�KK�3��(w�8��	�B�Qr�j�R�]h���P������ �
u�./U'���:��x��p����C�2^l�M�xQ;��m�Pz�=;��qy)s%!�x-��Zu`�8�|���F��c���Q�[O�����o�0�m0���0{���M�����@�N����D�r�!d� L��%0Sc,�1�K�i\�>f_Z��A���[?����)����>:4��.��404fv��E{Y��p{����O�����|�V#�=�c�u��a�Z�����O�9�A���R3�y"��o_��H��!s�I_�1�����}��'�K���c��k�<�Ed�:��?�����c!��5]� e���F���j����;\	�a���s�*N�b_��k�Iw���[��V�~]b.�}��3M_���*���\����	�s�����b`�u��Q��Z��S�-P��%(Z�vC05��L2�������
��E+���R�YG��1����*	�T����OC���]�}b��S��e������h�\@����x����5'>��
p�'���(��PlI��L�<Kiv��5GY���}����s�.�@A�e-��*�G�����q�y���I�C��4�J��;����Zco�>*�8%pZq�ts	�w�1)����t{���0����P�N*Fr_g�ru�k@�d@���
�2����L�m��G��sfOOk@�<�`r3��n��<b�t����)���"�9�(�x�������T�m^��;f�l�%]�B����6v���7���������@������G��b��|��!���*]��������OO�������IM��V�r�O���^���/�)�������@t
L���2�#��{JGNz��'X0sH�I�g���|Q�H�?��]!2����.��+@:Z��L(P&�����l�H�_ ����F�/h}h�'���)��| {j\0�4c�'2��23��I�,�S��b����/4���E&0�����(K-
���bi���_����TG��������z�����)^�O���a�����������u{k�D����C-�<��Z���V��3L�+����|�H�'����m���j�_�j�����I���zT:�������������J�6��j��u�;�I���s�j��r,%0"@�T��u�+A/~&��:$���"�iIT��V�m��"<d���Z����1#�=?7q�_bYf�����T��:�^�B�������!d]��?F���s�q�eaD�h1�j����fq����pW���O���q���e����o���8�Z�v��F��SIv
��6�jZ4n���u�n�C���6��+�>X'�!W��s��.��b������6-����R�x0qr���#�)�����=��o��������r�3#SmYqd M+N��j.#�Oe }k��bfOTf���([0�fIe'�9��[�Zg+�e c���+3+�P���*���?G�u�uQt�B��,i��\u�V��k��K�
y*H�s�=8!SB��[LY`cB?k��cT�VU6��.7��I���W����vk~A��Z�;�A
�
��~�b������a^��8W���D��������x'_���F�uZS��$��k��yH4Z�[�
V���@!���M�b�li;����Z���mJ_�m�M�9_�9��z����:��~��L����@{(��]�X���"����(I����wj���Y^2���]�k�
Ex3a2#�o�WM!����%�y��EH��%!|����lly12�������c#��:������OYeU����z�
i��/|7���T�n�6�
�Y�G�����rJ=��0��Z��z8��>���N�]�+��\�s��������������-�:Su�S� 0�^����S��^e�.�w`,u��d#��{L7l�J����"�sg������I2=�H
'���H��N����g{7��E��L���6?����x{��CP5���K[�/�y���f�����D�\�������M.�[�Z�Eqzj���toZ����g���A�u��b���+8����'y|��&?"�JoU�>�]�����Q#��:�h4�a<m�9�������jkX`D����y���D���h�Gek�7���r��O�8K�bU�Cu����%w�\}2\�E�+w8��+���i��aLY���W�C�Aq;X-6��1��������V���P!G�a-����}B���~M���w�|z&"���x�+�E�_����.g-���/i���cQY)��X�V���I
����]�����"�IRss���:�}�������4���x<���z�,..�}����4�����o�&}i����z��Lgd1@���I��F�-�������K����d/>�w��@�_���:iW������m|���u�TL>�z4��E��[�N��?�/8:�{��&����L�U�K�s���7�n��;}>�wL�]?=!`�$��0�s-@ �������C�${�Q�'Y�{�>��������H?rI����c�S����RFc��ZG<h�%E_�LE5�� �9$;l^��OiarU �r�C��~�;��h2�P��;�'W�!`v��u9(������k�{b8�z&D�=��W�
���C���z�D*_��Rcar������Q�BCM#K��=[rE�����=���h�v�����w�`��
�-����	
���yg��@������oP�����x����yv<�Vk�i�K�b��p:h�^��g{�.�)~B��N��!���1��ETw��g	3��*6�L7��(_n���5��J�'��t���4��@y�������ti�
Sh-��5l�V1{������S�f�S�����}�������m�1��.��!��Z���0w�������KJ��~.0��=Tc�\!�u\^s������G���]V�_��F}��&w,K��wS����)���Z'��cxR)p`�
^;��bN��7�f��`��G�td�d��%��$����X��d��L�c9g*;�K��9�x�D�!���$���c�����j�;C��=����������_��q[f��e[z��?o���d_!�>ORN�a�gN:�l^0��t[�x��y)�.�V)�E���`)�@�t;�t����1�%9Q������A����v	{=/��#�O1���>�x�i��>.a��}��&�`�K7��c����9e��T��:��!�Z�����>�=5Ej�����M��������i#i��#��RM]���[�H��g�i'k��A�on����/Q^�����$�����Q�{[ov������T���k3�^��V�n�=��:�|-���,+��G������I7;�-�L����=��{����l�{������
�%�1��9�O���%����Mo��h�����y�D���6v����A���<K.MXd��m��_[��9�k��V21�;��nA������%��#Oj��H���ly���If4�_�(����B��2�M��>' ���&��T�������m�o���{pd����C��#���d�|���=>�:�������Z����8�z����gr`���I4�����`�`�������0����g<KU��{M�H��M�X��>������Yd��V��o�-�MW�@�Q{��`��f���b{�#���7�C��l�}��Jt�#��]�/9�����b�!DZ�nY�
D�a"@�1��g�@ �2!��@C�E�e������@��������"�>���M��	�\w+��������������#^����}����o���~��)���
R3A��~+�n��
�i�>�����Sx�E�{���������,�n�b����^�|���Qy���plN2�����|�e����t�(�`d����'/����b�h��J�(��2���g��g���1n0���-���g��9�nk**�/�{���}yR�7��g���X={�-��!%��k�?��9BJ*KW���<�=�&��{��R]����.d4��� 7��kR�=��9�c d�A���x}�9���r�,?��NM	���5���R���a��"�f���]>��-i��j���fs���	������8���D�o�K*���>����o�������z��?�^�@o��cPX�����%~Ao�����C���^�|�>������,b��;+�)��!6/cH���?F;HL���E�B"�K�8+)��3 �4�H-����n��]%��hr���tb{>�a��� �-�6��F+�x�m����~�S3O���2��iJ������
���(�k�L6	���,z����?���"��O�z�2� e�[�j�6�����?�MY����,���;�cNk�l��B*t�hj�g���f��`\�r��!��	�a�%V����S��A�*���Q9��#]l�bB�pB��g�#/�D3�X��V���(�L�gH�����������������,9����-�1�/�jY�(Qt/������T��Y��TV����	������Fa���M��H��L%\�O��Q�C�����=ras�M�����SvG��O�������#��
d:pyE����L���~���_c	SD�}K�� ���V�v	�+o��L������9}hm��
p3�S&���	bm-)mp�}M7 Y�� z4I�g�SC{�s��E�Q�/pF1~��>��M�����+�9"���3����&�����>&D�3�C��a���_��4�"y�]�0�z�L@"��Y�oK�>	�S�,h~\��E���Yl��q2:��%�G%��H��!G���6=�@j_�B�R�b/����~��C��a�DF	��BPNz��rc���.JY�P
"g/KP:5���oqL�yLf~)�X�Fr��2���(Z��H�����X9
�`?T����^I����T�����M4&���Z,�0/3e@3�)���\��vY�]?�E����!=*��vI��@�`�To&�6�	3������fMa���[���~�X}@'�����`�d!��� ��E$y���00x;����b�����={�d����L���'����(�_xr�L3^j���� k(��Zt�7q��M��k�U|z�y���j�}���7�u������x����A�si����Z�[q[�1�<Y����������:�2����:��uQ��k����"#�}Zy��'��1���9�����f]*����r��bp�R�5�����\�r)JTeX% -������QmZkTD�F�Oq]��	����($��-�R���<�i�������BP����Tp3��<Z��<j���R�b�������Y��0�p�@��x�������]���1�#���;(����h1�4�S�=p����8���v�TNG�j����Q��I^��"�=P��(�+���n�� �5��E�!���m�F|h��Cm��C}V���@���zj�i��j����������d�d�|}��w���z���}��|�8�Z��b�������'�NkQ��h�0���EQz>��_�s4������E�Z�����6"���e�W&	D`��I'��c^��u7���^;��n-XT���lya�2v9w���n.���!�����_O�FF!s�(�"�
�|C��m3\�V�����+0������){x��+:����%�:�Y��������x�'���([���V��u������}��������U�9��8;��0e�k>l���2��q����Q���`���{�D��`w�PrB���n��V�^(��c7E����J���'
�W��n+*
@�R� �����WX
���fW$�4cD��]��Z��_��a�������<����x�3�������On��l���1e�<�]��>���,�L\���w�O�����r�u�.�����$�_}+�t<�c����8����	���2�Ja�B�������U���Q�Xx-�+��h-�#c���������}��X���*t\p+�U65"�������������A��S��;`�e�J��a�]���-=���G�+VD��!��V��D��n}~�J,��%�};�wg}�/�U5�H�2�m�����Ct�A�q	��9^���X�V4���k��=G^k����t-���S�D�i����u�+���R�����������g����^n�[�4c��iL���P[�D#:#	��#�B8K'���$-�p�n��' pV!{�����@-�@U�������Rs��m�I�p�vp?R��#��hTI0���
�S�XX9g1�Z��o;5�U�^��'����������Z ��R�7�����HGg���8||�_=�U�[����T�����<��(v�?�J	��R��_�����_�r�,� �n�����Y��;��!��A�>VE�[��%z*HH�=1��s[t"<�|�v��VH�e�e]�$Qk�qC8��vh���qW�?�%g//�
��nL����Q��&�(4�%u�/H��B������8N����+���2`��y�34J�u�F�Y�<�/�w��bK�Z����=�<��^5P��a��Wzsf��1����\Ag���j�[�����J���Q�&���w��N����]���sN���{��&?�x��%N2�|}d�N��������e�z`�>g�P!�/�~�gP��D��=�<k*���Q�*�������Lg8'����5�����Yx���(�GP�|m>�y6*�(��.kg�d�y�C���k���4���19��4�<c���3/�0+�gMy������%�Z'��T"��L�a���(H�~�#b��a�H�Yv�5�)��@���2���h����Px���
Z�$x$:"Z�<r���Kjoj(P�t�o7Q�
��h�zaE�������!=W�W��j�#5`��$���xTf����@(`���=8���'u��T�1��J�`P�����X�o��L��9�l��7	��:��F
�6����@��/��W�W��j����f.��g9v5i��C*K�B�8'��m��y6���I�M7r<����Sd�����h�A��T��g����5��SF��Xw�.���+���*RDv���*B=�u�ne���@�/�td)�w����+�<����-����-�
�d�����7�Z����g�'N��g����
���s��!��)DTO�����	h:��n����I��6`���*��u��Pid���q�F�M��<���ew0�9G�1[���������z0=���/q���?����%������*O�L�G�7U9��\��gzA�M��O���D;�E3�/�����y��%���j�K�Qb5��Xcu�c�em��-��=��I��9�����������w�C��x������������'������`����l�
�H��@�s��<9 ���-/5l�	�!���_|k8����Y(`]�l���������)��G���q��Q�ap�����E,��*��W����@�G4����a�
�Y����+7�Pr��O3YY�����>���G��Sd�
Z#��z�M"K( �S4n����<�*L�����3������o1P�s��<
HE��[}�vyX�]�[���3���s}�,�}�lyz7^�%x��K�y�rDs�y�	?	b^��XQ�9)_A}lj���:����=���QC�\�\����{�/y�AbG��#�]�XC�7���S3�D�3e-�}
z������1���LYCg��	�"� �����N�L{s�a��E�G|�~5=�e��x�*�}����,�&>��e%��U)d<�����������^<5���Y�2��
�&n���:�s0�����}�T�C���2�~����uv���$}���X`��cP������a�*������{���4���3�����xD�K�u�����om�1���D����0<=�p�t�V�1�D��%Z�5H��sfP9�����q��_ktB�.�Sb������h��OM�e?��-�����e�C���s[3�����x�d�h����E�X9�G�5t��
?��� +�?���5��W�R=��m��n}���1����!��(��<������o}���K�#�m]z$������!G��+#��^��H�"/�^
�{)X�=2��\1���=�q���_���p���UD�/���e�����n���i���F����%WP� �%S���w���LVlq���w�C�=O�]w����U~�I��$�����x��L�	q�����ReB�*����+��f��Q���9U�������a?����k�F���ei�U}�~�	�k�lBo�<���~�+H����se
(L&�V��A$U���5���Q�����R�k�Lpgp&��������vq��p���9^�*��&.���rX�������UU����L"�<H���:O��	x��{e~b8��S�fx(���\6��[���q6���q����S�����~���L�"y)}�����PGF����~�yI�lU��zsr��Z�W	���M��g}E4�8�V��	2+�+[��Q:�S�;����{������
H�z�}�g~t�z�9F=��,+�P��E��t�i�+�j"Q����?���V��E���)�*�?��(�i>]_���������M"���5�y�xP,�O]C��*?�#���f�!���HH�	��UK�������_s&p{���l�c�O������}�5��}?W��P��w��W���T#p�	���;� D;(��;�QN�����%(�����7��
�GL6�G.H�� ��cq�/��x��cr�j��@�P
���,x��P-+��0�br[�h;��Rv�4�R��0���B).g���H2�����B5����"tO������K%���O�?)OBOi��4f��q��+�a��G����0u���<1Yc/�Ro��!��K���M�w���
=��kv�����_Q-�-�l`��'u:$������!�*���'����g��c���Zy-��M��S�����[�����W)Oq�W�]��%���2Cj��w�J��X�s��,���S��?��rq�;����q�)��<>vZ�C��e&E&O�l�F0a�c�<�6;��t�����S�l��4*v�<-�Z
2�+���[��>)_�y����q�C�L�������^���x�<���8��_<D�^0��7H��7�t������^����&M
�#��x�����(�<����a����"�����O��>'jg{���+�{�/��C�<0Q�H����@�~�i�gecp�<4��D�]E��� ��Kt]+^3����r|G�����xj����$J����c]aV��@��CJT{y�'�E���H
'TV	@����DF��d��s�g���k$���[g�)m�X���;�c�B��hY��8���g��5��o��Zze���@^���sq���Y��n�I��S)m�)�����{0�S��9<5��71Q��$��k" ����bp��|�,��y�u��%(��;�k�@��2�-�:�hh������5���U\�ZE��Q�'R��?�$1D�u���P��FZ#��w�X
]7�Gox��fvPt
�Z�hZYY�F��$��s�f�{o��6���~����r�s���B�q����(,�z�53wl�h��IP(����|2@�E����c��I�������=W�o&
��]�h"�������k�8u�vkyn'���bC��0�|}~d���ON{I����)����t1S0�8�WV�K�����'�� �Y���sz�/6�d�i,=���xB{=��\%t��N�ks'{}�@����1���*�����i�d3��b@��3�(��������T%o=���������c1J�Z��N�EzO�<=6�,���'��apcW����W�9���Q��eY3Q��3\�~\nT57i���,���I������`q/s{��>zV�e�}��w��n�5�mchO9��b=�g�x�����T}�m�-��������Y����$������G#j�Y��x��.�S������eG
z+9����G\��6�����0[l�����O�����d��V��"V�����	�Oyo�uQ�^����Np�?��X�@���G"��
��)y������E	[�a�>{p����~�������9�+;�x[��B��;v��5��������w*`x�e�5��4���W���U�a'�E>C6�j�f���I�<l������Suy�����.
�,Y��C��3UKm���V���D��{WtL8����^��)aN��u��'���@R[_����u��]�����r��nHOr���B��6<���z���~�w����K�6��cg���\�xG���7��XTZL���C��Y��zF_�����������d�9��:�;���<��EL�
�X������&����rt���:�Q�D����������<��cW.a����u<%���&k
�@���s��y��](����)�o{���:���s�1msi����1��ZK�(���@�NZ��zKs��m��R5W����['�r^,�5`�
�=>����������i�0D��R�B�N��U��6�@�Nv���S;+]j�u���������������b%��9����]0< R#����c�������wb�F#U��[(��t�`��:��%���q�?A�V��}2�W�9�f�t����
���{^�#���d�^��f���z�%:(�"��lhi�q���z���O��]h p�����j�zL�i��P�S���������h���L�&.�|>����(���������'��8�.s���Lew��Z�D�{�8f��n��p.Ha:=<���z�n��~��v������k�&��8���~5����eG|�����&e��������u�(c��7�e���d��%F�8�EKQ"!x���NS���cCK����P(��n:�PU����<g�i�Y*����U�N��d���+^�J"A�4<86�ZsVm�J�"J�����ZO��6V��;�'���	2�d�L�����5��^G���Z\LL���������
nz5�SB�X/��J���^��&�x��u��,������������9x�t�xZ�����������>��)�^����<�m�'���W3��EQd\N�uww_tu�����2��d�L��l�u�v�3+S���e
Oz`,-����N[c$tF)K���s��[���>L[�
+w*�����X7Cz�p�m�p�$^��G���\Z����%W�%�����PaGBg��ko��@�~}5����H�e�7�����Z����������|`��,��,\{���f��L Io�v_��ik����+'���e��5Sa�]Kh~�m}';A�����{*g��E�xi�D*�=��V��>)���_�ob��g����-�%���O�~��
�\��6,]q�PT\��lR�����	����'����nE,~��4_&�������,��Km�(��rO�pc`{
�4�������&
��/�Cx��S@�P���t��,c�?�����9��fZ�^I9)��y��W�s��2<2�S�^���YB���������b��-9����2�d�o�,������x�gE<���{5V��:u�~U��muti�(*n7�<��M/I�T�O��RM��>S��.��WzNW�u�N�|h�����|��_;h_I������8�	�!'8GWw�.����WA=I��?�S�q��w{�j9+��>N�e7�#/�v����F�N�'^��������(��~�v�����]B�I���`[�i��+���p�APZ��h�'�Bn��������v.�.4���(�V�;��U"��$+�V�(���<��j�LS��F����K��~����}RTu����� G�ssH�����6��~��q�����r���Gcnj��t4���Xk���h��RD]���S����x�~+}�h�Sd��5@e���RR��Ge��+�����B|��+�{4#���^`��'��[����c���6��	,l�nTK�������
�74�J�=�6Q!��xm�����\\��X����i��Y0�/���A�v���3�����R�r���GBu
�-��al �z-���P;j�����BRIfJ����H��l�}��:������\X�m�k�?�M�c����jU�t��&��k���4�*�H1�M&��!'�Q�uA����6�6.�������5�I"���tVhvj�����H�h8��}�����[���J�I<]p��Cq�[�9�Fg�v�XO�X�h����O����|C�~C�xB�������-���#"�������Q�=���-PUi��Z�|�}�b�e1�����j�J�_�@'_u{i[pg�&��d�ON����A��5
�ST��yU8�u����>��������nF[ ��>����f�=o��Q|���4��0'T���}@4�1V]���~�@ s	-;bv����}�e�����ly��S�2�`��_�0��3���%P}����H#��>o��i? �A��� ��%� J$F����TL�}1�U�WV(6J#�i��&��M��\����&����}�s�0J��+b��E���\��k����X�h:�o�"�b���tl�Y���#!���_Gp��������jWi��bu��Z���x!I��[���&�	1-0'�z� �D�CI�@�4���${�����G�e�4<��s�=7K��A���l��wTX�pBU
����n���,f"�#��I�<)zM�fK��4]7:��SZ��8'G��`'$��0��h����|���O�0Z�Fy���}���Q��?���b��#���GA�G�SJ���'��5���a� ��n���\��9y�����K?���-I�P���*�7z�f���O6��_����)���'�K�����"�n��G�+y���=�K3�P�i�u�->�:�gh�������	�$��t$o`���e�427�/�����c�������0�-�xe)����8��CAz�C��|��$�)�OJ��U�B�1HMB�U	�[��\D��Y�LfE[�.2T���Oc����,>��
�l�yGT��	{=+�m�w���(<+�b4v��"��_����gK��x�V�r���4&��K���C���W��^�R�l<~��N�t���6>!g����[`+;;�74�@I��[jix�����l��o�u���:���e��s,!��N�x�(��}�8[4CH4��W�`m��DY�R�wC�m���������_f�{6���
M�)�o�t�t�1����R�-
��z���|ztR;�S�Q����(`UV�o�f$�F!��=�$��?[���:� ?0��J)B�&h.���Y.'jm���7��#S!)&^��,��x�*����-��x�W
y�m�����m�����#����G�o�5��1!�6�0�����I�n_��p��w�D����Kl���X���[V�����u[������&]IV�-��
����=z�_�V���o�6�-��d�"��8
yWk	��{A/ABo�����3Wr-d�DR���Y�B�R�e�����������xT�s����_6�&yC"�d�8V���1����[�X��l��r��0�
G� *�f�<��G^��	/�;.G�?VN���E�fU(;?�x�?z�^�f���7�`��O|6H�������b�L��-�:<���4�3����#��f��6�cF}y��F'w�(�N�_Rb�[�t����f�s���u��;�@�:�K4��t(��n��
�� �&w�fQ|\��Co�!M�K �t~O�9	�~7s��[7����JM��&M�1��_���*�rZ���)}a:.���y���4^�vf:Z���?��fl���Ga��q��U0Z:���Vb�`��b��`�,#9�`>�<�Bs��=\�d^LD�9��f�aDk���������=~-1�v����U�m\�n�r0o��m�`]&�q����h/�t�R�7�n�J/�x��Z ����Y�����gI^�W����y�����p0��z�x�N�B,m�,��zH_g���+�2���5��l,/[��O�
���mTGM��x\p�m9bs&�-��]�gh]�hP���ke �o�so�q)�
�2��N��;*E�~&��.����F��4��Y\s$��I�.~��L�
��b�i�jVn�1;25�5�	�Q�q$�6�5jU���������9YM��-�v��VY�����`�.��Z���w�T��tr��:�
OElPVgz���u��g�i,�MB-|~�`=��9����6�,�_4xh���t�������%��s\Z�v)��3P���#����5h�����r�*���������}�}�������5C5<�����������;4ir��k�%�9G����(���I����	0Uk�?����G���u���wB��#�����v�T�=���|SG�&�������`��C���9C�;^5���O9q��xp���V��M�.+��T12Y�}�.2��1��	��B��@i��x�+���h{����������p*>!��V��8��`��e�5y��!\1�"td�����7r�Q��	����S����������j���H��#�6�yYBC����x��z������C;� ��#�~:�5�������� 
����Y'��H1��������i3/.,.���)�.�l�{�"\M�	��c���D��*4:V�����$���%�
xH�l�9�MH�����T�B
�[u-��S������vEZ�s7���m:��������Z�������0n��n��&�\
������~5CJ��T�x�2p�La���X��w���[��&�1�~ ���~��f�������TtR�g��UYG����:���A|���������^��E��l�paT.���!=���i��O��tF��Ky|:�u���X��������G�^J�#�J�TyB�h���l��g�p�?��������Fsp�4���Pr���l�\��|�Xx���h�v��[���TSAO�9�%��r��}��hR��F�Sx�^IcQy��36��^�/����8c�4]l&o��
�#
$�������EO�/�w��%v�G'�jDAW�1��J�e����������{���ah /���C�(4gu����V����H��
�-��E@N�A�������<�%]�]��{=�T�D���G<5�����e��o ]/�
�|y4����V�1$H�����|�:?���H�g`S���������R/u��#yh��{���q��>>	�J����LE��GO��c��������Z�W����Xv�_�?.�����������>�m�E���W?�%}��J�� "}q">����O���ro���Dh��D#:�:�n�}�UbM�*K���o8���IYl���9&5��{V�!�3-�a�
�a����8��1�F�E<����k����������Y�:n����_���������+%<��HQ����H�q�"QY��cO�$K�0�&��]Bw�x�v�%���v�`����s���yA���"��9���������9\��bS�����f���� 9���������	��1N1W�H���>�6���bb��G������#���]��+z0V���1_�f���k�����D[ �3-~����CipxJCKz�Y(A�����a�
qlX�?
B�i�Ht��Jt$T:�@����,�J����vF�=E}�-�#zQ9T��%�����?���#������/��b�^�F~�!	�M�co���Z����B���l?w)K:�v��W�����1��|tj���F�"T%�};S�x\'��'��T
�'�:�B��"��,���!���1���qtt�:Ye���Q�9�@����`���
`b���11�~������F�%LI��|
�TB%'��S�����v/���
?5�q���j^�u~�T�|����+�����['�4�=��h�[n�n�:#����[����Yvuw�K �����z�L���7E?�-�0n��n���nX�	\���J#���-,x�s�G>�gy�������{���,��A��<|��	~�&�t��P�K�m����+l�2�����!���4x#R�R���������v�r
��M��;�5�3��������y��N�Z
���J��qI��j��X�n���|����Z�$�����.����3�4���
o���Utlq%��Xw\~RX|]���I���:���x��VM*���tomE*�?���M��V ���\���}�������MX*739=��T*t����%���#�D��gS��+�'�k
�_	;�9�u�j���]��861��n3�������b�c��l�������VM�Fm�$B�q��wz��-z��P�Xl3���J�NR�,VJ�}��	�f,&�.���i��
���Jz�k����P��L�2��;]�3�v�������R�	D[�"��	J���J���$Jb�X%��s�F��p�NG:I����V�t�)D�Rg�,��M.��%�-���E��8MY�$�M���6����N����;J�3a���=�X��7gr��E��t�j����J���QG��\�T�:V��b���q�L�45n�������C�/�T�K�:U�j.���M��k�����]�u���:L�b��x�N�x��:N�6��d���r5�������c2����z��b"�������O��l��X��E*�t��+�L��� ��MF`��
Zi~JId(��@}�P��Y�-�����a!{��aWdT���9j�5�05`���G�<�:���#�s�<�d�����^�OR{u	w�@,�A'�r�FU�a�H��X�*�2�������
��?�)�:�f�:^�e�^������g����#���-&�ux0���>��a�����	<w���k~7{[��,�p}�����%�n���'��*���O�$5�'0H�S;� ��m��0N1Hj0=$5��1H6�6H6pN4H�@;� �!�f����7Hj �$5�c�
��h���N3Hj@'$�;� ��g��M��L�����}�1%���5��M�M�x�)q���hJl^�cL�m'�S"��4����	g�k����;h|���t��ON2���u���`�'�������?�T���U=���!�`�������mH7�u����V3-�!|�zR��W?�Y��
�^�X�R9�����]Q��R&����W����v���p��i��x���SO����5&��x��9��X�Yn��lW�����G5���x�r�g84�.uZrI�e�� Ci,��z�
��0�\��8�A�	H��!/t�R ����d
���,b�,<r��eJ��1+��}W�����>��C��6Q�#�<h���z
��X�Y/�C�"�@G9���@u7���n\$��c����r���,l��=��'���n��g/��k���r;���f0����V@��&�^�`��@�������4���O~��y�6t��;Ot�6�I�en�?���O����F'����2Yr�)������s��0����Kl��t86��J9����e�E����]�&S�cl<����n4��IO��
����-���3���ugz ��f�e�5��;����7`�Z��~�mVP���ME���P��.EK��]��_�����2KA�|���m�����f)^��8V]��P������[Q���G��$�cC�N�M� �q+���mo����LV�����m����6��M��O�/�d=�]Y���F[3+�1���E��	
�j�2��8
2i�R�����N
N��~���{�_�u��5�=�]CP�-�
/���L�:�L�8'qamO�mo:������+:qe���q>H��|�8O�P?�����j��NA_��X��?{�iw
�����
ef��h1�L��s��S�6��V��j*z	��P�/��p�:������-]��S��K6���R�R2}��L'*t��]7��M��"1U��N�7�������c�������k�o�~����W]���y��)��	��,��M�l������8������n�6
���#�m��0��k��m�r�������I�hQQ{�T]�=aSM���=��N��kO�$o�LJ?{����u:�G:t�c��i��t����N��t`�����{��v���	���j�w�!=����);*����4EZ��G���#�������T��s��K�0Ws���8x2M�����W&�}�:a����k�����Vf'��Ai4����-�����������>�����3,-i�*M4��!Z�94\8l�M�cj=���l��Z��k3-zC1�����}�J�O^`�r�!�!�*�����n�B?�h�N�-6��38�e����H��"�+�����6:�x��W?`��;]����r��;���'��6~���u��=mS�N��f����[�O����O�g�s@�����E�_�n���'��B'��Z������[��m$si���=$�cY�u���[&U$���	����L�E�&�1�b��?���lT�$}{��l��:�^��Xn�!���~<Y��d��R6h�&Fr���vj���6�Y�G����-�����<E�g�������i���7psaG6����$t��,q�.{����=v���$�]�����\4��%
�d�EN���2���.�������0�PBG_^K't*9A��V 0�o���Cd	q[$�-���,^�U�����������!gD����
l�I���
��q�%F�t��!w����*�����>4���~����|'�X��04��7�����J�r
����;�(��#����=�9��$�DI#x�R�	���z�xMB(�	�Uz�;60�0c�� �f��M����lW;0�M��6�5�+�$�Y��Aw�]�ung[���<������Kb���0(m�@���y��z��]K�I�)}�t�9q��b�"�wM��nw�Yi
)vk�e����;�"F�������J:�;8'�J��6�%��V�����[}Z>��n�UW;������yV��Y��g������g��=���4=)��/���~�C�0�m` �F��]5����g���k�j~7O�_�o�xj3���9��Zs5����A�6o����2ZR����:�A���I5&4n�h���/#��d�O�����N��K3���Io�6��/e;�_^���_��� �C����������@?�O"��'�&�2`���/�,�x��m���wWh���M%�-�cm�t9J<u<�����EQ�_��e�C��8���
� ����H'#l`U&o>��L9�gs�pGL�O��xp�DK�X��a#�q�%+����FV`�19�������/�Xf/��]���������u�e��kS�fG�U��J'�i��l�����oZ�q��s���f�|�����z��R,&����xd�*�]���V��bt�S���8�D��s�8��	�������.�C1+����!,<��kI����
r��F3���0�M-���|���
:���F�=�^�a!D�v�;������>�t����?�)����.�~��D���p����cc��;v;]m��!�G��r�N?��Q��^��^�O��K/���,�1�$�b`x6�������u:��qN42�:�^��[C!f��������Z\���n
�i���i�n
�tcwcVG�5����0�jOareK�I��-������S:�Rj��h)��N������b]fN�����i���?{�E��v	��xM��� �C�o���^�yR��x����Ci%.��~�C�LQ�������,�h,7��4��~���u^��|���i�^/]� ��X{�����H��m����dH��6��e�e�q#PRg9 ���hd�=MT��8�'�<��R1���T�P��ML����-2&_*������ h�W�O�J=�z�|@�Xx�d�q
Z.���G��l2���9�b3k�:��f	�,)&,�e1g��MbY+bUl�,V*x!�y�.5v�C5;���4��cL��C`�a���!��e&������eA;��4~�����f�!mE}��Mm��]Fs�������'���U���c���` {b�i)]��@�RXbE!(.K���2�h��'�����W��C��X��l���b#|�,X�c��A��ad@q�|Vi>�/>'��t�	G�~�]:�@���B@����|G�Zd�`��V��;��B;���r��EQ��ci0��,��Zwm�+�(�0��p�	5�����J3J3����2���V1X�u_�����!��{�+R�����6Lm<���-�0�����T����SO
@��0��dN81���	��@s��\��p2b^�Y2)S�E��)��Q��zM/�5�N���=�f���uj�Z���A�Q�L�e�������xV��(���p�T�������p�4XP��l���+6�S��4S���*��i��2Y��#��T����fo�5N*�E�f�]J�@��)�:U�����'��ab�u��}��~��:��0�$_�M?�T� wZ2�t�'2����v��X�J��T?��1J�fe��~Z��5w�E���brI��L��_:����.f`*�U(P44���O�;�<T��I���MF�f���lH�k�;�
���\�A�7Q�tb���@M�S)���%_�.%c�Td�hQ�L�dKD��p�C����K\�#�5^�w]d�8��f�w*�:D��
�}���p}�4q�_��)y�m����Ta��A8��=��)��h({����o�����,���[�e�����D����u�^'$0)H��`$�C���Cla�v1���|�c�^�������NmRG�xe�K$*��R$������3��3g��f.WeS�r���:����4��@������*.b��H�:�Ii����lFR2l��������q6�	��f�,��������~+��t��S��$|d�xDR.�z����Ut������V���G9���V�@vK"�*����S��?��YZ�(�4�o�ixxu8�r����l����1��,g�[�I��-���N�K�z����I�r�V&H��V��]�q_�+pM����b��X�i!VB�:�"��
����b[mv�����,�4�SX.�]X�u��:���!�5`�����+1�M	�3~����r��Gv��&N���#���"��pR%����������r��5��~��������iX��<���� ����&��
���m�[�:ekJ�P4�P��Qru0tA�z����A�\�#���/O��P="��~+`�eBwb)�`��3�\��e�`nn�`�Fg�A~^�[�-6�7�T�}1��B-�����FvI��a�2��@��\����[m�M��@"��`#6~�����>I�G�s��A��h<����C�3���)��@&�^�O��>����^�����2�yp����#bX��������;��;��S��������=��������KO���.�|���"�mD	�s�p%���Z�� J�@�x����c��-<=:U�mz���L�q��{1���sp�y����]!���)h�H�_W���^�h�y>����2�R��U�� ������X��RUv��}M�%��������l P'��������t�������q�1U��w����t5����sD)�����v�]�X�X�|���2(�-�9��l���+�V{���;~������w��:
���1���!���~+�'RGH��T�l2sw��:���aS��o+f�������^mAh��\�FB��B�����`AR��)B�h���E1�W�3�m�����7������6z�hh|_���r�'��4����q��� � �������5, ���Xv>����6��U����NqR��D�7����>��d��8����������4'w��[��IS��9.�;u2`w���~�%k���&�m���-��=M����L-q�����%�N�d5k��M.m��S1_&�\O`�	-�4K�*~�����#����yi�U
|�/�1;s{����q����0���`%|����S�7���L=�R�������pO��k��a5����H@
���&:Ng]�N�D���C�)���~@�Q%���y���!��@jKv"v!���2��|7Y���_���}p�O�NA}����I����,��1r
q8��R�y
9���oh[��!K7k$S��U,����S	��<��,xne���V��S��:����kH�g�Q�:� ���w�u���	����N�@�j�0����$������qb,'�r
[NM���2"��H(�d�"�l�;�,�h|�����'�ll�SS��tx�[������[�!��,����(;2���<�g�b�),������ca�&Y��\�	t���
:A��b}����]�)�tM�>l���N��W��[�N��8ca'�A��NV@��+)�S��!H���6|��O�>]����x{|\$�I�)M�yc�@��I�I�g�����y�"�u�b�Q�{�F�C

������VP�@G$�^,�]u��1�I'5j�]=xg�E����n�E�R*��<�>�\jU���^G`�r��Hck�����j�-�k�|y��!�Qo�����*�g�4f�B���:��u��E��|x��e�%p/�:��V�jY���w#Qs)�`N��j��}�H6�!�d�Q�^�w�z]t�>$C���[��
Z��i�"5=y,�n�_C@t�,)�=�b�$�p�i�yz�������;ypPL�>;!�7�:�~�C6�����j� �5YMQ�(��Q�r�j���hOeL�K��M}'P�p6��N@G������j~����'�L�h��2%��������IpG/\��u��!^��>�`
+7����"E�~+�5q���)D����?�e�l�_�}l���������`���d|��/P�'�'���0w\���'�,o��3�R"3��T����������vG�DtJ�:?�������/{8������3��N(��Q����Q����2�=�v �c(1��v�68����	����!����Eim<��s���>�U�{��4��S�7����V��}���*��N���t
�:bU_o�r�yz����;�u����"%�RY�&���NAQ�vP����f�o��lg_9���-�S��q��*AH}�-��om�*j��<vS��E���U&}�_�-��Ke�l��J��7�I�No��h�K����������%��bt��]�89j�L�h�u�b >�� n[DOY����t���.�� E.O�F���f�5^���b���h���v3I@6*��j:EP����M^L$-X��_�^"'\�0�k*���jV�V"���W�4���d&�~o
�N�O������I����<Yq%��"D~�$t�'9���p���P�^�!:��A���H!�$A�}k���Yl�0��@���������5�($T�vo�F��?!�h����e��p�T+�FrT;�[���N����f������2�#s��l����jeD�����UT��#�7s	G�A#�&6���#R�X�r:Eo�$�*��/�x��)����r�g����I�w
�:R���_E[H,���P�����P|�*��kx��d@~*�lkK4��^�rk	{�F���#���#J�6	�CLD�R�oK�����]��:�����{d����6���6�>���/�\��b�YT�x�a8����3�	�L�X�j�m;��sg�Y�g0�}�8� �>��1���G��X|#	s����F�&�5��ea�3����>�1_�oW�4��
��U�f�0=���:k�3r(��s:�q��S$�wK����U/2	R��:M��j����q�|�����u�;��(��V�g|oz����ve�)����u�r������[W~�D�V�&`�+�J/�������Hx�yW{�KxCd��H��g�[��"4��Y ��Tq�1S��7�9_<&q1)�����x�������v�v��l	h��o�L��=�l#��
�4�="�6�T����v���d������"u1/h��#�����Q�b�F�R3l�(|���^�hT�������T�ai�bR=�R�m`��A��)���uo����[��q4��k��X���e�������������I�~��?���7�b8���W��n~/�D���ruB��M���	��!%��Qo��
������7S�+��6���~d���2��+�?nYq���}�+&yW_p?5�p�j#�T��>�p~�_����rB���tip�����z��	q�vw���)Y�����~BO2�}�/L_��h
����r$H��>&bc�m�t$�2}��q���1��s4�fZ:nh��[�"	�kry�)Y���9wg�k�d"��Za>�� ,�y]���%��I�!F��u������!�����%B'��m��?@�]V#�gu�\sn����q+��"�6�� 27p����jR�!}��w7�����I�W}]�:	��+]#w�L���n�.��N���>��t�������p�N^�J���N{'�|�����CrN>��	�Ykq|��kE:�������������_w+S@8���z�:#���g�3�����%�id)J�������Jfrz������zt��zh���9��J�"�	
��>R��~���{&�i�|}P
e��f!
@�^�����,�S��
{k���#-����?��K�BX����aHk���'�S��Z�y�Uh��?��0-T@�vE�>�O�OO�^����A��:RG����9���D��������Nfe yd� F�(F3��������L(��?��������TQ��I�H"��z�Q*���p�^�nc��O��������}~��*���u�*��w�D��%�3�)��P��0��e�(�s����6��������`"�8H��.��;�g*�`8�^�C�/	��L����[J�*DS�n���Sp��+)r��-C?��������`�_�k�|��w���������,� 	���W.��G��9W����:����~w�}+��VGy��5e��>��bk��p$M�W�(]��f�{r�`\�~�b�Y�[ON���:K����>7U�C$��T���T:����q^�������SG�q�>� �G������	��2���uz0B����S��&�XEK�����@�|m�������QH�]a����������vh�?%W��|h>����H���������n������~�: �Y��`w?��}4��*����t*�3���������t����2K�����+C�2����ShQ2���c9�;��h�j�OiF'�#�D?M|��Oi���&l��C�=QF������2�8�!�.��3
�p�j��=5�i�����8�M�A�"���f�]i�^�k��f/9���$^_K�����r���$0�����r�������Y����6��W%m���P;���}*:D5���W=�P�s�TV2&�f�?���Tt��Hx�?�_���/.���#�?���<��G6�;����������nY/-�����%���o*"� �+2�W�f9o�������I����#��>:-��i4g�w�UiYR-=K�����'a�
��A���� a/�����gt�]4f����/��2�h��}w�
����^�*EG{a�a}��2�	V��i��0@�KWDy�k3��������v)��M:Y��]�&{�F�}�b�����8r`��(��z�	"{y�}�*��/�b��.�������Q����]���tM�����m���VP+���zO�w�x���+�%�y������o��z�G�N\'�g��

wF[��V>��$�������A5����Tdo���Q�����S-p��[����n�b���a��n�KG!�6O��w}	[��VVOh������`�z�VN��E`� �����=�,��PG6�b���I��
(��}tj*����ea��oR���O�5q2��s!�������,���P�M`��"��Y�3���9�#��Qq�&��E[@E�e���!��E��&by����M��-��$O7�4��:�oV�;����A-��{Q������b��82p��3�P���O8���Z���������H�?c�to������`dT_��/���ym������O��.���xcl�@u8����t�(f@�W��0�ZB�&���<E�%RtX�����~-���,
*�tt�<��V��>hS)iA�e��	�5���3Q���������n�:��9��94��p��{��[}�/�3a5�I�*������9�����������l]�����'+���(����E�wBt����*[(�6���w�~@�������p"��s�L@�MhM��f�4�����b���%*������m Gw���i�FJ�y�KZYK��������@����m�0�l��nI�@�^����zB�snw������`�s:��%|���s��d#c�=���ZM4!�����X���jV�8��h+�u�E����5,lEi��9�5�&BX��S�����k�d043)X���Z,���4�u2�*5�4�W(�<`��'eh�?��-60�z.����V�olc��3�
�8$J'��w����V��&��aH��Mgz^Rw��I
n7���s/�s���nM�s�0��(3`��g��
�����98A�V\'Jb�l�.��l���{�{1W	�q�If,��v��rv)�-K�����f�Y�-(���g����O��!�����������z���/m�N�f2w�x��t����>�gk�m�P{��k9SHT�
��I�'�"Cl�M��1
*��8hI�<Gfbs��b�i5�
��r��^:^Zo��t��D���OP���JGw��N ��#H�����R��a�aw�Fc	����24��Va}�g�Qk���O$h��$mH��{u7?4V��<N�%B�G����
4�������r��I>�K
8��������	9K����pgm����������h�
�+,��;���}�������@G!A>�pQ�>zr���e�/gny\d;��8��l}Y�����Z���Ul�����&k hO��,��G}�e=d�{^f}����@�e���<�����0k ��l9_��w����~������r��K/v:��j��8�W��V�/���'�d2�x�\� )r�������w�:���U�3-�B�^:�9���uU_�O�a���'���b�^ l*�S�&��7hm�;����k|���c{!70��R`�9@���$�����u��X�������]��\q���K�Q���~�5@�0L!n���+����K�^��v�X[s(�sUR-�]!^>
6�,$y�o���W��D��M��D��
���Ow�=\�!
$����s��������S��{��������UG����E����B]�I���
VFZ����H��n)����M��|�����E�� ���������v�@��jjL�6B����
��`6E�[<�l��m_c���P&���!3�$����Mn.��������Q�r-o�	���U�X�m��.0�Chz��%�~d]8L���<r�9������a�(��O�0X�'v!��g�Z|���
i����~��t@uN``����~5`l#u^h����mS[j������^�
�y�f�����R^+�����@��W�dvX#��<�v�$4PX+��p�zQ��0��\dwT0I�����	��R�g`9Z��A����=J�L�d����|.�<f��*X��}h�>���QK�����������?D�N��-��"�7�{�`��<er��H�[�*od@�B��U���W���������G��K^d3Tn���<�������^�xQ��`QM�9Q���N�ct�k^�Iy�	;&u�<����M�#�*�����!�\��q���3i����l�*cq��_!3���w�����X"
k�|������p��v��<YM2�4�Vp"� �!K ;z������r����N����n��@�Yn�l�K��h�BK��W�<����
����3]�C���G��9���5��x�AJ1�Z�������&�y�.�R����4���
�?�a��X���
�};
p9�gO�����>��p:�R������b�sEs���,,�e�b���>J�I	���GO@�m5��N����TrDJ$�ox����;�1f��yl���e���k���[���~�M:c���K�����scN���hX���-�����@��C�@w�B�zZ�%`���c��b6C�\4�n��ma}����O)��n��r��Z�����������T&#K
���B�
a�QFX�Y��W�<���9���v�~+������ �]�:�U�N�B�%����=�
�8uN��Gb�����{�D�
eM�7��A���b�p�EO�x"��`.�3�E.i
�)��6v���h��m0K��	vQ\s�"V���gk��A.��_�^br����C�
���T�hH,l��n�	y�m��9[C�{�i��~I�I�5�K�[_M�Sf�\r�'��xH�����X�C���,m������}���u���D������
��F�F��������E�D�R��v�UL�����[X��01���h��`2D�{�2
������>�9�[��Of���q����%��\��@UV(�fU���ch�=����^���q���D�:�Il�$!������x'���Iv�^9?��w�"�!)��^�
���������A��W�M�8���k|/�Tn�t�>�U-[�q�Npn�h�����d�?.������`��6���!y�k���6�Z;�q4�m;�������_gd������kX`kh�o��8^����>}����y{�W��� �Q|�W4c���g��Ku�,��&�-����H�J��q�|���cd���T�q�����f�d��&q��!��te'D�:�ys]��rM�.y���M�7��Bo��A��/���9�������{s������17��Xr>��������k-c9�O�j�T����i��91LK�z�:w#���P�Y��~��X����P��-����}P��=����vLTys���eYg�Lx��y�-�cE��9F+#�O����F��"�,���OD�c!�������da^��}�i�	���,�����S�����)���[G�6nc���a���g�u\��l�qC�8h��k0s���n��d��-1/&����V��Mb{�����,WY�
y{��A�S����E6�p�=��Vonm&���j�BX�����g?iG������=F���l]yR���D&wOp����OxhDOlG(XA�a��&u_hsF?����7?���t�Y�m�������Z�W���(2HlC�r�=��A���������%���l�u��8���+[\�.<��'#�i�e`6Qr.���w�{���C���3��D�M�9�:=�q������=z��Fy�'�f�����G���:�H���^=UsOFc�p�eU�����|��p�m�fV�q��-SG#�����}�������s�UhQ/��8M{��Ak�n���&�I�,���`W�s��Rbs�:����8������w/�d����~�g&)��5�z�M�E��P�U��&1��R�[��cY��G�����'���0���d�:l	�P�s��P�M����zvA��7+��V�08�zUQ~�.�9�C�J5����u�(�wq�O��zlU'���Q?!@���"fv�O(�j�so�9����/45
�������#�Y�}"`����
�����@
@��Q��s�\��!-�?���!1���.`��||pb�X���8%�^���G�$�G�����O8������l~?G���c�h��m��4���W��^
��FA������ql���8Pf��'��7G���A�7���f���}	*���Pjo.4x�
�;�f�]�Y��a������d1�^��ku�?�����Ou��R�7UJg�[�|��hW�-pF����Yh��T����E7�������8��JY��O�X�LH�z�����\q/O��t�|��#y�[�V�+�n����'T��������7��#�y�	��h������?Q���8��JG�t��(�o�����3HX���K�]h����p�����8���HBt���//�<�z�q�Z�O7��&N����e�������'�[�'\��<���
�����>
'h��cR�	
�Rw}�������h��A�W�k���1D�c_�B���������c���������.��
�`o��`���9��tB��I�� �`��Q�-�����5����������uY�:9����Oi�2�:X��y��~m�l�X[/<s�(��<����><H��~�O$��A���l��Ww)*����7������~@	}������/)�
������gcw��v�~c�
�;�`*<�+������Sg�Dl��~T�g�����$���>}e`����K(�Y��I�[�,3�n�������*Y�>ii� ���������l��d�6$�����Y^O�l(���&��~��l�������]��9)��z�RkQ/.���>�M���f�Y��X��:T�����O�u����\�t>4�G3r���a���� ���I��ZW���t���}�L��a	��ix�����2��qJ���@Z�/Z�>M���O�Pm'e�n�\��:���
��S>j ���s�~c����>�?����fq6��c��H�k��[[(u01�<W�n��.��k�*%�b=��:�����,�A12�8�m!TEh�O@���I�hq���rt��7�)78���Pk��q���6�'������s�[�j�
��.���$��Z��s�ke�Pw�}\+�
2�l�/����~���W���k�i��rsQLfB��:��\�xZg?����G
rq����H�����A�,],�3�w.�O�Ox�
��$��G���U:�����)��.����k����,mI{B�F]�FEL�������Vn

���>T`Q'���t8�9okE�~�`����*G�Fx,���e|�g=�[MS�w��h.m ���&�Zh/C���Y�y���������6r�(�.no��+�>���]�+��O�����?E*�4jdp�K��l
�:�E��#�LT��3���>�Z#��7�O�r�@�u?����/��V�;_��>)��a������_}�G�������>����]~qK|*�5��J�%�w���*�4;l*l���	�M9z�M�
�CT�}��p��$^^%wx������:;���{_��E�d����Oo�bx�~��&��J$����U�]���E�
G,3��5�'yj�6�<��3/F������a������|��3���sH�G�W�}����l[�F,+�1Z&�!��7���52�����j?�6a�-}}=)(���rL�P�x��Z~$7}����pGZ���������Mk�u��Al��D�E���t6�:��P^����?��g=D��J�����oE_#[��!��Q�&�.���f-���J��p0 �5�4b���2O���1H�\�:�����p�ix����,��^=���^�Y�(��a4s���<���+ZI'�I�:��|5���4--X�����_�LQ�������<����]i����~{��@0�����K�*N"������d���*����=[������d��Rj��+i����"{�z�B}g-��� ��PR���D�G���1?��)��,�l>�	��'�B����{F��9.��	��q�
��Y�^N,��;a�b��M��4��G���U��
H�<oMS,����#�]�r ����d���_�`�mN["9����3���*���L7��[iI��e���b�i��bI��5_P�{ _���ZP/	1Y��,�x���=�"��zo4N���BWz��dL�g�\y0�Iyx-`gHi��L����ue�������M%�f��5�<����qj��V��);�v�:&;�����<�k�d;��b{Mc=���Xk*�cr�f�47���r��gl������fm���f��J�VY����R��&�E,��9�~��r�7#kc��v�i]��HV���]�d�'�j���o�z�D�Kh�}�O�����>������c�0W�BT��Gt����b��v�+�Z!Qf����|��":
D��l9�v]���;��)�V)#[VM01����f�k1_����G]�1�(�k1���C�q����	|Otw���M~��M^�?�����2�k�S�ls
���1�yU[���O���>A�">���#��/�'�G��;bg�-+����5�q���W�7�2���V���������5��MY!j�%^/R9}e��=����B`&"������)J����~�����������#@������o���������m�O����9s�~��0�=BE����}���������^�(i���W��ygn/X�3G
X��2��I���)�p���|{�\T�'��������s3K.����j/��Dy���o�����SJ��K�
�������.�.��@-���:���w������*5���.\�_���=�Z����Pp�Z���*2�w�������������N����w��?����$.���y�q��g�G�V{q����p���1���ao-�������C� c7�RI�0�����*<KW��Atr���l]���E��#���QO���u��������������>���2�1�����S�IU��_��� �X&
�(�4��Ys���T�����}kA��P���R�x_U��~>�W�i�FZT���8Cy�F����t�*��i����<�����|�_�u���%o��Z��K�:���d�������ncM�q��-<"EW-����Y�'t�hD�v�
X�Z�y��5�pW}���bb�[i-�n���������|�opd-'�������KZ�k����B����3�Eky��[#��^q�U�����brKo�,f/��Sl�9x{h��ZQ8�HCj�s�����|Y���$�p�K9{4��K��K����r6	���W��G�0�e�9VH�E`-�*���5�s��j�)KX���u�m����vBE
k�w7E���3Q��}� ���*���QW5k��mR4+���g��]�Ih�B"�8;��H��-�z����2�����0���ti
����IW/�������:Fm(���BVK]�_T�Cp9q�}8�rh)�����N
�?k��4j9]�'������ZNB[	��5O2��sHH�7�Z@�5����8%~S�����|���������JV�����X"�k����J��*~y}�n"��j��[�1��m�/7�t���9��'+����wX��������"�|kX��s��k���Q���C����B��=�����@�=��[r?����a�����L�)�����
	���������R8���%u�8��\�q�pw��l�����I��U������v������� `ri��;8|�;���9��d��n���/P�}����|Bh]�~��ViYA�-�E���G����%`�3 ��2�/����X���[�!}�fiM�Z��]9�f�!�>�W����7�V/�d+���>���S����	����~!�r*���,���f&���f7�"l�2�@r�z����'�'iBk9L�a��XC�����KPzx�����K��akx�X���Z?e��*��ZKT�Q�)����{��b^7sEWj=�+�zh-B4n.�=�z2�:G^i��������r�c���Z���;� [�-���Z�4�E�k�
 ��N+"Rh-gH'f����a��0���|����G[M�Q�����1H;��[@����p���;V��Z�_����^����7��I2�������#q���h��:���W[��
=�3�k}������[z�@��Q���Lf����Z�3�VZ�,�0����gn��H?��hC�nm1����n,� +����I��YK�m1_����jX��c���X�vOSd-��+���-�r�/F��A�n.�%[$��E�2��^�>�r�C���9��r�s���|����r�cn�=�����yU���,w*����n�v�,�<>.���*�%��i����C��WB��K����y���Z�����\G����r�V�7�T���s�mP���a3@��he�����
�Z�/{u�����\���4���l�?�-��T���Y������@��j��������M�og_���]����`"?C��&����H]�������
�����V�9����@�1�"E�C�����Z��]���k�-�j��S����G�q6':�XV-c�eXk)XFN�`��#b���qq8g_S��+i��
:W�����ZTg�y�T�m*f�"��y�w��^e{uwg_s�!Ym���v9��}�g����="!�����A��}��V?��M���T��9�8&~�8A�2�*��
����Y^�<�$G�O\��������'������������L�/���%M^�y����,��x��f����1s�$�����[��Wv\��0n�1r��R1��U*oNOU�qSy��J�q�����y��?�aq�m���Ig����&!B��dM�.%qs1���L�=<OX��V(E���j����E�:����SS������:���������;�s�����&��q>�~\'+������%�Gy�c(z�,H���/Ua���g_�������/���i���l,>=�r�z1�kAT7\8�DY�a&?��n���s���}vY�Q�1�r"���4{JH��=e��������U�Pk��&����[�L���2�?���w���/�t��%��.��~�}�,t��a�Hhy�zwz�ha:��7�X�$��|e�
�����&�����^����vs-�ek?��j����Z��9��jV��v��(��������2�K���c��|�������oE�!���M�8��?���K�?���~rOU��c��g�b0�<��--�cP �0�)X�:KcU���*��������
k���o��z�dl�����YK0��>{�^��3)Y���n�a���~I��}�	"�3w[q�{f�.Hz�"�����G��tW������x&3��dTI�$�	��������Q�5�:��*�K����8gi��+����U�6o�y���w��[~�����~�fKz��N�bX�zk1��������86���?u���#Q/I��r��9��#���"�p��s�6'���Z��w/��,MM�'l-
�����������B�(�|��]�����I
tq�f���8�O���������V�����"���Ic�7������)09��y��j���v��5�����z�6�������t�h�QF�����l�-%����{�c@���(����,�w^��'��
9_5�kY��q���zVI�UO��x_��VZ�������X�=RT������z���o
q�5��f^5
!EGJQ���
�H/5�����I�%��$�O��;E�`�{d(�����.��_��i'��H��s}QT��j�����n����C��?��2��s)vI���rg���I�sk�D�b-=�2s���?�B��[iYHy�z���/������O�6��xu�|J����&)���j^��\�:�NUGX���&-`��k������������}�Ht"�\�D@���A�`w�URl�U�i��q{��_����D��4u��y=�_1E�::����`�2�S�]��b"����(Cc)_�k�������>�"r�S���YKW�I��^����J���u���Fu_���j�������@n��\739������
�	'�.��~���;!����� ����_�Y���6 �T_r!E<<��&k-}�Nn7��@��|��,w_����j�)�=�a�Y�H�|�{��@>�@RJ���^�1�.8��z��E�J;�W��#v�ew�!L�Z|����U�o�B�\3�PG� �������R���4PP�����@�S����i-R)r^�ei�b.�~b��J3������=gj�D}bO���h-Z�s.5��T:�?�(��f�!���o��d*��t��q�/��9T���J��v!&=����o���P���g��
����������m��$�7R���L���e�5m�O ���r�?uG`�kS���\�h��H�'���=�;�~6����[�������z��t|���f=�>O��x�D��k�P�����]�ib-�0M�*
��c����h�Zh�bf��b�h|yLk������@��Q�MI���.5H�,�ZQ>#)�E5�Gk��8�E����5�����:R��%����)	^���!Y��@{�E�=��+�iD��_
��U������7��ZM�OrAw���R�E�����W�%���\�"hu1"����k����.>�g1��W��;��Vb����V5��I�f�:.�9�H��@P�`��'��sD
�n��e�6B\���,�Z.z��V���TU�d�q�de��,���d�}-%�5�U��e�.PQ-g/RxwX{��}�vM^E�
�9��$�3����v�v��k\`NJ����v�\�6
������O�g$v��LYf�4�f:�U�h�:��9�]�}����G��bN�"p���s����6���T�=#��]^���7+�dV�+��s�^�w@��f�u@���<NA^�W���e�C�(��foUL�k�.j����y������[O����b��6�6N��
���X��V���PE����b�U��;<�$��[��Z�e_&_��I������}]*�KA�D��D�g��b-��K�~Jx�l����#]���V&
p���<�@�C8@.�SS�d�	=[�sJ$G����l�p�
�Y�Rp�z�=�-�{��^q��t)HD�Z��o��$������L_!+�e���S�$s�����SUR�q�H���@�p~��m��F�w����>���!�V�}������2��UoP��c��g	�'�?�\Q�uF2mki]bUC����qo���*���F�&>�����,�E���$/�KxD����#���-iO��
����gY����K���Q�_%Y����Y��-��(��~~]���[Kk-�����Ct�g�����cdr�'�+i��U��������ly��{�5�a��n�������'�k1�K">���Rq������2�\������4�VI\������}u�����W������Dr_�m1t1/�,6������5��i-���o�m������k�J[�q2l{���z�;9[�R�}e�M��r��r��wb�h��y0�f=c�j�mX{;����0��~|Z
������������;��=h[��D�!v�3}�Y�wRle������{���|T���5��#�+K�-���/���B��U�	��BkG����;�������l^$�C�n��;�������7���A�yO(l-�P������9�b-
�.��c��]T������fQ�@��o������=d���p���no��9[#�}�
�% ����S�\�����]L8�|�B�g\�'��������jz�����CV���k9����}���B��(2��?p��$���5���c|�����G�<�)�#O���
�Kky������7:�@�N<���<�m���~[H�7���05��g.�8�U���z��:@��M6M��q���g��2����Q#����#_�	����w�o1�~
�Rb�Z���C������k��������F�__~�����$�9�c�B�-����}]��W�X���l _?KT���=C��w�g8K���Zw�/��$��3���������[w�]�����}}�V���s{��`�I�����>��
��4���:��v�Ne?3z*IX��������x+�Kz����!hu��za�
�������7.3w�SJ�sQ�MQ�^,��&�UA�����s�Em��}w�]m7������Bc�+��K�gHK��m���@y���v���Gi"���%�]8���l#/���_+�c|t�G�j��a��E�����~%.s���������`�Kj8��:����N�Sm}O`J�~ 5X�N^���Y��[�����w�#��rm�6�Nvk/��b4���Z��o�q��s��*L�,������k[*�����
wi�y��:�b���o���<���s�C%��$�b ��}�`G#��aM�M<,fsjx����
�<S�����}�U�>]��Rxv�r����};�kH$4��,
=��bRp�u<���>�LI��Q�5�e���9;��&�E��q���o���7��y�O���lR�u�d�:��rfe�{=WKVS94���w5�t��`����}�]�Sn�������sJ[�����{U�8��IW����Z�&�����W���������z��t�(��m ����!]��p��8O&Y"I��s�T��IN�jr��K6�N��f�7s`�H�t�Y��|��;-����U�x����!
>��U�Q�9C����x�eiv�����(�}��x�NV���y������Y�=�*0A���D����~�����Vc�:wd�<�g�r��>������(����j���P��I
��!��e�}���1��s���\����s����n�	
��y�\���0CS��$�l���
:Wb-T+��7]/����w�v�T{��,�^�XK�*	����2���9e�����g���wE�2��h����n!G�����-�%����I�,���nq��f�]�o��LU�'��[��B���!�5���"i�x��`^'"�X��;���wo�e(�7�����i�\J�St�8}%����6�W3��$�x��y�`�,�P�I�:x6�6����Me�)<��T��I�g����B�+�Y>K���?Tj�s<Cw������a��p)O�Z#�$)�U�=W��N�*����g*h��~r�*����s��	�+)�Si��@G<�'(j��g���9T�k�f>S���4
�;K|�>��w��Ad�~��c���nmQ���/�}S
E��� ��8�C�o{x���]�2Vb�
� ��������-�,:��c _�?i�}NWln�A�\j�Y�v�OV0Aq�5V$��P���
@���hn-B�n���Z��8���c ��:��������Y�`��d�Y�����8�'.������Mu�*Z^L�&��]�E��s����������4["���"��h%��]������w
sR*H���Y�p����7��%�Mj�����g���H����6�#�(o-�MQ�OR��=K���C��|�}����p�6	x�"M?o���G���
���9N�����R�&�m.��>��������e�z�Y����&�t�t���������,�uN�.�K9!�Nv�B�$��$��I��g)_�u�#/��+m�\�����u���g�����������j&�J�������/�#������a_�0C3����Pc�d��@=�*�����w}������R�f���,%��^�]2'*��o_���(?a��P�S���o���:=�,I���4��]&��x���	]5-��a-�e�Q%���L��is���O������<�����m�}���>��xB=�u��Vj�������%���d��e�}�����@q5]�������E��������C����}������U�>K7k�����q��`��M
1}������<�!��W��(��|?�X���v�Of�|�*���x�g_i}^�zO�,|�"�����J)�`-*�Wz8`��d��0���jZ�3yg���bAw������6���/��Je��?CY���
�i9���_,@^F���E���UrW���TIg����O�'S�~��9^��Ir�d�A������}yt���V������gH
�����Q��.�4K��R�|���~��Py	�������'A���Yj�g�7Q0�%��X���e����RB����g_jz}?�r�<�p��8����zw?����q���9��;K�q��R5M
����Ww�$���Y
U��u�7��M�]v�;rK����M��/PM��!�8���,�:�k��Pg0G�>�rt�W�v�����3Y$�T�����5����A���|tg��	)h��
�u���g��i���H����DU��ow��m)�d�oV��d,M��Z	���������~��}�����e-�Z�w����G�uUH0C6��O5�/���f�g���(�����Vs�/�1A����Z$��W�(nj/��b�{�������Aq��2i{)�=�i.����y2�dI
r��6m"�}�bZ3��e~O2�@�|�)��_��%Ws ?��n_��&_>gI��?��a��?c����a	�=r1g
�����c�s����f�b�����M��?������k���)�f=����l����\mV0:�*�������]N���j��Z����>T��%�B�Fw����d@)�@;��|�������H'����fq6��Y*���^LP�X+�I�mN{���|V�*��
r���c#l3Nt=w�9���=���p�L��xI6I7DU�T�l�z�UX�#w�����\�A&iD�^�/���4��5<!�&S>����=i_07���*h��4{���@���a_�3��6�#I<����HS��v���Z�6b����r�v���TKm�1��K���������\+�~�y��b �kz�b{��s���c_�4_�g��}?�/�U�n�{�g_ �d��,�f��6��Y���Z�������&pd�Dq�
�mR����Y��u��{�uDEk}��[Gi*�YJ�vX����em������,�/�E-?���(T~�@�����������%_60���b��!g�����*��������o��C��|E�ur���w��[��b<���E�(&K�^1�8�k5���CJ�z��i�X2��_���s������z	��'����o_�T-E�Y�J�"���s��q��f_����������F�����k�����f������,��8�N���Z|�
�iec��xKk��M8h��?�IC��(��i�d��e���/����`�NQ�{B'���v.��E=4�9��I��T���x�p����*I���{��^T�� MFe5�u�n���XT�q|�w�pj��lP����6�kn���>���w���I�<`���
�0���g�y��c��.R8&)v�=�j�E�����\I9�.c8�,�����|������w��|c|ud:�V��=,�6�������#���gep�?���q4�(D�P��!&�(���>�-�@P�R�g�g_H������U+Q��g�y��O�F��Gf
E��:�^���k�:��v����y�5���{��~�����"LD�$~�#L�|��t��=sj?�]��(�^�s�[��`�b�}��t��_�
k�����W�h�4�l�����D����;>>x���kr�$�a4��Z�����o��;/?���#�#��+�������a��a�8z0�� �	��!����}���_ �8���2 Yy�-��8�1�}����H�x1����oP;$_���|5H�A���1/���a��e���h&o�	���������E��=h$i��6��'��t?�4~��=Xm��<�ErW�m@W�����y�R������P�����D.�)�<�x� Y<8�D4�����/?���
�6Y��v����7����5�$�_9b���lV�/��\�=��D�T��,8~��0�����O��N���>�u�W$Pr�<��mP�&�1.���{�}E�O�����S���G?����>�D�!���P_�lo5?Y�����O������SZ��Z���g9ZL>�8c������S6�����G�>���J���<��F���_�J�O�tNY����ARL����I�IE�o0]����A�t��3��r�y��3�}c����R���u%c�hE)���+��j�7��ch�����ss/�����vg���4��,�#�x�
��KW�z&tN���_��e�\��.�2	���������m�D_���i�S��V�- \�qh��*�w���l��&����c��9�,W�����M�oI��B���e����	��~��f����9>����d1���}U��I��e#��x����8K�U����_`�uh�pu���:���`A����m�p6����f��6���?k���2�W�u@K_�x����W��.�ck,_/>i��^�s�kK��Z�a���
�}�����N2}�����IV[�u|���r��Xi����5nd�oi6�a���_�F��U�n��g}������Yn���h�_R�-����������~��S�\���/�xb�"X^)u�B�O��:�m����0W���n�U����M}� 1=�-bXu�J�r���s���9��B�x ^=
f>�q:����$��$���E}���~P���:�����������!%�l ����cH�yHu>���c\�=���nY%�$j������E���x��1��f/�|�E!zE�J�_E�r>:0��2���w!�������@��:/4�G�sm�?�c�&�??��}��i�n6��[��-����jw���U���?~[%�����z8�d��W��'_&`��)���������l��"o�~����o�ic�
�s	p��^�i�.���J�_B���9I���CYI���[	8F�N��"���;+]�^{�I�KvP���"�&&�����\��Q/f��E��(��q�Lg������o �����cF�������x�7#t/��5����9�%\�hQG$C���Sn�-h�|&S�M�7�ca��`�����"<�*!��GK+��yzS<H5w���?��]���U(@���1��9(b7��b��6�/ZWn�]����N
&[����L��S��#$22{�a��i�j�W0j��E�[�����\G�����NpU�
���e�')�Y�:���M��
�������4���@=�k:dE�-c$���s�d:w����O;����x4�g6E2�+s��pE�@�j
),fV��k��*�O��c��^��8%�[�~���!����M������Z�
�n3�TJ=�4�#�J�Q����"Y�0#P6����L��N��$n=t������Q��qPb��v^Mm4�p��������i1G�\�-Q�f��k����*l�2��/B
tT4|��a��wu�.��A��^��Q��������!pt@��!����^#����2^��f�������g���<�d
�����k�H�+ �V���:��cQ7�-��5V����&<s��:o�������@�/�M�)��j6����/n�+4��<.�&�G���`��7N�A�f��}�mV	s<���W3Bx���/?]]�rm�Fp�����Y\'B���tD������j�
X�q���Y��F"~J���Dk�������������<ry�:��w���Vw)��ho�<m�6�Y�._yI	uU������BE���/����(�|�X�W�U�B�{���KT��KB:HE��c�\�TD��'[�RO���|�������@d��o�7�A��m�j>��a�������7�������s�r�������18lV�_5e�}(W�z��+�+E%��cnL����1�y��$�|�:�8�[`o����S��l��|
�yFuW��L�j�c�����Cqi��Z��e�P�l��)����}MS�"�b#��H�F����|��(W�����PL�V��E�'wH�LD<������������_��P?�+^(�.����Z��~��`$M\�V���W\������F�yq�E�U�����=�R��������,���cO�&w|{?"1�/�xQ2�0��M��4�n:8�
����<M���!^3���Uy��X)U��,�)��\�����C�]Tt>�����&���X��T��_�����]�S�����������hc\r����	C�[Qv��~�{T3�g�G������	����#x���K��c���A
7�"�)���o��R��o7w���|�d�����L4���B]Q.��w�Rq�X*A���<�b�D�s����nA�gPQ��#�1�M���(�U0�)G���G�:4G�������,qR8����0PuR�+�BcF5��b��!���q1�e�rn��;.m�$�|�'bS��q?r]���X�`8���K1��eBe����[7>��j,�:5����@�����5#�P��p��g�l�1u�Hb�>no�O<q3-���i�s!+��i�^~"�z[����Yh[}�k�.B�w��z���HfY�*�up]����d���:S���Z�;�r�����Y��A�YZ�\�O�����Jd��.
'�(h�-B�Q���nrMb�YI�����F�\	%����%[e	R$������<+�gs4�@�K��P@������4��@��X�+���rrV�n.���:8�l��5�~��*��J����/D�|�mD��x�H�^v�`R��������"������Pk�����g�I3����W/��Z%qA�T>)���7�n�#�]P:���1PEy��k��'�!�����&K��d��J�&1Pq�_���"�H������������bhn��!5�\b{3���L�3��D��v
�tM+����n����^ ��j��I)�t%l��k��|'���h��,������r��5R���)`��?�����e���h����4ac�/���/��_6*s����x����$��&�����H�*��V�?�.��:���!��s��H�If���f
e+B���2����"�i��T�����Oy����m���%�5�\^hR(�
����4FR����=P^�B�a��c7���U](LR��pX�<�d@��-�R(�n=�����Z�[���K
<:Q
�qhf�^�] �n/�{�~%�H\���o��t94Ey��'�����s���,{4����e����\(�t�J�7c����B���q�1�}�B������]rqwT��U��4HSo��3&��_�zD<�>����|��C���z�����n�N�:��K��j���@�g��3����lE���}��w����3F��v�9����o"N�������!^���^z<�������z�
Aek>�j����D�/�m6l��'��neM\����`$�u[��a�4�Aw���I3Hk��	aV��5
��P�3���+�S�M���c����K�8����.e8�)]�2��&�������4IfRuGj)rc�;S����3������C<E�������
7��!�?��;Ra!P� ����[w)*A9��������"ic���=1�!/������8$'R&N��W�5�
P��h��_(�J`�����
�r������'
��$���=�CF`!j�O�r�PF�^Wn%��)�P�
Ue��>V6�@���z������-�| ��!��
���u����<�8BLTH�d�^n|�F������U�u%��fc���b��U��o|(����+����b)��
>��n�0������1����-�c�<������������W�]��h���w�j�Y��&|?Y���$��������<	�U�+mWl�B�1���.&�<��F@��2@g�0�7���g�t>� -1�b��eA��W����J]�&@S�_W$+����2M��$�+@�����T�C�e�XR��01_�^����=����A�����[*�z��:m�`������B_�h;�U5��<z88R/��Ml�Xrx?<*��o�hJ� ����L�
c�+���+q��<0Q��-f�b	X+�r��-�����u�N�����!�K��������}G�����#�HGb����Q��j3LK�?�os<����1]#����:�X�e`a:O�=^\M�6��&6���!sSq�:;�eg'~%���na��~���cUF5�X�+f6b�k��zfxX'�mN���6h��7��?��U��#��\������	M<��p��#��f���M�OC)�	}����xl1���c/�E�q*����lU�B}��\!=*�s
cbQ_eTi2�6�x���(���K������	��"Vz��iH���@\�l�^���Tuc���P�K��`��C����|2����m���C(�����eV����o/R��dw��,�up�~1�����J�~������ZH�"��\`��H����-�N�3����O��X#��� ��SJ,r���9�tg�����bS-���`�����~�K��t��s8��$��s_���#)"FK�����4��[����W\�y�zb��o~�|�c��d���2��O�D�pj#�Y�~��-G�[���q
��
�/a��(���$w�j�h��A9�$���� ��aX�pZ^!Ie7�������v��p_��R8G�ie���F����C-��a���~����y���lk�@mez� ���pH���J�QTj`�i����/\�M�p�[l�TP��Uc�L��P�0�:�D�W���8,Q�
��T�G��
��V�2�$hMt��h����	��],�c�\6��������QQ����"������F��&��h�l�VA����e��������-Gz�+��S��pEU'��s�/��L��������
����+��n�Q��
�Y�e�?�F1t� �j�����8Y��f.����%����G�+�*||�W1,h*.sFD�iy������%R | �|���O$����2�-9Y��<B;lv�+��#�p%;�?kR����T���H�b���������B�f��k1�����4In�"9*��)�7`�e���44���X�Rb�J��������("�~�Wt�`=�	A�x:�,7YJ�i��G4V����UB=hP�&1K@!�08F��)q\h1e'JU��Gu�1s���vK�OU��������%r���my�����L��2A�T�E�r�H/s��P���n/�+>��/Y�eh�B�<f�x�H�����Yg�a3!3Bg(�V�
�
�*�R�����j�:Zxh����.l
wYy�%���{D�Y�$=��%�5P����,5��{VT"���'�U4D�B(��u��b
�����m�F��a��>.��J�M���
�!��	�i$�l�������7�(n�+�E�X	�6DV�QW��{��c�|�o�l��������v"��?>���223�1�����1#_ $Y��e��[���N��]���%=`J������tu�q,�!~�Z��}E��u�^Tw�d�)bv�AP���3����g���0��i���U�#@�k)�w����x?�W���]�e,pG�@�KD��.��9���A|o��GR���$���x��9]������{^JQ��a8���A���87c�ah�.��De��x�x��_g��z��_�V�b�8L���U�=�	����W���`��$zZB��h����FsV0��W������*���@�
��^�����F`U�_P+7�8�H��-`��=��rh�\y�	���_�`z[h��B%L����N����B���k�'�M�&�m��.��X�!�eB��<��
��
�:���Tpt��Oe ��ye����c��)n�B�!
�b���b��t��%��4C%r��
��G�<Z�#O�+�&��������d��"8{[}8�K <P��,�z���V3?X(��.M&����������G��|�b�[����6E�����1�7�"��1�`|���6)������6�G�m��[��j8�N����Mm����P]$��FSP+�F0�=�@<pq�5�i�X�[�Q��@`�V:��M+��*������$af1y)A��+/e�D��4]��39�����H�a�2�L������"�������hg�e�k��k��D�	���Pc���Y���K��������%�7�s��c�>j'�)�3�:>)v�G��dW7>�2|>�+��n_T�������5���0���=F�o�XR�91��f5�IKoR8����&y�|��j����������O��q�g	��T
�8�7�meD�5B���k�����D����
�iW�P�UL�N��
���I�0����u�BGB���������E�\OfU��6��>sj\j��Q���M5����!]=2���zP��k-���	�hC�b�L�A���-I���!1���~we���n?#rrZ-�0`��d��x���!�R���"08(NM�t<t����+I����0*�x!��
��3[n�Ps��)������q����2t�A+���vD�2�I*��G&O�J�Rqh����8��o�:��a��j@��"Z��/t��4^oi+����h:]}wjN���Q?	���]��5����	\'1����<����?��.�J_���D��H�������F����.�:�������0�j��,�Q�-�@5v�aZ�1jc�c��������+G3*�[�V���v
���e����yI�.��2_q��G�+>������������8R�/20�t\������5k`fY?����fYBNV��C�@@��"�2 mu9u~T��)V�Ry���[�O�[�CB��S.�Jk��q�5A�����2k��[q$�� 
=���6�M��.T�2��`���b���
�A����%7�\�*��G��U������:	��|]F?����6��"�p8���_@�S��q8C^���n�`���2pLvS
���x��%��oF8�l�z$����<Aan�*6�\
:��q���+d���u����q�������-Lv&����QF?�e�('�w�A��W���_/s3������4,���\B�?l��$AF���Z �2l������TZ��B��d�h�;Arj���7���n�s���3tw��L���C{$�&[)�f��D]�<��M7!i�����X�`�Nc��~q�z��P������S�@���
8'�����dzJ�R���,���[-3�2
�����6W�QBEH1 l���f��=�������7�@	4�A�-���\��y:��:����R(�?�5�C�H�U�r�eFX�\�IHx��
��4)LNm�
6�tc�+$h)��Q���+^�P�
�E����R�����d�Q	na	�'�	���QR|n�F���,�����l�5��]u�5�t#��5�G���/��/B��T�!F�(T[�+V��w[T�N�������_��4���vhJ����%�r<T������R��7��Q7O�W�#�{�i��)�C�������)�\��^���L(�����W�8M�\5�UQ�c��Y��|�S�������6y@����K�"�@e��D��jc������nQ�����` 6�"���g���t�~�U�}u*P\W���������$3(k���gZ�t�q5l�e�3��$
	I�j<���.2E��@��I�
X�~H�����r����4V�#4���R���Z��lz����n{!a}v"�V_�U��&�0�J|Zca���z����8�,��RO�����`�Oe��8!5�(�5V>*q�Zp����C�&y�a����tQA����N���%�g��o���J���2�����i�,�B��r���[L�����o��s�Sh���R��3x�pk�e�T���#ln�TDsWgCZ�I����g�]Q��&h��D#c��9j���<����f#����|��g��F�� �B�^�/	�-�q�UJ�U
�������e������������$�����B5��$YFc�Ufz�9�a�����+9U-"���8�SE�pC��)���Ud��V8	�B�Q~.�U5�5����F����TK�1+��F��/���=f�5�X���p���*�����v������6��2�B�4�(|D��\�i��a��e2X�b>e���BM��=R�L���g���1���D]fM��V�8CR�:9����5��w�
�/%�������+[ry����i�����'�Umt��n~/!�#(��eu��#�����WG�w*b����,��sV��7,�m�����ct��l��GV��!:�4��k[����~ke���Yz�L/�Z=!	*�K�g��87�Mb_P;��A�$��`��=�L8�IY2���F���Fr���
g��!���&��*�p���'�gxpDuD�HV]�W~�����|� �4��o�D�w�	�q��O�H\?i����\l��H��r���V!�8��1V� kJ #�D��R
���������		����"q�s����b�$x�����B���<���)^�h:��K�l��))G���&(������
����;�3S4#`�:�I`z-��������M+�8����<�I��,5�x�5�I����q�0~��1�8���.p�?�e�H��9
����Q�F�vy��q����`�����kd;\h����|9�J������,���l�����*$�JJO��(�1L�:`����
�1'Rp8�J��y���pw�	?e���f9Q�������Td<���ET����e����F�v��� /T���Pp3��n�[!#������.����s�*y[�_H((.��|�?0�%�xT��qs`e���������������ZR=���5��Q��(*A��vS-���d7�1lh�l4�A�������E��;��0�8�=,�K��GA�\�(wgv!�nO�LC
Q�^_qd�PFzM���U���	�~TE�t6�y:�L��6�A�	�f�-�������oea��b*��X��c�����g2�#x�[��8�j�����"5|���^P
�j��Qu����[cA 1Z�k�l�Tc5�&����\u����v���Fw��XR�h���'�e=������nXdj��"r#�%F�8����a��e0qA<����F���6��p8;��/m�j���6B�1r��{���gQ!��l���������W����v�o\�S������5�0eY�t���u��KO�cH�_�����9����6��
i�1����~��/��H}�S����
����a&Q�v��{s���J.��P�xrCYj��0���
Db�u����QUU1�W�.73�B��Jx[p
v��c���BR��u�p�R�����}��4g@}\�hZ�!hS���[��7$��n��aSu=�TD�
��c���)�'v���.m.{�i�S�f��)�x��K��n�l��jCg��vaMH��%���&Q� ������A�Z�U�LK�kC�X��+7��p�S����0���l �Kv�(��.�kY�F
�fj��@������&��UQ0�I��D��[O��B*�#������U�<m�'���L�A�����U���M��}�����L�>���>�
��>���6
7���X��>��Y�M���A�c�sW�d�Vq����d�|V�fAce�b{������F��nU�,�V>}7�{?�*�'�PcP���U`�w"0��Z�A�C���7�}#���x����
z��T�M��gu�)'��.��M@ws������A��K�����i���&D�+���fZ�����%�����z�r��`$S����\C��5w��Wck��
�>�����S�4����T����0u0�
n�68�a(:���d�Cf)xds(�e���2e��ab��P��9!�|/�l������H�#���������r�M}�|���L��vS�]������
C
��T_��F���c�#�#F�)%�G<0�4����Q�g(���9���b�WK
�<�8?'����ZJ����*Bg����*���/��<m���6v����p^�Us�JT���U���@��EUau[i�]������~[M����bD�"�<�a�m&aM�+����P�d�F�7�h=�,]O6+l���ea���t�8��y�;�v�p���p-��"�/`����n��?0��|/��
S�e��k<i��qM���/�qY@J���1\��bu���Z�N����p�Gb�����0�ko/�@	��5���M|Q�W[��^�)�7Tu�����.b-C�f�%�
��X�5!�����.���AS	'Y�a�����`�w�N��������h�
��|�#��ZoD���Qg���k!������d����x�t����cT[�j��
k�����l���&���Z�����r�h�DSR��n��(j{A}��-4@%(�@_n�E�>.W���v8����P�r��� /�I���s	0� �r���g�v�AC��V���4{��
(�0)g�q�]&���aX]�e����u��`�DU����l�]@<�gT�@a@���F���$��|����\O��R�H��T���\�p,S5��"�/�QS�������'�r��2LI���wz5��k17dL�e��!�����S��b����i���������p�P�����f��OP�UF�x��X�e_
_G�h������r<���iQ3N:\�6�|�T�g4�U}O���P����-h���}e,	�%Q����|F%;���
���dZF_l�e�Q�T�e�w��EMn�O�N�+�{`\����w��(��"�.��=h��CxT���B��!�	��S�Z�����L��('�u�����Q�KX�Pp���T�u6e�wkJ��9�A&w�B��h��YpRp0Sy&��`��:]�6t�:������@(�S�Y6���vD���'*\NJOf*}�T5g���8��kFPSz~�?4�;A��@C��	�H��.
��q�(-Vyc�K�����lk�l��]}_I�r�!������d���������U8��%/6���4����bc�>�h���,[:G8Z9���H�T�j��i�r��9�j%A
�lHVe�q��	�� ���%�9�VS��YH�mY~E�h��F�x��V)(��%�nonri��[c�����l�*���(R[����]2��)5�c�m��
�?i7�A�t
����AI��
s#�fJGuQY_�v;
K����4�}���mR|D��Z/;�d��L����7<�B-3e�	���7�I�$�r=�h�Hi6'r!�^��=��&z)F�K��6���2�Y��/�#�d�2uy8�a�:�l��o�F?%JF2����Y.b����m!�D�wd	��)-�p�e0d�������b������cVJ�*6	���Y��3�},z(�YC1�\��Z5���'��2�"��I����WW�7�~����b�!>�b�f�?���1�T�MS��f����l�W���V�5�gr���G���$2�>�%��I�w8���zC�bU���Ch�l���#�(P����"�{!���2��ASl*�X`�����}	z�-����@�a6ba+���Y������,�W�m���F�JH��TU�2�JoT��6�����<��������C��zxQt�]���[���B5\)B�{�Y*���8/#k��CD	&�e7��e[�h\7�����Z���kW29�%��.��oy5�D:R��G���V���f�j��A�F�����F��e���jg�$��������8������*���?KQ�a|�h����Y
�
�JB0�i�GB
�b���0sZ!3�C�uI+��V���j����$����b$����:����{ ���k*��&in�T�$�*���M�:�>o��qF�j���)�,md���r+a�a	��.2�cL$'b����xZP��v��f�Jk�������A�*��6��-����Wi��H��J�_]xc+�Wh6k�X���{$��-IWB�������2.�D��I�#�C����tK���
�Ot�c�A��P��Q�u��H�\.(��Q�)�M��yv
�z���+��6���D�C����#��%�i`Nr�8����7��%�Kx�L��D��t�?O��0�j�������Pc��k�lG��2�uO`�+�j�n�6���0�@���@"�|���-��I-�/(a��y<F�������X[�l� &�
��<6y����:�?�H��P�j�kI,+R�u�d�8NG+x�jg���V��/f�ry���~�x���������k�VL6���x����'��9Tr3�G�L��I�K��ST����^�U�o���Q%�V�zG�uq�����)���`�.��+T~E�N(s�����#3�����kt9�>��������pC�o��7@5������y`�&q��u���?0E������py9UX���T���z�n�,Y�-��C5������h�>r;�z~,���z�e�*J�x�7���������uZ���u���X����L������8�0F�O��b��5�p��GJp����
���K��#��	Zk�rnE��6���L��(��d�%@�Sl�� k���e&�
r�e����K7\��4�J��Cq�^�1N�2������<T�Z�}�J�s��L���A�.�9���|-{�y�F���!T�L�C�_��^K��%��$Om_"��:�2=�#[�L�NX��BGu�<�|�u�ayG�296���~���f
���.H+V��/�\��5X�L�S�Z�Z����]F&����2���]�	�{WD��jQ�3�C�^L��C������Y�_���������=*���&�A\�Vl�b��=��0�:����.��
��`�u5Z\��
^]�E](lV�t�tVN����(������f.�W���Z���^�V���.*�QS��7>��A���/��%�*���d��t!������1 �l�����m.@��q>���	��([%2p��ru5y�
^�
^5�MIn7����u�o����BC}�WeX.?��u�����Wp�T�UEF"���Q[O���)A(�n���%�6f�)z�Z8�#m4�uT� �������� ��G5�v1���;�A���d�
3��y���
F%�UB��T!����*`���\��6�����]W���sj��I?uP|��>�������D��YSDX�_�o����
�.���R|�\m[��fJ�7,��6��j���:��I�TA�*�}6Q�p��}���:&�5��&��aG;�U6�M�%���~�<8i�fW�T`$.�?M��57+s��c�=���2�G���pA@���>��upx}fGc.W����B����yj�F�~��J�����j�H [n�hT�MT�T8j���FO�����hp�W6���������
�8�i�%��+���R������\�2��v�0���8���.��Ap$���������IR��r�wN�����8Gv�:�2(��������*]l>���v���������Ig���|�N��V8�6�w3�L�R������������:�FO$m�(�kE�wh�4�2,Pk��!1�s����H��b9��[�e��C�(�0�e_�^>2�����u3.e�
��d���m�]*���/+�]�f[�X��x��������W������(���u���E����v�9�[��,����R���+�A�4Y�\,t�x���J�J�����QU��(����ZY�.����AG�A��nRpTG��EK�/j�q>��B:Q�j����
L��d���US8���s�O��[�����q�K_�����Q�R����q� ��3b�	�7~���.���,��*#�*��c��*n�V5���(T|��%7%_U6(�-#���V
�����J���n���I
{�O���5o�5�jEGt�B[A�f��e���n��n�Vk���F���Sp�L�"���FA���o�����R#�Nb����g����g�D$��\%���N���\�zM���.1S����T�e��j����)�`���dE�'+�r-T����"�E�}�L�&�_.s;�����S*Bh6Fp�0Be���d�
�h�#�'"�0*a/����J,U����TOhG�n���+�*���`�[q}uX"p.��Z�����4[��@"�`�M����]�C~�	�����]�%9�9-�a�J
�;�ZUI�R����iuva�����%
����X-��![�����4���>N�|9���8��#����:d��:�x�����2��D�����z
��wb�u�"o����,jT��x�'3s@o$x��4}B�)_6*�]����y�����B�b���C)���n�
*���=L�������������@�1 ����U�N��c������1��Q0U�u.��_�+�E�hU�,��
���T�������&�O)��#��[�Pf�����������	��v"<�@��f��	�9:r��m0�6�b�p%�x�����D	�
��
�m.��+���P���O�JFc?���E�����!2�
#31Boszormenyi Zoltan
zb@cybertec.at
In reply to: Boszormenyi Zoltan (#30)
Re: plan time of MASSIVE partitioning ...

Hi,

Boszormenyi Zoltan �rta:

There is one problem with the patch, it doesn't survive
"make check". One of the regression tests fails the
Assert(!cur_em->em_is_child);
line in process_equivalence() in equivclass.c, but I couldn't
yet find it what causes it. The "why" is vaguely clear:
something modifies the ec_members list in the eq_classes'
tree nodes while the node is in the tree. Because I didn't find
the offender yet, I couldn't fix it, so I send this patch as is.
I'll try to fix it if someone doesn't beat me in fixing it. :)

I am a little closer to this bug, maybe I even found the cause of it.
I found that process_equivalence() is called from:

path/equivclass.c:
reconsider_outer_join_clause()
reconsider_full_join_clause()
plan/initsplan.c:
distribute_qual_to_rels()

The problem is with the two functions in path/equivclass.c,
as process_equivalance() and those functions are all walk
the tree, and the current RBTree code can only deal with
one walk at a time. We need to push/pop the iterator state
to be able to serve more than one walkers.

Also, we need to split out the tree modifying part from
process_equivalence() somehow, as the tree walking
also cannot deal with node additions and deletions.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

#32Tom Lane
tgl@sss.pgh.pa.us
In reply to: Boszormenyi Zoltan (#31)
Re: plan time of MASSIVE partitioning ...

Boszormenyi Zoltan <zb@cybertec.at> writes:

The problem is with the two functions in path/equivclass.c,
as process_equivalance() and those functions are all walk
the tree, and the current RBTree code can only deal with
one walk at a time. We need to push/pop the iterator state
to be able to serve more than one walkers.

Good luck with that --- the iteration state is embedded in the rbtree.

Also, we need to split out the tree modifying part from
process_equivalence() somehow, as the tree walking
also cannot deal with node additions and deletions.

That's not happening either. Maybe you need to think of some other data
structure to use. Hashtable maybe? dynahash.c at least has reasonably
well-defined limitations in this area.

regards, tom lane

#33Boszormenyi Zoltan
zb@cybertec.at
In reply to: Tom Lane (#32)
2 attachment(s)
Re: plan time of MASSIVE partitioning ...

Hi,

Tom Lane �rta:

Boszormenyi Zoltan <zb@cybertec.at> writes:

The problem is with the two functions in path/equivclass.c,
as process_equivalance() and those functions are all walk
the tree, and the current RBTree code can only deal with
one walk at a time. We need to push/pop the iterator state
to be able to serve more than one walkers.

Good luck with that --- the iteration state is embedded in the rbtree.

Also, we need to split out the tree modifying part from
process_equivalence() somehow, as the tree walking
also cannot deal with node additions and deletions.

That's not happening either. Maybe you need to think of some other data
structure to use. Hashtable maybe? dynahash.c at least has reasonably
well-defined limitations in this area.

regards, tom lane

thank you very much for pointing me to dynahash, here is the
next version that finally seems to work.

Two patches are attached, the first is the absolute minimum for
making it work, this still has the Tree type for canon_pathkeys
and eq_classes got the same treatment as join_rel_list/join_rel_hash
has in the current sources: if the list grows larger than 32, a hash table
is created. It seems to be be enough for doing in for
get_eclass_for_sort_expr()
only, the other users of eq_classes aren't bothered by this change.

The total speedup figure is in the 70+ percent range from these
two changes, a little later GIT version than the previous tree
I tested with before shows 1.74 vs. 0.41 second runtime for the
example query. These are with asserts and profiling enabled of
course. Without asserts and profiling enabled, the "time psql"
figures are:

$ time psql -p 54321 -c "explain select * from inh_parent where
timestamp1 between '2010-04-06' and '2010-06-25' order by timestamp2"

/dev/null

real 0m1.932s
user 0m0.035s
sys 0m0.002s

vs.

real 0m0.630s
user 0m0.033s
sys 0m0.002s

The second patch contains extra infrastructure for the Tree type,
it's currently unused, it was created for experimenting with eq_classes
being a tree. It may be useful for someone, though.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

Attachments:

9.1-planner-speedup-v5.patchtext/x-patch; name=9.1-planner-speedup-v5.patchDownload
diff -dcrpN postgresql.orig/src/backend/nodes/Makefile postgresql.1/src/backend/nodes/Makefile
*** postgresql.orig/src/backend/nodes/Makefile	2010-09-21 13:49:56.000000000 +0200
--- postgresql.1/src/backend/nodes/Makefile	2010-10-26 16:37:27.000000000 +0200
*************** subdir = src/backend/nodes
*** 12,18 ****
  top_builddir = ../../..
  include $(top_builddir)/src/Makefile.global
  
! OBJS = nodeFuncs.o nodes.o list.o bitmapset.o tidbitmap.o \
         copyfuncs.o equalfuncs.o makefuncs.o \
         outfuncs.o readfuncs.o print.o read.o params.o value.o
  
--- 12,18 ----
  top_builddir = ../../..
  include $(top_builddir)/src/Makefile.global
  
! OBJS = nodeFuncs.o nodes.o list.o tree.o bitmapset.o tidbitmap.o \
         copyfuncs.o equalfuncs.o makefuncs.o \
         outfuncs.o readfuncs.o print.o read.o params.o value.o
  
diff -dcrpN postgresql.orig/src/backend/nodes/outfuncs.c postgresql.1/src/backend/nodes/outfuncs.c
*** postgresql.orig/src/backend/nodes/outfuncs.c	2010-10-15 10:31:47.000000000 +0200
--- postgresql.1/src/backend/nodes/outfuncs.c	2010-10-25 13:13:00.000000000 +0200
*************** _outList(StringInfo str, List *node)
*** 175,180 ****
--- 175,197 ----
  	appendStringInfoChar(str, ')');
  }
  
+ static void
+ _outTree(StringInfo str, Tree *node)
+ {
+ 	TreeCell   *tc;
+ 	ListCell   *lc;
+ 
+ 	appendStringInfoChar(str, '(');
+ 
+ 	tforeach(tc, lc, node)
+ 	{
+ 		Node	   *node = lfirst(lc);
+ 		_outNode(str, node);
+ 	}
+ 
+ 	appendStringInfoChar(str, ')');
+ }
+ 
  /*
   * _outBitmapset -
   *	   converts a bitmap set of integers
*************** _outPlannerInfo(StringInfo str, PlannerI
*** 1595,1601 ****
  	WRITE_NODE_FIELD(init_plans);
  	WRITE_NODE_FIELD(cte_plan_ids);
  	WRITE_NODE_FIELD(eq_classes);
! 	WRITE_NODE_FIELD(canon_pathkeys);
  	WRITE_NODE_FIELD(left_join_clauses);
  	WRITE_NODE_FIELD(right_join_clauses);
  	WRITE_NODE_FIELD(full_join_clauses);
--- 1612,1618 ----
  	WRITE_NODE_FIELD(init_plans);
  	WRITE_NODE_FIELD(cte_plan_ids);
  	WRITE_NODE_FIELD(eq_classes);
! 	WRITE_NODE_FIELD(rb_canon_pathkeys);
  	WRITE_NODE_FIELD(left_join_clauses);
  	WRITE_NODE_FIELD(right_join_clauses);
  	WRITE_NODE_FIELD(full_join_clauses);
*************** _outNode(StringInfo str, void *obj)
*** 2506,2511 ****
--- 2523,2530 ----
  		appendStringInfo(str, "<>");
  	else if (IsA(obj, List) ||IsA(obj, IntList) || IsA(obj, OidList))
  		_outList(str, obj);
+ 	else if (IsA(obj, Tree))
+ 		_outTree(str, obj);
  	else if (IsA(obj, Integer) ||
  			 IsA(obj, Float) ||
  			 IsA(obj, String) ||
diff -dcrpN postgresql.orig/src/backend/nodes/tree.c postgresql.1/src/backend/nodes/tree.c
*** postgresql.orig/src/backend/nodes/tree.c	1970-01-01 01:00:00.000000000 +0100
--- postgresql.1/src/backend/nodes/tree.c	2010-10-19 11:58:52.000000000 +0200
***************
*** 0 ****
--- 1,223 ----
+ /*-------------------------------------------------------------------------
+  *
+  * tree.c
+  *	  implementation for PostgreSQL generic rbtree package
+  *
+  *
+  * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
+  * Portions Copyright (c) 1994, Regents of the University of California
+  *
+  *
+  * IDENTIFICATION
+  *	  $PostgreSQL: pgsql/src/backend/nodes/list.c,v 1.74 2010/02/13 02:34:11 tgl Exp $
+  *
+  *-------------------------------------------------------------------------
+  */
+ #include "postgres.h"
+ 
+ #include "nodes/pg_tree.h"
+ #include "utils/rbtree.h"
+ 
+ 
+ /*
+  * RBTree allocfunc function
+  *
+  * Allocate memory in the MemoryContext given to new_tree().
+  */
+ static RBNode *
+ tree_allocfunc(void *arg)
+ {
+ 	MemoryContext	context = arg;
+ 	MemoryContext	oldcontext;
+ 	RBNode	   *node;
+ 
+ 	oldcontext = MemoryContextSwitchTo(context);
+ 
+ 	node = palloc0(sizeof(TreeCell));
+ 
+ 	MemoryContextSwitchTo(oldcontext);
+ 
+ 	return node;
+ }
+ 
+ 
+ /*
+  * RBTree combiner function
+  *
+  * Because we store lists of Node pointers, we simply concatenate
+  * the lists together. Do this in the MemoryContext given to new_tree().
+  */
+ static void
+ tree_combiner(RBNode *existing, const RBNode *newdata, void *arg)
+ {
+ 	MemoryContext	context = arg;
+ 	MemoryContext	oldcontext;
+ 	TreeCell   *tc1 = (TreeCell *)existing;
+ 	TreeCell   *tc2 = (TreeCell *)newdata;
+ 
+ 	oldcontext = MemoryContextSwitchTo(context);
+ 
+ 	tc1->list = list_concat(tc1->list, tc2->list);
+ 
+ 	MemoryContextSwitchTo(oldcontext);
+ }
+ 
+ 
+ /*
+  * RBTree freefunc function.
+  *
+  * We must not do list_free(((TreeCell *)x)->list) because some code
+  * may still reference it. The RBNode itself can be freed.
+  */
+ static void
+ tree_freefunc(RBNode *x, void *arg)
+ {
+ 	pfree(x);
+ }
+ 
+ /*
+  * new_tree
+  *
+  * Return a freshly allocated Tree.
+  *
+  * Parameters:
+  *	comparator	- comparator function for RBTree
+  *	context		- MemoryContext to allocate the tree, its nodes and
+  *			  the list elements.
+  */
+ Tree *
+ new_tree(rb_comparator comparator, MemoryContext context)
+ {
+ 	MemoryContext	oldcontext;
+ 	Tree	   *tree;
+ 
+ 	Assert((context != NULL));
+ 
+ 	oldcontext = MemoryContextSwitchTo(context);
+ 
+ 	tree = makeNode(Tree);
+ 	tree->n_elems = 0;
+ 	tree->context = context;
+ 	tree->tree = rb_create(sizeof(TreeCell), comparator, tree_combiner, tree_allocfunc, tree_freefunc, context);
+ 
+ 	MemoryContextSwitchTo(oldcontext);
+ 
+ 	return tree;
+ }
+ 
+ /*
+  * tree_find
+  *
+  * Find the element(s) that match the node's key according to
+  * the comparator
+  */
+ List *
+ tree_find(Tree *tree, Node *node)
+ {
+ 	MemoryContext	oldcontext;
+ 	TreeCell   *cell;
+ 	TreeCell   *result;
+ 
+ 	oldcontext = MemoryContextSwitchTo(tree->context);
+ 	cell = palloc0(sizeof(TreeCell));
+ 	cell->list = list_make1(node);
+ 	MemoryContextSwitchTo(oldcontext);
+ 
+ 	result = (TreeCell *)rb_find(tree->tree, (RBNode *)cell);
+ 
+ 	list_free(cell->list);
+ 	pfree(cell);
+ 
+ 	if (result)
+ 		return result->list;
+ 	else
+ 		return NULL;
+ }
+ 
+ /*
+  * tree_add
+  *
+  * Add a Node to the tree.
+  */
+ void
+ tree_add(Tree *tree, Node *node)
+ {
+ 	TreeCell   *cell;
+ 	bool		isNew;
+ 	MemoryContext	oldcontext;
+ 
+ 	if (node == NULL)
+ 		return;
+ 
+ 	oldcontext = MemoryContextSwitchTo(tree->context);
+ 	cell = palloc0(sizeof(TreeCell));
+ 	cell->list = list_make1(node);
+ 	MemoryContextSwitchTo(oldcontext);
+ 
+ 	rb_insert(tree->tree, (RBNode *)cell, &isNew);
+ 	tree->n_elems++;
+ }
+ 
+ /*
+  * tree_add_list
+  *
+  * Add a list of Nodes to the tree.
+  */
+ void
+ tree_add_list(Tree *tree, List *list)
+ {
+ 	TreeCell   *cell;
+ 	bool		isNew;
+ 	MemoryContext	oldcontext;
+ 
+ 	if (list_length(list) == 0)
+ 		return;
+ 
+ 	oldcontext = MemoryContextSwitchTo(tree->context);
+ 	cell = palloc0(sizeof(TreeCell));
+ 	cell->list = list;
+ 	MemoryContextSwitchTo(oldcontext);
+ 
+ 	rb_insert(tree->tree, (RBNode *)cell, &isNew);
+ 	tree->n_elems += list_length(list);
+ }
+ 
+ 
+ /*
+  * tree_delete_ptr
+  *
+  * Delete a Node from the tree. Use the pointer itself
+  * for comparison with list elements.
+  */
+ void
+ tree_delete_ptr(Tree *tree, Node *node)
+ {
+ 	MemoryContext	oldcontext;
+ 	TreeCell   *cell = palloc(sizeof(TreeCell));
+ 	TreeCell   *result;
+ 	List	   *list;
+ 
+ 	/*
+ 	 * First, find the Node in the tree. rb_delete() only works on
+ 	 * RBNodes * that are actually in the tree, we have to use the
+ 	 * pointer rb_find() returns.
+ 	 */
+ 	oldcontext = MemoryContextSwitchTo(tree->context);
+ 	cell->list = list_make1(node);
+ 	MemoryContextSwitchTo(oldcontext);
+ 
+ 	result = (TreeCell *)rb_find(tree->tree, (RBNode *)cell);
+ 
+ 	if (result)
+ 	{
+ 		list = result->list;
+ 
+ 		rb_delete(tree->tree, (RBNode *)result);
+ 
+ 		tree->n_elems -= list_length(list);
+ 
+ 		list = list_delete_ptr(list, node);
+ 
+ 		tree_add_list(tree, list);
+ 	}
+ }
diff -dcrpN postgresql.orig/src/backend/optimizer/path/equivclass.c postgresql.1/src/backend/optimizer/path/equivclass.c
*** postgresql.orig/src/backend/optimizer/path/equivclass.c	2010-10-15 10:31:47.000000000 +0200
--- postgresql.1/src/backend/optimizer/path/equivclass.c	2010-10-26 17:01:57.000000000 +0200
***************
*** 24,29 ****
--- 24,30 ----
  #include "optimizer/planmain.h"
  #include "optimizer/prep.h"
  #include "optimizer/var.h"
+ #include "utils/hsearch.h"
  #include "utils/lsyscache.h"
  
  
*************** add_eq_member(EquivalenceClass *ec, Expr
*** 360,434 ****
  
  
  /*
!  * get_eclass_for_sort_expr
!  *	  Given an expression and opfamily info, find an existing equivalence
!  *	  class it is a member of; if none, build a new single-member
!  *	  EquivalenceClass for it.
!  *
!  * sortref is the SortGroupRef of the originating SortGroupClause, if any,
!  * or zero if not.	(It should never be zero if the expression is volatile!)
!  *
!  * This can be used safely both before and after EquivalenceClass merging;
!  * since it never causes merging it does not invalidate any existing ECs
!  * or PathKeys.
!  *
!  * Note: opfamilies must be chosen consistently with the way
!  * process_equivalence() would do; that is, generated from a mergejoinable
!  * equality operator.  Else we might fail to detect valid equivalences,
!  * generating poor (but not incorrect) plans.
   */
! EquivalenceClass *
! get_eclass_for_sort_expr(PlannerInfo *root,
! 						 Expr *expr,
! 						 Oid expr_datatype,
! 						 List *opfamilies,
! 						 Index sortref)
  {
! 	EquivalenceClass *newec;
! 	EquivalenceMember *newem;
  	ListCell   *lc1;
! 	MemoryContext oldcontext;
  
  	/*
! 	 * Scan through the existing EquivalenceClasses for a match
  	 */
! 	foreach(lc1, root->eq_classes)
  	{
! 		EquivalenceClass *cur_ec = (EquivalenceClass *) lfirst(lc1);
! 		ListCell   *lc2;
  
  		/*
! 		 * Never match to a volatile EC, except when we are looking at another
! 		 * reference to the same volatile SortGroupClause.
  		 */
! 		if (cur_ec->ec_has_volatile &&
! 			(sortref == 0 || sortref != cur_ec->ec_sortref))
! 			continue;
! 
! 		if (!equal(opfamilies, cur_ec->ec_opfamilies))
  			continue;
  
! 		foreach(lc2, cur_ec->ec_members)
  		{
! 			EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2);
! 
! 			/*
! 			 * If below an outer join, don't match constants: they're not as
! 			 * constant as they look.
! 			 */
! 			if (cur_ec->ec_below_outer_join &&
! 				cur_em->em_is_const)
! 				continue;
  
! 			if (expr_datatype == cur_em->em_datatype &&
! 				equal(expr, cur_em->em_expr))
! 				return cur_ec;	/* Match! */
  		}
  	}
  
  	/*
- 	 * No match, so build a new single-member EC
- 	 *
  	 * Here, we must be sure that we construct the EC in the right context. We
  	 * can assume, however, that the passed expr is long-lived.
  	 */
--- 361,463 ----
  
  
  /*
!  * eq_classes_match - matching function for eq_classes_hash in PlannerInfo
   */
! static int
! eq_classes_match(const void *key1, const void *key2, Size keysize)
  {
! 	EquivalenceClass *ec1 = (EquivalenceClass *) key1; /* this is in the hashtable */
! 	EquivalenceClass *ec2 = (EquivalenceClass *) key2; /* this is the new matched entry */
  	ListCell   *lc1;
! 	ListCell   *lc2;
  
  	/*
! 	 * Never match to a volatile EC, except when we are looking at another
! 	 * reference to the same volatile SortGroupClause.
  	 */
! 	if (ec1->ec_has_volatile &&
! 		(ec2->ec_sortref == 0 || ec2->ec_sortref != ec1->ec_sortref))
! 		return 1;
! 
! 	if (!equal(ec1->ec_opfamilies, ec2->ec_opfamilies))
! 		return 1;
! 
! 	foreach(lc1, ec1->ec_members)
  	{
! 		EquivalenceMember *em1 = (EquivalenceMember *) lfirst(lc1);
  
  		/*
! 		 * If below an outer join, don't match constants: they're not as
! 		 * constant as they look.
  		 */
! 		if (ec1->ec_below_outer_join &&
! 			em1->em_is_const)
  			continue;
  
! 		foreach(lc2, ec2->ec_members)
  		{
! 			EquivalenceMember *em2 = (EquivalenceMember *) lfirst(lc2);
  
! 			if (em1->em_datatype == em2->em_datatype &&
! 				equal(em1->em_expr, em2->em_expr))
! 				return 0;
  		}
  	}
  
+ 	return 1;
+ }
+ 
+ 
+ /*
+  * build_eq_classes_hash
+  *	Build the initial contents of PlannerInfo.eq_classes_hash
+  *	for faster search in PlannerInfo.eq_classes. This is used
+  *	to  make   get_eclass_for_sort_expr()  faster  for  large
+  *	inheritance trees.
+  */
+ static void
+ build_eq_classes_hash(PlannerInfo *root)
+ {
+ 	MemoryContext	oldcontext;
+ 	HASHCTL	info;
+ 	
+ 	ListCell   *lc;
+ 
+ 	info.match = eq_classes_match;
+ 	info.hcxt = root->planner_cxt;
+ 	info.keysize = sizeof(Relids);
+ 	info.entrysize = sizeof(EquivalenceClass);
+ 
+ 	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 
+ 	root->eq_classes_hash = hash_create("eq_classes", 2048, &info,
+ 						HASH_ELEM | HASH_COMPARE | HASH_CONTEXT);
+ 
+ 	foreach(lc, root->eq_classes)
+ 	{
+ 		EquivalenceClass *ec = lfirst(lc);
+ 		bool	found;
+ 
+ 		hash_search_with_hash_value(root->eq_classes_hash, ec,
+ 								bms_hash_value(ec->ec_relids),
+ 								HASH_ENTER, &found);
+ 		Assert(!found);
+ 	}
+ }
+ 
+ 
+ static EquivalenceClass *
+ build_new_ec(PlannerInfo *root,
+ 						 Expr *expr,
+ 						 Oid expr_datatype,
+ 						 List *opfamilies,
+ 						 Index sortref)
+ {
+ 	MemoryContext	oldcontext;
+ 	EquivalenceClass *newec;
+ 	EquivalenceMember *newem;
+ 
  	/*
  	 * Here, we must be sure that we construct the EC in the right context. We
  	 * can assume, however, that the passed expr is long-lived.
  	 */
*************** get_eclass_for_sort_expr(PlannerInfo *ro
*** 471,483 ****
  		}
  	}
  
- 	root->eq_classes = lappend(root->eq_classes, newec);
- 
  	MemoryContextSwitchTo(oldcontext);
  
  	return newec;
  }
  
  
  /*
   * generate_base_implied_equalities
--- 500,631 ----
  		}
  	}
  
  	MemoryContextSwitchTo(oldcontext);
  
  	return newec;
  }
  
+ /*
+  * get_eclass_for_sort_expr
+  *	  Given an expression and opfamily info, find an existing equivalence
+  *	  class it is a member of; if none, build a new single-member
+  *	  EquivalenceClass for it.
+  *
+  * sortref is the SortGroupRef of the originating SortGroupClause, if any,
+  * or zero if not.	(It should never be zero if the expression is volatile!)
+  *
+  * This can be used safely both before and after EquivalenceClass merging;
+  * since it never causes merging it does not invalidate any existing ECs
+  * or PathKeys.
+  *
+  * Note: opfamilies must be chosen consistently with the way
+  * process_equivalence() would do; that is, generated from a mergejoinable
+  * equality operator.  Else we might fail to detect valid equivalences,
+  * generating poor (but not incorrect) plans.
+  */
+ EquivalenceClass *
+ get_eclass_for_sort_expr(PlannerInfo *root,
+ 						 Expr *expr,
+ 						 Oid expr_datatype,
+ 						 List *opfamilies,
+ 						 Index sortref)
+ {
+ 	EquivalenceClass *newec;
+ 	ListCell   *lc1;
+ 	MemoryContext oldcontext;
+ 
+ 	if (root->eq_classes_hash == NULL &&
+ 		list_length(root->eq_classes) > 32)
+ 		build_eq_classes_hash(root);
+ 
+ 	if (root->eq_classes_hash == NULL)
+ 	{
+ 		/*
+ 		 * Scan through the existing EquivalenceClasses for a match
+ 		 */
+ 		foreach(lc1, root->eq_classes)
+ 		{
+ 			EquivalenceClass *cur_ec = (EquivalenceClass *) lfirst(lc1);
+ 			ListCell   *lc2;
+ 
+ 			/*
+ 			 * Never match to a volatile EC, except when we are looking at another
+ 			 * reference to the same volatile SortGroupClause.
+ 			 */
+ 			if (cur_ec->ec_has_volatile &&
+ 				(sortref == 0 || sortref != cur_ec->ec_sortref))
+ 				continue;
+ 
+ 			if (!equal(opfamilies, cur_ec->ec_opfamilies))
+ 				continue;
+ 
+ 			foreach(lc2, cur_ec->ec_members)
+ 			{
+ 				EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2);
+ 
+ 				/*
+ 				 * If below an outer join, don't match constants: they're not as
+ 				 * constant as they look.
+ 				 */
+ 				if (cur_ec->ec_below_outer_join &&
+ 					cur_em->em_is_const)
+ 					continue;
+ 
+ 				if (expr_datatype == cur_em->em_datatype &&
+ 					equal(expr, cur_em->em_expr))
+ 					return cur_ec;	/* Match! */
+ 			}
+ 		}
+ 
+ 		/*
+ 		 * No match, so build a new single-member EC
+ 		 */
+ 		newec = build_new_ec(root, expr, expr_datatype, opfamilies, sortref);
+ 
+ 		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 		root->eq_classes = lappend(root->eq_classes, newec);
+ 		MemoryContextSwitchTo(oldcontext);
+ 
+ 		return newec;
+ 	}
+ 	else
+ 	{
+ 		EquivalenceClass *ec_found;
+ 		bool	found;
+ 		uint32	hashval;
+ 
+ 		/*
+ 		 * Build the new single-member EC to match against in hash_search()
+ 		 */
+ 		newec = build_new_ec(root, expr, expr_datatype, opfamilies, sortref);
+ 
+ 		hashval = bms_hash_value(newec->ec_relids);
+ 
+ 		ec_found = hash_search_with_hash_value(root->eq_classes_hash, newec, hashval, HASH_FIND, &found);
+ 
+ 		if (found)
+ 		{
+ 			list_free(newec->ec_opfamilies);
+ 			list_free_deep(newec->ec_members);
+ 			bms_free(newec->ec_relids);
+ 			pfree(newec);
+ 			return ec_found;
+ 		}
+ 
+ 		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 
+ 		root->eq_classes = lappend(root->eq_classes, newec);
+ 
+ 		hash_search_with_hash_value(root->eq_classes_hash, newec, hashval, HASH_ENTER, &found);
+ 
+ 		Assert(!found);
+ 
+ 		MemoryContextSwitchTo(oldcontext);
+ 
+ 		return newec;
+ 	}
+ }
+ 
  
  /*
   * generate_base_implied_equalities
diff -dcrpN postgresql.orig/src/backend/optimizer/path/pathkeys.c postgresql.1/src/backend/optimizer/path/pathkeys.c
*** postgresql.orig/src/backend/optimizer/path/pathkeys.c	2010-09-21 13:49:57.000000000 +0200
--- postgresql.1/src/backend/optimizer/path/pathkeys.c	2010-10-26 14:27:20.000000000 +0200
*************** makePathKey(EquivalenceClass *eclass, Oi
*** 71,76 ****
--- 71,112 ----
  	return pk;
  }
  
+ int
+ pathkeys_comparator(const RBNode *a, const RBNode *b, void *arg)
+ {
+ 	TreeCell   *left = (TreeCell *)a;
+ 	TreeCell   *right = (TreeCell *)b;
+ 	PathKey	   *pk_left = (PathKey *)linitial(left->list);
+ 	PathKey	   *pk_right = (PathKey *)linitial(right->list);
+ 
+ 	Assert((pk_left != NULL));
+ 	Assert((pk_right != NULL));
+ 
+ 	if (pk_left->pk_eclass < pk_right->pk_eclass)
+ 		return -1;
+ 	else if (pk_left->pk_eclass > pk_right->pk_eclass)
+ 		return 1;
+ 
+ 	if (pk_left->pk_opfamily < pk_right->pk_opfamily)
+ 		return -1;
+ 	else if (pk_left->pk_opfamily > pk_right->pk_opfamily)
+ 		return 1;
+ 
+ 	if (pk_left->pk_strategy < pk_right->pk_strategy)
+ 		return -1;
+ 	else if (pk_left->pk_strategy > pk_right->pk_strategy)
+ 		return 1;
+ 
+ 	if (pk_left->pk_nulls_first < pk_right->pk_nulls_first)
+ 		return -1;
+ 	else if (pk_left->pk_nulls_first > pk_right->pk_nulls_first)
+ 		return 1;
+ 
+ 	return 0;
+ }
+ 
+ 
+ 
  /*
   * make_canonical_pathkey
   *	  Given the parameters for a PathKey, find any pre-existing matching
*************** make_canonical_pathkey(PlannerInfo *root
*** 85,119 ****
  					   EquivalenceClass *eclass, Oid opfamily,
  					   int strategy, bool nulls_first)
  {
! 	PathKey    *pk;
! 	ListCell   *lc;
  	MemoryContext oldcontext;
  
  	/* The passed eclass might be non-canonical, so chase up to the top */
  	while (eclass->ec_merged)
  		eclass = eclass->ec_merged;
  
- 	foreach(lc, root->canon_pathkeys)
- 	{
- 		pk = (PathKey *) lfirst(lc);
- 		if (eclass == pk->pk_eclass &&
- 			opfamily == pk->pk_opfamily &&
- 			strategy == pk->pk_strategy &&
- 			nulls_first == pk->pk_nulls_first)
- 			return pk;
- 	}
- 
  	/*
  	 * Be sure canonical pathkeys are allocated in the main planning context.
  	 * Not an issue in normal planning, but it is for GEQO.
  	 */
  	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
  
! 	pk = makePathKey(eclass, opfamily, strategy, nulls_first);
! 	root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
  
  	MemoryContextSwitchTo(oldcontext);
  
  	return pk;
  }
  
--- 121,157 ----
  					   EquivalenceClass *eclass, Oid opfamily,
  					   int strategy, bool nulls_first)
  {
! 	PathKey    *pk, *pk_new;
! 	List	   *list;
  	MemoryContext oldcontext;
  
  	/* The passed eclass might be non-canonical, so chase up to the top */
  	while (eclass->ec_merged)
  		eclass = eclass->ec_merged;
  
  	/*
  	 * Be sure canonical pathkeys are allocated in the main planning context.
  	 * Not an issue in normal planning, but it is for GEQO.
  	 */
  	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
  
! 	pk_new = makePathKey(eclass, opfamily, strategy, nulls_first);
  
  	MemoryContextSwitchTo(oldcontext);
  
+ 	list = tree_find(root->rb_canon_pathkeys, (Node *)pk_new);
+ 
+ 	if (list)
+ 	{
+ 		pfree(pk_new);
+ 		pk = (PathKey *) linitial(list);
+ 	}
+ 	else
+ 	{
+ 		tree_add(root->rb_canon_pathkeys, (Node *)pk_new);
+ 		pk = pk_new;
+ 	}
+ 
  	return pk;
  }
  
diff -dcrpN postgresql.orig/src/backend/optimizer/plan/planmain.c postgresql.1/src/backend/optimizer/plan/planmain.c
*** postgresql.orig/src/backend/optimizer/plan/planmain.c	2010-10-08 11:04:23.000000000 +0200
--- postgresql.1/src/backend/optimizer/plan/planmain.c	2010-10-26 14:13:59.000000000 +0200
***************
*** 21,26 ****
--- 21,27 ----
  #include "postgres.h"
  
  #include "miscadmin.h"
+ #include "nodes/pg_tree.h"
  #include "optimizer/cost.h"
  #include "optimizer/pathnode.h"
  #include "optimizer/paths.h"
*************** query_planner(PlannerInfo *root, List *t
*** 117,123 ****
  		 * We still are required to canonicalize any pathkeys, in case it's
  		 * something like "SELECT 2+2 ORDER BY 1".
  		 */
! 		root->canon_pathkeys = NIL;
  		root->query_pathkeys = canonicalize_pathkeys(root,
  													 root->query_pathkeys);
  		root->group_pathkeys = canonicalize_pathkeys(root,
--- 118,124 ----
  		 * We still are required to canonicalize any pathkeys, in case it's
  		 * something like "SELECT 2+2 ORDER BY 1".
  		 */
! 		root->rb_canon_pathkeys = new_tree(pathkeys_comparator, root->planner_cxt);
  		root->query_pathkeys = canonicalize_pathkeys(root,
  													 root->query_pathkeys);
  		root->group_pathkeys = canonicalize_pathkeys(root,
*************** query_planner(PlannerInfo *root, List *t
*** 145,151 ****
  	root->join_rel_hash = NULL;
  	root->join_rel_level = NULL;
  	root->join_cur_level = 0;
! 	root->canon_pathkeys = NIL;
  	root->left_join_clauses = NIL;
  	root->right_join_clauses = NIL;
  	root->full_join_clauses = NIL;
--- 146,152 ----
  	root->join_rel_hash = NULL;
  	root->join_rel_level = NULL;
  	root->join_cur_level = 0;
! 	root->rb_canon_pathkeys = new_tree(pathkeys_comparator, root->planner_cxt);
  	root->left_join_clauses = NIL;
  	root->right_join_clauses = NIL;
  	root->full_join_clauses = NIL;
diff -dcrpN postgresql.orig/src/backend/optimizer/plan/planner.c postgresql.1/src/backend/optimizer/plan/planner.c
*** postgresql.orig/src/backend/optimizer/plan/planner.c	2010-10-08 11:04:23.000000000 +0200
--- postgresql.1/src/backend/optimizer/plan/planner.c	2010-10-26 13:52:08.000000000 +0200
*************** subquery_planner(PlannerGlobal *glob, Qu
*** 306,311 ****
--- 306,312 ----
  	root->init_plans = NIL;
  	root->cte_plan_ids = NIL;
  	root->eq_classes = NIL;
+ 	root->rb_canon_pathkeys = new_tree(pathkeys_comparator, root->planner_cxt);
  	root->append_rel_list = NIL;
  	root->rowMarks = NIL;
  	root->hasInheritedTarget = false;
diff -dcrpN postgresql.orig/src/backend/optimizer/prep/prepjointree.c postgresql.1/src/backend/optimizer/prep/prepjointree.c
*** postgresql.orig/src/backend/optimizer/prep/prepjointree.c	2010-09-21 13:49:57.000000000 +0200
--- postgresql.1/src/backend/optimizer/prep/prepjointree.c	2010-10-26 13:53:15.000000000 +0200
***************
*** 27,32 ****
--- 27,33 ----
  #include "nodes/nodeFuncs.h"
  #include "optimizer/clauses.h"
  #include "optimizer/placeholder.h"
+ #include "optimizer/paths.h"
  #include "optimizer/prep.h"
  #include "optimizer/subselect.h"
  #include "optimizer/tlist.h"
*************** pull_up_simple_subquery(PlannerInfo *roo
*** 627,632 ****
--- 628,634 ----
  	subroot->init_plans = NIL;
  	subroot->cte_plan_ids = NIL;
  	subroot->eq_classes = NIL;
+ 	subroot->rb_canon_pathkeys = new_tree(pathkeys_comparator, subroot->planner_cxt);
  	subroot->append_rel_list = NIL;
  	subroot->rowMarks = NIL;
  	subroot->hasRecursion = false;
diff -dcrpN postgresql.orig/src/include/nodes/nodes.h postgresql.1/src/include/nodes/nodes.h
*** postgresql.orig/src/include/nodes/nodes.h	2010-10-15 10:31:47.000000000 +0200
--- postgresql.1/src/include/nodes/nodes.h	2010-10-26 16:45:56.000000000 +0200
*************** typedef enum NodeTag
*** 256,261 ****
--- 256,266 ----
  	T_OidList,
  
  	/*
+ 	 * TAGS FOR TREE NODES (pg_tree.h)
+ 	 */
+ 	T_Tree,
+ 
+ 	/*
  	 * TAGS FOR STATEMENT NODES (mostly in parsenodes.h)
  	 */
  	T_Query = 700,
diff -dcrpN postgresql.orig/src/include/nodes/pg_tree.h postgresql.1/src/include/nodes/pg_tree.h
*** postgresql.orig/src/include/nodes/pg_tree.h	1970-01-01 01:00:00.000000000 +0100
--- postgresql.1/src/include/nodes/pg_tree.h	2010-10-19 11:50:31.000000000 +0200
***************
*** 0 ****
--- 1,60 ----
+ /*-------------------------------------------------------------------------
+  *
+  * pg_tree.h
+  *	  interface for PostgreSQL generic rbtree package
+  *
+  * This package implements rbtree of Node * elements of the same type.
+  * It is a replacement of List for dealing with O(n^2) behaviour
+  * found with long lists.
+  *
+  * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
+  * Portions Copyright (c) 1994, Regents of the University of California
+  *
+  * $PostgreSQL$
+  *
+  *-------------------------------------------------------------------------
+  */
+ #ifndef PG_TREE_H
+ #define PG_TREE_H
+ 
+ #include "nodes/nodes.h"
+ #include "nodes/pg_list.h"
+ #include "utils/rbtree.h"
+ 
+ typedef struct TreeCell
+ {
+ 	RBNode		treenode;	/* base RBTree node, required by the rbtree.c code */
+ 	List	   *list;		/* multiple elements with the same key can be stored */
+ } TreeCell;
+ 
+ typedef struct Tree
+ {
+ 	NodeTag		type;		/* T_Tree */
+ 	int32		n_elems;	/* current number of stored elements */
+ 	MemoryContext	context;	/* context to allocate nodes and list elements in */
+ 	RBTree	   *tree;
+ } Tree;
+ 
+ 
+ extern Tree *new_tree(rb_comparator comparator, MemoryContext context);
+ extern List *tree_find(Tree *tree, Node *node);
+ extern void tree_add(Tree *tree, Node *node);
+ extern void tree_add_list(Tree *tree, List *list);
+ extern void tree_delete_ptr(Tree *tree, Node *node);
+ 
+ 
+ /*
+  * tforeach -
+  *	a convenience macro which loops through the tree elements
+  *	in "inorder" walk to make it look like a list
+  *
+  * WARNING WARNING WARNING
+  *
+  * Only one walk of the tree can be active at a time, it's the
+  * limitation of the current backend/utils/misc/rbtree.c code.
+  */
+ #define tforeach(tc, lc, t)	\
+ 	for (rb_begin_iterate(t->tree, LeftRightWalk) , (tc) = (TreeCell *)rb_iterate(t->tree); (tc); (tc) = (TreeCell *)rb_iterate(t->tree)) \
+ 	foreach (lc, tc->list)
+ 
+ #endif   /* PG_TREE_H */
diff -dcrpN postgresql.orig/src/include/nodes/primnodes.h postgresql.1/src/include/nodes/primnodes.h
*** postgresql.orig/src/include/nodes/primnodes.h	2010-09-21 13:49:59.000000000 +0200
--- postgresql.1/src/include/nodes/primnodes.h	2010-10-18 13:07:22.000000000 +0200
***************
*** 19,24 ****
--- 19,25 ----
  
  #include "access/attnum.h"
  #include "nodes/pg_list.h"
+ #include "nodes/pg_tree.h"
  
  
  /* ----------------------------------------------------------------
diff -dcrpN postgresql.orig/src/include/nodes/relation.h postgresql.1/src/include/nodes/relation.h
*** postgresql.orig/src/include/nodes/relation.h	2010-10-15 10:31:47.000000000 +0200
--- postgresql.1/src/include/nodes/relation.h	2010-10-26 13:44:14.000000000 +0200
*************** typedef struct PlannerInfo
*** 159,166 ****
  	List	   *cte_plan_ids;	/* per-CTE-item list of subplan IDs */
  
  	List	   *eq_classes;		/* list of active EquivalenceClasses */
  
! 	List	   *canon_pathkeys; /* list of "canonical" PathKeys */
  
  	List	   *left_join_clauses;		/* list of RestrictInfos for
  										 * mergejoinable outer join clauses
--- 159,167 ----
  	List	   *cte_plan_ids;	/* per-CTE-item list of subplan IDs */
  
  	List	   *eq_classes;		/* list of active EquivalenceClasses */
+ 	struct HTAB *eq_classes_hash;	/* optional hashtable for equivalence classes */
  
! 	Tree	   *rb_canon_pathkeys;	/* tree of "canonical" PathKeys */
  
  	List	   *left_join_clauses;		/* list of RestrictInfos for
  										 * mergejoinable outer join clauses
diff -dcrpN postgresql.orig/src/include/optimizer/paths.h postgresql.1/src/include/optimizer/paths.h
*** postgresql.orig/src/include/optimizer/paths.h	2010-09-21 13:49:59.000000000 +0200
--- postgresql.1/src/include/optimizer/paths.h	2010-10-26 16:46:45.000000000 +0200
***************
*** 15,20 ****
--- 15,21 ----
  #define PATHS_H
  
  #include "nodes/relation.h"
+ #include "utils/rbtree.h"
  
  
  /*
*************** typedef enum
*** 152,157 ****
--- 153,160 ----
  	PATHKEYS_DIFFERENT			/* neither pathkey includes the other */
  } PathKeysComparison;
  
+ extern int pathkeys_comparator(const RBNode *a, const RBNode *b, void *arg);
+ 
  extern List *canonicalize_pathkeys(PlannerInfo *root, List *pathkeys);
  extern PathKeysComparison compare_pathkeys(List *keys1, List *keys2);
  extern bool pathkeys_contained_in(List *keys1, List *keys2);
Binary files postgresql.orig/src/test/regress/gmon.out and postgresql.1/src/test/regress/gmon.out differ
Binary files postgresql.orig/src/timezone/gmon.out and postgresql.1/src/timezone/gmon.out differ
9.1-planner-speedup-v5-extra-ifs.patchtext/x-patch; name=9.1-planner-speedup-v5-extra-ifs.patchDownload
diff -dcrpN postgresql.1/src/backend/nodes/bitmapset.c postgresql.2/src/backend/nodes/bitmapset.c
*** postgresql.1/src/backend/nodes/bitmapset.c	2010-10-26 16:38:10.000000000 +0200
--- postgresql.2/src/backend/nodes/bitmapset.c	2010-10-19 10:56:19.000000000 +0200
*************** bms_equal(const Bitmapset *a, const Bitm
*** 173,178 ****
--- 173,232 ----
  }
  
  /*
+  * bms_compare - are one of the two bitmapsets equal, less or greater than the other?
+  *
+  * This is logical not physical equality; in particular, a NULL pointer will
+  * be reported as equal to a palloc'd value containing no members.
+  */
+ int
+ bms_compare(const Bitmapset *a, const Bitmapset *b)
+ {
+ 	const Bitmapset *shorter;
+ 	const Bitmapset *longer;
+ 	int			shortlen;
+ 	int			longlen;
+ 	int			i;
+ 
+ 	/* Handle cases where either input is NULL */
+ 	if (a == NULL)
+ 	{
+ 		if (b == NULL)
+ 			return 0;
+ 		if (bms_is_empty(b))
+ 			return 0;
+ 	}
+ 	else if (b == NULL && bms_is_empty(a))
+ 		return 0;
+ 	/* Identify shorter and longer input */
+ 	if (a->nwords <= b->nwords)
+ 	{
+ 		shorter = a;
+ 		longer = b;
+ 	}
+ 	else
+ 	{
+ 		shorter = b;
+ 		longer = a;
+ 	}
+ 	/* And process */
+ 	shortlen = shorter->nwords;
+ 	for (i = 0; i < shortlen; i++)
+ 	{
+ 		if (shorter->words[i] < longer->words[i])
+ 			return -1;
+ 		else if (shorter->words[i] > longer->words[i])
+ 			return 1;
+ 	}
+ 	longlen = longer->nwords;
+ 	for (; i < longlen; i++)
+ 	{
+ 		if (longer->words[i] != 0)
+ 			return (longer == a ? 1 : -1);
+ 	}
+ 	return 0;
+ }
+ 
+ /*
   * bms_make_singleton - build a bitmapset containing a single member
   */
  Bitmapset *
diff -dcrpN postgresql.1/src/backend/nodes/comparefuncs.c postgresql.2/src/backend/nodes/comparefuncs.c
*** postgresql.1/src/backend/nodes/comparefuncs.c	1970-01-01 01:00:00.000000000 +0100
--- postgresql.2/src/backend/nodes/comparefuncs.c	2010-10-19 11:26:16.000000000 +0200
***************
*** 0 ****
--- 1,2952 ----
+ /*-------------------------------------------------------------------------
+  *
+  * comparefuncs.c
+  *	  Tree comparator functions to compare node trees.
+  *
+  * This file is a straight conversion of equalfuncs.c, see the NOTE there.
+  *
+  * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
+  * Portions Copyright (c) 1994, Regents of the University of California
+  *
+  * IDENTIFICATION
+  *	  src/backend/nodes/comparefuncs.c
+  *
+  *-------------------------------------------------------------------------
+  */
+ 
+ #include "postgres.h"
+ 
+ #include "nodes/relation.h"
+ #include "utils/datum.h"
+ 
+ 
+ /*
+  * Macros to simplify comparison of different kinds of fields.	Use these
+  * wherever possible to reduce the chance for silly typos.	Note that these
+  * hard-wire the convention that the local variables in a Compare routine are
+  * named 'a' and 'b'.
+  */
+ 
+ /* Compare a simple scalar field (int, float, bool, enum, etc) */
+ #define COMPARE_SCALAR_FIELD(fldname) \
+ 	do { \
+ 		if (a->fldname < b->fldname) \
+ 			return -1; \
+ 		else if (a->fldname > b->fldname) \
+ 			return 1; \
+ 	} while (0)
+ 
+ /* Compare a field that is a pointer to some kind of Node or Node tree */
+ #define COMPARE_NODE_FIELD(fldname) \
+ 	do { \
+ 		int	ret; \
+ 		ret = compare(a->fldname, b->fldname); \
+ 		if (ret != 0) \
+ 			return ret; \
+ 	} while (0)
+ 
+ /* Compare a field that is a pointer to a Bitmapset */
+ #define COMPARE_BITMAPSET_FIELD(fldname) \
+ 	do { \
+ 		int	ret; \
+ 		ret = bms_compare(a->fldname, b->fldname); \
+ 		if (ret != 0) \
+ 			return ret; \
+ 	} while (0)
+ 
+ /* Compare a field that is a pointer to a C string, or perhaps NULL */
+ #define COMPARE_STRING_FIELD(fldname) \
+ 	do { \
+ 		int	ret; \
+ 		ret = comparestr(a->fldname, b->fldname); \
+ 		if (ret != 0) \
+ 			return ret; \
+ 	} while (0)
+ 
+ /* Macro for comparing string fields that might be NULL */
+ #define comparestr(a, b)	\
+ 	(((a) != NULL && (b) != NULL) ? strcmp(a, b) : ((a) < (b) ? -1 : ((a) > (b) ? -1 : 0 )))
+ 
+ /* Compare a field that is a pointer to a simple palloc'd object of size sz */
+ #define COMPARE_POINTER_FIELD(fldname, sz) \
+ 	do { \
+ 		int	ret; \
+ 		ret = memcmp(a->fldname, b->fldname, (sz)); \
+ 		if (ret != 0) \
+ 			return ret; \
+ 	} while (0)
+ 
+ /* Compare a parse location field (this is a no-op, per note above) */
+ #define COMPARE_LOCATION_FIELD(fldname) \
+ 	((void) 0)
+ 
+ 
+ /*
+  *	Stuff from primnodes.h
+  */
+ 
+ static int
+ _compareAlias(Alias *a, Alias *b)
+ {
+ 	COMPARE_STRING_FIELD(aliasname);
+ 	COMPARE_NODE_FIELD(colnames);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRangeVar(RangeVar *a, RangeVar *b)
+ {
+ 	COMPARE_STRING_FIELD(catalogname);
+ 	COMPARE_STRING_FIELD(schemaname);
+ 	COMPARE_STRING_FIELD(relname);
+ 	COMPARE_SCALAR_FIELD(inhOpt);
+ 	COMPARE_SCALAR_FIELD(istemp);
+ 	COMPARE_NODE_FIELD(alias);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareIntoClause(IntoClause *a, IntoClause *b)
+ {
+ 	COMPARE_NODE_FIELD(rel);
+ 	COMPARE_NODE_FIELD(colNames);
+ 	COMPARE_NODE_FIELD(options);
+ 	COMPARE_SCALAR_FIELD(onCommit);
+ 	COMPARE_STRING_FIELD(tableSpaceName);
+ 
+ 	return 0;
+ }
+ 
+ /*
+  * We don't need an _compareExpr because Expr is an abstract supertype which
+  * should never actually get instantiated.	Also, since it has no common
+  * fields except NodeTag, there's no need for a helper routine to factor
+  * out comparing the common fields...
+  */
+ 
+ static int
+ _compareVar(Var *a, Var *b)
+ {
+ 	COMPARE_SCALAR_FIELD(varno);
+ 	COMPARE_SCALAR_FIELD(varattno);
+ 	COMPARE_SCALAR_FIELD(vartype);
+ 	COMPARE_SCALAR_FIELD(vartypmod);
+ 	COMPARE_SCALAR_FIELD(varlevelsup);
+ 	COMPARE_SCALAR_FIELD(varnoold);
+ 	COMPARE_SCALAR_FIELD(varoattno);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareConst(Const *a, Const *b)
+ {
+ 	COMPARE_SCALAR_FIELD(consttype);
+ 	COMPARE_SCALAR_FIELD(consttypmod);
+ 	COMPARE_SCALAR_FIELD(constlen);
+ 	COMPARE_SCALAR_FIELD(constisnull);
+ 	COMPARE_SCALAR_FIELD(constbyval);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	/*
+ 	 * We treat all NULL constants of the same type as equal. Someday this
+ 	 * might need to change?  But datumCompare doesn't work on nulls, so...
+ 	 */
+ 	if (a->constisnull)
+ 		return 0;
+ 	return datumCompare(a->constvalue, b->constvalue,
+ 						a->constbyval, a->constlen);
+ }
+ 
+ static int
+ _compareParam(Param *a, Param *b)
+ {
+ 	COMPARE_SCALAR_FIELD(paramkind);
+ 	COMPARE_SCALAR_FIELD(paramid);
+ 	COMPARE_SCALAR_FIELD(paramtype);
+ 	COMPARE_SCALAR_FIELD(paramtypmod);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAggref(Aggref *a, Aggref *b)
+ {
+ 	COMPARE_SCALAR_FIELD(aggfnoid);
+ 	COMPARE_SCALAR_FIELD(aggtype);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_NODE_FIELD(aggorder);
+ 	COMPARE_NODE_FIELD(aggdistinct);
+ 	COMPARE_SCALAR_FIELD(aggstar);
+ 	COMPARE_SCALAR_FIELD(agglevelsup);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareWindowFunc(WindowFunc *a, WindowFunc *b)
+ {
+ 	COMPARE_SCALAR_FIELD(winfnoid);
+ 	COMPARE_SCALAR_FIELD(wintype);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_SCALAR_FIELD(winref);
+ 	COMPARE_SCALAR_FIELD(winstar);
+ 	COMPARE_SCALAR_FIELD(winagg);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareArrayRef(ArrayRef *a, ArrayRef *b)
+ {
+ 	COMPARE_SCALAR_FIELD(refarraytype);
+ 	COMPARE_SCALAR_FIELD(refelemtype);
+ 	COMPARE_SCALAR_FIELD(reftypmod);
+ 	COMPARE_NODE_FIELD(refupperindexpr);
+ 	COMPARE_NODE_FIELD(reflowerindexpr);
+ 	COMPARE_NODE_FIELD(refexpr);
+ 	COMPARE_NODE_FIELD(refassgnexpr);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareFuncExpr(FuncExpr *a, FuncExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(funcid);
+ 	COMPARE_SCALAR_FIELD(funcresulttype);
+ 	COMPARE_SCALAR_FIELD(funcretset);
+ 
+ 	/*
+ 	 * Special-case COERCE_DONTCARE, so that planner can build coercion nodes
+ 	 * that are equal() to both explicit and implicit coercions.
+ 	 */
+ 	if (a->funcformat != COERCE_DONTCARE && b->funcformat != COERCE_DONTCARE)
+ 		COMPARE_SCALAR_FIELD(funcformat);
+ 
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareNamedArgExpr(NamedArgExpr *a, NamedArgExpr *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_SCALAR_FIELD(argnumber);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareOpExpr(OpExpr *a, OpExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(opno);
+ 
+ 	/*
+ 	 * Special-case opfuncid: it is allowable for it to differ if one node
+ 	 * contains zero and the other doesn't.  This just means that the one node
+ 	 * isn't as far along in the parse/plan pipeline and hasn't had the
+ 	 * opfuncid cache filled yet.
+ 	 */
+ 	if (a->opfuncid != 0 &&
+ 		b->opfuncid != 0)
+ 		COMPARE_SCALAR_FIELD(opfuncid);
+ 
+ 	COMPARE_SCALAR_FIELD(opresulttype);
+ 	COMPARE_SCALAR_FIELD(opretset);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDistinctExpr(DistinctExpr *a, DistinctExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(opno);
+ 
+ 	/*
+ 	 * Special-case opfuncid: it is allowable for it to differ if one node
+ 	 * contains zero and the other doesn't.  This just means that the one node
+ 	 * isn't as far along in the parse/plan pipeline and hasn't had the
+ 	 * opfuncid cache filled yet.
+ 	 */
+ 	if (a->opfuncid != 0 &&
+ 		b->opfuncid != 0)
+ 		COMPARE_SCALAR_FIELD(opfuncid);
+ 
+ 	COMPARE_SCALAR_FIELD(opresulttype);
+ 	COMPARE_SCALAR_FIELD(opretset);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareScalarArrayOpExpr(ScalarArrayOpExpr *a, ScalarArrayOpExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(opno);
+ 
+ 	/*
+ 	 * Special-case opfuncid: it is allowable for it to differ if one node
+ 	 * contains zero and the other doesn't.  This just means that the one node
+ 	 * isn't as far along in the parse/plan pipeline and hasn't had the
+ 	 * opfuncid cache filled yet.
+ 	 */
+ 	if (a->opfuncid != 0 &&
+ 		b->opfuncid != 0)
+ 		COMPARE_SCALAR_FIELD(opfuncid);
+ 
+ 	COMPARE_SCALAR_FIELD(useOr);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareBoolExpr(BoolExpr *a, BoolExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(boolop);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareSubLink(SubLink *a, SubLink *b)
+ {
+ 	COMPARE_SCALAR_FIELD(subLinkType);
+ 	COMPARE_NODE_FIELD(testexpr);
+ 	COMPARE_NODE_FIELD(operName);
+ 	COMPARE_NODE_FIELD(subselect);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareSubPlan(SubPlan *a, SubPlan *b)
+ {
+ 	COMPARE_SCALAR_FIELD(subLinkType);
+ 	COMPARE_NODE_FIELD(testexpr);
+ 	COMPARE_NODE_FIELD(paramIds);
+ 	COMPARE_SCALAR_FIELD(plan_id);
+ 	COMPARE_STRING_FIELD(plan_name);
+ 	COMPARE_SCALAR_FIELD(firstColType);
+ 	COMPARE_SCALAR_FIELD(firstColTypmod);
+ 	COMPARE_SCALAR_FIELD(useHashTable);
+ 	COMPARE_SCALAR_FIELD(unknownEqFalse);
+ 	COMPARE_NODE_FIELD(setParam);
+ 	COMPARE_NODE_FIELD(parParam);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_SCALAR_FIELD(startup_cost);
+ 	COMPARE_SCALAR_FIELD(per_call_cost);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlternativeSubPlan(AlternativeSubPlan *a, AlternativeSubPlan *b)
+ {
+ 	COMPARE_NODE_FIELD(subplans);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareFieldSelect(FieldSelect *a, FieldSelect *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_SCALAR_FIELD(fieldnum);
+ 	COMPARE_SCALAR_FIELD(resulttype);
+ 	COMPARE_SCALAR_FIELD(resulttypmod);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareFieldStore(FieldStore *a, FieldStore *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_NODE_FIELD(newvals);
+ 	COMPARE_NODE_FIELD(fieldnums);
+ 	COMPARE_SCALAR_FIELD(resulttype);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRelabelType(RelabelType *a, RelabelType *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_SCALAR_FIELD(resulttype);
+ 	COMPARE_SCALAR_FIELD(resulttypmod);
+ 
+ 	/*
+ 	 * Special-case COERCE_DONTCARE, so that planner can build coercion nodes
+ 	 * that are equal() to both explicit and implicit coercions.
+ 	 */
+ 	if (a->relabelformat != COERCE_DONTCARE &&
+ 		b->relabelformat != COERCE_DONTCARE)
+ 		COMPARE_SCALAR_FIELD(relabelformat);
+ 
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCoerceViaIO(CoerceViaIO *a, CoerceViaIO *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_SCALAR_FIELD(resulttype);
+ 
+ 	/*
+ 	 * Special-case COERCE_DONTCARE, so that planner can build coercion nodes
+ 	 * that are equal() to both explicit and implicit coercions.
+ 	 */
+ 	if (a->coerceformat != COERCE_DONTCARE &&
+ 		b->coerceformat != COERCE_DONTCARE)
+ 		COMPARE_SCALAR_FIELD(coerceformat);
+ 
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareArrayCoerceExpr(ArrayCoerceExpr *a, ArrayCoerceExpr *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_SCALAR_FIELD(elemfuncid);
+ 	COMPARE_SCALAR_FIELD(resulttype);
+ 	COMPARE_SCALAR_FIELD(resulttypmod);
+ 	COMPARE_SCALAR_FIELD(isExplicit);
+ 
+ 	/*
+ 	 * Special-case COERCE_DONTCARE, so that planner can build coercion nodes
+ 	 * that are equal() to both explicit and implicit coercions.
+ 	 */
+ 	if (a->coerceformat != COERCE_DONTCARE &&
+ 		b->coerceformat != COERCE_DONTCARE)
+ 		COMPARE_SCALAR_FIELD(coerceformat);
+ 
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareConvertRowtypeExpr(ConvertRowtypeExpr *a, ConvertRowtypeExpr *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_SCALAR_FIELD(resulttype);
+ 
+ 	/*
+ 	 * Special-case COERCE_DONTCARE, so that planner can build coercion nodes
+ 	 * that are equal() to both explicit and implicit coercions.
+ 	 */
+ 	if (a->convertformat != COERCE_DONTCARE &&
+ 		b->convertformat != COERCE_DONTCARE)
+ 		COMPARE_SCALAR_FIELD(convertformat);
+ 
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCaseExpr(CaseExpr *a, CaseExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(casetype);
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_NODE_FIELD(defresult);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCaseWhen(CaseWhen *a, CaseWhen *b)
+ {
+ 	COMPARE_NODE_FIELD(expr);
+ 	COMPARE_NODE_FIELD(result);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCaseTestExpr(CaseTestExpr *a, CaseTestExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(typeId);
+ 	COMPARE_SCALAR_FIELD(typeMod);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareArrayExpr(ArrayExpr *a, ArrayExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(array_typeid);
+ 	COMPARE_SCALAR_FIELD(element_typeid);
+ 	COMPARE_NODE_FIELD(elements);
+ 	COMPARE_SCALAR_FIELD(multidims);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRowExpr(RowExpr *a, RowExpr *b)
+ {
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_SCALAR_FIELD(row_typeid);
+ 
+ 	/*
+ 	 * Special-case COERCE_DONTCARE, so that planner can build coercion nodes
+ 	 * that are equal() to both explicit and implicit coercions.
+ 	 */
+ 	if (a->row_format != COERCE_DONTCARE &&
+ 		b->row_format != COERCE_DONTCARE)
+ 		COMPARE_SCALAR_FIELD(row_format);
+ 
+ 	COMPARE_NODE_FIELD(colnames);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRowCompareExpr(RowCompareExpr *a, RowCompareExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(rctype);
+ 	COMPARE_NODE_FIELD(opnos);
+ 	COMPARE_NODE_FIELD(opfamilies);
+ 	COMPARE_NODE_FIELD(largs);
+ 	COMPARE_NODE_FIELD(rargs);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCoalesceExpr(CoalesceExpr *a, CoalesceExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(coalescetype);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareMinMaxExpr(MinMaxExpr *a, MinMaxExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(minmaxtype);
+ 	COMPARE_SCALAR_FIELD(op);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareXmlExpr(XmlExpr *a, XmlExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(op);
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_NODE_FIELD(named_args);
+ 	COMPARE_NODE_FIELD(arg_names);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_SCALAR_FIELD(xmloption);
+ 	COMPARE_SCALAR_FIELD(type);
+ 	COMPARE_SCALAR_FIELD(typmod);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareNullIfExpr(NullIfExpr *a, NullIfExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(opno);
+ 
+ 	/*
+ 	 * Special-case opfuncid: it is allowable for it to differ if one node
+ 	 * contains zero and the other doesn't.  This just means that the one node
+ 	 * isn't as far along in the parse/plan pipeline and hasn't had the
+ 	 * opfuncid cache filled yet.
+ 	 */
+ 	if (a->opfuncid != 0 &&
+ 		b->opfuncid != 0)
+ 		COMPARE_SCALAR_FIELD(opfuncid);
+ 
+ 	COMPARE_SCALAR_FIELD(opresulttype);
+ 	COMPARE_SCALAR_FIELD(opretset);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareNullTest(NullTest *a, NullTest *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_SCALAR_FIELD(nulltesttype);
+ 	COMPARE_SCALAR_FIELD(argisrow);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareBooleanTest(BooleanTest *a, BooleanTest *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_SCALAR_FIELD(booltesttype);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCoerceToDomain(CoerceToDomain *a, CoerceToDomain *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_SCALAR_FIELD(resulttype);
+ 	COMPARE_SCALAR_FIELD(resulttypmod);
+ 
+ 	/*
+ 	 * Special-case COERCE_DONTCARE, so that planner can build coercion nodes
+ 	 * that are equal() to both explicit and implicit coercions.
+ 	 */
+ 	if (a->coercionformat != COERCE_DONTCARE &&
+ 		b->coercionformat != COERCE_DONTCARE)
+ 		COMPARE_SCALAR_FIELD(coercionformat);
+ 
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCoerceToDomainValue(CoerceToDomainValue *a, CoerceToDomainValue *b)
+ {
+ 	COMPARE_SCALAR_FIELD(typeId);
+ 	COMPARE_SCALAR_FIELD(typeMod);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareSetToDefault(SetToDefault *a, SetToDefault *b)
+ {
+ 	COMPARE_SCALAR_FIELD(typeId);
+ 	COMPARE_SCALAR_FIELD(typeMod);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCurrentOfExpr(CurrentOfExpr *a, CurrentOfExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(cvarno);
+ 	COMPARE_STRING_FIELD(cursor_name);
+ 	COMPARE_SCALAR_FIELD(cursor_param);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareTargetEntry(TargetEntry *a, TargetEntry *b)
+ {
+ 	COMPARE_NODE_FIELD(expr);
+ 	COMPARE_SCALAR_FIELD(resno);
+ 	COMPARE_STRING_FIELD(resname);
+ 	COMPARE_SCALAR_FIELD(ressortgroupref);
+ 	COMPARE_SCALAR_FIELD(resorigtbl);
+ 	COMPARE_SCALAR_FIELD(resorigcol);
+ 	COMPARE_SCALAR_FIELD(resjunk);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRangeTblRef(RangeTblRef *a, RangeTblRef *b)
+ {
+ 	COMPARE_SCALAR_FIELD(rtindex);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareJoinExpr(JoinExpr *a, JoinExpr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(jointype);
+ 	COMPARE_SCALAR_FIELD(isNatural);
+ 	COMPARE_NODE_FIELD(larg);
+ 	COMPARE_NODE_FIELD(rarg);
+ 	COMPARE_NODE_FIELD(usingClause);
+ 	COMPARE_NODE_FIELD(quals);
+ 	COMPARE_NODE_FIELD(alias);
+ 	COMPARE_SCALAR_FIELD(rtindex);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareFromExpr(FromExpr *a, FromExpr *b)
+ {
+ 	COMPARE_NODE_FIELD(fromlist);
+ 	COMPARE_NODE_FIELD(quals);
+ 
+ 	return 0;
+ }
+ 
+ 
+ /*
+  * Stuff from relation.h
+  */
+ 
+ static int
+ _comparePathKey(PathKey *a, PathKey *b)
+ {
+ 	/*
+ 	 * This is normally used on non-canonicalized PathKeys, so must chase up
+ 	 * to the topmost merged EquivalenceClass and see if those are the same
+ 	 * (by pointer equality).
+ 	 */
+ 	EquivalenceClass *a_eclass;
+ 	EquivalenceClass *b_eclass;
+ 
+ 	a_eclass = a->pk_eclass;
+ 	while (a_eclass->ec_merged)
+ 		a_eclass = a_eclass->ec_merged;
+ 	b_eclass = b->pk_eclass;
+ 	while (b_eclass->ec_merged)
+ 		b_eclass = b_eclass->ec_merged;
+ 	if (a_eclass < b_eclass)
+ 		return -1;
+ 	else if (a_eclass > b_eclass)
+ 		return 1;
+ 
+ 	COMPARE_SCALAR_FIELD(pk_opfamily);
+ 	COMPARE_SCALAR_FIELD(pk_strategy);
+ 	COMPARE_SCALAR_FIELD(pk_nulls_first);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRestrictInfo(RestrictInfo *a, RestrictInfo *b)
+ {
+ 	COMPARE_NODE_FIELD(clause);
+ 	COMPARE_SCALAR_FIELD(is_pushed_down);
+ 	COMPARE_SCALAR_FIELD(outerjoin_delayed);
+ 	COMPARE_BITMAPSET_FIELD(required_relids);
+ 	COMPARE_BITMAPSET_FIELD(nullable_relids);
+ 
+ 	/*
+ 	 * We ignore all the remaining fields, since they may not be set yet, and
+ 	 * should be derivable from the clause anyway.
+ 	 */
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _comparePlaceHolderVar(PlaceHolderVar *a, PlaceHolderVar *b)
+ {
+ 	/*
+ 	 * We intentionally do not compare phexpr.	Two PlaceHolderVars with the
+ 	 * same ID and levelsup should be considered equal even if the contained
+ 	 * expressions have managed to mutate to different states.	One way in
+ 	 * which that can happen is that initplan sublinks would get replaced by
+ 	 * differently-numbered Params when sublink folding is done.  (The end
+ 	 * result of such a situation would be some unreferenced initplans, which
+ 	 * is annoying but not really a problem.)
+ 	 *
+ 	 * COMPARE_NODE_FIELD(phexpr);
+ 	 */
+ 	COMPARE_BITMAPSET_FIELD(phrels);
+ 	COMPARE_SCALAR_FIELD(phid);
+ 	COMPARE_SCALAR_FIELD(phlevelsup);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareSpecialJoinInfo(SpecialJoinInfo *a, SpecialJoinInfo *b)
+ {
+ 	COMPARE_BITMAPSET_FIELD(min_lefthand);
+ 	COMPARE_BITMAPSET_FIELD(min_righthand);
+ 	COMPARE_BITMAPSET_FIELD(syn_lefthand);
+ 	COMPARE_BITMAPSET_FIELD(syn_righthand);
+ 	COMPARE_SCALAR_FIELD(jointype);
+ 	COMPARE_SCALAR_FIELD(lhs_strict);
+ 	COMPARE_SCALAR_FIELD(delay_upper_joins);
+ 	COMPARE_NODE_FIELD(join_quals);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAppendRelInfo(AppendRelInfo *a, AppendRelInfo *b)
+ {
+ 	COMPARE_SCALAR_FIELD(parent_relid);
+ 	COMPARE_SCALAR_FIELD(child_relid);
+ 	COMPARE_SCALAR_FIELD(parent_reltype);
+ 	COMPARE_SCALAR_FIELD(child_reltype);
+ 	COMPARE_NODE_FIELD(translated_vars);
+ 	COMPARE_SCALAR_FIELD(parent_reloid);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _comparePlaceHolderInfo(PlaceHolderInfo *a, PlaceHolderInfo *b)
+ {
+ 	COMPARE_SCALAR_FIELD(phid);
+ 	COMPARE_NODE_FIELD(ph_var);
+ 	COMPARE_BITMAPSET_FIELD(ph_eval_at);
+ 	COMPARE_BITMAPSET_FIELD(ph_needed);
+ 	COMPARE_SCALAR_FIELD(ph_width);
+ 
+ 	return 0;
+ }
+ 
+ 
+ /*
+  * Stuff from parsenodes.h
+  */
+ 
+ static int
+ _compareQuery(Query *a, Query *b)
+ {
+ 	COMPARE_SCALAR_FIELD(commandType);
+ 	COMPARE_SCALAR_FIELD(querySource);
+ 	COMPARE_SCALAR_FIELD(canSetTag);
+ 	COMPARE_NODE_FIELD(utilityStmt);
+ 	COMPARE_SCALAR_FIELD(resultRelation);
+ 	COMPARE_NODE_FIELD(intoClause);
+ 	COMPARE_SCALAR_FIELD(hasAggs);
+ 	COMPARE_SCALAR_FIELD(hasWindowFuncs);
+ 	COMPARE_SCALAR_FIELD(hasSubLinks);
+ 	COMPARE_SCALAR_FIELD(hasDistinctOn);
+ 	COMPARE_SCALAR_FIELD(hasRecursive);
+ 	COMPARE_SCALAR_FIELD(hasForUpdate);
+ 	COMPARE_NODE_FIELD(cteList);
+ 	COMPARE_NODE_FIELD(rtable);
+ 	COMPARE_NODE_FIELD(jointree);
+ 	COMPARE_NODE_FIELD(targetList);
+ 	COMPARE_NODE_FIELD(returningList);
+ 	COMPARE_NODE_FIELD(groupClause);
+ 	COMPARE_NODE_FIELD(havingQual);
+ 	COMPARE_NODE_FIELD(windowClause);
+ 	COMPARE_NODE_FIELD(distinctClause);
+ 	COMPARE_NODE_FIELD(sortClause);
+ 	COMPARE_NODE_FIELD(limitOffset);
+ 	COMPARE_NODE_FIELD(limitCount);
+ 	COMPARE_NODE_FIELD(rowMarks);
+ 	COMPARE_NODE_FIELD(setOperations);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareInsertStmt(InsertStmt *a, InsertStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_NODE_FIELD(cols);
+ 	COMPARE_NODE_FIELD(selectStmt);
+ 	COMPARE_NODE_FIELD(returningList);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDeleteStmt(DeleteStmt *a, DeleteStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_NODE_FIELD(usingClause);
+ 	COMPARE_NODE_FIELD(whereClause);
+ 	COMPARE_NODE_FIELD(returningList);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareUpdateStmt(UpdateStmt *a, UpdateStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_NODE_FIELD(targetList);
+ 	COMPARE_NODE_FIELD(whereClause);
+ 	COMPARE_NODE_FIELD(fromClause);
+ 	COMPARE_NODE_FIELD(returningList);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareSelectStmt(SelectStmt *a, SelectStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(distinctClause);
+ 	COMPARE_NODE_FIELD(intoClause);
+ 	COMPARE_NODE_FIELD(targetList);
+ 	COMPARE_NODE_FIELD(fromClause);
+ 	COMPARE_NODE_FIELD(whereClause);
+ 	COMPARE_NODE_FIELD(groupClause);
+ 	COMPARE_NODE_FIELD(havingClause);
+ 	COMPARE_NODE_FIELD(windowClause);
+ 	COMPARE_NODE_FIELD(withClause);
+ 	COMPARE_NODE_FIELD(valuesLists);
+ 	COMPARE_NODE_FIELD(sortClause);
+ 	COMPARE_NODE_FIELD(limitOffset);
+ 	COMPARE_NODE_FIELD(limitCount);
+ 	COMPARE_NODE_FIELD(lockingClause);
+ 	COMPARE_SCALAR_FIELD(op);
+ 	COMPARE_SCALAR_FIELD(all);
+ 	COMPARE_NODE_FIELD(larg);
+ 	COMPARE_NODE_FIELD(rarg);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareSetOperationStmt(SetOperationStmt *a, SetOperationStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(op);
+ 	COMPARE_SCALAR_FIELD(all);
+ 	COMPARE_NODE_FIELD(larg);
+ 	COMPARE_NODE_FIELD(rarg);
+ 	COMPARE_NODE_FIELD(colTypes);
+ 	COMPARE_NODE_FIELD(colTypmods);
+ 	COMPARE_NODE_FIELD(groupClauses);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterTableStmt(AlterTableStmt *a, AlterTableStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_NODE_FIELD(cmds);
+ 	COMPARE_SCALAR_FIELD(relkind);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterTableCmd(AlterTableCmd *a, AlterTableCmd *b)
+ {
+ 	COMPARE_SCALAR_FIELD(subtype);
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_NODE_FIELD(def);
+ 	COMPARE_NODE_FIELD(transform);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterDomainStmt(AlterDomainStmt *a, AlterDomainStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(subtype);
+ 	COMPARE_NODE_FIELD(typeName);
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_NODE_FIELD(def);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareGrantStmt(GrantStmt *a, GrantStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(is_grant);
+ 	COMPARE_SCALAR_FIELD(targtype);
+ 	COMPARE_SCALAR_FIELD(objtype);
+ 	COMPARE_NODE_FIELD(objects);
+ 	COMPARE_NODE_FIELD(privileges);
+ 	COMPARE_NODE_FIELD(grantees);
+ 	COMPARE_SCALAR_FIELD(grant_option);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _comparePrivGrantee(PrivGrantee *a, PrivGrantee *b)
+ {
+ 	COMPARE_STRING_FIELD(rolname);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareFuncWithArgs(FuncWithArgs *a, FuncWithArgs *b)
+ {
+ 	COMPARE_NODE_FIELD(funcname);
+ 	COMPARE_NODE_FIELD(funcargs);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAccessPriv(AccessPriv *a, AccessPriv *b)
+ {
+ 	COMPARE_STRING_FIELD(priv_name);
+ 	COMPARE_NODE_FIELD(cols);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareGrantRoleStmt(GrantRoleStmt *a, GrantRoleStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(granted_roles);
+ 	COMPARE_NODE_FIELD(grantee_roles);
+ 	COMPARE_SCALAR_FIELD(is_grant);
+ 	COMPARE_SCALAR_FIELD(admin_opt);
+ 	COMPARE_STRING_FIELD(grantor);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterDefaultPrivilegesStmt(AlterDefaultPrivilegesStmt *a, AlterDefaultPrivilegesStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(options);
+ 	COMPARE_NODE_FIELD(action);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDeclareCursorStmt(DeclareCursorStmt *a, DeclareCursorStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(portalname);
+ 	COMPARE_SCALAR_FIELD(options);
+ 	COMPARE_NODE_FIELD(query);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareClosePortalStmt(ClosePortalStmt *a, ClosePortalStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(portalname);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareClusterStmt(ClusterStmt *a, ClusterStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_STRING_FIELD(indexname);
+ 	COMPARE_SCALAR_FIELD(verbose);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCopyStmt(CopyStmt *a, CopyStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_NODE_FIELD(query);
+ 	COMPARE_NODE_FIELD(attlist);
+ 	COMPARE_SCALAR_FIELD(is_from);
+ 	COMPARE_STRING_FIELD(filename);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateStmt(CreateStmt *a, CreateStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_NODE_FIELD(tableElts);
+ 	COMPARE_NODE_FIELD(inhRelations);
+ 	COMPARE_NODE_FIELD(ofTypename);
+ 	COMPARE_NODE_FIELD(constraints);
+ 	COMPARE_NODE_FIELD(options);
+ 	COMPARE_SCALAR_FIELD(oncommit);
+ 	COMPARE_STRING_FIELD(tablespacename);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareInhRelation(InhRelation *a, InhRelation *b)
+ {
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_SCALAR_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDefineStmt(DefineStmt *a, DefineStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(kind);
+ 	COMPARE_SCALAR_FIELD(oldstyle);
+ 	COMPARE_NODE_FIELD(defnames);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_NODE_FIELD(definition);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDropStmt(DropStmt *a, DropStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(objects);
+ 	COMPARE_SCALAR_FIELD(removeType);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareTruncateStmt(TruncateStmt *a, TruncateStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(relations);
+ 	COMPARE_SCALAR_FIELD(restart_seqs);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCommentStmt(CommentStmt *a, CommentStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(objtype);
+ 	COMPARE_NODE_FIELD(objname);
+ 	COMPARE_NODE_FIELD(objargs);
+ 	COMPARE_STRING_FIELD(comment);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareFetchStmt(FetchStmt *a, FetchStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(direction);
+ 	COMPARE_SCALAR_FIELD(howMany);
+ 	COMPARE_STRING_FIELD(portalname);
+ 	COMPARE_SCALAR_FIELD(ismove);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareIndexStmt(IndexStmt *a, IndexStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(idxname);
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_STRING_FIELD(accessMethod);
+ 	COMPARE_STRING_FIELD(tableSpace);
+ 	COMPARE_NODE_FIELD(indexParams);
+ 	COMPARE_NODE_FIELD(options);
+ 	COMPARE_NODE_FIELD(whereClause);
+ 	COMPARE_NODE_FIELD(excludeOpNames);
+ 	COMPARE_SCALAR_FIELD(unique);
+ 	COMPARE_SCALAR_FIELD(primary);
+ 	COMPARE_SCALAR_FIELD(isconstraint);
+ 	COMPARE_SCALAR_FIELD(deferrable);
+ 	COMPARE_SCALAR_FIELD(initdeferred);
+ 	COMPARE_SCALAR_FIELD(concurrent);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateFunctionStmt(CreateFunctionStmt *a, CreateFunctionStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(replace);
+ 	COMPARE_NODE_FIELD(funcname);
+ 	COMPARE_NODE_FIELD(parameters);
+ 	COMPARE_NODE_FIELD(returnType);
+ 	COMPARE_NODE_FIELD(options);
+ 	COMPARE_NODE_FIELD(withClause);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareFunctionParameter(FunctionParameter *a, FunctionParameter *b)
+ {
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_NODE_FIELD(argType);
+ 	COMPARE_SCALAR_FIELD(mode);
+ 	COMPARE_NODE_FIELD(defexpr);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterFunctionStmt(AlterFunctionStmt *a, AlterFunctionStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(func);
+ 	COMPARE_NODE_FIELD(actions);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRemoveFuncStmt(RemoveFuncStmt *a, RemoveFuncStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(kind);
+ 	COMPARE_NODE_FIELD(name);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDoStmt(DoStmt *a, DoStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(args);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRemoveOpClassStmt(RemoveOpClassStmt *a, RemoveOpClassStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(opclassname);
+ 	COMPARE_STRING_FIELD(amname);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRemoveOpFamilyStmt(RemoveOpFamilyStmt *a, RemoveOpFamilyStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(opfamilyname);
+ 	COMPARE_STRING_FIELD(amname);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRenameStmt(RenameStmt *a, RenameStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(renameType);
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_NODE_FIELD(object);
+ 	COMPARE_NODE_FIELD(objarg);
+ 	COMPARE_STRING_FIELD(subname);
+ 	COMPARE_STRING_FIELD(newname);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterObjectSchemaStmt(AlterObjectSchemaStmt *a, AlterObjectSchemaStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(objectType);
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_NODE_FIELD(object);
+ 	COMPARE_NODE_FIELD(objarg);
+ 	COMPARE_STRING_FIELD(addname);
+ 	COMPARE_STRING_FIELD(newschema);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterOwnerStmt(AlterOwnerStmt *a, AlterOwnerStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(objectType);
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_NODE_FIELD(object);
+ 	COMPARE_NODE_FIELD(objarg);
+ 	COMPARE_STRING_FIELD(addname);
+ 	COMPARE_STRING_FIELD(newowner);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRuleStmt(RuleStmt *a, RuleStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_STRING_FIELD(rulename);
+ 	COMPARE_NODE_FIELD(whereClause);
+ 	COMPARE_SCALAR_FIELD(event);
+ 	COMPARE_SCALAR_FIELD(instead);
+ 	COMPARE_NODE_FIELD(actions);
+ 	COMPARE_SCALAR_FIELD(replace);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareNotifyStmt(NotifyStmt *a, NotifyStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(conditionname);
+ 	COMPARE_STRING_FIELD(payload);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareListenStmt(ListenStmt *a, ListenStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(conditionname);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareUnlistenStmt(UnlistenStmt *a, UnlistenStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(conditionname);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareTransactionStmt(TransactionStmt *a, TransactionStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(kind);
+ 	COMPARE_NODE_FIELD(options);
+ 	COMPARE_STRING_FIELD(gid);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCompositeTypeStmt(CompositeTypeStmt *a, CompositeTypeStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(typevar);
+ 	COMPARE_NODE_FIELD(coldeflist);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateEnumStmt(CreateEnumStmt *a, CreateEnumStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(typeName);
+ 	COMPARE_NODE_FIELD(vals);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareViewStmt(ViewStmt *a, ViewStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(view);
+ 	COMPARE_NODE_FIELD(aliases);
+ 	COMPARE_NODE_FIELD(query);
+ 	COMPARE_SCALAR_FIELD(replace);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareLoadStmt(LoadStmt *a, LoadStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(filename);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateDomainStmt(CreateDomainStmt *a, CreateDomainStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(domainname);
+ 	COMPARE_NODE_FIELD(typeName);
+ 	COMPARE_NODE_FIELD(constraints);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateOpClassStmt(CreateOpClassStmt *a, CreateOpClassStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(opclassname);
+ 	COMPARE_NODE_FIELD(opfamilyname);
+ 	COMPARE_STRING_FIELD(amname);
+ 	COMPARE_NODE_FIELD(datatype);
+ 	COMPARE_NODE_FIELD(items);
+ 	COMPARE_SCALAR_FIELD(isDefault);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateOpClassItem(CreateOpClassItem *a, CreateOpClassItem *b)
+ {
+ 	COMPARE_SCALAR_FIELD(itemtype);
+ 	COMPARE_NODE_FIELD(name);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_SCALAR_FIELD(number);
+ 	COMPARE_NODE_FIELD(class_args);
+ 	COMPARE_NODE_FIELD(storedtype);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateOpFamilyStmt(CreateOpFamilyStmt *a, CreateOpFamilyStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(opfamilyname);
+ 	COMPARE_STRING_FIELD(amname);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterOpFamilyStmt(AlterOpFamilyStmt *a, AlterOpFamilyStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(opfamilyname);
+ 	COMPARE_STRING_FIELD(amname);
+ 	COMPARE_SCALAR_FIELD(isDrop);
+ 	COMPARE_NODE_FIELD(items);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreatedbStmt(CreatedbStmt *a, CreatedbStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(dbname);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterDatabaseStmt(AlterDatabaseStmt *a, AlterDatabaseStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(dbname);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterDatabaseSetStmt(AlterDatabaseSetStmt *a, AlterDatabaseSetStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(dbname);
+ 	COMPARE_NODE_FIELD(setstmt);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDropdbStmt(DropdbStmt *a, DropdbStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(dbname);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareVacuumStmt(VacuumStmt *a, VacuumStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(options);
+ 	COMPARE_SCALAR_FIELD(freeze_min_age);
+ 	COMPARE_SCALAR_FIELD(freeze_table_age);
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_NODE_FIELD(va_cols);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareExplainStmt(ExplainStmt *a, ExplainStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(query);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateSeqStmt(CreateSeqStmt *a, CreateSeqStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(sequence);
+ 	COMPARE_NODE_FIELD(options);
+ 	COMPARE_SCALAR_FIELD(ownerId);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterSeqStmt(AlterSeqStmt *a, AlterSeqStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(sequence);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareVariableSetStmt(VariableSetStmt *a, VariableSetStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(kind);
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_SCALAR_FIELD(is_local);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareVariableShowStmt(VariableShowStmt *a, VariableShowStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(name);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDiscardStmt(DiscardStmt *a, DiscardStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(target);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateTableSpaceStmt(CreateTableSpaceStmt *a, CreateTableSpaceStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(tablespacename);
+ 	COMPARE_STRING_FIELD(owner);
+ 	COMPARE_STRING_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDropTableSpaceStmt(DropTableSpaceStmt *a, DropTableSpaceStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(tablespacename);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterTableSpaceOptionsStmt(AlterTableSpaceOptionsStmt *a,
+ 								 AlterTableSpaceOptionsStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(tablespacename);
+ 	COMPARE_NODE_FIELD(options);
+ 	COMPARE_SCALAR_FIELD(isReset);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateFdwStmt(CreateFdwStmt *a, CreateFdwStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(fdwname);
+ 	COMPARE_NODE_FIELD(validator);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterFdwStmt(AlterFdwStmt *a, AlterFdwStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(fdwname);
+ 	COMPARE_NODE_FIELD(validator);
+ 	COMPARE_SCALAR_FIELD(change_validator);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDropFdwStmt(DropFdwStmt *a, DropFdwStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(fdwname);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateForeignServerStmt(CreateForeignServerStmt *a, CreateForeignServerStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(servername);
+ 	COMPARE_STRING_FIELD(servertype);
+ 	COMPARE_STRING_FIELD(version);
+ 	COMPARE_STRING_FIELD(fdwname);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterForeignServerStmt(AlterForeignServerStmt *a, AlterForeignServerStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(servername);
+ 	COMPARE_STRING_FIELD(version);
+ 	COMPARE_NODE_FIELD(options);
+ 	COMPARE_SCALAR_FIELD(has_version);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDropForeignServerStmt(DropForeignServerStmt *a, DropForeignServerStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(servername);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateUserMappingStmt(CreateUserMappingStmt *a, CreateUserMappingStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(username);
+ 	COMPARE_STRING_FIELD(servername);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterUserMappingStmt(AlterUserMappingStmt *a, AlterUserMappingStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(username);
+ 	COMPARE_STRING_FIELD(servername);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDropUserMappingStmt(DropUserMappingStmt *a, DropUserMappingStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(username);
+ 	COMPARE_STRING_FIELD(servername);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateTrigStmt(CreateTrigStmt *a, CreateTrigStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(trigname);
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_NODE_FIELD(funcname);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_SCALAR_FIELD(row);
+ 	COMPARE_SCALAR_FIELD(timing);
+ 	COMPARE_SCALAR_FIELD(events);
+ 	COMPARE_NODE_FIELD(columns);
+ 	COMPARE_NODE_FIELD(whenClause);
+ 	COMPARE_SCALAR_FIELD(isconstraint);
+ 	COMPARE_SCALAR_FIELD(deferrable);
+ 	COMPARE_SCALAR_FIELD(initdeferred);
+ 	COMPARE_NODE_FIELD(constrrel);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDropPropertyStmt(DropPropertyStmt *a, DropPropertyStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_STRING_FIELD(property);
+ 	COMPARE_SCALAR_FIELD(removeType);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreatePLangStmt(CreatePLangStmt *a, CreatePLangStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(replace);
+ 	COMPARE_STRING_FIELD(plname);
+ 	COMPARE_NODE_FIELD(plhandler);
+ 	COMPARE_NODE_FIELD(plinline);
+ 	COMPARE_NODE_FIELD(plvalidator);
+ 	COMPARE_SCALAR_FIELD(pltrusted);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDropPLangStmt(DropPLangStmt *a, DropPLangStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(plname);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateRoleStmt(CreateRoleStmt *a, CreateRoleStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(stmt_type);
+ 	COMPARE_STRING_FIELD(role);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterRoleStmt(AlterRoleStmt *a, AlterRoleStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(role);
+ 	COMPARE_NODE_FIELD(options);
+ 	COMPARE_SCALAR_FIELD(action);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterRoleSetStmt(AlterRoleSetStmt *a, AlterRoleSetStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(role);
+ 	COMPARE_STRING_FIELD(database);
+ 	COMPARE_NODE_FIELD(setstmt);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDropRoleStmt(DropRoleStmt *a, DropRoleStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(roles);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareLockStmt(LockStmt *a, LockStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(relations);
+ 	COMPARE_SCALAR_FIELD(mode);
+ 	COMPARE_SCALAR_FIELD(nowait);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareConstraintsSetStmt(ConstraintsSetStmt *a, ConstraintsSetStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(constraints);
+ 	COMPARE_SCALAR_FIELD(deferred);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareReindexStmt(ReindexStmt *a, ReindexStmt *b)
+ {
+ 	COMPARE_SCALAR_FIELD(kind);
+ 	COMPARE_NODE_FIELD(relation);
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_SCALAR_FIELD(do_system);
+ 	COMPARE_SCALAR_FIELD(do_user);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateSchemaStmt(CreateSchemaStmt *a, CreateSchemaStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(schemaname);
+ 	COMPARE_STRING_FIELD(authid);
+ 	COMPARE_NODE_FIELD(schemaElts);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateConversionStmt(CreateConversionStmt *a, CreateConversionStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(conversion_name);
+ 	COMPARE_STRING_FIELD(for_encoding_name);
+ 	COMPARE_STRING_FIELD(to_encoding_name);
+ 	COMPARE_NODE_FIELD(func_name);
+ 	COMPARE_SCALAR_FIELD(def);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCreateCastStmt(CreateCastStmt *a, CreateCastStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(sourcetype);
+ 	COMPARE_NODE_FIELD(targettype);
+ 	COMPARE_NODE_FIELD(func);
+ 	COMPARE_SCALAR_FIELD(context);
+ 	COMPARE_SCALAR_FIELD(inout);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDropCastStmt(DropCastStmt *a, DropCastStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(sourcetype);
+ 	COMPARE_NODE_FIELD(targettype);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _comparePrepareStmt(PrepareStmt *a, PrepareStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_NODE_FIELD(argtypes);
+ 	COMPARE_NODE_FIELD(query);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareExecuteStmt(ExecuteStmt *a, ExecuteStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_NODE_FIELD(into);
+ 	COMPARE_NODE_FIELD(params);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDeallocateStmt(DeallocateStmt *a, DeallocateStmt *b)
+ {
+ 	COMPARE_STRING_FIELD(name);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDropOwnedStmt(DropOwnedStmt *a, DropOwnedStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(roles);
+ 	COMPARE_SCALAR_FIELD(behavior);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareReassignOwnedStmt(ReassignOwnedStmt *a, ReassignOwnedStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(roles);
+ 	COMPARE_NODE_FIELD(newrole);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterTSDictionaryStmt(AlterTSDictionaryStmt *a, AlterTSDictionaryStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(dictname);
+ 	COMPARE_NODE_FIELD(options);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAlterTSConfigurationStmt(AlterTSConfigurationStmt *a,
+ 							   AlterTSConfigurationStmt *b)
+ {
+ 	COMPARE_NODE_FIELD(cfgname);
+ 	COMPARE_NODE_FIELD(tokentype);
+ 	COMPARE_NODE_FIELD(dicts);
+ 	COMPARE_SCALAR_FIELD(override);
+ 	COMPARE_SCALAR_FIELD(replace);
+ 	COMPARE_SCALAR_FIELD(missing_ok);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAExpr(A_Expr *a, A_Expr *b)
+ {
+ 	COMPARE_SCALAR_FIELD(kind);
+ 	COMPARE_NODE_FIELD(name);
+ 	COMPARE_NODE_FIELD(lexpr);
+ 	COMPARE_NODE_FIELD(rexpr);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareColumnRef(ColumnRef *a, ColumnRef *b)
+ {
+ 	COMPARE_NODE_FIELD(fields);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareParamRef(ParamRef *a, ParamRef *b)
+ {
+ 	COMPARE_SCALAR_FIELD(number);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAConst(A_Const *a, A_Const *b)
+ {
+ 	int	ret;
+ 	if ((ret = compare(&a->val, &b->val)) != 0)	/* hack for in-line Value field */
+ 		return ret;
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareFuncCall(FuncCall *a, FuncCall *b)
+ {
+ 	COMPARE_NODE_FIELD(funcname);
+ 	COMPARE_NODE_FIELD(args);
+ 	COMPARE_NODE_FIELD(agg_order);
+ 	COMPARE_SCALAR_FIELD(agg_star);
+ 	COMPARE_SCALAR_FIELD(agg_distinct);
+ 	COMPARE_SCALAR_FIELD(func_variadic);
+ 	COMPARE_NODE_FIELD(over);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareAStar(A_Star *a, A_Star *b)
+ {
+ 	return 0;
+ }
+ 
+ static int
+ _compareAIndices(A_Indices *a, A_Indices *b)
+ {
+ 	COMPARE_NODE_FIELD(lidx);
+ 	COMPARE_NODE_FIELD(uidx);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareA_Indirection(A_Indirection *a, A_Indirection *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_NODE_FIELD(indirection);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareA_ArrayExpr(A_ArrayExpr *a, A_ArrayExpr *b)
+ {
+ 	COMPARE_NODE_FIELD(elements);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareResTarget(ResTarget *a, ResTarget *b)
+ {
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_NODE_FIELD(indirection);
+ 	COMPARE_NODE_FIELD(val);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareTypeName(TypeName *a, TypeName *b)
+ {
+ 	COMPARE_NODE_FIELD(names);
+ 	COMPARE_SCALAR_FIELD(typeOid);
+ 	COMPARE_SCALAR_FIELD(setof);
+ 	COMPARE_SCALAR_FIELD(pct_type);
+ 	COMPARE_NODE_FIELD(typmods);
+ 	COMPARE_SCALAR_FIELD(typemod);
+ 	COMPARE_NODE_FIELD(arrayBounds);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareTypeCast(TypeCast *a, TypeCast *b)
+ {
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_NODE_FIELD(typeName);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareSortBy(SortBy *a, SortBy *b)
+ {
+ 	COMPARE_NODE_FIELD(node);
+ 	COMPARE_SCALAR_FIELD(sortby_dir);
+ 	COMPARE_SCALAR_FIELD(sortby_nulls);
+ 	COMPARE_NODE_FIELD(useOp);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareWindowDef(WindowDef *a, WindowDef *b)
+ {
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_STRING_FIELD(refname);
+ 	COMPARE_NODE_FIELD(partitionClause);
+ 	COMPARE_NODE_FIELD(orderClause);
+ 	COMPARE_SCALAR_FIELD(frameOptions);
+ 	COMPARE_NODE_FIELD(startOffset);
+ 	COMPARE_NODE_FIELD(endOffset);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRangeSubselect(RangeSubselect *a, RangeSubselect *b)
+ {
+ 	COMPARE_NODE_FIELD(subquery);
+ 	COMPARE_NODE_FIELD(alias);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRangeFunction(RangeFunction *a, RangeFunction *b)
+ {
+ 	COMPARE_NODE_FIELD(funccallnode);
+ 	COMPARE_NODE_FIELD(alias);
+ 	COMPARE_NODE_FIELD(coldeflist);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareIndexElem(IndexElem *a, IndexElem *b)
+ {
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_NODE_FIELD(expr);
+ 	COMPARE_STRING_FIELD(indexcolname);
+ 	COMPARE_NODE_FIELD(opclass);
+ 	COMPARE_SCALAR_FIELD(ordering);
+ 	COMPARE_SCALAR_FIELD(nulls_ordering);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareColumnDef(ColumnDef *a, ColumnDef *b)
+ {
+ 	COMPARE_STRING_FIELD(colname);
+ 	COMPARE_NODE_FIELD(typeName);
+ 	COMPARE_SCALAR_FIELD(inhcount);
+ 	COMPARE_SCALAR_FIELD(is_local);
+ 	COMPARE_SCALAR_FIELD(is_not_null);
+ 	COMPARE_SCALAR_FIELD(storage);
+ 	COMPARE_NODE_FIELD(raw_default);
+ 	COMPARE_NODE_FIELD(cooked_default);
+ 	COMPARE_NODE_FIELD(constraints);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareConstraint(Constraint *a, Constraint *b)
+ {
+ 	COMPARE_SCALAR_FIELD(contype);
+ 	COMPARE_STRING_FIELD(conname);
+ 	COMPARE_SCALAR_FIELD(deferrable);
+ 	COMPARE_SCALAR_FIELD(initdeferred);
+ 	COMPARE_LOCATION_FIELD(location);
+ 	COMPARE_NODE_FIELD(raw_expr);
+ 	COMPARE_STRING_FIELD(cooked_expr);
+ 	COMPARE_NODE_FIELD(keys);
+ 	COMPARE_NODE_FIELD(exclusions);
+ 	COMPARE_NODE_FIELD(options);
+ 	COMPARE_STRING_FIELD(indexspace);
+ 	COMPARE_STRING_FIELD(access_method);
+ 	COMPARE_NODE_FIELD(where_clause);
+ 	COMPARE_NODE_FIELD(pktable);
+ 	COMPARE_NODE_FIELD(fk_attrs);
+ 	COMPARE_NODE_FIELD(pk_attrs);
+ 	COMPARE_SCALAR_FIELD(fk_matchtype);
+ 	COMPARE_SCALAR_FIELD(fk_upd_action);
+ 	COMPARE_SCALAR_FIELD(fk_del_action);
+ 	COMPARE_SCALAR_FIELD(skip_validation);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareDefElem(DefElem *a, DefElem *b)
+ {
+ 	COMPARE_STRING_FIELD(defnamespace);
+ 	COMPARE_STRING_FIELD(defname);
+ 	COMPARE_NODE_FIELD(arg);
+ 	COMPARE_SCALAR_FIELD(defaction);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareLockingClause(LockingClause *a, LockingClause *b)
+ {
+ 	COMPARE_NODE_FIELD(lockedRels);
+ 	COMPARE_SCALAR_FIELD(forUpdate);
+ 	COMPARE_SCALAR_FIELD(noWait);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRangeTblEntry(RangeTblEntry *a, RangeTblEntry *b)
+ {
+ 	COMPARE_SCALAR_FIELD(rtekind);
+ 	COMPARE_SCALAR_FIELD(relid);
+ 	COMPARE_NODE_FIELD(subquery);
+ 	COMPARE_SCALAR_FIELD(jointype);
+ 	COMPARE_NODE_FIELD(joinaliasvars);
+ 	COMPARE_NODE_FIELD(funcexpr);
+ 	COMPARE_NODE_FIELD(funccoltypes);
+ 	COMPARE_NODE_FIELD(funccoltypmods);
+ 	COMPARE_NODE_FIELD(values_lists);
+ 	COMPARE_STRING_FIELD(ctename);
+ 	COMPARE_SCALAR_FIELD(ctelevelsup);
+ 	COMPARE_SCALAR_FIELD(self_reference);
+ 	COMPARE_NODE_FIELD(ctecoltypes);
+ 	COMPARE_NODE_FIELD(ctecoltypmods);
+ 	COMPARE_NODE_FIELD(alias);
+ 	COMPARE_NODE_FIELD(eref);
+ 	COMPARE_SCALAR_FIELD(inh);
+ 	COMPARE_SCALAR_FIELD(inFromCl);
+ 	COMPARE_SCALAR_FIELD(requiredPerms);
+ 	COMPARE_SCALAR_FIELD(checkAsUser);
+ 	COMPARE_BITMAPSET_FIELD(selectedCols);
+ 	COMPARE_BITMAPSET_FIELD(modifiedCols);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareSortGroupClause(SortGroupClause *a, SortGroupClause *b)
+ {
+ 	COMPARE_SCALAR_FIELD(tleSortGroupRef);
+ 	COMPARE_SCALAR_FIELD(eqop);
+ 	COMPARE_SCALAR_FIELD(sortop);
+ 	COMPARE_SCALAR_FIELD(nulls_first);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareWindowClause(WindowClause *a, WindowClause *b)
+ {
+ 	COMPARE_STRING_FIELD(name);
+ 	COMPARE_STRING_FIELD(refname);
+ 	COMPARE_NODE_FIELD(partitionClause);
+ 	COMPARE_NODE_FIELD(orderClause);
+ 	COMPARE_SCALAR_FIELD(frameOptions);
+ 	COMPARE_NODE_FIELD(startOffset);
+ 	COMPARE_NODE_FIELD(endOffset);
+ 	COMPARE_SCALAR_FIELD(winref);
+ 	COMPARE_SCALAR_FIELD(copiedOrder);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareRowMarkClause(RowMarkClause *a, RowMarkClause *b)
+ {
+ 	COMPARE_SCALAR_FIELD(rti);
+ 	COMPARE_SCALAR_FIELD(forUpdate);
+ 	COMPARE_SCALAR_FIELD(noWait);
+ 	COMPARE_SCALAR_FIELD(pushedDown);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareWithClause(WithClause *a, WithClause *b)
+ {
+ 	COMPARE_NODE_FIELD(ctes);
+ 	COMPARE_SCALAR_FIELD(recursive);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareCommonTableExpr(CommonTableExpr *a, CommonTableExpr *b)
+ {
+ 	COMPARE_STRING_FIELD(ctename);
+ 	COMPARE_NODE_FIELD(aliascolnames);
+ 	COMPARE_NODE_FIELD(ctequery);
+ 	COMPARE_LOCATION_FIELD(location);
+ 	COMPARE_SCALAR_FIELD(cterecursive);
+ 	COMPARE_SCALAR_FIELD(cterefcount);
+ 	COMPARE_NODE_FIELD(ctecolnames);
+ 	COMPARE_NODE_FIELD(ctecoltypes);
+ 	COMPARE_NODE_FIELD(ctecoltypmods);
+ 
+ 	return 0;
+ }
+ 
+ static int
+ _compareXmlSerialize(XmlSerialize *a, XmlSerialize *b)
+ {
+ 	COMPARE_SCALAR_FIELD(xmloption);
+ 	COMPARE_NODE_FIELD(expr);
+ 	COMPARE_NODE_FIELD(typeName);
+ 	COMPARE_LOCATION_FIELD(location);
+ 
+ 	return 0;
+ }
+ 
+ /*
+  * Stuff from pg_list.h
+  */
+ 
+ static int
+ _compareList(List *a, List *b)
+ {
+ 	ListCell   *item_a;
+ 	ListCell   *item_b;
+ 	int		ret;
+ 
+ 	/*
+ 	 * Try to reject by simple scalar checks before grovelling through all the
+ 	 * list elements...
+ 	 */
+ 	COMPARE_SCALAR_FIELD(type);
+ 	COMPARE_SCALAR_FIELD(length);
+ 
+ 	/*
+ 	 * We place the switch outside the loop for the sake of efficiency; this
+ 	 * may not be worth doing...
+ 	 */
+ 	switch (a->type)
+ 	{
+ 		case T_List:
+ 			forboth(item_a, a, item_b, b)
+ 			{
+ 				ret = compare(lfirst(item_a), lfirst(item_b));
+ 				if (ret != 0)
+ 					return ret;
+ 			}
+ 			break;
+ 		case T_IntList:
+ 			forboth(item_a, a, item_b, b)
+ 			{
+ 				int	val_a = lfirst_int(item_a);
+ 				int	val_b = lfirst_int(item_b);
+ 
+ 				if (val_a < val_b)
+ 					return -1;
+ 				else if (val_a > val_b)
+ 					return 1;
+ 			}
+ 			break;
+ 		case T_OidList:
+ 			forboth(item_a, a, item_b, b)
+ 			{
+ 				Oid	val_a = lfirst_oid(item_a);
+ 				Oid	val_b = lfirst_oid(item_b);
+ 
+ 				if (val_a < val_b)
+ 					return -1;
+ 				else if (val_a > val_b)
+ 					return 1;
+ 			}
+ 			break;
+ 		default:
+ 			elog(ERROR, "unrecognized list node type: %d",
+ 				 (int) a->type);
+ 			return 0;		/* keep compiler quiet */
+ 	}
+ 
+ 	/*
+ 	 * If we got here, we should have run out of elements of both lists
+ 	 */
+ 	Assert(item_a == NULL);
+ 	Assert(item_b == NULL);
+ 
+ 	return 0;
+ }
+ 
+ /*
+  * Stuff from value.h
+  */
+ 
+ static int
+ _compareValue(Value *a, Value *b)
+ {
+ 	COMPARE_SCALAR_FIELD(type);
+ 
+ 	switch (a->type)
+ 	{
+ 		case T_Integer:
+ 			COMPARE_SCALAR_FIELD(val.ival);
+ 			break;
+ 		case T_Float:
+ 		case T_String:
+ 		case T_BitString:
+ 			COMPARE_STRING_FIELD(val.str);
+ 			break;
+ 		case T_Null:
+ 			/* nothing to do */
+ 			break;
+ 		default:
+ 			elog(ERROR, "unrecognized node type: %d", (int) a->type);
+ 			break;
+ 	}
+ 
+ 	return 0;
+ }
+ 
+ /*
+  * equal
+  *	  returns whether two nodes are equal
+  */
+ int
+ compare(void *a, void *b)
+ {
+ 	int		retval;
+ 
+ 	if (a == b)
+ 		return 0;
+ 
+ 	/*
+ 	 * note that a!=b, so only one of them can be NULL
+ 	 */
+ 	if (a == NULL || b == NULL)
+ 	{
+ 		if (a < b)
+ 			return -1;
+ 		else if (a > b)
+ 			return 1;
+ 	}
+ 
+ 	/*
+ 	 * are they the same type of nodes?
+ 	 */
+ 	if (nodeTag(a) < nodeTag(b))
+ 		return -1;
+ 	else if (nodeTag(a) > nodeTag(b))
+ 		return 1;
+ 
+ 	switch (nodeTag(a))
+ 	{
+ 			/*
+ 			 * PRIMITIVE NODES
+ 			 */
+ 		case T_Alias:
+ 			retval = _compareAlias(a, b);
+ 			break;
+ 		case T_RangeVar:
+ 			retval = _compareRangeVar(a, b);
+ 			break;
+ 		case T_IntoClause:
+ 			retval = _compareIntoClause(a, b);
+ 			break;
+ 		case T_Var:
+ 			retval = _compareVar(a, b);
+ 			break;
+ 		case T_Const:
+ 			retval = _compareConst(a, b);
+ 			break;
+ 		case T_Param:
+ 			retval = _compareParam(a, b);
+ 			break;
+ 		case T_Aggref:
+ 			retval = _compareAggref(a, b);
+ 			break;
+ 		case T_WindowFunc:
+ 			retval = _compareWindowFunc(a, b);
+ 			break;
+ 		case T_ArrayRef:
+ 			retval = _compareArrayRef(a, b);
+ 			break;
+ 		case T_FuncExpr:
+ 			retval = _compareFuncExpr(a, b);
+ 			break;
+ 		case T_NamedArgExpr:
+ 			retval = _compareNamedArgExpr(a, b);
+ 			break;
+ 		case T_OpExpr:
+ 			retval = _compareOpExpr(a, b);
+ 			break;
+ 		case T_DistinctExpr:
+ 			retval = _compareDistinctExpr(a, b);
+ 			break;
+ 		case T_ScalarArrayOpExpr:
+ 			retval = _compareScalarArrayOpExpr(a, b);
+ 			break;
+ 		case T_BoolExpr:
+ 			retval = _compareBoolExpr(a, b);
+ 			break;
+ 		case T_SubLink:
+ 			retval = _compareSubLink(a, b);
+ 			break;
+ 		case T_SubPlan:
+ 			retval = _compareSubPlan(a, b);
+ 			break;
+ 		case T_AlternativeSubPlan:
+ 			retval = _compareAlternativeSubPlan(a, b);
+ 			break;
+ 		case T_FieldSelect:
+ 			retval = _compareFieldSelect(a, b);
+ 			break;
+ 		case T_FieldStore:
+ 			retval = _compareFieldStore(a, b);
+ 			break;
+ 		case T_RelabelType:
+ 			retval = _compareRelabelType(a, b);
+ 			break;
+ 		case T_CoerceViaIO:
+ 			retval = _compareCoerceViaIO(a, b);
+ 			break;
+ 		case T_ArrayCoerceExpr:
+ 			retval = _compareArrayCoerceExpr(a, b);
+ 			break;
+ 		case T_ConvertRowtypeExpr:
+ 			retval = _compareConvertRowtypeExpr(a, b);
+ 			break;
+ 		case T_CaseExpr:
+ 			retval = _compareCaseExpr(a, b);
+ 			break;
+ 		case T_CaseWhen:
+ 			retval = _compareCaseWhen(a, b);
+ 			break;
+ 		case T_CaseTestExpr:
+ 			retval = _compareCaseTestExpr(a, b);
+ 			break;
+ 		case T_ArrayExpr:
+ 			retval = _compareArrayExpr(a, b);
+ 			break;
+ 		case T_RowExpr:
+ 			retval = _compareRowExpr(a, b);
+ 			break;
+ 		case T_RowCompareExpr:
+ 			retval = _compareRowCompareExpr(a, b);
+ 			break;
+ 		case T_CoalesceExpr:
+ 			retval = _compareCoalesceExpr(a, b);
+ 			break;
+ 		case T_MinMaxExpr:
+ 			retval = _compareMinMaxExpr(a, b);
+ 			break;
+ 		case T_XmlExpr:
+ 			retval = _compareXmlExpr(a, b);
+ 			break;
+ 		case T_NullIfExpr:
+ 			retval = _compareNullIfExpr(a, b);
+ 			break;
+ 		case T_NullTest:
+ 			retval = _compareNullTest(a, b);
+ 			break;
+ 		case T_BooleanTest:
+ 			retval = _compareBooleanTest(a, b);
+ 			break;
+ 		case T_CoerceToDomain:
+ 			retval = _compareCoerceToDomain(a, b);
+ 			break;
+ 		case T_CoerceToDomainValue:
+ 			retval = _compareCoerceToDomainValue(a, b);
+ 			break;
+ 		case T_SetToDefault:
+ 			retval = _compareSetToDefault(a, b);
+ 			break;
+ 		case T_CurrentOfExpr:
+ 			retval = _compareCurrentOfExpr(a, b);
+ 			break;
+ 		case T_TargetEntry:
+ 			retval = _compareTargetEntry(a, b);
+ 			break;
+ 		case T_RangeTblRef:
+ 			retval = _compareRangeTblRef(a, b);
+ 			break;
+ 		case T_FromExpr:
+ 			retval = _compareFromExpr(a, b);
+ 			break;
+ 		case T_JoinExpr:
+ 			retval = _compareJoinExpr(a, b);
+ 			break;
+ 
+ 			/*
+ 			 * RELATION NODES
+ 			 */
+ 		case T_PathKey:
+ 			retval = _comparePathKey(a, b);
+ 			break;
+ 		case T_RestrictInfo:
+ 			retval = _compareRestrictInfo(a, b);
+ 			break;
+ 		case T_PlaceHolderVar:
+ 			retval = _comparePlaceHolderVar(a, b);
+ 			break;
+ 		case T_SpecialJoinInfo:
+ 			retval = _compareSpecialJoinInfo(a, b);
+ 			break;
+ 		case T_AppendRelInfo:
+ 			retval = _compareAppendRelInfo(a, b);
+ 			break;
+ 		case T_PlaceHolderInfo:
+ 			retval = _comparePlaceHolderInfo(a, b);
+ 			break;
+ 
+ 		case T_List:
+ 		case T_IntList:
+ 		case T_OidList:
+ 			retval = _compareList(a, b);
+ 			break;
+ 
+ 		case T_Integer:
+ 		case T_Float:
+ 		case T_String:
+ 		case T_BitString:
+ 		case T_Null:
+ 			retval = _compareValue(a, b);
+ 			break;
+ 
+ 			/*
+ 			 * PARSE NODES
+ 			 */
+ 		case T_Query:
+ 			retval = _compareQuery(a, b);
+ 			break;
+ 		case T_InsertStmt:
+ 			retval = _compareInsertStmt(a, b);
+ 			break;
+ 		case T_DeleteStmt:
+ 			retval = _compareDeleteStmt(a, b);
+ 			break;
+ 		case T_UpdateStmt:
+ 			retval = _compareUpdateStmt(a, b);
+ 			break;
+ 		case T_SelectStmt:
+ 			retval = _compareSelectStmt(a, b);
+ 			break;
+ 		case T_SetOperationStmt:
+ 			retval = _compareSetOperationStmt(a, b);
+ 			break;
+ 		case T_AlterTableStmt:
+ 			retval = _compareAlterTableStmt(a, b);
+ 			break;
+ 		case T_AlterTableCmd:
+ 			retval = _compareAlterTableCmd(a, b);
+ 			break;
+ 		case T_AlterDomainStmt:
+ 			retval = _compareAlterDomainStmt(a, b);
+ 			break;
+ 		case T_GrantStmt:
+ 			retval = _compareGrantStmt(a, b);
+ 			break;
+ 		case T_GrantRoleStmt:
+ 			retval = _compareGrantRoleStmt(a, b);
+ 			break;
+ 		case T_AlterDefaultPrivilegesStmt:
+ 			retval = _compareAlterDefaultPrivilegesStmt(a, b);
+ 			break;
+ 		case T_DeclareCursorStmt:
+ 			retval = _compareDeclareCursorStmt(a, b);
+ 			break;
+ 		case T_ClosePortalStmt:
+ 			retval = _compareClosePortalStmt(a, b);
+ 			break;
+ 		case T_ClusterStmt:
+ 			retval = _compareClusterStmt(a, b);
+ 			break;
+ 		case T_CopyStmt:
+ 			retval = _compareCopyStmt(a, b);
+ 			break;
+ 		case T_CreateStmt:
+ 			retval = _compareCreateStmt(a, b);
+ 			break;
+ 		case T_InhRelation:
+ 			retval = _compareInhRelation(a, b);
+ 			break;
+ 		case T_DefineStmt:
+ 			retval = _compareDefineStmt(a, b);
+ 			break;
+ 		case T_DropStmt:
+ 			retval = _compareDropStmt(a, b);
+ 			break;
+ 		case T_TruncateStmt:
+ 			retval = _compareTruncateStmt(a, b);
+ 			break;
+ 		case T_CommentStmt:
+ 			retval = _compareCommentStmt(a, b);
+ 			break;
+ 		case T_FetchStmt:
+ 			retval = _compareFetchStmt(a, b);
+ 			break;
+ 		case T_IndexStmt:
+ 			retval = _compareIndexStmt(a, b);
+ 			break;
+ 		case T_CreateFunctionStmt:
+ 			retval = _compareCreateFunctionStmt(a, b);
+ 			break;
+ 		case T_FunctionParameter:
+ 			retval = _compareFunctionParameter(a, b);
+ 			break;
+ 		case T_AlterFunctionStmt:
+ 			retval = _compareAlterFunctionStmt(a, b);
+ 			break;
+ 		case T_RemoveFuncStmt:
+ 			retval = _compareRemoveFuncStmt(a, b);
+ 			break;
+ 		case T_DoStmt:
+ 			retval = _compareDoStmt(a, b);
+ 			break;
+ 		case T_RemoveOpClassStmt:
+ 			retval = _compareRemoveOpClassStmt(a, b);
+ 			break;
+ 		case T_RemoveOpFamilyStmt:
+ 			retval = _compareRemoveOpFamilyStmt(a, b);
+ 			break;
+ 		case T_RenameStmt:
+ 			retval = _compareRenameStmt(a, b);
+ 			break;
+ 		case T_AlterObjectSchemaStmt:
+ 			retval = _compareAlterObjectSchemaStmt(a, b);
+ 			break;
+ 		case T_AlterOwnerStmt:
+ 			retval = _compareAlterOwnerStmt(a, b);
+ 			break;
+ 		case T_RuleStmt:
+ 			retval = _compareRuleStmt(a, b);
+ 			break;
+ 		case T_NotifyStmt:
+ 			retval = _compareNotifyStmt(a, b);
+ 			break;
+ 		case T_ListenStmt:
+ 			retval = _compareListenStmt(a, b);
+ 			break;
+ 		case T_UnlistenStmt:
+ 			retval = _compareUnlistenStmt(a, b);
+ 			break;
+ 		case T_TransactionStmt:
+ 			retval = _compareTransactionStmt(a, b);
+ 			break;
+ 		case T_CompositeTypeStmt:
+ 			retval = _compareCompositeTypeStmt(a, b);
+ 			break;
+ 		case T_CreateEnumStmt:
+ 			retval = _compareCreateEnumStmt(a, b);
+ 			break;
+ 		case T_ViewStmt:
+ 			retval = _compareViewStmt(a, b);
+ 			break;
+ 		case T_LoadStmt:
+ 			retval = _compareLoadStmt(a, b);
+ 			break;
+ 		case T_CreateDomainStmt:
+ 			retval = _compareCreateDomainStmt(a, b);
+ 			break;
+ 		case T_CreateOpClassStmt:
+ 			retval = _compareCreateOpClassStmt(a, b);
+ 			break;
+ 		case T_CreateOpClassItem:
+ 			retval = _compareCreateOpClassItem(a, b);
+ 			break;
+ 		case T_CreateOpFamilyStmt:
+ 			retval = _compareCreateOpFamilyStmt(a, b);
+ 			break;
+ 		case T_AlterOpFamilyStmt:
+ 			retval = _compareAlterOpFamilyStmt(a, b);
+ 			break;
+ 		case T_CreatedbStmt:
+ 			retval = _compareCreatedbStmt(a, b);
+ 			break;
+ 		case T_AlterDatabaseStmt:
+ 			retval = _compareAlterDatabaseStmt(a, b);
+ 			break;
+ 		case T_AlterDatabaseSetStmt:
+ 			retval = _compareAlterDatabaseSetStmt(a, b);
+ 			break;
+ 		case T_DropdbStmt:
+ 			retval = _compareDropdbStmt(a, b);
+ 			break;
+ 		case T_VacuumStmt:
+ 			retval = _compareVacuumStmt(a, b);
+ 			break;
+ 		case T_ExplainStmt:
+ 			retval = _compareExplainStmt(a, b);
+ 			break;
+ 		case T_CreateSeqStmt:
+ 			retval = _compareCreateSeqStmt(a, b);
+ 			break;
+ 		case T_AlterSeqStmt:
+ 			retval = _compareAlterSeqStmt(a, b);
+ 			break;
+ 		case T_VariableSetStmt:
+ 			retval = _compareVariableSetStmt(a, b);
+ 			break;
+ 		case T_VariableShowStmt:
+ 			retval = _compareVariableShowStmt(a, b);
+ 			break;
+ 		case T_DiscardStmt:
+ 			retval = _compareDiscardStmt(a, b);
+ 			break;
+ 		case T_CreateTableSpaceStmt:
+ 			retval = _compareCreateTableSpaceStmt(a, b);
+ 			break;
+ 		case T_DropTableSpaceStmt:
+ 			retval = _compareDropTableSpaceStmt(a, b);
+ 			break;
+ 		case T_AlterTableSpaceOptionsStmt:
+ 			retval = _compareAlterTableSpaceOptionsStmt(a, b);
+ 			break;
+ 		case T_CreateFdwStmt:
+ 			retval = _compareCreateFdwStmt(a, b);
+ 			break;
+ 		case T_AlterFdwStmt:
+ 			retval = _compareAlterFdwStmt(a, b);
+ 			break;
+ 		case T_DropFdwStmt:
+ 			retval = _compareDropFdwStmt(a, b);
+ 			break;
+ 		case T_CreateForeignServerStmt:
+ 			retval = _compareCreateForeignServerStmt(a, b);
+ 			break;
+ 		case T_AlterForeignServerStmt:
+ 			retval = _compareAlterForeignServerStmt(a, b);
+ 			break;
+ 		case T_DropForeignServerStmt:
+ 			retval = _compareDropForeignServerStmt(a, b);
+ 			break;
+ 		case T_CreateUserMappingStmt:
+ 			retval = _compareCreateUserMappingStmt(a, b);
+ 			break;
+ 		case T_AlterUserMappingStmt:
+ 			retval = _compareAlterUserMappingStmt(a, b);
+ 			break;
+ 		case T_DropUserMappingStmt:
+ 			retval = _compareDropUserMappingStmt(a, b);
+ 			break;
+ 		case T_CreateTrigStmt:
+ 			retval = _compareCreateTrigStmt(a, b);
+ 			break;
+ 		case T_DropPropertyStmt:
+ 			retval = _compareDropPropertyStmt(a, b);
+ 			break;
+ 		case T_CreatePLangStmt:
+ 			retval = _compareCreatePLangStmt(a, b);
+ 			break;
+ 		case T_DropPLangStmt:
+ 			retval = _compareDropPLangStmt(a, b);
+ 			break;
+ 		case T_CreateRoleStmt:
+ 			retval = _compareCreateRoleStmt(a, b);
+ 			break;
+ 		case T_AlterRoleStmt:
+ 			retval = _compareAlterRoleStmt(a, b);
+ 			break;
+ 		case T_AlterRoleSetStmt:
+ 			retval = _compareAlterRoleSetStmt(a, b);
+ 			break;
+ 		case T_DropRoleStmt:
+ 			retval = _compareDropRoleStmt(a, b);
+ 			break;
+ 		case T_LockStmt:
+ 			retval = _compareLockStmt(a, b);
+ 			break;
+ 		case T_ConstraintsSetStmt:
+ 			retval = _compareConstraintsSetStmt(a, b);
+ 			break;
+ 		case T_ReindexStmt:
+ 			retval = _compareReindexStmt(a, b);
+ 			break;
+ 		case T_CheckPointStmt:
+ 			retval = 0;
+ 			break;
+ 		case T_CreateSchemaStmt:
+ 			retval = _compareCreateSchemaStmt(a, b);
+ 			break;
+ 		case T_CreateConversionStmt:
+ 			retval = _compareCreateConversionStmt(a, b);
+ 			break;
+ 		case T_CreateCastStmt:
+ 			retval = _compareCreateCastStmt(a, b);
+ 			break;
+ 		case T_DropCastStmt:
+ 			retval = _compareDropCastStmt(a, b);
+ 			break;
+ 		case T_PrepareStmt:
+ 			retval = _comparePrepareStmt(a, b);
+ 			break;
+ 		case T_ExecuteStmt:
+ 			retval = _compareExecuteStmt(a, b);
+ 			break;
+ 		case T_DeallocateStmt:
+ 			retval = _compareDeallocateStmt(a, b);
+ 			break;
+ 		case T_DropOwnedStmt:
+ 			retval = _compareDropOwnedStmt(a, b);
+ 			break;
+ 		case T_ReassignOwnedStmt:
+ 			retval = _compareReassignOwnedStmt(a, b);
+ 			break;
+ 		case T_AlterTSDictionaryStmt:
+ 			retval = _compareAlterTSDictionaryStmt(a, b);
+ 			break;
+ 		case T_AlterTSConfigurationStmt:
+ 			retval = _compareAlterTSConfigurationStmt(a, b);
+ 			break;
+ 
+ 		case T_A_Expr:
+ 			retval = _compareAExpr(a, b);
+ 			break;
+ 		case T_ColumnRef:
+ 			retval = _compareColumnRef(a, b);
+ 			break;
+ 		case T_ParamRef:
+ 			retval = _compareParamRef(a, b);
+ 			break;
+ 		case T_A_Const:
+ 			retval = _compareAConst(a, b);
+ 			break;
+ 		case T_FuncCall:
+ 			retval = _compareFuncCall(a, b);
+ 			break;
+ 		case T_A_Star:
+ 			retval = _compareAStar(a, b);
+ 			break;
+ 		case T_A_Indices:
+ 			retval = _compareAIndices(a, b);
+ 			break;
+ 		case T_A_Indirection:
+ 			retval = _compareA_Indirection(a, b);
+ 			break;
+ 		case T_A_ArrayExpr:
+ 			retval = _compareA_ArrayExpr(a, b);
+ 			break;
+ 		case T_ResTarget:
+ 			retval = _compareResTarget(a, b);
+ 			break;
+ 		case T_TypeCast:
+ 			retval = _compareTypeCast(a, b);
+ 			break;
+ 		case T_SortBy:
+ 			retval = _compareSortBy(a, b);
+ 			break;
+ 		case T_WindowDef:
+ 			retval = _compareWindowDef(a, b);
+ 			break;
+ 		case T_RangeSubselect:
+ 			retval = _compareRangeSubselect(a, b);
+ 			break;
+ 		case T_RangeFunction:
+ 			retval = _compareRangeFunction(a, b);
+ 			break;
+ 		case T_TypeName:
+ 			retval = _compareTypeName(a, b);
+ 			break;
+ 		case T_IndexElem:
+ 			retval = _compareIndexElem(a, b);
+ 			break;
+ 		case T_ColumnDef:
+ 			retval = _compareColumnDef(a, b);
+ 			break;
+ 		case T_Constraint:
+ 			retval = _compareConstraint(a, b);
+ 			break;
+ 		case T_DefElem:
+ 			retval = _compareDefElem(a, b);
+ 			break;
+ 		case T_LockingClause:
+ 			retval = _compareLockingClause(a, b);
+ 			break;
+ 		case T_RangeTblEntry:
+ 			retval = _compareRangeTblEntry(a, b);
+ 			break;
+ 		case T_SortGroupClause:
+ 			retval = _compareSortGroupClause(a, b);
+ 			break;
+ 		case T_WindowClause:
+ 			retval = _compareWindowClause(a, b);
+ 			break;
+ 		case T_RowMarkClause:
+ 			retval = _compareRowMarkClause(a, b);
+ 			break;
+ 		case T_WithClause:
+ 			retval = _compareWithClause(a, b);
+ 			break;
+ 		case T_CommonTableExpr:
+ 			retval = _compareCommonTableExpr(a, b);
+ 			break;
+ 		case T_PrivGrantee:
+ 			retval = _comparePrivGrantee(a, b);
+ 			break;
+ 		case T_FuncWithArgs:
+ 			retval = _compareFuncWithArgs(a, b);
+ 			break;
+ 		case T_AccessPriv:
+ 			retval = _compareAccessPriv(a, b);
+ 			break;
+ 		case T_XmlSerialize:
+ 			retval = _compareXmlSerialize(a, b);
+ 			break;
+ 
+ 		default:
+ 			elog(ERROR, "unrecognized node type: %d",
+ 				 (int) nodeTag(a));
+ 			retval = 0;		/* keep compiler quiet */
+ 			break;
+ 	}
+ 
+ 	return retval;
+ }
diff -dcrpN postgresql.1/src/backend/nodes/Makefile postgresql.2/src/backend/nodes/Makefile
*** postgresql.1/src/backend/nodes/Makefile	2010-10-26 16:37:27.000000000 +0200
--- postgresql.2/src/backend/nodes/Makefile	2010-10-19 10:50:12.000000000 +0200
*************** top_builddir = ../../..
*** 13,19 ****
  include $(top_builddir)/src/Makefile.global
  
  OBJS = nodeFuncs.o nodes.o list.o tree.o bitmapset.o tidbitmap.o \
!        copyfuncs.o equalfuncs.o makefuncs.o \
         outfuncs.o readfuncs.o print.o read.o params.o value.o
  
  include $(top_srcdir)/src/backend/common.mk
--- 13,19 ----
  include $(top_builddir)/src/Makefile.global
  
  OBJS = nodeFuncs.o nodes.o list.o tree.o bitmapset.o tidbitmap.o \
!        comparefuncs.o copyfuncs.o equalfuncs.o makefuncs.o \
         outfuncs.o readfuncs.o print.o read.o params.o value.o
  
  include $(top_srcdir)/src/backend/common.mk
diff -dcrpN postgresql.1/src/backend/optimizer/geqo/geqo_pool.c postgresql.2/src/backend/optimizer/geqo/geqo_pool.c
*** postgresql.1/src/backend/optimizer/geqo/geqo_pool.c	2010-10-26 16:44:28.000000000 +0200
--- postgresql.2/src/backend/optimizer/geqo/geqo_pool.c	2010-10-19 11:02:57.000000000 +0200
***************
*** 32,38 ****
  #include "optimizer/geqo_recombination.h"
  
  
! static int	compare(const void *arg1, const void *arg2);
  
  /*
   * alloc_pool
--- 32,38 ----
  #include "optimizer/geqo_recombination.h"
  
  
! static int	geqo_pool_compare(const void *arg1, const void *arg2);
  
  /*
   * alloc_pool
*************** random_init_pool(PlannerInfo *root, Pool
*** 110,124 ****
  void
  sort_pool(PlannerInfo *root, Pool *pool)
  {
! 	qsort(pool->data, pool->size, sizeof(Chromosome), compare);
  }
  
  /*
!  * compare
   *	 qsort comparison function for sort_pool
   */
  static int
! compare(const void *arg1, const void *arg2)
  {
  	const Chromosome *chromo1 = (const Chromosome *) arg1;
  	const Chromosome *chromo2 = (const Chromosome *) arg2;
--- 110,124 ----
  void
  sort_pool(PlannerInfo *root, Pool *pool)
  {
! 	qsort(pool->data, pool->size, sizeof(Chromosome), geqo_pool_compare);
  }
  
  /*
!  * geqo_pool_compare
   *	 qsort comparison function for sort_pool
   */
  static int
! geqo_pool_compare(const void *arg1, const void *arg2)
  {
  	const Chromosome *chromo1 = (const Chromosome *) arg1;
  	const Chromosome *chromo2 = (const Chromosome *) arg2;
diff -dcrpN postgresql.1/src/backend/utils/adt/datum.c postgresql.2/src/backend/utils/adt/datum.c
*** postgresql.1/src/backend/utils/adt/datum.c	2010-10-26 16:44:48.000000000 +0200
--- postgresql.2/src/backend/utils/adt/datum.c	2010-10-19 10:54:09.000000000 +0200
*************** datumIsEqual(Datum value1, Datum value2,
*** 206,208 ****
--- 206,258 ----
  	}
  	return res;
  }
+ 
+ /*-------------------------------------------------------------------------
+  * datumCompare
+  *
+  * Return -1/0/1 for less than/equal/greater than for two datums of the same type.
+  * This is for supporting RBTree search, not a logical comparison.
+  * The same NOTE applies as above in datumIsEqual.
+  *-------------------------------------------------------------------------
+  */
+ int
+ datumCompare(Datum value1, Datum value2, bool typByVal, int typLen)
+ {
+ 	if (typByVal)
+ 	{
+ 		/*
+ 		 * just compare the two datums. NOTE: just comparing "len" bytes will
+ 		 * not do the work, because we do not know how these bytes are aligned
+ 		 * inside the "Datum".	We assume instead that any given datatype is
+ 		 * consistent about how it fills extraneous bits in the Datum.
+ 		 */
+ 		if (value1 < value2)
+ 			return -1;
+ 		else if (value1 > value2)
+ 			return 1;
+ 		else
+ 			return 0;
+ 	}
+ 	else
+ 	{
+ 		Size		size1,
+ 					size2;
+ 		char	   *s1,
+ 				   *s2;
+ 
+ 		/*
+ 		 * Compare the bytes pointed by the pointers stored in the datums.
+ 		 * Do this only for datums of equal length to speed up the decision
+ 		 * of inequality.
+ 		 */
+ 		size1 = datumGetSize(value1, typByVal, typLen);
+ 		size2 = datumGetSize(value2, typByVal, typLen);
+ 		if (size1 < size2)
+ 			return -1;
+ 		else if (size1 > size2)
+ 			return 1;
+ 		s1 = (char *) DatumGetPointer(value1);
+ 		s2 = (char *) DatumGetPointer(value2);
+ 		return memcmp(s1, s2, size1);
+ 	}
+ }
diff -dcrpN postgresql.1/src/include/nodes/bitmapset.h postgresql.2/src/include/nodes/bitmapset.h
*** postgresql.1/src/include/nodes/bitmapset.h	2010-10-26 16:45:33.000000000 +0200
--- postgresql.2/src/include/nodes/bitmapset.h	2010-10-26 16:45:11.000000000 +0200
*************** typedef enum
*** 51,56 ****
--- 51,57 ----
  
  extern Bitmapset *bms_copy(const Bitmapset *a);
  extern bool bms_equal(const Bitmapset *a, const Bitmapset *b);
+ extern int bms_compare(const Bitmapset *a, const Bitmapset *b);
  extern Bitmapset *bms_make_singleton(int x);
  extern void bms_free(Bitmapset *a);
  
diff -dcrpN postgresql.1/src/include/nodes/nodes.h postgresql.2/src/include/nodes/nodes.h
*** postgresql.1/src/include/nodes/nodes.h	2010-10-26 16:45:56.000000000 +0200
--- postgresql.2/src/include/nodes/nodes.h	2010-10-19 10:51:24.000000000 +0200
*************** extern void *copyObject(void *obj);
*** 494,499 ****
--- 494,504 ----
   */
  extern bool equal(void *a, void *b);
  
+ /*
+  * nodes/comparefuncs.c
+  */
+ extern int compare(void *a, void *b);
+ 
  
  /*
   * Typedefs for identifying qualifier selectivities and plan costs as such.
diff -dcrpN postgresql.1/src/include/utils/datum.h postgresql.2/src/include/utils/datum.h
*** postgresql.1/src/include/utils/datum.h	2010-10-26 16:48:02.000000000 +0200
--- postgresql.2/src/include/utils/datum.h	2010-10-19 10:53:03.000000000 +0200
*************** extern void datumFree(Datum value, bool 
*** 46,49 ****
--- 46,58 ----
  extern bool datumIsEqual(Datum value1, Datum value2,
  			 bool typByVal, int typLen);
  
+ /*
+  * datumCompare
+  * return -1/0/+1 if for less/equal/greater than for two datums of the same type.
+  *
+  * XXX : See comments in the code for restrictions!
+  */
+ extern int datumCompare(Datum value1, Datum value2,
+ 			 bool typByVal, int typLen);
+ 
  #endif   /* DATUM_H */
Binary files postgresql.1/src/test/regress/gmon.out and postgresql.2/src/test/regress/gmon.out differ
Binary files postgresql.1/src/timezone/gmon.out and postgresql.2/src/timezone/gmon.out differ
#34Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Boszormenyi Zoltan (#33)
Re: plan time of MASSIVE partitioning ...

On 26.10.2010 18:34, Boszormenyi Zoltan wrote:

thank you very much for pointing me to dynahash, here is the
next version that finally seems to work.

Two patches are attached, the first is the absolute minimum for
making it work, this still has the Tree type for canon_pathkeys
and eq_classes got the same treatment as join_rel_list/join_rel_hash
has in the current sources: if the list grows larger than 32, a hash table
is created. It seems to be be enough for doing in for
get_eclass_for_sort_expr()
only, the other users of eq_classes aren't bothered by this change.

That's better, but can't you use dynahash for canon_pathkeys as well?

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

#35Boszormenyi Zoltan
zb@cybertec.at
In reply to: Heikki Linnakangas (#34)
1 attachment(s)
Re: plan time of MASSIVE partitioning ...

Heikki Linnakangas �rta:

On 26.10.2010 18:34, Boszormenyi Zoltan wrote:

thank you very much for pointing me to dynahash, here is the
next version that finally seems to work.

Two patches are attached, the first is the absolute minimum for
making it work, this still has the Tree type for canon_pathkeys
and eq_classes got the same treatment as join_rel_list/join_rel_hash
has in the current sources: if the list grows larger than 32, a hash
table
is created. It seems to be be enough for doing in for
get_eclass_for_sort_expr()
only, the other users of eq_classes aren't bothered by this change.

That's better, but can't you use dynahash for canon_pathkeys as well?

Here's a purely dynahash solution. It's somewhat slower than
the tree version, 0.45 vs 0.41 seconds in the cached case for the
previously posted test case.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

Attachments:

9.1-planner-speedup-v6.patchtext/x-patch; name=9.1-planner-speedup-v6.patchDownload
diff -durpN postgresql.orig/src/backend/optimizer/path/equivclass.c postgresql.1/src/backend/optimizer/path/equivclass.c
--- postgresql.orig/src/backend/optimizer/path/equivclass.c	2010-10-15 10:31:47.000000000 +0200
+++ postgresql.1/src/backend/optimizer/path/equivclass.c	2010-10-26 17:01:57.000000000 +0200
@@ -24,6 +24,7 @@
 #include "optimizer/planmain.h"
 #include "optimizer/prep.h"
 #include "optimizer/var.h"
+#include "utils/hsearch.h"
 #include "utils/lsyscache.h"
 
 
@@ -360,75 +361,103 @@ add_eq_member(EquivalenceClass *ec, Expr
 
 
 /*
- * get_eclass_for_sort_expr
- *	  Given an expression and opfamily info, find an existing equivalence
- *	  class it is a member of; if none, build a new single-member
- *	  EquivalenceClass for it.
- *
- * sortref is the SortGroupRef of the originating SortGroupClause, if any,
- * or zero if not.	(It should never be zero if the expression is volatile!)
- *
- * This can be used safely both before and after EquivalenceClass merging;
- * since it never causes merging it does not invalidate any existing ECs
- * or PathKeys.
- *
- * Note: opfamilies must be chosen consistently with the way
- * process_equivalence() would do; that is, generated from a mergejoinable
- * equality operator.  Else we might fail to detect valid equivalences,
- * generating poor (but not incorrect) plans.
+ * eq_classes_match - matching function for eq_classes_hash in PlannerInfo
  */
-EquivalenceClass *
-get_eclass_for_sort_expr(PlannerInfo *root,
-						 Expr *expr,
-						 Oid expr_datatype,
-						 List *opfamilies,
-						 Index sortref)
+static int
+eq_classes_match(const void *key1, const void *key2, Size keysize)
 {
-	EquivalenceClass *newec;
-	EquivalenceMember *newem;
+	EquivalenceClass *ec1 = (EquivalenceClass *) key1; /* this is in the hashtable */
+	EquivalenceClass *ec2 = (EquivalenceClass *) key2; /* this is the new matched entry */
 	ListCell   *lc1;
-	MemoryContext oldcontext;
+	ListCell   *lc2;
 
 	/*
-	 * Scan through the existing EquivalenceClasses for a match
+	 * Never match to a volatile EC, except when we are looking at another
+	 * reference to the same volatile SortGroupClause.
 	 */
-	foreach(lc1, root->eq_classes)
+	if (ec1->ec_has_volatile &&
+		(ec2->ec_sortref == 0 || ec2->ec_sortref != ec1->ec_sortref))
+		return 1;
+
+	if (!equal(ec1->ec_opfamilies, ec2->ec_opfamilies))
+		return 1;
+
+	foreach(lc1, ec1->ec_members)
 	{
-		EquivalenceClass *cur_ec = (EquivalenceClass *) lfirst(lc1);
-		ListCell   *lc2;
+		EquivalenceMember *em1 = (EquivalenceMember *) lfirst(lc1);
 
 		/*
-		 * Never match to a volatile EC, except when we are looking at another
-		 * reference to the same volatile SortGroupClause.
+		 * If below an outer join, don't match constants: they're not as
+		 * constant as they look.
 		 */
-		if (cur_ec->ec_has_volatile &&
-			(sortref == 0 || sortref != cur_ec->ec_sortref))
-			continue;
-
-		if (!equal(opfamilies, cur_ec->ec_opfamilies))
+		if (ec1->ec_below_outer_join &&
+			em1->em_is_const)
 			continue;
 
-		foreach(lc2, cur_ec->ec_members)
+		foreach(lc2, ec2->ec_members)
 		{
-			EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2);
-
-			/*
-			 * If below an outer join, don't match constants: they're not as
-			 * constant as they look.
-			 */
-			if (cur_ec->ec_below_outer_join &&
-				cur_em->em_is_const)
-				continue;
+			EquivalenceMember *em2 = (EquivalenceMember *) lfirst(lc2);
 
-			if (expr_datatype == cur_em->em_datatype &&
-				equal(expr, cur_em->em_expr))
-				return cur_ec;	/* Match! */
+			if (em1->em_datatype == em2->em_datatype &&
+				equal(em1->em_expr, em2->em_expr))
+				return 0;
 		}
 	}
 
+	return 1;
+}
+
+
+/*
+ * build_eq_classes_hash
+ *	Build the initial contents of PlannerInfo.eq_classes_hash
+ *	for faster search in PlannerInfo.eq_classes. This is used
+ *	to  make   get_eclass_for_sort_expr()  faster  for  large
+ *	inheritance trees.
+ */
+static void
+build_eq_classes_hash(PlannerInfo *root)
+{
+	MemoryContext	oldcontext;
+	HASHCTL	info;
+	
+	ListCell   *lc;
+
+	info.match = eq_classes_match;
+	info.hcxt = root->planner_cxt;
+	info.keysize = sizeof(Relids);
+	info.entrysize = sizeof(EquivalenceClass);
+
+	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+
+	root->eq_classes_hash = hash_create("eq_classes", 2048, &info,
+						HASH_ELEM | HASH_COMPARE | HASH_CONTEXT);
+
+	foreach(lc, root->eq_classes)
+	{
+		EquivalenceClass *ec = lfirst(lc);
+		bool	found;
+
+		hash_search_with_hash_value(root->eq_classes_hash, ec,
+								bms_hash_value(ec->ec_relids),
+								HASH_ENTER, &found);
+		Assert(!found);
+	}
+}
+
+
+static EquivalenceClass *
+build_new_ec(PlannerInfo *root,
+						 Expr *expr,
+						 Oid expr_datatype,
+						 List *opfamilies,
+						 Index sortref)
+{
+	MemoryContext	oldcontext;
+	EquivalenceClass *newec;
+	EquivalenceMember *newem;
+
 	/*
-	 * No match, so build a new single-member EC
-	 *
 	 * Here, we must be sure that we construct the EC in the right context. We
 	 * can assume, however, that the passed expr is long-lived.
 	 */
@@ -471,13 +500,132 @@ get_eclass_for_sort_expr(PlannerInfo *ro
 		}
 	}
 
-	root->eq_classes = lappend(root->eq_classes, newec);
-
 	MemoryContextSwitchTo(oldcontext);
 
 	return newec;
 }
 
+/*
+ * get_eclass_for_sort_expr
+ *	  Given an expression and opfamily info, find an existing equivalence
+ *	  class it is a member of; if none, build a new single-member
+ *	  EquivalenceClass for it.
+ *
+ * sortref is the SortGroupRef of the originating SortGroupClause, if any,
+ * or zero if not.	(It should never be zero if the expression is volatile!)
+ *
+ * This can be used safely both before and after EquivalenceClass merging;
+ * since it never causes merging it does not invalidate any existing ECs
+ * or PathKeys.
+ *
+ * Note: opfamilies must be chosen consistently with the way
+ * process_equivalence() would do; that is, generated from a mergejoinable
+ * equality operator.  Else we might fail to detect valid equivalences,
+ * generating poor (but not incorrect) plans.
+ */
+EquivalenceClass *
+get_eclass_for_sort_expr(PlannerInfo *root,
+						 Expr *expr,
+						 Oid expr_datatype,
+						 List *opfamilies,
+						 Index sortref)
+{
+	EquivalenceClass *newec;
+	ListCell   *lc1;
+	MemoryContext oldcontext;
+
+	if (root->eq_classes_hash == NULL &&
+		list_length(root->eq_classes) > 32)
+		build_eq_classes_hash(root);
+
+	if (root->eq_classes_hash == NULL)
+	{
+		/*
+		 * Scan through the existing EquivalenceClasses for a match
+		 */
+		foreach(lc1, root->eq_classes)
+		{
+			EquivalenceClass *cur_ec = (EquivalenceClass *) lfirst(lc1);
+			ListCell   *lc2;
+
+			/*
+			 * Never match to a volatile EC, except when we are looking at another
+			 * reference to the same volatile SortGroupClause.
+			 */
+			if (cur_ec->ec_has_volatile &&
+				(sortref == 0 || sortref != cur_ec->ec_sortref))
+				continue;
+
+			if (!equal(opfamilies, cur_ec->ec_opfamilies))
+				continue;
+
+			foreach(lc2, cur_ec->ec_members)
+			{
+				EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2);
+
+				/*
+				 * If below an outer join, don't match constants: they're not as
+				 * constant as they look.
+				 */
+				if (cur_ec->ec_below_outer_join &&
+					cur_em->em_is_const)
+					continue;
+
+				if (expr_datatype == cur_em->em_datatype &&
+					equal(expr, cur_em->em_expr))
+					return cur_ec;	/* Match! */
+			}
+		}
+
+		/*
+		 * No match, so build a new single-member EC
+		 */
+		newec = build_new_ec(root, expr, expr_datatype, opfamilies, sortref);
+
+		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+		root->eq_classes = lappend(root->eq_classes, newec);
+		MemoryContextSwitchTo(oldcontext);
+
+		return newec;
+	}
+	else
+	{
+		EquivalenceClass *ec_found;
+		bool	found;
+		uint32	hashval;
+
+		/*
+		 * Build the new single-member EC to match against in hash_search()
+		 */
+		newec = build_new_ec(root, expr, expr_datatype, opfamilies, sortref);
+
+		hashval = bms_hash_value(newec->ec_relids);
+
+		ec_found = hash_search_with_hash_value(root->eq_classes_hash, newec, hashval, HASH_FIND, &found);
+
+		if (found)
+		{
+			list_free(newec->ec_opfamilies);
+			list_free_deep(newec->ec_members);
+			bms_free(newec->ec_relids);
+			pfree(newec);
+			return ec_found;
+		}
+
+		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+
+		root->eq_classes = lappend(root->eq_classes, newec);
+
+		hash_search_with_hash_value(root->eq_classes_hash, newec, hashval, HASH_ENTER, &found);
+
+		Assert(!found);
+
+		MemoryContextSwitchTo(oldcontext);
+
+		return newec;
+	}
+}
+
 
 /*
  * generate_base_implied_equalities
diff -durpN postgresql.orig/src/backend/optimizer/path/pathkeys.c postgresql.1/src/backend/optimizer/path/pathkeys.c
--- postgresql.orig/src/backend/optimizer/path/pathkeys.c	2010-09-21 13:49:57.000000000 +0200
+++ postgresql.1/src/backend/optimizer/path/pathkeys.c	2010-10-28 11:19:35.000000000 +0200
@@ -17,6 +17,7 @@
  */
 #include "postgres.h"
 
+#include "access/hash.h"
 #include "access/skey.h"
 #include "catalog/pg_type.h"
 #include "nodes/makefuncs.h"
@@ -27,6 +28,7 @@
 #include "optimizer/paths.h"
 #include "optimizer/tlist.h"
 #include "parser/parsetree.h"
+#include "utils/hsearch.h"
 #include "utils/lsyscache.h"
 
 
@@ -72,6 +74,73 @@ makePathKey(EquivalenceClass *eclass, Oi
 }
 
 /*
+ * pk_hash
+ *		hashtable hash function for PlannerInfo.canon_pathkeys_hash
+ */
+static uint32
+pk_hash(const void *key, Size keysize)
+{
+	PathKey	   *pk = (PathKey *) key;
+	intptr_t	ptr = (intptr_t) pk->pk_eclass;
+
+	return DatumGetUInt32(hash_uint32((uint32)ptr));
+}
+
+/*
+ * pk_match
+ *		hashtable match function for PlannerInfo.canon_pathkeys_hash
+ */
+static int
+pk_match(const void *key1, const void *key2, Size keysize)
+{
+	PathKey	   *pk1 = (PathKey *)key1;
+	PathKey	   *pk2 = (PathKey *)key2;
+
+	if (pk1->pk_eclass == pk2->pk_eclass &&
+		pk1->pk_opfamily == pk2->pk_opfamily &&
+		pk1->pk_strategy == pk2->pk_strategy &&
+		pk1->pk_nulls_first == pk2->pk_nulls_first)
+		return 0;
+	return 1;
+}
+
+/*
+ * build_canonical_pathkey_hash
+ *
+ * Build PlannerInfo.canon_pathkeys_hash from canon_pathkeys list.
+ */
+static void
+build_canonical_pathkey_hash(PlannerInfo *root)
+{
+	MemoryContext	oldcontext;
+	HASHCTL		info;
+
+	ListCell   *lc;
+
+	info.hash = pk_hash;
+	info.match = pk_match;
+	info.hcxt = root->planner_cxt;
+	info.keysize = sizeof(EquivalenceClass *);
+	info.entrysize = sizeof(PathKey);
+
+	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+
+	root->canon_pathkeys_hash = hash_create("canon_pathkeys", 2048, &info,
+							HASH_FUNCTION | HASH_ELEM | HASH_COMPARE | HASH_CONTEXT);
+
+	foreach(lc, root->canon_pathkeys)
+	{
+		PathKey *pk = lfirst(lc);
+		bool	found;
+
+		hash_search_with_hash_value(root->canon_pathkeys_hash, pk,
+							DatumGetUInt32(hash_any((const unsigned char *) pk, sizeof(PathKey))),
+							HASH_ENTER, &found);
+		Assert(!found);
+	}
+}
+
+/*
  * make_canonical_pathkey
  *	  Given the parameters for a PathKey, find any pre-existing matching
  *	  pathkey in the query's list of "canonical" pathkeys.  Make a new
@@ -85,7 +154,7 @@ make_canonical_pathkey(PlannerInfo *root
 					   EquivalenceClass *eclass, Oid opfamily,
 					   int strategy, bool nulls_first)
 {
-	PathKey    *pk;
+	PathKey    *pk, *pk_found;
 	ListCell   *lc;
 	MemoryContext oldcontext;
 
@@ -93,26 +162,64 @@ make_canonical_pathkey(PlannerInfo *root
 	while (eclass->ec_merged)
 		eclass = eclass->ec_merged;
 
-	foreach(lc, root->canon_pathkeys)
+	if (root->canon_pathkeys_hash == NULL &&
+		list_length(root->canon_pathkeys) > 32)
+		build_canonical_pathkey_hash(root);
+
+	if (root->canon_pathkeys_hash == NULL)
 	{
-		pk = (PathKey *) lfirst(lc);
-		if (eclass == pk->pk_eclass &&
-			opfamily == pk->pk_opfamily &&
-			strategy == pk->pk_strategy &&
-			nulls_first == pk->pk_nulls_first)
-			return pk;
+		foreach(lc, root->canon_pathkeys)
+		{
+			pk = (PathKey *) lfirst(lc);
+			if (eclass == pk->pk_eclass &&
+				opfamily == pk->pk_opfamily &&
+				strategy == pk->pk_strategy &&
+				nulls_first == pk->pk_nulls_first)
+				return pk;
+		}
+
+		/*
+		 * Be sure canonical pathkeys are allocated in the main planning context.
+		 * Not an issue in normal planning, but it is for GEQO.
+		 */
+		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+
+		pk = makePathKey(eclass, opfamily, strategy, nulls_first);
+		root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
+
+		MemoryContextSwitchTo(oldcontext);
 	}
+	else
+	{
+		uint32	hashval;
+		bool	found;
 
-	/*
-	 * Be sure canonical pathkeys are allocated in the main planning context.
-	 * Not an issue in normal planning, but it is for GEQO.
-	 */
-	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+		/*
+		 * Be sure canonical pathkeys are allocated in the main planning context.
+		 * Not an issue in normal planning, but it is for GEQO.
+		 */
+		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
 
-	pk = makePathKey(eclass, opfamily, strategy, nulls_first);
-	root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
+		pk = makePathKey(eclass, opfamily, strategy, nulls_first);
 
-	MemoryContextSwitchTo(oldcontext);
+		hashval = DatumGetInt32(hash_any((const unsigned char *) pk, sizeof(PathKey)));
+
+
+		pk_found = hash_search_with_hash_value(root->canon_pathkeys_hash, pk, hashval, HASH_FIND, &found);
+
+		if (found)
+		{
+			pfree(pk);
+			pk = pk_found;
+		}
+		else
+		{
+			root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
+			hash_search_with_hash_value(root->canon_pathkeys_hash, pk, hashval, HASH_ENTER, &found);
+		}
+
+		MemoryContextSwitchTo(oldcontext);
+	}
 
 	return pk;
 }
diff -durpN postgresql.orig/src/backend/optimizer/plan/planmain.c postgresql.1/src/backend/optimizer/plan/planmain.c
--- postgresql.orig/src/backend/optimizer/plan/planmain.c	2010-10-08 11:04:23.000000000 +0200
+++ postgresql.1/src/backend/optimizer/plan/planmain.c	2010-10-28 09:35:37.000000000 +0200
@@ -27,6 +27,7 @@
 #include "optimizer/placeholder.h"
 #include "optimizer/planmain.h"
 #include "optimizer/tlist.h"
+#include "utils/hsearch.h"
 #include "utils/selfuncs.h"
 
 
@@ -118,6 +119,11 @@ query_planner(PlannerInfo *root, List *t
 		 * something like "SELECT 2+2 ORDER BY 1".
 		 */
 		root->canon_pathkeys = NIL;
+		if (root->canon_pathkeys_hash)
+		{
+			hash_destroy(root->canon_pathkeys_hash);
+			root->canon_pathkeys_hash = NULL;
+		}
 		root->query_pathkeys = canonicalize_pathkeys(root,
 													 root->query_pathkeys);
 		root->group_pathkeys = canonicalize_pathkeys(root,
@@ -146,6 +152,11 @@ query_planner(PlannerInfo *root, List *t
 	root->join_rel_level = NULL;
 	root->join_cur_level = 0;
 	root->canon_pathkeys = NIL;
+	if (root->canon_pathkeys_hash)
+	{
+		hash_destroy(root->canon_pathkeys_hash);
+		root->canon_pathkeys_hash = NULL;
+	}
 	root->left_join_clauses = NIL;
 	root->right_join_clauses = NIL;
 	root->full_join_clauses = NIL;
diff -durpN postgresql.orig/src/include/nodes/relation.h postgresql.1/src/include/nodes/relation.h
--- postgresql.orig/src/include/nodes/relation.h	2010-10-15 10:31:47.000000000 +0200
+++ postgresql.1/src/include/nodes/relation.h	2010-10-28 11:26:02.000000000 +0200
@@ -159,8 +159,10 @@ typedef struct PlannerInfo
 	List	   *cte_plan_ids;	/* per-CTE-item list of subplan IDs */
 
 	List	   *eq_classes;		/* list of active EquivalenceClasses */
+	struct HTAB *eq_classes_hash;	/* optional hashtable for equivalence classes */
 
 	List	   *canon_pathkeys; /* list of "canonical" PathKeys */
+	struct HTAB *canon_pathkeys_hash;	/* optional hashtable for "canonical" PathKeys */
 
 	List	   *left_join_clauses;		/* list of RestrictInfos for
 										 * mergejoinable outer join clauses
Binary files postgresql.orig/src/timezone/gmon.out and postgresql.1/src/timezone/gmon.out differ
#36Boszormenyi Zoltan
zb@cybertec.at
In reply to: Boszormenyi Zoltan (#35)
1 attachment(s)
Re: plan time of MASSIVE partitioning ...

Boszormenyi Zoltan �rta:

Heikki Linnakangas �rta:

On 26.10.2010 18:34, Boszormenyi Zoltan wrote:

thank you very much for pointing me to dynahash, here is the
next version that finally seems to work.

Two patches are attached, the first is the absolute minimum for
making it work, this still has the Tree type for canon_pathkeys
and eq_classes got the same treatment as join_rel_list/join_rel_hash
has in the current sources: if the list grows larger than 32, a hash
table
is created. It seems to be be enough for doing in for
get_eclass_for_sort_expr()
only, the other users of eq_classes aren't bothered by this change.

That's better, but can't you use dynahash for canon_pathkeys as well?

Here's a purely dynahash solution. It's somewhat slower than
the tree version, 0.45 vs 0.41 seconds in the cached case for the
previously posted test case.

And now in context diff, sorry for my affection towards unified diffs. :-)

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

Attachments:

9.1-planner-speedup-v6-ctxdiff.patchtext/x-patch; name=9.1-planner-speedup-v6-ctxdiff.patchDownload
diff -dcrpN postgresql.orig/src/backend/optimizer/path/equivclass.c postgresql.1/src/backend/optimizer/path/equivclass.c
*** postgresql.orig/src/backend/optimizer/path/equivclass.c	2010-10-15 10:31:47.000000000 +0200
--- postgresql.1/src/backend/optimizer/path/equivclass.c	2010-10-26 17:01:57.000000000 +0200
***************
*** 24,29 ****
--- 24,30 ----
  #include "optimizer/planmain.h"
  #include "optimizer/prep.h"
  #include "optimizer/var.h"
+ #include "utils/hsearch.h"
  #include "utils/lsyscache.h"
  
  
*************** add_eq_member(EquivalenceClass *ec, Expr
*** 360,434 ****
  
  
  /*
!  * get_eclass_for_sort_expr
!  *	  Given an expression and opfamily info, find an existing equivalence
!  *	  class it is a member of; if none, build a new single-member
!  *	  EquivalenceClass for it.
!  *
!  * sortref is the SortGroupRef of the originating SortGroupClause, if any,
!  * or zero if not.	(It should never be zero if the expression is volatile!)
!  *
!  * This can be used safely both before and after EquivalenceClass merging;
!  * since it never causes merging it does not invalidate any existing ECs
!  * or PathKeys.
!  *
!  * Note: opfamilies must be chosen consistently with the way
!  * process_equivalence() would do; that is, generated from a mergejoinable
!  * equality operator.  Else we might fail to detect valid equivalences,
!  * generating poor (but not incorrect) plans.
   */
! EquivalenceClass *
! get_eclass_for_sort_expr(PlannerInfo *root,
! 						 Expr *expr,
! 						 Oid expr_datatype,
! 						 List *opfamilies,
! 						 Index sortref)
  {
! 	EquivalenceClass *newec;
! 	EquivalenceMember *newem;
  	ListCell   *lc1;
! 	MemoryContext oldcontext;
  
  	/*
! 	 * Scan through the existing EquivalenceClasses for a match
  	 */
! 	foreach(lc1, root->eq_classes)
  	{
! 		EquivalenceClass *cur_ec = (EquivalenceClass *) lfirst(lc1);
! 		ListCell   *lc2;
  
  		/*
! 		 * Never match to a volatile EC, except when we are looking at another
! 		 * reference to the same volatile SortGroupClause.
  		 */
! 		if (cur_ec->ec_has_volatile &&
! 			(sortref == 0 || sortref != cur_ec->ec_sortref))
! 			continue;
! 
! 		if (!equal(opfamilies, cur_ec->ec_opfamilies))
  			continue;
  
! 		foreach(lc2, cur_ec->ec_members)
  		{
! 			EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2);
! 
! 			/*
! 			 * If below an outer join, don't match constants: they're not as
! 			 * constant as they look.
! 			 */
! 			if (cur_ec->ec_below_outer_join &&
! 				cur_em->em_is_const)
! 				continue;
  
! 			if (expr_datatype == cur_em->em_datatype &&
! 				equal(expr, cur_em->em_expr))
! 				return cur_ec;	/* Match! */
  		}
  	}
  
  	/*
- 	 * No match, so build a new single-member EC
- 	 *
  	 * Here, we must be sure that we construct the EC in the right context. We
  	 * can assume, however, that the passed expr is long-lived.
  	 */
--- 361,463 ----
  
  
  /*
!  * eq_classes_match - matching function for eq_classes_hash in PlannerInfo
   */
! static int
! eq_classes_match(const void *key1, const void *key2, Size keysize)
  {
! 	EquivalenceClass *ec1 = (EquivalenceClass *) key1; /* this is in the hashtable */
! 	EquivalenceClass *ec2 = (EquivalenceClass *) key2; /* this is the new matched entry */
  	ListCell   *lc1;
! 	ListCell   *lc2;
  
  	/*
! 	 * Never match to a volatile EC, except when we are looking at another
! 	 * reference to the same volatile SortGroupClause.
  	 */
! 	if (ec1->ec_has_volatile &&
! 		(ec2->ec_sortref == 0 || ec2->ec_sortref != ec1->ec_sortref))
! 		return 1;
! 
! 	if (!equal(ec1->ec_opfamilies, ec2->ec_opfamilies))
! 		return 1;
! 
! 	foreach(lc1, ec1->ec_members)
  	{
! 		EquivalenceMember *em1 = (EquivalenceMember *) lfirst(lc1);
  
  		/*
! 		 * If below an outer join, don't match constants: they're not as
! 		 * constant as they look.
  		 */
! 		if (ec1->ec_below_outer_join &&
! 			em1->em_is_const)
  			continue;
  
! 		foreach(lc2, ec2->ec_members)
  		{
! 			EquivalenceMember *em2 = (EquivalenceMember *) lfirst(lc2);
  
! 			if (em1->em_datatype == em2->em_datatype &&
! 				equal(em1->em_expr, em2->em_expr))
! 				return 0;
  		}
  	}
  
+ 	return 1;
+ }
+ 
+ 
+ /*
+  * build_eq_classes_hash
+  *	Build the initial contents of PlannerInfo.eq_classes_hash
+  *	for faster search in PlannerInfo.eq_classes. This is used
+  *	to  make   get_eclass_for_sort_expr()  faster  for  large
+  *	inheritance trees.
+  */
+ static void
+ build_eq_classes_hash(PlannerInfo *root)
+ {
+ 	MemoryContext	oldcontext;
+ 	HASHCTL	info;
+ 	
+ 	ListCell   *lc;
+ 
+ 	info.match = eq_classes_match;
+ 	info.hcxt = root->planner_cxt;
+ 	info.keysize = sizeof(Relids);
+ 	info.entrysize = sizeof(EquivalenceClass);
+ 
+ 	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 
+ 	root->eq_classes_hash = hash_create("eq_classes", 2048, &info,
+ 						HASH_ELEM | HASH_COMPARE | HASH_CONTEXT);
+ 
+ 	foreach(lc, root->eq_classes)
+ 	{
+ 		EquivalenceClass *ec = lfirst(lc);
+ 		bool	found;
+ 
+ 		hash_search_with_hash_value(root->eq_classes_hash, ec,
+ 								bms_hash_value(ec->ec_relids),
+ 								HASH_ENTER, &found);
+ 		Assert(!found);
+ 	}
+ }
+ 
+ 
+ static EquivalenceClass *
+ build_new_ec(PlannerInfo *root,
+ 						 Expr *expr,
+ 						 Oid expr_datatype,
+ 						 List *opfamilies,
+ 						 Index sortref)
+ {
+ 	MemoryContext	oldcontext;
+ 	EquivalenceClass *newec;
+ 	EquivalenceMember *newem;
+ 
  	/*
  	 * Here, we must be sure that we construct the EC in the right context. We
  	 * can assume, however, that the passed expr is long-lived.
  	 */
*************** get_eclass_for_sort_expr(PlannerInfo *ro
*** 471,483 ****
  		}
  	}
  
- 	root->eq_classes = lappend(root->eq_classes, newec);
- 
  	MemoryContextSwitchTo(oldcontext);
  
  	return newec;
  }
  
  
  /*
   * generate_base_implied_equalities
--- 500,631 ----
  		}
  	}
  
  	MemoryContextSwitchTo(oldcontext);
  
  	return newec;
  }
  
+ /*
+  * get_eclass_for_sort_expr
+  *	  Given an expression and opfamily info, find an existing equivalence
+  *	  class it is a member of; if none, build a new single-member
+  *	  EquivalenceClass for it.
+  *
+  * sortref is the SortGroupRef of the originating SortGroupClause, if any,
+  * or zero if not.	(It should never be zero if the expression is volatile!)
+  *
+  * This can be used safely both before and after EquivalenceClass merging;
+  * since it never causes merging it does not invalidate any existing ECs
+  * or PathKeys.
+  *
+  * Note: opfamilies must be chosen consistently with the way
+  * process_equivalence() would do; that is, generated from a mergejoinable
+  * equality operator.  Else we might fail to detect valid equivalences,
+  * generating poor (but not incorrect) plans.
+  */
+ EquivalenceClass *
+ get_eclass_for_sort_expr(PlannerInfo *root,
+ 						 Expr *expr,
+ 						 Oid expr_datatype,
+ 						 List *opfamilies,
+ 						 Index sortref)
+ {
+ 	EquivalenceClass *newec;
+ 	ListCell   *lc1;
+ 	MemoryContext oldcontext;
+ 
+ 	if (root->eq_classes_hash == NULL &&
+ 		list_length(root->eq_classes) > 32)
+ 		build_eq_classes_hash(root);
+ 
+ 	if (root->eq_classes_hash == NULL)
+ 	{
+ 		/*
+ 		 * Scan through the existing EquivalenceClasses for a match
+ 		 */
+ 		foreach(lc1, root->eq_classes)
+ 		{
+ 			EquivalenceClass *cur_ec = (EquivalenceClass *) lfirst(lc1);
+ 			ListCell   *lc2;
+ 
+ 			/*
+ 			 * Never match to a volatile EC, except when we are looking at another
+ 			 * reference to the same volatile SortGroupClause.
+ 			 */
+ 			if (cur_ec->ec_has_volatile &&
+ 				(sortref == 0 || sortref != cur_ec->ec_sortref))
+ 				continue;
+ 
+ 			if (!equal(opfamilies, cur_ec->ec_opfamilies))
+ 				continue;
+ 
+ 			foreach(lc2, cur_ec->ec_members)
+ 			{
+ 				EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2);
+ 
+ 				/*
+ 				 * If below an outer join, don't match constants: they're not as
+ 				 * constant as they look.
+ 				 */
+ 				if (cur_ec->ec_below_outer_join &&
+ 					cur_em->em_is_const)
+ 					continue;
+ 
+ 				if (expr_datatype == cur_em->em_datatype &&
+ 					equal(expr, cur_em->em_expr))
+ 					return cur_ec;	/* Match! */
+ 			}
+ 		}
+ 
+ 		/*
+ 		 * No match, so build a new single-member EC
+ 		 */
+ 		newec = build_new_ec(root, expr, expr_datatype, opfamilies, sortref);
+ 
+ 		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 		root->eq_classes = lappend(root->eq_classes, newec);
+ 		MemoryContextSwitchTo(oldcontext);
+ 
+ 		return newec;
+ 	}
+ 	else
+ 	{
+ 		EquivalenceClass *ec_found;
+ 		bool	found;
+ 		uint32	hashval;
+ 
+ 		/*
+ 		 * Build the new single-member EC to match against in hash_search()
+ 		 */
+ 		newec = build_new_ec(root, expr, expr_datatype, opfamilies, sortref);
+ 
+ 		hashval = bms_hash_value(newec->ec_relids);
+ 
+ 		ec_found = hash_search_with_hash_value(root->eq_classes_hash, newec, hashval, HASH_FIND, &found);
+ 
+ 		if (found)
+ 		{
+ 			list_free(newec->ec_opfamilies);
+ 			list_free_deep(newec->ec_members);
+ 			bms_free(newec->ec_relids);
+ 			pfree(newec);
+ 			return ec_found;
+ 		}
+ 
+ 		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 
+ 		root->eq_classes = lappend(root->eq_classes, newec);
+ 
+ 		hash_search_with_hash_value(root->eq_classes_hash, newec, hashval, HASH_ENTER, &found);
+ 
+ 		Assert(!found);
+ 
+ 		MemoryContextSwitchTo(oldcontext);
+ 
+ 		return newec;
+ 	}
+ }
+ 
  
  /*
   * generate_base_implied_equalities
diff -dcrpN postgresql.orig/src/backend/optimizer/path/pathkeys.c postgresql.1/src/backend/optimizer/path/pathkeys.c
*** postgresql.orig/src/backend/optimizer/path/pathkeys.c	2010-09-21 13:49:57.000000000 +0200
--- postgresql.1/src/backend/optimizer/path/pathkeys.c	2010-10-28 11:19:35.000000000 +0200
***************
*** 17,22 ****
--- 17,23 ----
   */
  #include "postgres.h"
  
+ #include "access/hash.h"
  #include "access/skey.h"
  #include "catalog/pg_type.h"
  #include "nodes/makefuncs.h"
***************
*** 27,32 ****
--- 28,34 ----
  #include "optimizer/paths.h"
  #include "optimizer/tlist.h"
  #include "parser/parsetree.h"
+ #include "utils/hsearch.h"
  #include "utils/lsyscache.h"
  
  
*************** makePathKey(EquivalenceClass *eclass, Oi
*** 72,77 ****
--- 74,146 ----
  }
  
  /*
+  * pk_hash
+  *		hashtable hash function for PlannerInfo.canon_pathkeys_hash
+  */
+ static uint32
+ pk_hash(const void *key, Size keysize)
+ {
+ 	PathKey	   *pk = (PathKey *) key;
+ 	intptr_t	ptr = (intptr_t) pk->pk_eclass;
+ 
+ 	return DatumGetUInt32(hash_uint32((uint32)ptr));
+ }
+ 
+ /*
+  * pk_match
+  *		hashtable match function for PlannerInfo.canon_pathkeys_hash
+  */
+ static int
+ pk_match(const void *key1, const void *key2, Size keysize)
+ {
+ 	PathKey	   *pk1 = (PathKey *)key1;
+ 	PathKey	   *pk2 = (PathKey *)key2;
+ 
+ 	if (pk1->pk_eclass == pk2->pk_eclass &&
+ 		pk1->pk_opfamily == pk2->pk_opfamily &&
+ 		pk1->pk_strategy == pk2->pk_strategy &&
+ 		pk1->pk_nulls_first == pk2->pk_nulls_first)
+ 		return 0;
+ 	return 1;
+ }
+ 
+ /*
+  * build_canonical_pathkey_hash
+  *
+  * Build PlannerInfo.canon_pathkeys_hash from canon_pathkeys list.
+  */
+ static void
+ build_canonical_pathkey_hash(PlannerInfo *root)
+ {
+ 	MemoryContext	oldcontext;
+ 	HASHCTL		info;
+ 
+ 	ListCell   *lc;
+ 
+ 	info.hash = pk_hash;
+ 	info.match = pk_match;
+ 	info.hcxt = root->planner_cxt;
+ 	info.keysize = sizeof(EquivalenceClass *);
+ 	info.entrysize = sizeof(PathKey);
+ 
+ 	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 
+ 	root->canon_pathkeys_hash = hash_create("canon_pathkeys", 2048, &info,
+ 							HASH_FUNCTION | HASH_ELEM | HASH_COMPARE | HASH_CONTEXT);
+ 
+ 	foreach(lc, root->canon_pathkeys)
+ 	{
+ 		PathKey *pk = lfirst(lc);
+ 		bool	found;
+ 
+ 		hash_search_with_hash_value(root->canon_pathkeys_hash, pk,
+ 							DatumGetUInt32(hash_any((const unsigned char *) pk, sizeof(PathKey))),
+ 							HASH_ENTER, &found);
+ 		Assert(!found);
+ 	}
+ }
+ 
+ /*
   * make_canonical_pathkey
   *	  Given the parameters for a PathKey, find any pre-existing matching
   *	  pathkey in the query's list of "canonical" pathkeys.  Make a new
*************** make_canonical_pathkey(PlannerInfo *root
*** 85,91 ****
  					   EquivalenceClass *eclass, Oid opfamily,
  					   int strategy, bool nulls_first)
  {
! 	PathKey    *pk;
  	ListCell   *lc;
  	MemoryContext oldcontext;
  
--- 154,160 ----
  					   EquivalenceClass *eclass, Oid opfamily,
  					   int strategy, bool nulls_first)
  {
! 	PathKey    *pk, *pk_found;
  	ListCell   *lc;
  	MemoryContext oldcontext;
  
*************** make_canonical_pathkey(PlannerInfo *root
*** 93,118 ****
  	while (eclass->ec_merged)
  		eclass = eclass->ec_merged;
  
! 	foreach(lc, root->canon_pathkeys)
  	{
! 		pk = (PathKey *) lfirst(lc);
! 		if (eclass == pk->pk_eclass &&
! 			opfamily == pk->pk_opfamily &&
! 			strategy == pk->pk_strategy &&
! 			nulls_first == pk->pk_nulls_first)
! 			return pk;
  	}
  
! 	/*
! 	 * Be sure canonical pathkeys are allocated in the main planning context.
! 	 * Not an issue in normal planning, but it is for GEQO.
! 	 */
! 	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
  
! 	pk = makePathKey(eclass, opfamily, strategy, nulls_first);
! 	root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
  
! 	MemoryContextSwitchTo(oldcontext);
  
  	return pk;
  }
--- 162,225 ----
  	while (eclass->ec_merged)
  		eclass = eclass->ec_merged;
  
! 	if (root->canon_pathkeys_hash == NULL &&
! 		list_length(root->canon_pathkeys) > 32)
! 		build_canonical_pathkey_hash(root);
! 
! 	if (root->canon_pathkeys_hash == NULL)
  	{
! 		foreach(lc, root->canon_pathkeys)
! 		{
! 			pk = (PathKey *) lfirst(lc);
! 			if (eclass == pk->pk_eclass &&
! 				opfamily == pk->pk_opfamily &&
! 				strategy == pk->pk_strategy &&
! 				nulls_first == pk->pk_nulls_first)
! 				return pk;
! 		}
! 
! 		/*
! 		 * Be sure canonical pathkeys are allocated in the main planning context.
! 		 * Not an issue in normal planning, but it is for GEQO.
! 		 */
! 		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
! 
! 		pk = makePathKey(eclass, opfamily, strategy, nulls_first);
! 		root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
! 
! 		MemoryContextSwitchTo(oldcontext);
  	}
+ 	else
+ 	{
+ 		uint32	hashval;
+ 		bool	found;
  
! 		/*
! 		 * Be sure canonical pathkeys are allocated in the main planning context.
! 		 * Not an issue in normal planning, but it is for GEQO.
! 		 */
! 		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
  
! 		pk = makePathKey(eclass, opfamily, strategy, nulls_first);
  
! 		hashval = DatumGetInt32(hash_any((const unsigned char *) pk, sizeof(PathKey)));
! 
! 
! 		pk_found = hash_search_with_hash_value(root->canon_pathkeys_hash, pk, hashval, HASH_FIND, &found);
! 
! 		if (found)
! 		{
! 			pfree(pk);
! 			pk = pk_found;
! 		}
! 		else
! 		{
! 			root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
! 			hash_search_with_hash_value(root->canon_pathkeys_hash, pk, hashval, HASH_ENTER, &found);
! 		}
! 
! 		MemoryContextSwitchTo(oldcontext);
! 	}
  
  	return pk;
  }
diff -dcrpN postgresql.orig/src/backend/optimizer/plan/planmain.c postgresql.1/src/backend/optimizer/plan/planmain.c
*** postgresql.orig/src/backend/optimizer/plan/planmain.c	2010-10-08 11:04:23.000000000 +0200
--- postgresql.1/src/backend/optimizer/plan/planmain.c	2010-10-28 09:35:37.000000000 +0200
***************
*** 27,32 ****
--- 27,33 ----
  #include "optimizer/placeholder.h"
  #include "optimizer/planmain.h"
  #include "optimizer/tlist.h"
+ #include "utils/hsearch.h"
  #include "utils/selfuncs.h"
  
  
*************** query_planner(PlannerInfo *root, List *t
*** 118,123 ****
--- 119,129 ----
  		 * something like "SELECT 2+2 ORDER BY 1".
  		 */
  		root->canon_pathkeys = NIL;
+ 		if (root->canon_pathkeys_hash)
+ 		{
+ 			hash_destroy(root->canon_pathkeys_hash);
+ 			root->canon_pathkeys_hash = NULL;
+ 		}
  		root->query_pathkeys = canonicalize_pathkeys(root,
  													 root->query_pathkeys);
  		root->group_pathkeys = canonicalize_pathkeys(root,
*************** query_planner(PlannerInfo *root, List *t
*** 146,151 ****
--- 152,162 ----
  	root->join_rel_level = NULL;
  	root->join_cur_level = 0;
  	root->canon_pathkeys = NIL;
+ 	if (root->canon_pathkeys_hash)
+ 	{
+ 		hash_destroy(root->canon_pathkeys_hash);
+ 		root->canon_pathkeys_hash = NULL;
+ 	}
  	root->left_join_clauses = NIL;
  	root->right_join_clauses = NIL;
  	root->full_join_clauses = NIL;
diff -dcrpN postgresql.orig/src/include/nodes/relation.h postgresql.1/src/include/nodes/relation.h
*** postgresql.orig/src/include/nodes/relation.h	2010-10-15 10:31:47.000000000 +0200
--- postgresql.1/src/include/nodes/relation.h	2010-10-28 11:26:02.000000000 +0200
*************** typedef struct PlannerInfo
*** 159,166 ****
--- 159,168 ----
  	List	   *cte_plan_ids;	/* per-CTE-item list of subplan IDs */
  
  	List	   *eq_classes;		/* list of active EquivalenceClasses */
+ 	struct HTAB *eq_classes_hash;	/* optional hashtable for equivalence classes */
  
  	List	   *canon_pathkeys; /* list of "canonical" PathKeys */
+ 	struct HTAB *canon_pathkeys_hash;	/* optional hashtable for "canonical" PathKeys */
  
  	List	   *left_join_clauses;		/* list of RestrictInfos for
  										 * mergejoinable outer join clauses
Binary files postgresql.orig/src/timezone/gmon.out and postgresql.1/src/timezone/gmon.out differ
#37Boszormenyi Zoltan
zb@cybertec.at
In reply to: Boszormenyi Zoltan (#36)
1 attachment(s)
Re: plan time of MASSIVE partitioning ...

Boszormenyi Zoltan �rta:

Boszormenyi Zoltan �rta:

Heikki Linnakangas �rta:

On 26.10.2010 18:34, Boszormenyi Zoltan wrote:

thank you very much for pointing me to dynahash, here is the
next version that finally seems to work.

Two patches are attached, the first is the absolute minimum for
making it work, this still has the Tree type for canon_pathkeys
and eq_classes got the same treatment as join_rel_list/join_rel_hash
has in the current sources: if the list grows larger than 32, a hash
table
is created. It seems to be be enough for doing in for
get_eclass_for_sort_expr()
only, the other users of eq_classes aren't bothered by this change.

That's better, but can't you use dynahash for canon_pathkeys as well?

Here's a purely dynahash solution. It's somewhat slower than
the tree version, 0.45 vs 0.41 seconds in the cached case for the
previously posted test case.

And now in context diff, sorry for my affection towards unified diffs. :-)

A little better version, no need for the heavy hash_any, hash_uint32
on the lower 32 bits on pk_eclass is enough. The profiling runtime
is now 0.42 seconds vs the previous 0.41 seconds for the tree version.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

Attachments:

9.1-planner-speedup-v7-ctxdiff.patchtext/x-patch; name=9.1-planner-speedup-v7-ctxdiff.patchDownload
diff -dcrpN postgresql.orig/src/backend/optimizer/path/equivclass.c postgresql.1/src/backend/optimizer/path/equivclass.c
*** postgresql.orig/src/backend/optimizer/path/equivclass.c	2010-10-15 10:31:47.000000000 +0200
--- postgresql.1/src/backend/optimizer/path/equivclass.c	2010-10-28 12:37:47.000000000 +0200
***************
*** 24,29 ****
--- 24,30 ----
  #include "optimizer/planmain.h"
  #include "optimizer/prep.h"
  #include "optimizer/var.h"
+ #include "utils/hsearch.h"
  #include "utils/lsyscache.h"
  
  
*************** add_eq_member(EquivalenceClass *ec, Expr
*** 360,434 ****
  
  
  /*
!  * get_eclass_for_sort_expr
!  *	  Given an expression and opfamily info, find an existing equivalence
!  *	  class it is a member of; if none, build a new single-member
!  *	  EquivalenceClass for it.
!  *
!  * sortref is the SortGroupRef of the originating SortGroupClause, if any,
!  * or zero if not.	(It should never be zero if the expression is volatile!)
!  *
!  * This can be used safely both before and after EquivalenceClass merging;
!  * since it never causes merging it does not invalidate any existing ECs
!  * or PathKeys.
!  *
!  * Note: opfamilies must be chosen consistently with the way
!  * process_equivalence() would do; that is, generated from a mergejoinable
!  * equality operator.  Else we might fail to detect valid equivalences,
!  * generating poor (but not incorrect) plans.
   */
! EquivalenceClass *
! get_eclass_for_sort_expr(PlannerInfo *root,
! 						 Expr *expr,
! 						 Oid expr_datatype,
! 						 List *opfamilies,
! 						 Index sortref)
  {
! 	EquivalenceClass *newec;
! 	EquivalenceMember *newem;
  	ListCell   *lc1;
! 	MemoryContext oldcontext;
  
  	/*
! 	 * Scan through the existing EquivalenceClasses for a match
  	 */
! 	foreach(lc1, root->eq_classes)
  	{
! 		EquivalenceClass *cur_ec = (EquivalenceClass *) lfirst(lc1);
! 		ListCell   *lc2;
  
  		/*
! 		 * Never match to a volatile EC, except when we are looking at another
! 		 * reference to the same volatile SortGroupClause.
  		 */
! 		if (cur_ec->ec_has_volatile &&
! 			(sortref == 0 || sortref != cur_ec->ec_sortref))
! 			continue;
! 
! 		if (!equal(opfamilies, cur_ec->ec_opfamilies))
  			continue;
  
! 		foreach(lc2, cur_ec->ec_members)
  		{
! 			EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2);
! 
! 			/*
! 			 * If below an outer join, don't match constants: they're not as
! 			 * constant as they look.
! 			 */
! 			if (cur_ec->ec_below_outer_join &&
! 				cur_em->em_is_const)
! 				continue;
  
! 			if (expr_datatype == cur_em->em_datatype &&
! 				equal(expr, cur_em->em_expr))
! 				return cur_ec;	/* Match! */
  		}
  	}
  
  	/*
- 	 * No match, so build a new single-member EC
- 	 *
  	 * Here, we must be sure that we construct the EC in the right context. We
  	 * can assume, however, that the passed expr is long-lived.
  	 */
--- 361,463 ----
  
  
  /*
!  * eq_classes_match - matching function for eq_classes_hash in PlannerInfo
   */
! static int
! eq_classes_match(const void *key1, const void *key2, Size keysize)
  {
! 	EquivalenceClass *ec1 = (EquivalenceClass *) key1; /* this is in the hashtable */
! 	EquivalenceClass *ec2 = (EquivalenceClass *) key2; /* this is the new matched entry */
  	ListCell   *lc1;
! 	ListCell   *lc2;
  
  	/*
! 	 * Never match to a volatile EC, except when we are looking at another
! 	 * reference to the same volatile SortGroupClause.
  	 */
! 	if (ec1->ec_has_volatile &&
! 		(ec2->ec_sortref == 0 || ec2->ec_sortref != ec1->ec_sortref))
! 		return 1;
! 
! 	if (!equal(ec1->ec_opfamilies, ec2->ec_opfamilies))
! 		return 1;
! 
! 	foreach(lc1, ec1->ec_members)
  	{
! 		EquivalenceMember *em1 = (EquivalenceMember *) lfirst(lc1);
  
  		/*
! 		 * If below an outer join, don't match constants: they're not as
! 		 * constant as they look.
  		 */
! 		if (ec1->ec_below_outer_join &&
! 			em1->em_is_const)
  			continue;
  
! 		foreach(lc2, ec2->ec_members)
  		{
! 			EquivalenceMember *em2 = (EquivalenceMember *) lfirst(lc2);
  
! 			if (em1->em_datatype == em2->em_datatype &&
! 				equal(em1->em_expr, em2->em_expr))
! 				return 0;
  		}
  	}
  
+ 	return 1;
+ }
+ 
+ 
+ /*
+  * build_eq_classes_hash
+  *	Build the initial contents of PlannerInfo.eq_classes_hash
+  *	for faster search in PlannerInfo.eq_classes. This is used
+  *	to  make   get_eclass_for_sort_expr()  faster  for  large
+  *	inheritance trees.
+  */
+ static void
+ build_eq_classes_hash(PlannerInfo *root)
+ {
+ 	MemoryContext	oldcontext;
+ 	HASHCTL	info;
+ 	
+ 	ListCell   *lc;
+ 
+ 	info.match = eq_classes_match;
+ 	info.hcxt = root->planner_cxt;
+ 	info.keysize = sizeof(Relids);
+ 	info.entrysize = sizeof(EquivalenceClass);
+ 
+ 	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 
+ 	root->eq_classes_hash = hash_create("eq_classes", 2048, &info,
+ 						HASH_ELEM | HASH_COMPARE | HASH_CONTEXT);
+ 
+ 	foreach(lc, root->eq_classes)
+ 	{
+ 		EquivalenceClass *ec = lfirst(lc);
+ 		bool	found;
+ 
+ 		hash_search_with_hash_value(root->eq_classes_hash, ec,
+ 								bms_hash_value(ec->ec_relids),
+ 								HASH_ENTER, &found);
+ 		Assert(!found);
+ 	}
+ }
+ 
+ 
+ static EquivalenceClass *
+ build_new_ec(PlannerInfo *root,
+ 						 Expr *expr,
+ 						 Oid expr_datatype,
+ 						 List *opfamilies,
+ 						 Index sortref)
+ {
+ 	MemoryContext	oldcontext;
+ 	EquivalenceClass *newec;
+ 	EquivalenceMember *newem;
+ 
  	/*
  	 * Here, we must be sure that we construct the EC in the right context. We
  	 * can assume, however, that the passed expr is long-lived.
  	 */
*************** get_eclass_for_sort_expr(PlannerInfo *ro
*** 471,483 ****
  		}
  	}
  
- 	root->eq_classes = lappend(root->eq_classes, newec);
- 
  	MemoryContextSwitchTo(oldcontext);
  
  	return newec;
  }
  
  
  /*
   * generate_base_implied_equalities
--- 500,631 ----
  		}
  	}
  
  	MemoryContextSwitchTo(oldcontext);
  
  	return newec;
  }
  
+ /*
+  * get_eclass_for_sort_expr
+  *	  Given an expression and opfamily info, find an existing equivalence
+  *	  class it is a member of; if none, build a new single-member
+  *	  EquivalenceClass for it.
+  *
+  * sortref is the SortGroupRef of the originating SortGroupClause, if any,
+  * or zero if not.	(It should never be zero if the expression is volatile!)
+  *
+  * This can be used safely both before and after EquivalenceClass merging;
+  * since it never causes merging it does not invalidate any existing ECs
+  * or PathKeys.
+  *
+  * Note: opfamilies must be chosen consistently with the way
+  * process_equivalence() would do; that is, generated from a mergejoinable
+  * equality operator.  Else we might fail to detect valid equivalences,
+  * generating poor (but not incorrect) plans.
+  */
+ EquivalenceClass *
+ get_eclass_for_sort_expr(PlannerInfo *root,
+ 						 Expr *expr,
+ 						 Oid expr_datatype,
+ 						 List *opfamilies,
+ 						 Index sortref)
+ {
+ 	EquivalenceClass *newec;
+ 	ListCell   *lc1;
+ 	MemoryContext oldcontext;
+ 
+ 	if (root->eq_classes_hash == NULL &&
+ 		list_length(root->eq_classes) > 32)
+ 		build_eq_classes_hash(root);
+ 
+ 	if (root->eq_classes_hash == NULL)
+ 	{
+ 		/*
+ 		 * Scan through the existing EquivalenceClasses for a match
+ 		 */
+ 		foreach(lc1, root->eq_classes)
+ 		{
+ 			EquivalenceClass *cur_ec = (EquivalenceClass *) lfirst(lc1);
+ 			ListCell   *lc2;
+ 
+ 			/*
+ 			 * Never match to a volatile EC, except when we are looking at another
+ 			 * reference to the same volatile SortGroupClause.
+ 			 */
+ 			if (cur_ec->ec_has_volatile &&
+ 				(sortref == 0 || sortref != cur_ec->ec_sortref))
+ 				continue;
+ 
+ 			if (!equal(opfamilies, cur_ec->ec_opfamilies))
+ 				continue;
+ 
+ 			foreach(lc2, cur_ec->ec_members)
+ 			{
+ 				EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2);
+ 
+ 				/*
+ 				 * If below an outer join, don't match constants: they're not as
+ 				 * constant as they look.
+ 				 */
+ 				if (cur_ec->ec_below_outer_join &&
+ 					cur_em->em_is_const)
+ 					continue;
+ 
+ 				if (expr_datatype == cur_em->em_datatype &&
+ 					equal(expr, cur_em->em_expr))
+ 					return cur_ec;	/* Match! */
+ 			}
+ 		}
+ 
+ 		/*
+ 		 * No match, so build a new single-member EC
+ 		 */
+ 		newec = build_new_ec(root, expr, expr_datatype, opfamilies, sortref);
+ 
+ 		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 		root->eq_classes = lappend(root->eq_classes, newec);
+ 		MemoryContextSwitchTo(oldcontext);
+ 
+ 		return newec;
+ 	}
+ 	else
+ 	{
+ 		EquivalenceClass *ec_found;
+ 		bool	found;
+ 		uint32	hashval;
+ 
+ 		/*
+ 		 * Build the new single-member EC to match against in hash_search()
+ 		 */
+ 		newec = build_new_ec(root, expr, expr_datatype, opfamilies, sortref);
+ 
+ 		hashval = bms_hash_value(newec->ec_relids);
+ 
+ 		ec_found = hash_search_with_hash_value(root->eq_classes_hash, newec, hashval, HASH_FIND, &found);
+ 
+ 		if (found)
+ 		{
+ 			list_free(newec->ec_opfamilies);
+ 			list_free_deep(newec->ec_members);
+ 			bms_free(newec->ec_relids);
+ 			pfree(newec);
+ 			return ec_found;
+ 		}
+ 
+ 		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 
+ 		root->eq_classes = lappend(root->eq_classes, newec);
+ 
+ 		hash_search_with_hash_value(root->eq_classes_hash, newec, hashval, HASH_ENTER, &found);
+ 
+ 		Assert(!found);
+ 
+ 		MemoryContextSwitchTo(oldcontext);
+ 
+ 		return newec;
+ 	}
+ }
+ 
  
  /*
   * generate_base_implied_equalities
diff -dcrpN postgresql.orig/src/backend/optimizer/path/pathkeys.c postgresql.1/src/backend/optimizer/path/pathkeys.c
*** postgresql.orig/src/backend/optimizer/path/pathkeys.c	2010-09-21 13:49:57.000000000 +0200
--- postgresql.1/src/backend/optimizer/path/pathkeys.c	2010-10-28 12:39:22.000000000 +0200
***************
*** 17,22 ****
--- 17,23 ----
   */
  #include "postgres.h"
  
+ #include "access/hash.h"
  #include "access/skey.h"
  #include "catalog/pg_type.h"
  #include "nodes/makefuncs.h"
***************
*** 27,32 ****
--- 28,34 ----
  #include "optimizer/paths.h"
  #include "optimizer/tlist.h"
  #include "parser/parsetree.h"
+ #include "utils/hsearch.h"
  #include "utils/lsyscache.h"
  
  
*************** makePathKey(EquivalenceClass *eclass, Oi
*** 72,77 ****
--- 74,144 ----
  }
  
  /*
+  * pk_hash
+  *		hashtable hash function for PlannerInfo.canon_pathkeys_hash
+  */
+ static uint32
+ pk_hash(const void *key, Size keysize)
+ {
+ 	PathKey	   *pk = (PathKey *) key;
+ 	intptr_t	ptr = (intptr_t) pk->pk_eclass;
+ 
+ 	return DatumGetUInt32(hash_uint32((uint32)ptr));
+ }
+ 
+ /*
+  * pk_match
+  *		hashtable match function for PlannerInfo.canon_pathkeys_hash
+  */
+ static int
+ pk_match(const void *key1, const void *key2, Size keysize)
+ {
+ 	PathKey	   *pk1 = (PathKey *)key1;
+ 	PathKey	   *pk2 = (PathKey *)key2;
+ 
+ 	if (pk1->pk_eclass == pk2->pk_eclass &&
+ 		pk1->pk_opfamily == pk2->pk_opfamily &&
+ 		pk1->pk_strategy == pk2->pk_strategy &&
+ 		pk1->pk_nulls_first == pk2->pk_nulls_first)
+ 		return 0;
+ 	return 1;
+ }
+ 
+ /*
+  * build_canonical_pathkey_hash
+  *
+  * Build PlannerInfo.canon_pathkeys_hash from canon_pathkeys list.
+  */
+ static void
+ build_canonical_pathkey_hash(PlannerInfo *root)
+ {
+ 	MemoryContext	oldcontext;
+ 	HASHCTL		info;
+ 
+ 	ListCell   *lc;
+ 
+ 	info.hash = pk_hash;
+ 	info.match = pk_match;
+ 	info.hcxt = root->planner_cxt;
+ 	info.keysize = sizeof(EquivalenceClass *);
+ 	info.entrysize = sizeof(PathKey);
+ 
+ 	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
+ 
+ 	root->canon_pathkeys_hash = hash_create("canon_pathkeys", 2048, &info,
+ 							HASH_FUNCTION | HASH_ELEM | HASH_COMPARE | HASH_CONTEXT);
+ 
+ 	foreach(lc, root->canon_pathkeys)
+ 	{
+ 		PathKey *pk = lfirst(lc);
+ 		bool	found;
+ 
+ 		hash_search(root->canon_pathkeys_hash, pk, HASH_ENTER, &found);
+ 		Assert(!found);
+ 	}
+ }
+ 
+ /*
   * make_canonical_pathkey
   *	  Given the parameters for a PathKey, find any pre-existing matching
   *	  pathkey in the query's list of "canonical" pathkeys.  Make a new
*************** make_canonical_pathkey(PlannerInfo *root
*** 85,91 ****
  					   EquivalenceClass *eclass, Oid opfamily,
  					   int strategy, bool nulls_first)
  {
! 	PathKey    *pk;
  	ListCell   *lc;
  	MemoryContext oldcontext;
  
--- 152,158 ----
  					   EquivalenceClass *eclass, Oid opfamily,
  					   int strategy, bool nulls_first)
  {
! 	PathKey    *pk, *pk_found;
  	ListCell   *lc;
  	MemoryContext oldcontext;
  
*************** make_canonical_pathkey(PlannerInfo *root
*** 93,118 ****
  	while (eclass->ec_merged)
  		eclass = eclass->ec_merged;
  
! 	foreach(lc, root->canon_pathkeys)
  	{
! 		pk = (PathKey *) lfirst(lc);
! 		if (eclass == pk->pk_eclass &&
! 			opfamily == pk->pk_opfamily &&
! 			strategy == pk->pk_strategy &&
! 			nulls_first == pk->pk_nulls_first)
! 			return pk;
  	}
  
! 	/*
! 	 * Be sure canonical pathkeys are allocated in the main planning context.
! 	 * Not an issue in normal planning, but it is for GEQO.
! 	 */
! 	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
  
! 	pk = makePathKey(eclass, opfamily, strategy, nulls_first);
! 	root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
  
! 	MemoryContextSwitchTo(oldcontext);
  
  	return pk;
  }
--- 160,222 ----
  	while (eclass->ec_merged)
  		eclass = eclass->ec_merged;
  
! 	if (root->canon_pathkeys_hash == NULL &&
! 		list_length(root->canon_pathkeys) > 32)
! 		build_canonical_pathkey_hash(root);
! 
! 	if (root->canon_pathkeys_hash == NULL)
  	{
! 		foreach(lc, root->canon_pathkeys)
! 		{
! 			pk = (PathKey *) lfirst(lc);
! 			if (eclass == pk->pk_eclass &&
! 				opfamily == pk->pk_opfamily &&
! 				strategy == pk->pk_strategy &&
! 				nulls_first == pk->pk_nulls_first)
! 				return pk;
! 		}
! 
! 		/*
! 		 * Be sure canonical pathkeys are allocated in the main planning context.
! 		 * Not an issue in normal planning, but it is for GEQO.
! 		 */
! 		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
! 
! 		pk = makePathKey(eclass, opfamily, strategy, nulls_first);
! 		root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
! 
! 		MemoryContextSwitchTo(oldcontext);
  	}
+ 	else
+ 	{
+ 		uint32	hashval;
+ 		bool	found;
  
! 		/*
! 		 * Be sure canonical pathkeys are allocated in the main planning context.
! 		 * Not an issue in normal planning, but it is for GEQO.
! 		 */
! 		oldcontext = MemoryContextSwitchTo(root->planner_cxt);
  
! 		pk = makePathKey(eclass, opfamily, strategy, nulls_first);
  
! 		hashval = pk_hash(pk, sizeof(PathKey));
! 
! 		pk_found = hash_search_with_hash_value(root->canon_pathkeys_hash, pk, hashval, HASH_FIND, &found);
! 
! 		if (found)
! 		{
! 			pfree(pk);
! 			pk = pk_found;
! 		}
! 		else
! 		{
! 			root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
! 			hash_search_with_hash_value(root->canon_pathkeys_hash, pk, hashval, HASH_ENTER, &found);
! 		}
! 
! 		MemoryContextSwitchTo(oldcontext);
! 	}
  
  	return pk;
  }
diff -dcrpN postgresql.orig/src/backend/optimizer/plan/planmain.c postgresql.1/src/backend/optimizer/plan/planmain.c
*** postgresql.orig/src/backend/optimizer/plan/planmain.c	2010-10-08 11:04:23.000000000 +0200
--- postgresql.1/src/backend/optimizer/plan/planmain.c	2010-10-28 12:37:47.000000000 +0200
***************
*** 27,32 ****
--- 27,33 ----
  #include "optimizer/placeholder.h"
  #include "optimizer/planmain.h"
  #include "optimizer/tlist.h"
+ #include "utils/hsearch.h"
  #include "utils/selfuncs.h"
  
  
*************** query_planner(PlannerInfo *root, List *t
*** 118,123 ****
--- 119,129 ----
  		 * something like "SELECT 2+2 ORDER BY 1".
  		 */
  		root->canon_pathkeys = NIL;
+ 		if (root->canon_pathkeys_hash)
+ 		{
+ 			hash_destroy(root->canon_pathkeys_hash);
+ 			root->canon_pathkeys_hash = NULL;
+ 		}
  		root->query_pathkeys = canonicalize_pathkeys(root,
  													 root->query_pathkeys);
  		root->group_pathkeys = canonicalize_pathkeys(root,
*************** query_planner(PlannerInfo *root, List *t
*** 146,151 ****
--- 152,162 ----
  	root->join_rel_level = NULL;
  	root->join_cur_level = 0;
  	root->canon_pathkeys = NIL;
+ 	if (root->canon_pathkeys_hash)
+ 	{
+ 		hash_destroy(root->canon_pathkeys_hash);
+ 		root->canon_pathkeys_hash = NULL;
+ 	}
  	root->left_join_clauses = NIL;
  	root->right_join_clauses = NIL;
  	root->full_join_clauses = NIL;
diff -dcrpN postgresql.orig/src/include/nodes/relation.h postgresql.1/src/include/nodes/relation.h
*** postgresql.orig/src/include/nodes/relation.h	2010-10-15 10:31:47.000000000 +0200
--- postgresql.1/src/include/nodes/relation.h	2010-10-28 12:37:47.000000000 +0200
*************** typedef struct PlannerInfo
*** 159,166 ****
--- 159,168 ----
  	List	   *cte_plan_ids;	/* per-CTE-item list of subplan IDs */
  
  	List	   *eq_classes;		/* list of active EquivalenceClasses */
+ 	struct HTAB *eq_classes_hash;	/* optional hashtable for equivalence classes */
  
  	List	   *canon_pathkeys; /* list of "canonical" PathKeys */
+ 	struct HTAB *canon_pathkeys_hash;	/* optional hashtable for "canonical" PathKeys */
  
  	List	   *left_join_clauses;		/* list of RestrictInfos for
  										 * mergejoinable outer join clauses
Binary files postgresql.orig/src/test/regress/gmon.out and postgresql.1/src/test/regress/gmon.out differ
Binary files postgresql.orig/src/timezone/gmon.out and postgresql.1/src/timezone/gmon.out differ
#38Boszormenyi Zoltan
zb@cybertec.at
In reply to: Boszormenyi Zoltan (#37)
Re: plan time of MASSIVE partitioning ...

Boszormenyi Zoltan �rta:

Boszormenyi Zoltan �rta:

Boszormenyi Zoltan �rta:

Heikki Linnakangas �rta:

On 26.10.2010 18:34, Boszormenyi Zoltan wrote:

thank you very much for pointing me to dynahash, here is the
next version that finally seems to work.

Two patches are attached, the first is the absolute minimum for
making it work, this still has the Tree type for canon_pathkeys
and eq_classes got the same treatment as join_rel_list/join_rel_hash
has in the current sources: if the list grows larger than 32, a hash
table
is created. It seems to be be enough for doing in for
get_eclass_for_sort_expr()
only, the other users of eq_classes aren't bothered by this change.

That's better, but can't you use dynahash for canon_pathkeys as well?

Here's a purely dynahash solution. It's somewhat slower than
the tree version, 0.45 vs 0.41 seconds in the cached case for the
previously posted test case.

And now in context diff, sorry for my affection towards unified diffs. :-)

A little better version, no need for the heavy hash_any, hash_uint32
on the lower 32 bits on pk_eclass is enough. The profiling runtime
is now 0.42 seconds vs the previous 0.41 seconds for the tree version.

Best regards,
Zolt�n B�sz�rm�nyi

Btw, the top entries in the current gprof output are:

Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
19.05 0.08 0.08 482 0.17 0.29
add_child_rel_equivalences
11.90 0.13 0.05 1133447 0.00 0.00 bms_is_subset
9.52 0.17 0.04 331162 0.00 0.00
hash_search_with_hash_value
7.14 0.20 0.03 548971 0.00 0.00 AllocSetAlloc
4.76 0.22 0.02 2858 0.01 0.01 get_tabstat_entry
4.76 0.24 0.02 1136 0.02 0.02 tzload

This means add_child_rel_equivalences() is still takes
too much time, the previously posted test case calls this
function 482 times, it's called for almost every 10th entry
added to eq_classes. The elog() I put into this function says
that at the last call list_length(eq_classes) == 4754.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

#39Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Boszormenyi Zoltan (#37)
1 attachment(s)
Re: plan time of MASSIVE partitioning ...

On 28.10.2010 13:54, Boszormenyi Zoltan wrote:

A little better version, no need for the heavy hash_any, hash_uint32
on the lower 32 bits on pk_eclass is enough. The profiling runtime
is now 0.42 seconds vs the previous 0.41 seconds for the tree version.

Actually, I wonder if we could just have a separate canon_pathkeys list
for each EquivalenceClass, instead of one big list in PlannerInfo. I'm
not too familiar with equivalence classes and all that, but the attached
patch at least passes the regressions. I haven't done any performance
testing, but I would expect this to be even faster than the hashtable or
tree implementations, and a lot simpler.

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

Attachments:

per-eclass-canon-pathkeys.patchtext/x-diff; name=per-eclass-canon-pathkeys.patchDownload
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index ee2aeb0..7a12c47 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -1595,7 +1595,6 @@ _outPlannerInfo(StringInfo str, PlannerInfo *node)
 	WRITE_NODE_FIELD(init_plans);
 	WRITE_NODE_FIELD(cte_plan_ids);
 	WRITE_NODE_FIELD(eq_classes);
-	WRITE_NODE_FIELD(canon_pathkeys);
 	WRITE_NODE_FIELD(left_join_clauses);
 	WRITE_NODE_FIELD(right_join_clauses);
 	WRITE_NODE_FIELD(full_join_clauses);
@@ -1692,6 +1691,7 @@ _outEquivalenceClass(StringInfo str, EquivalenceClass *node)
 	WRITE_BOOL_FIELD(ec_below_outer_join);
 	WRITE_BOOL_FIELD(ec_broken);
 	WRITE_UINT_FIELD(ec_sortref);
+	WRITE_NODE_FIELD(ec_canon_pathkeys);
 }
 
 static void
diff --git a/src/backend/optimizer/path/pathkeys.c b/src/backend/optimizer/path/pathkeys.c
index 643d57a..d5e5c42 100644
--- a/src/backend/optimizer/path/pathkeys.c
+++ b/src/backend/optimizer/path/pathkeys.c
@@ -93,9 +93,10 @@ make_canonical_pathkey(PlannerInfo *root,
 	while (eclass->ec_merged)
 		eclass = eclass->ec_merged;
 
-	foreach(lc, root->canon_pathkeys)
+	foreach(lc, eclass->ec_canon_pathkeys)
 	{
 		pk = (PathKey *) lfirst(lc);
+		Assert(eclass == pk->pk_eclass);
 		if (eclass == pk->pk_eclass &&
 			opfamily == pk->pk_opfamily &&
 			strategy == pk->pk_strategy &&
@@ -110,7 +111,7 @@ make_canonical_pathkey(PlannerInfo *root,
 	oldcontext = MemoryContextSwitchTo(root->planner_cxt);
 
 	pk = makePathKey(eclass, opfamily, strategy, nulls_first);
-	root->canon_pathkeys = lappend(root->canon_pathkeys, pk);
+	eclass->ec_canon_pathkeys = lappend(eclass->ec_canon_pathkeys, pk);
 
 	MemoryContextSwitchTo(oldcontext);
 
diff --git a/src/backend/optimizer/plan/planmain.c b/src/backend/optimizer/plan/planmain.c
index fd4c6f5..5f8f817 100644
--- a/src/backend/optimizer/plan/planmain.c
+++ b/src/backend/optimizer/plan/planmain.c
@@ -117,7 +117,10 @@ query_planner(PlannerInfo *root, List *tlist,
 		 * We still are required to canonicalize any pathkeys, in case it's
 		 * something like "SELECT 2+2 ORDER BY 1".
 		 */
+/* XXX: Same as below */
+#if 0
 		root->canon_pathkeys = NIL;
+#endif
 		root->query_pathkeys = canonicalize_pathkeys(root,
 													 root->query_pathkeys);
 		root->group_pathkeys = canonicalize_pathkeys(root,
@@ -145,7 +148,13 @@ query_planner(PlannerInfo *root, List *tlist,
 	root->join_rel_hash = NULL;
 	root->join_rel_level = NULL;
 	root->join_cur_level = 0;
-	root->canon_pathkeys = NIL;
+/* XXX
+ * Do we need to reset something here? This is just initializing otherwise
+ * uninitialized fields, right?
+ */
+#if 0
+		root->canon_pathkeys = NIL;
+#endif
 	root->left_join_clauses = NIL;
 	root->right_join_clauses = NIL;
 	root->full_join_clauses = NIL;
diff --git a/src/include/nodes/relation.h b/src/include/nodes/relation.h
index 6e3d0f3..c959708 100644
--- a/src/include/nodes/relation.h
+++ b/src/include/nodes/relation.h
@@ -160,8 +160,6 @@ typedef struct PlannerInfo
 
 	List	   *eq_classes;		/* list of active EquivalenceClasses */
 
-	List	   *canon_pathkeys; /* list of "canonical" PathKeys */
-
 	List	   *left_join_clauses;		/* list of RestrictInfos for
 										 * mergejoinable outer join clauses
 										 * w/nonnullable var on left */
@@ -527,6 +525,7 @@ typedef struct EquivalenceClass
 	bool		ec_below_outer_join;	/* equivalence applies below an OJ */
 	bool		ec_broken;		/* failed to generate needed clauses? */
 	Index		ec_sortref;		/* originating sortclause label, or 0 */
+	List	   *ec_canon_pathkeys;
 	struct EquivalenceClass *ec_merged; /* set if merged into another EC */
 } EquivalenceClass;
 
#40Tom Lane
tgl@sss.pgh.pa.us
In reply to: Boszormenyi Zoltan (#38)
Re: plan time of MASSIVE partitioning ...

Boszormenyi Zoltan <zb@cybertec.at> writes:

This means add_child_rel_equivalences() is still takes
too much time, the previously posted test case calls this
function 482 times, it's called for almost every 10th entry
added to eq_classes. The elog() I put into this function says
that at the last call list_length(eq_classes) == 4754.

That seems like a ridiculously large number of ECs. What is the
test query again?

regards, tom lane

#41Tom Lane
tgl@sss.pgh.pa.us
In reply to: Heikki Linnakangas (#39)
Re: plan time of MASSIVE partitioning ...

Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:

Actually, I wonder if we could just have a separate canon_pathkeys list
for each EquivalenceClass, instead of one big list in PlannerInfo. I'm
not too familiar with equivalence classes and all that,

Hm. I don't like getting rid of the main canon_pathkeys list like that.
The whole point of a canonical pathkey is that there is only one, so
it seems like we need a central list. But it might be sane for each
EC to have an additional, side list of PKs made from it.

regards, tom lane

#42Boszormenyi Zoltan
zb@cybertec.at
In reply to: Tom Lane (#40)
Re: plan time of MASSIVE partitioning ...

Tom Lane �rta:

Boszormenyi Zoltan <zb@cybertec.at> writes:

This means add_child_rel_equivalences() is still takes
too much time, the previously posted test case calls this
function 482 times, it's called for almost every 10th entry
added to eq_classes. The elog() I put into this function says
that at the last call list_length(eq_classes) == 4754.

That seems like a ridiculously large number of ECs. What is the
test query again?

regards, tom lane

The test case is here:
http://archives.postgresql.org/message-id/4CBD9DDC.4040304@cybertec.at

create_table.sql for the main table plus childtables.sql.gz, the EXPLAIN
query is in the message body.

Basically, it's a model for a lot of data for three months, partitioned by
4 hour intervals for every day. Imagine the call list handled by a
phone company in a large country.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

#43Tom Lane
tgl@sss.pgh.pa.us
In reply to: Boszormenyi Zoltan (#42)
Re: plan time of MASSIVE partitioning ...

Boszormenyi Zoltan <zb@cybertec.at> writes:

Tom Lane �rta:

That seems like a ridiculously large number of ECs. What is the
test query again?

The test case is here:
http://archives.postgresql.org/message-id/4CBD9DDC.4040304@cybertec.at

After poking through that a bit, I think that the real issue is in this
division of labor:

index_pathkeys = build_index_pathkeys(root, index,
ForwardScanDirection);
useful_pathkeys = truncate_useless_pathkeys(root, rel,
index_pathkeys);

If you trace what is happening here, the index pathkeys that actually
survive the "usefulness" test all refer to exactly ONE equivalence
class, namely the one arising from the query's "order by timestamp2"
clause. All the other pathkeys that get created are immediately
discarded as being irrelevant to the query. The reason that we end up
with so many equivalence classes is that there is nothing causing the
variables of the different child tables to be recognized as all
sort-equivalent. Maybe that's a bug in itself, but I would argue that
the right way to make this faster is to refactor things so that we
don't generate useless equivalence classes in the first place, or
at least don't keep them around in the planner's lists once we realize
they're useless.

I like Heikki's hack to cut down on searching in make_canonical_pathkey,
but I think that complicating the data structure searching beyond that
is just a band-aid. Reasonably-sized queries shouldn't contain very
many equivalence classes: they should only come from equality clauses
or sort conditions that appeared in the query text. Therefore, there
also shouldn't be all that many distinct pathkeys.

regards, tom lane

#44Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#43)
Re: plan time of MASSIVE partitioning ...

I wrote:

the right way to make this faster is to refactor things so that we
don't generate useless equivalence classes in the first place, or
at least don't keep them around in the planner's lists once we realize
they're useless.

After a bit of hacking, I propose the attached patch.

I like Heikki's hack to cut down on searching in make_canonical_pathkey,
but I think that complicating the data structure searching beyond that
is just a band-aid.

With the given test case and this patch, we end up with exactly two
canonical pathkeys referencing a single EquivalenceClass. So as far
as I can tell there's not a lot of point in refining the pathkey
searching. Now, the EquivalenceClass has got 483 members, which
means that there's still some O(N^2) behavior in
get_eclass_for_sort_expr. There might be some use in refining the
search for a matching eclass member. It's not sticking out in
profiling like it did before though.

regards, tom lane

#45Boszormenyi Zoltan
zb@cybertec.at
In reply to: Tom Lane (#44)
2 attachment(s)
Re: plan time of MASSIVE partitioning ...

Tom Lane �rta:

I wrote:

the right way to make this faster is to refactor things so that we
don't generate useless equivalence classes in the first place, or
at least don't keep them around in the planner's lists once we realize
they're useless.

After a bit of hacking, I propose the attached patch.

I like Heikki's hack to cut down on searching in make_canonical_pathkey,
but I think that complicating the data structure searching beyond that
is just a band-aid.

With the given test case and this patch, we end up with exactly two
canonical pathkeys referencing a single EquivalenceClass. So as far
as I can tell there's not a lot of point in refining the pathkey
searching. Now, the EquivalenceClass has got 483 members, which
means that there's still some O(N^2) behavior in
get_eclass_for_sort_expr. There might be some use in refining the
search for a matching eclass member. It's not sticking out in
profiling like it did before though.

regards, tom lane

Thanks, this patch made get_eclass_from_sort_expr almost,
make_canonical_pathkeys and add_child_rel_equivalences
completely disappear from the gprof timing.

+1 for including this into 9.1.

On the other hand, if I use a similar test case to my original one
(i.e. the tables are much wider) then the query planning takes
1.42 seconds in 9.1 with this patch instead of about 4.7 seconds
as we observed it using PostgreSQL 9.0.0. The beginning of the gprof
output now looks like this:

Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
21.13 0.30 0.30 235091 0.00 0.00 SearchCatCache
7.04 0.40 0.10 1507206 0.00 0.00
hash_search_with_hash_value
3.52 0.45 0.05 2308219 0.00 0.00 AllocSetAlloc
3.52 0.50 0.05 845776 0.00 0.00 hash_any
3.52 0.55 0.05 341637 0.00 0.00 HeapTupleSatisfiesNow
3.52 0.60 0.05 1136 0.00 0.00 tzload
2.82 0.64 0.04 547 0.00 0.00 get_rel_data_width
2.11 0.67 0.03 669414 0.00 0.00 hash_search
2.11 0.70 0.03 235091 0.00 0.00 SearchSysCache
2.11 0.73 0.03 192590 0.00 0.00 copyObject
2.11 0.76 0.03 164457 0.00 0.00 pgstat_initstats
2.11 0.79 0.03 152999 0.00 0.00 index_getnext
...

Use the attached synthetic create_table_wide.sql together with the
previous childtables.sql. The full compressed gprof output is attached.
Your patch creates a 70% speedup in planning time, which is excellent.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

Attachments:

create_table_wide.sqltext/plain; name=create_table_wide.sqlDownload
gmon.log.gzapplication/x-tar; name=gmon.log.gzDownload
�0|�Lgmon.log��Kw�8����+��m�oI�Kl'�3I��\�sz�C���2I0$�G~���2)_0���*]�B�
�k�EY�]�������(>,�(/3��yS�z���e/j�"�?��X��b�������#��Y�[��w��E�
��?"��1�7����,����k���� ���l�eY�\k��q}kmwbY�U��"��^a���z����6��}k�X9D�!�%)|J�!��e
�O�s$��0��Z9��"~�2o���<a����Xy�r�~��x9>|�����������������b����?��	+=
�����"~g<J`��i�:����n�}�|�=a��0�D������t��k��(�`�NKkH�I�����eq�{��k����|����bq
F���������"��>��G�Y�IK��=�0�{>}�n�:�b	�Q��wiU����/��G>�-��������W���eu�[�q��W�D����
Q�����#�uA9���M.����������#�3-��*x]�!��������e,��)�2�\���8�yUo�������^��8T
�J��)g5��BpW����|�5i����X2"����%Yv��H�����#$o�"����u��PT��y���S�h�A7,]r������t�h~AA>�X��Y|
�����b5F8+�|�P�����Yr�j��^B�qli���!9_�"F�G���*��x ��Mn�Vh��>e�#�ey�+w�(�c��������We�c��X�����n�����5��K�y�}���f���@5�A�C���}��Po5�X�?g����g�F� p��,x���]$Du
Y� �����w�����,���U����w�������E���M�1N�?��xa/WK���Ma'���N�;#
��"|�j�T1�y*Xu��oY�{y���X{�uVk�����tqr]���&?@E{V�"G�n��Mo����6cC<�����"_x�>K���"��)e$�6�;�jm�:�v�3���:�hs��tz��1��<��;���������p/V�j��8����uVc�� �S��l�7�2��i���k�eh��lG����cF��H�=�>Q%MyJr�$���]��ZT�?����"��+r|=����)����e$� �����E��7*�K*��R5��p�R
6I��c�	!�
�y��<��������Qwu2�v,j��:�O�vM�'�mG��;��&�p�{���T�Q)�]I�&��:*T������KP��M��������3��D��<<�5�Z���"	��^qX�[�zN�d���w�T��rVE�]�p8�8y+x��y99�n�&g@��MZ��&8�O;����_�c-_��A�u`T6�C�x)���0a���Ew��r/�y�����IK�uIR�%�����������ykW���[p���x�����D8�2�<�UT��}����G;r� e�����u����P>�U�����&����~�h�������9�Q�]�C�2��^���F�?a���
�:"������Ez(p)�����Sq�����C���s���
t���������������5�����}b�b�qb���C*RP����\�dz���������?4�&E
�cQ�*�A��<�0P��y�W[��65$�������z���E�J�2�<2��:��k�jT��������op��d��k�5Z�T	�.��\$�o���������g\'�^��LV�
9�zi��XS�����{���@����Aen��>���?���z�\RC]���_�m^�p
��Z������!n4NP���Q��E�g@�r��t�mWU��s�������u�n�a�]���Ej��s� ��_%N�L�7p���q��:��4s_6zl���`�`�������Y�Ng��S�����`\k���Wt�
�3�B�_�c�^MQi��M�d���8G��u��ak�������]�6��e�b�:t�5�����$�l�O�(��P]�%*�A�V���kM����l�Z;.!��Hi1x{��Kd�g�9o�E�	��c.nay���[���g��
�J���i��Zt���}uvp8��L�5��W�L�q���^��m�2-��:��-l����D�c:&�s�Q%Xr�T�x�78�a*��������8A0�@�xp��o���/qB	�B����|sqF��t��0*J.S��_K:��������n�����LA�`��[��L'��*�����~�"6��$�H���eJ�r`��+"-������1��y$o���������f�rvqa��������W����X+�����T��Ht-�PO?\�-�+�fziYt�	7��K�N�@�������\�5�_��M&y���:��y�i�.�2�
��nD,R��[�`���e�b�V�4y�b�*N�.��
)�W���;��}�2;�"^���d:�3KE�?
������Q�{e�_��f��7gx�%A[�Z�G��J���N+����w�8���6]�����l(M�^;{�B��)����:�����O�,D([����9��e��	�����0O��K���������w�B������9mp5	���Si�3�|��p��n�hE��p���XW'WY��c*O��jI[�]>���G�51��f�kC�#4�j��2G�f���[���@ ,��`!/u��6)������4�����=����5�Q:�����y��5���L.���h�.���u��x���?��`�/9�y$�C��\�c��m��.Vk:ru��p�[*�mF"�a��x�N�~�X:��pV���t���6���1���:�C�^�E|��Z�!eg+��u,+�5iN��i�xRO����$uM
����!z\W��>�?=>Ax������\��T��Dn�0f�&�<m�X������C�C��i���������(-�����]��5�S����H�W��R��1V��R�MSjL�Q\��@�q~I��z1^*�K%i�k<5�*}��m���/VH�{}���tT�Y�v���T���rINow�-q8vOae��_�#�nZ�jy,/u^������]/����]:�K/�u�a����i�6�My���D_&[�6������f���+��
�����=���.�S6��c)2oEg!N��?kAt��)H��;8[g����[�nk�u6�S�����>���E�E�z�`��.gr��|�����?���F���H
�h�:�X���1���:�G_6���Fb>�JKm^n��+���Ll�Nx?�3�j��LaZ���:���a�K��pN>������`�T!�Xz�/����&{#��VEje�]R��	�{���&0�q
��������07��z)?@&�N�'�l�k!�����;��6���d�U�.�6M�	r��[`�<U2 t�Xag����<��S�[$�c�6�����3���vI?���,Gq�h��P����n�.�������$e���(K�H��3t}����Ce�}8�L�O]_�3���i�O��)t����4cPYb>P��.t������}��5�6i�P�p�l�d���Kx�$��9	�Q�,,@�3�KUQnXyTRE��	=x���O%]_�8D�+�?!*3i�%O$#�
fR�sV���d);�c m�p�S�
�����6�I�����fo8�����^�i�d6U��>Y�Km���/=����.�=�Aj��}yWG���
^s�U7�)��s@^�B.|�������BTu��d�m����B��jgE���$��]wa��� ]��Z��������Cj�$����
�����~!`�W���k]���F�^�y��Xp6�G
&���K��Q�9It"
8��Tx<���
F��<�$��(��Mi���hTQ,��!w2!o�F����^l��>VqWZ������<�}//��b{���u���'$4�����X��"h��%���q��Y-�v4o����rv&���m?�.<@�U���<�w�Uk�Q��
,j�t��"1������w.��!|�J\<	�9�)�[����J�:�����C�U��m����`����U�/g�*������i���1��D����h/�ftb\��gU��:�y@)�y���|b"O��K�*�d�G�{��2����O���������7���C��&��.�/�G'x�'=�45�k����K75a��D�)�kd'�A�q�p�=��E�MV����c�q�9t]��1O�g�aE��'4��0c�����B�)�����hM�r�N�]��� �m�.5�W����(z��M�"��Pw\e�Xt�N�A<B��D�C�ebb4,-`%6�M���>�Ew��at�$Id�K;��!��6�"I5wx ��Pks{��@A����IRS��"'��e3�/L�#c��g��St������C�z�R[�3m��jp�b0�a��3+&	CdE���������?���0�U���)�Kn_����>��n��7q��1���RQ�,�1��+��h��*����j{f��
��e�,�����/u�=-���G�5;X�p��4��C�qk��s�O����������qX7[e��u=e��v?�tW�HJ���,�fhm�)������M��`=��sy}���c:&�wz��iQ?E�"�n�gyqM�B�d�����g�d��U���9����h�#����>K{��X{XCzm����T��*�?�����T�W�T���M�7�������W^�A{NW9\�*h�3��l�5H��T����{������S�[��'�S/�zd�����i}ci ":)[��>������{������Y<�1F����%�&z<�'��/���*	������3�!��)2�WG��2M���zq�}���x��������<�����d���x���+�v}	�W�B�5k4wV�!����-�m'���h��yc<&ok�B�,���N�Y��I��jb��&�0�� w&�3ao2.���U,l����X�H-��6�?�{�����,`tg$�%�����]-�.Rm4[d��K(g���]��?�"�����n�/��.�FZ���%;�k1����!!�������F���LnQ�NS�s1m�O~h�%��JL�����/dz�4���e&yS'��^i!�j�	#|������{�� ~��Q�j�h�O�<@�dg�W^�����A�Xo�P����}t)���b�&��*���
���M8������auM�G�>��"q�Q�<�cpU5|x`��WM���Wd�iy����%��s�&���	���v'Md(��
^�>�3?
fX�}kH�����d\����k�#��	�*���%��j/��@��_�z?�}���k�NB@�[�|��ke*�}�`�����ABJEI���L9���l058a�������J$/\c�)VT{!$���7���Y��W�����FW���������x���$�$��8?"�8����8&��@�����(�jX[�����I��������������L��F7�)B��r<\�V(�����-��Z[�P2df2l���6��=L;b��?"���(^![N���L���0��b I��?�����NB���4pH�V�b���L�l	4�4@�5���aU%/��;���[�c��c'��R�Dl|y��]��da���NU������L%OZ�4���oO���5�������A����_ME���]kCg���[L�����S`�^�������H������Bq��t�-�A�,T�to��)>�&{�c�~	�yJ�gf�I��t������������]Z��R��H)+�����X�H~������L���.���L��}�N?����W���[���f�
+A��o��b�x2���Eh�;W���'a�x���#�!��7�����J�LD=���d@������k���X����+92��4�!E}�|
�0�"*b�<��9U�d/�`�
�e���3aoz���v������A�J1����s�5I�w�Vk#Ps�m>���[��H��U3!�G��T������=���_o��'H���J~U�z��q�H�!Fyu�=^$*p���b������\���[.dkymp��H{/K�����>(�`*�������=n#��0�y����
�/��)�NlP�u����r���B`I�*�%Q�(����dD&�L2I�2){�:K��j����FF��	���
m� �i�'�"��F�f��-������|;kt��1,+��;c��p��fn Ig��>����08�OsT���T���|��}���F1[[�l@@�]M[�|=;��l]6�+���t%�a�v�"qCY�+��m%�9]�g��!2J�a��2n���e:�o��M��&����\(�� ���C����mAA�����f�%�f{B�� aO�3�M�X�0�._7�5~�����+�%���&;�T����Q������Xm� ��A !���kw�<V��(���)���V_�W�5��S��8�l�F
5�XUt�I���Y?��Z�������C8 7
�M��$�	�Ij���V�e��?�������q/3~*C���og�ZtNG��!�"A��0�;[��/�P��4m����c�5A�3�l�,��>����y���_��	>m�����l3Q5���Z��>�%=>]S�������nU9M��p���5}aM�G"�X�n]6�L�.vW_h�b�V������_r~�i��S��h�$���b��]��]�r�:vA������G_[��q�A��V�K�����0$/�|M�f<�7�$�5:����g$b3���W���_L��
���x��y�m:emB�2�.-����|����p�;z
�����Qvi����kvO��(��2�b�GZ�	5H�q:@�7���������?U��=!���{��*6H/���w�L�DX=�6�|���/���@I���{b��t
�K��T��07}v�G��v��
�2�`�L9�+�Q��������T�Y{�A
-�}`��RV��g8���i�b$�h�O���I�7_�y��T���N�
.�y�(���0M;c7����^�b��3�O���s!��s7�n�:���'XJ�%��$������|�����8jv���~R����	p��W9�@9�;�6;�y��LAi#M�:%d�Aa�
T�1E�^efpD�~$���ZD�/��$�-���`b �?d��!��$ �z�����N�����V�2�R6�HA������/���n�����A�7�ZU��������4��}�����W��	<
tR!\�K�p����t��j�� ����w\��>~H��$���8.�O@���@�9+chl�[4(`-^��H����2�������9�i������������	P�ra$:f��?R����{_��TnC�D�� d�T��r���zZ��QX^0�������"dE-�$@�4�v��y����D]��k����}��P�6�.=w�|$E%/�$jZ%��b�����������Y;t`"n�*�����L�h���*��`f��b��+IP�k�b	I�re
��B��h�[=�T�6�w��`!c���&-��{��P�������\�T|"Sy�����%)�{@��%��8��`���&2��l#L��0@)�$����e�[p��;b��v�����I&����u�������U��=xVFK(����?\����������[z��|�����&�%�=��6�2
��G�v E*�b�����T���!���uJ�z���������?0��m�/��}�&�CH����2��c��2i��VE��b��U���2#5�vr[����)��MJ4@�.��b^��k�m^�m�hxKX����Pf
�0��5��%��iv�!��pX�N;�����e�$�<��q�p�2�N����������������L8���Z,��"�"n2^�B�7�y��H�"x��c���e0�(��(������#��0��X����U�"�~Y�uJ4�0;��9s6�[��S�+z���~KQ���{�}a��G��z��������$�
�=�����g���(�
d����]�
� 		R���6?���X@��n6%��H���0WPP�bG��i��}��P��!��u8�6����&A:sH=�X-�6 �N��i6�$E��/�?����Z�_�o��/�8!BD���hK;>xO��inl��p|�Z�i,��P,�C����V-���r�~��Q^S�^���,�}��5�j����/��a��Bj���(��1���������4Y�$��4����1�d�Z1�TZ ��M����7H�����,����b�Z�����]VU�����:6���`/!z �&o9-h�UZ��(�,�k�D��E�m�gQF
���U��@r�+g����p��5P�e�#us:>�t���y��C8|�k����
��LLT��4� 1	����MZ
����	���)�Q�!_��8�`{��]��Z���Q�g���� x����`�eiM��b��c��O�����8N?V'�B|���3(��	q(C8��J������%�l��h���6=��fg��N��{`�`�r�J��	����r������m��Y�������
���-g���XT�%������5�
������<Y�o�����A�SY�M����4�^����mi`���C���J��w�l����`
4e�Y%��7E���H�@I�@)u�>��vCv��	oyX�E�D(�����]���t>�b���_c������(�{pUV~(����|a��L	q��X�������{�=�[2E	��5��$a��5�V�U�`<{5�
��v�A���axW<d���>�S�����8��0���/m!������1o�_(�� � ��=0(YC�5������r��^�F��2t�xG:T�Q�P�Y���luw���l���%h)��:���g!�[�v+��vmnp��B���$�������8�~I�
�vl�*��hA�G����;�4��(�CH�)�n}�9�9�d8�G�9M��|�
S�����L"�Iq�z2��dP������|��Y������+nzb:���t����t�D�Z�-����-�`35�[�~U�;v���Y�v��� JDB&(�)K!����<�euOK~E��K ��?�k3�sV��0J/k��*g�
�K�Oj�`�4���0�olQ�f~V1�a�;n�����60��k�#h�u����u7��Y�lu��G
I��a%�gS�26e4X�q��Az���}��k�o��ly�rm
x��
�)�]Z>�U;�q�)�94-�\W�|^CQ������h��
���QL6@���
�Ynl�px]�7��+�Ph0����������)3��v�����Cn��'B��MO��ly�ji�-1y@�\��4|����qC��ja=�UJ�2������z!C�����&�����Rw�U�@F�`����[���UC�<����D=N^�(X�@���)A������#�n6[�3^�������_ha�z0��x%!�=�9������X�s������ r�"VxG�)��l�&5y��}�}�S���le��)���� �+�`2ykl��#��k�|����e�D�$;G*NlSb��&#�(��DD��da����<�����gL�"n m�c]����bL���&��D����n
�<0u��(/���\��M2O���+�"?>�����b���Gx_!���e�E�rl���g���t����%��4=M1e��
�
c�2�`L��XHsQ����T�_U����M����t���t�����s�}�����eZ��K�^%n�%�����D�,����6#�m�`�	��������-�nC�l��#��j�"���%L�.O;�q
���o8�^/��LLP��4����(��4�9
��E�!!7�����&5��?�qB�j����h�vfXh���:$�D�:�Ic;���3�Vm�u�l B��1�\��pX�p	�x.�(���Q�����w�|ol�RON��S�������0�����#\�A���/���O4P|(��Pv������>6��c�#��Y�0Fi�K�(��T�Wiu2����X�_������g$��! ��:,t��������M�a�Ab�KR��)(Y���'��������?�������	o���@��2�K;&��.��{�Y�#r����x����Y�F=�
rG���q '�a����� �*��=t~
��>s^D�M
9���|"����y���L������p���Zz����}�l�u��ij8�M��"l������`��(/k_�E�^��O�c<a^[�b�r��~��l:�/��(�!�@q�9����1�Q�ZX��m�	�'`�$�Ar�7:���hi�~W"����4���+��=����F�/Q+� ������!+�r���7���0����M�T:GK�P6;,� �j������(�L`�B�z�[���$���������@����D�k���,J~�����t�_�}�h<&��;��E���'8���&���6\1
�7���AT�k���xL�~�������������T����>S��O�X�i��3�p���n������@�k�X�,��
-F���H�����nj��r+@�#A�����9�,�@l\�����5�+g�Vl���i���3+�� 7e����)YY=��_��u�m���Z?������+�!�����c����.}���Z�Yk��%5omj���Y��_s6�H\f����@@��xL�����G)_��l1��=���{x�M)�~C8|9�x���
��f��]n(L�Z��{���l7n�1F����z�Q��x�m� �k����.(dc^�i(q�����"�C��:�*K7p��)d
����mc������`0�=��$�,�?o�{c�P
b7��z�p��;H��B�e;��Q���iHoi��A ���O�>����p���.KK�0���2�Y9�hL��nk��kLV1�eS�I�����z���������i�7}
�A�����s���0�z�1�o��*[������:�.�������
Q��X8	4[o�
d1�7?�Y���Y{��g�H�O�P�T�C0���J�(��S��������(��A������a�������c�{b��l�)����k���dz^4��aI�V�^�[�Hc�jk����Q�����	u��6�kJ���A����D���N^oL�������A����%����nQfh���JN�a#i��[��"Y���������t�{�M����9�~?@�����EB��a��!V��#-��GJ���d�t���Z��m�.�������&�Aa���t@�2T�az��������`���>�EE�>�E����U�h8o����2X=p34�	2����;R����@��4�R�F�e
 t�F����W��S�zku�a����w����������
�M{PGo�c�x��7������e53��9�����S7�&��-���y���^��]t�]�������W�]��##����I9!"�(�?m��w"f�i��6,UJ�0;U�������T����=����,���f� ��i��<�<=����oB�^�k���}w��M{�Y�,n�(�D:����g���tI��f
d}NAF�/�sS��j�u{`�&�ByW���&�OC�h�T��O<���z&�X^�n�wX@�I&��X?N�V����7�]��0V�����`��B�sjTh���no�_lYB���R%T���s����M����K�}?�ln�bq@a�@+P��b�>[����M��S�����1�5����cU�5(M����Oh����g����0����d*�q9�%8>��w�
%�R���/���T�_����p����_��T��U�!S��f�M�H��Q�0�[j��1���p�������xU��#����u����#�����%v>�S�q���?�����vhLS���1��>*�����4F(����x��t��o��Z��z|��?��!]�8aT�|cn��������,;��&���if�|c;�]@�"Ub�m�
IK��
e�:�el!��O��\�g�0�1)Y(<�zX~�!)�!�,��X[���V�����S��1������p��YM'���S��a=���������r�#Z��]V
�tn�E��ZpMXt�:�`��E�	h���4��I��r)�Tq�z�OWj�(�z(�e^P���������Xe{��n���:��@+y2�����0�i�zl��� ��%��K�������Cfu�O]�6)�"�MF2V���VV}
������&C�]��]�lUfs@Y6�]��V�4;�����o=\YV�=���D&Q�iq�iu����P�����5)KN2o���h������i�_��D��S`���F�L����^���m�Dn*�9Hc��BY=����4�q�|����W��w���%>4f.�����]b���

L��{X�")�=��Z�����n���'�!����b����]b���%���kr�
/G�,��Y�����Y�2���+R}��j���������F�����?�b���� LqXC���!����B���V>=n�{���NR|������0e�H+�5V#Z��A�cQV����S���M
�hk��]e�j
�pe����6c���{cE x�y\�{�4�u&����b� �'��9����}������AS]����*��QAL�,�>W��x U�D���tmj`��p"��X��0�����b���;�K�Es![L����������){r%?�d�bl�����M��� `�l���U����,6�������xx`�t�� �b���Z���F�3sr��B-�3�Q��_���	�l	qN��As��U|�6�X���~
WEQ/�c�+63���6Wx��0�
02<D8�s�5���X�����D[���17>�vk$;0�����H�.�����!"}|,���TwD��y%�Hl0J`J�!4�(6���c���@J�5(q�w+�Z��
�`	��Xa��� eH��J-����?X�35����]M
G6@���	�n��z��)��1��I��X�D�a[��������@�L�����[3y���o��L���6��������w�G� ��jkLI-�������X=1m��"4\�XI��r���3V���gvT�N3Q���h��l �=�f:�4`���4u�,��zPvaLL�`��lZ.r�^�{]�7���E�R>0�=�����-D�����X�����_M�Z�Z�p�c�bM,�8�~=68�v�ypX���E=�D�b����7�7SL%�L6;����`a���u��KZ���j�}��=����Y�c��u�5�~2�)�������W�_����-������h�Y�vJ�M�nma=�)�1e@���bC��}5k��/@{�@��K�o��^+�6
c�reS�X�0G�~���9���� v�&(�9���y��8�"��tL����x�����CiL����\�����Z��H&`e�^4s`�/a����+(v���]���K&���_�3�����p������$���f���-u@�/�7i�Y��^qc
�M�vf�D���\�H��\�UE�'�;N��>��=��C��� r�m�e\ca��k��B���EZ��q(p%R+US�����g6��a��A��5�V��`>z@��E4l��X�}����?�H
UNY<[�X5��<`��g��p�x
��=���#�#��X@���6�y'd��)JY����E��-����}�>f����*�t�(O{�uB�+��/����e�[��rq���9?.������/�����K�H��iW	&|�OG�n��t��L����X���C_����
�<,@���O��5p�W�{�f���n�kd����(}��)K],>�����.�{�2|�]�h�(�?�n��v�9�����}��K�)�������>���
�C���-�{v���_����l	s�~�.����~�`��w���W�^��l],�/�A#����Z,���E�����W�dS�m�?j������/UZ��G�$�����|/�\��z��)g��%)��m�w��"�+�����Ng�Ghi��7�#�!�����q|����J|��'vg�?~-N�
�S�%{��.�
��w�bq�q�j���_�_�_���F�m������@�����-����/���=������]d��iqL!Se����l#����6V��_���i��h��a�Qx����_x����*|����+�
L1���A����x2ksQx�H��f����?���?�I�Wo���-��{���f����7�����������y_��]|��1���1�:.lX��G8��D@uL%{?IL���J6*��9D��"�`���^yA�Dr+�l/���y�6�����`i2V���m1y%8N��?a�#���P|�
�����dY�Li�]UnN����Xz��'��(�<+yD$-����5�->���������M,��d������AlHB��q�������&�!�m�\%��<��%zZ���M������������WN��E��	�����Qt����+�N\rA3h��uCz���,�q�� ��8����zbV�=�'7B���������
2=�!����g�6KT.�^�%�-YHs�N���7 h��lt�,���[T����wKz��l�p<�|@D������H^�C!X!`����L-}Y���/k�'Gz�Q�J^|\����0OF�0�g�Qw�����~�q�M�R���!����0��&��-������e�t>�@A\(�Q�:<�0H���"������2����\�����1	��#����
o�YTD���d���m�=n���9�������9�n����t��_�5�v�
�~���Pw�\g\��!������2���A���&bSN�����l]h�v�����,.�%1y-�����?%�_�!��}��v���Z�c0�M{}6u&\o�B;��8��d/YG�$�U�	 ��,�{���b���[$Bd+��������2-Y:M���z��I��m��s���~�S,����j���'�0F��y��(?���Lh�\�=�He���y�-*�u�]~�8�O�W�`	BM�v�S�E��l~��
���+�}@����4���a8�&�
e8`��J"HF�H}�ai�n|\c6�>C;��	������=Gp3��M�d�=��=B#&�
��uc�vB6Zu�x\_���)�o�[P��Q6���I�^�������]�4�uG�I������pm��(?���(�.&<�5���^T?��6?L`�1N�V�>s����4b0��M��
��P�I� ;��	,��s0z����3+"���C���K����z��
�$�ZUE�B����U����e�Eb��	6&�b���Q
��������	�l#U�x�5b*�C�d����Jx��.8�������^�`C�qh�G�H��55BA����V�U/�DW�{%�6~ij.`�C�(�!�Q��g4S��C�x7��f6��	��\#g`��&7E�-^�Q�4��<N���(���o�2�T=U����!���~ }W��su�Z�C`�Tk�Q�6Z�j$�&Z���� �w��(�,�D��*!4o����4BGg[�l25LL�5Ztm�y�S���7+?>��1��q����L�&�h�`
����������K\#��Ku��g����J%uuj��B�>)�	�7��tx �cr���FU����ua����:��(��U�:$��#e��W&�8�����v��nr0�}l����:T�z>&'�`�'4C��M�E���q����[���0`Fv�n�7jT1���R�������F������Z�:����c#P>��h��^���#8���ilF�P�&���
���4�_fw��1�*��!�W���C0
M�l��|������;���`m��������j��u�r��������nL�����hP@��\�����W�����8+e�B�Dm$d����6m����{\u��-j����eK6C�
��:������!��=�3Q�������l���1���F���y+���C����� �W-[w���u��Mj���]�ptmx��#������A->�&����:�T'Z�U<���<�{�6��_t���y�O�j�Qg��8<��r�:!!��&�~��5T��-:�P�����S*�����a����5������+�~e�a	(vS������"!Z��/-��l��	�������r�Ez\���O�6��,�x�n8�2Q������z	d�-4���:l��F�A�<��V+pz�����vc�S�k4��B��;��EP1,<����|?���oG�t&b�<m��v����H�w"������5��qp�$��_�}�!��{^�}�
&E���+4�g��-dr�V���+��[�)SLp}�a���J�`�Y���,��b
X�
������5�}����	p��?���d���g�-�2��r2��5o{�*s���tN�s�����3zB���.�H��3�jh���r���nu�m?��?���������3Zs��V;E0���l��!����I���1�),�d�������5!@>�$�U(
�Y�@)7��r�2��Up�:�����0��(��G��>�`�U�_[�%
�5�����8wy&�MJmI���#�bHEf�5���Z'��n�l���3�
���f�a�`�&�p_;�c�Q�h
����(/j"��qZCN� ]##+���t�y�:�!6&2j��B��v���~��^�
���C0
�Y�,��t��?B�R������r�#8>LLXq�n/=�&�PW^�0hX����r�m���W/t����?���9y�� d�nG����'#�i�<.��S�9�G�	�r�F��Q[0iSumq�L44���P^jb�Q��&���q*&-&��v�c��<z��T�b�5�y�]�v�F��5R���i�&^dTx��d���k>�����8.5G.�?��_�!��j�Y��J��G�n�[
��������+5���	��e��������977���ZE�
�3��@}�u����+~�a��6�����}h�g�h&GW��0�����l5A"!����<
�T�wp���u�\*��l����w�����hT����k�����s�-�����EQ����r�|Rl5.a�g#FqRcd�=�5O���C}}{j�\�PB{c"��o������#RN6�y�#�GMV>Ve�<^�9�V�?�
E�n+2��Y� p{�q� ��Mw�n�����MZD��NB���&_c#J�^o�CU�f�G$��#�+����+���^�� ������1hq�� |La�ym[VP}u�5�eq�G��<�U����k����Y��f3��X�a�q��W�SJ�*��X����#(��AB������~���gv��]\R�F�;�����8�
r�dz?�[M��dG���a�g0��O&E�}5���'�
�����5��cV����s]�l����� ��N��m�����X�=��%�8>�5��,x,�0%�
�SV���]���D2�����(�����$�I���;�Z~?f�[/���g��"c4%k��
������Ia&������z�������2���PV��|���	{p�|*�~�|�����&��`-\;AO7O�1����<P@�+��
�<`���#1%Y�b*������G��z��W^Q�xL�]�=�`3���\�8s.
���P�"���Z��e������7=BJ8�iw�X'-��p=��!	������5��p����%��X�����Cix^�3��sF�� �$���� �-�y�\h.���2����`�A��R�wQ��9�+S-���z�A���#��9����U�O��S�
R=i�@������m!�"k `��xk�Z���Ivd>��I$.N�Tw'��E��o�K�LH����b�3xn��`��w�J�
[�KG.�3�#�fRW���R�&��x�.D������(�&���6xK�JVl8O�AJ �}�8��L���q���:���J�o��fi���em���-pg�jQ�8��_#��H��q�>�Q�F�����P�l��@��D3A��S����}�
��q����fk���K�S��h������CPi�mF��zg)���������z��k�Br7��f������f��T���_�!q��
QO�m��� P�����~��{A6���y���@M�^|��O�����<V�'��;a�4����=a�Fb��������<����o�+�i�5���#nH�%=>��nOHh<�95���[l�fb����
Yk�+V����z�k�%�P�)��N�tt���^��2e[��[8�1HSgn���2b�N-T�)����t����I�o��Mb�d�h>j��Yi)3�5k�hz��������r��61����Wj���ityZ0��������
��
Ytu��C5�]�(�Z�0�u�Q����(7m�Br&�lV	��v�9���p�� ��R����s^�8�P��`��Bf�I����!����t�����JK���$MH�OlxMZ�t��Xr^B�����#�$o&i���Q���w�w��:
[��[��X�7��dj�����p1Z������bFM�oj����f�W������&�,����PT�{���F��vZJ�0�f*0mk�xV1���+P���D%E�A3�j�5ZBd�*��5c?��Hc��&+w�E���6J\:��!�*)��K�q�T|(HQk��x_�Kj��?�TP#�+���5'wT���O�����������W��wl	?V�;��F��C���3Z�;�+W�����p�do���X��4:���������num���o���5��l�������ad��F������>]L���}�q�x�%f�a����y�6lo�Mn�z@�YwC�A�R��Z���,v�A����p|��
������P�DX������E�Z[A�?h���-K�`��]������<R�\]�p)��S��MjS�cWm���r�x�I��������dh!�&��
M����/�a�i��C-%&M��n�Tk����2���uu�A5�g��h���:�y�����H@�Z��q7-���V���kT���� ���[�AF
���o�r���L���l���Mf����l�(�s��?�<��+�����������L����]��0�{��0x�.�s��g�����"B�G�����[#�slZ����
"f� B^?n��q������e�G0^����N��\^#��w,������2�Y�v<p��'��lqP���r��V����3��$��\{���Du�L�y�R��&�U��9��w���U[��g��?�35~?��9�b/���P�9�N�B
����~O&�}[oO�q���</L@����9K7���A3P-��
��w�
�������PBQ��0|��^���x\dk#���!�}
qZ� ��t+H��`�<����+g�TJ^�B�����%��T�QUe��~��91M����!:�8��q���i�����N��)j�0�rl��#�<;�8��g���	�!6�I�:�������ep��h��l�t��
�:be������(�3�4,L�[m�2�ox3@a"]QX+$J�<LM�#>�����V(���D�9C�O�m	$
?f��x�N����Y��-H��\^g��m�il�4j�~�A����~���O������F�x����hB�|����G����d��G	�(S��4��]��U5	t��C2�m�������|
�c"�Jw������fc[/lmk������i+�3)����6Q,=����i	�w\�Q'�K��(J��q�QV�X�o���h���
��Y2�������j��*�� �������k��y!�'��8I��k�9 �k�DF�$I�<�����W%�{��U���A���<V
���"�]�A%aJ��m>��*�N�BW�{��^����+��U���;p��(_!�k:����G��������a`��M��;��.��}�?v�G�M��p@{W��OU���&I�<p_���GD+k��/]�?nL�lz���0���,��i�����I�/�WM��/p�4Iq����^���p/��^�YJS��
5����df���EbA�+��j���������y���v���P���j��1/s1�\��R�k��6��W3������+ z��XL��$�n�2���K����y�����j���?�K���^����$K".�/������-����*7���
����is��j��D>V�����t	a�5g���/u��4"SB[��8a;���
�4�����l�S�Y�����M:�Q�ac��fU�Z��k�6��O��WO�m��>&
�:�������
�����AH�fY�����L7?����{,�Mk�����TbE���9� �nqo���
�X:��|���=�� (�v|��p8�I����g��fS%U
�����."����N��\�evk9��v 7��0�7�Xs$Z���Z���U�:��E/	�<����U<��f��U����5�i%�0|4�k�B��a�H.\h����o�` �e���Pm3|o��=���j����0y��	�,���0a7H����|�5�S�� �f���g����pk����~X�:�����^�?�7�9nr��qXki��!����i�v�� ^�/p����S��b�X��~m�mxqzx@O=E�O�8�
�A�D�}�F)�e?�k�Z;��;p�D;rD@dD����m�U/����]�}��M��Y%���]o��;�s�M&ka���
��������HO��S�D���j�&g�v�����jWM�(�G�m��`s<�����B{,\���["t��[��v�����iH.��$=�B_�i
���Y~��������z��������
~�pz��5�w��"A3+I8�!�pZ�r�	"��~kN�16���ap'/����<����..#��(&�OrP���j!*�d�6NB���kP�vL���G������{3l��&i�(�cQO�u�����9��iq��
�7��l��V�	�z)l��X�q-uo�udOi�m�����|�+[JL��E	���u�k������!�'5�K���u���C%���i;�����?*���Y�*e7f���6���)8��������i�F8��mQ�����K�@��^�������^
�N�H��PO�lH���_Xq"o����Vni���z�8s����A���^-������P�Z��5���Q��������n0�Y#�=)0=�RH_�5��b������0���H��'��
�$�O�A���	��V��` ��F�uB
����?��C�7= :}{�C/�[��v�F��p${ 5�g�r�;@�<�Z�U�M2$�����&D��F^2'�u;�����'|l����C�eh�r��o�}l�����g�j`���b�!��y���Pb� 
����a����K�oQ<����
��pD�q8	�(3y$���P	��6>��T�F�]��!\"��I D7��F���t�����.w6)*M�9�%�P�m`3����T)�"9=�m������S�#�F��bL�4�|��kM��P�FW���"��5��M���|��"a/�|M�M�o$��������)�D%����{E^z~���W98@i�����#�����"����5�ps�H���R7A}�=M���Hm"S ��b�t�����6�QL!K����}��Y	����	�~��A���yI��C=��|��F&��x�� �+x�/������@Lu�M=�-VP~
GqFC1u@7��PR��a�%�5;�S2�|�q��b������K�?pN)I���
�.�
(�c�6[Z��bhyk�1�KzK|�
�����U��(�t���7��$km�c�*�X_�W	���q�;�pV�����+@g�����H�
8��p�;VrI�@���B���8x_c�'�A��z*���.�!-IU��h4���P�,a0�|fV���'�
 �E{qz�����1C�1R��!�Wl�!M!�%E�|����nHy�kja, ]�p������X���E:����jX����@A��3g��68_3��G���p�]�|f!0Z?L�W�s��^�C��#Q��q�Io����9���&�w����c^�p���#��yQC�����.��+GZ<6�ba�;C��~Oam���M[��<��q{��,vm��fB�0�whL��f��o��19�'v�8��[J���DLF�O���Oy)u�Cm0p����Ab@�n �j��y��b
�U����e����l��x_�w5�����M;��5}8�Y��<����$y��H�)�-��G#�/PD%M����#]�N;���u�������@D���W��#/�������e20M�A��)�h�
�x���tN$��)mr�*h���B�����_�~�Nb�_d����L���4�Z�T����J�K�
A��H�r�����+��iOms,���d�a���fk��~~4�PW"S����9��x���y���r����6���X3��N���Ma���{��C����6���������t;My�A��L����x�J���S<mPz���6�d�$�E#9K�"���2�<ADj��m���S�����!�N�����#�$e|.��CC<���e��Lp@11��tA�+�M+BB)��4�����M�9[}����Y�"�t���tb$�tF1�gH�D�J�-J��4�d�5$~�9)�N���N�-A���6Q��f�cW)����>��Z���>�l<�lGc>u#�P�	��`3��������S�P3�x�'��J��kWe����Nf���Z�P�t��R�U"��:�/���c�GZ����K
�����6xn��cH�IC�ds&3N��:�b�8os��ZS&B��$n�#��&��������/
o�2������
��S��C����7���+/nm�<4+��g�@[mX����&v���@K��C��P�Bm���h�&�;�����%���Z�8qr�����T���
�?�0��(����@����������:q3��3G�x3�ev>�p�W�y��[�(�������}����,�~�����:���PZr��-[��%��������p�9h_�^�����VvAzq���.;���3�u>���0���2������]��!���ybWn�������&�zr�������oT�������n�3���sq?��!r�����WL��N���^e����[�����8A%x'�xx��R��7�e���}�wHD���j��B����n�#��1<2:�(�u��yd��AV�L%/��r�W^�y��8/��%4��|����G/|G8�xN*v0�{I���O�'�,O�1�	�'Ip��Gk�33��~n�$n��]��<P9S���Zg�}v��E~�2�Ic�l��O��~X�������N�q����pYo&w��.��R��������Q�%����A&����������V�&7G��V�R_�q<uj��>
e�"h	��� '�5=r��a��H:c�Cj����Ai�J�.0x��cQV\]�vA-��f���3��#��A���D2�~P���db��`#���7�S�)��
�����)�P��v����P�+�.�>�v��8o��eX��_E��Asn�#x��xE��0���\ec���R.�������ie��p;]M��H����9V�"�^�1��LC�e��z���z�]��z�$�^��z�"�^��zc��L����g
c�!�
c�1g	c�����ia�����Q�,�������I}P]�-���x�)���z��8�����'���i|<Pd�D�6G�	RP/cy���|#����I��y��$�na������{YW��H��#Y�$u��n����-*�$r���@��9P��L��FAX��c�$!�����
�l�~����c~<�b
��2:T�}�����Li��e������o�zfqA.�	�u8J
+�t�~_P��,qf��0�/Z������3��LZv��/B�:3�B��l��p���#z���#�^afw�j>S^��-���8
���@p��i�;�3}�e��
��Oa7����Y�!��E�+�8����[~J����9�;���R�Bw&���_���?���"���E��2#��~I�#������p�Ee��Y
t����o�6q4x�C�]w Pv5��8�0njk�������m������M��`����
����v�lq��	�9�91�R�Wp5Z2��
Y����C�c9�4��o��;�s$�����3V�b~�!������+R��	\6���h�je����;B�'��!G�%��LAem�gn�w�������^m�=�)�����p�n�AUp�����/�b�x��f�|���j��	@2��Y9��I��.mj��;Z7|T6�R{�v��Yaa���=�B������e�o���F�����t�	~�M�(���T������w���<p��SCM" ���M�����q�"��1.�_CPy�C��W��xb��H�Qe�f���R�{o�C^��K�n���p���v�"JN���b������(�a���b>P\W��Dq� �������:V_���~��T	��7���0����Y�������L�C�u��e��`;p!�tFjx��
���M�q��_�w��Ze��"��Q=A��q��U�'$a	�Y"��44����g�bl�i���5���/���)-����J�V�P��c����W��e��A6�G3cho�/Oe��+�o�,Q�rNA�1��k����z��W���ls�K�@j����%�W/�
�5o5��A��4��W9;+Y\8@B���(�OTZ���@�^���?�����%����2�T�#9�nP��$��3�SVD����m�
�T ���i`�������J�B��x�W�C���qS��e(,��b�oU�������A���.8
���dX��T+��b��
���o�W�'I��]P��p3�f�(vJ�2�x��KT����2�=�������
h3H����V��![=l0\�d��8,�}<m�7E�Kq�Hb��c��'�I�C"K�
�v���v�!�e�Y�����2����fh������zC��?��6��A��tQ�����.w��p|*0��8@m
��C���t8�tH� ��>�m�AB�y8z]���������U�b�q�X�$�2�H���``��l�� �6��'����/��s�4@���P��9�����IH���=$�DH�n������'���� M�r
!i���}���C�?>f�X0������5p�N��H���uxb}��'�^e��a�B���T����s�8J�Q'aS|�C��US
ST��Q��0�:p7�R��>��!���\`���o3�p��p7T`��?��	��BM�J ��������-;c
������2}�Q�'�T�����zB�*(�Q[fW����	�#�;�)<��Y+r���HI|��u�0�[s�2lE�!\M��CX�GZ�]P+��XDI��C33�*�Z\�!�$�Vq��-\�<
S����^�Cd_
��g����Q�c8	�3&r�5���B�Qtn'�l���Qxi��:�1��;.iLz�m�
��2?`��G����P]�87l��t�	A�1
�t;�����se
�b5Q�.�:��^���<���Nz��K7�U���	��}����'���>wQv�a�P8�=����Z���U��C�%�.L��U0���t)�!�e���4���BhFv��}�L;n�B����v&.����KqN;��~��qxd�VNg��Xq�(�1�jz1����r��E�H���Q;#MC{`O��9��r���+�j�Fe/��g2�6B�(��e���
��;-��������js�����t���o�n�:���3vNk_,H���
����$k	�-��:�D�NW�������i�_�hKB�D�%8�S:��Ml����	����A��8�-Zr���������R���08|�
��_�+�����7������<�s;v���N��@),�n%�x��~�s6��{��&*�u(�,���"M���K��K�:j��v���1�.9����s�����]��~�����6�W�����$*P$W�:�V�c�Z�A�e�5��������'�3eJ��W���l���ZEr&<�-���tJ���^�9���J����d#-���U�#h�u���9qD�`�82���Q8�B���
u��C��Vm�{�[�b?�KK���{?pC�#3:c���h ���@����<��EV.W��#������L���;B�Ca;�?z�: ����M�#E�P�T g���4H^4��o���P5g�b�B������1;m
����+���SNp�b�����@iX��7!��DA�	rz��S����4��T��~�Jm/���
]���_�(o�x�L��p� ��@F�,�=
0������tp��:e�%�����xTUW�$0�J�`g�h�g����� ���g�]D�����m�����e�� <��h����7m�<����}�G��n)J` �.���o[\���eYW��������R�]��*-E����`�6���u-H���\�Mc� �m�2�����Cz�5XBJ�]o��M�[�l���[��E����wCD����!+w���Z;��De�hp�n3~��E2M���l��8o�4�A�W��~`�np���Z��!��3�c���dgM$98K���9,'2$Z���A\_��5���d%:��y��b� k���)\A����(�xB�F�l ���N���E��k�U7UG����3��CS7����#�;���E�-:>��dwG{�*�hZ��Q]1��b����0�u, M*`�"~�=r�
�H�j#��='n���V_
p:�����)^$����D\�����V��;���p�;����/`���]yAz�F+%�����3j1y�,��@4+KTo��~3�1���#wpF�,[��
�����l�[+�����V�ms�i��������`i�q����iLH�|Q��iM�1j.�#%��x�G���]��{L�I����8~����U�C}5E+`��� �T����=��<eO�I���+��D�f��A�L#1�<bR
~��|
����0K�m��
~,dv�����P�z�#�6k]����d��xM�D�7�����\��uv������5$����;����j����'qm�@,",���:�u�r^����~�q@ir���j���<��oS���g��[i��/���!;�����,=W�SyZa�-�TA)����E��"@-����o;�"�$F�e��������(�L�f�����~t������m9��[���E!'�����97�t�O������F��&�D�V\������6kYdR'��d/~bB/i��B���P�`4]?����o8�-!9��'�t��%��
'����L��7�:X��9��< m
���qR�m7���n����-��S�h���E�$s	FQ��]�2,�(PX��N���%H�����m���R�����K�D���(5�pX	������ ����20����MY��*tS�'��i�7C���%���HY����KP��4c�xsE��@��J`�����M�3�#ei��)��`���q��.��Q7vFJ����.�)�A��Hs'��o��
��A��D{����YN�	'�<�9�������8w�p���jo-�u}�2�%�h��2�5
I�Q�C�Ht�#�,&.��{^���8�����
��8�5]|>����b�f���j5�Z����f��R��d/o�hb�����;L/� =3"q��bb�����&�����D��8�-ej�(�A�q:	�4�(|�?\	���������Rou��~��`����h"����|'�U������,1�X���j�l����8-�qrY�#c�e����O�����j���uC6��Sr�!LL��A��=?���f�l�B��
����+���5�2��������K���;(�&�54�����2�`Q�3n/���j����@Z��%N
��D	@�H�����s��(����&�7mT�E-�&���#C�D�����������13zb�AF^ g���]�����E�<^&��B����������Lvd4�����|7���87���u�`��-��4��n=_���k�_�����W8@{(�xnE�u���C���w����Svj�%��j��[�
/��u���n|LOH����h��0%�YVp;��9��z�����6��M�TB�.��������������z����)�'���q����I45Y�O�I���j�H:�Y����8Q�V�&�+�I�$��'j�m����\�`SL���P�/�wU���MkC�Ys�}p<yp�ObR��!�^f�`�X��v������d����>s���w�ia8�h���R����z<��b 6j<6x$����_e�����A?w��]��n��i�6���-��������=��f9q��m
$��E?����Ah*�6��
~�A �����5�,���]#=��;�?����������2�H��9���T���Te��;^��s~���>���j���v�?]*������Y���~�f��yNU{�3���D��z*��O�j����O��*�u�`M>#
��6w��_�|d�D"�	� y|"uo�����Abr�@:I��Gd���m1���-���g0��@mu�;�Z~?f%�d�� �W��/��bO��<�f������r{C]�����=����	���}	d���PV��|��U�{5��G�~aj�.�[�'���
LS�W��}�����m��z��>��YUGV�G�JJjZ�$/���}����EV�s�I�z3�j��Et����+ ��t=���-����t��L��3��!�%�.1���L�!!N_(���x��f���jw�@h��T��A�et���:�j]��3Ns�����3��=��}cC����;S�hC��^���8����TO��k} &�E[H
l��X��[�\��>	���GC>���	���T�]^�Q�rH��N�b��a�?<7���nh�����
r��:E����)5D��0�i��P{���xK�������$R<�����0��M�����'n���H�<~�7p���4
hH
�f��?h������;��^���5w9��{�v����+�!��.����z���:s��%K5��|���'r#O���Ohu����Z��Po+{HO������d1�q{@�p�N�uNO��>��wYUq������N��������%��X2��/�����4��YR�x<k��`��@���|g>������W��F��hV��C�?4����
���.#^aK��w>���|���H��0��s�6M����i��_�C`�<�5.sAyM��A�C�����D�&�?a�8~��9���]$��2�z�/j8�p�i�L�O�M�m��[#D$Og�P�9v�h�q�wzpa�|��k1�����FuJ}8��3j��_�d;���f[�U	������;��@�;M�@�o<����K�@L$t�-��<t�%�;����P���q����_�u_I�	��1��1��S����.X��0b���7����NJM���5#�1�f�j��2��e�W'���������!����N��)�3�@U#����s�����D��������|v!�0eI�NP���&%32r��������w�}�&S����
��t���!��qz	��A1	��3���s ��}�c�lA,2�0���]�������\��7*�t���~��$����e����Y/�\c6���'�v���3N�i'�aV����P������ ������������qD:X
m�T��������[�
�����E���4~��<��5�k�����T�J�';j�r[��@�*�za����r��Y�c�^���^�?�a�g��a��'��
������]��t�9�_��\��������9����
��?;���p�Y��E7�c�I�@�k�13��sj1�����5o�I����;A{�A3E:8��@!��Q�L�a�aK<T`���L��PJc�NvZ7�N�
��
�kd���Q�G�L07�����)�=����=2�v���E��{;�vuu?=o����^U>��fn�\�l��Y�����~����=��Jv�5�Tv��
��8������i
�[�[��u{{X�\�� Ac�2���(��f`8�R�����Q�hK�!Y����3�{uf�d��~z{gW�t���I,�3a�#L_�M[�
*[�?����k�8������1h�.8z�������=�e���N�w�+)f��3�6;!���	����ca���9tiSp�e�Mb���. ]1��G�K.0��b���H��]y���
Z
C"[Q�)-���=��^��K������0-��.qw�P�*@�|W<����RH	7�\�����]���	\�#�)7��L�_a�`1c�f��xu_��f�D��������X,0��&��ZJ��H�L�<P5��78�js>��#P<���4�U�i��)y�K�)�|�x�����j��O�d�Tk:��(��i��Y@K��@�Z�P9�L0w�n+��*�=<gn�/y���HNG��	38n�%��*`n#��:�� ��q�4�k%y](cv���bu��W_�u@t{v6�p�l1��B������R���oE(H�H�FH^��(��>+������Kd����e{�v>���Tc}aR���uC�%y�A�����D�{��w}��[[��	�8�4t"�;���Rv��
�$����,� ���&��0N�@�������Kr������C�6����-bU���-�\h]�dP
L�?���������Sj���S�����,�*�EWP���D��
��>���=<��G�3�{
�`�y�2��w�e_C+%���U2�M@�����F�|���#(�&��|!����1jz�t��L��+�<����%n�~[��l��A�tS�U�������NQS�e0^�����|F(k���}/���|��g����������$�E���a�X:�"e��g�����9�mPF�U���=*i�h�n�$��X)�A������$$o@�-p'�&���f`!�S���{�@s
�6��)�%0��0����a�Q���O�U�eqx��_�eV����
V�LB"2qx�!�x`M[*�3u�k\j
��9�w��F�^?TY��i��Y��?�5.lj�F���W�}U�GLj%�H��$�+������0�+��x0�K=���:�$l���5�	W��#��L��G� �zY���7��C���aN='XR x�r0���wO��U���}}X>���]xH��M�>BH��6�4�U���8�)��������e'x�Lrv	;���p�se��p_���'1���:5[O=$�������z��!���X�0r���H��� �a}����$T��GT�WU�B�=�?�\i�����2^����{&�EF�GQ�����Q1.��v"G]CHG�<���D�-�q���G!+q_��p�b�����@;+��t��"�e��^�6Gb�����������&������ng~f� �S����|U&�~�bv�]1�B��wQv�(t(�T</�hvxh|�vl�V��:��Wa�����y�����>7";�����.d;n���C���������v|�u��*�q5��������^[<�j%��s.w"�X��N���,DJ&��$t�����.0Q�t�9�X�n?O��A1�����LaE��.�}�u�j���u<6r�N���i�{�'������9��H
p��$�i�N���7t�x~t��J������:��|	g���W^U��b���6/���������Cu*�u�#����z���M=����npv�Na������������a,�-h���r&g��]R�LC7�z0c��85A,B79�U�f3���=�+������T?r�^�1�����2T�����S�����f��O�����qA}e����{R���O�~-������tR/	f
|�\������u��<Z�u,���Xf�HE�Bv�"�8K�yPz)*j����(�m�r�\���(`�E�&C^�����Ayo}��+��9.2�X����%������v��F.\?\v�H4�����pwC���������|�m�Ew?����Nf���|M���'n^yq��t������������*���6l��1��Lt|{9}�n{�����J>��Wf��d�_�&4�
�vr�D	��D;�5Vl�7��Y�b����f>3�9EU|���]����l�C��2��V�(�p�<��������.
�tPf���3>Vrr�$�YN����B\!H\�G-s�IT'�}������r�������Lo��>w])�P�H3W������y�V�5�d�u6��u���~#&���L�����( t�LwR���l�]Zh�������p^�B}��qf��sC[xN�l����3�i)�	�\�r��4���|����NT�eGU��%�:�S�����y�
p�8%*ag�m�X]����7T+���T'l�x%�)4f�h�C6�E�����sf�D�GM�5�n�/�9Qv	�9�������!����d�Z%	7@�T�p�50�:�`b#%�'�-;PK�4�jG��8��pZi���oL�\��C��x��H���}��A�������yf8���(�Q?0Op��hW�H�2(������D�H��g���an��u%�2�y�5����J�lD<��FD<�bO�#`~�L(m�s�c���2�8���L,��@t�].�����e���,�G,��Kw�
�j��vW���@Q��vN_������:�7Lv�P��U�rr�E	��l�i�D��(!�������57D(��M:z~5b��E�`�!�6�\RB���EQly���$����Uc�6`\�j��E�m��-e�t��2��x(��Q���pl:*cj�`me�u�5%_�L��+�v!�'`2�������{�U�=�&�7�����y�A�&puG��7^��
R��M;0/��i��1EX���xi�����dP�����rE��p"�M#H��~0�[���b[�L�CUE;V�~��i��`�r����z~F+d���o����r}�A��b�a���������jx�,���>��ORFz��3
v�W���T/0\�kl4p��3o����<�:J�*��\=��LH ���]��O�$�(�t��d@v��-�$7!��+h�"*�l�"���@s���o�����=U��:caOdq���2�z�� ��$�R�i1��	�tC�t����e���u&��?��,F�>\
��Lw�r�D�5�B�/�`|�+�R�t\w9p�B�%����z�I����w�l��?��=]��Y�������
����@z ��)#L��X��[
3=�B
\
��.\�A����2�L#tL9�B�u�t���A�%�8��B����������N~wa����9p��:H�V���a�T#���'h*Vh�t�4����b@����T�:'�|�f�yy.n��	\�`���j((/�(��X��}p�$R����!����W����`�ViY������J
-�������|���e5�~�29�]�_��v�^&��9�'�O�;��Gp�$��D��e�w_������G������:4>��Cr�y��~���m��(��B�i{�����	%u�3/H^��Ot�#���+���+������y����N�����J�����	�Z(�c�����b"�j0�q���D����0���%�t���A�Vd{����{H��1.�s��B~}By��L��o~e�Y����%������G�� ����f��a'��>rq ����,�f������z�n�(aG��S=�3W���i��J�?<7��p���#�%3�+EQ��������M��]q���DP�HR���H���ya��ph6�6c�������b�-'�����(J:{�l/v?�2dn���a������a��H��0�0��?&��$	1��X�QUT'�!_�QLbJmb�*���p�P���6��!/����W+a��
�P�r^,d������H��MR��Gs/[�m*�=��n2K^���������~��;�2���9�)�c4�c���Q���Px�zu�Gh��K�)w�~=��p�5/��#e?j����i��
�j��
�L,����qC'�W�u~���������
63���/�_C��L��{302�1u�{X�����~�{�";�����������Mo�&(�!;�b���IYq��-<��l���P�Nnd��[�)Z����������eU����z(��2��T|��;`Zn��GP��oj��w�U�{>�!�@#��]�k\n� ��i���6C{
�dC?��i2�,����(c����4��$�+&���h���>xDFk��?3)f> 9�`6�*�&?�����d��6�j�a�2�h���)O� Lc'����� �}�O�}A��Q�rw�����;�v;�����7��u_|�������#	e88�=hN��A��6�b�&O���z�z���@�
��,����)�����p`Qa�%��!E���G
_��@�Y���QL�>���n44��)
�A(�Mug� n*���1C��3,s:���3B������#�5?"Br�����C�3O���PS1����T�
,GFQ���n�xl�a($�]��
��<w����rQ�"�Ck��L�����b��\���;�@OH��m�~��)����`)��#���M����7
��/�y�=/T���8��H���d:�������:-����5��\����qP#`�a��2����
AJ��2���w�.���u"�j|d4��D�c��s�����W;:d�����&����eJ�%��7������:��?�6��O��J�`���+�����wI�}ux�>/4]#Y��E ZtxzNc���E�O�g��V6���d�I�	?���Z���d�xA�����TtJ�D$S�����@������t;�N��tSLk �h=�x�{��#����
O!a;��aj'���r��FI`-u�L������3��1hF
������#2���[/gvI�S�������$�i ��}�P��X�z��3gR�a��H�oWI���
��	��Xu.����X_S)���z����4O2��h���$����Q�_�^E����Y��`a-����vA�>�)���D�u���0�l���X�U����b�f�W����Y�\W��k�;�#��Z��U{}2���]U�;��p=�U������7�����*+e�D6�YY��XA�������C(�j=1�������iu<�1 .}O��I����B�d�Xyx����u�_`���I��xI1�9!�dG���S���A���Uu;+��&a*0rm ��������x�q������e{�Y�� R`��~��'0�����-�8�O��?�7�H�n��/���5�t2g���+i�d�T��P�	��!a�zI�v����EbwAN���dT"L��H"��)`P���U�]]��bS�
+hY����p�\�H��ah�!
�[ �u����{b0�!��K���$�e~��TL�h�9�t����������<�C(��c���i0��hJ���������g����-�x�I�>����I�����U��qN;�z���c1#��3��g��P�?328#z��PLH4=!Te�9B4E��D�j����c$�+k�2��`
�������Y�����:W�,������:����&$c�69��
��;�<�����j��8M*���-2�^9�?����0B���(�����K���UE�7*rJi��n1TZ7����5������K�R����I�6p����S\���YT'�2���e�x�c	b������_�\:�.�������!Z��WRwZoG��E�T��A*��X?�	�����o2�0���]&
������A:"�dT���0�I>u��"=.����b�����,_��-7�l��
�P�!2���13����^��7P������5�����F{�o����1 |*&��u��v��
�S�G�E���P��m�����2Lw
�����%�_�'W��~�`��0���<J<X��������8�V�Q����C~q$�����#�Kg���[T��oQ��]��}>���"Bl�#��+�*UA���i=�����;��U*!�L�����j}�F��x�[�]���x�E��^��$i��������CM�M"�
�4<Ul��1mNz[8�!�{u(O{`�����3-�Z����&a�n���k���B�I��Rt���sV�����GS%4o�
���l]|��������[,������!+]��nn�l�a������7�����-���)��P\��	-�����6�.Z,��t����u#-A\A�]��[H8g/?}k���Pk^���q�wP`��f�4/���#�N[�r&zP�K��1��lw���g�?��	�{�������0�����d���K���w��e���l�O�Nhu�'&4��+�?Z^h���+�U^b)-n$�������#��Np}�)�d`�q8�<��Q[AY^�g0r�\(��������cV�.!��������j	��~���?����"��9�y���*	o����+%�\������������e��SY�M����{X}$^m��_��||�����������{�B�*
�����=��(o����~;q�/�������!����1^��).;����R���2�`#?�j���MT9�)2���[B�,i����x4��%d_�n�"��Q��ES��\��m��}P���e��,�`S����P��D���>>��wO�
�
t)���q\�e�>�s��-��fTo��!4WA��X��CR�nO��|��|��	
��U����]y��W�����  #�O����<&�����T`�!�s�%��
���H�������gy�[\#�-���v�������>-��K�=b������
�>>�1$����;���@I�]�`4�����x��>�����j��<�=��T�qJ��~�2�`�����+�'����3X�b���mE�W0<�_�&���n�3}�w�%[C�
V�4��IA(���U@�U�&W�`�U�W��;���8Rpc�����0�8t�n~��v���(3@s�;�]�s�(b�z����������]���B���?e����.����yp}d������=`��3������R^�3M
v��n�8��|z'F����Obt�%p���Aux�MR@2��hZ"th�]������.����]����K��������]�J����80
WT�!��,|g���ch3U�W�����������v=��KnZ�Yg�,c�%4�X��u���>+��=@-��<��X=W)�;qf���{x��i�SCc%B@��u�Sh���T��B�����356x�8S2;!�c��+m?r�Aj��.��x��i�Y��r_5��8��8�6Ra��uVg�����o�7���w�3��I���';a��zH##���YUI�}�f%�'�j��`n�J��<4%�&��\@�����"@(
7=�F�������3	a ��
��aq��`��F;/f��#N�|pu|:U����M��Q�8�^�&$�H����O�g�T���S�������-m p����zx)2��*�Y�2\S����}
�T.���������Su8������w�f�h��4����%�0��
g�k�~[��l�r!)x��c�� #����'D��G.�-c0���1��d_���w��.�^�e�t���>n���,�,��X��d|M5\�67"Mp��YHe0-�h�#8���5�P�@��?D���w�7�R1 ������w�d0�%\p{�� \@-�M���qAF���P������f����=�+�����
`���@t�Weq�c���*&�db	u5� T8�i������"���p
I�Y�]F����,y�U0S���B����/�����:0�}������Qc�!T{���\�"�4ng�����HA�	��H1��ph
��YK�.Ef�h�
�����rc����.c� �V6�f#�f��W����Vx>7.&��0��{8�z�|M:�{
��t�����e��"`o�Q6�
�*��b�c��6����@:��N�������q����5��Lv����o������;����$�#�������JhN/�����;��{7��TE�����J����PfN�}(���
%�2Q��R�P)&�53��	
�'U���d�$^���S��Q�D��Vv�r����D�6	B�jo������5'!�#�\G�l��c�����>�iNg="��(���}g:^���0��kt6�~g�L��e��L>���O$,��r,0Bz���]���_E���y��Z�����W���R5�E
�t���
�y2J�h8�����+H�����q����/A�u���3�O�g�M�bR��8�P�~.��c��W����[��C�R4�k��KGm�EB�����97t�q����_��Bv4������a��d7��v����R�s�'��I���j��v=�������ZMy(��|u���`��H��O\nJ����v�a.�W��@��r�(W���z��g_Cn!%�y�3�'����@��^�Y�{����,���s<@�}V����	K�|��j�.����gO����+�=z7����n��I��>��t��
����Ez��m+��2tV�R�����k|v�_,}<6O��U����2�F�����������T9rI��4��/��Je��&�/����s�Q?pf�#6s�)s2�� ��s���:���N|<����L|�&�������e#�L��%�����J�<v�����IqR�G��������;�Jx�+Q�m�V`p�]��q�7To�E�TA�����(w9Oj��x$o��VJ��<~��#`�6�o�.%$��u���������}lfZW[dK���)����G+=_o.�G�Q��
���-�fH��/�PDjt���kW�2����0��H�
I�#�c@��m�Vd����"W�w$����np���5)5?�W���/�(�.����!#B �7v����o��"L������tp\�X���L��s��n\�jbU����-�R���Hl�)�Q`����P�wV������'f"�M��]QV�A�%�e](,�����BZpB�.�y�+a����FNY��8������
�{�Y������2����cWF���)��������Gv��
Hk�EE�
�������1+_�?SHNh�&0���N�*��!�W�r~���T3����U
vm��b2-�������'���OD�1�
�
��
7KP��bba��y�2,$��j4n�P���@��$��_��8<�C�H�y�5/�u0�<F�pRML���SW���`��vlJw��v{�
���p��]^�;;������Wxj1(��G��h�=�Hu�9���z~(���~���5
�$Zb1��,+����%�#Q��F�rX/�1CE�1�"�HS��3j�z2��E��s��`��������S������.�A"�9@�	w#oy�����i�^I��m������#`,��C�����W4��
�y$=:l�Ee��3��Q�n��Y�xy�d�Q4��O���1���8K�!}�������j������#`�<����q��e���#H�����O2�q�����\3P�kb���4��G����0��&�0��&X+�*� >���X&���D��G�M�A��K����5���G��,\E�3����W�cv��T������|����d{cg��8�ky���p���+w�D�P�}�s������a���0IHs�2Q*|�������~X^'`l
��������/�O����nM�9,���:CJ%�	Y�Va0��e��k��7v����[�9������(��g���D���^��j�������@�AS��i��(*��*]WP��/�-���v�2#D�Y��/j4���`rqU<���(��R�|�EK�p[�r�q����>�l��{�t�[n#O�o�:��Bj���,�o��
8!�����?1�����������Z^�����(pI����X����S�:�1/pj�%�T�B���St��l���_�������t���*\�D�1�2��?%j�bw�k���'��S=�fc�Y�p�|��h�q'k����W��p��5w�_�u��1kE2!��5�}Kw�>�1bj����m�4]��v��xi�F{�GR�n�\��T\K��.���� �����~��:>��B2�uc��_�c�;��^�k z�!89���n�<��_b�kR����xJ��Q��D�\,�BZM��vt�Jp�6�����4`g1�I��g�]'Q�����7�O�c�A;o6�+'��������4k����$��Qp����.6���J62�2��b��
Z\�z&��?�;�"#�����G����A�(,�8��4}���C|4�C��"�����S5|T���R!}�!l�v��zq`�J3Pz ��*�����?�c�����=��{�OB�d��a�n_����f�/�n�x���R���T+2(�pf��������'k�KH;�UDT���=�4��|�|
8uc@oE�t���LE	i�*���E��������Fp\���!����(#JR����B�#�;��7p�K���.D�9�Tl��F��F�{������q�EdJ?��������_�s�
��5�2��I���5�������6���F����kArKb �zl�6h�L�&N�yr�:F�=,x��s�}�{n���.��=:CT�XF�,���g�����1Kqx�	��i�ukn�����d<��c��R��������5�Al���.� "��{x\}>"uq�^ lC$�G���FG�����C�� 5�n���(n����������8q9�y������	l��<t����D��d��S��Euq���q$���[Q�(o�,�{��r%@�����o��v	�H
"�p��Q����m��Psw�t� �|�q��>�����%}��[��i���_��F&O�7�rnM�@��H[��l�ZT-��.���y;�J�L��#! ��D�U$��*��e�����jR�Q�h9{���,u��k���An)�,\a�����p�V ����,��p�������pqmq�2�����Fg����5�.��L��p���	{u@I�����)k7����~t���m���o�1)%�1��5O�B�|���x��\�k�"���>�8��U�c�q���7�]��a��6��+�>@2��f�DK2�K,;�-���Hm��2*1�V���2�����&+1�Q�[rI��,���$�(; ��>2#;Na[�S'�:��|�����p��g�������~`�r����F�`�\�+�����Z����
y�rG�b���)qu������wY�	T�yo���*#�}����h
*�s�u����C$����;��_�dbH62ts"�p�X�P�Z��A+�E/��]�u�7���,��S�$��)2vIBr8�����2v�y��������	��wjtz|��`g�`��HB������ ������n[�w���A����`&�RZ��u�<�]$X�V��������]|G��F���b1�:��4g��\Ea������*7P��!�l�`����R��&FOa�&6E����.4�,9�X������f������2j�*�.0���#�/��|�s����uf�v�^���/�3���������K�Dx�U�$4Q�2t�������1�H�#va��h������o�y�,<o�������D9�.�:�r,a�-9�v-��6���x��$D7Y6��j����%�2�� ��o<���C/'��<&1����8��F�C0���(�j�/�`���}�`��[7�������#u+E���a�pPk�Q^W�4e���"2y�>;g��S&������������P�+����-�s�9����8����H���D7���R�M"��p�L{-�#��7TR8�K��w��Y&��g����;`�nS��t�I��J�4[���j���F�����O�i�j�[J�.���*�sU��g�GO5����W##�0C����/�x.����j��W1S������N���d$nri�o�nm�s5 ��j����Wi����������P���vO�
��?M8��)�]!�uU����VMI���6h`��$c���z*��4q5r1�&�fT�������p~d���Z����iSG#`_�3�i`���J5G�`�D�u�� ���g"�e���9�|pd�G���Yu��+
i�������\!��#`����������^���n���@��R������!/���6P�����i����f�c�����#���n�I;�	�R���a������������E�AY)�o{���N�t��R��4_��dr\u_�����������8>����1K���8a�i\���]�����^F	�
��I��k�@���w�L�w/\m'�I����N�
W�~�y����ly�#+[~�����V��Ou�kyvs��v6��W_P��n��9W�rg��x��^6B/�a�BM���'��8���e��}��p�Z��������g��R
�Y�@!�D�B�\���VF:��ZYa
�K!=�"���1�W��&	<�V��CL�2N��*����?��J����`���x:X��2��D��9�����S*��(�Y]V�S^��N�5c���K\��4�r��1�E$)��^��)�N�P�E; Q�,��j���
���$���������!%��$dCl��0�+t| n3N��	H�$D2��	+�W�~-�d�7e�qH���Eg�;�i5D^a���QR��~2���!��~��K��*��B�|����k*ab����
�(���Z�U�#�4�!�4 &��=G�o9j-����N����j��jL����_�@�&���x�#SONl���"�]��,�VHx�z��=g�"'C`���C�:�f���B��oPf��s����e�_��u�L��!�G�^2f�y��f�^3]�����}[oO�h��y�a���M>���C�uQ/`�-2��"��7�&x��6�AM���"�=��>g�{���Bo���`�%����H�q�F����~������O��A'&�����uu3w����]��w+�Ga|?����~Y>���Ec3#�[�,��H����e�sK�����a)����[���e�����v���S?���?xn�����:�4���<��C���G'��]<������z�����WK+-8�8���j���}	�-=�����J�sWp�x�*3a���KFV��w�����%����yP������F���gZO�{&q#Q����������>�����>z���j3�#X@M�i�	�0N\W���Z	��Y|2zn2��G_�a�~�!/�����I-o����$E����U&���0Xm�*��!�d�!�nW�5�L�D��������$��������hV���sT���H�'{Q����dG�?������	}���������d����{���	��>[,(=p|�e;v.k�K�l��:~H���6U�k��?6�0&
���\C��;Ty�_�LZ/����1����E�e��K��-GqH�}�AT+W�#���	�E����\2J"=�(��~������O�)�
CG"�"�#�
��:�}����E>uj<?�j�RA&�C�K��r���19�lH�K��v��T[�?j-T.�/���#hop)C�H�Hu3!��wF�u�!o��{}�&S��A�A�{����h�G<�������O�W^1�bV�����m2>��5\1����G*r��:<2��pX���Z���H8pt�,���cG
�F�s��Wb��.um��wL_�^!"km�<g�oA��{m:�:b>���t��3R n�2U���[���e���Q��&��lInrQ��#�u�����Sh��U9���uIH2�$�AA
�5��S8=�gS���w���
MM���:�N�_?+R��^�=�B:����Uy��`����m�_�`�~�[���IBY���7�oA�5�j>���]�o�*�y��Ue��Kv���)��f���]R��n��~R��x�p�H\�bp}8l��b�x�0�@�6���t���-��S�'�|G����e��>
|v$�s���v��������>UO�$�����3kD������B�r}Zh:m.���{�{�
������>}�������J0G��� V�N�hR�79/u.g���6�������ek�������k��
�AH_��K����mLh������Z"��������^��O�~�+
����E���z'���}z`�$L9A�w����xb�Sg�UZ>B�%m�2�x�>��l�J�s��4JH����{.�?&>m��J������C���lG�[�4a��n�G�le%[��a	K�)�H���{I�=�#��#]�N�%�H���E;g����u�a'�o\[_�\��^K��.�l)�V�����,��Q���0�a�e.�.��z8r��h$���l����}���������	���E-P}&���iA=:��KV>�����Z%�"����6��"�T�Q�Pyy�KO{�%-��D7f��8��mBB�j\7���q���f?e�rO�xd��Z�gb�:���D��������m�F�r�����
��N�P��]�o��Jn�pR�n�������A�L�]_P�d�����P�\�%$����F���S|�{HKa)
8�d�8��a�>�1�d�4zs4O?�^���.�c�Yj
=R�@���xc&��y3�+��G��.`	���~�yU�
�%^�C�gt�`�c!O�iat��"P�(
"�!/0��m����K�/���nZ#���k�u����,���~��.����K�[w�e0P���,��c������3yc�G*c�17���[��Z�m��rs������}��Z�\�W�+�c��CX��l�S���������h��V�W
�h���l8���=f��+nHD����f�.s��n�;��4������4������G�J ���vb�l���^��`%�r���a��P��U�.���u��������	���mfdR���������>4Zo���L�q�#�!�
�����f��@��3��h:+�/o��1���b\AH����5�E���4D��Y�UVx��KLe�A�LL'�����a>#:��^�_�C_�;p>�F�>FI�7��8S�b���Uh4�O�L�l�n/��n�8&����Tn��0�j)������s����������v8I� E�u��.�|���HC����Vag����r1Z���?R=
a��S��G6%dS���X_��r��>��A�\_��V�g�5������h�c��01{2����q�.�B&k�h]0�3��n�8��=[0z�f���b�i��@���l(F�)p�vZq<�	L�q�?M���l����E���_�xs���w����{F��uR��I3g�/�Ym?z�G���E�Y�t)0�B���������Z��d�?�;�v1��@����������5��W?U�\`���^/����c{Y��{|��5i���Eg����4B�B��������W.����J��+�lO�(
��*�,���V4�l0d+��S�U����b��n��Rl7mt)z���S���|�P���Y�&/�W`W,q�.	����������,i<�=�^�{��S�_|����gx]	Hi����C������gl�I�����{��;�"�c`�%Q��IV33	�;�K�'�N�|��71���f���uY��lY(����	^;n`V�am8�D��Dtq���r�,�F�6�,�����;��
����%�6�+�6���W�y��� �vw�'I���&�y�d����%�I�D+��t����8�V�b�~_����a������fi$c���J��o���C����gIV���-����"�K�������9�<��v�<�N���.rY��*�$7�����=�'��}��_k���+k��q�v�.���:�.Ax����<>(�F�'�P�H�pi~Q����x\dL�@�U�O���������
��
����k��z~s����j��0b�����	��#�(��$@�[�3��G���QI�p��T,�|o�.��#���|����n-�e1���n�n��;
��������Y/�Ez\���O�6��HT����N*tQ���n������y�aoM������c���:��#4�.�����y����@��)cwh�,��64�%h(je�����u������ d���>�g�QP����]���z�����6������eN��Qzj�����th�����`���������x�m�����|~���vL���sk^�E�pJ�>L�
��0e!���C����r�~`�m�"t.?��
K�4�"L9�)CR�u�H�$�!�����D�p	�	,27��P�5�����
�	1�HD���G=�c������i0D�wDKnP��(_S��W�,��:�e^��`�X��
0��H	he`�U&�S���O�K�;�	�Q�� !��\2���83	�#Y,�AkO����'b�<�N��h��Yu�+�R��y���R�I/�����x}��d(7�u���&��t3�M!wN�/�����_��D3J��,���Q�z;A����[���F�G}�2�;p��-Bc��R���p\x�?�~��	(���$e����~}�a�%�A�P���d�>>\���Ii�dj}M6��`�^c���YU����������,�H�y���D�j������1!vf�*vg 9�P��{�7�n7�#q���Q��h�=Br<�-w�lD����&����_�`L�8���cb+#�R���u2��w�[�a+t	#c��'C�{K��t�6L>��
��cf,�(��q/D1I��a��E�_3�YG��?kb���}�����xc����s�	d1*<�o'Y�k+������	*���lwhB'�������)�Pg��A&�K�� j��9w�
&"�,�� �_%�P�S�U��Z�'TZ�H$
�(P��������x���J2kC�^g4-�UJ+b�����?&������@��*=��I��&-7+0O3�_r�'
o��1���.�T��!���-B�q�)t�^/W�u��2�u���#�~�����	bJhV��
�(�&�O�`f`���5#���fcXd�����lAJ��������e]|7�lF�M��!��h#�av��z�����t�@S���/��$]���`V[�_�!$o`�\�X���x��=����4P���`��G�l7U-��D5S����_��� G��KO� Y�D��,��S��J6&6S���<�������Y�'#�u������QI�
����aq�@����������P@Q����|������H9���"��s.�@�2�%.��j`��(r��E���Tly�����F�������:(C�8�Q���=�LEz�5`�p��5���^��|^q%�#���ZCkV��M�l����
G����n�f��
������Wb�e���m{)����\��@*[f�fo�����}�a��l�����<���Z?��M	�*����d3T��lsH�i��
G���Z$�%��W?w��/��:<��o`U*�	�)hW*1�=Je
�[x����B>���,��������"��0Y���
�v+�Y����&
_8[l{�+4�3*3M�cQ��G.}$%����
[x�����+1IX����_2�C6I�`�Zt@zv�wu�l'���^��{,1\a������P���O��h��
�pd���	�����d��ID��A�"��
��:fw�v�����[�\��0D�d�� W	��-�*��
�(�?�)��r���M5M9���0���(��JxR��w���"��e�+X�^0�XI�H������R->��aR�>czc�����K1b��6��&�������P]Lw�����fd���(�"�����3�\s���\�6���M��2����q�6�*`H?������PX�n��N�{���[����TUMH<m���%���rP�����w��j�C*<��c���P��wh���s�������T:��*`��D%d������(����o`t���B��5"{��wdD��w���)7�,f����}��p�,����#�L��I�'�OXt�eb��21���Q�1���"�r�#��)c�4/�+�{,�fEw]/Vp�""��z
��H�z��;���T���^��8\8�:�d,n��s��v)�~@��� ���������t�	G(1��z���$�{�tje��0�cK����X$�y1��x�?f%JJ2���#�����?���c������X�f�pJP6����g�8��Q���z��~�Z�en*���_�3L�I
[�-!:N�S�_��(�lh�����lq
�	0��V�������xAJ�m�����lj8�Dz��Vi��R��#�H]'�b������m �����#�1\c�vv-�OR�oP��������d��f���|����l
�G���o7����I�2�	=�W]��1�J����>0!\n����\4��J��I�9�PA��YY������$�y�c���3����(��%������M��][�&1`u��j�������2wK�2�[ �v�`@�����lN��'�{�������$�	�V�hm��T|E���S�~HKb����}[oO�l����]��m \!�'an��8���z�����p��0g���Q��)���)eK���j��tJ�e��-���"*����*}��BN>�k�84�z4x7Q �vi�s�R(�/�~�������s��o#��1���aF��'����$�!G���P�b�\��w��d����V��y��+,��;T�k������J�o��J�����J���XX�#����A:��8��=���S����g����[&��=�����`�g�Qa,�"p�*����vlqH�^ �t�������!_�,s�5P&�����6���T2D��L[Z�[����u�T�k�I��*�oI��}s��x+oq:��*�.�
��=1�R����}7���z��t(�ktxiN{gw����k:~9���fO6#	cv�n�^���Y*���&��i�K�+�d����m��O�t�9I���
����!��Q�>���j	.Br�q�U&l�ZN�fc���	;���`%���O f�DxO##��vh���AW�3�GD������[�<������ha�rj9�%�:�y�z���x�!���n�I[R�A��1��E3��6@t����:����S"�!��K��6��+��?�(wO7�	���������N�^������zs��x�t�%����$n���g�S��OW�D5�������k;����I�cs@�/�}��5W���`��[��U����"�q@J����7~��#����D��S�8��`��6�����R�9���s����b������$���w���n�@�M��b�#(�5����&���I+x��K1��7�:�W`(9nL\Ln%D\�-�{��MEa��1�,/r��z�	�n�a�v����U��[�b��?������y���|���3�_��a��;��U�k8�C�]�+���L�\��p�t<	�"3}�
���c)�y��Z���c�|��)�,���������D�c��!m�&����l���\i
F����m���2TA����MQrc�M���+�AE��d��|Z��k}*��%V��C�  opH/9�$}���!��j]l1��H��|�t�%�"X��*Kru'
�����������t�)k��!8HU RSi����h����s�ew�<- :��hp�0\�be:I��[�,}��!QN����N���f/��Z���-�?[|�b�?AF*S+�b�:0P����D���t��W;��(����F>��������;p<��Q���"�����0���#���`��� 9�Xx����mJ�w�F��7����4����p��f���Q'��s�;��N�������6p�n���������f��z��m���3������"�����6���tP�@M�)}�}?P���Z	�8	!vssY����`@�C����8�q�~���H�9���Q6
��q@
�C����-�z$!�����H�7@�P�}j��Wm��Fk&��d��a��#s!�jn��+���02��[ a�!���Aw7oW��R�
����Q��X��u)���n�����v���C�C������7<�dBE	��.�^�eQ�f�F	���J{�rw|�3�B.����2��LF�d��v�~�
X�H���	e��	��c]�S�D��X��XE�;e�f����n$/�����2?Dfy�k�������m���������-]F2�R�1�8�j���fZS�T�zfCs�����D�������c��0�!J���t�/�v�a�-'7���G�6�v�[erp������-8��Ou��{�)�������~����r�=��e�%��Z������^��[�,�~��fnY��!o������
�NC�E��b{����JAU���6�^s��G)y��|}x}�������=r�S��I��o�f"_/�����30�8��!�FR3^��M�s;nx.�@�|u��i��D`,���HtX6>�i��J@x|�
���[W�?������[e����~�E�
�a���x�l����K����
��ap��x�w����Q�u�I���{H�]�.�������aU_Wl�(�H��0`_�j�j�9�v���S��A�C	m(���o�.�5���8K7�������zJ��r��>@Sc(�%`n�>`��h?�O�3��H�lu#��Q���M���E���e����T�/�xi�j�d����n��F$�����#�Z��g�����&�+a��j�_�!�n���+���h���.%R-��2�B������d���*V��8�Q���\��6��H����3b�	r"`��{����q��sK�G�������� �8p���.~�N����+�F��Q���q~'$�Z|y������e=$"�=T@�]���t>�md<��
���_����W���C@r��[u��an������9eRzX�h!e�{�_�u�;j ��$w���^g��� �Y��7�4'`\mB�`� ��s{.n�X��5��j����1��s�'""�����1����Kf��(-si-4c�`����������i��r���n�����8���&M*������

�y���)V�������C��Q��$RL�P�@�B\�O�BL�GO����}P��w9rr�M���Z���#�N#l�lv����
�/���aA��1~�^�m����V��}�g]_�\�!\4����'%�.:����	�p`�;�(�L���@C��Ky\��c���}nM5W�H�=���/l,P(55��a4c������mx���*���G$T1���f��NvU��smj����7^�KCk/��Q�i���Z��q��De,/�����+^��E���Tl3��t�(f.��V""��(>����<Ey�	S��/=UOE���v�}������$���_�Q;8\i�7�!�W��b��y��$f���w�uk
�'&�o����T��{��Z$��r�b��-�����{psCo�7e�m!1���c��mG�vZ �m2����p�;��EbU�+��j��X���n�(����=���"H"�)zk�5���#�������`�g|�6�L!mH?��S�������D�������F������}������`_��K\,�j�	l���xh�R�o�z���%E��SB%,����d�B���]�"IK��:��g�����Z�M�L��4��i�4����t4�iU5����!�T��CK�W
�	���*��/�/y*o���`���:B��6[}��M�ED�W�lk�?���p��T��^�A�s�V����5�s����Z��i�n%k��a;6�U�t'	��i������G���,����������L�x�m5U�������q���N����z{,�e_��B���X\�g?��k;ix3�q���5�.)�. RMe�7�,��OCN
�q���}�@Fk[eLo�W�D�%����$����E��
:V����#�?���ZqU_��2iE�Q�i��Z�o2pa:�
IX�G� ��M^f����	R��!������T.�K����B�Z4��Vgq����h'r���H[��	����z����p�?��l^����Ul�a�n��t�o1��!����E���n6���� g��fU���8�R�xD]����tZ��^`]���Ox��Jq�3<���/��*NML�qI��b��b��B��g����a�)�L_��D
z��|,f��+�bB:�k���-��U�K���5q����Z�u��g�z�,)|5C�0�5[�Z�PN��Ykqu���%]�N;�������|}[~&6���4�`���o,d��?�&c4?��sJx���<B^v�mP&20��O"��F���G��.k�|�O���G���-�FCw�)y���O����.�Rv�t���&&���U���x�!@Xo�#FiA�0Y�{P������Cs2(���e��B�r"?���a�X"��j�
��C�&�M���l.���)�Hz(�_��)�Y�`���������Hbu��'��jR�1��FF8���*4p���� #:�y��?�R�4��b�G�A�p��SV��!>���S��������c�G�<���.��`���R�}bj�j����L�e����j�������I�vl�)�0|���-BT�+���[��S��IE�uFF���=i�]y�[|rv�("���
�����f
���5*�g��t�-�,Ze����F=G�w��;d�������h����&!����b�*A9���D1�����xwj�\�~��)�51<A��x>��8s`��:U`���(�Qr���jg�CJ��AWJ����K `r0�G,Ai�������(�u#7�&=���������.���.�[�F��@�N|�
ey�(����a��.��*���w���0���J�hd�yrJ�fBi"�|��$�.27�T��N���+KI�%W�����Z��U��3�m���6�0�>Z')���8C��%'4�Os�
x����"+��P,���t2C}�&�)p���99z�1r�����B���G��;c��x��H�"��FO�O�)�-H���_����S�%�
F'���`����vv�"�i�}����zF
���� T�~\e����7y��Re�:�����<�VZc!��h}=U�X�"�*��?F<�)O����G��`�8!��hh��8������~�>f)���K���%��N��t��#�8�g��U2�E��A��*M�3z�F�<ozo�XC�6+M�(6/t�*���qqor���T@�����	*��_yr�����z������h��d�*���R�v����vBrx���������z%S~�����*��W9�[����^5p��@����w��3E�����Ktv6��gO���  �O�%eP�������~��.1��rC����MR�����u�aHhOA�C��/_q��f*c���]4��h�>Z2c�q�
�yse�	���26)���2sF�80�?�V����d�V��lw��C���.�x���N���k���w���$�T{��Iu7''��.4�kf���[3&I[��%���<��}�`"2��U��opV�6���Z��DL��8�8�h�����������9p�q\���������|<�2,��#�!�U����
���6V���2�����iE��c�jw/���������nU&1�&c7e��C��|���*�z)�r2���#D�-��L5��C�<�q�e���=���`���l�����o���<������$_9F�?]����%��0�{��in�p��Ms	�A�-�i�^h6&^���R����������|�Idr��U�6�?���lg�����e\�VK� �m=?g������c��F]����l�����_k�i6��U[}b(�
xd�����6�|�"I!9�F�9�F.���m�n����UH�l���2�������L�.u8A�%����;��NQ^mE������y��)�Gbfbj�:,Xp���a!Gjb������,�1�d-�����U�B4�6hB0eYQW!�{V�lF����t�2>6-��g7��
������Z��2I�"�?��D�{4��-�����G��.$^��#��RL�:�a�|�8Y6�I��+,#n��di��\�~���a+���g����`G�U?��-�|h)'�n^����0�o����x|�Uk��]$�`����6I�v�b�]�V'�-�0��g`0�N���a$l���!����������A��<��Q���-��.P�����*���O
'Nf�R��8\�C6�\$�m�0�����x\l��`��I��3x`df�8�Faf��	9�Y6����ai�0��r���Z��S].��d�@Z�8�L���/�������S�H"'���|�~��dG��dK����_�L�u��H�*���=��-��A�j!S�(i��@�
���{}$14Y����%������v�P}E$~@�\��W���_�����>����(:)Y����A,=�����{W���{^2�!�x��ti'��s��o;�oc�]��i�������M�,c��l�)�������m��Vu�ra����
~��������qS-���Q#��`JqYq����*�!L7�j'"�����O98����$�$9#a��\<n[�qx}9p�"�
�A�55�)TI��l�5\c�2�[*I�T�b[@S�����P0xN�@%�Fb�)��r�����<G��uM�<Jz��L�yr�����'!�y
`��������y	0�x�*s_1]��2�u���lX|��l3*���Z�9��x�K'�I�2�F�����Y���e����$�����/�_����pO�<4��=B���_{&A�E�!�Gj����!�G�"�����W:��v6�����Z��B\e�������t;��HJr����sj���a�
w�G- ���������QsH����#�%���[�s����Qs�d$��t�z�@2�d����:3?�2�9���[�V{#G�=AVoD4�@L,����o9���T�c�]x���<"�x��k�Q���#��q�����.�DeV�Qaz���p��x`�(���I���I���B�D���y	���~D�$�0h�o`�;�����HT�][��u
{B�8�e,������fyfQ<U�p�j�jG���>qu���c��l���Fa�n�u�A>�����B������7*�'=�u-�_��}�K���V���^^���gI����%�@���WEpw���
S��%�O�=S��C{��M���4��Tw�DQ�h�=0��w�1@�>�����J7q��L]����t����Xb�_���)C�|��=��1�F�����6�E��u��W��+T�=r�"�-2V	�#��L.���V��j�^tF'F�'G�sv�T��&�h�{xX��*�����]�����]���GB���v�����PW��gi~5.��Tc��:4�H���[H����Jr�!
"���%��cJ��0(h��gwK%�E�hds���MY��t�	�1I�A#�5���?�(�d�6=`� j;�S�����_m�m�s��6�(V����O9�$���0S��F.��Lp�H�|���y�N��+���z�COh�}�`�:��!�E�>�*����eL�j=K�� �2��������^��!�F~�F~o#�7���&b1k]�14�e=����������lZ=�9e3�
��*�+���Zj[�/�O� ���:@�Zq�CQ�@�
Q�I�L���7�$�9�=�}���X��!Q����g�����<���,�1��:vp���O ���e�m����}���)v&�$����{�V�t�\�C�.��k$��oB����� /���]<?����)��Z��+2.�mHAW���$g�0��a�j��Rq�
�2H����	\�bM�e��a���EF�>�;���x���%�5�mt����$�&zAV�����H�H��#�^.\���H�@�d�����<5��jwB�I���&w��"�3�H�����l��cI�������t�6�
����`��G�t�j�������<	1���
�B�hO��U�?�j��l|B.���}�]R�4k�R&~�5���"�!r�\\>������ZI���������J��N�d�MbR@��B�m�/�t2��j+a�k��[����0�o�v/
a4��gIY�{�"C�D����0���i]�=;���'.�<@����A[���m�����������LD>�V.�`.�O�f�F@:3�9s�9s��1�p�����.�v�$����a�Woa7�yV��:�C����9���"��K����T62n����d�����2w��=J8]o����y�m�����#�����Y�a��/�J�	fH�c�:J�Gn���i	��Wg���#,Z(r�da���B��S*@HrMg��D����VQ����Db������X���Y��U�_��?�[�����C:&Y��-�FN3��d|_&vC�L�E���)oK�TV_
H��5V����k�[���Q�b�C	��J�x�[��j)��U��U~��{)w�c������GL�73�hw'M���P=��Z(�c�(5����.��������<�B�d�x����7O����.Vu	����g�",&'�4=����S�()	���L��yu0�����4���L\�&.�>AU���V.�S������`~aX��B��K��c�K��K��-�?���j�	����y�2f�.,o��Xw������$2�����K��������������5\0�T������;�����E2a%��l��1���������(���6���HL�<���.����:��7l����J��4w����m2��b��+W�Ccb��M�hU��%�n�1y��Oa~EK����be��y�BO���
�r��`�p�\���	 ���o)G�^}�Q���w(nO~���3�e���QMC!��s��_|I���aD�`FO"k��E�u����lw������K�$�s����q��P/t�a}z>�~x����'��~���s�G$�U�U���7�3�r���H��)�0�}J>�����S��
iS�^%4xrM�}�����D����zq8UM/b�{P�s
�U	��.7d9SYH�a�M�D��O�H$��b����34�,�j$U����im���x<0��g���
#��Z���BDc�%(�(�q��������H�=q��u����gTZ������B4SjZ|!;6!R���qs���v��\�7w�.=<������j��H�����n�d�OE����
�*�����O&$��:�������"]b��8�Y/^��k�Y&���w�V@L�vPO.������"b�G� ��/>�^�v'7��0��T5�X��V��|�Z��Vi���� ]s�[`T�D{�g��|�7�;.xrn�"HX����}��;K�w�~��,�Y���i�@�o�/�Q�LJ*@&����v�EY&�a0wl��0&���:�+@&����t)�Cj�T�����a2��|l6-���#Q��/�N;4l0}6���_��A�<��9�.=����:F{���
�(�1�5b������F]�7Cz@��u��BC��"��6y��s�n����UygI��H4g��$(E�P'�H�I�Nu�����Q���Ig��X.)��;��Q�����"u����f�t��8F[X:��Q"�8SF�9D�nYju����W���mTr%�PX'-�!�\�����sp��F������-��H��,���B�
vw�1Fn����D;�����������#������F����Y�%�o�lxL������1�mg�����������G�/'�TR�t����`��#�5��GZ�9
���q������EL����b�	��P���1�/d&qQC8L�-�!���K��5�^�G4��B�q��N�M�L����!l�:����1�[��aAs��|
Y"�K4���3�5.S�l!d�C�%�|#�+`�����MQ�,��8������	���7S�>������_�
t{��o���x;��zZW7e�k@���b���J��Q�b`<qT��C8Vc���*�l�V5U]%xo��$��PhI��h��o��/R�#�u����V�;�v����B��x�Qh>~;yL�)��v�
=�����^�����,vr���~`�x}M��,U,�t��'E�P�HX����*}���QF��|�N�����_���0��'s�7���%������9��(/���k����^vv��

��T3 r�S�?S|�)�q�!��xg�y��~�{O��0j>*M���e�c~�����!B��t<�w `��;��������Hz@B���<�l'\&��-�
n���*�F������6�D�t��}��;�fz��A��|��~�M�I4���A}��
�r��
����.�_)'�g��v�!����V��r��e����T(�G���r!��20�I���L�tM�`���,��u�P�=|1=�>��E_����7|�o������n����-�����:�����:�Rv���v^�4�a=l�U�U�S�����}r6�ej��0��}g����T��/:Pi�5DK��%h�o�WP����NX_$���u���/��p�X��z_��vh3�W���N����*cg����
�eq2<���b�<>��U�[�_����!��2E�M��uWY��7
u�t�u�����!�7E�i����<��� wU��G��E��apv4�>�7[|f3	�-���4�
h�T"]P�z�7���!9I�
Q��}���\n�*�W2�����;�HV��2�y���bN���M8�d��1�JWV�"2�H@t��HV92�u���*�$��vY$a��WqT���>�I:�78J�	O��B5l)�@���Sg�3�unm��x|���������s!�4���xh`CE,D�AF3WI ?�j�7����.B�b���������s�$��������U�����
Z&����2d�%����e�}�������Q���*�[�b�{��Z�	�Wl�a�59�����Ez��@�94��c^�Y���nS������5��/vG����l)#~��E!���$��|z$����r~�����Dk\�@ /�-U�����`W��LF$cp�*0�g��~_����	H
��
R���z�i5&bL�p������J��16���g�yq���9��C�����!&��SZ�ruC%�n�(�J�b��V�K����y�������"_�"\F�j<>=��%��Ms��L�#o�D����)��%�Q�T��3�t����@������*+?���cV��
��^���wJ(v�z�������
�	z����*
0�i��v����� ��H�6������6��V���TZ�X���G ja�0p^��T���������&�MdQY�u�m4Y��$���K���N�YEg���S�U�a�H��U}��a��U�����@�a��j���k���HuC����j������vX�<$3����������|�����
�<���J�M��(��$���d��g�+m�l_A ��S7}#��V��.��`��FTz����e�-[��hy[},�8���~b!���F���N"�SQ��E���q"�;��U����&�DS�
2�jT�������<�)����C��PA�����wW�%������Dr1�
����:�*.~\r���3���'u�����������d����z
@�M����z����E=�X�kKZnV�qb�OH��|z%dx�%���~���^�
�k!�<T��EC}��j����Gr`���A�������)h���fJ��CV���LZ>�)N��o������nZ���b[g��~�����0��8PG`6�P3���G~7x	9���1�3h���H~d��n�o���ic���O1A*���]���\��d!��2�2���3��^�m�D�)!��Q���`.�=�w��4i����c���/��f����������]��^�*!��QT��p+�V�1i
!��8�?����f2m��#Z�Qs������[Vl^����]y?��5w,t��:
�\E���vSv|����u�Kq����K���3�1��D�Y(0"��ZY
W��5u�N��]\��h6tc�:kJ���k��{n��2�qr��j��)��D�WT��c|������O1�$Oq�?���Lf6��i��4kTG���KC��3���}�/>��g`H����
5���6���[���v��z8j��ax��tl�w_���S4�S�{
��0r�3���5���9��<���kv��`��;u���:��^ '�2����n��|v$[����8c�l��q4�-��t��S�3���L���J����~����C 5���Q����_8nt���<W�����u>8��[0��8�7������J1L�'�_Cx6���*L���4X�Y��`�/����KX
�m��a|l��
�u�����%-�)�<���- ��b��s{(r5<L[oHu%�2U���C��g�<2�^a�#�C�6yYWf����#d7U�������yq(O�����_o�f���j'��U&�H�blv6x���4�`����LKA]��7�������6^L�����5������&�dP��|������������M���yV��$T��v���E�6��(��w�
��y1���c

��!)�T����Hxbb),����C*�
�	8W ����a���.��@�N����1J��g#
�,y[?L��Sk��H[����D�q����hDSA@-X����@Ql3��"�bKe6"fTp��h��	��3�FD&FO!���Uf���Wp���3b�AO�=(��������)^BjP,7�<�(��_�/�8�i��a:dP��RH5:��
��M%AP+����m���P�^F���n���c�,@�LDg�G:C=?-�!��\��]l���������iO���'Eq�	r7�n��p�.���*��&pC\�>7�31��A%fR�m��yxb��k�m�c�&��[�-Z��UF�<�o\����7'��$���mvH��M�>B�I�LS�X��U=�1�5���#ap%�yx\}��	��������D^���2��m����}���si?�$A�Jxu����3t��������s��8j�����
����xK0
�-#�;\��	uM��6u����������4�s�Q���i[��]��3�r����Q��%H�w�E��|����/y�$L-�kMX�%0�`,�eb��%��\����������1HZcI��s����d�:�?�����+O
�����5a��^�O\���>Xb?��Pj@�����6����F���c����-`V�u���{}����fu�.Ix�F'$xz4l���6C�0��X�F)�T������>�I����{�����0�6:]G��:K�{�jj�.�PS��J���	���W��r50s��v)�s��Z�]
�g��9�Ipl�y_����|}2��wl�Q��`zU�����0�����].�����@k�gD��(�D1�4���<�
�D|��s���x�%7hP��gA(D����&��W�R�{t]�n�nj�{m>�
��<?#��L�0xv�Y)��=7T���p<23���m�+�K���+>�!e�+�G����]�p6�)���EN9~�P���91�_!�r�<9���l4�2���E���R�
�����o���h��$�C	���P|����B�l����f)�4	����g����H���PB���'�U	uh���Wi]�\`|	B(9�,�W6EK�� ��h�$3E�_�������P�����r~��_R�e�=�x�����a�^a��m��Mm���a��Z�
���RC��1�^�
&���&do��9�rf~B��i��0J�qR8��="��N��n'0���!��(���J;�{K�2"�D8��=�����l�;���_&<`���x������M��D3T]J�>��)��J���cSY�&>�bs��*+��=^��������j>J�������SV��M�q�,��3&lKLs'��WQ�lBe�4�w��Kl�WI$�Y2H�8U�o5I�
|$�;@k��W�cD�����	��<���cLn]��u�;�gDNF��:)�5���}��!�������7�Ez���5/�����x��x������_�V��m�agc��T����;�w*c����J���v�?��C[#��1uq��?��u�'��c�6&�~������?�q����OK5��9�"&sTE��<I��A�/!�\��T'��T9��^0��	�"0��I{����i����HS&�����\�4sJ���������w�����vU�5m9;�|�2x�at��4�Y�����Uh��b1���|�����V��� �{hv������lV�����w�h�&�s������`4���m]$KVqQ}n�>��������W����������j���,��	�>��]��&=�����9,�i����hE����	�|�1���Mz.q����,�=n�n�50���c=��~(�����yfph���4����[��L�B�l��+�N^I��~S��A�$�^E�HS�Q����/"%K��a������3U�}��_{�2�7P���$�������-�����6���@6��&dBX��ol��u��Y:fJ/V��"���������oY���+�.�*�[��fT����Np��f���U�k�+N��5Me�����j��&
�k�������p
E�Z�2��%��
X-�
&��n�����m�s�Y���Y����<��LU�������n�62�^u�!�|�h<#X7O���-�����/���Wm��T�I�
�Sq{-����?V���G%1�-h�������a�Wo���N����
-b�XK��������]8���vP9���HY:�0qk&��h�&�����7��mjC�MK"���H��yF}_�����*2�����;����RDX;T��\v��H��}Cn	Zv���j?p<@i"�:��2���Ox}`Z���~�����`���5P���|����~�M��M�&Ys�w�vg?b���>/v���a�HOe���/>�^�v�� ���8���y��Q��/�f%��
���m���]i ���)3s��c0���zi�z�B
M����"P7��6�q���R~)Y�j,�x��Da�G�-2�m���]�l�*�& �G=e83���I���]��U�7��8����L��*^�iQ��_��'r�+������Jk�
\Z��U��;�a�{��x	���6������|c�����g�##�����m��.
3�P��������N��]�����)�WL����[�`�{��H��	DA9W�s�����j�iI-c?������'`��h-6��^���j�\&�m�w���ZB����B�jA�
�a�&�J4��+v�^h�$ }w�[g�}��8�}���^���KV�+
v��?=��E�������'�@j����k�`Q���\����>��L�����
�S��L�U
P�	T����6������>7��d'p']�1�@�`��P�7���0�y�&����l��c�5r�{HK��������p\1��6��Q:=���0��^��N�{�v#�#��Pb���,��4�sz*�[����wmnI�E?���#����g�m�A�qb"�����v[#��'�b�"!�c�������Z�U@�(��q���m�BU�+3+s��Db�?����tcp�k�x�������'S2����&�������v����+T�6V���U����@���������wf��Ek����q���y��u�	����q���9'�	���N��?� �&!y��V�Q��
�O�E����)
������=��{���fw8M �,rE����c�I������s[v���C8�
�.���4^�	K���"q��@7��q�~6�cV����(<��3��E3W5�s*�F������h]8~A1��O��4E�sIaQj:w����m��
�4^b����L����I��n��a��]#�Y���D��H�L���YF���u�L@#���JX��U�4u���.T���<@��,�	C���vu�|h%�~R�B��(�yV�#\)��GS��Q��M��PlN-p�C��Dc�`���p_�I�@���-J�z�N�-�{�!G��� Dg+��� ��w�`TlEdm��P|?Sc�������������T�c5/��Z��_����2�#��������t�&n�,]�m��g��l�#�-�hF��`�.�7�:�R[<���+�."���.'�9����k.�6��po
)i��
�����j�06�=&6�9Ql���qa��)��w��\Q�]��>*�������^�V�\f���w����t�����Z��(1���J�����l�c��_/k��������Gm%o,��?V����Fb?�O���bYi��/	�:������Bx�qV��:�t�U#��EJ�6��������_0*K=����s��|BG�A���"�-�n6KqJ\L����������|oV�'*��~������P��_
]�Y��7�.)8KE����]'���]��=q�	����+�d��1��j�Z��F%D'��l������\��4�M��c!��B�=��&4wq����{S�������-�L����`������M��������84�	������PI�������	Oe��J��������g}���x��<,���
���#6�i,?�J=��+��v�M�W|��]#6)�]��M��|����w�Y���K���1{�o�6�@�������������e4�k�!���`r�'�l�=���A���s�ny����z<�]��
��������Q���<��gI�p�#`OghbZ%A������!t`r�|J�!���6� ]".�t9��{��v�k���G����)�a���yw�t�[�����w�U��vg]��;|���H��
��r��#������l��Ld��)���7��V\����9����[
���s����=��0�vf��5�w83�x��9G~�����stH=�AzFv�N��_`��3=�n^��,�I7�M+����O������
e�G����;�������#� r�����/�g����Rw�z���hl�o�4����?L(#�|���5�e|?�7�o��"�8C ����@k�>���kJ���H����?�����~W�co�/��_��9�9�z�}?�7?�@o�.��L]%�F��/G�>TF]�gv� ���l���dT#Y�������$�T�{'�~��+������,�Q��>�k=�J;���>�wmG|@�[-I�$�i������r��B�i V���%�_�l�>M?hlT��8�D*�8�<P�L��l�*
t��1�e�U�Q�eBUZ&�U�
#g��2�vt�se���Poc��
+De��L
���=�;k���J����OQ�n�;b��Q���/6������z�WW��1s�L&Hs��a�J��f�k1��@!2���J�0�6�@���u�D������>�:]?k�QX'�Xf��F��h4e���K���/	���Co�%
�0���M\�����ud�l������v5��o���������7��
sE[K��v)��&z����u��Q�5��)���"�3
�@X�!e��$��|�����Sw��V���S��>{���A>����@���.���d��tb�+��5�(4N��e�]e����=��U�7�����?�'��}c�L:n`�p��u��=��9��}:�2�>qO�\�U6�2 ����w�*��~�O��Y&���B��_d���(c��>.(��W����&1�����g��'���S����g�h�o����v`K�r��w��Qow��_��W1�7z���O�4�9V-]��F�Dt=f��ec;���m�����t�jY��[�����eAQ����%��K����t�L�Kk������G����Je%��4.r>��TdD�Y�u������GQ46@�������� Lh]�h�����;�,���D�p����H�u��4K��<�Nq�M�tnVdmwjwY����i�Ic?l�G��������/�I�u(�T
&K��}8>�=��J$�CM�*�q�I��'�1inm��mnO,��w��+��@g��q�����BV��N[���0��i�����5���*?g`I��nA5z]�o�s�X%�w�q�aJLm_\�z�&r����=I5��t@��:t�Z���4)�H����4��d����,����c�j�7.Z5	_���d�����K�����O]�-\��{�W~���\�Fi����m���o���}���{�� iH��[�P#�J3�	FS�(��Z�����/���0M�
�L��� �5��=WM��T�������2���_�MN��-���r12T�FO����{�?��YJ�A�����} :����8Q����!��_<�}#V�m�sd�u�z��hv��k=$V~o�!~X��-�����'�G���ga��k��D~N3�V>�����)2��u����K3 �sE�X�rX���5��WQP����Aey��>�����������������"]g�^P(�IZ0]Zh�1��GW�jH,�������:���#QN��!w��M���F$r>��qM�D�KJP������	�a"���.�MN�>��5�z���\�� +��P�E��T�u�g���Aa����%J��S�� G��k�-Wq����Ez�������L��=���m�|�t��qt��]�Z�D�!�)�-;C^�/��u���r5Z�����?��
��K����R����s���B���]Y�2��������01��*� �������7�;�����zBt�V�0�0�6G��.����}��NA�-r��m�X�p�u�m��i��5g�p��A�C��ei�������)�v�G�p���:/�O�^`I�~F�\����hY�NN�����Ih��yf�T�x�P��R��9�����Ke��?�f�a����*�:Y���/��{�(�i�X��A:h;D]���P���^�";K18&T:x��d#o;\�����%�3�
z������y���f^#>A�Z��c2��	��d(F����*#
-mz��;�8��+����y���q��?�Mj�u=.���,K��d���<���:2���SP�^X����"�������e"��	;T���~=x����������
q%�B(�|+�V����b_��L��A$���K��u����!��=I����J�uQ���V��{tD�F�$�c�.�Ll���W&7��|������{32#��������d�\j?����h�*��,�����=�`eC{��D��s75���4�iC�~��:A�|�n���i�/�����'�����;�:"��#�#G��:n6����������_������+/U�pg:Y0�7;��>}����K�D�A��)�(�WcM ��*O2Z�_��#K"qn������$�9�/������Q��cD����m�����D�� �?���m��p�/��s��&=TW�#����9i�[�(A�Q���b��P��	�ISY�����7�)��Dy9���,������9$&S�&�
�"orp�3���!��l��l|���4�G�}���_��������z(��2W�u�<��A!�&e�MK����/���_O�HW��=8\�p�`T�@����)'����p/�c��9����noL�G���M��!�<��a]T���0��Uj���&�/���e�d�:��q_f�~�cGU�.H�:U��`h����`p94����2�1��?�z���aB��8
�*Z�M�v���Z>��0���y�.r�qkd�{8{0�)br�D�H�
�3_Nb���l4��.����s��bmX����4=��wF�N��G��cq��9�H����8��I��Z�n����*��1)����#j�tW]�M��z6r�`����6�VO���������N$c ��US�e	
���z/��D]����p:���)l�xJ�������2$o�c���Me4g`m�`���4��������i���|�����uTb��2Q�6^q��?��W2j>O��.�t���A����G�~x�m��p$�Pm�)(�a�#�:�0)�8��&��r����8xX>"��!�L��o��E�y\���������~S?PI|^P*��t��9������V�Q>ivLGJ���4�*a�s�����Aip�z���)��E�:ZG��En1��1Z���wl��9��6����F����@�/^:X�{=��v;`t���w������*h�|�r��@��Y��8����vI����~)�3�%4��]�P�7�I��1�����_�M��E�l��4��<B\��lR��><�	��7�Uho�]����X���������>K�����/�h�%����2I&�,5?��2�
n}Y��HOqa�e��F������7��HM8A���5��M���=)G�V����l�V��7��a�Nq�L?���Q/�����X���g�5�(�2�������?��,[��H�b��?�q]�������1��'���}�����}h�Q���	�P9/�R����h[9�&�4�GF�4��y���h���
�K�;5ZA��D��.Gr��j�B����E����#���,A{�kS����[�R�T����M��zK��t5��1I�a8�uy��������i ��-0��T��I@N������w����$^��g�v�����.��h�t&h��&�]��go��������z@���D����[9�ryu������.9�Dt�W��[3�x\m�tW�g�X$����~]�|�"��1�um+����c�M`{D
�Z��/4������|����HYyL�2�%��7�rh�E�[q��^���J&p����|g�F�|^����$%~�2@�l��4`��� N�7B���W�Z-�e��o]%S�v��8�$+��s��
�u
(�]z��k~�=��j���yLVI��=��:YQP��P@5�b�%�������!�yY�Qp�f��n�?�(�_P@�����;Cz���z��'��	Ao��'�����w��Sow�_����}9�"�K�L�;F��r��G�ml�������Pr�$p=���q#���s4b9{�]����3=]f����@8���4>�����y3M�����v0"�����A��dW?�6u��<�n�~�o�����;��j��m�7����U�P�l��d���3�C��HH�p���n)������)�')�/]l��u�����P��6�N�����F��<�&���3�#�
'��5�D���m�F�]��U/Z���!$�E�H'S�����b�D�G(��ni���e��~L��E��l�C��Q����u.��!��M��,�s�[���j���1�jPGZ[=;��U�WT�z���cc�9��P�(�f�0�18���F��X�������j3v����������v�<�3>F������;�Z��B;��[�^�p�x^un�J���{"����l��l}���9����Z�}��A���e7��H��������jr����M���(�)������
V�avfiu0s�����!�,��k�8Q\��f&PL�'E�\��g�6��X�E�p[�8o���Z���X����N��7��J����!w��9>�P&!�g������7FSX�� �m�%�{�����|A$j�����8�r�g�5�z�����s��P������>����%<�>�3��q>��wj8����HDO�16�!�r���8���[_.U4�����#I}�YWlX-��%y!�V~�Y�zZ��qo���z�|�i����2I�vQ��
tJ��j5� *�t������y�����v=	j=9�,�34�n��yq9Q��<��i0��Fk`��ks��nW-��]Z��������I	��	�''2��,I���T/;����w�0��thx�;6`�������z
�t�r���{���������a��]����G����Zen�.*yl�	4[b%����,~��b���w�\M��[1)�O�j����m��z��?Su[<��]�D����R2�0#���G�!��"�Q��v#�	^����/`�O{{�UAC��<kH�d�f�{W�*�(�-$��91��VLg��\?{���l�v|��b��)���� ��A�	M9��0��|��$Q�c�<Z��tM����x<�cUW�j
�G�����Cs9�8��Y2k5�-MPW�+��!:�Yd�/��S�g�smJ����f�`�gtN��b�Y=t"o���4�B�l�D���g�n�H��!���`���#w��d��}���R�@~��ss�M�YJ2��.��x����G�`�m���I�V��]���� lS@L~��E������F)��v+ N���e�q���)"�X��?j�i�������U���O��
��-���V�G1�����d��g��z@�N�wg�
��W��;Tq]�k����ht�@�Z
��o��Z,t	8�(�o���c�_��d#�C���`����^�?lg�%|Db)&�����P>F�������	���/���
�����8������y-���}���n�J(k��t��3Zc�/�,7;c�2�#���u����~����E������z������t�i�80���|��|�i���:�|5S]q������w�OJh������P���|�j/��Gj�}����}{-+��-�B?�F�	�8��!�n�)���9�3\'�w����K��p��n��3���������SR�, S����� p�|0�vuoMGAa*���_y~$��?���^�z���.�:�Lpy�
Z�$u�xN����@�N�oaV.�0�C
�Z��t���ta}�<�A_O��;�����O7����n�`-4HJK�"�
[]M�8tJ�����l�M"3�C�lZbi����������c��`����?P��u\�]��g�+�%dE��#��/i�<dZ�(~������kAK���1`uM�<j����Ga�!�?��
\�Gp�n3���^�����
]��)]n�E���b��z"Fd5-V��tP����f��%|����6Ms{�g��{�?�bY���h���]%�������m6w�+�v>]W\$�+���n�^t��6�1�����������i�}^<���������i�k��X��5B�Om'���Z;��q���@�@O�(��������B(.�����:�1���J�e��i�`�GD�t�����z�A��X��5���'�c!���00p�*Q:���M
�\��������x�R�J��v�@��O���-�=�a������c�q kz�qm^�#/t�����
�����5����E����~8��y������4X�dU�[���j���i��Y�
���3ZF�O�>��=`:�~0<z`���W�CI�������������w����Hz���n��|��p���.�CU@��pa�{��i�]I���2���5��~In�����
��7DB���	F����mx�k�W}�"�Z����X�Q'#[6q�6lu��v�b;�M�
({0�-�	��.��
��@
d����^���3������
�S�����9�
��`���%If�O�
U��yz�H��Pv�3��i��t���T�V0S����8���zRyf���"���6&�������)�q�����b�*���`�L�[���`�F#���8���*���N��qn����������u���Q��H���7��'Y�)S��(�Oi6���$�F'� �.���Q�����3	�]��@q�!�r	�c{�N���b}!�O�Y�X�@{�����!�[P-ufB�-H�:d�5�HX���4M�"E�Y�{�����v/�[���d�"�����^�c5O�W��&�O���k>����L�t=Y&�"C�EJ|:�{���B�+���!B>������9)�q���V�fOr�{~��3'�����L�STi���zD0��n�<�\��n�����������.��Lc�,��XB.�|s?���V�;u:�����\+r�(�^�bs�k>Q*��3�7�c,
����,$/�kU�Q�:���3�zqq���kX�F�o����]����4,��vH	��xgI	��d���
$Nj��,$g44� ���$z�mN��c�������#�)<��Q��7x����gl�UPd�G��������@��i�hYF�v�M94@������"�<�tZ[U�By�F�����# p��2�1��������p����-zq�,J$���=�i-�W��oQ���_Q��sXA�mxrS��M��������/{���z�'�b���{ �M��[0�R���i����
D��O��2����z�_�x��dJ�K;��5p~�g�&^�5���W_�g!1�"������&����h��f@
��Fe��s������
{[��:nf*���y&��l^$���(�/�f�4���h��/\:�B���L�p������F�Tc����4������sX��e����bv(�*�|��|J�x��?�������M��V]�#J{'�_t@�U��	<��)<�Z����V8�{L+��<�L�
�DS�p���s�����i�t���:�cZ��1� ����=�cZ��1�������;�cZ��1�M��|��	}����NS��:
�#}������9{���~�������|����N�?��:6�����<���,�|�&���N�O���'���8�����O�7���:��������-efo��~����:�t�dk�S�rP���~@�On��?�����
Y�+�������q4 ����9��5>Z�/g�FQd�Q'�@��f6���������j�(m�����:�7�����8�����\��!l���HF"��x����w��b��C�7`���?r,��~��:��(�s��`�.�
��^�y�5��(����D�~h%B1�Y�G����.%��,���FG�`~����������
:
e=$�;�r����FI����k{��d?e����g�F��\/p9&�[�lS�2�v:���n"��i�i+?@���G8��h���M)5�_&~Nr������_�9]�n��B��K�T,6D������&��VC�3�`_���//����5��k��=��?��~9��=
�	x���(;J�q���g0K�/�Ql�*��r���C��r9�SX(�:������lpI�����8��J�������jA&3��E��C��#0�6]lf���-�,F<8bm�\vG}[Ydb�����p�7x&k�Lc�����K�sT~���
N�����/sI�B�7�@8���$��$�!�k&��NO�Q
A]�6�
��}z,G�L�����~R���Ym+i�C{j���d�f*l��1 ������������9���Z!������4��uVU��(�n�0�"��/9�4��o�O�ba���T�64��������Hi���y�x�,����l��
o:��"�`2��^c��5���D(��x��CDF���nUIY����VO5T��`8���#�T��k	��t7�����s�����|������~�?���4�|�A8}X���Z�|7|5v�2��*{�����������0�����q�g��Ihw�:�p~����|�%q���	<��6W������g���f���f���Q�
�g\$��;��v�����t9���6e^G�eX���s�=����������D��:����A	�hw�����V�]C�6��%�6��|aC���h=�[uv
���SLwT?V�8���d��u�I�B��sm<��hP*�&���)��}�rY��g��;r��(�!	��b1���������xl��02{�|���UR���sB�Y?���|J���O��\�"�,O��Sl{�����`����b9������z(�x��e<��/��"����NG�]p��s1�6#M����bP�$��A��������f�5�C(�eO�����E��qY
��cS:�3�;~�13����"^��b	�r7F0r"����(0��*�B�N���7'���n1�,Z�s;#�6�z#�e7�(�7'����~��:��.,Y������G�*�����O��\@����L����hQ�IGk�x}V2�(l\X�U�Qhs98��XG�\op���q�r�iDl!C{���@p��ZNzW���{�1�Z �QAG�|,h��]�|��8����f��0��K��hwj�z�_����xV!�M�O%\r�#��#:�f��`:��������rG�0x�F��r��=h*���E��
A9+�L��@�r�?x`�
���:�����S������@��;�-O
��,�3���sfI��i��q�9Q���91��*�����sQ:�����+-s�ff�
;���A�B�R�Q7�6��5�qg�0��k�k�>��X)V��~��:B���[���!�B�n�n���36%VjNT]�n�%Z�Jj���(b�.��l*���&N~�]�*OMr0K�}��J�y6���m�������B�Q�yI5�l�����@��~#��Bqw�04���:^=&�9���<��P�~�'y^�ED���u�����5a�L�+��Q����^$�Mhw���:�x��~�?`�2��t0�F���j@-{Z��*~�T�_�<|�k G/~^��	��1��e��M�Q��<|����Ju������j�_�O@�@�@��K����|���K�v�zuP�� 0p.�����P*�r�����Qt8��~�q�����9�r~�N�p�������JBH��NRv=2g����-tb������<��	��d��h�|����&����ta����u����6�Zd��o�����q�v��R@��h������{�_�������+��W��{�����^�G��s�xC_��h`��`4��.
������/
��G��q���'
��������	s����O�N����,
�o=Y�^<u0�dP���r�)s��e
�!�|+8z�!����S�b�H�7X|sR�O�������]u��t$���:]������cr��TX�i�]
��s�t�Q��|Tj';*5�#�J>N4��'
�k=N��4u��:���}<j���Wk� �w�B��M-����6��$.����J�~�B����k���I�+1���H^W;~h�|�l������m{2�(M0U�tr)���-]�F��v4�Q�[�B������\��8�M��)��-��kWz�����?�s����H����#}xk�B�l/��s��a�v��nm@�0��dx�qm�2�t�#�� �����o�L�4���K���Re���K��76����l!���k��j�%em������q'H��|�O�����~S�f1��gh1#���u�+�����(C������E����<�6?�@B^d��P�XE�zpd���Yu�������x=�"{g�xD��^��d�C���3��}�E����5rC�8��
�=#�P���L�e��������l��0x�;���BP�>v"������k�w��Pn?�3"����B#��C��z4,�/�f	��@h*�D/�9���X��*G���,�Y��^c����M8?`�n��,�{=X�
=�5(���l���L��o3�Z�s�0�G���	���Nm�����1{f�.��{0�����o�:=M^���CQ�t�y@mN���N�*����b��<��Z�
�92�
��sN������VKLoJ%������������E�����h�HL��5�!z=D�4
�Uk�Ef 5
����Q�+��_��J����bK8�#��Tl9�'�������"Y���`>�l�U�pdd?���k�����#��y�^���N��
t�
�q^$;l��v�\v+��7�������[��k���.Hc�~\�W<�6W,<�:���.��'�sc�`C��2�L<�����[
*�10�5�k;�����+t������Q(G:/�2����EZ@O�}��w
>���,���
��f`�N�1�@K�������M!,�"�1Yh�$��yg�"7}��+,�q��l� �Q&K�
��M��K�	�G~�j�HP��z�B��
�������{<���MR`���%���
	;��Vs_�!��Bg������z����<Wux�D�"���#���n',%D�p�U���u�	B�]�98}�����XE������o��8D���d�4����Q�����K�.�eF�^-�����0�l&54��2���}���j��0S-$���������i�qP���������tL������Z��0?���������h��h'������@�*���R�3���&�i�7Y��
r��a�F?��@�\]�v��������mJ������[L���r4��F(�Ka�����(V�((?{�������-F��4x6K��\9M���8�'�<����x�U���3M$��d�V���*R���0��x�FNub�m�b���Wb����V��SV�/�.�nl"eu�k���l+����[#x�W1�K�W�}8� ?��K�$��eg�O������q-l�����Cla�v1��';�f�7��^��VO��0�y���������~���2z��kRB�>z�����_/&%>�j��my.N:�3��[��{�����������*U9^�%����	�R/�����@�+��D��M4]�����`D:��� ����-.�y��@�@��$wT>�f� ��X`'�l����F+:���a6���a�H�$�y=��y�(2���E �R�dY��v��Z�,�L�������SB{�-��'��~�����'�����b�jr�@���z�3L���F1���"7_����<F��|��V�yK;ej�5���ShExw���5T� �8v�q�	��Y?�����C�2~�AeC��Q\�
�V�5]�~S?P2N�?�F����mc`�B�*�"r^��0p���/�%�V
�Q�`���9j�a>��@��?�Z5g��]k�����7e��;�Xx;�"�\���z I�1H}X�N��������Q�v�#~�
�zM�0O����frw�`�h�JX������^���5Mfx�
{a��b��U2^�J�s.13K.�w��;���:��c!h�/t�J��������%��p����i���Xzt*�Y-�.�A�rZM���
������9����b<�
~�xT����,��7��0<����������[���!@�e�6D`���t�l+���(|J�k�j?M������()��)�D�J(D'g���V+��H����[���$��}r���
/t���'����x )����u�&��S.��rIoZ������
�����4���S�~m�)'��$�
T����r�G�Jd�x���+/�K��!��(
��[!�A���7��d�><�����I���r��Wy�7�D�q-u��+�T�*k� h���������c��t�Y
C����{T�*
{<G�2��P����fZTq���:�ud	VT����6/��TI�t��'���*&���������X��jF7�=�Y��H�;Q�X�h��x���+Ij�>y3�VU���)��5�i'{��'$�+���u�x�(�F�*'�����5A&���,���v
�������,$�n<k0[�j�o��k�*;��]��9R)*��e�$!�kx#
�d�?����*���;�A��An)J��1T��e��#�p����`���������[M���mEB�)���F�W�����zS,��G������[�z��
���s�+nl�2�D�*�����b�D}��S�1��~���]�����C�X0m){�W����~ ��APh4���������.�b9��g�C2n��h%B��h��@��hE����)����|>���1��`W(Z�����?�g�)2�W������-#�3~������{�����A�[-{I(�nK�O?�1Jh�+�eG �����7?��&�$�p@��/�������k��Y�����&sq@�����@t��6B
���1�����~!��&�K��n�7��&L��>�H��[@e�/xD?>�(G�r`�����D�)��eOum��NI !K�����Yv:�_���`q�����\���)J�-�����\L�IN5������n�%�����Dw�G�<���zR�c>fZm,b�c,�R�i��'.@������n���:b�P�w���;]�W�����5L���n�yo�S�1�����~sy�c�����e�6��%���3��� gR���w�Of�\��(�d��;�M<a�_���&E�a�X�������b��?�/6�
�c:
�%��u;a���dUYv�9yM$?a�!���_L�`���F�#~S?P]W���������L�G��'�.���H,��%;�n����$������=�G���~���I�D�v�@���%;������J�	����l���W/WT���y�|��b������|�����������]�� ��4�1�����T Na1���w}��ku�����K�{����J����s�2���/�4"�����
�I��v@�6�$��(�=�\!T#U�|���-*^�]��I�������$
��~`���k��E��U������N�!�v5�MGg��I����h��]I���b�O��a z/~+�	��"�Ls�h��{��g�YR�1���,�A#����{��EUf�l�����J>o�������xbg��b
�9e_�U��v��F?	�N�i��
�8BKN��H�u!�F���n�.'�t]� +�,�hU.�E��pM=�A�0���t��E�J�5�/��E=xl�z���Q�{������V
��52����W���T����>��	r4�=���p ���3��J�N+��P�����S�]	w�{�Zjq����]�����+�1��}U��j_e)<������Q2@V>h'4����������	�����(������p��_�M��)M��G�>��y�U����i)z�����zS��	���V�k\�q�����[��� �w���,��v8c����=����[�M�5( $�����XNo�,=Lx��[@ �
����'���H��<��)�tH��gI�h�\'��Kr�x�,����2Bl�Z��sp$����Z#�^���A��ibI���Gql����,'���d&�w.e�V��}�5�v���D�6?~��VkO 2���V}�U|�Q!J��cl����U�t'������W!�d�Up�V^�M�4�v���_�/u�UE��^�G��&�����'_�x���y��{14>�x������{*H`����	X��X�E�����}��a����FNy�SPV�t�Y�� .MG;�+�K�j0;8L����i4�9�Y�
����>
����/>�����t�Yn������#L���M�����&���]��\!vU,���$]�2Z�XL�������sK�K�f�������k���&L�5C�����+��]���:n3��\�����{����f�W��DV�(�wss\

�*K
��z�K�Dh���O������o����Y�K���MX�@
�W�����3�\�����	?&�Z�U�%ti?pT�����~O�����ihS�oP��7hL�ey4��P:��0����{�4������q0���W>�!�����{��&�vE�Nq���L�[47��L���]��m�`�/����
{[���_.�����=�����%����kL�`j�G��LG�F���,��� ��H'�����f}(����Y�����V��oS�T��O�bN���K�u�}OU��	�k�^��s"���M}���2>t�
J}0MU����p��V�Ih;�6�zOK�<�;<����%��2�v=E���I�)������(�b��e���M��������[��z�a\���\��_|XEV��(*�2M7���1�j^i1�V
~`�#��$�A-�B�@�5��M��*��3��p�Da��'����*�N��A����#fQLb����������Vb}W/���w%��~
����s�v�%�
5����4
t��DA��&���%If�M�����s{����P���,&��yA6�Q]�+�]�?I���/�r*���H��IB������mIP�m�%�^�����\����������oH�zS����PV{1�Y�����
:w���W��u2M�E���2�#Sv���h\���F����;�Q��U��0o*z��i;�_�x
(=�A�XjE$��������d[�p�����������E~�Tq>mV�nP�g@�dB�:t����!Y���!��h�(����;��v��?����4�#��O�U�JIX@a�UyWTrH�����
����Y~�����!tn���&����H�����2�����ZNl���J�d���u(�z�Z���Z��gR���T�uh|u�YB�����'��K��Y���K^�zqw��{�C���]��H7�������m�->���h��#B��������R�1�y�#���MZ�*:���(���qR^P�T��	���	�X���6���v`����y�@��}�J"�R|L0YR��4�&�G���Vs>�
zAT��-jg�V{e�AT�/��%8[z��m�����s�.Z��n/km�Y�3� u�&�}dd����Bt�K1�2��*x�y��^jK�T����i:K��Er;�����^�x�#\02�n�|��$f��'�tU/�N����F��@���O�4.�����E���nXwD�S{�A����������r[�`�}���^�]��������1�q�X��u|��b� �����������#
�>��n��d�.�%Mu��?�h��W�5z;����{�-�������-�K�W�v��R��n��t��k��.q��l= ^��]*E��&.&�P�����L���K���v=���l	�����c[4�g��eJe���^V��SL�ZB�S��h�R[�^���;#��9�y���5���w�K~}��P�s������*F�:a�=�u-��l7��3����=��o�2du�y!&�z������}�#Gq���~B��q�m�
U���bwH�����h/�9�!���� �u�G=����Q��:�8k�b�-��:�WT��$17����Z��@�o�B���)��6��+�d:�g`�O_#���7�E��TD����V��1�z�f�d�>NX�p}����L��h�e4�j�O�O�{[�8a{
T����c�O�B(d�Tz)�X�7�7��o��e��8�^n�,j��X*en�T������Sm
Z
��.ti�apS��~�?�������0�!�k����.�@�x/�0�S{=;��.�P?=*�<T�$�R�R(���������<s&O�$_PA������&:�k0�T�����G�^�N��6���?��d1��y4��|:����dJW{�^�������n�����G�q���6m_�;��t�/�o�<~H&�v��j8H�
.n[wl��0��
�g�s����Oi���m�;����7�_���,<�z����qZ����Q>�4��;���4�)�0�����RK���U�:��r����~�����Bg����x�#HjW3�Xx��6��k�;�z���]���6j�����5������&�]� WsVPYB��0g�:��M6M>���|B	i!����@i7�b��N��h�zB7a��c":hG����������pAbL�]��qm������������@���Z�Pm>���:�	�����4����U-���u^iUB%Tt�������K��"~*��;����@��#v�p�\��vcO�+K��xULac�91*������>�]��B��:D-X��������A�k� U�zUrv��
I�:�mBv{-��i��pnn�KAG��Km9�v�T����&�T�R��,]S&������l?���e������\4���aHc
��������"��w��
��?��-�����U)���g_���Hq=|r4���@�d�
��,�:��>l/F8�"����8~���'��:��1���=�a�p��A��^����wAY�t���3d��C�j@a�ER8�!��Y��&��M�
]/-V���t,@���2H�k�
h�Q�>G[}nn/��� ��x������H$�B�� �����xk`�������@GPKY	�(�'�^�p ~1�IA����VqB�����
t�7�4+-@a����� ���a���,����o]0p~�$�o���k�*��&�!%��Vj/�7�c���8p������]�-[Dj���p�wi�&�����(��`
��FJc]v���*�#�����
z���c'�A��I��^��lZ�7I��.|6��Qt���m���{0�	���9���r����3Bu;@V��E0�Q<���]��V<���9>^�_������Wm��)���;� �3���	i�pm_���
�	Z��Yq������5���^����)��
	!�}�GM�����R]�RS�������>��
@������q�W��(�F�6�X�K;�X��o��G��6����xh��J ��;����{`�T��<���x�as����<���t�1'�����(�G��.^L?o��>�����H�(�N�����m�(�6;��@+���gI�l#�z���,q*�7Wv���b-~i���3}x(Q��De
��+w\]�O1
|���������y�8�/�~dc~��	�,�V�*Jr�F���:���U���D=U��_�Z��=����f�|V,Nh@b��#��.;�
aqG&@��xz�*�N4+Q{������1�G��r�������5������K�
t�*�Z������Br��2y&����J�#+%D��@��Y��6��J�9�G��'Dy<��J���._g����x�FYTN8
��Q{Q�AmL� ��M{bL��w�D4\l���x�>���I5��0	
l�����x#��o�G��!K�"����@�,��`�l~O3*��Z�M�I����WX�j(Q?���:�!#����F
tvtV M�
��D}�����A��b:M���\W���	�h ����Cn��e[�K��z��d"��v�Go������C<}�������t���n�XN���p���X���o�:4�[�y�E����=m�����e�yg�	�m�����6����O�>*��nv�p9T�K>�4/T%���5�YE�;���&#���j�P.������L�ul	LW@��a��Tk�5����[8i��f�Bd��	S��r����CT{%C�8��[w�
Q\e�/B�aK�c�{�7��4g�z�,����0)(�l��
0���x����/R��c����>f�����j���Pv4�wI!������{����i}h:�-�s��F�� �sq�n�������&���,�$������w���h#+�%U�u�7� �k��`HBtn�*K=4�R�B���P!�}P��^
���Z8/�k����e�����6U��%��;�Y���W��D�����|�u��zG���R�UD��_6�����J�b�KB �CP~OR�G�T�q�(�T]
��	MDk�5�]����h��N��`�j������Q��v��MDm����q�	@}�}�u���������(��C���m������FZ��o�g�E$V���������� V
� �_��'a��@V���@��jjt��1U(7���f;dT���l���mmc�G�����5�8�^�Mn18DR8/�,~�������R\�b���|w�Q:�|F�
G��|�s�����[*�M��_�u
��E1��85�un�`����C������N�&����F,P�$�[�[0��/�-S�#�s1e�����*&���1�����[��0��k�����[�X�f��	�:�!";�h02��/K&4P�u��K�M��
YU{�#��Sd7������B
>!�%��7�*��|F��`E�\Of:c[h{5����e�u���F�x���f)� �n�FgV"5{�A�\y6�{=�O3�0R���1`���"k%=od@V*��U����������(8������c�N�Y���j�2~�����������0���0KI��#����C��u����OY�'��Z������8��S�kO9�0:"��EawXU�3
�S��I�cc��J����w����k��������9�5r��b7���<��~���}9��W������k�2�P�G`X��]�����a:�0!��xZ]f����1��[���=���K�M{����K�+��^>\�e�O)���R:�:�N���gR�o����^*NZ��������S�Q��K��A���(��zfn�1����qh(����v_����;����v��0�w�5�����a��S�PG��t�rN�:�d�.�Ps�D9�k���Z�ch�����u�k������f���;vK$;K��t�[���*�;tL,V��Y%%���kylL�]�L����&���T��t��8��P!����@:������ui�SN\l�3
f�Y���T���|hw�Nm��G3�����Y#��S gI<����R�w0���n��E}Zs>Z�b{?�e_�
��(	�c��|}v
 ����l��;�#�8�����Vb���5<r�I j�����W���D��bp�Ql`G������7k
[E�>z;|�kf���;�h
p9��N����^jSJ�q����B@�/��=����vX�zB����Yz��������CY�{���|�L��7
���Nr�.��=�|N?Q����;���6�t�hw�Q�y�A��i,z&�P�@����b���
�|�����s<]�f(�4����n���f��?�g�)��G=Q4y�X4rP5��3 �SR��\�.��B�B�p#h����z�TvY��JO��GhWB|��|�,����k��:����V��.

 ����n[5]�'���%7�x�?!abdW��H���g��3�����
����K��/	Mx_i�v|	W�JA���-V��u�Z��B���5�)������aOY�FwW�����{��%�Va3 ��n��0��C{���^�Q�Z���XT��(jj��UU�+Ri*�
3]����%>�D�G�l-�]��%Pf�
�uO{@SF��X5s+j��sx;Yo��g:��c>�;Tk
��}���\lA�+9����W���Rp�������m�~�^C�9��3g�$�Oi6�#���9`]��SB�f-mxR��pG �L7��pX���������D�G�:K���`�����/�bbp�[��@"��Wu�������Q/u������I���A����r&������y;�8�����@C*��jJ�h%��z������'���u��"9&�8n����5ny�������d���bS$eL���A����0���N_�I��\�Wzm�o��m�LO�q�@�m1qE�/���.�9��X�1�a0
�����s��I��hJ����0�H6$�<�b��U�����]�s� \��Z�n��9]�8y�Dl����F)����QN���5dU]x�L�����Q�s@��k0A�{U�c_���������^�'O�l
^d���#�I������a8�B��Cu���P��j�G�Ao�I�d0_�*����Q��� \+y��7�����-���\]����2�G&�����!�h�WVr��4��.:Dk����t�x��5@kO��7q	b���
��(�a0�jR��8/4{�J�;������A���oI��6�)�F�
F�:$,(����;c�������/�(��(h4Y�&(��+��\�������Y2��}"���A��, *�w�Hk�(Y
���1��:�6�����#<�*�"_�����7]+B�:�a6�������'N>m;�F��N�DO����pv����>���4�~��Tk���l��r��W��gz��3]�8�!����]��
��:��"
�{}p<�9�#3�u�����7(m���62R�
�EA��j�
�
�����6$rtqn�&���kT%<N�S"�ok���'�>S������D���T����x�L����O�1C!���������X��AO�A�#�j�~��b)���4��}H0z����
5�����*���k����|Vz���s������"]em�;!�C��_� ���T�
_��~���Csg�1��K5N����0�)�:��z�c����t���!�_sxW��U�d�:�$��0�6!��Z����0a��-��>��j�0���f��~��OU����)�Z����2�T�"��C_���+5�3-2�J���IE���b��r�w
����_�h�q�����+���=D�>�����Q30�%oX�r���CM���l�t8�\f��Z�s���V�����M���%�KV��Q�$F~��Z60��r��;00������.�q�F:0t��V%h�?���C��8����N�/�q�N\!����Q]e�����!��.���������f�C�Y��Y���Mpn@<Y���~{#�1�,�
���R������2����B�9%Id�$q�p���4H����v:�
�wZq@1���rF�3\*(���W�m�8C����!��H~D�+��/�v��2�?y��v|�w�@Uk�5#-������}�_��
�d�-8�h/b�38�e�	���Q5�h����1�����9�J�!������
�]���~z����V3��h6�2Y*���s.Lj�J���~,�Qm~�*9�]6��(�60�2�c��m�t���CK��}�e
�KM���j(�Q��a1��	?�<9M��H8���g5�z��\���kY���r1��!K�x6����E"������VJ���E�Q����uHu�����<!D�esC�
LFz�}�C�@�������1G^�,�� �Gx?6�)i��p~�R��gL�R%OLSv����L�CC����oBX�_�7�0�+�^�Q8C1��L�Z�����M�����P���,�)�b:����=���\��zj���*�r���9NXE*�<��F-f�r�%��Y�X��t(a�(Dt�id�����iJGC,�S�����o�>�%-�����m��thM�f��a%u�.U{�i�1���G�"�4e����@:?�]u�B����{a��>r)��/sH���V�8�M�5g��p�LK�a��������C�-Q�T������E�����E��D���J��������))VQ������{��7��7�u]��\�pM����p���I��^a����E_Z����H���P
_/�
�,\��3:��f���
@"���M�����T[�7X��n?�&H�Dg&�JX�9�;O�U�u�����M���*�[��������X���doL��-�GXgD��Kk� �1�P��W� ����
�%���L�5o#X��I�L0",�g)t���U���Y���*P���qLy��:A����9x�9�V�G���qx��7-�b�����oN�R�~�A(�dQG�Z4�K3�i-���m�y{�W&��io������/�����^q���oo��@���N���c+Uqun���:��D���C��"������7�tQ������|�w�� ���K���4n����-�Q���. S�F���g;����^,�dV7��-AX�����!��<��":������ly+��K��iz�m-N���b�\]'8��Ad>�C�{���Q"�������x���2�GN	4=���^_'�/B*�DE����#	�G�
6�<�Ag
�u�3�A������|��3b' ��e��M��o��4)����:��3"������������N�y�R9��M��2�~�<y�D���.H�[���vk��
�	��d]������r5����r=U��s_�e4�$�UE�.7�S�~�#p=��b�C;�`[�o�lDc�5�?Q[d�	Y+�r����i��Jg���������V�U x����^��������y�8�f�����c����
�����5[��%����^�qR���>k.$���z�����8����,�L,�x�FJ)p����X�� ���f������a���O���*��{PdGSn���Z=�Ui�=�y�;sW>#�o�P7���7�!����4�C�9�4�%kI�f�c�K�o���d��r�R9�B�r*���}bv�3r<|'�v�q%�t�S�Y���o�����>-%���{q>�t��	�Z����.�sl�C�
��8��g����],��;_����-�uid=����1�V�u
�]�V@z<�yS�������Z�)LVMj����X���&_�bJ(������2g5^�l5�s�2=���wm�^'�4���������Z����VO�`�u�uUF���am-(ALV)�S)��t����9��2]k��=7��3�!j�`�7�QI|
`g�"�_�$��$�8`���:h0��z�]��27�q8\���{�����;f���^p��6�,�*�U��m�I����
���.id~��������Y�E�������r���G�t�S
-��M����c��N�~�&��2���x�8(���AEj"^����v��E:=�=����Y�2�j��f��?`������B�h��b��Y�p�p�v�CY���M.l-<v�C�������Bg���-���5��;O���t����`��l�dVv������}���r
�o�.�k��~�k������2l�|�z������sN����������H��o�@��{s	�1��r:��Z;��
�b��M^i@?����z���+�U���u|����F� V�m6|L��������-�y?�u�&�^���oK���*�?����_��(�����k?�ds���&
0��$�u"�M{�Ao?�:��uU���7~��w(B
�?���ae�`z��p��������tI���70�X�}�\���Cqj��P.T�����C�h�~��O_����,�e�;����91V}1<�������^������n��=��ET��Kx�T�=�����^Q��3n{�
�1���K�7d`$"�U_�B�WI�P���c����	��=������{i����h�D��h5��/�����_�e�d=������_/�z���Tz����kF��c���W
�>���0:���m���7W�n��=��^�j���v?��VG�8[yq���S�<�q�s���Y��\�VNC'IB���L`J��-2W�~U"�H��%�7f�*�������9��n��3�tq�x�%�!T[b���j�tT+�i�����|��P�!R� ��Dj�}+�j���Rm,��7�"M?m��c���A�!rk}��}-+����Lz*�W��d)��6�$�]�K.s~k��h�/{�Zkf�s��1+C�l�!�q=���>��W��i�X�o�o�{Xk�|r�I��:�&�/���S�:���&4�)h��Yg�.ck���J5�l��8��U���v��7�����}I�.���
�]���Uxz��������,��{���K:C��y"���:D+?��Ek����C��'�*�VLfy1�O7��}���s����
�����������#2��Fq>B��
h���H���=�r��Xk����A�y#V��oW��$�,���e�f#�M��f���Q �k���o�������7�9\��~}=y~&-rOoJ��!�ckUW�<,�[�����4
A���w,o�&��L�q"�1Bkmw�D��3I��m����UrE1�.���Z�|��KtoO�E�n����D��E��P*��^��������0_�T6�]�S`l];�:S&�����}D��4��z$��1�q�(2�_d�Zo���zy�u$1�_�%A��%�����5,������sj�a��'N��'��9�W�dZ�Vb�yrkO5 <����|v�Zo��6+	U�s��<����F����y��xsu9���t5#�l�1�#[M����.��z����NF����w���c.7����m�7��:���o(��m��W
~�O3������x^��b-n�2q���J��G�0�/��WL�h��0���u�qO<5D=d�����V}q�~��P�����mN�!�y���alY��
 ����
}��C��;O��gv��7��d�.IwU�V��xCJ��?"�"��x?���<���^�H��}&���5`n���*�/����X���[=)�w��Z�������.b��[k�U���z��d?k���E���oW3�@��]%��Z}������I3���d��Xk��3�Zs�|��
������)�����k!���KZ���1�Zm3��O)�����T1����}\��������j;W��z�H�:�~�EHpiu�Q�*�n��CQsq�C��$�C�j��m�V`/&���t�jU@/B�S�y��Y����H��<>����Rq��8v�>�������Y���h����NW	 M<z��#�����,������)��*���
�t�
��������N%��n�]A2NW�
�)����1����9&��_�NW���_=��d9��e#���]i�I!��&�F���{�?h�����z�������2�����G�%��GnW�
���:n-k({��g>n���,�<?/�o��x't�G����.������ �a"�����f�:���v.Zs�;]��4	���ZM�X�7S�q�'�kkL4��6s����:*E9]���$[��+�0����D$��O��-����V2���+�	�;����$��<�}��������1���_���K���H��.*��������{�Oe����~S �J��E

�o�l�t�������$��d�Apz����G�g6r����(�x�f
����`�bF��9`��`:��*U`d�MR�Q�Y��i]�VTI�Q�������IB���^�X��;U1�}�Oj*>����*���!EX�c��BR�5��r�jVS^�P�O����x�(+?	7�������N��H�.�'�6p����a���g'9�5�"�s�Zc?�n�wJ��%��F�h_b���/b=/��������&�e:������{�Y��{�M\l���C���-(\~��������6�;��.@���rOYk�P�2��?�������q�VM�fn�����B��s��J��,s��(�o��-���r]}+�a�I���l��.��b~��@�W��:����4q��"F��(z�r�x,d��z����U��&!�e��<�ge�r4b��G���c������7��,�f7�E�o"���Z�X$S�X$�]=��*�R��B����_��U���d�����m��p��e���8ty�ktC���9�HZ=M<���c��H��h:�9��^2/��O���}�:��[kd��N?!2g2�����i�������K�~ ��T-�����;��*�K��I��D�"���RAdGp�}���gN/p+�h��ss�`"��n�vu���l�3��@{i���k�"%��TxO��?�O�N����/F���pu���	��%����UH2�f��+��v����N�+��2(���n��
������N��?���q�O�.��F����p���	a��e����*A0MK({<��P�$G�/e��j��������^����N6�u������b_-%_>fo�+q����/y��1�������$/�'_������&k�rA���`�#I�;�4e�:�EYv8����9�w��r>���`�r��I�F�*��7����[h/��yS��|��7M����N�cG���5��b9�l	�/u��?�����M	u��k�plz���������<�)�2����t����)��#���"��d��|N��m_8�~|��U����i���^�v��M�9Ky���}i��7��m��]HZ}�m�t�_�J�T@�iV0���7���7O�b�~]U�6B
`gwWE�Z�?n���g3����*�9
&E���~-�I�
EWIm��
������4fiv�ftU��Bl#7cd�4r\n����a'�a�7���>�hC�z*�c�I��TW��8]U~4��<����+${V(��"X;�^�h)��'����#���P�,UM��CK�COi�v����[�!���LY#zu����U�G�yY�GX�|*�;:
�
�T�2����#��������D��h`�J�&��q^Q#R�3�%B�/��g}����U�F����j���~���~%[+Y|��C�s�yG���L{�f��~G�b�6�6�s���4k��u=���
7������U�F��S�zLn�*��_���ZM[�+��tV��W����2����R.��4O�F8@Wf��:)6�*���Y�nOUT����*��L<t�����$���g�< �O)���n�`�^�������l���j��D�x�9���SC��v����c�"����S��c�Z?�����4��+���I}@5>d�������9����
���D�����-�����H��L��c��%��s��G"�$���UF�j�&��PL8��������'���L���s��U��
�|�eH��wU*q�
�A�l��`��	��A���uG����au�F���(P.2R�P����H��m��<�U,U�I�j����%��K@��.k�]�SLPb��-=
R��DkM����&@�:��S�'�~��@��x�L�b����t�(���.���T���*�b���j�r��V�j������2n�CZ���8���Kw�z�?���qkeF�D��	���_��_�a�]5>����<���p���9}�wt�\�Y�?]D�$r��W�R��s�Fk|���'To
�Y����U������Y�)���Z�!���$5�����kMZ�&����0c���g�w�	o�c��P)8��0����]e6*��j6��|AQX�:��3
!�Eq�gw�������\�udZjC�ur�]b�d��\5c1a!�C1�wc/���h�6�Q.]�;�������w�A��)��/�Z�"�0�cZ�nW�M0Ng��*����J5������*�Q^�(���A������X�Z��Y��Zr�%���$�ep��S���W�Z���U�C�\��]���b:��I�w������\���2�i�/�w��U�=�U�	������Pa�(g�M�Blt�zj]�y���o�:����z	�A��E
��%��q3Z+1$^&kpC�8�+��U���?Ka#Wf����Q��2�������dV�+�B�w@��f�t@�8���<_�W�)������\�]O�����Tr-SK���t5�#���
���/����W�	��WR����`���\[�F�}��NuO��W�7�T�M��M��`zJ����P����y�w��������9�;��P�*e4
���H���^�K����]�/L`yW��S}�����m>��8��b���c���^�4��&���������-��5��%"nm�����>`����3}����X�*Nr�j?�}����e��h�����NH���SI���!�]E%4	�7�{3������:.h��S�uC���YQ$���X���������B	��9�,�����V�9�M��`�3�9u���
�@h�%����6�����^��A�~�)��&y..�D�r��T�I{8������������C&k��>�Z��]��$�f��%O$����%e��)i0�������-��c���Ck�/Wq5�s(�������6,���Mjl
�����a��m%�����b�_���!���0��p����~���_M������yO�4��/vDY+���>�w�~Yk�mv��m�Ez�G����K�r
&����Sk-�����b����	���I��D��Q��iAZ�_��Y�9���g������U+����Ez/�C��w�~(���6}eXV,h��k��5�wq6dx�]�
L��
��pO�d��<l��{m�����Zr�Y��V��<���|���]%����������
@4��<D���l��]U ���eS���/�4�U����<r��tQz�m7����C�eo�� ���V4mO@�6Y�����H��,�<��d�H�p�(%6x(���.��>�k� ^l F-��Zn��#��TU���*#a3(o�@/D_�v����L�$W���r���\��������)��xxK�VG.W���u��.85O���5�qU�E$��ph[c�{�?(C��3��]0����q_�\<)�W��:
/+k�����v�����\��K.�&������
�yL��0�|�����i=�����������Q!�
�����v\Wmm,��/5��*�?�PWMM��x{}���)�sh�2�FXu�MN�v�
ih=/K�\�KJ.��E�W$�*���2���n���e����i5b*�h|�H��5e����d��m��,m�"h��u������c�P����|E�*at7u�D��4����y������*&�8��M�M!���q=����Y+!bt7�za�2H�#{j��&S<���e�|�H���wL�K����&v�|��/^��C��$K�bN��!��+��7��@����N����{�^��%��e��6|���U!x�r�,��;\�<�����^%��zz�Q!R"����e_����4��C,���,#���}k'p]i?Cdva&����Y��)^pN����JUJ�Lf���;����v��W��y���k������zNZ��������W� #I���(�#Xv��,��4�4Y���gY�;� �Q	k!��@`��c�h���������p�K������9A�X^�I1)��Oa�>&����a��uf�h?��^�.).
&49[�����}������c�M��{��-z��G��y3�����h���k����y�n�O����Ryc���U7�>��g!��]U��/��5�D�|BTydI�>��j��}����p�K��^�U����K��h*Z��W��}/Y��ZH����[��������=K����k�,l<��Ml}��1���6>��������	�sm��7���<Y/�?��9���������)]��B|q�L�����/�ya_n"^���?�oJ��'y��I0g`?7��,K��dM���|������M���'��<�XFp�L���z�H��8�?��~������DK���|���*,��*y����L�'����}i
)�X��_(}���M�R:��Y
St��Z����OWO7t���P>:`�}��P��>���Sq�����X�"�H��B7]����e�m6Y�,:�b�)k}FJ%�1e�L�)h1���?%�Y�3t��Z��#Z����-x�����9{����~�&E�\Of��Bh��2��7Sq�J:��-g�xd"��o�t��Z��Y7��*]�%AIFKD���D�����<��g���df�;��"%����,]N�$���ST�8z�5+������vu�a_�IE�d�z1g��J4��>�/^�F��>}Z�}�	�����C<-3�*�@����F�LRH_�Y��;���
&�2��pd��P2�W+����$Y�/�0�rm,��wk�m�B�F��d_��Y6��<��b�E#����tJf_
�.�~~���<�itK:�w��N	���}#;nKqB<�t������� ����]<N��i|(���UH�������\M�R��t�r������|1����gsU��;
�����:kMl��L?U��h��u���0_\=�&�i�:�&1������!Y�s�F�
�@{��s��~��4["%��"�����!��}���_��t��'��P�Z>�3o��g_���@����,���%?t�����},$E�mk-o
�.4�,���w����/����4]
�:�<d�����Qq>��(&7O�W�	�����$��$��R,���f=�'�bC��Y
���r�${L&���_�H��Z���
�7��k����t=��V��Mr.���ZAs�E��6A�����u1_��q�R�t���g_O As��I2vBxg�'P�Y�#��,z*G�����:{_��@�����}�0_���(N���"{�����0�K���l���0_M�vv�
��Fa}�>����cXo��*��l���;�egy*_���Db R��q{~�!�	����H�_l�o��d�jx	G����'��FTV�z#?|%�_��S�#'���I2]����Tn��,/�;�c}�#�J���ZL���%N"��O�3��.k�}�y�2�^�y���>���YbQ�mP{�{�g��q1�WI�h|�g� �'\������)��)�� ��$K�.����[�?�%I��{fx�n�>BSp�st�SR�tZ����y'#\s8�QXk�( �t�f�	4�����aR���,��]��~"�s��)"�cJ��}-��^���:S��iy<{:v�9��'�y����gaco���������'��^�B��o��w��=�V=�������!D�#��a���P6�,����<?��&��H�ZE��}����3�����^�5��8�X���YR|���?��B��=K�3��\=)��?��lv�:��AH��@{��y�l�dv�<���,<�t�c�W����[��j���<�i�� o�8/�������|����b��,Y�k����E\������d�����y�K�m����S��O�;�
,�������*�2�1�?��,�l"I7x���W������c��������K����?>W���fW�9z��q+;��'��8�V��0�Y��wB��H*�%4��|���Qh5��N0��������&!7��J�-�����l�������q7�j��~�N��y��,8��'�������Dm�:������������Z�\�P8���tS�,��2�]�w����W��C}_��.�EA�w{�p�'DF��q�����%�/��6{�b�k�o����kx�%_&sm��9������
��44��G��,�v����c����p��70�y�,����OrI��9��ai��$���g�P���^��{�J�i������������E�C��C�E�������q����l]HV}����}�fYu�F����=�p��!<�{t�������VU��v��c%��<{fe��r?Z�(�43��m/�����=q���=K�����Z7qF������?�"�9���O�L7YR�����h�'Ic'�2�QbgaEn�������Ln���=���sy�����"y��~�����C��>��s�`���c��sGi5�����9;w���8����e`��!^0~���w-����'3��g)=��0�7+<�I:v�=����l�qRW�b�wg�OI1}*KITnx����[�L4VC;���~[���������JX���8�Amg��m��� G��(���\�����t�ms���V� '��qH���s
����c��z�XL�Y9�A���d���$��S���=��L�k�9����6K��Jh!I6I7b�S���n#���V�Qy����"�����shUz(�=�m�WWq�p����{�|������������s�=
.z.���AXG9E��%��n���n���0��n�p����t��Q�,�O�����R���yu�n�s�m���ir�DX'B�m�������6&(�������"R��R#��{�������O���A!:�`����g7_>f��j�-�E�,�CI�<��{���VX��Y��&r��@�Ro����Fl�M�����%��^�wI�^���9���`h���>���ri7{ga�m������A�^���Bx��3"�����z��PB��a�I�P� ��&y�9j~�������=emQ���gUvp�g�1
�	n6a��7����'���������
�'��,����W�(�C���P��h��,�7�:��9E��2���FV�

m���'�u]�������{�D�_�3?]���`��Q���0��[e%
By�q��
�@�w9Ia?0��=r�(�|�OX�Y^��8a�m��+�\g*O�l�d`Q�b1����	<w8�by����[�
#��/�s�L[�Wm B��o�U6|*�bi�s��l�]�O�(����R$k��2?���P���*�xZ,�p(�P&K��V���[�?��OH�`v����!N�?
n����r�3�;s/L��)�"b�H�������h�5�����������Th"�xI/�h��|
���j��b��TB���`�4_��d���'o�	%���/�~�34J��Y�g�����@t?�����'�x�|�6�{q���m�<�'|U����&��'�}��?��� �D��~�~���,�8�$d@�U���%�}�H��D-�`���3Bc�N��HhT�v1����7���P��Ro���F5a$��������&1&�=���?����s�!=�z
��&�
����I��<�����'q>
��@J���O���>h���<���������<3B����`���Zc��K��O�k=X������_�B��m�dE��,�V����kp�����P�m���h�S:����$��?D[��<)%�*�/o����)8������'�c��;���PC���U:1�N�(%8��R8b4�H�eh��� �ss.1j����`����Cb�x��d�X������E�t���'A��U��_��F���.�f�c���-������n�:Zk���J����\T[�*�� >��B�P��
�������e���VtD�p����[�I�5IhSh3��9wS�N����?���u�w/-_��y������"���b�$Fj�8[v���Z*��������������+N��u�Z|_����V�����b.[U��>
������]��D+m;�J��
�IMJ8�W)]���G���h������k�X�����y	�A����^z�kY�+Y�����~%��j[���r���X	�@���..A�����f�?
�������Y%�&������2�?����.���4�7��-�������0���yO�U�R�����xbw#Xn)��	B�O�>����?O�a.�-v�\�V�W%�jAc:�."X���p��Cr��B��v�l!1x ^=3f>�a:��/�C	�ty�����C�@�V����\�����������T�fVF���t%t��T?'�0~���������[���R���k�����7��f,/V��4�J�B��J,+�~��Ut`�tf9;�!���(�n�?����sa3������{�Nm���-&���k��5�YL�0�p|q/�q.�z�Q�yw.�+��<�%���U�]�>��K5�2�������T����������P���3����)>>\����w�k���p��O���%,��b:M����sV�I��=��;��:.��5^a��<��\�����gy!>��[7��MR��t��C��\��+ �A�(%�!��/f��EY�Y����e:�P>����5~O�	�����=v��l"|�K��&}I<5R�? ��>�8�]�qS��#���/�e��H������Ew!��4��eg�mO�����L����
q84�_A3�
���g��ry#�<7b�z.�"![�i��!rW������b�pnfN�RG�����\��'���`�"����T���~a�}6��'�E�B���y-4a�ru\8����p�
k�X�'������+R8��U���*�8A �5�������0 S�G�`�
��R�A��F{�>���M��5`� �N�i��DqR�x���X�B�X�I���E1�W���F�Uh4�{X�7����by���Mh��_5����:����o�����+Lh�:���~�_�K��k��?6m��(�\]N���O�9sKb���ppn�dbu��`eWl����~	�@bn�'T��a��~.�	��D�&w�6��p����������bfM4Y�U�82.���B��O78����<�n��8C����,z�h�g!�
p��!����_�3Q?U����]�R�T��a�X����4.()��u~
��fA�$��s��R�x���|W�#0�]�����$$����}.��S�*8���
O.E�����Gu#�L\Lq��k�@��.1��L�(������?<�����
���V�������B�V��4,~&��B	�XA3FV�����1�W���S�,2���]�y�����Z8�Xv4�����9x.5��~#?-NpO�d�mVRd��.�����*XrL�r���l�Q���;�`�	�R����-���������a����P�|���j�|�Fl�kp��J���W��Z�v���jr"
�gqy�2�*��o:9��rO�Jt=yt���7��q���D��Wu:�����x�ac��$����������C;�{��|�[�nH+�xM�oW�t��;�DI�X�E���~X?�p� �S����^���S�Y�B����I����}�,������vmD��l\��.'�M&�.C3���7��/�Q�Q�@����R~��qU�rW�h+���h��h�~s9`�d���`��S�ob��%X����_0�~H��
`b�#p�+���:^������&�n5����P�,��#<�?��fuqX�S#}O�z7�����>�6�P_O,��� 6U>y@�V2#�@�R`�#:.I6��}���s
�V1�0�����l�,���b������2���i����rC���R��!"o�����������a����Ig��&6l�1���n��8h����/8��@��a��-����e��\�$[��e8��3w�O��RpV�p��j��,YB�mf����
JHm3��T�f�<�gX!�G*�%��D��V�����b-�]��Z����)���<�������z�m�IC��Q���'�t�?�)�?���
���z�XyA��2r�.!��!��S��g�>M��~h���pCY������A����������V(W�����%�03f�7��|�3���CtDOBq���}����������2�n��0�
X����C�FhhC�h��P���q|^��������,Z�������\�5��N����/�w�"�����#+uy��0d�&��R7y�A	���
��y>�(�e�2������W	A�2�/|"O63����B����|��h�aB���j���o
E
�p���������~T�b������L�U���u|'��2}xP158qq���E�G�w��Ux#kqF���I����A\wa��R����uDv��.Y�����\f���d���Z�_�������%%�����a����[�},�,8P!M�n���pN"kJ���~�����Kt����S�����	3�&���:�
�]%�@(���J'�~�Q����|D^����=��*QgK�F��BeW�����
�Wb�.�R�x-'���P�W,R
������~aO:T2�8�wJ��q��k1��$��^�����?��R�h��N Jp�5#�''V�_���j~1�j���(6�s���������f5c;�8���e�������I��m&4�(/LzC������|�}�D�	d�t���K�0�qJ����1;�5[k�KT�q0�*�l���G����Q"o��<�B��3q���$�%}��x�O�D�:^,�cPf�H���B�g����\�;'WTX��t
NL������`z��~�{b�"'%��f_��oTd���j�2�,mw��.
��Q�w������x�RY
����|cL�x��=�a��q���P@$�!�#�f~sz�5zKO��'��1�:�3�D��R�H����2?�v>�J
g9:<Z�p4�w|%2��h�p}�DD��n�A"!��E�FFGM��������_H9��tq-1�oq�K:�<'by���o�M�4�i5���.!w�8���|�8��[��x5_��6�L�n��\~4���C��8�����[�,�nD���k�P�1��Qkfm��t��5|�X�n�u:�Y9�����K2xq�W����#��)V�������"P�M�4w��)��J-Qq�!<�8�\(�8�qe���g���������=�P�Z��!7:i?A��r*�_�%."�G{%o�o��	������cQ���S>���3�7BwT��e.�*��r����)K�+�����.�?DN ?l}�ru� Z����6%p�f�Z�]*�o���4�p����A�M0��i����r�O����6&9��Q�B'k�#�!��0��Z�|��<m��||�V�Z�XG�K�N����+"N*���|����-�q����m��n&Z|?��s���[�"c�Kt�a��:���zG�����eK��W����W�74�����m��J-_�g�	�[V�n�������^=	;J����;�P��-��\�Fp��������8Z��z0�N�*��u�p(�xy���y-�$q>p��!|��RK�-��n�r�o�"k[�����q����~��M���LBr�EC��f�Z7b��7.I���3b��#	�o����^����� ���Y�J�����pGa0�5��1*�x��*}�B�+�����;�XQ�E�C���(\y�W�S�]��J��*�@S?�1�X*�[����V�������4��3�V�Q(��'(Mv1��e��+u$z^I3>.i}�����Ptl\G�-�1�Nh
�r[��BC���kr���������4]��	�����!�JSq�\%V���uq7����b��h�6.�\��~����Q�����ah�`����9n$T�|�i.�o�/'$d �������5(������� ^�?��6�������<r���~`����M�/��_O$9	���L���32���	O������/�.n�����G8������ ��QaK������
.�,�ahU�r#�y��
�%Y�s]����k�1
�[���b�t�j�����>��~�u���+'w��bm\b����	�9�8p]:�Vw�#�f�t�
�L��'	,R_���U�NX��(���O)�j��������$.}wrXpx���HD_G�b�
�"]��di���@G��	r�E
�rd�� ���Tl��6s!.p@���6X@!���&��H��%��&k?J�����|UO�Zo��oZ%�2��>��N�Iaq�yM�U	t'���)C�y��Vx�6K�
����Y
��'�o*oO�p�����p� N����C��Mr��u�p5�p��qT��9]��~����5���WSL�[���Y��:���OP	��H]���O�e�ZN-*���U���;��8��t���'o�
2E������p��;��Xd8izg:���bS>���R�D�R�L���Wi��#�\�����d������%���5Q
��^���{@%`�[�����c�2�8m��K�QW�1�?�����C�X��������'��?�#�Y��,M�yj�W}"�c���A:h��>�s\�B��>��c�6�B�n��v�����Zn���(��qo��p|������`���Q��������h�W1<o2s&���lG�rFVR���
��O�<1B#�uRM:��m�zS�F���1���_�,���1�v�s�3�y!s����0T�'����)�ox�*gx���DO:��3m�
�}����6��O%��f�!^��e,�D5=`]��t����5�b�-���u�Q@K#�t}�V����u����s,���<�P}���1=m�\�e2wM�\����]xYy������F4��\��~������v����/�)cHp����-i~�YH����=Y�f<�<
�&�G'��!��z{,R�eMS�V�Q�����[:w�I|dE0���O�@}�D�7p������[V�W��+�c���iuK��Z	e��r�q�x����i�;��=�@�}\�?��s�0Q���!�)|��C|�0��l�Uc9C���	�����$	+��O���
�z��7�|6kG?��|�O�s�p�ra���8
UU2� ������C�����[�3�rO/\u1P�������p�l*.���������J\��������M�c�H��&^�)$c=�`b��]�P�C9=t��N�T��e(q�O�(U��'���(�;�������~ <!�\N�*�:��zy}9)r���+z�q����
�uFV�
���/���p%��O���<�~�n����,	�>c	����S��	�,E��B1��T�Oe����r��d��FX�����E�/r��^�sY�Vhd�M�����`��O]���]�+q2_�2�Q	DIL�+�e�1�@�������p�ReAS��H�������fS����XD%�.�s���kr��WOB3)r�������#g�d�)bz(�j�Y��Cm�_���}T�7��r�,,|-y���0�~�\�
�#����n
�
2�t���:�����Div�$����5��D����U�V�9yrk�ux?��#�O %�V�9��4,��7�n��=�*����U�=W�>9XU1C�p�(D��`6;����
/�%�����;�!^���E������m�
��)/�c�L���������<��_c�E��m8��������L���Qz��y�������4�q���'�8�,��p����#��)�����J+{"3D���t)�0lK��?�g��7�� 4�oo��Zc~�|�����	T@�� �	UN��7�2O�'_8?�|xY���5�`[��D����&��y,����*���))��_���2P&0��|`��;��H�P8���J�Jy�
cuY��W��b�n�~����n2��CW�X�eJP����e��_b��&r�C��YP�4����F�0
�U&eLx�9dL��^~��Z��r��}>��)qg�
�����
���p��-�r��M�CH�Z3x����d*�U��Jk��y���R"Yue���>�b������1]z3�`2�������� p1����@�$�<<$;�Sp#S�L��~�ye���� �C8Op
�:=��(���mF^����Z.g���n�7h{����`�l�����
���#pT���k-WBuj�F����Sf����~������k-M]�����c�|�q��b#��Je�qP������q���^,���[])���N��2]
����w��&�����x��q�d�N�q�Y��H����g�?��?D���_:���o_����Y��/�P��'���3����P}��1CEl��"�~��x0����H��iB	����m�qL��.�t7���W�dz-&��H�:���,��#��� g	g]����.F%��P�A�c�U��LjW��Px�m<������q��y�����G#
��=
y��Y�u���F}��%�2�8D�.g�;BS.�G�L9�n:���B�k�`������j����8pye�%�IYpK������ji"iX�Y��M�?iyT��k�yuh�x�)�;�2�~U����GB_��Cu�~����q7Y�:R�'��Gbb�:tH����j�4�����s�^�>�o}����v}�
�i����P�Od��_bNM)��;�U�7m�C�
��;=W��U��!\l_m8'��F��K�h�c1;
tQ�,W]J4��m�pu���aTN�'K������|�T.!�Xz��pX�!
<yi&7M�U���&D��}#���<�}�b|�z�]����'({�83�=���\33qP���:���<@0`o���,]���X���T�zO?��z�_�N�?���A��-�m��������=W��3:���7"�89� z�dB�M��|7��B��g��~3FI�Bl6�r=Qh6$ �1��2L����#�`��iR����CJ��n��&���|������:�'{WK*�	�;���@p�S���8a����WB[����yn��c�~)���L9
+���'W%��[���8����F.����&!b����}
8x\��]0�SV�������*��[��^������5�C��#+>P�X�h,R��K������X�1����F�:�h�����@��>.��~�;R����t.~S�,8���~�����]���#_	9���������F��c`r/�#C�`I�|s�'��p��>k����5�%���W`�Q��C�p��{C�����7$�*0O.A�����j�cG�)���\�����0S��/�v1���y�.��8{\�s�C�m�Q��z9j57w�o��qC���rT�bL��j���$o-��������a���
\	n������.x�)�z8P0*�
����<`�E���#E�X"m���a�#�e���Ni*���R�'g�����s�H ����}!S���E��M� 4�m��k�B�����`�p��|�Qp^��������@>�/�������p���\5�@xx���U#p;�":vI�4�F[x�q]ss_KF$�t>��	H:�����c4y����*r��@�MZhX���$3�V���hZR}n��(���62
@��G�1"��}^�����|b(N�F�_xl�|��B|�x�Tn4
��L���?|z���pV9��
"�y���P����z����Ok����!����r�
aa�����H'z<b��f�|fv�z���������*�":��8���\2�����\�\���d_��4�]W4�~�na��L�o���wrE�E�����\k�t2F+qdnC�_�L��!}D�W�b|s�����Y��b���z-�N1�|j�������-���*GH��Y� ]wCoX�����F�z�w��y�dJ�x��7�4]x�W��p�C���$����K�M��i=��G����[����e4D�,��r<�g|�x��}��s+p���a��`!\�b��$��\���������T��[�L���,�N�WE��Ex&)���Tz���
]�kb�����D����	��}�U��%i(�b��v6�b�y-�+{����$j�+�=����`i������se�b���9��~�WY�8*"����@2U����@��6���Mqc/�S>��*�x�(��n3�[7<��|������S�����b������_�=�s5S�,�.�H����]-�J1��^�%��Z�@)q�U�QP�=��=�����xN���d�p���8�y��9'����J��h���j����/�Do��0�O�������%���	���p����Q���*��aJn�1	
��g<:81#��G8w(��rE�%�g�b����R��D���E�������������
�z)��C4����L���N���d��	'(zr��f��_��#�i�s�S����[��%��h�#���
������8�U��.K�_ i2�`)��(t%�
J�Bj�E��!�*r:~�S.K?�����Dj���R�&��h��	�QE�Z(�L�E��&�����0�)�g��KG��~P"JVw��9�����Q%CJ�aT"�Kd��X[4�8PB`-p�����$:R�**�.��"C�R]9X�_?y������XS|:������;%x�q�V�a�!r��L���N�����L�M`����C�;E�DF���:pZR<=�;�}:%�M���r"�����<�D7�&�t�Ns����i��k4EI���*�r7����z�Ie-��GD��g�U3���2�_�sH��U(u��6�3�F��*&����"��a�Q�=>4`N��<����g�����x	l�P9��Ju���^)����kW�52��-����w7��QQG������.��NqGzEim�B��k�3E�CZ�}�m��'����LX�|�����#����Y�A��Ad|�cT�r^����&g��Gl�D�te	����x_�����TQ�)P��iH�":�����
"�'>L�o���P�e`N����mt�Q&g���'����5�s#
�Y��XG�q�oz��0��T�3���yy�"��<To���O%4���P�j�����\��dB1�A�<(~8��ZC�?y>D"�+e����-���F��il���fE�T���QG'z��qU}@�Qc������x=JS��������B�@���|�@���w�0_O���
M\����GIB�=�(�B_�[����ll9�f�����eP�g��W��'��8	���-��X����d���-����].F*u^2��wd��qPz�
�\O���I��L!��,��_�����H��bbI���_qvD�B�_*�����?�7�3RC�o��bA�����������1
�A
�����]��F�|�~s_=':CRNs�9����m�L��|��6-��VtqwV�����K�H� �n�;R~�r������]�$��	��r%89���Xg��B_��r���9T�5T���"�l��
��k����r��}������+C��N�;H?�)����)����m��'�%OC1=�RE����fR(Xf�	�������>=y�T���k�����cD��5����W_�f"$R`�[�xh`T�^M�>$��fW�$�%�dy������
p��0�����%4�1SLwI�<�>q1�����
�j��Y��S���Vff!�����aJL�K�0=XRS��D��+T,/-�w���0��{k��]���w��!�,�*=�R��$
��sl�Y��LY�T��R�X�%����t'�P���ky\���b�����(�G����`���A'��h�g$��`�>��Y��%Sv��5�o�|<�����d�-���>���ba���P�}FS�Y/^��%[8�M����tG��w���[�@��~j@���UMX,�x��n)��HW=��l3NW���<�q�,���/i�x�J������&����`�.�%h�&��6+����]!�tB��N��/��]
fB���,�����uOnHl�,�)��{_g��~6�{VF�,�CO�b��1m�5�M!���2����U��T7���hODr��i�;,�U��V�
{�� DB�F��8P7+��������<1��G�\|�i!t]1�Y&:�Ya���:�,�0����B�;^
a}�)H���o���H���P�������9�b
�������n���c8����6���^�d%p3�����-Ius�H\W�8�za������'qC��CA���dOok���G��&�d��a����X�w�u�`
�kJl�GT|���l�* i�e��FL�|�����,����P��Xp�t�'r%�Wi�q�&���Ctr����#(u���)�2��Do_�n�#�Z�/2 H�}k' k`���x!Q�T���1�W��qEHt����{��G�����f���Uw�O]�hDE�}�x��K<_�dT�LnT� �.|�V�G���m=�L�+#�����F��U,�FPt�,S��QT��g�(��}{/���@�&������FQLC�Dc��N��J
`�:	����P�2S����������q�AfD�
�/��_/:���np��0�2�Tu=��Xq7����X��W��
}oT��v�WZ���H�C�E��|��b(��2����*���(���qR�������'�
���a��@I,����y.�T��U�V�R��P_���(�\���B=���xV3po^���������iSR��jVfT\^*�b;vSH_+(LF��D���n����bF<�w���Y����]z�#Oa�'��<+��T�-�J��]a�%����*l�Dw�����c������+n���� h�J���1B���T��I�Z����e!�A�3a4,�E�2���#pUra�Q��D�������g�rGfGe�!/#����f��w���F��df,���~_"uo=��op�����Te(����P��8�'�^e	��5�.�����(���#R�KE���K���2�'�\�I:���fY���6�Wn�P��C�
%���a&�(1aW����/��0�[����q���K��v�;�z������$�V�i���X�b���Q������Tn0��B1�z�v���.��J
*�C�b��4hd|�K/����9\�}G=�A��A����EU�S��v��I�S�|��<� R�����-��,N��u@�`Fk[�#\�W$m�Y�q�%x����Q��|-E��p�
�Z�jU7.)*>��!
=�*#O.]�����iA/B���tMA.��a�y[�6F������\us��&$����[�����8`�2'>S9���%���J�6�EX���>f���t�g?e�#L#��r�/��R��C>7��09|��
?R�B��S���{v�������+
��sh�3���uf�;�o L)X�������	Q8�Clu��c���?���<T9m����8B�w��M���� c�D&.p��`��{��rN5�C��m�������R^�����(�����K[������V.S���-!�C�.�dP);t}�w q�~Je$?�tK
�����v,?�	%���`*����F-�y#4M%p��"�V��2����`��$O3���L2�v���@� "4U�v��� i�:q���w��5������������tzMO�R���7BZ%*[�&$��!��B�B���e]�L��t1��3z���h7��U�=�8�O�G���X��g_�"�q��P�A��
S�3r�J7�h�\��7�p=�y�S�b)��M-�c<
Ti��P�k`�'5�;Jr,A��L�D���\��4F�/�� '���J��Z~�3bdmG	����J8�)��Lc9��O.pKa�(*���T���+���J��N�+U��*�~�U���/�a5��@@����
H�\�&� �@B�^&��f5@aPT�a�����#f��-�l��"3�y���\XUtD������^��vX3m	��D=�<"�>��Ha'B9�*���C�^�>�a��.{7�A�C�CD��vR�k�b��b���j�w��D14��YE�fq6�h|���
�;�P�4h�+��Z��������7�b�����Mr{;�A�|h����j����c�b0�+��l�4�4Y�A`w0SJ���5��Z�T�w��@�}�I�����uH�*C����C>�>gx�Q�kLg%�mI9�#������Y]����V�p�6�o�cM|���q=��:x7�-�o4y#L�%]B�y�%�L?�������0E���j��m��0����	�3YBK.� �K���M�x*L�����V ��l���b)��#�y�O�H|����U���d�i�Bi&FH^�Y��
�W���l���a�T�.�S���CP�h����F���P"�+���U�o��D��3�TM����u�	��}#�S�����0����=�p���"���8AQoS�F���W��t	l��V]��	��(0�.�� ]����9G���������3���9����~�V�C�h�!|��#���h�jL��J7 u�7��g.�M���a�@����Z�i
6��ry������@���+^H�?5��R�(� �j��������@����J���W�]��9���,���������Me�f/�L�0|p�_�n�]*�*�V���.\��%��X�o���x���\�[��r{r���.���g����Zv��1e��l�j�
�c�;K�	�
`0�od+�{^u�|���WxId w8+H=(~l�L��JQ�3�hpD�wGW��A���*_q)��P��0c�C|��L�\d��MyU���UsE�<�$��?�h<�c�o�5�w�r'3T�ke�:���a�:P�L�]�g���X}��;L>NUkR	��D����!F�u��*�g�<��F�X\�V��H=D�����D*Y���eG��4�N:�r~�8���g{�����V�&����s���#��8��z�����8�hEna�)���)o+t3�z��?���+V��
�W2���X�4��x\%��W"����'�#Z�d�^��H��j�=�QH�#9�K�������_����f��~�9������
X�V��X��k���Q\��	��Dd��+%�7�"�p�IJ��x��T����2_*6�>�D]Vv��9���a�����V1|������)���%4e�V'�[Na�P�!���`	�N�Z!t�]+���t}%I1���fN2V��]}A,@k���~�0o�[���b���d"�/��0���\�r����
��]������b~�����D	���i)�q��y���������_Q��V�>m����~%�'��>��&^X�:UV��pG�!o�4]P��d�������5~��w��x1���J�������G���*��}�J�V����'�7����|�3`VFz��������> �]#���� ���%u2�����.�2�Q::XSE
ju@��2�,����	:�:(�T��!	���������o"*������� �������������$|����>�k�T%zu������
,o��e��,}.k�������,�+S2���7�"i��w����*%��]���m��pi���.���1��[7�	�>��w��|��nS�)�����>�����;t����������EF�h��-��a�G�#�e�����G
�IA���J�m�D�,�F������e�.,�ZUMu��n
��d�e���!��H?T�r1����h�i9�.2jQ�/��_���{[������l�:��Zz3����	�Wiu��9n��Z��d�\;�E��L�a������E9aT��d���^
;K&�z������Q.s�%���(�xu�j�	�l1�b��g����wy�2�D�C"$ �S�#��4�|�����S�5��^Qb`0K^�Q�y�W-IE'�s����� ����S�Q�W�Uyh����DK���8Z0��Q���H@��rE�%��t$D�N��Wp��R����3!��a��V�?��j�
�+&�U����%���Bs}��*� *�P+��S��$Cu�;�m ��bhz�`�����[��H:7*�.����������2*��<��F���#�$���A
U���,��`�KI�.�;.��z-�}4���-G
���wa�[���?�X�LW9'��,�=
G���iu��a��W�d����c�W����X���M�����(=qX�dz������O�����	�i�U�Y����t9�	������3]�;�@�����L'K���&NU	���7���6
�����AaRqi	����Ja�����]��s�h�q�%���tc�{�@���:�Hi�������/l��6����o��k(��J�6��lyL�[[���I��v9��O�A�.���?�Q�����)�
s��F�u`EUS*d�uI+��(&(.��1bU3����i}���
Jr��&���W+K!�����K�U!�p0��TT���B���Q
�LW��X��!�U�9�
Il��:w"�
#46Leonardo Francalanci
m_lists@yahoo.it
In reply to: Boszormenyi Zoltan (#45)
Re: plan time of MASSIVE partitioning ...

On the other hand, if I use a similar test case to my original one
(i.e. the tables are much wider) then the query planning takes
1.42 seconds in 9.1 with this patch instead of about 4.7 seconds
as we observed it using PostgreSQL 9.0.0. The beginning of the gprof
output now looks like this:

Hi,

I'm really interested in this patch.

I tried a simple test case:

create table t (a integer, b text);

DO $$DECLARE i int;
BEGIN
FOR i IN 0..9000 LOOP
EXECUTE 'create table t' || i || ' ( CHECK (a >' || i*10 || '
and a <= ' || (i+1)*10 || ' ) ) INHERITS (t)';
EXECUTE 'create index tidx' || i || ' ON t' || i || ' (a)';
END LOOP;
END$$;

explain select * from t where a > 1060 and a < 1090;

but I don't get any gain from the patch... explain time is still around 250 ms.

Tried with 9000 partitions, time is still 2 secs.

Maybe I've missed completely the patch purpose?

(I tried the test case at

http://archives.postgresql.org/message-id/4CBD9DDC.4040304@cybertec.at

and that, in fact, gets a boost with this patch).

Leonardo

#47Leonardo Francalanci
m_lists@yahoo.it
In reply to: Leonardo Francalanci (#46)
Re: plan time of MASSIVE partitioning ...

but I don't get any gain from the patch... explain time is still around 250
ms.
Tried with 9000 partitions, time is still 2 secs.

Small correction: I tried with 3000 partitions (FOR i IN 0..3000 ...)
and got 250ms with both versions, with 9000 partitions 2 secs (again
no gain from the patch)

#48Tom Lane
tgl@sss.pgh.pa.us
In reply to: Leonardo Francalanci (#46)
Re: plan time of MASSIVE partitioning ...

Leonardo Francalanci <m_lists@yahoo.it> writes:

I tried a simple test case:

create table t (a integer, b text);

DO $$DECLARE i int;
BEGIN
FOR i IN 0..9000 LOOP
EXECUTE 'create table t' || i || ' ( CHECK (a >' || i*10 || '
and a <= ' || (i+1)*10 || ' ) ) INHERITS (t)';
EXECUTE 'create index tidx' || i || ' ON t' || i || ' (a)';
END LOOP;
END$$;

explain select * from t where a > 1060 and a < 1090;

This is going to be dominated by constraint exclusion checking. There's
basically no fix for that except a more explicit representation of the
partitioning rules. If the planner has to make 8999 theorem proofs to
remove the 8999 unwanted partitions from the plan, it's gonna take
awhile.

regards, tom lane

#49Leonardo Francalanci
m_lists@yahoo.it
In reply to: Tom Lane (#48)
Re: plan time of MASSIVE partitioning ...

This is going to be dominated by constraint exclusion checking. There's
basically no fix for that except a more explicit representation of the
partitioning rules.

Damn, I knew that was going to be more complicated :)

So in which case does this patch help? I guess in a multi-index
scenario? childtables.sql is kind of hard to read (I think a FOR loop
would have been more auto-explaining?).

#50Tom Lane
tgl@sss.pgh.pa.us
In reply to: Boszormenyi Zoltan (#45)
Re: plan time of MASSIVE partitioning ...

Boszormenyi Zoltan <zb@cybertec.at> writes:

On the other hand, if I use a similar test case to my original one
(i.e. the tables are much wider) then the query planning takes
1.42 seconds in 9.1 with this patch instead of about 4.7 seconds
as we observed it using PostgreSQL 9.0.0. The beginning of the gprof
output now looks like this:

% cumulative self self total
time seconds seconds calls s/call s/call name
21.13 0.30 0.30 235091 0.00 0.00 SearchCatCache
7.04 0.40 0.10 1507206 0.00 0.00 hash_search_with_hash_value
3.52 0.45 0.05 2308219 0.00 0.00 AllocSetAlloc

Yeah, for me it looks even worse: oprofile shows about 77% of time in
SearchCatCache. I poked around a little and it seems that probably most
of the time is going into searches of the STATRELATTINH syscache, which
looks like this:

$13 = {id = 41, cc_next = 0x2b43a60,
cc_relname = 0x7f6bc6ed2218 "pg_statistic", cc_reloid = 2619,
cc_indexoid = 2696, cc_relisshared = 0 '\000', cc_tupdesc = 0x7f6bc6ed11d8,
cc_ntup = 68922, cc_nbuckets = 1024, cc_nkeys = 3, cc_key = {1, 2, 3, 0},
...

Most of those entries are "negative" cache entries, since we don't have
any actual stats in this toy example.

I think that we probably should be very circumspect about believing that
this example is still a good guide to what to optimize next; in
particular, in a real-world example with real stats, I'm not sure that
the hot spots will still be in the same places. I'd advise loading up
some real data and doing more profiling.

However, if the hot spot does stay in SearchCatCache, I can't help
noticing that those bucket chains are looking a bit overloaded ---
sixty-plus entries per bucket ain't good. Maybe it's time to teach
catcache.c how to reorganize its hashtables once the load factor
exceeds a certain level. Or more drastically, maybe it should lose
its private hashtable logic and use dynahash.c; I'm not sure at the
moment if the private implementation has any important characteristics
dynahash hasn't got.

regards, tom lane

#51Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#48)
Re: plan time of MASSIVE partitioning ...

I wrote:

This is going to be dominated by constraint exclusion checking.

Hmm, maybe I spoke too soon. With 9000 child tables I get a profile
like this:

samples % symbol name
447433 47.1553 get_tabstat_entry
185458 19.5456 find_all_inheritors
53064 5.5925 SearchCatCache
33864 3.5690 pg_strtok
26301 2.7719 hash_search_with_hash_value
22577 2.3794 AllocSetAlloc
6696 0.7057 MemoryContextAllocZeroAligned
6250 0.6587 expression_tree_walker
5141 0.5418 LockReleaseAll
4779 0.5037 get_relation_info
4506 0.4749 MemoryContextAlloc
4467 0.4708 expression_tree_mutator
4136 0.4359 pgstat_initstats
3914 0.4125 relation_excluded_by_constraints

get_tabstat_entry and find_all_inheritors are both obviously O(N^2) in
the number of tables they have to deal with. However, the constant
factors are small enough that you need a heck of a lot of tables
before they become significant consumers of runtime. I'm not convinced
that we should be optimizing for 9000-child-table cases.

It'd be worth fixing these if we can do it without either introducing a
lot of complexity, or slowing things down for typical cases that have
only a few tables. Offhand not sure about how to do either.

regards, tom lane

#52Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#50)
Re: plan time of MASSIVE partitioning ...

On Fri, Oct 29, 2010 at 12:53 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Boszormenyi Zoltan <zb@cybertec.at> writes:

On the other hand, if I use a similar test case to my original one
(i.e. the tables are much wider) then the query planning takes
1.42 seconds in 9.1 with this patch instead of about 4.7 seconds
as we observed it using PostgreSQL 9.0.0. The beginning of the gprof
output now looks like this:

  %   cumulative   self              self     total
 time   seconds   seconds    calls   s/call   s/call  name
 21.13      0.30     0.30   235091     0.00     0.00  SearchCatCache
  7.04      0.40     0.10  1507206     0.00     0.00  hash_search_with_hash_value
  3.52      0.45     0.05  2308219     0.00     0.00  AllocSetAlloc

Yeah, for me it looks even worse: oprofile shows about 77% of time in
SearchCatCache.  I poked around a little and it seems that probably most
of the time is going into searches of the STATRELATTINH syscache, which
looks like this:

$13 = {id = 41, cc_next = 0x2b43a60,
 cc_relname = 0x7f6bc6ed2218 "pg_statistic", cc_reloid = 2619,
 cc_indexoid = 2696, cc_relisshared = 0 '\000', cc_tupdesc = 0x7f6bc6ed11d8,
 cc_ntup = 68922, cc_nbuckets = 1024, cc_nkeys = 3, cc_key = {1, 2, 3, 0},
 ...

Most of those entries are "negative" cache entries, since we don't have
any actual stats in this toy example.

I think that we probably should be very circumspect about believing that
this example is still a good guide to what to optimize next; in
particular, in a real-world example with real stats, I'm not sure that
the hot spots will still be in the same places.  I'd advise loading up
some real data and doing more profiling.

However, if the hot spot does stay in SearchCatCache, I can't help
noticing that those bucket chains are looking a bit overloaded ---
sixty-plus entries per bucket ain't good.  Maybe it's time to teach
catcache.c how to reorganize its hashtables once the load factor
exceeds a certain level.  Or more drastically, maybe it should lose
its private hashtable logic and use dynahash.c; I'm not sure at the
moment if the private implementation has any important characteristics
dynahash hasn't got.

I'm not sure what's happening in this particular case, but I seem to
remember poking at a case a while back where we were doing a lot of
repeated statistics lookups for the same columns. If that's also the
the case here and if there is some way to avoid it (hang a pointer to
the stats off the node tree somewhere?) we might be able to cut down
on the number of hash probes, as an alternative to or in addition to
making them faster.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

#53Leonardo Francalanci
m_lists@yahoo.it
In reply to: Tom Lane (#51)
Re: plan time of MASSIVE partitioning ...

Hmm, maybe I spoke too soon. With 9000 child tables I get a profile
like this:

Well, the 9000-table-test-case was meant to check the difference in
performance with/without the patch... I don't see the reason for trying
to optimize such an unrealistic case.

BTW can someone explain to me which are the cases where the
patch actually helps?

#54Tom Lane
tgl@sss.pgh.pa.us
In reply to: Leonardo Francalanci (#53)
Re: plan time of MASSIVE partitioning ...

Leonardo Francalanci <m_lists@yahoo.it> writes:

BTW can someone explain to me which are the cases where the
patch actually helps?

Cases with lots of irrelevant indexes. Zoltan's example had 4 indexes
per child table, only one of which was relevant to the query. In your
test case there are no irrelevant indexes, which is why the runtime
didn't change.

regards, tom lane

#55Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#52)
Re: plan time of MASSIVE partitioning ...

Robert Haas <robertmhaas@gmail.com> writes:

On Fri, Oct 29, 2010 at 12:53 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

However, if the hot spot does stay in SearchCatCache, I can't help
noticing that those bucket chains are looking a bit overloaded ---
sixty-plus entries per bucket ain't good. �Maybe it's time to teach
catcache.c how to reorganize its hashtables once the load factor
exceeds a certain level. �Or more drastically, maybe it should lose
its private hashtable logic and use dynahash.c; I'm not sure at the
moment if the private implementation has any important characteristics
dynahash hasn't got.

I'm not sure what's happening in this particular case, but I seem to
remember poking at a case a while back where we were doing a lot of
repeated statistics lookups for the same columns. If that's also the
the case here and if there is some way to avoid it (hang a pointer to
the stats off the node tree somewhere?) we might be able to cut down
on the number of hash probes, as an alternative to or in addition to
making them faster.

I think there are already layers of caching in the planner to avoid
fetching the same stats entries more than once per query. The problem
here is that there are so many child tables that even fetching stats
once per table per query starts to add up. (Also, as I said, I'm
worried that we're being misled by the fact that there are no stats to
fetch --- so we're not seeing the costs of actually doing something with
the stats if they existed.)

regards, tom lane

#56Alvaro Herrera
alvherre@commandprompt.com
In reply to: Tom Lane (#51)
Re: plan time of MASSIVE partitioning ...

Excerpts from Tom Lane's message of vie oct 29 14:15:55 -0300 2010:

I wrote:

This is going to be dominated by constraint exclusion checking.

Hmm, maybe I spoke too soon. With 9000 child tables I get a profile
like this:

samples % symbol name
447433 47.1553 get_tabstat_entry

Is there a reason for keeping the pgstat info in plain lists? We could
use dynahash there too, I think. It would have more palloc overhead
that way, though (hmm, but perhaps that can be fixed by having a smart
"alloc" function for it, preallocating a bunch of entries instead of one
by one).

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

#57Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#56)
Re: plan time of MASSIVE partitioning ...

Alvaro Herrera <alvherre@commandprompt.com> writes:

Excerpts from Tom Lane's message of vie oct 29 14:15:55 -0300 2010:

samples % symbol name
447433 47.1553 get_tabstat_entry

Is there a reason for keeping the pgstat info in plain lists?

Yeah: anything else loses for small numbers of tables per query, which
is the normal case. I'd guess you'd need ~100 tables touched in
a single transaction before a hashtable is even worth thinking about.

We could possibly adopt a solution similar to the planner's approach for
joinrels: start with a simple list, and switch over to hashing if the
list gets too long. But I'm really doubtful that it's worth the code
space. Even with Zoltan's 500-or-so-table case, this wasn't on the
radar screen.

regards, tom lane

#58Leonardo Francalanci
m_lists@yahoo.it
In reply to: Tom Lane (#54)
Re: plan time of MASSIVE partitioning ...

Cases with lots of irrelevant indexes. Zoltan's example had 4 indexes
per child table, only one of which was relevant to the query. In your
test case there are no irrelevant indexes, which is why the runtime
didn't change.

Mmh... I must be doing something wrong. It looks to me it's not just
the irrelevant indexes: it's the "order by" that counts. If I remove that
times are the same with and without the patch:

using the test case:

explain select * from inh_parent
where timestamp1 between '2010-04-06' and '2010-06-25'

this one runs in the same time with the patch; but adding:

order by timestamp2

made the non-patched version run 3 times slower.

My test case:

create table t (a integer, b integer, c integer, d integer, e text);

DO $$DECLARE i int;
BEGIN
FOR i IN 0..2000 LOOP
EXECUTE 'create table t' || i || ' ( CHECK (a >' || i*10 || '
and a <= ' || (i+1)*10 || ' ) ) INHERITS (t)';
EXECUTE 'create index taidx' || i || ' ON t' || i || ' (a)';
EXECUTE 'create index tbidx' || i || ' ON t' || i || ' (b)';
EXECUTE 'create index tcidx' || i || ' ON t' || i || ' (c)';
EXECUTE 'create index tdidx' || i || ' ON t' || i || ' (d)';
END LOOP;
END$$;

explain select * from t where a > 1060 and a < 109000

this runs in 1.5 secs with and without the patch. But if I add

order by b

the non-patched version runs in 10 seconds.

Am I getting it wrong?

#59Tom Lane
tgl@sss.pgh.pa.us
In reply to: Leonardo Francalanci (#58)
Re: plan time of MASSIVE partitioning ...

Leonardo Francalanci <m_lists@yahoo.it> writes:

Cases with lots of irrelevant indexes. Zoltan's example had 4 indexes
per child table, only one of which was relevant to the query. In your
test case there are no irrelevant indexes, which is why the runtime
didn't change.

Mmh... I must be doing something wrong. It looks to me it's not just
the irrelevant indexes: it's the "order by" that counts.

Ah, I oversimplified a bit: actually, if you don't have an ORDER BY or
any mergejoinable join clauses, then the possibly_useful_pathkeys test
in find_usable_indexes figures out that we aren't interested in the sort
ordering of *any* indexes, so the whole thing gets short-circuited.
You need at least the possibility of interest in sorted output from an
indexscan before any of this code runs.

regards, tom lane

#60Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#51)
Re: plan time of MASSIVE partitioning ...

I wrote:

samples % symbol name
447433 47.1553 get_tabstat_entry
185458 19.5456 find_all_inheritors
53064 5.5925 SearchCatCache
33864 3.5690 pg_strtok

get_tabstat_entry and find_all_inheritors are both obviously O(N^2) in
the number of tables they have to deal with. However, the constant
factors are small enough that you need a heck of a lot of tables
before they become significant consumers of runtime. I'm not convinced
that we should be optimizing for 9000-child-table cases.

It'd be worth fixing these if we can do it without either introducing a
lot of complexity, or slowing things down for typical cases that have
only a few tables. Offhand not sure about how to do either.

I had a thought about how to make get_tabstat_entry() faster without
adding overhead: what if we just plain remove the search, and always
assume that a new entry has to be added to the tabstat array?

The existing code seems to be designed to make no assumptions about
how it's being used, but that's a bit silly. We know that the links are
coming from the relcache, which will have only one entry per relation,
and that the relcache is designed to hang onto the links for (at least)
the life of a transaction. So rather than optimizing for the case where
the relcache fails to remember the tabstat link, maybe we should
optimize for the case where it does remember.

The worst-case consequence AFAICS would be multiple tabstat entries for
the same relation, which seems pretty noncritical anyway.

Thoughts?

regards, tom lane

#61Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#60)
Re: plan time of MASSIVE partitioning ...

[ for the archives' sake ]

I wrote:

I had a thought about how to make get_tabstat_entry() faster without
adding overhead: what if we just plain remove the search, and always
assume that a new entry has to be added to the tabstat array?

I spent some time looking into this idea. It doesn't really work,
because there are places that will break if a transaction has more than
one tabstat entry for the same relation. The one that seems most
difficult to fix is that pgstat_recv_tabstat() clamps its n_live_tuples
and n_dead_tuples values to be nonnegative after adding in each delta
received from a backend. That is a good idea because it prevents insane
results if some messages get lost --- but if a transaction's updates get
randomly spread into several tabstat items, the intermediate counts
might get clamped, resulting in a wrong final answer even though nothing
was lost.

I also added some instrumentation printouts and found that in our
regression tests:
* about 10% of get_tabstat_entry() calls find an existing entry
for the relation OID. This seems to happen only when a
relcache entry gets flushed mid-transaction, but that does
happen, and not so infrequently either.
* about half of the transactions use as many as 20 tabstats,
and 10% use 50 or more; but it drops off fast after that.
Almost no transactions use as many as 100 tabstats.
It's not clear that these numbers are representative of typical
database applications, but they're something to start with anyway.

I also did some testing to compare the cost of get_tabstat_entry's
linear search against a dynahash.c table with OID key. As I suspected,
a hash table would make this code a *lot* slower for small numbers of
tabstat entries: about a factor of 10 slower. You need upwards of 100
tabstats touched in a transaction before the hash table begins to pay
for itself. This is largely because dynahash doesn't have any cheap way
to reset a hashtable to empty, so you have to initialize and destroy the
table for each transaction. By the time you've eaten that overhead,
you've already expended as many cycles as the linear search takes to
handle several dozen entries.

I conclude that if we wanted to do something about this, the most
practical solution would be the one of executing linear searches until
we get to 100+ tabstat entries in a transaction, and then building a
hashtable for subsequent searches. However, it's exceedingly unclear
that it will ever be worth the effort or code space to do that.

regards, tom lane

#62Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#59)
Re: plan time of MASSIVE partitioning ...

Tom Lane wrote:

Leonardo Francalanci <m_lists@yahoo.it> writes:

Cases with lots of irrelevant indexes. Zoltan's example had 4 indexes
per child table, only one of which was relevant to the query. In your
test case there are no irrelevant indexes, which is why the runtime
didn't change.

Mmh... I must be doing something wrong. It looks to me it's not just
the irrelevant indexes: it's the "order by" that counts.

Ah, I oversimplified a bit: actually, if you don't have an ORDER BY or
any mergejoinable join clauses, then the possibly_useful_pathkeys test
in find_usable_indexes figures out that we aren't interested in the sort
ordering of *any* indexes, so the whole thing gets short-circuited.
You need at least the possibility of interest in sorted output from an
indexscan before any of this code runs.

FYI, I always wondered if the rare use of mergejoins justified the extra
planning time of carrying around all those joinpaths.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ It's impossible for everything to be true. +

#63Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#62)
Re: plan time of MASSIVE partitioning ...

Bruce Momjian <bruce@momjian.us> writes:

FYI, I always wondered if the rare use of mergejoins justified the extra
planning time of carrying around all those joinpaths.

They're hardly rare.

regards, tom lane

#64Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#63)
Re: plan time of MASSIVE partitioning ...

On Fri, Nov 12, 2010 at 10:55 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Bruce Momjian <bruce@momjian.us> writes:

FYI, I always wondered if the rare use of mergejoins justified the extra
planning time of carrying around all those joinpaths.

They're hardly rare.

They fairly rare in the sorts of queries I normally issue, but I'd
quibble with the statement on other grounds: IME, we generate far more
nest loops paths than anything else. The comment in
match_unsorted_outer() says it all:

* We always generate a nestloop path for each available outer path.
* In fact we may generate as many as five: one on the cheapest-total-cost
* inner path, one on the same with materialization, one on the
* cheapest-startup-cost inner path (if different), one on the
* cheapest-total inner-indexscan path (if any), and one on the
* cheapest-startup inner-indexscan path (if different).

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company