����JFIFXX�����    $.' ",#(7),01444'9=82<.342  2!!22222222222222222222222222222222222222222222222222����"��4�� ���,�PG"Z_�4�˷����kjز�Z�,F+��_z�,�© �����zh6�٨�ic�fu���#ډb���_�N�?��wQ���5-�~�I���8����TK<5o�Iv-�����k�_U_�����~b�M��d����Ӝ�U�Hh��?]��E�w��Q���k�{��_}qFW7HTՑ��Y��F�?_�'ϔ��_�Ջt��=||I ��6�έ"�����D���/[�k�9���Y�8ds|\���Ҿp6�Ҵ���]��.����6�z<�v��@]�i%��$j��~�g��J>��no����pM[me�i$[����s�o�ᘨ�˸ nɜG-�ĨU�ycP�3.DB�li�;��hj���x7Z^�N�h������N3u{�:j�x�힞��#M&��jL P@_���� P��&��o8������9�����@Sz6�t7#O�ߋ �s}Yf�T���lmr����Z)'N��k�۞p����w\�Tȯ?�8`�O��i{wﭹW�[�r�� ��Q4F�׊���3m&L�=��h3����z~��#�\�l :�F,j@�� ʱ�wQT����8�"kJO���6�֚l����}���R�>ډK���]��y����&����p�}b��;N�1�m�r$�|��7�>e�@B�TM*-iH��g�D�)� E�m�|�ؘbҗ�a��Ҿ����t4���o���G��*oCN�rP���Q��@z,|?W[0�����:�n,jWiE��W��$~/�hp\��?��{(�0���+�Y8rΟ�+����>S-S����VN;�}�s?.����� w�9��˟<���Mq4�Wv'��{)0�1mB��V����W[�����8�/<� �%���wT^�5���b��)iM� pg�N�&ݝ��VO~�q���u���9� ����!��J27����$O-���! �:�%H��� ـ����y�ΠM=t{!S�� oK8������t<����è:a������[�����ա�H���~��w��Qz`�po�^ ����Q��n� �,uu�C�$ ^���,������8�#��:�6��e�|~���!�3�3.�\0��q��o�4`.|� ����y�Q�`~;�d�ׯ,��O�Zw�������`73�v�܋�<���Ȏ�� ـ4k��5�K�a�u�=9Yd��$>x�A�&�� j0� ���vF��� Y�|�y��� ~�6�@c��1vOp�Ig����4��l�OD���L����� R���c���j�_�uX6��3?nk��Wy�f;^*B� ��@�~a�`��Eu������+���6�L��.ü>��}y���}_�O�6�͐�:�YrG�X��kG�����l^w���~㒶sy��Iu�!� W ��X��N�7BV��O��!X�2����wvG�R�f�T#�����t�/?���%8�^�W�aT��G�cL�M���I��(J����1~�8�?aT ���]����AS�E��(��*E}� 2��#I/�׍qz��^t�̔���b�Yz4x���t�){ OH��+(E��A&�N�������XT��o��"�XC��'���)}�J�z�p� ��~5�}�^����+�6����w��c��Q�|Lp�d�H��}�(�.|����k��c4^�"�����Z?ȕ ��a<�L�!039C� �Eu�C�F�Ew�ç ;�n?�*o���B�8�bʝ���'#Rqf���M}7����]����s2tcS{�\icTx;�\��7K���P���ʇ Z O-��~��c>"��?�������P��E��O�8��@�8��G��Q�g�a�Վ���󁶠�䧘��_%#r�>�1�z�a��eb��qcPѵ��n���#L��� =��׀t� L�7�`��V���A{�C:�g���e@�w1 Xp3�c3�ġ����p��M"'-�@n4���fG��B3�DJ�8[Jo�ߐ���gK)ƛ��$���� ���8�3�����+���� �����6�ʻ���� ���S�kI�*KZlT _`���?��K����QK�d����B`�s}�>���`��*�>��,*@J�d�oF*����弝��O}�k��s��]��y�ߘ��c1G�V���<=�7��7����6�q�PT��tXԀ�!9*4�4Tހ3XΛex�46���Y��D ����� �BdemDa����\�_l,��G�/���֌7���Y�](�xTt^%�GE�����4�}bT���ڹ�����;Y)���B�Q��u��>J/J �⮶.�XԄ��j�ݳ�+E��d ��r�5�_D�1 ��o�� �B�x�΢�#���<��W�����8���R6�@g�M�.��� dr�D��>(otU��@x=��~v���2� ӣ�d�oBd��3�eO�6�㣷�����ݜ6��6Y��Qz`��S��{���\P�~z m5{J/L��1������<�e�ͅPu�b�]�ϔ���'������f�b� Zpw��c`"��i���BD@:)ִ�:�]��hv�E�w���T�l��P���"Ju�}��وV J��G6��. J/�Qgl߭�e�����@�z�Zev2u�)]կ�����7x���s�M�-<ɯ�c��r�v�����@��$�ޮ}lk���a���'����>x��O\�ZFu>�����ck#��&:��`�$�ai�>2Δ����l���oF[h��lE�ܺ�Πk:)���`�� $[6�����9�����kOw�\|���8}������ބ:��񶐕��I�A1/�=�2[�,�!��.}gN#�u����b��� ~��݊��}34q����d�E��Lc��$��"�[q�U�硬g^��%B �z���r�pJ�ru%v\h1Y�ne`ǥ:g���pQM~�^�Xi� ��`S�:V29.�P���V�?B�k�� AEvw%�_�9C�Q����wKekPؠ�\�;Io d�{ ߞo�c1eP����\� `����E=���@K<�Y���eڼ�J���w����{av�F�'�M�@/J��+9p���|]�����Iw &`��8���&M�hg��[�{��Xj��%��Ӓ�$��(����ʹN���<>�I���RY���K2�NPlL�ɀ)��&e����B+ь����( � �JTx���_?EZ� }@ 6�U���뙢ط�z��dWI�n` D����噥�[��uV��"�G&Ú����2g�}&m��?ċ�"����Om#��������� ��{�ON��"S�X��Ne��ysQ���@Fn��Vg���dX�~nj�]J�<�K]:��FW��b�������62�=��5f����JKw��bf�X�55��~J �%^����:�-�QIE��P��v�nZum� z � ~ə ���� ���ة����;�f��\v���g�8�1��f24;�V���ǔ�)����9���1\��c��v�/'Ƞ�w�������$�4�R-��t���� e�6�/�ġ �̕Ecy�J���u�B���<�W�ַ~�w[B1L۲�-JS΂�{���΃������A��20�c#��@ 0!1@AP"#2Q`$3V�%45a6�FRUq��� ����^7ׅ,$n�������+��F�`��2X'��0vM��p�L=������5��8������u�p~���.�`r�����\���O��,ư�0oS ��_�M�����l���4�kv\JSd���x���SW�<��Ae�IX����������$I���w�:S���y���›R��9�Q[���,�5�;�@]�%���u�@ *ro�lbI �� ��+���%m:�͇ZV�����u�̉����θau<�fc�.����{�4Ա� �Q����*�Sm��8\ujqs]{kN���)qO�y�_*dJ�b�7���yQqI&9�ԌK!�M}�R�;������S�T���1���i[U�ɵz�]��U)V�S6���3$K{�ߊ<�(� E]Զ[ǼENg�����'�\?#)Dkf��J���o��v���'�%ƞ�&K�u�!��b�35LX�Ϸ��63$K�a�;�9>,R��W��3�3� d�JeTYE.Mϧ��-�o�j3+y��y^�c�������VO�9NV\nd�1 ��!͕_)a�v;����թ�M�lWR1��)El��P;��yوÏ�u 3�k�5Pr6<�⒲l�!˞*��u־�n�!�l:����UNW ��%��Chx8vL'��X�@��*��)���̮��ˍ��� ���D-M�+J�U�kvK����+�x8��cY������?�Ԡ��~3mo��|�u@[XeY�C�\Kp�x8�oC�C�&����N�~3-H���� ��MX�s�u<`���~"WL��$8ξ��3���a�)|:@�m�\���^�`�@ҷ)�5p+��6���p�%i)P M���ngc�����#0Aruz���RL+xSS?���ʮ}()#�t��mˇ!��0}}y����<�e� �-ή�Ԩ��X������ MF���ԙ~l L.3���}�V뽺�v�����멬��Nl�)�2����^�Iq��a��M��qG��T�����c3#������3U�Ǎ���}��לS�|qa��ڃ�+���-��2�f����/��bz��ڐ�� �ݼ[2�ç����k�X�2�* �Z�d���J�G����M*9W���s{��w���T��x��y,�in�O�v��]���n����P�$�JB@=4�OTI�n��e�22a\����q�d���%�$��(���:���: /*�K[PR�fr\nڙdN���F�n�$�4�[�� U�zƶ����� �mʋ���,�ao�u 3�z� �x��Kn����\[��VFmbE;�_U��&V�Gg�]L�۪&#n%�$ɯ�dG���D�TI=�%+AB�Ru#��b4�1�»x�cs�YzڙJG��f��Il��d�eF'T� iA��T���uC�$����Y��H?����[!G`}���ͪ� �纤Hv\������j�Ex�K���!���OiƸ�Yj�+u-<���'q����uN�*�r\��+�]���<�wOZ.fp�ێ��,-*)V?j-kÊ#�`�r��dV����(�ݽBk�����G�ƛk�QmUڗe��Z���f}|����8�8��a���i��3'J�����~G_�^���d�8w������ R�`(�~�.��u���l�s+g�bv���W���lGc}��u���afE~1�Ue������Z�0�8�=e�� f@/�jqEKQQ�J��oN��J���W5~M>$6�Lt�;$ʳ{���^��6�{����v6���ķܰg�V�cnn �~z�x�«�,2�u�?cE+Ș�H؎�%�Za�)���X>uW�Tz�Nyo����s���FQƤ��$��*�&�LLXL)�1�" L��eO��ɟ�9=���:t��Z���c��Ž���Y?�ӭV�wv�~,Y��r�ۗ�|�y��GaF�����C�����.�+� ���v1���fήJ�����]�S��T��B��n5sW}y�$��~z�'�c ��8 ��� ,! �p��VN�S��N�N�q��y8z˱�A��4��*��'������2n<�s���^ǧ˭P�Jޮɏ�U�G�L�J�*#��<�V��t7�8����TĜ>��i}K%,���)[��z�21z ?�N�i�n1?T�I�R#��m-�����������������1����lA�`��fT5+��ܐ�c�q՝��ʐ��,���3�f2U�եmab��#ŠdQ�y>\��)�SLY����w#��.���ʑ�f��� ,"+�w�~�N�'�c�O�3F�������N<���)j��&��,-� �љ���֊�_�zS���TǦ����w�>��?�������n��U仆�V���e�����0���$�C�d���rP �m�׈e�Xm�Vu� �L��.�bֹ��� �[Դaզ���*��\y�8�Է:�Ez\�0�Kq�C b��̘��cө���Q��=0Y��s�N��S.���3.���O�o:���#���v7�[#߫ ��5�܎�L���Er4���9n��COWlG�^��0k�%<���ZB���aB_���������'=��{i�v�l�$�uC���mƎҝ{�c㱼�y]���W�i ��ߧc��m�H� m�"�"�����;Y�ߝ�Z�Ǔ�����:S#��|}�y�,/k�Ld� TA�(�AI$+I3��;Y*���Z��}|��ӧO��d�v��..#:n��f>�>���ȶI�TX��� 8��y����"d�R�|�)0���=���n4��6ⲑ�+��r<�O�܂~zh�z����7ܓ�HH�Ga롏���nCo�>������a ���~]���R���̲c?�6(�q�;5%� |�uj�~z8R=X��I�V=�|{v�Gj\gc��q����z�؋%M�ߍ����1y��#��@f^���^�>N�����#x#۹��6�Y~�?�dfPO��{��P�4��V��u1E1J �*|���%���JN��`eWu�zk M6���q t[�� ��g�G���v��WIG��u_ft����5�j�"�Y�:T��ɐ���*�;� e5���4����q$C��2d�}���� _S�L#m�Yp��O�.�C�;��c����Hi#֩%+) �Ӎ��ƲV���SYź��g |���tj��3�8���r|���V��1#;.SQ�A[���S������#���`n�+���$��$I �P\[�@�s��(�ED�z���P��])8�G#��0B��[ى��X�II�q<��9�~[Z멜�Z�⊔IWU&A>�P~�#��dp<�?����7���c��'~���5 ��+$���lx@�M�dm��n<=e�dyX��?{�|Aef ,|n3�<~z�ƃ�uۧ�����P��Y,�ӥQ�*g�#먙R�\���;T��i,��[9Qi歉����c>]9�� ��"�c��P�� �Md?٥��If�ت�u��k��/����F��9�c*9��Ǎ:�ØF���z�n*�@|I�ށ9����N3{'��[�'ͬ�Ҳ4��#}��!�V� Fu��,�,mTIk���v C�7v���B�6k�T9��1�*l� '~��ƞF��lU��'�M ����][ΩũJ_�{�i�I�n��$���L�� j��O�dx�����kza۪��#�E��Cl����x˘�o�����V���ɞ�ljr��)�/,�߬h�L��#��^��L�ф�,íMƁe�̩�NB�L�����iL����q�}��(��q��6IçJ$�W�E$��:������=#����(�K�B����zђ <��K(�N�۫K�w��^O{!����)�H���>x�������lx�?>Պ�+�>�W���,Ly!_�D���Ō�l���Q�!�[ �S����J��1��Ɛ�Y}��b,+�Lo�x�ɓ)����=�y�oh�@�꥟/��I��ѭ=��P�y9��� �ۍYӘ�e+�p�Jnϱ?V\SO%�(�t� ���=?MR�[Ș�����d�/ ��n�l��B�7j� ��!�;ӥ�/�[-���A�>�dN�sLj ��,ɪv��=1c�.SQ�O3�U���ƀ�ܽ�E����������̻��9G�ϷD�7(�}��Ävӌ\�y�_0[w ���<΍>����a_��[0+�L��F.�޺��f�>oN�T����q;���y\��bՃ��y�jH�<|q-eɏ�_?_9+P���Hp$�����[ux�K w�Mw��N�ی'$Y2�=��q���KB��P��~������Yul:�[<����F1�2�O���5=d����]Y�sw:���Ϯ���E��j,_Q��X��z`H1,#II ��d�wr��P˂@�ZJV����y$�\y�{}��^~���[:N����ߌ�U�������O��d�����ؾe��${p>G��3c���Ė�lʌ�� ת��[��`ϱ�-W����dg�I��ig2��� ��}s ��ؤ(%#sS@���~���3�X�nRG�~\jc3�v��ӍL��M[JB�T��s3}��j�Nʖ��W����;7��ç?=X�F=-�=����q�ߚ���#���='�c��7���ڑW�I(O+=:uxq�������������e2�zi+�kuG�R��������0�&e�n���iT^J����~\jy���p'dtG��s����O��3����9* �b#Ɋ�� p������[Bws�T�>d4�ۧs���nv�n���U���_�~,�v����ƜJ1��s�� �QIz��)�(lv8M���U=�;����56��G���s#�K���MP�=��LvyGd��}�VwWBF�'�à �?MH�U�g2�� ����!�p�7Q��j��ڴ����=��j�u��� Jn�A s���uM������e��Ɔ�Ҕ�!)'��8Ϣ�ٔ��ޝ(��Vp���צ֖d=�IC�J�Ǡ{q������kԭ�߸���i��@K����u�|�p=..�*+����x�����z[Aqġ#s2a�Ɗ���RR�)*HRsi�~�a &f��M��P����-K�L@��Z��Xy�'x�{}��Zm+���:�)�) IJ�-i�u���� ���ܒH��'�L(7�y�GӜq���� j��� 6ߌg1�g�o���,kر���tY�?W,���p���e���f�OQS��!K�۟cҒA�|ս�j�>��=⬒��˧L[�� �߿2JaB~R��u�:��Q�] �0H~���]�7��Ƽ�I���(}��cq '�ήET���q�?f�ab���ӥvr� �)o��-Q��_'����ᴎo��K������;��V���o��%���~OK ����*��b�f:���-ťIR��`B�5!RB@���ï�� �u �̯e\�_U�_������� g�ES��3�������QT��a����x����U<~�c?�*�#]�MW,[8O�a�x��]�1bC|踤�P��lw5V%�)�{t�<��d��5���0i�XSU��m:��Z�┵�i�"��1�^B�-��P�hJ��&)O��*�D��c�W��vM��)����}���P��ܗ-q����\mmζZ-l@�}��a��E�6��F�@��&Sg@���ݚ�M����� ȹ 4����#p�\H����dYDo�H���"��\��..R�B�H�z_�/5˘����6��KhJR��P�mƶi�m���3�,#c�co��q�a)*Pt����R�m�k�7x�D�E�\Y�閣_X�<���~�)���c[[�BP����6�Yq���S��0����%_����;��Àv�~�| VS؇ ��'O0��F0��\���U�-�d@�����7�SJ*z��3n��y��P����O���������m�~�P�3|Y��ʉr#�C�<�G~�.,! ���bqx���h~0=��!ǫ�jy����l�O,�[B��~��|9��ٱ����Xly�#�i�B��g%�S��������tˋ���e���ې��\[d�t)��.+u�|1 ������#�~Oj����hS�%��i.�~X���I�H�m��0n���c�1uE�q��cF�RF�o���7� �O�ꮧ� ���ۛ{��ʛi5�rw?׌#Qn�TW��~?y$��m\�\o����%W� ?=>S�N@�� �Ʈ���R����N�)�r"C�:��:����� �����#��qb��Y�. �6[��2K����2u�Ǧ�HYR��Q�MV��� �G�$��Q+.>�����nNH��q�^��� ����q��mM��V��D�+�-�#*�U�̒ ���p욳��u:�������IB���m���PV@O���r[b= �� ��1U�E��_Nm�yKbN�O���U�}�the�`�|6֮P>�\2�P�V���I�D�i�P�O;�9�r�mAHG�W�S]��J*�_�G��+kP�2����Ka�Z���H�'K�x�W�MZ%�O�YD�Rc+o��?�q��Ghm��d�S�oh�\�D�|:W������UA�Qc yT�q������~^�H��/��#p�CZ���T�I�1�ӏT����4��"�ČZ�����}��`w�#�*,ʹ�� ��0�i��課�Om�*�da��^gJ݅{���l�e9uF#T�ֲ��̲�ٞC"�q���ߍ ոޑ�o#�XZTp����@ o�8��(jd��xw�]�,f���`~�|,s��^����f�1���t��|��m�򸄭/ctr��5s��7�9Q�4�H1꠲BB@l9@���C�����+�wp�xu�£Yc�9��?`@#�o�mH�s2��)�=��2�.�l����jg�9$�Y�S�%*L������R�Y������7Z���,*=�䷘$�������arm�o�ϰ���UW.|�r�uf����IGw�t����Zwo��~5 ��YյhO+=8fF�)�W�7�L9lM�̘·Y���֘YLf�큹�pRF���99.A �"wz��=E\Z���'a� 2��Ǚ�#;�'}�G���*��l��^"q��+2FQ� hj��kŦ��${���ޮ-�T�٭cf�|�3#~�RJ����t��$b�(R��(����r���dx� >U b�&9,>���%E\� Ά�e�$��'�q't��*�א���ެ�b��-|d���SB�O�O��$�R+�H�)�܎�K��1m`;�J�2�Y~9��O�g8=vqD`K[�F)k�[���1m޼c��n���]s�k�z$@��)!I �x՝"v��9=�ZA=`Ɠi �:�E��)`7��vI��}d�YI�_ �o�:ob���o ���3Q��&D&�2=�� �Ά��;>�h����y.*ⅥS������Ӭ�+q&����j|UƧ����}���J0��WW< ۋS�)jQR�j���Ư��rN)�Gű�4Ѷ(�S)Ǣ�8��i��W52���No˓� ۍ%�5brOn�L�;�n��\G����=�^U�dI���8$�&���h��'���+�(������cȁ߫k�l��S^���cƗjԌE�ꭔ��gF���Ȓ��@���}O���*;e�v�WV���YJ\�]X'5��ղ�k�F��b 6R�o՜m��i N�i����>J����?��lPm�U��}>_Z&�KK��q�r��I�D�Չ~�q�3fL�:S�e>���E���-G���{L�6p�e,8��������QI��h��a�Xa��U�A'���ʂ���s�+טIjP�-��y�8ۈZ?J$��W�P� ��R�s�]��|�l(�ԓ��sƊi��o(��S0��Y� 8�T97.�����WiL��c�~�dxc�E|�2!�X�K�Ƙਫ਼�$((�6�~|d9u+�qd�^3�89��Y�6L�.I�����?���iI�q���9�)O/뚅����O���X��X�V��ZF[�یgQ�L��K1���RҖr@v�#��X�l��F���Нy�S�8�7�kF!A��sM���^rkp�jP�DyS$N���q��nxҍ!U�f�!eh�i�2�m���`�Y�I�9r�6� �TF���C}/�y�^���Η���5d�'��9A-��J��>{�_l+�`��A���[�'��յ�ϛ#w:݅�%��X�}�&�PSt�Q�"�-��\縵�/����$Ɨh�Xb�*�y��BS����;W�ջ_mc�����vt?2}1�;qS�d�d~u:2k5�2�R�~�z+|HE!)�Ǟl��7`��0�<�,�2*���Hl-��x�^����'_TV�gZA�'j� ^�2Ϊ��N7t�����?w�� �x1��f��Iz�C-Ȗ��K�^q�;���-W�DvT�7��8�Z�������� hK�(P:��Q- �8�n�Z���܃e貾�<�1�YT<�,�����"�6{/ �?�͟��|1�:�#g��W�>$����d��J��d�B��=��jf[��%rE^��il:��B���x���Sּ�1հ��,�=��*�7 fcG��#q� �eh?��2�7�����,�!7x��6�n�LC�4x��},Geǝ�tC.��vS �F�43��zz\��;QYC,6����~;RYS/6���|2���5���v��T��i����������mlv��������&� �nRh^ejR�LG�f���? �ۉҬܦƩ��|��Ȱ����>3����!v��i�ʯ�>�v��オ�X3e���_1z�Kȗ\<������!�8���V��]��?b�k41�Re��T�q��mz��TiOʦ�Z��Xq���L������q"+���2ۨ��8}�&N7XU7Ap�d�X��~�׿��&4e�o�F��� �H����O���č�c�� 懴�6���͉��+)��v;j��ݷ�� �UV�� i��� j���Y9GdÒJ1��詞�����V?h��l����l�cGs�ځ�������y�Ac�����\V3�? �� ܙg�>qH�S,�E�W�[�㺨�uch�⍸�O�}���a��>�q�6�n6����N6�q������N ! 1AQaq�0@����"2BRb�#Pr���3C`��Scst���$4D���%Td�� ?���N����a��3��m���C���w��������xA�m�q�m���m������$����4n淿t'��C"w��zU=D�\R+w�p+Y�T�&�պ@��ƃ��3ޯ?�Aﶂ��aŘ���@-�����Q�=���9D��ռ�ѻ@��M�V��P��܅�G5�f�Y<�u=,EC)�<�Fy'�"�&�չ�X~f��l�KԆV��?�� �W�N����=(� �;���{�r����ٌ�Y���h{�١������jW����P���Tc�����X�K�r��}���w�R��%��?���E��m�� �Y�q|����\lEE4���r���}�lsI�Y������f�$�=�d�yO����p�����yBj8jU�o�/�S��?�U��*������ˍ�0������u�q�m [�?f����a�� )Q�>����6#������� ?����0UQ����,IX���(6ڵ[�DI�MNލ�c&���υ�j\��X�R|,4��� j������T�hA�e��^���d���b<����n�� �즇�=!���3�^�`j�h�ȓr��jẕ�c�,ٞX����-����a�ﶔ���#�$��]w�O��Ӫ�1y%��L�Y<�wg#�ǝ�̗`�x�xa�t�w��»1���o7o5��>�m뭛C���Uƃߜ}�C���y1Xνm�F8�jI���]����H���ۺиE@I�i;r�8ӭ����V�F�Շ| ��&?�3|x�B�MuS�Ge�=Ӕ�#BE5G�����Y!z��_e��q�р/W>|-�Ci߇�t�1ޯќd�R3�u��g�=0 5��[?�#͏��q�cf���H��{ ?u�=?�?ǯ���}Z��z���hmΔ�BFTW�����<�q�(v� ��!��z���iW]*�J�V�z��gX֧A�q�&��/w���u�gYӘa���; �i=����g:��?2�dž6�ى�k�4�>�Pxs����}������G�9��3 ���)gG�R<>r h�$��'nc�h�P��Bj��J�ҧH� -��N1���N��?��~��}-q!=��_2hc�M��l�vY%UE�@|�v����M2�.Y[|y�"Eï��K�ZF,�ɯ?,q�?v�M 80jx�"�;�9vk�����+ ֧�� �ȺU��?�%�vcV��mA�6��Qg^M����A}�3�nl� QRN�l8�kkn�'�����(��M�7m9و�q���%ޟ���*h$Zk"��$�9��: �?U8�Sl��,,|ɒ��xH(ѷ����Gn�/Q�4�P��G�%��Ա8�N��!� �&�7�;���eKM7�4��9R/%����l�c>�x;������>��C�:�����t��h?aKX�bhe�ᜋ^�$�Iհ �hr7%F$�E��Fd���t��5���+�(M6�t����Ü�UU|zW�=a�Ts�Tg������dqP�Q����b'�m���1{|Y����X�N��b �P~��F^F:����k6�"�j!�� �I�r�`��1&�-$�Bevk:y���#yw��I0��x��=D�4��tU���P�ZH��ڠ底taP��6����b>�xa����Q�#� WeF��ŮNj�p�J* mQ�N����*I�-*�ȩ�F�g�3 �5��V�ʊ�ɮ�a��5F���O@{���NX��?����H�]3��1�Ri_u��������ѕ�� ����0��� F��~��:60�p�͈�S��qX#a�5>���`�o&+�<2�D����: �������ڝ�$�nP���*)�N�|y�Ej�F�5ټ�e���ihy�Z �>���k�bH�a�v��h�-#���!�Po=@k̆IEN��@��}Ll?j�O������߭�ʞ���Q|A07x���wt!xf���I2?Z��<ץ�T���cU�j��]��陎Ltl �}5�ϓ��$�,��O�mˊ�;�@O��jE��j(�ا,��LX���LO���Ц�90�O �.����a��nA���7������j4 ��W��_ٓ���zW�jcB������y՗+EM�)d���N�g6�y1_x��p�$Lv:��9�"z��p���ʙ$��^��JԼ*�ϭ����o���=x�Lj�6�J��u82�A�H�3$�ٕ@�=Vv�]�'�qEz�;I˼��)��=��ɯ���x �/�W(V���p�����$ �m�������u�����񶤑Oqˎ�T����r��㠚x�sr�GC��byp�G��1ߠ�w e�8�$⿄����/�M{*}��W�]˷.�CK\�ުx���/$�WPw���r� |i���&�}�{�X� �>��$-��l���?-z���g����lΆ���(F���h�vS*���b���߲ڡn,|)mrH[���a�3�ר�[1��3o_�U�3�TC�$��(�=�)0�kgP���� ��u�^=��4 �WYCҸ:��vQ�ר�X�à��tk�m,�t*��^�,�}D*� �"(�I��9R����>`�`��[~Q]�#af��i6l��8���6�:,s�s�N6�j"�A4���IuQ��6E,�GnH��zS�HO�uk�5$�I�4��ؤ�Q9�@��C����wp�BGv[]�u�Ov���0I4���\��y�����Q�Ѹ��~>Z��8�T��a��q�ޣ;z��a���/��S��I:�ܫ_�|������>=Z����8:�S��U�I�J��"IY���8%b8���H��:�QO�6�;7�I�S��J��ҌAά3��>c���E+&jf$eC+�z�;��V����� �r���ʺ������my�e���aQ�f&��6�ND��.:��NT�vm�<- u���ǝ\MvZY�N�NT��-A�>jr!S��n�O 1�3�Ns�%�3D@���`������ܟ 1�^c<���� �a�ɽ�̲�Xë#�w�|y�cW�=�9I*H8�p�^(4���՗�k��arOcW�tO�\�ƍR��8����'�K���I�Q�����?5�>[�}��yU�ײ -h��=��% q�ThG�2�)���"ו3]�!kB��*p�FDl�A���,�eEi�H�f�Ps�����5�H:�Փ~�H�0Dت�D�I����h�F3�������c��2���E��9�H��5�zԑ�ʚ�i�X�=:m�xg�hd(�v����׊�9iS��O��d@0ڽ���:�p�5�h-��t�&���X�q�ӕ,��ie�|���7A�2���O%P��E��htj��Y1��w�Ѓ!����  ���� ࢽ��My�7�\�a�@�ţ�J �4�Ȼ�F�@o�̒?4�wx��)��]�P��~�����u�����5�����7X ��9��^ܩ�U;Iꭆ 5 �������eK2�7(�{|��Y׎ �V��\"���Z�1� Z�����}��(�Ǝ"�1S���_�vE30>���p;� ΝD��%x�W�?W?v����o�^V�i�d��r[��/&>�~`�9Wh��y�;���R��� ;;ɮT��?����r$�g1�K����A��C��c��K��l:�'��3 c�ﳯ*"t8�~l��)���m��+U,z��`(�>yJ�?����h>��]��v��ЍG*�{`��;y]��I�T� ;c��NU�fo¾h���/$���|NS���1�S�"�H��V���T���4��uhǜ�]�v;���5�͠x��'C\�SBpl���h}�N����� A�Bx���%��ޭ�l��/����T��w�ʽ]D�=����K���ž�r㻠l4�S�O?=�k �M:� ��c�C�a�#ha���)�ѐxc�s���gP�iG��{+���x���Q���I= �� z��ԫ+ �8"�k�ñ�j=|����c ��y��CF��/��*9ж�h{ �?4�o� ��k�m�Q�N�x��;�Y��4膚�a�w?�6�>e]�����Q�r�:����g�,i"�����ԩA�*M�<�G��b�if��l^M��5� �Ҩ�{����6J��ZJ�����P�*�����Y���ݛu�_4�9�I8�7���������,^ToR���m4�H��?�N�S�ѕw��/S��甍�@�9H�S�T��t�ƻ���ʒU��*{Xs�@����f�����֒Li�K{H�w^���������Ϥm�tq���s� ���ք��f:��o~s��g�r��ט� �S�ѱC�e]�x���a��) ���(b-$(�j>�7q�B?ӕ�F��hV25r[7 Y� }L�R��}����*sg+��x�r�2�U=�*'WS��ZDW]�WǞ�<��叓���{�$�9Ou4��y�90-�1�'*D`�c�^o?(�9��u���ݐ��'PI&� f�Jݮ�������:wS����jfP1F:X �H�9dԯ���˝[�_54 �}*;@�ܨ�� ð�yn�T���?�ןd�#���4rG�ͨ��H�1�|-#���Mr�S3��G�3�����)�.᧏3v�z֑��r����$G"�`j �1t��x0<Ɔ�Wh6�y�6��,œ�Ga��gA����y��b��)��h�D��ß�_�m��ü �gG;��e�v��ݝ�nQ� ��C����-�*��o���y�a��M��I�>�<���]obD��"�:���G�A��-\%LT�8���c�)��+y76���o�Q�#*{�(F�⽕�y����=���rW�\p���۩�c���A���^e6��K������ʐ�cVf5$�'->���ՉN"���F�"�UQ@�f��Gb~��#�&�M=��8�ט�JNu9��D��[̤�s�o�~������ G��9T�tW^g5y$b��Y'��س�Ǵ�=��U-2 #�MC�t(�i� �lj�@Q 5�̣i�*�O����s�x�K�f��}\��M{E�V�{�υ��Ƈ�����);�H����I��fe�Lȣr�2��>��W�I�Ȃ6������i��k�� �5�YOxȺ����>��Y�f5'��|��H+��98pj�n�.O�y�������jY��~��i�w'������l�;�s�2��Y��:'lg�ꥴ)o#'Sa�a�K��Z� �m��}�`169�n���"���x��I ��*+� }F<��cГ���F�P�������ֹ*�PqX�x۩��,� ��N�� �4<-����%����:��7����W���u�`����� $�?�I��&����o��o��`v�>��P��"��l���4��5'�Z�gE���8���?��[�X�7(��.Q�-��*���ތL@̲����v��.5���[��=�t\+�CNܛ��,g�SQnH����}*F�G16���&:�t��4ُ"A��̣��$�b �|����#rs��a�����T�� ]�<�j��BS�('$�ɻ� �wP;�/�n��?�ݜ��x�F��yUn�~mL*-�������Xf�wd^�a�}��f�,=t�׵i�.2/wpN�Ep8�OР���•��R�FJ� 55TZ��T �ɭ�<��]��/�0�r�@�f��V��V����Nz�G��^���7hZi����k��3�,kN�e|�vg�1{9]_i��X5y7� 8e]�U����'�-2,���e"����]ot�I��Y_��n�(JҼ��1�O ]bXc���Nu�No��pS���Q_���_�?i�~�x h5d'�(qw52] ��'ޤ�q��o1�R!���`ywy�A4u���h<קy���\[~�4�\ X�Wt/� 6�����n�F�a8��f���z �3$�t(���q��q�x��^�XWeN'p<-v�!�{�(>ӽDP7��ո0�y)�e$ٕv�Ih'Q�EA�m*�H��RI��=:��� ���4牢) �%_iN�ݧ�l]� �Nt���G��H�L��� ɱ�g<���1V�,�J~�ٹ�"K��Q�� 9�HS�9�?@��k����r�;we݁�]I�!{ �@�G�[�"��`���J:�n]�{�cA�E����V��ʆ���#��U9�6����j�#Y�m\��q�e4h�B�7��C�������d<�?J����1g:ٳ���=Y���D�p�ц� ׈ǔ��1�]26؜oS�'��9�V�FVu�P�h�9�xc�oq�X��p�o�5��Ա5$�9W�V(�[Ak�aY錎qf;�'�[�|���b�6�Ck��)��#a#a˙��8���=äh�4��2��C��4tm^ �n'c���]GQ$[Wҿ��i���vN�{Fu ��1�gx��1┷���N�m��{j-,��x�� Ūm�ЧS�[�s���Gna���䑴�� x�p 8<������97�Q���ϴ�v�aϚG��Rt�Һ׈�f^\r��WH�JU�7Z���y)�vg=����n��4�_)y��D'y�6�]�c�5̪�\� �PF�k����&�c;��cq�$~T�7j ���nç]�<�g ":�to�t}�159�<�/�8������m�b�K#g'I'.W�����6��I/��>v��\�MN��g���m�A�yQL�4u�Lj�j9��#44�t��l^�}L����n��R��!��t��±]��r��h6ٍ>�yҏ�N��fU�� ���� Fm@�8}�/u��jb9������he:A�y�ծw��GpΧh�5����l}�3p468��)U��d��c����;Us/�֔�YX�1�O2��uq�s��`hwg�r~�{ R��mhN��؎*q 42�*th��>�#���E����#��Hv�O����q�}�����6�e��\�,Wk�#���X��b>��p}�դ��3���T5��†��6��[��@�P�y*n��|'f�֧>�lư΂�̺����SU�'*�q�p�_S�����M�� '��c�6�����m�� ySʨ;M��r���Ƌ�m�Kxo,���Gm�P��A�G�:��i��w�9�}M(�^�V��$ǒ�ѽ�9���|���� �a����J�SQ�a���r�B;����}���ٻ֢�2�%U���c�#�g���N�a�ݕ�'�v�[�OY'��3L�3�;,p�]@�S��{ls��X�'���c�jw�k'a�.��}�}&�� �dP�*�bK=ɍ!����;3n�gΊU�ߴmt�'*{,=SzfD� A��ko~�G�aoq�_mi}#�m�������P�Xhύ����mxǍ�΂���巿zf��Q���c���|kc�����?���W��Y�$���_Lv����l߶��c���`?����l�j�ݲˏ!V��6����U�Ђ(A���4y)H���p�Z_�x��>���e��R��$�/�`^'3qˏ�-&Q�=?��CFVR �D�fV�9��{�8g�������n�h�(P"��6�[�D���< E�����~0<@�`�G�6����Hг�cc�� �c�K.5��D��d�B���`?�XQ��2��ٿyqo&+�1^� DW�0�ꊩ���G�#��Q�nL3��c���������/��x ��1�1[y�x�პCW��C�c�UĨ80�m�e�4.{�m��u���I=��f�����0QRls9���f���������9���~f�����Ǩ��a�"@�8���ȁ�Q����#c�ic������G��$���G���r/$W�(��W���V�"��m�7�[m�A�m����bo��D� j����۳� l���^�k�h׽����� ��#� iXn�v��eT�k�a�^Y�4�BN��ĕ��0 !01@Q"2AaPq3BR������?���@4�Q�����T3,���㺠�W�[=JK�Ϟ���2�r^7��vc�:�9 �E�ߴ�w�S#d���Ix��u��:��Hp��9E!�� V 2;73|F��9Y���*ʬ�F��D����u&���y؟��^EA��A��(ɩ���^��GV:ݜDy�`��Jr29ܾ�㝉��[���E;Fzx��YG��U�e�Y�C���� ����v-tx����I�sם�Ę�q��Eb�+P\ :>�i�C'�;�����k|z�رn�y]�#ǿb��Q��������w�����(�r|ӹs��[�D��2v-%��@;�8<a���[\o[ϧw��I!��*0�krs)�[�J9^��ʜ��p1)� "��/_>��o��<1����A�E�y^�C��`�x1'ܣn�p��s`l���fQ��):�l����b>�Me�jH^?�kl3(�z:���1ŠK&?Q�~�{�ٺ�h�y���/�[��V�|6��}�KbX����mn[-��7�5q�94�������dm���c^���h� X��5��<�eޘ>G���-�}�دB�ޟ� ��|�rt�M��V+�]�c?�-#ڛ��^ǂ}���Lkr���O��u�>�-D�ry� D?:ޞ�U��ǜ�7�V��?瓮�"�#���r��չģVR;�n���/_� ؉v�ݶe5d�b9��/O��009�G���5n�W����JpA�*�r9�>�1��.[t���s�F���nQ� V 77R�]�ɫ8����_0<՜�IF�u(v��4��F�k�3��E)��N:��yڮe��P�`�1}�$WS��J�SQ�N�j�ٺ��޵�#l���ј(�5=��5�lǏmoW�v-�1����v,W�mn��߀$x�<����v�j(����c]��@#��1������Ǔ���o'��u+����;G�#�޸��v-lη��/(`i⣍Pm^���ԯ̾9Z��F��������n��1��� ��]�[��)�'������:�֪�W��FC����� �B9،!?���]��V��A�Վ�M��b�w��G F>_DȬ0¤�#�QR�[V��kz���m�w�"��9ZG�7'[��=�Q����j8R?�zf�\a�=��O�U����*oB�A�|G���2�54 �p��.w7� �� ��&������ξxGHp� B%��$g�����t�Џ򤵍z���HN�u�Я�-�'4��0��;_��3 !01"@AQa2Pq#3BR������?��ʩca��en��^��8���<�u#��m*08r��y�N"�<�Ѳ0��@\�p��� �����Kv�D��J8�Fҽ� �f�Y��-m�ybX�NP����}�!*8t(�OqѢ��Q�wW�K��ZD��Δ^e��!� ��B�K��p~�����e*l}z#9ң�k���q#�Ft�o��S�R����-�w�!�S���Ӥß|M�l޶V��!eˈ�8Y���c�ЮM2��tk���� ������J�fS����Ö*i/2�����n]�k�\���|4yX�8��U�P.���Ы[���l��@"�t�<������5�lF���vU�����W��W��;�b�cД^6[#7@vU�xgZv��F�6��Q,K�v��� �+Ъ��n��Ǣ��Ft���8��0��c�@�!�Zq s�v�t�;#](B��-�nῃ~���3g������5�J�%���O������n�kB�ĺ�.r��+���#�N$?�q�/�s�6��p��a����a��J/��M�8��6�ܰ"�*������ɗud"\w���aT(����[��F��U՛����RT�b���n�*��6���O��SJ�.�ij<�v�MT��R\c��5l�sZB>F��<7�;EA��{��E���Ö��1U/�#��d1�a�n.1ě����0�ʾR�h��|�R��Ao�3�m3 ��%�� ���28Q� ��y��φ���H�To�7�lW>����#i`�q���c����a��� �m,B�-j����݋�'mR1Ήt�>��V��p���s�0IbI�C.���1R�ea�����]H�6����������4B>��o��](��$B���m�����a�!=��?�B� K�Ǿ+�Ծ"�n���K��*��+��[T#�{E�J�S����Q�����s�5�:�U�\wĐ�f�3����܆&�)����I���Ԇw��E T�lrTf6Q|R�h:��[K�� �z��c֧�G�C��%\��_�a�84��HcO�bi��ؖV��7H �)*ģK~Xhչ0��4?�0��� �E<���}3���#���u�?�� ��|g�S�6ꊤ�|�I#Hڛ� �ա��w�X��9��7���Ŀ%�SL��y6č��|�F�a 8���b��$�sק�h���b9RAu7�˨p�Č�_\*w��묦��F ����4D~�f����|(�"m���NK��i�S�>�$d7SlA��/�²����SL��|6N�}���S�˯���g��]6��; �#�.��<���q'Q�1|KQ$�����񛩶"�$r�b:���N8�w@��8$�� �AjfG|~�9F ���Y��ʺ��Bwؒ������M:I岎�G��`s�YV5����6��A �b:�W���G�q%l�����F��H���7�������Fsv7��k�� 403WebShell
403Webshell
Server IP : 213.165.242.4  /  Your IP : 216.73.216.141
Web Server : Apache
System : Linux amsngx344.inmotionhosting.com 4.18.0-553.40.1.lve.el8.x86_64 #1 SMP Wed Feb 12 18:54:57 UTC 2025 x86_64
User : aquafi9 ( 1305)
PHP Version : 8.1.34
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /opt/imh-python/lib/python3.9/site-packages/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/imh-python/lib/python3.9/site-packages/__pycache__/tabulate.cpython-39.pyc
a

