<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]F                 @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z y d  d l Z Wn e k
 rf d Z Yn Xd Z d  d l m	 Z
 d  d l m Z d d d d	 d
 d d d g Z d Z Gd d   d e  Z Gd d   d e  Z Gd d	   d	 e  Z Gd d
   d
 e  Z Gd d   d e  Z Gd d   d e  Z d Z d Z d d d d d d d d d d  d! d" h Z d# d$ d% d& d' d( d) g Z d* d( d+ d) i Z d, Z e j d- d. d/ d0 d1 g  Z e j d2 d3 d4 d+ g  Z d5 d   Z	 d6 d7   Z d d8 d9  Z d d: d;  Z  d d< d=  Z! e r.d> d?   Z" Gd@ dA   dA  Z# GdB d   d e#  Z$ e rGdC dD   dD e#  Z% e j& dD  e' dE k rd  d l( Z( e( j) dF dG  Z* e* j+ dH dI dJ dK dL dM e* j+ dN dO dJ dP dL dQ e* j+ dR dS dJ dT dU e, dL dV e e f e* j+ dW dX dJ dY dU e, dL dZ e* j+ d[ d\ d] d^ dJ d dL d_ e* j-   Z. e. j/ Z/ e. j re/ dT k re Z/ e$ d` e. j0 da e/  Z1 n+ e/ dT k re Z/ e% d` e. j0 da e/  Z1 e1 j2   Z3 db e3 k re1 j4   e1 j5 e. j5  \ Z6 Z7 Z8 Z9 Z: e; dc e: dd e7 de e8 df e9  dg dh   Z< e= e, e9  e. j> dT  Z8 e1 j? e8 e9  \ Z6 Z@ x e@ D]z \ ZA ZB e	 eB d$  jC di dT  d  ZD e	 eB d#  ZE e, eB d)  ZF e; dj jG eA e< eD dk  e< eE dl  eF   quWe1 jH   d S)m    NFT)decode_header)_GLOBAL_DEFAULT_TIMEOUTNNTP	NNTPErrorNNTPReplyErrorNNTPTemporaryErrorNNTPPermanentErrorNNTPProtocolErrorNNTPDataErrorr   i   c               @   s   e  Z d  Z d d   Z d S)r   c             G   sC   t  j |  |  y | d |  _ Wn t k
 r> d |  _ Yn Xd  S)Nr   zNo response given)	Exception__init__response
IndexError)selfargs r   ,/opt/alt/python35/lib64/python3.5/nntplib.pyr   b   s
    zNNTPError.__init__N)__name__
