³ò šZ]Gc@s›dZddkZdd„Zdd„Zdeifd„ƒYZdeifd „ƒYZd eifd „ƒYZd eifd „ƒYZd„Z dS(s Python 'utf-8-sig' Codec This work similar to UTF-8 with the following changes: * On encoding/writing a UTF-8 encoded BOM will be prepended/written as the first three bytes. * On decoding/reading if the first three bytes are a UTF-8 encoded BOM, these bytes will be skipped. iÿÿÿÿNtstrictcCs'titi||ƒdt|ƒfS(Ni(tcodecstBOM_UTF8t utf_8_encodetlen(tinputterrors((sencodings\utf_8_sig.pyctencodescCsWd}|d tijo|d}d}nti||tƒ\}}|||fS(Nii(RRt utf_8_decodetTrue(RRtprefixtoutputtconsumed((sencodings\utf_8_sig.pyctdecodes   tIncrementalEncodercBs)eZdd„Zed„Zd„ZRS(RcCs tii||ƒt|_dS(N(RRt__init__R tfirst(tselfR((sencodings\utf_8_sig.pycRscCsP|io+t|_titi||iƒdSnti||iƒdSdS(Ni(RtFalseRRRR(RRtfinal((sencodings\utf_8_sig.pycRs  "cCstii|ƒt|_dS(N(RRtresetR R(R((sencodings\utf_8_sig.pycR%s(t__name__t __module__RRRR(((sencodings\utf_8_sig.pycRs  tIncrementalDecodercBs&eZdd„Zd„Zd„ZRS(RcCs tii||ƒt|_dS(N(RtBufferedIncrementalDecoderRR R(RR((sencodings\utf_8_sig.pycR*scCsª|iot|ƒdjo(tii|ƒodSq“d|_q—d|_|d tijo1ti|d||ƒ\}}||dfSq—nti|||ƒS(Niui(ui(RRRRt startswithtNoneR(RRRRR R ((sencodings\utf_8_sig.pyct_buffer_decode.s   cCstii|ƒt|_dS(N(RRRR R(R((sencodings\utf_8_sig.pycR>s(RRRRR(((sencodings\utf_8_sig.pycR)s  t StreamWritercBseZd„Zdd„ZRS(cCs4tii|ƒy |`Wntj onXdS(N(RRRRtAttributeError(R((sencodings\utf_8_sig.pycRCs  RcCsti|_t||ƒS(N(RRR(RRR((sencodings\utf_8_sig.pycRJs (RRRR(((sencodings\utf_8_sig.pycRBs t StreamReadercBseZd„Zdd„ZRS(cCs4tii|ƒy |`Wntj onXdS(N(RRRR R(R((sencodings\utf_8_sig.pycROs  RcCsœt|ƒdjotii|ƒodSq€nO|d tijo:ti|_ti|d|ƒ\}}||dfSnti|_ti||ƒS(Niui(ui(RRRRRR (RRRR R ((sencodings\utf_8_sig.pycR Vs   (RRRR (((sencodings\utf_8_sig.pycRNs cCs4tidddtdtdtdtdtdtƒS( Ntnames utf-8-sigRR tincrementalencodertincrementaldecodert streamreadert streamwriter(Rt CodecInfoRR RRRR(((sencodings\utf_8_sig.pyct getregentryfs ( t__doc__RRR RRRRRR%(((sencodings\utf_8_sig.pycs s