
Ua¸2c      s     d  Z   d   d Z  d Z  d Z  k Z k Z k Z   e i d e i ƒ Z	 " e i d e i ƒ Z
 $ e i d e i ƒ Z & e i d e i ƒ Z ( e i d ƒ Z ) e i d	 e i ƒ Z * e i d
 e i ƒ Z , e i d e i ƒ Z . d f  d „  ƒ  YZ G d f  d „  ƒ  YZ ^ d „  Z j d „  Z v d „  Z À d „  Z Ò e i d ƒ Z Ó e i d ƒ Z Õ d „  Z ô e i d ƒ Z ö d „  Z e i d e i ƒ Z e i d e i ƒ Z e i d ƒ Z d „  Z zd „  Z  Œk! Z! e" d j p' e# e! i$ ƒ d j o e! i$ d d  j oÛŽk% Z% d! Z& ‘e% i% e! i$ d" d# ƒ \ Z' Z( ’e# e( ƒ d d" d$ f j o “e& GH”e! i) d" ƒ n •d% d& f e' j d' d& f e' j j o –e& GH—e! i) d" ƒ n ˜x¥ e' d ˜r˜ \ Z* Z+ ™e* d% j o še  Z, np ›e* d' j o œe Z, nS e* d( j oB žy Ÿe i- e+ ƒ Z Wn"  ¡e& GH¢e! i) d" ƒ n Xn q W£e# e( ƒ d j o ¤e, e! i. e! i/ ƒ nJ ¥e# e( ƒ d" j o ¦e, e( d e! i/ ƒ n ¨e, e( d e( d" ƒ n d) S(*   s  Mimification and unmimification of mail messages.

decode quoted-printable parts of a mail message or encode using
quoted-printable.

Usage:
	mimify(input, output)
	unmimify(input, output)
to encode and decode respectively.  Input and output may be the name
of a file or an open file object.  Only a readline() method is used
on the input file, only a write() method is used on the output file.
When using file names, the input and output file names may be the
same.

Interactive usage:
	mimify.py -e [infile [outfile]]
	mimify.py -d [infile [outfile]]
