+
     ]i8  c                   s   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHt ^ RIt^ RIHtHt ^ RIHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	I H!t! ^ R
IH"t" ^ RI#H$t$H%t% ]PL                  ! ]'4      t(R t)]
PT                  ! R4      t+R t,R t-R t.R t/ ! R R4      t0R t1R t2RRRRRR/t3R t4R t5 ! R R]4      t6 ! R R]4      t7]t8R t9]Pt                   ! R! R"]4      4       t;R# )#    N)BytesIO)Image)cbookfont_manager)_BackendFigureCanvasBaseFigureManagerBaseRendererBase)MixedModeRenderer)rgb2hex)UTC)Path)_path)Affine2DAffine2DBasec                 sr    V P                  R R4      p V P                  RR4      p V P                  RR4      p V # )&&amp;<&lt;>&gt;replaces   &F/usr/lib64/python3.14/site-packages/matplotlib/backends/backend_svg.py_escape_cdatar   E   s7    			#wA			#vA			#vAH    z-(?=-)c                 sD    \        V 4      p \        P                  R V 4      # )z- )r   _escape_xml_commentZsubr   r   r   _escape_commentr   O   s    aA""4++r   c                 s    V P                  R R4      p V P                  RR4      p V P                  RR4      p V P                  RR4      p V P                  RR	4      p V # )
r   r   'z&apos;"z&quot;r   r   r   r   r   r   r   r   _escape_attribr"   T   sW    			#wA			#x A			#x A			#vA			#vAHr   c                 s    R V 9  d   R \        V 4      ,           R ,           # RV 9  d   R\        V 4      ,           R,           # R \        V 4      ,           R ,           # )r!   r    )r   r"   r   r   r   _quote_escape_attribr#   ]   sS    ,/qLC-""S( +,/qLC-""S(+.##c)+r   c                sF    V R P                  R4      P                  R4      # )z|
Create a short string representation of a float, which is %f
formatting with trailing zeros and the decimal point removed.
Zf0.)Zrstrip)xr   r   _short_float_fmtr'   c   s"    
 U??3&&s++r   c                   sp   a  ] tR t^kt o RtR tRR lt/ 3R ltR tR t	RR lt
R	 tR/ 3R
 ltR tRtV tR# )	XMLWriterz=
Parameters
----------
file : writable text file-like object
c                s    VP                   V n        \        VR 4      '       d   VP                  V n        ^ V n        . V n        . V n        RV n        R# )flushNz@                                                                )write_XMLWriter__writeZhasattrr)   _XMLWriter__open_XMLWriter__tags_XMLWriter__data_XMLWriter__indentation)selfZfile   &&r   __init__ZXMLWriter.__init__r   sB    zz4!!DJ%r   c                s.   V P                   '       d3   V'       d   V P                  R 4       MV P                  R4       ^ V n         V P                  '       d?   RP                  V P                  4      pV P                  \	        V4      4       . V n        R# R# )>
r    N)r,   r+   r.   joinr   )r0   indentdata   && r   Z__flushZXMLWriter.__flush{   se    ;;;U#S!DK;;;774;;'DLLt,-DK r   c                s   V P                  4        \        V4      p. V n        V P                  P	                  V4       V P                  V P                  R\        V P                  4      ^,
           4       V P                  RV 24       / VCVCP                  4        F<  w  rEV'       g   K  \        V4      p\        V4      pV P                  RV RV 24       K>  	  ^V n
        \        V P                  4      ^,
          # )a  
Open a new element.  Attributes can be given as keyword
arguments, or as a string/string dictionary. The method returns
an opaque identifier that can be passed to the :meth:`close`
method, to close all open elements up to and including this one.

Parameters
----------
tag
    Element tag.
attrib
    Attribute dictionary.  Alternatively, attributes can be given as
    keyword arguments.

Returns
-------
An element identifier.
Nr    Z=)_XMLWriter__flushr   r.   r-   appendr+   r/   lenitemsr#   r,   )r0   tagattribextrakvs   &&&,  r   startZXMLWriter.start   s    & 	C 3T''(=T[[)9A)=>?qY'v''--/DAq!!$(+q1QC[)	 0
 4;;!##r   c                s    V P                  4        V P                  V P                  R\        V P                  4       4       V P                  R\        V4       R24       R# )z\
Add a comment to the output stream.

Parameters
----------
comment : str
    Comment text.
Nz<!-- z -->
)r:   r+   r/   r<   r-   r   )r0   commentr1   r   rD   ZXMLWriter.comment   sK     	T''(9T[[)9:;u_W56f=>r   c                s<    V P                   P                  V4       R# )z`
Add character data to the output stream.

Parameters
----------
text : str
    Character data.
N)r.   r;   )r0   textr1   r   r7   ZXMLWriter.data   s     	4 r   Nc                sr   V'       d^   V P                   '       g   Q RV R24       h\        V4      V P                   R
,          8X  g   Q RV P                   R
,           RV 24       hMV P                   '       g   Q R4       hV P                   P                  4       pV P                  '       d   V P	                  V4       M,V P
                  '       d   ^ V n        V P                  R4       R# V'       d2   V P                  V P                  R\        V P                   4       4       V P                  RV R	24       R# )z
Close the current element (opened by the most recent call to
:meth:`start`).

Parameters
----------
tag
    Element tag.  If given, the tag must match the start tag.  If
    omitted, the current element is closed.
indent : bool, default: True
zunbalanced end()zexpected end(z), got zunbalanced end()z/>
Nz</r3   )	r-   r   popr.   r:   r,   r+   r/   r<   )r0   r>   r6      &&&r   endZXMLWriter.end   s     ;;;8/#a 88; %R8 >B0u=>8 ;;;2 22;kkoo;;;LL [[[DKLL LL++,=S-=>?r#c]#r   c                s^    \        V P                  4      V8  d   V P                  4        K,  R# )z
Close open elements, up to (and including) the element identified
by the given identifier.

Parameters
----------
id
    Element identifier, as returned by the :meth:`start` method.
N)r<   r-   rJ   )r0   idr1   r   closeZXMLWriter.close   s#     $++#HHJ $r   c                s    V P                   ! W3/ VB  V'       d   V P                  V4       V P                  RR7       R# )z
Add an entire element.  This is the same as calling :meth:`start`,
:meth:`data`, and :meth:`end` in sequence. The *text* argument can be
omitted.
F)r6   N)rC   r7   rJ   )r0   r>   rE   r?   r@   s   &&&&,r   elementZXMLWriter.element   s1     	

