
    3vj2/                       d Z ddlZddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
Z
ddlZddlZddlZddlmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZmZmZmZ ddlmZmZ ddlmZm Z  ddl!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD dZE edg d      ZF G d d      ZGd ZHd ZId ZJd5dZKd  ZLd! ZMd" ZNd# ZOd$ ZPd6d%ZQ G d& d'eR      ZS G d( d)eR      ZT G d* d+eR      ZU G d, d-      ZVd. ZW	 	 	 d7d/ZXd0 ZYd1 ZZd2 Z[	 d5d3Z\	 	 	 	 d8d4Z]y)9u  Find and apply CSS.

This module takes care of steps 3 and 4 of “CSS 2.1 processing model”: Retrieve
stylesheets associated with a document and annotate every element with a value
for every CSS property.

https://www.w3.org/TR/CSS21/intro.html#processing-model

This module does this in more than two steps. The
:func:`get_all_computed_styles` function does everything, but it is itsef based
on other functions in this module.

    N)
namedtuple)groupby)DEBUGWARNING)inf)ImageCmsProfile   )CSS)LOGGERPROGRESS_LOGGER)FontConfiguration)URLFetchingErrorfetchget_url_attributeurl_join   )countersmedia_queries)COMPUTER_FUNCTIONSPHYSICAL_FUNCTIONS)Function
check_math	check_var)	INHERITEDINITIAL_NOT_COMPUTEDINITIAL_VALUESZERO_PIXELS)ANGLE_UNITSLENGTH_UNITSRELATIVE_UNITS	to_pixels
to_radians)preprocess_declarations)preprocess_descriptors)validate_non_shorthand)EMINUS_INFINITYNANPIPLUS_INFINITYInvalidValuesPendingPercentageInMathRelativeLengthInMath	get_angleget_urlremove_whitespacesplit_on_commatokenize)Nbeforeaftermarkerz
first-linezfirst-letterzfootnote-callzfootnote-markerPageSelectorType)sideblankfirstindexnamec                   L    e Zd ZdZd Zd
dZ	 	 ddZd Zd Zd Z	e
d	        Zy)StyleForz?Convenience function to get the computed styles for an element.c           	         i x| _         }i | _        d d d| _        || _        || _        t        j                  d       t        }t        |j                  ||j                        D ]e  \  }}	}
}|j                  |	d fi       }t        ||
      D ];  \  }}}t        d|      }|||f}|j                  |d      d   }|||k  s5||f||<   = g |j                  j!                         D ]  }	|D ]  \  }}}|j"                  j%                  |	      D ]  }|\  }}}\  }
}|t        n|j&                  j)                  |      }|xs |}|j                  |	j                  |fi       }|
D ];  \  }}}t        ||      }|||f}|j                  |d      d   }|||k  s5||f||<   =   |	j*                  r|	j*                  j                  nd }| j-                  |	j                  |j                  ||j                  |        |D ]3  \  }	}|s	| j-                  |	||j                  |	|j                  |       5 | j                   j/                          y )N)boxareazStep 3 - Applying CSSauthorNNr   )rootparentbase_urltarget_collector)pseudo_typerD   rE   rF   rG   )_cascaded_styles_computed_stylesinitial_page_sizes_sheetsfont_configr   infor   find_style_attributesetree_elementrF   
setdefaultr#   declaration_precedencegetwrapper_elementiter_subtreematchermatchlayersr;   rE   set_computed_stylesclear)selfhtmlsheetspresentational_hintsrM   rG   cascaded_styleslayer_orderspecificityelementdeclarationsrF   styler<   values
importance
precedenceweight
old_weightsheetoriginsheet_specificityselectororderrH   layerrE   s                              J/root/.hermes/venv/lib/python3.12/site-packages/weasyprint/css/__init__.py__init__zStyleFor.__init__8   s    354 !# +/"=&45<Q""$8$--=I 		18K,#..CE,Cl-, 1(fj3HjI
$k;?"YYt\:1=
%v)="(&.E$K1		1  ++88: 	KG4: 90v0 % 3 3G < 9HMUJK5JlE).#ELL<N<Nu<UK"3"B{K+66 ..<bBE4@ 90fj%;FJ%O
",k;!G%*YYt\%B1%E
%-v1E*0&.E$K999 6=^^W^^11F$$%%D,>,>v9I % K!	K8 %4 	O G[((++G!]]=M	 ) O	O 	##%    Nc                 
   | j                   j                  ||f      x}rcd|d   v r|d   dk(  rdD ]  }t        |d| <    t        |d         dk(  r0|d   \  }|j	                  d      r|d	k7  rdD ]  }t        |d
| <    |S )Ntabledisplayborder_collapsecollapse)topbottomleftrightpadding_r   ztable-ztable-captionmargin_)rJ   rS   r   len
startswith)r[   rb   rH   rd   r8   ru   s         rp   __call__zStyleFor.__call__   s    ))--w.DEE5E%	**u5F/G:/U> ;D/:EHTF+,;5#$) +%%h/G4N B >2=v./>rr   c           
      j   | j                         }| j                         }||k(  r||J d}	t        | j                        }
