sDc@sdZddkZddkZddkZddkZddkZddkZy$eidjo dZndZWnIej o=e eiddgi do dZndZnXdd Z dd Z d Z d Zdd ZddZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*hd)d<d*d+<d,d-<d.d/<d0d1<d2d3<d4d5<d6d7<d8d9fdddd?fff<d=d@fddd+d?fff<d:d:fddddfff<d:dAfddd+dfff<d=d=fdddd?fff<dBdBfdddd?d?fd+ff<d=dCfddd+d?fff<dDdDfddddEfff<dFdFfdd+ddEfff<dGdHfdd+ddIfff<dJdKfdd-ddIfff<dLdLfd+ddd?d?d?fff<dLdMfd+dd+d?d?d?fff<dNdNfd+ddd?d?d?d?fdff<dOdPfd+ddd?d?d?d?fdff<dOdOfd+ddd?d?d?d?fd+ff<dOdOfd+ddd?d?d?d?fdQff<dRdSfd-dddfff<dRdTfd-dd+dfff<dRdUfd-ddd+fff<dRdVfd-dd+d+fff<dRdWfd-ddd/fff<dRdXfd-dd+d/fff<dRdRfd-ddd?fff<dYdYfd-ddd?d?fd+ff<dRdZfd-dd+d?fff<d[d[fd1ddd?d?d?d?fff<d\d\fd3ddd?d?d?fff<d]d]fd?ddd?d?d?fffS(Nii(tord(tcto((sTiffImagePlugin.pyctil16@scCsPt||t||dd>t||dd>t||dd>S(Niiiiii(R(RR((sTiffImagePlugin.pyctil32BscCs t|d@t|d?d@S(Nii(tchr(R((sTiffImagePlugin.pyctol16DscCsDt|d@t|d?d@t|d?d@t|d?d@S(Niiii(R (R((sTiffImagePlugin.pyctol32FscCs$t||dt||d>S(Nii(R(RR((sTiffImagePlugin.pyctib16IscCsPt||dt||dd>t||dd>t||d>S(Niiiiii(R(RR((sTiffImagePlugin.pyctib32Ksiiiiii iiiiiiiii(i1i2i;i=i@iRiSi[iiiItrawt tiff_ccittitgroup3itgroup4ittiff_lzwit tiff_jpegitjpegit tiff_raw_16itpackbitsit1s1;Is1;IRtLsL;IisL;IRs1;RtLAsL;RsI;16isI;16StIsI;32Si tFsF;32FtRGBsRGB;RtRGBXtRGBAtRGBaitPsP;1sP;1RsP;2sP;2RsP;4sP;4RtPAsP;RtCMYKtYCbCrtLABtMM*sII*sIIcCs|d tjS(Ni(tPREFIXES(tprefix((sTiffImagePlugin.pyct_acceptstImageFileDirectorycBsKeZddZdZdZdZdZdZddZ ddZ d Z d Z hZ d Zd efe d R2(R0R9RG((sTiffImagePlugin.pyct __setitem__s cCsDg}x1tt|D]}|it||qWt|S(N(trangeR:R8Rttuple(R0R?tlR((sTiffImagePlugin.pyct load_bytes icCs#|ddjo|d }n|S(Nit((R0R?((sTiffImagePlugin.pyct load_stringsicCsLg}x9tdt|dD]}|i|i||qWt|S(Nii(RKR:R8R*RL(R0R?RMR((sTiffImagePlugin.pyct load_shorts icCsLg}x9tdt|dD]}|i|i||qWt|S(Nii(RKR:R8R+RL(R0R?RMR((sTiffImagePlugin.pyct load_longs icCsbg}xOtdt|dD]5}|i|i|||i||dfqWt|S(Niii(RKR:R8R+RL(R0R?RMR((sTiffImagePlugin.pyct load_rational s 3iicCs:tid|}|itjo|int|S(Ntf(tarrayR't byteordertbyteswapRL(R0R?ta((sTiffImagePlugin.pyct load_floatsi cCs:tid|}|itjo|int|S(Ntd(RUR'RVRWRL(R0R?RX((sTiffImagePlugin.pyct load_doublesi cCs|S(N((R0R?((sTiffImagePlugin.pyctload_undefined"sic Cs|i|i}|i}xt||idD]}|id}||||d}}tioVddk}|ii |d} |i i |d} d| |fGd| |fGny|i |} Wn-t j o!tio dG|GHq8q8nX| \} } | ||d} | djoE|i }|i||d ti|| }|i|n|d d | !}t|| jo td n||f|i|s- value:(R/R*R+RKtreadtImagetDEBUGtTiffTagstTAGSRDtTYPESR=R<ttelltseekt ImageFilet _safe_readR:tIOErrorR3tCOLORMAPtIPTC_NAA_CHUNKtPHOTOSHOP_CHUNKR5(R0tfpR*R+RtifdR9ttypRattagnamettypnametdispatchR@RAthereR?((sTiffImagePlugin.pyctload'sF             c Cs |i}|i}|i|t|i|ii}|ig}|i}|it|idd}d}x=|D]5\} } t i o<ddk } | i i| d} d| | fGdG| GHnt| dtdjo$d } ti| d d }} n| tjot|}d} nL| ttfjo d } n/d } x%| D]}|d jo d} qdqdW| d jotit|| d}ntit|| d}t|djo#|| | t| |dfqt|djo5|| | t| |dt|d dfqt| }| d jo|d }n|| | ||||f|t|}|d@o|d}qqW|dj oa||\} } }} }| p td||i| |} | | || |f||tstringtjoint STRIPOFFSETSt X_RESOLUTIONt Y_RESOLUTIONtmaptAssertionErrorR+trepr(R0RlR,R-R2t directoryR8toffsett stripoffsetsR9RGRaRoRnR?tvtcount((sTiffImagePlugin.pyctsave_sx    !          #5    %/  N(t__name__t __module__R1R/R6R7R;RBR4RDRHRIRJR=RNRPRQRRRSRYR[R\RsR(((sTiffImagePlugin.pycR)s:                 8t TiffImageFilecBsSeZdZdZdZdZdZdZdZdZ dZ RS( tTIFFs Adobe TIFFcCs|iid}|d tjo tdnt|d |_|_|ii|d|_|_ d|_ |i|_ |i ddS(s#Open the first image in a TIFF fileiisnot a TIFF fileiiiN( RlR^R&R.R)R9RmR+t_TiffImageFile__firstt_TiffImageFile__nextt_TiffImageFile__framet_TiffImageFile__fpt_seek(R0tifh((sTiffImagePlugin.pyct_opens   cCs(|djo d}n|i|dS(s%Select a given frame as current imageiN(R(R0tframe((sTiffImagePlugin.pycRes  cCs |iS(sReturn the current frame number(t_tell(R0((sTiffImagePlugin.pycRdscCs|i|_||ijod|_|i|_nxq|i|jo`|ip tdn|ii|i|ii|i|ii |_|id|_q8W|i dS(Nisno more images in TIFF filei( RRlRRRtEOFErrorReR9RsR5t_setup(R0R((sTiffImagePlugin.pycRs    cCs|iS(N(R(R0((sTiffImagePlugin.pycRscCsd }|djo|idjo||}n|i}|djo|ddf}n|djo7|df}|iito|it|_qn]|djo |}nF|d jo8|}|iid o|itdf|_qn|S( sSetup decoder contextsRiRiiRRtRRi=N( R4t_planar_configurationt _compressionR9RIt JPEGTABLESt tile_prefixt PREDICTORt decoderconfig(R0trawmodetlayertargst compression((sTiffImagePlugin.pyct_decoders"       c Cs|iido tdn|ii}t|td|_|td|_|t d}|t d}t i o3dGHdG|iGHdG|GHdG|iGHd G|GHn|t }|t}||f|_t i od G|iGHn|td}||||iitd|iitdf}t i o d G|GHnyt|\|_}Wn/tj o#t i o d GHntd nXt i odG|GHdG|iGHn|i|id<|td} |td} | of| o_|tddjoI| d| dpd} | d| dpd} | | f|idt#d|it$}t%i&dt'i(|d|_)ndS( s-Setup this image object based on current tagsis+Windows Media Photo files not yet supportediis*** Summary ***s- compression:s- photometric_interpretation:s- planar_configuration:s - fill_order:s- size:s format key:s- unsupported formatsunknown pixel modes - raw mode:s - pil mode:RtdpiiDiBiCs- unsupported data organizationsunknown data organizationR cSst|dS(i(R (RX((sTiffImagePlugin.pyctyssRGB;LRtN(i((ii(ii(*R9RIRhRHtCOMPRESSION_INFOt COMPRESSIONRtPLANAR_CONFIGURATIONRtPHOTOMETRIC_INTERPRETATIONt FILLORDERR_R`t IMAGEWIDTHt IMAGELENGTHR@RERDt BITSPERSAMPLEt EXTRASAMPLESt OPEN_INFOtmodeR<R.tinfoR{R|tRESOLUTION_UNITttileRzt ROWSPERSTRIPR4RR8tminR}Rit ImagePaletteRRxRytpalette(R0RHtphotot fillordertxsizetysizetformattkeyRtxdpitydpitxtyRMthtwRXRR((sTiffImagePlugin.pycR s                 $   %              ( RRRtformat_descriptionRReRdRRRR(((sTiffImagePlugin.pycRs      cCst|tgtdfjo&t|ddjpt|Snt|tdjo|dfSnt|}t|ddfS(Niiii((R>R:R~tfloattint(RG((sTiffImagePlugin.pyct_cvt_ress% cCsy t|i\}}}}}Wn#tj otd|inXt}|i|i|id|id|i d|t <|i d|t *s $  &                 !!!!!!!'!!!!!''----!!!!!!!'!*') !$$$!# V