
    3vjk                        d 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
 ddlmZmZ d	d
lmZ d	dlmZmZmZ d	dlmZmZmZ dD  ci c]  \  } }| ed   |z   c}} Zd	dddZed   ed   k(  sJ dddddddddd	dddddddddd	dZdD ci c]  \  }}}}| e||       e||      f c}}}}Z ed ej;                         D              sJ ed   Z ed eD              ed<   i Z ddZ! e!d d!"      d#        Z" e!d$d%"       e!d$d&d'(      d)               Z# e!d*d&d+(      d,        Z$i Z%d- Z&d. Z' e&d/      d0        Z( e&d1      d2        Z) e&d3       e&d4       e&d5       e&d6       e&d7       e&d8       e&d9       e&d:       e&d;      d<                                                                Z* e&d=       e&d>      d?               Z+ e&d@      dA        Z, e&dB       e&d       e&dC      dD                      Z- e&dE       e&dF      dG               Z. e&dH       e&dI       e&dJ       e&dK       e&dL       e&dM       e&dN       e&dO       e&dP       e&dQ       e&dR       e&dS       e&dT       e&dU       e&dV       e&dW       e&dX       e&dY       e&dZ       e&d[       e&d\       e&d]       e&d^       e&d_       e&d`       e&da       e&db       e&dc       e&dd      ddf                                                                                                                                                                                                           Z/ e&dg       e&dh       e&di       e&dj      dk                             Z0 e&dl      dm        Z1 e&dn      do        Z2 e&dp      dq        Z3 e&dr       e&ds       e&dt       e&du       e&dv       e&dw      dx                                           Z4 e&dy       e&dz      d{               Z5 e&d|       e&d}      d~               Z6 e&d       e&d      d               Z7 e&d       e&d      d               Z8 e&d       e&d      d               Z9 e&d       e&d       e&d       e&d      d                             Z: e&d       e&d      d               Z;d Z< e&d      d        Z= e&d      d        Z> e&d      d        Z? e&d      d        Z@ e&d      d        ZA e&d      d        ZB e&d      d        ZCd ZDd ZE e&d       e&d      d               ZF e&d       e&d      d               ZG e&d      d        ZH e&d      d        ZI e&d      d        ZJ e&d      d        ZK e&d      d        ZL e&d      d        ZM e&d      d        ZN e&d      d        ZOyec c}} w c c}}}}w )z7Convert specified property values into computed values.    )partial)piparse_color   )LOGGER)strut)get_link_attributeget_url_tuple   )
check_math)INITIAL_VALUESZERO_PIXELS	Dimension)ANGLE_TO_RADIANSLENGTH_UNITS	to_pixels))zxx-smallg333333?)zx-smallg      ?)smallgqq?)mediumr   )large333333?)zx-largeg      ?)zxx-larger   	font_size      )thinr   thickborder_top_widthr         )	d      i,  r     iX  r   i   r    r!   bolderlighter)/)a10   %   mm)a9r)   4   r*   )a8r,   J   r*   )a7r.   i   r*   )a6r0      r*   )a5r2      r*   )a4r4   )  r*   )a3r6     r*   )a2r8   R  r*   )a1r:   I  r*   )a0r<   i  r*   )b10   ,   r*   )b9r@   >   r*   )b8rB   X   r*   )b7rD   }   r*   )b6rF      r*   )b5rH      r*   )b4rJ   a  r*   )b3rL   r#   r*   )b2r#     r*   )b1rO     r*   )b0rQ   i  r*   )c10   (   r*   )c9rU   9   r*   )c8rW   Q   r*   )c7rY   r   r*   )c6r[      r*   )c5r]      r*   )c4r_   D  r*   )c3ra     r*   )c2rc     r*   )c1re     r*   )c0rg   i  r*   )zjis-b10    -   r*   )zjis-b9rj   @   r*   )zjis-b8rk   [   r*   )zjis-b7rl      r*   )zjis-b6rm      r*   )zjis-b5rn     r*   )zjis-b4ro   l  r*   )zjis-b3rp     r*   )zjis-b2rq     r*   )zjis-b1rr     r*   )zjis-b0rs   i  r*   )letter      !@   in)legalru      rw   )ledgerrv      rw   c              #   T   K   | ]   \  }}|j                   |j                   k   " y wN)value).0widthheights      Q/root/.hermes/venv/lib/python3.12/site-packages/weasyprint/css/computed_values.py	<genexpr>r   y   s!     
O-%5;;%
Os   &(r5   c              #   6   K   | ]  }t        |d d        y w)Nsize)r   )r   r   s     r   r   r   |   s       A&*IdD&!As   r   c                       fd}|S )zEDecorator registering logical properties matching physical ``names``.c           	          D ]L  }|j                  dd      }D ]3  }D ],  }|}|r| d| }|r| d| }t        | |||      t        |<   . 5 N | S )z3Register the properties ``names`` for ``function``.-_)nameprefixsuffix)replacer   PHYSICAL_FUNCTIONS)functionr   r   r   property_namenamesprefixessuffixess        r   	decoratorz#register_logical.<locals>.decorator   s     
	KD<<S)D" K& KF$(M+1(!M?(C+8/6((C8? tF69K&}5KK
	K      )r   r   r   r   s   ``` r   register_logicalr      s     r   )r   r   ) maxmin)r   c                 B    |dv }d| v }||k(  rdnd}|r| d| dS | dS )Nttbbttr   blockinliner   _sizer   )r   r   r   r   r   vertical_main_directionvertical_propertylogicals           r   physical_sizer      sH    #~5 D(+/FFgXG)/fXQwiu%Fy5FFr   )topleftbottomright)r   paddingmargin)border)r   stylecolor)r   r   c                     | dk(  r|dv rdnd}d||fv rdnd}nG| dk(  r|dv rdnd}d	||fv rdnd}n/| d
k(  r|dv rdnd}d||fv rdnd}n| dk(  r|dv rdnd}d||fv rdnd}|xs d d}|rd| }|  d | S )Nr   r   r   r   r   startendr   r   r   )ltrrtlr   r   r   insetr   r   )r   r   r   r   r   r   sides          r   physical_insetr      s     u}"n4'(E6?2w		"n4'(E6?2w	"n4'(E6?2w	"n4'(E6?2w!'"!$FVHXgYavfX..r   )top_left	top_rightbottom_leftbottom_right)radiusc                 0   | j                  d      \  }}|dk(  r
|dk(  rdnd}n,|dk(  r
|dk(  rdnd}n|dk(  r
|d	k(  rdnd}n|d
k(  r	|dk(  rdnd}|dk(  r
|dk(  rdnd}n,|dk(  r
|dk(  rdnd}n|dk(  r
|d	k(  rdnd}n|d
k(  r	|dk(  rdnd}| d| d| d| S )Nr   r   r   r   r   r   r   r   r   r   r   )split)r   r   r   r   r   vertical
horizontals          r   physical_radiusr      s      ::c?Hj~#u,%	%#x/U	%%/U	%%0e$-5	5$0e	5&&0e	5&'1uXQugQvhax00r   c                 6      j                  dd        fd}|S )z9Decorator registering a property ``name`` for a function.r   r   c                     | t         <   | S )z0Register the property ``name`` for ``function``.)COMPUTER_FUNCTIONS)r   r   s    r   r   z$register_computer.<locals>.decorator   s    #+4 r   )r   )r   r   s   ` r   register_computerr      s     <<S!D r   c                    |\  }}|dk(  sJ |\  }}}	 | j                   j                  ||      }|dk(  rn|dk(  rt        || j                        }n|dk(  rt	        |j                         | d         }n|dk(  rt        |j                               }n|dk(  rt        |j                               }n|dk(  r&t        t        |j                               d      }d	}n]|t        v r&t        t        |j                               |      }d	}n/|t        v r&t        t        |j                               |      }d
}ny ||fS # t        $ r Y y w xY w)Nattr()stringurlr   color_schemeintegernumber%lengthangle)elementgetr   base_urlr   stripintfloatr   r   r   	Exception)r   values	func_namer~   	attr_nametype_or_unitfallback
attr_values           r   compute_attrr      sX    Iu   (-%I|X]]&&y(;
8#U"&z5>>BJW$$Z%5%5%7~9NOJY&Z--/0JX%z//12JS "5)9)9);#<cBJ#L\)"5)9)9);#<lKJ#L--"5)9)9);#<lKJ"L *%%  s   D'E   	EEzbackground-imagec                 0     t         fd|D              S )z-Compute lenghts in gradient background-image.c              3   8   K   | ]  }t        |        y wr}   )imager   r~   r   r   s     r   r   z#background_image.<locals>.<genexpr>  s     ?uudE*?   tupler   r   r   s   `` r   background_imager     s     ????r   zborder-image-sourcec                 J    |\  }}|dv rHt         fd|j                  D              |_        t         fd|j                  D              |_        |dk(  rJt         |j                  f      \  |_        |j
                  dk(  rt         |j                        |_        |S )z0Compute lenghts in gradient border-image-source.)zlinear-gradientradial-gradientc              3   @   K   | ]  }|t        |      nd   y wr}   r   )r   posr   r   s     r   r   zimage.<locals>.<genexpr>  s+      %- ),F5$$TA%-   c              3   @   K   | ]  }|t        |      nd   y wr}   r   )r   hintr   r   s     r   r   zimage.<locals>.<genexpr>  s,      "+ *.)9F5$%tC"+r   r   explicit)r   stop_positionscolor_hintscompute_positioncenter	size_typelength_or_percentage_tupler   )r   r   r   type_r~   s   ``   r   r   r     s     LE566$ %-++%-  - " "+))"+ + !!(u||oF??j(3E4LEJLr   r   zbackground-colorzborder-top-colorzborder-right-colorzborder-bottom-colorzborder-left-colorzcolumn-rule-colorzoutline-colorztext-decoration-colorc                      t        || d         S )Nr   r   r   s      r   r   r     s     vu^455r   zbackground-positionzobject-positionc                 0     t         fd|D              S )z'Compute lengths in background-position.c           	   3   `   K   | ]%  \  }}}}|t        |      |t        |      f ' y wr}   r   )r   origin_xpos_xorigin_ypos_yr   r   s        r   r   z#compute_position.<locals>.<genexpr>+  sA      8 -HeXu 
