£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
h	                 @   s
  d Z ddlZddlZdd eddD Zded< ded	< d
ed< ded< ded< ded< dd eddD dd eddD  dd eddD  Zded< ded	< d
ed< ded< ded< ded< dd ZejdZdd eddD dd eddD  Z	dd Z
dS )zEncoding related utilities.    Nc             C   s   g | ]}t |qS  )chr).0ir   r   #/usr/lib/python3.6/text_encoding.py
<listcomp>%   s    r      z\t	   z\n
   z\r   z\''   z\""   z\\\   c             C   s   g | ]}d | qS )z\%03or   )r   r   r   r   r   r   /   s        c             C   s   g | ]}t |qS r   )r   )r   r   r   r   r   r   0   s       c             C   s   g | ]}d | qS )z\%03or   )r   r   r   r   r   r   1   s    c                sL   t | tjrtndd  |r4dj fdd| D S dj fdd| D S )a-  Escape a bytes string for use in an ascii protocol buffer.

  text.encode('string_escape') does not seem to satisfy our needs as it
  encodes unprintable characters using two-digit hex escapes whereas our
  C++ unescaping function allows hex escapes to be any length.  So,
  "1".encode('string_escape') ends up being "\x011", which will be
  decoded in C++ as a single-character string with char code 0x11.

  Args:
    text: A byte string to be escaped
    as_utf8: Specifies if result should be returned in UTF-8 encoding
  Returns:
    Escaped string
  c             S   s   | S )Nr   )xr   r   r   <lambda>L   s    zCEscape.<locals>.<lambda> c             3   s   | ]}t  | V  qd S )N)_cescape_utf8_to_str)r   c)Ordr   r   	<genexpr>N   s    zCEscape.<locals>.<genexpr>c             3   s   | ]}t  | V  qd S )N)_cescape_byte_to_str)r   r   )r   r   r   r   O   s    )
isinstancesixZstring_typesordjoin)textZas_utf8r   )r   r   CEscape;   s    r   z"(\\+)x([0-9a-fA-F])(?![0-9a-fA-F])c             C   s   g | ]}t |qS r   )r   )r   r   r   r   r   r   S   s    c             C   s   g | ]}d | qS )z\%03or   )r   r   r   r   r   r   T   s    c             C   sP   dd }t j|| }ttkr&|jdS djdd |D }|jdjdjd	S )
zDUnescape a text string with C-style escape sequences to UTF-8 bytes.c             S   s4   t | jdd@ r*| jdd | jd S | jdS )N   Zx0   r   )lengroup)mr   r   r   
ReplaceHexZ   s    zCUnescape.<locals>.ReplaceHexZstring_escaper   c             s   s   | ]}t t| V  qd S )N)_cescape_highbit_to_strr   )r   r   r   r   r   r   g   s    zCUnescape.<locals>.<genexpr>asciiZunicode_escapeZraw_unicode_escape)_CUNESCAPE_HEXsubstrbytesdecoder   encode)r   r$   resultr   r   r   	CUnescapeW   s    	

r.   )__doc__rer   ranger   r   r   compiler'   r%   r.   r   r   r   r   <module>   s,   &