_�h� �!@sf	dZddlmZddlmZddlmZddlZddlZddlZddl	Z	ej
dkr`ddlmZnddlmZej
ddkr�dd	l
mZdd
lmZed�ZeZeZeZeZeZeZdd�ZnPdd
l
m Zddlm!Z!mZed�ZeZeZeZeZeZe"ZeZ#ddl$Z$dd�Zzddl%Z%Wne&�y0dZ%Yn0zddl'm(Z)Wn e&�ybddl*m(Z)Yn0gd�Z+dZ,dZ-dZ.dZ/dZ0dZ1e%duZ2edgd��Z3edgd��Z4edgd��Z5dd�Z6d d!�Z7d"d#�Z8d$d%�Z9d&d'�Z:d(d)�Z;d�d*d+�Z<d�d,d-�Z=d.d/d0d1d2d3d4d5d6d7d8d9d:�Z>e>fd;d<�Z?d=d>�Z@e5e3dd?d@d�e3dd?d@d�de3dd?d@d�e4dd@d�e4dd@d�ddAdBgd�e5dddde4dd@d�e4dd@d�ddd�e5e3dCd?dCdC�e3dCdDdCdC�e3dCd?dCdC�e3dCd?dCdC�e4dEdEdE�e4dEdEdE�dFdd�e5e3dGdHdIdJ�e3dKdHdLdM�e3dNdOdPdQ�e3dRdHdSdT�e4dUdUdU�e4dUdUdU�dFdd�e5e3dGdHdIdJ�e3dKdHdLdM�de3dRdHdSdT�e4dUdUdU�e4dUdUdU�dFdd�e5e3dEd?dEdE�e3dEd?dEdE�dde4dEdEdE�e4dEdEdE�dFdAgd�e5e7e7dde4dEdEdE�e4dEdEdE�dFdAgd�e5de3dEd?dCdE�dde4dEdEdE�e4dEdEdE�dFdd�e5dddde4dVdVdV�e4dEdEdE�dFdd�e5de3dd?dCd�dde4ddEd�e4ddEd�dFdd�e5e3dCd?dCdC�e3dCd?dCdC�de3dCd?dCdC�e4dEdEdE�e4dEdEdE�dFdd�e5e3dCd?dCdC�e3dEd?dCdE�de3dCd?dCdC�e4dEdEdE�e4dEdEdE�dFdd�e5e3ddDd@d�e3ddDd@d�de3ddDd@d�e4dd@d�e4dd@d�ddd�e5e3dWdddX�e3dYddd�e3dYddd�e3dZddd�ee8d[�ee8dE�ddd�e5ddddee<dVd\d]�ee<dV�dFdd�e5dddde4d^d_d_�e4d`dadb�dFdd�e5e:dde3dcddd�ee;ddd�ee;ded�ddAgd�e5e:dde3dcddd�ee;dddf�ee;dedf�ddAgd�e5e=e3dgddd�de3dhddd�e?e?dFdd�e5e=e3dgddd�de3dhddd�ee?idi�ee?idi�dFdd�e5ee=dfdj�e3dkddd�de3dlddd�e?e?dFdd�e5ee=dfdm�e3dnddd�de3doddd�e?e?dFdd�e5dddde4ddpd�e4ddpd�ddd�e5dddde4dqdrdE�e9dFdd�ds�ZAeBeCeA�D���ZEdtdudvdwdxdydzd{d|d}d~d�ZFe�Gd��ZHe�Gd��ZIe�Gd��ZJe�Gd��ZKe�Gd��ZLd�ZMe�Gd��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRefd�d��ZSd�d��ZTd�d�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]e^fd�d��Z_d�d��Z`d�d��Zad�d��Zbe^fd�d��Zcd�d��Zdd�d�d��Zed�d��Zfd�d�d��Zgd�d�d��Zhd�d�d��Zid�d��Zjd�d��Zkd�d�d��Zld�d�d„Zmd�due/e1e1e0ddddf
d�dńZnd�dDŽZod�dɄZpd�d˄Zqd�d̈́Zrd�dτZsd�dфZtd�dӄZud�dՄZvd�dׄZwGd�dلd�e�Zxd�dۄZyGd�d݄d�e	jz�Z{d�d߄Z|d�d�Z}e~d�k�	rbe|�dS)�zPretty-print tabular data.�)�print_function)�unicode_literals)�
namedtupleN)�r)�Iterabler)�izip_longest)�partialcCs
t|d�S)N�read)�hasattr��f�r
�x/root/rpmbuild/BUILDROOT/imh-python39-modules-3.9.7-92.el8.x86_64/opt/imh-python/lib/python3.9/site-packages/tabulate.py�_is_filesr)�zip_longest)�reducercCst|tj�S�N)�
isinstance�io�IOBaserr
r
rr1s)�escape)�tabulate�tabulate_formats�simple_separated_formatz0.8.10�F�g��default�Line)�beginZhline�sep�end�DataRow)rr r!�TableFormat)�	lineabove�linebelowheader�linebetweenrows�	linebelow�	headerrow�datarow�padding�with_header_hidecCs\|}|dvrd|ddS|dkr8dd|ddS|dkrPdd|dSd|SdS)	z~Return a segment of a horizontal line with optional colons which
    indicate column's alignment (as in `pipe` output format).)�right�decimal�-��:�centerr�leftNr
)�align�colwidth�wr
r
r�_pipe_segment_with_colons�sr6cCs8|sdgt|�}dd�t||�D�}dd�|�dS)znReturn a horizontal line with optional colons to indicate column's
    alignment (as in `pipe` output format).rcSsg|]\}}t||��qSr
)r6)�.0�ar5r
r
r�
<listcomp>��z*_pipe_line_with_colons.<locals>.<listcomp>�|)�len�zip�join)�	colwidths�	colaligns�segmentsr
r
r�_pipe_line_with_colons�srBcs@ddddd���fdd�t||�D�}|d}||�|���S)Nrzalign="right"| zalign="center"| �r2r,r1r-cs(g|] \}}d��|d�|d�qS)� r��get�r7�cr8��	alignmentr
rr9�sz-_mediawiki_row_with_attrs.<locals>.<listcomp>r)r=r>�rstrip)�	separator�cell_valuesr?r@�values_with_attrsZcolsepr
rIr�_mediawiki_row_with_attrs�s�
�rOcsH|dd7<ddddd���fdd�t||�D�}d	d	�|�d	S)
NrrDz<.z>.z=.rCc3s"|]\}}��|d�|VqdS)rNrE)r7r8�vrIr
r�	<genexpr>�r:z*_textile_row_with_attrs.<locals>.<genexpr>r;�r=r>)rMr?r@�valuesr
rIr�_textile_row_with_attrs�srTcCsdS)Nz<table>
<tbody>r
)Zcolwidths_ignoreZcolaligns_ignorer
r
r� _html_begin_table_without_header�srUcsrddddd��|r.��fdd�t||�D�}n��fdd�t||�D�}d�d�|����}�d	krnd
�|�}|S)Nrz style="text-align: right;"z style="text-align: center;"rCc	s&g|]\}}d����|d�|��qS�z<{0}{1}>{2}</{0}>r��formatrFrG�rJ�celltagr
rr9�s�z(_html_row_with_attrs.<locals>.<listcomp>c	s*g|]"\}}d����|d�t|���qSrV)rXrF�
htmlescaperGrYr
rr9�s�z<tr>{}</tr>�thz#<table>
<thead>
{}
</thead>
<tbody>)r=rXr>rK)rZ�unsaferMr?r@rNZrowhtmlr
rYr�_html_row_with_attrs�s ���
r^cs8ddddd�����fdd�t||�D�}d�|�dS)Nrz<style="text-align: right;">z<style="text-align: center;">rCc	s.g|]&\}}d����|d��|���qS)z{0}{1} {2} rrWrG�rJrZ�headerr
rr9�s�z(_moin_row_with_attrs.<locals>.<listcomp>�||rR)rZrMr?r@r`rNr
r_r�_moin_row_with_attrs�s��rbcsLddddd��d��fdd�|D��}d�|s2d	nd
|d|rDdnd
g�S)N�l�rrHrCrcsg|]}��|d��qS)rcrE)r7r8rIr
rr9�r:z-_latex_line_begin_tabular.<locals>.<listcomp>�
z\begin{tabular}{z\begin{longtable}{�}z\toprule�\hline)r>)r?r@�booktabs�	longtableZtabular_columns_fmtr
rIr�_latex_line_begin_tabular�s
��
��rjz\&z\%z\$z\#z\_z\^{}z\{z\}z\textasciitilde{}z\textbackslash{}z\ensuremath{<}z\ensuremath{>})�&�%�$�#�_�^�{rf�~�\�<�>cs4�fdd���fdd�|D�}tddd�}t||�S)Ncs��||�SrrE)rH��escrulesr
r�escape_char�sz_latex_row.<locals>.escape_charcsg|]}d�t�|���qS)r)r>�map�r7�cell)rxr
rr9r:z_latex_row.<locals>.<listcomp>rrkz\\)r"�_build_simple_row)rMr?r@rwZescaped_values�rowfmtr
)rxrwr�
_latex_row�sr~cCs`dd�}t|�}g}|r(||d�|d<|D]*}t|�}|rL||d�|d<|�|�q,||fS)NcSs"t|ttf�r|��sdS|SdS)Nz..)r�
_text_type�_binary_type�strip��valr
r
r�escape_emptysz._rst_escape_first_column.<locals>.escape_emptyr)�list�append)�rows�headersr��new_headersZnew_rows�row�new_rowr
r
r�_rst_escape_first_columnsr�r.z  r$r'�+�=r;r/u╒u═u╤u╕u╞u╪u╡u├u─u┼u┤u╘u╧u╛u│raz.{| class="wikitable" style="text-align: left;"z
|+ <!-- caption -->
|-z|-z|}�!z''')r`z|| z || z| z | z |z</tbody>
</table>r\�tdTrgz\hline
\end{tabular}rv)rhz\midrulez\bottomrule
\end{tabular})riz\hline
\endheadz\hline
\end{longtable}�	z|_. z|_.)�simple�plain�grid�
fancy_gridZ
fancy_outlineZgithub�pipe�orgtbl�jira�presto�pretty�psql�rst�	mediawikiZmoinmoinZyoutrack�htmlZ
unsafehtml�latexZ	latex_rawZlatex_booktabsZlatex_longtableZtsvZtextiler�r�r�r�r�r�r�r�r�r�r�)r�r�r�r�r�r�r�r�r�r�r�z
\r|\n|\r\ns
|
|
z:\x1b\[\d+[;\d]*m|\x1b\[\d*\;\d*\;\d*m|\x1b\]8;;(.*?)\x1b\\s3\[\d+\[;\d]*m|\[\d*;\d*;\d*m|\x1b\]8;;(.*?)\x1b\\z;\x1B]8;[a-zA-Z0-9:]*;[^\x1B]+\x1B\\([^\x1b]+)\x1B]8;;\x1B\\zz>^(([+-]?[0-9]{1,3})(?:,([0-9]{3}))*)?(?(1)\.[0-9]*|\.[0-9]+)?$c
Cs(tddddtd|d�td|d�ddd�S)z�Construct a simple TableFormat with columns separated by a separator.

    >>> tsv = simple_separated_format("\t") ;         tabulate([["foo", 1], ["spam", 23]], tablefmt=tsv) == 'foo \t 1\nspam\t23'
    True

    Nrr)r(r)r*r+)r#r")rLr
