
    4bh?4                       	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Zd dl
Z
d dlZd dlmZ 	 d dlZg dZe j"                  j%                  d      Z G d d      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d dej6                  j8                        Z G d de      Z G d de      Z G d de      Z G d de      Z  G d d e      Z! G d! d"e      Z" G d# d$      Z# G d% d&e#      Z$d7d'Z%d( Z&d) Z'd* Z(d+ Z)d, Z* G d- d.e+      Z, G d/ d0e,      Z- G d1 d2e,      Z. G d3 d4e,      Z/ G d5 d6e,      Z0y# e$ r dZY Aw xY w)8    N)GenericAlias)MailboxMaildirmboxMHBabylMMDFMessageMaildirMessagemboxMessage	MHMessageBabylMessageMMDFMessageErrorNoSuchMailboxErrorNotEmptyErrorExternalClashErrorFormatErrorasciic                       e Zd Z	 d"dZd Zd Zd Zd Zd Zd#dZ	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd#dZd Zd#dZd Zd Zd Zd Zd Z d Z!d$d!Z" e#e$      Z%y)%r   Nc                     	 t         j                  j                  t         j                  j                  |            | _        || _        y N)ospathabspath
expanduser_path_factoryselfr   factorycreates       1/opt/python-3.12.12/usr/lib/python3.12/mailbox.py__init__zMailbox.__init__%   s/    ,WW__RWW%7%7%=>
    c                     	 t        d      Nz&Method must be implemented by subclassNotImplementedErrorr    messages     r#   addzMailbox.add*   s    2!"JKKr%   c                     	 t        d      r'   r(   r    keys     r#   removezMailbox.remove.   s    K!"JKKr%   c                 &    | j                  |       y r   )r0   r.   s     r#   __delitem__zMailbox.__delitem__2   s    Cr%   c                 H    	 	 | j                  |       y # t        $ r Y y w xY wr   )r0   KeyErrorr.   s     r#   discardzMailbox.discard5   s(    5	KK 		s    	!!c                     	 t        d      r'   r(   r    r/   r+   s      r#   __setitem__zMailbox.__setitem__<   s    L!"JKKr%   c                 J    	 	 | j                  |      S # t        $ r |cY S w xY wr   )__getitem__r4   )r    r/   defaults      r#   getzMailbox.get@   s/    G	##C(( 	N	s    ""c                     	 | j                   s| j                  |      S t        j                  | j	                  |            5 }| j                  |      cd d d        S # 1 sw Y   y xY wr   )r   get_message
contextlibclosingget_file)r    r/   files      r#   r:   zMailbox.__getitem__G   sN    K}}##C((##DMM#$674}}T* 877s   AA'c                     	 t        d      r'   r(   r.   s     r#   r>   zMailbox.get_messageO   s    B!"JKKr%   c                 h    	 t        j                  | j                  |            j                         S r   emailmessage_from_bytes	get_bytes	as_stringr.   s     r#   
get_stringzMailbox.get_stringS   s,    	* ''s(;<FFHHr%   c                     	 t        d      r'   r(   r.   s     r#   rH   zMailbox.get_bytesZ   s    F!"JKKr%   c                     	 t        d      r'   r(   r.   s     r#   rA   zMailbox.get_file^   s    D!"JKKr%   c                     	 t        d      r'   r(   r    s    r#   iterkeyszMailbox.iterkeysb   s    +!"JKKr%   c                 6    	 t        | j                               S r   )listrO   rN   s    r#   keyszMailbox.keysf   s    $DMMO$$r%   c              #   j   K   	 | j                         D ]  }	 | |   }|  y # t        $ r Y w xY wwr   rO   r4   r    r/   values      r#   
itervalueszMailbox.itervaluesj   sA     3==?CS	 K #  s   3$3	0303c                 "    | j                         S r   )rW   rN   s    r#   __iter__zMailbox.__iter__s   s      r%   c                 6    	 t        | j                               S r   )rQ   rW   rN   s    r#   valueszMailbox.valuesv   s    :DOO%&&r%   c              #   n   K   	 | j                         D ]  }	 | |   }||f  y # t        $ r Y w xY wwr   rT   rU   s      r#   	iteritemszMailbox.iteritemsz   sF     <==?CS	 , #  s   5&	5	2525c                 6    	 t        | j                               S r   )rQ   r]   rN   s    r#   itemszMailbox.items   s    GDNN$%%r%   c                     	 t        d      r'   r(   r.   s     r#   __contains__zMailbox.__contains__   s    G!"JKKr%   c                     	 t        d      r'   r(   rN   s    r#   __len__zMailbox.__len__   s    8!"JKKr%   c                 R    	 | j                         D ]  }| j                  |        y r   )rR   r5   r.   s     r#   clearzMailbox.clear   s!    "99;CLL r%   c                 X    	 	 | |   }| j                  |       |S # t         $ r |cY S w xY wr   )r4   r5   )r    r/   r;   results       r#   popzMailbox.pop   s<    A	#YF 	S  	N	s    ))c                 l    	 | j                         D ]  }|| j                  |      fc S  t        d      )NzNo messages in mailbox)rO   rh   r4   r.   s     r#   popitemzMailbox.popitem   s6    D==?C#'' # 344r%   c                     	 t        |d      r|j                         }nt        |d      r|j                         }n|}d}|D ]  \  }}	 || |<    |rt        d      y # t        $ r d}Y )w xY w)Nr]   r_   FTzNo message with key(s))hasattrr]   r_   r4   )r    argsourcebad_keyr/   r+   s         r#   updatezMailbox.update   s    B3$]]_FS'"YY[FF"LC#S	 #
 344   s   	AA,+A,c                     	 t        d      r'   r(   rN   s    r#   flushzMailbox.flush   s    4!"JKKr%   c                     	 t        d      r'   r(   rN   s    r#   lockzMailbox.lock   s    !"JKKr%   c                     	 t        d      r'   r(   rN   s    r#   unlockzMailbox.unlock   s    1!"JKKr%   c                     	 t        d      r'   r(   rN   s    r#   closezMailbox.close   s    *!"JKKr%   c                 V    	 |j                  d      S # t        $ r t        d      w xY w)Nr   z?String input must be ASCII-only; use bytes or a Message instead)encodeUnicodeError
ValueErrorr*   s     r#   _string_to_byteszMailbox._string_to_bytes   s7    	2>>'** 	2 1 2 2	2s    (Fc                    	 t        |t        j                  j                        rt	        j
                         }t        j                  j                  ||d      }|j                  |       |j                  d       |j                         }|j                  dt              }|j                  |       | j                  r,|j                  t              s|j                  t               y y y t        |t         t"        t        j$                  f      rt        |t        j$                        r+t'        j(                  dt*        d       |j-                         }t        |t               r| j/                  |      }|r|j                  dd      }|j                  dt              }|j                  |       | j                  r,|j                  t              s|j                  t               y y y t1        |d      rt1        |d      r't'        j(                  d	t*        d       |j2                  }d }	 |j5                         }|j                  d
      r	|d d dz   }n|j                  d      r|d d dz   }|snE|r|j7                  d      rd|dd  z   }|j                  dt              }|j                  |       |}| j                  r/|r,|j                  t              s|j                  t               y y y y t9        dt;        |      z        )Nr      
8Use of StringIO input is deprecated, use BytesIO instead   s   
From s   
>From readbufferDUse of text mode files is deprecated, use a binary mode file instead   
      From s   >From    Invalid message type: %s)
isinstancerF   r+   r
   ioBytesIO	generatorBytesGeneratorflattenseekr   replacelinesepwrite_append_newlineendswithstrbytesStringIOwarningswarnDeprecationWarninggetvaluer}   rl   r   readline
startswith	TypeErrortype)	r    r+   targetmangle_from_r   gendatalastlinelines	            r#   _dump_messagezMailbox._dump_message   sw   3gu}}445ZZ\F//00qICKK KKN;;=D<<w/DLL##DMM',BW% -C# #ubkk!:;'2;;/ *+=qB!**,'3'//8!//*kBooeW5GLL!##G,<,<W,EW% -F# Wf%w) 56H!M!..H'')==)9u,D]]5)9u,DDOOH$=$tABx/D||E73T"  ##9J9J79SW% :T# 6gFGGr%   NTr   F)&__name__
__module____qualname__r$   r,   r0   r2   r5   r8   r<   r:   r>   rJ   rH   rA   rO   rR   rW   rY   r[   r]   r_   ra   rc   re   rh   rj   rp   rr   rt   rv   rx   r}   r   r   classmethodr   __class_getitem__ r%   r#   r   r   "   s    4 
LLL+LILLL%!'&LL
55"LLLL2 O4Hl $L1r%   r   c                       e Zd Z	 dZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdZd Zd Zd Zd Zy)r   :Nc                    	 t         j                  | |||       t        j                  j	                  | j
                  d      t        j                  j	                  | j
                  d      t        j                  j	                  | j
                  d      d| _        t        j                  j                  | j
                        sm|rVt        j                  | j
                  d       | j                  j                         D ]  }t        j                  |d        nt        | j
                        i | _        ddd| _        d| _        d| _        y )	Ntmpnewcur)r   r   r     r   )r   r   g?)r   r$   r   r   joinr   _pathsexistsmkdirr[   r   _toc_toc_mtimes
_last_read_skewfactor)r    dirnamer!   r"   r   s        r#   r$   zMaildir.__init__  s    ,w877<<

E277<<

E277<<

