Ë
    £ëiA™  ã                   óh  — d Z ddlZddlmZmZmZ ddlmZ ddlm	Z	 ddl
mZ dd	lmZ dd
lmZmZmZmZmZ ddl
mZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 i Z: G d„ de«      Z;d„ Z<d„ Z=d„ Z> e=d«       e=d«       e=d«       e=d«       e=d«       e=d«      d„ «       «       «       «       «       «       Z? e=d«       e>ddddd¬«      d„ «       «       Z@ e=d «       e>d!d"d#d¬«      d$„ «       «       ZA e=d%«      d&„ «       ZB e=d'«       e=d(«       e=d)«       e=d*«       e=d+«       e=d,«       e>d-d.d/«      d0„ «       «       «       «       «       «       «       ZC e=d1«       e>d2d3d4d5d-d¬«      d6„ «       «       ZD e=d7«       e>d2d3d4d5d-d8d¬«      d9„ «       «       ZE e=d:«      d;„ «       ZF e=d<«       e>d=d.d/d>«      d?„ «       «       ZGd@„ ZH e=dA«       e>dB«      dC„ «       «       ZI e=dD«       e>dE«      dF„ «       «       ZJ e=dG«       e>dH«      dI„ «       «       ZK e=dJ«       e>dKdL«      dM„ «       «       ZL e=dN«       e>dOdPdQdRdSd"«      dT„ «       «       ZM e=dU«       e>d/dVdWdXdYdZd[«      d\„ «       «       ZN e=d]«       e>d^«      d_„ «       «       ZO e=d`«       e>dadbdc«      dd„ «       «       ZP e=de«       e>dfdg«      dh„ «       «       ZQdi„ ZR e=dj«       e>dkdldm«      dn„ «       «       ZS e=do«       e>dpdqdrdsdtdu«      dv„ «       «       ZTdw„ ZU e=dx«       e=dy«       e>dzd{«      d|„ «       «       «       ZV e=d}«       e>d~dd€d�«      d‚„ «       «       ZW e=dƒ«       e=d„«       e>d…d†«      d‡„ «       «       «       ZX e=dˆ«       e>d…«      d‰„ «       «       ZY e=dŠ«       e>d†«      d‹„ «       «       ZZ e=dŒ«       e>d�dŽ«      d�„ «       «       Z[ e=d�«       e>d‘d’«      d“„ «       «       Z\ e=d”«       e>d•d–«      d—„ «       «       Z] e=d˜«       e>d™dšd›«      dœ„ «       «       Z^ e=d�«       e>dždŸ«      d „ «       «       Z_y)¡zValidate properties expanders.é    N)ÚDimensionTokenÚ
IdentTokenÚNumberToken)Úparse_coloré   )Ú	check_var)ÚINITIAL_VALUESé   ©Úexpand_font_variant)ÚInvalidValuesÚPendingÚget_keywordÚget_single_keywordÚsplit_on_comma)&Úbackground_attachmentÚbackground_imageÚbackground_positionÚbackground_repeatÚbackground_sizeÚblock_ellipsisÚborder_image_sourceÚborder_image_sliceÚborder_image_widthÚborder_image_outsetÚborder_image_repeatÚborder_styleÚborder_widthÚboxÚcolumn_countÚcolumn_widthÚ
flex_basisÚflex_directionÚflex_grow_shrinkÚ	flex_wrapÚfont_familyÚ	font_sizeÚfont_stretchÚ
font_styleÚfont_variant_capsÚfont_weightÚgapÚ	grid_lineÚgrid_templateÚline_heightÚlist_style_imageÚlist_style_positionÚlist_style_typeÚmask_border_modeÚother_colorsÚoverflow_wrapÚtext_decoration_thicknessÚvalidate_non_shorthandc                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚPendingExpanderz>Expander with validation done when defining calculated values.c                 óN   •— t         ‰| �  ||j                  d   «       || _        y )NÚname)ÚsuperÚ__init__ÚkeywordsÚ	validator)ÚselfÚtokensr?   Ú	__class__s      €úc/var/www/html/chat/reports/venv/lib/python3.12/site-packages/weasyprint/css/validation/expanders.pyr=   zPendingExpander.__init__   s$   ø€ Ü‰Ñ˜ ×!3Ñ!3°FÑ!;Ô<Ø"ˆ�ó    c                 ó®   — | j                  |«      D ]<  \  }}|j                  d«      r| j                   j                  d   › |› �}||k(  sŒ:|c S  t        ‚)Nú-r;   )r?   Ú
startswithr>   ÚKeyError)r@   rA   Ú
wanted_keyÚkeyÚvalues        rC   ÚvalidatezPendingExpander.validate!   s\   € ØŸ.™.¨Ó0ò 	‰JˆC�Ø�~‰~˜cÔ"ØŸ™×0Ñ0°Ñ8Ð9¸#¸Ð?�Ø�jÓ Ø’ð		ô
 ˆrD   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r=   rL   Ú__classcell__)rB   s   @rC   r9   r9      s   ø„ ÙHô#örD   r9   c                 óp   — | D ],  }t        |«      sŒt        | |«      }|D �ci c]  }||“Œ c}c S  yc c}w )z5Return pending expanders when var is found in tokens.N)r   r9   )rA   ÚexpanderÚexpanded_namesÚtokenÚpendingr;   s         rC   Ú	_find_varrW   *   s?   € àò >ˆÜ�UÕä% f¨hÓ7ˆGØ.<Ö= d�D˜'‘MÒ=Ò=ñ	>ùò >s   ¢
3c                 ó   ‡ — ˆ fd„}|S )z1Decorator adding a function to the ``EXPANDERS``.c                 ó8   •— ‰t         vsJ ‰«       ‚| t         ‰<   | S )z&Add ``function`` to the ``EXPANDERS``.)Ú	EXPANDERS)ÚfunctionÚproperty_names    €rC   Úexpander_decoratorz$expander.<locals>.expander_decorator5   s%   ø€ à¤IÑ-Ð<¨}Ó<Ð-Ø#+Œ	�-Ñ ØˆrD   © )r\   r]   s   ` rC   rS   rS   3   s   ø€ ôð
 ÐrD   c                  óB   ‡ ‡— |j                  dd«      Š|rJ ‚ˆ ˆfd„}|S )zöDecorator helping expanders to handle ``inherit`` and ``initial``.

    Wrap an expander so that it does not have to handle the 'inherit' and
    'initial' cases, and can just yield name suffixes. Missing suffixes
    get the initial value.

    Úwants_base_urlFc                 óL   •‡ ‡— t        j                  ‰ «      ˆˆˆˆ fd„«       Š‰S )z"Decorate the ``wrapped`` expander.c              3   óö  •K  — t        j                  ‰||¬«      }d}t        | «      }|dv r‰D �ci c]  }||“Œ }}d}nt        | |‰«      }|rd}|sWi }‰r ‰| |«      }n	 ‰| «      }|D ]:  \  }}	|‰v sJ |«       ‚||v r!t	        d|j                  d«      › d|› d�«      ‚|	||<   Œ< ‰D ]D  }|j                  d«      r› |› �}
