+
    Z‹i…i  ã                  ó²  € R t ^ RIHt ^ RIt^ RIt^ RIHu Ht ^ RIH	t	H
t
 ^RIHt ^RIHt ]	'       d   ^ RIHt ]P"                  ! R4      tR R	 lt ! R
 R4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R  R!]4      tR# )"a;  
A block processor parses blocks of text and adds new elements to the ElementTree. Blocks of text,
separated from other text by blank lines, may have a different syntax and produce a differently
structured tree than other Markdown. Block processors excel at handling code formatting, equation
layouts, tables, etc.
)ÚannotationsN)ÚTYPE_CHECKINGÚAny)Úutil)ÚBlockParser)ÚMarkdownÚMARKDOWNc               ó$   € V ^8„  d   QhRRRRRR/# )é   Úmdr   Úkwargsr   Úreturnr   © )Úformats   "Ú:/usr/lib/python3/dist-packages/markdown/blockprocessors.pyÚ__annotate__r   *   s!   € ÷ ñ ˜8ð ¨sð °{ñ ó    c                ó`  € \        V 4      pVP                  P                  \        V4      R^d4       VP                  P                  \	        V4      R^Z4       VP                  P                  \        V4      R^P4       VP                  P                  \        V4      R^F4       VP                  P                  \        V4      R^<4       VP                  P                  \        V4      R^24       VP                  P                  \        V4      R^(4       VP                  P                  \        V4      R^4       VP                  P                  \        V4      R	^4       VP                  P                  \        V4      R
^4       VP                  P                  \        V4      R^
4       V# )z1Build the default block parser used by Markdown. ÚemptyÚindentÚcodeÚ
hashheaderÚsetextheaderÚhrÚolistÚulistÚquoteÚ	referenceÚ	paragraph)r   ÚblockprocessorsÚregisterÚEmptyBlockProcessorÚListIndentProcessorÚCodeBlockProcessorÚHashHeaderProcessorÚSetextHeaderProcessorÚHRProcessorÚOListProcessorÚUListProcessorÚBlockQuoteProcessorÚReferenceProcessorÚParagraphProcessor)r   r   Úparsers   &, r   Úbuild_block_parserr-   *   sX  € ä˜‹_€FØ
×Ñ×#Ñ#Ô$7¸Ó$?ÀÈ#ÔNØ
×Ñ×#Ñ#Ô$7¸Ó$?ÀÈ2ÔNØ
×Ñ×#Ñ#Ô$6°vÓ$>ÀÈÔKØ
×Ñ×#Ñ#Ô$7¸Ó$?ÀÈrÔRØ
×Ñ×#Ñ#Ô$9¸&Ó$AÀ>ÐSUÔVØ
×Ñ×#Ñ#¤K°Ó$7¸¸rÔBØ
×Ñ×#Ñ#¤N°6Ó$:¸GÀRÔHØ
×Ñ×#Ñ#¤N°6Ó$:¸GÀRÔHØ
×Ñ×#Ñ#Ô$7¸Ó$?ÀÈ"ÔMØ
×Ñ×#Ñ#Ô$6°vÓ$>ÀÈRÔPØ
×Ñ×#Ñ#Ô$6°vÓ$>ÀÈRÔPØ€Mr   c                  ój   € ] tR t^;tRtR R ltR R ltRR R lltRR	 R
 lltR R lt	R R lt
RtR# )ÚBlockProcessora4  Base class for block processors.

Each subclass will provide the methods below to work with the source and
tree. Each processor will need to define it's own `test` and `run`
methods. The `test` method should return True or False, to indicate
whether the current block should be processed by this processor. If the
test passes, the parser will call the processors `run` method.

Attributes:
    BlockProcessor.parser (BlockParser): The `BlockParser` instance this is attached to.
    BlockProcessor.tab_length (int): The tab length set on the `Markdown` instance.

c               ó   € V ^8„  d   QhRR/# ©r
   r,   r   r   )r   s   "r   r   ÚBlockProcessor.__annotate__J   s   € ÷ /ñ /˜{ñ /r   c                	óH   € Wn         VP                  P                  V n        R # ©N)r,   r   Ú
tab_length)Úselfr,   s   &&r   Ú__init__ÚBlockProcessor.__init__J   s   € ØŒØ Ÿ)™)×.Ñ.ˆŽr   c               ó    € V ^8„  d   QhRRRR/# )r
   Úparentúetree.Elementr   zetree.Element | Noner   )r   s   "r   r   r2   N   s   € ÷ ñ  ð Ð2Fñ r   c                ó:   € \        V4      '       d
   VR,          # R# )z-Return the last child of an `etree` element. Néÿÿÿÿ)Úlen)r6   r:   s   &&r   Ú	lastChildÚBlockProcessor.lastChildN   s   € äˆv�;Š;Ø˜"•:Ðár   Nc               ó$   € V ^8„  d   QhRRRRRR/# )r
   ÚtextÚstrÚlengthz
