
    ?wg                     X    d dl Z ddlmZmZ d Zd Zd Zd Z e j                  d      Z	y)	    N   )_next_significant_to_token_iteratorc           	         t        | d      }t        |      }|y|j                  }|dk(  r#|j                  rt	        |d|j
                        S |dk(  r|j                  r|j                  }|dk(  rt        ||j
                        S |dk(  rt        ||j
                  d	      S t        j                  |      }|r/t	        ||j
                  t        |j                  d
                  S y|dk(  r|j                  }|dk(  rt	        |dd      S |dk(  rt	        |dd
      S |dk(  rt        |d
      S |dk(  rt        |d	      S |dk(  rt        |d
d	      S |dk(  rt        |d	d	      S |d   dk(  r?t        j                  |d
d       }|rbt	        |d	t        |j                  d
                  S t        j                  |      }|r%t	        |d
t        |j                  d
                  S yy|dk(  rt        |      }|j                  dk(  rl|j                  }|dk(  rt        |d
      S |dk(  rt        |d
d	      S t        j                  |      }|r%t	        |d
t        |j                  d
                  S yyy)aF  Parse `<An+B> <https://drafts.csswg.org/css-syntax-3/#anb>`_,
    as found in `:nth-child()
    <https://drafts.csswg.org/selectors/#nth-child-pseudo>`_
    and related Selector pseudo-classes.

    Although tinycss2 does not include a full Selector parser,
    this bit of syntax is included as it is particularly tricky to define
    on top of a CSS tokenizer.

    :type input: :obj:`str` or :term:`iterable`
    :param input: A string or an iterable of :term:`component values`.
    :returns:
        A ``(a, b)`` tuple of integers, or :obj:`None` if the input is invalid.

    T)skip_commentsNnumberr   	dimensionnzn-r   identeven   oddz-nz-n--+)r   r   type
is_integer	parse_end	int_value
lower_unitparse_bparse_signless_bN_DASH_DIGITS_REmatchintgrouplower_valuenext)inputtokenstoken
token_typeunitr   r   s          C/var/www/horilla/myenv/lib/python3.12/site-packages/tinycss2/nth.py	parse_nthr%      sp      T:Ff%E}JX%"2"2EOO44	{	"u'7'73;65??33T\#FEOOR@@$**40E #ekk!n:MNN 	w	!!F?VQ**e^VQ**c\61%%d]62&&d]#FAr22e^#FB331X_$**595E SQ-@AA$**51E CA,?@@ 	  
#V:: %%E|vq))$'266(..u5$VQEKKN0CDD  ! 
    c                     t        |       }||dfS |dk(  rt        | |d      S |dk(  rt        | |d      S |j                  dk(  r6|j                  r)|j                  d   dv rt        | ||j                        S y y y )Nr   r   r   r   r   r   -+)r   r   r   r   representationr   r   )r    ar!   s      r$   r   r   K   s    f%E}1v	#1--	#2..
**
 U%5%5


q
!T
)EOO44 * &6
 r&   c                     t        |       }|j                  dk(  r9|j                  r,|j                  d   dvrt	        | |||j
                  z        S y y y )Nr   r   r(   )r   r   r   r)   r   r   )r    r*   b_signr!   s       r$   r   r   X   sX    f%E

h5#3#3  #4/FU__$<== 0 $4r&   c                 "    t        |       ||fS y )N)r   )r    r*   bs      r$   r   r   _   s     (1v )r&   z^n(-[0-9]+)$)
reparserr   r   r%   r   r   r   compiler    r&   r$   <module>r3      s5    	 9BEJ
5>
 2::n- r&   