n|J ||df   }	||df   }
|j	                  ||fi       }t        |	||||
|| j                  | j                        x}|||f<   |r|d   r|j                  |d          yyy)a!  Set the computed values of styles to ``element``.

        Take the properties left by ``apply_style_rule`` on an element or
        pseudo-element and assign computed values with respect to the cascade,
        declaration priority (ie. ``!important``) and selector specificity.

        Nanchor)get_cascaded_stylesget_computed_stylesInitialStylerM   rS   ComputedStylerK   collect_anchor)r[   rb   rE   rD   rH   rF   rG   r_   computed_stylesparent_style
root_stylecascadedcomputeds                rp   rY   zStyleFor.set_computed_styles   s     224224d?{2>!>L%d&6&67J%%%*64<8L(t4J"&&'=rB;H(G[*hd55<7 	7?7K#78  2++HX,>? !3rr   c                 d   d }| j                   D ]  \  }}}|j                  D ]  \  }}}|D ]  }	|	\  }
}}| j                  ||      s|xs |
}
| j                  j	                  ||fi       }|D ];  \  }}}t        ||      }|||
f}|j                  |d      d   }|||k  s5||f||<   =    y )NrC   r   )rL   
page_rules_page_type_matchrI   rQ   rR   rS   )r[   	page_typer`   rj   rk   rl   _ruleselector_listrc   rm   ra   rH   page_selector_typerd   r<   re   rf   rg   rh   ri   s                       rp   add_page_declarationszStyleFor.add_page_declarations   s    04 	=,E6,6;6F6F =2}l - =HCK@K.@,,-?K&7&F; $ 5 5 @ @&4b!:8D =4D&*)?
)SJ&0+{%KF).4)Fq)IJ)1Z65I.4fnd===	=rr   c                     | j                   S N)rI   r[   s    rp   r   zStyleFor.get_cascaded_styles       $$$rr   c                     | j                   S r   )rJ   r   s    rp   r   zStyleFor.get_computed_styles   r   rr   c                    | j                   d |j                   fvry| j                  d |j                  fvry| j                  d |j                  dk(  fvry| j                  d |j                  fvry| j                  | j                  \  }}}|.|j                  }|dz   |z
  }|dk(  r|dk(  S ||z  dk\  xr ||z   S ||j                  k7  ry|j
                  D ]0  \  }}||k7  r|dz   |z
  }|dk(  r|dk(  s y||z  dk\  s*||z  r0 y yy)NFr   r   T)r8   r9   r:   r;   r<   groups)r   r   abr<   r;   offset
group_names           rp   r   zStyleFor._page_type_match   s@   ""4*@@##D)//+BB##D)//Q2F+GG""4*@@##/+11JAq$|!Q&'1fv{V6A:?3U6TU:~Vy~~%%.%5%5  !
E:%Q#$6FaK 17
aQR
  rr   r   NNNN)__name__
__module____qualname____doc__rq   r   rY   r   r   r   staticmethodr    rr   rp   r>   r>   6   sD    IR&h KO<@@6=$%%  rr   r>   c                     | j                   r| j                   gng }| D ]*  }|j                  s|j                  |j                         , dj                  |      S )z9Return the text directly in the element, not descendants. )texttailappendjoin)rb   contentchilds      rp   get_child_textr      sL     'w||n"G '::NN5::&' 777rr   c                 N    d}| |v r|s|}|S | dk(  r|dk7  r|dk(  r|}|S ||z  }|S )N)text_decoration_colortext_decoration_styletext_decoration_thicknesstext_decoration_linenoner   )keyvalueparent_valuer   text_propertiess        rp   text_decorationr      sX    
WO
o E L 
&	&6!$ L ,Lrr   c	              #   Z  K   ddl m}	 | j                  dd      D ]A  }
|
j                  }|j	                  dd      j                  dd      d	   j                         }|dk7  rI|j	                  d
d      j                         xs d}|j                  d      D cg c]  }|j                          }}t        j                  ||      s|j                  dk(  r$t        |      }t        |||||||||	      }| |j                  dk(  s|j	                  d      s |	|d      r	 |	|d      rt        |d|      }|+	 t        ||||||||d	       D yc c}w # t        $ r9}t        j                  d||       t        j                   d|       Y d}~d}~ww xY ww)zgYield the stylesheets in ``element_tree``.

    The output order is the same as the source order.

    r	   )element_has_link_typerd   linktypeztext/css;r   r   mediar   all,)	stringrF   url_fetcher
media_typerM   counter_styler   color_profilesrX   href
stylesheet	alternateNT)	urlr   r   rM   r   r   r   rX   _check_mime_typez#Failed to load stylesheet at %s: %sError while loading stylesheet:exc_info)r\   r   	query_allrP   rS   splitstripr   evaluate_media_querytagr   r
   r   r   r   errordebug)rT   device_media_typer   rF   rM   r   r   r   rX   r   wrapperrb   	mime_type
media_attrr   r   r   cssr   	exceptions                       rp   find_stylesheetsr     s     -",,Wf= $X''KK
399#qA!DJJL	
"[["-335>
6@6F6Fs6KL
!!#LL11%9JK;;'! %W-G '4E'}%nV	UC
 I[[F"w{{6':(,?)';?$Wfh?DX kFW$/}'5*%	> >;$X M6 ( XLL!FiXLL!BYWWXsI   BF+E!2AF+F+!#F+E&	F+&	F(/.F#F+#F((F+c           	   #     !K   ddl m} | j                         D 
]8  }|j                  d      x}rd!t	        j
                  |      }!||f |s9d!|f!fd	}|j                  dk(  r'dD ]@  }|j                  |j                  |            }	|	& |d
|	         |d|	         n dD ]@  }|j                  |j                  |            }	|	& |d|	         |d|	         n |j                  d      x}
r |j                  |
      }d| } ||       |j                  d      x}r |j                  |      }d| } ||       |j                  d      x}sX|j                  |      }d| } ||       z|j                  dk(  r |d       |j                  dk(  rF|j                  dd      j                         }|dk(  r |d       |dv s |d|        |j                  dk(  r	|j                  d      x}r|j                  |      } |d|        |j                  d      x}r|j                  |      } |d |        |j                  d!      x}sq|j                  |      }|j                  d"      }|j                  d#      }|s|r|d$d	 }|j                  |      }|d%d&d'd(d)d*d+d,}|r|d-z  }n|r|d-z  }t        d$t!        d.|            } |d/||           |j                  d0k(  r|j                  d1      x}r |j                  |      }	|	 |d2|	        |j                  d3      x}rE|j                  |      }	|	2|j                         D ]  }|j                  d4v s |d5|	 |       ! |j                  d6      x}r |j#                  |      }	|	 |d7|	        |j                  d8      x}r |j%                  |      }	|	 |d9|	        |j                  d      x}
r |j                  |
      }d| } ||       |j                  d      x}r |j                  |      }d| } ||       |j                  d:      x}r |j                  |      }d;| } ||       |j                  d<      x}s|j                  |      }	|	 |d=|	        |j                  d>v rk|j                  dd      j                         }|dk(  r |d       n|dv r |d|        |j                  d      x}
r |j                  |
      }d| } ||       |j                  d      x}r |j                  |      }d| } ||       |j                  d4v rl|j                  d8      x}r |j#                  |      }	|	 |d9|	        |j                  d6      x}s|j#                  |      }	|	 |d7|	        |j                  d?k(  s|j                  d8      x}s,|j%                  |      }	|	A |d9|	        P|j                  d@k(  rF|j                  dd      j                         }|dk(  r |d       |dv s |d|        |j                  dAk(  r9|j                  d6      x}s|j%                  |      }	|	 |d7|	        |j                  dBk(  r|j'                  |j                  d!            xs dC}|j                  d      |j                  dD      hd	hk7  r|d$k\  r8 |d=|dz   dE       n&|d$k(  r |dF       n|d$kD  r |d9|dz
   dE       |j                  d6      x}r |j%                  |      }	|	 |d7|	        |j                  d      x}s|j                  |      } |d|        |j                  dGv r|j                  dHk7  s%|j                  dId      j                         dJk(  s.|j                  dd      j                         }|dKv r
 |dL       |j                  dM      x}r-|j%                  |      }	|	 |d|	         |d|	        |j                  dN      x}r-|j%                  |      }	|	 |d
|	         |d|	        |j                  d6      x}r |j%                  |      }	|	 |d7|	        |j                  d8      x}r |j%                  |      }	|	 |d9|	        |j                  dOv s	R|j                  d<      x}s	g|j                  |      }	|		| |d=|	         |dP       	|j                  dQk(  rC|j                  dR      x} s	|j                  |       }	|		 |dS|	         |dT       	|j                  dUk(  s	|j                  dV      x}	s
|j                  |	      }	|	
" |dS|	         |dW       
; y	w)Xa  Yield ``specificity, (element, declaration, base_url)`` rules.

    Rules from "style" attribute are returned with specificity
    ``(1, 0, 0)``.

    If ``presentational_hints`` is ``True``, rules from presentational hints
    are returned with specificity ``(0, 0, 0)``.

    r	   )r\   rd   )r   r   r   r   r   r   c                 <    t        j                  |       }||ffS r   )tinycss2parse_one_declaration)style_attributerb   declarationrF   ra   s      rp   parse_declarationz0find_style_attributes.<locals>.parse_declarationM  s$    "88IK+AArr   body)marginheight	topmarginNzmargin-top:zmargin-bottom:)marginwidth
leftmarginzmargin-left:zmargin-right:
backgroundzbackground-image:bgcolorzbackground-color:r   zcolor:centerztext-align:centerdivalignr   middle)r   rz   r{   justifyztext-align:fontcolorfacezfont-family:size+-r   zx-smallsmallmediumlargezx-largezxx-large48px)r   r	                  r   r   z
font-size:rt   cellspacingzborder-spacing:cellpadding)tdthzpadding:widthzwidth:heightzheight:bordercolorzborder-color:borderzborder-width:)trr  r  theadtbodytfootr	  captioncolhrr   noshadepxzborder-bottom-width:0)iframeappletembedimginputobjectz{http://www.w3.org/2000/svg}svgr  r   image)r   r   zvertical-align:middlehspacevspace)r  r  r  zborder-style:solidolstartzcounter-reset:list-item zcounter-increment:list-item -1lir   zcounter-increment:none)r   r\   iterrS   r   parse_blocks_contentsr   map_to_pixel_length	parse_urlparse_legacy_colorlowerparse_stringstrip_whitespacer   parse_integermaxmin'map_to_dimension_property_ignoring_zeromap_to_dimension_propertyparse_non_negative_integer)"treer^   rF   r\   rb   rd   rc   r   	attributer   r   r   r   r   r   r   r   r   r   	size_attrrelative_plusrelative_minus
font_sizesr  r  
subelementr  r  r  r  r  r  r  ra   s"     `                              @rp   rO   rO   5  sW     99; ]FKK((5(#K#99%@Lwh>> $7> 	B ;;& : 	00Y1GH$+k%,ABB+nUG,DEE ; 	00Y1GH$+l5',BCC+mE7,CDD %[[66z6nnZ0$5cU";'88!++i00w0//8$5eW"='88{{6**t*//5$*5'"2'88[[H$#$788[[E!KK,224E '(;<<@@'+eW(=>>[[F"G,,u,//6'&(899{{6**t*((.',tf(=>>{{6**t* 11$7	 ) 4 4S 9!*!5!5c!: N )!"I)))4#$"#"$%!"J %	'	q#a,/D+jD9I8J,KLL[[G#%kk-88{800=$+oeW,EFF%kk-88{800=$&-lln T
%>>\9"3hug4F
"SST  G,,u,DDUK$+fUG,<== X..v.66v>$+geW,=>>$[[66z6nnZ0%6se#<'88!++i00w0//8$5eW"='88%kk-88{8//<$1%"9'88 X..v.008$+mE7,CDD[[IIKK,224E '(;<<@@'+eW(=>>$[[66z6nnZ0$5cU";'88!++i00w0//8$5eW"='88{{l*$[[2262 HHPE(/'%0ABB#KK0050 HHOE(/&0@AA$$[[2262 ::6BE(/'%0ABB[[I%KK,224E '(;<<@@'+eW(=>>[[E!G,,u,66u=$+fUG,<==[[D 227;;v3FGL1DG$gkk)&<=$G19+mD1H:R,HII'(?@@''$(2(>??G,,u,66u=$+fUG,<==G,,u,//6'&(899[[ 3 3 {{g%VR)@)F)F)HG)SGR066800+,CDD$[[2262 ::6BE(/,ug0FGG/-w0GHH$[[2262 ::6BE(/+eW0EFF/.0HII $KK0050 ::5AE(/&0@AA$[[2262 ::6BE(/'%0ABB;;"<<!(X!66v6 $ 8 8 @ ,"3mE74K"LL"34H"II[[D G,,u,**51$+.Fug,NOO+,LMM[[D G,,u,**51$+.Fug,NOO+,DEE{]Fs   BiAiBi3Bi6BiAiCi)D"ii"Di=ii2iiAi11i$i9C+i&A!i	D"i-ii;ii)(ii(i=ic                 J    | dk(  ry| dk(  r|sy| dk(  r|sy| dk(  ry| dk(  sJ y)	zReturn the precedence for a declaration.

    Precedence values have no meaning unless compared to each other.

    Acceptable values for ``origin`` are the strings ``'author'``, ``'user'``
    and ``'user agent'``.

    
user agentr   userr	   rB   r   r   r   r   )rk   rf   s     rp   rR   rR   !  sE     	6	*	8	J	8	rr   c                    t        |      sy|j                  dk(  s|j                  dk7  rg }|j                  dk(  r|j                  n|j                  }t        |      D ]H  \  }}|j                  dv r$t        | ||      }|j                  ||fn|       8|j                  |       J |j                  dk(  r6t        j                  j                  |j                  |j                  |      }n@t        j                  j                  |j                  |j                  |j                  |      }t        | ||      xs |fS t!        |      }|j#                  dd      }	|	rt%        |	d	         d
k7  rg S |	d	   d	   j&                  j)                  dd      }
| |
   x}r|S t%        |	      dk  rg S g }|	d
   D ]%  }t        | ||      }|j                  ||fn|       ' |S )z)Return token with resolved CSS variables.N() blockvarfunction)r9  r7  FT)single_tokenstrailingr   r   r   _r	   )r   r   