6%u-	6%u-	/8s   +.r   r   s   `` r   r   r   '  s!      8 178 8 8r   ztransform-originc                 0     t         fd|D              S )z5Compute the lists of lengths that can be percentages.c              3   8   K   | ]  }t        |        y wr}   r   r   s     r   r   z-length_or_percentage_tuple.<locals>.<genexpr>4       @tU+@r   r   r   s   `` r   r   r   1  s     @@@@r   zborder-spacingclipc                 0     t         fd|D              S )z.Compute the properties with a list of lengths.c              3   <   K   | ]  }t        |d         yw)Tpixels_onlyNr   r   s     r   r   zlength_tuple.<locals>.<genexpr><  s     R%tU==Rs   r   r   s   `` r   length_tupler  7  s    
 R6RRRr   zbreak-afterzbreak-beforec                     |dk(  rdS |S )z<Compute the ``break-before`` and ``break-after`` properties.alwayspager   r   r   r~   s      r   break_before_afterr
  ?  s     h&61E1r   r   r   r   r   z
margin-topzmargin-rightzmargin-bottomzmargin-leftr   r   z
block-sizezinline-sizez	min-widthz
min-heightzmin-block-sizezmin-inline-sizez	max-widthz
max-heightzmax-block-sizezmax-inline-sizezpadding-topzpadding-rightzpadding-bottomzpadding-leftztext-indentzhyphenate-limit-zonez
flex-basisztext-underline-offsetztext-decoration-thicknessNc                     |dv st        |      r|S |j                  dk(  r
|rdS t        S |j                  t        vr|S t        || ||      }|r|S t        |d      S )zCompute a length ``value``.)autocontentz	from-fontr   px)r   r~   r   unitr   r   r   )r   r   r~   r   r  pixelss         r   r   r   F  sg    > 00Ju4E		q0[0	<	'ueT95F 6=i&==r   z
bleed-leftzbleed-rightz	bleed-topzbleed-bottomc                 Z    |dk(  rt        d| d   v rdd      S dd      S t        | ||      S )Nr  cropmarks   r   r  )r   r   r	  s      r   bleedr  q  s<    
 fg6tDDAtDD%u%%r   zletter-spacingc                 .    |dk(  r|S t        | ||d      S )NnormalTr  r   r	  s      r   pixel_lengthr  {  s     %u$77r   zbackground-sizec                 0     t         fd|D              S )z+Compute the ``background-size`` properties.c              3   D   K   | ]  }|d v r|nt        |        yw))containcoverN)r   r   s     r   r   z"background_size.<locals>.<genexpr>  s4        .."5$6	7s    r   r   s   `` r   background_sizer    s!         r   zimage-orientationc                 R    |dv r|S |\  }}t        |t        z  dz        dz  dz  |fS )z-Compute the ``image-orientation`` properties.)nonez
