Ë
    ÁjœG  ã                  ó¢  — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZ ddlmZ dd	lmZ dd
lZdd
lZdd
lZddlmZ dd
lmc mZ ddlmZmZmZmZ erddlmZ d"d#d„Zd$d„Z  ejB                  d«      Z"d%d„Z# e
d«      d&d„«       Z$ e
d«      d'd(d„«       Z%d)d„Z&d)d„Z'd)d„Z(d*d„Z)d+d„Z*d,d„Z+d„ Z, G d„ de«      Z- G d„ d e«      Z.d!„ Z/y
)-z‹
Add table of contents support to Python-Markdown.

See the [documentation](https://Python-Markdown.github.io/extensions/toc)
for details.
é    )Úannotationsé   )Ú	Extensioné   )ÚTreeprocessor)ÚparseBoolValueÚAMP_SUBSTITUTEÚ
deprecatedÚHTML_PLACEHOLDER_REÚAtomicString)ÚUnescapeTreeprocessor)ÚRE_AMPN)Údeepcopy)ÚTYPE_CHECKINGÚAnyÚIteratorÚ
MutableSet)ÚMarkdownc                ó&  — |s7t        j                  d| «      } | j                  dd«      j                  d«      } t	        j
                  dd| «      j                  «       j                  «       } t	        j
                  dj                  |«      || «      S )z, Slugify a string, to make it URL friendly. ÚNFKDÚasciiÚignorez[^\w\s-]Ú z[{}\s]+)	ÚunicodedataÚ	normalizeÚencodeÚdecodeÚreÚsubÚstripÚlowerÚformat)ÚvalueÚ	separatorÚunicodes      úJ/var/www/html/venv/lib/python3.12/site-packages/markdown/extensions/toc.pyÚslugifyr'   &   st   € áä×%Ñ% f¨eÓ4ˆØ—‘˜W hÓ/×6Ñ6°wÓ?ˆÜ�F‰F�;  EÓ*×0Ñ0Ó2×8Ñ8Ó:€EÜ�6‰6�*×#Ñ# IÓ.°	¸5ÓAÐAó    c                ó   — t        | |d¬«      S )zP Slugify a string, to make it URL friendly while preserving Unicode characters. T)r%   )r'   )r#   r$   s     r&   Úslugify_unicoder*   0   s   € ä�5˜)¨TÔ2Ð2r(   z^(.*)_([0-9]+)$c                óä   — | |v s| sXt         j                  | «      }|r2d|j                  d«      t        |j                  d«      «      dz   fz  } nd| dfz  } | |v rŒU| sŒX|j	                  | «       | S )z@ Ensure id is unique in set of ids. Append '_1', '_2'... if not z%s_%dr   r   )Ú
IDCOUNT_REÚmatchÚgroupÚintÚadd)ÚidÚidsÚms      r&   Úuniquer4   8   sq   € à
�‰)™2Ü×Ñ˜RÓ ˆÙØ˜AŸG™G A›J¬¨A¯G©G°A«J«¸Ñ(9Ð:Ñ:‰Bà˜B ˜7Ñ"ˆBð �Š)š2ð ‡G�GˆB„KØ€Ir(   z0Use `render_inner_html` and `striptags` instead.c                óú   — g }| j                  «       D ]H  }t        |t        «      r%|j                  t	        j
                  |«      «       Œ8|j                  |«       ŒJ dj                  |«      j                  «       S )zGet title name.r   )ÚitertextÚ