E2
 ww~~djj)U+ KK..0DHHT5) 1 )44	#$Q/r%   c                    	 | j                         }	 | j                  ||       t        |       t        |t              r?|j                         }| j                  |j                         z   }|| j                  k(  rd}nd}d}t        j                  j                  |j                        j                  | j                        d   }t        j                  j!                  | j"                  |||z         }t        |t              rWt	        j$                  |j                  t        j                  j'                  |j                        |j)                         f       	 	 t	        j*                  |j                  |       t	        j
                  |j                         |S # t        $ r1 |j                          t	        j
                  |j                          w xY w# t,        t.        f$ r$ t	        j0                  |j                  |       Y |S w xY w# t2        $ rP}t	        j
                  |j                         |j4                  t4        j6                  k(  rt9        d|z         d }~ww xY w)N r   r   z$Name clash with existing message: %s)_create_tmpr   BaseExceptionrx   r   r0   name_sync_closer   r   
get_subdircolonget_infor   basenamesplitr   r   utimegetatimeget_datelinkAttributeErrorPermissionErrorrenameOSErrorerrnoEEXISTr   )r    r+   tmp_filesubdirsuffixuniqdestes           r#   r,   zMaildir.add$  s   2##%	w1
 	Hg~.'')FZZ'"2"2"44F#FFww.44TZZ@Cww||DJJv>g~.HHX]]gg&&x}}5w7G7G7IJL
	)t, 		(--( G  	NNIIhmm$	0 #O4 /		(--. /  	IIhmm$ww%,,&()O+/*0 1 1 	sB   F   G ?H  :G/HH HH 	I,AI''I,c                     	 t        j                  t         j                  j                  | j                  | j                  |                   y r   )r   r0   r   r   r   _lookupr.   s     r#   r0   zMaildir.removeN  s-    K
		"'',,tzz4<<+<=>r%   c                 T    	 	 | j                  |       y # t        t        f$ r Y y w xY wr   )r0   r4   FileNotFoundErrorr.   s     r#   r5   zMaildir.discardR  s.    5	KK+, 		s    ''c                    	 | j                  |      }| j                  |      }| j                  |      }t        |t              r|}n|}t        j
                  j                  |      }| j                  |v r,| j                  |j                  | j                        d   z   }nd}| j                  |       t        j
                  j                  | j                  |      }	t        j
                  j                  | j                  |||z         }
t        |t              rCt	        j                  |	t        j
                  j                  |	      |j                         f       t	        j                  |	|
       y )Nr   r   )r   r,   r   r   r   r   r   r   r   r5   r   r   r   r   r   r   )r    r/   r+   old_subpathtemp_keytemp_subpathdominant_subpathr   r   tmp_pathnew_paths              r#   r8   zMaildir.__setitem__Z  s   Lll3'88G$||H-g~.+  +!12::))ZZ"2"8"8"DR"HHFFS77<<

L977<<

FC&LAg~.HHXgg&&x0'2B2B2DEG
 			(H%r%   c                    	 | j                  |      }t        t        j                  j	                  | j
                  |      d      5 }| j                  r| j                  |      }nt        |      }d d d        t        j                  j                  |      \  }}j                  |       | j                  |v r-|j                  |j                  | j                        d          |j                  t        j                  j                  t        j                  j	                  | j
                  |                   |S # 1 sw Y   xY w)Nrbr   )r   openr   r   r   r   r   r   r   
set_subdirr   set_infoset_dategetmtime)r    r/   subpathfmsgr   r   s          r#   r>   zMaildir.get_messageu  s    B,,s#"'',,tzz73T:a}}mmA&$Q'	 ;
 ww}}W-v::LLDJJ/34RWW%%bggll4::w&GHI
 ;:s   *D??Ec                     	 t        t        j                  j                  | j                  | j                  |            d      5 }|j                         j                  t        d      cd d d        S # 1 sw Y   y xY w)Nr   r   )	r   r   r   r   r   r   r   r   r   r    r/   r   s      r#   rH   zMaildir.get_bytes  sP    @"'',,tzz4<<+<=tD668##GU3 EDDs   $A33A<c                     	 t        t        j                  j                  | j                  | j                  |            d      }t        |      S )Nr   )r   r   r   r   r   r   
_ProxyFiler   s      r#   rA   zMaildir.get_file  s7    Ddjj$,,s*;<dC!}r%   c              #      K   	 | j                          | j                  D ]  }	 | j                  |       |  y # t        $ r Y 'w xY wwr   )_refreshr   r   r4   r.   s     r#   rO   zMaildir.iterkeys  sK     +99CS! I   s%   !A<A	AAAAc                 @    	 | j                          || j                  v S r   )r   r   r.   s     r#   ra   zMaildir.__contains__  s    Gdiir%   c                 N    	 | j                          t        | j                        S r   )r   lenr   rN   s    r#   rc   zMaildir.__len__  s    8499~r%   c                      	 y r   r   rN   s    r#   rr   zMaildir.flush  s
    0 	r%   c                      	 y r   r   rN   s    r#   rt   zMaildir.lock  s    r%   c                      	 y r   r   rN   s    r#   rv   zMaildir.unlock  s    1r%   c                      	 y r   r   rN   s    r#   rx   zMaildir.close  s    *r%   c                 <   	 g }t        j                  | j                        D ]v  }t        |      dkD  s|d   dk(  st         j                  j                  t         j                  j                  | j                  |            sc|j                  |dd         x |S )N   r   .)r   listdirr   r   r   isdirr   appendr    rg   entrys      r#   list_folderszMaildir.list_folders  sr    ,ZZ

+E5zA~%(c/ww}}RWW\\$**e<=eABi( , r%   c                     	 t        t        j                  j                  | j                  d|z         | j
                  d      S )Nr  Fr!   r"   )r   r   r   r   r   r   r    folders     r#   
get_folderzMaildir.get_folder  s5    =rww||DJJf=#}}#% 	%r%   c                    	 t         j                  j                  | j                  d|z         }t	        || j
                        }t         j                  j                  |d      }t         j                  j                  |      sIt        j                  t        j                  |t         j                  t         j                  z  d             |S )Nr  r!   maildirfolder  )r   r   r   r   r   r   r   rx   r   O_CREATO_WRONLY)r    r  r   rg   maildirfolder_paths        r#   
add_folderzMaildir.add_folder  s    Lww||DJJf5t}}5WW\\$@ww~~01HHRWW/bkk1I r%   c                    	 t         j                  j                  | j                  d|z         }t        j                  t         j                  j                  |d            t        j                  t         j                  j                  |d            z   D ]&  }t        |      dk  s	|d   dk7  st        d|z         t        j                  |      D ]b  }|dk7  s	|dk7  s|dk7  st         j                  j                  t         j                  j                  ||            sSt        d|d	|       t        j                  |d
      D ]z  \  }}}|D ]5  }t        j                  t         j                  j                  ||             7 |D ]5  }t        j                  t         j                  j                  ||             7 | t        j                  |       y )Nr  r   r   r   r   zFolder contains message(s): %sr   zFolder contains subdirectory 'z': F)topdown)r   r   r   r   r  r   r   r  walkr0   rmdir)r    r  r   r  rootdirsfiless          r#   remove_folderzMaildir.remove_folder  s\   ;ww||DJJf5ZZT5 9:ZZT5 9:;E5zA~qS#$Dv$MNN; ZZ%E~%5.Ue^ww}}RWW\\$67#%+U%4 5 5 &
 "$u!=D$		"'',,tU34 dE23  ">
 	r%   c                 ~   	 t        j                          }t        j                  t        j                  j	                  | j
                  d            D ]h  }t        j                  j	                  | j
                  d|      }|t        j                  j                  |      z
  dkD  sTt        j                  |       j y )Nr   i@ )timer   r  r   r   r   r   r0   )r    nowr  r   s       r#   cleanzMaildir.clean  sx    (iikZZTZZ ?@E77<<

E59DRWW%%d++f4		$ Ar%   r   c           	      d   	 t        j                          }t        j                         }d|v r|j                  dd      }d|v r|j                  dd      }t	        |      dt	        |dz  dz        dt        j                         d	t        j                  d
|	}t
        j                  j                  | j                  d|      }	 t        j                  |       t!        d|z        # t        $ r9 t        xj                  dz  c_        	 t        |      cY S # t        $ r Y nw xY wY Ow xY w)N/z\057r   z\072z.Mr   g    .APQr  r   z&Name clash prevented file creation: %s)r  socketgethostnamer   intr   getpidr   _countr   r   r   statr   _create_carefullyFileExistsErrorr   )r    r  hostnamer   r   s        r#   r   zMaildir._create_tmp  s   Kiik%%'(?''W5H(?''W5H$'Hc#'C-.@"))+$+NNH>ww||DJJt4	GGDM !!I!%"& ' 	' ! 	NNaN(.." 	s6   
