
    Bh@y                        S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	J
r
  SS	KJr  S
 rS S jrS S jrS rS rS!S jrS!S jrS S jrS S jr  S"S jrS#S jrS rS rS S jr  S$S jrS rS S jrS S jrS S jrS S jr S S jr!S r"g)%a  Preferred and minimum preferred width.

Also known as max-content and min-content width, also known as the
shrink-to-fit algorithm.

Terms used (max-content width, min-content width) are defined in David
Baron's unofficial draft (https://dbaron.org/css/intrinsic/).

    N)cache)inf   )boxes)can_break_textsplit_first_line   )default_image_sizingc           
      N    [        [        [        XSS9U5      [        XSS95      $ )zReturn the shrink-to-fit width of ``box``.

*Warning:* both available_content_width and the return value are
for width of the *content area*, not margin area.

https://www.w3.org/TR/CSS21/visudet.html#float-width

Fouter)minmaxmin_content_widthmax_content_width)contextboxavailable_content_widths      M/var/www/html/env/lib/python3.13/site-packages/weasyprint/layout/preferred.pyshrink_to_fitr      s2     g%8#	% 	'e4	6 6    c                    UR                   (       a  [        XU5      S   $ [        U[        R                  5      (       a  [        XU5      $ [        U[        R                  [        R                  45      (       a  [        XU5      $ [        U[        R                  5      (       a  [        X5      $ [        U[        R                  [        R                  45      (       a  [        XUSS9$ [        U[        R                  5      (       a  [        X5      $ [        U[        R                   5      (       a  [#        XU5      $ [        U[        R$                  5      (       a  [        XU5      $ ['        S[)        U5      R*                   S35      e)zkReturn the min-content width for ``box``.

This is the width by breaking at every line-break opportunity.

r   Tis_line_startzmin-content width for  not handled yet)is_table_wrapper"table_and_columns_preferred_widths
isinstancer   TableCellBoxtable_cell_min_content_widthBlockContainerBoxTableColumnBoxblock_min_content_widthTableColumnGroupBoxcolumn_group_content_width	InlineBoxLineBoxinline_min_content_widthReplacedBoxreplaced_min_content_widthFlexContainerBoxflex_min_content_widthGridContainerBox	TypeErrortype__name__r   r   r   s      r   r   r   $   s0    1'FqII	C++	,	,+G%@@	C%1153G3GH	I	I&wU;;	C22	3	3)'77	C%//5==9	:	:'e4PP	C**	+	+)#55	C//	0	0%gE::	C//	0	0&wU;;0c1C1C0DDTUVVr   c                     UR                   (       a  [        XU5      S   $ [        U[        R                  5      (       a  [        XU5      S   $ [        U[        R                  [        R                  45      (       a  [        XU5      $ [        U[        R                  5      (       a  [        X5      $ [        U[        R                  [        R                  45      (       a  [        XUSS9$ [        U[        R                  5      (       a  [        X5      $ [        U[        R                   5      (       a  [#        XU5      $ [        U[        R$                  5      (       a  [        XU5      $ ['        S[)        U5      R*                   S35      e)zfReturn the max-content width for ``box``.

This is the width by only breaking at forced line breaks.