__module____qualname__r   r   r   r   r   r   `   s   c               @   s   e  Z d  Z d S)r   N)r   r   r   r   r   r   r   r   i   s   c               @   s   e  Z d  Z d S)r   N)r   r   r   r   r   r   r   r   m   s   c               @   s   e  Z d  Z d S)r   N)r   r   r   r   r   r   r   r   q   s   c               @   s   e  Z d  Z d S)r	   N)r   r   r   r   r   r   r   r	   u   s   c               @   s   e  Z d  Z d S)r
   N)r   r   r   r   r   r   r   r
   y   s   w   i3  Z100Z101211215Z220Z221Z222Z224Z225Z230Z231Z282subjectfromdatez
message-idZ
referencesz:bytesz:linesbytesliness   
	GroupInfogrouplastfirstflagArticleInfoZnumber
message_idc             C   sk   g  } xU t  |   D]G \ } } t | t  rM | j | j | pC d   q | j |  q Wd j |  S)Nascii )_email_decode_header
isinstancer   appenddecodejoin)Z
header_strpartsvencr   r   r   r      s    c             C   s   g  } x |  D] } | d d k rR | d d   j  d  \ } } } d | } n | j  d  \ } } } | j   } t j | |  } | j |  q Wt } t |  t |  k  r t d   | d  t |   | k r t d   | S)Nr   :   z$LIST OVERVIEW.FMT response too shortz*LIST OVERVIEW.FMT redefines default fields)	partitionlower_OVERVIEW_FMT_ALTERNATIVESgetr)   _DEFAULT_OVERVIEW_FMTlenr
   )r   fmtlinename_suffixdefaultsr   r   r   _parse_overview_fmt   s    "r=   c             C   s-  t  t  } g  } x|  D]} i  } | j d  ^ } } t |  } x t |  D] \ }	 }
 |	 t  |  k rt qS | |	 } | j d  } |	 | k r | r | d } |
 r |
 d  t  |   j   | k r t d   |
 r |
 t  |  d   n d  }
 |
 | | |	 <qS W| j | | f  q W| S)N	r/   z: z?OVER/XOVER response doesn't include names of additional headers)	r6   r5   splitint	enumerate
startswithr2   r
   r)   )r   r7   Zdata_process_funcZ
n_defaultsZoverviewr8   ZfieldsZarticle_numbertokensitoken
field_nameZis_metadatahr   r   r   _parse_overview   s&    

("rH   c             C   s   | d  k r, |  d d   } |  d  d	  }  t  | d  d   } t  | d d   } t  | d d    } t  |  d  d
   } t  |  d d   } t  |  d d    } | d k  r | d 7} n | d k  r | d 7} t j | | | | | |  S)N         F   i  d   il  iirN   rO   )r@   datetime)date_strtime_strZhoursZminutesZsecondsyearZmonthZdayr   r   r   _parse_datetime   s    
rT   c             C   st   t  |  t j  s d } n d j |   } |  j } | rX | d } d j | |   } n d j | |   } | | f S)NZ000000z({0.hour:02d}{0.minute:02d}{0.second:02d}rM   z{0:02d}{1.month:02d}{1.day:02d}z{0:04d}{1.month:02d}{1.day:02d})r(   rP   formatrS   )ZdtlegacyrR   yrQ   r   r   r   _unparse_datetime   s    		
rX   c             C   s+   | d  k r t  j   } | j |  d | S)NZserver_hostname)sslZ_create_stdlib_contextZwrap_socket)sockcontexthostnamer   r   r   _encrypt_on  s    r]   c               @   s  e  Z d  Z d Z d Z d e d d  Z d d   Z d d	   Z d
 d   Z	 d d   Z
 d d   Z e Z d d   Z d d   Z d d d  Z d d   Z d d d  Z d d   Z d d d  Z d d d   Z d! d"   Z d# d$   Z d% d&   Z d' d d( d)  Z d' d d* d+  Z d d' d d, d- Z d. d/   Z d0 d1   Z d2 d3   Z d4 d5   Z d' d d6 d7  Z d8 d9   Z  d: d;   Z! d d< d=  Z" d> d?   Z# d@ dA   Z$ d dB dC  Z% d d' d dD dE Z& d d' d dF dG Z' d d' d dH dI Z( dJ dK   Z) d' d dL dM  Z* d' d dN dO  Z+ d' d dP dQ  Z, d' d dR dS  Z- dT dU   Z. dV dW   Z/ dX dY   Z0 dZ d[   Z1 d\ d]   Z2 d^ d_   Z3 d` da   Z4 d d d db dc  Z5 dd de   Z6 e7 rd df dg  Z8 d S)h	_NNTPBasezutf-8surrogateescapeNc             C   s   | |  _  | |  _ d |  _ |  j   |  _ d  |  _ |  j   d |  _ | r d |  j k r |  j   |  j s d  |  _ |  j   d |  _	 d |  _
 d  S)Nr   FREADER)hostfile	debugging_getrespwelcome_capsgetcapabilitiesreadermode_afterauth_setreadermodetls_onauthenticated)r   rb   ra   
readermodetimeoutr   r   r   r   8  s    				
		
		
	z_NNTPBase.__init__c             C   s   |  S)Nr   )r   r   r   r   	__enter__g  s    z_NNTPBase.__enter__c                sc     f d d   } |   r_ z- y   j    Wn t t f k
 rF Yn XWd  |   r^   j   Xd  S)Nc                  s   t    d  S)Nrb   )hasattrr   )r   r   r   <lambda>k  s    z$_NNTPBase.__exit__.<locals>.<lambda>)quitOSErrorEOFError_close)r   r   Zis_connectedr   )r   r   __exit__j  s    			z_NNTPBase.__exit__c             C   s&   |  j  r t d t |  j   |  j S)Nz	*welcome*)rc   printreprre   )r   r   r   r   