n|}
||v r||   }|st        ||
|d¬	«      \  \  }
}nd
}|
|f–— ŒF yc c}w ­w)zWrap the expander.©r;   Úbase_urlF)ÚinheritÚinitialTzgot multiple rF   z values in a z
 shorthand©Úrequiredrf   N)Ú	functoolsÚpartialr   rW   r   ÚstriprG   r7   )rA   r;   rd   rS   Úskip_validationÚkeywordÚresultsÚresultÚnew_nameÚ	new_tokenÚactual_new_namerK   rT   Úgeneric_expander_wrapperr`   Úwrappeds               €€€€rC   rs   zVgeneric_expander.<locals>.generic_expander_decorator.<locals>.generic_expander_wrapperJ   sx  øè ø€ ô !×(Ñ(Ø(¨t¸hôHˆHð $ˆOÜ(¨Ó0ˆGØÐ0Ñ0Ø5CÖD¨T˜4 ™=ÐD�ÐDØ"&‘ä# F¨H°nÓE�ÙØ&*�Oá"Ø�Ù!Ù$ V¨T°8Ó<‘Fá$ V¨TÓ2�FØ+1ò 2Ñ'�H˜iØ# ~Ñ5Ð?°xÓ?Ð5Ø 7Ñ*Ü+Ø+¨H¯N©N¸3Ó,?Ð+@ð A$Ø$( 6¨ð5ó6ð 6ð )2�G˜HÒ%ð2ð +ò -�Ø×&Ñ& sÔ+à)-¨¨x¨jÐ&9‘Oà&.�Oà˜wÑ&Ø# HÑ-�EÙ*ä4JØ! ?°HÀtô5MÑ1Ñ0˜©%ð &�Eà% uÐ,Ó,ñ!-ùò+ Eùs   ƒ.C9±
C4»B>C9)ri   Úwraps)rt   rs   rT   r`   s   `@€€rC   Úgeneric_expander_decoratorz4generic_expander.<locals>.generic_expander_decoratorH   s'   ú€ ä	�‰˜Ó	!ö-	-ó 
"ð-	-ð\ (Ð'rD   )Úpop)rT   Úkwargsrv   r`   s   `  @rC   Úgeneric_expanderry   =   s,   ù€ ð —Z‘ZÐ 0°%Ó8€NÙÐˆ:õ1(ðd &Ð%rD   zborder-colorzborder-stylezborder-widthÚmarginÚpaddingÚbleedc              #   óZ  K  — g }dD ]K  }|j                  d«      x}dk(  r|j                  |› |› �«       Œ/|j                  |d| › |› ||d › �«       ŒM t        j                  t        ||¬«      }t        | ||«      x}r|j                  «       E d{  –—†  yt        | «      dk(  r| dz  } nQt        | «      dk(  r| dz  } n=t        | «      d	k(  r
| | d   fz  } n%t        | «      dk7  rt        d
t        | «      › �«      ‚t        || «      D ]  \  }}	t        |	g||d¬«      \  }|–— Œ y7 Œ•­w)z>Expand properties setting a token for the four sides of a box.©z-topz-rightz-bottomz-leftrF   éÿÿÿÿNrc   r
   é   r   é   ú%Expected 1 to 4 token components got Trg   )ÚrfindÚappendri   rj   Úexpand_four_sidesrW   ÚitemsÚlenr   Úzipr7   )
rA   r;   rd   rT   ÚsuffixÚirS   ro   Úexpanded_namerU   s
             rC   r…   r…   }   sa  è ø€ ð €NØ8ò CˆØ—‘˜C“Ð ˆA RÒ'Ø×!Ñ! T F¨6¨(Ð"3Õ4ð ×!Ñ! T¨"¨1 X J¨v¨h°t¸A¸B°x°jÐ"AÕBðCô × Ñ Ü ¨xô9€Hä˜6 8¨^Ó<Ð<€vÐ<Ø—<‘<“>×!Ð!Øô ˆ6ƒ{�aÒØ�!‰‰Ü	ˆV‹˜Ò	Ø�!‰‰Ü	ˆV‹˜Ò	Ø�6˜!‘9�,Ñ‰Ü	ˆV‹˜Ò	ÜØ3´C¸³K°=ÐAóCð 	Cä # N°FÓ ;ò Ñˆ�uô )ØˆG�] H°tô=‰ˆà‹ñð 	"ús   ‚BD+ÂD)ÂBD+zborder-radiuszborder-top-left-radiuszborder-top-right-radiuszborder-bottom-right-radiuszborder-bottom-left-radiusT)r`   c              #   óD  K  — g x}}g }| D ]V  }|j                   dk(  r4|j                  dk(  r%||u r|| d   k(  rt        d«      ‚|}Œ;t        d«      ‚|j                  |«       ŒX |s|dd }||fD ]r  }t	        |«      dk(  r|dz  }Œt	        |«      d	k(  r|d	z  }Œ+t	        |«      d
k(  r|j                  |d   «       ŒNt	        |«      dk7  sŒ]t        dt	        |«      › �«      ‚ d}t        |t        ||«      «      D ]   \  }	} d|	› d�}t        | ||d¬«       || f–— Œ" y­w)z-Validator for the ``border-radius`` property.Úliteralú/r   z"Expected value after "/" separatorzExpected only one "/" separatorNr
   r€   r   r�   r‚   )ztop-leftz	top-rightzbottom-rightzbottom-leftzborder-z-radiusTrg   )ÚtyperK   r   r„   r‡   rˆ   r7   )
rA   r;   rd   ÚcurrentÚ
horizontalÚverticalrU   ÚvaluesÚcornersÚcorners
             rC   Úborder_radiusr–   §   s\  è ø€ ð Ð€GˆjØ€HØò 
"ˆØ�:‰:˜Ò" u§{¡{°cÒ'9Ø˜*Ñ$Ø˜F 2™JÒ&Ü'Ð(LÓMÐMà&‘Gä#Ð$EÓFÐFà�N‰N˜5Õ!ð
"ñ Ø™a�=ˆà˜hÐ&ò 
Gˆäˆv‹;˜!ÒØ�a‰K‰FÜ�‹[˜AÒØ�a‰K‰FÜ�‹[˜AÒØ�M‰M˜& ™)Õ$Ü�‹[˜AÓÜØ7¼¸F»°}ÐEóGð Gð
Gð G€GÜ˜g¤s¨:°xÓ'@ÓAò ‰ˆ�Ø˜˜ Ð(ˆÜ˜v t¨XÀÕEØ�FˆlÓñùs   ‚C	D ÃAD z
list-styleú-typeú	-positionú-imagec              #   ó   K  — dx}}d}| D ]W  }t        |«      dk(  r|dz  }|}Œt        |g|«      �d}d}n&t        |g«      �d}nt        |g«      �d	}d}nt        ‚||gf–— ŒY |s|rd	gf–— |dz  }|s|rdgf–— |dz  }|rt        ‚y­w)
zyExpand the ``list-style`` shorthand property.

    See https://www.w3.org/TR/CSS21/generate.html#propdef-list-style

    Fr   Únoner
   Nr™   Tr˜   r—   )r   r0   r1   r2   r   )	rA   r;   rd   Útype_specifiedÚimage_specifiedÚ
none_countrU   Ú
none_tokenr‰   s	            rC   Úexpand_list_styler    Ñ   sà   è ø€ ð (-Ð,€N�_Ø€JØò ˆÜ�uÓ Ò'ð ˜!‰OˆJØˆJØä˜U˜G XÓ.Ð:ØˆFØ"‰OÜ  % Ó)Ð5Ø ‰FÜ˜e˜WÓ%Ð1ØˆFØ!‰NäÐØ�u�gˆoÓð%ñ( ™jØ˜
�|Ð#Ò#Ø�a‰ˆ
á™zØ˜˜Ð$Ò$Ø�a‰ˆ
áäÐð ùs   ‚BBÚborderc              #   óN   K  — dD ]  }t        | ||z   |«      E d{  –—†  Œ y7 Œ­w)zlExpand the ``border`` shorthand property.

    See https://www.w3.org/TR/CSS21/box.html#propdef-border

    r~   N)Úexpand_border_side)rA   r;   rd   r‰   s       rC   Úexpand_borderr¤   ü   s2   è ø€ ð 9ò GˆÜ% f¨d°V©m¸XÓF×FÑFñGØFús   ‚%›#œ%z
border-topzborder-rightzborder-bottomzborder-leftzcolumn-ruleÚoutlineú-widthú-colorú-stylec              #   óŒ   K  — | D ];  }t        |«      �d}n$t        |g«      �d}nt        |g«      �d}nt        ‚||gf–— Œ= y­w)ztExpand the ``border-*`` shorthand properties.

    See https://www.w3.org/TR/CSS21/box.html#propdef-border-top

    Nr§   r¦   r¨   )r   r   r   r   )rA   r;   rU   r‰   s       rC   r£   r£     s]   è ø€ ð ò 	ˆÜ�uÓÐ)Ø‰FÜ˜5˜'Ó"Ð.Ø‰FÜ˜5˜'Ó"Ð.Ø‰FäÐØ�u�gˆoÓñ	ùs   ‚AAzborder-imageú-outsetú-repeatú-sliceú-sourcec              #   ó¢  K  — t        | «      } | �r½t        | dd |«      rd| j                  d«      gf–— �n‘t        | dd «      r[| j                  d«      g}| r?t        | dd «      r1|j	                  | j                  d«      «       | rt        | dd «      rŒ1d|f–— �n(t        | dd «      st        | d   «      dk(  �r| j                  d«      g}| rEt        || dd z   «      r4|j	                  | j                  d«      «       | rt        || dd z   «      rŒ4d|f–— | r6| d   j                  dk(  r$| d   j                  d	k(  r| j                  d«       n�ŒL| st        ‚t        | dd «      r™| j                  d«      g}| rEt        || dd z   «      r4|j	                  | j                  d«      «       | rt        || dd z   «      rŒ4d
