� !A?hÞ´� �� dZdZdZddlmZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZ ddlZn #e$rdZYnwxYw ddlZn #e$rdZYnwxYweefZ eefz Zn #e$rYnwxYwgd�ZdZdZed zZd Zd Zd Zd Zd Z dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2e2Z3e!e"e#e$e'e(e)e%e&e*e+e,f Z4e!e"e)e,fZ5e*e+e,fZ6dZ7hd�Z8e9e9e9e:e:e:d �Z;ej<d!krd"Z=nej>��Z=d#�Z?d$�Z@d%�ZAd&e3fd'�ZBd(�ZCdedfd)�ZDd*�ZEGd+�d,eF��ZGGd-�d.eG��ZHGd/�d0eG��ZIGd1�d2eG��ZJGd3�d4eG��ZKGd5�d6eG��ZLGd7�d8eL��ZMGd9�d:eL��ZNGd;�deL��ZPGd?�d@eL��ZQGdA�dB��ZRGdC�dD��ZSGdE�dFeT��ZUGdG�dHeT��ZVGdI�dJejW��ZXGdK�dLeG��ZYGdM�dNeY��ZZGdO�dPeY��Z[GdQ�dReY��Z\GdS�dTeY��Z]GdU�dVeY��Z^GdW�dXeY��Z_eYeeHfZ`dgdZ�Zad[�Zbd\�Zcd]�Zdebecedd^�ZeeT��Zfejgd_��ZhGd`�daeT��ZiGdb�dceT��Zjdd�ZkejjZde�Zlemdfkr el��dSdS)hz0.9.0u"Lars Gustäbel ([email protected])u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.�)�openN)�TarFile�TarInfo� is_tarfile�TarError� ReadError�CompressionError� StreamError� ExtractError� HeaderError�ENCODING� USTAR_FORMAT� GNU_FORMAT� PAX_FORMAT�DEFAULT_FORMATr�i�sustar sustar00�d��0�1�2�3�4�5�6�7�L�K�S�x�g�X��)�path�linkpath�size�mtime�uid�gid�uname�gname>r&r-r,r')�atime�ctimer)r*r+r(�nt�utf-8c�� |�td���|�||��}|d|�|t|��z tzzS)Nzmetadata cannot contain None)� ValueError�encode�len�NUL)�s�length�encoding�errorss �4/opt/alt/python-internal/lib64/python3.11/tarfile.py�stnr<�sP����y��7�8�8�8� ����6�"�"�A� �W�f�W�:��#�a�&�&��C�/� /�/�c�z� |�d��}|dkr |d|�}|�||��S)Nr�����)�find�decode)r7r9r:�ps r;�ntsrC�s@��� ���u� � �A��B�w�w� �b�q�b�E�� �8�8�H�f� %� %�%r=c�~� |ddvr]d}tt|��dz ��D]}|dz}|||dzz }�|ddkrdt|��dz z|z }nT t|dd��}t|���pd d��}n#t $rt d ���wxYw|S) Nr)���r$�rF��ascii�strict�0�invalid header)�ranger5rC�int�stripr3�InvalidHeaderError)r7�n�is r;�ntirS�s���� ��t�~��� ���s�1�v�v��z�"�"� � �A� �!�G�A� ��1�q�5��M�A�A� �Q�4�5�=�=��#�a�&�&�1�*�%��)�*�A�� 7��A�w��)�)�A��A�G�G�I�I�$��a�(�(�A�A��� 7� 7� 7�$�%5�6�6� 6� 7���� �Hs �*5B � B:rGc��� |}t|��}d|cxkr d|dz zkr$nn!td|dz |fzd��tz}n�|tkr�d|dz z |cxkr d|dz zkrfnnc|dkrt dg��}nt dg��}d|z|z}t |dz ��D] }|�d|dz��|dz}�!ntd ���|S) NrrGr$z%0*orIrHrErFzoverflow in number field)rN�bytesr6r� bytearrayrM�insertr3)rQ�digits�format� original_nr7rRs r;�itnr[�s8����J� �A���A��A�!�!�!�!��f�q�j�!�!�!�!�!�!� �&�F�Q�J��?�*�G� 4� 4�s� :��� �:� � �3�6�A�:�#6�"6�!�"Q�"Q�"Q�"Q�c�f�q�j�>Q�"Q�"Q�"Q�"Q�"Q� ��6�6��5�'�"�"�A�A��5�'�"�"�A��v� ��!�A��v��z�"�"� � �A� �H�H�Q��E� � "� "� "� �!�G�A�A� ��3�4�4�4� �Hr=c�� dttjd|����z}dttjd|����z}||fS)NrH� 148B8x356B� 148b8x356b)�sum�struct� unpack_from)�buf�unsigned_chksum� signed_chksums r;� calc_chksumsre�sR����C�� 2�<�� E� E�F�F�F�O��#�f�0��s�C�C�D�D�D�M� �M� )�)r=c��� |pd}|dkrdS|�tj|||��dSt||��\}}t|��D]J}|�|��}t |��|kr |d���|�|���K|dkrH|�|��}t |��|kr |d���|�|��dS)Ni@r�unexpected end of data)�shutil� copyfileobj�divmodrM�readr5�write) �src�dstr8� exception�bufsize�blocks� remainder�brbs r;riri�s�����"��G� ��{�{��� �~���3��W�-�-�-����v�w�/�/��F�I� �6�]�]�����h�h�w���� �s�8�8�g� � ��)�4�5�5� 5� � � �#������A�~�~��h�h�y�!�!�� �s�8�8�i� � ��)�4�5�5� 5� � � �#���� �Fr=c��ttjdd��}|�)|�|d���|��}t |d���dS)Nr9�backslashreplace� )�end)�getattr�sys�stdoutr4rA�print)r7r9s r;� _safe_printr|sV���s�z�:�t�4�4�H��� �H�H�X�1� 2� 2� 9� 9�(� C� C�� �!�������r=c��eZdZ dS)rN��__name__� __module__� __qualname__�r=r;rrs��������Dr=rc��eZdZ dS)r Nr~r�r=r;r r s������/��Dr=r c��eZdZ dS)rNr~r�r=r;rrs������0��Dr=rc��eZdZ dS)r Nr~r�r=r;r r s������8��Dr=r c��eZdZ dS)r Nr~r�r=r;r r s������G��Dr=r c��eZdZ dS)r Nr~r�r=r;r r s������+��Dr=r c��eZdZ dS)�EmptyHeaderErrorNr~r�r=r;r�r�!s������&��Dr=r�c��eZdZ dS)�TruncatedHeaderErrorNr~r�r=r;r�r�$s������*��Dr=r�c��eZdZ dS)�EOFHeaderErrorNr~r�r=r;r�r�'s������,��Dr=r�c��eZdZ dS)rPNr~r�r=r;rPrP*s������(��Dr=rPc��eZdZ dS)�SubsequentHeaderErrorNr~r�r=r;r�r�-s������=��Dr=r�c�(�eZdZ d�Zd�Zd�Zd�ZdS)� _LowLevelFilec���tjtjtjztjzd�|}t td��r|tjz}tj||d��|_dS)N��r�w�O_BINARYi�) �os�O_RDONLY�O_WRONLY�O_CREAT�O_TRUNC�hasattrr�r�fd)�self�name�modes r;�__init__z_LowLevelFile.__init__:si������r�z�)�B�J�6� � � ��� �2�z� "� "� � �B�K� �D��'�$��e�,�,����r=c�8�tj|j��dS�N)r��closer��r�s r;r�z_LowLevelFile.closeCs�� ��������r=c�6�tj|j|��Sr�)r�rkr��r�r(s r;rkz_LowLevelFile.readFs���w�t�w��%�%�%r=c�:�tj|j|��dSr�)r�rlr��r�r7s r;rlz_LowLevelFile.writeIs�� ����!�����r=N)rr�r�r�r�rkrlr�r=r;r�r�4sU������� -�-�-����&�&�&�����r=r�c�Z�eZdZ d�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z dd �Z d �Z d �Z d �ZdS)�_Streamc�� d|_|�t||��}d|_|dkr#t|��}|���}|pd|_||_||_||_||_d|_ d|_ d|_ |dkr� ddl }n#t$rtd��d�wxYw||_ |�d��|_|d kr"|j|_|���dS|���dS|d krs ddl}n#t$rtd ��d�wxYw|d kr.d|_|���|_t2|_dS|���|_dS|d krs ddl}n#t$rtd ��d�wxYw|d kr.d|_|���|_|j|_dS|���|_dS|dkrtd|z���dS#|js|j���d|_ �xYw)NTF�*�r=r�gzzzlib module is not availabler��bz2�bz2 module is not available�xz�lzma module is not available�tar�unknown compression type %r) � _extfileobjr�� _StreamProxy� getcomptyper�r��comptype�fileobjrprb�pos�closed�zlib� ImportErrorr �crc32�crc�errorro� _init_read_gz�_init_write_gzr��dbuf�BZ2Decompressor�cmp�OSError� BZ2Compressor�lzma�LZMADecompressor� LZMAError�LZMACompressorr�) r�r�r�r�r�rpr�r�r�s r;r�z_Stream.__init__Xs��� ���� �?�#�D�$�/�/�G�$�D� � �s�?�?�#�7�+�+�G��*�*�,�,�H�� ��� ��� � �� ��� ��� ��������� �- ��4���U��K�K�K�K��"�U�U�U�*�+I�J�J�PT�T�U���� �� ��:�:�c�?�?����3�;�;�%)�Z�D�N��&�&�(�(�(�(�(��'�'�)�)�)�)�)��U�"�"�T��J�J�J�J��"�T�T�T�*�+H�I�I�t�S�T�����3�;�;� #�D�I�"�2�2�4�4�D�H�%,�D�N�N�N�"�0�0�2�2�D�H�H�H��T�!�!�U��K�K�K�K��"�U�U�U�*�+I�J�J�PT�T�U�����3�;�;� #�D�I�#�4�4�6�6�D�H�%)�^�D�N�N�N�#�2�2�4�4�D�H�H�H��U�"�"�&�'D�x�'O�P�P�P�#�"�� ��#� %�� �"�"�$�$�$��D�K� ���sy�H� B�H�B-�-A H�9H�H�D�H�D6�65H�-H�H�F�H�F/�/5H�&H�H�*Ic�d�t|d��r|js|���dSdSdS)Nr�)r�r�r�r�s r;�__del__z_Stream.__del__�sB�� �4�� "� "� �4�;� � �J�J�L�L�L�L�L� � � � r=c�B� |j�d|jj|jj |jjd��|_t jdttj ������}|� d|zdz��|j � d��r|j dd�|_ tj�|j ��|_ |� |j �dd ��t"z��dS) N� r��-1�Y�-@�,@�,0�I�,C�,-�/�/����K��c�$�)�+�+�&6�&6�7�7� � � � �(�9�4�{�B�C�C�C� �9� � �e� $� $� '�� �#�2�#��D�I��G�$�$�T�Y�/�/�� � � � �T�Y�%�%�l�I�>�>��D�E�E�E�E�Er=c�� |jdkr%|j�||j��|_|xjt |��z c_|jdkr|j�|��}|�|��dS)Nr�r�) r�r�r�r�r�r5r��compressr�r�s r;rlz _Stream.write�sx�� � �=�D� � ��y���q�$�(�3�3�D�H� ���C��F�F���� �=�E� !� !���!�!�!�$�$�A� � � �Q�����r=c�*� |xj|z c_t|j��|jkrd|j�|jd|j���|j|jd�|_t|j��|jk�bdSdSr�)rbr5rpr�rlr�s r;�__writez_Stream.__write�s��� � ���A� ����$�(�m�m�d�l�*�*� �L� � �t�x� ��� �6� 7� 7� 7��x�� � � �.�D�H��$�(�m�m�d�l�*�*�*�*�*�*r=c�� |jrdSd|_ |jdkr2|jdkr'|xj|j���z c_|jdkr�|jr�|j�|j��d|_|jdkrg|j�tj d|j ����|j�tj d|j dz����|j s|j� ��dSdS#|j s|j� ��wwxYw)NTr�r�r=r�r�l��)r�r�r�rbr��flushr�rlr`r�r�r�r�r�r�s r;r�z _Stream.close�s?�� � �;� � �F��� � %��y�C���D�M�U�$:�$:����D�H�N�N�,�,�,����y�C���D�H��� �"�"�4�8�,�,�,�����=�D�(�(��L�&�&�v�{�4���'B�'B�C�C�C��L�&�&�v�{�4���J�9N�'O�'O�P�P�P��#� %�� �"�"�$�$�$�$�$� %� %��4�#� %�� �"�"�$�$�$�$� %���s �C'D�#Ec�� |j�|jj ��|_d|_|�d��dkrt d���|�d��dkrtd���t|�d����}|�d��|d zr]t|�d����d t|�d����zz}|� |��|d zr% |�d��}|r |tkrn�$|d zr% |�d��}|r |tkrn�$|dzr|�d��dSdS)Nr=r%s��not a gzip filer$�zunsupported compression method��rHrGT�) r�� decompressobjr�r�r�� _Stream__readrr �ordrkr6)r��flag�xlenr7s r;r�z_Stream._init_read_gz�s��� ��9�*�*�D�I�,?�+?�@�@����� � �;�;�q�>�>�[� (� (��-�.�.� .� �;�;�q�>�>�W� $� $�"�#C�D�D� D��4�;�;�q�>�>�"�"�� � � �A���� �!�8� ��t�{�{�1�~�~�&�&��s�4�;�;�q�>�>�/B�/B�)B�B�D� �I�I�d�O�O�O� �!�8� � ��K�K��N�N����A��H�H�� � �"�9� � ��K�K��N�N����A��H�H�� � �!�8� � �K�K��N�N�N�N�N� � r=c�� |jSr�)r�r�s r;�tellz _Stream.tell�s�� ��x�r=rc�� ||jz dkrbt||jz |j��\}}t|��D]}|�|j���|�|��nt d���|jS)Nrz seeking backwards is not allowed)r�rjrprMrkr )r�r�rqrrrRs r;�seekz _Stream.seek�s��� � ���>�Q� � � &�s�T�X�~�t�|� D� D� �F�I��6�]�]� (� (��� � �$�,�'�'�'�'� �I�I�i� � � � ��@�A�A� A��x�r=c�l� |�|��}|xjt|��z c_|Sr�)�_readr�r5)r�r(rbs r;rkz _Stream.read s1��C��j�j����� ���C��H�H����� r=c�*� |jdkr|�|��St|j��}|jg}||kr�|jr|j}d|_n"|j�|j��}|snk |j� |��}n"#|j $r}td��|�d}~wwxYw|� |��|t|��z }||k��d� |��}||d�|_|d|�S)Nr�r=zinvalid compressed data)r�r�r5r�rbr�rkrpr�� decompressror�append�join)r�r(�c�trb�es r;r�z _Stream._reads*�� � �=�E� !� !��;�;�t�$�$� $� �� �N�N�� �Y�K���$�h�h��x� ��h�������l�'�'�� �5�5����� B��h�)�)�#�.�.�����>� B� B� B�� 9�:�:��A����� B���� �H�H�S�M�M�M� ��S���M�A��$�h�h� �H�H�Q�K�K���d�e�e�H�� ���$��x�s�=B� B7�"B2�2B7c�B� t|j��}|jg}||krO|j�|j��}|sn-|�|��|t|��z }||k�Od�|��}||d�|_|d|�S)Nr=)r5rbr�rkrpr�r�)r�r(r�r�rbs r;�__readz_Stream.__read.s��� � ���M�M�� �X�J���$�h�h��,�#�#�D�L�1�1�C�� �� �H�H�S�M�M�M� ��S���M�A� �$�h�h� �H�H�Q�K�K���T�U�U�8�����$��x�r=N)r)rr�r�r�r�r�rlr�r�r�r�r�rkr�r�r�r=r;r�r�Ls������� �D�D�D�L���F�F�F� ���/�/�/�%�%�%�,���>��� � � � �������6����r=r�c�(�eZdZ d�Zd�Zd�Zd�ZdS)r�c�\�||_|j�t��|_dSr�)r�rk� BLOCKSIZErb)r�r�s r;r�z_StreamProxy.__init__Ds$���� ��<�$�$�Y�/�/����r=c�2�|jj|_|jSr�)r�rkrbr�s r;rkz_StreamProxy.readHs���L�%�� ��x�r=c���|j�d��rdS|jdd�dkr|jdd�dkrd S|j�d ��rd Sd S) Ns�r�r�sBZhr�� s1AY&SYr�)s]�s�7zXZr�r�)rb� startswithr�s r;r�z_StreamProxy.getcomptypeLsp�� �8� � �� /� /� ��4� �X�a��c�]�f� $� $���!�B�$��9�)D�)D��5� �X� � �!C� D� D� ��4��5r=c�8�|j���dSr�)r�r�r�s r;r�z_StreamProxy.closeVs�� � �������r=N)rr�r�r�rkr�r�r�r=r;r�r�?sU�������0�0�0�����������r=r�c�^�eZdZ d d�Zd�Zd�Zd�Zd�Zd�Ze j fd�Z d d �Z d �Z d �ZdS) � _FileInFileNc���||_||_||_d|_t |dd��|_d|_|�d|fg}d|_g|_d}|j}|D]T\}}||kr|j� d||df��|j� d|||z|f��||z }||z}�U||jkr%|j� d||jdf��dSdS)Nrr�FT) r��offsetr(�positionrxr�r�� map_index�mapr�)r�r�r r(� blockinfo�lastpos�realposs r;r�z_FileInFile.__init__cs���� ��� ��� ��� ��G�V�T�2�2�� ��� � � ��T�� �I����������+��%� $� $�L�F�D������������� >�?�?�?� �H�O�O�T�6�6�D�=�'�B� C� C� C� �t�O�G��t�m�G�G� �T�Y� � � �H�O�O�U�G�T�Y��=� >� >� >� >� >� � r=c��dSr�r�r�s r;r�z_FileInFile.flush|s�� �r=c��dS�NTr�r�s r;�readablez_FileInFile.readables���tr=c��dS�NFr�r�s r;�writablez_FileInFile.writable�s���ur=c�4�|j���Sr�)r��seekabler�s r;rz_FileInFile.seekable�s���|�$�$�&�&�&r=c�� |jSr�)r r�s r;r�z_FileInFile.tell�s�� ��}�r=c��� |tjkr)tt|d��|j��|_n�|tjkrG|dkrt|j|zd��|_nst|j|z|j��|_nP|tjkr1tt|j|z|j��d��|_ntd���|jS)NrzInvalid argument) �io�SEEK_SET�min�maxr(r �SEEK_CUR�SEEK_ENDr3)r�r �whences r;r�z_FileInFile.seek�s��� � �R�[� � ���H�a� 0� 0�$�)�<�<�D�M�M� �r�{� "� "��!�|�|� #�D�M�H�$<�a� @� @�� � � #�D�M�H�$<�d�i� H� H�� � � �r�{� "� "���D�I��$8�$�)� D� D�a�H�H�D�M�M��/�0�0� 0��}�r=c�� |�|j|jz }nt||j|jz ��}d}|dk�r |j|j\}}}}||jcxkr|krnnn5|xjdz c_|jt |j��krd|_�bt|||jz ��}|rg|j�||j|z z��|j�|��}t |��|krtd���||z }n |t|zz }||z}|xj|z c_|dk�� |S)Nr=rTr$rg) r(r r rrr5r�r�rkrr6) r�r(rb�data�start�stopr r8rss r;rkz_FileInFile.read�sq�� � �<��9�t�}�,�D�D��t�T�Y���6�7�7�D����Q�h�h� +�,0�H�T�^�,D�)��e�T�6��D�M�0�0�0�0�D�0�0�0�0�0���N�N�a�'�N�N��~��T�X���6�6�)*��� +���t�d�m�3�4�4�F�� $�� �!�!�&�D�M�E�,A�"B�C�C�C��L�%�%�f�-�-���q�6�6�V�#�#�#�$<�=�=�=��q�����s�V�|�#�� �F�N�D� �M�M�V� #�M�M�'�Q�h�h�(� r=c��|�t|����}||dt|���<t|��Sr�)rkr5)r�rsrbs r;�readintoz_FileInFile.readinto�s7���i�i��A��������)�3�s�8�8�)� ��3�x�x�r=c��d|_dSr)r�r�s r;r�z_FileInFile.close�s ���� � � r=r�)rr�r�r�r�rrrr�rrr�rkr*r�r�r=r;r r ]s�������� ?�?�?�?�2 � � �������'�'�'���� %'�K����� ����>��� ����r=r c���eZdZ�fd�Z�xZS)� ExFileObjectc���t|j|j|j|j��}t ���|��dSr�)r r�� offset_datar(�sparse�superr�)r��tarfile�tarinfor�� __class__s �r;r�zExFileObject.__init__�sB����g�o�w�/B�� �g�n�.�.�� ������!�!�!�!�!r=�rr�r�r�� __classcell__�r4s@r;r-r-�s8�������"�"�"�"�"�"�"�"�"r=r-c��eZdZdS)� FilterErrorNr~r�r=r;r9r9�s�������Dr=r9c���eZdZ�fd�Z�xZS)�AbsolutePathErrorc�j��||_t���d|j�d���dS)Nzmember z has an absolute path�r3r1r�r��r�r3r4s �r;r�zAbsolutePathError.__init__�s6����� � �����H�7�<�H�H�H�I�I�I�I�Ir=r5r7s@r;r;r;�sA�������J�J�J�J�J�J�J�J�Jr=r;c���eZdZ�fd�Z�xZS)�OutsideDestinationErrorc���||_||_t���|j�d|�d�dz��dS)Nz would be extracted to �, � which is outside the destination�r3�_pathr1r�r��r�r3r&r4s �r;r�z OutsideDestinationError.__init__�sT����� ��� � �����G�L�M�M�4�M�M�M�=�>� ?� ?� ?� ?� ?r=r5r7s@r;r@r@��8�������?�?�?�?�?�?�?�?�?r=r@c���eZdZ�fd�Z�xZS)�SpecialFileErrorc�h��||_t���|j�d���dS)Nz is a special filer=r>s �r;r�zSpecialFileError.__init__�s3����� � �����G�L�>�>�>�?�?�?�?�?r=r5r7s@r;rIrI�sA�������@�@�@�@�@�@�@�@�@r=rIc���eZdZ�fd�Z�xZS)�AbsoluteLinkErrorc�h��||_t���|j�d���dS)Nz is a link to an absolute pathr=r>s �r;r�zAbsoluteLinkError.__init__�s3����� � �����G�L�J�J�J�K�K�K�K�Kr=r5r7s@r;rLrL�sA�������L�L�L�L�L�L�L�L�Lr=rLc���eZdZ�fd�Z�xZS)�LinkOutsideDestinationErrorc���||_||_t���|j�d|�d�dz��dS)Nz would link to rBrCrDrFs �r;r�z$LinkOutsideDestinationError.__init__�sT����� ��� � �����G�L�E�E�4�E�E�E�=�>� ?� ?� ?� ?� ?r=r5r7s@r;rOrO�rGr=rOc���eZdZ�fd�Z�xZS)�LinkFallbackErrorc���||_||_t���d|j�d�d|�d�z��dS)Nzlink z would be extracted as a zcopy of z, which was rejectedrDrFs �r;r�zLinkFallbackError.__init__�s`����� ��� � �����J���J�J�J�B�d�B�B�B�C� D� D� D� D� Dr=r5r7s@r;rRrR�sA�������D�D�D�D�D�D�D�D�Dr=rRTc���i}|j}tj�|tjj���}|�dtjf��r,|j�dtjz��x}|d<tj�|��rt|���tj�tj� ||��tjj���}tj� ||g��|krt||���|j }|��|dz}|rr|���s|���r|dzs|dz}|dz}n:|���s|���rd}nt%|���||j kr||d<|�r�|j�d|d <|j�d|d <|j�d|d <|j�d|d <|���s|����rItj�|j��rt1|���tj�|j��}||jkr||d <|���rDtj� |tj�|��|j��}n%tj� ||j��}tj�|tjj���}tj� ||g��|krt7||���|S)N)rJ�/r�i��@i�����r�r*r+r,r-�linkname)r�r�r&�realpath� ALLOW_MISSINGr�sep�lstrip�isabsr;r�� commonpathr@r��isreg�islnk�isdir�issymrIr*r+r,r-rXrL�normpath�dirnamerO)�member� dest_path�for_data� new_attrsr�� target_pathr�� normalizeds r;�_get_filtered_attrsrk�s(���I� �;�D��� � ��2�7�3H� �I�I�I� ����R�V�}�%�%�D�#)�;�#5�#5�c�B�F�l�#C�#C�C��y�� � �w�}�}�T���(� ��'�'�'��'�"�"�2�7�<�<� �4�#@�#@�*,�'�*?�#�A�A�K� �w���;� �2�3�3�y�@�@�%�f�k�:�:�:� �;�D� ���e�|�� � /��|�|�~�~� /������ /��e�|�#��F�N�D��� �������� /�6�<�<�>�>� /����'�v�.�.�.� �6�;� � � $�I�f� ��G� �:� !�#�I�e� � �:� !�#�I�e� � �<� #�!%�I�g� � �<� #�!%�I�g� � �<�<�>�>� G�V�\�\�^�^� G��w�}�}�V�_�-�-� 0�'��/�/�/���)�)�&�/�:�:�J��V�_�,�,�(2� �*�%��|�|�~�~� <� �g�l�l�9�+-�7�?�?�4�+@�+@�+1�?�<�<� � �!�g�l�l�9�+1�?�<�<� ��'�*�*�;�24�'�2G�+�I�I�K��w�!�!�;� �":�;�;�y�H�H�1�&�+�F�F�F� �r=c��|Sr�r�)rerfs r;�fully_trusted_filterrmBs�� �Mr=c�N�t||d��}|r|jdi|�ddi��S|S)NF�deepr��rkr��rerfrhs r;� tar_filterrrEsC��#�F�I�u�=�=�I��7��v�~�6�6� �6�6��6�6�6�6� �Mr=c�N�t||d��}|r|jdi|�ddi��S|S)NTroFr�rprqs r;� data_filterrtKsC��#�F�I�t�<�<�I��7��v�~�6�6� �6�6��6�6�6�6� �Mr=)� fully_trustedr�r&s([0-9]{1,20}) c �p�eZdZ edTidd�dd�dd�dd�d d �d d �d d�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�d#d$�d%d$�d&d$��ZdUd(�Zed)���Zejd*���Zed+���Z e jd,���Z d-�Z e e e e e e e e d.e d/� d0�Z d1�Z eed2fd3�Zd4�Zd5�Zd6�Zed7���Zd8�Zed9���Zed:���Zed;���Zed<���Zed=���Zed>���Zd?�Zd@�ZdA�Z dB�Z!dC�Z"dD�Z#dE�Z$dF�Z%dG�Z&dH�Z'dI�Z(dJ�Z)dK�Z*dL�Z+dM�Z,dN�Z-dO�Z.dP�Z/dQ�Z0dR�Z1dS�Z2d$S)Vrr�zName of the archive member.r�zPermission bits.r*z6User ID of the user who originally stored this member.r+z7Group ID of the user who originally stored this member.r(zSize in bytes.r)zTime of last modification.�chksumzHeader checksum.�typez�File type. type is usually one of these constants: REGTYPE, AREGTYPE, LNKTYPE, SYMTYPE, DIRTYPE, FIFOTYPE, CONTTYPE, CHRTYPE, BLKTYPE, GNUTYPE_SPARSE.rXzcName of the target file name, which is only present in TarInfo objects of type LNKTYPE and SYMTYPE.r,z User name.r-z Group name.�devmajorzDevice major number.�devminorzDevice minor number.r zThe tar header starts here.r/zThe file's data starts here.� pax_headerszMA dictionary containing key-value pairs of an associated pax extended header.r0zSparse member information.r2N�_sparse_structs� _link_targetr�c�� ||_d|_d|_d|_d|_d|_d|_t|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_i|_dS)Ni�rr�)r�r�r*r+r(r)rw�REGTYPErxrXr,r-ryrzr r/r0r{�r�r�s r;r�zTarInfo.__init__�s��� ��� ��� ��������� ��� ��� ��� ��� ��� ��� ��� ��� ��� ������ �����r=c�� |jSr��r�r�s r;r&z TarInfo.path�s ��2��y�r=c��||_dSr�r�r�s r;r&z TarInfo.path�s ���� � � r=c�� |jSr��rXr�s r;r'zTarInfo.linkpath�s ��:��}�r=c��||_dSr�r�)r�rXs r;r'zTarInfo.linkpath�s �� �� � � r=c�J�d|jj|jt|��fzS)Nz<%s %r at %#x>)r4rr��idr�s r;�__repr__zTarInfo.__repr__�s!���4�>�#:�4�9�R��X�X�"N�N�Nr=T) r�r)r�rXr*r+r,r-ro�_KEEPc �� | rtj|��} ntj|��} || ur|| _|| ur|| _|| ur|| _|| ur|| _|| ur|| _|| ur|| _|| ur|| _|| ur|| _ | Sr�) �copy�deepcopyr�r)r�rXr*r+r,r-) r�r�r)r�rXr*r+r,r-ror��results r;r�zTarInfo.replace�s��� � � %��]�4�(�(�F�F��Y�t�_�_�F� �u� � ��F�K� �� � � �F�L� �u� � ��F�K� �5� � �&�F�O� �e� � ��F�J� �e� � ��F�J� �� � � �F�L� �� � � �F�L�� r=c�@� |j�d}n |jdz}|j||j|j|j|j|j|j|j|j |j |j |j d� }|dtkr+|d�d��s|dxxdz cc<|S)N��) r�r�r*r+r(r)rwrxrXr,r-ryrzrxr�rU)r�r�r*r+r(r)rwrxrXr,r-ryrz�DIRTYPEr�)r�r��infos r;�get_infozTarInfo.get_info�s��� � �9� ��D�D��9�v�%�D�� ������� �� �� �� �� �� �� �� �� � � �� ��<�7� "� "�4��<�+@�+@��+E�+E� "� ��L�L�L�C� �L�L�L�� r=�surrogateescapec�p� |���}|���D]\}}|�td|z����|tkr|�|||��S|t kr|�|||��S|tkr|�||��Std���)Nz%s may not be Nonezinvalid format) r��itemsr3r�create_ustar_headerr�create_gnu_headerr�create_pax_header)r�rYr9r:r�r��values r;�tobufz TarInfo.tobuf�s��� ��}�}�����:�:�<�<� >� >�K�D�%��}� �!5��!<�=�=�=�� �\� !� !��+�+�D�(�F�C�C� C� �z� !� !��)�)�$��&�A�A� A� �z� !� !��)�)�$��9�9� 9��-�.�.� .r=c�� t|d<t|d�||����tkrt d���t|d�||����t kr&|�|d||��\|d<|d<|�|t||��S)N�magicrXzlinkname is too longr��prefix) � POSIX_MAGICr5r4� LENGTH_LINKr3� LENGTH_NAME�_posix_split_name�_create_headerr)r�r�r9r:s r;r�zTarInfo.create_ustar_header�s��� �#��W� � �t�J��&�&�x��8�8� 9� 9�K� G� G��3�4�4� 4� �t�F�|�"�"�8�V�4�4� 5� 5� � C� C�+/�+A�+A�$�v�,�PX�Z`�+a�+a� (�D��N�D��L��"�"�4��x��H�H�Hr=c�� t|d<d}t|d�||����tkr&||�|dt ||��z }t|d�||����t kr&||�|dt||��z }||�|t||��zS)Nr�r=rXr�) � GNU_MAGICr5r4r��_create_gnu_long_header�GNUTYPE_LONGLINKr��GNUTYPE_LONGNAMEr�r)r�r�r9r:rbs r;r�zTarInfo.create_gnu_headers��� �!��W� ��� �t�J��&�&�x��8�8� 9� 9�K� G� G� �4�/�/��Z�0@�BR�T\�^d�e�e� e�C� �t�F�|�"�"�8�V�4�4� 5� 5� � C� C� �4�/�/��V� �>N�PX�Z`�a�a� a�C��T�(�(��z�8�V�L�L�L�Lr=c�� t|d<|j���}ddtfddtfddfD]h\}}}||vr� ||�dd ��n#t $r||||<Y�@wxYwt||��|kr ||||<�id D]u\}}d }||} t| t��} | rt| ��n| } d | cxkr d |dz zks nd ||<d}n | r| ||<d}|r||vrt| ��||<�v|r|� |t|��} nd} | |�|tdd��zS)Nr�r�r&rXr')r,r,� )r-r-r�rIrJ))r*rG)r+rG)r(� )r)r�FrrGr$Tr=r�)r�r{r�r�r�r4�UnicodeEncodeErrorr5� isinstance�float�round�str�_create_pax_generic_header�XHDTYPEr�r) r�r�r9r{r��hnamer8rX� needs_pax�val� val_is_float�val_intrbs r;r�zTarInfo.create_pax_headers��� �$��W� ��&�+�+�-�-� � ���-� �J� �/T�&�(>�$@� 0� 0� �D�%��� �#�#�� ��T� �!�!�'�8�4�4�4�4��%� � � �%)�$�Z� �E�"��� �����4��:����'�'�%)�$�Z� �E�"��R� -� -�L�D�&��I��t�*�C�%�c�5�1�1�L�$0�9�e�C�j�j�j�c�G���3�3�3�3�!��� �"3�3�3�3�3���T� � � � �� !�%��T� � � �� -�T��4�4�$'��H�H� �D�!�� � ��1�1�+�w��Q�Q�C�C��C��T�(�(��|�W�i�P�P�P�Ps�A$�$A<�;A<c�<� |�|td��S)Nr1)r��XGLTYPE)�clsr{s r;�create_pax_global_headerz TarInfo.create_pax_global_headerOs�� ��-�-�k�7�G�L�L�Lr=c�� |�d��}tdt|����D]�}d�|d|���}d�||d���}t|�||����t kr.t|�||����t krn��td���||fS)NrUr$zname is too long)�splitrMr5r�r4� LENGTH_PREFIXr�r3)r�r�r9r:� componentsrRr�s r;r�zTarInfo._posix_split_nameUs��� ��Z�Z��_�_� ��q�#�j�/�/�*�*� 1� 1�A��X�X�j��!��n�-�-�F��8�8�J�q�r�r�N�+�+�D��6�=�=��6�2�2�3�3�}�D�D��� � �H�f�5�5�6�6�+�E�E�����/�0�0� 0��t�|�r=c�� |�d��ttfv}|rKt|�dd��d|��}t|�dd��d|��}n$t dd||��}t dd||��}|�dt ��}|�t d���t |�dd��d ||��t|�d d��d zd|��t|�d d��d|��t|�d d��d|��t|�dd��d|��t|�dd��d|��d|t |�dd��d ||��|�dt��t |�dd��d||��t |�dd��d||��||t |�dd��d||��g}tj dtzd� |����} t| t d���d} | dd�td| zd��z| dd�z} | S)NrxryrrGrzr�zTarInfo.type must not be Noner�rr�r�r*r+r(r�r)s rXr�r,r�r-r�rz%dsr=i����z%06orIi����)�get�CHRTYPE�BLKTYPEr[r<rr3r�r`r�rr�rerU) r�rYr9r:�has_device_fieldsryrz�filetype�partsrbrws r;r�zTarInfo._create_headeres��� �!�H�H�V�,�,��'�0B�B�� � 4��4�8�8�J��2�2�A�v�>�>�H��4�8�8�J��2�2�A�v�>�>�H�H��2�q�(�F�3�3�H��2�q�(�F�3�3�H��8�8�F�G�,�,�� � ��<�=�=� =� ������$�$�c�8�V� <� <� ������#�#�f�,�a�� 8� 8� ������"�"�A�v� .� .� ������"�"�A�v� .� .� ������#�#�R�� 0� 0� �����!�$�$�b�&� 1� 1� � � �����R�(�(�#�x�� @� @� �H�H�W�k� *� *� �����"�%�%�r�8�V� <� <� �����"�%�%�r�8�V� <� <� � � �����2�&�&��X�v� >� >� ��$�k�%�)�+�S�X�X�e�_�_�=�=���c�9�*�+�+�.�/�/��2���%�4�%�j�5��F�!2�G�<�<�<�s�4�5�5�z�I��� r=c�� tt|��t��\}}|dkr|t|z tzz }|S)Nr)rjr5rr6)�payloadrqrrs r;�_create_payloadzTarInfo._create_payload�sE�� �#�3�w�<�<��;�;��� � �q�=�=� � �I�-��4� 4�G��r=c��� |�||��tz}i}d|d<||d<t|��|d<t|d<|�|t ||��|�|��zS)Nz ././@LongLinkr�rxr(r�)r4r6r5r�r�rr�)r�r�rxr9r:r�s r;r�zTarInfo._create_gnu_long_header�s��� ��{�{�8�V�,�,�s�2����&��V� ���V� ��4�y�y��V� �!��W� ��!�!�$� �h��G�G��#�#�D�)�)�*� *r=c�� d}|���D]/\}} |�dd���#t$rd}YnwxYwd}|r|dz }|���D]�\}}|�d��}|r|�|d��}n|�d��}t|��t|��zdz}d x} } |tt | ����z} | | krn| } �)|t t | ��d ��d z|zd z|zd zz }��i} d| d<|| d<t|��| d<t | d<|�| td d��|� |��zS)NFr1rJTr=s21 hdrcharset=BINARY r�rrrI� �=� z././@PaxHeaderr�rxr(r�r�) r�r4r�r5r�rUr�r�rr�) r�r{rxr9�binary�keywordr��records�lrQrBr�s r;r�z"TarInfo._create_pax_generic_header�s��� � ��)�/�/�1�1� � �N�G�U� �� � �W�h�/�/�/�/��%� � � ������ ������ � 1� �0� 0�G�)�/�/�1�1� V� V�N�G�U��n�n�W�-�-�G�� .�� � �X�/@�A�A���� � �W�-�-���G� � �s�5�z�z�)�A�-�A��I�A�� ���C��F�F� � �O����6�6����  � �u�S��V�V�W�-�-��4�w�>��E��M�PU�U� U�G�G���'��V� ���V� ��7�|�|��V� �#��W� ��!�!�$� �g�y�I�I��#�#�G�,�,�-� -s�5� A�Ac��� t|��dkrtd���t|��tkrtd���|�t ��tkrt d���t|dd���}|t|��vrtd���|��}t|dd�||��|_ t|dd ���|_ t|d d ���|_ t|d d ���|_t|d d ���|_t|d d���|_||_|dd �|_t|d d�||��|_t|dd�||��|_t|dd�||��|_t|dd���|_t|dd���|_t|dd�||��}|jt0kr&|j �d��r t4|_|jt6kr�d}g}t9d��D]h} t|||dz���} t||dz|dz���} n#t:$rYn!wxYw|�| | f��|dz }�it?|d��} t|dd���} || | f|_ |�!��r|j �"d��|_ |r |jtFvr|dz|j z|_ |S)Nrz empty headerztruncated headerzend of file header��z bad checksumr�l�t�|��ii i)iIiQiYi�rUi�r�r��i�i�i�)$r5r�rr��countr6r�rSrerPrCr�r�r*r+r(r)rwrxrXr,r-ryrz�AREGTYPEr�r��GNUTYPE_SPARSErMr3r��boolr|ra�rstrip� GNU_TYPES)r�rbr9r:rw�objr�r��structsrRr �numbytes� isextended�origsizes r;�frombufzTarInfo.frombuf�sI�� � �s�8�8�q�=�=�"�>�2�2� 2� �s�8�8�y� � �&�'9�:�:� :� �9�9�S�>�>�Y� &� &� �!5�6�6� 6��S��S��\�"�"�� ��c�*�*� *� *�$�^�4�4� 4��c�e�e���s�1�S�5�z�8�V�4�4����s�3�s�7�|�$�$����c�#�c�'�l�#�#����c�#�c�'�l�#�#����s�3�s�7�|�$�$�����C��G� �%�%�� ��� ��s�3�w�<����3�s�3�w�<��6�:�:�� ���C��G� �h��7�7�� ���C��G� �h��7�7�� ��3�s�3�w�<�(�(�� ��3�s�3�w�<�(�(�� ��S��S��\�8�V�4�4�� �8�x� � �C�H�$5�$5�c�$:�$:� ��C�H� �8�~� %� %��C��G��1�X�X� � ��� ��S��r��\�!2�3�3�F�"�3�s�R�x��b��'8�#9�:�:�H�H��!�����E�E����������1�2�2�2��r� ����c�#�h���J��3�s�3�w�<�(�(�H�#*�J��"A�C� � �9�9�;�;� ,��x���s�+�+�C�H� � /�c�h�i�/�/���|�c�h�.�C�H�� s�7J=�= K � K c��� |j�t��}|�||j|j��}|j���tz |_|�|��Sr�) r�rkrr�r9r:r�r � _proc_member)r�r2rbr�s r;� fromtarfilezTarInfo.fromtarfilesf�� ��o�"�"�9�-�-���k�k�#�w�/���@�@���_�)�)�+�+�i�7�� �����(�(�(r=c�,� |jttfvr|�|��S|jtkr|�|��S|jt ttfvr|� |��S|� |��Sr�) rxr�r�� _proc_gnulongr�� _proc_sparser�r��SOLARIS_XHDTYPE� _proc_pax� _proc_builtin)r�r2s r;r�zTarInfo._proc_member1s��� � �9�)�+;�<� <� <��%�%�g�.�.� .� �Y�.� (� (��$�$�W�-�-� -� �Y�7�G�_�=� =� =��>�>�'�*�*� *��%�%�g�.�.� .r=c�� |j���|_|j}|���s|jt vr||�|j��z }||_|� |j |j |j ��|� ��r|j�d��|_|S�NrU)r�r�r/r_rx�SUPPORTED_TYPES�_blockr(r �_apply_pax_infor{r9r:rar�r�)r�r2r s r;r�zTarInfo._proc_builtin>s��� �#�?�/�/�1�1����!�� �:�:�<�<� -�4�9�O�;�;� �d�k�k�$�)�,�,� ,�F���� ���W�0�'�2B�G�N�S�S�S� �:�:�<�<� .�� �(�(��-�-�D�I�� r=c�8� |j�|�|j����} |�|��}n/#t $r"}t t|����d�d}~wwxYw|j|_|j tkr!t||j |j ��|_n0|j tkr t||j |j ��|_|���r|j�d��|_|Sr�)r�rkr�r(r�r r�r�r rxr�rCr9r:r�r�rXra� removesuffix)r�r2rb�nextr�s r;r�zTarInfo._proc_gnulongTs�� ��o�"�"�4�;�;�t�y�#9�#9�:�:�� :��#�#�G�,�,�D�D��� :� :� :�'��A���/�/�T� 9����� :���� �k�� � �9�(� (� (��C��!1�7�>�B�B�D�I�I� �Y�*� *� *���W�%5�w�~�F�F�D�M� �:�:�<�<� 4�� �.�.�s�3�3�D�I�� s�A � A7�A2�2A7c�4� |j\}}}|`|r�|j�t��}d}t d��D]l} t |||dz���}t ||dz|dz���} n#t $rYn%wxYw|r| r|�|| f��|dz }�mt|d��}|��||_ |j� ��|_ |j |� |j ��z|_||_ |S)Nr�r�r�i�)r|r�rkrrMrSr3r�r�r0r�r/r�r(r ) r�r2r�r�r�rbr�rRr r�s r;r�zTarInfo._proc_sparseosK�� �)-�(<�%���X� � �� (��/�&�&�y�1�1�C��C��2�Y�Y� � ��� ��S��r��\�!2�3�3�F�"�3�s�R�x��b��'8�#9�:�:�H�H��!�����E�E������7�h�7��N�N�F�H�#5�6�6�6��r� ����c�#�h���J�� (��� �"�?�/�/�1�1����)�D�K�K�� �,B�,B�B����� �� s�7A<�< B � B c�� |j�|�|j����}|jt kr|j}n|j���}d}d}g}t|��|k�r�||dk�rst� ||��x}std��� t|� d����}n#t$rtd���wxYw|dkrtd���||zt|��krtd���|�d��|zdz } ||�d��dz| �} | �d��\} } } | r| dks || dkrtd���|�|| | f��| dkr|�| dkr|j}nd }||z }t|��|kr ||dk��s|�d }|D]q\}} } |�| d d |j��}|t,vr#|�| ||j|j��}n|�| d d |j��}|||<�r |�|��}n/#t0$r"}t3t5|����d�d}~wwxYwd |vr|�||��ndd |vr|�||��nI|�d ��d kr0|�d��dkr|�|||��|jt>t@fvr~|�!||j|j��|j"|_"d|vrM|j#}|�$��s|jtJvr||�|j��z }||_"|S)NrrLr$�r�rs hdrcharsetsBINARYr1�GNU.sparse.map�GNU.sparse.sizezGNU.sparse.major�1zGNU.sparse.minorrKr()&r�rkr�r(rxr�r{r�r5�_header_length_prefix_re�matchrPrN�groupr3r'rw� partitionr�r9�_decode_pax_fieldr:�PAX_NAME_FIELDSr�r r�r��_proc_gnusparse_01�_proc_gnusparse_00r��_proc_gnusparse_10r�r�r�r r/r_r�)r�r2rbr{r�r9� raw_headersrr8�header_value_end_offset�keyword_and_value� raw_keyword�equals� raw_valuer�r�r�r�r s r;r�zTarInfo._proc_pax�sF�� ��o�"�"�4�;�;�t�y�#9�#9�:�:�� �9�� � �!�-�K�K�!�-�2�2�4�4�K� ����� ��#�h�h��n�n��S��T�!1�!1�5�;�;�C��E�E�E�E� ;�(�)9�:�:�:� ;��U�[�[��^�^�,�,����� ;� ;� ;�(�)9�:�:�:� ;������z�z�(�)9�:�:�:��V�|�c�#�h�h�&�&�(�)9�:�:�:�&+�k�k�!�n�n�v�&=��&A� #� #�E�I�I�a�L�L�1�$4�5L�$L� M� �->�-H�-H��-N�-N� *�K���� ;�&�D�.�.�C�8O�4P�TX�4X�4X�(�)9�:�:�:� � � �� �Y�?� @� @� @��m�+�+��0@�� �)�)�&�/�H�H�&�H� �6�M�C�M�#�h�h��n�n��S��T�!1�!1�R � ��H�/:� )� )� *�F�K���,�,�[�'�7��N�$�$�G��/�)�)��.�.�y�(�G�DT���(�(����.�.�y�'�7���(�(��$)�K�� � � :��#�#�G�,�,�D�D��� :� :� :�'��A���/�/�T� 9����� :���� �{� *� *� � #� #�D�+� 6� 6� 6� 6� �+� -� -� � #� #�D�+� 6� 6� 6� 6� �_�_�/� 0� 0�C� 7� 7�K�O�O�L^�<_�<_�cf���� O� O� O��+�D�K���$�$��)���:�:�<�<�5�4�9�O�#C�#C��d�k�k�$�)�4�4�4�F�!'���� s$�9"C�C6�8J� J:�J5�5J:c��� g}g}|D]�\}}}|dkrS |�t|��������B#t$rt d���wxYw|dkrS |�t|���������#t$rt d���wxYw��t t ||����|_dS)NsGNU.sparse.offsetrLsGNU.sparse.numbytes)r�rNrAr3rP�list�zipr0)r�r�r �offsetsr��_r�r�s r;rzTarInfo._proc_gnusparse_00s �� �����!,� ?� ?� �A�w���.�.�.�?��N�N�3�u�|�|�~�~�#6�#6�7�7�7�7��!�?�?�?�,�-=�>�>�>�?�����2�2�2�?��O�O�C�� � ���$7�$7�8�8�8�8��!�?�?�?�,�-=�>�>�>�?����3� �3�w��1�1�2�2�� � � s�4A � A$�.4B#�#B=c �� d�|d�d��D��}tt|ddd�|ddd�����|_dS)Nc�,�g|]}t|����Sr�)rN)�.0�xs r;� z.TarInfo._proc_gnusparse_01..s��K�K�K�Q�#�a�&�&�K�K�Kr=r��,r%r$)r�rrr0)r�r�r{r0s r;rzTarInfo._proc_gnusparse_01s_�� �K�K�+�.>�"?�"E�"E�c�"J�"J�K�K�K���3�v�c�c��c�{�F�1�4�a�4�L�9�9�:�:�� � � r=c �\� d}g}|j�t��}|�dd��\}}t |��}t |��|dzkrwd|vr"||j�t��z }|�dd��\}}|�t |����t |��|dzk�w|j���|_tt|ddd�|ddd�����|_ dS)Nr�r$r%) r�rkrr�rNr5r�r�r/rrr0)r�r�r{r2�fieldsr0rb�numbers r;rzTarInfo._proc_gnusparse_10s�� ������o�"�"�9�-�-���i�i��q�)�)� ����V�����&�k�k�F�Q�J�&�&��C����w��+�+�I�6�6�6���)�)�E�1�-�-�K�F�C� �M�M�#�f�+�+� &� &� &� �&�k�k�F�Q�J�&�&� #�?�/�/�1�1����3�v�c�c��c�{�F�1�4�a�4�L�9�9�:�:�� � � r=c�� |���D]�\}}|dkrt|d|���|dkrt|dt|�����B|dkrt|dt|�����g|tvr^|tvr) t ||��}n#t $rd}YnwxYw|dkr|�d��}t|||����|���|_dS)NzGNU.sparse.namer&r�r(zGNU.sparse.realsizerrU) r��setattrrN� PAX_FIELDS�PAX_NUMBER_FIELDSr3r�r�r{)r�r{r9r:r�r�s r;r�zTarInfo._apply_pax_info.s4�� �*�/�/�1�1� .� .�N�G�U��+�+�+���f�e�,�,�,�,��-�-�-���f�c�%�j�j�1�1�1�1��1�1�1���f�c�%�j�j�1�1�1�1��J�&�&��/�/�/�"� 1�'� :�5� A� A����%�"�"�"� !����"�����f�$�$�!�L�L��-�-�E���g�u�-�-�-��&�+�+�-�-����s�B&�& B5�4B5c�~� |�|d��S#t$r|�||��cYSwxYw)NrJ)rA�UnicodeDecodeError)r�r�r9�fallback_encoding�fallback_errorss r;rzTarInfo._decode_pax_fieldEs[�� � D��<�<��(�3�3� 3��!� D� D� D��<�<� 1�?�C�C� C� C� C� D���s �� <�<c�V� t|t��\}}|r|dz }|tzS)Nr$)rjr)r�r�rqrrs r;r�zTarInfo._blockMs9�� �#�5�)�4�4��� � � � �a�K�F�� �!�!r=c� � |jtvSr�)rx� REGULAR_TYPESr�s r;r_z TarInfo.isregVs��>��y�M�)�)r=c�,� |���Sr�)r_r�s r;�isfilezTarInfo.isfileZs��>��z�z�|�|�r=c�$� |jtkSr�)rxr�r�s r;raz TarInfo.isdir^���+��y�G�#�#r=c�$� |jtkSr�)rx�SYMTYPEr�s r;rbz TarInfo.issymbs��/��y�G�#�#r=c�$� |jtkSr�)rx�LNKTYPEr�s r;r`z TarInfo.islnkfr+r=c�$� |jtkSr�)rxr�r�s r;�ischrz TarInfo.ischrjs��2��y�G�#�#r=c�$� |jtkSr�)rxr�r�s r;�isblkz TarInfo.isblkns��.��y�G�#�#r=c�$� |jtkSr�)rx�FIFOTYPEr�s r;�isfifozTarInfo.isfifors��&��y�H�$�$r=c��|jduSr�)r0r�s r;�issparsezTarInfo.issparsevs���{�$�&�&r=c�:� |jtttfvSr�)rxr�r�r5r�s r;�isdevz TarInfo.isdevys��M��y�W�g�x�8�8�8r=r�)r�)3rr�r��dict� __slots__r��propertyr&�setterr'r�r�r�r�rr r�r�r�r�� classmethodr�r�� staticmethodr�r�r�r�r�r�r�r�r�r�r�rrrr�rr�r_r)rarbr`r1r3r6r8r:r�r=r;rrasv��������� � � �,�,� �!�!� �G�F� �H�G�  �  ��  � -�,�  �$�#� �>�>� �F�F� �� � �� � �*�)� � *�)�! �"/�.�# �$5�4�% �&9�9�' �*.�-�+ �,�$�- �.�$�/ �0�t�1 �I�6����0����X�� �[����[������X���_�!�!��_�!�O�O�O��%�e�e��u�E���������8���8*�H�EV�/�/�/�/�" I� I� I� M� M� M�8Q�8Q�8Q�t�M�M��[�M� ��� �'�'��\�'�R����\���*�*��[�*� �0-�0-��[�0-�d�<�<��[�<�|�)�)��[�)�( /� /� /����,���6���8w�w�w�r3�3�3�(;�;�;� ;�;�;� .�.�.�.D�D�D�"�"�"�*�*�*����$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�%�%�%�'�'�'�9�9�9�9�9r=rc���eZdZ dZdZdZdZeZe Z dZ e Z eZdZ d?d�Zedddefd���Zed@d ���ZedAd ���ZedAd ���ZedBd ���Zddddd�Zd�Zd�Zd�Zd�ZdCd�ZdDdd�d�ZdEdd�d�Z dFd�Z!d�Z"dGddd �d!�Z#d"�Z$dHddd �d$�Z%d%�Z& dFd&�Z'd'�Z(d(�Z)d)�Z* dIddd*�d+�Z+d,�Z,d-�Z-d.�Z.d/�Z/d0�Z0d1�Z1d2�Z2d3�Z3d4�Z4d5�Z5d6�Z6dJd7�Z7d8�Z8dFd9�Z9d:�Z:d;�Z;d<�Z�Z>dS)KrrFr$Nr�r�c�� ddddd�}||vrtd���||_|||_|sU|jdkr-tj�|��sd|_d|_t ||j��}d |_n]|�8t|d ��r(t|j ttf��r|j }t|d ��r |j|_d |_|rtj� |��nd|_ ||_|�||_|�||_|�||_|�||_|�||_| |_| �|jt*kr| |_ni|_| �| |_| �| |_| |_d |_g|_d |_|j���|_i|_ |jd kr d|_ |�!��|_ |jdkr� |j�"|j�� |j�#|��}|j�$|��nY#tJ$r"|j�"|j��Yn/tL$r"}tOt|����d�d}~wwxYw��|jdvrxd |_|jrl|j�(|j�)����}|j�*|��|xjtW|��z c_dSdSdS#|js|j�,��d |_�xYw)N�rbzr+b�wb�xb�r��ar�r�!mode must be 'r', 'a', 'w' or 'x'rGr�Fr�r�Tr��rGr�r)-r3r��_moder�r&�exists� bltn_openr�r�r�r�r�rU�abspathr�rYr3� dereference� ignore_zerosr9r:rr{�debug� errorlevel� copybufsizer��members�_loadedr�r �inodes� firstmemberr�r�r�r�r�r rr�r�rlr5r�)r�r�r�r�rYr3rNrOr9r:r{rPrQrR�modesr�rbs r;r�zTarFile.__init__�s��� ���T��=�=�� �u� � ��@�A�A� A��� ��4�[�� �� $��y�C�������t�(<�(<���� �!�� ���d�j�1�1�G�$�D� � �� ���&�!9�!9� ��7�<�#�u��6�6���|���w��'�'� *�$�\�� �#�D� �-1�;�B�G�O�O�D�)�)�)�t�� ��� � � � �D�K� � �"�D�L� � "�*�D� � � #� ,�D� � � �$�D�M��� � � "�t�{�j�'@�'@�*�D� � �!�D� � � ��D�J� � !�(�D�O�'����� ��� ��� ��l�'�'�)�)�� ��� � ��y�C���#'�� �#'�9�9�;�;�� ��y�C��� :��L�%�%�d�k�2�2�2�:�"&�,�":�":�4�"@�"@��� �+�+�G�4�4�4�4��)����� �)�)�$�+�6�6�6���&�:�:�:�'��A���/�/�T�9�����:���� :��y�O�+�+�#�� ��#�,��,�?�?��@P�@U�@U�@W�@W�X�X�C��L�&�&�s�+�+�+��K�K�3�s�8�8�+�K�K�K�K� ,�+�,�,�� ��#� %�� �"�"�$�$�$��D�K� ���s>�.not_compressed3s����}�X�.�)�;�;r=)�keyr�z - method z: � z'file could not be opened successfully: �:r$r�r��|r�zmode must be 'r' or 'w'FrIzundiscernible mode)r3�sortedr\rxr�rr r�r�r�r�r�r�r�r[)r�r�r�r�rp�kwargsr]� error_msgsr��func� saved_posr��error_msgs_summary�filemode�streamr�s` r;rz TarFile.open s����! �F� 0�G� 0��.�/�/� /� �<� � � <� <� <� <� <��J�"�3�=�n�E�E�E� � ���s�C�M�(�$;�<�<���&� '� � ���I���4��c�7�=�=�f�=�=�=�=�=��!�#3�4�����%�%�&C�(�&C�&C�a�&C�&C�D�D�D��*�� � �Y�/�/�/��H�H�H�H����� ���� "&���:�!6�!6� ��[�GY�[�[�\�\� \� �D�[�[�!%���C��!3�!3� �H�h���3�H��(�5�H��3�=�(�(��s�C�M�(�$;�<�<���&�'D�x�'O�P�P�P��4��h��:�:�6�:�:� :� �D�[�[�!%���C��!3�!3� �H�h���3�H��(�5�H��z�)�)� �!:�;�;�;��T�8�X�w��H�H�F� ��C��h��9�9�&�9�9���� �� � ��������!�A�M��H� �_� $� $��3�;�t�T�7�=�=�f�=�=� =��-�.�.�.s$�+ A8�8C� 2C�C�" F.�.Gc �@� |dvrtd���||||fi|��S)NrFrH)r3)r�r�r�r�rcs r;r[zTarFile.taropengs>�� � �+� +� +��@�A�A� A��s�4��w�1�1�&�1�1�1r=r�c ��� |dvrtd��� ddlm}n#t$rt d��d�wxYw |||dz||��}n+#t $r}|�|dkrt d��|��d}~wwxYw |j|||fi|��}nR#t $r0}|���|dkrt d��|��d}~w|����xYwd |_ |S) N�r�r�r�mode must be 'r', 'w' or 'x'r)�GzipFilezgzip module is not availablersr�r�F) r3�gziprnr�r r�rr[r�r�) r�r�r�r�� compresslevelrcrnr�r�s r;�gzopenzTarFile.gzopenosX�� � �� &� &��;�<�<� <� M� %� %� %� %� %� %� %��� M� M� M�"�#A�B�B�� L� M���� ��h�t�T�C�Z���H�H�G�G��� � � ��"�t�s�{�{�� 1�2�2��9� ����� ���� ��� �D�$��:�:�6�:�:�A�A��� � � � �M�M�O�O�O��s�{�{�� 1�2�2��9� ����� � �M�M�O�O�O� ������ ��s7��8�A� A6�A1�1A6�:B � C�+C�Cc �~� |dvrtd��� ddlm}n#t$rt d��d�wxYw||p|||���} |j|||fi|��}nY#t tf$r0}|���|dkrtd��|��d}~w|����xYwd |_ |S) Nrlrmr)�BZ2Filer�)rpr�znot a bzip2 fileF) r3r�rsr�r r[r��EOFErrorr�rr�) r�r�r�r�rprcrsr�r�s r;�bz2openzTarFile.bz2open�s�� � �� &� &��;�<�<� <� L� #� #� #� #� #� #� #��� L� L� L�"�#@�A�A�t� K� L�����'�'�/�T�4�}�M�M�M�� ��� �D�$��:�:�6�:�:�A�A����"� � � � �M�M�O�O�O��s�{�{�� 2�3�3��:� ����� � �M�M�O�O�O� ������ ��s ��8� A�B3�.+B�B3c �x� |dvrtd��� ddlm}m}n#t$rt d��d�wxYw||p|||���} |j|||fi|��}nT#|tf$r0} |���|dkrtd��| ��d} ~ w|����xYwd |_ |S) Nrlrmr)�LZMAFiler�r�)�presetr�znot an lzma fileF) r3r�rwr�r�r r[rtr�rr�) r�r�r�r�rxrcrwr�r�r�s r;�xzopenzTarFile.xzopen�s�� � �� &� &��;�<�<� <� M� 0� 0� 0� 0� 0� 0� 0� 0� 0��� M� M� M�"�#A�B�B�� L� M�����(�7�?�d�D��@�@�@�� ��� �D�$��:�:�6�:�:�A�A���8�$� � � � �M�M�O�O�O��s�{�{�� 2�3�3��:� ����� � �M�M�O�O�O� ������ ��s ��:�A� B0�++B�B0r[rqrury)r�r�r�r�c��� |jrdSd|_ |jdvr�|j�tt dzz��|xjt dzz c_t|jt��\}}|dkr*|j�tt|z z��|j s|j� ��dSdS#|j s|j� ��wwxYw)NTrIr%r) r�r�r�rlr6rr rj� RECORDSIZEr�r�)r�rqrrs r;r�z TarFile.close�s��� � �;� � �F��� � %��y�O�+�+�� �"�"�3�)�a�-�#8�9�9�9�� � � �A� �.� � �%+�4�;� �$C�$C�!�� ��q�=�=��L�&�&�s�j�9�.D�'E�F�F�F��#� %�� �"�"�$�$�$�$�$� %� %��4�#� %�� �"�"�$�$�$�$� %���s �BC�#C2c�� |�|�d����}|�td|z���|S)NrUzfilename %r not found)� _getmemberr��KeyError)r�r�r3s r;� getmemberzTarFile.getmember�sD�� � �/�/�$�+�+�c�"2�"2�3�3�� �?��2�T�9�:�:� :��r=c�p� |���|js|���|jSr�)�_checkrT�_loadrSr�s r;� getmemberszTarFile.getmembers�s5�� � � � � � � ��|� � �J�J�L�L�L��|�r=c�@� d�|���D��S)Nc��g|] }|j�� Sr�r�)rr3s r;rz$TarFile.getnames..s��>�>�>��� �>�>�>r=)r�r�s r;�getnameszTarFile.getnames�s'�� �?�>�D�O�O�,=�,=�>�>�>�>r=c��� |�d��|�|j}|�|}tj�|��\}}|�tjd��}|�d��}|���}||_ |�1|j stj |��}n;tj |��}n&tj |�����}d}|j}tj|��ri|j|jf} |j s:|jdkr/| |jvr&||j| krt*} |j| }n�t,} | dr ||j| <n�tj|��rt0} n�tj|��rt4} njtj|��rt8} tj|��}n:tj|��rt>} ntj |��rtB} ndS||_||_"|j#|_$|j%|_&| t,kr |j'|_(nd|_(|j)|_*| |_+||_,tZr6 t[j.|j$��d|_/n#t`$rYnwxYwtbr6 tcj2|j&��d|_3n#t`$rYnwxYw| t>tBfvrftitd��rQtitd��r$J#�# J0�/J0�;$K � K-�,K-T)rSc�� |���|�|}|D�]�}|�r|j�td��n&ttj|j����t|jp|j�d|jp|j����|� ��s|� ��r"tdd|j |j fzz��ntd|j z��|j�td��n1tdtj|j��dd�z��t|j|���rdnd z��|rV|���rtd |jz��|���rtd |jz��t-�����dS) Nz ??????????rUz%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02dr�r�z-> zlink to )r�r�r|r�rhr,r*r-r+r1r3ryrzr(r)r�� localtimer�rarbrXr`r{)r��verboserSr3s r;rz TarFile.listfs��� � � � � � � � �?��G�� � �G�� E��<�'�� �-�-�-�-��� �g�l� ;� ;�<�<�<��w�}�'C�� �'C�'C�'.�}�'C�� �'C�E�F�F�F��=�=�?�?�7�g�m�m�o�o�7���$��(8�'�:J�'K�K�!M�N�N�N�N� ���� 5�6�6�6��=�(�� 5�6�6�6�6�� =�"&�.���"?�"?����"C�!D�E�E�E� �� �w�}�}���(F���B�G� H� H� H�� ?��=�=�?�?�:����(8� 8�9�9�9��=�=�?�?�?�� �W�-=� =�>�>�>� �G�G�G�G�5 � r=��filterc��� |�d��|�|}|j�Ctj�|��|jkr|�dd|z��dS|�d|��|�||��}|�|�dd|z��dS|�(||��}|�|�dd|z��dS|���rAt|d��5}|� ||��ddd��dS#1swxYwYdS|� ��r�|� |��|ryttj |����D]Y}|� tj�||��tj�||��||����XdSdS|� |��dS) Nr�r%ztarfile: Skipped %rr$ztarfile: Unsupported type %r�tarfile: Excluded %rrCr�)r�r�r�r&rM�_dbgr�r_rL�addfilerarb�listdir�addr�)r�r�r�� recursiver�r3�fs r;r�z TarFile.add�sI�� � � � �E���� �?��G� �9� �R�W�_�_�T�%:�%:�d�i�%G�%G� �I�I�a�.��5� 6� 6� 6� �F� � � �!�T�����/�/�$��0�0�� �?� �I�I�a�7�$�>� ?� ?� ?� �F� � ��f�W�o�o�G���� � �!�3�d�:�;�;�;��� �=�=�?�?� "��4��&�&� )�!�� � �W�a�(�(�(� )� )� )� )� )� )� )� )� )� )� )� )���� )� )� )� )� )� )��]�]�_�_� "� �L�L�� !� !� !�� 6��� �4� 0� 0�1�1�6�6�A��H�H�R�W�\�\�$��2�2�B�G�L�L��!�4L�4L�%�f��6�6�6�6� 6� 6�6�6� �L�L�� !� !� !� !� !s�<D � D$�'D$c�h� |�d��tj|��}|�|j|j|j��}|j�|��|xjt|��z c_|j }|��t||j|j |���t|j t��\}}|dkr/|j�tt|z z��|dz }|xj|tzz c_|j�|��dS)Nr�)rprr$)r�r�r�rYr9r:r�rlr r5rRrir(rjrr6rSr�)r�r3r�rbrprqrrs r;r�zTarFile.addfile�s�� � � � �E�����)�G�$�$���m�m�D�K���� �D�D�� � ���3���� � � �s�3�x�x�� � �� �� � � ����w�|�W� M� M� M� M� &�w�|�Y� ?� ?� �F�I��1�}�}�� �"�"�3�)�i�*?�#@�A�A�A��!� �� �K�K�6�I�-� -�K�K� � ���G�$�$�$�$�$r=c���|�6|j}|�tSt|t��rt d���|St |��r|S t |S#t$rtd|�d���d�wxYw)NzrString names are not supported for TarFile.extraction_filter. Use a function such as tarfile.data_filter directly.zfilter z not found) �extraction_filterrmr�r�� TypeError�callable�_NAMED_FILTERSr~r3)r�r�s r;�_get_filter_functionzTarFile._get_filter_function�s��� �>��+�F��~�+�+��&�#�&�&� 7��6�7�7�7��M� �F� � � ��M� G�!�&�)� )��� G� G� G��;�v�;�;�;�<�<�$� F� G���s � A�A7�.)� numeric_ownerr�c�4� g}|�|��}|�|}|D]u}|�|||��\}} |��|���r|�| ��|�|||��� ||����v|�d�d���|D�]g} || |��}n:#t $r-} |�| t| ����Yd} ~ �Dd} ~ wwxYw|�|�| d���etj � ||j ��} tj | ��} n&#t$r|�|d��Y��wxYwtj| j��s|�|d����|�|| |���|�|| ��|�|| ����<#t*$r } |�| ��Yd} ~ ��ad} ~ wwxYwdS) N)� set_attrsr��filter_functionc��|jSr�r�)rGs r;�z$TarFile.extractall.. s��q�v�r=T)r^�reversezexcluded by filter�missingznot a directory)r�)r��_get_extract_tarinforar�� _extract_one�sort�_FILTER_ERRORS�_log_no_directory_fixup�reprr�r&r�r�r��FileNotFoundErrorr�r�r��chown�utime�chmodr �_handle_nonfatal_error)r�r&rSr�r�� directoriesr�rer3� unfiltered�exc�dirpathr�r�s r;� extractallzTarFile.extractall�s��� �� ��3�3�F�;�;�� �?��G�� ?� ?�F�"&�";�";����#/�#/� �G�Z�����}�}��� /��"�"�:�.�.�.� � � �g�t�7�=�=�?�?�7J�,9�.=� � ?� ?� ?� ?� ���-�-�t��<�<�<�&� /� /�J� /��-�o�j�$�?�?�G�G��%�����0�0��T�#�Y�Y�G�G�G��H�H�H�H����������?��0�0��1E�G�G�G���'�,�,�t�W�\�:�:����H�W�-�-�E�E��(�����0�0��)�D�D�D��H������|�E�M�2�2���0�0��:K�L�L�L��� � �7�G�=� �I�I�I�� � �7�G�,�,�,�� � �7�G�,�,�,�,��� /� /� /��+�+�A�.�.�.�.�.�.�.�.����� /����7 /� /sm�4 C�G+� C8� #C3�.G+�3C8�8G+�%G+�:E�G+� E2�/G+�1E2�22G+�%AG+�+ H�5H�Hc�J�|�dd|j�d|�d���dS)Nr%z!tarfile: Not fixing up directory z (�))r�r�)r�re�reasons r;r�zTarFile._log_no_directory_fixup/ s:�� � � �!�!��;�;�;����(� )� )� )� )� )r=r�c�� |�|��}|�|||��\}}|�|�||||��dSdSr�)r�r�r�) r�rer&r�r�r�r�r3r�s r;�extractzTarFile.extract3 sk�� ��3�3�F�;�;��"�7�7� �O�T�+�+���� � � � � �g�t�Y� � F� F� F� F� F� � r=c�"� t|t��r|�|��}n|}d} |||��}nZ#ttf$r}|�|��Yd}~n/d}~wt $r}|�|��Yd}~nd}~wwxYw|� |�dd|j z��dS|� ��r>tj |��}tj �||j��|_||fS)Nr%r�)NN)r�r�rr�r9�_handle_fatal_errorr r�r�r�r`r�r�r&r�rXr})r�rer�r&r��filteredr�s r;r�zTarFile._get_extract_tarinfoG sA�� � �f�c� "� "� �����/�/�J�J��J��� +�&��z�4�8�8�H�H����%� (� (� (� � $� $�Q� '� '� '� '� '� '� '� '������ +� +� +� � '� '�� *� *� *� *� *� *� *� *����� +���� � � �I�I�a�/�*�/�A� B� B� B��:� �>�>� � � J��y��*�*�H�$&�G�L�L��x�7H�$I�$I�H� !���#�#s!� ?�B�A*�* B�7B�Bc�Z� |�d�� |�|tj�||j��||||���dS#t $r }|�|��Yd}~dSd}~wt$r }|� |��Yd}~dSd}~wwxYw)Nr�)r�r�r��extraction_root) r��_extract_memberr�r&r�r�r�r�r r�)r�r3r&r�r�r�r�s r;r�zTarFile._extract_onee s��� � � � �C���� +� � � ��"�'�,�,�t�W�\�*J�*J�+4�/<�1@�15� !� 7� 7� 7� 7� 7�� � (� (� (� � $� $�Q� '� '� '� '� '� '� '� '� '������ +� +� +� � '� '�� *� *� *� *� *� *� *� *� *����� +���s#�>A� B*�"A=�= B*� B%�%B*c�R� |jdkr�|�dd|z��dS)Nr$� tarfile: %s)rQr��r�r�s r;r�zTarFile._handle_nonfatal_errory s4��K� �?�Q� � � � �I�I�a���*� +� +� +� +� +r=c�D� |jdkr�t|t��rO|j� |�dd|jz��dS|�dd|j�d|j����dS|�ddt |��j�d|����dS)Nrr$r�z tarfile: rv)rQr�r��filenamer��strerrorrxrr�s r;r�zTarFile._handle_fatal_error� s���?� �?�Q� � � � ��7� #� #� C��z�!�� � �!�]�Q�Z�7�8�8�8�8�8�� � �!�!�����Q�Z�Z�H�I�I�I�I�I� �I�I�a�a�T�!�W�W�-=�-=�-=�q�q�A� B� B� B� B� Br=c��� |�d��t|t��r|�|��}n|}|���s|jt vr|�||��S|���s|� ��rQt|j t��rtd���|� |�|����SdS)Nr�z'cannot extract (sym)link as file object)r�r�r�rr_rxr�� fileobjectr`rbr�r�r � extractfile�_find_link_target)r�rer3s r;r�zTarFile.extractfile� s��� � � � �C���� �f�c� "� "� ��n�n�V�,�,�G�G��G� �=�=�?�?� �g�l�/�A�A��?�?�4��1�1� 1� �]�]�_�_� �� � ��� ��$�,��0�0� I�"�"K�L�L�L��'�'��(>�(>�w�(G�(G�H�H�H��4r=�r�r�c�"� |�d��}|�dtj��}tj�|��}|r3tj�|��stj|��|���s|� ��r&|� d|j �d|j ����n|� d|j ��|� ��r|�||���n|���r|�||��n�|���r|�||��n�|���s|���r|�||��n}|���s|� ��r|�||||���n;|jt0vr|�||��n|�||��|rY|�|||��|� ��s0|�||��|�||��dSdSdS)NrUr$z -> r�)r�r�r�r[r&rdrK�makedirsr`rbr�r�rXr_�makefilera�makedirr6�makefifor1r3�makedev�makelink_with_filterrxr�� makeunknownr�r�r�)r�r3� targetpathr�r�r�r�� upperdirss r;r�zTarFile._extract_member� sy�� � �&�&�s�+�+� ��'�'��R�V�4�4� ��G�O�O�J�/�/� � � #�R�W�^�^�I�6�6� #� �K� � "� "� "� �=�=�?�?� '�g�m�m�o�o� '� �I�I�a�w�|�|�|�W�5E�5E�F� G� G� G� G� �I�I�a��� &� &� &� �=�=�?�?� /� �M�M�'�:� .� .� .� .� �]�]�_�_� /� �L�L��*� -� -� -� -� �^�^� � � /� �M�M�'�:� .� .� .� .� �]�]�_�_� /�� � ��� /� �L�L��*� -� -� -� -� �]�]�_�_� /�� � ��� /� � %� %��� /� /� &� 1� 1� 1� 1��\�� 0� 0� � � �W�j� 1� 1� 1� 1� �M�M�'�:� .� .� .� � 0� �J�J�w� �M� :� :� :��=�=�?�?� 0�� � �7�J�/�/�/�� � �7�J�/�/�/�/�/�  0� 0� 0� 0r=c��� |j�tj|��dStj|d��dS#t$r$tj�|��s�YdSwxYw)Ni�)r�r��mkdir�FileExistsErrorr&ra�r�r3r�s r;r�zTarFile.makedir� s��� � ��|�#����$�$�$�$�$����U�+�+�+�+�+��� � � ��7�=�=��,�,� �� � � � ���s�7�7�*A%�$A%c ��� |j}|�|j��|j}t |d��5}|j�i|jD]2\}}|�|��t |||t|���3|�|j��|� ��nt |||jt|��ddd��dS#1swxYwYdS)NrD) r�r�r/rRrLr0rirr(�truncate)r�r3r��sourcerp�targetr r(s r;r�zTarFile.makefile� s8�� ����� � �G�'�(�(�(��"�� �z�4� (� (� N�F��~�)�$+�N�J�J�L�F�D��K�K��'�'�'�����i��I�I�I�I�� � �G�L�)�)�)����!�!�!�!��F�F�G�L�)�W�M�M�M� N� N� N� N� N� N� N� N� N� N� N� N���� N� N� N� N� N� Ns�BC�C�Cc�p� |�||��|�dd|jz��dS)Nr$z9tarfile: Unknown file type %r, extracted as regular file.)r�r�rxr�s r;r�zTarFile.makeunknown sT�� � � � �g�z�*�*�*� � � �!�2�4;�L�A� B� B� B� B� Br=c�x� ttd��rtj|��dStd���)N�mkfifozfifo not supported by system)r�r�rr r�s r;r�zTarFile.makefifo s>�� � �2�x� � � ?� �I�j� !� !� !� !� !��=�>�>� >r=c�\� ttd��rttd��std���|j}|�d}|���r|t jz}n|t jz}tj||tj |j |j ����dS)N�mknodr�z'special devices not supported by systemrW) r�r�r r�r3r��S_IFBLK�S_IFCHRrr�ryrz)r�r3r�r�s r;r�zTarFile.makedev s��� ��r�7�#�#� J�7�2�y�+A�+A� J��H�I�I� I��|�� �<��D� �=�=�?�?� !� �D�L� �D�D� �D�L� �D� ���T���G�,�g�.>�?�?� A� A� A� A� Ar=c�2�|�||dd��Sr�)r�r�s r;�makelinkzTarFile.makelink% s���(�(��*�d�D�I�I�Ir=c�� d} |���rOtj�|��rtj|��tj|j|��dStj�|j��rtj |j|��dSn#t$rd}YnwxYw |� |��}n!#t$r|rtd��d��wxYw|�|}nG|�td��� |||��}n(#t$r}t||j��|�d}~wwxYw|�|�||||���dSdS)NFTz%unable to resolve link inside archivez[makelink_with_filter: if filter_function is not None, extraction_root must also not be Noner�)rbr�r&�lexists�unlink�symlinkrXrKr}�link�symlink_exceptionr�r~r r�rRr�r�) r�r3r�r�r��keyerror_to_extracterrorr�r��causes r;r�zTarFile.makelink_with_filter( s��� �$)� � ,��}�}��� ��7�?�?�:�.�.�*��I�j�)�)�)�� �7�+�Z�8�8�8����7�>�>�'�"6�7�7���G�G�0�*�=�=�=��F���!� ,� ,� ,�'+� $� $� $� ,���� ��/�/��8�8�J�J��� � � �'� �"�;�=�=�BF�G��  ���� � "�!�H�H��&�"�>�?�?�?� M�*�?�:��G�G����!� M� M� M�'����A�A�u�L����� M���� � � � � ��:�1@�1@� !� B� B� B� B� B� � s<�A!B)�(>B)�) B8�7B8�<C�C0� D� D<�!D7�7D<c�� ttd���r*tj��dk�r|j}|j}|s~ t r&|jrt j|j��d}n#t$rYnwxYw tr&|j rtj |j ��d}n#t$rYnwxYw|�d}|�d} |� ��r-ttd��rtj |||��dStj|||��dS#t$r}t!d��|�d}~wwxYwdSdS)N�geteuidrr%r?�lchownzcould not change owner)r�r�rr+r*r�r-�getgrnamr~r�r,�getpwnamrbrr�r�r )r�r3r�r��g�ur�s r;r�z TarFile.chownZ s��� � �2�y� !� !� D�b�j�l�l�a�&7�&7�� �A�� �A� � ���;�w�}�;��L���7�7��:���������D�������;�w�}�;��L���7�7��:���������D������y����y��� D��=�=�?�?�/�w�r�8�'<�'<�/��I�j�!�Q�/�/�/�/�/��H�Z��A�.�.�.�.�.��� D� D� D�"�#;�<�<�!�C����� D����1 D� D�&7�&7sB�-A/�/ A<�;A<�-B.�. B;�:B;�?D �D � D?�*D:�:D?c�� |j�dS tj||j��dS#t$r}t d��|�d}~wwxYw)Nzcould not change mode)r�r�r�r�r )r�r3r�r�s r;r�z TarFile.chmod{ sc�� � �<� � �F� ?� �H�Z��� .� .� .� .� .��� ?� ?� ?��6�7�7�Q� >����� ?���s�(� A�A�Ac��� |j}|�dSttd��sdS tj|||f��dS#t$r}t d��|�d}~wwxYw)Nr�z"could not change modification time)r)r�r�r�r�r )r�r3r�r)r�s r;r�z TarFile.utime� s��� �� �� �=� �F��r�7�#�#� � �F� L� �H�Z�%��� 0� 0� 0� 0� 0��� L� L� L��C�D�D�!� K����� L���s�>� A�A�Ac�2� |�d��|j�|j}d|_|S|j|j���krX|jdkrdS|j�|jdz ��|j�d��std���d} |j� |��}�n�#t$rL}|j r:|� dd|j|fz��|xjtz c_Yd}~�iYd}~�nYd}~wt$rs}|j r:|� dd|j|fz��|xjtz c_Yd}~��|jdkrtt|����d�Yd}~n�d}~wt $r|jdkrtd��d�Yn�t"$r2}|jdkrtt|����d�Yd}~n~d}~wt$$r"}tt|����d�d}~wt&$rD} ddl}t+||j��rtd |����d�|�#t.$r|�wxYwd}~wwxYw |�|j�|��nd|_|S) N�rarr$rgTr%z0x%X: %sz empty filez zlib error: )r�rVr r�r�r�rkrr3r�r�rOr�rrPr�r�r�r�� Exceptionr�r�r�r�rSr�rT)r��mr3r�r�s r;r�z TarFile.next� s6�� � � � �D���� � � '�� �A�#�D� ��H� �;�$�,�+�+�-�-� -� -��{�a����t� �L� � �d�k�A�o� .� .� .��<�$�$�Q�'�'� :�� 8�9�9�9��� � ��,�2�2�4�8�8����!� � � ��$���I�I�a��t�{�A�.>�!>�?�?�?��K�K�9�,�K�K��H�H�H�H����������&� 6� 6� 6��$�6��I�I�a��t�{�A�.>�!>�?�?�?��K�K�9�,�K�K��H�H�H�H��[�A�%�%�#�C��F�F�+�+��5�&�%�%�%�%�����#� <� <� <��;�!�#�#�#�L�1�1�t�;�$�#�'� 6� 6� 6��;�!�#�#�#�C��F�F�+�+��5�$�#�#�#�#�����(� 2� 2� 2���A���'�'�T�1������ � � ���K�K�K�!�!�T�Z�0�0� �'�(:�q�(:�(:�;�;��E����"�����G��������� ���� � � � �L� � �� (� (� (� (��D�L��s`�,C� I/� I/�(G4�4 I/�H� I/�,.I� I'�'I*�*I/c��� |���}d}|�3 |�|��}|d|�}n#t$rd}YnwxYw|rtj�|��}t |��D]O}|r|j|jkrd}�|r%tj�|j��}n|j}||kr|cS�P|rt|���dS)NFT) r��indexr3r�r&rc�reversedr r�) r�r�r3� normalizerS�skippingrre� member_names r;r}zTarFile._getmember� s,�� ��/�/�#�#���� � � *�� � �g�.�.��"�&�5�&�/���� � � � � ���� ���� � *��7�#�#�D�)�)�D��w�'�'� � �F�� ��>�V�]�2�2�$�H��� *� �g�.�.�v�{�;�;� � �$�k� ��{�"�"�� � � �#� � &��W�%�%� %� &� &s�;� A � A c�H� |���}|�n�d|_dSr)r�rT)r�r3s r;r�z TarFile._load� s3�� � ��i�i�k�k�G���� ��� � � r=c�� |jrtd|jjz���|� |j|vrtd|jz���dSdS)Nz %s is closedzbad operation for mode %r)r�r�r4rr�)r�r�s r;r�zTarFile._check sb�� � �;� D��.�4�>�+B�B�C�C� C� � �� �� 5� 5��5�� �A�B�B� B� � � 5� 5r=c�8� |���rOd�tdtj�|j��|jf����}d}n |j}|}|�||d���}|�td|z���|S)NrUT)r3r zlinkname %r not found) rbr�r�r�r&rdr�rXr}r~)r�r3rX�limitres r;r�zTarFile._find_link_target s��� � �=�=�?�?� ��x�x��t�b�g�o�o�g�l�.K�.K�W�M]�-^� _� _�`�`�H��E�E��'�H��E�����5�D��I�I�� �>��2�X�=�>�>� >�� r=c#�4K� |jr|jEd{V��dSd}|j�|���}|dz }|V� |t |j��kr|j|}n)|js |���}|s d|_dSndS|dz }|V��Y)Nrr$T)rTrSrVr�r5)r�rr3s r;�__iter__zTarFile.__iter__" s����� � �<� ��|� #� #� #� #� #� #� #� �F��� � � '��i�i�k�k�G� �Q�J�E��M�M�M� ��s�4�<�(�(�(�(��,�u�-����\� ��)�)�+�+����#'�D�L��F���� �Q�J�E��M�M�M� r=c�X� ||jkrt|tj���dSdS)N��file)rPr{ry�stderr)r��level�msgs r;r�z TarFile._dbgA s7�� � �D�J� � � �#�C�J� '� '� '� '� '� '� � r=c�.�|���|Sr�)r�r�s r;� __enter__zTarFile.__enter__G s�� � � � � � �� r=c��|�|���dS|js|j���d|_dSr)r�r�r�r�)r�rxr�� tracebacks r;�__exit__zTarFile.__exit__K sD�� �<� �J�J�L�L�L�L�L��#� %�� �"�"�$�$�$��D�K�K�Kr=) Nr�NNNNNNr�NNNN)r�N)r�Nr�)r�NN)NNN�Trr�)r�N)r�T)TFr)?rr�r�rPrNrOrQrrYr r9r:rr3r-r�r�r�r?r{rr[rqruryr\r�rr�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r}r�r�r�r(r�r0r3r�r=r;rr~s,������� �E��K��L��J��F��H� �F��G��J���AE�HL�>B�)-�b�b�b�b�^��#�t�Z�[/�[/�[/��[�[/�z�2�2�2��[�2������[��@�����[��6�����[��:���� ��I�%�%�%�* � � ����?�?�?� a�a�a�a�F$�D�$�$�$�$�$�L1"��1"�1"�1"�1"�1"�f%�%�%�%�2G�G�G�$C/�%��C/�C/�C/�C/�C/�J)�)�)�G���G�G�G�G�G�($�$�$�>&*�+�+�+�+�(,�,�,� C� C� C����@>B�&+�10�@D�(,�10�10�10�10�10�p � � �N�N�N� B�B�B�?�?�?�A�A�A�$J�J�J�0B�0B�0B�dD�D�D�B?�?�?� L� L� L�<�<�<�B&&�&&�&&�&&�P���C�C�C�C����&���>(�(�(� �������r=rc�� t|d��r:|���}t|���}|�|��nt|��}|���dS#t $rYdSwxYw)Nrk)r�TF)r�r�rr�r�r)r�r�r�s r;rrY s���� � �4�� � � ��)�)�+�+�C��T�"�"�"�A� �I�I�c�N�N�N�N��T� � �A� ��� � � ��t�� �����u�u����s�A-A2�2 B�?Bc �z �ddl}d}|�|���}|�ddddd� ��|�d d td � ��|�d���}|�dddd���|�ddddd���|�ddddd���|�dd dd!���|���}|jr|j�|�d"d#��|j ��|j }t|��r�t|d$��5}|� ��t|� ��tj�%��ddd��n #1swxYwY|jr$td&�|����dSdS|�d"d'�|����dS|j��|j}t|��rQt&� |d(��5}|�|j�)��ddd��dS#1swxYwYdS|�d"d'�|����dS|j��Rt)|j��d"kr|jd}t*j}nKt)|j��d*kr |j\}}n(|�d"|�����t|��r�t&� |d(��5}|�||j�+��ddd��n #1swxYwY|jrC|d,krd-�|��} nd.�||��} t| ��dSdS|�d"d'�|����dS|j��|j�d��} t*j�| ��\} } d/d/d0d0d1d1d1d1d2�} | | vr d3| | znd4}|j}t&� | |��5}|D]}|�|��� ddd��n #1swxYwY|jr&td5�| ����dSdSdS)6Nrz3A simple command-line interface for tarfile module.)� descriptionz-vz --verbose� store_trueFzVerbose output)�action�default�helpz--filterz zFilter for extraction)�metavar�choicesr;T)�requiredz-lz--list� zShow listing of a tarfile)r<r;z-ez --extract�+)r?z zExtract tarfile into target dir)�nargsr<r;z-cz--create)zzzCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr$z&--filter is only valid for extraction r�r*z{!r} is a tar archive.z{!r} is not a tar archive. rY)r�r%)r&r�r�z{!r} file is extracted.z+{!r} file is extracted into {!r} directory.r�r�r�)r�z.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:r�z{!r} file created.)�argparse�ArgumentParser� add_argumentr��add_mutually_exclusive_group� parse_argsr�r��exit�testrrr�r{ryr,r�rYrrr5r��curdir� format_helpr��create�popr&�splitextr�)rBr7�parserr�argsrmr��tfrIr.�tar_namer�ext� compressions�tar_mode� tar_files� file_names r;�mainrWn s$���O�O�O�G�K� � $� $�� $� =� =�F� ����k�,��-��/�/�/� ��� �N� .�4��6�6�6� � /� /�� /� >� >�E� ���t�X�{�7��9�9�9� ���t�[��<�=��?�?�?� ���t�Z�s�3�9��;�;�;� ���t�X�{�8��:�:�:� � � � � �D� �{�B�t�|�+�� � �A�@�A�A�A� �y���i�� �c�?�?� G��c�3��� 9�3���� � � ��c�n�n�&�&�S�Z�8�8�8�8� 9� 9� 9� 9� 9� 9� 9� 9� 9� 9� 9���� 9� 9� 9� 9��|� <��.�5�5�c�:�:�;�;�;�;�;� <� <� �K�K��9�@�@��E�E� F� F� F� F� F� �� ��i�� �c�?�?� G����c�5�)�)� .�R����� ��-�-�-� .� .� .� .� .� .� .� .� .� .� .� .���� .� .� .� .� .� .� �K�K��9�@�@��E�E� F� F� F� F� F� �� !� �t�|� � �� !� !��,�q�/�C��Y�F�F� ��� � �!� #� #��,�K�C��� �K�K��6�-�-�/�/� 0� 0� 0� �c�?�?� G����c�5�)�)� ?�R�� � �6�$�+� �>�>�>� ?� ?� ?� ?� ?� ?� ?� ?� ?� ?� ?���� ?� ?� ?� ?��|� ��S�=�=�3�:�:�3�?�?�C�C�2�39�6�#�v�3F�3F���c� � � � � �  � � �K�K��9�@�@��E�E� F� F� F� F� F� �� ��;�?�?�1�%�%����!�!�(�+�+���3���������  �  � �03�l�/B�/B�4�,�s�+�+�+����K� � �\�\�(�H� -� -� "��&� "� "� ����y�!�!�!�!� "� "� "� "� "� "� "� "� "� "� "� "���� "� "� "� "� �<� 9� �&�-�-�h�7�7� 8� 8� 8� 8� 8�1 !� �. 9� 9sI�6AF�F� F�I�I �I �/M�M�M�R�R� R�__main__r4)n�version� __author__� __credits__�builtinsrrLryr�rrhr�r�r`r��re�warningsr�r�r��AttributeError�NotImplementedErrorr r�� NameError�__all__r6rr{r�r�r�r�r�rr�r/r-r�r�r�r5�CONTTYPEr�r�r�r�r�r�rrrrr�r'r�rrr�rNr r�r �getfilesystemencodingr<rCrSr[rerir|rrr rr r r r�r�r�rPr�r�r��objectr�r �BufferedReaderr-r9r;r@rIrLrOrRr�rkrmrrrtr�r��compilerrrrrWrr�r=r;�rhs7��:���6� �H� � '�&�&�&�&�&� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �������J�J�J�J������ �C�C�C�������J�J�J�J������ �C�C�C�����$�%8�9�� ��'��#����� � � ��D� ���� %� %� %�� �� � � ��^� � � �� �� �� �� � �� �� �� �� �� �� �� �� �������� �� ����� � � � � ��� �H�g��G�X��W�g�#�%5�!� #���(��>�+� ��/� � � �.� �9�8�8�� � � � � � � ����7�d�?�?��H�H�(�s�(�*�*�H� 0�0�0�&�&�&� � � �(�N� � � � �< *� *� *�"&��$� � � � �2��� � � � � �y� � � � � � � � �8� � � � � � � � �� � � � � � � � �x� � � � � � � � �(� � � � � � � � �(� � � � � � � � �{� � � � � � � � �;� � � � � � � � �[� � � � � � � � �� � � � � � � � �K� � � ���������0p�p�p�p�p�p�p�p�f�����6����