__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

��g,F����SrSSKrSSKrSSKJr SSKJr SSKJr "SS\5r"SS	\	5r
"S
S\5r"SS
\	5r\R"S5rSrSrSrg)z-Create and edit manifest for session contents�N)�config)�log)�utilc��\rSrSrSrSrg)�
ManifestError� z-
Exception raised when problem with manifest
�N��__name__�
__module__�__qualname__�__firstlineno__�__doc__�__static_attributes__r	��4/usr/lib/python3/dist-packages/duplicity/manifest.pyrr ����	rrc�n�\rSrSrSrSSjrSrSrSrSr	S	r
S
r\rSr
SrS
rSrSrSrSrg)�Manifest�(z0
List of volumes and information about each one
Nc�H�SUlSUl0UlXl/Ulg)zn
Create blank Manifest

@param fh: fileobj for manifest
@type fh: DupPath

@rtype: Manifest
@return: manifest
N)�hostname�
local_dirname�volume_info_dict�fh�
files_changed)�selfrs  r�__init__�Manifest.__init__-s(����
�!��� "�������rc��[RUl[RRUlUR
(a�UR(a6UR
R
SURR5-5 UR(a1UR
R
S[UR5-5 U$)zn
Set information about directory from config,
and write to manifest file.

@rtype: Manifest
@return: manifest
�Hostname %s
�Localdir %s
)	rr�
local_path�namerr�write�encode�Quote�rs r�set_dirinfo�Manifest.set_dirinfo=s�������
�#�.�.�3�3����7�7��}�}����
�
�.����1E�1E�1G�G�H��!�!����
�
�.��t�7I�7I�1J�J�K��rc��[R(agUR(a�UR[R:wa�UR[R:wa�[	S5[RUR4-n[
RRn[R"[R5S[R"UR53nO�UR(a�UR[RR:wa�[	S[RRS[R"UR535n[
RR n[R"[RR5S[R"UR53nOg[
R""US-[	S5-UU5 g)z�
Return None if dirinfo is the same, otherwise error message

Does not raise an error message if hostname or local_dirname
are not available.

@rtype: string
@return: None or error message
NzWFatal Error: Backup source host has changed.
Current hostname: %s
Previous hostname: %s� zEFatal Error: Backup source directory has changed.
Current directory: z
Previous directory: z

z�Aborting because you may have accidentally tried to backup two different data sets to the same remote location, or using the same archive directory.  If this is not a mistake, use the --allow-source-mismatch switch to avoid seeing this message)r�allow_source_mismatchr�fqdn�_r�	ErrorCode�hostname_mismatchr�escaperr#r$�uc_name�os�fsdecode�source_path_mismatch�
FatalError)r�errmsg�code�
code_extras    r�
check_dirinfo�Manifest.check_dirinfoNsx���'�'���=�=�T�]�]�f�o�o�=�$�-�-�SY�S^�S^�B^��q�����$�-�-�0�1�F��=�=�2�2�D� �K�K����8�9��4�;�;�t�}�}�;U�:V�W�J�
�
�
�D�$6�$6�&�:K�:K�:P�:P�$P��&�&,�&7�&7�&?�&?�%@�A'�')�{�{�4�3E�3E�'F�&G�I��F�
�=�=�5�5�D� �K�K��(9�(9�(>�(>�?�@��$�+�+�d�N`�N`�Ba�Ab�c�J�������
����	
�
��
	
rc	�(�U(aXlUR(atURRS[UR5-5 URH2nURRSUS[	US54-5 M4 gg)N�Filelist %d
�
    %-7s  %s
�r)rrr%�lenr')rr�fileinfos   r�set_files_changed_info�Manifest.set_files_changed_info~sp���!.���7�7��G�G�M�M�*�S��1C�1C�-D�D�E� �.�.�����
�
�/�8�A�;��h�q�k�@R�2S�S�T�/�rc��URnXRU'UR(a-URRUR	5S-5 gg)zy
Add volume info vi to manifest and write to manifest

@param vi: volume info to add
@type vi: VolumeInfo

@return: void
�
N)�
volume_numberrrr%�	to_string)r�vi�vol_nums   r�add_volume_info�Manifest.add_volume_info�sD���"�"��)+���g�&��7�7��G�G�M�M�"�,�,�.�5�0�1�rc�l�URU	g![a [S[U5S35ef=f)zo
Remove volume vol_num from the manifest

@param vol_num: volume number to delete
@type vi: int

@return: void
zVolume z not present in manifestN)r�	Exceptionr�int)rrJs  r�del_volume_info�Manifest.del_volume_info�s@��	R��%�%�g�.���	R��'�#�g�,��7O� P�Q�Q�	R�s�
�#3c��^�SnTR(a USTRR5--
nTR(aUS[TR5--
nUS[	TR
5--
nTR
HnUSUS[US54--
nM [
TRR55nU4SjnS	US
R[XC554-nU$)zj
Return string version of self (just concatenate vi strings)

@rtype: string
@return: self in string form
rr!r"r>r?r@rc�>>�TRUR5$�N)rrH)rJrs �r�vol_num_to_string�-Manifest.to_string.<locals>.vol_num_to_string�s����(�(��1�;�;�=�=rs%s%s
rF)rr&rr'rAr�sortedr�keys�join�map)r�resultrB�vol_num_listrUs`    rrH�Manifest.to_string�s�������=�=��&����)=�)=�)?�?�?�F�����&��t�/A�/A�)B�B�B�F��"�S��);�);�%<�<�<���*�*�H��'�8�A�;��h�q�k�8J�*K�K�K�F�+��d�3�3�8�8�:�;��	>��f�e�j�j��5F�1U�&V�W�W���
rc�R^�U4SjnU"S5UlURbURR5UlU"S5UlSnSn[R"S[R
5nUR
T5nUHun[5RURS55nURU5 URn[X45n[R"[S5U-5 Mw [!US-US-5Hn	UR#U	5 M [R$"[S5U-5 Sn
[&R(c[&R*Gb3[R"S	[R
[R,-5nUR/T5nU(a[1URS
55n
U
S:�a:Sn[3[5X�RS5R7S
555UlU
[;UR85:war[R<"[SUR>(aUR>R@OSS[1U
5S[;UR85355 SUl!U$)z,
Initialize self from string s, return self
c��>�[U[5(dUR5n[R"SU-T[R
5nU(dg[
URS55$)z?
Return the value of a field by parsing s, or None if no field
s(^|\n)%s\s(.*?)
N�)�
isinstance�bytesr&�re�search�I�Unquote�group)�	fieldname�m�ss  �r�	get_field�'Manifest.from_string.<locals>.get_field�sU����i��/�/�%�,�,�.�	��	�	�0�9�<�a����F�A����q�w�w�q�z�*�*rr�localdirrs.(?:^|\n)(volume\s.*(?:\n.*)*?)(?=\nvolume\s|$)r@zFound manifest volume %szFound %s volumes in manifests-(^|\n)filelist\s([0-9]+)\n(.*?)(\nvolume\s|$)r`c�p�UR5R5nUSSRUSS54$)Nrrr@)�strip�splitrY)�linerBs  r�parse_fileinfo�,Manifest.from_string.<locals>.parse_fileinfo�s4��#�z�z�|�1�1�3�H�#�A�;�����!�"��(>�>�>r�rFzManifest file '�z' is corrupt: File count says z, File list contains T)"r�decoderrc�compilere�finditer�
VolumeInfo�from_stringrgrKrG�maxr�Debugr/�rangerP�Infor�file_changed�show_changes_in_set�SrdrO�listrZrprrA�Errorr�base�corrupt_filelist)
rrjrk�highest_vol�
latest_vol�	vi_regexp�vi_iterator�matchrI�i�	filecount�filelist_regexprrs
 `           rrz�Manifest.from_string�s%���

	+�"�*�-��
��=�=�$� �M�M�0�0�2�D�M�&�z�2������
��J�J�U�WY�W[�W[�\�	��(�(��+�� �E���)�)�%�+�+�a�.�9�B�� � ��$��)�)�J��k�6�K��I�I�a�2�3�j�@�A�!��z�A�~�{�Q��7�A�� � ��#�8�����1�2�Z�?�@��	����*�f�.H�.H�.T� �j�j�)^�`b�`d�`d�gi�gk�gk�`k�l�O�#�*�*�1�-�E������A��/�	��1�}�?�&*�#�n�k�k�!�n�>R�>R�SX�>Y�*Z�%[��"��C�� 2� 2�3�3��	�	��)�$�'�'�$�'�'�,�,�r�)J�K+�+.�y�>�*:�:O�PS�TX�Tf�Tf�Pg�Oh�j���)-��%��rc��UR$rT)rr(s r�get_files_changed�Manifest.get_files_changeds���!�!�!rc��[URR55n[URR55nX#:wa [R"[S55 g[
[U55H.nX$X4:XaM[R"[S55  g URUR:wdURUR:wa [R"[S55 gg)z?
Two manifests are equal if they contain the same volume infos
z4Manifests not equal because different volume numbersFz/Manifests not equal because volume lists differz7Manifests not equal because hosts or directories differT)
rWrrXr�Noticer/r}rArr)r�other�vi_list1�vi_list2r�s     r�__eq__�Manifest.__eq__s����$�/�/�4�4�6�7���%�0�0�5�5�7�8�����J�J�q�O�P�Q���s�8�}�%�A��;�(�+�-��
�
�1�N�O�P��&�
�=�=�E�N�N�*�d�.@�.@�E�DW�DW�.W��J�J�q�R�S�T��rc�.�URU5(+$)z>
Defines !=.  Not doing this always leads to annoying bugs...
�r��rr�s  r�__ne__�Manifest.__ne__����;�;�u�%�%�%rc���UR5(aeURS5nURUR55 UR	5(aeUR5 g)z0
Write string version of manifest to given path
�wbN)�exists�openr%rH�close�setdata)r�path�fouts   r�
write_to_path�Manifest.write_to_path sO���;�;�=�=� � ��y�y�����
�
�4�>�>�#�$��:�:�<�<������rc�4�[U5S:Xa,[US[5(aUSR54n[	UR
R
55Vs/sH*nUR
URU5(dM(UPM, sn$s snf)z=
Return list of volume numbers that may contain index_prefix
r@r)rAra�strr&r�rrX�contains)r�index_prefixrJs   r�get_containing_volumes�Manifest.get_containing_volumes*s����|���!�j��a��#�&F�&F�(��O�2�2�4�6�L� �� 5� 5� :� :� <�=�
�=���$�$�W�-�6�6�|�D�
�=�
�	
��
s�!'B�B)r�rrrrrrT)rrr
rrrr)r;rCrKrPrH�__str__rzr�r�r�r�r�rr	rrrr(sT��� � �".
�`U�2�R��2�G�A�F"��,&��

rrc��\rSrSrSrSrg)�VolumeInfoErrori7zF
Raised when there is a problem initializing a VolumeInfo from string
r	Nr
r	rrr�r�7rrr�c�V�\rSrSrSrSrSrSrSrSr	\	r
SrS	rS
r
SSjrSrg
)ryi?z#
Information about a single volume
c�X�SUlSUlSUlSUlSUl0Ulg)zVolumeInfo initializerN)rG�start_index�start_block�	end_index�	end_block�hashesr(s rr�VolumeInfo.__init__Ds/��!�����������������rc�B�XlX lX0lX@lXPlU$)z�
Set essential VolumeInfo information, return self

Call with starting and ending paths stored in the volume.  If
a multivol diff gets split between volumes, count it as being
part of both volumes.
)rGr�r�r�r�)r�
vol_numberr�r�r�r�s      r�set_info�VolumeInfo.set_infoMs%��(��&��&��"��"���rc��[U[5(aUR5n[U[5(aUR5nX RU'g)z6
Set the value of hash hash_name (e.g. "MD5") to data
N)rarbrvr�)r�	hash_name�datas   r�set_hash�VolumeInfo.set_hash]sC���i��'�'�!�(�(�*�I��d�E�"�"��;�;�=�D�!%���I�rc��UR(dgSURS4$![a Of=fSURS4$![a Of=f[URR55S$)z�
Return pair (hash_type, hash_data)

SHA1 is the best hash, and MD5 is the second best hash.  None
is returned if no hash is available.
N�SHA1�MD5r)r��KeyErrorr��itemsr(s r�
get_best_hash�VolumeInfo.get_best_hashgs����{�{��	��4�;�;�v�.�.�.���	��	��	��$�+�+�e�,�,�,���	��	���D�K�K�%�%�'�(��+�+s�%�
2�2�A�
A�Ac���SnSnSUR-/nSnURSXA"UR5U"UR54-5 URSXA"UR5U"UR
54-5 URHBnURSXER5URUR54-5 MD SRU5$)	z:
Return nicely formatted string reporting all information
c�J�U(aSRU5n[U5$g)z8Return printable version of index without any whitespace�/�.)rYr')�indexrjs  r�index_to_string�-VolumeInfo.to_string.<locals>.index_to_strings����I�I�e�$���Q�x��rc�<�Ucg[U5R5$)N� )r�r&)�xs r�bfmt�"VolumeInfo.to_string.<locals>.bfmt�s���y���q�6�=�=�?�"rs
Volume %d:s    s%sStartingPath   %s %ss%sEndingPath     %s %ss%sHash %s %srF)	rG�appendr�r�r�r�r�r&rY)rr�r��slist�
whitespace�keys      rrH�VolumeInfo.to_stringzs���
	�	#�
��!3�!3�3�4���
�
���%��_�T�EU�EU�5V�X\�]a�]m�]m�Xn�(o�o�	
�	���.�*�o�d�n�n�>]�_c�dh�dr�dr�_s�1t�t�u��;�;�C��L�L��J�
�
��d�k�k�RU�FV�F]�F]�F_�+`�`�a���z�z�%� � rc��SnUR5RS5n[R"SUS[R5nU(d[SUSS35e[
URS55UlUSSGHnU(dM
UR5R5nUSR5nUSSnUS	:Xa![R"[S
55  O�US:Xa=U"US5Ul
[U5S:�a[
US5UlM�SUlM�US:Xa=U"US5Ul[U5S:�a[
US5UlM�SUlM�US
:XdM�UR%USUS5 GM URb
UR c[S5eU$)z7
Initialize self from string s as created by to_string
c�Z�[U5nUS:Xag[URS55$)z 
Return tuple index from string
r�r	r�)rf�tuplerp)rjs r�string_to_index�/VolumeInfo.from_string.<locals>.string_to_index�s*����
�A��D�y��������'�'rrFs^Volume ([0-9]+):rzBad first line '�'r@NsVolumez&Warning, found extra Volume identifiersstartingpaths
endingpathshashzStart or end index not set)rorprcrdrer�rOrgrG�lowerr�Warnr/r�rAr�r�r�r�)	rrjr��linelistrirq�
line_split�
field_name�other_fieldss	         rrz�VolumeInfo.from_string�s���
	(��7�7�9�?�?�5�)��
�I�I�*�H�Q�K����>���!�$4�X�a�[�M��"C�D�D� ������_����Q�R�L�D�������+�+�-�J�#�A��,�,�.�J�%�a�b�>�L��Y�&�����C�D�E����.�#2�<��?�#C�� ��|�$�q�(�'*�<��?�';�D�$�'+�D�$��}�,�!0��a��!A����|�$�q�(�%(��a��%9�D�N�%)�D�N��w�&��
�
�l�1�o�|�A��?�-!�0���#�t�~�~�'=�!�">�?�?��rc��[U[5(d [R"[	S55 gUR
UR
:wa [R"[	S55 gURUR:wa [R"[	S55 gURUR:wa [R"[	S55 g[URR55n[URR55nX#:wa [R"[	S55 gg)z
Used in test suite
zOther is not VolumeInfoNzVolume numbers don't matchzstart_indicies don't matchzend_index don't matchzHashes don't matchr@)raryrr�r/rGr�r�rWr�r�)rr��
hash_list1�
hash_list2s    rr��VolumeInfo.__eq__�s����%��,�,��J�J�q�2�3�4������!4�!4�4��J�J�q�5�6�7�����u�0�0�0��J�J�q�5�6�7���>�>�U�_�_�,��J�J�q�0�1�2���D�K�K�-�-�/�0�
��E�L�L�.�.�0�1�
��#��J�J�q�-�.�/��rc�.�URU5(+$)z
Defines !=
r�r�s  rr��VolumeInfo.__ne__�r�rc���U(a5URS[U5Us=:*=(a UR:*$s $URUs=:*=(a UR:*$s $)z�
Return true if volume might contain index

If recursive is true, then return true if any index starting
with index_prefix could be contained.  Otherwise, just check
if index_prefix itself is between starting and ending
indicies.
N)r�rAr�)rr��	recursives   rr��VolumeInfo.contains�sZ����#�#�$7�c�,�&7�8�L�Z�Z�D�N�N�Z�Z�Z�Z��#�#�|�E�E�t�~�~�E�E�E�Er)r�r�r�r�r�rGN)r@)rrr
rrrr�r�r�rHr�rzr�r�r�rr	rrryry?s=����� &�,�&!�8�G�1�f�.&�Frrys(\s|[\\"'])c�@�[RU5(dU$/n[S[U55HTnXUS-n[RU5(aUR	S[U5-5 MCUR	U5 MV SSR
U5-$)zE
Return quoted version of s safe to put in a manifest or volume info
rr@s\x%02xs"%s"r)�nonnormal_char_rerdr}rAr��ordrY)rjr�r��chars    rr'r'�s����#�#�A�&�&����E�
�1�c�!�f�
���Q��U�|���#�#�D�)�)��L�L��c�$�i�/�0��L�L�����S�X�X�e�_�$�$rc��[U5$rT)�chr)�chs r�	maybe_chrr�
s���r�7�Nrc���[US5S:Xa[US5S:XaU$USUS:Xde/nSnU[U5S-
:a�XUS-nUS:Xa[[XS-5S:XdeUR[XS-US	-R	5S
5RSSS95 US	-
nOURU5 US-
nU[U5S-
:aM�S
R
U5$)z=
Return original string from quoted_string produced by above
r�"r����r@�\r�r`���big)�	byteorderr)r�rAr�rOrv�to_bytesrY)�
quoted_string�return_listr�r�s    rrfrfs���]�1�%�&�#�-��=��;K�1L�PS�1S������}�R�0�0�0�0��K�	�A�
�c�-� �1�$�
$���Q��'���5�=��]�q�5�1�2�c�9�9�9����s�=�Q���Q��#?�#F�#F�#H�"�M�V�V�WX�di�V�j�k�
��F�A����t�$�
��F�A��c�-� �1�$�
$��8�8�K� � r)rr4rc�	duplicityrrrrNr�objectrr�ryrwr�r'r�rfr	rr�<module>rsr��,4�	�	����	�I�	�L
�v�L
�^	�i�	�uF��uF�p�J�J�1�2��
%� �!r

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 398 B 0644
__main__.cpython-313.pyc File 4.74 KB 0644
argparse311.cpython-313.pyc File 98.99 KB 0644
backend.cpython-313.pyc File 32.15 KB 0644
backend_pool.cpython-313.pyc File 18.72 KB 0644
cached_ops.cpython-313.pyc File 1.09 KB 0644
cli_data.cpython-313.pyc File 32.01 KB 0644
cli_main.cpython-313.pyc File 14.13 KB 0644
cli_util.cpython-313.pyc File 22.31 KB 0644
config.cpython-313.pyc File 5.74 KB 0644
diffdir.cpython-313.pyc File 31.95 KB 0644
dup_collections.cpython-313.pyc File 63.51 KB 0644
dup_main.cpython-313.pyc File 78.6 KB 0644
dup_tarfile.cpython-313.pyc File 432 B 0644
dup_temp.cpython-313.pyc File 12.87 KB 0644
dup_time.cpython-313.pyc File 11.17 KB 0644
errors.cpython-313.pyc File 3.53 KB 0644
file_naming.cpython-313.pyc File 16.93 KB 0644
filechunkio.cpython-313.pyc File 3.83 KB 0644
globmatch.cpython-313.pyc File 6.01 KB 0644
gpg.cpython-313.pyc File 20.98 KB 0644
gpginterface.cpython-313.pyc File 25.69 KB 0644
lazy.cpython-313.pyc File 17 KB 0644
librsync.cpython-313.pyc File 11.48 KB 0644
log.cpython-313.pyc File 19.18 KB 0644
manifest.cpython-313.pyc File 23.66 KB 0644
patchdir.cpython-313.pyc File 27.63 KB 0644
path.cpython-313.pyc File 43.08 KB 0644
progress.cpython-313.pyc File 14.45 KB 0644
robust.cpython-313.pyc File 1.91 KB 0644
selection.cpython-313.pyc File 31.35 KB 0644
statistics.cpython-313.pyc File 18.78 KB 0644
tempdir.cpython-313.pyc File 12.04 KB 0644
util.cpython-313.pyc File 16.51 KB 0644
Filemanager