C- -"D/
DD/	D)&D/(D))D/.D/c                    	 t        j                          | j                  z
  d| j                  z   kD  red}| j                  D ]Q  }t        j
                  j                  | j                  |         }|| j                  |   kD  rd}|| j                  |<   S |sy i | _        | j                  D ]  }| j                  |   }t	        j                  |      D ]  }t        j
                  j                  ||      }t        j
                  j                  |      rC|j                  | j                        d   }t        j
                  j                  ||      | j                  |<     t        j                          | _        y )N   FTr   )r  r   r   r   r   r   r   r   r   r  r   r  r   r   )r    refreshr   mtimer   r  pr   s           r#   r   zMaildir._refresh  s,   / 99;(1t/?/?+??G**((V)<=4++F33"G+0  (	 +
 	&&F;;v&DD)GGLLu-77==#{{4::.q1"$'',,vu"=		$ * ' ))+r%   c                 d   	 	 t         j                  j                  t         j                  j                  | j                  | j
                  |               r| j
                  |   S 	 | j                          	 | j
                  |   S # t        $ r Y +w xY w# t        $ r t        d|z        d w xY wNNo message with key: %s)r   r   r   r   r   r   r4   r   r.   s     r#   r   zMaildir._lookup&  s    K	ww~~bggll4::tyy~FGyy~% H 		F99S>!	  		
  	F4s:;E	Fs   A"B 8B 	BBB/c                     	 t        | d      s| j                         | _        	 	 | t        | j                           S # t        $ r Y y t
        $ r Y /w xY w)N_onetime_keys)rl   rO   r7  nextStopIterationr4   rN   s    r#   r8  zMaildir.next4  sX    >t_-!%DD!3!3455   s   = 	AAAr   )r   r   r   r   r$   r,   r0   r5   r8   r>   rH   rA   rO   ra   rc   rr   rt   rv   rx   r  r  r  r  r   r)  r   r   r   r8  r   r%   r#   r   r     s    (E((T?&64

 

%&  F'0"&HF
r%   r   c                   r    e Zd Z	 ddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd ZddZd Zy)_singlefileMailboxNc                    	 t         j                  | |||       	 t        | j                  d      }|| _
        d | _        d| _        d| _        d| _        d| _        d | _        y # t        $ r}|j
                  t
        j                  k(  r.|rt        | j                  d      }nYt        | j                        |j
                  t
        j                  t
        j                  fv rt        | j                  d      }n Y d }~d }~ww xY w)Nrb+zwb+r   r   F)r   r$   r   r   r   r   ENOENTr   EACCESEROFS_filer   	_next_key_pending_pending_sync_locked_file_length)r    r   r!   r"   r   r   s         r#   r$   z_singlefileMailbox.__init__D  s    /tWf5	TZZ'A 
	" !  		ww%,,&TZZ/A,TZZ88U\\5;;77T*		s   A# #	D,BD  Dc                     	 | j                          | j                  |      | j                  | j                  <   | xj                  dz  c_        d| _        | j                  dz
  S )Nr   T)r   _append_messager   rB  rD  r*   s     r#   r,   z_singlefileMailbox.add[  sR    2$($8$8$A		$..!! "~~!!r%   c                 P    	 | j                  |       | j                  |= d| _        y r   )r   r   rC  r.   s     r#   r0   z_singlefileMailbox.removee  s#    KSIIcNr%   c                 r    	 | j                  |       | j                  |      | j                  |<   d| _        y r   )r   rH  r   rC  r7   s      r#   r8   z_singlefileMailbox.__setitem__k  s0    LS--g6		#r%   c              #   v   K   	 | j                          | j                  j                         E d {    y 7 wr   )r   r   rR   rN   s    r#   rO   z_singlefileMailbox.iterkeysq  s&     +99>>###s   /979c                 @    	 | j                          || j                  v S r   )r   r   r.   s     r#   ra   z_singlefileMailbox.__contains__v  s    Gdiir%   c                 N    	 | j                          t        | j                        S r   )r   r   r   rN   s    r#   rc   z_singlefileMailbox.__len__{  s    8499~r%   c                 X    	 | j                   st        | j                         d| _         y y r   )rE  
_lock_filerA  rN   s    r#   rt   z_singlefileMailbox.lock  s$    ||tzz"DL r%   c                 X    	 | j                   rt        | j                         d| _         y y NF)rE  _unlock_filerA  rN   s    r#   rv   z_singlefileMailbox.unlock  s$    1<<$ DL r%   c           	         	 | j                   s)| j                  rt        | j                         d| _        y | j                  j	                  dd       | j                  j                         }|| j                  k7  rt        d| j                  |fz        t        | j                        }	 i }| j                  |       t        | j                  j                               D ]  }| j                  |   \  }}| j                  j	                  |       | j                  |       |j                         }	 | j                  j                  t!        d|| j                  j                         z
              }|sn|j#                  |       U||j                         f||<   | j%                  |        |j                         | _        t/        |       | j                  j'                          t)        j0                  | j                        }	t)        j2                  |j,                  |	j4                         	 t)        j6                  |j,                  |	j8                  |	j:                         	 t)        j@                  |j,                  | j                         tE        | j                  d      | _        || _        d| _         d| _        | jF                  rtI        | j                  d       y y #  |j'                          t)        j*                  |j,                          xY w# t<        t>        f$ r Y w xY w# tB        $ rL t)        j*                  | j                         t)        j@                  |j,                  | j                         Y w xY w)NFr   r/  z4Size of mailbox file changed (expected %i, found %i)   r=  )dotlock)%rC  rD  _sync_flushrA  r   tellrF  r   _create_temporaryr   _pre_mailbox_hooksortedr   rR   _pre_message_hookr   minr   _post_message_hookrx   r   r0   r   r   r*  chmodst_modechownst_uidst_gidr   r   r   r,  r   rE  rO  )
r    cur_lennew_filenew_tocr/   startstop	new_startr   infos
             r#   rr   z_singlefileMailbox.flush  s   0}}!! DJJ'%*" 	

1**//#d'''$ &?&*&7&7%A&B C C %TZZ0	G""8,diinn./"iint

&&&x0$MMO	!ZZ__S15

8I1I.K LF!NN6*  !*8==?;''1 0 !)D
 	H

wwtzz"
-	HHX]]DKK=	1IIhmmTZZ0 $**e,
	"<<tzz51 /	NNIIhmm$ ( 		  	1IIdjj!IIhmmTZZ0	1s2   ,DK* 55L +*L4 *2LL10L14AN	N	c                      	 y r   r   r    r   s     r#   rY  z$_singlefileMailbox._pre_mailbox_hook      :r%   c                      	 y r   r   rk  s     r#   r[  z$_singlefileMailbox._pre_message_hook  s    ;r%   c                      	 y r   r   rk  s     r#   r]  z%_singlefileMailbox._post_message_hook  rl  r%   c                    	 	 | j                          	 | j                  r| j                          | j                  j	                          y # | j                  j	                          w xY w# 	 | j                  r| j                          | j                  j	                          w # | j                  j	                          w xY wxY wr   )rr   rE  rv   rA  rx   rN   s    r#   rx   z_singlefileMailbox.close  s    *	#JJL#<<KKM

  "

  "	#<<KKM

  "

  "s.   A* A A'*C,B#C#B??Cc                     	 | j                   | j                          |	 | j                   |   S y # t        $ r t        d|z        d w xY wr4  )r   _generate_tocr4   r.   s     r#   r   z_singlefileMailbox._lookup  s_    599 ?Jyy~%   J83>?TIJs	   1 A
c                 F   	 | j                   j                  dd       | j                   j                         }t        | j                        dk(  r'| j
                  s| j                  | j                          	 | j                  | j                          | j                  |      }| j                  | j                          | j                   j                          | j                   j                         | _        |S # t        $ r | j                   j                  |        w xY w)Nr   r/  )rA  r   rW  r   r   rC  rY  r[  _install_messager]  r   truncaterr   rF  )r    r+   beforeoffsetss       r#   rH  z"_singlefileMailbox._append_message  s    I

1"tyy>Qt}}
 ""4::.	""4::.++G4G##DJJ/ 	

 JJOO-  	JJ'	s   8AC: :&D r   r   )r   r   r   r$   r,   r0   r8   rO   ra   rc   rt   rv   rr   rY  r[  r]  rx   r   rH  r   r%   r#   r;  r;  A  sX     !."$
 

 !B2H	#Jr%   r;  c                   6    e Zd Z	 dZd ZddZddZddZd Zy)		_mboxMMDFTc                    	 | j                  |      \  }}| j                  j                  |       | j                  j                         j	                  t
        d      j                  d      }| j                  j                  || j                  j                         z
        }| j                  |j	                  t
        d            }|j                  |       |j                  |dd         |S )Nr%   r   r   r   )r   rA  r   r   r   r   decoder   rW  _message_factoryset_unixfromset_from)r    r/   rf  rg  	from_linestringr   s          r#   r>   z_mboxMMDF.get_message  s    Bll3't

JJ'')11'3?FFwO	

(9!9:##FNN7E$BC#Yqr]#
r%   c                 n    	 t        j                  | j                  ||            j                  |      S )N)unixfromrE   )r    r/   from_s      r#   rJ   z_mboxMMDF.get_string  s3    A''NN3&((1	5	(A	Br%   c                 2   	 | j                  |      \  }}| j                  j                  |       |s| j                  j                          | j                  j	                  || j                  j                         z
        }|j                  t        d      S Nr   )r   rA  r   r   r   rW  r   r   )r    r/   r  rf  rg  r  s         r#   rH   z_mboxMMDF.get_bytes  sm    All3't

JJ!

(9!9:~~gu--r%   c                     	 | j                  |      \  }}| j                  j                  |       |s| j                  j                          t	        | j                  | j                  j                         |      S r   )r   rA  r   r   _PartialFilerW  )r    r/   r  rf  rg  s        r#   rA   z_mboxMMDF.get_file&  sX    Dll3't

JJ!DJJ