|f–— | r6| d   j                  dk(  r$| d   j                  d	k(  r| j                  d«       n@�Œû| r6| d   j                  dk(  r$| d   j                  d	k(  r| j                  d«       nt        ‚| st        ‚t        | dd «      r`| j                  d«      g}| rEt        || dd z   «      r4|j	                  | j                  d«      «       | rt        || dd z   «      rŒ4d|f–— nt        ‚t        ‚| r�Œ¼yy­w)z}Expand the ``border-image-*`` shorthand properties.

    See https://drafts.csswg.org/css-backgrounds/#the-border-image

    Nr
   r­   r   r«   Úfillr¬   r�   rŽ   r¦   rª   )Úlistr   rw   r   r„   r   r   r�   rK   r   r   r   ©rA   r;   rd   ÚrepeatsÚslicesÚwidthsÚoutsetss          rC   Úexpand_border_imager¶      s¤  è ø€ ô �&‹\€FÚ
Ü˜v b q˜z¨8Ô4Ø˜fŸj™j¨›m˜_Ð,Ô,Ü  ¨¨ Ô,Ø—z‘z !“}�oˆGÙÔ0°¸¸°Ô<Ø—‘˜vŸz™z¨!›}Ô-ñ Ô0°¸¸°Õ<à˜WÐ$Ô$Ü  r¨ 
Ô+¬{¸6À!¹9Ó/EÈÓ/OØ—j‘j “m�_ˆFÙÔ/°¸ÀÀ¸Ñ0CÔDØ—‘˜fŸj™j¨›mÔ,ñ Ô/°¸ÀÀ¸Ñ0CÕDà˜FÐ"Ò"Ù˜& ™)Ÿ.™.¨IÒ5¸&À¹)¿/¹/ÈSÒ:Pà—
‘
˜1•ñ Ùä#Ð#Ü! &¨¨! *Ô-Ø Ÿ*™* Q›-˜�ÙÔ!3°F¸VÀBÀQ¸ZÑ4GÔ!HØ—M‘M &§*¡*¨Q£-Ô0ñ Ô!3°F¸VÀBÀQ¸ZÑ4GÕ!Hà Ð&Ò&Ù˜f Q™iŸn™n°	Ò9¸fÀQ¹i¿o¹oÐQTÒ>Tà—J‘J˜q•Mñ Ù˜F 1™IŸN™N¨iÒ7¸FÀ1¹I¿O¹OÈsÒ<Rà—
‘
˜1•ô $Ð#Ùä#Ð#Ü" 6¨"¨1 :Ô.Ø!Ÿ:™: a›=˜/�ÙÔ!4°W¸vÀbÀq¸zÑ5IÔ!JØ—N‘N 6§:¡:¨a£=Ô1ñ Ô!4°W¸vÀbÀq¸zÑ5IÕ!Jà Ð(Ó(ô $Ð#äÐõg ùs'   ‚BKÂB KÄB.KÇ	C,KÊ6KËKzmask-borderú-modec              #   óî  K  — t        | «      } | �rãt        | dd |«      rd| j                  d«      gf–— �n·t        | dd «      rd| j                  d«      gf–— �n‘t	        | dd «      r[| j                  d«      g}| r?t	        | dd «      r1|j                  | j                  d«      «       | rt	        | dd «      rŒ1d|f–— �n(t        | dd «      st        | d   «      dk(  �r| j                  d«      g}| rEt        || dd z   «      r4|j                  | j                  d«      «       | rt        || dd z   «      rŒ4d|f–— | r6| d   j                  d	k(  r$| d   j                  d
k(  r| j                  d«       n�Œr| st        ‚t        | dd «      r™| j                  d«      g}| rEt        || dd z   «      r4|j                  | j                  d«      «       | rt        || dd z   «      rŒ4d|f–— | r6| d   j                  d	k(  r$| d   j                  d
k(  r| j                  d«       n@�Œ!| r6| d   j                  d	k(  r$| d   j                  d
k(  r| j                  d«       nt        ‚| st        ‚t        | dd «      r`| j                  d«      g}| rEt        || dd z   «      r4|j                  | j                  d«      «       | rt        || dd z   «      rŒ4d|f–— nt        ‚t        ‚| r�Œâyy­w)zvExpand the ``mask-border-*`` shorthand properties.

    See https://drafts.fxtf.org/css-masking/#the-mask-border

    Nr
   r­   r   r·   r«   r¯   r¬   r�   rŽ   r¦   rª   )r°   r   rw   r3   r   r„   r   r   r�   rK   r   r   r   r±   s          rC   Úexpand_mask_borderr¹   `  sÇ  è ø€ ô �&‹\€FÚ
Ü˜v b q˜z¨8Ô4Ø˜fŸj™j¨›m˜_Ð,Ô,Ü˜f R a˜jÔ)Ø˜FŸJ™J q›M˜?Ð*Ô*Ü  ¨¨ Ô,Ø—z‘z !“}�oˆGÙÔ0°¸¸°Ô<Ø—‘˜vŸz™z¨!›}Ô-ñ Ô0°¸¸°Õ<à˜WÐ$Ô$Ü  r¨ 
Ô+¬{¸6À!¹9Ó/EÈÓ/OØ—j‘j “m�_ˆFÙÔ/°¸ÀÀ¸Ñ0CÔDØ—‘˜fŸj™j¨›mÔ,ñ Ô/°¸ÀÀ¸Ñ0CÕDà˜FÐ"Ò"Ù˜& ™)Ÿ.™.¨IÒ5¸&À¹)¿/¹/ÈSÒ:Pà—
‘
˜1•ñ Ùä#Ð#Ü! &¨¨! *Ô-Ø Ÿ*™* Q›-˜�ÙÔ!3°F¸VÀBÀQ¸ZÑ4GÔ!HØ—M‘M &§*¡*¨Q£-Ô0ñ Ô!3°F¸VÀBÀQ¸ZÑ4GÕ!Hà Ð&Ò&Ù˜f Q™iŸn™n°	Ò9¸fÀQ¹i¿o¹oÐQTÒ>Tà—J‘J˜q•Mñ Ù˜F 1™IŸN™N¨iÒ7¸FÀ1¹I¿O¹OÈsÒ<Rà—
‘
˜1•ô $Ð#Ùä#Ð#Ü" 6¨"¨1 :Ô.Ø!Ÿ:™: a›=˜/�ÙÔ!4°W¸vÀbÀq¸zÑ5IÔ!JØ—N‘N 6§:¡:¨a£=Ô1ñ Ô!4°W¸vÀbÀq¸zÑ5IÕ!Jà Ð(Ó(ô $Ð#äÐõk ùs'   ‚B<K5Â?B K5Å B.K5Ç/C,K5ËK5Ë3K5Ú
backgroundc              #   ó`  ‡‡K  — dŠt        | «      }|dv r‰D ]  }||f–— Œ
 yt        j                  t        |‰¬«      }t	        | |‰«      x}r|j                  «       E d{  –—†  yd
ˆˆfd„	}t        t        | «      «      } |t        |«      d¬«      \  }}	|	j                  «       D �
�ci c]	  \  }
}|
|g“Œ }}
}|D ]9  }  || «      \  }}|j                  «       D ]  \  }}||   j                  |«       Œ Œ; |j                  «       D ]  \  }}||ddd…   f–— Œ d	|f–— y7 ŒÃc c}}
w ­w)zwExpand the ``background`` shorthand property.

    See https://drafts.csswg.org/css-backgrounds-3/#the-background

    )úbackground-colorzbackground-imagezbackground-repeatzbackground-attachmentzbackground-positionzbackground-sizezbackground-clipzbackground-origin)rf   re   Nrc   c           	      óþ  •‡— i Šˆfd„}| d d d…   } | �r |dt        j                  | dd  d d d…   «      «      r| dd …= Œ.| dd  }|r# |dt        |«      «      r| j                  «        ŒX |dt	        j                  |‰«      «      r| j                  «        Œ† |dt        j                  |«      «      r| j                  «        Œ³ |dt        j                  |«      «      r| j                  «        Œàdt        | «       d  D ]§  }| | d  d d d…   }t        j                  |«      }|€Œ' |d	|«      sJ ‚| | d …= | rm| d   j                  d
