Memory leak in WAL sender with pgoutput (v10~)
Hi all,
This is a follow-up of ea792bfd93ab and this thread where I've noticed
that some memory was still leaking when running sysbench with a
logical replication setup:
/messages/by-id/Zz7SRcBXxhOYngOr@paquier.xyz
Reproducing the problem is quite simple, and can be done with the
following steps (please adapt, like previous thread):
1) Initialize a primary and set up some empty tables:
NUM_TABLES=500
PRIMARY_PORT=5432
STANDBY_PORT=5433
sysbench oltp_read_only --db-driver=pgsql \
--pgsql-port=$PRIMARY_PORT \
--pgsql-db=postgres \
--pgsql-user=postgres \
--pgsql-host=/tmp \
--tables=$NUM_TABLES --table_size=0 \
--report-interval=1 \
--threads=1 prepare
2) Create a standby, promote it:
STANDBY_DATA=/define/your/standby/path/
pg_basebackup --checkpoint=fast -D $STANDBY_DATA -p $PRIMARY_PORT -h /tmp/ -R
echo "port = $STANDBY_PORT" >> $STANDBY_DATA/postgresql.conf
pg_ctl -D $STANDBY_DATA start
pg_ctl -D $STANDBY_DATA promote
3) Publication and subscription
psql -p $PRIMARY_PORT -c "CREATE PUBLICATION pub1 FOR ALL TABLES;"
psql -p $STANDBY_PORT -c "CREATE SUBSCRIPTION sub1 CONNECTION
'port=$PRIMARY_PORT user=postgres dbname=postgres PUBLICATION pub1 WITH
(enabled, create_slot, slot_name='pub1_to_sub1', copy_data=false);"
4) Run sysbench:
sysbench oltp_write_only --db-driver=pgsql \
--pgsql-port=$PRIMARY_PORT \
--pgsql-db=postgres \
--pgsql-user=postgres \
--pgsql-host=/tmp \
--tables=$NUM_TABLES --table_size=100 \
--report-interval=1 \
--threads=$NUM_THREADS run \
--time=5000
With that, I've mentioned internally that there was an extra leak and
left the problem lying aside for a few days before being able to come
back to it. In-between, Jeff Davis has done a review of the code to
note that we leak memory in the CacheMemoryContext, due to the
list_free_deep() done in get_rel_sync_entry() that misses the fact
that the publication name is pstrdup()'d in GetPublication(), but
list_free_deep() does not know that so the memory of the strdupped
publication names stays around. That's wrong.
Back to today, I've done more benchmarking using the above steps and
logged periodic memory samples of the WAL sender with
pg_log_backend_memory_contexts() (100s, 50 points), and analyzed the
evolution of the whole thing. "Grand Total" used memory keeps
increasing due to one memory context: CacheMemoryContext. So yes,
Jeff has spotted what looks like the only leak we have.
Attached is a graph that shows the evolution of memory between HEAD
and a patched version for the used memory of CacheMemoryContext
(ylabel is in bytes, could not get that right as my gnuplot skills are
bad).
One thing to note in this case is that I've made the leak more
noticeable with this tweak to force the publication to be reset each
time with go through get_rel_sync_entry(), or memory takes much longer
to pile up. That does not change the problem, speeds up the detection
by a large factor:
--- a/src/backend/replication/pgoutput/pgoutput.c
+++ b/src/backend/replication/pgoutput/pgoutput.c
@@ -2061,12 +2061,13 @@ get_rel_sync_entry(PGOutputData *data, Relation relation)
List *rel_publications = NIL;
/* Reload publications if needed before use. */
- if (!publications_valid)
+ elog(WARNING, "forcing reload publications");
{
oldctx = MemoryContextSwitchTo(CacheMemoryContext);
if (data->publications)
{
list_free_deep(data->publications);
This problem exists since the introduction of logical replication,
down to v10. It would be sad to have an extra loop on publications to
free explicitely the publication names, and the issue would still be
hidden to the existing callers of GetPublication(), so I'd suggest to
change the Publication structure to use a NAMEDATALEN string to force
the free to happen, as in the attached.
That means an ABI break. I've looked around and did not notice any
out-of-core code relying on sizeof(Publication). That does not mean
that nothing would break, of course, but the odds should be pretty
good as this is a rather internal structure. One way would be to just
fix that on HEAD and call it a day, but I'm aware of heavy logirep
users whose workloads would be able to see memory bloating because
they maintain WAL senders around.
Thoughts or comments?
--
Michael
Attachments:
memused_vs_time.pngimage/pngDownload
�PNG
IHDR � � ��K� pHYs � ��+ IDATx���{@S��?� WC�_����x�:�����:D���V�v��ZK;t�o):�Uf�iK��*����,��oW�"�ET�P�Dn�\B �?N�1 ����<������������y>�b�V� �S �P� L`x����
6���������{�� ���*��D.��d���������<S' �a�b�����c�Ht����S��: w�h���okk�� 40Rnkk
�����h�"���?��?z�����y�fKK�����zi���AAAvvv'NLMMe������n��- @,���k�
�3�q�L|||UU�H$��U�B�|�r�D�Y����{���__�t���3�����?�H$���s��MOO����D.T�TR�t���{������3g��I��-[6�� ��1
pAA����������~WP(s��
a�����={�DDD����zi��=[�n��q#!d���7n���{����B�����U�!b�x��(� `�OAwuuEEE������i[����������?��������yz��UKK���OB��_��-%%%2�,,,L���_���nnnV*�����r�Jemm=�O �����
����r_
�";;��'�9r���������.B�����i�&BHWW��-[�/_�{�*�J !����%������R����-<<\"�tuu��w/---<<|p>$ �����.//�������lllt�***$���zzz\\!���#!$))i��I)))J�������K���B� ��O3������������B�p������� ��[�7m��d����^�j�����!!!r�<!!!66������+!!A"��T��>�����������...g��1t ���)�S�Negg�����7���w��e��\������d���e�njj�,ak; �$x_�tI.��:����"11��7���F��j���z{{wtt��������q�!R�Ts����wA``���-,,} U�~�H��}�v���y���������#
{����USS���iii�,�t������ !��������������/�}�R@@@``���g�{�9f�W_}��3��9��G��:��^C��l�#���q@m0B}�A�&�������Y�T(
��;��������)��&L��e�����9rd��=VVV������+W�|��g !K�.���������*))iii!�twwWTT���B������bcc_{������s��={�����}L .���������y*�H�8++��_�D���&L8x� �<>>^$���1O����������j��9s�~���2f���$kk�)S�|����s�
�8�6���B6�
�~������!�f(j�d�
�8����������o��Fff���7�e�������jF ���
F��+d���`��l|@ 0`�t��1SG���l�#���
��#v�����5j��E����B���v��9v�X������{���|���=<<�������!�K���.���������`�c�P� ����4�R��w��={���k��������}��}��eeeqqq����?f���i��?����!�J����l�r��9��5k���};333''���]����'z;�&G�� $�G�}�������o����7�xzz�������Y�y�����{������1c/^�������������6l`^
���7� ,�� , 4=���D
w��mii�7o�f���s�R��������W.�B��� !�����f���_�!�,��^�6���q�ldoo�y<b�BHMM
!d��y��r�JBSh�_���K/������YYYeee1�e.������Z�+B��� �������3g���\(666�����<�Lff����mll�|�I�U��*�J��
z��!����n���)���=� ���k��:�V�f�6A6��m������{����o������g���� BHcc���������������\����+++K�=�(��&�)h �������������������_�����7b���'O���^�re�����O/++#��3����������oo������[[[����`�Ds{��l�#����!!!a��M�������U����C HLL<r�����������%Iqq���S !'N�7n\XX���������Y���a��B;LA G���=����w����KK��;wjNC���7�x��7z.illd�3����=_z��w9���S]��y� ��y� C
�Y���Dm6j�d�
��!�q hC� �V�b���A�6�V� l�����;%%E�jb�x��u�v�2N*�C �5j��~���o����9�W��U}}=�~����{���#G����((( �tvvn�������S����j6���
A`�Ds{��l�#���J $&&
��������������_'��3���>{����W���O�6�}�����m��u���.\`6���
A� 0\�1����9C7 :::>>���Us[_B�o�����/Z����j���������������.\����o~��E"�{��G
���1��37�%�/3Km6j�d�
�8�;w������U*��?��k�}{),,����>}z�[�{s���;�� #=o���������v��M{�{sC�
S�f���c��Mm6j�d�
�8P(��---��������~�3�s����Z���v8P�O0��� `����<.,,���}������lmm��w����?xJ�� a��,���5��l�#���qPVV�w��|��������/
�v�AB�P(����s�Ncc��Q���Y���p���;w�;vl����}��I?�� `y���d2Yppp{{{XX���G������|��3g�<p�@]]���+�N�z����[��Y���g�9q�Dhh�������l��P(F��j�*S&��-h�9G�5u���Fm05�q�l�ruu��{��S�%>*�� L �;�
���!���-::��������>*j�V(� ����'t^f�Am6j�d�
�8�6�;P� L ��Za
�� "P����j�Q� W�������� `hsj�0 0� "P����j�Q� W�������� `hsj�0 0� "�Wnkk��a�������{��g�8���)�6���q�lP������ K$�\.�����������L� L�$Uq����_t�9?~,��]�6u�T6�� 0�)kU2{O��}u��GE��h���okk��� ���� �O����+u0�W7�t[[[PP�X,������7o����������dgg7q����TfaMM�����m��b��]�8|J��)�6���q�lP�7[}a��i��Z��� &���h8>>���j�V#�\�~}��I2�L �=�����%ILLLNNNTTTdd��!*�J*�N�>���4+++))����> ���m5�#d���O��4e5�������}}}����#��W��������=_�����}����������V�322���4����_�u_�8; ��"�����{�F>*�#���������???CW�������
��W�^���d��������������L�Y���/fgg777+����Vf�J������ 3��F��W�rA��WSg!�S�P(���j���jXX��M�!]]][�lY�|��e�tlG*�B���5K�������R���[xx�D"����w�^ZZZxx8�fR��p@m0�l\!�#|f{��v��H��8���������Q^^��W_���p[-))i��I)))J�������K���B� �899i�0������������B�p������> ��[�nn���b� }��vOaaa�W�f'&&jk��^-99���]$�<y��{{��?��SB�B��,),,$�|��7���{� ���z�m���o��������S����o��j+W�|�����%K�~Q�HDijj5j����I� ���Y����'GQ����|��%�\����s���Ebb��o��~���Xoo������8�p7n!D*�jN&�{��@ ��,,,4��=�v�Z��.��cM{��<��l&y�3
yx��0�-mV�}���Q����u��^
��Z���A�C\\����L&kiia�ZNN�@ ����t��@ �����U����y�x�����s������G��:�V�f�6���B6�
��lE���
���4����1����D �^���#88x��5��+Vwtt�����������kk���~�y��t��qkk��������3��C`�0 �k�����Q������/�������eee{��!��[�n��Y�f������o����VDD�����7{��������g�}�� �"mV�[���O�M���G+���t��1�QA!j�Q� W������l�ZU~�</A�{+r�B�x���! �0S_��� �Lo��J���@� ��h y��[������1��#��
�0 }%������`�6WS�+��>���3G!j�Q� W����!���K��xW^n M�]��7��/� (��.�-F�rA =�K���Z� `4_����S��G�:H����� ���!����`�Dy���Gm0�l\!t�zE�/��tf�
0 �S}M�����
=` �I�����M�`>*j�V(� |;dQd���AX��;%�f�6A6�������|�*�� � �#�{�,�V�� `������UO�����f}s�|f`
��0�-mV������)m�����T����#�{B6K4wJ��Fm0�l\!�,sc������{�'�����z�\Xy���4i���~��m�����` �����CEn!�+r�B�4��=/�
M���+?�������1�e���z� �z�����*�;f��C���+15��l�����b��k>k����
����Uu�m�}��s��[I�"k[����l;���F_8~Bs���l�#���q�-��Zu�p��E���9�5>B��f���@��3�;�'���� ����������5�Vu�]�4y�h��1��6#���J�fY��4 Oe����5�?�4���/�q�"G���Cz�F� �M^�<k[�_���"������0K����'4wJ��Fm0�l\!����*R<��jU��S�39Jd��K�N� �� �4g
�\��)��YV�0
C[}a���B�� �.����C5>*�� v����m5����<����3L�l�h��P���`��B6�;�����4�8����@��/�;�' �7�l��+X_3��Y =`���!�����_� ��8\�� =`�Ds���l�#��������������0 ���s���b�,�?�9�B ���.E zp�c
�Y��SBm6j�d�
���r��K���%��v=P� ������[������� +hsj�0 ���g����!��S�p?`�B s�^������Md��AX��;%�f�6A6��M���?.���fM�4z� ��o6<���U8���A�0�e�
S� @�;G��(�����A�8\ �CQ����U�A�\�)����
6���������{�����j�Q� WC2��w�Ye��U^n��2��������0�
�D"���2�,;;;999//��� ~��^��lVO�:����xgm��/l�w��/��?�k�bi��0X�Q�����"����kS�Ne�>z� `������{b���8�������TEI��2>B8>Bh��S�������'��i�����~�!,,������(� �7m�����v�����:�[_�]���
�|��0����������bq��������;c�����
��kWWW��m677o�����r����^��PP������SSS��555�����m���v���2!�;%�f�6A6��:[� g����l��^��5fls����\���`&Ds6>�(������*������[�������o�� �]������@^�~}���3g�z��?�X"�$&&��;7===22R$-\�P�RI�����������r��9�&MZ�l��}H vY=�����z���P�����
�M����|���h__���644����8qB�d��������y��������j[[�����/���n���������V�322���4����_�u_�8; ������#�����OAwuuEEE�����������smm�����Y���"
!�����UAA���������O�&��_�>""���JJJd2YXX�f��/��������T*[[[��*����zp>$ ;�,�8|aH�� 8p@�PH$�k�;wn����}�����Oy��W���6m�D�����e����uOK�RB����#������R����-<<\"�tuu��w/---<<|��Dh��P���`��2�l4T_��iC�=������������F�EJ�o��������'�d&%%M�4)%%E�TVTT\�tI�F
!���I��y�,ONN���tuu
�;v�
��� BC����vOaaa�W�f'&&���I�T�?���u��M��������"�����}�������B
�fIaa!!��o�14<�; ��}���)�S�Negg�����[���.\�c�������Ff���+��� !K�,���@���&����� ���/���)�K�.��rw��:����"11��7���������Y�������1ccc���;::����^�y��q��T�9������ 00��G����<>z����k���xlv�5�%J� �0���.d�z���h��GC���[���j���
����<==e2YKKK�����;BHFF�f��;A{{�Z��������.]999��J������5O/^<�|�y�9t��QSG���l�S#W�g�p����F'>*������������J��;�����������5g��\�������_�vM"����k�������5k�����F^~�������++������B�SO=�e���+WB������RSS_{��}����;��������>����q)J ����
���=v{�������yJ����---/^��}�������GK$����B��}�L��������8a��={����s��u��]c������4����3&""B�T~��o����q����8T_ ����}���=�n�z��V�V�R���5*�q}a����V��z��z��y��<QCm6j����+#g�6���i]������7j�����GE^� �����CEn!�+r�B�L��9�B 4s��>�6u0��� �S�������>�����)h��9g�B�f�6A6�����V�:�paQ� ����o�#tg�F� �an[������[�:�.r��Q���S��!mN�����7��k��i���_���E��m�~�QPc�B�*/��]P�����q�"'{/L�.|T�����j�Q� W��em���+��������Q">�/����`��l|@�aDY�:9Mj�!X��g�,0�a�U+LA1%���m5���\�mM��� �(c����f��� �S�f��N ���
F��+����S<���/��;�����`��l|� ���yI����@{������z� ����2�i�O��4u0{� ��0�����[����CL���%�;%�f�6A6��f�u�!mV����Bl7�����R���
F�������i����D�y��9�B�~�7�:�H��<9Jd�80d�Z�F�@3e�*��xr�hr�3���7\~Bs���l�#�f����S��Gs�y��D IDAT�:�L�~##tg�
0 ����-�#d���;��j�)h
��*JR����a-/A^_���C�����j�Q� ;Y�j�jU=��LO����Fm0Bw6>� ��X#�����0����z� �8��l|�p|���A`�B �����O'x���0�`
�,��)�6���p�v���CE)��i�J/,*��X�Ww�pC�����m�j!$��84�W[���m��
F���������[�W��N���)�jUkUgk����SY�z��^v�Y�t}����*�9�B`�iJ��8wSg0 .E ���pV��f�T_ �l�h��P���`d�g������j����� ��!�"��k� �A�S+��������/��i�[�A� ������VQ}�A6K4wJ��Fm02���L���������i��7#�6�;��A�H��W���8S���Z����\���7�Vdi� �=` �����>�E���,��)�6����v��:��vc~��_����~3&j����=` ��h���-��S0hsj�0���
��f��?�S����>���~�q�z�����a�777���{��q ��0�-mV������)j59dQt��:�����?-�0�
�D"���2�,;;;999//���8��SBm6j���en��vc�s�x������c���u����e���GZ9'm��'j�Q������ ?~�899y���666>>>���3f�0u( ��:�p���-�vEN�[�]�J[.�K���r�*�����a�����������Y��0+s���X�b7�o�+g��]�nv���_:���*L>��g�=������ �X�������v�
9r�������?��fss����---������������M�8155�YXSS����m���� �X�k���|"�����3��5�a�~83R��������jtt�| �H�����_}���~���
^�~}��I2�L �}&��,�Hbbbrrr���"##/\�@Q�TR�t������YYYIII�O��G3 �;%�f�61u6ms���2�g4=�=���`��l|0F.((8x�`TTT��vvv~���;v���a��3�z���K��8qB�6������s���#z�={�l��u����'O~���^y����wB�B�����U�!b�x����� ������ ��D�0��y�R�f����������-111��'N���������#F|��=W���MLL�<-..&�dffj�|���#F�hjj���---��-[�l��UG#� �:1�n��vS� 0|T�G�P(���[�����s�B^}�����M�6B����l��|��e���x�T*%����k����wwwK�R77���p�D���u��������p��
��}���gy�&��:�0�o.//�������ll�������}�vll,�4))����)))III��v�BAqrr�,a3����+**\]],X�c����P�4wJ��Fm0b�l_����I�3o��5����6���������7m��d�������������O�81q�O����JHH�H$*����>rss34Cww�������3g�����|����(S�}R[�������uuu�S�=��[�����?��r�R���$����iV��_�x�RQQ�Y����B4�d�x�9 ��W���ZS� 03|T��/]�$�����-,,,,,���e2���E��v !���o�?����p��^/���z{{����8�_t��q���`���wA`` ��`��fn���cx��f����e����P������=K ����t���Yqqq���2�Ls�FZZ���uVVV���������K�. ����^+���������h������?�C~^w� =z����6�����v/Mq�����o�o�P���`j���Qx�;;;;;;k�
�B�@����<}��w:;;?~�}���K�Z[[���j��>}zwwwdd���+�}�YB���K###srr���JJJZZZ!����������bcc_{������s��={����8��0���~��~��.r��������Zoj�U�X#� ���k��,�H�Z�����7XMMM||�H$�t�����������j��9s������Y3))������z��)_~�%����9 ��(O�H��z�V���k�6���;�B�?����Q�\��V��IwM`(��"�~Z�f@���Uu�m�}�����s���7�?��Z�9v���"G���}>YY7�TQ� 3�.���6�����t�1��b��N�9/�����������q��q@m0Bw6>�{0 "�����K09J��<P��Za
��m� � S� ���V���� `�P����j�Q���V_�~j�t�z��&��t�����
F���` zU^n�![_��� �9�BL�$UQ��X��g� �KE�Q� 4�K�����a��6K4wJ��Fm0�'[����Z��}M��'3�oT�6������@��52;�S{=M ��6�V����]P6>B8>Bh� �_��NN�>��)u0u 0LA�%�;%�f3a��T�!�����Y��gn�����u���|���6e����c)�����V_j���8�6�;0���V�!��lVOQV�Z�:[�U�U��j�����s��~��&���� ���Z��� �O��@�� �0�y�/l�!��� m�6K4wJ��f�`Y�j.G�BS}��JD�N#�����
F���`�ASy�%����C�JA�K���� ����
=`0H���F�B�/��zp?` J�(�:,N�C� �P����j�����?.�� ���v�d���l�#tg�
0��\�]��b'���M ���Z�z�?�|�o
ag��: ������
0��^������M x����'4wJ��6��N?���+���)jwA6���Fm0Bw6>� p���3��
���: �+��j�)h������+���1u 0\��%�o| _Ud� `�0m�h��P�Mw���!����Us�tog[���4�l\Q���`��l|@���$U��Y�V�����b�����Y��7���������u�4rH z���
=�!��r����i�O���y ���m�7�:�09J49��-��Y~���z��b{�# 2p�Q� a���Wbj!O'x��m���
�7B&G9�&�^�]���y� ������)�6LY��X#�!���uq����N��� x�������y�F'd���l�#tg�
0#Y�jNM��C^)�:�|�[���O�7����
���j�)�!��E�S{=g���: ����
x(���jG����\L �z���;%fk�u���)_t��A��p�i 7�f�6�;P�a���v���p� ���Za
zh�����[5����! �S� ��[5?��_ �
�Y��SBU6��9��<������l� �#tg���C���k�a� ��6�V������+;���2u 0{�T[[��
���|||�{�=S��T^n9dQ��V�\����Q}�Z�� K$�\.�����������L��#�;%<e��V��W�Y=�T�T�-{I�w��A�l�P���`��l|F=���'''_�v�������������e���������~���U�f���s�w����k+�/% ���Q���~���g�>z�4(IUdm��{�����9N�����WT��)����� �>3������bm+477o�����r���,���-���
����8qbjj*�������u��mb�x��]�>M�Y����5��4p��1s������������� (g�_UU������O�4I&� l��u����?�H$111999QQQ���.\ ��T*�T:}�������������Os�D�Es�dP����x�C^8��m�y�x[X������]yc��4� 7�f�6�;�Q�
<�m����={��9sf��yt�e��=[�n��q�����z��W^ye�����P����j�*B�X,^�bEFF��<�K�_���\8>B�{�'v����^XT�Y��� TS�L�R��=;...11���W����������'N���������#F|��:�R\\L����,���OG����TWW'ZZZ��[�l��u��0F�9�����Wb�
z��sM�B��������<��a��������
�B"�px�����i�&BHWW��-[�/_�l�2o�J����\�������[*�������K$����{��������sH�9dQ4c��S{
�t�_��s�x�x|X�k'_+�� "~pyyyll�G}dcc�mIII�o�NIIIJJ���8x����
!���I��y�,ONN���puu]�`��;BCC��29�;%��}9������C8��-����@�W��;���j�Q�������i��%K�<����������� �HT*�G}���f����5�]\\��9�9����j�;y=��wk�%���2�� x�����S�������vV�\���NY�d���E"!���I��y�,2��]k�Zq�v�lsc����]���1�v�� 7�f�6�;x,��.]���������2�����������Xooo�P�w�q���w�w������'��4s#����A||��g�XUvf%y������=K �������� �!..���S&�i�C���!�j�:''G dff^�tI ����}K```tt����������!?�;g��=j�Z����w��y
��P�i��l�P���`j���Qx�;;;;;;k�
�B�@����<}��w:;; !%%%---����������\BHpp0!$22r����>�,!d������999VVV��bee��k���;����/^�����f����]��9� `���k��<`�D"��s������,>>^$���1�UUU999����x�fRR��������)S���Kn���s���k�g���) ���"�~Z�f�R�<��R��� S ���o� �Ks� �Xf;�������_o���f��
���
F���`4�ZU����u!��:���Vi[��K������X3 U0������/l�K�W��L�q��Zv���\��sM#�����.rt���|���z��2�z� &�GE@��
����-y{��Z����7/z��Vv������������9�8[^�]����:� 0@��Oh����*NN��������J�[���b��N�9/�����������I����A6n��j������kA���� �O��8������y���`r�hr��� ( �@`�U+LA�Uv�����1��c\�=�� |T�
�27V�Vu��C �=`�d�N�����b������]��.���q�lP�������������@{/�� �9�BXY�:���/�qv���� �z�`<�7d������ 0X�6K|wJ.,*����j��Km��`��B6�
F������)e������Z�Z���V�V��������;�:# �P6���:�p�������#��Fz Fz[�{ Fz��SSg �z�0PY�j��8� ���6K:%�Z��iR;��t?��]j�d�
�8�6�;0JRY�j����t3 �mh�9���g��B^8�k� �
�#����x�CP} h�l��tJ���#d/��S�qP���6A6���j����xh:����V�JA n @�!��������[�.N��:�: ����A�� �\`
�,���t�^^Q���6A6���j����#�� �� 0;f��4����� F�0��� �|�l��;6�[����.���q�lP����SJY�j�U)kU�U�C�='�-{ ���9M��=�CE�;�����S��c� ��R<���L@� �����i���~z�/��j�Q� W��������L����N��-{ ����2r8c�L�`�; �������%�� `�@6��9!dF�+����)�6���q�lP����8���JR���/�5u 0*���2B��rK�^��t?^�
�R������Rh� `����VuvA��Ks���l�#���q@m0Bw6>`l)����SL� Lfx������l�r��Ykk�-[����;:V��|>�|��1��� ��(�D"��e2Yvvvrrr^^��3��~T�5�/ �07�
�������w��mcc���SZZ:c�#gx$�(<P��^���j�Q� W�������0�
p~~������SM���/����� �t�����������+++�����,�H���������o�|i�����d~~~�������B��3g�o��x��/�����#**�����[XX�#���B�/�B����d����������pa� ���?8>>���J$�]����K�.�9s�@��#|����$11q���������"�h���*�J*�N�>}������s���4i��e�t|��m/�(�u����w�>���������c��� 04P4]PPp�����(6+������3#F��{����u���'O���[o���+�w�&��B�U�VB�b��+222�E�s�qb�sL�/�������k�����|Xy��1��\_4wJ��Fm0�l\!�#tg�-���+***&&���O����?���*((`�^�z������������3������d���0��_|1;;���988X�T���2�U*���5��L^���A�����
��?����Xp�/ j:���o��q������������/~����j�J��9s��+z����611Q���������
����,B��7�j��%K�l��R�����������#����X����������#w^J9�'�]�����7�t|! ����pyyyll�W_}ecc������I�&���(�����K�.���B� �899i�0������������B�p������2�_�S�`��5�k2n���z7�Q���i�2���g��Z 0P1�i��%K�<���}_���JHH�H$���tss3t������...g��ill���o��-���5N���k��}�O}���W~�YBQ�f9O���)�6���q�lP�����/��N������o��V�\���NY�d���1GP755i�0��Y�����^O���X�}i|��7W��xo���.��0!�_[�����
��i �!����_�����}�'&&2g�n������+V�x���z�fgg����k�.--
���o�{�9fIJJJTT�B�9r�A�,,,z>=z����k/�T^=6_0C�v�Z����z=��Vs����������D�c;�6VO����7�^�`�6��������u����\�� 766*�J�����������P8r�����9s�ddd������_�v-$$���{`BHPPPxx��~�<}���ZZZ�����i���]����A>Q�{+/��]P��~G�������kP�������Kt]!dQ�������'�e
���+�8=�i��>6�y������������������7���9o�Q�l�jk�V6U)�������^H�n1���q{�A?�k�z����f����+���;::�juqqqNNNNN�����o��<f^:~�������������Aff&�$}wN��fm�����9����[����>�k}��Q�%gm���H�d�����������
�v��l�����������:y�n��������W�M����#;r�2n/l���� :Vx�����\���O��O������=]V�a���
��S�O�Z��u6���
m����^X1�l��W�l\6��wIV�a�j��Ly���#�6�� �
�_�����Q��(G^y���'�W���������9����w��P�� IDAT��r�2�����wC�|~�oQW������_=Wq+G^Y��h�������W�_�?0���[����`~��i_�Y�
���q �G���3+,����e%�6��GAk�����d2��2'L��g���;w�[����k��}��1-����1c�DDD(��>�����7n\ZZ���>;(y�i\xf��l���8zQ��*eS��9zW^���>��\x+\<iW~!�.����J~�3^�
S��E��)��6^��n�(w+�������������?����c?����.>6^�P,�u�����?|����q��g?�x�u���/�tY��1_��tY�2�`���r����f��
�x�\6�U���B���js���b�d+��
��:s�z��z�������������+�M�{Y����q�xjinD@��g^���B��dw�������f�������B.�����u�����_��������su���{|zU���I1�AX������A���������������;wB�^�����1c�0kn���������7o����~5(���(�\-��{�(5@�^��������X������������2�Y�t)����f;2���C������F�
:��-�?�[�l*m������.��J^�����s���`������:��v�����Xm��+xX��u[t��t��/�o�qB���7���Y.��z�W_��
�����������l6�c����p�8!�l����u�i���
��2n�?xy�<+�zl���r��qi���Y:VX(�t����Wu��8]~s���_p�!����`�H����������w��u~�3��OO�+���u�� ����dc���z����3�
^z��?��'�������QSg�$���u�8{q���� B�=�r���[����W���\2��7�^f��7���~3�g-���-���U�3��fk)��tQv���_����dk�g����e�0O�$�h�l��>2t���8���:�Xg���J�����>���~��^V�a����[����t�3z�p����*���d��f���-����P�P=M�L���h��g�ce��I�j�����s���EGz-O(��{3����v�=��=[�[f3��w�#[��n�Po��r/[�:}�����X=���77�`�S������,���8>-��:`&��9�� !�D�����]���-[gw�mE�4�3�z7�
��;v����L�-��%��S��n�q�^Vt���p���Ks���]m�x�����]���v��p�=
��B�[�G�����;vl �GzW[�=.�����
0+�V_F��9���u6Q�d�w���������)z������zy{�A�bS�](�w�8�b3��w�������_�����+��v,���Q�f���:}�G�^���j����Jo����I��X9��������.3� �.����U���8����V��V�Z�� ���j��lx���Z_7�'���$�W�6�w�����
�8�����r+m�W���K�
G+gk;����{D�,4
0+F(���p��O�^�}*�2��?�j?�JwG�5C�,�g�=�-[m[���@����>>�c�+����`3]|8����?3��]3o��*������M��������t�a����N��llz�z7�
���]���������]*���Y��f�����r����,��$��1�fc�����/i���{�\���m�n�� X��W�����^|��� �E��6y����F�Z!.����-RbR�]�b�I�p���
�����IB'+��~zg���f��xe���*����4�!�����#���1�3@�|$m���2�y3
�f�Y�?3�w�de;I�q�a9����2���+���oh
f9�e:f?_��/@AC������#{?�cA
�~��jx�;��'�����e�h��s��]��s�>R[6��2f�����X�k;vl��/�60���o������y�~X!��tr%�/�����2 ��4�p_��?H������ v'���6,7�d3tl@���Q/�����{j�,t�47"�������������s�zf��{���qu�x��_�w_����g=.�>�����E_v��0!$2��#���fs���)h�#`b�����_B����XG��:����u�cE��}����-
JU'���������,�B��8!�E���dlpSg����<���m�LA�Y������O{���C�0h�}��q���u�1Y�qKQ�r�l
��GT�B� ����&��eHi7u��V��q�fe�X[�b�� B�7���*n��dS�?�1�U��l��v�Z;K+?G��v�l���z,�����f��g���7��lL��r�c&6���2�U���8��l9�J����m��b�q&��1��M���;�b?�%�Ly�4p|GQ��(���b�=e_��Ks���BFY�Nu����~���3�����-����[���(I����1�3 �������y�����5L�08wR2�p���ZNE���� ���jUu(:�
c���;!��������J`� X�$�9�����[����Y���F�l>��e��0��C���e��Cf��^�';K+����7#�!�_�Y��.���[�^9�� ����K�5� !��.U�
a������=�``]�����(�.f;�g4,[���.6�6>C����_�~�=�RU�5�9���60���{3� 4���������J]W���o;�o(!d��Hhm���#��?Z��u4��'����S#��v�a�n�Hm���k�P��]��Cg�5���������4�=�o�y������z������aY�{f��{�='#� �b����X�� ����/!����O�3:�#;y?������5=��9H=�������l k,3���A��� �k��o�=�S/�e���x�8a�'��%�<t_��C�Db��b�>aW�����^�:�*Z�W��chX�E(����=�a� �b����c�2��t^��
|[Q�de�;R��&z�q t��8`�o�����L0C/Hi�!��/�����o(a1�a�����������}�=�h�����S����k����de{[_I0��0�@h�E(�O��B��\_������}���������"�}��{��8'������F�\(���q�#{��?��As�c�p���F����FO����F-�f�_B������#���)hB����`��?d����m�L�9<X[g�Y����Xvj9�h��8a76t��8-m�{�9:Z�GC�����A������Xmkid��S��� �F���Q2����_bH���8�S���7��@�K� ��p�`���m]�Z4���6{��m[����`n�_F�����m ��x_m�g6�R����:4�C tr}������9T=��2�{��z�sO}����q��1���5���#����;���#�(�(4
�.�`�,O:7�����j�eM[3�������c�s���6���j��Yh�N@�e����5�}�$<��/CG�[���S��G��� ��a��`2��� i�c�J]�����xt�qcb��z=R�����sjM#��j��a�@k��{�0pgP�P�������A
b��*��V}O!e�o�`����6����?��^7��o(!d��O������^��Z��0�4���=[�o6CO�����x�l�����R���B�<�����0���z�5�3��&y{W'���!7.h����� �������`e3����5mx�<�9Z��p�����~_��WyK�������j��U�� V/��������rz��H�~o��m4�1���U���&Z���VU��'�x�8CG��>z����_��azpO�j� `-��$������q������~�x�O�2� �,�2�q,4�,�*R��W�o6��_F�6��j�8�x�;�M0�����
�c �������c?��jJ5K����
%Z.���X���ns�l�/�f����^�t`������H�-��V6��B�=�w��e���9���=R8��N�zH�B�_���_�������� 4�B� ����>j�lgsw�����X�m-KFO9y?_������a��4���� ��zz�}�����m������
O�����6z'���?a���IB���vYk?�n�p��)h�
`F�#��~�S�m��VE][3��r\�l����*����{������5,��<A6K��'
=w�~l��������`&}����7�Y��Gv�V������_��d���q�C���^7G�t�F�C�ze�|�T�������o�kw�2kJ9���l��,�t_������=�U�m�����p�=���`]~�/��tJm;�����L>F.�� �X��:�=�/�� i,�W�XS�l"��?������=a���8�6�54�������d�����a�#`��O�@��l�����K�Y���B�z���X��B(lXx�;��:������*�������'#� �%-�~��H&Z���fh����,��7W�-�� ��\�GG���7�2�+�F��������{$*!���3�����,7���c�=q�x���6��b����B\�S�9|O{��~�UO�A0�������sY�H[6gt ;�����L~M������EU����a��IyE|"��ra��z!�������Ink��y�W���,�,�j�r�Cn�^VjnK,?3�K�h40���%4
�8����lg�y8��s����_p�x�=���9sn��biX�g-7��:�i�r�����1���;��7aZ{�;� &�LT�z��s�Tt������y������?��^�����8����PE=8!��C1S9����}���0��m����z��s=]l
����ot��l��ZhA��
Pw��9B����9��
���7t��h<� �$~-C�I���_b������B���.��U�t~�Z�oX�S���������������J��Br��a��5��H�����8��q���rc^`�#h�a���� ���=-�������`���v�6��hh���>a��s�}�x�v�<�X��\wmY�cx�
U� !b���<���l�oX�S����������{�#)qg~��9�?�����8A���3`B�������`���0w�S��7�������{�g�&�����Z�%�t
��l�����y�5����1~����%�k�����W:[;������-�|�}���`�m`�/��a����P��S�s.�S��/����y6G>l���x���-
�r���k��9~���]�-���
���s4_��RN
��k���:tH���}��-8�;h�?G<<>�� H�3m|����L�8�Lq��T��c�/�6'���)h�?�������v���
R�����7*i������>���Nk�t�z����3��YhG��e��� �/{���~���0�O������a�7����������w�p&`���e�N�)�����"��g,�{����������&�o(!��)�?�u 8&??Q�f������no��,���p^����2�{�l�%�����s�z:x�?�!�?��@�/O����r�0
���#�;�����g�Q��'`�`kg�?-*�����T��+��pp�
��� fq���>�� ��P�r����J������@��H$��%�n/�
��������C1��Qm���<����������:,'��v�,�I*�����q������8��mc�m����8m�
,��S�����%`���B���[�}�G��ImA`���;��V<t�1'U5�����L !��C/��2���/���s���8hqFqL�y���W`9���_�O�{�����p� ��A��i��
`�-W��%3`Ar&�.�BvI�tJRUqg[�� O�|���ah��b���l=h�
���?K���0A�V�6v����5v�+|'��4�����1n�
�����B�f�;m� �����=��q3,���4��I�<���f���U� ���T`k��]�z�9������E�V���g�*|z��G�+�6���s��kP� ����B������
uh'��:,`��`�D�?�-�B�g�3H�9h6'�����B�S�d�lqp��s����2�l�;�L�{�<��?�y��R�A�������BGq4�(�;�aaL�:���hE=�xl��������0�-}����u;�O�I0
�K���d��/������]�tl�@����
��w~�w���7��NR�lt���<n��_[��/���\2����!x���������������X���P������?�%�NA7v���L�r��*%�eS|�v�B�v�N�
�� 6&�\<^��>�/#.u �Hl��]�h�$�FvIT���������3x����F[�9h�~A����?�'���
e1�J:tH������9�����,t������h� �=�|O��l~��M(�4��b
0��U�`{,���u,Q=����w��/o}�@��=ZQ.�O"�L���/�j��4��r3`I� �$��K�g��l���f(i�
�?hm`I�a��
e$����[�~���w���H���G��q���^����q�Y|�04t��m�2d���v�D���v���������m�B���DA�u,���cq
`��o �A�
�K���d���d�g4���E�� �
�y�
��N�-=Q���2<���&L�|hO���n�b�x�%G��q����v���[�L�{J� f��}���A
0���*�_BH�r���;��AB��;?$���{���`U��[������W]��H�t�BH�q�f��8�$�I�bQB�X�c� ���?��3������R����N�$��F�P��������1h�$X��������@�� r�����lov����{���3����,n���&���H�VV�����:������������:��a1 �� s`/���
,�%E4�t������a���%�,��,�{�7���oy��rlC���{eee������gxx��7���'u(�(���m`&Uw�fp;��3H���� U�a@�{` {pI���$����T�`�Y�o�o+|�{x�8��&�1T�kkk
E|�`a�9�� ]k� (�B���h[���#��[8�=}�]������a��"H�� ������c���^^^111;w�4������_~Y�Ryzz��3����p����������{�n��v�������;�0[ZZ���^z��i���T��;w:��$Da��m�b8�?������/w� Oog�bP�����B�����GSo�����K�7���B;R��4��[��~������WWWo����W_�����-''���D��TWW/Z�(--����G���/g�����d2��Co���Z���m�V�}��g322��n0���{�����������_�� ?�7�tL��p�|kh6?0�D�e��#�?�D�e4���3`4��O����QUUU\\�z��y��=��s+W�<u���n���%%%j��������|�������B��_�|9??����nn�/!??��-����f����/�Z���W_%�(�J__���z��R�V�\YYY)��u*
;%���������p�K�7h#>k�!�X��,d���Y�
{��bP;n������~.���P;h"� �������^�������T*-vkll��������+V0�����uuu��/��������n��a��u�Oz��5�N����nY�lYMMMwwwBBB___oo/��`0��ra^*B�V%�� s��uG�0 ��_w��X�dnnQ�������M���=69�"�����>�(++����zj;44d�%((������c���)))�������y�����k��v �IDAT'�x��� !QQQ����������������T�Zm4�_�~�����Ta^����)a�A�_����=h�#���+���7��l�B����}
��q/�l����9�L����]����WVV������?����FGG���s��-^���r��yBHWW���ii���38������\^^��\����???v�5����,###((H�T���,]�T�W d���?6B�;�����R�������A��a8��C����[���E[A>g��?������#G�h4���,�G}||6m�TTT�����������JEE!���*44t��]j�Z�����78x������O�<�����������w�eI��N 3v�0��#1t��d����[�7���V�\����M(�4�8�s�^^^��/���)--����x���p��U�7o^�passsNN���[P��o��f��^OIKK��B����-���vs!t?1�C��K �j�����.|x��-���i����Y�������ovttttt8p���%66����7R�h4aaaJ���G�,�����:�����L�#�83��f���kb��"
y��=�e*�e�4�FC����_/ydC6��f��b_{������i���k�@�`MUU!��������#���z����>�<���`���R����Z�V&��={���\&�i�Z��P(JJJ��DGGggg���X�b��%<��:8�UZ��-�?\_uT� B�"�XcCbbbdd�{��WSS�g�oo�-[�0���j�L�|�r����'���_�xq��U!!!mmm&�i`` !!�7��
�[BB�����d����j�Z�V.�o�����y����r�|������yyyL�����|��A�#��s�������_���@�����/d���`&���QD�
������?�h4��ookk�<y�Z���}���o����-[��]������t���b���B�N��.���d����������O?�\,M).....&���ys��)������+**��ukll��c����Al��C����a ��8����q�08#���-N����V
�� �M��0�VC'���g4�� �
�Kb/������9��AC6~��j���� @hs��0 0� %P�]��j�Q� _�������� �9�B � �(�.��N ���
F��/d���`��lb@ � ��v� �� F `�Ds���l�#����@m0Bw61� H mN�� z� �
�K��SBm6j�d��x�6�;�P� $�6�]� =` �Q�%��)�6�����l<P���M(� @��.�� ��0 �(���h��P���`��B6�
F��&` ��iz� �@ `�@vI4wJ��Fm0�l|!�#tg
0 ����=` `� 0J� �$�;%�f�6A6���j���� @hs��0 0� %P�]��j�Q� _�������� �9�B � �(�.��N ���
F��/d���`��lb[�����g� /((�: �]c��������y���c���������7o���� �a��{���?>>>~8�� a9���V�P��R��N ���
F��/d���`��lb� ������c���^^^111;w�4������������M����>}����ns7���YYY����w��xh���111^^^qqq�������%((���^�6m�J���s��/ �'�����CBB�}���/���_.����X����1y����������O���j4�#���DDD�X�B.�����?��~�BQZZz�����b�Lv��i��t��q77�#G��L����������s<��� �B�� b��s�����}�]v���k�����-,,d���qcll,���~�����L&�BaQ�#""�o�n���-2�L���~~~�����M�6q<
0 0��"�����omm]�z5����G�T��yhh��[777B���G=<<�����_|��������O��a��u���s��5�N����nY�lYMMMwwwBBB___oo/��`0��r�^�th��P���`��B6�
F��&
�K�����S�NeffTWW[��V�'O�\SS�������J���{��V�X��C�L&��0���+WZ�[����� !�������jB���M&SZZ����
CCC���+**8b;gp�A6�
fB6���j���^6�j����������>������.d�������b�.--�9s���������������������na�f����edd)������K�
�� F���O>���?s���O?}���}��Y����U]]]QQ1{���/n�������J944t��]j��`0���?88x��n~r;00����� �9�s�^^^��/���)--���0���������h��������/�h4EEE����k�����������>Q@@ !������|�l ���3�������������6���|����Pll,�%22r``@�����B4MXX���@nn�}o�����Q�R1[d2Ytt4����������x�6A6���j��� N�����'''WVV>��������Li��m}}��9s�-
nnn��.���TVV���������p<��i����O�:��#�0[N�8������3��&�� D#b~���7n�XXXu��������LOOOB��;v��5888u�����Z4s��K�.eddxyy
fdd�Y�f������<##C��zxx\�v����244���|��BHBB����F���qctttRR��S�>�����J�^&