int | Noner   ztuple[str, str]r   )r   s   "r   r   r2   U   s&   € ÷ Cñ C˜#ð C zð C¸_ñ Cr   c                ón  € Vf   V P                   p. pVP                  R4      pV F_  pVP                  RV,          4      '       d   VP                  WRR 4       K6  VP	                  4       '       g   VP                  R4       K_   M	  RP                  V4      RP                  V\        V4      R 4      3# )z<Remove a tab from the front of each line of the given text. NÚ
Ú Ú )r5   ÚsplitÚ
startswithÚappendÚstripÚjoinr>   )r6   rB   rD   ÚnewtextÚlinesÚlines   &&&   r   ÚdetabÚBlockProcessor.detabU   s”   € àŠ>Ø—_‘_ˆFØˆØ—
‘
˜4Ó ˆÛˆDØ�‰˜s V�|×,Ò,Ø—‘˜t G˜}Ö-Ø—Z‘Z—\’\Ø—‘˜rÖ"áñ ð �y‰y˜Ó! 4§9¡9¨U´3°w³<°=Ð-AÓ#BÐBÐBr   c               ó$   € V ^8„  d   QhRRRRRR/# )r
   rB   rC   ÚlevelÚintr   r   )r   s   "r   r   r2   d   s!   € ÷  ñ  ˜sð  ¨3ð  °sñ  r   c                ó&  € VP                  R4      p\        \        V4      4       FX  pW4,          P                  RV P                  ,          V,          4      '       g   K:  W4,          V P                  V,          R W4&   KZ  	  RP                  V4      # )z>Remove a tab from front of lines but allowing dedented lines. rF   rG   N)rI   Úranger>   rJ   r5   rM   )r6   rB   rT   rO   Úis   &&&  r   Ú
looseDetabÚBlockProcessor.looseDetabd   so   € à—
‘
˜4Ó ˆÜ”s˜5“zÖ"ˆAØ�x×"Ñ" 3 t§¡Õ#6°uÕ#<×=Ô=Ø �8 D§O¡O°EÕ$9Ð$:Ð;�“ñ #ð �y‰y˜ÓÐr   c               ó$   € V ^8„  d   QhRRRRRR/# ©r
   r:   r;   ÚblockrC   r   Úboolr   )r   s   "r   r   r2   l   s!   € ÷ ñ ˜=ð °ð ¸ñ r   c                ó   € R# )aù  Test for block type. Must be overridden by subclasses.

As the parser loops through processors, it will call the `test`
method on each to determine if the given block of text is of that
type. This method must return a boolean `True` or `False`. The
actual method of testing is left to the needs of that particular
block type. It could be as simple as `block.startswith(some_string)`
or a complex regular expression. As the block type may be different
depending on the parent of the block (i.e. inside a list), the parent
`etree` element is also provided and may be used as part of the test.

Keyword arguments:
    parent: An `etree` element which will be the parent of the block.
    block: A block of text from the source which has been split at blank lines.
Nr   ©r6   r:   r]   s   &&&r   ÚtestÚBlockProcessor.testl   s   € ñ  	r   c               ó$   € V ^8„  d   QhRRRRRR/# )r
   r:   r;   Úblocksú	list[str]r   zbool | Noner   )r   s   "r   r   r2   ~   s!   € ÷ ñ ˜-ð °ð ¸{ñ r   c                ó   € R# )aª  Run processor. Must be overridden by subclasses.

When the parser determines the appropriate type of a block, the parser
will call the corresponding processor's `run` method. This method
should parse the individual lines of the block and append them to
the `etree`.

Note that both the `parent` and `etree` keywords are pointers
to instances of the objects which should be edited in place. Each
processor must make changes to the existing objects as there is no
mechanism to return new/different objects to replace them.

This means that this method should be adding `SubElements` or adding text
to the parent, and should remove (`pop`) or add (`insert`) items to
the list of blocks.

If `False` is returned, this will have the same effect as returning `False`
from the `test` method.

Keyword arguments:
    parent: An `etree` element which is the parent of the current block.
    blocks: A list of all remaining blocks of the document.
Nr   )r6   r:   rd   s   &&&r   ÚrunÚBlockProcessor.run~   s   € ñ0 	r   )r,   r5   r4   )é   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r7   r?   rQ   rY   ra   rg   Ú__static_attributes__r   r   r   r/   r/   ;   s+   † ñõ/õ÷C÷ õ÷$ñ r   r/   c                  ón   a € ] tR t^™tRtR.t RR.t V 3R ltR R ltR R	 lt	R
 R lt
R R ltRtV ;t# )r"   zmProcess children of list items.

Example

    * a list item
        process this part

        or this part

ÚliÚulÚolc                	ó|   <€ \         SV `  ! V!   \        P                  ! R V P                  ,          4      V n        R# )z^(([ ]{%s})+)N)Úsuperr7   ÚreÚcompiler5   Ú	INDENT_RE)r6   ÚargsÚ	__class__s   &*€r   r7   ÚListIndentProcessor.__init__ª   s*   ø€ Ü‰Ò˜$ÒÜŸšÐ$4°t·±Õ$FÓGˆŽr   c               ó$   € V ^8„  d   QhRRRRRR/# r\   r   )r   s   "r   r   Ú ListIndentProcessor.__annotate__®   s!   € ÷ :ñ :˜=ð :°ð :¸ñ :r   c                	óˆ  € VP                  R V P                  ,          4      ;'       dš    V P                  P                  P	                  R4      '       * ;'       dh    VP
                  V P                  9   ;'       gG    \        V4      ;'       d4    VR,          RJ;'       d!    VR,          P
                  V P                  9   # )rG   ÚdetabbedNr=   )	rJ   r5   r,   ÚstateÚisstateÚtagÚ
ITEM_TYPESr>   Ú
LIST_TYPESr`   s   &&&r   ra   ÚListIndentProcessor.test®   s¡   € Ø×Ñ  D§O¡OÕ 3Ó4÷ :ð :Ø—‘×!Ñ!×)Ñ)¨*Ó5Ô5÷:ð :à�Z‰Z˜4Ÿ?™?Ñ*÷ 9ð 9Ü�V“÷ 8ð 8 ¨¥°4Ð!7÷ 8ð 8Ø˜B•Z—^‘^ t§¡Ñ6ð		:r   c               ó$   € V ^8„  d   QhRRRRRR/# ©r
   r:   r;   rd   re   r   ÚNoner   )r   s   "r   r   r}   µ   s!   € ÷ ""ñ ""˜-ð ""°ð ""¸tñ ""r   c                	óB  € VP                  ^ 4      pV P                  W4      w  rEV P                  W44      pV P                  P                  P                  R4       VP                  V P                  9   dx   \        V4      '       dI   VR,          P                  V P                  9   d'   V P                  P                  VR,          V.4       EM,V P                  P                  W.4       EMVP                  V P                  9   d   V P                  P                  WS.4       MÖ\        V4      '       dµ   VR,          P                  V P                  9   d“   VR,          P                  '       dV   \        P                  ! R4      pVR,          P                  Vn        RVR,          n        VR,          P                  ^ V4       V P                  P                  VR,          V4       MV P!                  WS4       V P                  P                  P#                  4        R# )é    r   ÚprH   Nr=   )ÚpopÚ	get_levelrY   r,   r€   Úsetr‚   rƒ   r>   r„   ÚparseBlocksrB   ÚetreeÚElementÚinsertÚ