getwelcomeu  s    	 z_NNTPBase.getwelcomec             C   s   |  j  d  k r d |  _ d  |  _ y |  j   \ } } Wn! t t f k
 rZ i  |  _  YnT X| |  _  d | k r t t t | d   |  _ d | k r d j	 | d  |  _ |  j  S)Nr0   VERSIONZIMPLEMENTATION )
rf   nntp_versionZnntp_implementationcapabilitiesr   r   maxmapr@   r+   )r   respcapsr   r   r   rg   ~  s    			z_NNTPBase.getcapabilitiesc             C   s   | |  _  d  S)N)rc   )r   levelr   r   r   set_debuglevel  s    z_NNTPBase.set_debuglevelc             C   sM   | t  } |  j d k r, t d t |   |  j j |  |  j j   d  S)Nr0   z*put*)_CRLFrc   rv   rw   rb   writeflush)r   r8   r   r   r   _putline  s
    
 z_NNTPBase._putlinec             C   sE   |  j  r t d t |   | j |  j |  j  } |  j |  d  S)Nz*cmd*)rc   rv   rw   encodeencodingerrorsr   )r   r8   r   r   r   _putcmd  s    	 z_NNTPBase._putcmdTc             C   s   |  j  j t d  } t |  t k r4 t d   |  j d k rV t d t |   | sb t  | r | d d   t	 k r | d  d  } n& | d d   t	 k r | d  d  } | S)	Nr0   zline too longz*get*rJ   rO   rO   r   )
rb   readline_MAXLINEr6   r
   rc   rv   rw   rs   r   )r   Z
strip_crlfr8   r   r   r   _getline  s     z_NNTPBase._getlinec             C   s   |  j    } |  j r( t d t |   | j |  j |  j  } | d  d  } | d k rh t |   | d k r t |   | d k r t	 |   | S)Nz*resp*r0   45Z123)
r   rc   rv   rw   r*   r   r   r   r   r	   )r   r   cr   r   r   rd     s    	 z_NNTPBase._getrespc          
   C   sD  d  } z t  | t t f  r1 t | d  } } |  j   } | d  d  t k r_ t |   g  } | d  k	 r d t d f } x |  j d  } | | k r P| j	 d  r | d d   } | j
 |  q WnR d } xI |  j   } | | k r P| j	 d  r| d d   } | j |  q WWd  | r9| j   X| | f S)Nwb      .s   .
Fs   ..r0   )r(   strr   openrd   	_LONGRESPr   r   r   rB   r   r)   close)r   rb   Z
openedFiler   r   Zterminatorsr8   
terminatorr   r   r   _getlongresp  s8    	z_NNTPBase._getlongrespc             C   s   |  j  |  |  j   S)N)r   rd   )r   r8   r   r   r   	_shortcmd  s    z_NNTPBase._shortcmdc             C   s   |  j  |  |  j |  S)N)r   r   )r   r8   rb   r   r   r   _longcmd  s    z_NNTPBase._longcmdc                s?     j  |    j |  \ } } |   f d d   | D f S)Nc                s(   g  |  ] } | j    j   j   q Sr   )r*   r   r   ).0r8   )r   r   r   
<listcomp>  s   	z,_NNTPBase._longcmdstring.<locals>.<listcomp>)r   r   )r   r8   rb   r   listr   )r   r   _longcmdstring  s    z_NNTPBase._longcmdstringc             C   sw   y |  j  SWn t k
 r Yn Xy |  j d  \ } } Wn" t k
 r] t d  d   } Yn Xt |  } | |  _  | S)NzLIST OVERVIEW.FMT)Z_cachedoverviewfmtAttributeErrorr   r   r5   r=   )r   r   r   r7   r   r   r   _getoverviewfmt  s    	z_NNTPBase._getoverviewfmtc             C   s   d d   | D S)Nc             S   s"   g  |  ] } t  | j      q Sr   )r   r?   )r   r8   r   r   r   r   $  s   	 z(_NNTPBase._grouplist.<locals>.<listcomp>r   )r   r   r   r   r   