r	   Tr   zmax-content width for r   )r   r   r   r   r    table_cell_min_max_content_widthr!   r"   block_max_content_widthr$   r%   r&   r'   inline_max_content_widthr)   replaced_max_content_widthr+   flex_max_content_widthr-   r.   r/   r0   r1   s      r   r   r   ?   s5    1'FqII	C++	,	,/eDQGG	C%1153G3GH	I	I&wU;;	C22	3	3)'77	C%//5==9	:	:'e4PP	C**	+	+)#55	C//	0	0%gE::	C//	0	0&wU;;0c1C1C0DDTUVVr   c           	      D   UR                   S   nUS:X  d  UR                  S:X  aM  UR                   Vs/ s H!  nUR                  5       (       a  M  U" XSS9PM#     nnU(       a  [	        U5      OSnOUR                  S:X  d   eUR
                  n[        XU5      $ s  snf )z+Helper to create ``block_*_content_width.``widthauto%Tr   r   px)styleunitchildrenis_absolutely_positionedr   valueadjust)r   r   functionr   r9   childchildren_widthss          r   _block_content_widthrF   Z   s    IIgE%**+
 ?Bll5>JU113 1HW40l 	 5 )8O$QzzT!!!#e$$5s   BBc                    U R                   S   nU R                   S   nUS:X  d  UR                  S:X  a  SnOUR                  nUS:X  d  UR                  S:X  a  [        nOUR                  n[	        U [
        R                  5      (       a  U R                  R                  SU R                   S   5      u    pEUbz  U R                   S   nUS:w  a(  UR                  S:w  a  [        X&R                  U-  5      nU R                   S	   nUS:w  a(  UR                  S:w  a  [        X7R                  U-  5      n[        U[        X5      5      $ )
z;Get box width from given width and box min- and max-widths.	min_width	max_widthr:   r;   r   r	   	font_size
min_height
max_height)r=   r>   rA   r   r   r   r)   replacementget_intrinsic_sizer   r   )r   r9   rH   rI   _ratiorK   rL   s           r   min_maxrQ   l   s   		+&I		+&IFinn3	OO	Finn3	OO	#u(())oo88syy%'1<0JV#
3(>	+;+;e+CD	<0JV#
3(>	+;+;e+CD	y#e/00r   c                 <   SnU(       a  SS/O/ U(       a  SS/O/ -    HZ  nU R                   U   nUS:w  d  M  UR                  S:X  a  XR                  -  nM:  UR                  S:X  d   eXFR                  -  nM\     U R                   S	   S
:H  nU(       a8  U(       a   [        U S5      (       a  XR                  -  nOXR                   S   -  nU(       a8  U(       a   [        U S5      (       a  XR
                  -  nOXR                   S   -  nUS:  a  USUS-  -
  -  $ g)z3Add box paddings, borders and margins to ``width``.r   margin_leftpadding_leftmargin_rightpadding_rightr:   r<   r;   border_collapsecollapseborder_left_widthborder_right_widthd   r	   )r=   r>   rA   hasattrrY   rZ   )r   r9   leftrightpercentagesrA   style_valuerX   s           r   margin_widthra      s*   K -1-	(b.3./	*	= 	 ii&& 4'***"''3...000	= yy*+z9H%899 ***E YY233E%9::+++E YY344ESK#--.. r   c                 B    [        X5      nU(       a  [        XX45      $ U$ )zRespect min/max and adjust width depending on ``outer``.

If ``outer`` is set to ``True``, return margin width, else return content
width.

)rQ   ra   )r   r   r9   r]   r^   fixeds         r   rB   rB      s#     CEC44r   c                 $    [        X[        U5      $ )z0Return the min-content width for a ``BlockBox``.)rF   r   r1   s      r   r#   r#      s    '0 0r   c                 $    [        X[        U5      $ )z0Return the max-content width for a ``BlockBox``.)rF   r   r1   s      r   r4   r4      s    .?GGr   c           
      l    [        XX%SX4S9nU(       a  [        U5      O
[        U5      n[        XU5      $ )zReturn the min-content width for an ``InlineBox``.

The width is calculated from the lines from ``skip_stack``. If
``first_line`` is ``True``, only the first line minimum width is
calculated.

T)minimum
skip_stack
first_line)inline_line_widthsnextr   rB   )r   r   r   rh   ri   r   widthsr9   s           r   r(   r(      s8      eD6F 'DLCKE#e$$r   c           
          [        [        XX#SS95      nUS==   [        X5      -  ss'   [        X[	        U5      5      $ )z2Return the max-content width for an ``InlineBox``.F)rg   )listrj   trailing_whitespace_sizerB   r   )r   r   r   r   rl   s        r   r5   r5      s@    7uMOF 2J*788J#c&k**r   c                     UR                   S   nUS:X  d  UR                  S:X  a  SnOUR                  S:X  d   eUR                  n[        USU5      $ )z9Return the *-content width for a ``TableColumnGroupBox``.r9   r:   r;   r   r<   F)r=   r>   rA   rB   )r   r   r9   s      r   r%   r%      sQ    IIgE%**+zzT!!!#ue$$r   c                     UR                    Vs/ s H%  nUR                  5       (       a  M  [        X5      PM'     nn[        UUU(       a  [	        U5      5      nU$ S5      nU$ s  snf )z4Return the min-content width for a ``TableCellBox``.r   )r?   r@   r   rB   r   )r   r   r   rD   rE   children_min_widths         r   r    r       s{     \\1!E--/ 	*')!  1   /O8
  678
 1s
   A$A$c                 L    [        XU5      n[        U[        XU5      5      nX44$ )z=Return the min- and max-content width for a ``TableCellBox``.)r    r   r4   )r   r   r   rH   rI   s        r   r3   r3     s-     -W5AII6wUKLIr   c              #   h  #    [        U[        R                  5      (       a7  UR                  S   R                  S:w  a  UR                  S   R
                  nOSnSnUc  Sn	OUR                  5       u  u  pUR                  U	S   GH  n
U
R                  5       (       a  M  [        U
[        R                  5      (       at  [        X
X#XEU5      nU(       a  [        U5      /nO[        U5      n[        U5      S:X  a  [        XUS   5      US'   GO[        XUS   SS9US'   [        XUS   SS9US'   GO[        U
[        R                  5      (       Gad  U
R                  S	   S
;   nU
R                  S	   S;   nUc  Sn	OUR                  5       u  u  pUb   eU
R                   R#                  5       U	=(       d    SS  nU(       a  U(       a  UR%                  S5      nU(       a  SOS n/ nS=nnUb]  UU-  n['        UUS  R)                  5       U
R                  XU
R*                  USS9u    nnn  nUR-                  U5        U(       a  OUb  M]  U(       a  U(       a	  XS   -  n  O[/        UR)                  5       SS  S-   U
R                  S   5      nU(       a  U(       a  U(       a  UR-                  S5        O"U(       a  S[1        X
5      S/nO[3        X
5      /nXS   -  n[        U5      S:  a,  X-   v   Sn[        U5      S:  a  USS  H  nUv   M	     US   nUS   S:H  nS nGM     X-   v   g 7f)Ntext_indentr;   r   r	   F)r^   rn   )r]   white_spacenormalnowrappre-line)ry   zpre-wrapr{       T)r   rg   alangr   )r   r   r'   r=   r>   rA   itemsr?   r@   r&   rj   rk   ro   lenrB   TextBoxtextencodelstripr   decodejustification_spacingappendr   r   r   )r   r   r   r   rg   rh   ri   rv   current_lineskiprD   linesspace_collapse	text_wrap
child_textrI   resume_indexnew_resume_indexrO   r9   	can_breaklines                         r   rj   rj     s#    #u}}%%#))M*B*G*G3*Nii.44L(..0de$))++eU__--&gE eU5zQ!%a9a!%aFa"5rGb	u}}--"[[7 <0 0NM26XXI!&0&6&6&8#"!)))**,dia\:J'..t4
$$IE.//L+". 006F|}-446W//} 7"31&q! U# #. .a(&!!#BC(3.F0CEI9Q -g=qA*7:;a u:>,,K5zA~!!BKDJ ( 9Lb	Q
Q %R 
$$s   I	L2C%L2c                    U R                   S   S:w  a6  U R                   S   R                  S:X  a  U R                   S   R                  OSnU R                   S   S:w  a6  U R                   S   R                  S:X  a  U R                   S   R                  O[        nU R                   S   S:w  a6  U R                   S   R                  S:X  a  U R                   S   R                  OSn[	        U[        X25      5      $ )zvReturn the percentage contribution of a cell, column or column group.

https://dbaron.org/css/intrinsic/#pct-contrib

rH   r:   r;   r   rI   r9   )r=   r>   rA   r   r   r   )r   rH   rI   r9   s       r   _percentage_contributionr   g  s     ),		+(>&(H		+##s* 			+$$01  ),		+(>&(H		+##s* 			+$$03  %(IIg$6&$@		'3& 			'  ,- 
 y#e/00r   c                   ^<^= SSK Jn  UR                  5       nU R                  R	                  U5      nU(       a  XR   $ Su  pgSnUR
                   Hi  n	U	R
                   HV  n
U
R
                   H>  n[        UR                  UR                  -   U5      n[        XR                  -   U5      nM@     US-  nMX     Mk     [        U5       Vs/ s H	  nS/U-  PM     nnSnUR
                   H?  n	U	R
                   H,  n
U
R
                   H  nXU   UR                  '   M     US-  nM.     MA     [        [        U6 5      nUR                  S   S:X  aK  US:  aE  UR                  S   S   S[        U Vs/ s H  n[        U5      (       d  M  UPM     sn5      -   -  nOSnUS:X  d  US:X  am  / Ul        [!        XS	S
9n[#        XS	S
9n[%        US[!        X5      S9n[%        US[#        X5      S9n/ / / / U/ 4nUU/UQ7UU/UQ7S.=U R                  U'   nXR   $ S/U-  nS/U-  nSnUR&                   H/  nUR
                   H  nUUU'   UUU'   US-  nUU:X  d  M    O   M/    O   / n[)        5       nS/U-  nS/U-  m=S/U-  m<[        U5       GH  nUU4 Hd  nUU   =n(       d  M  [        UU   [+        U U5      5      UU'   [        T=U   [-        U U5      5      T=U'   [        T<U   [/        U5      5      T<U'   Mf     X    H  nU(       d  M  UR                  S:X  aO  [1        X5      u  nn[        UU   U5      UU'   [        T=U   U5      T=U'   [        T<U   [/        U5      5      T<U'   Mk  UR3                  U5        UR5                  UR                  S-
  5        M     GM     / n[7        U5       HJ  u  nn
Sn UR3                  / =n!5        [7        U
5       H   u  n"nU(       a  U"n U!R3                  U 5        M"     ML     [8        U<U=4S j5       n#[;        U5       H  n$/ n%[        U5       H  nT<U   =n&(       a  U%R3                  U&5        M"  [        UU5       HC  u  n
n!U!U   =n c  M  U
U    n'U'R                  S-
  U$:w  a  M*  U#" U'U T=U   5      n([        U&U(5      n&ME     U%R3                  U&5        M     U%m<M     [        U5       Vs/ s H  nS	PM     n)n[        U5       H  nUU   (       a=  UU   R                  S   S:w  a'  UU   R                  S   R<                  S:w  a  SU)U'   MJ  UU   (       a=  UU   R                  S   S:w  a'  UU   R                  S   R<                  S:w  a  SU)U'   M  X    HX  nU(       d  M  UR                  S:X  d  M  UR                  S   S:w  d  M3  UR                  S   R<                  S:w  d  MR  SU)U'     M     M     [7        T<5       VV*s/ s H!  u  nn*[?        U*S[A        T<SU 5      -
  5      PM#     sn*nm<U H  n[+        X5      n+[-        X5      n,[C        UR                  UR                  UR                  -   5      n-[A        UU-   5      n.[A        T=U-   5      n/UR                  S   S:X  a#  UR                  S-
  UR                  S   S   -  n0OSn0U+U.U0-   :  a  U+U.U0-   -
  n1U" XU1UU)T<T=U-5        U,U/U0-   :  d  M  U,U/U0-   -
  n1U" XU1T=U)T<T=U-5        M     [        U5       Vs/ s H  nT<U   (       d  M  T=U   T<U   S-  -  PM     n2n[A        U<U=4S j[        U5       5       5      n3S[A        T<5      -
  S-  n4U4S:X  a  U3S:X  a  Sn5O[D        RF                  n5OU3U4-  n5U[A        U5      -   n6U[        [A        T=5      U5/U2Q5      -   n7UR                  S   S:w  a9  UR                  S   R<                  S:X  a  UR                  S   RH                  =n8n9OU6n8U7n9[        U6[%        US	U8S95      n6[        U7[%        US	U9S95      n7[K        U[K        UU65      5      n:[K        U[K        UU75      5      n;UT=T<U)UU4nU6U7/UQ7U:U;/UQ7S.=U R                  U'   nXR   $ s  snf s  snf s  snf s  sn*nf s  snf )aH  Return content widths for the auto layout table and its columns.

The tuple returned is
``(table_min_content_width, table_max_content_width,
   column_min_content_widths, column_max_content_widths,
   column_intrinsic_percentages, constrainedness,
   total_horizontal_border_spacing, grid)``

https://dbaron.org/css/intrinsic/

r	   )distribute_excess_width)r   r   r   NrW   separateborder_spacingFr   T)r   r9   )FTc                 `  > [        XU R                  -   5      n[        TU   5      n[        U 5      n[	        SXT-
  5      n[        XU R                  -   5       Vs/ s H  nTU   S:X  d  M  TU   PM     nn[        U5      n	U	S:X  a  S[        U5      =(       d    S-  n
Xj-  $ X)-  n
Xj-  $ s  snf )Nr   r	   )slicecolspansumr   r   ranger   )origin_celloriginr   
cell_slicebaseline_percentagecell_percentage_contributiondiffjother_columns_contributionsother_columns_contributions_sumrP   intrinsic_percentagesmax_content_widthss              r   get_percentage_contributionGtable_and_columns_preferred_widths.<locals>.get_percentage_contribution  s     6K,?,?#?@
!"7
"CD'?'L$12HI 6K,?,?#?@'.@$Q'1, "q!@ 	$ '. +..I*J'*a/89>Q?E | &GE|'.s   B+,	B+r9   r:   r;   r[   c              3   D   >#    U  H  nTU   S :X  d  M  TU   v   M     g7f)r   N ).0ir   r   s     r   	<genexpr>5table_and_columns_preferred_widths.<locals>.<genexpr>N  s-      2*'8! #q( 	1'8s     r<   )&tabler   get_wrapped_tabletablesgetr?   r   grid_xr   rowspanr   ro   zipr=   r   anyr#   r4   rB   column_groupssetr   r   r   r3   r   add	enumerater   sortedr>   r   r   r   sysmaxsizerA   ra   )>r   r   r   r   r   result
grid_widthgrid_height
row_number	row_grouprowcellr   gridzipped_gridcolumntotal_horizontal_border_spacingrH   rI   outer_min_widthouter_max_widthr   columnscolumn_numbercolumn_groupcolspan_cellscolspansmin_content_widthsgroupsgrouprows_originsyr   row_originsxr   spanpercentage_contributionspercentage_contributionr   r   constrainedness
percentagemin_contentmax_contentcolumn_slicecolumns_min_contentcolumns_max_contentspacingexcess_widthsmall_percentage_contributions'large_percentage_contribution_numerator)large_percentage_contribution_denominatorlarge_percentage_contributiontable_min_content_widthtable_max_content_widthtable_min_widthtable_max_widthtable_outer_min_content_widthtable_outer_max_content_widthr   r   s>                                                               @@r   r   r   y  s	    /!!#E^^&F} #JJ^^	%%C t||!;ZH
!*||";[I % !OJ	 & $ */{);<);ATFZ);D<J^^	%%C04Z - %!OJ & $ sDz"K {{$%3
QKK()!,;F;#f+f;FGGI 	( +,'Q+*+G%H	+G%H	 t#:7#JL t#:7#JLb"b"A2Fy262"O=f=*
 	
u }FZ'Mfz!GM++"++F+7M-(%+GM"QM
* ,  , MuH z)z)C*, :$g.Fq	!u!(+&q)+<We+L)N"1%(+&q)+<We+L)N"1%+.)!,.Fu.M,O%a( /  ND||q 'G'V$	9(+,>q,A9(M"1%(+,>q,A9(M"1%+.)!,.Ft.L,N%a( $$T*T\\A-. # 8 LD/32-K. ~GAtv& & "  " x #% z"A*?*BB&B(//0GH$'l$; [)!n,F5!&k&&*d2/J);A)>0@,*-+-I+K' %< %++,CD #" !9' !, ',J&78&7u&7O8:!q!1!7!7!@F!Ja &&w/44;!%OAAJ71:++G4>
  )..#5!%OAND*JJw'61JJw',,3%)" # $ ''<=?=MAz 	Jc"7";<<==?
 '6'6T[[$++*DE!"4\"BC!"4\"BC;;()Z7||a'5;;7G+H+KKGG,w66&*=*GHL#l4F!68J
 ,w66&*=*GHL#l4F!68J) 8 z"&%"A # 	A1!6q!9C!?@" # &% /2 2*',Z'82* /*+ 
s()	)S0 .0A52a7,-) -0KK) 456 	&
 	(#.@*AA  	(#"#%B/-+/- +. 	. 
 {{7v%%++g*>*C*Ct*K -2KK,@,F,FF/11!o"78 "o"78 %1|C!89%;!$0|C!89%;! 	.0E8+GF ()@J6J,.KUfU& GNN5F =g = Gn 9"?>&%s*   a13a6a6a;$(b =bbc           
      z   U R                   S   nUS:X  a  U R                   S   nUS:X  d  UR                  S:X  a  SnOUR                  S:X  d   eUR                  nU R                   S   S:w  a   U R                   S   R                  S:X  a  SnOU R                  nUR	                  U R                   S   U R                   S	   5      u  pVnU(       a  U(       d
  U(       d  SnOO[        XVUSUS
SS9u  p(O>U R                   S   R                  S:X  a  SnOUR                  S:X  d   eUR                  n[        XU5      $ )z:Return the min-content width for an ``InlineReplacedBox``.r9   r:   heightr;   r<   rI   r   image_resolutionrJ   ,     default_widthdefault_heightr=   r>   rA   rM   rN   r
   rB   	r   r   r9   r   imageintrinsic_widthintrinsic_heightintrinsic_ratiorO   s	            r   r*   r*     s0   IIgE8$Vv{{c1F;;$&&&\\FIIk"f,		+&++s2EOOE((II01399[3IK ?O ?O/##cCq 
7		 	 C	'zzT!!!#e$$r   c           
         U R                   S   nUS:X  a  U R                   S   nUS:X  d  UR                  S:X  a  SnOUR                  S:X  d   eUR                  nU R                  nUR	                  U R                   S   U R                   S   5      u  pVn[        XVUSUSS	S
9u  p(O>U R                   S   R                  S:X  a  SnOUR                  S:X  d   eUR                  n[        XU5      $ )z:Return the max-content width for an ``InlineReplacedBox``.r9   r:   r   r;   r<   r   rJ   r   r   r   r   r   r   s	            r   r6   r6     s    IIgE8$Vv{{c1F;;$&&&\\F$$		,-syy/EG 	;? (c3q 
7		 	 C	'zzT!!!#e$$r   c                 `   UR                    Vs/ s H   o3R                  (       d  M  [        X5      PM"     nnU(       d  [        XS5      $ UR                  S   R                  S5      (       a(  UR                  S   S:X  a  [        X[        U5      5      $ [        X[        U5      5      $ s  snf )z9Return the min-content width for an ``FlexContainerBox``.r   flex_directionr   	flex_wraprz   )r?   is_flex_itemr   rB   r=   
startswithr   r   )r   r   r   rD   min_contentss        r   r,   r,     s     \\9!E%7%7 	*')!  9 c!$$		"#..u55IIk"h.c#l"344c#l"3449s
   B+B+c                 :   UR                    Vs/ s H   o3R                  (       d  M  [        X5      PM"     nnU(       d  [        XS5      $ UR                  S   R                  S5      (       a  [        X[        U5      5      $ [        X[        U5      5      $ s  snf )z9Return the max-content width for an ``FlexContainerBox``.r   r   r   )r?   r   r   rB   r=   r  r   r   )r   r   r   rD   max_contentss        r   r7   r7     s     \\9!E%7%7 	*')!  9 c!$$
yy!"--e44c#l"344c#l"3449s
   BBc                    SSK JnJn  [        U[        R
                  [        R                  45      (       aR  UR                  (       d  gUR                  S   n[        U[        R
                  [        R                  45      (       a  MR  [        U[        R                  5      (       a$  UR                  (       a  UR                  S   S;   d  gUR                  R                  S5      nUR                  S   S:X  d"  [        U5      [        UR                  5      :X  a  gU(       am  SnUb  UnU" XS	U5      u  punUb  M  W(       d   eUR                  U5      n	U" X	S	W5      u  pnU	c  UR                  $ Ub   eUR                  U	R                  -
  $ U" UR                  UR                  U S	UR                  5      u      p  nU
$ )
z6Return the size of the trailing whitespace of ``box``.r	   )r   split_text_boxr   rn   rw   rx    rJ   N)inliner   r  r   r   r&   r'   r?   r   r   r=   rstripr   copy_with_textr9   r   )r   r   r   r  stripped_textresume
old_resumeold_boxrO   stripped_boxr9   s              r   rp   rp     s{   8
S5??EMM:
;
;||ll2 S5??EMM:
;
; sEMM**sxxIIm$(HHHHOOC(M
yy"c-&8CM&I J!/dF!KGQ   w))-8"04#5a== >!>==<#5#555/HHcii$0I0I K1a1r   )T)TT)TNFF)TF)NF)#__doc__r   	functoolsr   mathr   formatting_structurer   text.line_breakr   r   replacedr
   r   r   r   rF   rQ   ra   rB   r#   r4   r(   r5   r%   r    r3   rj   r   r   r*   r6   r,   r7   rp   r   r   r   <module>r     s       ( > *6 W6W6%$16+\0H
 CG=B% +	%$  PT"'U%p1$Od%D%45 5 r   