parseChunkÚcreate_itemÚreset)r6   r:   rd   r]   rT   Úsiblingr‹   s   &&&    r   rg   ÚListIndentProcessor.runµ   sr  € Ø—
‘
˜1“ˆØŸ™¨Ó6‰ˆØ—‘ Ó-ˆà�‰×Ñ×Ñ˜jÔ)Ø�:‰:˜Ÿ™Ô(ô �6�{Š{˜v b�zŸ~™~°·±Ô@Ø—‘×'Ñ'¨¨r­
°U°GÖ<ð —‘×'Ñ'¨°Ö8Ø�[‰[˜DŸO™OÔ+à�K‰K×#Ñ# G¨WÕ5Ü��\Š\˜g b�kŸo™o°·±Ô@ð �r�{××Ðô —M’M #Ó&�Ø  �×)Ñ)�”Ø#%�˜•Ô Ø˜•×"Ñ" 1 aÔ(Ø�K‰K×"Ñ" 7¨2¥;°Õ6à×Ñ˜WÔ,Ø�‰×Ñ×ÑÖ!r   c               ó$   € V ^8„  d   QhRRRRRR/# )r
   r:   r;   r]   rC   r   rˆ   r   )r   s   "r   r   r}   Ù   s!   € ÷ -ñ - -ð -¸ð -Àñ -r   c                ól   € \         P                  ! VR4      pV P                  P                  W2.4       R# )z=Create a new `li` and parse the block with it as the parent. rq   N)r�   Ú
SubElementr,   r�   )r6   r:   r]   rq   s   &&& r   r”   ÚListIndentProcessor.create_itemÙ   s(   € ä×Ò˜f dÓ+ˆØ�‰×Ñ  GÖ,r   c               ó$   € V ^8„  d   QhRRRRRR/# )r
   r:   r;   r]   rC   r   ztuple[int, etree.Element]r   )r   s   "r   r   r}   Þ   s"   € ÷ ñ  ð °cð Ð>Wñ r   c                ó  € V P                   P                  V4      pV'       d-   \        VP                  ^4      4      V P                  ,          pM^ pV P
                  P                  P                  R4      '       d   ^pM^ pWE8”  dx   V P                  V4      pVe_   VP                  V P                  9   g   VP                  V P                  9   d)   VP                  V P                  9   d
   V^,          pTpKy   WQ3# WQ3# )z.Get level of indentation based on list level. Úlist)rx   Úmatchr>   Úgroupr5   r,   r€   r�   r?   r‚   r„   rƒ   )r6   r:   r]   ÚmÚindent_levelrT   Úchilds   &&&    r   r�   ÚListIndentProcessor.get_levelÞ   sÌ   € ð �N‰N× Ñ  Ó'ˆßÜ˜qŸw™w q›z›?¨4¯?©?Õ:‰LàˆLØ�;‰;×Ñ×$Ñ$ V×,Ò,à‰Eð ˆEàÔ"Ø—N‘N 6Ó*ˆEØÒ!Ø—	‘	˜TŸ_™_Ô,°·	±	¸T¿_¹_Ô0LØ—9‘9 §¡Ô/Ø˜Q•J�EØ’ð Øˆ}Ðˆuˆ}Ðr   )rx   )rj   rk   rl   rm   rn   rƒ   r„   r7   ra   rg   r”   r�   ro   Ú__classcell__©rz   s   @r   r"   r"   ™   s@   ø† ñ	ð �€JØ-Ø˜�€JØ9õHõ:õ""õH-÷