isinstancer   ÚappendÚhtmlÚunescapeÚjoinr    )ÚelÚtextÚcs      r&   Úget_namer?   D   s\   € ð €DØ�[‰[Ž]ˆÜ�aœÔ&Ø�K‰KœŸ™ aÓ(Õ)à�K‰K˜�Nð	 ð
 �7‰7�4‹=×ÑÓ Ð r(   zIUse `run_postprocessors`, `render_inner_html` and/or `striptags` instead.c                ó@   ‡‡— dˆˆfd„}t        j                  || «      S )zN Extract raw HTML from stash, reduce to plain text and swap with placeholder. c                ó  •— 	 ‰j                   j                  t        | j                  d«      «         }t        j                  dd|«      }‰rt        j                  dd|«      }|S # t        t
        f$ r | j                  d«      cY S w xY w)z& Substitute raw html with plain text. r   r   z	(<[^>]+>)r   z(&[\#a-zA-Z0-9]+;))Ú	htmlStashÚrawHtmlBlocksr/   r.   Ú
IndexErrorÚ	TypeErrorr   r   )r3   ÚrawÚresÚmdÚstrip_entitiess      €€r&   Ú	_html_subz#stashedHTML2text.<locals>._html_subT   s{   ø€ ð	Ø—,‘,×,Ñ,¬S°·±¸³«_Ñ=ˆCô �f‰f�\ 2 sÓ+ˆÙÜ—&‘&Ð.°°CÓ8ˆCØˆ
øô œIÐ&ò 	Ø—7‘7˜1“:Òð	ús   ƒ1A& Á& B	ÂB	)r3   zre.Match[str]ÚreturnÚstr)r   r   )r=   rH   rI   rJ   s    `` r&   ÚstashedHTML2textrM   Q   s   ù€ ö
ô ×"Ñ" 9¨dÓ3Ð3r(   c                ó8   — t        «       }|j                  | «      S )z+ Unescape Markdown backslash escaped text. )r   r:   )r=   r>   s     r&   r:   r:   c   s   € äÓ€AØ�:‰:�dÓÐr(   c                óì  — | j                  d«      x}dk7  rT| j                  d|«      x}dk7  r=| d| › | |dz   d › �} | j                  d«      x}dk7  r| j                  d|«      x}dk7  rŒ=| j                  d«      x}dk7  rT| j                  d|«      x}dk7  r=| d| › | |dz   d › �} | j                  d«      x}dk7  r| j                  d|«      x}dk7  rŒ=d	j                  | j                  «       «      } | S )
zL Strip HTML tags and return plain text. Note: HTML entities are unaffected. z<!--éÿÿÿÿz-->Né   Ú<Ú>r   Ú )Úfindr;   Úsplit)r=   ÚstartÚends      r&   Ú
strip_tagsrY   i   s  € ð —I‘I˜fÓ%Ð%ˆ5¨"Ò
,¸¿¹À5È%Ó9PÐ2P°#ÐUWÒ1WØ�v˜�,�  S¨1¡W X Ð/Ð0ˆð —I‘I˜fÓ%Ð%ˆ5¨"Ò
,¸¿¹À5È%Ó9PÐ2P°#ÐUWÓ1Wð —I‘I˜c“NÐ"ˆ5 rÒ
)°d·i±iÀÀUÓ6KÐ/K¨sÐPRÒ.RØ�v˜�,�  S¨1¡W X Ð/Ð0ˆð —I‘I˜c“NÐ"ˆ5 rÒ
)°d·i±iÀÀUÓ6KÐ/K¨sÐPRÓ.Rð �8‰8�D—J‘J“LÓ!€DØ€Kr(   c                ó’   — d| v rt        j                  d| «      } d| v r| j                  dd«      } d| v r| j                  dd«      } | S )z Escape character data. Ú&z&amp;rR   z&lt;rS   z&gt;)r   r   Úreplace)r=   s    r&   Úescape_cdatar]   w   sL   € à
ˆd�{ä�z‰z˜' 4Ó(ˆØ
ˆd�{Ø�|‰|˜C Ó(ˆØ
ˆd�{Ø�|‰|˜C Ó(ˆØ€Kr(   c                óf   — |j                   D ]  }|j                  | «      } Œ | j                  «       S )z4 Run postprocessors from Markdown instance on text. )ÚpostprocessorsÚrunr    )r=   rH   Úpps      r&   Úrun_postprocessorsrb   ƒ   s+   € à×ÔˆØ�v‰v�d‹|‰ð  à�:‰:‹<Ðr(   c                ó¾   — t        |j                  | «      «      }|j                  d«      dz   }|j                  d«      }||| j	                  «       }t        ||«      S )z< Fully render inner html of an `etree` element as a string. rS   r   rR   )r:   Ú
serializerÚindexÚrindexr    rb   )r<   rH   r=   rW   rX   s        r&   Úrender_inner_htmlrg   Š   sZ   € ô �B—M‘M "Ó%Ó&€Dð �J‰J�s‹O˜aÑ€EØ
�+‰+�cÓ
€CØ��cˆ?× Ñ Ó"€Dä˜d BÓ'Ð'r(   c                óÆ  — t        | j                  d«      d«      €| S t        | «      } | j                  d«      D ]¤  }d}t	        |«      D ]v  }|j
                  dk(  rG|j                  dd«      j                  d«      r&|j                  xs d› |› �}|j                  |«       ŒY|sŒ\|j                  xs d› |› �|_        d}Œx |sŒŒ|j                  xs d› |› �|_
        Œ¦ | S )zL Remove footnote references from a copy of the element, if any are present. ÚsupNz	.//sup/..r   r1   Úfnref)ÚnextÚiterr   ÚfindallÚreversedÚtagÚgetÚ
