ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
 fT                 @   s  d 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dddd	d
ddddddddddgZ
ejjejddZejdejejB Zdd Zdd ZdPZd)d* eed+D Zd,d-d.d/ZdRd0d1Zd2d3 Zd4d5 Zd6d7 ZG d8d dZG d9d deZdSd;dZi ZdTd<dZ dUd=d	Z!i a"i a#d>a$dVd?d
Z%dWd@dZ&dXdAdZ'dBd Z(dCd Z)dDd Z*dEd Z+dFd Z,dGd Z-dHd Z.dId Z/e Z0dS )Ya  Internationalization and localization support.

This module provides internationalization (I18N) and localization (L10N)
support for your Python programs by providing an interface to the GNU gettext
message catalog library.

I18N refers to the operation by which a program is made aware of multiple
languages.  L10N refers to the adaptation of your program, once
internationalized, to the local language and cultural habits.

    N)ENOENTNullTranslationsGNUTranslationsCatalogfindtranslationinstall
textdomainbindtextdomainbind_textdomain_codesetdgettext	dngettextgettextlgettext	ldgettext
ldngettext	lngettextngettextZsharelocalea  
        (?P<WHITESPACES>[ \t]+)                    | # spaces and horizontal tabs
        (?P<NUMBER>[0-9]+\b)                       | # decimal integer
        (?P<NAME>n\b)                              | # only n is allowed
        (?P<PARENTHESIS>[()])                      |
        (?P<OPERATOR>[-*/%+?:]|[><!]=?|==|&&|\|\|) | # !, *, /, %, +, -, <, >,
                                                     # <=, >=, ==, !=, &&, ||,
                                                     # ? :
                                                     # unary and bitwise ops
                                                     # not allowed
        (?P<INVALID>\w+|.)                           # invalid token
    c             c   sT   xHt jt| D ]8}|j}|dkr"q|j|}|dkr@td| |V  qW dV  d S )NZWHITESPACESZINVALIDz invalid token in plural form: %s )refinditer_token_pattern	lastgroupgroup
ValueError)pluralZmoZkindvalue r   ,/opt/alt/python36/lib64/python3.6/gettext.py	_tokenizeT   s    

r    c             C   s   | rt d|  S t dS d S )Nz#unexpected token in plural form: %szunexpected end of plural form)r   )r   r   r   r   _error_   s    r!   ||&&==!=<><=>=+-*/%c             C   s    i | ]\}}|D ]
}||qqS r   r   ).0iZopsopr   r   r   
<dictcomp>m   s    r2      orandz//)z||z&&r-   c             C   s  d}t | }x|dkr(|d7 }t | }qW |dkr\t| \}}d||f }|dkrtdnP|dkrrd	||f }n:yt|d
}W n tk
r   t|d Y nX d||f }t | }d}xh|tkr t| }||k rP |dkr|dkrd| }tj||}t| |d \}	}d|||	f }|}qW ||  ko6dkn  rFd| }|dkr|dkrt| d\}
}|dkrzt|t| \}}d|
||f }|dkrd| }||fS )Nr   !znot (z%s(%s))z%unbalanced parenthesis in plural formnz%s%s
   z%s%dd         z(%s)r3   z%s %s %s?r   :z%s if %s else %s)r<   r=   )r<   r=   )next_parser   intr!   _binary_ops	_c2py_opsget)tokensZpriorityresultnexttoksubr   jr0   r1   rightZif_trueZif_falser   r   r   rA   p   sP    