_grouplist"  s    z_NNTPBase._grouplistc             C   sR   i  } |  j  d  \ } } x* | D]" } | j   ^ } } | | | <q" W| | f S)NZCAPABILITIES)r   r?   )r   r   r   r   r8   r9   rC   r   r   r   r|   &  s    z_NNTPBase.capabilitiesrb   c            C   s   t  | t j t j f  s6 t d j | j j    t | |  j d k   \ } } d j | |  } |  j	 | |  \ } } | |  j
 |  f S)NzAthe date parameter must be a date or datetime object, not '{:40}'rJ   zNEWGROUPS {0} {1})r(   rP   r   	TypeErrorrU   	__class__r   rX   r{   r   r   )r   r   rb   rQ   rR   cmdr   r   r   r   r   	newgroups4  s    z_NNTPBase.newgroupsc            C   sy   t  | t j t j f  s6 t d j | j j    t | |  j d k   \ } } d j | | |  } |  j	 | |  S)NzAthe date parameter must be a date or datetime object, not '{:40}'rJ   zNEWNEWS {0} {1} {2})
r(   rP   r   r   rU   r   r   rX   r{   r   )r   r   r   rb   rQ   rR   r   r   r   r   newnewsD  s    z_NNTPBase.newnewsc            C   sJ   | d  k	 r d | } n d } |  j  | |  \ } } | |  j |  f S)NzLIST ACTIVE LIST)r   r   )r   group_patternrb   commandr   r   r   r   r   r   T  s
    z_NNTPBase.listc             C   s   t  j d  } |  j d |  \ } } | j d  sP |  j d |  \ } } i  } xU | D]M } | j | j    } | r] | j d d  \ }	 }
 | s |
 S|
 | |	 <q] W| r | | f Sd Sd  S)Nz^(?P<group>[^ 	]+)[ 	]+(.*)$zLIST NEWSGROUPS r   zXGTITLE r0   rJ   r&   )recompiler   rB   searchstripr   )r   r   Z
return_allline_patr   r   groupsraw_linematchr9   Zdescr   r   r   _getdescriptionsc  s    
z_NNTPBase._getdescriptionsc             C   s   |  j  | d  S)NF)r   )r   r   r   r   r   descriptionz  s    z_NNTPBase.descriptionc             C   s   |  j  | d  S)NT)r   )r   r   r   r   r   descriptions  s    z_NNTPBase.descriptionsc             C   s   |  j  d |  } | j d  s. t |   | j   } d } } } t |  } | d k r | d } | d k r | d } | d k r | d } | d k r | d j   } | t |  t |  t |  | f S)NzGROUP r   r   r0   rJ   r   rK   )r   rB   r   r?   r6   r2   r@   )r   r9   r   wordscountr!   r    nr   r   r   r     s    



z_NNTPBase.groupc            C   s   |  j  d |  S)NZHELP)r   )r   rb   r   r   r   help  s    z_NNTPBase.helpc             C   sN   | j  d  s t |   | j   } t | d  } | d } | | | f S)NZ22r0   rJ   )rB   r   r?   r@   )r   r   r   art_numr$   r   r   r   
_statparse  s    
z_NNTPBase._statparsec             C   s   |  j  |  } |  j |  S)N)r   r   )r   r8   r   r   r   r   _statcmd  s    z_NNTPBase._statcmdc             C   s-   | r |  j  d j |   S|  j  d  Sd  S)NzSTAT {0}ZSTAT)r   rU   )r   message_specr   r   r   stat  s    	z_NNTPBase.statc             C   s   |  j  d  S)NZNEXT)r   )r   r   r   r   next  s    z_NNTPBase.nextc             C   s   |  j  d  S)NZLAST)r   )r   r   r   r   r      s    z_NNTPBase.lastc             C   sF   |  j  | |  \ } } |  j |  \ } } } | t | | |  f S)N)r   r   r#   )r   r8   rb   r   r   r   r$   r   r   r   _artcmd  s    z_NNTPBase._artcmdc            C   s4   | d  k	 r d j  |  } n d } |  j | |  S)NzHEAD {0}ZHEAD)rU   r   )r   r   rb   r   r   r   r   head  s    z_NNTPBase.headc            C   s4   | d  k	 r d j  |  } n d } |  j | |  S)NzBODY {0}ZBODY)rU   r   )r   r   rb   r   r   r   r   body  s    z_NNTPBase.bodyc            C   s4   | d  k	 r d j  |  } n d } |  j | |  S)NzARTICLE {0}ZARTICLE)rU   r   )r   r   rb   r   r   r   r   article  s    z_NNTPBase.articlec             C   s   |  j  d  S)NZSLAVE)r   )r   r   r   r   slave  s    z_NNTPBase.slavec               sb   t  j d    |  j d j | |  |  \ } }   f d d    |  f d d   | D f S)Nz^([0-9]+) ?(.*)
?zXHDR {0} {1}c                s)     j  |   } | r% | j d d  S|  S)Nr0   rJ   )r   r   )r8   m)patr   r   remove_number  s    z%_NNTPBase.xhdr.<locals>.remove_numberc                s   g  |  ] }   |   q Sr   r   )r   r8   )r   r   r   r     s   	 z"_NNTPBase.xhdr.<locals>.<listcomp>)r   r   r   rU   )r   Zhdrr   rb   r   r   r   )r   r   r   xhdr
  s    	$z_NNTPBase.xhdrc            C   sC   |  j  d j | |  |  \ } } |  j   } | t | |  f S)NzXOVER {0}-{1})r   rU   r   rH   )r   startendrb   r   r   r7   r   r   r   xover  s    	z_NNTPBase.xoverc      	      C   s   d |  j  k r d n d } t | t t f  r[ | \ } } | d j | | pQ d  7} n | d  k	 ru | d | } |  j | |  \ } } |  j   } | t | |  f S)NZOVERZXOVERz {0}-{1}r&   rz   )rf   r(   tupler   rU   r   r   rH   )	r   r   rb   r   r   r   r   r   r7   r   r   r   over(  s    z_NNTPBase.overc      	      C   s   t  j d t d  t j d  } |  j d | |  \ } } g  } xB | D]: } | j | j    } | rK | j | j	 d d   qK W| | f S)NzFThe XGTITLE extension is not actively used, use descriptions() insteadrJ   z^([^ 	]+)[ 	]+(.*)$zXGTITLE r0   )
