
    3vj                         d Z ddlmZ ddl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 d	dlmZmZ d	dlmZ d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z 	 ddZ!d Z"y)z*Layout for grid containers and grid-items.    )defaultdict)countcycle)inf   )	Dimension)boxes)LOGGER   )
percentageresolve_percentages)max_content_widthmin_content_width)find_in_flow_baselinec                 `    t        | t              xr | j                  j                         dk7  S Nfr
isinstancer   unitlowersizings    I/root/.hermes/venv/lib/python3.12/site-packages/weasyprint/layout/grid.py
_is_lengthr      &    fi(HV[[->->-@D-HH    c                 `    t        | t              xr | j                  j                         dk(  S r   r   r   s    r   _is_frr      r   r   c                 &    | ||z   k  xr || |z   k  S N )
position_1size_1
position_2size_2s       r   
_intersectr'      s&    Z&(( 	)Z&((*r   c                 b    |D ]*  \  }}}}t        | |||      }	t        ||||      }
|	s'|
s* y y)NTF)r'   )xywidthheight	positionsfull_xfull_y
full_widthfull_heightx_intersecty_intersects              r   _intersect_with_childrenr4      sG    3< /
K E6:> FFK@;	
 r   c                 6   | \  }}}|r$|"| t        |      D ]  \  }} | d| | v s n d}|b|`||dz
  }nX|dkD  rdnd}t        |d d |         D ]  \  }} || v r||z  } n|dk(  s n t        |      z  }|dk(  rt        |      dz
  |z
  }|d }|||fS )N-r   r   )	enumerateabslen)linelinessidespannumberidentcoordsteps           r   	_get_linerC   &   s    D&%&.$U+ 	KE4$ D(	 Fdl=QJE
1D(vv7 %tD=dNFQ;% V$rzE
Q.%%r   c                 &   | dk(  s| d   dk(  r|dk(  s|d   dk(  ry | dk7  rt        | |d      \  }}}}||xs d}|}nd}d x}}|dk7  rt        ||d      \  }}}}	|=|xs dx}}
|}|8t        ||dz   d  d      D ]  \  }}||v r|
dz  }
|
dk(  s n ||
z  }n||	|z
  }|X|	z
  }nH|xs d}|	dkD  r:t        ||	dz
  d d         }|D ]  \  }}||v r|dz  }|dk(  s|	dz
  |z
  } n | }n| }|	|z
  }nd}dk  r| }||z  }|dk(  rd}||fS )	Nautor   r>   startr   endrF   r7   )rC   r8   )rF   rG   r<   r>   r?   r@   rA   size