rA   c             C   s:   yt | }W n( tk
r4   td| jjf d Y nX | S )Nz'Plural value must be an integer, got %s)round	TypeError	__class____name__)r9   r0   r   r   r   _as_int   s    rP   c             C   s   t | dkrtdy~tt| \}}|r2t|d}x>|D ]6}|dkrb|d7 }|dkrrtdq<|dkr<|d8 }q<W d	ti}td
| | |d S  tk
r   tdY nX dS )zGets a C expression as used in PO files for plural forms and returns a
    Python function that implements an equivalent expression.
    i  z"plural form expression is too longr   r7   r3      z%plural form expression is too complexr8   rP   zif True:
            def func(n):
                if not isinstance(n, int):
                    n = _as_int(n)
                return int(%s)
            funcN)lenr   rA   r    r!   rP   execRecursionError)r   rG   rH   Zdepthcnsr   r   r   c2py   s(    

rX   c             C   s:  t j| } d}d	}d
}d}| jd}|dkrN| |d  }| d | } ||O }nd}| jd}|dkr| |d  }| d | } ||O }nd}| jd}|dkr| |d  }| d | } ||O }nd}| }	g }
xbt|d D ]R}|| @ s|	}||@  r||7 }||@ r||7 }||@ r ||7 }|
j| qW |
j  |
S )Nr3   r      @r   ._r3   rY   r=   )r   Z	normalizer   rangeappendreverse)locZCOMPONENT_CODESETZCOMPONENT_TERRITORYZCOMPONENT_MODIFIERmaskposZmodifiercodesetZ	territoryZlanguageZretr0   valr   r   r   _expand_lang   sJ    








 
 
 re   c               @   sp   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd ZdddZdS )r   Nc             C   s.   i | _ d | _d | _d | _|d k	r*| j| d S )N)_info_charset_output_charset	_fallbackrA   )selffpr   r   r   __init__   s    zNullTranslations.__init__c             C   s   d S )Nr   )rj   rk   r   r   r   rA      s    zNullTranslations._parsec             C   s   | j r| j j| n|| _ d S )N)ri   add_fallback)rj   fallbackr   r   r   rm     s    zNullTranslations.add_fallbackc             C   s   | j r| j j|S |S )N)ri   r   )rj   messager   r   r   r   	  s    zNullTranslations.gettextc             C   s2   | j r| j j|S | jr$|j| jS |jtj S )N)ri   r   rh   encoder   getpreferredencoding)rj   ro   r   r   r   r     s
    zNullTranslations.lgettextc             C   s*   | j r| j j|||S |dkr"|S |S d S )Nr3   )ri   r   )rj   msgid1msgid2r9   r   r   r   r     s
    zNullTranslations.ngettextc             C   sH   | j r| j j|||S |dkr$|}n|}| jr:|j| jS |jtj S )Nr3   )ri   r   rh   rp   r   rq   )rj   rr   rs   r9   tmsgr   r   r   r     s    zNullTranslations.lngettextc             C   s   | j S )N)rf   )rj   r   r   r   info(  s    zNullTranslations.infoc             C   s   | j S )N)rg   )rj   r   r   r   charset+  s    zNullTranslations.charsetc             C   s   | j S )N)rh   )rj   r   r   r   output_charset.  s    zNullTranslations.output_charsetc             C   s
   || _ d S )N)rh   )rj   rv   r   r   r   set_output_charset1  s    z#NullTranslations.set_output_charsetc             C   sv   dd l }| j|jd< t|drrd|kr6|jd |jd< d|krJ| j|jd< d|kr^| j|jd< d|krr| j|jd< d S )Nr   r\   __contains__r   r   r   r   )builtinsr   __dict__hasattrr   r   r   )rj   namesrz   r   r   r   r   4  s    
zNullTranslations.install)N)N)rO   
__module____qualname__rl   rA   rm   r   r   r   r   ru   rv   rw   rx   r   r   r   r   r   r      s   
c               @   sH   e Zd ZdZdZdZdd Zdd Zd	d
 Zdd Z	dd Z
dd ZdS )r   l   * l   $< r   r3   c             C   s   |d? |d@ fS )z/Returns a tuple of major version, minor version   i  r   )rj   versionr   r   r   _get_versionsJ  s    zGNUTranslations._get_versionsc       "      C   s  t j}t|dd}i  | _}dd | _|j }t|}|d|dd d }|| jkrv|d	|dd
 \}}	}
}d}n6|| jkr|d|dd
 \}}	}
}d}nt	dd|| j
|\}}|| jkrt	ddt| |xtd|	D ]}||||
|
d  \}}|| }|||||d  \}}|| }||k r^||k r^||| }||| }nt	dd||dkrRd}x|jdD ]}|j j }|sqd }}d|kr|jdd\}}|j j }|j }|| j|< |}n|r | j|  d| 7  < |dkr|jdd | _n0|dkr|jd}|d jdd }t|| _qW | jp\d}d|kr|jd\}} |jd}t||}x>t|D ]\}}!t|!||||f< qW nt|||t||< |
d7 }
|d7 }qW dS )z8Override this method to support alternative .mo formats.namer   c             S   s   t | dkS )Nr3   )rB   )r9   r   r   r   <lambda>U  s    z(GNUTranslations._parse.<locals>.<lambda>z<INr=   r   z<4IrQ   z<IIz>4Iz>IIzBad magic numberzBad version number    zFile is corrupt   
r?   r3   
zcontent-typezcharset=zplural-forms;zplural=ascii    )structunpackgetattr_catalogr   readrS   LE_MAGICBE_MAGICOSErrorr   VERSIONSstrr]   splitdecodestriplowerrf   rg   rX   	enumerate)"rj   rk   r   filenameZcatalogZbufZbuflenmagicr   ZmsgcountZ	masteridxZtransidxZiiZmajor_versionZminor_versionr0   ZmlenZmoffZmendZtlenZtoffZtendmsgrt   ZlastkZb_itemitemkvr   rv   rr   rs   xr   r   r   rA   N  sr    