ó r   r"   c                  ó2   € ] tR t^ûtRtR R ltR R ltRtR# )r#   zProcess code blocks. c               ó$   € V ^8„  d   QhRRRRRR/# r\   r   )r   s   "r   r   ÚCodeBlockProcessor.__annotate__þ   s!   € ÷ 5ñ 5˜=ð 5°ð 5¸ñ 5r   c                	óF   € VP                  R V P                  ,          4      # )rG   )rJ   r5   r`   s   &&&r   ra   ÚCodeBlockProcessor.testþ   s   € Ø×Ñ  D§O¡OÕ 3Ó4Ð4r   c               ó$   € V ^8„  d   QhRRRRRR/# r‡   r   )r   s   "r   r   r©     s!   € ÷ &ñ &˜-ð &°ð &¸tñ &r   c           	     	óô  € V P                  V4      pVP                  ^ 4      pRpVe¯   VP                  R8X  dž   \        V4      '       d�   V^ ,          P                  R8X  du   V^ ,          pV P	                  V4      w  rE\
        P                  ! RP                  VP                  \
        P                  ! VP                  4       4      4      4      Vn        M…\        P                  ! VR4      p\        P                  ! VR4      pV P	                  V4      w  rE\
        P                  ! R\
        P                  ! VP                  4       4      ,          4      Vn        V'       d   VP                  ^ V4       R# R# )rŠ   rH   NÚprer   z{}
{}
z%s
)r?   rŒ   r‚   r>   rQ   r   ÚAtomicStringr   rB   Úcode_escapeÚrstripr�   rš   r’   )r6   r:   rd   r–   r]   ÚtheRestr   r®   s   &&&     r   rg   ÚCodeBlockProcessor.run  s  € Ø—.‘. Ó(ˆØ—
‘
˜1“ˆØˆØÒ G§K¡K°5Ô$8Üˆw�<Š<˜G A�JŸN™N¨fÔ4ð ˜1•:ˆDØ!ŸZ™Z¨Ó.‰NˆEÜ×)Ò)Ø×!Ñ! $§)¡)¬T×-=Ò-=¸e¿l¹l»nÓ-MÓNóˆD�Iô
 ×"Ò" 6¨5Ó1ˆCÜ×#Ò# C¨Ó0ˆDØ!ŸZ™Z¨Ó.‰NˆEÜ×)Ò)¨&´4×3CÒ3CÀEÇLÁLÃNÓ3SÕ*SÓTˆDŒIßð �M‰M˜!˜WÖ%ñ	 r   r   N©rj   rk   rl   rm   rn   ra   rg   ro   r   r   r   r#   r#   û   s   † Ù õ5÷&ñ &r   r#   c                  ób   € ] tR tRtRt]P                  ! R4      tR R ltR R lt	R R	 lt
R
tR# )r)   i  zProcess blockquotes. z(^|\n)[ ]{0,3}>[ ]?(.*)c               ó$   € V ^8„  d   QhRRRRRR/# r\   r   )r   s   "r   r   Ú BlockQuoteProcessor.__annotate__!  s&   € ÷ Rñ R˜=ð R°ð R¸ñ Rr   c                	óŽ   € \        V P                  P                  V4      4      ;'       d    \        P                  ! 4       '       * # r4   )r^   ÚREÚsearchr   Únearing_recursion_limitr`   s   &&&r   ra   ÚBlockQuoteProcessor.test!  s.   € Ü�D—G‘G—N‘N 5Ó)Ó*×QÐQ´4×3OÒ3OÓ3QÔ/QÐQr   c               ó$   € V ^8„  d   QhRRRRRR/# r‡   r   )r   s   "r   r   r·   $  s!   € ÷ "ñ "˜-ð "°ð "¸tñ "r   c                	óº  € VP                  ^ 4      pV P                  P                  V4      pV'       d~   VRVP                  4        pV P                  P                  W.4       RP                  W4P                  4       R P                  R4       Uu. uF  q`P                  V4      NK  	  up4      pV P                  V4      pVe   VP                  R8X  d   TpM\        P                  ! VR4      pV P                  P                  P                  R4       V P                  P                  Wƒ4       V P                  P                  P!                  4        R# u upi )rŠ   NrF   Ú
blockquote)rŒ   r¹   rº   Ústartr,   r�   rM   rI   Úcleanr?   r‚   r�   rš   r€   rŽ   r“   r•   )	r6   r:   rd   r]   r¡   ÚbeforerP   r–   r   s	   &&&      r   rg   ÚBlockQuoteProcessor.run$  s  € Ø—
‘
˜1“ˆØ�G‰G�N‰N˜5Ó!ˆßØ˜:˜AŸG™G›IÐ&ˆFà�K‰K×#Ñ# F¨HÔ5à—I‘IØ.3·G±G³I°JÐ.?×.EÑ.EÀdÔ.KÓLÑ.K d—‘˜DÖ!Ñ.KÑLóˆEð —.‘. Ó(ˆØÒ 7§;¡;°,Ô#>à‰Eô ×$Ò$ V¨\Ó:ˆEð 	�‰×Ñ×Ñ˜lÔ+Ø�‰×Ñ˜uÔ,Ø�‰×Ñ×ÑÖ!ùò Ms   ÂEc               ó    € V ^8„  d   QhRRRR/# )r
   rP   rC   r   r   )r   s   "r   r   r·   <  s   € ÷ ñ ˜#ð  #ñ r   c                óœ   € V P                   P                  V4      pVP                  4       R8X  d   R# V'       d   VP                  ^4      # V# )z%Remove `>` from beginning of a line. Ú>rH   )r¹   rŸ   rL   r    )r6   rP   r¡   s   && r   rÁ   ÚBlockQuoteProcessor.clean<  s;   € à�G‰G�M‰M˜$ÓˆØ�:‰:‹<˜3ÔÙßØ—7‘7˜1“:ÐàˆKr   r   N)rj   rk   rl   rm   rn   rv   rw   r¹   ra   rg   rÁ   ro   r   r   r   r)   r)     s)   † Ù à	�ŠÐ.Ó	/€BõRõ"÷0ñ r   r)   c                  óœ   a € ] tR tRt$ RtRtR]R&    RtR]R&    RtR	]R