3(%(IIdOr   c                s    R# )zFlush the output stream.N r0   r   r   r)   ZXMLWriter.flush   s    r   )Z__dataZ__indentationZ__openZ__tagsZ__writer)   T)NT)__name__
__module____qualname____firstlineno__Z__doc__r2   r:   rC   rD   r7   rJ   rL   rM   r)   __static_attributes____classdictcell__)__classdict__s   @r   r(   r(   k   sI     & !# $B?	!$: !%R 	 r   r(   c           
      sl   . pV  F  w  r#VR 8X  d   VR8X  g$   VR8X  g   VR8X  d   VR	8X  g   VR8X  d
   VR
8X  d   K8  VR8X  d'   \        V\        4      '       d   VP                  4       pVP                  RP	                  VRP                  R V 4       4      4      4       K  	  RP                  V4      # )scale	translaterotatematrixz{}({})r9   c              3   8   "   T F  p\        V4      x  K  	  R # 5iNr'   ).0r&      & r   	<genexpr>Z&_generate_transform.<locals>.<genexpr>  s     >1+A..   )   )rc   rc   )r    r    )r    )
isinstancer   Z	to_valuesr;   formatr5   )Ztransform_listZpartstypeZvalues   &   r   _generate_transformrg      s    E%GO$%6/;&5F?8#8
5, ? ?OO%EX__#((>>>@ 	A & 88E?r   c                 sN    R P                  R V P                  4        4       4      # )z; c              3   s4   "   T F  w  rV R V 2x  K  	  R# 5i)z: NrN   )r_   rA   rB      &  r   ra   Z _generate_css.<locals>.<genexpr>
  s     <^TQs"QC[^s   )r5   r=   r?   r   r   _generate_cssrj   	  s    99<V\\^<<<r   Z
projectingZsquarebuttroundc                 sh    \        V \        4      '       g   \        R V R\        V 4       R24      hR# )Invalid type for z metadata. Expected str, not r%   N)rd   str	TypeErrorrf   )infokeyr1   r   _check_is_strrr     s;    dC  +C50M:,a) * 	* !r   c           	      s    \         P                  ! V 4      '       d=   V  F4  p\        V\        4      '       d   K  \	        R V R\        V4       R24      h	  R# \	        R V R\        V 4       R24      h)rm   z) metadata. Expected iterable of str, not r%   z0 metadata. Expected str or iterable of str, not N)npiterablerd   rn   ro   rf   )Zinfosrq   rp   r8   r   _check_is_iterable_of_strru     s    	{{5DdC(("3C5 988<T
|1!F G G 
 +C5 1004U}A? @ 	@r   c                   s$  a a ] tR tRt oR&RR/V 3R llltR tR tR tR tR	 t	R
 t
R tR tR tR tR tR tR'R ltR tR tR(R ltR'R ltR'R ltV 3R ltR tR tR tR tR'R ltR tR tR'R ltR'R  lt R)R! lt!R" t"R# t#R$ t$R%t%Vt&V ;t'# )*RendererSVGi!  Nmetadatac               s  < Wn         W n        \        V4      V n        WPn        Vf&   \        VRR4      p\        V\        4      '       g   RpW@n        / V n	        \        P                  ! 4       V n        / V n        / V n        / V n        ^ V n        / V n        RV n        ^ V n        \(        S	V `U  4        \-        4       V n        \1        V4      p\1        V4      pVP3                  \4        4       V P                  P7                  RV R2V R2RV RV 2RR	\8        P:                  R
,          RR/R7      V n        V P?                  V4       V PA                  4        R # )Nnamer4   FsvgZptz0 0 r9   zhttp://www.w3.org/2000/svgz1.1zsvg.idzxmlns:xlinkzhttp://www.w3.org/1999/xlink)widthheightZviewBoxZxmlnsZversionrK   r?   )!rz   r{   r(   writer	image_dpiZgetattrrd   rn   basename_groupd	itertoolsZcount_image_counter_clip_path_ids_clipd_markers_path_collection_id_hatchd_has_gouraud_n_gradientssuperr2   dict
_glyph_mapr'   r*   	svgPrologrC   mplrcParams	_start_id_write_metadata_write_default_style)
r0   rz   r{   Z	svgwriterr~   r}   rw   Z
str_heightZ	str_width	__class__s
   &&&&&&$  r   r2   ZRendererSVG.__init__"  sB   
	*"y&"5Hh,, 'oo/ #$ !&%f-
$U+		"**Kr" \$9+Qzl3.||H%!#AB + D 	X&!!#r   c                s    WP                   9  d#   \        V P                   4      V P                   V&   V P                   V,          # )a^  
Returns a stable and unique identifier for the *clippath* argument
object within the current rendering context.

This allows plots that include custom clip paths to produce identical
SVG output on each render, provided that the :rc:`svg.hashsalt` config
setting and the ``SOURCE_DATE_EPOCH`` build-time environment variable
are set to fixed values.
)r   r<   )r0   clippathr1   r   _get_clippath_idZRendererSVG._get_clippath_idJ  s<     ...,/0C0C,DD)""8,,r   c                s    V P                  4        V P                  4        V P                  P                  V P                  4       V P                  P                  4        R # r]   )_write_clips_write_hatchesr|   rL   r   r)   rO   r   r   finalizeZRendererSVG.finalizeX  s@    $..)r   c                st	  a Vf   / pRRRRRR\         P                   R2/VCpV P                  oRV9   d)   VR,          p\        VR4       SP	                  R	VR
7       VP                  RR 4      pVEeC   \        V\        4      '       d   V.pEM\        V\        P                  \        P                  34      '       d   VP                  4       .pM\        P                  ! V4      '       d   . pV F  p\        V\        4      '       d   VP                  V4       K,  \        V\        P                  \        P                  34      '       d"   VP                  VP                  4       4       K}  \        R\        V4       R24      h	  M\        R\        V4       R24      hRP!                  V4      VR&   MRV9  d   \"        P$                  ! R4      pV'       dj   \        P                  P'                  \)        V4      \        P*                  P,                  4      pVP/                  \0        R7      P                  4       VR&   M/\        P                  P3                  4       P                  4       VR&   R pV3R lpVP5                  RR 4      pVe   V! V4      pSP	                  RRV/R7       R FR  p	VP5                  V	R 4      p
V
f   K  V! V4      p\        W4       SP	                  RV	P7                  4        2V
R
7       KT  	  R  F  p	VP5                  V	R 4      pVf   K  \        V\        4      '       d   V.p\9        W4       V! V4      pSP;                  RV	P7                  4        24       V F8  pSP;                  R4       SP	                  RVR
7       SP=                  R4       K:  	  SP=                  RV	P7                  4        24       K  	  VP5                  RR 4      pVe   \        V\        4      '       d   V.p\9        VR4       V! V4      pSP;                  R4       SP;                  R4       V F  pSP	                  RVR
7       K  	  SP=                  R4       SP=                  R4       Ve   SP?                  V4       V'       d"   \A        RRP!                  V4      ,           4      hR # )!NFormatzimage/svg+xmlZTypez&http://purl.org/dc/dcmitype/StillImageCreatorzMatplotlib vz, https://matplotlib.org/Titletitle)rE   DatezQInvalid type for Date metadata. Expected iterable of str, date, or datetime, not r%   z[Invalid type for Date metadata. Expected str, date, datetime, or iterable of the same, not Z/ZSOURCE_DATE_EPOCH)Ztzinfoc           	      s   < V e   V # SP                  R4      p SP                  RRRRRRR/R	7       SP                  R
4       V # )Nrw   zrdf:RDFzxmlns:dcz http://purl.org/dc/elements/1.1/zxmlns:cczhttp://creativecommons.org/ns#z	xmlns:rdfz+http://www.w3.org/1999/02/22-rdf-syntax-ns#ri   zcc:Work)rC   )midr|      &r   ensure_metadataZ4RendererSVG._write_metadata.<locals>.ensure_metadata  sU    
,,z*CLL><J,L 
 LL#Jr   zdc:typezrdf:resourceri   zdc:zcc:Agentzdc:titleZKeywordsz