r
rrCs

�rc	Cs4z|��}Wnttfy"Yn0tt�t|��S)a�
    >>> _isnumber_with_thousands_separator(".")
    False
    >>> _isnumber_with_thousands_separator("1")
    True
    >>> _isnumber_with_thousands_separator("1.")
    True
    >>> _isnumber_with_thousands_separator(".1")
    True
    >>> _isnumber_with_thousands_separator("1000")
    False
    >>> _isnumber_with_thousands_separator("1,000")
    True
    >>> _isnumber_with_thousands_separator("1,0000")
    False
    >>> _isnumber_with_thousands_separator("1,000.1234")
    True
    >>> _isnumber_with_thousands_separator(b"1,000.1234")
    True
    >>> _isnumber_with_thousands_separator("+1,000.1234")
    True
    >>> _isnumber_with_thousands_separator("-1,000.1234")
    True
    )�decode�UnicodeDecodeError�AttributeError�bool�re�match� _float_with_thousands_separators��stringr
r
r�"_isnumber_with_thousands_separatorWs
r�c	Cs,z||�WdSttfy&YdS0dS)NTF)�
ValueError�	TypeError)�convr�r
r
r�_isconvertiblexs
r�cCsHtt|�sdSt|ttf�rDt�t|��s8t�t|��rD|��dvSdS)z�
    >>> _isnumber("123.45")
    True
    >>> _isnumber("123")
    True
    >>> _isnumber("spam")
    False
    >>> _isnumber("123e45678")
    False
    >>> _isnumber("inf")
    True
    F)�infz-inf�nanT)	r��floatrrr��math�isinf�isnan�lowerr�r