&    RR.t	R]R&    R V 3R llt
R R ltR R ltR R ltRtV ;t# )r'   iG  zProcess ordered list blocks. rs   rC   ÚTAGÚ1Ú
STARTSWITHTr^   ÚLAZY_OLrr   re   ÚSIBLING_TAGSc               ó   € V ^8„  d   QhRR/# r1   r   )r   s   "r   r   ÚOListProcessor.__annotate__Y  s   € ÷ 	Pñ 	P˜{ñ 	Pr   c                	ó~  <€ \         SV `  V4       \        P                  ! R V P                  ^,
          ,          4      V n        \        P                  ! RV P                  ^,
          ,          4      V n        \        P                  ! RV P                  V P                  ^,          ^,
          3,          4      V n        R# )z^[ ]{0,%d}\d+\.[ ]+(.*)z!^[ ]{0,%d}((\d+\.)|[*+-])[ ]+(.*)z ^[ ]{%d,%d}((\d+\.)|[*+-])[ ]+.*N)ru   r7   rv   rw   r5   r¹   ÚCHILD_RErx   ©r6   r,   rz   s   &&€r   r7   ÚOListProcessor.__init__Y  s‰   ø€ Ü‰Ñ˜Ô ä—*’*Ð7¸4¿?¹?ÈQÕ;NÕOÓPˆŒäŸ
š
Ð#GØ$(§O¡O°aÕ$7õ$9ó :ˆŒô ŸšÐ$GØ%)§_¡_°d·o±oÈÕ6IÈAÕ6MÐ$Nõ%Oó PˆŽr   c               ó$   € V ^8„  d   QhRRRRRR/# r\   r   )r   s   "r   r   rÏ   d  ó!   € ÷ *ñ *˜=ð *°ð *¸ñ *r   c                	óJ   € \        V P                  P                  V4      4      # r4   ©r^   r¹   rŸ   r`   s   &&&r   ra   ÚOListProcessor.testd  ó   € Ü�D—G‘G—M‘M %Ó(Ó)Ð)r   c               ó$   € V ^8„  d   QhRRRRRR/# r‡   r   )r   s   "r   r   rÏ   g  s!   € ÷ 9"ñ 9"˜-ð 9"°ð 9"¸tñ 9"r   c                	ó  € V P                  VP                  ^ 4      4      pV P                  V4      pVEe�   VP                  V P                  9   Edq   TpVR
,          P
                  '       dV   \        P                  ! R4      pVR
,          P
                  Vn        RVR