dc:subjectzrdf:Bagzrdf:liz.Unknown metadata key(s) passed to SVG writer: ,)	r   ZCoverager   ZDescriptionr   Z
IdentifierZLanguageZRelationZSource)r   ZContributorZ	PublisherZRights)!r   __version__r|   rr   rM   getrd   rn   datetimedateZ	isoformatrs   rt   r;   ro   rf   r5   osZgetenvZfromtimestampZintZtimezoneZutcr   r   ZtodayrH   Zlowerru   rC   rJ   rL   
ValueError)r0   rw   r   r   Zdatesdr   r   Zurirq   rp   ZagentsZagentZkeywordsZkeywordr|   s   &&             @r   r   ZRendererSVG._write_metadata^  s    Ho<s//HI	

 
 hW%E%)NN7N/ ||FD)$$$D8#4#4hmm"DEE)*T""A!!S))Q#A(9(98=='IJJQ[[]3'##'7)1./ /    #448J<q!B C C  #xxHV8# 9901D((66s4y(BSBSBWBWX#'<<s<#;#E#E#G #+#4#4#:#:#<#F#F#H 
	 ll64(?!#&CNN9nc-BNCDC<<T*D%c*d(SYY[M2>D EC\\#t,F~&#&& %f2!#&CLL3syy{m,-Z(z6

:&   JJSYY[M*+! E& <<
D1(C(($:%h
;!#&CLL&LL##xg6 $JJy!JJ|$?LLM XXh/0 1 1 r   c                s    V P                   p\        R RRR/4      pVP                  R4       VP                  RRRV,          R7       VP	                  R4       R	# )
stroke-linejoinrl   stroke-linecaprk   defsstyleztext/cssz*{%s})rf   rE   N)r|   rj   rC   rM   rJ   )r0   r|   Zdefault_stylerh   r   r   Z RendererSVG._write_default_style  sU    %wf'& ' 	VwZg6MN

6r   c                sf   \         P                  R ,          pVf   \        \        P                  ! 4       4      p\
        P                  ! 4       pVP                  VP                  R4      4       VP                  \        V4      P                  R4      4       V VP                  4       R,           2# )zsvg.hashsaltZutf8:Ni
   N)
r   r   rn   uuidZuuid4hashlibZsha256updateZencodeZ	hexdigest)r0   rf   ZcontentZsaltms   &&&  r   _make_idZRendererSVG._make_id  s|    ||N+<tzz|$DNN	V$%	W$$V,-c*+,,r   c                sx    V\        4       P                  ^R4      P                  ^ V P                  4      ,           # rc   rG   )r   rX   rY   r{   )r0   	transformr1   r   _make_flip_transformZ RendererSVG._make_flip_transform  s-    8:++Ar2<<QLLLr   c                sZ   Ve   \        V4      pVP                  4       pVe   \        V4      pVP                  4       pVP                  4       W#V3pV P                  P                  V4      pVf7   V P                  RV4      pVP                  4       W#V3V3V P                  V&   V# Vw  rvV# )z
Create a new hatch pattern
h)tupleZget_hatch_colorZget_hatch_linewidth	get_hatchr   r   r   get_hatch_path)r0   gcrgbFaceZedgelwdictkeyoid_s   &&&     r   
_get_hatchZRendererSVG._get_hatch  s     GnG!!#;D##%<<>7"5llw';--W-C&(&7&7&97"%Ms$SDLL! 
 FA
r   c                s^   \        V P                  4      '       g   R # ^HpV P                  pVP                  R4       V P                  P	                  4        EF@  w  w  r4rVpVP                  RVRRR\        V4      \        V4      R7       V P                  V\        4       P                  V4      P                  RR4      P                  ^ V4      RR7      pVf   R	p	M\        V4      p	VP                  R
RR\        V^,           4      \        V^,           4      V	R7       R\        V4      R\        V4      R\        V4      RRRR/p
V^,          ^8  d   \        V^,          4      V
R&   VP                  RV\        V
4      R7       VP                  R4       EKC  	  VP                  R4       R # )Nr   ZpatternuserSpaceOnUser$   )rK   ZpatternUnitsr&   yrz   r{         ?Fsimplifynonerect)r&   r   rz   r{   fillr   strokestroke-widthr   rk   r   Zmiterstroke-opacitypath)r   r         )r<   r   r|   rC   valuesrn   _convert_pathr   rX   rY   r
   rM   rj   rJ   )r0   Z
HATCH_SIZEr|   r   Zfacer   r   r   	path_datar   Zhatch_style   &          r   r   ZRendererSVG._write_hatches  s   4<<  
V-1\\-@-@-B)$TcLL-C
O:  ( **
z"55d#3IIa4L	 +  I
 |t}NNC
