ó
    Eñiì  ã                   ó„   • S r SSKrSSKJr  SSKJr  SSKJr  \R                  " S5      r\" S5      r	S r
S rS	 rSS
 jrg)zï
pygments.regexopt
~~~~~~~~~~~~~~~~~

An algorithm that generates optimized regexes for matching long lists of
literal strings.

:copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
é    N)Úescape)Úgroupby)Ú
itemgetterz[\[\^\\\-\]]c                 óˆ   • U (       d  g[        U 5      n[        U 5      n[        U5       H  u  p4XBU   :w  d  M  USU s  $    U$ )zJGiven an iterable of strings, returns the longest common leading substringÚ N)ÚminÚmaxÚ	enumerate)ÚmÚs1Ús2ÚiÚcs        ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pygments/regexopt.pyÚcommonprefixr      sE   € æØÜ	ˆQ‹€BÜ	ˆQ‹€BÜ˜"–‰ˆØ�1‘�:Ø�b�q�6ŠMñ ð €Ió    c                 óZ   • S[         R                  S SR                  U 5      5      -   S-   $ )NÚ[c                 ó(   • SU R                  5       -   $ )NÚ\)Úgroup)r   s    r   Ú<lambda>Úmake_charset.<locals>.<lambda>"   s   € ¨°·±³	Ò)9r   r   Ú])Ú	CS_ESCAPEÚsubÚjoin)Úletterss    r   Úmake_charsetr   !   s'   € Ø”—‘Ñ9¸2¿7¹7À7Ó;KÓLÑLÈsÑRÐRr   c           	      óÒ  ^
^• U=(       a    S=(       d    SnU (       d  gU S   m
[        U 5      S:X  a  U[        T
5      -   U-   $ T
(       d  U[        U SS S5      -   S-   U-   $ [        T
5      S:X  aˆ  / n/ nU  H6  n[        U5      S:X  a  UR                  U5        M%  UR                  U5        M8     [        U5      S:”  a9  U(       a!  U[        US5      -   S-   [	        U5      -   U-   $ U[	        U5      -   U-   $ [        U 5      nU(       a<  [        U5      nU[        U5      -   [        U  Vs/ s H  oUUS PM	     snS5      -   U-   $ U  Vs/ s H
  oUSSS	2   PM     nn[        U5      n	U	(       aB  [        U	5      mU[        [        U4S
 jU  5       5      S5      -   [        U	SSS	2   5      -   U-   $ USR                  S [        U U
4S j5       5       5      -   U-   $ s  snf s  snf )zEReturn a regex that matches any string in the sorted list of strings.Ú)r   r   é   Nz(?:Ú?Ú|éÿÿÿÿc              3   ó.   >#   • U  H
  oS T*  v •  M     g 7f)N© )Ú.0ÚsÚslens     €r   Ú	<genexpr>Ú"regex_opt_inner.<locals>.<genexpr>S   s   øé € Ð$@º°1 v¨¨¥Yºùs   ƒc              3   óR   #   • U  H  n[        [        US    5      S5      v •  M     g7f)r"   r   N)Úregex_opt_innerÚlist)r(   r   s     r   r+   r,   X   s*   é € ð LÚJ�Uô !¤ e¨A¡h£°×4Ð4ÚJùs   ‚%'c                 ó   >• U S   TS   :H  $ )Nr   r'   )r)   Úfirsts    €r   r   Ú!regex_opt_inner.<locals>.<lambda>Y   s   ø€ ¸¸1¹ÀÀqÁÒ9Ir   )	Úlenr   r.   Úappendr   r   Úsortedr   r   )ÚstringsÚ
open_parenÚclose_parenÚ	oneletterÚrestr)   ÚprefixÚplenÚstrings_revÚsuffixr1   r*   s             @@r   r.   r.   %   s  ù€ à×$ ×*¨€KæàØ�A‰J€EÜ
ˆ7ƒ|�qÓàœF 5›MÑ)¨KÑ7Ð7ÞàœO¨G°A°B¨K¸Ó?Ñ?ØñØñ ð 	 ä
ˆ5ƒz�Qƒàˆ	ØˆÛˆAÜ�1‹v˜‹{Ø× Ñ  Ö#à—‘˜A–ñ	 ô
 ˆy‹>˜AÓÞà!¤O°D¸"Ó$=Ñ=ÀÑCÜ" 9Ó-ñ.Ø0;ñ<ð <ð ¤¨YÓ 7Ñ7¸+ÑEÐEÜ˜'Ó"€FÞÜ�6‹{ˆð œF 6›NÑ*Ü±Ó9²¨A  ›x±Ñ9¸5ÓAñBàñð 	ñ %,Ó,¢G˜q‘T�r�T”7¡G€KÐ,Ü˜+Ó&€FÞÜ�6‹{ˆàÜœfÔ$@¹Ó$@Ó@À%ÓHñIä�V™D˜b˜D‘\Ó"ñ#à%0ñ1ð 	1ð
 Ø�‰ñ LÜ% gÔ/IÔJóLó 	LñLð ñð ùò :ùò -s   Ä-G
ÅG$c                 ó<   • [        U 5      n U[        U S5      -   U-   $ )zÝReturn a compiled regex that matches any string in the given list.

The strings to match must be literal strings, not regexes.  They will be
regex-escaped.

*prefix* and *suffix* are pre- and appended to the final regex.
Ú()r5   r.   )r6   r;   r>   s      r   Ú	regex_optrA   ]   s$   € ô �W‹o€GØ”O G¨SÓ1Ñ1°FÑ:Ð:r   )r   r   )Ú__doc__Úrer   Ú	itertoolsr   Úoperatorr   Úcompiler   ÚFIRST_ELEMENTr   r   r.   rA   r'   r   r   Ú<module>rH      sE   ðñ	ó 
Ý Ý Ý à�JŠJ�Ó'€	Ù˜1“€ò	òSò5õp	;r   