lower_name	argumentsr   	enumerateresolve_varextendr   r   astParenthesesBlocksource_linesource_columnFunctionBlockr<   r   split_commar~   r   replace)r   tokenr   itemstoken_itemsiargumentresolvedr9  r>  variable_namer   computed_values                rp   r@  r@  8  s   UzzZ5#3#3u#<).z)Aeoou}}$[1 	'KAx}} 88&h6H,<h[(KX&	' ::#LL11!!5#6#6?E LL..!!5#6#6

EKE8UL9EeXEH$$54$HIIaL)Q.	aLO))11#s;M''u'
9~	N1 Jx=(*:uhIJ rr   c                    g g}|D ]  }|j                   dk(  r;|j                  dv r-|j                  |j                         |j                  g        M|j                   dk(  r<t        |j                        }t        | |||      }| y |d   j                  |       |d   j                  |        d\  }}	}
d }|r|	|j                  d      }	|	dv sJ |j                  d      }|sJ t        |t              sJ 	 t        | |||      }|y |j                   d	k(  rF|
|j                  j                         }
nd|
dk(  rt        |
|j                  j                         k7  r<y |j                   d
k(  r,||j                  dz  |z  |_        d}
n|
|
dk(  rd}
nt        |	dk(  r||j                  z  }n||j                  z  }d }	|r|r|t        ||
      S # t        $ r}|