from-imager      Z   )roundr   )r   r   r   r   flips        r   image_orientationr$    s=     ''KE4%"*q.!A%*D11r   zborder-top-widthzborder-right-widthzborder-left-widthzborder-bottom-widthzcolumn-rule-widthzoutline-widthc                     | |j                  dd         }|dv ry|t        v r	t        |   S t        |t              r|S t	        | ||d      S )z*Compute the ``border-*-width`` properties.r   r   )r  hiddenr   Tr  )r   BORDER_WIDTH_KEYWORDS
isinstancer   r   )r   r   r~   border_styles       r   border_widthr*    s[     gw78L))%%$U++% %u$77r   zborder-image-slicezmask-border-slicec                 2   g }d}|D ]>  }|dk(  r|}|\  }}||j                  |       $|j                  t        |d             @ t        |      dk(  r|dz  }n6t        |      dk(  r|dz  }n"t        |      dk(  r|j                  |d          g ||S )z,Compute the ``border-image-slice`` property.Nfillr   r   r   r   r   )appendr   len)r   r   r   computed_valuesr,  r~   r   r  s           r   border_image_slicer0    s     OD ?F?D LFD|&&v.&&y'=>? ?q 1	_		"1	_		"q12#_#d##r   zborder-image-widthzmask-border-widthc                 H   g }|D ]3  }|dk(  r|j                  |       |\  }}|j                  ||n|       5 t        |      dk(  r|dz  }t        |      S t        |      dk(  r|dz  }t        |      S t        |      dk(  r|j                  |d          t        |      S )z,Compute the ``border-image-width`` property.r  r   r   r   r   )r-  r.  r   )r   r   r   r/  r~   r   r  s          r   border_image_widthr2    s     O FF?""5) LFD""T\6uEF ?q 1
 !!	 