,          n        VR
,          P                  ^ V4       V P                  VR
,          4      pVeW   VP                  '       dE   \        P                  ! VR
,          R4      pVP                  P                  4       Vn        RVn	        \        P                  ! VR4      pV P                  P                  P                  R4       VP                  ^ 4      p	V P                  P                  W‰.4       V P                  P                  P!                  4        MpVP                  R9   d   TpM\\        P                  ! WP"                  4      pV P$                  '       g+   V P&                  R8w  d   V P&                  VP(                  R&   V P                  P                  P                  R4       V F„  p
V
P+                  R	V P,                  ,          4      '       d'   V P                  P                  VR
,          V
.4       KQ  \        P                  ! VR4      pV P                  P                  WŠ.4       K†  	  V P                  P                  P!                  4        R# )rŠ   Nr‹   rH   rq   Ú	looselistrÊ   rÀ   rž   rG   r=   )rs   rr   )Ú	get_itemsrŒ   r?   r‚   rÍ   rB   r�   r‘   r’   Útailrš   Úlstripr,   r€   rŽ   r�   r•   rÉ   rÌ   rË   ÚattribrJ   r5   )r6   r:   rd   Úitemsr–   Úlstr‹   Úlchrq   Ú	firstitemÚitems   &&&        r   rg   ÚOListProcessor.rung  s%  € à—‘˜vŸz™z¨!›}Ó-ˆØ—.‘. Ó(ˆàÓ 7§;¡;°$×2CÑ2CÕ#CàˆCð �2�w�|�|ˆ|ô —M’M #Ó&�Ø˜R�Ÿ™�”Ø!��B•”Ø�B•—‘˜q !Ô$ð —.‘.  R¥Ó)ˆCØŠ 3§8§8 8Ü×$Ò$ S¨¥W¨cÓ2�ØŸ™Ÿ™Ó*�”Ø�”ô ×!Ò! # tÓ,ˆBØ�K‰K×Ñ×!Ñ! +Ô.ØŸ	™	 !›ˆIØ�K‰K×#Ñ# B¨Ô4Ø�K‰K×Ñ×#Ñ#Õ%Ø�Z‰Z˜<Ô'ð ‰Cô ×"Ò" 6¯8©8Ó4ˆCà—<—<�< D§O¡O°sÔ$:Ø&*§o¡o�—
‘
˜7Ñ#à�‰×Ñ×Ñ˜fÔ%ó ˆDØ�‰˜s 4§?¡?Õ2×3Ò3à—‘×'Ñ'¨¨B­°$°Ö8ô ×%Ò% c¨4Ó0�Ø—‘×'Ñ'¨¨FÖ3ñ ð 	�‰×Ñ×ÑÖ!r   c               ó    € V ^8„  d   QhRRRR/# )r
   r]   rC   r   re   r   )r   s   "r   r   rÏ   ¢  s   € ÷ ñ ˜sð  yñ r   c                óÊ  € . pVP                  R4       EFJ  pV P                  P                  V4      pV'       d…   V'       g[   V P                  R8X  dJ   \        P
                  ! R4      pVP                  VP                  ^4      4      P                  4       V n        VP                  VP                  ^4      4       K«  V P                  P                  V4      '       dc   VR,          P                  RV P                  ,          4      '       d    RP                  VR,          V4      VR&   EK  VP                  V4       EK.  RP                  VR,          V4      VR&   EKM  	  V# )zBreak a block into list items. rF   rs   z(\d+)rG   ú{}
{}r=   )rI   rÑ   rŸ   rÉ   rv   rw   r    rË   rK   rx   rJ   r5   r   )r6   r]   rá   rP   r¡   Ú
INTEGER_REs   &&    r   rÝ   ÚOListProcessor.get_items¢  sþ   € àˆØ—K‘K ×%ˆDØ—‘×#Ñ# DÓ)ˆAß÷  §¡¨TÔ!1ä!#§¢¨HÓ!5�JØ&0×&6Ñ&6°q·w±w¸q³zÓ&B×&HÑ&HÓ&J�D”Oà—‘˜QŸW™W Q›ZÖ(Ø—‘×%Ñ% d×+Ò+à˜•9×'Ñ'¨¨D¯O©OÕ(;×<Ò<à (§¡°°bµ	¸4Ó @�E˜"”Ià—L‘L ×&ð %ŸO™O¨E°"­I°tÓ<��b”	ñ) &ð* ˆr   )rÑ   rx   r¹   rË   )rj   rk   rl   rm   rn   rÉ   Ú__annotations__rË   rÌ   rÍ   r7   ra   rg   rÝ   ro   r¥   r¦   s   @r   r'   r'   G  sd   ø‡ Ù(à€CˆƒOØ6Ø€J�Óðð €GˆTÓØ*Ø# T˜l€L�)Ó*ð÷
	Pð 	Põ*õ9"÷vó r   r'   c                  óD   a € ] tR tRt$ RtRtR]R&    R V 3R lltRtV ;t	# )	r(   i½  zProcess unordered list blocks. rr   rC   rÉ   c               ó   € V ^8„  d   QhRR/# r1   r   )r   s   "r   r   ÚUListProcessor.__annotate__Ã  s   € ÷ Qñ Q˜{ñ Qr   c                	óŒ   <€ \         SV `  V4       \        P                  ! R V P                  ^,
          ,          4      V n        R# )z^[ ]{0,%d}[*+-][ ]+(.*)N)ru   r7   rv   rw   r5   r¹   rÒ   s   &&€r   r7   ÚUListProcessor.__init__Ã  s/   ø€ Ü‰Ñ˜Ô ä—*’*Ð7¸4¿?¹?ÈQÕ;NÕOÓPˆŽr   )r¹   )
rj   rk   rl   rm   rn   rÉ   rì   r7   ro   r¥   r¦   s   @r   r(   r(   ½  s   ø‡ Ù*à€CˆƒOØ6÷Qö Qr   r(   c                  óV   € ] tR tRtRt]P                  ! R4      tR R ltR R lt	Rt
R	# )
r$   iÉ  zProcess Hash Headers. z>(?:^|\n)(?P<level>#{1,6})(?P<header>(?:\\.|[^\\])*?)#*(?:\n|$)c               ó$   € V ^8„  d   QhRRRRRR/# r\   r   )r   s   "r   r   Ú HashHeaderProcessor.__annotate__Ï  s!   € ÷ +ñ +˜=ð +°ð +¸ñ +r   c                	óJ   € \        V P                  P                  V4      4      # r4   )r^   r¹   rº   r`   s   &&&r   ra   ÚHashHeaderProcessor.testÏ  s   € Ü�D—G‘G—N‘N 5Ó)Ó*Ð*r   c               ó$   € V ^8„  d   QhRRRRRR/# r‡   r   )r   s   "r   r   rô   Ò  s&   € ÷ Bñ B˜-ð B°ð B¸tñ Br   c           	     	ó   € VP                  ^ 4      pV P                  P                  V4      pV'       dþ   VRVP                  4        pW4P	                  4       R pV'       d   V P
                  P                  W.4       \        P                  ! VR\        VP                  R4      4      ,          4      pVP                  R4      P                  4       Vn        V'       dQ   V P
                  P                  P                  R4      '       d   V P                  V4      pVP!                  ^ V4       R# R# \"        P%                  RV,          4       R# )rŠ   Núh%drT   ÚheaderrÜ   zWe've got a problem header: %r)rŒ   r¹   rº   rÀ   Úendr,   r�   r�   rš   r>   r    rL   rB   r€   r�   rY   r’   ÚloggerÚwarn)r6   r:   rd   r]   r¡   rÂ   ÚafterÚhs   &&&     r   rg   ÚHashHeaderProcessor.runÒ  sñ   € Ø—
‘
˜1“ˆØ�G‰G�N‰N˜5Ó!ˆßØ˜:˜AŸG™G›IÐ&ˆFØŸ%™%›'˜(�OˆEßð —‘×'Ñ'¨°Ô9ä× Ò  ¨´°Q·W±W¸WÓ5EÓ1FÕ)FÓGˆAØ—W‘W˜XÓ&×,Ñ,Ó.ˆAŒFßà—;‘;×$Ñ$×,Ñ,¨[×9Ò9ð !ŸO™O¨EÓ2�EØ—‘˜a Ö'ñ ô �K‰KÐ8¸5Õ@ÖAr   r   N)rj   rk   rl   rm   rn   rv   rw   r¹   ra   rg   ro   r   r   r   r$   r$   É  s'   † Ù!ð 
�ŠÐUÓ	V€Bõ+÷Bñ Br   r$   c                  ól   € ] tR tRtRt]P                  ! R]P                  4      tR R lt	R R lt
RtR	# )
r%   ií  zProcess Setext-style Headers. z^.*?\n[=-]+[ ]*(\n|$)c               ó$   € V ^8„  d   QhRRRRRR/# r\   r   )r   s   "r   r   Ú"SetextHeaderProcessor.__annotate__ó  rÕ   r   c                	óJ   € \        V P                  P                  V4      4      # r4   r×   r`   s   &&&r   ra   ÚSetextHeaderProcessor.testó  rÙ   r   c               ó$   € V ^8„  d   QhRRRRRR/# r‡   r   )r   s   "r   r   r  ö  s!   € ÷ 3ñ 3˜-ð 3°ð 3¸tñ 3r   c                	ót  € VP                  ^ 4      P                  R4      pV^,          P                  R4      '       d   ^pM^p\        P                  ! VRV,          4      pV^ ,          P                  4       Vn        \        V4      ^8”  d+   VP                  ^ RP                  VR,          4      4       R# R# )rŠ   rF   Ú=rù   :r
   NNN)