(94@@r%   c                 L   	 d }t        |t              r| j                  |      }t        |t              r:|j	                  d      r)|j                  d      }|dk7  r|d | }||dz   d  }n|}d}n|t        |t              r%|j                         j                  d      }d|z   }nGt        |t        j                  j                        r#|j                         }||j                  d      }|8dt        j                  t        j                               j                         z   }| j                   j#                         }| j                   j%                  |t&        z          | j)                  || j                   | j*                         | j                   j#                         }||fS )Nr   r   r   r   r%   r   s   From MAILER-DAEMON )r   r   r}   r   r   find_mboxMMDFMessageget_fromrz   rF   r+   r
   get_unixfromr  asctimegmtimerA  rW  r   r   r   _mangle_from_)r    r+   r~  newlineauthorrf  rg  s          r#   rs  z_mboxMMDF._install_message.  sa   ?	gs#++G4Ggu%'*<*<X*Fll5)G"}#HW-	!'A+,/#	!12%%'..w7F 6)I!6!67,,.I$%,,W5	.dkkm1L1S1S1UUI

!

W,-7DJJ0B0BCzz t}r%   Nr   )	r   r   r   r  r>   rJ   rH   rA   rs  r   r%   r#   rx  rx    s%    "M	B
.Ar%   rx  c                   *    e Zd Z	 dZdZddZd Zd Zy)r   TNc                 L    	 t         | _        t        j                  | |||       y r   )r   r{  rx  r$   r   s       r#   r$   zmbox.__init__T  !    ) +4w7r%   c                 0    	 |j                  t               y r   r   r   rk  s     r#   r]  zmbox._post_message_hookY  s    :	r%   c                    	 g g }}d}| j                   j                  d       	 | j                   j                         }| j                   j                         }|j	                  d      r`t        |      t        |      k  r5|r"|j                  |t        t              z
         n|j                  |       |j                  |       d}nF|s6|r"|j                  |t        t              z
         n|j                  |       n|t        k(  rd}nd}t        t        t        ||                  | _        t        | j                        | _        | j                   j                         | _        y )NFr   Tr   )rA  r   rW  r   r   r   r  r   dict	enumeratezipr   rB  rF  )r    startsstopslast_was_emptyline_posr   s         r#   rq  zmbox._generate_toc]  s   >B

zz(H::&&(Dx(u:F+%XG%<=
 X.h'!&!LLCL!89LL*!%!&/ 0 3vu#567	TYY JJOO-r%   r   )r   r   r   r  r   r$   r]  rq  r   r%   r#   r   r   K  s     !M O8
.r%   r   c                   (    e Zd Z	 ddZd Zd Zd Zy)r	   Nc                 L    	 t         | _        t        j                  | |||       y r   )r   r{  rx  r$   r   s       r#   r$   zMMDF.__init__  r  r%   c                 6    	 |j                  dt        z          y N   r  rk  s     r#   r[  zMMDF._pre_message_hook  s    ;	#g-.r%   c                 D    	 |j                  t        dz   t        z          y r  r  rk  s     r#   r]  zMMDF._post_message_hook  s    :	--78r%   c                    	 g g }}| j                   j                  d       d}	 |}| j                   j                         }| j                   j                         }|j	                  dt
        z         r|j                  |       	 |}| j                   j                         }| j                   j                         }|dt
        z   k(  r"|j                  |t        t
              z
         n|s|j                  |       ny|snt        t        t        ||                  | _        t        | j                        | _        | j                   j                  dd       | j                   j                         | _        y )Nr   r  r/  )rA  r   r   rW  r   r   r  r   r  r  r  r   rB  rF  )r    r  r  next_posr  r   s         r#   rq  zMMDF._generate_toc  s-   >B

H::&&(Dzz(H2W<=h''H::..0D#zz0H2W<<XG%<=!X.  # $ 3vu#567	TYY

1 JJOO-r%   r   )r   r   r   r$   r[  r]  rq  r   r%   r#   r	   r	     s    8
/9.r%   r	   c                       e Zd Z	 ddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)r   Nc                    	 t         j                  | |||       t        j                  j	                  | j
                        s|rt        j                  | j
                  d       t        j                  t        j                  t        j                  j                  | j
                  d      t        j                  t        j                  z  t        j                  z  d             d| _        y t        | j
                        d| _        y )Nr   .mh_sequencesi  F)r   r$   r   r   r   r   r   rx   r   r   r  O_EXCLr  r   rE  r   s       r#   r$   zMH.__init__  s    (tWf5ww~~djj)U+djj/!J!#bii!7"++!EuN O  )44r%   c                    	 | j                         }t        |      dk(  rd}nt        |      dz   }t        j                  j                  | j                  t        |            }t        |      }d}	 | j                  rt        |       	 	 | j                  ||       t!        |t"              r| j%                  ||       | j                  rt        |       	 |st        |       |S # t        $ r; | j                  rt        |       t        |       d}t        j                  |        w xY w# | j                  rt        |       w w xY w# |st        |       w w xY w)Nr   r   FT)rR   r   maxr   r   r   r   r   r+  rE  rO  r   r   rR  r   r0   r   r   _dump_sequences)r    r+   rR   new_keyr   r   closeds          r#   r,   zMH.add  s    2yy{t9>G$i!mG77<<

CL9h'	||1$	&&w2 gy1((':<< OA! % ||$QN!FIIh' << O   A s7   2E
 C& "D- ?E
 &AD**D- -EE
 
Ec                 J   	 t         j                  j                  | j                  t	        |            }	 t        |d      }|j                          t        j                  |       y # t        $ r1}|j                  t        j                  k(  rt        d|z         d }~ww xY wNr=  r5  )r   r   r   r   r   r   rx   r0   r   r   r>  r4   )r    r/   r   r   r   s        r#   r0   z	MH.remove  s~    Kww||DJJC1		T5!A GGIIIdO  	ww%,,&83>??		s   A( (	B"1,BB"c                    	 t         j                  j                  | j                  t	        |            }	 t        |d      }	 | j                  rt        |       	 t        j                  t        j
                  |t         j                  t         j                  z               | j                  ||       t!        |t"              r| j%                  ||       | j                  rt'        |       	 t)        |       y # t        $ r1}|j                  t        j                  k(  rt        d|z         d }~ww xY w# | j                  rt'        |       w w xY w# t)        |       w xY wr  )r   r   r   r   r   r   r   r   r>  r4   rE  rO  rx   r  O_TRUNCr   r   r   r  rR  r   )r    r/   r+   r   r   r   s         r#   r8   zMH.__setitem__  s   Lww||DJJC1	T5!A	||1$r{{RZZ'?@A""7A.gy1((#6<< ON#  	ww%,,&83>??		 << O   Ns<   C; E A<D8 E ;	D5,D00D58EE E"c                    	 	 | j                   r>t        t        j                  j	                  | j
                  t        |            d      }n=t        t        j                  j	                  | j
                  t        |            d      }|5  | j                   rt        |       	 t        |      }| j                   rt        |       	 d d d        | j                         j                         D ]  \  }}||v sj!                  |        S # t        $ r1}|j                  t        j                  k(  rt        d|z         d }~ww xY w# | j                   rt        |       w w xY w# 1 sw Y   xY w)Nr=  r   r5  )rE  r   r   r   r   r   r   r   r   r>  r4   rO  r   rR  get_sequencesr_   add_sequence)r    r/   r   r   r   r   key_lists          r#   r>   zMH.get_message  s   B		||djj#c(;UCdjj#c(;TB ||1$l<< O  #00288:ND(h  & ; 
!  	ww%,,&83>??		 << O   Qs<   BD E(%E0E(	E,EEE%%E((E1c                    	 	 | j                   r>t        t        j                  j	                  | j
                  t        |            d      }n=t        t        j                  j	                  | j
                  t        |            d      }|5  | j                   rt        |       	 |j                         j                  t        d      | j                   rt        |       cd d d        S # t        $ r1}|j                  t        j                  k(  rt        d|z         d }~ww xY w# | j                   rt        |       w w xY w# 1 sw Y   y xY w)Nr=  r   r5  r   )rE  r   r   r   r   r   r   r   r   r>  r4   rO  r   r   r   rR  r    r/   r   r   s       r#   rH   zMH.get_bytes  s    @		||djj#c(;UCdjj#c(;TB ||1$vvx''7<< O Q  	ww%,,&83>??		 << O   Qs<   BC) E%#D&E)	D#2,DD#&E  EEc                    	 	 t        t        j                  j                  | j                  t        |            d      }t        |      S # t        $ r1}|j                  t        j                  k(  rt        d|z         d }~ww xY w)Nr   r5  )r   r   r   r   r   r   r   r   r>  r4   r   r  s       r#   rA   zMH.get_file1  so    D	RWW\\$**c#h7>A !}  	ww%,,&83>??		s   =A 	B,B  Bc                 t    	 t        t        d t        j                  | j                        D                    S )Nc              3   R   K   | ]  }|j                         rt        |       ! y wr   )isdigitr'  ).0r  s     r#   	<genexpr>zMH.iterkeys.<locals>.<genexpr>>  s%      :3I%). u:3Is   %')iterrZ  r   r  r   rN   s    r#   rO   zMH.iterkeys<  s2    +F :2::djj3I : : ; 	;r%   c                     	 t         j                  j                  t         j                  j                  | j                  t        |                  S r   )r   r   r   r   r   r   r.   s     r#   ra   zMH.__contains__A  s/    Gww~~bggll4::s3x@AAr%   c                 H    	 t        t        | j                                     S r   )r   rQ   rO   rN   s    r#   rc   z
MH.__len__E  s    84())r%   c                     	 | j                   sVt        t        j                  j	                  | j
                  d      d      | _        t        | j                         d| _         y y )Nr  r=  T)rE  r   r   r   r   r   rA  rO  rN   s    r#   rt   zMH.lockI  sE    ||bggll4::GODJtzz"DL r%   c                     	 | j                   r4t        | j                         t        | j                         | `d| _         y y rQ  )rE  rR  rA  r   rN   s    r#   rv   z	MH.unlockP  s5    1<<$