span_ident	coord_endspan_numberr;   iterables                r   _get_placementrN   B   s   %(f,&=CFf,%.ueW%E"feU;QDJ!!
U
f})23u)E&feY!'1,D;J%"+E%'(O1"E (JD$!T)#q("a'	( K'Du$D=!!D(1q=(y{B)?@H'/ (t%-"aKF!Q;$-ME$9E!( "(#GEu$Daxuqy4=r   c                 ,    d}| d   dk(  r	| d   xs d}|S )Nr   r   r>   r"   )placer>   s     r   	_get_spanrQ   z   s%    DQx6Qx}1Kr   c                 8   t               }|j                         D ]s  \  }}	}
}|dk(  r4t        |	|g|  st        |||
z         D ]  }|j	                  |        At        ||
g|  sOt        |	|	|z         D ]  }	|j	                  |	        u |rt               D ]  }||v r|dk(  rt        d |dz   d f||      }n:|d   dk(  sJ |dk(  s
|d   dk(  sJ t        |      }t        |d |dz   |z   d f|      }t        |d   |d   |d   z         }t        |      |z  r|c S  y t        |xs dg      dz   }|dk(  rt        d |dz   d f||      S |d   dk(  sJ |dk(  s
|d   dk(  sJ t        |dz         D ]!  }t        |d |dz   d f|      }|d   |k\  s|c S  y )NrowrE   r   r   r>   )	setvaluesr'   rangeaddr   rN   rQ   max)first_placementsecond_start
second_endsecond_trackschildren_positions
first_flowdenseoccupied_tracksr)   r*   r+   r,   track	placementr>   tracks	end_tracks                    r   _get_second_placementre      s)   eO188: 	+1eV!V6o6q!e), +A#''*+ !U5_5q!f*- +A#''*+	+ W 	!E'v%*519d+ZH	 $A&000 $v-aF1JJJ .* 4T)94"@-Q	9Q<1	!)DEFv;0  #	!& O*s+a/6!!uqy$']D D  ?f,,,  6)\!_-FFF"519- %	* 4Q"=}N	Q<5($$	%r   c                 h    | x}}| d   dk(  r| dd  \  }}|d   dk(  rd}||fS t        |      rd}||fS )Nr   zminmax()r   fit-content()rE   )r   )rI   
min_sizing
max_sizings      r   _get_sizing_functionsrj      s`    ""JAw*!%ab
J!}'
 
## 

	

##r   c                    | dk(  rd} d| v rt        j                  d       g gS g }t        |       D ]	  \  }}|dz  r|d   dk(  r|dd  \  }}t        |t              st        j                  d	       d}t        |      D ]i  }t        |      D ]Y  \  }}|dz  r|j                  |       t        |      dz  r|d
   j                  |       @|j                  t        |             [ k |j                  |       t        |      dz  r|d
   j                  |       |j                  t        |              |S )Nnone)r"   subgridzSubgrids are unsupportedr   r   zrepeat()r   z6"auto-fit" and "auto-fill" are unsupported in repeat()r7   )
r
   warningr8   r   intrV   appendr:   extendlist)	rc   tracks_listira   repeat_numberrepeat_track_list_jrepeat_tracks	            r   _get_template_tracksrz      sP   F12tKf% 05q5Qx:%38900!-5NNPR$%M}- 
GA+45F+G 	G<q5'..|<  #;/!3 +B 6 6| D + 2 243E F	G
G ""5) ;!#B&&u-""4;/90: r   c	           
          | dv sJ |dv sJ |dv sJ |dv sJ dgt        |      z  }	g }
| dk(  rdnd}d}t        ||      D ]  \  }}|r|}|s|
j                  d       |dz  }||   }|d	k(  r|d
v s|d   dk(  rH|
j                  d       K|dk(  r|dv r-|
j                  d       f|dk(  r|dv r|
j                  d       |
j                  d        t        |      D ]  \  }}|s
|D ]  \  }}|dk(  r|dv rt	        ||      }nZt        ||      }nMddlm} |j                         }d|_	        d|_
         |||t         d |      \  }}}}}}|j                         }||||z    D ]
  }|||   z  } t        d|      }t        t        |
|||z    |            }dgt        |      z  }|D cg c]
  \  }}|s	| }}}|t        |      xs dz  }|D ];  }||   \  }}|} ||   |   }!||   d   }"|!| z   |"k\  r| |!z   |"z
  }#| |#z  } || z  }| ||<   = |rk|ri|D cg c]
  \  }}|r	| }$}}|t        |$      xs dz  }|$D ];  }||   \  }}|} ||   |   }!||   d   }"|!| z   |"k\  r| |!z   |"z
  }#| |#z  } || z  }| ||<   = |r	 t        |      D ]  \  }%}#|#|	|%   kD  s|#|	|%<      t        |
||	      }&|&D ]2  \  }}'}(|s
| dk(  r|'d   t        u r|'d   |(z   |'d<   &|'|xx   |(z  cc<   4 y c c}}w c c}}w )N)minrX   )	intrinsiccontent-basedmax-content)minimummin-contentr   xyr   r|   r   Fr}   r   r   rE   rg   Tr~   )r   r   r   )r   rE   r)   )r   r   block_level_layoutbottom_space
skip_stackcontaining_blockrH   rX   )r:   ziprp   r8   r   r   blockr   deepcopy
position_x
position_yr   margin_heightrX   rr   ))affected_sizesaffected_tracks_typessize_contributiontracks_childrensizing_functionstracks_sizesr>   	directioncontextplanned_increasesaffected_tracksaffected_size_indexcurrent_spanchildren	functionsfunctionrt   itemparentspacer   rw   sizestracks_numbersitem_incurred_increasesrx   affectedaffected_tracks_numbersdistributed_spacetrack_number	base_sizegrowth_limititem_incurred_increaseaffected_sizelimitextraunaffected_tracks_numberskiteratortrack_sizesincreases)                                            r   _distribute_extra_spacer      s    ^+++  %5 5 5 5 IIII c,// O-6!AL"?4DE &)L""5)01 K/BBQK?2&&t,"o599&&t,"m322&&t,u%+&, !1 D18$ A	1LD& C$(BB-gt<E-gt<E5}}"#"#&8T%+'-#aAq! **,%a$/ 423345ME!/!AdF31=?N'(cC0@,A&A#%3'A!ax'A# 'A %-D)E)J K 7 
O*6|*D'	<):& ,\ :;N O$\215 #99UB.>F *e3*//8N'5
O 0)7-I%!XxA-I) -I S!:;@qA "$= 0L.:<.H+I|->*$\23FG "(6q9E$'==F2]BUJ .%7.33E. ,L90 %&=> 15,Q//+0%a(1A	1D1N ?L2CDH+3 9'+xU"{1~'<(^h6KN+,8,9Y'A -Is   4
K4
?K4
!
K:
,K:
Nc	                 >   |dv sJ g }	|dk(  rdn|}
| D ]  \  }}d }t        |      rt        ||j                  |
      }n|dv s|d   dk(  rd}d }t        |      rt        ||j                  |
      }n|dv s|d   dk(  st        |      rt        }d ||fvrt        ||      }|	j                  ||g        t        t        |	            D cg c]  }g  }}|j                         D ]7  \  }\  }}}}|dk(  r||fn||f\  }}|dk7  r!|||z
     j                  |       9 t        || |	      }|D ]  \  }\  }}}|s|dk(  rdd	lm} d}|D ]  }||   \  }}}}t        ||||z          }|j                         }d|_        d|_        t"        j$                  j'                  |d
      }t)        ||       |j                  |_        |j                   |_        ||_        ||_        t         } |||d |      \  }}}}}}t        ||j/                               } |dv r||d<   |dv r||d<   d |vrt        |      |d<   |dk(  rt        dgfd|D         |d<   n;|dk(  rt        dgfd|D         |d<   n|dk(  rt        dgfd|D         |d<   |dk(  rt        fd|D              |d<   n#|dv s|d   dk(  rt        fd|D              |d<   d |vst        |      |d<    t1        |j3                         D ch c]  \  }}}}|dk(  r|n|dk\  r	|dk(  r|n| c}}}      }|D ]D  }t        t        |             D cg c]  }g  }}t5        |j                               }|D ]  \  } \  }\  }}}}|dk(  r||fn||f\  }}||k7  r$| | | |z   dz    D ]  \  }}t        |      s C t"        j$                  j'                  |d
      }t)        ||       |dk(  rt        ||||z          |_        |||z
     j                  ||f        t7        ddd|| |	||	       t7        ddd|| |	||	       t7        ddd|| |	||	       t7        ddd|| |	||	       t7        ddd|| |	||	       G |	D ]  }|d   t        u s|d   |d<    |dk(  rd }!n'|t        d |	D              z
  t        |	      dz
  |z  z
  }!|!S|!dkD  rN|!t        |	      z  }"t5        |	      D ]2  \  } }|\  }}||"z   |kD  r||d<   |!||z
  z  }!!|dxx   |"z  cc<   |!|"z  }!4 t9               }#|!	|!dk  rd}$n<|!d}%|%s|!}&d}'t5        t        |	|             }|D ]3  \  } \  }\  }}t        |      s|&|d   z  }&| |#vs%|'|j:                  z  }'5 t        d|'      }'|&|'z  }(d}%t5        t        |	|             }|D ]P  \  } \  }\  }}| |#vst        |      s|(|j:                  z  |d   k  s3|#j=                  |        |!|d   z  }!|!dkD  }%R |%s(}$nbd}$t        |	|       }|D ]O  \  }\  }}t        |      s|j:                  dkD  rt        |$|j:                  |d   z        }$At        |$|d         }$Q t5        t        |	|             }|D ]X  \  } \  }\  }}t        |      s| |#vs|$|j:                  z  |d   kD  s3|!|!|$|j:                  z  z  }!|$|j:                  z  |d<   Z |j                  d    })|j                  d!   }*|dk(  xr t9        |)      d"d#hz  }+|dk(  xr t9        |*      d"d#hz  },|+s|,rS|!Q|!dkD  rLt        |	|       D cg c]  \  }\  }}|dk(  r| }-}}}|-r"|!t        |-      z  }"|-D ]  }|dxx   |"z  cc<    |	S c c}w c c}}}w c c}w c c}}}w )$Nr   rE   r   r   rg   r)   r   r*   r   r"   )r   r   )r   max_contentrE   )r   r   r   c              3   6   K   | ]  }t        |        y wr!   r   .0childr   s     r   	<genexpr>z(_resolve_tracks_sizes.<locals>.<genexpr>          I6;!'51 I   r   c              3   6   K   | ]  }t        |        y wr!   r   r   s     r   r   z(_resolve_tracks_sizes.<locals>.<genexpr>  r   r   c              3   6   K   | ]  }t        |        y wr!   r   r   s     r   r   z(_resolve_tracks_sizes.<locals>.<genexpr>  r   r   c              3   6   K   | ]  }t        |        y wr!   r   r   s     r   r   z(_resolve_tracks_sizes.<locals>.<genexpr>         I6;!'51Ir   )rE   r   zfit_content()c              3   6   K   | ]  }t        |        y wr!   r   r   s     r   r   z(_resolve_tracks_sizes.<locals>.<genexpr>  r   r   r   r|   r}   r   r~   rX   c              3   &   K   | ]	  }|d      yw)r   Nr"   )r   rI   s     r   r   z(_resolve_tracks_sizes.<locals>.<genexpr>  s     1DQ1   FTjustify_contentalign_contentnormalstretch)r   r   styler   r   rX   rp   rV   r:   itemsr   r   r   sumr   r   r   r	   BlockContainerBoxanonymous_fromr   r+   r,   r   sortedrU   r8   r   rT   valuerW   ).r   box_sizer]   implicit_startr   gapr   r   orthogonal_sizesr   percent_box_sizemin_functionmax_functionr   r   rw   r   r   r)   r*   r+   r,   rA   rI   rM   r   r   r   r   r   spansr>   rt   
free_spacedistributed_free_spaceinflexible_tracksflex_fractionstopleftover_spaceflex_factor_sumhypothetical_fr_sizer   r   	x_stretch	y_stretchauto_tracks_sizess.         `                                       r   _resolve_tracks_sizesr   ^  s

    L$.qH&6 7"l	l#".446FHIDD1o0Il#%.446FHLDD1o0F<4HL	<00y,7LY56#7. $)\):#;<ar<O<(:(@(@(B >$$1eV$-$4q%j1f+t19./66u=	>
 ?$4lCH9A 2"5.<1F! <!3E!:1eQ,Qqw78(#$ #$ 00??@PRTU#F,<=$)$4$4!$)$4$4!$ & #t'9ULT%+(-$q!Q1 VU%8%8%:;!<" EE!a==!a5 u:a=(1 J  I?G I JE!H]*1 J  I?G I JE!HV# 1 J  I?G I JE!H=( I?GI IE!H551o0 I?GI IE!Hu5zE!He2"h %7%>%>%@9 9!Q5&#%E6a7 c!v-9 :E  'F',S1A-B'CD!2DD/557819 	P-A-,1eV(1S(81e*q&kKE4t|#3AafQh#? P<,'P 00??@PRTU#F,<=##&'7!E''B#CFL 67>>vO	P 	 ;	?lD)W	F 	 ?M?lD)W	F
 	 =-lD)W	F 	 ;lD)W	F 	 =-lD)W	FK'FV   8s?QxE!H  6
 1L112"c)* 	 *q.!+c,.?!?!,/ 	5HAu&+#I|11L@'alY66