startswithÚtailÚremover=   )ÚrootÚparentÚ
carry_textÚchilds       r&   Úremove_fnrefsrx   —   sß   € ô ˆD�I‰I�eÓ˜dÓ#Ð+ØˆÜ�D‹>€Dà—,‘,˜{Ö+ˆØˆ
Ü˜fÖ%ˆEà�y‰y˜EÒ! e§i¡i°°bÓ&9×&DÑ&DÀWÔ&MØ %§
¡
Ò 0¨bÐ1°*°Ð>�
Ø—‘˜eÕ$ÚØ %§
¡
Ò 0¨bÐ1°*°Ð>�”
Ø‘
ð &ò Ø#Ÿ[™[Ò.¨BÐ/°
¨|Ð<ˆF�Kð ,ð €Kr(   c                ó(  — g }t        | «      �r| j                  d«      }g |d<   |d   g}|j                  |«       g }| rÒ| j                  d«      }|d   }g |d<   ||d   k  rP|j                  «        d}t        |«      D ]  }||d   k  r|dz  }Œ n |r|d|  }|d|  }|j                  |«       ||d   k(  r|r|d   d   n|j                  |«       n6|d   j                  |«       |j                  |«       |j                  |«       |}| rŒÒ|S )aV  Given an unsorted list with errors and skips, return a nested one.

        [{'level': 1}, {'level': 2}]
        =>
        [{'level': 1, 'children': [{'level': 2, 'children': []}]}]

    A wrong list is also converted:

        [{'level': 2}, {'level': 1}]
        =>
        [{'level': 2, 'children': []}, {'level': 1, 'children': []}]
    r   ÚchildrenÚlevelrP   r   N)ÚlenÚpopr8   rn   )	Útoc_listÚordered_listÚlastÚlevelsÚparentsÚtÚcurrent_levelÚto_popÚps	            r&   Únest_toc_tokensr‡   ®   sE  € ð €LÜ
ˆ8…}à�|‰|˜A‹ˆØˆˆZÑØ�w‘-�ˆØ×Ñ˜DÔ!Øˆñ Ø—‘˜Q“ˆAØ˜g™JˆMØˆAˆj‰Mð ˜v b™zÒ)à—
‘
”ð �Ü! 'Ö*�AØ$¨¨'©
Ò2Ø !™™áð	 +ñ
 Ø# H f WÐ-�FØ% h¨ wÐ/�Gð —‘˜mÔ,ð   r¡