#
 DL	 r%   c                      	 y r   r   rN   s    r#   rr   zMH.flushX  s    4r%   c                 @    	 | j                   r| j                          y y r   )rE  rv   rN   s    r#   rx   zMH.close\  s    *<<KKM r%   c                    	 g }t        j                  | j                        D ][  }t         j                  j	                  t         j                  j                  | j                  |            sK|j                  |       ] |S r   )r   r  r   r   r  r   r  r  s      r#   r  zMH.list_foldersa  sW    ,ZZ

+Eww}}RWW\\$**e<=e$ , r%   c                     	 t        t        j                  j                  | j                  |      | j
                  d      S )NFr	  r   r   r   r   r   r   r
  s     r#   r  zMH.get_folderi  s0    9"'',,tzz62--7 	7r%   c                     	 t        t        j                  j                  | j                  |      | j
                        S )Nr  r  r
  s     r#   r  zMH.add_foldern  s.    H"'',,tzz62--) 	)r%   c                 ^   	 t         j                  j                  | j                  |      }t        j                  |      }|dgk(  r4t        j
                  t         j                  j                  |d             n|g k(  rnt        d| j                  z        t        j                  |       y )Nr  zFolder not empty: %s)r   r   r   r   r  r0   r   r  )r    r  r   entriess       r#   r  zMH.remove_folders  s{    ;ww||DJJ/**T"''IIbggll49:] 6 CDD
r%   c           
         	 i }t        t        j                  j                  | j                  d      dd      5 }t        | j                               }|D ]  }	 |j                  d      \  }}t               }|j                         D ]f  }|j                         r|j                  t        |             .d |j                  d      D        \  }	}
|j                  t        |	|
dz                h t        |      D cg c]  }||v r|
 c}||<   t        ||         d	k(  r||=  	 d d d        |S c c}w # t        $ r t!        d
|j#                         z        w xY w# 1 sw Y   |S xY w)Nr  rASCIIencodingr   c              3   2   K   | ]  }t        |        y wr   )r'  )r  xs     r#   r  z#MH.get_sequences.<locals>.<genexpr>  s     *K?a3q6?s   -r   r   z"Invalid sequence specification: %s)r   r   r   r   r   setrR   r   r  r,   r'  rp   rangerZ  r   r|   r   rstrip)r    resultsr   all_keysr   r   contentsrR   specrf  rg  r/   s               r#   r  zMH.get_sequences  sN   K"'',,tzz?;S7SWX499;'H5%)ZZ_ND(5D ( 0<<> HHSY/*K4::c?*KKE4 KKeTAX(>? !1 5;4L %=LS,/8O &)L %=GDM74=)Q.#DM  T& %= " 5%&J&*kkm'4 5 55! T& s6   E B$D7>D2D7%E 2D77&EE  E*c                     	 t        t        j                  j                  | j                  d      dd      }	 t        j
                  t        j                   |j                  t        j                  t        j                  z               |j                         D ]  \  }}t        |      dk(  r|j                  |dz          d }d}t        t        |            D ]Q  }|dz
  |k(  r|sCd	}|j                  d
       n/|rd}|j                  |d|       n|j                  d|z         |}S |r|j                  t        |      dz          |j                  d        	 t        |       y # t        |       w xY w)Nr  zr+r  r  r   r   Fr   Tr   z %s
)r   r   r   r   r   rx   r   r  r  r_   r   r   rZ  r  r   r   )r    	sequencesr   r   rR   prev
completingr/   s           r#   set_sequenceszMH.set_sequences  s%   Hdjj/:D7S	HHRWWQVVR[[2::%=>?'oo/
dt9>s
#"
!#d),CQw$))-JGGCL#%*
4 56,D - GGCI,-GGDM) 0, NKNs   D*E0 0E=c                    	 | j                         }d}g }| j                         D ]  }|dz
  |k7  r|j                  ||dz   f       	 t        j                  t        j
                  j                  | j                  t        |            t        j
                  j                  | j                  t        |dz                      t        j                  t        j
                  j                  | j                  t        |                   |dz  } |dz   | _        t        |      dk(  ry |j                         D ](  \  }}|D ]  \  }}||v s|||j!                  |      <     * | j#                  |       y # t        t        f$ r~ t        j                  t        j
                  j                  | j                  t        |            t        j
                  j                  | j                  t        |dz                      Y w xY w)Nr   r   )r  rO   r  r   r   r   r   r   r   unlinkr   r   r   rB  r   r_   indexr  )	r    r  r  changesr/   r   r  oldr   s	            r#   packzMH.pack  s   M&&(	==?CQw$TAX/BGGBGGLLSX>GGLLS]CE IIbggll4::s3x@AAID # w<1'oo/ND(#S(?47HX^^C01 $ 0 	9% '8 GIIbggll4::s3x@ ggll4::s4!8}EGGs   A;E66B
HHc                    	 |j                         }| j                         }|j                         D ]2  \  }}||v r|j                  |       ||v s!||j                  |      = 4 |D ]  }||vs|g||<    | j	                  |       y r   )r  r_   r  r  r  )r    r+   r/   pending_sequencesall_sequencesr   r  sequences           r#   r  zMH._dump_sequences  s    I#113**,+113ND((($X^^C01	 4
 *H},+.%h' * 	=)r%   r   )r   r   r   r$   r,   r0   r8   r>   rH   rA   rO   ra   rc   rt   rv   rr   rx   r  r  r  r  r  r  r  r  r   r%   r#   r   r     su    
 D02$*	;
B* !
7
)

0:&4*r%   r   c                   r    e Zd Z	  eh d      ZddZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zy)r   >   filededitedresentunseendeletedanswered	forwardedNc                 D    	 t         j                  | |||       i | _        y r   )r;  r$   _labelsr   s       r#   r$   zBabyl.__init__  s     )##D$@r%   c                     	 t         j                  | |      }t        |t              r|j	                         | j
                  |<   |S r   )r;  r,   r   r   
get_labelsr  )r    r+   r/   s      r#   r,   z	Babyl.add  s=    2 $$T73g|, ' 2 2 4DLL
r%   c                 j    	 t         j                  | |       || j                  v r| j                  |= y y r   )r;  r0   r  r.   s     r#   r0   zBabyl.remove  s2    K!!$,$,,S! r%   c                     	 t         j                  | ||       t        |t              r|j	                         | j
                  |<   y y r   )r;  r8   r   r   r  r  r7   s      r#   r8   zBabyl.__setitem__  s=    L&&tS':g|, ' 2 2 4DLL -r%   c                    	 | j                  |      \  }}| j                  j                  |       | j                  j                          t	        j
                         }	 | j                  j                         }|dt        z   k(  s|sn&|j                  |j                  t        d             Ot	        j
                         }	 | j                  j                         }|t        k(  s|sn&|j                  |j                  t        d             L|| j                  j                         z
  }| j                  j                  |      }|j                  t        d      }t        |j                         |z         }	|	j                  |j                                || j                  v r|	j                  | j                  |          |	S N   *** EOOH ***r   )r   rA  r   r   r   r   r   r   r   rW  r   r   r   set_visibler  
set_labels)
r    r/   rf  rg  original_headersr   visible_headersnbodyr   s
             r#   r>   zBabyl.get_message  sa   Bll3't



::<::&&(D00""4<<#?@	 
 **,::&&(Dwd!!$,,w">?	  4::??$$zzq!||GU++446=>0023$,,NN4<<,-
r%   c                 t   	 | j                  |      \  }}| j                  j                  |       | j                  j                          t	        j
                         }	 | j                  j                         }|dt        z   k(  s|sn&|j                  |j                  t        d             O	 | j                  j                         }|t        k(  s|sn'|j                         }|| j                  j                         z
  }| j                  j                  |      }|j                  t        d      }||z   S r  )r   rA  r   r   r   r   r   r   r   r   rW  r   )	r    r/   rf  rg  r  r   headersr  r   s	            r#   rH   zBabyl.get_bytes  s   All3't



::<::&&(D00""4<<#?@	 
 ::&&(Dwd  #++-4::??$$zzq!||GU+~r%   c                 t    	 t        j                  | j                  |      j                  dt                    S r  )r   r   rH   r   r   r.   s     r#   rA   zBabyl.get_file-  s*    Dzz$..-55eWEFFr%   c                     	 | j                          t               }| j                  j                         D ]  }|j	                  |        |j                  | j                         t        |      S r   )r   r  r  r[   rp   difference_update_special_labelsrQ   )r    labels
label_lists      r#   r  zBabyl.get_labels1  sV    B,,--/JMM*% 0  !5!56F|r%   c                 B   	 g g }}| j                   j                  d       d}g }	 |}| j                   j                         }| j                   j                         }|dt        z   k(  rt        |      t        |      k  r!|j                  |t        t              z
         |j                  |       | j                   j                         dd  j                  d      D cg c]"  }|j                         r|j                         $ }}|j                  |       nn|dk(  s|dt        z   k(  r9t        |      t        |      k  rF|j                  |t        t              z
         n$|s"|j                  |t        t              z
         ndt        t        t        ||                  | _        t        t        |            | _        t        | j                        | _        | j                   j                  dd       | j                   j                         | _        y c c}w )Nr   s   r      ,   r/  )rA  r   r   rW  r   r   r  r   stripr  r  r  r   r  rB  rF  )	r    r  r  r  label_listsr  r   labelr	  s	            r#   rq  zBabyl._generate_toc:  s   >B