dk(  rt        |}d}
d }	Y d }~@d }~ww xY w)Nliteralz+-r7  )r   r   Nr   %r  	dimension
percentaged   r   unit)r   r   r   r1   r   _resolve_calc_sumpop
isinstancelist_resolve_calc_productr.   r-   rY  r#  r3   )r   tokensproperty_namerefer_tor   rI  r   resultr   signrY  r   groupproductrelative_exceptions                  rp   rZ  rZ  b  s   TF %::"u{{d':MM%++&MM"ZZ:%'6G&x-RF~2Jf%2Je$% %E4I
<::a=D4<<JJqMEL5eT***/e]H> ?||{*<"<<--/DS[**W\\//11-'$+MMC$7($BGMD|ts{"..s{&&DW \ E%%M (  3;**.	s    G 	H%G<<Hc                 
   g g}|D ]  }|j                   dk(  r;|j                  dv r-|j                  |j                         |j                  g        N|j                   dk(  r|d   j                  |       r|j                   dk(  ru|j                  j	                         t
        v rU| &|j                  j	                         t        v rt        t        || |      }|d   j                  t        |d             |j                   dk(  rJ|j                  j	                         t        v r*|d   j                  t        t        |      d             O|j                   d	k(  r+|d   j                  t        |j                  d
             |j                   dk(  r|d   j                  |        y  d\  }}}	|r||j                  d      }|dv sJ |j                  d      }
t        |
t              sJ t        | |
      }|y |j                   dk(  r#|	|	d
k(  r|j                  j	                         }	ny |j                   d	k(  r|	d
}	|dk(  r||j                  z  }n||j                  z  }d }|rt        ||	      S )NrR  z*/numberrS  rU  r  rX  radrV  rT  ident)r   *Nr   rk  )r   r   r   rY  r#  r   r    r.   r!   r3   r   r"   r[  r\  r]  _resolve_calc_value)r   r_  r`  ra  r   rI  pixelsr   rc  rY  rd  calcs               rp   r^  r^    s4   TF ::"u{{d':MM%++&MM"ZZ8#2Je$ZZ;&5::+;+;+=+MEJJ$4$4$6.$H**uh>F2JhvD9:ZZ;&5::+;+;+=+L2Jhz%'8uEFZZ<'2Jhu{{=>ZZ7"2Je$%( %E4
<::a=D4<<JJqMEeT***&x7D|yyK'<43;99??,Dl*<Ds{##D- 0 E%%rr   c                 <   t        |      dk(  r|\  }|j                  dv r|S |j                  dk(  rj|j                  dk(  rt        S |j                  dk(  rt        S |j                  dk(  rt
        S |j                  dk(  rt        S |j                  dk(  rt        S y y y )	Nr   )rh  rU  rV  rj  epiinfinityz	-infinitynan)r~   r   lower_valuer&   r)   r*   r'   r(   )r   r_  rI  s      rp   rl  rl    s    
6{a::>>LZZ7"  C'""d*	""j0$$""k1%%""e+
 , #	 rr   c           	        "#$%& t        |       syg }t        |       ##j                  y#j                  d      D ]L  }|j	                  g        |D ]4  }t        |      rt        ||||      }|  y|d   j	                  |       6 N #j                  dk(  rt        ||d   ||      }|yt        |      S #j                  dv r9dx}x}	}
|D ]"  }t        ||||      } |  y| j                  dk(  r3||
d	v rt        d
}
| &nd}
t        | j                  dz  |z  d      x} &ng| j                  dk(  r,|
d
k(  rt        |
dk(  r yd}
t        | j                  d      &n,|
d
k(  rt        |
dk(  r yd}
t        t        | ||      d      &|du xsV #j                  dk(  xr &j                  |j                  k  xs* #j                  dk(  xr &j                  |j                  kD  }|s&| }	}% t        |	      S #j                  dk(  rd\  }$t        |      dk(  rt        ||d   ||      }nt        |      dk(  rd}t        |d         dk(  r:|d   d   j                  |v r&|d   d   j                  }t        ||d   ||      }|yt        ||d   ||      }t        ||d   ||      }d||fv ry|j                  |j                  k7  ry|j                  $not        |      dk(  ra|d   d   j                  }t        ||d   ||      }t        ||d   ||      }d||fv ry|j                  |j                  k7  ry|j                  $|dk(  rt        #nb|dk(  rt        j                  #nL|dk(  rt        j                   #n6|dk(  r0j                  dkD  rt        j                   nt        j                  #nyt        #$fd      S #j                  dv rt        ||d   ||      }t        ||d   ||      }d||fv ry|j                  |j                  k7  ry|j                  }|j                  }||z  &#j                  dk(  r||z  dk  r&t#        |      z  &t        |&fd      S #j                  d v rit        ||d   ||      }|y|j                  dk(  r|j                  }nt%        |      x}y t'        t        #j                        |      &t        &      S #j                  d!v r[t        ||d   ||      }||j                  dk7  ry	  t'        t        #j                        |j                        &t        &d"      S #j                  d#k(  r||D cg c]  }t        ||||       c}\  }}d||fv ry|j                  |j                  hdhk7  ry|j                  |j                  }}t        t        j*                  ||      d"      S #j                  d$k(  rg }d}
|D ]  }t        ||||      } |  y| j                  dk(  r2||
dk(  rt        d
}
| &nGd}
t        | j                  dz  |z  d      } n'|
d
k(  rt        d}
t        | ||      }t        |d      &|j	                  &        |\  }} }| j                  |j                  k  r|} | j                  |j                  kD  r|} t        |       S #j                  d%k(  rR|D cg c]  }t        ||||       c}\  }%d|%fv ry|j                  %j                  hdhk7  ryt        |%fd&      S #j                  d'k(  r0t        ||d   ||      }||j                  dk7  ryt        |d(       S #j                  d)k(  r\|D cg c]  }t        ||||       }}d|v ryt        j,                  |D  cg c]  } | j                   c}  &t        |d   &fd*      S #j                  d+k(  rt        ||d   ||      }||j                  dk7  ryt        |      dk(  r0t        ||d   ||      }||j                  dk7  ry|j                  "nt        j.                  "t        |"fd,      S #j                  d-k(  r=t        ||d   ||      }||j                  dk7  ryt        |t        j0                        S #j                  d.k(  r$t        ||d   ||      }|yt        |t"              S #j                  d/k(  r+t        ||d   ||      }|yt        |j                  d0       S g }t3        | j4                        D ]I  \  } }!|!j                  d1k(  r$t        |!|||      }| y|j	                  |       9|j	                  |!       K t6        j8                  j;                  | j<                  | j>                  | j                  |      } t        | |||      xs | S # t(        $ r Y yw xY wc c}w c c}w c c}w c c} w )2u  Return token with resolved math functions.

    Raise, in order of priority, ``PercentageInMath`` if percentages are mixed with
    other values with no ``refer_to`` size, or ``RelativeLengthInMath`` if no
    ``computed`` style is available to get font / viewport size.

    ``PercentageInMath`` has to be raised before ``RelativeLengthInMath`` so that it can
    be used to discard validation of properties that don’t accept percentages.

    NF)r:  rS  rn  r   )r(  r'  rV  )r  r   rT  r  rW  rX  rh  r   r(  r'  round)nearestr   r   r	   )rw  updownto-zeror   rw  rx  ry  rz  c                       | z        z  S r   r   )xr9  multiples    rp   <lambda>zresolve_math.<locals>.<lambda>^  s    X0F0Q rr   )modremr  c                     S r   r   r|  r   s    rp   r~  zresolve_math.<locals>.<lambda>l  s     rr   )sincostan)asinacosatanri  atan2clamppowc                 "    | j                   z  S r   )r   )r|  power_tokens    rp   r~  zresolve_math.<locals>.<lambda>  s    [5F5F0F rr   sqrtc                     | dz  S )Ng      ?r   r|  s    rp   r~  zresolve_math.<locals>.<lambda>  s
    S rr   hypotc                     S r   r   r  s    rp   r~  zresolve_math.<locals>.<lambda>  s    u rr   logc                 0    t        j                  |       S r   )mathr  )r|  bases    rp   r~  zresolve_math.<locals>.<lambda>  s    D0A rr   expabsrc  c                 "    | dk(  rdS | dkD  rdS dS )Nr   r   rS  r   r  s    rp   r~  zresolve_math.<locals>.<lambda>  s    qAv! A1 2 rr   r9  ) r   r   r<   rG  r   resolve_mathrZ  r3   r   r-   r   r!   r~   rv  r  ceilfloorr  r/   getattr