a2244
	5 */		'NO \3C!DEH19 >--E,A|,'"eAh.N 11'<+=+==	>
 "!_5O#1O#C D \3C!DEH19 .--E,A|--&2F+l.@.@@58K)--a0"eAh.
)A~. & -|%56(0 	A$E$A|l#%%)$'%|'9'9E!H'D%FM %(uQx$@M	A \+;<=H)1 >%%E$A|,A->$>|111E!H<)-,2D2D"DDJ(<+=+==a> ',,->?O$**?;MSIS1Xy4II  	SGS/8Y2GG YJ$:zA~ <!12' '.e.lAv% ' ' %/#6G2H%H"* 3a223  =v9
 El's   	^!^	^	^c                 >   | j                  |       r%|j                  d   dk7  r|j                  dd       |j                  d   dk(  rg }|j                  d   }|j                  d	   }	t        |j                  d
         }
t        |j                  d         }t        |j                  d
   d d d         }t        |j                  d   d d d         }|j                  d   }|dk(  rd}n>|j                  dk(  r|j                  n|j                  }t        ||j                  |      }|j                  d   }|dk(  rd}n4|j                  dk(  rdn|j                  }t        ||j                  |      }|dk(  rd}|D cg c]  }t        |       }}t        |j                  d         }t        |j                  d         }|rt        |d         nd}t        t        |      dz
  dz        t        |      z
  }|dkD  r&t        |      D ]  }|j                  d g|z          nA|dk  r<t        |       D ]-  }|j                  t        |
             |j                  g        / t        t        |      dz
  dz        |z
  }|dkD  r)|D ]#  }t        |      D ]  }|j                  d         % nA|dk  r<t        |       D ]-  }|j                  t        |             |j                  g        / t        |      D ]  \  }}t        |      D ]  \  }}|	| d}|d d d   D cg c]  }|D ]  }|  }}}||vr|d|z     j                  |       |d d d   D cg c]  }|D ]  }|  }}}||vsj|d|z     j                  |         t        |d d d         D ]  \  }}t        |d d d         D ]  \  }}|	| d}|d d d   D cg c]  }|D ]  }|  }}}||vr|d|z  dz
     j                  |       |d d d   D cg c]  }|D ]  }|  }}}||vsm|d|z  dz
     j                  |         d|	v rdnd} d|	v rdnd}!| dk(  r|n|}"|!dk(  r|n|}#t        |j                   d       i D ]}  }$|$j                  d   }%|$j                  d    }&|$j                  d!   }'|$j                  d"   }(t#        |%|&|d d d         })t#        |'|(|d d d         }*|)sh|*sk|)\  }}+|*\  }},|||+|,f|$<    D ]  }$|$v r|$j                  d#|  d$   }-|$j                  d#|  d%   }.t#        |-|.|"d d d         }/|/sD|$j                  d#|! d$   }0|$j                  d#|! d%   }1t%        |/|0|1|#| d&|	v       }2| dk(  r|/\  }},|2\  }}+n
|/\  }}+|2\  }},|||+|,f|$<    d}3|!dk(  r|rt        |d         nd}4nt        |      }4g }5D ]  }$|$v r|!dk(  r|$   \  }6}}7}n^|$   \  }}6}}7nS|$j                  d#|! d$   }0|$j                  d#|! d%   }1t#        |0|1|#d d d         }2|5j                  |$       |2r|2\  }6}7nut'        |6|3      }3t)        |6|7z   |4      }4 |5D ]b  }$|$j                  d#|! d$   }0|$j                  d#|! d%   }1d}8|0dk7  r|0d   d'k(  r|0d   }8n|1dk7  r|1d   d'k(  r|1d   }8t)        |3|8xs dz   |4      }4d d}9| dk(  rt        |      }:n|rt        |d         nd}:j+                         D ]1  };| dk(  r|;\  }}6}}7n|;\  }6}}7}t'        |6|9      }9t)        |6|7z   |:      }:3 |9|3}=}<d&|	v r|5D ]  }$|$j                  d#|  d$   }-|$j                  d#|  d%   }.|$j                  d#|! d$   }0|$j                  d#|! d%   }1t#        |0|1|#d d d         }2|2r|9}<|2\  }>}?|>}=t-        |<      D ]  }@|-dk(  rt#        d @dz   d f|.|"d d d         \  }@}An4|-d   d'k(  sJ t/        |-      }8t#        |-d @dz   |8z   d f|"d d d         \  }@}A@|<k  r_t        @|@Az         D ]9  }| dk(  r	|>@}}|?A},}+n@|>}}A|?},}+t1        |||+|,j+                               }B|Bs9   n @Az   |:z
  }C|CdkD  r|:Cz  }:| dk(  r	|>@}}|?A},}+n@|>}}A|?},}+|||+|,f|$<   Y|9|3}=}<	 |<}@t        |=|4      D ]  }>|-dk(  rt#        d @dz   d f|.|"d d d         \  }@}An4|-d   d'k(  sJ t/        |-      }8t#        |-d @dz   |8z   d f|"d d d         \  }@}A|0dk(  rt#        d |>dz   d f|1|#d d d         \  }>}?n*t/        |0      }8t#        |0d |>dz   |8z   d f|#d d d         \  }>}?| dk(  r	|>@}}|?A},}+n@|>}}A|?},}+t1        |||+|,j+                               }B|>|?z   |4kD  }D|BsDr|||+|,f|$<   |<Az   dz
  |:z
  }C|CdkD  r|:Cz  }: n |<dz  }<|<dz   |:z
  }C|CdkD  r|:Cz  }:|3}=1 na|5D ][  }$|$j                  d#|  d$   }-|$j                  d#|  d%   }.|$j                  d#|! d$   }0|$j                  d#|! d%   }1t#        |0|1|#d d d         }2|2r|2\  }>}?|>|=k  r|<dz  }<|>}=t-        |<      D ]  }<|-dk(  rt#        d |<dz   d f|.|"d d d         \  }@}An4|-d   d'k(  sJ t/        |-      }8t#        |-d @dz   |8z   d f|"d d d         \  }@}A@|<k  r_t        @|@Az         D ]9  }| dk(  r	|>@}}|?A},}+n@|>}}A|?},}+t1        |||+|,j+                               }B|Bs9   n @Az   |:z
  }C|CdkD  r|:Cz  }:+,f|$<   K	 |<}@t        |=|4      D ]  }>|-dk(  rt#        d @dz   d f|.|"d d d         \  }@}An*t/        |-      }8t#        |-d @dz   |8z   d f|"d d d         \  }@}A|0dk(  rt#        d |>dz   d f|1|#d d d         \  }>}?n*t/        |0      }8t#        |0d |>dz   |8z   d f|#d d d         \  }>}?| dk(  r	|>@}}|?A},}+n@|>}}A|?},}+t1        |||+|,j+                               }B|>|?z   |4kD  }D|BsDr|||+|,f|$<    n |<dz  }<|<dz   |:z
  }C|CdkD  r|:Cz  }:|3}=^ | dk(  r	|3|4}F}E|9|:}H}Gn|9|:}F}E|3|4}H}Gt        dEz
        D ]/  }|j3                  dt        |             |j3                  dg        1 t        |rt        |d         ndF      D ]-  }|j                  t        |             |j                  g        / t        dGz
        D ]/  }|j3                  dt        |             |j3                  dg        1 t        t        |      H      D ]-  }|j                  t        |
             |j                  g        / t5        d(       }Ij7                         D ]  \  }$\  }}}+},I|   }J|$j                  d)   d*v rd+Jd,<   d-D ]i  }K|$j                  d.|K    d*v rJK   d/k7  s d+JK<   &|$j                  d.K    d0v rd/JK<   @|$j                  d.K    d1v sU|$j                  d.K    J|K<   k  t9        |t:        j<                        rdd2lm }L  |L||       n,t9        |t:        jB                        sJ dd3l"m#}M  |M|| |       |j                  dk(  r|j                  |_        |dd d   D cg c]  }tI        |       }N}|dd d   D cg c]  }tI        |       }O}tK        |O|j                  |3d4|| |      }P|PD 7cg c]  \  }7}|7	 }Q}7}tK        N|j                  Gd5|| ||Q	      }RtM        |j                  d6         }S|jO                         }t)        d|j                  tQ        d7 PD              z
        }Tg }Ut        |P      }V|Sd8hz  r-|Tdz  z  }PD ]  \  }7}Uj                  |       ||7|z   z  }  nSh d9z  r)|Tz  }PD ]  \  }7}Uj                  |       ||7|z   z  }  nSd:hz  r5|Tdz  Vz  z  }PD ]$  \  }7}Uj                  |       ||7TVz  z   |z   z  }& nSd;hz  r3PD ]-  \  }7}Uj                  |       Vdk\  s||7TVdz
  z  z   |z   z  }/ naSd<hz  r8|TVdz   z  z  }PD ]'  \  }7}Uj                  |       ||7TVdz   z  z   |z   z  }) n#PD ]  \  }7}Uj                  |       ||7|z   z  }  tM        |j                  d=         }W|jS                         }|j                  dk(  rd}Xn=|j                  tQ        d> RD              z
  t        |R      dz
  |z  z
  }Xt)        d|X      }Xg }Yt        R      }ZWd8hz  r-|Xdz  z  }RD ]  \  }7}Yj                  |       ||7|z   z  }  n Wh d9z  r)|Xz  }RD ]  \  }7}Yj                  |       ||7|z   z  }  nWd:hz  r5|Xdz  Zz  z  }RD ]$  \  }7}Yj                  |       ||7XZz  z   |z   z  }& nWd;hz  r3RD ]-  \  }7}Yj                  |       Zdk\  s||7XZdz
  z  z   |z   z  }/ n|Wd<hz  r8|XZdz   z  z  }RD ]'  \  }7}Yj                  |       ||7XZdz   z  z   |z   z  }) n>Wd?hz  rtU        jV                  d@       RD ]  \  }7}Yj                  |       ||7|z   z  }  g d }[d}\rddAlm,}] t'              t)              tQ        dB Rd  D              t        |Rd        dz
  |z  z   }^j7                         D ]R  \  }$\  }}}+},|jZ                  j]                  ||f      x}_,t/        |$j                  d!         }8tQ        dC R|||8z    D              |8dz
  |z  z   }`t_              ja                  |$      }atQ        Q|||+z          }+|$jc                         }$d|$_2        d|$_3        |v r|   j]                  a      }bnd }bt:        jh                  jk                  |dD      }ctm        |c|       d|c_2        d|c_3        |+|c_        d|c_         ]| |$tn         b|cE      \  }$}}}}}`|$jq                         z
  }d|d_k  sDt)        \_dz
        }\U |jZ                  j7                         D ]  \  \  }}}_|k7  r^_z  }^ n d}\^\z  }^ndxx}^d }etQ        dF Rd  D              t        |Rd        dz
  |z  z   }ftn        ffdG	}gg Ydz   d  |jS                         |fz   }ht        |hH      D ]  \  }6}i| js                  ||i^z
        sd}|6}[|j                  d)   d+k(  r|s| ju                  |       d d dId dJg dfc S I|6   d,   d+k(  r1|s/[dk(  r| ju                  |       d d dId dJg dfc S  g[       |[d i}en g[dz           n  g        |j                  dk(  r2tQ        dK Rd [ D              t        |Rd |[       dz
  |z  z   ^z
  |_        tM        |j                  dL         }jtM        |j                  dM         }kg }lt5        t              }md }ndId dJ}oddAlm,}] D ]  \  }6}$|$   \  }}}+},ja                  |$      }arUj]                  |      rDa|   v r	|   a   }bn6t9        |$t:        jv                        sJ t        |$j                         d i}bnd }b|$jc                         }$U|   |$_2        Y|   ^z
  |$_3        tm        |$|       tQ        dN P|||+z    D              |+dz
  |z  z   }+tQ        dO R|||,z    D              |,dz
  |z  z   },rN||f|jZ                  v r>|$xjf                  |jZ                  ||f   \z
  z  c_3        |,|jZ                  ||f   |\z
  z  },|$jx                  dk(  rd|$_<        |$jz                  dk(  rd|$_=        |$j|                  dk(  rd|$_>        |$j~                  dk(  rd|$_?        |+|$j~                  |$jz                  z   z
  }p|p|$j                  |$j                  z   |$j                  z   |$j                  z   z
  }q|,|$j|                  z
  }r|r|$j                  |$j                  z   z
  }sbr|$j                  d   dk(  r8r|$jx                  z  }rs|$jx                  |$j                  z   |$j                  z   z  }stM        |$j                  dP         }t|tdhz  rj}ttddQhz  r`|$j                  dR   dk(  rN|$j                  j                         |$_        |$j                  dS   dTk(  rqnp}ut        |udU      |$j                  dR<   tM        |$j                  dV         }v|vdhz  rk}vvddQhz  r`|$j                  dW   dk(  rN|$j                  j                         |$_        |$j                  dS   dTk(  rsnr}wt        |wdU      |$j                  dW<   t:        jh                  jk                  |dD      }ctm        |c|       |$jd                  |c_2        |$jf                  |c_3        |+|c_        |,|c_         ]| |$|b|c|||      d dX \  }x}y}z|xrd}{t/        |$j                  d!         }8yrd}{n[||8z   [dz   k\  rd}{{rei }e|evri e|<   yr	ye|   |6<   nO{rMt9        xt:        jv                        sJ brt)        b      nd}||s |t        xj                         z   d ie|   |6<   d}nei }e|evri e|<   d e|   |6<   tddQhz  rt)        qxj                        |x_        nixj                  dR   dk(  rt        | xdY      |x_        qxj                  z
  }}td8hz  rxj                  }dz  d       nth dZz  rxj                  }d       vddQhz  rt)        sxj                        |x_        nDsxj                  z
  }}vd8hz  rxj                  d}dz         nvh d[z  rxj                  d}       lj                  x       m|   j                  ||xf       n|Gk(  st        x      }n rls| ju                  |       d d dId dJg dfS |jZ                  j                         }~|jZ                  }|j                          |j                  l      }t9        |t:        jB                        r tU        jV                  d\       nxs d|_O        dd]lPmQ} dd^lmR} |j                  d   dk(  r|D ]  } | ||||d _        |j                   D ]!  }$ |$|j                  |j                  f       # es| ju                  |       |eog dfS t)        m      }t'        e      }t)        |e      }d}t        ||dz
  d      D ]1  }m|   D ]%  \  }}$t/        |$j                  d!         }8||8z   dz   k  r+||8z   dz   k\  }{|{r%|$j                  d   dk7  r|$j                  dd       t)        d| j                  |z
  |$jf                  z
  |$jx                  z
  |$j                  z
  |$j                  z
  |$j|                  z
  |$j                  z
  |$j                  z
        |$_        {r5|$jq                         ||f<   ||f~v s||fxx   ~||f   \z
  z  cc<   t)        |$j                  sz
        }( 4 rD ]  \  }}||fxx   z  cc<    | j                  |z
  |jf                  z
  |jx                  z
  |j                  z
  |j                  z
  |_        |j                  d   dk7  rL|j                  dd       |xj                  |j|                  |j                  z   |j                  z   z  c_        | ju                  |       |eog dfS c c}w c c}}w c c}}w c c}}w c c}}w c c}w c c}w c c}}7w )`Nbox_decoration_breakcloneTF)rF   rG   positionrelativegrid_template_areasgrid_auto_flowgrid_auto_rowsgrid_auto_columnsr7   
column_gapr   r   rE   row_gaprl   )r!   grid_template_rowsgrid_template_columnsr   r   z-startz-endcolumnrS   c                      | j                   d   S )Norder)r   )r   s    r   <lambda>zgrid_layout.<locals>.<lambda>  s    TZZ5H r   )keygrid_column_startgrid_column_endgrid_row_startgrid_row_endgrid__start_endr_   r>   c                      ddddS )NrE   )beforeafterinsider"   r"   r   r   r   zgrid_layout.<locals>.<lambda>  s    6FfE r   break_inside)avoidz
avoid-pager  r  )r  r  break_page)r  always)leftrightrectoverso)block_level_width)inline_block_widthr)   r*   r   c              3   &   K   | ]	  \  }}|  y wr!   r"   r   rI   rw   s      r   r   zgrid_layout.<locals>.<genexpr>  s     'Jq'Jr   center>   rG   r
  flex-endzspace-aroundzspace-betweenzspace-evenlyr   c              3   &   K   | ]	  \  }}|  y wr!   r"   r  s      r   r   zgrid_layout.<locals>.<genexpr>;  s     /q/r   baselinez3Baseline alignment is not supported for grid layoutr   c              3   &   K   | ]	  \  }}|  y wr!   r"   r  s      r   r   zgrid_layout.<locals>.<genexpr>l  s     ?q?r   c              3   &   K   | ]	  \  }}|  y wr!   r"   r  s      r   r   zgrid_layout.<locals>.<genexpr>s  s     =WT1D=r   r"   r   c              3   &   K   | ]	  \  }}|  y wr!   r"   r  s      r   r   zgrid_layout.<locals>.<genexpr>  s     ;WT1D;r   c                    t              D ]p  \  }}|   \  }}}}|cxk  r| k  sn 
j                  ||f       4|	kD  rj                  ||f       M|
v sR
|   }|||v s^j                  ||f       r y r!   )r8   rp   )max_rowrx   r   rw   r*   child_skip_stackr   r]   first_skip_rowlast_skip_rowr   this_page_childrens         r   _add_page_childrenz'grid_layout.<locals>._add_page_children  s    !(+ 	:HAu+E2JAq!Q!Q00!"))1e*5]""))1e*5j#-a= #+q4D/D&--q%j9	:r   rH   any)breakr  c              3   &   K   | ]	  \  }}|  y wr!   r"   r  s      r   r   zgrid_layout.<locals>.<genexpr>  s     <q<r   justify_itemsalign_itemsc              3   &   K   | ]	  \  }}|  y wr!   r"   r  s      r   r   zgrid_layout.<locals>.<genexpr>  s     =q=r   c              3   &   K   | ]	  \  }}|  y wr!   r"   r  s      r   r   zgrid_layout.<locals>.<genexpr>  s     ;q;r   justify_selfr   r+   
box_sizingzcontent-boxpx
align_selfr,      )outer>   rG   r
  r  self-end>   rG   r  r,  zInline grids are not supported)absolute_layout)relative_positioning)r   )Tcreate_block_formatting_contextr   remove_decorationr   r+   r   r,   rr   rz   r:   ro   rV   rp   nextr8   r   r   rN   re   r|   rX   rU   r   rQ   r4   insertr   r   r   r	   GridBoxr   r  InlineGridBoxinliner  rj   r   rT   content_box_xr   content_box_yr
   rn   r   advancementsgettupleindexr   r   r   r   r   r   r   r   overflows_pagefinish_block_formatting_context	ParentBox
margin_topmargin_rightmargin_bottommargin_leftborder_left_widthpadding_leftborder_right_widthpadding_rightborder_bottom_widthpadding_bottomborder_top_widthpadding_topcopyr   r   	translater   clearcopy_with_childrenr  absoluter-  r.  page_bottom)r   boxr   r   r   page_is_emptyabsolute_boxesfixed_boxes
grid_areasflow	auto_rowsauto_columnsauto_rows_backauto_columns_backr   refer_tor   rS   rowscolumnsgrid_areas_columns	rows_diffrw   columns_diffr*   r)   	area_name
start_namenamenamesr   end_namer^   second_flowfirst_tracksr\   r   column_start
column_end	row_startrow_endcolumn_placementrow_placementr+   r,   first_start	first_endrY   rZ   r[   second_placementimplicit_second_1implicit_second_2remaining_grid_itemsrt   rI   r>   implicit_first_1implicit_first_2r   cursor_firstcursor_secondsecond_isecond_sizefirst_i
first_size	intersect
first_diffoverflowimplicit_x1implicit_x2implicit_y1implicit_y2page_breaks_by_rowrow_page_breakr=   r  r  row_sizing_functionscolumn_sizing_functionscolumns_sizesvertical_sizes
rows_sizesr   
free_widthcolumns_positionscolumns_numberr   free_heightrows_positionsrows_number
resume_rowextra_skip_heightr   skip_heightadvancementspan_heightr;  r  r   skip_stack_advancement	resume_attotal_heightr  row_lines_positionsrow_yr"  r#  new_childrennew_children_by_rowsr  	next_pagechild_border_widthchild_content_widthchild_border_heightchild_content_heightr&  child_widthr)  child_height	new_childchild_resume_atchild_next_pagebroken_childprevious_skip_childdiffold_advancementsr8  r-  r.  absolute_boxlast_page_rownext_page_first_rownext_page_last_rowextra_advancementr   r]   r  r  r  s      `                                                                                                                                   @@@@@r   grid_layoutr  ?  s&   ++C0cii 677BDe4
yy
* 01J99%&Dcii 012I#678L399%56tt<=Ncii(;<TrTBC<(JX
-0YY&-@#))cii
CIIx@
ii	"G(