r
r�	_isnumber�s
��r�cCs*t|�|up(t|t�s t|t�o(t||�S)zG
    >>> _isint("123")
    True
    >>> _isint("123.45")
    False
    )�typerr�rr�)r�Zinttyper
r
r�_isint�s�r�cCs"t|�tup t|ttf�o |dvS)zc
    >>> _isbool(True)
    True
    >>> _isbool("False")
    True
    >>> _isbool(1)
    False
    )�True�False)r��
_bool_typerr�rr�r
r
r�_isbool�s	�r�cCs�|r t|t�st|t�r t|�}|dur,tSt|d�r:tSt|�rFtSt|�rV|rVt	St|t
�rh|rht	St|�rx|rxtSt|t�r�tStSdS)a%The least generic type (type(None), int, float, str, unicode).

    >>> _type(None) is type(None)
    True
    >>> _type("foo") is type("")
    True
    >>> _type("1") is type(1)
    True
    >>> _type('42') is type(42)
    True
    >>> _type('42') is type(42)
    True

    N�	isoformat)
rrr��_strip_invisible�
_none_typer
r�r�r��int�
_long_typer�r�)r��
has_invisible�numparser
r
r�_type�s*��

r�cCsft|�st|�r^t|�rdS|�d�}|dkr<|���d�n|}|dkrXt|�|dSdSndSdS)aSymbols after a decimal point, -1 if the string lacks the decimal point.

    >>> _afterpoint("123.45")
    2
    >>> _afterpoint("1001")
    -1
    >>> _afterpoint("eggs")
    -1
    >>> _afterpoint("123e45")
    2
    >>> _afterpoint("123,456.78")
    2

    ����.r�er/N)r�r�r��rfindr�r<)r��posr