1$5:a<(	   GFOgfo"CG$f%wK ay1}03F1I,-NN#K0  
 JJy!G .CH 	

6r   c                sv   / pVP                  4       pVP                  4       eY   RV P                  W4       R2VR&   Ve<   \        V4      ^8X  d,   V^,          R8w  d   V'       g   \	        V^,          4      VR&   MjVf   RVR&   M`\        VR,          4      R8w  d   \        V4      VR&   \        V4      ^8X  d,   V^,          R8w  d   V'       g   \	        V^,          4      VR&   V'       d2   VP                  4       R8w  d   \	        VP                  4       4      VR&   VP                  4       w  rVVe3   R	P                  R
 V 4       4      VR&   \	        \        V4      4      VR&   VP                  4       pV'       d   VP                  4       p\        V4      VR&   V'       g$   V^,          R8w  d   \	        V^,          4      VR&   VR8w  d   \	        V4      VR&   VP                  4       R8w  d   VP                  4       VR&   VP                  4       R8w  d   \        VP                  4       ,          VR&   V# )z=Generate a style string from the GraphicsContext and rgbFace.url(#rF   r   r   fill-opacityr   :Ni   Nopacityr   c              3   r\   r]   r^   )r_   Zvalr`   r   ra   Z.RendererSVG._get_style_dict.<locals>.<genexpr>G  s      2614# %%rb   zstroke-dasharrayzstroke-dashoffsetr   r   r   rl   r   rk   r   )r    r    r    )get_forced_alphar   r   r<   r'   r   r
   	get_alphaZ
get_dashesr5   ZfloatZget_linewidthget_rgbZget_joinstyleZget_capstyle_capstyle_d)	r0   r   r   r?   Zforced_alphaoffsetZseqZ	linewidthZrgbs	   &&&      r   _get_style_dictZRendererSVG._get_style_dict-  s   **,<<>%$T__R%A$B!DF6N#G(9gajC>O()9'!*)E~&!'v%2%,W%5F6NLA%'!**; ,-=gaj-IF>*BLLNc1 0 @F9mmo?), 261426 *6F%&*:5=*IF&'$$&	**,C&s|F8CFcM+;CF+C'(C)9))D~&!W,,.,<,<,>() F*+6r7H+I'(r   c                s6    \        V P                  W4      4      # r]   )rj   r   )r0   r   r   rI   r   
_get_styleZRendererSVG._get_styleZ  s    T11">??r   c                s   VP                  4       pVP                  4       w  r4Ve/   V P                  V4      pV P                  V4      \	        V4      3pM3Ve.   VP
                  w  rgrV P                  Wy,           ,
          pWgW3pM/ # V P                  P                  V4      p
V
f;   V P                  RV4      pVe   W43V3V P                  V&   MW[3V P                  V&   MV
w  rRRV R2/# )NZpz	clip-pathr   rF   )
Zget_clip_rectangleZget_clip_pathr   r   rn   Zboundsr{   r   r   r   )r0   r   Zcliprectr   clippath_transr   r&   r   wr   clipr   r   s   &&           r   _get_clip_attrsZRendererSVG._get_clip_attrs]  s    ((*#%#3#3#5 !66~FN,,X6N8KLG!!JA!QS!AQlGI{{w'<--W-C#)1(BC'HG$(/~G$FAuSE^,,r   c           
     s   \        V P                  4      '       g   R # V P                  pVP                  R4       V P                  P	                  4        F  w  r#VP                  RVR7       \        V4      ^8X  d,   Vw  rEV P                  WERR7      pVP                  RVR7       M?Vw  rxrVP                  R\        V4      \        V4      \        V	4      \        V
4      R	7       VP                  R4       K  	  VP                  R4       R # )
Nr   ZclipPathrK   Fr   r   r   r   r&   r   rz   r{   )	r<   r   r|   rC   r   r   rM   r'   rJ   )r0   r|   r   r   r   r   r   r&   r   r   r   r   r   r   ZRendererSVG._write_clipst  s    4;;V++-IDLLL,4yA~+/( ..u / >	v3!
a&q)&q)*1-+A.  0 JJz" .  	

6r   c                s   V'       d    V P                   P                  R VR7       R# V P                  P                  V^ 4      ^,           V P                  V&   V P                   P                  R V RV P                  V,          R 2R7       R# )gr   r   r   N)r|   rC   r   r   )r0   r   ZgidrI   r   
open_groupZRendererSVG.open_group  sl    KKcc*"ll..q!4q8DLLOKKc1T\\!_Q,?&@Ar   c                s<    V P                   P                  R 4       R# )r   N)r|   rJ   )r0   r   r1   r   close_groupZRendererSVG.close_group  s    r   c                s:    \         P                  R ,          '       * # )zimage.composite_image)r   r   rO   r   r   option_image_nocompositeZ$RendererSVG.option_image_nocomposite  s    << 7888r   c           
     s    V'       d   R R V P                   V P                  3pMRp\        P                  ! WW4V^. ROR4      P	                  R4      # )        NFascii)s   Ms   Ls   Qs   Cs   z)rz   r{   r   Zconvert_to_stringdecode)r0   r   r   r   r   sketchs   &&&&&&r   r   ZRendererSVG._convert_path  sK    djj$++6DD&&TVQ*E3396'?	Cr   c           	     s.   V P                  V4      pVR J ;'       d    VP                  4       R J pVP                  ;'       d    TpV P                  W%WgVP	                  4       R7      pVP                  4       e-   V P                  P                  RRVP                  4       /4       V P                  P                  ! RRV/V P                  V4      BRV P                  W4      /B  VP                  4       e   V P                  P                  R4       R # R # )N)r   r   r   a