H::&&(Dzz(H{W,,u:F+LLCL!89h'+/::+>+>+@+D+J+J4+P:+P -2+0;;=  ++-+P  : ""6*DGg,=$=u:F+LLCL!89XG45# $ 3vu#567	Ik23TYY

1 JJOO-:s   'Hc                     	 dt         z   }|dt         z   z  }| j                         }d |D        }|ddj                  |      z   t         z   z  }|dz  }|j                  |       y )Ns   BABYL OPTIONS:s
   Version: 5c              3   <   K   | ]  }|j                           y wr   )rz   )r  r  s     r#   r  z*Babyl._pre_mailbox_hook.<locals>.<genexpr>]  s     5fU%,,.fs   s   Labels:r  r  )r   r  r   r   )r    r   babylr	  s       r#   rY  zBabyl._pre_mailbox_hookX  sf    :!G+(("5f5dii//'99	r%   c                 6    	 |j                  dt        z          y )N   r  rk  s     r#   r[  zBabyl._pre_message_hookb  s    ;	'!"r%   c                 6    	 |j                  t        dz          y )Nr  r  rk  s     r#   r]  zBabyl._post_message_hookf  s    :	'!"r%   c                    	 | j                   j                         }t        |t              r	g }g }|j	                         D ]3  }|| j
                  v r|j                  |       #|j                  |       5 | j                   j                  d       |D ].  }| j                   j                  d|j                         z          0 | j                   j                  d       |D ]1  }| j                   j                  d|j                         z   dz          3 | j                   j                  t               n"| j                   j                  dt        z          t        |t        j                  j                        rt        j                         }t        j                  j!                  |dd      }|j#                  |       |j%                  d       	 |j'                         }| j                   j                  |j)                  d
t                     |d
k(  s|snH| j                   j                  dt        z          t        |t              rt        j                         }	t        j                  j!                  |	dd      }
|
j#                  |j+                                	 |	j'                         }| j                   j                  |j)                  d
t                     |d
k(  s|sn[H|j%                  d       	 |j'                         }| j                   j                  |j)                  d
t                     |d
k(  s|snH	 |j-                  d      }|sn| j                   j                  |j)                  d
t                     Et        |t.        t0        t        j2                  f      rt        |t        j2                        r+t5        j6                  dt8        d       |j;                         }t        |t0              r| j=                  |      }|j?                  d      dz   }|dz
  dk7  r| j                   j                  |d | j)                  d
t                     | j                   j                  dt        z          | j                   j                  |d | j)                  d
t                     | j                   j                  ||d  j)                  d
t                     n | j                   j                  dt        z   t        z          | j                   j                  |j)                  d
t                     ntA        |d      rtA        |d      r't5        j6                  dt8        d       |jB                  }|j                         }d	}	 |j'                         }|jE                  d      r	|d d d
z   }n|jE                  d      r|d d d
z   }| j                   j                  |j)                  d
t                     |d
k(  s|s9|r6d}| j                   j                  dt        z          |j%                  |       nn	 |j'                         }|sn|jE                  d      r|d d t        z   }n;|jE                  d      r|d d t        z   }n|jE                  d
      r|d d t        z   }| j                   j                  |       tG        dtI        |      z        | j                   j                         }||fS )N   1s   , s   ,,    r  s   1,,Fr   Tr   r  rT  r   r   s   

r/  r   r   r   r   r   r   r   r   )%rA  rW  r   r   r  r  r  r   rz   r   rF   r+   r
   r   r   r   r   r   r   r   r   get_visibler   r   r   r   r   r   r   r   r}   r  rl   r   r   r   r   )r    r+   rf  special_labelsr	  r  orig_bufferorig_generatorr   
vis_buffervis_generatorr   
body_startoriginal_pos
first_passrg  s                   r#   rs  zBabyl._install_messagej  s   >

!g|,NF ++-D000"))%0MM%(	 .
 JJT"'

  !78 (JJU#

  !6!=>  JJW%JJVg-.gu}}445**,K"__;;KPQRN""7+Q"++-

  eW!=>5=	 
 JJ_w67'<0ZZ\
 % > >z5RS T%%g&9&9&;<%..0DJJ$$T\\%%ABu}D	    #&//1DJJ$$T\\%%ABu}D	 
 $))$/

  w!?@	 
 %bkk!:;'2;;/ *+=qB!**,'3'//8 g.2JA~#

  *!5!=!=eW!MN

  7!:;

  *!5!=!=eW!MN

  !5!=!=eW!MN

  7!:W!DE

  !@AWj)w) 56H!M!.."<<>LJ'')==)9u,D]]5)9u,D

  eW!=>5=!%*


((7)BC\2  '')==)9w.D]]5)9w.D]]5)9w.D

  &  6gFGGzz t}r%   r   )r   r   r   	frozensetr  r$   r,   r0   r8   r>   rH   rA   r  rq  rY  r[  r]  rs  r   r%   r#   r   r     sY    ' !B CO
"58,G.<##ir%   r   c                   "    e Zd Z	 ddZd Zd Zy)r
   Nc                    	 t        |t        j                  j                        rG| j	                  t        j                  |             t        |t              r|j                  |        y y t        |t              r%| j	                  t        j                  |             y t        |t              r%| j	                  t        j                  |             y t        |t        j                        r%| j	                  t        j                  |             y t        |d      r%| j	                  t        j                   |             y |*t        j                  j                  j#                  |        y t%        dt'        |      z        )Nr   r   )r   rF   r+   r
   _become_messagecopydeepcopy_explain_tor   rG   r   message_from_stringr   TextIOWrappermessage_from_filerl   message_from_binary_filer$   r   r   r*   s     r#   r$   zMessage.__init__  s   ,gu}}445  w!78'7+##D) ,'  !9!9'!BC%  !:!:7!CD!1!12  !8!8!ABWf%  !?!?!HI_MM!!**406gFGGr%   c                     	 t        |dg       }|j                  D ]#  }||vs|j                  |   | j                  |<   % y )N_type_specific_attributes)getattr__dict__)r    r+   type_specificr   s       r#   r&  zMessage._become_message  sE    >)DbI$$D=(&-&6&6t&<d# %r%   c                 <    	 t        |t              ry t        d      )Nz Cannot convert to specified type)r   r
   r   r*   s     r#   r)  zMessage._explain_to  s    Hgw'>??r%   r   )r   r   r   r$   r&  r)  r   r%   r#   r
   r
     s    :H&=@r%   r
   c                   `    e Zd Z	 g dZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zy)r   )_subdir_info_dateNc                     	 d| _         d| _        t        j                         | _        t        j                  | |       y )Nr   r   )r5  r6  r  r7  r
   r$   r*   s     r#   r$   zMaildirMessage.__init__   s0    3
YY[
w'r%   c                     	 | j                   S r   )r5  rN   s    r#   r   zMaildirMessage.get_subdir  s    $||r%   c                 D    	 |dk(  s|dk(  r|| _         y t        d|z        )Nr   r   z!subdir must be 'new' or 'cur': %s)r5  r|   )r    r   s     r#   r   zMaildirMessage.set_subdir  s*    +U?fo!DL@6IJJr%   c                 Z    	 | j                   j                  d      r| j                   dd  S y)N2,r/  r   )r6  r   rN   s    r#   	get_flagszMaildirMessage.get_flags  s*    8::  &::ab>!r%   c                 J    	 ddj                  t        |            z   | _        y )Nr<  r   )r   rZ  r6  )r    flagss     r#   	set_flagszMaildirMessage.set_flags  s    7BGGF5M22
r%   c                     	 | j                  dj                  t        | j                               t        |      z               y Nr   r@  r   r  r=  r    flags     r#   add_flagzMaildirMessage.add_flag  /    <rwws4>>#34s4y@ABr%   c                     	 | j                         rD| j                  dj                  t        | j                               t        |      z
               y y rB  )r=  r@  r   r  rD  s     r#   remove_flagzMaildirMessage.remove_flag!  s>    E>>NN2773t~~'7#83t9#DEF r%   c                     	 | j                   S r   )r7  rN   s    r#   r   zMaildirMessage.get_date&  s    Jzzr%   c                 `    	 	 t        |      | _        y # t        $ r t        d|z        d w xY w)Nzcan't convert to float: %s)floatr7  r|   r   )r    dates     r#   r   zMaildirMessage.set_date*  s:    G	KtDJ 	K84?@dJ	Ks    -c                     	 | j                   S r   )r6  rN   s    r#   r   zMaildirMessage.get_info1  s    3zzr%   c                 b    	 t        |t              r|| _        y t        dt	        |      z        )Nzinfo must be a string: %s)r   r   r6  r   r   )r    ri  s     r#   r   zMaildirMessage.set_info5  s+    .dC DJ7$t*DEEr%   c                    	 t        |t              r^|j                  | j                                |j	                  | j                                |j                  | j                                y t        |t              rt        | j                               }d|v r|j                  d       | j                         dk(  r|j                  d       d|v r|j                  d       d|v r|j                  d       d|v r|j                  d       |j                  d	t        j                  | j                                      y t        |t              rZt        | j                               }d|vr|j                  d
       d|v r|j                  d       d|v r|j                  d       y y t        |t               rot        | j                               }d|vr|j#                  d
       d|v r|j#                  d       d|v r|j#                  d       d|v r|j#                  d       y y t        |t$              ry t'        dt)        |      z        )NSRr   OTDFAMAILER-DAEMONr  repliedflaggedr  r  r#  r  $Cannot convert to specified type: %s)r   r   r@  r=  r   r   r   r   r  r  rF  r}  r  r  r   r  r   	add_labelr
   r   r   )r    r+   r?  s      r#   r)  zMaildirMessage._explain_to<  s   Ig~.dnn./t01T]]_-!12()Ee|  % E)  %e|  %e|  %e|  %_dkk$--/.JK+()E%$$X.e|$$Y/e|$$Y/ .()E%!!(+e|!!),e|!!*-e|!!+. )B M* + +r%   r   )r   r   r   r/  r$   r   r   r=  r@  rF  rI  r   r   r   r   r)  r   r%   r#   r   r     sL    3 =(K3CG
