§
    qŠtj°  ã                  ó|   — d dl mZ d dlmZ d dlZddlmZ  ej        e¦  «        Z	dddd	d
dœdd„Z
 e
¦   «         ZdS )é    )Úannotations)ÚCallableNé   )Ú
StateBlock)ú~ú`ÚfenceF)r   é   )ÚmarkersÚ
token_typeÚexact_matchÚdisallow_marker_in_infoÚmin_markersr   útuple[str, ...]r   Ústrr   Úboolr   r   ÚintÚreturnú,Callable[[StateBlock, int, int, bool], bool]c                ó6   ‡ ‡‡‡‡— |rd„ Šnd„ Šdˆˆˆ ˆˆfd„}|S )a  Create a fence parsing rule with configurable options.

    :param markers: Tuple of single characters that can be used as fence markers.
    :param token_type: The token type name to emit (e.g. "fence", "colon_fence").
    :param exact_match: If True, the closing fence must have exactly the same
        number of marker characters as the opening fence (not "at least as many").
        This enables nesting of fences with different marker counts.
    :param disallow_marker_in_info: Tuple of marker characters that are not allowed
        to appear in the info string. The check only applies when the actual opening
        marker is in this tuple (e.g. a tilde fence is unaffected by ``"`"`` being
        listed). Per CommonMark, backtick fences cannot have backticks in the info
        string. Use ``()`` to disable this restriction.
    :param min_markers: Minimum number of marker characters to form a fence.
    :return: A block rule function with signature
        ``(state, startLine, endLine, silent) -> bool``.
    c                ó   — || k    S ©N© ©Úopening_lenÚclosing_lens     ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/markdown_it/rules_block/fence.pyú<lambda>z!make_fence_rule.<locals>.<lambda>(   ó   € ¸;È+Ò;U€ ó    c                ó   — || k    S r   r   r   s     r   r   z!make_fence_rule.<locals>.<lambda>+   r   r    Ústater   Ú	startLiner   ÚendLineÚsilentr   r   c                ó*  •— t                                d| |||¦  «         d}| j        |         | j        |         z   }| j        |         }|                      |¦  «        rdS |‰z   |k    rdS | j        |         }|‰vrdS |}|                      ||¦  «        }||z
  }	|	‰k     rdS | j        ||…         }
| j        ||…         }|‰v r||v rdS |rdS |}	 |dz  }||k    rnÆ| j        |         | j        |         z   x}}| j        |         }||k     r| j        |         | j	        k     rn	 | j        |         |k    rŒgn# t          $ r Y n_w xY w|                      |¦  «        rŒŽ|                      ||¦  «        } ‰|	||z
  ¦  «        sŒ´|                      |¦  «        }||k     rŒÐd}	 | j        |         }	||rdndz   | _        |                      ‰dd¦  «        }||_        |                      |dz   ||	d¦  «        |_        |
|_        || j        g|_        dS )Nzentering fence: %s, %s, %s, %sFTr   r   Úcode)ÚLOGGERÚdebugÚbMarksÚtShiftÚeMarksÚis_code_blockÚsrcÚskipCharsStrÚsCountÚ	blkIndentÚ
IndexErrorÚ
skipSpacesÚlineÚpushÚinfoÚgetLinesÚcontentÚmarkupÚmap)r"   r#   r$   r%   ÚhaveEndMarkerÚposÚmaximumÚmarkerÚmemÚlengthr9   ÚparamsÚnextLineÚtokenÚclosing_matcherr   r   r   r   s                 €€€€€r   Ú_fence_rulez$make_fence_rule.<locals>._fence_rule-   s²  ø€ õ 	�ŠØ,¨e°YÀÈñ	
ô 	
ð 	
ð ˆØŒl˜9Ô%¨¬°YÔ(?Ñ?ˆØ”,˜yÔ)ˆà×Ò˜yÑ)Ô)ð 	Ø�5à�Ñ˜wÒ&Ð&Ø�5à”˜3”ˆà˜Ð Ð Ø�5ð ˆØ× Ò   fÑ-Ô-ˆà�s‘ˆà�KÒÐØ�5à”˜3˜s˜7Ô#ˆØ”˜3˜w˜;Ô'ˆàÐ,Ð,Ð,°¸6Ð1AÐ1AØ�5ð ð 	Ø�4ð ˆð&	Ø˜‰MˆHØ˜7Ò"Ð"ð àœ XÔ.°´¸hÔ1GÑGÐGˆC�#Ø”l 8Ô,ˆGà�WŠ}ˆ} ¤¨hÔ!7¸%¼/Ò!IÐ!Ið ðØ”9˜S”> VÒ+Ð+Øð ,øåð ð ð Ø�ðøøøð ×"Ò" 8Ñ,Ô,ð Øà×$Ò$ S¨&Ñ1Ô1ˆCà"�? 6¨3°©9Ñ5Ô5ð Øð ×"Ò" 3Ñ'Ô'ˆCà�WŠ}ˆ}Øà ˆMàð ”˜iÔ(ˆà mÐ!:  ¸Ñ;ˆŒ
à—
’
˜: v¨qÑ1Ô1ˆØˆŒ
ØŸš y°1¡}°hÀÈÑMÔMˆŒØˆŒØ ¤
Ð+ˆŒ	àˆts   Ä'D: Ä:
EÅE)
r"   r   r#   r   r$   r   r%   r   r   r   r   )r   r   r   r   r   rE   rD   s   `` `` @r   Úmake_fence_rulerF      sl   øøøøø€ ð4 ð VàUÐUˆˆð VÐUˆð_ð _ð _ð _ð _ð _ð _ð _ð _ð _ðB Ðr    )r   r   r   r   r   r   r   r   r   r   r   r   )Ú
__future__r   Úcollections.abcr   ÚloggingÚstate_blockr   Ú	getLoggerÚ__name__r(   rF   r	   r   r    r   ú<module>rM      sŸ   ðà "Ð "Ð "Ð "Ð "Ð "à $Ð $Ð $Ð $Ð $Ð $Ø €€€à #Ð #Ð #Ð #Ð #Ð #à	ˆÔ	˜8Ñ	$Ô	$€ð
  *ØØØ/5ØðBð Bð Bð Bð Bð BðL 	ˆÑÔ€€€r    