zGNUTranslations._parsec             C   sR   t  }| jj||}||kr2| jr.| jj|S |}| jrD|j| jS |jtj S )N)	objectr   rE   ri   r   rh   rp   r   rq   )rj   ro   missingrt   r   r   r   r     s    zGNUTranslations.lgettextc             C   sv   y| j || j|f }W n< tk
rT   | jr>| jj|||S |dkrL|}n|}Y nX | jrh|j| jS |jtj S )Nr3   )	r   r   KeyErrorri   r   rh   rp   r   rq   )rj   rr   rs   r9   rt   r   r   r   r     s    
zGNUTranslations.lngettextc             C   s6   t  }| jj||}||kr2| jr.| jj|S |S |S )N)r   r   rE   ri   r   )rj   ro   r   rt   r   r   r   r     s    zGNUTranslations.gettextc             C   sZ   y| j || j|f }W n< tk
rT   | jr>| jj|||S |dkrL|}n|}Y nX |S )Nr3   )r   r   r   ri   r   )rj   rr   rs   r9   rt   r   r   r   r     s    
zGNUTranslations.ngettextN)r   r3   )rO   r~   r   r   r   r   r   rA   r   r   r   r   r   r   r   r   r   B  s   T	Fc             C   s   |d krt }|d krTg }x(dD ] }tjj|}|r|jd}P qW d|krT|jd g }x0|D ](}x"t|D ]}||krl|j| qlW q^W |rg }	nd }	xL|D ]D}|dkrP tjj||dd|  }
tjj	|
r|r|	j|
 q|
S qW |	S )	NLANGUAGELC_ALLLC_MESSAGESLANGr?   Cz%s.mo)r   r   r   r   )
_default_localedirosenvironrE   r   r^   re   pathjoinexists)domain	localedir	languagesallZenvarrd   ZnelangsZlangZnelangrG   mofiler   r   r   r     s8    




c             C   s   |d krt }t| ||dd}|s6|r*t S ttd| d }x|D ]|}|tjj|f}	tj	|	}
|
d krt
|d}tj|	||}
W d Q R X tj|
}
|r|
j| |d kr|
}q@|j|
 q@W |S )NT)r   z$No translation file found for domainrb)r   r   r   r   r   r   r   abspath_translationsrE   open
setdefaultcopyrx   rm   )r   r   r   Zclass_rn   rc   ZmofilesrG   r   keytrk   r   r   r   r     s*    



c             C   s   t | |d|d}|j| d S )NT)rn   rc   )r   r   )r   r   rc   r}   r   r   r   r   r     s    Zmessagesc             C   s   | d k	r| a t S )N)_current_domain)r   r   r   r   r	   '  s    c             C   s   |d k	r|t | < t j| tS )N)_localedirsrE   r   )r   r   r   r   r   r
   .  s    c             C   s   |d k	r|t | < t j| S )N)_localecodesetsrE   )r   rc   r   r   r   r   5  s    c             C   s@   y t | tj| d tj| d}W n tk
r4   |S X |j|S )N)rc   )r   r   rE   r   r   r   )r   ro   r   r   r   r   r   <  s    c             C   sR   t j| }yt| tj| d |d}W n" tk
rF   |j|pBtj S X |j|S )N)rc   )	r   rE   r   r   r   rp   r   rq   r   )r   ro   rc   r   r   r   r   r   D  s    
c             C   sT   y t | tj| d tj| d}W n$ tk
rD   |dkr<|S |S Y nX |j|||S )N)rc   r3   )r   r   rE   r   r   r   )r   rr   rs   r9   r   r   r   r   r   L  s    
c             C   sh   t j| }yt| tj| d |d}W n4 tk
rX   |dkrB|}n|}|j|pTtj S X |j|||S )N)rc   r3   )	r   rE   r   r   r   rp   r   rq   r   )r   rr   rs   r9   rc   r   rt   r   r   r   r   W  s    
c             C   s
   t t| S )N)r   r   )ro   r   r   r   r   c  s    c             C   s
   t t| S )N)r   r   )ro   r   r   r   r   f  s    c             C   s   t t| ||S )N)r   r   )rr   rs   r9   r   r   r   r   i  s    c             C   s   t t| ||S )N)r   r   )rr   rs   r9   r   r   r   r   l  s    r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   )r   r   r   r   r   r   )r   )NNF)NNNFN)NNN)N)N)N)1__doc__r   r   ior   r   r   syserrnor   __all__r   r   base_prefixr   compileVERBOSEDOTALLr   r    r!   rC   r   rD   rA   rP   rX   re   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   <module>   s^   &8


     
1$*K 
& 