warningswarnDeprecationWarningr   r   r   r   r   r)   r   )	r   r   rb   r   r   Z	raw_linesr   r   r   r   r   r   xgtitleC  s    	
z_NNTPBase.xgtitlec             C   s   t  j d t d  |  j d j |   } | j d  sF t |   y | j   \ } } Wn t k
 r| t |   Yn X| | f Sd  S)Nz(The XPATH extension is not actively usedrJ   z	XPATH {0}Z223)	r   r   r   r   rU   rB   r   r?   
ValueError)r   idr   Zresp_numpathr   r   r   xpathU  s    	
z_NNTPBase.xpathc             C   s   |  j  d  } | j d  s* t |   | j   } t |  d k rT t |   | d } t |  d k r| t |   | t | d   f S)NZDATEZ111rJ   r0      )r   rB   r   r?   r6   r
   rT   )r   r   elemr   r   r   r   r   i  s    
z_NNTPBase.datec             C   s   |  j  |  } | j d  s* t |   t | t t f  rK | j   } xY | D]Q } | j t  sz | j	 d  t } | j d  r d | } |  j
 j |  qR W|  j
 j d  |  j
 j   |  j   S)N3s   
r   s   .
)r   rB   r   r(   r   	bytearray
splitlinesendswithr   rstriprb   r   r   rd   )r   r   fr   r8   r   r   r   _postz  s    
z_NNTPBase._postc             C   s   |  j  d |  S)NZPOST)r   )r   datar   r   r   post  s    z_NNTPBase.postc             C   s   |  j  d j |  |  S)Nz	IHAVE {0})r   rU   )r   r$   r   r   r   r   ihave  s    z_NNTPBase.ihavec             C   s   |  j  j   |  `  d  S)N)rb   r   )r   r   r   r   rt     s    z_NNTPBase._closec          
   C   s%   z |  j  d  } Wd  |  j   X| S)NZQUIT)r   rt   )r   r   r   r   r   rq     s    z_NNTPBase.quitc             C   sT  |  j  r t d   | r/ | r/ t d   yU | r | r d d  l } | j   } | j |  j  } | r | d } | d } Wn t k
 r Yn X| s d  S|  j d |  } | j d  r| s t |   n. |  j d |  } | j d  st	 |   d  |  _
 |  j   |  j rPd	 |  j
 k rP|  j   d  |  _
 |  j   d  S)
NzAlready logged in.z7At least one of `user` and `usenetrc` must be specifiedr   rJ   zauthinfo user Z381zauthinfo pass Z281r`   )rk   r   netrcZauthenticatorsra   rr   r   rB   r   r   rf   rg   rh   ri   )r   userpasswordusenetrcr   ZcredentialsZauthr   r   r   r   login  s<    		
	

	z_NNTPBase.loginc             C   st   y |  j  d  |  _ WnW t k
 r* YnF t k
 ro } z& | j j d  rZ d |  _ n   WYd  d  } ~ Xn Xd  S)Nzmode readerZ480T)r   re   r   r   r   rB   rh   )r   er   r   r   ri     s    z_NNTPBase._setreadermodec             C   s   |  j  r t d   |  j r* t d   |  j d  } | j d  r |  j j   t |  j | |  j	  |  _ |  j j
 d  |  _ d |  _  d  |  _ |  j   n t d   d  S)NzTLS is already enabled.z+TLS cannot be started after authentication.STARTTLSZ382rwbTzTLS failed to start.)rj   r   rk   r   rB   rb   r   r]   rZ   ra   makefilerf   rg   r   )r   r[   r   r   r   r   starttls  s    				z_NNTPBase.starttls)9r   r   r   r   r   r   r   rn   ru   rx   rg   r   debugr   r   r   rd   r   r   r   r   r   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   rt   rq   r   ri   	_have_sslr   r   r   r   r   r^   (  sj   .	.


		)r^   c               @   s:   e  Z d  Z e d d d d e d d  Z d d   Z d S)r   NFc       	      C   s   | |  _  | |  _ t j | | f |  |  _ d  } yN |  j j d  } t j |  | | | |  | sm | r |  j | | |  Wn( | r | j	   |  j j	     Yn Xd  S)Nr   )