KF)+r%   r   c                   H    e Zd Z	 dgZddZd ZddZd Zd Zd Z	d	 Z
d
 Zy)r  _fromNc                    	 | j                  dd       t        |t        j                  j                        r7|j                         }|%|j                  d      r| j                  |dd         t        j                  | |       y )NrX  TzFrom r   )r}  r   rF   r+   r
   r  r   r$   )r    r+   r  s      r#   r$   z_mboxMMDFMessage.__init__m  sj    5ot,gu}}445++-H#(;(;G(Dhqrl+w'r%   c                     	 | j                   S r   )r^  rN   s    r#   r  z_mboxMMDFMessage.get_fromv  s    .zzr%   c                 ~    	 |3|du rt        j                         }|dt        j                  |      z   z  }|| _        y )NTr  )r  r  r  r^  )r    r  time_s      r#   r}  z_mboxMMDFMessage.set_fromz  s<    L}S4<<...E
r%   c                 N    	 | j                  dd      | j                  dd      z   S )NStatusr   X-Status)r<   rN   s    r#   r=  z_mboxMMDFMessage.get_flags  s&    8xx"%R(@@@r%   c                    	 t        |      }d\  }}dD ]  }||v s||z  }|j                  |        dD ]  }||v s||z  }|j                  |        |dj                  t        |            z  }	 | j	                  d|       	 | j	                  d|       y # t
        $ r | j                  d|       Y 1w xY w# t
        $ r | j                  d|       Y y w xY w)N)r   r   )rR  rS  )rU  rV  rW  r   rd  re  )r  r0   r   rZ  replace_headerr4   
add_header)r    r?  status_flagsxstatus_flagsrE  s        r#   r@  z_mboxMMDFMessage.set_flags  s    7E
&,#mDu}$T"  $Du}%T" $ 	//	4,7	7
M:  	4OOHl3	4  	7OOJ6	7s$   4B B; B87B8;CCc                     	 | j                  dj                  t        | j                               t        |      z               y rB  rC  rD  s     r#   rF  z_mboxMMDFMessage.add_flag  rG  r%   c                     	 d| v sd| v rD| j                  dj                  t        | j                               t        |      z
               y y )Nrd  re  r   rC  rD  s     r#   rI  z_mboxMMDFMessage.remove_flag  sC    EtzT1NN2773t~~'7#83t9#DEF  2r%   c                    	 t        |t              rt        | j                               }d|v r|j	                  d       d|v r|j                  d       d|v r|j                  d       d|v r|j                  d       d|v r|j                  d       |d	= |d
= dj                  | j                         j                         dd        }	 |j                  t        j                  t        j                  |d                   y t        |t               r?|j#                  | j                                |j%                  | j                                y t        |t&              r_t        | j                               }d|vr|j)                  d       d|v r|j)                  d       d|v r|j)                  d       |d	= |d
= y t        |t*              r_t        | j                               }d|vr|j-                  d       d|v r|j-                  d       d|v r|j-                  d       |d	= |d
= y t        |t.              ry t1        dt3        |      z        # t        t        f$ r Y y w xY w)NrS  r   rV  rW  rR  rQ  rU  rT  statuszx-statusr  z%a %b %d %H:%M:%S %Yr  rY  rZ  r  r  r[  )r   r   r  r=  r   rF  r   r  r   r   calendartimegmr  strptimer|   OverflowErrorr  r@  r}  r   r  r   r\  r
   r   r   )r    r+   r?  
maybe_dates       r#   r)  z_mboxMMDFMessage._explain_to  s<   Og~.()Ee|""5)e|  %e|  %e|  %e|  %!
#$--/"7"7"9"#">?J  z6L2N "O P !12dnn./T]]_-+()E%$$X.e|$$Y/e|$$Y/!
#.()E%!!(+e|!!),e|!!*-!
#)B M* + +9 . s   8I I+*I+r   )r   r   r   r/  r$   r  r}  r=  r@  rF  rI  r)  r   r%   r#   r  r  h  s8    9!(	(A7,CG
1+r%   r  c                       e Zd Zy)r   Nr   r   r   r   r%   r#   r   r         0r%   r   c                   :    e Zd Z	 dgZd	dZd Zd Zd Zd Zd Z	y)
r   
_sequencesNc                 @    	 g | _         t        j                  | |       y r   )ry  r
   r$   r*   s     r#   r$   zMHMessage.__init__  s    /w'r%   c                 "    	 | j                   d d  S r   )ry  rN   s    r#   r  zMHMessage.get_sequences  s    Bq!!r%   c                 &    	 t        |      | _        y r   )rQ   ry  )r    r  s     r#   r  zMHMessage.set_sequences  s    Ay/r%   c                     	 t        |t              r+|| j                  vr| j                  j                  |       y y t	        dt        |      z        )Nzsequence type must be str: %s)r   r   ry  r  r   r   r    r  s     r#   r  zMHMessage.add_sequence  sI    Fh$t.&&x0 / ;d8nLMMr%   c                 \    	 	 | j                   j                  |       y # t        $ r Y y w xY wr   )ry  r0   r|   r~  s     r#   remove_sequencezMHMessage.remove_sequence  s.    O	OO""8, 		    	++c                 ~   	 t        |t              r}t        | j                               }d|v r|j	                  d       n"|j	                  d       |j                  d       d|v r|j                  d       d|v r|j                  d       y y t        |t              rlt        | j                               }d|vr|j                  d       n|j                  d	       d|v r|j                  d       d|v r|j                  d
       y y t        |t              r'| j                         D ]  }|j                  |        y t        |t              rEt        | j                               }d|v r|j                  d       d|v r|j                  d       y y t        |t              ry t        dt        |      z        )Nr  r   rQ  rZ  rV  rY  rR  ROrS  rW  r  r[  )r   r   r  r  r   rF  r  r   r  r   r\  r
   r   r   )r    r+   r  r  s       r#   r)  zMHMessage._explain_to  s   Dg~.D..01I9$""5)""5)  %I%  %I%  % &!12D..01Iy(  &  %I%  %I%  % &+ ..0$$X. 1.D..01I9$!!(+I%!!*- &)B M* + +r%   r   )
r   r   r   r/  r$   r  r  r  r  r)  r   r%   r#   r   r     s,    .!-(
"*N$+r%   r   c                   N    e Zd Z	 ddgZddZd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zy)r   r  _visibleNc                 ^    	 g | _         t               | _        t        j                  | |       y r   )r  r
   r  r$   r*   s     r#   r$   zBabylMessage.__init__*  s%    1	w'r%   c                 "    	 | j                   d d  S r   )r  rN   s    r#   r  zBabylMessage.get_labels0  s    5||Ar%   c                 &    	 t        |      | _        y r   )rQ   r  )r    r	  s     r#   r  zBabylMessage.set_labels4  s    4F|r%   c                     	 t        |t              r+|| j                  vr| j                  j                  |       y y t	        dt        |      z        )Nzlabel must be a string: %s)r   r   r  r  r   r   r    r  s     r#   r\  zBabylMessage.add_label8  sI    9eS!DLL(##E* ) 84;FGGr%   c                 \    	 	 | j                   j                  |       y # t        $ r Y y w xY wr   )r  r0   r|   r  s     r#   remove_labelzBabylMessage.remove_label@  s.    B	LL& 		r  c                 .    	 t        | j                        S r   r
   r  rN   s    r#   r  zBabylMessage.get_visibleG  s    At}}%%r%   c                 &    	 t        |      | _        y r   r  )r    visibles     r#   r  zBabylMessage.set_visibleK  s    @(r%   c                     	 | j                   j                         D ]3  }|| v r | j                   j                  || |          '| j                   |= 5 dD ](  }|| v s|| j                   vs| |   | j                   |<   * y )N)DateFromzReply-ToToCCSubject)r  rR   rg  )r    headers     r#   update_visiblezBabylMessage.update_visibleO  sy    Gmm((*F~,,VT&\BMM&)	 +
 JF~&"=(,Vf% Jr%   c                    	 t        |t              rt        | j                               }d|v r|j	                  d       n"|j	                  d       |j                  d       d|v sd|v r|j                  d       d|v r|j                  d       d	|v r|j                  d
       y y t        |t              rlt        | j                               }d|vr|j                  d       n|j                  d       d	|v r|j                  d       d|v r|j                  d       y y t        |t              rEt        | j                               }d|v r|j                  d       d|v r|j                  d       y y t        |t              rF|j                  | j                                | j                         D ]  }|j                  |        y t        |t              ry t        dt        |      z        )Nr  r   rQ  r  r  r#  r  rR  r  rT  r  rS  rU  rW  rY  r[  )r   r   r  r  r   rF  r  r   r  r   r  r  r\  r
   r   r   )r    r+   r	  r  s       r#   r)  zBabylMessage._explain_toZ  s   Gg~.*+F6!""5)""5)  %f$F(:  %V#  %F"  % #!12*+Fv%  &  %F"  %V#  % $+*+F6!$$X.V#$$Y/ $. 0 0 23*!!%( +)B M* + +r%   r   )r   r   r   r/  r$   r  r  r\  r  r  r  r  r)  r   r%   r#   r   r   %  s>    1!*J 7($H&)	5'+r%   r   c                       e Zd Zy)r   Nrv  r   r%   r#   r   r     rw  r%   r   c                       e Zd Z	 ddZddZddZddZddZd Zd Z	dd	Z