xlink:hrefr   r   )r   )r   r   Zshould_simplifyr   Zget_sketch_paramsget_urlr|   rC   rM   r   r   rJ   )	r0   r   r   r   r   trans_and_flipr   r   r   	   &&&&&    r   	draw_pathZRendererSVG.draw_path  s    229=4??B$5$5$74$?''00D&&t'') ' +	 ::<#KKcL"**,#?@ 	@i 	@43G3G3K 	@"&//"">	@::<#KKOOC  $r   c           	     s.   \        VP                  4      '       g   R # V P                  pV P                  VV\	        4       P                  RR4      ,           RR7      pV P                  W4      p	V\        V	4      3p
V P                  P                  V
4      p\        V	P                  4        UUu/ uF   w  rVP                  R4      '       g   K  WbK"  	  upp4      p	VfW   V P                  RV
4      pVP                  R4       VP                  RWV	R7       VP                  R4       WP                  V
&   VP                  ! R/ V P!                  V4      B  VP#                  4       e-   V P                  P                  R
RVP#                  4       /4       V P%                  V4      pRRV 2/p^ ^ V P&                  ^H,          V P(                  ^H,          3pVP+                  VVRR7       Fd  w  pp\        V4      '       g   K  VRR  w  pp\-        V4      VR&   \-        V4      VR&   V P/                  W4      VR&   VP                  RVR7       Kf  	  VP#                  4       e   V P                  P                  R
4       VP                  R	4       R # u uppi )Nr   Fr   r   r   r   r   )rK   r   r   r   r   r   #)r   r   r&   r   r   useri   r   r   i)r<   verticesr|   r   r   rX   r   rj   r   r   r=   Z
startswithr   rC   rM   rJ   r   r   r   rz   r{   Ziter_segmentsr'   r   )r0   r   Zmarker_pathZmarker_transr   Ztransr   r|   r   r   r   r   rA   rB   r   r?   r   r   Zcoder&   r   s   &&&&&&&              r   draw_markersZRendererSVG.draw_markers  s9    4==!!&&8:++C66 ' 	 $$R1mE23mm( 9!"h!7  $qt 9 : ;--W-CLL NN6ceNDJJv%(MM'"5D0045::<#KKcL"**,#?@2259!C5	*1djjmT[[^4"00TE 1 ;NHd8}}}1.q1s.q1s"&//"">wuV4; ::<#KKOOC 

359s   .J
J
c                s
  < \        V4      ^ 8  d   \        V^ ,          P                  4      M^ pV P                  W4WWV4      pV^	V,          ,           ^,           V^,           V,          8  pV'       g   \        S V `  WW4WVWxWWV4      # V P
                  p. pVP                  R4       \        V P                  W#V4      4       F  w  pw  pp\        VP                  4       4      P                  RR4      pV P                  VVRR7      pRP                  V P                  VV P                  RV4      4      pVP!                  RVVR7       VP#                  V4       K  	  VP%                  R4       V P'                  VVWVWxWWV4       F  w  pppppVP)                  4       pVe   VP                  R
RV/R7       V P+                  V4      pV'       d   VP                  ! R/ VB  RRV 2R\-        V4      R\-        V P.                  V,
          4      RV P1                  VV4      /pVP!                  RVR7       V'       d   VP%                  R4       Vf   K  VP%                  R
4       K  	  V ;P                  ^,          un        R	# )r    r   r   Fr   zC{:x}_{:x}_{}r4   r   )rK   r   Nr   r   ri   r   r   r&   r   r   r   r   r   )r<   r   Z_iter_collection_uses_per_pathr   draw_path_collectionr|   rC   Z	enumerateZ_iter_collection_raw_pathsr   Z
get_matrixrX   r   re   r   r   rM   r;   rJ   Z_iter_collectionr   r   r'   r{   r   )!r0   r   Zmaster_transformZpathsZall_transformsZoffsetsZoffset_transZ
facecolorsZ
edgecolorsZ
linewidthsZ
linestylesZantialiasedsZurlsZoffset_positionZlen_pathZuses_per_pathZshould_do_optimizationr|   Z
path_codesir   r   r   r   ZxoZyoZpath_idZgc0r   url
clip_attrsr?   r   s!   &&&&&&&&&&&&&&                  r   r   Z RendererSVG.draw_path_collection  s^    .1Z!^3uQx(();;7
D q=((1,1/MM 	%7/ez	! ! 
V$-d.M.M /9 %: A i !5!5!78>>sDII""4U"CA!((((!T]]2q-ACCNN6cQN/c"%: 	

6-1-B-BJ
O.5)BGS' ++-CS,)<=--c2J/J/'m%b)%dkkB&67g6	F NN5N0

3

3).5, 	  A% r   c                s<   \         P                  ! V^ R7      pVR(,          ^ 8X  d   R# V P                  pVP                  R4       \	        ^4       EF  pW,          w  rgW^,           ^,          ,          w  rW^,           ^,          ,          w  rW%,          pW8X  d   TpTpMqW8X  d   TpT	pMfW,
          W,
          ,          pWV,          ,
          pRV,          ) pVVV,          ,
          pV) V,           VV,
          ,          pVV,          V,           pVP                  RRV P
                  R RVR	 2R
\        V4      \        V4      \        V4      \        V4      R7       VP                  RR\        R\        V4      R\        VR(,          4      /4      R7       VP                  RR\        R\        V4      RR/4      R7       VP                  R4       EK  	  VP                  R4       R\        X4       R\        X4       R\        X4       R\        X	4       R\        X
4       R\        X4       R2pVP                  RR	VR\        V4      RRRR/R7       VP                  RRRR RRRR!R"/R7       VP                  RR	VRR#V P
                  R R$2RR/R7       VP                  RR	VRR#V P
                  R R%2R!R&RR/R7       VP                  RR	VRR#V P
                  R R'2R!R&RR/R7       VP                  R4       V ;P
                  ^,          un        R# ))r    )ZaxisNr   r   ZlinearGradientZGRr&   r   r   r   )rK   ZgradientUnitsx1y1x2y2Zstop1z
stop-colorzstop-opacity)r   r   r$   zM r   z L r9   z Zr   r   r   zshape-renderingZ
crispEdgesri   r   r   r   r   filterzurl(#colorMat)zurl(#GRz_0)z_1)zurl(#colorAdd)z_2)rG   )rs   Zaverager|   rC   Zranger   r'   rM   rj   r
   rJ   )r0   Ztransformed_pointscolorsZ	avg_colorr|   r   r   r   r   r   Zx3Zy3Z
rgba_colorZxbZybZm1Zb1Zm2Zb2Zdpaths   &&&                 r   _draw_gouraud_triangleZ"RendererSVG._draw_gouraud_triangle  sr    JJvA.	R=AVqA'*FB'Q!4FB'Q!4FBJxg"'*7^Rx[27^cBh27+"Wr\LL ))!,AaU3.#B',<R,@#B',<R,@  B NN# ')"4"$4Z^$D%F G  H NN#\7:3F$2C%9 :  ; JJ'(M P 	

6 &r*+1-=b-A,B'+,A.>r.B-C%b)*!,<R,@+AE 	GI."C%|5 	 	6 	 &&)< "24 	 	5 	gd&7&7%:#>%|5 	 	6 	gd&7&7%:#>.%|5 	 	6 	gd&7&7%:#>.%|5 	 	6 	

3Qr   c           	     sN   V P                   pVP                  ! R/ V P                  V4      B  VP                  4       pV P	                  V4      pV P
                  '       g   RV n        VP                  RRR7       VP                  RRR/RR	R
R
R7       VP                  R4       VP                  RRR7       VP                  RRR/RR7       VP                  R4       \        W#4       F&  w  rxV P                  VP                  V4      V4       K(  	  VP                  R 4       R# )r   Tr   ZcolorAddr   ZfeCompositeZinZSourceGraphicZBackgroundImageZ
arithmeticr   )r?   Zin2ZoperatorZk2Zk3ZcolorMatZfeColorMatrixrf   r[   z61 0 0 0 0 
0 1 0 0 0 
0 0 1 0 0 
1 1 1 1 0 
0 0 0 0 1 )r?   r   Nr   )r|   rC   r   frozenr   r   rM   rJ   Zzipr   r   )	r0   r   Ztriangles_arrayZcolors_arrayr   r|   r   Zpointsr   r   r   draw_gouraud_trianglesZ"RendererSVG.draw_gouraud_triangles  s$   5D0045$$&	229=    $DLL   NNo.%%3    JJx LL   NN)S  U JJx !/@NF''(@(@(H&Q A