Ò*Ù,3�˜‘˜ZÒ(Ø"§F¡F¨1¥Ið
 �ZÑ ×'Ñ'¨Ô*Ø—‘˜tÔ$Ø—‘˜mÔ,ØˆDòI ðL Ðr(   c                  ó\   ‡ — e Zd ZdZd
ˆ fd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zˆ xZS )ÚTocTreeprocessorz& Step through document and build TOC. c                ó¾  •— t         ‰| �  |«       |d   | _        |d   | _        t	        |d   «      dz
  | _        |d   | _        |d   | _        |d   | _        |d   | _	        t        |d	   «      | _        |d
   | _        t        |d   d«      | _        | j                  €
|d   | _        |d   | _        |d   | _        t        |d   d«      | _        t#        j$                  d«      | _        t)        |d   t*        «      r@d|d   v r9|d   j-                  d«      D �cg c]  }t	        |«      ‘Œ c}\  | _        | _        y d| _        t	        |d   «      | _        y c c}w )NÚmarkerÚtitleÚ	baselevelr   r'   r$   Ú	toc_classÚtitle_classÚ
anchorlinkÚanchorlink_classÚ	permalinkFÚpermalink_classÚpermalink_titleÚpermalink_leadingz[Hh][123456]Ú	toc_depthÚ-)ÚsuperÚ__init__r‹   rŒ   r/   Ú
base_levelr'   ÚseprŽ   r�   r   Úuse_anchorsr‘   Úuse_permalinksr“   r”   r•   r   ÚcompileÚ
header_rgxr7   rL   rV   Útoc_topÚ
toc_bottom)ÚselfrH   ÚconfigÚxÚ	__class__s       €r&   r™   zTocTreeprocessor.__init__ò   sj  ø€ Ü‰Ñ˜Ôà! (Ñ+ˆŒØ  ™/ˆŒ
Ü˜f [Ñ1Ó2°QÑ6ˆŒØ˜iÑ(ˆŒØ˜+Ñ&ˆŒØ Ñ,ˆŒØ & }Ñ 5ˆÔÜ!/°°|Ñ0DÓ!EˆÔØ%+Ð,>Ñ%?ˆÔÜ,¨V°KÑ-@À%ÓHˆÔØ×ÑÐ&Ø"(¨Ñ"5ˆDÔØ$*Ð+<Ñ$=ˆÔØ$*Ð+<Ñ$=ˆÔÜ.<¸VÐDWÑ=XÐZ_Ó.`ˆÔÜŸ*™* ^Ó4ˆŒÜ�f˜[Ñ)¬3Ô/°C¸6À+Ñ;NÑ4NØ=CÀKÑ=P×=VÑ=VÐWZÔ=[Ó,\Ñ=[¸¬S°­VÐ=[Ñ,\Ñ)ˆDŒL˜$�/àˆDŒLÜ! &¨Ñ"5Ó6ˆD�Oùò -]s   ÄEc              #  óÆ   K  — |D ]V  }| j                   j                  |j                  «      rŒ)|j                  dvsŒ8||f–— | j                  |«      E d{  –—†  ŒX y7 Œ­w)z? Iterator wrapper to get allowed parent and child all at once. )ÚpreÚcodeN)rŸ   r-   ro   Ú
iterparent)r¢   Únoderw   s      r&   r©   zTocTreeprocessor.iterparent  sT   è ø€ ó ˆEØ—?‘?×(Ñ(¨¯©Õ3¸¿	¹	ÈÒ8XØ˜E�kÒ!ØŸ?™?¨5Ó1×1Ñ1ñ ð 2ús   ‚+A!®A!½A!ÁAÁA!c                ón  — | j                  |«      D ]¡  \  }}dj                  |j                  «       «      j                  «       }|sŒ6|j                  sŒC|j                  j                  «       | j
                  k(  sŒkt        |«      dk(  sŒzt        t        |«      «      D ]  }||   |k(  sŒ|||<    Œ¡ Œ£ y)z Replace marker with elem. r   r   N)r©   r;   r6   r    r=   r‹   r|   Úrange)r¢   rt   Úelemr†   r>   r=   Úis          r&   Úreplace_markerzTocTreeprocessor.replace_marker  s�   € à—o‘o dÖ+‰FˆQ�Ø—7‘7˜1Ÿ:™:›<Ó(×.Ñ.Ó0ˆDÙØð �v‹v˜!Ÿ&™&Ÿ,™,›.¨D¯K©KÓ7¼CÀ»FÀa»KÜœs 1›vž�AØ˜‘t˜q“yØ#˜˜!™Ùñ 'ñ ,r(   c                óp   — t        |j                  d   «      | j                  z   }|dkD  rd}d|z  |_        y)z. Adjust header level according to base level. rP   é   zh%dN)r/   ro   rš   )r¢   r­   r{   s      r&   Ú	set_levelzTocTreeprocessor.set_level+  s4   € ä�D—H‘H˜R‘LÓ! D§O¡OÑ3ˆØ�1Š9ØˆEØ˜5‘=ˆ�r(   c                ó\  — t        j                  d«      }|j                  |_        d|z   |j                  d<   | j                  |j                  d<   d|_        |D ]  }|j                  |«       Œ t        |«      r |j                  |d   «       t        |«      rŒ |j                  |«       y )NÚaÚ#ÚhrefÚclassr   r   )ÚetreeÚElementr=   Úattribr‘   r8   r|   rs   )r¢   r>   Úelem_idÚanchorr­   s        r&   Ú
add_anchorzTocTreeprocessor.add_anchor2  s‰   € Ü—‘˜sÓ#ˆØ—f‘fˆŒØ # g¡ˆ�‰�fÑØ!%×!6Ñ!6ˆ�‰�gÑØˆŒÛˆDØ�M‰M˜$Õð ä�!ŒfØ�H‰H�Q�q‘TŒNô �!�fà	�‰�Õr(   c                ó®  — t        j                  d«      }| j                  du r	dt        z  n| j                  |_        d|z   |j
                  d<   | j                  |j
                  d<   | j                  r| j                  |j
                  d<   | j                  r+|j                  |_	        d|_        |j                  d	|«       y |j                  |«       y )
Nr´   Tz%spara;rµ   r¶   r·   rŒ   r   r   )r¸   r¹   r�   r	   r=   rº   r“   r”   r•   rr   Úinsertr8   )r¢   r>   r»   r’   s       r&   Úadd_permalinkzTocTreeprocessor.add_permalink>  s¸   € Ü—M‘M #Ó&ˆ	à!×0Ñ0°DÑ8ð $¤nÒ4à#×2Ñ2ð 	Œð $'¨¡=ˆ	×Ñ˜Ñ Ø$(×$8Ñ$8ˆ	×Ñ˜Ñ!Ø×ÒØ(,×(<Ñ(<ˆI×Ñ˜WÑ%Ø×!Ò!ØŸV™VˆIŒNØˆAŒFØ�H‰H�Q˜	Õ"à�H‰H�YÕr(   c                ó²  ‡— t        j                  d«      }| j                  |j                  d<   | j                  rLt        j
                  |d«      }| j                  r| j                  |j                  d<   | j                  |_        dˆfd„Š ‰||«       d| j                  j                  v r(| j                  j                  d   j                  |«       |S )z' Return a string div given a toc list. Údivr·   Úspanc                ó0  •— t        j                  |d«      }| D ]y  }t        j                  |d«      }t        j                  |d«      }|j                  dd«      |_        d|j                  dd«      z   |j                  d<   |d	   sŒn ‰|d	   |«       Œ{ |S )
NÚulÚlir´   Únamer   rµ   r1   r¶   rz   )r¸   Ú
SubElementrp   r=   rº   )r~   ru   rÅ   ÚitemrÆ   ÚlinkÚbuild_etree_uls         €r&   rË   z6TocTreeprocessor.build_toc_div.<locals>.build_etree_ulZ  s‘   ø€ Ü×!Ñ! &¨$Ó/ˆBÛ �ä×%Ñ% b¨$Ó/�Ü×'Ñ'¨¨CÓ0�Ø ŸH™H V¨RÓ0�”	Ø&)¨D¯H©H°T¸2Ó,>Ñ&>�—‘˜FÑ#Ø˜
Ó#Ù" 4¨
Ñ#3°RÕ8ð !ð ˆIr(   Úprettify)r~   Úlistru   úetree.ElementrK   rÎ   )r¸   r¹   rŽ   rº   rŒ   rÈ   r�   r=   rH   Útreeprocessorsr`   )r¢   r~   rÂ   ÚheaderrË   s       @r&   Úbuild_toc_divzTocTreeprocessor.build_toc_divN  s«   ø€ ä�m‰m˜EÓ"ˆØ"Ÿn™nˆ�
‰
�7Ñð �:Š:Ü×%Ñ% c¨6Ó2ˆFØ×ÒØ)-×)9Ñ)9�—‘˜gÑ&ØŸ*™*ˆFŒKõ
	ñ 	�x Ô%à˜Ÿ™×/Ñ/Ñ/Ø�G‰G×"Ñ" :Ñ.×2Ñ2°3Ô7àˆ