rŒ   rI   rJ   r�   rš   rL   rB   r>   r’   rM   )r6   r:   rd   rO   rT   rÿ   s   &&&   r   rg   ÚSetextHeaderProcessor.runö  sŒ   € Ø—
‘
˜1“×#Ñ# DÓ)ˆà��8×Ñ˜s×#Ò#Ø‰EàˆEÜ×Ò˜V U¨U¥]Ó3ˆØ�q•—‘Ó!ˆŒÜˆu‹:˜Œ>à�M‰M˜!˜TŸY™Y u¨R¥yÓ1Ö2ñ r   r   N©rj   rk   rl   rm   rn   rv   rw   Ú	MULTILINEr¹   ra   rg   ro   r   r   r   r%   r%   í  s+   † Ù)ð 
�ŠÐ,¨b¯l©lÓ	;€Bõ*÷3ñ 3r   r%   c                  óp   € ] tR tRtRtRt]P                  ! ]]P                  4      t	R R lt
R R ltRtR	# )
r&   i  zProcess Horizontal Rules. zf^[ ]{0,3}(?=(?P<atomicgroup>(-+[ ]{0,2}){3,}|(_+[ ]{0,2}){3,}|(\*+[ ]{0,2}){3,}))(?P=atomicgroup)[ ]*$c               ó$   € V ^8„  d   QhRRRRRR/# r\   r   )r   s   "r   r   ÚHRProcessor.__annotate__  s!   € ÷ ñ ˜=ð °ð ¸ñ r   c                	ó\   € V P                   P                  V4      pV'       d	   W0n        R # R# )TF)Ú	SEARCH_RErº   rŸ   )r6   r:   r]   r¡   s   &&& r   ra   ÚHRProcessor.test  s$   € Ø�N‰N×!Ñ! %Ó(ˆßàŒJÙÙr   c               ó$   € V ^8„  d   QhRRRRRR/# r‡   r   )r   s   "r   r   r    s!   € ÷ (ñ (˜-ð (°ð (¸tñ (r   c                	ót  € VP                  ^ 4      pV P                  pVRVP                  4        P                  R4      pV'       d   V P                  P                  W.4       \        P                  ! VR4       W4P                  4       R P                  R4      pV'       d   VP                  ^ V4       R# R# )rŠ   NrF   r   )rŒ   rŸ   rÀ   r±   r,   r�   r�   rš   rû   rß   r’   )r6   r:   rd   r]   rŸ   ÚprelinesÚ	postliness   &&&    r   rg   ÚHRProcessor.run  s�   € Ø—
‘
˜1“ˆØ—
‘
ˆà˜˜%Ÿ+™+›-Ð(×/Ñ/°Ó5ˆßà�K‰K×#Ñ# F¨JÔ7ä×Ò˜ Ô&àŸ)™)›+˜,Ð'×.Ñ.¨tÓ4ˆ	ßà�M‰M˜!˜YÖ'ñ r   )rŸ   N)rj   rk   rl   rm   rn   r¹   rv   rw   r  r  ra   rg   ro   r   r   r   r&   r&     s0   † Ù%ð 
s€Bà—
’
˜2˜rŸ|™|Ó,€Iõ÷(ñ (r   r&   c                  ó2   € ] tR tRtRtR R ltR R ltRtR# )	r!   i&  z;Process blocks that are empty or start with an empty line. c               ó$   € V ^8„  d   QhRRRRRR/# r\   r   )r   s   "r   r   Ú EmptyBlockProcessor.__annotate__)  s!   € ÷ 3ñ 3˜=ð 3°ð 3¸ñ 3r   c                	óB   € V'       * ;'       g    VP                  R 4      # )rF   )rJ   r`   s   &&&r   ra   ÚEmptyBlockProcessor.test)  s   € ØŒy×2Ð2˜E×,Ñ,¨TÓ2Ð2r   c               ó$   € V ^8„  d   QhRRRRRR/# r‡   r   )r   s   "r   r   r  ,  s!   € ÷ ñ ˜-ð °ð ¸tñ r   c                	óº  € VP                  ^ 4      pRpV'       d&   RpVR,          pV'       d   VP                  ^ V4       V P                  V4      pVe†   VP                  R8X  ds   \	        V4      '       d`   V^ ,          P                  R8X  dF   \
        P                  ! RP                  V^ ,          P                  V4      4      V^ ,          n        R# R# R# R# R# )rŠ   z

rF   :ri   NNNr®   r   z{}{})	rŒ   r’   r?   r‚   r>   r   r¯   r   rB   )r6   r:   rd   r]   Úfillerr²   r–   s   &&&    r   rg   ÚEmptyBlockProcessor.run,  sª   € Ø—
‘
˜1“ˆØˆßð ˆFà˜B•iˆGßà—‘˜a Ô)Ø—.‘. Ó(ˆØÒ G§K¡K°5Ô$8Üˆw�<Š<˜G A�JŸN™N¨fÔ4ä"×/Ò/Ø—‘˜g a�jŸo™o¨vÓ6óˆG�A�JŽOñ 5‰<ñ %9Ñr   r   Nr´   r   r   r   r!   r!   &  s   † ÙFõ3÷ñ r   r!   c                  ól   € ] tR tRtRt]P                  ! R]P                  4      tR R lt	R R lt
RtR	# )
r*   iA  zProcess link references. z\^[ ]{0,3}\[([^\[\]]*)\]:[ ]*\n?[ ]*([^\s]+)[ ]*(?:\n[ ]*)?((["\'])(.*)\4[ ]*|\((.*)\)[ ]*)?$c               ó$   € V ^8„  d   QhRRRRRR/# r\   r   )r   s   "r   r   ÚReferenceProcessor.__annotate__G  ó!   € ÷ ñ ˜=ð °ð ¸ñ r   c                	ó   € R # ©Tr   r`   s   &&&r   ra   ÚReferenceProcessor.testG  ó   € Ùr   c               ó$   € V ^8„  d   QhRRRRRR/# )r
   r:   r;   rd   re   r   r^   r   )r   s   "r   r   r"  J  s!   € ÷ ñ ˜-ð °ð ¸tñ r   c                	óL  € VP                  ^ 4      pV P                  P                  V4      pV'       Ed]   VP                  ^4      P	                  4       P                  4       pVP                  ^4      P                  R4      P                  R4      pVP                  ^4      ;'       g    VP                  ^4      pWg3V P                  P                  P                  V&   W4P                  4       R P	                  4       '       d2   VP                  ^ W4P                  4       R P                  R4      4       VRVP                  4        P	                  4       '       d3   VP                  ^ VRVP                  4        P                  R4      4       R# VP                  ^ V4       R# )rŠ   Ú<rÆ   NrF   TF)rŒ   r¹   rº   r    rL   Úlowerrß   r±   r,   r   Ú
referencesrû   r’   rÀ   )r6   r:   rd   r]   r¡   ÚidÚlinkÚtitles   &&&     r   rg   ÚReferenceProcessor.runJ  s1  € Ø—
‘
˜1“ˆØ�G‰G�N‰N˜5Ó!ˆßˆ1Ø—‘˜“×!Ñ!Ó#×)Ñ)Ó+ˆBØ—7‘7˜1“:×$Ñ$ SÓ)×0Ñ0°Ó5ˆDØ—G‘G˜A“J×,Ð, !§'¡'¨!£*ˆEØ-1¨MˆD�K‰K�N‰N×%Ñ% bÑ)Ø—U‘U“W�Xˆ×$Ñ$×&Ò&à—‘˜a §u¡u£w x ×!7Ñ!7¸Ó!=Ô>Ø�Z�a—g‘g“iÐ ×&Ñ&×(Ò(à—‘˜a  z¨¯©«	Ð!2×!9Ñ!9¸$Ó!?Ô@Ùà�‰�a˜ÔÙr   r   Nr
  r   r   r   r*   r*   A  s.   † Ù$Ø	�ŠØgÐik×iuÑiuó
€Bõ÷ñ r   r*   c                  ó2   € ] tR tRtRtR R ltR R ltRtR# )	r+   i^  zProcess Paragraph blocks. c               ó$   € V ^8„  d   QhRRRRRR/# r\   r   )r   s   "r   r   ÚParagraphProcessor.__annotate__a  r#  r   c                	ó   € R # r%  r   r`   s   &&&r   ra   ÚParagraphProcessor.testa  r'  r   c               ó$   € V ^8„  d   QhRRRRRR/# r‡   r   )r   s   "r   r   r3  d  s!   € ÷ (ñ (˜-ð (°ð (¸tñ (r   c                	óT  € VP                  ^ 4      pVP                  4       '       Ed    V P                  P                  P	                  R4      '       d§   V P                  V4      pVeF   VP                  '       d$   RP                  VP                  V4      Vn        R# RV,          Vn        R# VP                  '       d$   RP                  VP                  V4      Vn        R# VP                  4       Vn        R# \        P                  ! VR4      pVP                  4       Vn        R# R# )rŠ   rž   Nré   z
%sr‹   )rŒ   rL   r,   r€   r�   r?   rÞ   r   rB   rß   r�   rš   )r6   r:   rd   r]   r–   r‹   s   &&&   r   rg   ÚParagraphProcessor.rund  sÉ   € Ø—
‘
˜1“ˆØ�;‰;�=‹=à�{‰{× Ñ ×(Ñ(¨×0Ò0ð Ÿ.™.¨Ó0�ØÒ&à—|—|�|Ø'/§¡°w·|±|ÀUÓ'K˜žà'-°¥~˜žð —{—{�{Ø&.§o¡o°f·k±kÀ5Ó&I˜žà&+§l¡l£n˜žô ×$Ò$ V¨SÓ1�ØŸ™›�–ñ7 r   r   Nr´   r   r   r   r+   r+   ^  s   † Ù%õ÷(ñ (r   r+   ) rn   Ú
__future__r   Úloggingrv   Úxml.etree.ElementTreer�   ÚElementTreeÚtypingr   r   rH   r   Úblockparserr   Úmarkdownr   Ú	getLoggerrü   r-   r/   r"   r#   r)   r'   r(   r$   r%   r&   r!   r*   r+   r   r   r   Ú<module>rA     sÞ   ðñ(õ #ã Û 	ß %Ð %ß %Ý Ý $çÝ!à	×	Ò	˜:Ó	&€õ÷"[ñ [ô|_˜.ô _ôD&˜ô &ôB(˜.ô (ôVs�^ô sôl	Q�^ô 	Qô!B˜.ô !BôH3˜Nô 3ô.(�.ô (ôD˜.ô ô6˜ô ô:#(˜ö #(r   