k(  r[| d   j                  dk(  rIdt        | «       d  D ]7  }| | d d d d…   }t        j                  |«      }|€Œ' |d|«      sJ ‚| | d …= Œ9  n ��Œ� |dt        j                  |«      «      r`| j                  «        | dd  } |dt        j                  |«      «      r| j                  «        n |dt        j                  |«      «       �Œt        ‚‰j                  dt        d   «      }	‰D ],  }
|
‰vsŒ|
dk7  sŒt        |
j                  dd«         d   ‰|
<   Œ. |	‰fS )Nc                 ó4   •— |€yd| › �} | ‰v rt         ‚|‰| <   y)NFzbackground-T©r   )r;   rK   rn   s     €rC   Úaddz3expand_background.<locals>.parse_layer.<locals>.add¼  s0   ø€ Øˆ}ØØ   Ð'ˆDØ�w‰Ü#Ð#Ø!ˆG�D‰MØrD   r   ÚrepeatéþÿÿÿÚcolorÚimageÚ
attachment)r€   r�   r   r
   Úpositionr�   rŽ   )r�   r   ÚsizeÚoriginÚclipr¼   Úbackground_colorrF   Ú_r   )r   Úsingle_valuer4   rw   r   r   r‡   r   r�   rK   r   r   r   r	   Úreplace)rA   Úfinal_layerrÀ   rU   ÚnÚn_tokensrÆ   rÇ   Ú