_		"1 !! 
_		"q12!!r   zborder-image-outsetzmask-border-outsetc                 B   |D cg c]'  }t        |t        t        f      r|nt        | ||      ) }}t	        |      dk(  r|dz  }t        |      S t	        |      dk(  r|dz  }t        |      S t	        |      dk(  r|j                  |d          t        |      S c c}w )z-Compute the ``border-image-outset`` property.r   r   r   r   )r(  r   r   r   r.  r-  r   )r   r   r   r~   r/  s        r   border_image_outsetr4    s      EC<0fUD%6PPO  ?q 1
 !!	 
_		"1 !! 
_		"q12!!s   ,Bzborder-image-repeatzmask-border-repeatc                 ,    t        |      dk(  r|dz  S |S )z-Compute the ``border-image-repeat`` property.r   r   )r.  r   s      r   border_image_repeatr6    s     v;!+FQJ77r   zcolumn-widthzoutline-offsetc                      t        | ||d      S )z Compute a pixel length property.Tr  r   r	  s      r   length_pixels_onlyr8    s     %u$77r   zborder-top-left-radiuszborder-top-right-radiuszborder-bottom-left-radiuszborder-bottom-right-radiusc                 0     t         fd|D              S )z+Compute the ``border-*-radius`` properties.c              3   8   K   | ]  }t        |        y wr}   r   r   s     r   r   z border_radius.<locals>.<genexpr>  r   r   r   r   s   `` r   border_radiusr;    s     @@@@r   z
column-gapzrow-gapc                 *    |dk(  r|S t        | ||      S )z!Compute the ``*-gap`` properties.r  r   r	  s      r   gapr=    s     X%5E6%u+EEr   c           
         g }|D ]  }|d   dv r|}nh|d   dk(  r|d   d   dk(  sJ t        | |      }nF|d   dv r|}n<|d   dv r5|d   d   }|d   dk(  r#t        | |      }|d }n|d   |g|d   dd  f}n|}<t        j                  d| j                  d	d
j	                  d |D                     |j                  |        t        |      S )Nr   )r   r  r   quotezleader()r   r   r   )z	counter()z
counters()z	content()z	element()zstring())ztarget-counter()ztarget-counters()ztarget-text()zUnable to compute z value for content: z, c              3   2   K   | ]  }t        |        y wr}   )str)r   items     r   r   z _content_list.<locals>.<genexpr>!  s     (EtT(Es   )r   r   warningr   joinr-  r   )r   r   r/  r~   computed_valueanchor_tokenattrs          r   _content_listrH    s#   O 38HH"N1X!8A;(***)%7N1X   #N1X J J 8A;LA(*#E<8<%)N&+Ah0Ea0E%FN!&!NNtyy(Eu(EEG H "">293< !!r   zbookmark-labelc                     t        | |      S )z(Compute the ``bookmark-label`` property.rH  r   s      r   bookmark_labelrK  (  s     ''r   z
string-setc                 ,     t         fd|D              S )z$Compute the ``string-set`` property.c              3   F   K   | ]  }|d    t        |d         f  yw)r   r   NrJ  )r   
string_setr   s     r   r   zstring_set.<locals>.<genexpr>2  s-      " 
AeZ];<"s   !r   r   s   `  r   rN  rN  .  s      " " " "r   r  c                 t    t        |      dk(  r|\  }|dk(  r| j                  rdS dS |dk(  ryt        | |      S )z!Compute the ``content`` property.r   r  inhibitcontentsr  )r.  pseudo_typerH  )r   r   r   r~   s       r   r  r  7  sI     6{aH % 1 19AzAf_''r   displayc                     | j                   d   }| j                   d   }|dv s|dk7  s| j                  r7|dk(  ryt        |      dk(  r|d   j                  d	      ry
|d   dk(  rd|v ryy
|S )z!Compute the ``display`` property.r   positionabsolutefixedr  )zinline-table)r   tabler   r   ztable-)r   flowr   	list-item)r   rZ  r[  )	specifiedis_root_elementr.  
startswith)r   r   r~   float_rU  s        r   rS  rS  C  s     __W%Fz*H((Ff,<@U@U%%%Z1_q!4!4X!>$1X!e#5(Lr   r   c                 >    | j                   d   }|dv s|d   dk(  ry|S )zCompute the ``float`` property.rU  rV  r   z	running()r  )r\  )r   r   r~   rU  s       r   compute_floatra  V  s.     z*H((HQK;,Fr   z	font-sizec                    |t         v r	t         |   S t        t         j                               }| j                  
t        d   }n| j                  d   }|dk(  r$t        |      D ]  \  }}||kD  s||   c S  |dz  S |dk(  r.t        |ddd         D ]  \  }}||k  s|| dz
     c S  |dz  S t        |t              r!|j                  d	k(  r|j                  |z  d
z  S t        | ||d|      S )z#Compute the ``font-size`` property.Nr   largerr   smallerr   g?r   r!   T)r  r   )FONT_SIZE_KEYWORDSlistr   parent_styler   	enumerater(  r   r  r~   r   )r   r   r~   keyword_valuesparent_font_sizeikeyword_values          r   r   r   a  s*    ""!%((,3356N!)+6 --k: ). 9 	*A}//%a((	* $c))	)	 ).2*> ? 	*A}//%qb1f--	* $c))	E9	%%***;{{--334D&( 	(r   zfont-weightc                     |dk(  ry|dk(  ry|dv r1| j                   
t        d   }n| j                   d   }t        |   |   S |S )z%Compute the ``font-weight`` property.r  r   boldr   r$   font_weight)rh  r   FONT_WEIGHT_RELATIVE)r   r   r~   parent_values       r   rp  rp    s]     	&	'	'%)-8L --m<L#E*<88r   c                     |dv r|S t        |t              r8|j                  r|j                  j                         dk(  r|S t	        | ||      S y)zCompute track breadth.)r  zmin-contentzmax-contentfrN)r(  r   r  lowerr   r	  s      r   _compute_track_breadthrv    sN    66	E9	%::%****,4L%u--	 
&r   c                    g }t        |      D ]  \  }}|dz  dk(  r|j                  |        t        | ||      }|r|j                  |       A|d   dk(  r1|j                  dt        | ||d         t        | ||d         f       z|d   dk(  r"|j                  dt        | ||d         f       |d   dk(  s|j                  d|d   t	        | ||d         f        t        |      S )zCompute track size.r   r   minmax()r   fit-content()zrepeat())ri  r-  rv  r   _track_sizer   )r   r   r   return_valuesrl  r~   track_breadths          r   rz  rz    s   Mf% O5q5A:  ' 35$FM$$]3qZ'$$*5$aA*5$aA&C D q_,$$#VE4q%B&D EqZ'$$a+eT58*L&N O%O( r   zgrid-template-columnszgrid-template-rowsc                 :    |dk(  s|d   dk(  r|S t        | ||      S )z+Compute the ``grid-template-*`` properties.r  r   subgrid)rz  r   s      r   grid_templater    s+     6!9	15$//r   zgrid-auto-columnszgrid-auto-rowsc                 J   g }|D ]  }t        | ||      }|r|j                  |       $|d   dk(  r9|j                  dt        | ||d   g      d   t        | ||d   g      d   f       e|d   dk(  sn|j                  dt        | ||d   g      d   f        t        |      S )z'Compute the ``grid-auto-*`` properties.r   rx  r   r   ry  )rv  r-  	grid_autor   )r   r   r   r{  r~   r|  s         r   r  r    s     M 
I.udEB  /1X#  IeTE!H:>qA%az215"7 8 1X(  5$q
!CA!F"H I
I r   zline-heightc                     |dk(  r|S |j                   sd|j                  fS |j                   dk(  r|j                  dz  }| d   }||z  }d|fS t        | ||d      }d|fS )	z%Compute the ``line-height`` property.r  NUMBERr   r!   r   Tr  PIXELS)r  r~   r   )r   r   r~   factorfont_size_valuer  s         r   line_heightr    s     ZZ%++&&	s	s",/) f tU=fr   anchorc                 Z    |dk7  r&|\  }}| j                   j                  |      xs d}|S y)z Compute the ``anchor`` property.r  Nr   r   )r   r   r   r   keyanchor_names         r   r  r    s9     3mm'',4 r   linkc                 h    |dk(  ry|\  }}|dk(  r!t        | j                  || j                        S |S )zCompute the ``link`` property.r  Nr   )r
   r   r   )r   r   r   r   r~   s        r   r  r    s<     LE5!%--GGMr   langc                 p    |dk(  ry|\  }}|dk(  r| j                   j                  |      xs dS |dk(  r|S y)zCompute the ``lang`` property.r  Nr   r   r  )r   r   r   r  s       r   r  r    sL     ID#x}}  %--		
 
