a  zeL!@sddlZddlZddlZddlZddlmZmZddlmZgdZ e e dj ddZ dd ZGd d d eZeZd eed <ddZddZddZddZddZeedZddZeedZeedZdddZdS) N) ascii_lettersdigits)errors)decode_qencode_qdecode_bencode_blen_qlen_bdecodeencodes=([a-fA-F0-9]{2})cCst|dS)N)bytesfromhexgroupr )mrH/opt/bitninja-python-dojo/embedded/lib/python3.9/email/_encoded_words.pyArcCs|dd}t|gfS)N_ )replace_q_byte_subber)encodedrrrrCs rc@s,eZdZdededZddZdS) _QByteMaps-!*+/asciicCs.||jvrt|||<nd|||<||S)Nz={:02X})safechrformat)selfkeyrrr __missing__Ms z_QByteMap.__missing__N)__name__ __module__ __qualname__rr rrr"rrrrrIsr_ cCsddd|DS)Ncss|]}t|VqdSN) _q_byte_map.0xrrr Zrzencode_q..)joinbstringrrrrYsrcCstdd|DS)Ncss|]}tt|VqdSr))lenr*r+rrrr.]rzlen_q..)sumr0rrrr \sr cCst|d}|r ddd|nd}z&tj||dd|rDtgngfWStjyztj|ddtgfWYStjyz,tj|dddttgfWYYStjy|tgfYYYS0Yn0Yn0dS)Ns===rT)validateFs==) r2base64Z b64decoderZInvalidBase64PaddingDefectbinasciiErrorZInvalidBase64CharactersDefectZInvalidBase64LengthDefect)rZpad_errZmissing_paddingrrrrds(   rcCst|dS)Nr)r6Z b64encoder r0rrrrsrcCs&tt|d\}}|d|r dndS)Nr4r)divmodr2)r1Z groups_of_3Zleftoverrrrr sr )qbc Cs|d\}}}}}|d\}}}|}|dd}t||\}}z||}Wnrty|t d |||d}Yn@t y|dd}|dkr|t d |Yn0||||fS)N?*rsurrogateescapez:Encoded word contains bytes not decodable using {} charset unknown-8bitzz=?{}{}?{}?{}?=)r _cte_encode_length _cte_encodersr)rJrHencodingrIr1ZqlenZblenrrrrr s    r )rKNr()rer6r7 functoolsrJrrZemailr__all__partialcompilesubrrdictrr*ordrr rrr rDr rNrMr rrrr*s:   &+