K iddlmZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z m Z ddlmZmZmZmZmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd l m!Z!dZ"e"rddl#m$Z$ddl m%Z%m&Z&ddlm'Z'ejPe)Z*ejVdjXZ-dZ.ddddddddddddd d!d"d#Z/ejVd$Z0ejbZ2 d%e2zZ3 Gd&d'e Z4Gd(d)e Z5dUd*Z6dVdWd+Z7Gd,d-Z8Gd.d/e9Z:Gd0d1Z;Gd2d3e Z<Gd4d5e8Z=dXd6Z>Gd7d8ej"Z?d9d:d;dd?d?d?d@dAdBdCdDdEdFZ@dYdGZAGdHdIZBGdJdKZCGdLdMe ZD dZdNZEd[dOZFeAdf d\dPZGd]dQZHeje?je?e>eje?jeGeje?jeFeje?jdRdSgeje?jdTy)^) annotationsN)IntEnum)IO NamedTuplecast)Image ImageChops ImageFile ImagePalette ImageSequence)i16be)i32be)o8)o16be)o32be) deprecate) DeferredErrorF)Callable)AnyNoReturn)_imagings\w\w\w\wsPNG  )1r)LL;2)rL;4)rr)I;16I;16B)RGBr)rzRGB;16B)PP;1)r P;2)r P;4)r r )LAr$)RGBAzLA;16B)r%r%)r%zRGBA;16B))rr)r)r)r)r)r(r&)r)r&)r)r&r*)r'r*)r(r*)r(r')r)r')r()r)r+s^**$@ceZdZdZ dZ dZy)Disposalrrr&N)__name__ __module__ __qualname__OP_NONE OP_BACKGROUND OP_PREVIOUSX/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/PIL/PngImagePlugin.pyr.r.ms$GM Kr6r.ceZdZdZ dZy)BlendrrN)r/r0r1 OP_SOURCEOP_OVERr5r6r7r9r9sI Gr6r9ctj}|j|t}|jr d}t ||S)Nz=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)zlib decompressobj decompressMAX_TEXT_CHUNKunconsumed_tail ValueError)sdobj plaintextmsgs r7_safe_zlib_decompressrGs>    D>2I Mo r6c4tj||dzS)Nl)r=crc32)dataseeds r7_crc32rLs ::dD !J ..r6c^eZdZd dZd dZddZddZddZddZddZ ddZ dd Z ddd Z y ) ChunkStreamc ||_g|_yN)fpqueue)selfrQs r7__init__zChunkStream.__init__s$&:< r6cd}|jJ|jr:|jj\}}}|jj|nE|jj d}|dd}|jj }t |}t|s*tjsdt|d}t||||fS)z.Fetch a new chunk. Returns header information.Nr(r'zbroken PNG file (chunk )) rQrRpopseekreadtelli32is_cidr LOAD_TRUNCATED_IMAGESrepr SyntaxError)rScidposlengthrCrFs r7rYzChunkStream.readsww""" ::#zz~~/ Cf GGLL  QAAB%C'',,.CVFc{22/S {!<!#&&Cr6c|SrPr5rSs r7 __enter__zChunkStream.__enter__s r6c$|jyrP)close)rSargss r7__exit__zChunkStream.__exit__s  r6c dx|_|_yrP)rRrQrds r7rgzChunkStream.closes## TWr6c\|jJ|jj|||fyrP)rRappendrSr`rarbs r7pushzChunkStream.pushs+zz%%% 3V,-r6c|tjd|||t|d|jd||S)z"Call the appropriate chunk handlerzSTREAM %r %s %schunk_ascii)loggerdebuggetattrdecoderms r7callzChunkStream.calls>  &S&9 ! %' : Y9#u%**Y1C  HHWcGmdmmE.BB C HHWcEkE1 2  :}}S%S}99 :s.C))D D NrF)r`rrJrrboolrr)rF) r str | bytesrrrrrrrrrr)rrrzstr | bytes | iTXtrrrr)r/r0r1rrTrrrr5r6r7rrs : 4  !U !U!U !U  !U  !U !UHHM!3!3'9!3@D!3 !3r6rc,eZdZUded<ded<ded<y) _RewindStatez dict[str | tuple[int, int], Any]infozlist[ImageFile._Tile]tilez int | Noneseq_numNr/r0r1rr5r6r7rrzs **  r6rceZdZdfd ZddZddZddZddZddZddZ ddZ dd Z dd Z dd Z dd Zdd ZddZddZddZddZddZddZddZddZxZS) PngStreamct||i|_i|_d|_d|_g|_d|_d|_d|_ d|_ tigd|_ d|_ y)Nrrrr)superrTim_infoim_textim_sizeim_modeim_tile im_paletteim_custom_mimetype im_n_frames_seq_numr rewind_state text_memory)rSrQ __class__s r7rTzPngStream.__init__sl :< .0   .0 48.2'+$( (R6r6c|xj|z c_|jtkDrd|jd}t|y)Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)rMAX_TEXT_MEMORYrB)rSchunklenrFs r7check_text_memoryzPngStream.check_text_memorysN H$   o -7##$$46 S/ ! .r6ct|jj|j|j|_yrP)rrcopyrrrrds r7 save_rewindzPngStream.save_rewinds-( LL    LL MM r6c|jjj|_|jj|_|jj |_yrP)rrrrrrrrrds r7rewindzPngStream.rewindsD((--224 ((-- ))11 r6c|jJtj|j|}|jd}tj d|d|||dz}tj d||dk7rd|d}t | t||dzd}||jd <|S#t$rtjrd}nY0tj$rd}YFwxYw) NrziCCP profile name %rrzCompression method %srUnknown compression method z in iCCP chunkr& icc_profile) rQr rfindrrrsr_rGrBr]r=r{r)rSrarbrCi comp_methodrFrs r7 chunk_iCCPzPngStream.chunk_iCCPsww"""  & 1 FF5M +QrU3Ah  ,k: ! / }NKCc" " /!a%' ;K'2 ]# .." zz K sB00C&C&%C&c|jJtj|j|}|dkrtjr|Sd}t |t |dt |df|_ t|d|df\|_|_ |drd|jd <|d r d }t||S#t$rY3wxYw) N zTruncated IHDR chunkrr'r( r interlace zunknown filter category) rQr rr]rBr[r_MODESr im_rawmode Exceptionrr_rSrarbrCrFs r7 chunk_IHDRzPngStream.chunk_IHDRsww"""  & 1 B;..(CS/ !1ay#a)+  ,2AaD!A$<,@ )DL$/ R5()DLL % R5+Cc" "   s1B77 CCcLd|jvr1tjd|jd||jg}nK|jd|jd<tjdd|j z||jg}||_||_d}t|)NbboxrT default_imagerzimage data found) rr _Tilerrrrim_idatEOFError)rSrarbrrFs r7 chunk_IDATzPngStream.chunk_IDATs T\\ !OOE4<<+?dooVWD+04 _-OOE6DLL+@#tWXD   smr6cd}t|)Nzend of PNG image)r)rSrarbrFs r7 chunk_IENDzPngStream.chunk_IENDs smr6c|jJtj|j|}|jdk(r d|f|_|S)Nr r)rQr rrrrSrarbrCs r7 chunk_PLTEzPngStream.chunk_PLTEsDww"""  & 1 <<3 #QhDOr6c|jJtj|j|}|jdk(rMtj |r'|j d}|dk\r ||jd<|S||jd<|S|jdvrt||jd<|S|jdk(r/t|t|dt|df|jd<|S) Nr rr transparency)rrrrr&r') rQr rr_simple_palettematchrri16)rSrarbrCrs r7 chunk_tRNSzPngStream.chunk_tRNSsww"""  & 1 <<3 $$Q'FF5M634DLL0 01 ^,  \\/ /+.q6DLL (\\U "+.q63q!9c!Qi+GDLL (r6c|jJtj|j|}t|dz |jd<|S)Nj@gamma)rQr rr[rrs r7 chunk_gAMAzPngStream.chunk_gAMAsDww"""  & 1 #A 1 Wr6c|jJtj|j|}tjdt |dzd|}t d|D|jd<|S)N>r'Ic3&K|] }|dz  yw)rNr5).0elts r7 z'PngStream.chunk_cHRM..s,PS8^,Ps chromaticity)rQr rrzunpacklentupler)rSrarbrCraw_valss r7 chunk_cHRMzPngStream.chunk_cHRM siww"""  & 1==1SVq[M!3Q7',,Px,P'P ^$r6c|jJtj|j|}|dkrtjr|Sd}t ||d|j d<|S)NrzTruncated sRGB chunkrsrgb)rQr rr]rBrrs r7 chunk_sRGBzPngStream.chunk_sRGBseww"""  & 1 A:..(CS/ ! t Vr6cP|jJtj|j|}|dkrtjr|Sd}t |t |dt |d}}|d}|dk(r|dz|dzf}||j d<|S|dk(r||f|j d <|S) NrzTruncated pHYs chunkrr'r(r F%u?dpiaspect)rQr rr]rBr[r) rSrarbrCrFpxpyunitrs r7 chunk_pHYszPngStream.chunk_pHYs(sww"""  & 1 A:..(CS/ !QC1IBt 19v+rF{*C"%DLL QY%'VDLL "r6c~|jJtj|j|} |jdd\}}|rc|j dd}|j dd}|dk(r|n||j |<||j|<|jt||S#t$r|}d}YvwxYw)Nrrr6rrreplacesexif) rQr rsplitrBrurrrr )rSrarbrCkvk_strv_strs r7 chunk_tEXtzPngStream.chunk_tEXt:sww"""  & 1 775!$DAq HHY1EHHY 2E'(G|!DLL "'DLL   " "3u: . AA sB,, B<;B<c@|jJtj|j|} |jdd\}}|r|d}nd}|dk7rd|d}t | t |dd}|r\|jdd}|jdd } | x|j|<|j|<|jt| |S#t$r|}d}YwxYw#t$rtjrd}nYtj$rd}YwxYw) Nrrr6rrz in zTXt chunkrrr)rQr rrrBr_rGr]r=r{rurrrr ) rSrarbrCrrrrFr r!s r7 chunk_zTXtzPngStream.chunk_zTXtNs6ww"""  & 1 775!$DAq A$KK ! / }NKCc" " %ae,A HHY1EHHY 2E8= =DLL $,,u"5  " "3u: .7 AA  ..zz A s)C&C' C$#C$'DDDcF|jJtj|j|x}} |jdd\}}t |dkr|S|d|d|dd}}} |jdd\}} } |dk7r|dk(r t | } n|S|dk(r| |jd< |jdd} |jd d} | jd d} | jd d}t|| | x|j| <|j| <|jt ||S#t$r|cYSwxYw#t$r|cYSwxYw#t$rtjr|cYStj$r|cYSwxYw#t$r|cYSwxYw) Nrrr&rsXML:com.adobe.xmpxmprrr)rQr rrrBr rGr]r=r{rrurrrr)rSrarbrrCrcfcmrtkrr lang_strtk_strr!s r7 chunk_iTXtzPngStream.chunk_iTXtqsww"""$$TWWf55A 775!$DAq q6A:HaD!A$!"B ''%+KD"a 7Qw-a0A $ $"#DLL  HHY1E{{7H5HYYw1FHHWh/E59&4QQ Udll51 s5z*G H  H  " 66 zzH H sND8'E  E+AF8 EE EEF7FF F F c|jJtj|j|}d|z|jd<|S)NExifexif)rQr rrrs r7 chunk_eXIfzPngStream.chunk_eXIfs@ww"""  & 1.2 Vr6c|jJtj|j|}|dkrtjr|Sd}t ||j d|_t jd|St|}|dk(s|dkDrt jd|S||_t|d|jd<d|_ |S) Nr(z"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possiblerlr'loopz image/apng) rQr rr]rBrwarningswarnr[rr)rSrarbrCrFn_framess r7 chunk_acTLzPngStream.chunk_acTLsww"""  & 1 A:..6CS/ !    '#D  MMP QHq6 q=Hz1 MMP QH#"1ay V".r6c|jJtj|j|}|dkrtjr|Sd}t |t |}|j |dk7s|j |j |dz k7r d}t|||_t |dt |d}}t |dt |d } }|j\} } ||z| kDs| |z| kDr d }t||| ||z| |zf|jd <t|d t|d } } | dk(rd} t| t| z dz|jd<|d|jd<|d|jd<|S)Nz"APNG contains truncated fcTL chunkrr#APNG contains frame sequence errorsr'r(rr)zAPNG contains invalid framesrddurationdisposalblend) rQr rr]rBr[rr_rrrfloat)rSrarbrCrFseqwidthheightrrim_wim_h delay_num delay_dens r7 chunk_fcTLzPngStream.chunk_fcTLs~ww"""  & 1 B;..6CS/ !!f MM !cQh MM %$--37*B7Cc" " Aq 3q!9vQSBZB\\ d : V d 20Cc" " "BU BK@ V"1bz3q":9 >I#(#3eI6F#F#M Z #$R5 Z !" Wr6cx|jJ|dkr?tjr"tj|j|}|Sd}t |tj|jd}t |}|j |dz k7r d}t|||_|j|dz|dz S)Nr'z"APNG contains truncated fDAT chunkrr:) rQr r]rrBr[rr_r)rSrarbrCrFrEs r7 chunk_fdATzPngStream.chunk_fdATsww""" A:..((&96CS/ !  ! ,!f ==C!G #7Cc" " sQw 33r6r)rrrrr)rarrbrrr)rarrbrrr)r/r0r1rTrrrrrrrrrrrrrr"r$r-r1r7rLrN __classcell__rs@r7rrsn"" 2 8* *"$(!F)V*<4r6rc,|jtSrP) startswith_MAGIC)prefixs r7_acceptrUs   V $$r6ceZdZdZdZddZeddZddZddZ dddZ ddZ dd Z dd Z dd Zdd Zdfd ZxZS) PngImageFilePNGzPortable network graphicscFt|jjds d}t||j|_d|_g|_t|j|_ |jj\}}} |jj|||}|jj%||Y#t$rYnvt$rktjd|||tj|j|}|ddj!r|j j#||fYwxYw|jj&|_|jj*|_|jj.|_d|_|jj4|_|jj8|_|jj<xsd|_|j0jAdd|_!|jjDr4|jjD\}}tGjH|||_%|d k(r |d z |_&n||_&|jj<d|_'|jjQ|jL|_)|jjU|_+|jBr|xj>dz c_|jYd|j>dkD|_-y) Nr(znot a PNG filer%r %s %s (unknown)rr&rFfdATr').rUrQrYr__fp_PngImageFile__frameprivate_chunksrpngrvrAttributeErrorrrrsr rislowerrlrr_moder_sizerr_textrrrcustom_mimetyperr6getrrr rawpalette_PngImageFile__prepare_idat!_close_exclusive_fp_after_loadingr_PngImageFile__rewind_idatrZ_PngImageFile__rewind_seek is_animated)rSrFr`rarbrCrawmoderJs r7_openzPngImageFile._openshtww||A'"Cc" "77 VX%.tww%7 $xx}} Cf 9HHMM#sF3 HHLLa ! ! 9 13VD((&9q8##%''..Qx8  9XX%% XX%% HH$$ 37 HH$$ #xx::,,1 !YY]]?EB 88   HH//MGT'++GT:DL '>"(1*D "(D  88   +5:D 2 HH "!%!4!4D  HHMMODM!! " JJqM==1,s C EA0EEc|jc|jr*|j}|j|jdz |j |jr|j|jJ|jS)Nr)rdrnr]rXr6load)rSframes r7rzPngImageFile.text:so ::   $--!+, IIK % zz%%%zzr6cp|j d}t||jj|jdddz |jJ|jj |jj |jr|jj d|_y)zVerify PNG fileNz)verify must be called directly after openrr&r()rQ RuntimeErrorrXrr_rrg _exclusive_fp)rSrFs r7rzPngImageFile.verifyJs 77?=Cs# #  TYYq\!_q()xx###      GGMMOr6cH|j|sy||jkr|jdd|j}t|jdz|dzD]} |j|y#t$r$}|j |d}t ||d}~wwxYw)NrTrzno more images in APNG file) _seek_checkr]rmrangerrX)rSrs last_framefr~rFs r7rXzPngImageFile.seek\s&  4<<  JJq$ \\ t||a'3 +A + 1  + + *%3sm* +s A44 B!=BB!c |jJt|jtr|jj|d}|dk(r3|r|jj |j |jj|j|_ d|_ |jj|_ |jj|_|j|_d|_d|_|jj%dd|_|jj%d|_|jj%d|_|jj%d}d|_n_||j,dzk7rd|}t/||j1|j"r0|j2j5|j"|j6|j2j9|_|j|_|jr1t;j<|j|jd|_ d} |jj?d  |jj?\}}}|d k(r d }tG||d k(r|r d}tE|d } |jjI||||r||_|j 2|j(tRjTk(rtRjV|_d|_|j(tRjTk(rX|j rK|j j9|_|jY|j"|j6|_yy|j(tRjVk(retZj\j_|j`|jb|_|jY|j"|j6|_yy#t@jBtDf$rYnwxYw#tJ$rYntF$r9|dk(r|d z}|r ||_ Ynjt;j<|j|YtL$r<tNjQd|||t;j<|j|YwxYw||_|jj|_|jj%d|_|jj%d|_|jj%d}|jrd}tG|)NrrFrArCrrzcannot seek to frame Tr'rzNo more images in APNG filefcTLzAPNG missing frame datar[rZzimage not found in APNG frame)2r_rr\rexrXrlrrkri_imrrrrrQ_prev_imdisposerfr dispose_opblend_opr]rBrrimpastedispose_extentrr rrYrzr{r_rrvUnicodeDecodeErrorr`rrrsr.r4r3_cropr corefillmodesize) rSrsrrrF frame_startr`rarbs r7rmzPngImageFile._seekksxx### dhh .((++   A: dmm,!&*&8&8# HH,,  HH,, (( DMDL!%!FD "iimmJ7DO IIMM'2DM!YY]]62NDL q((-eW5 o% IIK|| dllD,?,?@ GGLLNDMhhDG""$$TWWd.A.AB&'#K Q'+xx}}$Cf'>7C"3-''>"7)#.."&K :HHMM#sF3'T ESD  == T__8L8L%L&44DO ??h22 2}}#}}113 #zz$,,8K8KL __ 6 6 6 ::??499dii@DL::dllD4G4GHDL7c k2*:g~! &28D/!((&9%:LL!5sCH((&9:!DL((DI"iimmJ7DO IIMM'2DM!YY]]62N995sm#s76P!=Q!P=<P= S S( S ASSc|jSrP)r]rds r7rZzPngImageFile.tells ||r6c|jjdr|jdz|_|j|_t j j |y)z"internal: prepare to read PNG filer)rN)rrf decoderconfigri_PngImageFile__idatr load_preparerds r7rzPngImageFile.load_preparesH 99== %!%!3!3d!:D )) ((.r6cH|jJ|jdk(r|jjd|jj\}}}|dvr|jj |||y|dk(r) |jj ||||dz |_n||_|jdk(r|dkr |j}nt||j}|j|z |_|jj|S#t $rYwxYw)zinternal: read more image datarr')IDATsDDATr[r6r[)r_rrQrYrnrvrmin)rS read_bytesr`rarbs r7 load_readzPngImageFile.load_readsxx###kkQ GGLLO#xx}} Cf55 c3/g~HHMM#sF3%qj $ %kkQ* ?JZ5JkkJ. ww||J'' s?D D! D!c|jJ|jdk7r%|jj|j |jjd |jj\}}}|dk(rnU|dk(r1|jr%d|_|jj|||n |jj||||jj.|_|js"|jj3d|_y|j4rO|j6t8j:k(r0|j=|j>|j@}|j>jBd k(r.d |jDvr |jGd |jDd }n|j>jBdk(r`d |jDvrR|jDd }tI|tJr|jM|n!tI|tNr|jQ||jSd }|j4jU||j@||j4|_yyy#tj t f$rYwxYw#t$rYt$rZ|dk(r|dz} tj|j|n*#t$r}tj rYd}~Y&|d}~wwxYwY4t"$rmt$j'd|||tj|j|}|d d j)r|j*j-||dfYwxYw)z%internal: finished reading image dataNrTr'rr}r[rZrr&rrr%r )+r_rrQrYrzr{r_rnrirnrvrrr rrr]r`rrrsrar^rlrrdrgrrr9r;rrrrrconvert_transparentrrputpalettealphasrputpalettealphaconvertr) rSr`rarbr~rCupdatedmaskts r7load_endzPngImageFile.load_endsxx### ;;!  GGLL % GGLLO #'88==? S&g~D$4$4&'# c3/ ? c3/#FXX%%  HHNN DH}}%--!?**TWWd.A.AB77<<5(^tyy-H"66 . 9Dww||s*~/J IIn5%a/#44Q7'3/#33A6"??62D ##GT-@-@$G--"@}GLL+.  &  '>aKF ((&9  66  : " ? 13VD((&9q8##%''..Q~>  ?sa I?;J?JJ N+N> KN L(L8N?LLN A1NNcd|jvr|jd|jvrd|jvry|jjS)Nr0zRaw profile type exif)rrrgetexif_get_merged_dictrds r7_getexifzPngImageFile._getexif;sG  " IIK  "'>dii'O||~..00r6c\d|jvr|jt| S)Nr0)rrrrr)rSrs r7rzPngImageFile.getexifBs%  " IIKw  r6r)rzdict[str, str | iTXt])rsrrrr)rsrrrrr)rr)rrrr)rzdict[int, Any] | None)rz Image.Exif)r/r0r1formatformat_descriptionrppropertyrrrXrmrZrrrrrrOrPs@r7rWrWs` F4A-F  $ +bIH/ (D<(|1!!r6rW)rr)L;1rr)rr)rr)rr)r$rr)rr)r!r)r"rr)r#rr)r rr)rrr)r%r)rrrrrr$rrrr!r"r#r rr%cdj|}|jtt||z|j|t |t |}|jt|y)z'Write a PNG chunk (including CRC field)r6N)joinwriteo32r rL)rQr`rJ byte_datars r7putchunkr`sWIHHSY 3 &'HHY F3K (CHHSXr6ceZdZddZddZy)_idatc ||_||_yrP)rQchunk)rSrQrs r7rTz_idat.__init__ns r6c>|j|jd|y)Nr)rrQrSrJs r7rz _idat.writers 477GT*r6N)rQrrCallable[..., None]rrrJrrrr/r0r1rTrr5r6r7rrks +r6rceZdZddZddZy)_fdatc.||_||_||_yrP)rQrr)rSrQrrs r7rTz_fdat.__init__ys  r6c|j|jdt|j||xjdz c_y)Nr[r)rrQrrrs r7rz _fdat.write~s/ 477GS%6=  r6N)rQrrrrrrrrrr5r6r7rrvs  r6rc,eZdZUded<ded<ded<y)_Frame Image.Imagerz tuple[int, int, int, int] | Nonerzdict[str, Any] encoderinfoNrr5r6r7rrsO **r6rcF |jjd}|jjd|jjdd}|jjd|jjdtj} |jjd|jjdt j } |rtj|} ntj|g|} g} d} | D]}tj|D]}|j|k(r|j}n|j|}|jj}t|tt fr || |d<n"| d|jvr|jd|d<t| tt fr| | |d<t| tt fr| | |d<| dz } | r| d}|jjd}|jjd}|tj"k(rt%| dkrtj&}|tj&k(r|j(j}t*j,j/d |j0d }|j2}|r|j5|}nd |j0z}|j7||n/|tj"k(r| d j(}n |j(}t9j:|jd |jd }|j=d }|sJ||jdk(r6||jdk(r"d|vr|jdxx|dz cc<d}| j?tA|||t%| dk(r|s| dj(S||dtCt%| tC||rz|j|k7r|j|}tEjF|tItJtLtO||tEjPdd |j0zd|gd}tS| D]\}}|j(}|j2sd |j0z}n|j2}|j5|}|j0}|j}tUtW|jdd}|jd| }|jd| }||dtC|tC|dtC|dtC|dtC|dtY|tYdt[|t[| |dz }|dk(r^|s\tEjF|tItJtLtO||tEjPdd |j0zd|gt]|||}tEjF|tItJtL|tEjPdd |j0zd|g|j^}y)Nr?r3rrArCrr&r%)rrrrrF) alpha_onlysacTLrr}r>)0rrfrr.r2r9r: itertoolschainr Iteratorrrrrlistr r4r r3rr rrrrcroprr subtract_modulogetbboxrlrrr _saverrrrr enumeraterroundo16rrr) rrQrrror append_imagesr?r3rArCr im_frames frame_countim_seqim_framerprevious prev_disposal prev_blendbase_imrrdeltarrs frame_datarframe_durationframe_disposal frame_blend fdat_chunkss r7_write_multiple_framesrs~~!!*-H >>  fbggkk&!&< =D~~!!*bggkk*hFVFV.WXH NN  w GU__(M NE .m4 IK3B%..v62 BH}}$#==?#++D1..--/K(T5M2*2;*? J'!jHMM&A*2-- *C J'(T5M2*2;*? J'%$/',['9 G$ 1 K$R= ( 4 4 8 8 D %1155g>  H$8$88S^a=O$,$:$:M H$:$::&kk..0G#jjoofbgg|LG#==D"),,t"4%/MM'40"h&:&::'m..G&kkG"22$$V,goof.E}}}6%)DD"koog&>>"k1((4 J8OO4   VHdK@ Ae2 B3Bj 9~=|   C N D  77d?D!B  EE"e, - __UFRWW$4a A B G&y1**z==HMM)D??D}}T*H}} ,, U;??:q#ABC$X>!oogu5    L QL QL QL QL   I ~  {O  1  A:m OORYb% 01(>7KL   E73K OORY ,(>7KL  "))GU**V r6c"t|||dy)NT)save_all)r)rrQfilenames r7 _save_allrs "b(T*r6c <(|r |jjd|jjd}t}t(|jjdg}t j |g|D]R}t j|D]8} |j| j(j| j:TdD]} | |vsn|j} t(fdtdD} n|j} |j} | } | dk(rd|jvrtd|jdzd } nL|jr>t!tt#|jj%dd zd d} nd } | d kr| dkrd}n | d krd}nd }| d |z } |jjdd|jjdd|jjdd|jjddf|_ t(| \}}}| dk(rt/ddd |j1t2||dt5| dt5| d||ddd gd}|jjd|jjd}|r8d }|d!zt7j8|z}||d"||j;d#|jjd$}|rgd%}|j<D]o}|dd\}}||vr|j;|||||+||vr ||||:|ddj?sNt#|d k(xr|d}|rf||||q|jdk(rO d z}|j@jCd&d|}t#||kr|dz }t#||kr||d'||jjd(|jjd(d}|s|dk(r|jdk(rM } tE|tFr||d)|d| nt!dtd*|}d+|zdz}!||d)|!d| n|jd,vr*t!dtd-|}||d)tI|n|jd&k(r2|\}"}#}$||d)tI|"tI|#ztI|$znrd(|jvrdd.}t-||jdk(rH|j@jKd/k(r+|j@jCd/d0}! } ||d)|!d| |jjd1}%|%rB||d2t5tM|%dd3z d4zt5tM|%dd3z d4zd5|r=d6d7g}|j<D]*}|dd\}}||vs|j;|||||,|jjd8}&|&rKtE|&tNjPr|&jSd9}&|&jUd:r|&d;d}&||d<|&|}'|rtW|||| |}'|'rZtYjZ|'t]t^tFta||tYjbd=d>|'jzd|g|rO|j<D]@}|dd\}}|ddj?st#|d k(xr|d}|s7||||B||d?dte|d@r|jgyy#t*$r}d| d}t-||d}~wwxYw)ANrr)r%rr c3HK|]tfdDyw)c3(K|] }| ywrPr5)r frame_sizers r7r z"_save...4s?:A?sN)max)rrsizess @r7r z_save..4sRAS???Rs"r&r bitsrr*r)r';optimizeFcompress_levelr compress_type dictionaryr6zcannot write mode z as PNGrzSaving I mode images as PNGr) stacklevelsIHDRrr)scHRMscICPsgAMAssBITsRGBstIMErs ICC ProfilersiCCPrpnginfo)ssPLTrrrrsPLTErstRNS)rrrriz%cannot use transparency for this moder%ArspHYsrg?rsbKGDshISTr0r(r/r+seXIfrrrflush)4rrfrsetrrr rrrrrWr ryrrhrr getdata encoderconfig _OUTMODESKeyErrorrrrrSrr=rremoverrar getpaletterrrgetpalettemoderr ExiftobytesrRrr rrrrrhasattrr))rrQrrrrmodesrrrrroutmodecolorsrro bit_depth color_typer~rFriccnamerJrchunks_multiple_allowed info_chunkr`rpalette_byte_number palette_bytesr alpha_bytesalpharedgreenbluerr0 single_imrs) @r7rrsd** RWW[[9 **?B? oordM: )F)226: ) (--( (--( ) )) Du} 99;DRqRRwwwwG s{ R^^ #bnnV44c:FzzSRZZ%7%7%9!%>  i (D "F++ )J"2AICf} c"b#t$//b#t$Qq!!# _1Cjm !"c4( ) ww#~$qj((/0D1DE - #66 U "M- #66 b'=)>>%%nbggkk.RV6WXL|q( 77c> K,.b'< #=>"1c#|&<= ,.6b'5+#67 WW/ /q#e\":;L "gs<0 1 WW + C "gs3x#e*4s4y@ A/>cl" 77c>bee224>EE$$VS1E K "gu\k2 3 ..  U #C    CFVOc)* + CFVOc)* +    7#++ %J"2AICf} c"b#t$  % >>  f %D dEJJ '<<?D ??? +8D b'4 $&I* E4-   EE"e, - __UFY^^$;Q H I  ++ )J"2AIC1Qx! _1Cjm "c4(  ) "gsr7  _ ""4&0cl!"s: ];; ^^^c pddlm}gdfd }|} ||_t||d||`S#|`wxYw)z4Return a list of PNG chunks representing this image.r)BytesIOcdj|}tt|t|}j|||fy)Nr6)rrrLrl)rQr`rJrrrs r7rlzgetchunks..appends8HHTN &F3K01 sIs+,r6rrQrr`rrJrrr)iorrr)rparamsrrlrQrs @r7 getchunksr!sF F- B b"b&! N M Ns15z.pngz.apngz image/png)rCrrr)r)rJrrKrrr)rTrrrr)rrrQrrrrrrorrImage.Image | Nonerzlist[Image.Image]rr")rrrQrrrrr) rrrQrrrrrrrrr)rrr rrz list[tuple[bytes, bytes, bytes]])O __future__rrloggingrerzr4r=enumrtypingrrrrr r r r r _binaryrrrr[rrrrr _deprecater_utilr TYPE_CHECKINGcollections.abcrrrr getLoggerr/rrcompilerr\rSrr SAFEBLOCKr@rr.r9rGrLrNrrrrrrUrWrrrrrrrrr! register_openr register_saveregister_save_allregister_extensions register_mimer5r6r7r5sB#  ''GG!!!!!  ($   8 $ L ! ' '                !+ 2"**01$$ ~%w* G /[[|36Y3Y3@: d4 d4V %S!9&&S!v ! $ $ $ " $ ' ( $ $ $ $ &!  (++   Z KKK K  K  K & K%KK\+"* PPPP  P  P  Pn2L''w?L''/ ++Y7,--/@AL''5r6