r(   c           	     ó<  — t        «       }|j                  «       D ]/  }d|j                  v sŒ|j                  |j                  d   «       Œ1 g }|j                  «       D �]  }t	        |j
                  t        «      sŒ| j                  j                  |j
                  «      sŒE| j                  |«       t        t        |«      | j                  «      }t        |«      }d|j                  vrFt        | j                  t!        j"                  |«      | j$                  «      |«      |j                  d<   d}d|j                  v rMt'        t#        |j                  d   «      | j                  «      }t)        t        |«      «      }|j                  d= t+        |j
                  d   «      | j,                  k\  rht+        |j
                  d   «      | j.                  k  rC|j1                  t+        |j
                  d   «      t#        |j                  d   «      |||dœ«       | j2                  r| j5                  ||j                  d   «       | j6                  dvs�Œù| j9                  ||j                  d   «       �Œ t;        |«      }| j=                  |«      }| j>                  r| jA                  ||«       | j                  jC                  |«      }	| j                  jD                  D ]  }
|
jG                  |	«      }	Œ || j                  _$        |	| j                  _%        y )Nr1   r   údata-toc-labelrP   )r{   r1   rÇ   r9   rÓ   )FN)&Úsetrl   rº   r0   r7   ro   rL   rŸ   r-   r²   rg   rx   rH   rY   r4   r'   r9   r:   r›   rb   r]   r/   r    r¡   r8   rœ   r½   r�   rÀ   r‡   rÑ   r‹   r¯   rd   r_   r`   Ú
toc_tokensÚtoc)r¢   ÚdocÚused_idsr<   rÕ   Ú	innerhtmlrÇ   Údata_toc_labelrÂ   rÖ   ra   s              r&   r`   zTocTreeprocessor.runm  s[  € ä“5ˆØ—(‘(–*ˆBØ�r—y‘yÒ Ø—‘˜RŸY™Y t™_Õ-ð ð ˆ
Ø—(‘(—*ˆBÜ˜"Ÿ&™&¤#Õ&¨4¯?©?×+@Ñ+@ÀÇÁÕ+HØ—‘˜rÔ"Ü-¬m¸BÓ.?ÀÇÁÓI�	Ü! )Ó,�ð ˜rŸy™yÑ(Ü&,¨T¯\©\¼$¿-¹-ÈÓ:MÈtÏxÉxÓ-XÐZbÓ&c�B—I‘I˜d‘Oà!#�Ø# r§y¡yÑ0Ü%7¼ÀÇÁÐK[ÑA\Ó8]Ð_c×_fÑ_fÓ%g�Nä'¬
°>Ó(BÓC�DàŸ	™	Ð"2Ð3ä�r—v‘v˜b‘z“? d§l¡lÒ2´s¸2¿6¹6À"¹:³È$Ï/É/Ò7YØ×%Ñ%Ü!$ R§V¡V¨B¡Z£Ü& r§y¡y°¡Ó7Ø $Ø )Ø*8ñ'ô ð ×#Ò#Ø—O‘O B¨¯	©	°$©Ô8Ø×&Ñ&¨mÓ;Ø×&Ñ& r¨2¯9©9°T©?Ö;ð= ô@ % ZÓ0ˆ
Ø× Ñ  Ó,ˆØ�;Š;Ø×Ñ  SÔ)ð �g‰g× Ñ  Ó%ˆØ—'‘'×(Ô(ˆBØ—&‘&˜“+‰Cð )à'ˆ�‰ÔØˆ�‰�r(   )rH   r   r£   zdict[str, Any])rª   rÎ   rK   z-Iterator[tuple[etree.Element, etree.Element]])rt   rÎ   r­   rÎ   rK   ÚNone)r­   rÎ   rK   rÛ   )r>   rÎ   r»   rL   rK   rÛ   )r~   rÍ   rK   rÎ   )r×   rÎ   rK   rÛ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r™   r©   r¯   r²   r½   rÀ   rÑ   r`   Ú__classcell__©r¥   s   @r&   r‰   r‰   ï   s.   ø„ Ù0õ7ó2	2óó*!ó
ó ó ÷>2r(   r‰   c                  ó0   ‡ — e Zd ZeZˆ fd„Zd„ Zdd„Zˆ xZS )ÚTocExtensionc                ó’   •— ddgddgddgddgd	d
gddgddgddgddgd	dgddgt         dgddgddgdœ| _        	 t        ‰| �  di |¤Ž y )Nz[TOC]zeText to find and replace with Table of Contents. Set to an empty string to disable. Default: `[TOC]`.r   z;Title to insert into TOC `<div>`. Default: an empty string.Útoctitlez2CSS class used for the title. Default: `toctitle`.rÖ   z4CSS class(es) used for the link. Default: `toclink`.Fz7True if header should be a self link. Default: `False`.Útoclinkz5CSS class(es) used for the link. Defaults: `toclink`.r   zPTrue or link text if a Sphinx-style permalink should be added. Default: `False`.Ú
headerlinkz7CSS class(es) used for the link. Default: `headerlink`.zPermanent linkz<Title attribute of the permalink. Default: `Permanent link`.z\True if permalinks should be placed at start of the header, rather than end. Default: False.Ú1z%Base level for headers. Default: `1`.zFFunction to generate anchors based on header text. Default: `slugify`.r—   zWord separator. Default: `-`.r±   a'  Define the range of section levels to include in the Table of Contents. A single integer (b) defines the bottom section level (<h1>..<hb>) only. A string consisting of two digits separated by a hyphen in between (`2-5`) defines the top (t) and the bottom (b) (<ht>..<hb>). Default: `6` (bottom).)r‹   rŒ   r�   rŽ   r�   r‘   r’   r“   r”   r•   r�   r'   r$   r–   © )r'   r£   r˜   r™   )r¢   Úkwargsr¥   s     €r&   r™   zTocExtension.__init__¦  sÕ   ø€ ð ð$ðð ÐQðð ÐPðð ÐMðð ÐPðð ÐRð!ð Ðeðð ÐWð ð !Ð"`ð ð Ønð"ð ÐFÐGäÐaðð Ð>Ð?àð)ðñO.
ˆŒð^ 	/ä‰ÑÑ"˜6Ó"r(   c                óÎ   — |j                  | «       || _        | j                  «        | j                  || j	                  «       «      }|j
                  j                  |dd«       y)z% Add TOC tree processor to Markdown. rÖ   é   N)ÚregisterExtensionrH   ÚresetÚTreeProcessorClassÚ
