BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

Started by PG Bug reporting formabout 6 years ago14 messages
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 16108
Logged by: Haiying Tang
Email address: tanghy.fnst@cn.fujitsu.com
PostgreSQL version: 12.0
Operating system: Windows
Description:

Hello

I found the following release notes in PG12 is not working properly at
Windows.

•Add colorization to the output of command-line utilities

Following the release note, I've set the the environment variable PG_COLOR
to auto, then I run pg_dump command with an incorrect passwd.
However, the command-line output is not colorized as the release notes
said.

Before PG_COLOR=auto is set: pg_dump: error: connection to database
"tanghy.fnst" failed: FATAL:
After PG_COLOR=auto is set: pg_dump: error: connection
to database "tanghy.fnst" failed: FATAL

I think the colorization to the output of command-line is not supported at
Windows.
Maybe function "pg_logging_init" at source "src\common\logging.c" should add
a platform check.
Besides, the related release note of PG12 should add some description about
it.

Best Regards,
Tang

#2Thomas Munro
thomas.munro@gmail.com
In reply to: PG Bug reporting form (#1)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

On Tue, Nov 12, 2019 at 9:30 PM PG Bug reporting form
<noreply@postgresql.org> wrote:

The following bug has been logged on the website:

Bug reference: 16108
Logged by: Haiying Tang
Email address: tanghy.fnst@cn.fujitsu.com
PostgreSQL version: 12.0
Operating system: Windows
Description:

Hello

I found the following release notes in PG12 is not working properly at
Windows.

•Add colorization to the output of command-line utilities

Following the release note, I've set the the environment variable PG_COLOR
to auto, then I run pg_dump command with an incorrect passwd.
However, the command-line output is not colorized as the release notes
said.

Before PG_COLOR=auto is set: pg_dump: error: connection to database
"tanghy.fnst" failed: FATAL:
After PG_COLOR=auto is set: [01mpg_dump: [0m [01;31merror: [0mconnection
to database "tanghy.fnst" failed: FATAL

I think the colorization to the output of command-line is not supported at
Windows.
Maybe function "pg_logging_init" at source "src\common\logging.c" should add
a platform check.
Besides, the related release note of PG12 should add some description about
it.

Based on this:

https://en.wikipedia.org/wiki/ANSI_escape_code#DOS_and_Windows

... I wonder if it works if you use the new Windows Terminal, and I
wonder if it would work on the older thing if we used the
SetConsoleMode() flag it mentions.

#3Juan José Santamaría Flecha
juanjo.santamaria@gmail.com
In reply to: Thomas Munro (#2)
1 attachment(s)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

On Tue, Nov 12, 2019 at 9:39 AM Thomas Munro <thomas.munro@gmail.com> wrote:

... I wonder if it works if you use the new Windows Terminal, and I
wonder if it would work on the older thing if we used the
SetConsoleMode() flag it mentions.

In order to make it work both things are needed, setting the console mode
and a terminal that supports it. Please find attached a patch for so.

Regards,

Juan José Santamaría Flecha

Attachments:

0001-command-line-colorization-on-windows.patchapplication/octet-stream; name=0001-command-line-colorization-on-windows.patchDownload
diff --git a/src/common/logging.c b/src/common/logging.c
index 895da71..655db70 100644
--- a/src/common/logging.c
+++ b/src/common/logging.c
@@ -32,6 +32,31 @@ static const char *sgr_locus = NULL;
 #define ANSI_ESCAPE_FMT "\x1b[%sm"
 #define ANSI_ESCAPE_RESET "\x1b[0m"
 
+#ifdef WIN32
+/*
+ * Check Windows support for VT100
+ */
+static bool
+enable_vt_mode()
+{
+	/* Check stderr */
+	HANDLE hOut = GetStdHandle(STD_ERROR_HANDLE);
+	DWORD dwMode = 0;
+
+	if (hOut == INVALID_HANDLE_VALUE)
+		return false;
+
+	if (!GetConsoleMode(hOut, &dwMode))
+		return false;
+
+	dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
+	if (!SetConsoleMode(hOut, dwMode))
+		return false;
+
+	return true;
+}
+#endif
+
 /*
  * This should be called before any output happens.
  */
@@ -49,8 +74,13 @@ pg_logging_init(const char *argv0)
 
 	if (pg_color_env)
 	{
+#ifdef WIN32
+		bool	vt_mode = enable_vt_mode();
+#else
+		bool	vt_mode = isatty(fileno(stderr));
+#endif
 		if (strcmp(pg_color_env, "always") == 0 ||
-			(strcmp(pg_color_env, "auto") == 0 && isatty(fileno(stderr))))
+			(strcmp(pg_color_env, "auto") == 0 && vt_mode))
 			log_color = true;
 	}
 
#4Tang, Haiying
tanghy.fnst@cn.fujitsu.com
In reply to: Juan José Santamaría Flecha (#3)
2 attachment(s)
RE: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

In order to make it work both things are needed, setting the console mode and a terminal that supports it.

Your patch worked fine on windows which supports VT100. But the bug still happened when set PG_COLOR="always" at Windows Terminal that not support VT100. Please see the attached file “Test_result.png” for the NG result. (I used win7 for this test)

To fix the above bug, I made some change to your patch. The new one works fine on my win7(VT100 not support) and win10(VT100 support).

Also, in this new patch(v1), I added some doc change for Windows not support Colorization. Please find the attached patch for so.

Regards,
Tang

From: Juan José Santamaría Flecha <juanjo.santamaria@gmail.com>
Sent: Wednesday, November 13, 2019 4:00 AM
To: Thomas Munro <thomas.munro@gmail.com>
Cc: PG Bug reporting form <noreply@postgresql.org>; PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>; Tang, Haiying/唐 海英 <tanghy.fnst@cn.fujitsu.com>
Subject: Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

On Tue, Nov 12, 2019 at 9:39 AM Thomas Munro <thomas.munro@gmail.com<mailto:thomas.munro@gmail.com>> wrote:

... I wonder if it works if you use the new Windows Terminal, and I
wonder if it would work on the older thing if we used the
SetConsoleMode() flag it mentions.

In order to make it work both things are needed, setting the console mode and a terminal that supports it. Please find attached a patch for so.

Regards,

Juan José Santamaría Flecha

Attachments:

v1-0001-command-line-colorization-on-windows.patchapplication/octet-stream; name=v1-0001-command-line-colorization-on-windows.patchDownload
diff --git a/doc/src/sgml/release-12.sgml b/doc/src/sgml/release-12.sgml
index 68949b2026..26b94bf4e4 100644
--- a/doc/src/sgml/release-12.sgml
+++ b/doc/src/sgml/release-12.sgml
@@ -3825,6 +3825,10 @@ Author: Peter Eisentraut <peter@eisentraut.org>
        For example, the default behavior is equivalent to
        <literal>PG_COLORS="error=01;31:warning=01;35:locus=01"</literal>.
       </para>
+
+      <para>
+       Notably, VT100 support is required for the colorization on Windows.
+      </para>
      </listitem>
 
      </itemizedlist>
diff --git a/src/common/logging.c b/src/common/logging.c
index 895da7150e..8cb59fb609 100644
--- a/src/common/logging.c
+++ b/src/common/logging.c
@@ -32,6 +32,31 @@ static const char *sgr_locus = NULL;
 #define ANSI_ESCAPE_FMT "\x1b[%sm"
 #define ANSI_ESCAPE_RESET "\x1b[0m"
 
+#ifdef WIN32
+/*
+ * Check Windows support for VT100
+ */
+static bool
+enable_vt_mode()
+{
+	/* Check stderr */
+	HANDLE hOut = GetStdHandle(STD_ERROR_HANDLE);
+	DWORD dwMode = 0;
+
+	if (hOut == INVALID_HANDLE_VALUE)
+		return false;
+
+	if (!GetConsoleMode(hOut, &dwMode))
+		return false;
+
+	dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
+	if (!SetConsoleMode(hOut, dwMode))
+		return false;
+
+	return true;
+}
+#endif
+
 /*
  * This should be called before any output happens.
  */
@@ -47,6 +72,13 @@ pg_logging_init(const char *argv0)
 	progname = get_progname(argv0);
 	__pg_log_level = PG_LOG_INFO;
 
+#ifdef WIN32
+		bool	vt_mode = enable_vt_mode();
+
+		if(!vt_mode)
+			pg_color_env = NULL;
+#endif
+
 	if (pg_color_env)
 	{
 		if (strcmp(pg_color_env, "always") == 0 ||
Test_result.pngimage/png; name=Test_result.pngDownload
�PNG


IHDR��	/�JgAMA���a	pHYs���+��IDATx^����g�y���@��������+���=Q���R�$FQ9���^��;�����.�� �Ab����D�nLH��3y|>��O���s��������������������~U���kN���'��e�������>������w�d���w���{.9�K6Q�.���{.�����s������k\
�B��������������p��������+|��{��?�����k���k��S��R���������{��C?������=x��wO�?������?^�..����b�vttttttt�^|����/�����7=0|��w=������Y]
����������������������b�����������o���~h����r�vttttttt�N\���
'��������~����_��#�p��gTM�~)���������=�����c��0�����}�<?������S�����_
;:::::::v���W��������~�'/<7���F��B��aK���������qa��_����#^�����������K���K��B�/���	�[���m�1�:^~�K��o���qq�vttttttt�x)����W���^���/���w����������c� ?>��O_\}||�����R/��R���������;���������;?~~�������;�E�S���/��\o���/7������~9���>9���W�KaGGGGGGG���w�{vu<z�����'��mx��|�_
;:::::::.&�|���;�==\�����~>���7�_����p�������\��[����������=u9���39��������/��U_�k����-P�%K�}�6�Y�U^m��'��]������GT�)?��.�lE����^��^7?��o����?�KT�S�8�����:�]���T���M}|O��m���o�`]�S����S��r�����B]�T�u�wGGGG����G�Cw>4=��x)|x���W��x��s���#G��o849vt�������
�n��^�������~k���^��y��t�MMx����&u�?�el��Z��N}uj[�D����7�p�p���U��<�/<��x�5|���d�<u��7���?v�������_��2sJ^m����������������'�sAN��s��`���s�������-��E{�
/}��1���f�?����1�O{���9%j�S2��&��l���\����������&n>����W���p�?x�W����3�w
9V�����/���au)����MY�<�	�j�D�������M9�K��A|�N�oQ}ph��������|�CK����PW���'��RH����W��q���:��'(rs���{I`LP�����n��������������K�5�����mi~�O�z9Pt��9`,��-�_�WW;�!d�SV� /|B��[�K����@k������m�7�7���p�?������~��������p�����G��e���o���ar���&��&Z/�S��_������z���(�P�>�k�C�m_�zx�~���R�:P/P`�>�:�M�Z������9vh����;^�"k�o��/��k��V���:��k��&���~]s���*��\b�����>Z���&�}m����O���=2�>�����W_����N���s:7?�+��GGGGG���Rx�����w=�zS��'�\]
���l����S�������7\`�����=�z���Yn���������R>�����r�'��d��y���O;�)��2��X��3��M�s|	xlZc���=r�i�/s��F���)����K�f;��1��LZ��y�<���KV�*����H�\�h�<����M �o��m��6[��?6�R�>�u�����u�����*O^��;?�Z�ttttt��[N>>������C#���/��{?4^/���ol��F;^
��/J{Ow��������b��^7����Q7u�C����=�[~^0�A=`Z���_e����z-_��Y���������e���}������9�yi������=�(��������Y��9������|��v�;x��
����_�i/?�w�Z���+x\��������m�e��O��A��������S��~�d�K�S�&Zk�����c������=?_}���>0<������x)<r(/��<^
��/c�M���C�K��Sv�.����
r8��&���I���2czq��S��1��L�s ��i���q��1��O;�q�_�P�X�Y��m��������;�y_�o���"����A���v���Gl��8p��8�����9�76��]��"B|��J����[����M���f���u���)�s�)�K[��ci}d�p�����e��<�b��I����:�g=��������
����)�o/�?y���7����}@>>�w�������&�F�f��n>�:�?}����%��6u�������K�<T��+jRb����~�����c��#t�>�wL�g{r4������/���Q����%�}y�y_w�u��U](|�8N�\h��l����7u����A�6 �Pk�Xr����f��'�*K;b�LXS�s�[���;�����?����<�^��}}�>��t3~�k������xSx�}O��/��N���n^
Q���Gl�N����%��I^zi����h�@�O[>y{���y�$���oy��2�x���~�Q�r��/��������s�^��r���_y����i�~�!��i�����ms-����_�rhkM%�����LN�����k}���s��|rt��9���q����Y��T�D��e8����T�m���(|�l�R�������&n����7��N>5�|���?I�k����M���|<T�o|t����7�UV/w��C;}p8��U^����q`�� }��X�eQ��}!�o�
��A�����9����s+Ge��C��g�y��V][������������^T�9n�r���?����r��=@��?�O})||���M�xU����5I_��3���G���������y,�+����z���shl��#���q!�����������:::::���?~f������������V�S�4�M������7�G�z��+�+l� "7o����o
�g�/��P�x���@j����?�e@�\��?QXB����P��5_l��W�C_�Q�6~���u�~�O�ob��_�sjjM�|�uA��^���8��������y�f<c���s���x��>��<���^���������>�8�?�27��N��6��s�����gO��1�/�m�7}`
_;��%��������&n��s�m?{n����n}��������~�F����B�66�q�/������N�"�Hn�n��f���>���A�\8H��I^�A���N�����JY����������RSV��������|�_���o|������s���
��ui������$o��d����yS���Prw<�2/m�u������7U���r��W���������K�;g���X�Y�}}sJ^����I���<C�����K��2�s�:::::����4�>^o}���b���R�_~���p�K%��F���x)��||��pn�u��@��G���!�A��9|���v-����bT��[2�\e��������q1�<��B��u�}?*O����o����K�c�����X���[/B�K�q��R�1��g,xP�����e���36���ri^�Ss|��1�;��@D_^���������V����]��H��u�+�?�x��3��B���Cp��7���O��V�5��Awi}wtttt���~yu)���^�|�����}����p��o��F{��M��o���	|O*��>����Q���3V=����E{�<�1�����z��>^��a���"f|��7M�U?$�[n��-�@�C����C�������A�c^'?��2�����X�I����\�Xc�'�?2���5?�?�C�1�a�x�n����798���x57��>�H1��'�`l�A��{������'��,�G�3����
6�cF��K�E,r���������~���]?e���WW?��0\��?��~f�`76����K��>>�RX�&_�y�q��i��J��u8848���r���l\�Ol|�J����1��0n���O�y�8���_i�j�Ly������|��R��t.?��<u���������G�U��5��5��M�\�O�O�p�������P_�2&`�83�:vPu����-��c���m��-w���h���}GGGG�xS���^/�/w<����K������Q��/�|[��s�G����f[�X���nN�����ux'�Q�*��������8��%��-��&���yi��G+~�~��U~�-��?m�K��L�O��c�&mk^�R�����a�e����'�R�����V?����K�i��\�O���:��&R/iE��{>:::::&��������/�E��7�>.f��So;::::::::.0x)wo^
��t)�?b��x;x�#/m�������������b���p�=�������������R�y��P�����������]��?i����}�E�h��Q�/�
N>����W���<�b����K���/�~���������xyx��x���S���/��?~��������eu)����/~����W�vttttttt\���o��O�>����^8|��2
7��k�vttttttt\�B��3o�.�>����x)����������������C��1.�P.����?����_
;:::::::.<���x��_��������/�}������X]�����������"�c��9�G����r�l�vttttttt\|����������������/l\
���6���?�\
��/�c�_
;:::::::v~�����~��>��k�sol�I���G�r)���C������gC�w��E1�7����~�n�H�z&����o������&U^�g{*��*��� Gu��,]������9%�i���P�������� k��������c����}���O�����K�?�����?I�o��g�������n�=�������:(�����A��%y����u��qT��'O})�)��dn��2^�U��4�i��e{	�;y��yJ�z��=���w�r������8/����>�������M����y+8^�n\GpQ������������^^��%�L1�#�s�������|�9�U6e��%M���eN�&�����13^�;�V���O{;��'sU��Sy��<`���\���8::::::v~���x����G�ym���o���p���`T���Cq��w��G��#��
'����2yy98���0�Y=��y]�����9�)����o�����#A\uk
���������/��/��\��oG�����������zyx��_?��
O��}���p�m��2��x!�{��,L���@��v/S�~j��_�s�6u�|��:R.}�?��M�����9/!u�GG�mg��k�����&?k�l��g�ms�������Ux������{ux��W��|i���>��Q�y`��d8r��p��������p��a��}�Ka�:�}���-P���#��gG���[/�x�Z��L _'��>�As����N+/x��M��:�/���_��^v��y�l���������J��L!�&j}r^�A�����s��cm��������������g_|�����x~u1|��_�����������Q/v�{�#Go�;�\9=�r�{������O��7�x�p�
7�v�X��R�]T���F?u�CS7���eVd?���v����V;���|���n=����d]�6��T�������\::::::.x<����7�?�����/�qx��?4
�n��������>zd�?>�^�X��I����0�� ���^���^���R�f���c��K<�j��K@���KK�Xu��1s�����p�>����Wkp��
��t�j���OGGGGG�.�|���S/>���M�{.���[�����g���C������7/������~^�������(��.��;vl�Nb����<�Zy������Oy��%���a^�Z��g_�zys�i���:�������h��[?�D�o��G�N]��b��O"s���7��8�K��_���+?1�%�Re5�������?��S��'_�y�W[���[�M���B0^����������0uHs�C�B��}m�����[�<.ni�?x�O��Rd������N�S}&�O�����_t�Wy��Y������'�/~�o�y9���/l���T~��?e s��������U���v��S�ZX�.?��������g���;::::v1V�'_X]�����7
7��v)y��_�����
�.d�y0��s�M7��\
������A;�<y@����S�zSH�G{����U����m����Q*>}����������K�<����7~�U;}�V&���:�������j��:~����|�q��6:�����M[?P����a�*�#�>�����*��O���YP_����������<)�>�)��(#����������������o��`��+��n\
�����/?>����<�<l<x8�S��8�<��/������v��m�����-�.c��z�gLm���^R;z���]�����@~�����^J��q9G�`K�q2�%���n�G�%���on��;������~������r�#&md��C,s�>���r0�����*����;���9V�x��c������H��~��W�G��r����������7�-e���pu�����N�P+��D������~��)��!�4��C=y_��AG����})9��gN��m��6����|cENk�����<��~��
���e��3e�<g��7}�{�?/�`.?/'�$OL�3���^�{&����-��A��e
��w~�_w�u[u�N����H�O����z5|h�~�:::::.p|��W�G��������>��Q����i���?S����w
�4z�p��<h�{�������0M{l9��\�C;������h�E�~�_��CN����{����\��x��D��5|�K���p��Hd���s|����>��:��5?h�����+a��=��EW[)��tA�5�\s�@�8��7�k;��\~�����8�C\�	��������������;::::.<��+�O�xqx����?����K���������#�?R����2o2�R����������P����A8���O�������x!�����(K=���<����8����2v����Cl�3������1����_�*��>�u�K���b�3�����	�|6�O�����2k`^�+��?��7�5�5�������F]�1�����V}:::::.B�|����{�{���w�}l�������G�K�^:$��5*����e���.��b�x��<��1�S�yx��PB^4����u8���A
?u��N>��UF���m���~��-��Cr�~Z9�����o|�W��|W]����Z/�����s��_y�'�Z3�P���X?����m��M;�^��']��=8r]��d����9�F���'�:��������������"�7����[�>:|�{�
W���p��W��}��Vo
��>xh�R�qH���o"��n.����	�i��4������4/i�a�?}���	M�����F��?������|eyQP�/�v�����������S�]7���\j*?�����}�F����A^(����T���9/��A���6���F�
����[t�7�1��9c�>��.@7��kKH]����k��8�)�3�t;k�la'�?��C��O����og}��u�!�������������~�s��ob8����o�OF�������c�7����#���|��"����CQ����Ue�����12��A��yH����v�-ux�h������E��GN\�jn�����Y�u���G{������7Gy����������6�w>���6�uA�������~x���5�2�Z0?�����^���0������^�A�G����y!ss_���;���;��v��v�����s
cg���>���?���h;��|i���%���:���q���7�|a��/W���p��_
�������K����7��.��|E���.�s8C��������=���]f�0N��G��|d�o��}E���)QsLZ����-XGg�o������O��g�o��^��W��|r!c�9���k�{���_H��
���j�����<�'_��X/�YkQsI��f����>2^�x�����@�>�
ow�������
���S��"|���N��n,����c������{^�}�+�Uw=7�|j.���m}|��I6�V��a�|�N| ��<����J��a�\Z�5���|���F?�5�\�i�:���9�+W�9'M�jO{n|s�g���9h����c�U6���z9Nb��Sn[�V����/}	����g"�"O?[�C�~�%�eO�5V����c�w:��U����~�s�u����I��u�����v����:_��	���<���8��p��W�+��6\s���O��?���������0rQ/>��A��fj��{�)����u)c��Z���~��Vm�I����Y�%yk����/����V�%�K���]e�n�[p~[�r,����6�����)1k������]�5�u�����uj� ������SQk�8Zu9�x���x�!�8u8�?����</��������w���<���^u�����o�q���a�<.�(9�{����qa��T��F'oJ��J,�Sy��n�~�	�j|�B(��2�:�9L�T^y��%���O��)�:��i#i//1����L�%���6y�o�J~^|s<�9��kO��A?����Ik��Wy+�D+n��6��Ix���^J���5����;�Y�>s;�g<�_���N�>���j's������u���������.�W��K�_�B&5��??�[B�F!���s#�a������6:������%�CN���H�g>I3g@e��6Q��������aoI.���������T}��/����t�!��x�vn�W��V��'/c%����.� c�*�q��b���-�����RQ�������v�{��������V���wB��u>���N����~���3�N�����g������u�v)<��[.�(�t.�#��8'�>����������|e�s&?�m��X~�7<��*o��d�������D�/��w�C�����$���N����X����-�llW���64�_��,u������T�s�W�d�/�TY���:��������{'"����d���)����_����%vZ�s�?���xg��u����`;�W~!���>>����Wc����O������7�#��?I�N�!�E�y��|������6����n��mu��'����'Od>�~��rW^��-����'O{�-�)T��)y�K~�l�S}Y��O���e���*Kh�H~�U�ziN=�q(�
�\S�l�+��_�e�k]����m\yU6�w\�s���6�����+�{���E9���L�o?i�%���k2��r�15o���r|�*��]�k���gl�X/�I=�\��u�'�f_����u"���~KG�P������'/mZzS���W�O������%*�~�7'�g�x�K����Yu�P�+��ScH�mu�/�����4�����_���^��	�o���������O��(<��p�����K��#���tFp�D�I����t�O��L94}d��'/e5���v+v�'4�SV�"kW��N�K�AkL�����?m�9��'�%9�V<mr	l�i��W���<X�C�R���J��g�?���v-���m�Q�y�2n�[j���y����k��~�H���2h��*���A��.�N?K���1i�������Z�g��3������x����y����r�^r�b���#sV�����/�O��������N�/�����?�~��G�7E+`7���j/����OdRx�#����A���#�}h�o�g*g��ci}U���c�q���$�=7>i[mZ��s��~�e�-���������O�=;\q�3���xs�O��7����������	�\������}}���!��+r"��^KL�_�S&o�6�3��w�u!���'Z:bi~���^�i-tQ��Sq�)y��A�F�OB��0������N��1��)���<���:�
T����<Q�d.l�<2N����}|�N�K��2�jS��?��?b��J��/�f�[v9�T[����o]@��89��o�@��Y���~�d_;u�����_)h��������]�k��h��&�U���+R����t����9}&/�S���4�Y���J��g}��k�$�e�U���D]?��������:�i���+�r�����|�����:�����������p����7�l�������JJ^&���A~���}��j�"s�P���e3�����E�)���#K>�u��v��N��,i_��?�/�����|���\Ze��2��O�h�U���m��~"m���"���r�V�����~������&c�f�^Z���s��#N+'x->��OdN�W�XK�^w�)s]��m�S�"����D��qfL>��/����]1UG|�=�a����3������}�R/���.�5��13v�o����s�������05���9>l2�JA��Z�y��������,i"s��N�|�(M����]?�u���/����t���/}x��Mw�����>�������	�I��������p��p���W���Y4�L.p���<
�=�6j�a��4��v�<��A�n�b��\'�b�d�>��2.k����yp)�����������F�,�����qM��m�A���uA�2�-�����M]8�%�����.�-���.�O��<�=��_�%�u�@��&�E��������Qb�GF\���1��=m�G���a~�U���7�5���P�[�g��cG��?<�`��	�7����8�a��T9������c�M,��YO��7wb����?��5��?��}��<Y7��s����1��_chkPkmM�<�����8�����k,���N>��Z<������Z���55�u�'�K��;���4��k���W�:��i���K��������z��O���|�^�~�?����o|h�����^{�p�#/���������C�"lU��7����4�����=�$�#�<�9�,�����2	�C�H��	�|b;�L������=d�����X'A?}�����~�Rs['�%�"����Yk���sn;}��#[��f����~�s��An���>Y��_h?�4s�j�K�c!?��)�Qg�?�Z���!����
��a�Pn,����n�vu���<��'��?�Ar~�m��s�����?�;�-�����u�Oj�c���
/s������q3'��_u���	���s��9:��������~��4?u�����5P/���r����z����?������	s�V���sM�N��~�e��������4����bO��M�;��������'5o�N��$_���An���>����0Wi����~<|��}��������?|���������w�p�����r0^y3�[��7��R8�� r��_�gB(_�|���\�8@c��s�E>m�l�?��PTy�,��u�����������]�!�� ��_��P'�K�K�I��Y_��\s��������<�q�n�����G����|e�n���������~��n=�/��������/�����)w��I���� n^�D�W��9����v�hW�����K���������Y9F|g��I��F{P������?�|;F_�Q���\]��1�[��K[�B�\�g�>S�Zk�J������?��S�|����a��/��Ws���
����3N�]?tn|������`���d����J;_�����|n|O��~z�@��<_��?�\?}������;���O�����?{~�M�����w��h�w
�eS��)��"(Ld�.��c+�N�0T��V��fYPc��\����zP������$��������s��-�o����Kry���x���E��]������>�[�3e����o����h��������Y�\W�Sg�jm���Vm�"��=�|�R���Qb}����O�1n���#m��^�K;����:��;��Z"��Z����y�K��'��6��9�r����u��-���O�/����K�u������c�����%�;j�2���?�?����Y/Pc�������_����>�i[�������*�u.��X��Y�����gi}���M��M�oi�d���s;�Wo���5������SW�=���w����������-���������7���d# s��Di���<Z�,f..��EUy��b*O���*��r�sL���m��O���-�G�~�����X��8��%��v�D.z�9f�\�o��Pl���R���b�ZL?�����.�&����V��,�����f=jm�E;�\����'�����
�����B�9���=7�;Ak��m���3s��K����C��-kuSO�6����(�y���~����g������_���__�;��Uc[�Z7yS���"�s>�a�������s����
�����X�s}-�n�K��A�����o���K�+m��u���a|����?�������o�ei�KxK����x!�kX�o�����_��#�p��&�6i�/b�B�}.�����k�LF���,�>X����4|'��|����o�y�&����oL�+� �h(#P�	����69� /�N~����~����s��N�������O���i;.�)wMA���P�}���WV���9?�[�@�_eu| ��u[v����������/������<��?d���<%��
x���m���#�����m����qI�qj�;�N�/?�s�zP�����^���%.p��6� j��.��Z����\���o�`����d�Il����y�)������05.��e����?����|�?}0���N~���_y���77���[��c�r��#����j#�C���P�B:���[�yS����^u��������������F���7�$@n�������x�2���7�:�3i&�|h9p�L�E�������b"���m4����o.�\,�A]���3���/e����d]R�|j���z�z���;_�E����r@,���2_��G���^��N�����2)����4�\Gi#od�J��Z�W������������~j�+s�o�q�%��YFf���U>q�#F��K��S�g'�G���b
����I�P��h���c��qrsC?�x7�,��X�#��S�����h��=XG��7yXS@u}s��g{j��V�/��`C����j���<e`�������'��i�>�����_�@��[Z_��V�:��P��5e�>��z�����g�i'�W���w������������E����hr��S?�����0&6���|pDk�@��>��������XRptm+�.�+j���|�Z��#6��;}�x���CT�P[x�d��'k?��l����7<Pe�G���a�6&<�"���D����c)�R���
T�Y���2a>����i��:���u��<���:�G>����m2�"��6<����C�}@jEz�}~�7 ������W{kd~`i�w���?���r}���:y1#��O?	��T��������z���>k�v��t�����sA�l��1���s�@?���m�O��{}�/��+���������?����R0������S����-����_�����Z_����7W?��-�t���s��vo��fo���������5w�����?}n��c���|��s�e����=cQq6G$J�� P�`�c���PP,�T]d��B;�89���P�k_����G��0�6�k�i�����%����*K9H?�[�������x5v�Y���� ��4k�6�R/�J����G?��k]�G��)?u��+O��\[u,�������X���0V�����������Wu���;�V;�(�C/T��9Y3���K����I����<��@�5eP��.��x��Wg��������}��/�T�y���G�����|�){�s��M�+0g���_���e|}�n���E�g^-��+/eI�;�{��2�l��������7�����{.�\����zSx��/o^
/���������{G��[���:���X��������Wy�5�����#Nk�"c��T�����
L�o�O�S���'�.1��Z�5�D�5��S�o��<��e�-���Zh��P��2������M��I��:/�M�f>S�e\�?e���-YKW}�N�U��B�%^+N�Ws�[��c_]�S����"}&�����
��yd;u�xg��9�3��vj�1��&���#��~-^�Q�H���[���R~��W���:	�j��A�����;��U��>g��L�7��y�������>u���w�~4���w�����=����p���SF$�wu��h_G��.�������o�S�mK'�u"�P�^}�b��[-���v�������K�����z�O�lKm[����,uS���m'>�s�O]�s��M>tn|�j��_P}�O~�Y{�K��������:Pk�q��'�7,-S:�F�~�����q��oQ�9>������~�Q_�)-T�i���\d���]����g|��K����L]�S�����xb�y�3���_���������/������K��<����%�)y�k����n�s��R7uj��S����V_���]�����������g��w���'�>��i�B�7������0��ds�B�V�"Wf��#��0y����zU��m��
�:9�l�7�?u�6��vK����?7>!?��>��l���C�L��+���>[��W�n�?t�k�5h��	y�A����������v�S����Kk}���W��b��_W>7.t�^9�V{
��z�#�-�kI�q��c���)���_x�o�#s�V��^�Cm;��A����o�����E���o�m�K��IT�-4�����m���+Zq�}"y���3����v�|�f��=����8��7�t���W�r)��Hb,���R���Z����yh��%���
M��i�V��M��6s��Q��I�������3~�y#i�k��mW�t���A���k�i����ru�rT?sH�[���l���cF>9��W�0������5|�������-��k;����"�i�:9�j[cH��>B�V?��|�x��k�>1|�{�������~����G�~��:
�/qo^���p�>��:�����-�����wss�G�����v��//7Hc�W?�����w��6���6y�g|y���/�oI����^�D���5e;�_��+W�y+&s���D�i�+2�T,x9>~�62�����/� �_cqQl�L��Q�~8��%G������M�|�B��b��>R�N}���/���v�����L�������N���Z��Q�S[��}'�Q�:+|��������������N>����?�g�������f��������������u�I>zS��4m��.��v��q��PO~"y�����c�O�
��u�~Kr�N���<�������������2��$�u`LsK?�2)194�!�<���T�qmC���S�~IW�C</C��A��_�,^^Fh�K���3����������1�g
���gQ���#��1���?�����$�|h�o��[=m���:������cW������_�^q����'������(�� �����&3^��6��2�����K�f��4u!@w���o�L�T�����J��Z���C������>�����L��fJ~����n�C\�����NI�$�%L��A�r�Y�^���Q�;Y����������>z��B���z���)/i�.v"Wx6�#o������`.�������K��uH�7k�,s9��E�������y���g,�g0��������X����
W�xe��=/
W���p��������(,����W�����C17�<$26��MK�)�����N���Mo���r�NY�[�+��Q�w���*��v�o�fN��5�9�m)�3yz��9��S��.}�I�s�yi�q�q+�����9&���v���Q��W�l��S�c�����,/���v�z�Gn���K�N�Y���x)UP��N��Z2��c��V=��:f���O]���c_��:g�~>�Q��Ze=�s|�K�v����W�|cu1�����K�>�_��S_4��e6�So
W���.��|�drS���|R�&���'Q��S����9�l��0�j[c�w�������K�[���e]y����A�9�,�c����	�[�I���|��{�������r�8`i|���o���*�B���|x���+</G9F��{�;[rh�\�����M~��G��#u�	�w�R|U�	/\�����O��ygM1�������g������^}����'_���[.�\�a8z����>�B��07�����q��i8p`k�s�l��x���������oP�d�����
���l�������Qn���?�_KM�V������$�oY�������C%����6�I�K ��������K-�c3� ?�S��N���#7����v9^�~���|���+�2����F|�������/��9��Oy���'>��:���uj
�o;�P��x�<[�#��z�$�_V��"�&�����-�-�5��ru)�n��|j��5
O�4���pp���q#/�{6�� w���87ie�9�����<����'y�s�[�����}�KT~�S���:��.uy�'�%�����y�A:9��^�ku������������������:�72�����e���<�����������;��������^>�������U��r�r=���q>R_���D�a����q��3V^�rn�s��^���O�����~�Ma���O�utt\���7�|||��������~���j�k���q����7\c����[���An����Q�is ���0����j����`��k���@�k\����]�2��/?�t9?��9Ne�5�Ty��������H��4>x��[�g	��C\
���yT�s����W�k,�9�����O�����>c5��ML���o��>~������K��<AK7�yaT�1@��l�/?����oi���>R|f_d���`=zq��utttl����
�������/�p)��c5\��_���
�!	���������������
Gx�I��#�r0���)��M�
���'������O�����
�<��:rSN�h��a���E��k���:~|���8��u���^����*_w| s��^��>v�����9���_Y�����{������������#be>���3_��=pN�3�j�9<���]+���e�Rf��p���6��K��^��;��j������r(��SjRuS_��:@�����-��h�:����;����4~�����!���)c���C��
76�f��JnNlHlx�M��1����?QR736Jby(���L��U&��������?������O���������!�A��rV��W�9_��K�����{����_�Ws���u�>�k��������o��-���~���x�2&o����i]��]�$���sJ��l��%��4y���gT9��3r�O,�Kh�G[�\��X^��U��K�i�sr�E�[s�N��z�u�N�����c_������>���ob�o����O�476<?>�RX7(�A��������G�
��	�z�����~�e3G_��N��'�R^�Rm� �<H�U.�_��=rL��"r�+�z�?@��?��!}��}���_��*u���zX���}�����7e�M�TY��S����)86l��p�i����d9��a��������� ��h�N��r@���x��+��U_�m~�R������ot�e|���G(�@�6 ��r���vtttl�s����K��~1��w�z���}��������Mz�_�m8|��7��
����J76Ju�����I�:����M^\Rg���������1�����z^�D���~����.?}e���+��C=����F(� �&���u����?w�	l�Q/;�/���}�~8��Cd96}�������7�|���e	��f���Z���:��6H�Ske'r�K��v����dN�Js\Sz���\"37��/��OkM�_���~]�g�>�i[����=���Q������-���>�g��>0|����.����?/��~�� �O����]���S����H����q8s@��[d� sSVN�C�
��:��@A��y������6\��r�-�]"^�1�{H��n��CPg�vY��A9q�Q|;�����^�K.��y���O��������O���s�;t��A������K����������:�|�]������I����7>��c�'�l�y��X{l��S�9�7�����C��?v�u��i��&o����}������N����1���s|�+�K}��>::::.���
_8���3��;|��}���q)������y���7�������
&7�l�Q�cS�/R���&j,�+�b'�E�e���64����A�Z����qc��6��?x�������/�%O��+������]`�����Q��o�V�	]d9��Y���o��]��^.2���/��y����L�����Y��t������Gj����4�m�����kN�>���n��A�L2���v[��u�������'���s��C/���O���KO���K!����g�~6�S�P"7��W(�
*3����|�}K�l�o�-{�:D*���l�t+�O�~�����H��l�_������%;H���vk�[}�����S��2v�+��:H_�G~�S�v�_����8S��/���|��V?��>���2^�9�CB���i���b��%_Y����������k������������]u�p����;��O��)���&Z��n���
�o��yX'}�#/U^4h���Ycm7�y���eo��d~����D�����_������f�k���9��m��h���5������'o��0�������;����;�����~)���<�"��E������so�.�����6x�s3�X������^h���m�[���i��|����y�S�u��lg���7��<}��*9�|�|.���k�\#�A��2����w8����K!o
o��s�R����_;���������s~6���B������������g%����������g;�w��#q�.-b��K�[����/�Yki�gI�5u��o�B�m�y.�9�6���\/s}������]�����!��5���������8��?����i�B�tr�������P�]`1��Yh�e�L���&��q�u\�����<��X�����o����q���vj��@}���.:��}���Yg�;����o�~����w���\?�(O�2�m��*?_0��n5��S�����;�a���?>{���O_wr��
�?x���/���1.���A��`���s�5?=�|����b����������;�+����\��Q�V���"�sVm���$?��u}$�\c��K�[�u���S$9J�u�Zzl�i�����s����Wx�{��+���x�������h������$�o��'Gayp6/�\/�K����%<[4G��A���Vl����l����x�3���'��q�0��3�c1��8��k^�{>.�gR�V������8y-��Zz-9<�J�-���7:sy�-�k��|<7��ti�\���E	�x5���W�����>���4
��P��Y����~*=S���^3���cw`7l�<�y��Kp���f;��u��|q�!���|"Vq��.�w�~K`�j���Z{�sry������i��|�<��<����vc��3�����~���������[~>|�;
�{s����(l_
O�]D�'�s��=\��w���s��/�M�<���I��5�3�Y���������C���2��w�9�X��S���r�py�v��K���Y��SeU�������L�k�<����B�YZ?�$��n���?�����n{z�o���p��p���bn������o�����`�F���M�6|~������Xu�O�����������������L�scl����s3����I��?�����6��+}�~2��k7�_��Z�{hG��I{��S]��x��:������<sDn;y�	v�����GWy��������z��`.���b;�>���y�/z�)���5A�e~g��U�L��z>7���o������<��Z_�_��zu|Ug]�:�'�1~(>��Hmc[������=��i���7�v��\����P�7��w��_�������<�m��?m|}H��|�%J�Y�7�|i���0|���
������������QX.�+�$��8&��;7{�C���"u����+�e����2���E�>����P�?
�@L���G�'2�Pc��u���.�~[@�<�@�O�������������������$����������	��-u���`�����@{h�5�k��Xu39�<���5���S7����r=rr\��<��;��W�<�cs���uf��s�U����
���<��|�<�l��$�9���/��y	��[��\z�]w����|��3�u���?�P����V?���u�O�9ygc��8���=�������w�4\u���}O�>�W��q)�������
�<�<l��V8p`k���^�PAf.R7M��E��?�P���1�:������<����l�?���Pr����m�L�afd�+77�<��O��<s�F��1#�P��W���������[0�6���G�����?r��A�c��S�\Rf� c[W��Y���&k2V�]��e����yt��O�s�i}/Y-����c;�,�A�m�O�R�vK�E����uP7���>�S��'�����]g�8�%����qp���.�We�����{����
`��(�"���RG��$��m�l.)w�`P7�>�P�B���S�|��'��yy0�K������~}�����.>������F�p�%m�f���~�[_����Y��Gy��I�9�_U��8O��<c�L?)�A�������s}B���|�#��>��5�N���u8S���Z�#sr��|*e�3f~���C��.����<E������u� �O�p<�%c�����sF
����P�u������'&�Y?9����sE?�����6��1i'�-4 n�����wk~�t�Qu���|��X:�2�<�����W�k�??����K!
����.@Hh.~�C��������#���N�A�� |�@�>�/��#��k�����_���m��!7o��Z���
+e���xC;��*5���xy9�|Z�Q������%/k@[{��;����Y}��z��<T��o!��]�y�l�����;��9�A9���XY��g�K���v��������Z�x����X���u��y�:�%�mkU�>K�S����y���&����Q�p�/�O]�����M�3��\~��<r|���:��Uy�m��^g��8�����
��6\s��������n~��-o/����zk����F�:����F��
~>���Z><UG����n��-m7-�<����z�'O�V���0��<2��_qR��y}����6������k���s=�=j�	l�u.�&rS��y�������Z����N;u�����n�m�%f��sf,t6��r(�>��~��O�G+y���.��2��R�u��u�$�oj�Y�z	K��_(�fb��#/�j��e�c��\�/���r���+�/�
�Q^����k����Z�;��:��M����_}|���-\��B!#5�<�>\�����m6�I}<D>���>����s>PP��&�K�����p,uX�^:A��{��
����y�[��c����6Eh�(m�0��!����V^���-p���[h���O����yA�q�����`)�)�-sI0���z��j�:d�}k�M>s�#q!���0_�!��7�������9���3im|������V����9���������9�9E�9Z���<��`���A���vs/�������y����q������/��M�w
OS�H/�,<,R*m�2qn��6��	l�au�K�C��?��j^��F��������]s�%&������c	�6�|�����������1U9m���S��������_�����gN�����}�O�������''s��L{�����:��}eM+�	�U��D�����Gk�������������J����;��9��s������9��I��`�=�����O<c�+��?|�0eKrb���r�P�����/�}U��i'�1Wi�q����y����zq���g��O��)<����������'���B^�$���`�o����A���-��Kc�'I��6B7n��y;1W������)O����U�]Q}Vd��^���5����7�L�����1/>W����������������'��������[�G���������p_
sq��D>@��n��Zu3F��ql�3k;��&�Z&�����P�:����x�l���u��)S��������C�3��5cv���9�u~[������g����v=�r����nyx��w���W���=����p�O��R'c�~|\G��c!zP�,y)K[��� F����8�����
��X�<�I�7k�P����f�,�������>l��s����f�%y�M�;��:����98_�������cc^�����v������(���?>��+������4��?1
�M�4�q���Ka<.�����,y������)Y�W^������F�a8��<��.��;
�������D���|��<tSIN[9�By��������s
�`^��#��)����g�<�3��3|���W���?~����_��#�������>n^����E��H�I=|��P��U��i�[����X?h����:B�r���k������g����[s�Ak����v�bI����^��!k��9������.#k��{�P������9���������6�����~�����������R�Bk���V�Q�7��eW��~C�_�E/7<t�����Zd�.|~���_�p��>���!�`�Ss�ND�y���O�����Wy��xR���z�����?l����u����?�]Hk���C���k��rM���}�����z~�N�n�3��||��������������o�?�xh��GO��{>8^����]����p��EM@��$�����r�C���-}��8�R�C+�A�������w���~�w2r�+�����X���\�P���|u�r>O���M���u��[�X�����z=��6c���y]��Y���.��O�'�:�"��82��x��F��_�n��}���o��(�xSx��p�n���iyx \����E;/w������g[}����<����v0�Z3�c[J���:�/��ulo'��?��k��Suk0<�;�?�k?��99��g�;v�ZK����q����?��Z�:�S�N��v%�����0��/����s�/���7?8
��K���P�\�>P<|�[3b����]21����f�f-Z�bN�K�[�1��_��C�\�m��2V���������u��1L��#c�7i57�������OZyK�������U�l�q�L�������3��t��3/�P���������A��r��~)l`�Rf�������v^��������>R6�?m�Bml�V��������</�����H���Y��U�������K�R}��3W�u�����W���4����e�=u��_y�A}��zu-�8=�������g��%��U^�����,���������G�����V��x��M�����~)L�]�����z�q����g}s�����?1���Zr��6&q�M7�Sq������q������B�]Lx�K�r����_@�mU�p�|�d���4>d���r�/x�N�V��T���3?����c�.���u�P���N�a�?0���/������ic��2��@SJ�-���e������vu>������c���������+�E���������wG�x��$7]6�~)l�<D��C��p����%<�E��T�%�l��W�]���������Kr����.�!?��������1����>�r�q�0����E_^���K;��T������r��@������1t�?<|�<��>�U������FZ/����5�9d~_^R�e:�=�oGGG����������-���O����������������E��o>8����)����X��q�T�%�	���5�}��v=H�I^cp���xq����h��&�d,yPt�|������y)�1�[!_J�i�h��=ePm�x�z�?<�k;� ������������k@���G~�g���[n�eKO������������(��'��}�������_�{��?~f�/���Q����?I�������($?�����o)�6�`*��9���a����9��������sr���q���mt3~�$r6��w�d���D��q*j�9@;|��e%}��<-��"�}�#�������g�cO�K���Kj�T�W�[sq���e��g*����`������G}�A����X��������������s���?~���������_
������|.6.^����i��S���O�i�|���q��H;.Krh���,����6��C���\��<��zA��e�>��~�8rH����N[�9�k;�??u����?���j�o�\��/]���;_���ui����7'������EV�>c�1���J~���uttt\����'��^w���'��������^~��/����w
�����0�����z��:x8�}���<��\�9�-����m=����A��q��8��	��M|h��m_y�������_}�����A�xdN�|3�2�����O�+��q���K�r�����:��������;��[��T������>�>s�H=���s����qQ���>�g���t���?�|���=�������qc?��<|���2m�����+���SB�<�<���Q7�K��J�`]�9��6��_��{x�_���96K���P.:������`���8��r���N��w�o��-�f��f}���~��#�s�_B��<S/��<���1*�9���V�t}NS���@��n�v
��d�L�Z������d.�K�S|����Gh����^^k~��Sg�'�y�D�N��W~���|���K��|��w����{}c����(���5N�x)�}6/�.&��>\�C'mR�\������"�0�`�r��	�y�M{>��`������?���������u�<���M�
[�Y������o�^N�#E�L�/��=��0Np���U���I�9,���yd�@�J~~��H_P�����
����I�5����a�X7a<�^}S�u�v���������c�9m}Hw
�Q��-��"�o;9d���v�Q��:�SX�?����$�-P��r�M���|�6e��?T;uE�U�v"_����c�;.0����v�S+|�������jx�G�|�K!��K���.h���\����>P��k��3��bN]�����L�K�S�vB;0�A�g{*�:r���	/�	����[���	}��u��b��_�%��?m�S~��V��i�/yK��T2���7�Z_�J*�`o�����A���6|o�<��i��\U���Y�?��V�u �}���oN����U�g�h��W��w*��?�-�S>;.|����;_������S�p���b��K��n���d�{���k��)��h��[�%�����w��;� �)�=���'�O����Kr����k�����������v�����o[�^��.���r��G�V�K���S�_�o�+3�V
2G��6P��I����Z��[���u\��N|l�O?�'�2%��,a��\�����|��W���������K��6�\�g��Y�Vn�u�+����<|������yn���a��'�j��K!`�tA�"��l����&Z1���t��@v&��g���8 ��05�����e����O���	�����fn|P��_'���[6-,��2a^�v�A]}T��D^�@��vs���a����L�<(<l���r�������	2~����|�L���Z)�c�����<kPul���>�_}�N����O��:�	y�����O�5��u\@���k�U'��<��p����K�����]
A>��*R�6�����bGf;7���a�O�:P?g�a�onz	���O��I���#s������:��r�������%���S���������2��j���|eC=h���|�����:S�z-��]y��Z�G��������+=��y�����:��V��?�1.��+9|����|��K���[�D�����#8����>h��u\���������9\y����{_z[.�uq��X`.����v��V�Rs�zs��q6���Zc�_+^������K��A�6S��:�[�����\���P�y�1h�:�����Z�i�E��6}�6�)T���8�������]��8��s�n.��/��5�w���u\�?�r�N�9~i�TYK'� ��W��O�l�:����T>�/A"���z�W�.�����z���W�Sx>/�,�@���P���Zx��4����$����N�)T��X�~�7�u�:u|-U�mh�I���$�@/u+/e�'m��\������\���z��[�`j���`�R����N^�?��k���V����S�.�)��7����Z�	�lg�4t������N�:������37��SO>�m�O_y����?���<������U}�������W������������{^�v����/��m,�R���4.�\l��@j�E�|c�usj��<�5��,7l�e.���g��C����O�!e����o��������`���������Vd^�����N�Z��������'����T���d���}7ds�?����S������V��2��O���E���R�1��v-�)�n��z�qf��Cs���O�M�}i������-��3l�����v+&�m��7x�;������^e������U��}���g
��K���u��T���_���]?y�d-Rn���u�O��v\`�R������9\�+���?�G�jr(�����}��'z���sjA0�^
��u��8��I����a��js�M7����Z��?0�����SK��V�{�3W�%9���I�j�������.�|����Z���zI���b.N�9}��Zi����u�WYm'�&��>c���AQ�e���.���.��>T,�_)���)C�������9>���H�S���|����[��u��r�.
��)y5/���m��<�q�{���\9���]�t��>��s���Y��5k��Y'��>�<��������I�[�����U�]�r�"Z�������>�e�?�+�xf���w�������x�I��K!���~;Q�X�6��e��aZi��.f��A��U_	|���Z6�|��>u����%�|�����o-�
����?�u>���/��:���!M�m�����O��Y��s��_u�]�t��u��b��9�AW?�i}%��5���u�$Z�H��k���CQ�~sNvu�k,�97bJ?���9�����^����~���z���1��r��!r�������@��K�����j}����������������3��:S�?k�����qu\@����V��������6�����q��J.�=�F���o��\ �����g�o�m����jmr	�Y��c�9T
R�|+��By �^����,i"s�~Kr����;Fi��U�?�����s��[n�e�]�j\����m���$���o�r�i�9�������L�tA�O=����g����q!�/�cR������OT�K@���v�-����W�j�c�P&m�-��J~��}}���l������q�?����8s�~������
y�����+�s(��2|�����\�/�s��'����B�[�E��N�l�K����>k�:�d�����+O�9\sb�O�����M��XG%��cG��n80�x����B���?�`X���v.���F��W�]P,P������/�{�hko>��O��@�����A�:�������2c-�oN�4>(|���>|e[|���]?���V��[�g��>:�'_}Y�l;l�X��1*���8
J�J��C���o����QG����Yg��%2����2P�6�~���BF�qO
����Ge�[���
n}-?P�e�i�od���/��|�q��������si}g�Z��Y#x���S@������1�u���%?u���q<;��7.@��}�\�'���
��o����8��q.����y����\gB(1�
����I}�3�U���.�Qu��������yi�#d.��)����~��}<�77�=���?.��w������>�>Yn�.j�����r����L�nnBm)�,R��^��rl}P����L^�Wj�Rr��}�@[9��[�/����������[}��_[a�R��TW?�Pou��<��U��c��x����f�:���^����6�F���f�Yw�R��D��A�=����f�C�\h�K�j���Q>��/��%�G��9i%F���`�{���V�?>i[����T�1>>����3G`,�P�1��#^��g���������<��
XKsO9c��������X���5H���|�k+�b�?gZ��ms��e,��M�u/��@���+N�2\u����'_Z]
?���j^:.���f�.���������t��`�#�
J`��W>�.B������v�H���}=,=8X�5�]��_�*O;_Y�S�~}������|n|O�����:P����������o��K{��I_��
P4�Rt����;����/�!ui[c��jWe"���A��v��6�9����)�\��K_�����V������A�'��1��xs}���G�v�q�������n�\����R�k|�����~(s`���o�n�:�T�h���]�c�/u$�����O��G]O������j�E1����$O��������=��9�����k������u)�w
�n)n�I�}{�o�N��C�~
w�P.@�"������S/Z}�*�S�X�qg�����z�|�^h=t��_�G�~SryS��M��
�"�������`��,�o�Od.�r���M5�����^�Af��
]u�7h��j��9&y�~��8n�C7���~����$���:�s}i��(c����o���oW2(cw��B=Kw�)��"ka]��[9�����������'��~��r�1��������W�v��l����Q/��:��<�kF�����W?�r���:�K�������$�-e��(����M94�%��o	����O��(�t\ ��&.��Y�CC:~��|����M�W���S>y�'s����q�i+T;`.��Z>�PK;�lg|���b#�5���/a�P�:O�?����9&��=5>�������u��<w�_�C������W/����m}a;�?�����5�u��g.P����T>t�>yP�O[������2�[�?+���6��u
�9���������A���S\G���96a?9�1@��l��"�?m�mj��N�����N���M�T�������r�����|���=�������� �M���\H�����-6n0��"[�����6��VG���|��H[�������O���oH�����=Pn����U�\|e���������P�������s��9I�s�H�>��\�sA��Yw���������9���Uu�S�?��i}�Gn���@���3��c����:�k����-��^R��M{cK������:�3�����)u��I}���Cs�A��3��2��i��>j��:P}�,m�P����K��	j/��:���z`���V�1����X��a��w\�����E.��}�d���K_4�E����}=}6��n��E��=q]������E
M��Rx`�%�Q����V�����x�;����L?�%��R�<��K�K�_B���u��'r����v��F���18�����J�!��u�?u�����#��.�//�i#o��~r�����O�#�fn�ZkN��U�Y���;r��gMs��&� &��M�	�rEn,��g���L=�	��Wk�~�~!H�\6���r��	��cn���I}��ok���<������1u\��?Is��N�I��;�,��?I�"`1��]T.(P�<�u*K�c���pA��c��w�<<����?����<}B��������I�|��vK�So.>���.s��S��?t�����[�u�o,y����mk���v"�bm����	�^]K��>���?(�!�����W�P&�;���-
����u��d[�����9+�[������k�����)d����-}}[���1��O�1��������k+����Z{��b/���8j����Ol���?q�cd������\c)����0~��P����o
��V��q�?^}����x��>^��W���P�n��:���,���j�����H����k�"�3����������7��x�g�����v���on�K��A����z�G�d;���\s|�~���j_���_��W�OE���W��B\_�R�y���������������l��M�e�-����MY��bI>�aL�s�i�'jm��&	�����%���+K^RP��5�l��D+^:h#%~+�3�O�Wy����Y^�������7w'^Y���o���o�����������C��8���%M�������i[�]�W>���%o���l����$��>���L�7��Y��1,�NL�'���U���p�.}*�~��'jm�K��}q����/��C�o��U���/�����h�������$j|�-�w<�[>�'��3a���jWc��|����u��c=��yK��[�������<���We�v���[������\q2?��S�~I����������M���N�������i���tR1������(�.H�%�K��<������S�h�>T���S�a���6��M�Zs��m'>��W"ui���9d>���O~���W�m�$i|�V"eS}����t�^�E+�k
�y}U_�kn|�j�.�1���4�9{��W^��N>t��`i�\B��X����|���_����L����Q/��|��W��=��������)�~�'{���j?%��$U�@��U'������B��>�w
��0���������B��L_>)�/�L������C���}����������E��6~�����'���9?sh���8`i�s@O����dZ��e�����!���G�S�Wy�]y���n_�Px���:��}"y-����S��Sq������>[��W�n�?��O������c�}u����[�B���]��Kh��|y-�4�O��:�����~�M(k]f+�bN���J�~��,}�5�u���d_� m����)��h���w
���>>>}��f���z8| Z�P�v��/��P���A�,�������O�_�A�?�_��U�� �w�UQ��n�>�k���u�o�~�/���N��lo�>��j_�R'i�n	��K���<���/�W�)�������m����og}��S�9��/cT�<h���U-�����m�h�l�����k;�`��N�O���R���g?m��'��m��gN�w�3����V:g��:���������_
����7����Z���ErsI����>��s�X��W'��-����?s�_��kk;���������b)�J���_�����K���u�S/������y������>�W�Zr����'�i�[�����<m�Xx���_s����]�@�U��/m�)�@+~K�%��O�z�s�[B��>��I������[���A^�u�5L=A?�.c�A����7��l��7u�����Y7e��I;�i[k��y<����������~���A�+�������'��v5��%�U��Sm��C��l����B�R���_
��fS����]l�s#K}6�<hk!��k� u��K�[@�K;�����?s��1����Ug�~`��=L�O���W�O�hA�3���g�?�2g�@/}�����������S�7-��Im�l;����%����y�G;ki^�;���i#Z:���.�O��3��<�s������#���m/��o;��������A;�_���5�P|�����K�{By�U�W������(<�	/�srs����|�P����x����y)<p�_
[`�Y89�)�Z�����K>`S��z����Z@�����"cs.�u��8�:fyg:>P�a
K�����|sO=x���M�� �:�����ug#aL�hK� u2g�9��X�����1���M��N}u�a�q�'�6�[c����]_����lY�����O������[*�k���J�_y��K\��<�f'�K�'��7��,��e����?���w�#���N��������Z��L�Zr�����+��9�������������.�W����9�S*`!�����SG��j���'/u\,S�g9���O���]]�S��K�<��T�~����?eBy����_���1�jm�����oTS�B}���������H��yhO�g\y�E�������'�:^B��5���_+�l#O���H��x��o���a5_~�;W�M5�)`�j��}������o��^�>����B��+�z��<�����u�.����������x9o��e��C^�i��^��l�z�/�:���sLUf[~������gM����S7�~���w����|cu)����R��?��R8^W�/�L ?�&�.Pv>(���{ �|���lj--���������E��8��C�����l{�h�gY��R��[���J���9���|�T]g#�|+��^Z��S����G�>9����aoA_���G���D��/h��^+h}[������\����e
������V��r��<an���/��^�r��
������So�3n����m���6H�:6�>S�>�K������/����!��<�m'��%mR'�	r������(,]
��Rx���d�������#
�l.�i��5���f	�Hl��h�'�r�s����_��?@��6��@��yd-��S+th�g�0���
������� C6���G�5��(s36n��a'���Q2����
sV���1Qor�*��_����A��)�Kk<�g���*s��M��k�9>l��S/}�����\�7�I�xS0o�:"7y c�]��3���y���}���<h�I���t������4c�W��A�O]���^��-�c����/���;G��N�����\���$�^��������c
��6�kku���s�
}�@��
e�'��������N�>8��������'��tBs�,d�8�M�<W�����N_�"wA�K[��_�/O���~�G;�%�Px����}N�Wcb����~���})��}y�Z�w����A����m�Z�u���6��m���s���ky]���C��`����|��W�L���G��x��7mZ���5�|)0���:�YH���
���:n(�)zc��sP/���5���u������������3����O�Q�����/P�������������[���yl���C{��s������N�:\}������
��xau)������1q�n�w7�<@>�Y�#�;�.��/?}e.�sb��y����2e)������W{h>@]���_<�>�RP��#z�S�����6�2��Y��K���k,�k��
��<r���a�S_�V������o��>���V���������3�Zuu� �N5�����D�������J}�/��X���|�@k�Q���mess~6����'�|��_�� �|�����@���Z_��\M����r-���SrL�p�\���x�?�\h�q���:���\g���������+���:\s���������N��"`��
	��������o��.4(��< �����6w�<��X�?}����@H]����:�u�>���O���c��c�{�������:��\����	���~�7-�����9��?��7�������^��~u�����>��z����	���L���������'�*��ur]���C��G��T_���3}3nj�<���1d~�!i>�Syg}��S�<�kM���6:�md�c�l���6��9���U�c����+}:W�����yc�?>�V_��������1Qw������e����?������o������^��p����=���1���_
�P`��x�xh�����E���������������@}b�g.l�r w�"�1���f�����X�!�Ma'���=�o��v�A}����y�ie���W�����_$�9&�6�mb/�h�+��3�?�g�p^�k��S�P�.��M1[�r����l�\�K����r�y��]��;cL}������.����1T��V-�9�������|��}�1�G�$�<��S{�}�U�����K����Y��z���[����~��:_����:�s��'�\��Qk��oIO	��'7t�����q�������q����_��s�7�xq��O
�>1���.�L�H/�K!�l���^G�!�x}���-|�X��0�������Cb�z(!���������.�
����N�/�8���O���9�P���n�s��v��4�Y���/9�#���|2�����������g+�V���W���	�[qE�e\��v5�N�1�u n��\����Z�� �������^��5�|����i��W.?�����1�
u����,�^��5I9��}�]�`0��W w|����m)6��wo��/��oUY�9/��=���#��������R�� dYk�����U�O��y�s;��;_��/��|����n{v��m�N>����?�'�]
S���g�8�,
�L���+��w?..Al��a`���y��O>4u3�:��~��:P���M>x��S�K�������3�n��en����(�r�#�V�� �q?�q�\d���[}�u
�6��������3�'Z�3�#sL�q���������73���e,��oC9�����5��c��/!�^kS��>���I�� }g��y���}���	���j}���N�S{��{E�t�)����k!��z�����}��^���������7���]u����-����:�f����>#��-<tX��]����i�s��#���x����������>2������~)0�,47�����D,L���}n�	7u������<j��Ye,vl����`���������m�$���	�Q;k�5��n�n��3@�Pl�������/�����s���S_��n���v�Y����;w����\�������>�:��	r�-����:�6��M��������vA�86m��c��N���R_�9��m<�\�'_���������e���q���r���|��P�v|��M ����G��h�1������Wr@����5����?����w�Y�����5���������o��zP�z�:�__�A�j�sM�r�������=���b����7=0�����������/��X��n7"'��u�8�u������W?	����$��Ky�e;s�~�!s��+�N?�������3V327ftzi�yT�2l��z�^�666%6��������L�u��_����c��e��]������h�/c�{6��N��%��r�W��n^��c�9/�������k������y�C����"sW')ru���vR�;���@�:�)�z��g<c���kKY����Y���]���;��~k�������\���j?��������m���o��U�u��w>u������7|��C�?��p��_������>�H.�����D�� ���>����P����>*���P������J���N������1���_��W��|�|&Z���31�5f�Ys����N�w���&�b8N��|�m�7c�s~��_u�����ROZ���������oa*Wy��g���0���v��)�u#j-�-_Y�d�"m����e?���w�����	���������w�������j��)��gl���w���w
��������h���{�;zix��>1
��LR�y)�.��"qbs�]l��W�3���}�MYk�����k7������c��S�I���}��O;��>����|�������(�7W�1|���������'�;|~��~|�/��=<�
�.��������`�Lx���.%?��u���6�����g�%��Ykh��Y��w�=,��v�]�j�s�����O=��:���+O�|�i����qQ�o��su)��u�_����N�@@//�i���S>�k�Be�	x���C�����bA��T?kTG���1U�|N��5�z�W������"�3���)y���l::::v=>u����89���?���x��)�C(/S�b��(J*�spp�����j���h�oN�n^U����J�|������Y�����[��3���S�g����X~��g����^������5�tIN�i�������g����p����?���}���������J���	m�jy�h���[}�[�z���g	����n��nu��������M��1W�ly����N�gM0�����v����k�������������p���/�\L��<��0$�/�������=�z`�!�Y����S`Ss�������/h����K��lw�9���Z�
�j�)W��2���������./�>Kr��8�������q��G������?����G:�����{>��p�R�u1�.�Sm���h�qV��s�p8�E�&$?"J^��/��mcz��9��\�e�u��9�8;X��=��q��"�6��6k��IY���_��)90/.��������c��o~d��-?�t�c��o|`���W���=�Na������K!�����P�}SQ�/pI���6�h��.zj-����QkS���|�-���a����k���ze-O�"���0�dsi�l��"�FVYGGG�������>5|��O���c�K�o}��G��a�%��(�w��pL�=h��n�[�6�x��)S�u I�R
���������P^���7��l��>^������^��io��)���F���<����v�Wj�)����-�jm������G�?���%���R|(`��c�#N��]��������B>>������\������/>��]���"s�cF/��/y�W������]GGG�E�������?xv����
������G�~��2
��0�������})���R�!���ml8�����>�C�o�����mB�lK�U���y�?���k�9Ft�e����}�����EA?\��p!��P��M,�/���:^z34���lK������������>�'����^���?z���v���r����G�gH�6�y��������K������(���^�y���7�xq���g����jx���t�K����@��W�;y	.U����R�2V�	/(�3���M����g���&�/Ufl��x����Z������1	��~9����m�uW�������/������@{0�m�o�g����k)/�_;t3��4���������/��%69�UO�_t�'8V��~�WT�������>��p����o���p�]�
'���?�g��\
���|)�
��<���(�=P���j�C�v��������������v����o?��y��&y�+�2������.(���>6�MZ/��C=�+7'ul�[/]"������v}�f��K��<��o��[�9d�i�j���?kl>��?h�Y����f��9�m@�����65��W������U�������+O�>^��������������~),� ����������&VLt��T����rP�{yJ^��aj��o_y���yy9�.q�����3�1���6����q��%�Z�������I����v�d<�`����ssI���L������oL(���s�7w(yL�����5������'���f�V�������s]��q�-^GGG����N��q)<��p�3�.��
�.�[�����<��|y������v�Py���v��>z�gN������D�����|�|h�$�K����|����S��kL������Zu�=04���O�yah���*M����������S bdl�/�g�Oh�E����v��)����m�e�Y}��?d�+�|���5�����]�+N�>\y���'��=�R�6��X�����C$�	���
<l���`�%A{�����[��y���_�yH�3�[5�����	����?q�}/`��~s�����i��L�Xw|����n^R��6���m����*���PlX��{���)�;&x9um/����7��M�j���06:��3�8�i�XR�~��������������{s������������_��R����R��P��VH��6^l�{�����m>:�@������e;uk;y��}*�"����|�5�z�s|UN}�''|eP� ���Q��ik����'����1Gd���s�]��|��������C��q��x�o��o����2)<�;vuSn���o����qL5z�4�?�::::.
p���_�~���{_Z}�����Qx�����RH�M�����������/K��,�^GGGGG�,�^}����'_]]
��I�R�q	�����w���������c-�E�+��28��i�B/��R����E�M!�������m����:\q����w�4\}�s�}O��?����_
;:.�o����vttttt�
.���w�0\q����O����Q�/��r�o
;:::::�e��?|n��<=|�����������Q�/��tx	���zGGGGG�����O
_�����������<8������������E������|S��������E|������G������K�~2���+�o��'G��7���R���ND~L\/�k�K�<<|����������O?|����?��Q�q)<��/��\������\���w�?�������(�������������?������;|��{�O_�����<;����K�����������]������'����}|J�_
;:::::::v-���}�g�;��~������������������������?|������g�����^~���R��������q����d�����~�����~y��~b�dO������������_�������l�����p������
���O��R�g�������������-�_�����G�{{m��#<
7>>����7/�����<t�x�r������Y��9@���k������l�_s�nn��	���V��^�w3����%���m��yY7�����l�)���3Y�g	_�����o{r�����u������.������K�
n��K��a��K�.��sc��"��?Vt���L�������<`��Z0����l�������|�3��v��\�g��'����O�\�-������g���:gSX���S��	����[��������o����������xz���_
������S��xk����M{��w�H���������9�h�7��_7�<�l��9��1��`l�	�[�?��IN:���z��N�w{�9�g����+= �v������8�����+�yy��]/W���p��������B�=�������Dn�� �@;�>Z�d�A�����N����q�#=[1�55�9lg��`��S��<wj}�g���d~��=q�W�:X�_g|;AkL�l��������8��p��W�o���p���������_�B.>�/��������Vn�S�/t�P�<�����QN!o;0F�q6���Z����/ai��q��w�`���R?��������g2O�����;��X�g	\���������xq���ax?��=��
6��-�^��m\
��p�M�n�����N����Sg�����X��
cU��I{����nn��y�]�v��c=������������a{�S��)v�~;::::��:���<��p���6/��u)�: �>.�;��;�F��|�����g'���b���������Y�|o;���?uA���q.��N�R}���Z��n
���tt�]�`�>c����	�cl'�������.�W���x1����������������]?���]C���ml�l�u#�w���U[�\�����#}��CG�9M�nlm>��!?������1d^��Xg�K�f����@,�7�p�i�����0oP���6�w2�`��8���:u�ZX�_g|;��E|��������q���_�~��K��{_^}�����F����Ca������������Ix��7y@�y�(�A*��P����	T;s��ac����-�~���+�{u���|2>mk���;�%��f;u�����&�PA?�RN.����k��mu���������=���~��FO_���w
�]�;��G����f�)����������S��O���6>O���M�����<�]}%���p�KY�+�E�N�����]�o����M�5�
���_X]
���Qx�x)�i�I�6R~�p�����Zm�{V��}7�<d�s(N(�	��g���U.������rY���9)���n��m?/s��qs����H������!����[_y)s\u�9N/K�Q}��o�x������NBy�GO����ls�k��\�@}.����2���
.����b)�? �#��sL��/�_��e\m���@��`}.��
�\����+�k���8����|��[��4|���Vo
�y��_4������Ca��'i�9��q&mm�y�p8�A�a��x��P>�Q#�������~��<������@�6K�0�����Et�[v"�#���K��w?���`G��Q�%�b*����~�g��@]x)yaI�<�v�7am�!���2��I���M�M�~<�:���m>[���^���L�S�P|��v�'����P/}P+��I�O��\3F��2l;}��������q����_����V�B�N�{?�G�%���P���"o
7�}���Om�\H�mK^
�t=|R��Yg;m��B�A��~�������N�uL���`������o�U����X�5.��}�!���S/9ya������<k
���i�ei_}��>���w
y)������F�/�:��<�����P��>�@`\K����pY��<�7�|�����	0���3'���*Zq���@�����x)���_m::::.
|��'�������bx���]��������Qi��o�N������x	����r�v$7hO#u�(�z�`�d:�K=�_�����ru�yM@��~�����
/�<�3m/�V�Pm���-:����du\���Zl�����:�A��K%~������$���	?� ?�Jn�B�?@Ll���Z������k-sIY�*Kd���v^���s��~*/�x���T�7������m������i��A>c��������� Os�GGGG�E������B�����
_�����/^~�C��������������w
/�;^X����A6]7��P�d���7`3f����?���77����c[~�{1�Z7������9y��@���W���)�?/Q�Z�����)_��Z���C�^z���]x�_��A��Q� ��=��	�m-R?�������f���KI�}!����1'�6U����c��?���5�2A?k��Z��c_}�������O��T�c�X	|��=�Zm�::::v5�p���s�:|�����o�o�����K���={/�0n������������n�)�I:�P7pe�d���^k3G
���c��?<��2����O����^Q��#�	�c�,RG��t@��o����u��]dR��dO.�.O�m��������'j]�q�h�\������[��`�C�\C�u���:&�o���� �Xm�9����+� 0n���'o��>���'sSn�~��Z#S_~�_A|y�A�;�+s��sK?��~�d��������^����]{r����{����4��>:
O}|�R\�)<�R���
^)��Y�
�v���f�&�!RGl���0R����C^.�
���^�/:��!��9�O�z����<����K��}���
����;�2��P�,c�������:�#����u����\����_d}S��u������]];��zRx9������L�C�c��������A^�	��m��lg��
s�e��2��0������sL=����u����qQ��W�3��Uw���_��p�O�~������KW��w���n��C-�f.�t���x�l�,�R77r���������f�\��MD@��%{��I��cI9�M�:5�?q=�@�T�o������)���9w����!�1���M����/�r�S�j^������h'��>���������	��k��os�]��8�>�������f��o��n�)�>�����9�W�K���6f�e�j����LBS���qr�V�����]�O_}���|����������-���������"s0?��;��t���������a������@���i�]��=���as�[2�Zo{������<��rb���_��X����~��0.u��8^��y����<,i��c���=X2�	���g��{� �
M=�u�>�C'��1��>�chk��;i��g�Y'�>2��2��x�����:�>�}�����VP�����f[J�9~eY��%V�&��\[P�rm����������u�D��wGGG�E.�s����������������C��}�Z]O��7�=��z������pHy����M?�.���y#����V�16�y��GO~��7xx����k?�������S��O^��W29�/�,N��_/����<����g��jL|��1��<`��%��m�Oi��B�g
���u]8��L
����yC��X��R;����G���ou3?�����=�^��|�l+������9M}0�]��G��<�������>p���~;:::.:|�������k�R����������w�.�n�7<<���o�87]�z"u�������s���a�!���!�K
�1R���~"yy%���CO��e}��.����kE��s�1}j`�M�c���^�rk���<�wl���|�@G��S%��]��!c���w���3������9#N�K1�[s#u���d�K��?d96|a��F��~��}�b���J����� 2����N���`�����x�)��~��2���&��������(��'�O]s|�wW�3���w?����_�u)�P7�=c��������v���w��K����a���N��V^��[�TFP}sq�m:�E��;�P���P��H{����"�d(y����P��f;�������N�Wm��}m��V���'G|V�:����C��rA���	��;�5��*p=��s��������]e[�����6"��uK~"���0W}�)�}�qt�+5N_��m������c���G~:|����/����k��z���=���x��oO�7��/�\���f^7�)�H�<��g?���ZIhk3���>*��S���mb,��W���D=`��^���=�_m;.����J;��&���+�T���\��%r\�;�S5�^�e;���^�s�c�L�����h�?c�2m��2�oyPl���f��������k�
�|���/������?�|�G���2�����(�xS����:n�{Om��q"�1�x��O�[��v���y�bU^�K;�80�}Qu�t"�Wi�����n�&y��5���F�Pf���vIA�I��������d-D����/s�H]��%���j��X������Y�lg\�����q\���N�9�O���[}�WW�n��-��U���n��b���_������yl��w�|�O����j�RX����7/���n�NV��7����<�Z8z��|%�%O�:~�t*?��s�����D�M k����[~�M�����A[~����R��>m}V��N��U[��O����������y@��<k�~|��t���)/��1�����A�s�i���?y�15��h��B��I�B��.���������<7|���V��m�
'~�����Qx�M��M�q��������������o�������7����_��r)�B�/��Wm�����o���p����=9��_���o�X/��v����������cW���o\�<��p�=�
�>=q)��)�B�/��Wq)<��p��W�k�?�/�#�B�=��p�3�R��������q�����\]�������������������b�����gp)l�;::::::::.L����'~9\{�����w�������#��%��������cwb�%�y)��'��}��pO�utttttttt\������+�����_
;:::::::.R|��.�\
�9�q)|�l�Na�vttttttt\$����������o�.����~)������������>;|���+����K��=�N]��I�vttttttt�N|����r)����K�����Q�q)�R�������������������w<�/�3�Rx���
?~���p�;�{���������d������K�����'���%3�;���-d���:����D�Zk���M�_����i��3A+~�)��A�!�&��R��W����f\y�_����o ��W���{e�����h���[�}�Ax����A�-����N�6����j�s��cL����'J.��v�(�!�Y�����uAk���o����~Rn�������l#�;��vttttt\0�R��{^�����G���;���]:\�o����0��x�Eq�B1uh����]�z�V�u�h��s�k�����G�e�]���K�>6yin��.=|��s������$?0U��!���o;q�2�oG�|��?I��;_�=��p��a��?��G��?Is�����������s�b��&v����n�i����]:th�4}���#GVmsY������[��S���u�m�����������Wt;oA�g[�x����X�����07~e���NamGGGGG���<�w
������w�p�����w��Qy�x���������7�����S�
�e��Np����e�J�$��  ��v��p�
+�������h1r��T�>5�///���m^X�g
��m�>�V��z��"+
�1U���m��o�'s?����VN,xSx��W�k�V���)�M��CG�>*^a���7��/����*�7�x�6/;������>	x��'���1l�XzI���~���������KO�Y�uQ��t	�Pu��K����g��Na�>�������>P_��F��Y�������]�p�U��6��_Z]
����}�/�K��{<��n�N������9t��>/��o���%�^���������|���:������������<�V��������y������3�k�2��;�y�����`�>�K3:��XXCs�����u����������n�����������x�E���������B
.������C��^}k��9�:�g���G���9��[7>���li����e���|�����[��9�����KK�
�7/��Y�R8WyS�f�����B�����K�&r/���g��|��wttt���1������|yu)�����Rx�p����B��q�����Om��C��3<rp�%�l
oi����G�Ct�K������6�G�^�Q����Go/#]�
�U{3�iyl���-���7���y�E\���1�-y�B�i�G��U�6u�P�#��+y�l��d���#��q������C>�:���`,9s��J6��_[�3"�C3��U�6������70?���*~�8��A�u7����:Y����s�����Za"c$���e���7��R�e�e|��k1�a�������K��6�^�]2�7�|EW~GGG�.����<�k���p������c>\������W�A�����Wop67M���#������*�����������Q~���6�Bm�s��>�?��2#��t���8��m������r��G���G���O\�V��{�Vy�|U����p�T���a�_�����z;5���8��/�Z'�:��|�Bi���O?�Y���m��}�o��x�����~������Q6����R��[]�F>�k~Y7��?��G���e�nR��q�}��O���|Wv�7�U���p��L��k���
����7���t���=Q�W�|e�����o��������v���=����G��6�=&���G�?��W?]�t�^�=���F�P�#���:������v�W�M����V��O?����G7��
}�'M9~9���g�����w�6����z����H�z��7�(���N=�y�/_�P.�e�r�P���W�M?P�c���[����C��N>q����<�Y�����������q\�����'�y`���_��~]�'��&������S�x������|[<�Xg���p\�S7���{���ZP?�����K��6Gl������-����k�{c�������_�{f.���
��{�x8�-����]��j�����t�8W�k��w9�V��n�Ynn�#�>��}���8��s()?|��p���V|��Y�����Z�W���{7����
�]������������mk��a��P.�S�:�G���Q>_����������������#7�����K����}�
��?tn���C�>R���u���N=�2��s��������}��u�=|�����[��G��#������~�����k���=�M(���Y���/�:N�O{h�o�����0�������&6lO!e<�:��p���K��/�����|r��?-s�r��0���#�o����MH���H}�F92>�����-�z��5�F��j�g����g�������z��?|����oJg^�����}��6h"����
����~�yc�|j]x����Y�A�>u���Q^�l|��_��q1>ei��o���>�����)��9�'�B~����:e|��Y? �]'@?��%.|)~[�<z������M�R��K��������Jvj|��'�k��F����j0�#����T
7�#�Y"�N�wttt�\{�0\u�������=��p��7�����������z����qP��pt�����M����7�z��>��C�����������Qrxr9���'��bW�C=�9������V�^Jz�����������g@�Cz��5+�e�m��RP��O����_h���^}X)���=���8�?�55���+���eJ�M7�j3.(��e�����~��s]���7���c���
?��x|t���a]9o�7����O~�k}�����8���|1�o��K��q_+�������]���~s���7�+��4\s����g~9|�>n��.7I>V�:��������=��>%����Bt���7�/eS���t��}[�G~?qe7��;t�}�p������c������0b�g�J���K���W;�)'>����^��o���1�|��]p<|G��r)_����T��{�������#�����G�����B.5~����I��?r�K��/|�K������1�oR��>�������	�����B�u#=�������q7�`���c7�(r�gVym����_�/fc~�o�5�-���?(�X��|�R�������v�='�GjJ~�7�����\
���6�;'�5�����7vttt�������
W���p�����$������%��7������7��x�}aE���-������m������F����V_���6�!O���n��M_������p>r:O����������<��K����>�cG�xZ��o���}���7����^��n�K�����9����P�7x��R�:'��2��_�����U=y���������^�����x���=t������+���������<����Sm�x�}�g����7�`k��q�{���m��`\�V��z!���M��6��������o���p���p����O����w�9n����/��������l���������/�������
�������H�K�C����������~�tF�v��?�����O����G���Sq*EO�������/�8P�R�|r|��h�sq�i4�V�15���G��K�$~�3Y??�������������������?��o��!����\�3���s{�K�g��B��	�����N��v�������������e�C��$7/�+��OI����}�c|x��t��eL}�c�������]�_y'cjl��NS:g�{���:0�4��S�X���d��?�cS��=��l�:
�?\}��oW����O���^><���8���?~���cx���fx���fx��=<��;<���kx��=<���f�t���������{��e�u�g�Hr���4k�����")*X��,[��4_�3[��i�X9�
�(�$r�n$J���3�
 �|�<��S�����[
tu��������}��un��g~u��S�2<��_>��>��}�6O��F����>;��?��_:@��zI��������[���o|�[~���}��_��e<��xW�^�����.������8�������}x�#��j���%>~vY?�I�o���jO|� ���]���EY7������K��c|�����)���������}��_>���5����sc�1<;n�|���d�l�y)�bxf�1]
�nn�������k=�����l��0�;l�N
2�����+5?����q����%����s�5�k.�k��W�]�[�����}qx���[����g�5���������������qR�q��#�������}�2����
�G27�}4C�����*o��o:�?��~�}�cJo�.�Q��9��W��L������x���C?�F������5�q���v��x��q���9����u8�����~�o�_�+I�U�o������
���o�o���)�G�|e�������;�wC�;������!���q ���2���W������s\�S�J��m��D�_�7s9��k��N�3�%������/E����q�������G^������wOm.�?���9||����T���34��M�f8n�g�LH��z����S����*[�z5��%U����I����_����6����z���i����i��5��*��_����'���������Zt���9~�1����%���%�s�����J#;3�q�o}�]���N�oo2w{k�.���;���So�w�1������c:L�N2��y��������X�lW�Y?s�_������x	�Kz���wvx��~vx�_=5�����������w�>���?�G`���qd��m��"R�?�iMR�UD�vB��o�z��z��<��}�Wc��c�6�W+2oh�/�_��������k�����M}.m�;�_�)�S$O�'Y�����m�T�W�~�w)���K�����7�7�7��1���!o����c�~���<�
�����Z�jK���&�]���|W�),���j���j��
m(�a�6c[��x��G�����Y#sXS����^�������+:�����[����Ozz���?1���>6|��o��#�j��S�u���|Co���x;X���WGG9��X(*�X�9����]T��T��mI=��|�C>K~�����.����Q�X���m��uY�q�W�������'8r���>���A�\����I�q�/��������n>���o�a�����������M������^w�R��������A�g�k���Bk����k^��Q�g���V~7�|��x�����g��wwn�s~��U?�@����>�P����?�k�S:��B}f|�Rvh��O
o����������?>��_��������������
����o6����sn���ss���6n����L�[�?s���\������r3�n������x�~h,������mdP��B;}%�=���c��j����1���}�z���x�1G|eGY?"y��>i3���0�������u{%���8=���R�_T��������S��p�Cp�y�R8�q��������C��>/}�<��'��X��8����CmM���Ky��j�/ ��]�r�����_�!�9.��oM���k��O=���3c����o�����.|t��{.
�y���<���{^��
������_�r�������M��������������2<t����#�l������0����H�������d�������:������(�k�k�]�O�U_����x��~�,!u3�k9>���_����_q���7n�d��?���~��wc��k�R8n�#��?��6p���m(�m��9.���'_Y,�w��8|��o)��y�?	o
A~��
cWr~�}5�GH��tW�g�~s�O~����zs�?m/�b��&~��
�s�����������������{~�_l�$�?�y�[zcQ���[�����m~rf��lE��h�9��������d_y��\�-T�-^�I�'sIy���IYE�1��Z�?�I�e~�<R�%~��7�/����'?�2O�����V��i�N���Od��a��e����-��]�2^E�]���4�z�[��~b��x��#��n���x)�|��\�j�w)�_�I������^��[�si�[>�m�����Q�H���������<h�S�~�_����v�`;�x�����~�������g;�^�/�����-js�O^���vS�'�|�[�m'����/m��kc-_����e���_b����T|�-���\�m�%c�\�>.��y�c���3�w�����>��~���u�����7><{���������>�Z���H��O�y�$r�S����h�X����I96��)�/TY^
�!�N�ja)\���H=������CE_�\3�I�0��	���_h�<!�<}�5����y���e��li}B�����Un��)�P7m���g������C���'sU�������=�����\7�BpOO��G�������!�S���1��?h�	��^���WY+���.�������U�u�%�~�h3V��O]��Q�0��zK}�>�9��T��'/��H�������i��}-2��on��������v\��T�����|�j�6|���:��^k������{��7���4m���C�a�z�K��7���0�������[w^��w�g����;��c�����e�w
���G�����	o���?)�M<Qe$VyNp�F]&��9�z����v����}����ON?�#��	��a���/�Zp����?��3?�u���[���:	d�����������i���'�)}�����>���[Cm�V ?�k�'s
%N�������'�9&���|�2t]GPb��-|~�[d�����j__K�e����Y�������O��z���y�Om�����&�������==�������=�/ss�����������+��5��v�
������p\�s�nn|���A?m�#>�����O���{�
1���b_��j~����|_����wo�96�|>r�[x� �O� 7����3ts<�����M~��W]�?�3r���&�-���5e^��K�3w(q]�e��}�u�a��q��X�5����'���o���.�_ �g-s��#k�����?���g��w�yb||����o���_������O�������eyS���������tv\o
��6Q�.����O(��'�6��9��7��"�v�*�`�B����s��!�99����2������6�����nn�e���e=R���k�����O��o�LX�����<[��x�'&��cO���y9�����|����T�+t�Ob���i}��o�7k@n)c�O[�\yS��O����Gs�C����=�G[���KG���y�l��@��2���:�����o����{i}d�9�?�3o��}��T)���5��\����s�����\��b��C�����'p���gd\���x�����S�5?K��%�}��������e���s	���	}��U_j}�K��i/�X?���ih��T�����(�c
��-<�������)���u���}3�����o�����w_~�����C�
���1<�����)d�����h���&Zi�3�\l��%Y~����j��6 ����N�#���<����1���|h.`<���9�]�5BY�:vx)����@���/�?�/��NY�N~���s��V��n���s����i��:�M�Y?������s��^��L����%7l�T>�P��
�B�������1�5�������q��S
|~�uC�5��M�����f-���_����h�L�2s����uA�K.u���3����s]����Q�0�k����2r��U�����Z����ai~���?y�s�"ur�\���3�99~��H������r>R/��>w)�: K}�)���=�]�G��W���T;����9����I^���?z���R���#������}a�'ixS��p�I^���u|z8{��'����2�[�$�b�W� ��
_*80
��|S71t��[��s�����fs�m���K��@���+����������/v������k�w�/����o��G�����
�v�I;�s���J]X{R>��M_����[���1�s��a�m�I���vB����S���|f~�M��N��)�/���o�LN�}�R����s������+~mW��v9���w�d.���5���I����h��.�N��������6}�����������<���P���5��sE;�����}���
:���0���
��:7~�9E�����o?���G���WW��c���������������+��`<�3W�s��-=��u��F~��r���Y�6�4y���1.��{���}m������������w�}b��{�\
���/_
�$7?�w�����ql���,@�����2���v`���UG���A����2�'eP�C��������q/������?��1��2c;O��'�Z�F��}P�+>����|�-�'/��<��s��K��ms���?�zH������:f���� �K���_��z��q�����J��Z�Dn�9��������B�r)d,��3gFq)�oW�������e�����'yB��%���[@?���:���!���C��i|9W���S��]������l�b�3�Oa������c�����=5 ��a�����:0&���QP�������������8�!O�9��#u���-�G��?���������3��n���<2�cb���x2�����5�u}�W���v>�:�Km�r���R�����7�{b��'_�������o�?��q�M�K��>�R��L����i��������Zpt}@��y.hu������N|�m�m;�(|'�8��i�"�A��^BY����A�<r!*��O�ZX?��L���|�#��v��o�P������W��S�������ub��Id�_]@��/�G�����������.�39�,9^����>�R�G�|���5�w)��0�k�3m��S&u������^�%_���2���[��|�u�]�,�o�����\]eu���:$���Y����2���}�+�iK�y�o�o�R6���x�����a��i����u��
ug<Y���<��&������&?�L�*a^5?���W?����B�����y���^���2������!cBs��G7��}��|n��w=3���?}���#Ous)|��_������K������A,���z,�L�m.�|����B[h:��%���6>���/r�}�����
�J^+�s�A�����26I��q�g;������[���K�;��e���������������s����"��$O���k�����T��#(1�U���?I�����e�����r)����u���P���u~���A�mr�]�M!k�
�g�Z�i�.���^G_^����]�5H����g��g��e�����- �*�o}S�u+�\t��	k �K���y��+�^}v�M;u����gL��0N�	�u���W9~R�:Yg��N~�/ur\�_����y7��q&O���9�|�����sMZ��nx�{�����|fx�_}rx�S�^�c�zx��__u)�dpZ0PN �E��7�������qq: ��'?i.��k�>���^�c,�d��������O?"�}h���K�u��W?.��A]�s8���F�ZA_T����T�%����O|L�[|r@�[��q�8'7�?����%�@�����( ��5}��e}������v�w��.����I�{�>���������|n�p5���1�������'G���2������W�6�kSP�g�?
��iwj�9P�� ��?�Rf��o��*�7|�S������W�C�
�����=z�����O�u�-:� �?><��q`km�'��5'e�'�����w��m��2��*KjHL�
�<���P��x��+�c
S�z����c����e����}l��9��{T���9/�F����v�v�K[:'7�~g��3��6�o{���[������������p�3�^����RH0�=�����I�� ,H&��-���,
�O���R�������b����G���5�*�X�?���_�O>z����0��q����q,a��3+�>Sf�����*k�������9�D��P��x`�O�g__9�]�J�/}�X�����>{�?�:?>��j�w
s�KS������'<�R���>������?��O�O��9����q���8�8��o]lW=_���=<sI�0��������7e+�'��F�v��xiK���e�3�����}�����:���<��h���L>�9AN?y��e���}TT��Z��\3���K��O����}_�x���������0���/O|n~�
�3������9����`u���d���c�1������jC?f[�V,��NmB}h����S��q }��_�cm�A�������v��Q]� ��K����>[2�,s�N���%�0_���d��S���w%��T��S��d��M�g������~=�:�������;{+_��$��o<f��G�.�8=>�R�����2���_��v�*�����`�h}k4k��W��:�Z��O��^������|��T����Yv�~�Zz��mu[ch���Z��k[����M}h�G?y9��z�v~@����2f�o�S5��'/s�����_�y���;��p��_���0����;<�����������8�����,u�^�-y�����~�oN=�K[����)�u#\��2�*�?:��6�Swmn����8�h��C7�-~�����0��GKfl�T�)�T�z8���6z���0��O�Pt���$O��q�#y�_��������p�M��z��w
7��K�V�������h����8����~�Z2����u�-}N���?m�_��NRsI[x��~�'�g���'������1�U?)7/����H}y��k�� ����H~��i�Um��B��4�H��!�z�����W�����cW���E[Z���8��%�|��Fv��o�>������:�y����/������
0	>�\��Wu��O���n�C^��	��@7��O�z����RW�*o�`���������A3^ka��qX���>�o]kV��(��8���M�6�]���| ?��zI�� �K]����M,��0 �1�s}����~�g��o
��������]���p���/�3In�x�C[\�e;���4>u�C�������_}CkmE+gu��K�/��N��V[d}*������s ?/b��h�M��M�~��j�_��6U��������K{�����B������a*}`��z���l��b���oi�I����8��r��z�|��n.��=1^/~m���/
O<7?�S��Ka���@f Ly�����������F*?��%?y�GB����
26��S*�QPsh��������/�+��O�+�_7����.�s��SV\���0%o��W����-?��5~S��T^�[�V}�j���o�>����������7�b)����?�6K���U�aQ��+U���#'x����ig�"�[|�3�#�^R�aC?e��j)j,��o��W:'���&���S���]{���*��M�-�����_�1���~k�������5��QQ��?UG��f
Kz�s,�������/�����������k�����~3���5`� i��y�������|u+��}u�tz��^�eO���L;�����2�uI�@������j[� m@Kg�?������Pu���?�+�~���������k��s�j�o���:�K���|�)����=2��%��$_�]QcB�O�%o���K
j�U'�P���������p�C��F���������?$��.�+�K]�e�U�Yi8�+���������Rl�����/[@?mj�/4�Ee���_vJy�;�@�x��>������Ot�Q+����y�W}d�����1��e;�M>�7�S��*_]�h�d������re���z	u���"�M��E���u\��[���s��_����C��q��om.�w<������8|����?�C��>����?�s��O���f�K�O����I�S��������3����S���G.����
O���O?�+J ����v���h'^����S�������>���u����3�z ��g>�Afe�H]m��+��e<���Rx���*[�g<���L�������~�/:�K��)�?s�����d[{��v�C�W���v|������mti�S����v�����W'c�G7i���'|���2h���o��I�-��#������>m��7�S������y��g~z�A��7��37��~22^7��
����E����|��f��������C�����R�k��������z^�F�<��n����-{��x(�w���rt�0�'~^t����B���?k�~�"���$s�:�A�^j��~���Z����Z����'�x�q������.�0�{���C����^s�
�?�#����ww�x����<�T
�)�����|>j�4�OF_�4��#���.m�����-}��o���_�?m���w��~�V�|N�j~������O�L�re�&�Z�5���i��V_�?}����?�h���L�e[��#M���9����-�5���Pw��H�5�O���7s�ql��o��F�����7^���%��������a��yx�`���y|���x�;;^
o<;Z^7o���������//��_�����<|M�����[>t�����+��%��<�.
��)y5/���m���P������\9���]�t��>��s���S�gx��O���y��Q�9V���(y�����1�9�v�iW�������x������K�-��8���K��������?1���M`l�Mz�2���d�����N���p����o/�i�>��Q���+��A��c]>.�
��.e��&��g�R��r ?�K�+Y�9����~�}�s|~�77��S?��jz�5g�Qm�;��}}UY��W��
r-@3�Z����"��n��
�6���������'i}��y���u�x��������f?7����i��ps`m.����qls`m�n�������r�����������l�KbJ?���{
S�z��7��<����]/��9��*��"�n_jC�~�/�/.t����I?�R2F���������Qg��g��417��W�/�<����'�2��������w
��(�q�������s����|.|ry���:�.��	���u��BT�m�y��	�<��������O�v������v���<>���"s�r�����o�|j|Y��i�e�K���qA��!td>�0f�����r��=������G��?y����L��j����	�r���k���\�)O��i�e�K�~+���7�p��� �Ap��q�������o<��l�g���K! ~�!/�u��j�c�P&�5H������M���|Z�[���;������c�7K���I��EW>~h�sp���1��W.8[��������^����w���O�������6����]�l�K����>k;��*�x��G�9l��[�}������^�c�~�_��G0����>7�W3N�i���Fzj��3$�d�xX��������?��P�^��6V]P	.^.�>�	�>]����6.������!�c\������PG`�K���K��b�t<�2ol�G��;5~��+��M��������|ss�H[��H9m����Q����N�P_��XO�y��|���~������UcrUG��2�;��G�%9������\��e�\��G�������s������sj����7^��{������5�w�C���{�o����������C����Tnm�_��`��c������u��~�8cP����.k���=t����:�������|h��D��8�]�����g0���7�i���H�����'y��k�u&������:�Q�����*�v9��k������|bny�K�0����O~�[����S��~D��72.�����T�h��"p��s#�������c�,7O}��p���������e��6n�[�44r�8 ���7��GG��v��J�oI�4>������
J��@��?�F{u��1���)e�o���u���+� ���]��#?�2�yW}7St�����/��,!7���_������������ �9?wn��q;u������wo.����s�o���m!���������?���n����T�|w��F>������>���B�Z�'m(����T�1>>�.A��>�x^��/������������%;s���S�X������X��o������V�9:��?~�Z��ms��e,��M�u/�x�p�c�e�����p����������?��6%�O�G*gF�����C6H~2'��sD:�E������nH.0������K><b����	�v�H3W�.�����k�~�k�3~�����~s�����77����y�����
���_����>s�8-`��i��`���Knf�>�.>��uI�
>r@�}i�����xt���]�k���\>��J�/��I>@��������A~�=;�m��w���b8� ��s�g����:�sw�<|�^�{
9`^�������xs}q�������H����W~����om����9���)��+�6��(���i���o�n�:�*O�b��.��1����u5��I�������7�V�}&�k�K�Dk�h��j-���nK���-�9���0�6^
�|���G^����?l6?.���
�b)��7��������'�`��E��R?}��rms��\������>D�;���
�>T�;��;��cO�l�S�%��a�7%��^k|�C�@y��0�Gk�-{y��|�+�o�/e���c��T��/����O��6�9n���D�?4�������~��8��I��S�gI.�Wc}	��\������=l���q���7�.l������76{���\��x��� W�e����8�E�;�AX?����<}+�"������=T�A��%x�7����c~I��:���W�v��8��E����pm�K�=I�����W?�r���:�K�������$�-e��C��y��rh�K~�+�w>���:��K/
O<?�}�����������������	E��%<}v\l��
v���6����p���0��������h��{��o�����G;�������m����������`�2���>��~r|�.<0n{m��:w����l���5|c�v�9������m����4�%������g�u�����F\b��~�c{j|�7k/x��=����<w�/���=�����2��;��5|���������s�o�G���=p�8��^8�p��~7�{{�2s�7�#]s!y����C���<P�Y�����:�]��z�����d��G���`���O�� sLY.�5Wtk~{���.��/E���Mf����zQ��������j����6�f��
�q�/e��N���M�T�����;��� n���m.��i���?���?��E�m\P{F6��Oo�
r��L0��8�l�����LpP��?������{?�|�z�7���|�q����O~{}�6��
{��bO���g�~O�9�G���y���cs���S��:G��7���;�7��=���4����~spGn����y��\S���K=����������oD<��8���K����~L���������YZ_������$�/�K���r7�����}�������{7}������������<7s��#�<��&��n�z��d�����VJY� 7n�[
���k���{���;�x���|rJ��-���5��26�)@�v��2��i��>j��:P}�,m�P����K��	j/��:���z`M}l��r\�r,Y��k�;^��hn}��
�|���'�x�R�6������^����n)�{�������S.*������L(�s��X�dn�|�>���wG����w|X���.�a\��������gOo�������������q�w�v|��E��?�����}��.�=���]��x2>u�O\���>���~2n�o)�u��z���4~��h���5������}��;�������#����������u��������:.�~�k�?��?��K?��co��m����������Nm����3����������p������d	�^���y�� ����){fe_y��#?c�;�������kA����cy��M�ALxY�h����X#�����\��@�z����:���A������������1r@�q�����j��C���<mS��>2w]�������uo�|)��E�q2O�����n�:n�8L���	e���������f�C�gQp���8��K������������ig{�n�eK��o^R�n��������V>��~��Y�{z=��f�������1^���~�y����?�y������������O]���{��m�wj���(z���g����������yk�8���qs�[��-����v�/4�bm���?��V������AO����������F����p�o�������q?��c���@��M�|R������5@�+�v��f~F;(|��me�hC�3����C�6��^���<o�`|t��)d�����kK_��C>yex������9�^�w��P���ZSkO^P�z�G�}u���2��'.�v����u@����k,���s�_�����=y��!p��� u:^A�9^7�������4|��ax�O��(���q���O��ps9�c��'{�,0>R�)������?����E����O�/�oT�k�o�F��X/��;s������rh�g^-���R?�%�M�=9y�@���s��&>T�}���/���sh��+��]O���y�����k������[ci��s�?���^?��|��[�����\_�z8�������g�m�o�9j�7o7o!7��^N���z�3@�x���~v�6������9{��������)�yT,��@>�	{.:��D����$��:�\�����%u�Zc��y�O��U����6R��r8j}j��C/u����B�Z��
p���`s)|�����7�{�B>J�*3�[8��Mw���6/�:�o�H��@�n��M��=~���^�����+�������xG�_~��8�4�	���8P��1,�NL�'�������e��;����wr|{��������}qT�Uo�w@_�H�
�>�����6v{��������m\�6zf�Op �m��
|�|��)s��/����y���=`��|$O~�g"��aR�j�5��?�M�Y�'H���]�-��o�sy��:O�YyU�jg~-�U��/�Q�����������K����.}}���������g�M��eA]�p�iz�'��v�q!8��0r���!���J\ �U��7c�9{@,�S:����S�8����}�.��m���6��M�Zs��&>��W"ui���9d>���O~���W�m�$i|�V"eS}���Z�U/���5��I^_��`,���������]$�/��;���_aX����x��f|s��������|�T����������O���&�'_��:����9��^�#�����g{��}�//I�ST��O��+�~J��I�<�,��N�A�G�+��.�o����.���z	�����u1@�U�����MS��v�m�s�	�$��������E��6~�����'���9?sh���8`i�s@O����dZ��e�����!���G�S�Wy�]yk���_(<�U_��>���M�n��h���8`n}A�O��������[����=l��r0�)�\�2>��{t��+U�����d�R]B�W��k����@�lD�����_m�Z�����S<�����:)K�@�e�<u��k�M���
�7����/O<����S�/y���f#<8��2rqN-nt�`�B���~��]���3H�%�������)���2h���K3�j�����*���-��v��}�f���������/��a��
��U/u�����
���/����b|����p�C�����	����1W�N���M}��W�����o�����Q�#���H�)}��7p~��>X��d?m��'��m��gN�w�3����V:g�����:	~����_��~�{����F���K!`C�w�[R-�b�����>Z
 f���
nIn_����P������~������g_^�o����R~�7)u3�:��?/���'yk�S/����k����������U��*?y�	tZ�xn���N[?�C�|���\��lk�<P�@��ry��6��v�����C�'O=�����-!s`��t2^�����[��Kl�U&M�����u��x�����c���N}(:���L��RO��k�-?�W����/�����jk_��g[���c����.~m�����\
_���������
&��>@^ ��[��9������>�z��5O�:K����-���T�������<�`~��q��L������T�){��T��=j���<����9{�>z��t��0�ot���MQ>gR�y;L}��r��������������4/���j|��-�\}���l�d����-����Z�2���K�cBy�m��P�\�]�����kpInNs���o��������qp!�����/�O~�_
+X�,�\�)�z����/����>��'������,�+2�1��_�?�)�1�;��@��),��~���=����_��cA�5�����u���0&|�%{�:�3��T�������1���C���>��������G���c�m�Z�IDAT1�F���/�K�[����]�"�����o�g�{i�O�'���h�O�5���G;}�j���~k�T`3�h��g����L^�0�~�{5���C��_n���R86�,�|h����#M~�aa���:.���]��F�?��Sn.iW�)���O6/u*U?��~��2���[X�/����6�@k�����){��T�50&���/���o���}���\���l�ky���%d�Z�0p+�l#O��
��[�j?�t)��v*���w����j�S�&/�;>�//�Kr���5�1B�C^�A�c�q�����y��9'��z���L�[Zu���sLUf[~������gM����S7�~����c�-�~y��+�K�����
 ?��b]��.j�|���P��rC�'��`�I���
����/�m�I�r��%�5g��E+?��������5V��<��g��C���8����T�zi��OY^��oy���XS����8��~����/���O_��I�V����1�/��O���/�S���r�>����3��Kr�M���
j��.��9�:���������Y�?�G��|�W�E�O��o;�k���I��'�5�K>4cv#�����-^n{�������gF!L�:��Y��@yP���1��]w���`�mn�,d3�%`���v��
�P��m��3�)�%��z���>P�dY�%����D���[�����C���y������R�n~Y���%{������3�]�u�g������6sV���1Qor�*��_����A��)�Kk<�g���Bs��M��k�9>l��S/}�����J�7�I�xS0o�:"7y�'7�)[#'����{�-ePa}���Z|j����M��9�����8����M�5����s���sI���w���c Gk��������C�|q\
o��s������\�,Fdn����,.u�.����OY�]�����@�K[��_�/O���~�G;7�%�Px����}N�Wc6!����~���})��}y�Z�w����A��k��A������M�o[����z��Z^���}(y����y�'_|U]��J�X{t�����i����N���g,�k��i�)���TZ�/k�'yl{YK?S��>}r�����O�O_����Q/�/��Z��C�
bbk_���c��C{���u��8xK��~y��_��)������_
����2mp���.Xz����2��a��y����2e)������W{h>�@]7�]�����9����)w��c����_�s�|��'?��<rMT[�G�>>�����_���m��g��[��S�^��Q��{T��UW�!A���Ts�O
�O�	�k�G�=)��� t*�a��Z�_uR���zSY�� ����5������u���_�N��1�L�����$���r������[?�5�[�5�}���cG���K!_4�������G//���R�B�P,vW��|���>?}�����5f}(��<������6w�<���5X���m��z �.�v�����'�xP�)7�v�u�y�|��Pt�Q���z?��"A>"�/��&�������6�g��/�M���r)����_�7(k1������<��yB/s>*�����W�7��^e��N�kP�u���H�?I����>[���V�xg�	��^�m����ro��N]��:?��X�n.> ol���������7����1�����������_Z?�{����+����a�/��R��hr�,r�Z���=��!������e��!�����a��`������l���x��U7���v�����xs|���+��^��M7������M�"��1��Qn[�x9F�]��n����>s���\�\���t��n���z~������r%.y��v�~�����vIk��1��S�?�:����c����)��0V���ZI�����O=�5��)��q�G��9�����{$>Y'�\���Yc�[���_���
����f�-z%���c�_����-^�������_
�`!���	ui��nh>|nB��n�P�����}�&��|��[%d�?���@7~�e�D_�5�����/��4y���M;���z�|;�	k����q�����|�I>�S��Ru�[�����������y���
���"�2.~l;�sdLa�[c9�i���Vy��o�90�>�'��������1����X��:s9#wl�;}��bc[}��f~�g�s_e�G|���k*����s>'����??H�GV�b�f�X���>H����������_����m�{ax�{?�������O��~)L����]�,j(����%`��~|8��������+7.x����q�A��K�����mmr�H�]�/���
K�j����)#���C~k�����Z�r��a�P��r�9k�o���5��T��#������h�����1�i.����>[�,U�+��X�[�����A]�Y}9fP�rb���P0�>���X_@L����65����s��?y@b��^���m)>i�g�E��1[��u~��M.�����4m����yE������u������a�8v�����
����q����a��b�w�.~���RX�"�Ai���E��`[�,����Vn�	7u������y�����xX��~�������muhS'y�x���%0F��E���������r�b���?t�O�|�'����u���"��� "����R�����#��<���f=<�	�<?\&�)?.=������o��.���f�������iKc�tj}\+���cL������rA��\���^.��>����zQj���3�����������5��?�
?�Uc����r�99q��5?�K=(k��y����r��Z�\������+�?���[|n��w?3<�������������:���ca��]�u���?���~����r���/�������M
��
j��;�$v��[��g�:fd,�
��.��|e����?��l�l�l�l��������~�8S��_�-(�����a��Q������_�P�8��N��%��r�W��n^��c�9/����\��5g�{aj!c��h��[���X�3�^�e�sn��]�j�/H��-��s�z���k��������{��3O�}I�?����z�F^�_��u3���3x�����'�<������O���7�`�_'�B�B�Z��sA�h
��>��{R��J�Q�5v��%��u�W���v��i�mcN�3��S��/�j�L��6��gb�j����X�)�������yM>h�p��-�>n�7c�s~��_u�����ROZ�����N���W�������+K��#�6������@��_B��j�/}��{F��������'�'?��6yS6��
���>;�����\��}��'�����_��F!o
�	W�e�@&�����E������b[~:SI���)k=4�es=��M��u��cw���9I��o��i���gA�6��O=W�~��
�{���������{lx���4����Q���q��Wf#�C��O6n���
���`�Lx���.%?��u���6�����g�%��2���:!�6��8>,��v�]�j�s�����O=��:�����L>�������.��w=>���O��4��=�����������K�ee6��Dk�db�`�zyL;����A_��*SO���]���-��j=��Y��;>G�T��9�k8�|�U_��:����Dk��������������?��8p1���.�_
�M�ee6��(k��"��L�����+m�@���!�/�t�=���o��7�R7��G�_��o�����VA��[�PZ��~��A-��T�Y���2��:���"9�@�=�,�}�-]��r�������.�w^�\
yS���>����_��'F��w
/+��n7�v�d#/��P�8T<Lh��P��F{�s@U�����K'�?��-�vs��uP�:�����*k�ts����W���`�$|�s���F����6:::�Kp!��{���N���x��&����<��0$�/�������=�z`�!�Y����T`Ss��;��k
9^�3��jy��8:���Z�
�j�)W��2���������./�>Kr��8�������q���'��&�w�C��/<>|�����Co����p�
8�<Xm>�J�|��H���Gd�C�������mLU1��Z��zi�uN;�k��c�;/Rls�h��}����<��Y������X��::::�y����;���.|d���y�k�����Cj�(����|������Oc�lZ=��n���QkS���|�-���aM���5�zg����l�C}S�~�����b��R�o#��������������?>����l�x���h��"�kn��m������M���~�����6e��$i^J�2>�����k;y�������K~��z����?���:�^��:���}������A�5e���x�E]�
y;����N���/im'��CcLKqjO�rn�]_�����A-���_���/�5�%~������o��3z�/}���r�5}�U�::::����O�����g�����c/�����5�`���C�������Cx���C�66H��@J����7bk���6�~���*�����<h���^�5�#��2w���>vYS����.a�
���N�S�&���}�s/��cH~��G���9�k.9����������#���������i�����y�>���R�
`�����0h��>::::���CO
�������������6�K�Apxp���+�����*�����)y+�����m��&Md��3�zA���*3���^H|��q�{�K��|P����lC���������������D^�jl�=�������3�ZW��������mc��R��g_�l�������'�/���+��O?�+�}GGG�u�?y�3�����-���������_�����Q�/���7(����?���@�KH[�my��c�V*/�G7:P>�;�O��<,S�e���������G^z����/��X7i�����������n�t�_��K�����/�eN�@����o���y�=�����V��������d�S���m����y��:�K���>_�����W������o��O��O
��g����'��p�yX��0��z������N������`Sj|/O���<L����+����"//���!���\>z�5��F���3���$YK��9�9?����N��glx�sn.i�y������A�����97~s�����\��oP�I]/��!r�?9�o�j���|�I;���|��uttt\������������o���7�������R<D������[6��C�!V/�����U�9�����JyX*�r��������/9Ckl.O�����O���1�w�>c�k����8�_+>y���5W��4������/�*�O�<���3�\�?u��i3W��X�|��>�>\W����d�������D�iS��x::::�y��=��_��s�;���p�3��^
O��_
���X�����C$�	���
<l���`�%A{�����[��y���_�yH�3�[5�����	����?q�}/`��~s�����i��L�X;>cA�A7/)�mK������E��*�?����d|r���	^�A]�K�o�<��.u����o=����L0Nx�:����<�f�����������~qx����������R��?�3/���C��x8��;)�R����F�����i���9�=�2�}y�N��N���_�����{p&j��^�_�G�	�	_�8���f}�3w��)��#�����l������k��-_`.>t����P�E�G\�;��[�������L
���]��������u77lSE��5�q�O������o�����~y����
?7���?7
��g��U�K��7�����
���vK��@��^���������Q�V
��
pJ�������/�^mp�����W��f��]}�:M,��%�+-�|Z��o�)d�l�]��zS���+y	�s��aJO�l'O��a�W�U�w<�����B��~u���_.}~��'���S���>��K���(ZQ��7��J�X��z�������\��<�����}R0�>�����1�����\���d�E��]/4�H���V]y��Rr���OZy�~��t�G���w����}�l��r�����r�U������[.�4�����<����G�~x����o�������p�,0�+���F�+�������������
���fM=�����>}��'a���y�<���$����q��k0/
�����ES��#��WZ.o�)�v�F�U����K]�����Js|K��_��Rg��\�'�=����K_n������^�x�������.�W<�����:���~��r����g�j�������$��_�y1�.5�v�����o�&/�?���=�J����1�����I�NzS��p���gn|k��s�B^������S����K���9�q�����S����EH��h[Y]���4\�����������8r��[�5}%���������S�$�%r�91�Wr���q�[;�PD���n���S�����J_)90����Y��v�U�)\��I?��7g/2�l'Kr�4��2y|�K��}�	��K!_2��B���?Z��\\��(x�Q��
���z��a�:�f�A����~�X��{���c�?)c3�(ySc;Nd�]�O�]������9Bi����+��rr ��+���o���z���zs�996��o �E���8 ��;h�������Q���3�gNPs 7���K;NZ�����?����p_�
_
]X�K����w%�CS��i��:���~����\����i#�������v,�dj�Oz�#sg�^��];��������&}���X$r�O>�������C��g�����<���Yj�����9p�B7�@��y�����y�c�������9��m�'s�8��K����4<��+{),�|@.���������,�������u���wl�������&^����>	 ���!��q�����A�^��'}%Pcv�dM��@~��3O�W>�~��$��	WB^��6U�Z�V�7_l���^�!��M}D�!�n^��Q�cn���/�@����W�q���/�x)�?I��8^O�K\
OqQT^��p��E�}������������z�/L��c�OKP}����7Qc�������������7�C�s��6 � 7�)?���?�V���MYk�A�:�:O��>��W~"yS�s���F�>�c����W���>��&����|��Ue�%�����J�b�������Kz~��&��'2V�Y��W��K���[�g\��I��X{U�~��^4�����U��yJ]���/m��+���<�c]����[��z�u�-^�a����P7y��M{J���?Is���9�����?>�����Q�}S��f��:3*��)<}��	w1I6�(�]��<����t}���v���mk;������
���0������-��2��)���w�K�����F�N��'�v���@�������
�������6S�3/��l�l�9N�}�-v����j7%O���lO�W����U���&}?y�����Z��@�P�)cW����h��m�e
������4�A[�
/���zC��_��Q/5S��.������;@��~���� �}bk�^}��m�[`�N]O-������1�1��J}!�����������/�|�k������W�������������0<p���}|��Cm�.$�ndRM}X�E����C��V������~����`!#���i#��o~!�������?^�UP?jA������$_3>m�|k��������.��|2�������������/�RN��V9>�A�#���|����5R�Y��94�9�@���bk|���1N��~�OX�����%�9���<�������������@N���_��qb�������Ad����@����W��Ck���?j��X�����m}��~��Q�r���1��*O{���<sp.A��}�V�N�h��s)��*_? ����j����@���muC����8���C�n�k�O�o
7��O�.���r����������G���$=:���'�5/X��pR�> l�O=����#en�o�J�g[���T�%���em�_�3�/���R�5~����dM��;��O��-�o��?�U�qe_9}��u�A�Z�k��>�:�
tjSh��B�������_�Y��s�k
���c���/�	�9P7����J��N�S�zd���?�oj��C�!�����
2W(�������c-w��87vi���5)'�}��e�PV��2O��[6k�?'���0Fs�9�+��j����qB�[B�x5����'����&~||�����S�8�K��S�f7�Y4���}��B�GkQ�X*`�B��g{�,��IFy�����h*?(��b���%���>��cj����F>7>(<)�`�
�m������R_?���Z��x�W���~k^��s\����FY����3<����:['@[yR�d��i��A3~�8~y��������Z���~�2�a��m��"����y�C���A�/>�B����}�)��C3m��M��S>����g��|������>��<���Y���<y�mki_
j
��s�+x�md,y��#�����9��R�+<����t�o��t:N������)�?�����k��0n���9�W�M����>����E���$�vn�Y�>,��o����t�o��.t��j����N�"s���_7I��������W�,�v����S�����l����/� �x�/�����:F�	u'k�1K��3.�����c-E�	!��l�_��p<�aNW����s���'�������^_��9�:�"��y����
��6�g|���\���%�s��m���O���������2c��_}����������s��M=��n���?N�yXc������3wkD������\��"���y�s�oT�����xPmj����B}N�t;�b�����w<�����}S���������6�}�S�fv��}�|�����$7�\`�Y�ui���M=u���j�|V
�����y��D����8y8��k��v��$��_��K?����<07~|����z�.n���{���>�feN�����:0�\?���6��1��u�����yI���V?��B�o�uE<����q�'e}A[�����q��Z�S��qD�/����~�g@���z�^k}kW�C�������9�q��;�*�\�H]�^���*�gL�y�X����<���_�#�4�ik|��[������cm���k��7sR7y�u
?k+/�'�I�N�=������������������
��������w�m>P������U.�\��
Fh.Ze�r�����������_��C!����b7�2�	����S�n��=����$O���eL����L��l��_�*�m��u���W`�]�r��K��g��&��X'��s����h�=+}8F��V�~	���7�,�8K�gI������A�}�)���������/o.��������/�9g�7���<m'����;���6F��G���>O��:�ZjC����w����<g~�ZSp\r�&/s��@��g�L�.�Z�j'?�����:�O���x��>�3vC���|@��9�r��^�	����:�;.}k����������Sx���/5o&��I�MN�����/��V?8a]�������A>��w!W���m~�K�C���~�[B��y��)��M�%K�s�����Krh����%,��z������)��o]�����}�Pd����F�����������5�������\����x���$�������������G����N���-�o�����F�^X���k�Z���}I3�:����1>��lC}�>��/�5B��i���\k���~���_R�	���\�lg��i�?h�x���dn����J.<�Y���X�W���z)��s/�L2������F��6.����A��p1�Y��-�we��:<.z�.(����@@/}iC,����/x`��9X?�=12g|�rd�����M��,�o)������q�K������co�+u���������O
��[����2Q�-��\���=rk�1_��J}��v����������\��k���7c���bn��K���io_}r�e}#_�����
��
B�9?P�w>��x�c ����'��;~����5l�b��+9�8��K����i��;��s��f=���O�_9���fm����>v�rMY��,��q��t)T���7�>>�C9.���.�\ ����f��Z[�����*/��|��n������!s�R���>q��>�
�������g��a�>y	sAn;c��|E+/�R��Rg)��?�Pk�|*v�\���z�3V���~��)�O�-}�����g���O����+�B�1�C���W�:>����V���5����%��/��J�R��r����T����@^��.��W���|�Xs��K^�i!�U��8����95��9��'�:��i�4�/�i������^
?�������>3.
.�\G�>;��Hy���.��g?�Rc�"\�O�����/R_�
m�S��n���5��'OZ}�_�?%��o�������>y8�����#�vk�W�560v�H��������5F����)~�����K�_�}M��V�JS&?u���*�|�:�S��A�M�)~�/sUF?y�\��~�_�S���.c�t@�`Sc�1�)>�G�N~���!��M�:�i;�W���^D�����x���&e5�j������2x�WWy��qB�t)�W��������`\�{���En�,�ZG^]�"�6-_s�R��I���������>3�/7�-���xSc-91s�s�-��O��Z?���eM�_�����G_u���w�9�����i]�r,�{�[�+u�05~������������T�����
��v5G��M�z-��}�O��q��vK:	�8���-�:N;h�����]}���Ly�&/u����N���������S^cx��Vh�?�����������g{���:N���~|�o������ =�����������}]k�����-��R�m}���S�x	t���[=����A��+�4}d�`.���6>S�v�f
s����W'sI�V�j{i��O�J37�E���7���O�T�*���1b�zK����&���-����f|��k!/���3��K�����@�6�k{.~��Kw�W�����#Z�����yB��H�����i?�r�$2�s�My������U��[	}�8���������8�_=i�;N�.�|���D��d���'�u�x��A�/j�"}���rAf��j+/���|�}P�����y��T$��P������K����6K��7N����?������[���O��o��?u�Q��h��������>��� }*�&�kI~��������_���(�����a�~���G{*����o����S�jN�����W�S1*��_����[c2�sjl���d��k ����_��~"e��C3^�Zc�B��/���W}t�@D���������Suj_`�}�	���p��M!!{ID�Z ��Z�\����k_��)���!��O�\����o��?�������o������6��������a��_����+�k�;���S/m[~����_�Sg
��g[:������+4������N�+�K��KY�I��|���3mu��6�8T~bn��'��o�^9��<��Q�w+����V��v]�i�x�O���S����r�������A����v�Pw������z��������[����J�*��y�K���:N n}��������1�����K�k�������I�E�	�7".��:X�nJ������tj����!$?8����p��k��9������K~�Z�kN����om� um�����V�>��������h�*/������i7���W���l�X�N��z>�ny�qy����<�Q����-=�q[}���5�A�3)�S>����~SP'/��>oq��*�On��	�����l����eSc<��>��[>�>Im��S���cI���uNR.����^�����jd|���z�������*������.~e�R�M6����+^��B'��R^�L����K�����o?ji-(/��G=h�Pi�%��k�}���V}�������<|�rTU����Z>�W������]��|���9y5w����O!�Te�L�?�ci��z>��U��aW�p0���v|��I��k�Z�x�v}���^$�������b��z9�D���KW����Q���<�j?}-]:�4&?�?s���V9}y�7���6���.��v�@�]��V�@�.4u��/����E>��NQ����O�T���;>������G�6������������7n�����uz)L���D
O���Pm@���[�bM��j?�5.��?u��@�W~�.�C�����W��zNa�^Z��t�6L�z��k�.�+���0����=j�-�Qf���f�`�����S��T;��_�M�v|S�Zco]&���V��)�6-;r�����E	>���1J��P�z�����GL�j>G�W�/}�f,A3��CG�%�O�K����^�����E&*_���-����wa����fQ�����w������_�����xax��2���/�Ka,47���E������5	B.$d��Q�.8`�z(����:�E����������=�?}*O��
�c�_y c��>i���O���^�g��8��:���O���'|&2Fk��x9�~[�����~����}�,������������%�e�7�Wq����T�)`��'a<�9��qk����%T{��G_=}�+2��j�����m�s|������R���M�C�C�/�������/�'�_}�\Z�$�>������0���L���>��6�����[��s�[������~i����
O|�_
+�xN�h���O<�<,>�u!����Ol�V����-��[�O����`s��6l����O��i/���(c���:��	_�`����N��.�/�<�On�����I��������>6�N�\W[(~����1���u���8�o�K�����~�|�{(0w��O=kA���5G�P.��������@�9��;��?u�������s��7��~��:�W��Pgy[�Z��(}�Jm�qZo����S@�K���o�����v�?���`�� W|)���"G�}B�9��El�.����0���kNN�k����o��N����/��6>>i#c�Z�'���[�L��o~���O��3�[������|n���o����a��x��v)t�1�.�\�%�tu�!�r�`���XP����u!�C�!�g[_��Gd�%�?����C���'�Y�O��7�Rg�1w�n��U?���!�:<��cI9�3.y�A�iP�%{�vmd|mlC�K��������������������N=Y�)�!Z6�G�7����A�=��LA���g?�U��^��������R�%Od�������>?��������|��������K@�����w^r���8����y������������3��&�5C�����W��$wM�Cn�c��?����wl�a��8����w��>���Gnx��?5<����������R�@�pb��������n��������.h��scF�����3/�#S�4�O0����?ui��]��L���6���n
�����J�������y8O�[�-k-<�����gN���RG�s��[�����|���	�f,��<�����2��H���5��������n��k�2�ZWS}���H���|���<c��1��F>��}�d
z9��|���~
��90�@��1u����k���-s���J�o$o*�}(}��.�\���.�������_�\S�2?���5��g1�]�Z������*�����g�?��������?��Fa����p���	tQ��L�k�8�"w"+��,:r".y	�����v�]��6}��7� ��~�]u�7h��j�`�i��`Vb�/�>��G��y�^^K.�j�Wg�>��]G��xr|��?��'�>r}*7g�_�7������z>r�k���6���hf|-`#u�9�x��[��J��U�%���IW��=�Xio
���~k�e�'������9�_�P|��v������\�g�vu-�Y_�������L�O}�k��DG;������oK��O��k����o~���J��]��{��������]������4|��q�/�cA����x����&�����m'=D���o����E�`�3'urq&?��������D�g[8�'v�jW�K �v��o^���������r}[�D����}�!sD��\����v�O�O�o��������>�J}�'�����L���
�''�e�������q�������j��mOz}�9��������
���j>��3����o��#f��F��lW{��{�������<������g�8�a�rL�u�����|(����_��O����5Q����US�k
�Y��d�z�����o����;�>1��=�t���}�|q��|�(�|)��!����b�C���2�N��-Z�y�N��>~�����j��l?y��A?�G��d�a���S=����y2���������(��`ik��/?��\������M-�������'�/���>��l��S-6��
��3.~h����_
��6z��������]��Wy��Wcd.�������e��e}?�"�j���g>�k__����7s�:f�����+s�Y�_���'?�u����nW�D�1��Z��~[|h���_��\����������6ml2�4���tn���R���%9m�U�q�������8��6P7���A~����U/��}���?������xa�7���Q�/��\��\�'|������$]����E�u��
�E\Q�V/�_��M�6��c,p���?7�Zc�{1$��Vc�7?��_e�:����r�c�fI>l"����z�,�UG�/���������M|Pu2���k��g��.����:�K�]1U�|F�_k�<s�.�%��u-��c4���r�'�������?<r�o
���J��K����S5N?u����G����I���.p/0'����l���;�`���mb�7�?�C
�!W�l;6c���6:�������^Z���Xs���$�a����u������t�C�7���Ck���k,6X�X�Xt~����<u�������o�]����.z���|��S��+����iC������D�������U`�=��O-'�?|)|���5j�	�����Tl+��u�sC�����:-y2��-r�\�?eI�[�>��n�W������E��B��]`��9Rd����[gkK��3/���;���
O�M���^_A���26�Y�����qXG������Z�l[�����������6�i����\;u��6�j�o��mxK�z�8��1��f�����=��Uk���?�>|6�������|�	c&�7���m��Z��_�6|�vU����������M����n�h�o~�'Ga�
'����@.�������^P����(�o=}��Q���f�������/����]��Mk^R���x���>sK���T��F�&�f�f�f�������V���\k�y)��L>8_�~�%����p������
}fc�7^�M�D�Y����Tz�������M���B_Im����clSs�NB��������v������|n+��>cd-{u��W�5N�_ k��;�I�_��v�G��u��W�������6����U.�o~���o����G����.�����_�B&���A]p�}g*V]@��"��vkCHy�);�Ps�/U���Q��A�����Z���������,c���;�����M?1e[y��g�6�Uo��i������9������g,�2u�@/u��s}��V�����G������j����j3���5����b�����*�����^cb�Ky�O��-��2�L�����.����g��O��[�
sI�xB��1d>K]m�����B������g���m����g�1|���O��K!hM:����c�e[��5�Y�/�\x�L=�?�K�3ci_���������n�Q�Z~��/�5g������@SF�~���k�'���<��|���n*��C[:���qZ?�S?��}����}�GE�0n�Ck}ZSP��'iO�Z�V�U�����������W}�]K/uS�������I�Q����hW_��_�W9HI�����^�lkW��~���4��\�g���>��^��s���k����=�[�m�Z�W5���?5�������w��s�s������;��@R�:}S(ra1��Iw��BX�\0�+����9�+_*�n:�k?���q��*��+o��5h��>m�!+o.�V{NF����'Z����oh�Ty�����}+N��*��������u)�b�`{�/2��5_�����l��Wy���Z��%�o*���w��~���,����B�*O�V���x�+m!eU��cn�������5L�^�%?�P����z����Gy��sQu*Z�9�Wo{���|��������y~x�����7��(��G�k�R����(@]�������>��S�N�a��1-�oA�_�:U���������9y���d��5����]y��#����������~���������-��*�fl�T����u����R�*E�s��::::�K��/���[��p��/�n/��|��)���90<4����(
�%Q�/���|t�s� �[\��K�������v������!N�?t	�W��U����\�a�F�,�I���jCe|@��U}�~[y��K��'�_��������P'����O���u�Z��v������q�����q�'C|f���g�o?V9 �qq��������|�������;{q����uo�O������{�x���I(�0�.�<�<��Smm�7��s�%k���e�-.����I�Kr������W��K����������~�������e��?�5�����Zc�.�/��7���=W����"77n�.~x.�!�y�����>��L^}�;:::�;�z�+���������������'.������p�w
�C�~f���������&_}��H���0ll�[�h����z8W������z�%�$_�����7I�<�[:5���s`{�b�������i/�����l�#c����d��W;u��u���s��t3Gt������>���%S�9M�������Bp�����Tl����Pxppx��@�8@�y�(��ED�:��FB[d�1�9+�P�<T������x��o���5ru���^#�-�w����W�@f���1�K���|y�U�y�xs���:����9���a��%�����S{���Y�U[(o	y�2�?	b��G���o����bO�V
::::�y�����/O<7�}��s)�C����S/kyX�7�y���P�v��H>��O������/o	�9����OI��I+��V��<�����D�<�����������\��?i���m�,������Z�q���V3c�~��r��m��Tv9^@�>��,�������SGGG�u��.}}����R8@y`��~�@��A=��b����m����m|�}����������8���Zs�����u���/2u�gm������!v��6Y;��������"C��������w�u��1j�)�����������[�_����>�;��o�_���sbL������G�j���o�P�rM����8��������������5�y�K�Ka���}\�?={@�B!�~D�A"/����C�����T�����r�:0�-�_��}��K^,��>�K��=l����N��l�W�O��k{M��������x-�����}��M����R�|x�T�����O���cU��,/m���9h#%~>?�xR���{}�� �����q]��xS����)|����}�M���E��z�������$����k�Z��~���p������!J����~^�S����l����|���m���/�� ����H�?7>/(�c�zI�_�h�T_��m�M�m��H���$m�g�5�l/����2�kG�d`�xh����qC�S�����������R�����������9y�.<<�a���!������
�������
����k_�������d�)���9{m�^��
x�����rk	E�O�����x��eA��]3�������cFur��k]&��f������S�����N��:��D96���������������������rx �\�,e"��M.���]��
����������q���K_���p�p���A���W����<��	��ECW~mk����}	������{`f�9����F�\=����5ab�G������/�����g��%r|9g)�8��?�{��K���������/r@�n��7���m7zS1h��?c������\�k������uF����$��rb��D$�����n��>���_
�������r ��0�6 #�A'�u@+�W�5�Zd�P���2bq����&����U.��8/�7�^��W���S��y��	���r���/m���K�]�S��_�w�g,���zI���������>D�R������Y��L�]����kJ[s��e\���������A������@�m�`����h����>>��_�������T?~�������:�|�i|c�f<������i����%��h���K)����,�__�
��An��C�Z�������x�OLu��	>������x��/�(�N�}}��xU�����#�!�9��N}���Z��>|�n]Z��'e>��v�uttt\w8��� ��G�-����S��J��A�*`(�6�����||����K�j�S��x��,��@N0/�[���&��<�W~�c'?|;�|����W�N�t��2&��'_r���/0U����������3�\�)�yQ7k�^�i{�JY����J�5tM�����r���0�9!b8?�����	�6G�T��,v�^�C�C"��&S��n=�R�p�vK����:�l�G���c�/@�����_���|��%O��+����W����O{����&~���|�~��y�����]}�NB~�H�G���-�>j�Yt�b�[}��|Pk����q]�_
i�@�����^�[}PC�-�%��T�������VK�->m����T��i���U���n�������L����|'?ml��<�^���m^���~��|)��K����]}���L�U����������q]�_
;::::::::����������������������c�Q/�������������A�vtttttttt�KaGGGGGGGGG�vtttttttt��\
/}�_
;:::::::�g����KaGGGGGGG�u�~)����������wtttttttt�/�ttttttttt�������������#_
�:::::::::N4v�vtttttttt\#������������n�����'��>�����K���/~�^
O�����\��x��>}YO�:u�������H�z�xg���i���={v_��I>t*��*��� Gu��,]����������[m�y���(s�������1�r)|�#_�~�����n�3����g=�Go
�0�j#�~��}�/���9y�[�G���@�=y�K�M��%�0h�����B��iO��/�KH��K���S����mGGGGGG�1����6�����>4l>>~����C?���o
��=��E�����WhnxPzy�����b�G��p��|<~P�|�9|+�o,i���/s�5A��<������9�r��/�����f>���V��s���g~;��)����w=����������\
O����\�������������0��-�����9��E��\E����y�i����2�x�1�V��@��<�U�����|	�Z<�"K�R�;::::::�	�>��p���9����6o
/}f~����Q��������/k���@W&=�c
�O�c�k{����/�PG��T�����9,�o���R7}�q��a�N�V}��O]h��f��j�������q�E�����p���p�c/y����9���.\�0\8�p~�SgNgO��\
[������u���q������z��;w����e��K���q'�7:���!�7��^�����s�=������A��'um�O�C�����B�M������f�Y7���������|a��1_4����u?�s����6*���l�V����Sx:��I9��T�C����;p)�>��p�����f��{�;,��za��:����y���"��?u����N�[���_�m���z����;��pm�����������yS����)|����p����Cy�&hsP����p����S��/�y����6�����8������Rc|x�_z��Z���:d�,��x��,���n}k��������c��9�M�T}�C[9O�6�����������w��[/~m��W���?^}���2�9�7��;?�c��E���^���/yA��B�A�B��<�i���B�e'/x���H�y	���D�K����`�����:���X�f��:�������h��[?�D�^�#h���������#�\
���b��E���o
�pp���7C�B�a�����\�������B!��[��,��^���������>��~������~3~����*�65��]�`��|���������j�9�������N������gGGGGGG������B��}���&�7������<�msp?��C�6��<�}�e�v�y���>|c�WOh�M!9���{�/������z1|��~��O�����������7d��	�c��EV��I[�t��<�����:�i��k�6?h�����lSc�@������WV|��35�5����@7m.\8�is�H���������{9�����~l��=%o��v���B����-u�6���o���7�t����������?g�)�C^����-m��X��������d����Z����������R����)<s���Y�=s�2�B���9��)R~��7�����r���^
�Zo��e��}�������j�<�
���1�6����$/by)��/���2��;u����e��7}�{�?/�`.?b�N���=}���qGGGGGG��X�z	��4�o��ps0���D�<��{l]
�cq�I{l��x)��v��������[������:���������@�_��X�
$O]s�W^����|�>���)�=<��>+x��>���������������������8&,]
=���v��]��e���������	=m/ �v��x���2����.e�� �H��UGY���7�Vb��
~w�`l;���M�:���
|�yi�-�9gu|��+�B������y�?�V|���=zi��;::::::������������s��6����T���~^�"�o��.����8�qJ��U>��UF���m���~��-����79V?����E�1����e�������^h����sO�������5����|���:::::::v����:�����K����|)������/�l�����a������V�z)��o��h ����yY�=�&�=�|��1��#��Nym��zc�~@��>�+���3��}��[�Xc?7>�T}��77?��h��*��?(�m��CGGGGGG�J,]
9\9d|�Ko���}�R(��%a���Z���C���S�2|qi�X�}�� &@��0h��4��
.u���e���@Nl���X��?x��G����$�����������hO�w��9{s�G_? ��_ g��Rw���
+yX����vttttttL`�R����/����7�|�X�V�=��`��0����n_^�\9��o���b��!}��|���B�O/�6^�WT���5��K>�/��5:K|xS�]��>uRN���s�E��b�:a.������������&���g��jx�B���^�����C^
[P�>�S��i�6���1�r�N���`>��Z���9i�T{�s���>�]��A��&w�����#@.����\�iC3��������K�B�����_�-����
��<�����F�W �I���Ko���V��<�O�����-?���T</JK������/����V�%�K���]e��|u������Dx��mGGGGGG���)���A=��K�o
=�[�w����k]^4���N{h^F�/��D��A_��^�RG:�)��+����\�)S?eUG��<m� ��%��Wy�������>s�<S6����������K������1<>>>{z<��?R�|�A-?/
�������=�O�o3>T~�����'i������&2_�������aoI.�����k��~��K���������6���K�;::::::�K�����)�@���a<��x��u��z@^��>����%[u����
�v��[�9����?��)��K��]��%���-�w��I���sT;��utttttt��������K��;���������8�������������U�~)���������������_
;:::::::�a�KaGGGGGGGGG�vttttttt\��a���{������IEND�B`�
#5Juan José Santamaría Flecha
juanjo.santamaria@gmail.com
In reply to: Tang, Haiying (#4)
1 attachment(s)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

Thanks for testing. I am opening a new item in the next commitfest for this
topic.

On Fri, Nov 15, 2019 at 5:23 AM Tang, Haiying <tanghy.fnst@cn.fujitsu.com>
wrote:

In order to make it work both things are needed, setting the console mode

and a terminal that supports it.

Your patch worked fine on windows which supports VT100. But the bug still
happened when set PG_COLOR="always" at Windows Terminal that not support
VT100. Please see the attached file “Test_result.png” for the NG result. (I
used win7 for this test)

To fix the above bug, I made some change to your patch. The new one works
fine on my win7(VT100 not support) and win10(VT100 support).

My understanding of the "always" logic is that it has to be enabled no
matter what, even if not supported in current output.

Also, in this new patch(v1), I added some doc change for Windows not

support Colorization. Please find the attached patch for so.

You cannot change the release notes, if anything it will be added to 12.2
patch notes. It should be added to the 21 (!) utilities that specify the
PG_COLOR usage, but I am not so sure that adding a note stating this
feature requires Windows 10 >= 1511 update is really a Postgres business.

Please find attached a version that supports older Mingw versions and SDKs.

Regards,

Juan José Santamaría Flecha

Attachments:

v2-0001-command-line-colorization-on-windows.patchapplication/octet-stream; name=v2-0001-command-line-colorization-on-windows.patchDownload
diff --git a/src/common/logging.c b/src/common/logging.c
index 895da71..6c82fb6 100644
--- a/src/common/logging.c
+++ b/src/common/logging.c
@@ -32,6 +32,36 @@ static const char *sgr_locus = NULL;
 #define ANSI_ESCAPE_FMT "\x1b[%sm"
 #define ANSI_ESCAPE_RESET "\x1b[0m"
 
+#ifdef WIN32
+
+#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
+#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
+#endif
+
+/*
+ * Check Windows support for VT100
+ */
+static bool
+enable_vt_mode()
+{
+	/* Check stderr */
+	HANDLE hOut = GetStdHandle(STD_ERROR_HANDLE);
+	DWORD dwMode = 0;
+
+	if (hOut == INVALID_HANDLE_VALUE)
+		return false;
+
+	if (!GetConsoleMode(hOut, &dwMode))
+		return false;
+
+	dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
+	if (!SetConsoleMode(hOut, dwMode))
+		return false;
+
+	return true;
+}
+#endif
+
 /*
  * This should be called before any output happens.
  */
@@ -49,8 +79,13 @@ pg_logging_init(const char *argv0)
 
 	if (pg_color_env)
 	{
+#ifdef WIN32
+		bool	is_terminal = enable_vt_mode();
+#else
+		bool	is_terminal = isatty(fileno(stderr));
+#endif
 		if (strcmp(pg_color_env, "always") == 0 ||
-			(strcmp(pg_color_env, "auto") == 0 && isatty(fileno(stderr))))
+			(strcmp(pg_color_env, "auto") == 0 && is_terminal))
 			log_color = true;
 	}
 
#6Michail Nikolaev
michail.nikolaev@gmail.com
In reply to: Juan José Santamaría Flecha (#5)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

Hello everyone.

Please find attached a version that supports older Mingw versions and SDKs.

I have checked the patch source code and it seems to be working. But a
few moments I want to mention:

I think it is not good idea to mix the logic of detecting the fact of
TTY with enabling of the VT100 mode. Yeah, it seems to be correct for
current case but a little confusing.
Maybe is it better to detect terminal using *isatty* and later call
*enable_vt_mode*?

Also, it seems like if GetConsoleMode returns
ENABLE_VIRTUAL_TERMINAL_PROCESSING flag already set - we could skip
SetConsoleMode call (not a big deal of course).

Thanks,
Michail.

#7Michail Nikolaev
michail.nikolaev@gmail.com
In reply to: Michail Nikolaev (#6)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

P.S.

Also, should we enable vt100 mode in case of PG_COLOR=always? I think yes.

#8Juan José Santamaría Flecha
juanjo.santamaria@gmail.com
In reply to: Michail Nikolaev (#6)
1 attachment(s)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

On Tue, Feb 18, 2020 at 11:39 PM Michail Nikolaev <
michail.nikolaev@gmail.com> wrote:

I have checked the patch source code and it seems to be working. But a
few moments I want to mention:

Thanks for looking into this.

I think it is not good idea to mix the logic of detecting the fact of
TTY with enabling of the VT100 mode. Yeah, it seems to be correct for
current case but a little confusing.
Maybe is it better to detect terminal using *isatty* and later call
*enable_vt_mode*?

Most of what enable_vt_mode() does is actually detecting the terminal, but
I can see why that is confusing without better comments.

Also, it seems like if GetConsoleMode returns
ENABLE_VIRTUAL_TERMINAL_PROCESSING flag already set - we could skip
SetConsoleMode call (not a big deal of course).

Agreed.

The patch about making color by default [1]https://commitfest.postgresql.org/27/2406/ introduces the
function terminal_supports_color(), that I think is relevant for this
issue. Please find attached a new version based on that idea.

Also, adding Peter to weight on this approach.

[1]: https://commitfest.postgresql.org/27/2406/

Regards,

Juan José Santamaría Flecha

Attachments:

v3-0001-command-line-colorization-on-windows.patchapplication/octet-stream; name=v3-0001-command-line-colorization-on-windows.patchDownload
diff --git a/src/common/logging.c b/src/common/logging.c
index c78ae79..8c0377f 100644
--- a/src/common/logging.c
+++ b/src/common/logging.c
@@ -32,6 +32,60 @@ static const char *sgr_locus = NULL;
 #define ANSI_ESCAPE_FMT "\x1b[%sm"
 #define ANSI_ESCAPE_RESET "\x1b[0m"
 
+#define str_starts_with(str, substr) (strncmp(str, substr, strlen(substr)) == 0)
+#define str_ends_with(str, substr) (strcmp(str + strlen(str) - strlen(substr), substr) == 0)
+#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
+#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
+#endif
+
+static bool
+terminal_supports_color(void)
+{
+#ifndef WIN32
+	const char *term_env = getenv("TERM");
+
+	if (!term_env)
+		return false;
+	else if (strcmp(term_env, "ansi") == 0)
+		return true;
+	else if (strcmp(term_env, "cygwin") == 0)
+		return true;
+	else if (strcmp(term_env, "linux") == 0)
+		return true;
+	else if (str_starts_with(term_env, "rxvt"))
+		return true;
+	else if (str_starts_with(term_env, "screen"))
+		return true;
+	else if (str_starts_with(term_env, "xterm"))
+		return true;
+	else if (str_starts_with(term_env, "vt100"))
+		return true;
+	else if (str_ends_with(term_env, "color"))
+		return true;
+	else
+		return false;
+#else
+/*
+ * Windows supports color on console's VT100 mode.
+ * It is disabled by default, so it must be enabled to use color outpout.
+ */
+	/* Check stderr */
+	HANDLE hOut = GetStdHandle(STD_ERROR_HANDLE);
+	DWORD dwMode = 0;
+
+	if (hOut == INVALID_HANDLE_VALUE)
+		return false;
+	if (!GetConsoleMode(hOut, &dwMode))
+		return false;
+	if (dwMode & ENABLE_VIRTUAL_TERMINAL_PROCESSING)
+		return true;
+	dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
+	if (!SetConsoleMode(hOut, dwMode))
+		return false;
+	return true;
+#endif
+}
+
 /*
  * This should be called before any output happens.
  */
@@ -40,6 +94,8 @@ pg_logging_init(const char *argv0)
 {
 	const char *pg_color_env = getenv("PG_COLOR");
 	bool		log_color = false;
+	bool		color_terminal = isatty(fileno(stderr)) &&
+								 terminal_supports_color();
 
 	/* usually the default, but not on Windows */
 	setvbuf(stderr, NULL, _IONBF, 0);
@@ -50,7 +106,7 @@ pg_logging_init(const char *argv0)
 	if (pg_color_env)
 	{
 		if (strcmp(pg_color_env, "always") == 0 ||
-			(strcmp(pg_color_env, "auto") == 0 && isatty(fileno(stderr))))
+			(strcmp(pg_color_env, "auto") == 0 && color_terminal))
 			log_color = true;
 	}
 
#9Michail Nikolaev
michail.nikolaev@gmail.com
In reply to: Juan José Santamaría Flecha (#8)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

Hello.

The patch about making color by default [1] introduces the function terminal_supports_color(), that I think is relevant for this issue. Please find attached a new version based on that idea.

I am not sure it is good idea to mix both patches because it adds some
confusion and makes it harder to merge each.
Maybe is it better to update current patch the way to reuse some
function later in [1]/messages/by-id/bbdcce43-bd2e-5599-641b-9b44b9e0add4@2ndquadrant.com?

Also, regarding comment

It is disabled by default, so it must be enabled to use color outpout.

It is not true for new terminal, for example. Maybe it is better to
rephrase it to something like: "Check if TV100 support if enabled and
attempt to enable if not".

[1]: /messages/by-id/bbdcce43-bd2e-5599-641b-9b44b9e0add4@2ndquadrant.com

#10Juan José Santamaría Flecha
juanjo.santamaria@gmail.com
In reply to: Michail Nikolaev (#9)
1 attachment(s)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

On Sat, Feb 22, 2020 at 9:09 PM Michail Nikolaev <michail.nikolaev@gmail.com>
wrote:

I am not sure it is good idea to mix both patches because it adds some
confusion and makes it harder to merge each.
Maybe is it better to update current patch the way to reuse some
function later in [1]?

The patch was originaly reported for Windows, but looking into Peter's
patch, I think this issue affects other systems unless we use stricter
logic to detect a colorable terminal when using the "auto" option.
Probably, the way to go is leaving this patch as WIN32 only and thinking
about a future patch.

Also, regarding comment

It is disabled by default, so it must be enabled to use color outpout.

It is not true for new terminal, for example. Maybe it is better to
rephrase it to something like: "Check if TV100 support if enabled and
attempt to enable if not".

The logic I have seen on new terminals is that VT100 is supported but
disabled. Would you find clearer? "Attempt to enable VT100 sequence
processing. If it is not possible consider it as unsupported."

Please find attached a patch addressing these comments.

Regards,

Juan José Santamaría Flecha

Attachments:

v4-0001-command-line-colorization-on-windows.patchapplication/octet-stream; name=v4-0001-command-line-colorization-on-windows.patchDownload
diff --git a/src/common/logging.c b/src/common/logging.c
index c78ae79..d59ec88 100644
--- a/src/common/logging.c
+++ b/src/common/logging.c
@@ -32,6 +32,35 @@ static const char *sgr_locus = NULL;
 #define ANSI_ESCAPE_FMT "\x1b[%sm"
 #define ANSI_ESCAPE_RESET "\x1b[0m"
 
+#ifdef WIN32
+#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
+#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
+#endif
+
+/*
+ * Attempt to enable VT100 sequence processing.
+ * If it is not possible consider it as unsupported.
+ */
+static bool
+enable_vt_processing(void)
+{
+	/* Check stderr */
+	HANDLE hOut = GetStdHandle(STD_ERROR_HANDLE);
+	DWORD dwMode = 0;
+
+	if (hOut == INVALID_HANDLE_VALUE)
+		return false;
+	if (!GetConsoleMode(hOut, &dwMode))
+		return false;
+	if (dwMode & ENABLE_VIRTUAL_TERMINAL_PROCESSING)
+		return true;
+	dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
+	if (!SetConsoleMode(hOut, dwMode))
+		return false;
+	return true;
+}
+#endif	/* WIN32 */
+
 /*
  * This should be called before any output happens.
  */
@@ -40,6 +69,10 @@ pg_logging_init(const char *argv0)
 {
 	const char *pg_color_env = getenv("PG_COLOR");
 	bool		log_color = false;
+	bool		color_terminal = isatty(fileno(stderr));
+#ifdef WIN32
+	color_terminal = color_terminal && enable_vt_processing();
+#endif
 
 	/* usually the default, but not on Windows */
 	setvbuf(stderr, NULL, _IONBF, 0);
@@ -50,7 +83,7 @@ pg_logging_init(const char *argv0)
 	if (pg_color_env)
 	{
 		if (strcmp(pg_color_env, "always") == 0 ||
-			(strcmp(pg_color_env, "auto") == 0 && isatty(fileno(stderr))))
+			(strcmp(pg_color_env, "auto") == 0 && color_terminal))
 			log_color = true;
 	}
 
#11Michail Nikolaev
michail.nikolaev@gmail.com
In reply to: Juan José Santamaría Flecha (#10)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

Hello.

Looks totally fine to me now.

So, I need to mark it as "ready to commiter", right?

#12Juan José Santamaría Flecha
juanjo.santamaria@gmail.com
In reply to: Michail Nikolaev (#11)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

On Wed, Feb 26, 2020 at 11:48 AM Michail Nikolaev <
michail.nikolaev@gmail.com> wrote:

Looks totally fine to me now.

So, I need to mark it as "ready to commiter", right?

Yes, that's right. Thanks for reviewing it.

Regards

#13Michael Paquier
michael@paquier.xyz
In reply to: Juan José Santamaría Flecha (#10)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

On Mon, Feb 24, 2020 at 06:56:05PM +0100, Juan José Santamaría Flecha wrote:

The patch was originaly reported for Windows, but looking into Peter's
patch, I think this issue affects other systems unless we use stricter
logic to detect a colorable terminal when using the "auto" option.
Probably, the way to go is leaving this patch as WIN32 only and thinking
about a future patch.

It is better to not mix issues. You can actually bump on similar
coloring issues depending on your configuration, with OSX or even
Linux.

The logic I have seen on new terminals is that VT100 is supported but
disabled. Would you find clearer? "Attempt to enable VT100 sequence
processing. If it is not possible consider it as unsupported."

Please find attached a patch addressing these comments.

I was reading the thread for the first time, and got surprised first
with the argument about "always" which gives the possibility to print
incorrect characters even if the environment does not allow coloring.
However, after looking at logging.c, the answer is pretty clear what
always is about as it enforces colorization, so this patch looks
correct to me.

On top of that, and that's a separate issue, I have noticed that we
have exactly zero documentation about PG_COLORS (the plural flavor,
not the singular), but we have code for it in common/logging.c..

Anyway, committed down to 12, after tweaking a few things.
--
Michael

#14Juan José Santamaría Flecha
juanjo.santamaria@gmail.com
In reply to: Michael Paquier (#13)
Re: BUG #16108: Colorization to the output of command-line has unproperly behaviors at Windows platform

On Mon, Mar 2, 2020 at 7:48 AM Michael Paquier <michael@paquier.xyz> wrote:

On top of that, and that's a separate issue, I have noticed that we
have exactly zero documentation about PG_COLORS (the plural flavor,
not the singular), but we have code for it in common/logging.c..

Yeah, there is nothing about it prior to [1]/messages/by-id/bbdcce43-bd2e-5599-641b-9b44b9e0add4@2ndquadrant.com. So, this conversation will
have to be carried over there.

Anyway, committed down to 12, after tweaking a few things.

Thank you.

[1]: /messages/by-id/bbdcce43-bd2e-5599-641b-9b44b9e0add4@2ndquadrant.com
/messages/by-id/bbdcce43-bd2e-5599-641b-9b44b9e0add4@2ndquadrant.com

Regards,

Juan José Santamaría Flecha