ValueErrorr  r  rp  r  r?  r>  r   rB  rF  rD  rE  )'rI  r   r`  ra  argspartargrb  target_valuetarget_tokenrY  r_  update_conditionstrategynumber_token
strategiesmultiple_tokenparameter_tokenrh  	parameterangley_tokenx_tokenyr|  pixels_listrm  	min_token	max_tokenrN  
base_tokenr>  rL  rM  r  r9  r}  r  r   s'                                     @@@@@rp   r  r    ss
    eDH}}$$5$9 !B 	!C#"3-J;HOOC 	!! }}"8T!WmXN>F##	.	(-111|d  	:F%hxPE}zz\)#z)..D!ED$,U[[3->-IPT$UUEEx'3;**T\ 483;**RZ 5(M!JQUV$ N%'LEKK,:L:L,LN%'LEKK,:L:L,L   -2ElA 	:B %%	'	!)(t9>,XtAwxXLY!^=J47|q T!WQZ%5%5%C71:++0d1g}h @'0d1g}h @!2d1g}h"@L.99$$(;(;;)//Y!^Awqz''H,XtAwxXL.$q'=(<Nn55  N$7$77%++Hy  HyyHzzH"%1%7%7!%;tzzH&QRR	.	((47M8T+Hd1g}hWL/22 4 44###))	"==E!fy&81&<S^#Eo66	/	/(47M8T( &&E ..e7,hmm,U3	2	2(47M8T<#4#4#@	0GD(--01C1CDE E**	'	!QUWJMh]HEWGW%%LL',,'H:5}}gmm1

1a(u55	'	! 	&F%hxPE}zz\)#t|..D!ED$U[[3%6%AME3;**"5(MB d3u%'	&( '2#	5);;(E;;(E	%	QU%WJMh]HE%W!kL+..{//0XJ>&FGG	&	 (47M8T<#4#4#@&899	'	!   hxH    8

h?UU[[?@_55	%	(47M8T<#4#4#@t9>*8T!WmXVJ!Z__%@##D66D&ABB	%	(47M8T<#4#4#@dhh//	%	(47M8Tc**	&	 (47M8T MO 	O I 1 '8==J&!(HmXNF~V$X&' LL&&5..

IGExAJUJ_  		
WP%W 
 @s*   *g &g!g&=g+,g0	ggc                       e Zd ZdZd Zd Zy)r   z2Dummy computed style used to store initial values.c                 <    d | _         | | _        i | _        || _        y r   )r   	specifiedcacherM   )r[   rM   s     rp   rq   zInitialStyle.__init__  s      
&rr   c                 "    t         |   x}| |<   |S r   )r   r[   r   r   s      rp   __missing__zInitialStyle.__missing__  s    *3//S	rr   N)r   r   r   r   rq   r  r   rr   rp   r   r     s    <'rr   r   c                   "    e Zd ZdZd Zd Zd Zy)AnonymousStylez(Computed style used for anonymous boxes.c                     | j                  dddddd       || _        d| _        | | _        |j                  | _        |j
                  | _        y )Nr   )border_top_widthborder_bottom_widthborder_left_widthborder_right_widthoutline_widthF)updater   is_root_elementr  r  rM   )r[   r   s     rp   rq   zAnonymousStyle.__init__   sX     	 !#$!""#
 	 )$!''