3r   c                    R # rP   rN   rO   r   r   option_scale_imageZRendererSVG.option_scale_image      r   c                s(    V P                   R ,          # )      R@)r}   rO   r   r   get_image_magnificationZ#RendererSVG.get_image_magnification  s    ~~$$r   c           
     s   VP                   R ,          w  rgV^ 8X  g   V^ 8X  d   R# V P                  V4      pV'       d   V P                  P                  ! R/ VB  VP	                  4       p	V	e    V P                  P                  RRV	/R7       / p
VP                  4       p\        P                  R,          '       d   \        4       p\        P                  ! V4      P                  VRR7       T;'       g!    V P                  R	VP                  4       4      pR
\        P                  ! VP                  4       4      P!                  R4      ,           V
R&   MV P"                  f   \%        R4      hV P"                   R\'        V P(                  4       R2p\*        P-                  RV4       \        P                  ! V4      P                  V4       T;'       g    RV P                  R	V4      ,           pWR&   WR&   Vf   RV,          V P.                  ,          pRV,          V P.                  ,          pV P                  P1                  R	\3        RR^ V) 33.4      \5        V4      \5        V P6                  V,
          V,
          ) 4      \5        V4      \5        V4      V
R7       MVP9                  4       pVR8w  d   \5        V4      V
R&   \;        4       P=                  RV,          RV,          4      V,           \;        4       P?                  W#4      P=                  RR4      P?                  RV P6                  4      ,           p\3        RVPA                  4       3.4      V
R&   RV
R&   V P                  P1                  R	\5        V4      \5        V4      V
R7       V	e   V P                  PC                  R4       V'       d   V P                  PC                  R4       R# R# ) :Ni   NNr   r   r   ri   zsvg.image_inlineZpng)re   Zimagezdata:image/png;base64,
r   zLCannot save image data to filesystem when writing SVG to an in-memory bufferz.imagez.pngz$Writing image file for inclusion: %sZIm_rK   r  rY   )r   r&   r   rz   r{   r?   r   r   r   r[   r   z5image-rendering:crisp-edges;image-rendering:pixelatedr   )rz   r{   r?   r   )rX   r   r   )"Zshaper   r|   rC   r   Zget_gidr   r   r   r   Z	fromarrayZsaver   Zgetvaluebase64Z	b64encoder   r~   r   Znextr   _logrp   r}   rM   rg   r'   r{   r   r   rX   rY   r   rJ   )r0   r   r&   r   Zimr   r   r   r   r   r?   r   ZbuffilenamealphaZflippeds   &&&&&&          r   
draw_imageZRendererSVG.draw_image  sA    xx|6Q!V))"-
 KK0Z0jjl?KKc<*=>jjl<<*++)COOB$$S$7??w?C*  077@A <  }}$  "F G G--tD4G4G/H.INHII<hGOOB$$X.AAw!AAC#+< tq4>>)Aq4>>)AKK-&q1"g(>/@ A"1%"T[[1_q%8#9:&q)2B12E    LLNE|$4U$;y! 
  q#'2
1sD!3,-  #6GNN,-.#0F;, 7O KK&q)2B12E   
 ?KKOOC KKOOC  r   c           	     s   V P                   pV'       d   VP                  R4       VP                  4        F[  w  pw  rEV P                  V4      pV P	                  \        V^@,          V4      RR7      pVP                  RW6\        R.4      R7       K]  	  VP                  R4       V P                  P                  V4       R# R# )zV
Emit definitions for not-yet-defined glyphs, and record them as having
been defined.
r   Fr   r   )rK   r   r   N)rX   )g      ?)r|   rC   r=   _adjust_char_idr   r   rM   rg   rJ   r   r   )r0   glyph_map_newr|   char_idr   codesr   s   &&     r   _update_glyph_map_defsZ"RendererSVG._update_glyph_map_defs  s    
 LL .;.A.A.C**(..w7 ..B. / @	w13G2HI  K /D JJvOO""=1 r   c                s&    VP                  R R4      # )z%20r   r   )r0   r  r1   r   r  ZRendererSVG._adjust_char_id  s    uc**r   c	           
     s   V P                   p	V	P                  V4       V P                  p
V P                  p\	        VP                  4       4      pVP                  4       p/ pVR 8w  d   WR&   VP                  4       '       d   VP                  4       MVP                  4       ^,          pV^8w  d   \        V4      VR&   WP                  ,          pR\        V4      R\        RW#33RV) 33RVV) 33.4      /pV	P                  RVR	7       V'       gw   VP                  V4      pVP                  VWJR
R7      pVw  pppV P!                  V4       V F3  w  ppppV	P#                  R\        RVV33RV33.4      RRV 2/R7       K5  	  MVR8X  d   VP%                  WTV
R
R7      pMVP'                  WTV
R
R7      pVw  pppV P!                  V4       V FD  w  ppppV P)                  V4      pV	P#                  R\        RVV33RV33.4      RRV 2/R7       KF  	  V F8  w  pp\+        VV4      pV P-                  VRR7      pV	P#                  RVR7       K:  	  V	P/                  R4       R# )#000000r   r   r   r   rY   rZ   rX   r   ri   T)	glyph_mapZreturn_new_glyphs_onlyr   r   r   )r   r?   ZTeXFr   r   r   N)r|   rD   r   
_text2pathr
   r   Zget_size_in_pointsr   r   r'   Z
FONT_SCALErj   rg   rC   Z	_get_fontZget_glyphs_with_fontr  rM   Zget_glyphs_texZget_glyphs_mathtextr  r   r   rJ   ) r0   r   r&   r   r   propangleismathmtextr|   r  Z	text2pathcolorfontsizer   r
  Z
