
    Civ                        S SK JrJr  S SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr  Sr\R                  " S5      \R                  " S	\R                  5      \R                  " S
5      \R                  " S5      \R                  " S5      \R                  " S5      \R                  " S\R                  5      \R                  " S\R                  -   S-   \R                   -   S-   \R                  5      /r\R                  " S5      \R                  " S\R                  5      \R                  " S5      \R                  " S5      \R                  " S5      \R                  " S5      /r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S 5      rS! rS" rS# rS$ r S% r!S& r" " S' S(\#5      r$ " S) S*\$5      r% " S+ S,\$5      r& " S- S.\$5      r' " S/ S0\$5      r( " S1 S2\$5      r) " S3 S4\$5      r* " S5 S6\$5      r+ " S7 S8\$5      r, " S9 S:\$5      r- " S; S<\#5      r. " S= S>\#5      r/\R                  " S?5      r0\1" S@ \$Re                  5        5       5      \/l3        g)A    )absolute_importunicode_literalsN)common)unescape_string)InlineParser)Node   .z ^<(?:script|pre|style)(?:\s|>|$)z^<!--z^<[?]z^<![A-Z]z^<!\[CDATA\[at  ^<[/]?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|title|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\s|[/]?[>]|$)z^(?:|z)\s*$z<\/(?:script|pre|style)>z-->z\?>>z\]\]>z<^(?:(?:\*[ \t]*){3,}|(?:_[ \t]*){3,}|(?:-[ \t]*){3,})[ \t]*$z^[#`~*+_=<>0-9-]z[^ \t\f\v\r\n]z^[*+-]z^(\d{1,9})([.)])z^#{1,6}(?:[ \t]+|$)z^`{3,}(?!.*`)|^~{3,}z^(?:`{3,}|~{3,})(?= *$)z^(?:=+|-+)[ \t]*$z
\r\n|\n|\rc                 <    [         R                  " [        U 5      SL $ )z6Returns True if string contains only space characters.N)research
reNonSpacess    c/var/www/html/backend/Backoffice_Marketplace/venv/lib/python3.13/site-packages/commonmark/blocks.pyis_blankr   4   s    99Z#t++    c                     U S;   $ )N) 	 r   s    r   is_space_or_tabr   9   s    r   c                 *    U[        U 5      :  a  X   $ g N)len)lnposs     r   peekr    =   s    
SW}wr   c                     U (       aY  U R                   (       a  gU R                  (       d$  U R                  S;   a  SU l        U R                  n O	SU l         gU (       a  MY  g)z[Returns true if block ends with a blank line,
descending if needed into lists and sublists.T)listitemF)last_line_blanklast_line_checkedt
last_child)blocks    r   ends_with_blank_liner)   D   sV       &&++&*E#$$E&*E# % r   c           	      N   U R                   U R                  S nSSSSSSU R                  S.nU R                  S:  a  g[        R                  " [
        U5      n[        R                  " [        U5      nU(       a  SUS'   UR                  5       S   US'   OfU(       a^  UR                  S	:w  d  UR                  S
5      S:X  a9  UnSUS'   [        UR                  S
5      5      US'   UR                  S5      US'   Og[        U R                   U R                  [        UR                  5       5      -   5      nUb  US:X  d  US:X  d  gUR                  S	:X  aR  [        R                  " [        U R                   U R                  [        UR                  5       5      -   S 5      (       d  gU R                  5         U R                  [        UR                  5       5      S5        U R                  nU R                   n U R                  S
S5        [        U R                   U R                   5      nU R                  U-
  S:  a  [#        U5      (       a  OOMY  [        U R                   U R                   5      SL n	U R                  U-
  n
U
S:  d  U
S
:  d  U	(       am  [        UR                  5       5      S
-   US'   Xpl        Xl        [#        [        U R                   U R                   5      5      (       a  U R                  S
S5        U$ [        UR                  5       5      U
-   US'   U$ )znParse a list marker and return data on the marker (type,
start, delimiter, bullet character, padding) or None.NT)typetightbullet_charstart	delimiterpaddingmarker_offsetr	   bulletr+   r   r-   	paragraph   1orderedr.      r/   r   r      r0   )current_linenext_nonspaceindentr   r   reBulletListMarkerreOrderedListMarkergroupr&   intr    r   r   advance_next_nonspaceadvance_offsetcolumnoffsetr   )parser	containerrestdatamm2nextcspaces_start_colspaces_start_offset
blank_itemspaces_after_markers              r   parse_list_markerrO   U   s    v3345DD }}
		$d+A	&	-BVggil]	+rxx{c/A VAGGAJWGGAJ[ $$f&:&:S^&KLEMUd]esl {{k!99v33c!'')nDEFH H    "
#aggi.$/}} --
a&V((&--8==++a/5!!  f))6==9TAJ --*::aQaggi.1,Y(+4 3 3V]]CDD!!!T* K aggi.+>>YKr   c                     U R                  S5      UR                  S5      :H  =(       aM    U R                  S5      UR                  S5      :H  =(       a#    U R                  S5      UR                  S5      :H  $ )z
Returns True if the two list items are of the same type,
with the same delimiter and bullet character.  This is used
in agglomerating list items into lists.
r+   r/   r-   )get)	list_data	item_datas     r   lists_matchrT      sd     == IMM&$99 Ek"immK&@@Em$	m(DDEr   c                   P    \ rS rSrSr\SS j5       r\SS j5       r\S 5       rSr	g)Block   Nc                     g r   r   rD   rE   s     r   	continue_Block.continue_       r   c                     g r   r   rD   r(   s     r   finalizeBlock.finalize   r\   r   c                     g r   r   r&   s    r   can_containBlock.can_contain   r\   r   r   NN
__name__
__module____qualname____firstlineno__accepts_linesstaticmethodrZ   r_   rc   __static_attributes__r   r   r   rV   rV      sA    M     r   rV   c                   P    \ rS rSrSr\SS j5       r\SS j5       r\S 5       rSr	g)	Document   FNc                     gNr   r   rY   s     r   rZ   Document.continue_       r   c                     g r   r   r^   s     r   r_   Document.finalize   r\   r   c                     U S:g  $ Nr#   r   rb   s    r   rc   Document.can_contain       F{r   r   re   rf   r   r   r   ro   ro      sA    M     r   ro   c                   P    \ rS rSrSr\SS j5       r\SS j5       r\S 5       rSr	g)	List   FNc                     grr   r   rY   s     r   rZ   List.continue_   rt   r   c                    UR                   nU(       a  [        U5      (       a!  UR                  (       a  SUR                  S'   g UR                   nU(       aW  [        U5      (       a2  UR                  (       d  UR                  (       a  SUR                  S'   OUR                  nU(       a  MW  UR                  nU(       a  M  g g )NFr,   )first_childr)   nxtrR   )rD   r(   r#   subitems       r   r_   List.finalize   s      #D))dhh+0( &&G'00HH/4EOOG,!++ ' 88D dr   c                     U S:H  $ rx   r   rb   s    r   rc   List.can_contain   rz   r   r   re   rf   r   r   r   r|   r|      sA    M   $  r   r|   c                   P    \ rS rSrSr\SS j5       r\SS j5       r\S 5       rSr	g)	
BlockQuote   FNc                     U R                   nU R                  (       dq  [        X R                  5      S:X  aX  U R	                  5         U R                  SS5        [        [        X R                  5      5      (       a  U R                  SS5        gg)Nr   r4   FTr   )r9   indentedr    r:   r@   rA   r   rC   )rD   rE   r   s      r   rZ   BlockQuote.continue_   sp      4,@,@#AS#H((*!!!U+tB677%%a.  r   c                     g r   r   r^   s     r   r_   BlockQuote.finalize   r\   r   c                     U S:g  $ rx   r   rb   s    r   rc   BlockQuote.can_contain   rz   r   r   re   rf   r   r   r   r   r      sA    M	 	    r   r   c                   P    \ rS rSrSr\SS j5       r\SS j5       r\S 5       rSr	g)	Item   FNc                     U R                   (       a   UR                  c  gU R                  5          gU R                  UR                  S   UR                  S   -   :  a0  U R                  UR                  S   UR                  S   -   S5        gg)Nr4   r1   r0   Tr   )blankr   r@   r;   rR   rA   rY   s     r   rZ   Item.continue_   s    <<$$,,,.  ]]y22?C(229= > ?!!##O4##I./046
  r   c                     g r   r   r^   s     r   r_   Item.finalize  r\   r   c                     U S:g  $ rx   r   rb   s    r   rc   Item.can_contain  rz   r   r   re   rf   r   r   r   r   r      sA    M      r   r   c                   P    \ rS rSrSr\SS j5       r\SS j5       r\S 5       rSr	g)	Headingi  FNc                     gNr4   r   rY   s     r   rZ   Heading.continue_       r   c                     g r   r   r^   s     r   r_   Heading.finalize!  r\   r   c                     gNFr   rb   s    r   rc   Heading.can_contain%      r   r   re   rf   r   r   r   r   r     A    M     r   r   c                   P    \ rS rSrSr\SS j5       r\SS j5       r\S 5       rSr	g)	ThematicBreaki*  FNc                     gr   r   rY   s     r   rZ   ThematicBreak.continue_-  r   r   c                     g r   r   r^   s     r   r_   ThematicBreak.finalize2  r\   r   c                     gr   r   rb   s    r   rc   ThematicBreak.can_contain6  r   r   r   re   rf   r   r   r   r   r   *  r   r   r   c                   P    \ rS rSrSr\SS j5       r\SS j5       r\S 5       rSr	g)		CodeBlocki;  TNc                 P   U R                   nU R                  nUR                  (       Ga9  US:*  =(       ak    [        U5      U R                  S-   :  =(       aI    X R                     UR
                  :H  =(       a'    [        R                  " [        X R                  S  5      nU(       aC  [        UR                  5       5      UR                  :  a  U R                  XR                  5        gUR                  nUS:  ae  [        [        X R                   5      5      (       aB  U R#                  SS5        US-  nUS:  a%  [        [        X R                   5      5      (       a  MB  gU[$        :  a  U R#                  [$        S5        gU R&                  (       a  U R)                  5         gg)N   r4   r7   r   T)r9   r;   	is_fencedr   r:   
fence_charr   r   reClosingCodeFencer>   fence_lengthr_   line_numberfence_offsetr   r    rC   rA   CODE_INDENTr   r@   )rD   rE   r   r;   matchis         r   rZ   CodeBlock.continue_>  s\     aK IB6//!33I''(I,@,@@I 		,b1E1E1F.GH  U[[]+y/E/EE	+=+=> **!eR0G H H))!T2FA !eR0G H H  $%%k48
 	 ,,.  r   c                    UR                   (       aN  UR                  nUR                  S5      nUSU nX#S-   S  n[        UR	                  5       5      Ul        XQl        O'[        R                  " SSUR                  5      Ul        S Ul        g )N
r   r4   (\n *)+$)	r   string_contentindexr   stripinfoliteralr   sub)rD   r(   contentnewline_pos
first_linerF   s         r   r_   CodeBlock.finalize[  s{    ??**G!---K ;/J?+,D()9)9);<EJ M FF;e6J6JKEM#r   c                     gr   r   rb   s    r   rc   CodeBlock.can_containk  r   r   r   re   rf   r   r   r   r   r   ;  sA    M 8 $ $  r   r   c                   P    \ rS rSrSr\SS j5       r\SS j5       r\S 5       rSr	g)		HtmlBlockip  TNc                 h    U R                   (       a!  UR                  S:X  d  UR                  S:X  a  gg)N      r4   r   )r   html_block_typerY   s     r   rZ   HtmlBlock.continue_s  s*    <<Y66!;&66!;r   c                 `    [         R                  " SSUR                  5      Ul        S Ul        g )Nr    )r   r   r   r   r^   s     r   r_   HtmlBlock.finalize{  s$    {B0D0DE#r   c                     gr   r   rb   s    r   rc   HtmlBlock.can_contain  r   r   r   re   rf   r   r   r   r   r   p  sA    M  $ $
  r   r   c                   P    \ rS rSrSr\SS j5       r\SS j5       r\S 5       rSr	g)		Paragraphi  TNc                 ,    U R                   (       a  S$ S$ )Nr4   r   )r   rY   s     r   rZ   Paragraph.continue_  s    LLq'a'r   c                 v   Sn[        UR                  S5      S:X  aj  U R                  R                  UR                  U R                  5      nU(       d  O2UR                  US  Ul        Sn[        UR                  S5      S:X  a  Mj  U(       a,  [        UR                  5      (       a  UR                  5         g g g )NFr   [T)r    r   inline_parserparseReferencerefmapr   unlink)rD   r(   has_reference_defsr   s       r   r_   Paragraph.finalize  s    " 5''+s2&&55$$fmm5C#(#7#7#=E !% 5''+s2 (5+?+?"@"@LLN #Ar   c                     gr   r   rb   s    r   rc   Paragraph.can_contain  r   r   r   re   rf   r   r   r   r   r     sA    M( (    r   r   c                       \ rS rSrSr/ SQr\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       rSrg)BlockStartsi  z}Block start functions.

Return values:
0 = no match
1 = matched container, keep going
2 = matched leaf, no more block starts
)block_quoteatx_headingfenced_code_block
html_blocksetext_headingthematic_break	list_itemindented_code_blockNc                    U R                   (       d  [        U R                  U R                  5      S:X  a  U R	                  5         U R                  SS5        [        [        U R                  U R                  5      5      (       a  U R                  SS5        U R                  5         U R                  SU R                  5        gg)Nr   r4   FTr   r   )
r   r    r9   r:   r@   rA   r   rC   close_unmatched_blocks	add_childrY   s     r   r   BlockStarts.block_quote  s    ##V%9%9:cA((*!!!U+tF$7$7GHH%%a.))+]F,@,@Ar   c                    U R                   (       GdH  [        R                  " [        U R                  U R
                  S  5      nU(       Ga  U R                  5         U R                  [        UR                  5       5      S5        U R                  5         U R                  SU R
                  5      n[        UR                  5       R                  5       5      Ul        [        R                  " SS[        R                  " SSU R                  U R                  S  5      5      Ul        U R                  [        U R                  5      U R                  -
  S5        gg)NFheadingz[ \t]+#+[ \t]*$r   z^[ \t]*#+[ \t]*$r7   r   )r   r   r   reATXHeadingMarkerr9   r:   r@   rA   r   r>   r   r   r   levelr   rC   r   )rD   rE   rH   s      r   r   BlockStarts.atx_heading  s   		, --f.B.B.CDFA,,.%%c!'')ne<--/",,Y8L8LM	"%aggioo&7"8	+-66&BFF+++FMMN;-=,>	(
 %%++,v}}<eEr   c                    U R                   (       d  [        R                  " [        U R                  U R
                  S  5      nU(       a  [        UR                  5       5      nU R                  5         U R                  SU R
                  5      nSUl
        X1l        UR                  5       S   Ul        U R                  Ul        U R                  5         U R!                  US5        gg)N
code_blockTr   Fr7   )r   r   r   reCodeFencer9   r:   r   r>   r   r   r   r   r   r;   r   r@   rA   )rD   rE   rH   r   s       r   r   BlockStarts.fenced_code_block  s    		##F$8$8$9:<A "1779~--/",, &"6"68	&*	#)5&'(wwy|	$)/	&,,.%%lE:r   c                    U R                   (       d  [        U R                  U R                  5      S:X  a  U R                  U R                  S  n[	        SS5       Hr  n[
        R                  " [        U   U5      (       d  M(  US:  d  UR                  S:w  d  M@  U R                  5         U R                  SU R                  5      nX4l          g   g)	N<r4      r   r3   r   r7   r   )r   r    r9   r:   ranger   r   reHtmlBlockOpenr&   r   r   rC   r   )rD   rE   r   
block_typebs        r   r   BlockStarts.html_block  s    ##V%9%9:cA##F$8$8$9:A#Aqk
99_Z8!<<Nikk[&@113 ((v}}EA(2% * r   c                 H   U R                   (       Gd  UR                  S:X  Ga  [        R                  " [        U R
                  U R                  S  5      nU(       GaE  U R                  5         [        UR                  S5      S:X  ah  U R                  R                  UR                  U R                  5      nU(       d  O0UR                  US  Ul	        [        UR                  S5      S:X  a  Mh  UR                  (       a  [        SUR                  5      nUR                  5       S   S:X  a  SOSUl        UR                  Ul	        UR#                  U5        UR%                  5         X@l        U R)                  [+        U R
                  5      U R,                  -
  S5        ggg)	Nr3   r   r   r   =r4   r7   F)r   r&   r   r   reSetextHeadingLiner9   r:   r   r    r   r   r   r   r   	sourceposr>   r   insert_afterr   tiprA   r   rC   )rD   rE   rH   r   r   s        r   r   BlockStarts.setext_heading  sQ   9;;+#=		###F$8$8$9:<A --/933Q73> ..==%44fmmEC/8/G/G/MI, 933Q73> ++"9i.A.ABG)*1)<A!GM-6-E-EG***73$$&!(J))F//06==@%Ir   c                 R   U R                   (       d  [        R                  " [        U R                  U R
                  S  5      (       a_  U R                  5         U R                  SU R
                  5        U R                  [        U R                  5      U R                  -
  S5        gg)Nr   Fr7   r   )r   r   r   reThematicBreakr9   r:   r   r   rA   r   rC   rY   s     r   r   BlockStarts.thematic_break  s    299!4!4V5I5I5J!K$M $M))+-v/C/CD!!F''(6==8%Ar   c                 ~   U R                   (       a  UR                  S:X  a  [        X5      nU(       a  U R                  5         U R                  R                  S:w  d  [        UR                  U5      (       d"  U R                  SU R                  5      nX!l        U R                  SU R                  5      nX!l        gg)Nr"   r#   r4   r   )	r   r&   rO   r   r  rT   rR   r   r:   )rD   rE   rG   s      r   r   BlockStarts.list_item*  s    9;;&#8$V7D--/ ::<<6)"9#6#6== & 0 09M9M NI*.' #,,VV5I5IJ	&*#r   c                    U R                   (       an  U R                  R                  S:w  aT  U R                  (       dC  U R	                  [
        S5        U R                  5         U R                  SU R                  5        gg)Nr3   Tr   r7   r   )	r   r  r&   r   rA   r   r   r   rC   rY   s     r   r   BlockStarts.indented_code_block>  sV    ??::<<;&%||!!+t4))+\6==9r   r   r   )rg   rh   ri   rj   __doc__METHODSrl   r   r   r   r   r   r   r   r   rm   r   r   r   r   r     s    	G    .  (     :    & 
 
r   r   c                   \    \ rS rSr0 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)ParseriL  c                    [        SSS/SS//5      U l        [        5       U l        U R                  U l        U R                  U l        SU l        SU l        SU l        SU l	        SU l
        SU l        SU l        SU l        SU l        SU l        SU l        U R                  U l        0 U l        SU l        [)        U5      U l        Xl        g )Ndocumentr4   r   r   FT)r   docr   block_startsr  oldtipr9   r   rC   rB   r:   next_nonspace_columnr;   r   r   partially_consumed_tab
all_closedlast_matched_containerr   last_line_lengthr   r   options)selfr"  s     r   __init__Parser.__init__M  s    
aVaV$45'M88hh$%!
&+#&*hh# !)'2r   c                 *   U R                   (       aI  U =R                  S-  sl        SU R                  S-  -
  nU R                  =R                  SU-  -  sl        U R                  =R                  U R
                  U R                  S S-   -  sl        g)zyAdd a line to the block at the tip.  We assume the tip
can accept lines -- that check should be done before calling this.r4   r	   r   Nr   )r  rC   rB   r  r   r9   )r#  chars_to_tabs     r   add_lineParser.add_linec  sr     &&KK1Ka0LHH##l(:;#D$5$5dkkl$Cd$JKr   c                    U R                   U R                  R                     R                  U5      (       db  U R	                  U R                  U R
                  S-
  5        U R                   U R                  R                     R                  U5      (       d  Mb  US-   n[        XR
                  U/SS//5      nSUl        U R                  R                  U5        X@l        U$ )zAdd block of type tag as a child of the tip.  If the tip can't
accept children, close and finalize it and try its parent,
and so on til we find a block that can accept children.r4   r   r   )	blocksr  r&   rc   r_   r   r   r   append_child)r#  tagrC   column_number	new_blocks        r   r   Parser.add_childn  s     ++dhhjj)55c::MM$((D$4$4q$89 ++dhhjj)55c:: 
 0 0-@1a&IJ	#%	 i(r   c                 ,   U R                   (       d  U R                  U R                  :w  aa  U R                  R                  nU R	                  U R                  U R
                  S-
  5        Xl        U R                  U R                  :w  a  Ma  SU l         gg)z(Finalize and close any unmatched blocks.r4   TN)r  r  r   parentr_   r   )r#  r2  s     r   r   Parser.close_unmatched_blocks|  sn    ++!<!<<++dkk4+;+;a+?@$ ++!<!<< #DO r   c                    U R                   nU R                  nU R                  n X   nUS:w  a6  US:X  a  US-  nUS-  nOUS:X  a  US-  nUSUS-  -
  -  nOO X   nUS:w  a  M6  US:H  =(       d    US:H  =(       d    US:H  U l        X l        X0l        U R                  U R                  -
  U l        U R                  [        :  U l	        g ! [         a    Sn Nf = f! [         a    Sn Nf = f)Nr   r   r4   r   r	   r   )
r9   rC   rB   
IndexErrorr   r:   r  r;   r   r   )r#  r9   r   colscs        r   find_next_nonspaceParser.find_next_nonspace  s   ((KK{{	A 2gCxQ	dQdQh( O 2g 4i7197R
$(!//$++={2+  	A	  s#   C C CCC,+C,c                 V    U R                   U l        U R                  U l        SU l        g r   )r:   rC   r  rB   r  )r#  s    r   r@   Parser.advance_next_nonspace  s$    ((//&+#r   c                    U R                   n X0R                     nUS:  Ga  Ub  US:X  a  SU R                  S-  -
  nU(       aV  XQ:  U l        [        X5      nU =R                  U-  sl        U =R                  U R                  (       a  SOS-  sl        X-  nOmSU l        U =R                  U-  sl        U =R                  S-  sl        US-  nO6SU l        U =R                  S-  sl        U =R                  S-  sl        US-  n X0R                     nUS:  a  Ub  M  g g g g ! [         a    S n GNf = f! [         a    S n N0f = f)Nr   r   r	   r4   F)r9   rC   r6  rB   r  min)r#  countcolumnsr9   r8  r'  chars_to_advances          r   rA   Parser.advance_offset  s5   ((	[[)A aiAMDy DKK!O42>2FD/'*5'?$KK#33KKK(C(C1JK-E27D/KK</KKK1$KQJE.3+q q 
 -+ aiAMiMi  	A	0  s#   D& 	D9 &D65D69EEc                 	   SnU R                   nU R                  U l        SU l        SU l        SU l        SU l        U =R                  S-  sl        [        R                  " SU5      b  [        R                  " SSU5      nXl         UR                  nU(       a  UR                  (       d  OUnU R                  5         U R                  UR                      R#                  X5      nUS:X  a  O+US:X  a  SnO"US	:X  a  [%        U5      U l        g[)        S
5      eU(       d  UR*                  nOM  X0R                  :H  U l        X0l        UR                   S:g  =(       a#    U R                  UR                      R0                  nU R2                  n[%        UR4                  5      nU(       d  U R                  5         U R6                  (       d=  [        R                  " [8        XR:                  S 5      (       d  U R=                  5         OxSn	X:  aR  [?        XwR4                  U	   5      " X5      n
U
S:X  a  U R                  nO!U
S	:X  a  U R                  nSnOU	S-  n	X:  a  MR  X:X  a  U R=                  5         O	U(       d  M  U R,                  (       d=  U R
                  (       d,  U R                  R                   S:X  a  U RA                  5         GOU RC                  5         U R
                  (       a"  UR                  (       a  SUR                  l"        UR                   nU R
                  =(       as    US:H  =(       db    US:H  =(       a    URF                  =(       dC    US:H  =(       a7    URH                  (       + =(       a    URJ                  S   S   U R                  :H  (       + nUnU(       a  Xl"        UR*                  nU(       a  M  U R                  U   R0                  (       a  U RA                  5         US:X  a  URL                  S:  ao  URL                  S::  a_  [        R                  " [N        URL                     U R                  U R                  S 5      (       a  U RQ                  X0R                  5        OfU R                  [%        U5      :  aM  U R
                  (       d<  U RS                  SU R                  5      nU R=                  5         U RA                  5         [%        U5      U l        g)zAnalyze a line of text and update the document appropriately.

We parse markdown text by calling this on each line of input,
then finalizing the document.
Tr   Fr4   z\u0000Nz\0u   �r7   z4continue_ returned illegal value, must be 0, 1, or 2r3   r   r   r#   r   r8   )*r  r  r  rC   rB   r   r  r   r   r   r   r9   r'   is_openr9  r+  r&   rZ   r   r!  
ValueErrorr2  r  r   rk   r  r  r   reMaybeSpecialr:   r@   getattrr(  r   r$   r   r   r	  r   reHtmlBlockCloser_   r   )r#  r   all_matchedrE   r'   rvmatched_leafstarts
starts_lenr   resr&   r$   conts                 r   incorporate_lineParser.incorporate_line  s     HH	hh
&+#A 99Y#/x,B
 "--J:#5#5"I##%Y[[)33DDBQwq#q(+B% NP P %,,	5 8 %3&/# {{k1 3KK	$22 	""(
 ##% ==99^R0B0B0C-DEE**,A.fnnQ&78I!8 $IAX $I#'LFA . **,3 ,: tzz88::$MMO '')zzi227;	$$4A #jj F-' E<'?I,?,?E6k D#///D))!,Q/43C3CC	F  D'6${{ $ {{1~++$,,1,,199'	(A(AB((68 8 MM)-=-=>s2w&tzz NN;D	**, #Br   c                     UR                   nSUl        X R                  /UR                  S'   U R                  UR
                     R                  X5        X0l        g)a  Finalize a block.  Close it and do any necessary postprocessing,
e.g. creating string_content from strings, setting the 'tight'
or 'loose' status of a list, and parsing the beginnings
of paragraphs for reference definitions.  Reset the tip to the
parent of the closed block.Fr4   N)r2  rD  r!  r	  r+  r&   r_   r  )r#  r(   r   aboves       r   r_   Parser.finalizeS  sK     )+@+@AEGG%%d2r   c                 f   UR                  5       nU R                  U R                  l        U R                  U R                  l        UR	                  5       nUbX  US   nUR
                  nUS   (       d'  US:X  d  US:X  a  U R                  R                  U5        UR	                  5       nUb  MW  gg)zl
Walk through a block & children recursively, parsing string content
into inline content where appropriate.
Nnodeenteringr3   r   )walkerr   r   r"  r   r&   parse)r#  r(   rX  eventrV  r&   s         r   process_inlinesParser.process_inlinesa  s    
 $(KK!%)\\"

=DA$!{*:a9n""((.JJLE r   c                 f   [        SSS/SS//5      U l        U R                  U l        0 U l        SU l        SU l        SU l        SU l        U R                  U l        SU l	        [        R                  " [        U5      n[        U5      n[        U5      S:  a  US   S:X  a  US-  n[        U5       H  nU R                  X$   5        M     U R                  (       a/  U R!                  U R                  U5        U R                  (       a  M/  U R#                  U R                  5        U R                  $ )z:The main parsing function.  Returns a parsed document AST.r  r4   r   r   r   )r   r  r  r   r   r!  rC   rB   r   r9   r   splitreLineEndingr   r  rP  r_   r[  )r#  my_inputlineslengthr   s        r   rY  Parser.parseq  s    
aVaV$4588 !&*hh#x0Ux=1"!5aKFvA!!%(+ xxMM$((F+ xxxTXX&xxr   )r  r   r  rB   r9   r  r;   r   r   r!  r   r   r:   r  rC   r  r"  r  r   r  N)rg   rh   ri   rj   r$  r(  r   r   r9  r@   rA   rP  r_   r[  rY  rm   r   r   r   r  r  L  s?    ! ,	L#3<,
>J(X! r   r  z#(.)([A-Z](?:[a-z]+|(?<=[a-z0-9].)))c              #      #    U  H5  n[         R                  S UR                  5      R                  5       U4v   M7     g7f)z\1_\2N)CAMEL_REr   rg   lower).0clss     r   	<genexpr>rj    s4      '% \\(CLL)//137%s   =?)4
__future__r   r   r   
commonmarkr   commonmark.commonr   commonmark.inlinesr   commonmark.noder   r   compile
IGNORECASEOPENTAGCLOSETAGr  rH  r  rF  r   r<   r=   r   r   r   r  r`  r   r   r    r)   rO   rT   objectrV   ro   r|   r   r   r   r   r   r   r   r   r  rf  dict__subclasses__r+  r   r   r   <module>rw     s   8 	  - +   JJtJJ2BMMBJJxJJxJJ{JJJJ	 	 JJ#%7(B
!* JJtJJ*BMM:JJvJJvJJtJJx  **CE/0ZZ)*
ZZ	* jj!45 ZZ 67 jj01ZZ :; jj!56 zz-(,
"BJEF  u  5 > 05 :e "E "2 2j , 6h& hVzV zz	 ::;< '##%' 'r   