-í
ç¶<c       s  d  Z  d Z d Z d Z d k Z d d d d g Z e i d	 e i ƒ Z e i d
 e i ƒ Z	 e i d e i e i
 Bƒ Z e i d e i e i
 Bƒ 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 d f  d „  ƒ  YZ d „  Z d „  Z d d „ Z d 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 d# „  Z  d k! Z! e" d$ j p' e# e! i$ ƒ d j o e! i$ d d j od k% Z% d% Z& d Z' e% i% e! i$ d& d' ƒ \ Z( Z) e# e) ƒ d d& d( f j o e& GHe! i* d& ƒ n d) d* f e( j d+ d* f e( j j p# d, d* f e( j o d+ d* f e( j o e& GHe! i* d& ƒ n x¨ e( D]  \ Z+ Z, e+ d) j o
 e  Z- n~ e+ d+ j o
 e Z- ng e+ d- j oB y e. e, ƒ Z Wn+ e/ e0 f j
 o e& GHe! i* d& ƒ n Xn e+ d, j o
 d& Z' n qËWe# e) ƒ d j o e! i1 e! i2 f Z3 n? e# e) ƒ d& j o e) d e! i2 f Z3 n e) d e) d& f Z3 e' o e3 e' f Z3 n e4 e- e3 ƒ 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, decode_base64 = 0)
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   > Ns   mimifys   unmimifys   mime_encode_headers   mime_decode_headers.   ^content-transfer-encoding:\s*quoted-printables$   ^content-transfer-encoding:\s*base64s0   ^content-type:.*multipart/.*boundary="?([^;"
]*)s:   ^(content-type:.*charset=")(us-ascii|iso-8859-[0-9]+)(".*)s   ^-*
s   =([0-9a-f][0-9a-f])s   =\?iso-8859-1\?q\?([^? 	
]+)\?=s   ^subject:\s+re: s   Filec      s    t  Z d  Z d „  Z 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   | |  _  | |  _ t |  _ d  S(   N(   s   files   selfs   boundarys   Nones   peek(   s   selfs   files   boundary(    (    s   /usr/lib/python2.2/mimify.pys   __init__/ s    		c    s—   |  i t j	 o d Sn |  i i ƒ  } | o | Sn |  i oN | |  i d j o | |  _ d Sn | |  i d j o | |  _ d Sn n | Sd  S(   Ns    s   
s   --
(   s   selfs   peeks   Nones   files   readlines   lines   boundary(   s   selfs   line(    (    s   /usr/lib/python2.2/mimify.pys   readline4 s    
		(   s   __name__s
   __module__s   __doc__s   __init__s   readline(    (    (    s   /usr/lib/python2.2/mimify.pys   File+ s    	s
   HeaderFilec      s   t  Z d „  Z d „  Z RS(   Nc    s   | |  _  t |  _ d  S(   N(   s   files   selfs   Nones   peek(   s   selfs   file(    (    s   /usr/lib/python2.2/mimify.pys   __init__D s    	c    sÞ   |  i t j	 o |  i } t |  _ n |  i i ƒ  } | o | Sn t i | ƒ o | Sn xz d or |  i i ƒ  |  _ t |  i ƒ d j p% |  i d d j o |  i d d j o | Sn | |  i } t |  _ q` Wd  S(   Ni   i    s    s   	(	   s   selfs   peeks   Nones   lines   files   readlines   hes   matchs   len(   s   selfs   line(    (    s   /usr/lib/python2.2/mimify.pys   readlineH s    	 >(   s   __name__s
   __module__s   __init__s   readline(    (    (    s   /usr/lib/python2.2/mimify.pys
   HeaderFileC s   	c    s”   d } d } xu d om t i |  | ƒ } | t j o Pn | |  | | i d ƒ !t t	 | i
 d ƒ d ƒ ƒ } | i d ƒ } q W| |  | Sd S(   s6   Decode a single line of quoted-printable text to 8bit.s    i    i   i   N(   s   newlines   poss	   mime_codes   searchs   lines   ress   Nones   starts   chrs   ints   groups   end(   s   lines   ress   newlines   pos(    (    s   /usr/lib/python2.2/mimify.pys   mime_decodeZ s      6c    s©   d } d } xŠ d o‚ t i |  | ƒ } | t j o Pn | i d ƒ } d i	 | i
 d ƒ ƒ } | |  | | i d ƒ !t | ƒ } | i d ƒ } q W| |  | Sd S(   s   Decode a header line to 8bit.s    i    i   s    s   _N(   s   newlines   poss	   mime_heads   searchs   lines   ress   Nones   groups   matchs   joins   splits   starts   mime_decodes   end(   s   lines   ress   newlines   poss   match(    (    s   /usr/lib/python2.2/mimify.pys   mime_decode_headerg s      $i    c    s  t  }	 d } d } d } |  i o |  i d  t j o
 t } n d } t	 |  ƒ } x(d o | i ƒ  } | o d Sn | o | t | ƒ  | j o | t | ƒ } | }
 n d }
 t | ƒ } t i | ƒ o d } qU n | o t i | ƒ o d } qU n | i |
 | ƒ | o t i | ƒ o
 d } n t i | ƒ } | o d | i d ƒ }	 n t i | ƒ o Pn qU 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 oM | i |
 | ƒ t |  |	 ƒ } t  | | | ƒ | i! } | o Pn qn PqW| o | ot xa | d
 d j oO | d
  } |  i ƒ  } | t t ƒ  t j o | t t ƒ } n | | } qÇWt# | ƒ } n | o | o |
 o d k$ } | i% | ƒ } 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   
iþÿÿÿs   =
(&   s   Nones	   multiparts   quoted_printables	   is_base64s   is_repls   ifiles   boundarys   QUOTEs   prefixs
   HeaderFiles   hfiles   readlines   lines   lens   prefs   mime_decode_headers   qps   matchs   decode_base64s	   base64_res   ofiles   writes   repls   mps   mp_ress   groups   hes   res   subs	   mime_heads   Files   nifiles   unmimify_parts   peeks   newlines   mime_decodes   base64s   decodestring(   s   ifiles   ofiles   decode_base64s   nifiles   is_repls	   is_base64s   newlines   base64s   prefixs	   multiparts   prefs   lines   mp_ress   quoted_printables   hfile(    (    s   /usr/lib/python2.2/mimify.pys   unmimify_partv s–     
 



 
 	 
	c 	   sü   t  |  ƒ t  d ƒ j o~ t |  ƒ } t  | ƒ t  d ƒ j o
 |  | j oH d 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    Ns   ,s   w(   s   types   infiles   opens   ifiles   outfiles   oss   paths   splits   ds   fs   renames   joins   ofiles   Files   Nones   nifiles   unmimify_parts   decode_base64s   flush(	   s   infiles   outfiles   decode_base64s   ifiles   nifiles   ds   fs   ofiles   os(    (    s   /usr/lib/python2.2/mimify.pys   unmimifyË s     &	+s   [=-ÿ]s   [=?-ÿ]c    s  | o
 t } n t } d } d } t |  ƒ d j o |  d  d j o  d t d ƒ i	 ƒ  } d } n xv d on | i
 |  | ƒ } | t j o Pn | |  | | i d ƒ !d t | i d ƒ ƒ i	 ƒ  } | i d ƒ } qj W| |  | }  d } x| t |  ƒ d j oh d	 } x5 |  | d
 j p |  | d d
 j o | d } q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    i   s   From s   =%02xs   Fi   iK   iI   s   =s   =
N(   s   headers   mime_header_chars   regs	   mime_chars   newlines   poss   lens   lines   ords   uppers   searchs   ress   Nones   starts   groups   ends   i(   s   lines   headers   is   ress   newlines   poss   reg(    (    s   /usr/lib/python2.2/mimify.pys   mime_encodeà s8     
$
 7  &
s<   ([ 	(]|^)([-a-zA-Z0-9_+]*[-ÿ][-a-zA-Z0-9_+-ÿ]*)(?=[ 	)]|
)c    s¢   d } d } xƒ d o{ t i |  | ƒ } | t j o Pn d | |  | | i d ƒ !| i d ƒ t	 t
 | i d ƒ d ƒ f } | i d ƒ } q W| |  | Sd S(   s.   Code a single header line as quoted-printable.s    i    i   s   %s%s%s=?%s?Q?%s?=i   N(   s   newlines   poss   mime_headers   searchs   lines   ress   Nones   starts   groups   CHARSETs   mime_encodes   end(   s   lines   ress   newlines   pos(    (    s   /usr/lib/python2.2/mimify.pys   mime_encode_headers      Ds   ^mime-version:s   ^content-transfer-encoding:s   [-ÿ]c    s³  d } }
 } t } d } } }	 g  } d } g  } d } t |  ƒ } xd oü | i ƒ  } | o Pn | o t i | ƒ o
 d } n t i | ƒ o
 d } n t i | ƒ o> d } t i | ƒ o
 d }
 n t i | ƒ o
 d } n n t i | ƒ } | o d | i d ƒ } n t i | ƒ o | } Pn | i | ƒ qI Wx^d oV|  i ƒ  } | o Pn | o< | | d j o | } Pn | | d j o | } Pn n | o | i | ƒ qPn |
 ot xa | d d j oO | d  } |  i ƒ  } | t t  ƒ  t  j o | t t  ƒ } n | | } qØWt! | ƒ } n | i | ƒ |	 o" t i | ƒ o d }	 } n n | o! t | ƒ t" j o
 d } n n qPWx| D]ÿ } | o t# | ƒ } n t$ i | ƒ } | oj |	 oI | i d	 ƒ i& ƒ  d
 j o) d | i d ƒ t' | i d ƒ f } n n d | i d d ƒ } n | o t i | ƒ o> d } | o | d } n  | o | d } n | d } n | i) | ƒ qµW| p | o | oG | i) d ƒ | i) d ƒ |	 o | i) d t' ƒ n | i) d ƒ n | o | o | i) d ƒ n | i) | ƒ x5 | D]- } | o t* | d ƒ } n | i) | ƒ qIW| i) | ƒ | } x| o| | d j oV xO d oG |  i ƒ  } | o d Sn | o t* | d ƒ } n | i) | ƒ q«Wn | | d j oI t+ |  | ƒ } t- | | d ƒ | i. } | o Pn | i) | ƒ qn xO d oG |  i ƒ  } | o d Sn | o t* | d ƒ } n | i) | ƒ q[WqWd S(   s@   Convert an 8bit part of a MIME mail message to quoted-printable.i    s    i   s   --s   --
s   
iþÿÿÿs   =
i   s   us-asciis   %s%s%si   s   %sus-ascii%ss   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	   base64_res   mps   mp_ress   groups   hes   appends   newlines   lens   QUOTEs   mime_decodes   MAXLENs   mime_encode_headers   chrsets
   chrset_ress   lowers   CHARSETs   ofiles   writes   mime_encodes   Files   nifiles   mimify_parts   peek(   s   ifiles   ofiles   is_mimes
   chrset_ress	   is_base64s   newlines   has_ctes   headers   nifiles   has_iso_charss   is_qps   messages   lines   must_quote_headers	   multiparts
   header_ends   message_ends   mp_ress   must_quote_bodys   hfile(    (    s   /usr/lib/python2.2/mimify.pys   mimify_partsö      


 	 
 -   	 c    sü   t  |  ƒ t  d ƒ j o~ t |  ƒ } t  | ƒ t  d ƒ j o
 |  | j oH d 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    Ns   ,s   wi    (   s   types   infiles   opens   ifiles   outfiles   oss   paths   splits   ds   fs   renames   joins   ofiles   Files   Nones   nifiles   mimify_parts   flush(   s   infiles   outfiles   ifiles   nifiles   ds   fs   ofiles   os(    (    s   /usr/lib/python2.2/mimify.pys   mimify›s     &	+s   __main__s/   Usage: mimify [-l len] -[ed] [infile [outfile]]i   s   l:edbi   s   -es    s   -ds   -bs   -l(5   s   __doc__s   MAXLENs   CHARSETs   QUOTEs   res   __all__s   compiles   Is   qps	   base64_res   Ss   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   decode_base64s   optss   argss   exits   os   as   encodes   ints
   ValueErrors   OverflowErrors   stdins   stdouts   encode_argss   apply('   s	   mime_chars   CHARSETs	   mime_codes   unmimify_parts	   mime_heads   mime_encodes   mime_decodes   mime_decode_headers   __all__s   res   QUOTEs
   HeaderFiles   MAXLENs   mime_headers   mime_encode_headers   encodes   getopts   unmimifys   mimify_parts   encode_argss   chrsets	   base64_res   argss   mime_header_chars   syss   usages   repls   iso_chars   hes   as   qps   os   ctes   mvs   mps   Files   mimifys   decode_base64s   opts(    (    s   /usr/lib/python2.2/mimify.pys   ? s~   			U	 		‡		7	K 