r   ztab-sizec                 @    t        |t              r|S t        | ||      S )z"Compute the ``tab-size`` property.)r(  r   r   r	  s      r   tab_sizer    s!     uc*5JudE0JJr   	transformc                 z    g }|D ]*  \  }}|dk(  rt        | ||      }|j                  ||f       , t        |      S )z#Compute the ``transform`` property.	translate)r   r-  r   )r   r   r~   resultr   argss         r   r  r  
  sO     F (${"-eT4@Dx&'( =r   zvertical-alignc                     |dv r|S |dk(  r| d   dz  S |dk(  r| d   dz  S t        |      r|S |j                  dk(  r t        |       \  }}||j                  z  dz  S t	        | ||d	
      S )z(Compute the ``vertical-align`` property.)baselinemiddleztext-topztext-bottomr   r   superr   g      ?subg      r   r!   Tr  )r   r  r	   r~   r   )r   r   r~   r   r   s        r   vertical_alignr    s    
 RR	'	[!C''	%[!D((	E		s	%L	#c))eT5d;;r   zword-spacingc                 .    |dk(  rdS t        | ||d      S )z&Compute the ``word-spacing`` property.r  r   Tr  r   r	  s      r   word_spacingr  )  s!     !1SveT5d'SSr   )r   r  )NF)P__doc__	functoolsr   mathr   tinycss2.color5r   loggerr   text.line_breakr	   urlsr
   r   	functionsr   
