³ò <]Dc @s}dZddkZddkZddkZddkZddkZd„Zd„Zeidƒi Z dZ hd3d4<d5d6<d7d8<d9d:<d;d<<d=d><d?d@<dAdB<dCdD<dEdF<dGdH<dIdJ<dKdL<dMdN<dOdPS(Niii(tord(tc((sPngImagePlugin.pycti16%scCsDt|dƒt|dƒd>t|dƒd>t|dƒd>S(Niiiiiii(R(R((sPngImagePlugin.pycti32'ss\w\w\w\ws‰PNG  t1iitLsL;2isL;4iitIsI;16BitRGBsRGB;16BtPsP;1isP;2sP;4tLAtRGBAsLA;16BisRGBA;16Bt ChunkStreamcBsSeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zdd„Z RS( cCs9||_g|_ttidƒp|i|_ndS(Ntcrc32(tfptqueuethasattrtImagetcoretcrc_skiptcrc(tselfR ((sPngImagePlugin.pyct__init__Is  cCs¦|io4|id\}}}|id=|ii|ƒn8|iidƒ}|d}|iiƒ}t|ƒ}t|ƒptdt|ƒ‚n|||fS(s.Fetch a new chunk. Returns header information.iÿÿÿÿiisbroken PNG file (chunk %s)( RR tseektreadttellRtis_cidt SyntaxErrortrepr(Rtcidtpostlents((sPngImagePlugin.pycRQs     cCsd|_|_|_dS(N(tNoneRRR (R((sPngImagePlugin.pyctclosecscCs|ii|||fƒdS(N(Rtappend(RRRR((sPngImagePlugin.pyctpushfscCs9tiodG|G|G|GHnt|d|ƒ||ƒS(s"Call the appropriate chunk handlertSTREAMtchunk_(RtDEBUGtgetattr(RRRR((sPngImagePlugin.pyctcalljs cCsstii|tii|ƒƒ}t|iidƒƒt|iidƒƒf}||jotd|‚ndS(sRead and verify checksumis*broken PNG file(bad header checksum in %s)N(RRR RR RR(RRtdatatcrc1tcrc2((sPngImagePlugin.pycRqs !0 cCs|iidƒdS(s3Read checksum. Used if the C module is not presentiN(R R(RRR)((sPngImagePlugin.pycRzstIENDcCscg}xV|iƒ\}}}||joPn|i|ti|i|ƒƒ|i|ƒq |S(N(RRt ImageFilet _safe_readR R"(RtendchunktcidsRRR((sPngImagePlugin.pyctverifys ( t__name__t __module__RRR!R#R(RRR1(((sPngImagePlugin.pycR Gs      tPngInfocBs&eZd„Zd„Zdd„ZRS(cCs g|_dS(N(tchunks(R((sPngImagePlugin.pycR•scCs|ii||fƒdS(N(R5R"(RRR)((sPngImagePlugin.pyctadd˜sicCsT|o1ddk}|id|d|i|ƒƒn|id|d|ƒdS(NiÿÿÿÿtzTXttttEXtt(tzlibR6tcompress(RtkeytvaluetzipR;((sPngImagePlugin.pyctadd_text›s %(R2R3RR6R@(((sPngImagePlugin.pycR4“s  t PngStreamcBsYeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z RS( cCsAti||ƒh|_d|_d|_d|_d|_dS(Ni(ii(R Rtim_infotim_sizeR tim_modetim_tilet im_palette(RR ((sPngImagePlugin.pycR§s     c Cs¶ti|i|ƒ}t|ƒt|dƒf|_y4tt|dƒt|dƒf\|_|_WnnXt|dƒod|i d}nd}|djo d}n5|djo d}n|djo d}nd}|djod ||f}q´n|iid ƒo|id }nd }|iid ƒ|f|_yt|\} }Wn tj otd |‚nX|o|Sn|itƒ||dt |i dƒt |i dƒ|t dƒt dƒt dƒƒ|idjo ||d|i i dƒƒn|iidƒo­|idjoGtdtd|idƒƒ} ||dt dƒ| t dƒƒq‡|idjo9tdtd|idƒƒ} ||dt| ƒƒq‡td‚n|iidƒ} | oP||dt t| dddƒƒt t| dddƒƒt dƒƒn|iidƒ} | o.x+| iD]\} }||| |ƒqWnti|t||ƒdd|i d| fgƒ||dd ƒy|iƒWnnXdS( NRtbitsiiiiiis%s;%dt dictionaryR_toptimizescannot write mode %s as PNGtIHDRitPLTERRPiÿttRNSRiÿÿs%cannot use transparency for this modeRXtpHYsg¦ F%uš?gà?tpnginfoR?R,(ii(Rlt encoderinfothas_keyt encoderconfigt _OUTMODEStKeyErrorRxR…ReRƒRmRStimt getpalettetmaxR|R‚RwRZR5R-t_saveR‰tflush(R˜R tfilenameRŠtcheckRltnR‹RŒRtRPRXRnRR)((sPngImagePlugin.pycR›¤st                (   2cKsVddd„ƒY}d„}|ƒ}z ||_t||d|ƒWd|`X|iS(s4Return a list of PNG chunks representing this image.t collectorcBs eZgZd„Zd„ZRS(cSsdS(N((RR)((sPngImagePlugin.pycR…scSs|ii|ƒdS(N(R)R"(RRŠ((sPngImagePlugin.pycR"s(R2R3R)R…R"(((sPngImagePlugin.pycR s cWsiti|dƒ}tii|tii|ƒƒ\}}t|ƒt|ƒ}|i|||fƒdS(NR_(RQR„RRR R‚R"(R RR)R†R‡R((sPngImagePlugin.pycR"s'N((R“R›R R)(R˜tparamsR R"R ((sPngImagePlugin.pyct getchunks s   Ris.pngs image/png(RR(ii(RsL;2(ii(RsL;4(ii(RR(ii(RsI;16B(ii(sRGBsRGB(ii(sRGBsRGB;16B(ii(RsP;1(ii(RsP;2(ii(RsP;4(ii(RR(ii(sLAsLA(ii(sRGBAsLA;16B(ii(sRGBAsRGBA(ii(sRGBAsRGBA;16B(ii((((t __version__treRQRR-RpRRtcompiletmatchRReRHR R4RARgRhR‚RƒRSR–RˆR‰R›R¢t register_opent register_savetregister_extensiont register_mime(((sPngImagePlugin.pycssf$                 L` o  !  g