f,1#**Wcii:V
'12$s)2J2		*> ?@D"399-D#EFG 0:Z]+qSY]a'(3z?:I1}y! 	;Atf'99:	;	Q	z" 	AKKY(KKO	
 Gq(A-.1CCLa 	!C<( !

4 !	! 
	}% 	ANN4-.NN2	
 J' 
03%cN 		0LAy %;f-J%)#A#Y?c3?4T?T?E?&QqS	  ,(/!HfHTHTHEH&!##J/		0
0 Jtt,- 
13%c$B$i0 		1LAy #D)H%)#A#Y?c3?4T?T?E?u$RT!V##H-(/!HfHTHTHEHu$1Q&&x0		1
1 &-5J#t+%K%.4GL'50DgM cll(HIH >{{#67[[!23
KK 01	++n-)*gccl4&y'4!9E'HAu%IAv)*Auf(=u%>   :&&kkE*V"<=KK%
|4 89	(icPQcARS{{U;-v#>?[[5T!:;
0\:}
GtO= 'IAv'HAu&HAu(IAv%&5&$95!':. h2<C
1.!
O =&&h& 25 91dA 25 91a ;;{m6'BCLu[M%>?J-j-!*< > ''.*4#45D*;<#=& & T{{U;-v#>?[[5T!:;
6!l1o&??D6!jmv&=a=D 1TYQ ?ARST Uz?1;3z!}-&--/ ;$MAq!T$MAq$q"23q4x)9:; #34E-L$) l	E++j\&@AKeJ<t$<=I ;;{m6'BCLu[M%>?J-j-!*< >/(8%+ ($\2 G"f,.<!7Q;5y,sQRsBS/U+  +1~777(5.<'$!d0BD)I(1-//+ - "7Gj,@A %.#+WqA,76E#*HqA,66E$<q%1C1J1J1L%N	$ "  9: %z14DD
>$
2$&#WqA$/6E"HqA$.6E-.5&,A"5) /?@Qm*G$)-9J$K 0!&&02@!%w{D 99lSVUVSVFW3Y/GZ $/q>V#;;#;#,[#9D2@ +dGaK$4F-M ,SqS 133/GZ (614B!%x!|T :J -cc 2541Hk $-\#:D4B ,tX\D5H$.O -cc 2541Hk &.#+WqA,76E#*HqA,66E$<q%1C1J1J1L%N	#+k#9<M#M$$ :;Auf8M.u5 ,z 9A =@P P ')A~ 0J > 0!O0!V %)%1A%58H%H
%>,
:,(9 Yl	\ * a	E++j\&@AKeJ<t$<=I ;;{m6'BCLu[M%>?J-j-!*< >(8%+m+ A%L ($),$7 L"f,.<!<!#3T:I(1-//+  +1~777(5.<'$!d0BD)I(1-//+ - $Wg
.BC %.#+WqA,76E#*HqA,66E$<q%1C1J1J1L%N	$ "  ;< %z14DD
>$
2$-.5&,A"5)*G$)-9J$K +!&&02@!%w{D 99lSVUVSVFW3Y/GZ $-[#9D2@ +dGaK$4F-M ,SqS 133/GZ (614B!%x!|T :J -cc 2541Hk $-\#:D4B ,tX\D5H$.O -cc 2541Hk &.#+WqA,76E#*HqA,66E$<q%1C1J1J1L%N	#+k#9<M#M$$ :;Auf8M.u5!E+!L %)%1A%58H%H
%>,
:,(9 Ca	F U#46G[#35E[#35E[#46G[1{?# q$012q" 3z!}%KH tL)*r 1{?# AtN+,Ar 3z?K0 DO$B %EG(:(@(@(B D$$1eV+A.;;~&*AA'.N8$' 	DD{{VD6?+/FF!$'61+2N4(vdV_-1CC'-t$vdV_-1TT',{{VD6?'Ct$	D	D #u}}%,#/0#u22333.3)9:
yyF$**	
 CGqt!t*M31#6MM4;ADqDMC*0f%C C *,>@QZ#'M
 +88wtQd8N8&cjj*<k3#~/J #))$567OAQ		C'JM'J$JJKJ'N(#	Z!^$ 	#GD!$$Q'
""A	# 
7	7	Z$ 	#GD!$$Q'
""A	# 
N+	+	Z!^n,,$ 	AGD!$$Q'
^33j@@A	A 
O,	,$ 	KGD!$$Q'"TJ.1*<==
JJ	K 
N+	+	Z>A-..$ 	GGD!$$Q'
nq&899JFFA	G % 	#GD!$$Q'
""A	# 		/23MA
zzV JJ/J//0_q G+, 	 ![)Nj/Kz!	[1_! 	 GD!!!!$A	  
5	5	[! 	 GD!!!!$A	  
.)	)	[1_{**! 	<GD!!!!$k11G;;A	< 
/*	*! 	FGD!!!!$aTK;?;;gEE	F 
.)	)	[K!O,,! 	BGD!!!!${Q77'AAA	B J<'NNPQ! 	 GD!!!!$A	  J-ZJ?J~$>??N]+,q0G;< 	 -?,D,D,F 	M(E(Aq%"//33QF;;DU[[)9:;D=
1QtV(<==W$%  ,-33E:Eq512ENN$E E EJ#-a=#4#4U#; #' ,,;;<LbQF(89 !F !F FLFM#5cT>N!'$) E1aAq &153F3F3H%H"%3$'%{5K'K%M!7	M: $'#3#3#9#9#; 	"FQKM!;&K		" !"((7888I;
=> :;;	Z'	(1	,7	8  $' : :& 	S.!+,
-Rs/@/@/B\/QR 1H 5%%lEK4GH!M
99^$/33C8=r5HHa *g5mQ77<TUD#A2uLLz*#T*I zA~.16 	
zzV<J{
$;<<KZ()A-89<GH

 		/23Mcii./KL&t,H.I)& H85071eVu%*..+
1%#-a=#7 !%999$'$7#> # ,Q/)!,{:E3'=M!AeG$<==QY*$% 	 ;Jq6$:;;aZ7"# 	 1a&C$4$44 0 0A 69J JJc&&q!t,/@@@F v% E'!"E&("#E& !E"e&7&7%:L:L&LM0''%*<*<<(()+0+>+>?@ %u':'::2%%(<(<< >5;;/E#F'#Q5#3#33   5#9#99E<M<MMO  5;;~676("(L8Y//{{7#v-#kk..0+0;;|+D+U'+  (1d'CG$\23
 $J9--{{8$.#kk..0,1KK,E,V(,  )2,(EH% ((77R@F$45!,,!,,6HUL*:F>;788:7<3	?O  LU[[)9:;D#'AH
Q,F#$ "II%#%IaL"1	!Q ")U__===?Oc*:&;UV#$+c)2D2D.EEt'MIaLO!M 		!!	!"IaLO8Y//!"5yGIOw'61"3GYe"T	&8Dxj(##D1Ha0 HH##D!, 9--"#79I9IJI')*:*::DXJ&##Atax0==##At,I&Q&&9~6[ 0,Y7HQH8V ,//4TUD92uDD'',,.##L

 
 
.C#u**+78}1)+
yy
** 	!LsK!	!
  =USYY

$;<= //4Iy"e33 ,-Mi.Y="5"92> L,Q/ 	LHAuU[[)9:;D4x-!++t8'9A'==L,B Cw N''e'>q##l2U5E5EE  !#(#9#9:<A<M<MN##$&+&?&?@BGBVBVWYEL %*%8%8%:QT"q6-- A&*:1a4*@CT*TT& %(%u||6J'J%L!)	LL4   	4DAqA"33	4
 	l*S^^;	--	.03	@ J yy'(G3Et4

c''#*A*AACDVDVVV
++C0	9b%//[ 3B @ I @ IV NC 9s8   A|31A|8
*A|>
A}
A}

A}3A}(A}r!   )#__doc__collectionsr   	itertoolsr   r   mathr   css.propertiesr   formatting_structurer	   loggerr
   percentr   r   	preferredr   r   tabler   r   r   r'   r4   rC   rN   rQ   re   rj   rz   r   r   r  r"   r   r   <module>r     ss    0 # "  & (  4 ; (II*&85p/%d$%Pt9r ,0^Bn0r   