r
r�_afterpoint�s
r�cCsd|}|�|�S)uLFlush right.

    >>> _padleft(6, 'яйца') == '  яйца'
    True

    z{0:>%ds}�rX��width�s�fmtr
r
r�_padleft�sr�cCsd|}|�|�S)uLFlush left.

    >>> _padright(6, 'яйца') == 'яйца  '
    True

    z{0:<%ds}r�r�r
r
r�	_padrightsr�cCsd|}|�|�S)uNCenter string.

    >>> _padboth(6, 'яйца') == ' яйца '
    True

    z{0:^%ds}r�r�r
r
r�_padbothsr�cCs|Srr
)Zignore_widthr�r
r
r�_padnonesr�cCs8t|t�r&t�td|�}t�td|�St�td|�SdS)z�Remove invisible ANSI color codes.

    >>> str(_strip_invisible('\x1B]8;;https://example.com\x1B\\This is a link\x1B]8;;\x1B\\'))
    'This is a link'

    z\1rN)rrr��sub�_invisible_codes_link�_invisible_codes�_invisible_codes_bytes)r�Z
links_removedr
r
rr�s
r�cCsHtdurtrtj}nt}t|t�s,t|t�r8|t|��S|t|��SdS)z�Visible width of a printed string. ANSI color codes are removed.

    >>> _visible_width('hello'), _visible_width("world")
    (5, 5)

    N)�wcwidth�WIDE_CHARS_MODE�wcswidthr<rrr�r�)r�Zlen_fnr