to encode and decode respectively.  Infile defaults to standard
input and outfile to standard output.
iÈ   s
   ISO-8859-1s   > s0   ^content-transfer-encoding:[ 	]*quoted-printables&   ^content-transfer-encoding:[ 	]*base64s:   ^content-type:[ -ÿ]*multipart/[ -ÿ]*boundary="?\([^;"
]*\)sE   ^\(content-type:.*charset="\)\(us-ascii\|iso-8859-[0-9]+\)\("[ -ÿ]*\)s   ^-*$s   =\([0-9a-f][0-9a-f]\)s   =\?iso-8859-1\?q\?\([^?]+\)\?=s   ^subject:[ 	]+re: s   Filec     s*   . d  Z  1 d  3 d „  Z 8 d „  Z RS(   s~   A simple fake file object that knows about limited
	   read-ahead and boundaries.
	   The only supported method is readline().c   s+   3 4 | |  _  5 | |  _ 6 t |  _ d  S(   N(   s   files   selfs   boundarys   Nones   peek(   s   selfs   files   boundarys   /usr/lib/python1.4/mimify.pys   __init__c   sÁ   8 9 |  i t j	 o : d Sn ; |  i i ƒ  } < | o = | Sn > |  i o` ? | |  i d j o @ | |  _ A d Sn B | |  i d j o C | |  _ D d Sn n E | Sd  S(   Ns    s   
s   --
(   s   selfs   peeks   Nones   files   readlines   lines   boundary(   s   selfs   lines   /usr/lib/python1.4/mimify.pys   readline(   s   __doc__s   __init__s   readline(    s   /usr/lib/python1.4/mimify.pys   Files
   HeaderFilec     s   G H d „  Z  L d „  Z RS(   Nc   s   H I | |  _  J t |  _ d  S(   N(   s   files   selfs   Nones   peek(   s   selfs   files   /usr/lib/python1.4/mimify.pys   __init__c   s  L M |  i t j	 o N |  i } O t |  _ n Q |  i i ƒ  } R | o S | Sn T t i | ƒ d j o U | Sn V xŒ V d o W |  i i ƒ  |  _ X t |  i ƒ d j p% |  i d d j o |  i d d j o Z | Sn [ | |  i } \ t |  _ q„ Wd  S(   Ni    i   s    s   	(	   s   selfs   peeks   Nones   lines   files   readlines   hes   matchs   len(   s   selfs   lines   /usr/lib/python1.4/mimify.pys   readline(   s   __init__s   readline(    s   /usr/lib/python1.4/mimify.pys
   HeaderFilec   s¢   ^ _ d  ` d } a xz a d oo b t i |  ƒ } c | d j  o d Pn e | |  |  t t i t i d ƒ d ƒ ƒ } g |  | d }  q Wh | |  Sd S(   s6   Decode a single line of quoted-printable text to 8bit.s    i   i    i   i   N(	   s   newlines	   mime_codes   searchs   lines   is   chrs   strings   atois   group(   s   lines   newlines   is   /usr/lib/python1.4/mimify.pys   mime_decodec   s°   j k d  l d } m xˆ m d o} n t i |  ƒ } o | d j  o p Pn q t i d d ƒ } r | |  |  t | d ƒ } s |  | t | d ƒ }  q Wt | |  Sd S(   s   Decode a header line to 8bit.s    i   i    N(	   s   newlines	   mime_heads   searchs   lines   is   groups   matchs   mime_decodes   len(   s   lines   newlines   is   matchs   /usr/lib/python1.4/mimify.pys   mime_decode_headerc   s  v w d  x t  } y d } z d } { |  i o |  i d  t j o | t } n
 ~ d }  t |  ƒ } ‚ xO‚ d oDƒ | i
 ƒ  } „ | o … d Sn † | o | t | ƒ  | j o  ‡ | t | ƒ } ˆ | } n
 Š d } ‹ t | ƒ } Œ t i | ƒ d j o  d } Ž qq n  | i | | ƒ  | o t i | ƒ d j o ’ d } n “ t i | ƒ d j o ” d t i d ƒ } n • t i | ƒ d j o – Pn qq W— | o | p | o ˜ d } n › x› d oœ |  i
 ƒ  }  | o ž d Sn Ÿ t i t d | ƒ }   | o | t | ƒ  | j o  ¡ | t | ƒ } ¢ | } n
 ¤ d } § xµ § | oª ¨ | | d j o. © | i | | ƒ ª t  } « t  } ¬ Pn ­ | | d	 j oL ® | i | | ƒ ¯ t |  | ƒ }	 ° t |	 | ƒ ± |	 i } ² q‚n ´ Pq‚Wµ | o | oŽ ¶ xu ¶ | d d
 j o_ · | d  } ¸ |  i
 ƒ  }
 ¹ |
 t t ƒ  t j o º |
 t t ƒ }
 n » | |
 } qNW¼ t | ƒ } n ½ | o ¾ | i | | ƒ n qëWd S(   s?   Convert a quoted-printable part of a MIME mail message to 8bit.i    i   s    i   Ns   --s   \1s   --
s   
s   =
(    s   Nones	   multiparts   quoted_printables   is_repls   ifiles   boundarys   QUOTEs   prefixs
   HeaderFiles   hfiles   readlines   lines   lens   prefs   mime_decode_headers   qps   matchs   ofiles   writes   repls   mps   groups   hes   regsubs   gsubs	   mime_heads   Files   nifiles   unmimify_parts   peeks   newlines   mime_decode(   s   ifiles   ofiles	   multiparts   quoted_printables   is_repls   prefixs   hfiles   lines   prefs   nifiles   newlines   /usr/lib/python1.4/mimify.pys   unmimify_partc   s'  À Á d  Â t  |  ƒ t  d ƒ j oŠ Ã t |  ƒ } Ä t  | ƒ t  d ƒ j o
 |  | j oN Å k } Æ | i i |  ƒ \ } } Ç | i
 |  | i i | d | ƒ ƒ n n
 É |  } Ê t  | ƒ t  d ƒ j o Ë t | d ƒ } n
 Í | } Î t | t ƒ } Ï t | | ƒ Ð | i ƒ  d S(   s>   Convert quoted-printable parts of a MIME mail message to 8bit.s    s   ,s   wN(   s   types   infiles   opens   ifiles   outfiles   oss   paths   splits   ds   fs   renames   joins   ofiles   Files   Nones   nifiles   unmimify_parts   flush(   s   infiles   outfiles   ifiles   oss   ds   fs   ofiles   nifiles   /usr/lib/python1.4/mimify.pys   unmimifys   [= -ÿ]s   [=? -ÿ]c   sÂ  Õ × d  Ø | o Ù t } n
 Û t } Ü d } Ý t |  ƒ d j o |  d  d j o- ß t i d t	 d ƒ ƒ } à |  d }  n á xv á d ok â | i
 |  ƒ } ã | d j  o ä Pn å | |  |  t i d t	 |  | ƒ ƒ } ç |  | d }  q Wè | |  }  ê d } ë x” ë t |  ƒ d j o} ì d	 } í x; í |  | d
 j p |  | d d
 j o î | d } qDWï | d } ð | |  |  d } ñ |  | }  qWò | |  Sd S(   sZ   Code a single line as quoted-printable.
	   If header is set, quote some extra characters.s    i   s   From s   =%02xs   Fi   i    iK   iI   s   =s   =
N(   s   headers   mime_header_chars   regs	   mime_chars   newlines   lens   lines   strings   uppers   ords   searchs   i(   s   lines   headers   regs   newlines   is   /usr/lib/python1.4/mimify.pys   mime_encodesB   \([ 	(]\|^\)\([-a-zA-Z0-9_+]*[ -ÿ][-a-zA-Z0-9_+ -ÿ]*\)\([ 	)]\|$\)c   sÒ   ö ÷ d  ø d } ù xª ù d oŸ ú t i |  ƒ } û | d j  o ü Pn ý | |  |  t i d ƒ d t d t t i d ƒ d ƒ d t i d ƒ } |  | t t i d ƒ ƒ }  q W| |  Sd	 S(
   s.   Code a single header line as quoted-printable.s    i   i    s   =?s   ?Q?i   s   ?=i   N(	   s   newlines   mime_headers   searchs   lines   is   groups   CHARSETs   mime_encodes   len(   s   lines   newlines   is   /usr/lib/python1.4/mimify.pys   mime_encode_headers   ^mime-version:s   ^content-transfer-encoding:s   [ -ÿ]c   sƒ  	d  
d } } } t } d } } }	 g  }
 d } g  } d } t |  ƒ } xdd oY| i ƒ  } | o Pn | o t i | ƒ d j o d } n t i | ƒ d j o d } n t i | ƒ d j oY d } t i | ƒ d j o d } n'  t i | ƒ d j o !d } n n "t i | ƒ d j o #d t i d ƒ } n $t i | ƒ d j o %| } &Pn '|
 i | ƒ qn W*xÀ*d oµ+|  i ƒ  } ,| o -Pn .| oN /| | d j o 0| } 1Pn 2| | d j o 3| } 4Pn n 5| o 6| i | ƒ 7qØn 8| oŽ 9xu 9| d d j o_ :| d  } ;|  i ƒ  } <| t t ƒ  t j o =| t t ƒ } n >| | } qW?t  | ƒ } n @| i | ƒ A|	 o. Bt i | ƒ d j o Cd }	 } n n D| o' Et | ƒ t! j o Fd } n n qØWIxG|
 d Ir:} J| o Kt" | ƒ } n Lt# i | ƒ d j o~ M|	 oM Ot$ i% t# i d ƒ ƒ d	 j o' Pt# i d ƒ t& t# i d
 ƒ } n n$ Tt# i d ƒ d	 t# i d
 ƒ } n U| o t i | ƒ d j oP Vd } W| o X| d } n) Y| o Z| d } n \| d } n ]| i( | ƒ q¤W^| p | o | oV _| i( d ƒ `| i( d ƒ a|	 o b| i( d t& ƒ n d| i( d ƒ n e| o | o f| i( d ƒ n g| i( | ƒ ixC | d ir6 } j| o kt) | d ƒ } n l| i( | ƒ q–Wm| i( | ƒ o| } px p| o‚ q| | d j o rd Sn s| | d j oK tt* |  | ƒ } ut, | | d ƒ v| i- } w| i( | ƒ xqòn qòWd S(   s@   Convert an 8bit part of a MIME mail message to quoted-printable.i    s    i   s   --s   --
s   
i   s   =
s   us-asciii   s   Content-Transfer-Encoding: s   base64
s   quoted-printable
s   7bit
s   Mime-Version: 1.0
s   Content-Type: text/plain; s   charset="%s"
s   charset="us-ascii"
s,   Content-Transfer-Encoding: quoted-printable
N(.   s   has_ctes   is_qps	   is_base64s   Nones	   multiparts   must_quote_bodys   must_quote_headers   has_iso_charss   headers
   header_ends   messages   message_ends
   HeaderFiles   ifiles   hfiles   readlines   lines   iso_chars   searchs   mvs   matchs   is_mimes   ctes   qps   base64s   mps   groups   hes   appends   newlines   lens   QUOTEs   mime_decodes   MAXLENs   mime_encode_headers   chrsets   strings   lowers   CHARSETs   ofiles   writes   mime_encodes   Files   nifiles   mimify_parts   peek(   s   ifiles   ofiles   is_mimes   has_ctes   is_qps	   is_base64s	   multiparts   must_quote_bodys   must_quote_headers   has_iso_charss   headers
   header_ends   messages   message_ends   hfiles   lines   newlines   nifiles   /usr/lib/python1.4/mimify.pys   mimify_partc   s*  z{d  |t  |  ƒ t  d ƒ j oŠ }t |  ƒ } ~t  | ƒ t  d ƒ j o
 |  | j oN k } €| i i |  ƒ \ } } | i
 |  | i i | d | ƒ ƒ n n
 ƒ|  } „t  | ƒ t  d ƒ j o …t | d ƒ } n
 ‡| } ˆt | t ƒ } ‰t | | d ƒ Š| i ƒ  d S(   s>   Convert 8bit parts of a MIME mail message to quoted-printable.s    s   ,s   wi    N(   s   types   infiles   opens   ifiles   outfiles   oss   paths   splits   ds   fs   renames   joins   ofiles   Files   Nones   nifiles   mimify_parts   flush(   s   infiles   outfiles   ifiles   oss   ds   fs   ofiles   nifiles   /usr/lib/python1.4/mimify.pys   mimifys   __main__i    s   mimifys/   Usage: mimify [-l len] -[ed] [infile [outfile]]i   s   l:edi   s   -es    s   -ds   -lN(0   s   __doc__s   MAXLENs   CHARSETs   QUOTEs   regexs   regsubs   strings   compiles   casefolds   qps   base64s   mps   chrsets   hes	   mime_codes	   mime_heads   repls   Files
   HeaderFiles   mime_decodes   mime_decode_headers   unmimify_parts   unmimifys	   mime_chars   mime_header_chars   mime_encodes   mime_headers   mime_encode_headers   mvs   ctes   iso_chars   mimify_parts   mimifys   syss   __name__s   lens   argvs   getopts   usages   optss   argss   exits   os   as   encodes   atois   stdins   stdout(    s   /usr/lib/python1.4/mimify.pys   ?