+
    f7iQ$  c                  s   ^ RI Ht ^ RIt^ RIHt ^ RIHtHt ^ RIH	t	H
t
Ht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
.t]P4                  ! R4      tRRRR/tR]R,           R2t]R 4       tR R ltR R lt R R lt!R R lt"R R lt#R R lt$R R  lt%R! R" lt&R# R$ lt']! ]PP                  ! R%4      4      R& R' l4       t)R#   ] d    Rt Li ; i)(i    )annotationsN)cache)chaincount)DictIterableIteratorListOptionalSetTuple)etree)ttLib)_add_method)SVGDocumentsubset_glyphsz^glyph(\d+)$svgzhttp://www.w3.org/2000/svgZxlinkzhttp://www.w3.org/1999/xlinkZ{z}hrefc                s:    \         P                  ! V \        R 7      # ))Z
namespaces)r   ZXPath
NAMESPACES)Zpaths   &;/usr/lib64/python3.14/site-packages/fontTools/subset/svg.pyxpathr       s     ;;t
33    c                    V ^8  d   QhRRRR/# )   treeetree.ElementreturnDict[str, etree.Element] Zformat   "r   __annotate__r   &   s     G G} G1I Gr   c                sp    \        R 4      ! V 4       Uu/ uF  qP                  R,          VbK  	  up# u upi )z//svg:*[@id]id)r   attrib)r   el   & r   group_elements_by_idr#   &   s3     +0*?*EF*EBIIdOR*EFFFs   3c               r   )r   
style_attrZstrr   Dict[str, str]r   r   r   r   r   r   -   s      s ~ r   c                s   / pV P                  R 4       Ft  pVP                  R4      ^8X  d8   VP                  R4      w  r4VP                  4       pVP                  4       W&   KP  VP                  4       '       g   Kh  \        RV 24      h	  V# )Z;Z:z Invalid CSS declaration syntax: )Zsplitr   ZstripZ
ValueError)r$   ZresultZdeclarationZproperty_namevalue   &    r   parse_css_declarationsr(   -   s     F!'',S!Q&#.#4#4S#9 M)//1M$)KKMF!  ?}MNN - Mr   c               r   )r   r   r   r   zIterator[str]r   r   r   r   r   r   ;   s     ! !m ! !r   c              #  s  "   \        R 4      p\        V .V! V 4      4       F  p\        V4      pVe   Vx  VP                  pRV9   d*   / \	        V4      C\        VP                  R,          4      CpR FX  pWT9   g   K  WE,          pVP                  R4      '       g   K,  VP                  R4      '       g   KE  V^R pV'       g   Q hVx  KZ  	  K  	  R# 5i)z.//svg:*[ starts-with(@xlink:href, '#') or starts-with(@fill, 'url(#') or starts-with(@clip-path, 'url(#') or contains(@style, ':url(#') ]NZstylezurl(#Z))Zfillz	clip-pathi)r   r   href_local_targetr    Zdictr(   
startswithZendswith)r   Z!find_svg_elements_with_referencesr!   Zref_idZattrsZattrr&   s   &      r   iter_referenced_idsr+   ;   s     
 ).	)% TF=dCD"2&L		eQtE{Q&<RYYw=O&PQE)D}##G,,1D1D"1R[F!M6 L * Es   A9C C!C:Cc               $    V ^8  d   QhRRRRRR/# )r   elementsr   element_idsSet[str]r   Noner   r   r   r   r   r   Y   s$      &5=	r   c                s    TpV'       dY   \        4       pV F+  pW@9  d   K  VP                  \        W,          4      4       K-  	  W1,          pVP                  V4       TpK`  R # N)setZupdater+   )r-   r.   Z	unvisitedZ
referencedel_id   &&   r   closure_element_idsr5   Y   s^    
 I
"u
E$1(/BC	 
 	!
:&	 r   c               r,   )r   r!   r   retained_idsr/   r   boolr   r   r   r   r   r   k   s!       X $ r   c           	     s   V P                   P                  R 4      V9   d   R# \        V  Uu. uF  p\        W!4      NK  	  up4      '       d   R# \	        V 4      ^ 8X  g   Q hV P                  4       pVe   VP                  V 4       R# u upi )r   TF)r    getZanysubset_elementslenZ	getparentZremove)r!   r6   ZeZparents   &&  r   r9   r9   k   su     
yy}}Tl* b9bOA,b9::r7a<<\\^Fb :s   Bc               r,   )r   r   r   glyph_index_mapzDict[int, int]r   r%   r   r   r   r   r   r   ~   s$      	)7r   c                s~   \        V 4      p/ pVP                  4        F  w  rE\        P                  V4      pV'       g   K$  \	        VP                  ^4      4      pVP                  V4      pVe   Wx8X  d   K[  RV 2p	M(RV 2p	\        ^4      p
W9   d   V	 R\        V
4       2p	K  WV&   WP                  R&   K  	  V# )   glyphZ.r   )
r#   ZitemsGID_REZmatchZintZgroupr8   r   nextr    )r   r;   r-   id_mapr3   r!   ZmZ	old_indexZ	new_indexnew_idZns   &&         r   remap_glyph_idsrB   ~   s    
 $C(HF^^%	LL
O	#''	2	 %YK(F
 [FaA$"81T!WI.u 		$) &, Mr   c               r   )r   r!   r   r   zOptional[str]r   r   r   r   r   r      s      - M r   c                s    \         V P                  9   dH   V P                  \         ,          pVP                  R 4      '       d   \        V4      ^8  d
   VR,          # R# )#:r<   NNN)
XLINK_HREFr    r*   r:   )r!   Zhrefr"   r   r)   r)      sA    RYYyy$??3CIM8Or   c               r,   )r   r   r   r@   r%   r   r0   r   r   r   r   r   r      s!     1 1 1 14 1r   c                s    \        R 4      ! V 4       F:  p\        V4      pVf   Q hW19   g   K  W,          pRV 2VP                  \        &   K<  	  R# )z,.//svg:*[starts-with(@xlink:href, '#glyph')]NrC   )r   r)   r    rD   )r   r@   r!   Zold_idrA   r4   r   update_glyph_href_linksrE      sO    BCCH"2&!!!^F&'xLBIIj! Ir   c               r   )r   intszIterable[int]r   zIterator[Tuple[int, int]]r   r   r   r   r   r      s       #< r   c              #  s   "   \        \        \        V 4      4      4      p \        V4      ;r#T F  pT^,
          T8X  d   TpK  Y#3x  T;r#K  	  Y#3x  R #   \         d     R # i ; i5ir1   )ZiterZsortedr2   r?   ZStopIteration)rF   Zsorted_intsstartendZvr'   r   rangesrI      st     vc$i()K;'' q5C<C,OEC  ,  s'   A)A *A)A&"A)%A&&A)zSVG c               s    V ^8  d   QhRR/# )r   r   r7   r   r   r   r   r   r      s     ; ;d ;r   c           
     sX  a \         f   \        R4      hVP                  pVP                  pVP                  o. pV P
                   EF  p\        VP                  VP                  ^,           4       Uu0 uF  qbV,          kK  	  upP                  VP                  4      pV'       g   Kd  \         P                  ! VP                  P                  R4      \         P                  ! RRRR7      R7      p\        V4      p	V U
u0 uF  qV
,          kK  	  pp
V Uu0 uF  pRV 2kK
  	  pp\!        W4       \#        W4      '       g   EK  VP$                  P&                  '       g   \)        VS4      p\+        W4       \         P,                  ! WP$                  P.                  R7      P1                  R4      pV3R	 lV 4       p\3        V4       F-  w  ppVP5                  \7        VVVVP8                  4      4       K/  	  EK  	  W@n        \;        V P
                  4      # u upi u up
i u upi )
Nz.No module named 'lxml', required to subset SVGzutf-8TF)Z	huge_treeZremove_blank_textZresolve_entities)Zparserr=   )Zpretty_printc              3  s6   <"   T F  pSV,          x  K  	  R # 5ir1   r   )Z.0ir;   s   & r   Z	<genexpr>Z subset_glyphs.<locals>.<genexpr>   s     51OA&&s   )r   ImportErrorZorig_glyph_orderZreverseOrigGlyphMapr;   ZdocListZrangeZstartGlyphIDZ
endGlyphIDZintersectionglyphsZ
fromstringZdataZencodeZ	XMLParserr#   r5   r9   ZoptionsZretain_gidsrB   rE   ZtostringZ
pretty_svgZdecoderI   Zappendr   Z
compressedr7   )ZselfZsZglyph_orderZrev_orig_glyph_mapZnew_docsZdocrJ   rL   r   r-   ZgZgidsr.   r@   Znew_docZnew_gidsrG   rH   r;   s   &&                @r   r   r      s   }JKK //K)*)>)>&'&7&7O"$H||$)#*:*:CNNQ<N$O
$OqNN$O

,qxx
  	  HHOOG$??
  #' "'	
& (,/56v!1%%v6,01Dqqc{D1H2s00yy$$$$S/:F#C0..993G3GHOOPWX55 *JE3OOKS^^LM +U Z L]
6 71s   4HH"H')*Z
__future__r    ZreZ	functoolsr   Z	itertoolsr   r   Ztypingr   r   r   r   r   r	   r
   Zlxmlr   rK   Z	fontToolsr   ZfontTools.subset.utilr   ZfontTools.ttLib.tables.S_V_G_r   Z__all__Zcompiler>   r   rD   r   r#   r(   r+   r5   r9   rB   r)   rE   rI   ZgetTableClassr   r   r   r   <module>rM      s    " 	  " G G G  - 5 
 
O	$ 
'+
 *W%&f-
 4 4
G!<$&@1  U  (); *;o   Es   C 	CC