font_scaler?   fontZ_glyphsZ
glyph_infor  rectsZglyph_idZ	xpositionZ	ypositionrX   r  Zvertsr  r   r   s    &&&&&&&&&                       r   _draw_text_as_pathZRendererSVG._draw_text_as_path  s   qOO	OO	

%**,I!&M"$"5"5"7"7RZZ\!_A:/6E) 4 44
]5),qf%UF9%:
{34.6 7
 	S(&&t,D44aT 5 KG/6,Ju''69C5)Y1$y)&<= 5(+3  )AhZ.9  ; :D #22y 3 O $77y 8 O/6,Ju''68B4Iu..w71$y)&<= 5(+3  )AgY-8  : 9C !&uE5) ..te.D	v3 !&
 	

3r   c	           
     st  a'a( V P                   p	\        VP                  4       4      p
/ p/ pV
R 8w  d   WR&   VP                  4       '       d   VP	                  4       MVP                  4       ^,          pV^8w  d   \        V4      VR&   V'       Eg   / pVP                  4       R8w  d   VP                  4       VR&   VP                  4       R8w  d   VP                  4       VR&   \        P                  VP                  4       ,          pVR8w  d   V VR&   R o(V(3R	 lo'V'3R
 lp\        VP                  4       4       R2VR&   RP                  \        P                  V! V4      4      4      VR&   VP                  4       R8w  d   VP                  4       VR&   \!        / VCVC4      VR&   V'       Edt   V^ 8X  g   VP#                  4       R8X  EdW   VP%                  4       pVP'                  VP)                  4       4      w  ppV P*                  V,
          p\,        P.                  ! V4      p\,        P0                  ! \,        P2                  ! V4      \,        P4                  ! V4      .4      p\,        P6                  ! VVV,
          VV,
          .4      pVVV^ ,          ,          ,           pVVV^,          ,          ,           pRRRRRR/pVVP9                  4       ,          VR&   \        V4      VR&   \        V4      VR&   \!        / VCVC4      VR&   \;        RV) VV33.4      VR&   M\;        RW#33RV) 33.4      VR&   V	P=                  RWNR7       R&# V	P?                  V4       V P@                  PB                  PE                  V^HV4      w  pppppV	PG                  R \!        / VCVC4      \;        RW#33RV) 33.4      R!7       V	PG                  R4       / pV EF  w  ppp p!p"\        PH                  ! V4      p#/ pV#PJ                  R8w  d   V#PJ                  VR&   V#PL                  R8w  d   V#PL                  VR&   V#PN                  R8w  d   V#PN                   VR&   \        V4       R2VR&   V#PP                  : VR&   V#PR                  R8w  d   V#PR                  VR&   \!        / VCVC4      p$V ^ 8X  d   ^p VPU                  V$. 4      PW                  V!V") V 34       EK  	  VPY                  4        FS  w  p$p%V%P[                  4        V% F7  w  r#p&V	P=                  R"\]        V&4      \        V4      \        V4      V$R#7       K9  	  KU  	  V	P_                  R4       V FI  w  r#ppV	P=                  R$\        V4      \        V) ^,
          4      \        V4      \        V4      R%7       KK  	  V	P_                  R 4       R&# )'r  r   r   Znormalz
font-stylezfont-varianti  zfont-weightc                 s    V R9   d   R# T # )sansz
sans-serif)r  z
sans serifrN   )rx   r   r   _normalize_sansZ7RendererSVG._draw_text_as_text.<locals>._normalize_sanss  s    '+/E'E|O4Or   c              3   s   <"   S! V 4      p V \         P                  9   d1   \         P                  P                  V 4       F  pS! V4      x  K  	  V x  R # 5ir]   )fmfont_family_aliasesZFontManagerZ_expand_aliases)Zfnrx   r  s   & r   _expand_family_entryZ<RendererSVG._draw_text_as_text.<locals>._expand_family_entryv  sL     $R(/// !# > >r B-d33 !C s   AAc                 s   < V P                  4        UUu. uF4  pS! V4       F%  pV\        P                  9   d   TM
\        V4      NK'  	  K6  	  upp# u uppi r]   )Z
get_familyr  r   Zrepr)r  entryrx   r!  s   &  r   _get_all_quoted_namesZ=RendererSVG._draw_text_as_text.<locals>._get_all_quoted_names  s^     &*__%6A%6E$8$?D !%(>(> >DJN$? O%6A A As   :AZpxz	font-sizez, zfont-familyzfont-stretchr   ZanchorZleftrC   ZrightrJ   ZcenterZmiddleztext-anchorr&   r   rZ   r   rY   rE   ri   r   )r   r   Ztspan)r&   r   r   r   r   N)0r|   r
   r   r   r   r'   Z	get_styleZget_variantr  Zweight_dictZ
get_weightZget_sizer5   r   ZfromkeysZget_stretchrj   Zget_rotation_modeZget_transformr   Zget_unitless_positionr{   rs   Zdeg2radZarrayZsinZcosZdotZget_harg   rM   rD   r  Zmathtext_parserZparserC   ZttfFontPropertyr   Zvariantweightrx   ZstretchZ
setdefaultr;   r=   ZsortZchrrJ   ))r0   r   r&   r   r   r  r  r  r  r|   r  Z
font_styleZcolor_styler
  r?   r$  r#  r   ZaxZayZ	angle_radZdir_vertZv_offsetZha_mpl_to_svgrz   r{   ZdescentZglyphsr  Zspansr  r  ZthetextZnew_xZnew_yr"  r   ZcharsZtr!  r  s)   &&&&&&&&&                              @@r   _draw_text_as_textZRendererSVG._draw_text_as_textU  sl    