'33rr   c                 R    t        | j                        }|j                  |        |S r   )r  r   r  r[   copys     rp   r  zAnonymousStyle.copy  s#    d//0Drr   c                 F   |t         v s|d d dk(  r| j                  |   x}| |<   |S |dk(  r| j                  |   x}| |<   |S |d d dk(  r*t        |t        |   | j                  |   d      x}| |<   |S t        |   }|t        v rt        |   | ||      x}| |<   |S || |<   |S )Nr	   __page   text_decoration_F)r   )r   r   r   r   r   r   r  s      rp   r  zAnonymousStyle.__missing__  s    )s2Aw$ $ 1 1# 66EDI  F] $ 1 1# 66EDI  "X++ /^C($*;*;C*@5!R REDI  #3'E**$6s$;D#u$MMS	  "S	rr   Nr   r   r   r   rq   r  r  r   rr   rp   r  r    s    24"
rr   r  c                   "    e Zd ZdZd Zd Zd Zy)r   z,Computed style used for non-anonymous boxes.c	                     i | _         || _        || _        |d u | _        || _        || _        || _        || _        || _        || _	        |r|j                  | _
        y i | _
        y r   )r  r   r   r  rb   rH   r   rF   rM   rK   r  )	r[   r   r   rb   rH   r   rF   rM   rK   s	            rp   rq   zComputedStyle.__init__,  sg    ( +t3&$ &"4+7\''
R
rr   c           
      *   t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                        }|j                  |        | j                  j                         |_
        |S r   )r   r   r   rb   rH   r   rF   rM   rK   r  r  r  r  s     rp   r  zComputedStyle.copy:  sn    t}}dllD<L<LOOT]]D,<,<d>U>UW 	D,,.rr   c                 &   |dk(  r| d    n
|dk(  r| d    | j                   }|| j                  v r#| j                  |   \  }}t        |t              }n|t        v s|d d dk(  rd}nd}d}d	}|j                  d
d      }t        j                  |      x}rV |d| d         }|| j                  v r;| j                  |   \  }	}
|
|k\  r$|j                  d
d      }|	}t        |t              }|dk(  r|d}|r`g }|j                  D ]<  }d | |<   t        | ||      }| |= ||j                  |       ,|j                  |       > 	 |j                  ||      }|dk(  r!|d d dk(  rg nt        |   }|t        vr|| |<   n|dk(  r
||   x| |<   }|d d dk(  r;|9|t         v rt!        |   | ||      }t#        ||||   || j                  v       | |<   n.|dk(  r|dk(  r|dn|d   }|| v r| |= n|dv r|| j$                  |<   t'        |      rg }t)        |      t*        u r|n|f}	 |D ]H  }t'        |      r*|}	 t-        || |      }|t.        |j                  |       8|j                  |       J |j                  d
d      }t3        ||      d   d   }|| v r| |   S |t         v rt!        |   | ||      }|| |<   |S # t        $ r: |t        v r|||   x| |<   }n!|d d dk(  rd }nt        |   }|t        vr|| |<   Y w xY w# t0        $ r |j                  |       Y w xY w# t.        $ rh t5        j6                  dj8                  |j:                  |j=                                |t        v r|||   x| |<   }nt        |   }|t        vr|| |<   Y w xY w)Nfloatpositionru   r	   r  inheritinitial)r   r   r   Fr<  r   ttb	direction)blockinliner  r  r  autor   )r  r  ru   r   r   z"Invalid math function at %d:%d: %s)r   r   r\  r,   r   rH  r   rS   r_  r@  r   rA  solver+   r   r   r   r   r  r   r   tupler  	Exceptionr-   r%   r   warningrD  rE  	serialize)r[   r   r   r   rh   pending
wanted_keylogical_functionlogical_keylogical_valuelogical_weightsolved_tokensrI  r_  re   r9  original_keys                    rp   r  zComputedStyle.__missing__B  sM   '>IM(($-- MM#.ME6 0G i3r7d?!!&FG[[c*
155c:::*tK?PQKdmm+04k0J-~!V+!,!4!4S#!>J)E(8GI,"6EM 1 S	$T5,?I>!((/!((01*M:> Ibq'T/B~c/BE..!S	i ,S 11DIs8))l.F ((*3/c5A'UL-sdmm/CEDIF]u '.BL4HEd{I44 #(DNN3eM"5kU2UF*# 4E!%(#(8$04$EE  %}&/)007%,,U34  #{{34.}lKANqQ $;9$$&s+D#u=ES	i ! 
*)#(@(4S(99DI!W_ E*3/E"66$)S	
*h  0 ;)00:;  *8(((*@*@(BTBTBVX )#(@(4S(99DI*3/E"66$)S	*sJ   J9  L 3K? AL 9?K<;K<?LL LL A.NNNr  r   rr   rp   r   r   *  s    6@Hrr   r   c                   2    e Zd Zd Zed        Zed        Zy)ColorProfilec                 \    || _         || _        || _        d | _        t	        |      | _        y r   )srcrendering_intent
componentspdf_referencer   _profile)r[   file_objectr  r  r  s        rp   rq   zColorProfile.__init__  s,     0$!'4rr   c                     | j                   j                  j                  xs  | j                   j                  j                  S r   )r  profilemodelprofile_descriptionr   s    rp   r<   zColorProfile.name  s4     MM!!'' 6MM!!55	7rr   c                 6    | j                   j                         S r   )r  tobytesr   s    rp   r   zColorProfile.content  s    }}$$&&rr   N)r   r   r   rq   propertyr<   r   r   rr   rp   r  r    s/    5 7 7
 ' 'rr   r  c                     d}| j                  d      }d}|D ]]  }|r|dz  }||z  }||v r|j                  |      }%| |j                  |       t        |      dz
  }G|j	                  ||       |dz  }_ y)z,Add layer to list of layers, handling order.N.r   r   )r   r;   r   r~   insert)ro   rX   r;   parts
full_layerr  s         rp   
_add_layerr    s    EKKEJ #Jd
LL,E=MM*%K!OEMM%,QJErr   c                 $    |s|t        |      S yy)zCGet a dict of computed style mixed from parent and cascaded styles.N)r  )rb   r   r   rH   r   rF   rG   s          rp   computed_from_cascadedr    s     0l++ 18rr   c                     | syd}d}| D ]N  }|j                   dk(  r|r||j                  z  }d}&|j                   dk(  r|j                  dk(  r
|s|dz  }d}N y |s|S y)z'Parse tokens representing a layer name.Nr   Trj  FrR  r  )r   r   )r_  	new_layerlast_dotrI  s       rp   _parse_layerr    s}    IH :: X$IHZZ9$);HIH  rr   c                     t        t        |             }t        |      dk7  ry |d   }|j                  dk7  ry |j                  j                  d      s|j                  dk(  r|j                  S y )Nr   r   rj  z--zdevice-cmyk)r]  r1   r~   r   r   r   )preluder_  rI  s      rp   parse_color_profile_namer    sf    #G,-F
6{a1IEzzW{{d#u{{m'C{{ (Drr   c           	         t        t        | j                              }g }|s|j                  dddddg dd       |S |rdddddg dd}|d   j                  dk(  r(|j                  d      }|j                  |d<   d|d   d<   t        |      dk(  ry|s|j                  |       |S |r|j                  d      }|j                  d	k7  ry|j                  d
k(  r|sy|d   j                  dk(  r`|j                  d      }|j                  }|dv r$|d   r	|d   |k7  ry||d<   |d   dxx   dz  cc<   |dv rd||<   |d   dxx   dz  cc<   y|d   j                  dk(  r/|j                  d      }|j                  dk7  ryt        |j                        D ]J  \  }	}
|
j                  dk(  s|
j                  dk(  s&|j                  d|	dz
   }|j                  |	dz   d } n |j                  }d}t        j                  j                  |      }|y|L|D cg c]  }|j                  dvr| }}t        |      dk7  ry|\  }|j                  dk7  ry|j                  }g |||d<   |d   dxx   dz  cc<   |r|d   dxx   dz  cc<   y|j                  dk(  r|rt        |d         rny|r|j                  |       |r|S c c}w )a  Parse a page selector rule.

    Return a list of page data if the rule is correctly parsed. Page data are a
    dict containing:

    - 'side' ('left', 'right' or None),
    - 'blank' (True or None),
    - 'first' (True or None),
    - 'index' (page number or None),
    - 'name' (page name string or None), and
    - 'specificity' (list of numbers).

    Return ``None` if something went wrong while parsing the rule.

    Nr   )r8   r9   r:   r;   r<   ra   r   rj  r<   r   ra   rR  :)rz   r{   r8   r	   )r9   r:   Tr9  nthof)comment
whitespacer;   r   )r]  r1   r  r   r   r[  r   r~   rt  r<   r?  r>  r   r  	parse_nthany)ruler_  	page_datatypesrI  rR  rj  pseudo_classr9  rL  rM  r  rd  
nth_valuess                 rp   parse_page_selectorsr    sF   $ #DLL12FI 4$4 	5 
4$4 !9>>W$JJqME!KKE&M&'E- #v;!U#jjmG||y(}}#!9>>W,"JJqME#(#4#4L#'88 =U6]l-J#'(4fm,Q/14/ %);;.2l+m,Q/14/ L I AY^^z1%zz!}H}}-#'01C1C'D %8#==G3$8N"*"4"4Va!e"<C$,$6$6q1uv$>E!	% '00 $!)!7!7!<J!)#(/4!L&+$zz1JJ "!L !L u:?#'!& ::0#' %%9z%95%9E'N -(+q0+m,Q/14/#%c%"67E H 	i l 7!Ls    Kc                 0   |D ]  }t        |dd      |j                  dk(  r6t        j                  d|j                  |j
                  |j                         |j                  dk7  rf|j                  dvr-t        j                  d||j                  |j
                         |j                  dk(  r0	 t        }t        j                  |j                        }t        t        |||j                              }|rt        |d	 
      }|D ]  \  }}|D cg c]  }|d   	 }}|D ]  }|j!                  |||f       |j"                  t$        vs*t        j&                  |j                        }|j"                  j)                  d      r+t*        }t-        j.                  d| d|j"                         t-        j.                  d| d|j"                          d}
 nd}
|j                  dk(  rs|j                  dk(  rc|
rKt        j                  dt        j&                  |j                        |j                  |j
                         Nt3        |j                        }d}|rj|d   j                  dk(  r4t5        ||d   j6                  dd|j                  |j
                  f      }n$t9        |d   |      }|r|d   d   dk(  r|d   d   }|d}t        |dd       }|r|d   j                  dk(  r{|d   j:                  dk(  ri|j=                  d      }t?        |j@                        x}st        j                  dt        j&                  |      |j                  |j
                         t|d   j                  dk(  r1|d   j6                  dk(  r|j=                  d       dtC        |       }|r|| d| }tE        ||       tG        jH                  |      }|Kt        j                  d t        j&                  |j                        |j                  |j
                         0tG        jJ                  ||       sH|L	 tM        ||| |||	||||!
       d|j                  dk(  r|j                  d%k(  rtG        jH                  |j                        }|Kt        j                  d&t        j&                  |j                        |j                  |j
                         tG        jJ                  ||       st        jT                  |j                        }tW        | |||||||||	d'       =|j                  dk(  r^|j                  d(k(  rNtY        |      }|Kt        j                  d)t        j&                  |j                        |j                  |j
                         d}
|D ]  } | j=                  d*      }!t[        dHi | }"t        j                  |j                        }#t        t        ||#            }|r|!d|"fg}$|j]                  ||$|f       |#D ]z  }%|%j                  dk7  s|%j                  t        t        |t        j                  |%j                                    }|sT|!d+|%j                   |"fg}$|j]                  |%|$|f       |  |j                  dk(  r|j                  d,k(  rd}
t        j                  |j                        }#t_        ta        d,||#            }&d-D ]E  }'|'|&vst        j                  d.|'jc                  d/d      |j                  |j
                          I |N|je                  |&|       b|j                  dk(  r|j                  d0k(  r~d}
tg        |j                        x}(Kt        j                  d1t        j&                  |j                        |j                  |j
                         t        j                  |j                        }#ta        d0||#      }&dd2dd3})|&D ]Y  \  }*}+|*|)v r|+|)|*<   t        j                  d4|*t        j&                  |j                        |j                  |j
                         [ |)d5   Kt        j                  d6t        j&                  |j                        |j                  |j
                         |)d5   d   }ti        ||      5 },	 tk        |,||)d7   |)d8         }-|-|	|(<   	 ddd       	 |j                  dk(  r|j                  d:k(  rtq        jr                  |j                  |      }(|(Kt        j                  d;t        j&                  |j                        |j                  |j
                         	d}
t        j                  |j                        }#dddddddddd<	}.ta        d:||#      }&|&D ]
  \  }*}+|+|.|*<    |.d=   d>}/n|.d=   }/|/d   |/d   d?v rGtC        |.d@   xs g       dk  rt        j                  dA|(|j                  |j
                  |/d          
6|/d   dBv rGtC        |.d@   xs g       dCk  r}t        j                  dD|(|j                  |j
                  |/d          
|/d   dEk(  rCtC        |.dF   xs g       dCk  r.t        j                  dG|(|j                  |j
                         
|.||(<   
|j                  dk(  r|j                  dk(  rqg }0t3        |j                        }|rtu        |      ndH}1|1D ]-  }t?        |      x}r|| d| }|0j]                  |       +d}0 n |0Kt        j                  dIt        j&                  |j                        |j                  |j
                         tC        |0      dkD  rN|j                  r-t        j                  dJ|j                  |j
                         |0D ]  }tE        ||        |0r|0\  }ndtC        |       }|| d| }tE        ||       |j                  /t        jT                  |j                        }tW        | |||||||||	d|K       gt        j                  dL||j                  |j
                          yc c}w # t,        j.                  $ r"}t        j0                  d|       Y d}~d}~ww xY w# tN        $ r9}t        jP                  d"||       t        jR                  d#|$       Y d}~d}~ww xY w# tl        $ rc t        j                  d9t        j&                  |j                        jo                         |j                  |j
                         Y ddd       w xY w# 1 sw Y   xY w)MzDDo what can be done early on stylesheet, before being in a document.r   Nr   zParse error at %d:%d: %szat-rule)importro   zUnknown empty rule %s at %d:%dzqualified-rulec                     | d   S )Nr   r   r  s    rp   r~  z'preprocess_stylesheet.<locals>.<lambda>  s
    ad rr   )r   r   r   'z$', ignored prefixed pseudo-element: z', unknown pseudo-element: Tz#Invalid or unsupported selector, %sr  zP@import rule %r not at the beginning of the the whole rule was ignored at %d:%d.r   r   Fz@import at %s:%s)allow_relativecontextcontext_argsexternalr9  ro   zBInvalid layer name %r the whole @import rule was ignored at %d:%d.rj  z
@anonymousr  zBInvalid media type %r the whole @import rule was ignored at %d:%d.)
r   r   r   rM   r   r   rV   r   rX   ro   z$Failed to load stylesheet at %s : %sr   r   r   zAInvalid media type %r the whole @media rule was ignored at %d:%d.)ignore_importsr  zIUnsupported @page selector %r, the whole @page rule was ignored at %d:%d.ra   @z	font-face)r  font_familyz3Missing %s descriptor in '@font-face' rule at %d:%dr<  zcolor-profilezRInvalid color profile name %r, the whole @color-profile rule was ignored at %d:%d.zrelative-colorimetric)r  rendering-intentr  z4Unknown descriptor %r for profile named %r at %d:%d.r  zSNo source for profile named %r, the whole @color-profile rule was ignored at %d:%d.r  r  z^Invalid profile file for profile named %r, the whole @color-profile rule was ignored at %d:%d.zcounter-stylezRInvalid counter style name %r, the whole @counter-style rule was ignored at %d:%d.)	systemnegativeprefixsuffixrangepadfallbacksymbolsadditive_symbolsr   )NsymbolicN)cyclicfixedr)  r'  zHIn counter style %r at %d:%d, counter style %r needs at least one symbol)
alphabeticnumericr	   zIIn counter style %r at %d:%d, counter style %r needs at least two symbolsadditiver(  zZIn counter style %r at %d:%d, counter style "additive" needs at least two additive symbolsr   zKUnsupported @layer selector %r, the whole @layer rule was ignored at %d:%d.zR@layer rule with multiple layer names, the whole @layer rule was ignored at %d:%d.)r  ro   zUnknown rule %s at %d:%d);r  r   r   r  rD  rE  messagelower_at_keywordr   r   r  r   r]  r#   r  r   add_selectorpseudo_elementPSEUDO_ELEMENTSr  r   r   
cssselect2SelectorErrorr  r1   r   r   r0   r<   r[  r  r>  r~   r  r   parse_media_queryr   r
   r   r   r   parse_rule_listpreprocess_stylesheetr  r7   r   dictr$   rH  add_font_facer  r   r  BaseExceptionr   r   parse_counter_style_namer2   )2r   rF   stylesheet_rulesr   rV   r   rX   rM   r   r   r  ro   r  logger_levelcontentsselectors_declarations	selectorsrc   r   rm   r  excr_  r   	url_tupler   next_tokensr9  r   r   content_rulesdatar  ra   r   r   r   margin_rulerule_descriptorsr   r<   descriptorsdescriptor_namedescriptor_valueresponsecolor_profilecounterr   
new_layerscomma_separated_tokenss2                                                     rp   r8  r8    s    ! V<4D)1yyG#.$$d&8&8$,,H yyI%$$,??4$**D,>,>@ 99(( &#99$,,G)-+HhM*O& *-4.N.D*3I ./	<>J(L/:KN(L (L(1 FH#00L%;PQ'66oM*2*<*<T\\*J#+#:#:#E#Ec#J38L*4*B*B*+G9 5L+3+B+B*C)E+F %F
 +5*B*B*+G9 5C+3+B+B*C)E+F %FF *.%.( &*N
 YY)#(=(=(I;&&t||4$$d&8&8	:
 &t||4FC!9>>X-" &)//% 2&*&6&68J8J%KMC
 !(q	8 <I Yq\!_
%B'l1o{Ivabz*Kq>&&*4Q9L9LPW9W*q1H)5h6H6H)IIIIK$..x8 ,,d.@.@	B
 ! ^((G3A8L8LPW8WOOA&",S[M :I(',gQyk$:	y&1!33K@E}C&&t||4$$d&8&8	:
  55e=NOX[EV$/}'5w#-fI	O YY)#(=(=(H!33DLLAE}B&&t||4$$d&8&8	:
  55e=NO$44T\\BM!!8]KFK#%
 YY)#(=(=(G'-D|A&&t||4$$d&8&8	:
 !N! V	'mmM:%5%B	%B""88F#$;Hg$NO&149K%L$MM%%t]L&IJ#* 
VK"''948K8K8S #'(?  66{7J7JK)M $NL $'1[-I-I,J)K.*0 )1 #));|*TU
VV, YY)#(=(=(L!N44T\\BG#&{HgF H- M..NNMC-t/?/?ASASU M *--.>LYY)#(=(=(P!N0>>G@&&t||4d6F6F&&	(
 44T\\BG57 4 $;"K
 6F >1!1"k13CK0NNN'););DLL)I(($*<*<>	> 5!)@&&t||4d6F6F&&	(
 e$Q'C{C( 9H9$0 #{3E'F#L1%3M ,9N4(9 9 YY)#(=(=(P44T\\=QD|@&&t||4d6F6F&&	(
 !N44T\\BG  $(
G  67 4 6F <1!1+;(< x (1 *ay !9 ??79-34q8I $"2"2D4F4Fq	S !AY";;79-34q8J $"2"2D4F4Fq	S !AY*,7#56<"=AB !$"2"2D4F4F	H
 !")M$YY)#(=(=(HJ'5G@G^G%<R"0  ,V 4494(',gQyk$:	%%i0!%J !B&&t||4$$d&8&8	:
 Z1$<<NNF(($*<*<> !+ 2Iy&12'
	(V6	$#('9+ 6Iy&)||#$44T\\BM!!8]KFK#96 NN*d&&(:(:<i
V<2(L( ++ 

<)NPSTB ( XLL!GiXLL!BYWWXb % NND **4<<8>>@$BRBR**	,
 9 9
9 9s{   5A!rr"-rBrsvt3vrs2ss	t .ttA v<vvvv	c
                 l   g }
|t        j                         }|
t               }| j                         D ]  }|j	                         D ]
  \  }}|||<    ! | j                  |	      xs g D ]  }|
j                  |ddf        |r-| j                         xs g D ]  }|
j                  |ddf        t        | j                  | j                  | j                  | j                  |||||	      D ]  }|
j                  |ddf        |xs g D ]  }|
j                  |ddf        t        | |
|||      S )a   Compute all the computed styles of all elements in ``html`` document.

    Do everything from finding author stylesheets to parsing and applying them.

    Return a ``style_for`` function that takes an element and an optional
    pseudo-element type, and return a style dict object.

    Nr4  rB   r   r5  )r   CounterStyler   _ua_counter_stylerJ  _ua_stylesheetsr   _ph_stylesheetsr   rT   r   r   rF   r>   )r\   user_stylesheetsr^   rM   r   r   r   rX   rG   formsr]   rd   r   r   rj   s                  rp   get_all_computed_stylesrX    s_    F --/')'') '++- 	'JC!&M#	'' &&u-3 3ulD123**,2 	8EMM5(I67	8!  $//43C3CMM;~z / 	uh-.	/
 #(b -ufd+,- D&"6EUVVrr   )FN)NNNr   )	NFNNNNNNF)^r   r  collectionsr   	itertoolsr   loggingr   r   r   r4  r   tinycss2.asttinycss2.nthPIL.ImageCmsr   r   r
   loggerr   r   
text.fontsr   urlsr   r   r   r   r   r   computed_valuesr   r   	functionsr   r   r   
propertiesr   r   r   r   unitsr   r   r    r!   r"   
validationr#   validation.descriptorsr$   validation.propertiesr%   r_  r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r3  r7   r>   r   r   r   rO   rR   r@  rZ  r^  rl  r  r9  r   r  r   r  r  r  r  r  r  r8  rX  r   rr   rp   <module>ri     sR    "  "      (  , * G G % C 6 6 T T S S / : 9   ( CE p pf&-X`iFX.'TB&J/&d$CKL
4 
)T )X`D `F' '&( IM59,0,&rn GKZ<z
 OTQUKO"'"Wrr   