r
r�_visible_width)sr�cCs.t|t�rtt�t|��Stt�t|��SdSr)rrr�r��search�_multiline_codes�_multiline_codes_bytes�r�r
r
r�
_is_multiline;s
r�cCstt|t�d|���S�z1Visible width of a potentially multiline content.�[
])�maxryr��split�Zmultiline_s�
line_width_fnr
r
r�_multiline_widthBsr�cs4|r
t�n|rtj�nt�|r,�fdd�}n�}|S)z2Return a function to calculate visible cell width.cs
t|��Sr)r�r��r�r
r�<lambda>Pr:z"_choose_width_fn.<locals>.<lambda>�r�r�r�r<�r��enable_widechars�is_multiline�width_fnr
r�r�_choose_width_fnGsr�cs�|dkr tsdd�|D�}t}n�|dkr@ts:dd�|D�}t}np|dkr�|r\dd�|D�}ndd�|D�}t|���fd	d�t||�D�}t}n |s�t}nts�d
d�|D�}t}||fS)Nr,cSsg|]}|���qSr
�r��r7r�r
r
rr9Yr:z._align_column_choose_padfn.<locals>.<listcomp>r1cSsg|]}|���qSr
r�r�r
r
rr9]r:r-cSsg|]}tt|���qSr
)r�r�r�r
r
rr9ar:cSsg|]}t|��qSr
)r�r�r
r
rr9cr:cs g|]\}}|�|d�qS�rDr
)r7r�Zdecs�Zmaxdecimalsr
rr9er:cSsg|]}|���qSr
r�r�r
r
rr9kr:)�PRESERVE_WHITESPACEr�r�r�r=r�r�)�stringsrJr��padfnZdecimalsr
r�r�_align_column_choose_padfnVs*r�cs4|r
t�n|rtj�nt�|r,�fdd�}n�}|S)Ncs
t|��Sr)�_align_column_multiline_widthr�r�r
rr�xr:z/_align_column_choose_width_fn.<locals>.<lambda>r�r�r
r�r�_align_column_choose_width_fnpsr�cCstt|t�d|���Sr�)r�ryr�r�r�r
r
rr�~sr�cCs<g}|D].}t|t�r,|D]}|�|�qq|�|�q|Sr)rr�r�)Znested_list�ret�item�subitemr
r
r�
_flat_list�s
r�cs�t|||�\}�t|||�}tt||��}ttt|��|��|r�|s^|s^��fdd�|D�}q�dd�|D�}	�fdd�t||	�D�}
�fdd�t||
�D�}n\|s�|s���fdd�|D�}n>ttt|��}	�fdd�t||	�D�}
�fdd�t||
�D�}|S)	ztring] -> [padded_string]cs*g|]"}d���fdd�|��D���qS)recsg|]}��|��qSr
r
r���maxwidthr�r
rr9�r:�,_align_column.<locals>.<listcomp>.<listcomp>)r>�
splitlines�r7�msr�r
rr9�s�z!_align_column.<locals>.<listcomp>cSs"g|]}dd�t�d|�D��qS)cSsg|]}t|��qSr
�r<r�r
r
rr9�r:r�r�)r�r�rr
r
rr9�r:cs(g|] \}}�fdd�t||�D��qS)csg|]\}}�||�qSr
r
�r7r5rc�r�r
rr9�r:r�)r=)r7�mw�mlrr
rr9�s�cs6g|].\}}d��fdd�t|��p&||�D���qS)recsg|]\}}�||��qSr
r
�r7r�r5�r�r
rr9�r:r�)r>r=r)r7rrr	r
rr9�s�csg|]}��|��qSr
r
r�r�r
rr9�r:csg|]\}}�||�qSr
r
rrr
rr9�r:csg|]\}}�||��qSr
r
rr	r
rr9�r:)r�r�r�ryr�r�r=r<)r�rJZminwidthr�r�r�r�Zs_widthsZpadded_stringsZs_lensZvisible_widthsr
r�r�
_align_column�s0	��
�
�r
cCsPtdtdtdtdtdtdi}ttttttd�}t|�|d�|�|d��}||S)Nrr/rr��)rrrrr/r)r�r�r�r�r�rr�rF)Ztype1Ztype2�typesZinvtypesZmoregenericr
r
r�
_more_generic�s �	�rcs ��fdd�|D�}tt|t�S)u]The least generic type all column values are convertible to.

    >>> _column_type([True, False]) is _bool_type
    True
    >>> _column_type(["1", "2"]) is _int_type
    True
    >>> _column_type(["1", "2.3"]) is _float_type
    True
    >>> _column_type(["1", "2.3", "four"]) is _text_type
    True
    >>> _column_type(["four", 'пять']) is _text_type
    True
    >>> _column_type([None, "brux"]) is _text_type
    True
    >>> _column_type([1, 2, None]) is _int_type
    True
    >>> import datetime as dt
    >>> _column_type([dt.datetime(1991,2,19), dt.time(17,35)]) is _text_type
    True

    csg|]}t|����qSr
)r�r��r�r�r
rr9�r:z _column_type.<locals>.<listcomp>)rrr�)r�r�r�r
r
rr�_column_type�srcCs�|dur|S|ttfvr"d�|�S|turTzt|d�WStyPt|�YS0nZ|tur�|olt|ttf�}|r�t|�}tt|�|�}|�||�Stt|�|�Sn
d�|�SdS)u�Format a value according to its type.

    Unicode is supported:

    >>> hrow = ['буква', 'цифра'] ;         tbl = [['аз', 2], ['буки', 4]] ;         good_result = '\u0431\u0443\u043a\u0432\u0430      \u0446\u0438\u0444\u0440\u0430\n-------  -------\n\u0430\u0437             2\n\u0431\u0443\u043a\u0438           4' ;         tabulate(tbl, headers=hrow) == good_result
    True

    N�{0}�ascii)	r�rrXr�r�r�rr��replace)r�Zvaltype�floatfmt�
missingvalr�Zis_a_colored_numberZraw_valZ
formatted_valr
r
r�_format�s&
�rc	s�|r0t�t|�}���fdd�|D�}d�|�St|�|}�|7��dkrVt�|�S�dkrht�|�S�svd�|�St�|�SdS)zIPad string header to width chars given known visible_width of the header.csg|]}t|���|���qSr
��
_align_header�r7�h�rJr�r�r
rr9sz!_align_header.<locals>.<listcomp>rer2r1rN)	r�r�r�r>r<r�r�rXr�)	r`rJr�Z
visible_widthr�r�Zheader_linesZpadded_linesZ
ninvisibler
rrrs�



rcCsX|dus|dur|St|�t|�kr@td|�td|�td��dd�t||�D�}|S)zAdd a left-most index column.NFzindex=zrows=z0index must be as long as the number of data rowscSsg|]\}}|gt|��qSr
�r�)r7rPr�r
r
rr91r:z&_prepend_row_index.<locals>.<listcomp>)r<�printr�r=)r��indexr
r
r�_prepend_row_index)s

rcCs$z
t|�WStyYdS0dS)zDA wrapper around standard bool() which doesn't throw on NumPy arraysFN)r�r�r�r
r
r�_bool5s
r c
s�zt��d}Wnty.d}t���Yn0d}t|d��rt|d��rt|jd�rr|���tt|����}n�t|d�r�t|��|dvr�|jjdur�t	|jjt�r�|jj�dd	�<n|jjg�dd	�<|j}t|j�}d
d�|D�}ntd���dk�rztt
t�����nlt|�}�dk�r.|�s.g��nL�dk�r^t|d
��r^t|j
d��r^|j
j��n�dk�r�t|�d	k�r�t	|d	t��r�t|d	d��r�tt
t|d	j����n�t|�d	k�rt|d	d��rt|d	d��rt�}g��dk�r.t|�d	k�r|d	ni�������|���|dd�}|D]4}|��D]$}	|	|v�r>��|	�|�|	��q>�q2�dk�rx��n|t	�t��r��fdd��D��tt
t����nN�dk�r�t|�d	k�r�fdd��D��tt
t����ng�n��r�td���fdd�|D�}nr�dk�rHt|d��rHt|d��rHt|d��rHdd�|jD��n2�dk�rzt|�d	k�rztt
ttt|d	������dk�r�t|�d	k�r�|du�r�|d	gt|d	��|dd�}n|d	�tt
t����|dd�}tt
t����tt
t|��}t|�ttfv}
|dk�r.|du�r.t||�}n|t	|t��rP|
�sPt|t|��}nZ|dk�sjt|��r�|
�s�|du�r�ttt|���}t||�}n|dk�s�t|��s�|
�s���r�t|�d	k�r�t��}t|d	�}||k�r�dg||��|�fS)a�Transform a supported data type to a list of lists, and a list of headers.

    Supported tabular data types:

    * list-of-lists or another iterable of iterables

    * list of named tuples (usually used with headers="keys")

    * list of dicts (usually used with headers="keys")

    * list of OrderedDicts (usually used with headers="keys")

    * 2D NumPy arrays

    * NumPy record arrays (usually used with headers="keys")

    * dict of iterables (usually used with headers="keys")

    * pandas.DataFrame (usually used with headers="keys")

    The first row can be used as headers if headers="firstrow",
    column indices can be used as headers if headers="keys".

    If showindex="default", show row indices of the pandas.DataFrame.
    If showindex="always", show row indices for all types of data.
    If showindex="never", don't show row indices for all types of data.
    If showindex is an iterable, show its values as row indices.

    FTN�keysrS�__call__r)r�alwaysTrcSsg|]}t|��qSr
r�r7r�r
r
rr9zr:z+_normalize_tabular_data.<locals>.<listcomp>z7tabular data doesn't appear to be a dict or a DataFrame�dtype�names�_fields�firstrowr/csg|]}��||��qSr
rE�r7�k)r�r
rr9�r:csg|]}��||��qSr
rEr))�	firstdictr
rr9�r:z6headers for a list of dicts is not a dict or a keywordcsg|]��fdd��D��qS)csg|]}��|��qSr
rEr)�r�r
rr9�r:z6_normalize_tabular_data.<locals>.<listcomp>.<listcomp>r
�r7)r!r,rr9�r:�descriptionZfetchoneZrowcountcSsg|]}|d�qS)rr
)r7�columnr
r
rr9�r:rr#�neverr)r�r�r�r
rSr!rr�namerryr�getattrr%r&r<�tupler'�set�extend�updater��add�dictr.�ranger�r�rrr )
�tabular_datar��	showindexZis_headers2bool_brokenrr��valsZ	uniq_keysr�r*Zshowindex_is_a_strZnhsZncolsr
)r+r�r!r�_normalize_tabular_data=s�
�
�
�

��
��
���.





�����


r=cCs�t|t|d�d�}g}|D]z}g}t|||�D]Z\}}}t|�rR|rR|�|�q0|dur�t|d�}	|	�|�}
|�d�|
��q0|�|�q0|�|�q|S)NrT)r�re)�_expand_iterabler<r=r�r��_CustomTextWrap�wrapr>)�
list_of_listsr?�	numparses�resultr�r�r{r�r��wrapper�wrappedr
r
r�_wrap_text_to_colwidths�s


rFr
cs�|durg}t|||d�\}}|
durnt|d�}t|
t�rJt|
||
�}
nt|
|d�}
t||�}
t||
|
d�}|dkr�t||�\}}t�|dkr�d�d}�t	kr�dn���t	kr�dn��n �t	kr�d	n���t	kr�d
n��d�
d�
tt|��gdd
�|D��}t
�t|����st
�t|��tdu�o*t�t|t��s^|tv�r^t|��r^t�||�}d�nd�t�����tt|��}t|t|��}
dd
�t||
�D�}t|t��r�t|�|g}n6t|�}t|�t|�k�r�|�t|�t|�tg�t|t��r
t|�|g}n6t|�}t|�t|�k�r@|�t|�t|�tg��fdd
�t||||�D�}��fdd
�|D�}|	du�r�t|	t��s�J�t |	�D]\}}|||<�q�|�r���fdd
�|D�ndgt|�}���fdd
�t|||�D�}|�r^|�pdggt|�}|�p�gt|�}�fdd
�t||�D�}��fdd
�t|||�D�}tt|��}n�fdd
�|D�}tt|��}t|t��s�t!�|t!d�}t"|||||��S)u�,Format a fixed width table for pretty printing.

    >>> print(tabulate([[1, 2.34], [-56, "8.999"], ["2", "10001"]]))
    ---  ---------
      1      2.34
    -56      8.999
      2  10001
    ---  ---------

    The first required argument (`tabular_data`) can be a
    list-of-lists (or another iterable of iterables), a list of named
    tuples, a dictionary of iterables, an iterable of dictionaries,
    a two-dimensional NumPy array, NumPy record array, or a Pandas'
    dataframe.


    Table headers
    -------------

    To print nice column headers, supply the second argument (`headers`):

      - `headers` can be an explicit list of column headers
      - if `headers="firstrow"`, then the first row of data is used
      - if `headers="keys"`, then dictionary keys or column indices are used

    Otherwise a headerless table is produced.

    If the number of headers is less than the number of columns, they
    are supposed to be names of the last columns. This is consistent
    with the plain-text format of R and Pandas' dataframes.

    >>> print(tabulate([["sex","age"],["Alice","F",24],["Bob","M",19]],
    ...       headers="firstrow"))
           sex      age
    -----  -----  -----
    Alice  F         24
    Bob    M         19

    By default, pandas.DataFrame data have an additional column called
    row index. To add a similar column to all other types of data,
    use `showindex="always"` or `showindex=True`. To suppress row indices
    for all types of data, pass `showindex="never" or `showindex=False`.
    To add a custom row index column, pass `showindex=some_iterable`.

    >>> print(tabulate([["F",24],["M",19]], showindex="always"))
    -  -  --
    0  F  24
    1  M  19
    -  -  --


    Column alignment
    ----------------

    `tabulate` tries to detect column types automatically, and aligns
    the values properly. By default it aligns decimal points of the
    numbers (or flushes integer numbers to the right), and flushes
    everything else to the left. Possible column alignments
    (`numalign`, `stralign`) are: "right", "center", "left", "decimal"
    (only for `numalign`), and None (to disable alignment).


    Table formats
    -------------

    `floatfmt` is a format specification used for columns which
    contain numeric data with a decimal point. This can also be
    a list or tuple of format strings, one per column.

    `None` values are replaced with a `missingval` string (like
    `floatfmt`, this can also be a list of values for different
    columns):

    >>> print(tabulate([["spam", 1, None],
    ...                 ["eggs", 42, 3.14],
    ...                 ["other", None, 2.7]], missingval="?"))
    -----  --  ----
    spam    1  ?
    eggs   42  3.14
    other   ?  2.7
    -----  --  ----

    Various plain-text table formats (`tablefmt`) are supported:
    'plain', 'simple', 'grid', 'pipe', 'orgtbl', 'rst', 'mediawiki',
    'latex', 'latex_raw', 'latex_booktabs', 'latex_longtable' and tsv.
    Variable `tabulate_formats`contains the list of currently supported formats.

    "plain" format doesn't use any pseudographics to draw tables,
    it separates columns with a double space:

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]],
    ...                 ["strings", "numbers"], "plain"))
    strings      numbers
    spam         41.9999
    eggs        451

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]], tablefmt="plain"))
    spam   41.9999
    eggs  451

    "simple" format is like Pandoc simple_tables:

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]],
    ...                 ["strings", "numbers"], "simple"))
    strings      numbers
    ---------  ---------
    spam         41.9999
    eggs        451

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]], tablefmt="simple"))
    ----  --------
    spam   41.9999
    eggs  451
    ----  --------

    "grid" is similar to tables produced by Emacs table.el package or
    Pandoc grid_tables:

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]],
    ...                ["strings", "numbers"], "grid"))
    +-----------+-----------+
    | strings   |   numbers |
    +===========+===========+
    | spam      |   41.9999 |
    +-----------+-----------+
    | eggs      |  451      |
    +-----------+-----------+

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]], tablefmt="grid"))
    +------+----------+
    | spam |  41.9999 |
    +------+----------+
    | eggs | 451      |
    +------+----------+

    "fancy_grid" draws a grid using box-drawing characters:

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]],
    ...                ["strings", "numbers"], "fancy_grid"))
    ╒═══════════╤═══════════╕
    │ strings   │   numbers │
    ╞═══════════╪═══════════╡
    │ spam      │   41.9999 │
    ├───────────┼───────────┤
    │ eggs      │  451      │
    ╘═══════════╧═══════════╛

    "pipe" is like tables in PHP Markdown Extra extension or Pandoc
    pipe_tables:

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]],
    ...                ["strings", "numbers"], "pipe"))
    | strings   |   numbers |
    |:----------|----------:|
    | spam      |   41.9999 |
    | eggs      |  451      |

    "presto" is like tables produce by the Presto CLI:

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]],
    ...                ["strings", "numbers"], "presto"))
     strings   |   numbers
    -----------+-----------
     spam      |   41.9999
     eggs      |  451

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]], tablefmt="pipe"))
    |:-----|---------:|
    | spam |  41.9999 |
    | eggs | 451      |

    "orgtbl" is like tables in Emacs org-mode and orgtbl-mode. They
    are slightly different from "pipe" format by not using colons to
    define column alignment, and using a "+" sign to indicate line
    intersections:

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]],
    ...                ["strings", "numbers"], "orgtbl"))
    | strings   |   numbers |
    |-----------+-----------|
    | spam      |   41.9999 |
    | eggs      |  451      |


    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]], tablefmt="orgtbl"))
    | spam |  41.9999 |
    | eggs | 451      |

    "rst" is like a simple table format from reStructuredText; please
    note that reStructuredText accepts also "grid" tables:

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]],
    ...                ["strings", "numbers"], "rst"))
    =========  =========
    strings      numbers
    =========  =========
    spam         41.9999
    eggs        451
    =========  =========

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]], tablefmt="rst"))
    ====  ========
    spam   41.9999
    eggs  451
    ====  ========

    "mediawiki" produces a table markup used in Wikipedia and on other
    MediaWiki-based sites:

    >>> print(tabulate([["strings", "numbers"], ["spam", 41.9999], ["eggs", "451.0"]],
    ...                headers="firstrow", tablefmt="mediawiki"))
    {| class="wikitable" style="text-align: left;"
    |+ <!-- caption -->
    |-
    ! strings   !! align="right"|   numbers
    |-
    | spam      || align="right"|   41.9999
    |-
    | eggs      || align="right"|  451
    |}

    "html" produces HTML markup as an html.escape'd str
    with a ._repr_html_ method so that Jupyter Lab and Notebook display the HTML
    and a .str property so that the raw HTML remains accessible
    the unsafehtml table format can be used if an unescaped HTML format is required:

    >>> print(tabulate([["strings", "numbers"], ["spam", 41.9999], ["eggs", "451.0"]],
    ...                headers="firstrow", tablefmt="html"))
    <table>
    <thead>
    <tr><th>strings  </th><th style="text-align: right;">  numbers</th></tr>
    </thead>
    <tbody>
    <tr><td>spam     </td><td style="text-align: right;">  41.9999</td></tr>
    <tr><td>eggs     </td><td style="text-align: right;"> 451     </td></tr>
    </tbody>
    </table>

    "latex" produces a tabular environment of LaTeX document markup:

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]], tablefmt="latex"))
    \begin{tabular}{lr}
    \hline
     spam &  41.9999 \\
     eggs & 451      \\
    \hline
    \end{tabular}

    "latex_raw" is similar to "latex", but doesn't escape special characters,
    such as backslash and underscore, so LaTeX commands may embedded into
    cells' values:

    >>> print(tabulate([["spam$_9$", 41.9999], ["\\emph{eggs}", "451.0"]], tablefmt="latex_raw"))
    \begin{tabular}{lr}
    \hline
     spam$_9$    &  41.9999 \\
     \emph{eggs} & 451      \\
    \hline
    \end{tabular}

    "latex_booktabs" produces a tabular environment of LaTeX document markup
    using the booktabs.sty package:

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]], tablefmt="latex_booktabs"))
    \begin{tabular}{lr}
    \toprule
     spam &  41.9999 \\
     eggs & 451      \\
    \bottomrule
    \end{tabular}

    "latex_longtable" produces a tabular environment that can stretch along
    multiple pages, using the longtable package for LaTeX.

    >>> print(tabulate([["spam", 41.9999], ["eggs", "451.0"]], tablefmt="latex_longtable"))
    \begin{longtable}{lr}
    \hline
     spam &  41.9999 \\
     eggs & 451      \\
    \hline
    \end{longtable}


    Number parsing
    --------------
    By default, anything which can be parsed as a number is a number.
    This ensures numbers represented as strings are aligned properly.
    This can lead to weird results for particular strings such as
    specific git SHAs e.g. "42992e1" will be parsed into the number
    429920 and aligned as such.

    To completely disable number parsing (and alignment), use
    `disable_numparse=True`. For more fine grained control, a list column
    indices is used to disable number parsing only on those columns
    e.g. `disable_numparse=[0, 2]` would disable number parsing only on the
    first and third columns.

    Column Widths and Auto Line Wrapping
    ------------------------------------
    Tabulate will, by default, set the width of each column to the length of the
    longest element in that column. However, in situations where fields are expected
    to reasonably be too long to look good as a single line, tabulate can help automate
    word wrapping long fields for you. Use the parameter `maxcolwidth` to provide a
    list of maximal column widths

    >>> print(tabulate(           [('1', 'John Smith',             'This is a rather long description that might look better if it is wrapped a bit')],           headers=("Issue Id", "Author", "Description"),           maxcolwidths=[None, None, 30],           tablefmt="grid"          ))
    +------------+------------+-------------------------------+
    |   Issue Id | Author     | Description                   |
    +============+============+===============================+
    |          1 | John Smith | This is a rather long         |
    |            |            | description that might look   |
    |            |            | better if it is wrapped a bit |
    +------------+------------+-------------------------------+


    N)r;r)rBr�r�Tr1r-r2r�cSsg|]}d�tt|���qS)r�)r>ryrr$r
r
rr9yr:ztabulate.<locals>.<listcomp>FcSsg|]\}}t||d��qS))r�)r)r7�col�npr
r
rr9�r:cs,g|]$\}�������fdd�|D��qS)csg|]}t|������qSr
)r)r7rP)�ct�fl_fmtr��miss_vr
rr9�r:z'tabulate.<locals>.<listcomp>.<listcomp>r
�r7rH)r�)rIrJrKrr9�s
�cs g|]}|ttfvr�n��qSr
)r�r�)r7rI)�numalign�stralignr
rr9�r:csg|]}�|���qSr
r
r)�min_paddingr�r
rr9�r:c	s$g|]\}}}t|||�����qSr
)r
)r7rHr8�minw)r�r�r�r
rr9�s�rcs,g|]$\}}t|t�fdd�|D����qS)c3s|]}�|�VqdSrr
�r7�cl�r�r
rrQ�r:�&tabulate.<locals>.<listcomp>.<genexpr>�r�)r7rPrHrSr
rr9�s�c	s(g|] \}}}t|||�|�����qSr
r)r7rr8rP)r�r�r
rr9�s�cs"g|]}t�fdd�|D���qS)c3s|]}�|�VqdSrr
rQrSr
rrQ�r:rTrUrLrSr
rr9�r:r�)#r=r<rr�r>�_expand_numparserFr��MIN_PADDING�_DEFAULT_ALIGNr>ryrr�r�r�r�r�r�r#�multiline_formatsr�rFr�r�rr=�
basestringr5�_DEFAULT_FLOATFMT�_DEFAULT_MISSINGVALr�	enumerate�_table_formats�
_format_table)r:r��tablefmtrrMrNrr;�disable_numparse�colalignZmaxcolwidthsrAZnum_colsrB�
plain_text�colsZcoltypesZ
float_formatsZmissing_valsZaligns�idxr3Z	minwidthsZt_colsZt_alignsr�r
)r�r�r�rOrMrNr�rrs�R�


�������
�
&�
�
�
�rcCs:t|t�r*dg|}|D]}d||<q|S|g|SdS)aB
    Return a list of bools of length `column_count` which indicates whether
    number parsing should be used on each column.
    If `disable_numparse` is a list of indices, each of those indices are False,
    and everything else is True.
    If `disable_numparse` is a bool, then the returned list is all the same.
    TFN)rr)ra�column_countrBrr
r
rrV�s


rVcCs.t|t�r ||g|t|�S|g|SdS)aY
    Expands the `original` argument to return a return a list of
    length `num_desired`. If `original` is shorter than `num_desired`, it will
    be padded with the value in `default`.
    If `original` is not a list to begin with (i.e. scalar value) a list of
    length `num_desired` completely populated with `default will be returned
    N)rrr<)�originalZnum_desiredrr
r
rr>�s
r>cs*|r"d|��fdd�|D�}|S|SdS)NrDcsg|]}�|��qSr
r
rz��padr
rr9�r:z_pad_row.<locals>.<listcomp>r
)�cellsr*�padded_cellsr
rhr�_pad_row�s
rlcCs |\}}}||�|�|��S)z7Format row according to DataRow format without padding.)r>rK)rkr}rr r!r
r
rr|�s
r|cCs,|sdSt|d�r||||�St||�SdS)z5Return a string which represents a row of data cells.Nr"�r
r|)rkr?r@r}r
r
r�
_build_row�s

rncCs|�t||||��|Sr)r�rn)�linesrkr?r@r}r
r
r�_append_basic_row�srpc
s��fdd�|D�}dd�|D��ttt�����fdd�t�|�D���fdd�t��D�}|D]}t|��}	t||	|||�q`|S)Ncsg|]}|d��qS�rr
�r7r5rhr
rr9r:z)_append_multiline_row.<locals>.<listcomp>cSsg|]}|���qSr
)rrLr
r
rr9r:cs*g|]"\}}|d|g�t|��qSr�r)r7rRr5)�nlinesr
rr9scsg|]��fdd��D��qS)csg|]}|��qSr
r
rQ��ir
rr9r:z4_append_multiline_row.<locals>.<listcomp>.<listcomp>r
r-)�cells_linesrtrr9r:)r�ryr<r=r9rlrp)
roZpadded_multiline_cells�
padded_widthsr@r}rir?Zlines_cells�lnZ	padded_lnr
)rvrsrir�_append_multiline_rows
�
rycsN|sdSt|d�r|||�S|\}�}}�fdd�|D�}t||||f�SdS)z3Return a string which represents a horizontal line.Nr"csg|]}�|�qSr
r
rr��fillr
rr9r:z_build_line.<locals>.<listcomp>rm)r?r@�linefmtrr r!rjr
rzr�_build_lines

r}cCs|�t|||��|Sr)r�r})ror?r@r|r
r
r�_append_line!sr~c@s$eZdZdZdd�Zedd��ZdS)�JupyterHTMLStrzUWrap the string with a _repr_html_ method so that Jupyter
    displays the HTML tablecCs|Srr
��selfr
r
r�_repr_html_*szJupyterHTMLStr._repr_html_cCs|S)z>add a .str property so that the raw string is still accessibler
r�r
r
r�str-szJupyterHTMLStr.strN)�__name__�
__module__�__qualname__�__doc__r��propertyr�r
r
r
rr&srcs�g}|r|jr|jng}|j�|j}�fdd�|D�}	|rPdd��tt�d�}
nt�t}
�|��}��fdd�|D�}|jr�d|vr�t||	||j�|r�|
|||	||�|j	r�d|vr�t||	||j	�|�r*|j
�r*d	|v�r*|d
d�D]&}
|
||
|	||j�t||	||j
�q�|
||d|	||j�n|D]}
|
||
|	||j��q.|j�rjd|v�rjt||	||j�|�sv|�r�d
�
|�}|jtk�r�t|�S|SndSd
S)z1Produce a plain-text representation of the table.csg|]}|d��qSrqr
rrrhr
rr9:r:z!_format_table.<locals>.<listcomp>cSs|Srr
)r�ror
r
rr�<r:z_format_table.<locals>.<lambda>rhcsg|]}�|���qSr
r
r$�riZpad_rowr
rr9Cr:r$r%r&Nr�r'rer)r+r*r(rryrlrpr$r~r%r&r)r'r>rUr)r�r�r�r?r@r�roZhiddenr(rwZ
append_rowZpadded_headersZpadded_rowsr��outputr
r�rr_3sB

r_c@s<eZdZdZdd�Zedd��Zdd�Zdd	�Zd
d�Z	dS)
r?a[A custom implementation of CPython's textwrap.TextWrapper. This supports
    both wide characters (Korea, Japanese, Chinese)  - including mixed string.
    For the most part, the `_handle_long_word` and `_wrap_chunks` functions were
    copy pasted out of the CPython baseline, and updated with our custom length
    and line appending logic.
    cOs*g|_d|_tjj|g|�Ri|��dSr)�
_active_codes�	max_lines�textwrap�TextWrapper�__init__)r��args�kwargsr
r
rr�msz_CustomTextWrap.__init__cCs"t|�}trt�|�St|�SdS)zqCustom len that gets console column width for wide
        and non-wide characters as well as ignores color codesN)r�r�r�r<)r��strippedr
r
r�_lenrs
z_CustomTextWrap._lencCs~dd�t�t|�D�}dd�|D�}d�|j�|}|D] }|tkrR|j�|�q8g|_q8t|j�dkrp|t}|�|�dS)aAdds a new line to the list of lines the text is being wrapped into
        This function will also track any ANSI color codes in this string as well
        as add any colors from previous lines order to preserve the same formatting
        as a single unwrapped string.
        cSsg|]}|�qSr
r
)r7�xr
r
rr9�r:z1_CustomTextWrap._update_lines.<locals>.<listcomp>cSs*g|]"}|j|��d|��d��qS)rr/)r��span)r7�coder
r
rr9�srrN)r��finditerr�r>r��_ansi_color_reset_coder�r<)r�ro�new_lineZcode_matchesZcolor_codesr�r
r
r�
_update_lines|s�z_CustomTextWrap._update_linescCs�|dkrd}n||}|jrt|d}d}|�|d|��|krH|d}q(|�|d|d��||dd�|d<n|s�|�|���dS)a	_handle_long_word(chunks : [string],
                             cur_line : [string],
                             cur_len : int, width : int)
        Handle a chunk of text (most likely a word, not whitespace) that
        is too long to fit in any line.
        r/r�N)�break_long_wordsr�r��pop)r��reversed_chunks�cur_line�cur_lenr��
space_left�chunkrur
r
r�_handle_long_word�s	
z!_CustomTextWrap._handle_long_wordc	Cs�g}|jdkrtd|j��|jdurf|jdkr8|j}n|j}|�|�|�|j���|jkrftd��|��|�r�g}d}|r�|j}n|j}|j|�|�}|j	r�|d�
�dkr�|r�|d=|r�|�|d�}|||kr�|�|���||7}q�q�q�|�r2|�|d�|k�r2|�
||||�tt|j|��}|j	�rj|�rj|d�
�dk�rj||�|d�8}|d=|rn|jdu�s�t|�d|jk�s�|�r�|j	�r�t|�dk�r�|d�
��s�||k�r�|�||d�|��qn|�rF|d�
��r*||�|j�|k�r*|�|j�|�||d�|���q�||�|d�8}|d=�q�|�r�|d��}|�|�|�|j�|jk�r�||j|d<�q�|�|||j����q�qn|S)a�_wrap_chunks(chunks : [string]) -> [string]
        Wrap a sequence of text chunks and return a list of lines of
        length 'self.width' or less.  (If 'break_long_words' is false,
        some lines may be longer than this.)  Chunks correspond roughly
        to words and the whitespace between them: each chunk is
        indivisible (modulo 'break_long_words'), but a line break can
        come between any two chunks.  Chunks should not have internal
        whitespace; ie. a chunk is either all whitespace or a "word".
        Whitespace chunks will be removed from the beginning and end of
        lines, but apart from that whitespace is preserved.
        rzinvalid width %r (must be > 0)Nr/z#placeholder too large for max widthr�r)r�r�r��subsequent_indent�initial_indentr��placeholder�lstrip�reverse�drop_whitespacer�r�r�r��sumryr<r�r>rK)	r��chunksro�indentr�r�r�Z	chunk_len�	prev_liner
r
r�_wrap_chunks�s�


 
 ����
�
�	�

��
��z_CustomTextWrap._wrap_chunksN)
r�r�r�r�r��staticmethodr�r�r�r�r
r
r
rr?es
	&r?cCsddl}ddl}ddl}|�tj�}z$|�|jdd�dgd��\}}Wn@|jy�}z&t|�t|�|�	d�WYd}~n
d}~00g}t
}d}	d}
d}d	}|D]�\}
}|
d
vr�d}q�|
dvr�|}q�|
d
vr�|}q�|
dvr�|��}	q�|
dv�r"|tv�rtd|�t|�|�	d�|}
q�|
dv�r2|}q�|
dvr�t|�|�	d�q�|�s\|j
gn|}|d	k�rp|jnt|d���}|D]x}|d	k�r�|j
}t|��r�t|||
||||	d�n@t|��&}t|||
||||	d�Wd�n1�s�0Y�q�Wd�n1�s0YdS)a�    Usage: tabulate [options] [FILE ...]

    Pretty-print tabular data.
    See also https://github.com/astanin/python-tabulate

    FILE                      a filename of the file with tabular data;
                              if "-" or missing, read data from stdin.

    Options:

    -h, --help                show this message
    -1, --header              use the first row of data as a table header
    -o FILE, --output FILE    print table to FILE (default: stdout)
    -s REGEXP, --sep REGEXP   use a custom column separator (default: whitespace)
    -F FPFMT, --float FPFMT   floating point number format (default: g)
    -f FMT, --format FMT      set output table format; supported formats:
                              plain, simple, grid, fancy_grid, pipe, orgtbl,
                              rst, mediawiki, html, latex, latex_raw,
                              latex_booktabs, latex_longtable, tsv
                              (default: simple)
    rNr/zh1o:s:F:A:f:)�helpr`r�zsep=zfloat=zalign=zformat=rr�z\s+r.)z-1z--headerr()z-oz--output)z-Fz--float)z-Cz
--colalign)z-fz--formatz"%s is not a supported table formatr)z-sz--sep)z-hz--helpr5)r�r`r r�filerb)�getopt�sysr��dedent�_mainr��argv�GetoptErrorr�exitr[r�r�stdin�stdout�openr�_pprint_file)r�r�r��usage�optsr�r�r�rrbr`r �outfile�opt�value�files�outrZfobjr
r
rr�-s�� 






�

�r�c	s8|��}�fdd�|D�}tt|||||d�|d�dS)Ncs$g|]}|��rt��|����qSr
)r�r�r�rK)r7rd�r r
rr9�r:z _pprint_file.<locals>.<listcomp>)rrb)r�)�	readlinesrr)	Zfobjectr�r`r rr�rbr��tabler
r�rr��s�r��__main__)r)FF)TT)rTFF)TT)rT)FN)r)T)r��
__future__rr�collectionsrr�r�r�r��version_info�collections.abcr�	itertoolsr�	functoolsrr�r�r�r�r�Z	_int_type�longr�r�Z_float_type�unicoderr�r�rrr�bytesrZrr��ImportErrorr�rr[�cgi�__all__�__version__rWr�r[r\rXr�rr"r#r6rBrOrTrUr^rbrjZLATEX_ESCAPE_RULESr~r�r^r��sortedr!rrY�compiler�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r<r�r�r�r�r�r�r
rrrrrr r=rFrrVr>rlr|rnrpryr}r~rr_r�r?r�r�r�r
r
r
r�<module>sJ


"�	

�	

�


�


�


�


�


�


�


�


�


�


�


�


�
���


�


�


�
�


�

�

�


�

���z�

����!
'�
1

%�

-
�
J	

2I\	


Youez - 2016 - github.com/yon3zu
LinuXploit