propertiesr   r   r   unitsr   r   r   rf  r'  rq  
PAGE_SIZESallr   INITIAL_PAGE_SIZEr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r   r  r  r  r$  r*  r0  r2  r4  r6  r8  r;  r=  rH  rK  rN  r  rS  ra  r   rp  rv  rz  r  r  r  r  r  r  r  r  r  r  )r   r  	page_sizer   r   r  s   000000r   <module>r     s   =   '  # 4 ! > > < < 	f 	.
%
.. "  
 ()-B8-LL LL
 
 
 80+3 3&	5&$ 	%&	&$(?@@3
j 
O:;L;L;N
OO OOt$  A.?A Av 
  ( %0BCG DG &&( &#>@/@(/& <;0101,  &D %&@ '@
 () *" 7%&%&'(()&'&'?#*+6 , $ ( ( * ) ' ' 6 ()$%8 & *8 %&A 'A
 #$66S   %S
 =!>"2 # "2
 5768< >"?#=!87< =!;< #$$%;< #$$%=!?##$>"=!)*< *+./> 0 , ! + " # % $ " & % !   & % !   " !   " $ # !    :> < =!;>"& #   " !& #$8 %8 $% & &'2 (2 %&'(&'()&'?#8 $ ( * ( ) '8" '(&'$ ( )$, '(&'" ( )"$ ()'(" ) *" ()'(8 ) *8
 >"#$8 % #8
 +,,-.//0A 1 0 . -A
 < 9F  !F
 "F #$( %(
 < " !" 9( ( 9 $ 7  ;(  (> =! " . 4 *+'(0 ) ,0 &'#$  % ( " =! " 8  6  6  :K K
 ;   #$< %<& >"T #Tqd3s   WW