ra   portsocketcreate_connectionrZ   r   r^   r   r   r   )	r   ra   r   r   r   rl   r   rm   rb   r   r   r   r     s    		

zNNTP.__init__c          
   C   s&   z t  j |   Wd  |  j j   Xd  S)N)r^   rt   rZ   r   )r   r   r   r   rt   !  s    zNNTP._close)r   r   r   	NNTP_PORTr   r   rt   r   r   r   r   r     s   	"c            	   @   s=   e  Z d  Z e d d d d d e d d  Z d d   Z d S)NNTP_SSLNFc	       
      C   s   t  j | | f |  |  _ d  }	 yl t |  j | |  |  _ |  j j d  }	 t j |  |	 | d | d | | sy | r |  j | | |  Wn( |	 r |	 j   |  j j     Yn Xd  S)Nr   rl   rm   )	r   r   rZ   r]   r   r^   r   r   r   )
r   ra   r   r   r   Zssl_contextrl   r   rm   rb   r   r   r   r   +  s    
zNNTP_SSL.__init__c          
   C   s&   z t  j |   Wd  |  j j   Xd  S)N)r^   rt   rZ   r   )r   r   r   r   rt   A  s    zNNTP_SSL._close)r   r   r   NNTP_SSL_PORTr   r   rt   r   r   r   r   r   )  s
   	r   __main__r   zJ        nntplib built-in demo - display the latest articles in a newsgroupz-gz--groupdefaultzgmane.comp.python.generalr   z3group to fetch messages from (default: %(default)s)z-sz--serverznews.gmane.orgz+NNTP server hostname (default: %(default)s)z-pz--portr0   typez#NNTP port number (default: %s / %s)z-nz--nb-articles
   z2number of articles to fetch (default: %(default)s)z-Sz--sslaction
store_truezuse NNTP over SSLra   r   r   ZGroupZhaszarticles, rangeZtoc             C   s.   t  |   | k r* |  d  | d  d }  |  S)NrK   z...)r6   )sZlimr   r   r   cutl  s    r   <z{:7} {:20} {:42} ({})   *   )Ir   r   collectionsrP   r   rY   ImportErrorr   Zemail.headerr   r'   r   __all__r   r   r   r   r   r   r	   r
   r   r   r   r5   r3   r   
namedtupler   r#   r=   rH   rT   rX   r]   r^   r   r   r)   r   argparseArgumentParserparseradd_argumentr@   
parse_argsr   r   Zserverr   rg   r   r   r   r   r   r!   r    r9   rv   r   r   Znb_articlesr   Z	overviewsZartnumr   r?   Zauthorr   r   rU   rq   r   r   r   r   <module>B   s   							  -			

! 	)