getConfigsrÏ   Úregister)r¢   rH   Útocexts      r&   ÚextendMarkdownzTocExtension.extendMarkdownÚ  sQ   € à
×Ñ˜TÔ"ØˆŒØ�
‰
ŒØ×(Ñ(¨¨T¯_©_Ó->Ó?ˆØ
×Ñ×"Ñ" 6¨5°!Õ4r(   c                óH   — d| j                   _        g | j                   _        y )Nr   )rH   rÖ   rÕ   )r¢   s    r&   rî   zTocExtension.resetâ  s   € Øˆ�‰ŒØˆ�‰Õr(   )rK   rÛ   )	rÜ   rÝ   rÞ   r‰   rï   r™   ró   rî   rà   rá   s   @r&   rã   rã   ¢  s   ø„ à)Ðô2#òh5÷ r(   rã   c                 ó   — t        di | ¤ŽS )Nré   )rã   )rê   s    r&   ÚmakeExtensionrö   ç  s   € ÜÑ!˜&Ñ!Ð!r(   )F)r#   rL   r$   rL   r%   ÚboolrK   rL   )r#   rL   r$   rL   rK   rL   )r1   rL   r2   zMutableSet[str]rK   rL   )r<   rÎ   rK   rL   )T)r=   rL   rH   r   rI   r÷   rK   rL   )r=   rL   rK   rL   )r=   rL   rH   r   rK   rL   )r<   rÎ   rH   r   rK   rL   )rt   rÎ   rK   rÎ   )0rß   Ú
__future__r   r   r   rÏ   r   Úutilr   r	   r
   r   r   r   Úserializersr   r   r9   r   Úcopyr   Úxml.etree.ElementTreer¸   ÚElementTreeÚtypingr   r   r   r   Úmarkdownr   r'   r*   rž   r,   r4   r?   rM   r:   rY   r]   rb   rg   rx   r‡   r‰   rã   rö   ré   r(   r&   Ú<module>r      sß   ðñõ #å Ý *ß `Õ `Ý 2Ý  Û 	Û Û Ý ß %Ð %ß ;Ó ;áÝ!ôBó3ð
 ˆR�Z‰ZÐ*Ó+€
ó	ñ Ð>Ó?ò	!ó @ð	!ñ ÐWÓXó4ó Yð4ó"óó	óó
(óò.>ôBp�}ô pôfB �9ô B óJ"r(   