next_tokenrÃ   r;   rn   rd   rT   s              @€€rC   Úparse_layerz&expand_background.<locals>.parse_layer¹  s©  ù€ Øˆô	ð ™˜"˜‘ˆÚÙ�8Ü$×1Ñ1°&¸¸°+¹dÀ¸dÑ2CÓDôFà˜2™3�KØØ˜2˜3�KˆEÙ™s 7¬L¸Ó,?Ô@Ø—
‘
”ØÙ�7Ô,×9Ñ9¸%ÀÓJÔKØ—
‘
”ØÙ�8Ô.×;Ñ;¸EÓBÔCØ—
‘
”ØÙ�<Ô!6×!CÑ!CÀEÓ!JÔKØ—
‘
”ØØ!¤3 v£; , -Ð0ò �Ø! 1 " #˜;¡t¨ tÑ,�Ü.×;Ñ;¸HÓE�ØÑ'Ù˜z¨8Ô4Ð4Ð4Ø ˜r™s˜Ù 6¨"¡:§?¡?°iÒ#?Ø" 2™J×,Ñ,°Ò3Ø!'¬¨V«¨¨Ð!6ò 0˜Aà'-¨q¨b° }±T°r°TÑ':˜HÜ#2×#?Ñ#?ÀÓ#I˜DØ#Ñ/Ù'*¨6°4Ô'8Ð 8Ð'8Ø$*¨A¨2©3¡Kð0ñ ðð  Ð#ÙÙ�8œS×-Ñ-¨eÓ4Ô5Ø—
‘
”Ø# B C˜[�
Ù�vœs×/Ñ/°
Ó;Ô<Ø—J‘J•Lñ ˜¤× 0Ñ 0°Ó 7Ô8ÙÜÐà—‘Ø¤Ð/AÑ BóDˆà"ò 	JˆDØ˜7Ò" tÐ/AÓ'AÜ .¨t¯|©|¸CÀÓ/EÑ FÀqÑ I�˜’ð	Jð �gˆ~ÐrD   T)rÎ   r   r¼   )F)
r   ri   rj   Úexpand_backgroundrW   r†   Úreversedr   Únextr„   )rA   r;   rd   rm   rS   ro   rÒ   ÚlayersrÃ   Ú
last_layerrJ   rK   rn   rË   Úlayerr“   rT   s     `             @rC   rÓ   rÓ   ¢  s]  ùè ø€ ð0€Nô ! Ó(€GØÐ(Ñ(Ø"ò 	 ˆDØ˜�-Óð	 àä× Ñ Ü ¨xô9€Hä˜6 8¨^Ó<Ð<€vÐ<Ø—<‘<“>×!Ð!ØöBôH ”n VÓ,Ó-€FÙ#¤D¨£L¸dÔCÑ€Eˆ:Ø.8×.>Ñ.>Ó.@×A¡
  Uˆs�U�G‰|ÐA€GÑAØò (ˆÙ˜vÓ&‰ˆˆ5Ø Ÿ;™;›=ò 	(‰KˆD�%Ø�D‰M× Ñ  Õ'ñ	(ð(ð  Ÿ™›ò !‰ˆˆfØ�F™4˜R˜4‘LÐ Ó ð!à
˜eÐ
#Ó#ða 	"úóR Bùs&   „AD.Á"D&Á#A	D.Â,D(Â:A-D.Ä(D.ztext-decorationú-lineú
-thicknessc              #   ó®  K  — g }g }g }g }d}| D ]¡  }t        |«      }|dv r"|j                  |«       |rt        ‚|dk(  sŒ1d}Œ4|dv r|rt        ‚|j                  |«       ŒRt        |«      r|rt        ‚|j                  |«       Œwt	        |g«      r|rt        ‚|j                  |«       Œ�t        ‚ |rd|f–— |rd|f–— |rd|f–— |rd	|f–— y
y
­w)z2Expand the ``text-decoration`` shorthand property.F)r›   Ú	underlineÚoverlinezline-throughÚblinkr›   T)ÚsolidÚdoubleÚdottedÚdashedÚwavyrÙ   r§   r¨   rÚ   N)r   r„   r   r   r6   )	rA   r;   ÚlinerÃ   ÚstyleÚ	thicknessÚnone_in_linerU   rm   s	            rC   Úexpand_text_decorationrè   	  s  è ø€ ð €DØ€EØ€EØ€IØ€Làò  ˆÜ˜eÓ$ˆØÐPÑPØ�K‰K˜ÔÙÜ#Ð#Ø˜FÓ"Ø#‘ØÐGÑGÙÜ#Ð#Ø�L‰L˜ÕÜ˜ÔÙÜ#Ð#Ø�L‰L˜ÕÜ&¨ wÔ/ÙÜ#Ð#Ø×Ñ˜UÕ#äÐð+ ñ. Ø�tˆmÒÙØ˜ˆoÒÙØ˜ˆoÒÙØ˜IÐ%Ó%ð ùs   ‚=CÁ BCc              #   óÔ   K  — t        | «      }|j                  dd«      d   }|dv r|| f–— y|dk(  r/t        | d   j                  | d   j                  d«      }||gf–— yt
        ‚­w)z�Expand legacy ``page-break-before`` and ``page-break-after`` properties.

    See https://www.w3.org/TR/css-break-3/#page-break-properties

    rF   r
   )ÚautoÚleftÚrightÚavoidÚalwaysr   ÚpageN)r   Úsplitr   Úsource_lineÚsource_columnr   )rA   r;   rm   rp   rU   s        rC   Úexpand_page_break_before_afterró   4  s|   è ø€ ô ! Ó(€GØ�z‰z˜#˜qÓ! !Ñ$€HØÐ4Ñ4Ø˜ÐÓØ	�HÒ	ÜØ�1‰I×!Ñ! 6¨!¡9×#:Ñ#:¸FóDˆà˜˜ÐÓäÐùs   ‚A&A(zpage-break-afterzbreak-afterc                 ó   — t        | |«      S )ztExpand legacy ``page-break-after`` property.

    See https://www.w3.org/TR/css-break-3/#page-break-properties

    ©ró   ©rA   r;   s     rC   Úexpand_page_break_afterr÷   F  ó   € ô *¨&°$Ó7Ð7rD   zpage-break-beforezbreak-beforec                 ó   — t        | |«      S )zuExpand legacy ``page-break-before`` property.

    See https://www.w3.org/TR/css-break-3/#page-break-properties

    rõ   rö   s     rC   Úexpand_page_break_beforerú   Q  rø   rD   zpage-break-insideúbreak-insidec              #   óB   K  — t        | «      }|dv rd| f–— yt        ‚­w)zyExpand the legacy ``page-break-inside`` property.

    See https://www.w3.org/TR/css-break-3/#page-break-properties

    )rê   rí   rû   N)r   r   ©rA   r;   rm   s      rC   Úexpand_page_break_insiderþ   \  s,   è ø€ ô ! Ó(€GØÐ#Ñ#Ø˜fÐ$Ó$äÐùs   ‚Úcolumnsúcolumn-widthúcolumn-countc              #   óX  K  — d}t        | «      dk(  rt        | d   «      dk(  r| ddd…   } | D ]2  }t        |g«      �|dk7  rd}nt        |g«      �d}nt        ‚||gf–— Œ4 t        | «      dk(  r8|dk(  rdnd}t        | d   j                  | d   j                  d«      }||gf–— yy­w)	z*Expand the ``columns`` shorthand property.Nr   r   rê   r   r   r  r
   )r‡   r   r!   r    r   r   rñ   rò   )rA   r;   rU   s      rC   Úexpand_columnsr  k  sÕ   è ø€ ð €DÜ
ˆ6ƒ{�aÒœK¨¨q©	Ó2°fÒ<Ø™˜"˜‘ˆØò ˆÜ˜˜Ó Ð,°¸Ò1GØ!‰DÜ˜5˜'Ó"Ð.Ø!‰DäÐØ�U�GˆmÓðô ˆ6ƒ{�aÒØ!%¨Ò!7‰~¸^ˆÜØ�1‰I×!Ñ! 6¨!¡9×#:Ñ#:¸FóDˆà�U�GˆmÓð	 ùs   ‚B(B*zfont-variantz-alternatesz-capsz-east-asianz
-ligaturesz-numericc                 ó   — t        | «      S )zoExpand the ``font-variant`` shorthand property.

    https://www.w3.org/TR/css-fonts-3/#font-variant-prop

    r   rö   s     rC   Úfont_variantr  �  s   € ô ˜vÓ&Ð&rD   Úfontú-variant-capsú-weightú-stretchú-sizeúline-heightú-familyc              #   óò  K  — t        | «      }|dv rt        d«      ‚t        t        | «      «      } t	        d«      D ]n  }| j                  «       }t        |«      dk(  rŒ"t        |g«      �d}n/t        |g«      �d}n t        |g«      �d}nt        |g«      �d	}n n)||gf–— | rŒjt        ‚ | st        ‚| j                  «       }t        |g«      €t        ‚d
|gf–— | st        ‚| j                  «       }|j                  dk(  r9|j                  dk(  r*| j                  «       }t        |g«      €t        ‚d|gf–— n| j                  |«       | j!                  «        t#        | «      €t        ‚d| f–— y­w)z_Expand the ``font`` shorthand property.

    https://www.w3.org/TR/css-fonts-3/#font-prop

    )ÚcaptionÚiconÚmenuzmessage-boxzsmall-captionz
status-barzSystem fonts are not supportedr€   ÚnormalNr¨   r  r  r	  r
  r�   rŽ   r  r  )r   r   r°   rÔ   Úrangerw   r   r)   r*   r+   r(   r'   r�   rK   r/   r„   Úreverser&   )rA   r;   Úexpand_font_keywordrË   rU   r‰   s         rC   Úexpand_fontr  �  s—  è ø€ ô -¨VÓ4ÐØð >ñ >äÐ<Ó=Ð=ô ”(˜6Ó"Ó#€Fô �1‹Xò ˆØ—
‘
“ˆÜ�uÓ Ò)ð ä�u�gÓÐ*Ø‰FÜ ˜wÓ'Ð3Ø$‰FÜ˜%˜Ó!Ð-Ø‰FÜ˜5˜'Ó"Ð.Ø‰Fñ Ø�u�gˆoÒâÜÐð+ñ. ÜÐØ—
‘
“ˆô �%�ÓÐ!ÜÐØ
�E�7Ð
Òñ ÜÐà�J‰J‹L€EØ‡z�z�YÒ 5§;¡;°#Ò#5Ø—
‘
“ˆÜ˜�wÓÐ'ÜÐØ˜e˜WÐ$Ó$ð 	�‰�eÔð ‡N�NÔÜ�6ÓÐ"ÜÐØ
�VÐ
Óùs   ‚B#E7Â&CE7z	word-wrapúoverflow-wrapc              #   ó>   K  — t        | «      }|€t        ‚d| f–— y­w)zhExpand the ``word-wrap`` legacy property.

    See https://www.w3.org/TR/css-text-3/#overflow-wrap

    Nr  )r5   r   rý   s      rC   Úexpand_word_wrapr  Ö  s(   è ø€ ô ˜FÓ#€GØ€ÜÐØ
˜6Ð
!Ó!ùó   ‚Úflexú-growú-shrinkú-basisc           	   #   óx  K  — t        | «      }|dk(  rP| d   j                  | d   j                  }}t        ||ddd«      }t	        ||d«      }d|gf–— d|gf–— d|gf–— yd\  }}}	d	\  }
}}| D ]„  }|j
                  d
k(  xr |j                  dk(  xr t        |
|f«       }|s|st        |g«      }|�|}	d}ŒJ|
st        |g«      }|€t        ‚|}d}
Œe|st        |g«      }|€t        ‚|}d}Œ€t        ‚ | d   j                  | d   j                  }}t        |«      j                  «       rt        |«      nd}t        |«      j                  «       rt        |«      nd}t        ||||t        |«      «      }t        ||||t        |«      «      }|st        ||dddd«      }	d|gf–— d|gf–— d|	gf–— y­w)zExpand the ``flex`` property.r›   r   Ú0rê   r  r  r  )r
   r
   N)FFFÚnumberNTÚpx)r   rñ   rò   r   r   r�   Ú	int_valueÚallr"   r$   r   ÚfloatÚ
is_integerÚintÚstrr   )rA   r;   rm   rä   ÚcolumnÚ
zero_tokenÚ
auto_tokenÚgrowÚshrinkÚbasisÚ
grow_foundÚshrink_foundÚbasis_foundrU   Úforced_flex_factorÚ	new_basisÚnew_growÚ
new_shrinkÚint_growÚ
int_shrinkÚ
grow_tokenÚshrink_tokens                         rC   Úexpand_flexr9  ä  s  è ø€ ô ! Ó(€GØ�&ÒØ˜a‘y×,Ñ,¨f°Q©i×.EÑ.EˆfˆÜ   v¨q°!°SÓ9ˆ
Ü  f¨fÓ5ˆ
Ø˜
�|Ð#Ò#Ø˜*˜Ð%Ò%Ø˜˜Ð$Ó$à(Ñˆˆf�eØ0CÑ-ˆ
�L +Øò 	$ˆEð —
‘
˜hÑ&ò 4¨5¯?©?¸aÑ+?ò 4Ü˜ \Ð2Ó3Ð3ð ñ Ñ'9Ü&¨ wÓ/�	ØÐ(Ø!�EØ"&�KØÙÜ+¨U¨GÓ4�ØÐ#Ü'Ð'à#�DØ!%�JØÙ!Ü-¨u¨gÓ6�
ØÐ%Ü'Ð'à'�FØ#'�LØä#Ð#ð;	$ð< ˜a‘y×,Ñ,¨f°Q©i×.EÑ.EˆfˆÜ % d£× 6Ñ 6Ô 8”3�t”9¸dˆÜ$)¨&£M×$<Ñ$<Ô$>”S˜”[ÀDˆ
Ü   v¨t°X¼sÀ4»yÓIˆ
Ü"Ø�&˜& *¬c°&«kó;ˆáÜ" 4¨°°A°s¸DÓAˆEØ˜
�|Ð#Ò#Ø˜,˜Ð'Ò'Ø˜˜ÐÓùs   ‚F8F:z	flex-flowúflex-directionú	flex-wrapc              #   óf  K  — t        | «      dk(  rN| | ddd…   fD ];  }t        |d   g«      }t        |d   g«      }|sŒ$|sŒ'd|d   gf–— d|d   gf–—  y t        ‚t        | «      dk(  r>t        | d   g«      }|rd| d   gf–— yt        | d   g«      }|rd| d   gf–— yt        ‚t        ‚­w)z"Expand the ``flex-flow`` property.r   Nr   r   r
   r:  r;  )r‡   r#   r%   r   )rA   r;   Úsorted_tokensÚ	directionÚwraps        rC   Úexpand_flex_flowr@    sê   è ø€ ô ˆ6ƒ{�aÒØ# V©D¨b¨D¡\Ð1ò 	 ˆMÜ&¨°aÑ(8Ð'9Ó:ˆIÜ˜m¨AÑ.Ð/Ó0ˆDÚšTØ&¨°qÑ)9Ð(:Ð:Ò:Ø! M°!Ñ$4Ð#5Ð5Ò5Ùð	 ô  ÐÜ	ˆV‹˜Ò	Ü" F¨1¡I ;Ó/ˆ	ÙØ" V¨A¡Y KÐ/Ó/ä˜f Q™i˜[Ó)ˆDÙØ! F¨1¡I ;Ð.Ó.ä#Ð#äÐùs   ‚<B1¿B1ÁA/B1c              #   óR  K  — | d   j                   | d   j                  }}t        ||d«      }t        | «      dk(  r't	        | d   «      dk(  rd|gf–— d|gf–— d|gf–— y g g}| D ]F  }|j
                  dk(  r!|j                  dk(  r|j                  g «       Œ3|d	   j                  |«       ŒH t        |«      d
k(  rKt        |d   «      }t        |d   «      }|r'|rd|d   f–— d|d   f–— d|gf–— y |d   }t        ‚t        ‚t        |«      dk(  r	|g}t        ‚t        ‚­w)Nr   r›   r
   ú-columnsú-rowsú-areasr�   rŽ   r   r   )
rñ   rò   r   r‡   r   r�   rK   r„   r.   r   )	rA   r;   rä   r(  r›   Úslash_separatedrU   Úrowsrÿ   s	            rC   Ú_expand_grid_templaterG  :  se  è ø€ Ø˜!‘9×(Ñ(¨&°©)×*AÑ*Aˆ&€DÜ�d˜F FÓ+€DÜ
ˆ6ƒ{�aÒœK¨¨q©	Ó2°fÒ<Ø˜4˜&Ð Ò Ø˜�vˆoÒØ˜˜ÐÒØØ�d€OØò .ˆØ�:‰:˜Ò" u§{¡{°cÒ'9Ø×"Ñ" 2Õ&à˜BÑ×&Ñ& uÕ-ð	.ô
 ˆ?Ó˜qÒ Ü˜_¨QÑ/Ó0ˆÜ °Ñ 2Ó3ˆÙÙØ  /°!Ñ"4Ð4Ò4Ø˜¨qÑ1Ð1Ò1Ø  Ð&Ò&ØØ% aÑ(ˆGô Ðô  ÐÜ	ˆ_Ó	 Ò	"Ø�&ˆô Ðô Ðùs   ‚D%D'úgrid-templaterB  rC  rD  c              #   ó8   K  — t        | |«      E d{  –—†  y7 Œ­w)z&Expand the ``grid-template`` property.N)rG  rö   s     rC   Úexpand_grid_templaterJ  \  s   è ø€ ô % V¨TÓ2×2Ò2ús   ‚’“Úgridz-template-columnsz-template-rowsú-template-areasú-auto-columnsú
-auto-rowsú
-auto-flowc              #   óL  K  — | d   j                   | d   j                  }}t        ||d«      }t        ||d«      }t        ||d«      }t        ||d«      }	 t        t	        | d«      «      }|D ]   \  }}	d|j                  d«      d	   › �|	f–— Œ" d
|gf–— d|gf–— d|gf–— y# t        $ r Y nw xY wg g}
| D ]F  }|j                  dk(  r!|j                  dk(  r|
j                  g «       Œ3|
d	   j                  |«       ŒH t        |
«      dk7  rt        ‚d}d}g g dœ}t        |
|j                  «       «      }|D ]t  \  } \  }}d}| D ]e  }t        |«      dk(  r|s|r||k7  rt        ‚|}|}Œ%t        |«      dk(  r|s|r||k7  rt        ‚d}|}ŒG|| d	   k(  r|j                  |«       Œat        ‚ Œv |st        ‚|dk(  rdnd}|dk(  r|n|}d|r||fn|ff–— d|› d�t        ||   «      f–— d|› d�|gf–— d|› d�|gf–— d|› d�t        ||   «      f–— d|gf–— y­w)zExpand the ``grid`` property.r   rê   r›   Úrowr(  rH  z
-template-rF   r   rM  rN  rO  Nr�   rŽ   r   )rQ  r(  FÚdensez	auto-flowTz-auto-ÚsrL  )rñ   rò   r   ÚtuplerG  rð   r   r�   rK   r„   r‡   rˆ   r†   r   )rA   r;   rä   r(  rê   r›   rQ  ÚtemplaterJ   rK   Úsplit_tokensrU   Ú
auto_trackrR  Ú	templatesÚiterableÚtrackÚtrack_templatesÚauto_flow_tokenÚnon_auto_trackÚauto_track_tokens                        rC   Úexpand_gridr_  c  sÔ  è ø€ ð
 ˜!‘9×(Ñ(¨&°©)×*AÑ*Aˆ&€DÜ�d˜F FÓ+€DÜ�d˜F FÓ+€DÜ
�T˜6 5Ó
)€CÜ˜˜f hÓ/€Fð
ÜÔ.¨v°ÓGÓHˆð #ò 	;‰JˆC�Ø˜sŸy™y¨›~¨bÑ1Ð2Ð3°UÐ:Ó:ð	;à ˜vÐ%Ò%Ø˜T˜FÐ"Ò"Ø˜S˜EÐ!Ò!Øøô ò Ùðúð �4€LØò 'ˆØ�:‰:˜Ò" u§{¡{°cÒ'9Ø×Ñ Ô#ØØ�RÑ×Ñ Õ&ð	'ô
 ˆ<Ó˜AÒÜÐØ€JØ€EØ bÑ)€IÜ�< §¡Ó!2Ó3€HØ,4ò $Ñ(ˆÑ(�˜ØˆØò 	$ˆEÜ˜5Ó! WÒ,Ù™Z¨J¸%Ò,?Ü'Ð'Ø�Ø"‘
Ü˜UÓ# {Ò2Ù"¡z°jÀEÒ6IÜ'Ð'Ø"&�Ø"‘
Ø˜& ™*Ò$Ø×&Ñ& uÕ-ä#Ð#ñ	$ð$ñ" ÜÐØ(¨HÒ4‘U¸(€NØ!+¨xÒ!7‘v¸SÐØ
Ù%*Ð	˜5Ñ!Ð1AÐ0CðEò Eà�:�,˜aÐ
 ¤%¨	°*Ñ(=Ó">Ð
>Ò>Ø�>Ð" !Ð
$ t fÐ
,Ò,Ø�z�l !Ð
$ t fÐ
,Ò,Ø�~Ð& aÐ
(¬%°	¸.Ñ0IÓ*JÐ
JÒJØ
˜d˜VÐ
#Ó#ùs+   ‚AH$ÁB& Á+;H$Â&	B2Â/H$Â1B2Â2E2H$c              #   óD  K  — g g}| D ]F  }|j                   dk(  r!|j                  dk(  r|j                  g «       Œ3|d   j                  |«       ŒH dt        |«      cxk  r
|k  st        ‚ t        ‚g }|D ]3  } t        | «      x}st        ‚|j                  |«       t        | «      –— Œ5 t        j                  |j                  d«      }t        |«      x}dk  rQt        |d   d d «      d hk(  }|rt        |d   «      n|f}	|j                  | «       |j                  |d   «       |	–— |dcxk  r|k  r-n n*t        |d   d d «      d hk(  }|rt        |d   «      n|f–— |dcxk  r|k  r.n y t        |d   d d «      d hk(  }|rt        |d   «      n|f–— y y ­w)	Nr�   rŽ   r   r
   rê   r   r   r�   )r�   rK   r„   r‡   r   r-   rT  r   rñ   rò   Úset)
rA   Ú
max_numberÚ
grid_linesrU   ÚvalidationsÚ
validationrê   ÚlinesÚcustom_identrK   s
             rC   Ú_expand_grid_column_row_arearh  ¢  s¿  è ø€ Ø�€JØò %ˆØ�:‰:˜Ò" u§{¡{°cÒ'9Ø×Ñ˜bÔ!ØØ�2‰×Ñ˜eÕ$ð	%ð
 ”�J“Ô- :Ò-ÜÐð .ÜÐØ€KØò ˆÜ'¨Ó/Ð/�
Ð/ÜÐØ×Ñ˜:Ô&Ü�F‹mÓð	ô
 �e×'Ñ'¨×)<Ñ)<¸fÓE€DÜ�Z“Ð ˆ QÒ&Ü˜; q™>¨"¨1Ð-Ó.°4°&Ñ8ˆÙ(4”�j ‘mÔ$¸4¸'ˆØ×Ñ˜&Ô!Ø×Ñ˜; q™>Ô*ØŠØ�Ô�JÕÜ˜; q™>¨"¨1Ð-Ó.°4°&Ñ8ˆÙ&2Œe�J˜q‘MÔ"¸¸Ò?Ø�Ô�JÕÜ˜; q™>¨"¨1Ð-Ó.°4°&Ñ8ˆÙ&2Œe�J˜q‘MÔ"¸¸Ó?ð ùs   ‚FF zgrid-columnzgrid-rowz-startz-endc              #   ó^   K  — t        | d«      }t        |d«      D ]  \  } }d|› �| f–— Œ y­w)z,Expand the ``grid-[column|row]`` properties.r   )ÚstartÚendrF   N©rh  rˆ   )rA   r;   Útokens_listÚsides       rC   Úexpand_grid_column_rowro  À  s@   è ø€ ô
 /¨v°qÓ9€KÜ˜KÐ)9Ó:ò !‰ˆ�Ø�$�ˆj˜&Ð Ó ñ!ùs   ‚+-z	grid-areazgrid-row-startzgrid-row-endzgrid-column-startzgrid-column-endc              #   ób   K  — t        | d«      }d}t        ||«      D ]  \  } }d|› �| f–— Œ y­w)z"Expand the ``grid-area`` property.r€   )z	row-startzcolumn-startzrow-endz
column-endzgrid-Nrl  )rA   r;   rm  Úsidesrn  s        rC   Úexpand_grid_arearr  Ê  sD   è ø€ ô
 /¨v°qÓ9€KØB€EÜ˜K¨Ó/ò %‰ˆ�Ø�d�Vˆn˜fÐ$Ó$ñ%ùs   ‚-/zgrid-gapr,   ú
column-gapúrow-gapc              #   ó   K  — t        | «      dk(  rt        | «      €t        ‚d| f–— d| f–— yt        | «      dk(  r;t        | dd «      t        | dd «      }}d||fv rt        ‚d| dd f–— d| dd f–— yt        ‚­w)zExpand the ``gap`` property.r
   Nrt  rs  r   r   )r‡   r,   r   )rA   r;   Ú
column_gapÚrow_gaps       rC   Ú
expand_gaprx  Õ  s    è ø€ ô
 ˆ6ƒ{�aÒÜˆv‹;ÐÜÐØ˜ÐÒØ˜FÐ"Ó"Ü	ˆV‹˜Ò	Ü! &¨¨1 +Ó.´°F¸1¸Q°KÓ0@�Gˆ
Ø�J Ð(Ñ(ÜÐØ˜  !˜Ð$Ò$Ø˜F 1 Q˜KÐ'Ó'äÐùs   ‚A<A>zgrid-column-gapc              #   ó>   K  — t        | «      }|€t        ‚d| f–— y­w)z+Expand legacy ``grid-column-gap`` property.Nrs  ©r,   r   rý   s      rC   Úexpand_legacy_column_gapr{  é  s'   è ø€ ô �&‹k€GØ€ÜÐØ
˜Ð
Óùr  zgrid-row-gapc              #   ó>   K  — t        | «      }|€t        ‚d| f–— y­w)z(Expand legacy ``grid-row-gap`` property.Nrt  rz  rý   s      rC   Úexpand_legacy_row_gapr}  ó  s'   è ø€ ô �&‹k€GØ€ÜÐØ
�VÐ
Óùr  zplace-contentzalign-contentzjustify-contentc                 ó   — t         ‚)z&Expand the ``place-content`` property.r¿   rö   s     rC   Úexpand_place_contentr  ý  ó
   € ô
 ÐrD   zplace-itemszalign-itemszjustify-itemsc                 ó   — t         ‚)z$Expand the ``place-items`` property.r¿   rö   s     rC   Úexpand_place_itemsr‚    r€  rD   z
place-selfz
align-selfzjustify-selfc                 ó   — t         ‚)z#Expand the ``place-self`` property.r¿   rö   s     rC   Úexpand_place_selfr„    r€  rD   z
line-clampú	max-linesÚcontinueúblock-ellipsisc              #   ó  K  — t        | «      dk(  rÖt        | «      }|dk(  rN| d   j                  | d   j                  }}t	        ||d«      }t	        ||d«      }d|gf–— d|gf–— d|gf–— y	| d   j
                  dk(  r`| d   j                  �Q| d   j                  | d   j                  }}t	        ||d«      }t	        ||d