d
 Zd Zd Zd Zd Zd Zd Zd Zed        Z ee      Zy)r   Nc                 R    	 || _         ||j                         | _        y || _        y r   )rA  rW  _pos)r    r   poss      r#   r$   z_ProxyFile.__init__  s%    &
;DIDIr%   c                 P    	 | j                  || j                  j                        S r   )_readrA  r   r    sizes     r#   r   z_ProxyFile.read  s    zz$

00r%   c                 P    	 | j                  || j                  j                        S r   )r  rA  read1r  s     r#   r  z_ProxyFile.read1  s     zz$

 0 011r%   c                 P    	 | j                  || j                  j                        S r   )r  rA  r   r  s     r#   r   z_ProxyFile.readline  s     zz$

 3 344r%   c                 n    	 g }| D ],  }|j                  |       ||t        |      z  }|dk  s+ |S  |S )Nr   )r  r   )r    sizehintrg   r   s       r#   	readlinesz_ProxyFile.readlines  sJ    "DMM$#CI%q=  r%   c              #   b   K   	 | j                         x}r| | j                         x}ry y wr   )r   )r    r   s     r#   rY   z_ProxyFile.__iter__  s2     !mmo%d%J mmo%d%s   *//c                     	 | j                   S r   )r  rN   s    r#   rW  z_ProxyFile.tell  s    "yyr%   c                     	 |dk(  r%| j                   j                  | j                         | j                   j                  ||       | j                   j                         | _        y )Nr   rA  r   r  rW  r    offsetwhences      r#   r   z_ProxyFile.seek  sD    Q;JJOODII&

'JJOO%	r%   c                     	 t        | d      r4	 t        | j                  d      r| j                  j                          | `y y # | `w xY w)NrA  rx   )rl   rA  rx   rN   s    r#   rx   z_ProxyFile.close  sE    4!4::w/JJ$$&J "
 Js   0A Ac                     	 |d}| j                   j                  | j                          ||      }| j                   j                         | _        |S )Nr   r  )r    r  read_methodrg   s       r#   r  z_ProxyFile._read  sD    0<D

		"T"JJOO%	r%   c                     	 | S r   r   rN   s    r#   	__enter__z_ProxyFile.__enter__  s
    2r%   c                 $    | j                          y r   )rx   )r    excs     r#   __exit__z_ProxyFile.__exit__  s    

r%   c                 6    | j                   j                         S r   )rA  readablerN   s    r#   r  z_ProxyFile.readable      zz""$$r%   c                 6    | j                   j                         S r   )rA  writablerN   s    r#   r  z_ProxyFile.writable  r  r%   c                 6    | j                   j                         S r   )rA  seekablerN   s    r#   r  z_ProxyFile.seekable  r  r%   c                 6    | j                   j                         S r   )rA  rr   rN   s    r#   rr   z_ProxyFile.flush  s    zz!!r%   c                 v    t        | d      syt        | j                  d      sy| j                  j                  S )NrA  Tr  F)rl   rA  r  rN   s    r#   r  z_ProxyFile.closed  s0    tW%tzz8,zz   r%   r   r   )r   r   r   r$   r   r  r   r  rY   rW  r   rx   r  r  r  r  r  r  rr   propertyr  r   r   r   r   r%   r#   r   r     sv    (125	
&%%%" ! ! $L1r%   r   c                   0    e Zd Z	 ddZd ZddZd Zd Zy)	r  Nc                 P    	 t         j                  | ||       || _        || _        y r   )r   r$   _start_stop)r    r   rf  rg  s       r#   r$   z_PartialFile.__init__  s%    (D!U+
r%   c                 H    	 t         j                  |       | j                  z
  S r   )r   rW  r  rN   s    r#   rW  z_PartialFile.tell  s    8t$t{{22r%   c                     	 |dk(  r| j                   | _        d}n|dk(  r| j                  | _        d}t        j	                  | ||       y )Nr   r   r/  )r  r  r  r   r   r  s      r#   r   z_PartialFile.seek  sC    FQ;DIFq[

DIFff-r%   c                     	 | j                   | j                  z
  }|dk  ry|
|dk  s||kD  r|}t        j                  | ||      S )Nr   r%   )r  r  r   r  )r    r  r  	remainings       r#   r  z_PartialFile._read  sM    IJJ*	><4!8ti'7DdK88r%   c                 "    t        | d      r| `y y )NrA  )rl   rA  rN   s    r#   rx   z_PartialFile.close
  s     4!
 "r%   )NNr  )r   r   r   r$   rW  r   r  rx   r   r%   r#   r  r    s    03.9r%   r  c                    	 d}	 t         r6	 t        j                  | t         j                  t         j                  z         |r{	 t        | j                  dz         }|j                          	 	 t        j                  |j                  | j                  dz          d}t        j                  |j                         y y y # t        $ rY}|j
                  t
        j                  t
        j                  t
        j                  fv rt        d| j                  z         d }~ww xY w# t        $ r7}|j
                  t
        j                  t
        j                  fv rY d }~y  d }~ww xY w# t         t"        f$ r2 t        j$                  |j                  | j                  dz          d}Y w xY w# t&        $ r8 t        j(                  |j                         t        d| j                  z        w xY w#  t         r$t        j                  | t         j*                         |r"t        j(                  | j                  dz           xY w)NFzlockf: lock unavailable: %s.lockTzdot lock unavailable: %s)fcntllockfLOCK_EXLOCK_NBr   r   EAGAINr?  r@  r   r   rX  rx   r   r   r  r   r   r   r,  r0   LOCK_UN)r   rU  dotlock_doner   pre_locks        r#   rO  rO    s   2L%Au}}u}}<= ,QVVg-=> 1-GGHMM166G+;<#'L
 IIhmm, !   77u||U\\5;;GG,-J-.VV.4 5 5   77u||U[[99	 '8 (IIhmmQVVg-=>#'L(
 # 1		(--(()C)**0 1 11KK5==)IIaffw&'s   G/ 5B? G/ (D$ ./E' F+ ?	D!ADD!!G/ $	E$-,EG/ EE$$G/ '>F(%F+ 'F((F+ +AG,,G/ /AI c                     	 t         r$t        j                  | t         j                         t        j                  j                  | j                  dz         r#t        j                  | j                  dz          y y )Nr  )r  r  r  r   r   r   r   r0   r   s    r#   rR  rR  ;  sM    4Au}}%	ww~~affw&'
		!&&7"# (r%   c                 
   	 t        j                  | t         j                  t         j                  z  t         j                  z  d      }	 t        | d      t        j
                  |       S # t        j
                  |       w xY w)Nr  r=  )r   r   r  r  O_RDWRrx   )r   fds     r#   r+  r+  B  sS    M	rzzBII-		95	ABD% 
s   
A+ +Bc           
          	 t        | dt        t        j                               dt        j                         dt        j                               S )Nr  )r+  r'  r  r%  r&  r   r(  )r   s    r#   rX  rX  J  s;    LdC		4D.4.@.@.B.0iik; < <r%   c                     	 | j                          t        t        d      r$t        j                  | j	                                y y )Nfsync)rr   rl   r   r  filenor  s    r#   rV  rV  P  s/    :GGIr7
 r%   c                 <    	 t        |        | j                          y r   )rV  rx   r  s    r#   r   r   V  s    DNGGIr%   c                       e Zd Zy)r   Nrv  r   r%   r#   r   r   \  s    ,r%   r   c                       e Zd Zy)r   Nrv  r   r%   r#   r   r   _  s    Dr%   r   c                       e Zd Zy)r   Nrv  r   r%   r#   r   r   b  s    Hr%   r   c                       e Zd Zy)r   Nrv  r   r%   r#   r   r   e      3r%   r   c                       e Zd Zy)r   Nrv  r   r%   r#   r   r   h  r  r%   r   )T)1r   r  rp  r%  r   r'  r   rF   email.messageemail.generatorr   r?   typesr   r  ImportError__all__r   rz   r   r   r;  rx  r   r	   r   r   r+   r
   r   r  r   r   r   r   r   r  rO  rR  r+  rX  rV  r   	Exceptionr   r   r   r   r   r   r%   r#   <module>r     s   J 
          	  A
 **

G
$f2 f2Rsg sl	C CN@" @F1.9 1.h*.9 *.Zn* n*b	v vr"@emm## "@Jj+W j+Zn+w n+b1" 1E+ E+P\+7 \+~1" 1_2 _2D$: $N(T$<-I -E EIE I4 44% 4aB  Es   E4 4E?>E?