%
I"'"$"5"5"7"7RZZ\!_A:%5e%<K	"vF ~~8++/>>+;
<(!X--1-=-=-?
>*^^DOO$56F}/5h
=)P
A *:$--/)J(K2&NJ{#(,		3D9:)J}% !X--1-=-=-?
>*+,Iz,I[,IJF7Ou%1*(?(?(AX(M
 "//1	",,U-H-H-JKB[[2%
 JJu-	88RVVI%6y8I$JK66(a"fB,@A(Xa[00(Xa[00!''5!)8!5,9%,,.,I
=).r2s.r2s"/0M:0M0M"Nw&9B/0;2 '3{# ': 1&)y);+ ',{# NN61N4 NN1 //55aTB 2E67FE
 LL,-J
-Jk-JK#6)A62&%	284 $5   LL  E9?5h**40
;;(*/4{{J|,==H,16J~.<<3&38<<.J}--=h-G,H*K
;'/4zzn
=)==H,16J~.%&C&C{&CDb="G  +22EE673KL# :@& !&u

$GA!NNA*1-*1-# # %  % !. JJv',#eV&q)&r!t,*51+F3   (- JJsOr   c	           
     s   V P                  V4      p	V	'       d   V P                  P                  ! R/ V	B  VP                  4       e-   V P                  P                  RRVP                  4       /4       \        P
                  R,          R8X  d   V P                  WW4WVWx4       MV P                  WW4WVWx4       VP                  4       e   V P                  P                  R4       V	'       d   V P                  P                  R 4       R# R# )r   Nr   r   zsvg.fonttyper   r   )	r   r|   rC   r   r   r   r  r%  rJ   )
r0   r   r&   r   r   r  r  r  r  r   s
   &&&&&&&&& r   	draw_textZRendererSVG.draw_text  s     ))"-
 KK0Z0::<#KKcL"**,#?@<<'61##B1fL##B1fL::<#KKOOC KKOOC  r   c                r  rP   rN   rO   r   r   flipyZRendererSVG.flipy	  r  r   c                s2    V P                   V P                  3# r]   )rz   r{   rO   r   r   get_canvas_width_heightZ#RendererSVG.get_canvas_width_height  s    zz4;;&&r   c                s:    V P                   P                  WV4      # r]   )r  get_text_width_height_descent)r0   r   r  r  s   &&&&r   r)  Z)RendererSVG.get_text_width_height_descent  s    <<QfMMr   )r   r   r   r   r   r   r   r   r   r   r   r~   r{   r}   rz   r|   )NiH   r]   )NNNN)FN)(rQ   rR   rS   rT   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r%  r&  r'  r(  r)  rU   rV   __classcell__r   rW      @@r   rv   rv   !  s     &$!&$ &$P-y1v-M&*X+Z@-..B9C! )V8&tfPB%L!\2&+EN[z!.'N Nr   rv   c                   s`   a a ] tR tRt oRRRR/t^HtRRRR/R ltR	 tR
 tV 3R lt	Rt
VtV ;t# )FigureCanvasSVGi  ry   zScalable Vector GraphicsZsvgzbbox_inches_restoreNrw   c               s<   \         P                  ! VRRR7      ;_uu_ 4       p\         P                  ! V4      '       g   \        P                  ! R4      ! V4      pV P
                  P                  p^HV P
                  n        V P
                  P                  4       w  rgV^H,          V^H,          r\        V P
                  WgV\        WWEVR7      VR7      p
V P
                  P                  V
4       V
P                  4        RRR4       R#   + '       g   i     R# ; i)aa  
Parameters
----------
filename : str or path-like or file-like
    Output target; if a string, a file will be opened for writing.

metadata : dict[str, Any], optional
    Metadata in the SVG file defined as key-value pairs of strings,
    datetimes, or lists of strings, e.g., ``{'Creator': 'My software',
    'Contributor': ['Me', 'My Friend'], 'Title': 'Awesome'}``.

    The standard keys and their value types are:

    * *str*: ``'Coverage'``, ``'Description'``, ``'Format'``,
      ``'Identifier'``, ``'Language'``, ``'Relation'``, ``'Source'``,
      ``'Title'``, and ``'Type'``.
    * *str* or *list of str*: ``'Contributor'``, ``'Creator'``,
      ``'Keywords'``, ``'Publisher'``, and ``'Rights'``.
    * *str*, *date*, *datetime*, or *tuple* of same: ``'Date'``. If a
      non-*str*, then it will be formatted as ISO 8601.

    Values have been predefined for ``'Creator'``, ``'Date'``,
    ``'Format'``, and ``'Type'``. They can be removed by setting them
    to `None`.

    Information is encoded as `Dublin Core Metadata`__.

    .. _DC: https://www.dublincore.org/specifications/dublin-core/

    __ DC_
r   zutf-8)Zencoding)r}   rw   )r.  N)r   open_file_cmZfile_requires_unicodecodecsZ	getwriterfiguredpiZget_size_inchesr	   rv   drawr   )r0   r	  r.  rw   fhr2  rz   r{   r   r   Zrenderers   &&$$       r   	print_svgZFigureCanvasSVG.print_svg  s    @ #@@B..r22%%g.r2++//C DKKO KK779ME2:v{q(UCA"hG$79H KKX& A@@@s   CD

D	c           	     s6   \         P                  ! VR 4      ;_uu_ 4       p\        P                  ! RVR7      ;_uu_ 4       pV P                  ! V3/ VB uuRRR4       uuRRR4       #   + '       g   i     M; i RRR4       R#   + '       g   i     R# ; i)Zwbr   )ZmodeZfileobjN)r   r/  gzipZGzipFiler5  )r0   r	  Zkwargsr4  Z
gzipwriters   &&,  r   
print_svgzZFigureCanvasSVG.print_svgzJ  sd      400Bmmb11Z>>*77 21 10111 1000s#   !BA)	
B)A94BB	c                r  )ry   rN   rO   r   r   get_default_filetypeZ$FigureCanvasSVG.get_default_filetypeO  s    r   c                sT   < V P                   P                  4        \        SV `  4       # r]   )r1  Zdraw_without_renderingr   r3  )r0   r   r   r   r3  ZFigureCanvasSVG.drawR  s    **,w|~r   rN   )rQ   rR   rS   rT   Z	filetypesZ	fixed_dpir5  r7  r8  r3  rU   rV   r*  r+  r,  r   r-  r-    sG     235I I,  ,  , \8
 r   r-  z<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
c                   s2    ] tR tRt]P
                  t]tRt	R# )_BackendSVGia  rN   N)
rQ   rR   rS   rT   r   r   Zbackend_versionr-  ZFigureCanvasrU   rN   r   r   r9  r9  a  s    ooO"Lr   r9  )<r  r0  r   r6  r   Zior   r   Zloggingr   Zrer   Znumpyrs   ZPILr   Z
matplotlibr   r   r   r  Zmatplotlib.backend_basesr   r   r   r   Z!matplotlib.backends.backend_mixedr	   Zmatplotlib.colorsr
   Zmatplotlib.datesr   Zmatplotlib.pathr   r   Zmatplotlib.transformsr   r   Z	getLoggerrQ   r  r   Zcompiler   r   r"   r#   r'   r(   rg   rj   r   rr   ru   rv   r-  ZFigureManagerSVGr   Zexportr9  rN   r   r   <module>r:     s           	 	     0B B ? %      8 "R jj+ ,
+,M M`= XvvwH*@rN, rNj>& >B % 	 
#( # #r   