«      }d| d   gf–— d|gf–— d|gf–— y	t        ‚t        | «      dk(  r‡| d   j
                  dk(  ro| d   j                  }t        | d   g«      }	|rI|	�G| d   j                  | d   j                  }}t	        ||d
«      }d| d   gf–— d|gf–— d| d   gf–— y	t        ‚t        ‚t        ‚­w)z#Expand the ``line-clamp`` property.r
   r›   r   rê   r…  r†  r‡  r   NÚdiscardr   )	r‡   r   rñ   rò   r   r�   r"  r   r   )
rA   r;   rm   rä   r(  rŸ   r*  Údiscard_tokenÚ	max_linesÚellipsiss
             rC   Úexpand_line_clampr�    s¾  è ø€ ô ˆ6ƒ{�aÒÜ$ VÓ,ˆØ�fÒØ! !™9×0Ñ0°&¸±)×2IÑ2I�&ˆDÜ# D¨&°&Ó9ˆJÜ# D¨&°&Ó9ˆJØ 
˜|Ð+Ò+Ø˜z˜lÐ*Ò*Ø" Z LÐ0Ó0Ø�A‰Y�^‰^˜xÒ'¨F°1©I×,?Ñ,?Ð,KØ! !™9×0Ñ0°&¸±)×2IÑ2I�&ˆDÜ# D¨&°&Ó9ˆJÜ& t¨V°YÓ?ˆMØ  q¡	˜{Ð*Ò*Ø˜}˜oÐ-Ò-Ø" Z LÐ0Ó0äÐÜ	ˆV‹˜Ò	Ø�!‰9�>‰>˜XÒ%Ø˜q™	×+Ñ+ˆIÜ% v¨a¡y kÓ2ˆHÙ˜XÐ1Ø% a™y×4Ñ4°f¸Q±i×6MÑ6M�f�Ü *¨4°¸Ó C�Ø! F¨1¡I ;Ð.Ò.Ø  = /Ð1Ò1Ø&¨°©¨Ð3Ó3ä#Ð#äÐäÐùs   ‚F Fz
text-alignú-allú-lastc              #   óH  K  — t        | «      dk(  r‹t        | «      }|€t        ‚|dk(  r,| d   j                  | d   j                  }}t        ||d«      }n| d   }d|gf–— |dk(  r,| d   j                  | d   j                  }}t        ||d«      }n|}d|gf–— yt        ‚­w)	z#Expand the ``text-align`` property.r
   Nzjustify-allr   ÚjustifyrŽ  rj  r�  )r‡   r   r   rñ   rò   r   )rA   r;   rm   rä   r(  Ú	align_allÚ
align_lasts          rC   Úexpand_text_alignr”  =  s½   è ø€ ô ˆ6ƒ{�aÒÜ$ VÓ,ˆØˆ?ÜÐØ�mÒ#Ø! !™9×0Ñ0°&¸±)×2IÑ2I�&ˆDÜ" 4¨°Ó;‰Ià˜q™	ˆIØ�y�kÐ!Ò!Ø�iÒØ! !™9×0Ñ0°&¸±)×2IÑ2I�&ˆDÜ# D¨&°'Ó:‰Jà"ˆJØ˜
�|Ð#Ó#äÐùs   ‚B B")`rP   ri   Útinycss2.astr   r   r   Útinycss2.color5r   Ú	functionsr   Ú
propertiesr	   Údescriptorsr   rA   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,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   rZ   r9   rW   rS   ry   r…   r–   r    r¤   r£   r¶   r¹   rÓ   rè   ró   r÷   rú   rþ   r  r  r  r  r9  r@  rG  rJ  r_  rh  ro  rr  rx  r{  r}  r  r‚  r„  r�  r”  r^   rD   rC   ú<module>rš     s)  ðÙ $ã ç @Ñ @Ý 'å !Ý 'Ý ,÷Mõ M÷T÷ T÷ T÷ T÷ T÷ T÷ T÷ T÷ T÷ Tð €	ô�gô ò>òò=&ñ@ 
ˆ.ÓÙ	ˆ.ÓÙ	ˆ.ÓÙ	ˆ(ÓÙ	ˆ)ÓÙ	ˆ'Óñ!ó ó ó ó ó ó ð!ñH 
ˆ/ÓÙØÐ7Ø Ð"=Øôñ"ó	ó ð
"ñJ 
ˆ,ÓÙ�'˜;¨ÀÔFñ&ó Gó ð&ñR 
ˆ(ÓñGó ðGñ 
ˆ,ÓÙ	ˆ.ÓÙ	ˆ/ÓÙ	ˆ-ÓÙ	ˆ-ÓÙ	ˆ)ÓÙ�(˜H hÓ/ñó 0ó ó ó ó ó ó ðñ$ 
ˆ.ÓÙ�)˜Y¨°)¸XØ!%ô'ñ: ó'ó ð: ñz 
ˆ-ÓÙ�)˜Y¨°)¸XÀwØ!%ô'ñ< ó'ó ð< ñ~ 
ˆ,Óñc$ó ðc$ñL 
Ð
ÓÙ�'˜8 X¨|Ó<ñ&&ó =ó ð&&òRñ$ 
Ð
ÓÙ�-Ó ñ8ó !ó ð8ñ 
Ð
ÓÙ�.Ó!ñ8ó "ó ð8ñ 
Ð
ÓÙ�.Ó!ñ
ó "ó ð
ñ 
ˆ)ÓÙ�. .Ó1ñó 2ó ðñ( 
ˆ.ÓÙ�- ¨-¸Ø˜kó+ñ'ó+ó ð'ñ 
ˆ&ÓÙ�(˜O¨Y¸
ÀGØ ó,ñCó,ó ðCñL 
ˆ+ÓÙ�/Ó"ñ	"ó #ó ð	"ñ 
ˆ&ÓÙ�'˜9 hÓ/ñ5 ó 0ó ð5 ñp 
ˆ+ÓÙÐ" KÓ0ñó 1ó ðò4ñD 
ˆ/ÓÙ�*˜g xÓ0ñ3ó 1ó ð3ñ
 
ˆ&ÓÙÐ%Ð'7Ð9JØ! <°ó?ñ9$ó?ó ð9$òx@ñ< 
ˆ-ÓÙ	ˆ*ÓÙ�(˜FÓ#ñ!ó $ó ó ð!ñ 
ˆ+ÓÙÐ" NØ%Ð'8ó:ñ%ó:ó ð%ñ 
ˆ*ÓÙ	ˆ%ƒÙ�, 	Ó*ñó +ó ó ðñ" 
Ð
ÓÙ�,Óñó  ó ðñ 
ˆ.ÓÙ�)Óñó ó ðñ 
ˆ/ÓÙ�/Ð#4Ó5ñó 6ó ðñ 
ˆ-ÓÙ�- Ó1ñó 2ó ðñ 
ˆ,ÓÙ�, Ó/ñó 0ó ðñ 
ˆ,ÓÙ�+˜zÐ+;Ó<ñ#ó =ó ð#ñL 
ˆ,ÓÙ�&˜'Ó"ñó #ó ñrD   