
    Kir+                   `   d Z ddlmZ dZddlZddlZddlZddlZddlZddl	Z	ddl
mc mZ ddlmZ ddl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mZ dd
lmZmZmZm Z m!Z!m"Z" dZ#e#rddlm$Z$  G d dejJ                        Z% G d dejL                        Z' G d dejP                        Z)y)z-Common definitions for Docutils HTML writers.    )annotationsreStructuredTextN)Path)frontend	languagesnodesutilswriters) length_or_percentage_or_unitless)PIL)
writer_aux)latex2mathml	math2htmltex2mathml_externunichar2texwrap_math_code	MathErrorF)	Transformc                  v    e Zd ZdZ	 ddddgddifdd	gd
dej
                  dfddgddej
                  dfddgdej
                  dfddgddej                  dfddgdddfdd gd!j                         d"d#d$fd%d&gd'd(gd(d)d*d+fd,d-gg d.d/d)d$fd0d1gddej                  dfd2d3gd4ddfd5d6gddej                  dfd7d8gd9ddfd:d;gd<d=d>fd?d@gdAdBej                  dCfdDdEgdFdej                  dfdGdHgdIddfdJdKgdej                  dLfffZ	dMdNiZ
dOZdPZdQZdRZdX fdSZdYdTZdZdUZdV ZdY fdWZ xZS )[Writer)htmlxhtmlzHTML Writer OptionsNzFSpecify the template file (UTF-8 encoded). (default: writer dependent)z
--templatemetavarz<file>zhComma separated list of stylesheet URLs. Overrides previous --stylesheet and --stylesheet-path settings.z--stylesheetz<URL[,URL,...]>stylesheet_path)r   	overrides	validatorzComma separated list of stylesheet paths. Relative paths are expanded if a matching file is found in the --stylesheet-dirs. With --link-stylesheet, the path is rewritten relative to the output HTML file. (default: writer dependent)z--stylesheet-pathz<file[,file,...]>
stylesheetzComma-separated list of directories where stylesheets are found. Used by --stylesheet-path when expanding relative path arguments. (default: writer dependent)z--stylesheet-dirsz<dir[,dir,...]>)r   r   zvEmbed the stylesheet(s) in the output HTML file.  The stylesheet files must be accessible during processing. (default)z--embed-stylesheetT
store_true)defaultactionr   z3Link to the stylesheet(s) in the output HTML file. z--link-stylesheetembed_stylesheetstore_false)destr    z}Specify the initial header level. Does not affect document title & subtitle (see --no-doc-title).(default: writer dependent).z--initial-header-levelz1 2 3 4 5 6 auto2z<level>)choicesr   r   zYFormat for footnote references: one of "superscript" or "brackets". (default: "brackets")z--footnote-referencessuperscriptbracketsz<format>trim_footnote_reference_space)r%   r   r   r   zyFormat for block quote attributions: one of "dash" (em-dash prefix), "parentheses"/"parens", or "none". (default: "dash")z--attributiondashparenthesesparensnoner*   zgRemove extra vertical whitespace between items of "simple" bullet lists and enumerated lists. (default)z--compact-listsz3Disable compact simple bullet and enumerated lists.z--no-compact-listscompact_listszORemove extra vertical whitespace between items of simple field lists. (default)z--compact-field-listsz#Disable compact simple field lists.z--no-compact-field-listscompact_field_listszClass value(s) assigned to all tables. Defined styles: borderless, booktabs, align-left, align-center, align-right, colwidths-auto, colwidths-grid.z--table-stylez<style> )r   r   zfMath output format (one of "MathML", "HTML", "MathJax", or "LaTeX") and option(s). (default: "MathML")z--math-outputz<format [option(s)]>MathML)r   r   r   zPrepend an XML declaration. z--xml-declarationFzOmit the XML declaration.z--no-xml-declarationxml_declarationzyObfuscate email addresses to confuse harvesters while still keeping email links usable with standards-compliant browsers.z--cloak-email-addresses)r    r   output_encoding_error_handlerxmlcharrefreplace)templatezhtml base writer)r
   zhtml writers)head_prefixheadr   body_prefixbody_pre_docinfodocinfobodybody_suffixtitlesubtitleheaderfootermetafragmenthtml_prolog	html_head
html_titlehtml_subtitle	html_bodyc                D    t         |          t        j                  gz   S N)superget_transformsr   Admonitions)self	__class__s    g/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/docutils/writers/_html_base.pyrK   zWriter.get_transforms   s    w%':+A+A*BBB    c           	         | j                  | j                        x| _        }| j                  j                  |       | j                  D ]  }t        | |t        ||              | j                         | _        y rI   )	translator_classdocumentvisitor	walkaboutvisitor_attributessetattrgetattrapply_templateoutput)rM   rT   attrs      rO   	translatezWriter.translate   sg    !%!6!6t}}!EEw(++ 	8DD$ 67	8))+rP   c                    t        | j                  j                  j                        }|j	                  d      }|| j                         z  S )Nutf-8encoding)r   rS   settingsr5   	read_textinterpolation_dict)rM   template_pathr5   s      rO   rY   zWriter.apply_template   sC    T]]33<<= **G*<$11333rP   c                    i }| j                   j                  }| j                  D ]/  }dj                  t	        | |            j                  d      ||<   1 |j                  |d<   t        j                  |d<   |S )Nr0   
r`   version)	rS   ra   rV   joinrX   rstripoutput_encodingdocutils__version__)rM   subsra   r[   s       rO   rc   zWriter.interpolation_dict   su    ==))++ 	CDt!45<<TBDJ	C#33Z"..YrP   c                    t         |           | j                  D ]*  }dj                  t	        | |            | j
                  |<   , y Nr0   )rJ   assemble_partsrV   rh   rX   parts)rM   partrN   s     rO   rp   zWriter.assemble_parts   sA     ++ 	<D!wwwtT':;DJJt	<rP   )returnzlist[type[Transform]]rs   None)rs   str)__name__
__module____qualname__	supportedr   validate_comma_separated_listvalidate_booleansplitvalidate_math_outputsettings_specsettings_defaultsrelative_path_settingsconfig_sectionconfig_section_dependenciesrV   rK   r\   rY   rc   rp   __classcell__rN   s   @rO   r   r   -   s   !I' 	(.h

!L
'6G >>@
A
(
 
) >>@
A( 
' >>@	
AB
 l 113
4
 @
%
?
A) $
$(..0S!	
"."
#$j1j 79
: 
?5	
62
l 113
4
 @
 "m
<
>"
#l 113
4
 0%
&(M
B
D, 
B
/
1;
, 557
8
 )
| 113
4 &!
"$
>
@J$
%!0I0I
J
LgW	[
Mz 9:MN*'N"=C,4
< <rP   r   c                      e Zd ZdZdZdZdZdej                   dZ	ddd	Z
d
ZdZ	 dZdZ ej                   d      Z ej                   d      ZdZ ed      d ed      d ed      d ed      d ed      diZ	 dZ	 d fdZd Z ej                   d      fdZd  Zd! Zd" Zdd#Zdd$Zdd%Zdd&Z dd'Z!dd(Z"dd)Z#ddd*Z$dd+Z%dd,Z&dd-Z'dd.Z(dd/Z)dd0Z*dd1Z+dd2Z,dd3Z-ddd4Z.d5d6d6d7d8Z/dd9Z0dd:Z1dd;Z2dd<Z3dd=Z4dd>Z5dd?Z6dd@Z7ddAZ8dB Z9ddCZ:ddDZ;ddEZ<ddFZ=ddGZ>ddHZ?ddIZ@ddJZAddKZBddLZCddMZDddNZE ej                   dO      j                  fdPZGddQZHddRZIddSZJddTZKddUZLddVZMddWZNddXZOddYZPddZZQdd[ZRdd\ZSdd]ZTdd^ZUdd_ZVdd`ZWddaZXddbZYddcZZdddZ[ddeZ\ddfZ]dddgZ^ddhZ_ddiZ`ddjZaddkZbddlZcddmZdddnZeddoZfddpZgddqZhddrZiddsZjddtZkdduZlddvZmddwZnddxZoddyZpddzZqdd{Zrdd|Zsdd}Ztdd~ZuddZvddZwddZxddZyd ZzddZ{ddZ|ddZ}ddZ~ddZddZddZddZddZddZddZddZddZddZddZddZddZd ZddZddZddZdddgfdddgfdddgfddg fddddgfdZd ZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZddZd ZddZddZddZddZddZddZddZddZddZddÄZddĄZddńZddƄZddǄZddȄZddɄZddʄZdd˄Zd̄ Zdd̈́Zdd΄ZddτZddЄZddфZdd҄ZddӄZddԄZddՄZddքZddׄZdd؄ZddلZddڄZddۄZdd܄Zdd݄ZddބZdd߄Zd ZddZddZddZddZddZddZddZddZddZddZd Zۈ xZS )HTMLTranslatoram  
    Generic Docutils to HTML translator.

    See the `html4css1` and `html5_polyglot` writers for full featured
    HTML translators.

    .. IMPORTANT::
      The `visit_*` and `depart_*` methods use a
      heterogeneous stack, `self.context`.
      When subclassing, make sure to be consistent in its use!

      Examples for robust coding:

      a) Override both `visit_*` and `depart_*` methods, don't call the
         parent functions.

      b) Extend both and unconditionally call the parent functions::

           def visit_example(self, node):
               if foo:
                   self.body.append('<div class="foo">')
               html4css1.HTMLTranslator.visit_example(self, node)

           def depart_example(self, node):
               html4css1.HTMLTranslator.depart_example(self, node)
               if foo:
                   self.body.append('</div>')

      c) Extend both, calling the parent functions under the same
         conditions::

           def visit_example(self, node):
               if foo:
                   self.body.append('<div class="foo">
')
               else: # call the parent method
                   _html_base.HTMLTranslator.visit_example(self, node)

           def depart_example(self, node):
               if foo:
                   self.body.append('</div>
')
               else: # call the parent method
                   _html_base.HTMLTranslator.depart_example(self, node)

      d) Extend one method (call the parent), but don't otherwise use the
         `self.context` stack::

           def depart_example(self, node):
               _html_base.HTMLTranslator.depart_example(self, node)
               if foo:
                   # implementation-specific code
                   # that does not use `self.context`
                   self.body.append('</div>
')

      This way, changes in stack use will not bite you.
    z<!DOCTYPE html>
zW<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="%(lang)s" lang="%(lang)s">
<head>
z<meta charset="%s" />
z)<meta name="generator" content="Docutils z': https://docutils.sourceforge.io/" />
divrS   )tagnameCLASSz2<script type="text/javascript" src="%s"></script>
z-file:/usr/share/javascript/mathjax/MathJax.jsz4<link rel="stylesheet" href="%s" type="text/css" />
z%<style type="text/css">

%s
</style>
z[^ \n]+| +|\nz.+\W\W.+|[-?].+lang&z&amp;<z&lt;"z&quot;>z&gt;@&#64;)z	video/mp4z
video/webmz	video/oggc                    t         |   |       | j                  }t        j                  |j
                  |j                        | _        |j                  dk(  r@t        |      r-|d   j                  t        j                  dd      rd| _        n"d| _        nt        |j                        | _        d}t        |d	d       .|j                  rd
}t!        j"                  d| dt$        d       t        |d|      | _        t)        | j                  j*                  t,              r8t/        j0                  | j                  j*                        | j                  _        | j                  j*                  \  | _        | _        g | _        dg| _        g | _        dg| _        g | _        g | _        g | _         g | _!        g | _"        g | _#        g | _$        | jJ                  g| _&        g | _'        g | _(        g | _)        | jT                  g| _+        tY        jZ                  |      D cg c]  }| j]                  |       c}| _/        g | _        g | _0        |jb                  rf| jD                  je                  tY        jb                  |jf                               | jN                  je                  tY        jb                  d             |jf                  rP|jf                  ji                         dk7  r3| jV                  jk                  d| jJ                  |jf                  z         g | _6        	 d| _7        g | _8        d| _9        d| _:        d| _;        d| _<        d| _=        d| _>        d| _?        d| _@        g | _A        g | _B        y c c}w )Nautor   TF)include_selfdescend      linkembed_imagesembedz`The configuration setting "embed_images"
  will be removed in Docutils 2.0. Use "image_loading: z".   )
stacklevelimage_loadingz</head>
<body>
z</body>
</html>
z%sunicode)CrJ   __init__ra   r   get_languagelanguage_codereporterlanguageinitial_header_levellen	next_noder   r=   intrX   r   warningswarnFutureWarningr   
isinstancemath_outputrv   r   r~   math_optionsr;   r8   r9   r<   r:   r@   rB   r7   r6   r?   rG   content_typerD   rC   rF   rE   	generatorrA   r	   get_stylesheet_liststylesheet_callr   r>   r2   appendrj   lowerinsertcontextsection_levelcolspecs	compact_pcompact_simplecompact_field_list
in_docinfo
in_sidebarin_document_title	in_mailtoauthor_in_authorsmath_headermessages)rM   rS   ra   _image_loading_defaultpathrN   s        rO   r   zHTMLTranslator.__init__$  s0   "==!..$22H4E4EG((F28}!!6!6KKdE "7 "C,-),-)(+H,I,I(JD%!'8^T2>$$)0&MM 11G0HL (A7 %X%46LN dmm//5(0(E(E,0MM,E,E)GDMM% #mm77				 	/0 "01	++,^^$	','@'@'JL#  //5 L
####%%h&>&>?A##%%d+-$$((..0I=IIQ 1 1H4L4L LM 	
 #"'!"!&	CLs   "M;c                    dj                  | j                  | j                  z   | j                  z   | j                  z   | j
                  z   | j                  z   | j                  z   | j                  z         S ro   )	rh   r6   r7   r   r8   r9   r:   r;   r<   rM   s    rO   astextzHTMLTranslator.astext}  sv    wwt''$))3)+/+;+;<../15> # &*%5%56 7 	7rP   z[
	]c                    | j                  |j                  d|            }| j                  r:| j                  j                  r$|j                  dd      }|j                  dd      }|S )z6Cleanse, HTML encode, and return attribute value text. %40z&#37;&#52;&#48;.z&#46;)encodesubr   ra   cloak_email_addressesreplace)rM   text
whitespaceencodeds       rO   attvalzHTMLTranslator.attval  sV     ++jnnS$78>>dmmAAooe->?Gooc73GrP   c                J    |j                  dd      }|j                  dd      S )z;Try to hide the link text of a email link from harversters.r   z<span>&#64;</span>r   z<span>&#46;</span>r   )rM   addrs     rO   cloak_emailzHTMLTranslator.cloak_email  s'     ||G%9:||C!566rP   c                &    |j                  dd      S )z*Try to hide a mailto: URL from harvesters.r   r   r   )rM   uris     rO   cloak_mailtozHTMLTranslator.cloak_mailto  s    
 {{3&&rP   c                N    t        |      }|j                  | j                        S )z-Encode special characters in `text` & return.)rv   r\   special_characters)rM   r   s     rO   r   zHTMLTranslator.encode  s"    
 4y~~d5566rP   c                   d}i }|D ]"  }||v st        j                  ||         ||<   $ d|v rAt        |      dk  r3| j                  |      }|r t	        ||      D ]  \  }}||vs|df||<    |j                  dd      dz  }i }g }	|j                         D ]9  \  }\  }}
||z  }|
r|	j                  | d|d|
 d       +t        |       ||<   ; |	rd	j                  |	      |d
<   |S )a  Determine the image size from node arguments or the image file.

        Return as dictionary of <img> attributes,
        e.g., ``{height': '32', 'style': 'width: 4 em;'}``.

        Auxiliary method called from `self.visit_image()`.
        Provisional.
        widthheightscaler   r0   d   : g;r   style)
r   parse_measurer   read_size_with_PILzipgetitemsr   roundrh   )rM   node
dimensionsmeasures	dimensionimgsizevaluescaling_factor	size_attsdeclarationsunits              rO   
image_sizezHTMLTranslator.image_size  s4    )
# 	KID &+&9&9$y/&J#	K d?s8}q0--d3G(+J(@ :$Iu 0/4bk+:
 '3/#5	(0(8 	9$I}t^#E##ykE!9TF!$DE*/,	)$	9 !$,!7IgrP   c                   g }|d   }t         s|j                  d       t        j                  |      d   | j                  v r|j                  d       | j
                  j                  s|j                  d       |sk	 | j                  |      }t         j                  j                  |      5 }|j                  }d d d        | j
                  j                  j                  |       |rZdd| dg|}| j"                  j                  | j$                  j&                  j)                  d	j+                  |      |
             y S # 1 sw Y   xY w# t        t        t        f$ r$}|j                  t!        |             Y d }~d }~ww xY w)Nr   z Requires Python Imaging Library.r   zPIL cannot read video images.z Reading external files disabled.zCannot scale image!zCould not get size from "z":z
  	base_node)r   r   	mimetypes
guess_type
videotypesra   file_insertion_enableduri2pathImageopensizerecord_dependenciesadd
ValueErrorOSErrorUnicodeEncodeErrorrv   r   rS   r   warningrh   )	rM   r   reading_problemsr   	imagepathimgr   errmsgs	            rO   r   z!HTMLTranslator.read_size_with_PIL  sc   
 5k##$FG$Q'4??:##$CD}}33##$FGA MM#.	YY^^I. '#!hhG'
 1155i@(.se26&$&C MM  !7!7!?!?%+[[%5 "@ "G H' ');< 2 ''C112s0   >0E .E;E EE F
&FF
c           	        ddd}|j                         D ]  \  }}t        j                  ||        	 t        j                  |      }d|v ri }	|j                  dd	      j                  d
      }
|d   j                  d
      }|
|z   D ]I  }|j                         s|j                  d      \  }}}|j                         |	|j                         <   K |j                  ddj                  d |	j                         D                     dD ]  }||v s|j                  |||           d|v s|d   r\|j                  dd	      j                         }||d   |j                  dg       z   z  }|j                  ddj                  |             d|v rC|j!                  d|      1t        j"                  d      }|d   |_        |j'                  d|       t        j(                  |d      S # t        j                  $ rU}| j
                  j                  | j                  j                  j                  d|d    d| |             |cY d }~S d }~ww xY w)Nzhttp://www.w3.org/2000/svgzhttp://www.w3.org/1999/xlink)r0   xlinkzCannot parse SVG image "r   ":
  r   r   r0   r   :r   c              3  2   K   | ]  \  }}| d | d  yw)r   r   N ).0kvs      rO   	<genexpr>z-HTMLTranslator.prepare_svg.<locals>.<genexpr>  s*      &L*.!Q *+2aSl &Ls   r   classesclassaltr=   r   r   r_   )r   ETregister_namespace
fromstring
ParseErrorr   r   rS   r   errorr   r}   strip	partitionsetrh   findElementr   r   tostring)rM   coder   attssvg_nskeyr   svgr  declaration_dictsvg_declarationsnode_declarationsdeclaration_r   r  	svg_titles                    rO   prepare_svgzHTMLTranslator.prepare_svg  sM   
 39; !,,. 	.JC!!#u-	.	--%C d?!"www399#> $W 3 3C 8/2CC >"((* + 5 5c :Q05 -	>
 GGGSXX &L2B2H2H2J&L L M, 	4ID 	4	?3	4 Ygggr*002GtI)R)@@@GGGGSXXg./D=SXXgv6>

7+I!%[INJJq)${{333; }} 	MM  !7!7!=!=*4;-vcUC "> "  ! K		s   G0 0IA
IIIc                .   |t        | j                  j                        }| j                  j                  rP	 t	        |      j                  d      }| j                  j                  j                  |       | j                  |z  S |r*t        j                  | j                  j                  |      }| j                   | j#                  |      z  S # t        $ r9}d| }| j                  j                  j                  |       d|z  cY d}~S d}~ww xY w)z8Return code to reference or embed stylesheet file `path`Nr^   r_   zCannot embed stylesheet: z<--- %s --->
)boolra   r   r!   r   rb   r  r  r  rS   r   r  embedded_stylesheetr	   relative_pathoutput_pathstylesheet_linkr   )rM   r   adjust_pathcontentr  r  s         rO   r   zHTMLTranslator.stylesheet_call  s    t}}<<=K==))<t*...@ 1155d;++g55&&t}}'@'@$GD##dkk$&777  .1#7&&,,S1'#--.s   C 	D.D	DDc           
        |j                         }g }i }|j                         D ]  \  }}	|	||j                         <    |j                  dg       }
g }|j                  dg       |j                  dd      j	                         z   D ]\  }|j                  d      r" |j                  |j                  d             6|j                         sG||
vsL|
j                  |       ^ |r|d   || j                  <   d}t        |t        j                        r|
D cg c]	  }||vs| }
}|
rdj                  |
      |d<   d|vsJ |j                  d	g       }|j                  |j                  d	g              |rj|d   |d<   |d
d D ]Z  }|s9t        |t        j                  t        j                   t        j                  f      r|j                  d|z         S|d|z  z  }\ t#        |j                               }|g}|D ]  \  }}	|	J t        |	t$              r\|	D cg c]  }t'        |       }}|j                  |j                         d| j)                  dj                  |            d       v|j                  |j                         d| j)                  t'        |	            d        |rd}nd}dj                  |       ddj                  |       | d| S c c}w c c}w )z
        Construct and return a start tag given a node (id & class attributes
        are extracted), tag name, and optional attributes.
        r  r  r0   z	language-r   )colwidths-autocolwidths-givencolwidths-gridr   ididsr   Nz<span id="%s"></span>z="r   z /r   r   )r   r   popr   r}   
startswithr   removeprefixr  lang_attributer   r   tablerh   extend
Sequentialr:   sortedlistrv   r   )rM   r   r   suffixempty
attributesprefixr&  namer   r  r   clsinternalr>  r=  attlistrq   r  valuesinfixs                        rO   starttagzHTMLTranslator.starttag&  s   
 --/'--/ 	'MT5!&D	'((9b)	88Ir*TXXgr-B-H-H-JJ 	$C~~k* 	  !1!1+!>?G!3s#		$
 (1!D$$%JdEKK(&-EsH1DsEGEHHW-DM4hhub!

488E2&'QDJ!"g ; Jte.>.>.3mm.3kk.; < MM"9B">? 5::F; &	" 
	DKD% $$$%&*/0Q#a&00$**,*.++chhv6F*GI J $**,*.++c%j*AC D
	D EE''&/"!CHHUO#4UG1VHEEQ F< 1s   	K)$K)!K.c                0     | j                   |||fddi|S )z1Construct and return an XML-compatible empty tag.rI  T)rR  )rM   r   r   rH  rJ  s        rO   emptytagzHTMLTranslator.emptytagh  s!    t}}T7FM$M*MMrP   c                2   t        |j                  t        j                  t        j                  f      ry | j
                  rV| j
                  j                  d      }| j                  j                  |d   k  r|j                  |        | j
                  rUy y )Nr   level)
r   parentr   system_messageentryr   r?  ra   report_levelrU   )rM   r   messages      rO   report_messageszHTMLTranslator.report_messagesl  sk    dkkE$8$8%++#FGmmmm''*G}}))WW-==!!$' mmrP   c                    |D cg c]  }t        |t        j                        r|! }}	 ||   }|d   j	                  |       yc c}w # t        $ r Y yw xY w)z
        Set class `class_` on the visible child no. index of `node`.
        Do nothing if node has fewer children than `index`.
        Nr  )r   r   	Invisible
IndexErrorr   )rM   r   class_indexnchildrenchilds          rO   set_class_on_childz!HTMLTranslator.set_class_on_childt  sa    
  $J!:a+IAJJ	UOE 	i' K  		s   AAA 	AAc                    |j                         }| j                  |      }| j                  r'| j                  j                  r| j                  |      }| j                  j                  |       y rI   )r   r   r   ra   r   r   r;   r   )rM   r   r   r   s       rO   
visit_TextzHTMLTranslator.visit_Text  sP    {{}++d#>>dmmAA&&w/G		!rP   c                     y rI   r  rM   r   s     rO   depart_TextzHTMLTranslator.depart_Text      rP   c                \    | j                   j                  | j                  |dd             y )Nabbrr0   r;   r   rR  ri  s     rO   visit_abbreviationz!HTMLTranslator.visit_abbreviation  s!    		tVR89rP   c                :    | j                   j                  d       y )Nz</abbr>r;   r   ri  s     rO   depart_abbreviationz"HTMLTranslator.depart_abbreviation      		#rP   c                \    | j                   j                  | j                  |dd             y )Nacronymr0   rn  ri  s     rO   visit_acronymzHTMLTranslator.visit_acronym  s!    		tY;<rP   c                :    | j                   j                  d       y )Nz
</acronym>rq  ri  s     rO   depart_acronymzHTMLTranslator.depart_acronym      		&rP   c                    | j                  |dd       | j                  j                  | j                  |ddd             y )NaddressFrA   prer0   rH  r   )visit_docinfo_itemr;   r   rR  ri  s     rO   visit_addresszHTMLTranslator.visit_address  sD    ie<		tU.0	 ' C 	DrP   c                Z    | j                   j                  d       | j                          y Nz
</pre>
)r;   r   depart_docinfo_itemri  s     rO   depart_addresszHTMLTranslator.depart_address  s     		&  "rP   c                `    | j                   j                  | j                  |ddg             y )Naside
admonitionr  rn  ri  s     rO   visit_admonitionzHTMLTranslator.visit_admonition  s%    		tW|nMNrP   c                :    | j                   j                  d       y N	</aside>
rq  ri  s     rO   depart_admonitionz HTMLTranslator.depart_admonition  ry  rP   )u   —r0   )())r0   r0   r)   c                    | j                   | j                  j                     \  }}| j                  j	                  |       | j
                  j	                  | j                  |d|d             y )Npattributionr   )attribution_formatsra   r  r   r   r;   rR  )rM   r   rK  rH  s       rO   visit_attributionz HTMLTranslator.visit_attribution  sY    11$--2K2KLF#		MM$V=MA	CrP   c                p    | j                   j                  | j                  j                         dz          y N</p>
r;   r   r   r?  ri  s     rO   depart_attributionz!HTMLTranslator.depart_attribution  s&    		))+h67rP   c                    t        |j                  t        j                        s| j	                  |d       | j
                  j                  d       y )Nauthorz<p>)r   rW  r   authorsr  r;   r   ri  s     rO   visit_authorzHTMLTranslator.visit_author  s6    $++u}}5##D(3		rP   c                    | j                   j                  d       t        |j                  t        j
                        r| j                   j                  d       y | j                          y )N</p>rf   )r;   r   r   rW  r   r  r  ri  s     rO   depart_authorzHTMLTranslator.depart_author  sD    		 dkk5==1IIT"$$&rP   c                (    | j                  |d       y )Nr  r  ri  s     rO   visit_authorszHTMLTranslator.visit_authors  s    i0rP   c                $    | j                          y rI   r  ri  s     rO   depart_authorszHTMLTranslator.depart_authors        "rP   c                Z    | j                   j                  | j                  |d             y )N
blockquotern  ri  s     rO   visit_block_quotez HTMLTranslator.visit_block_quote  s    		t\:;rP   c                :    | j                   j                  d       y )Nz</blockquote>
rq  ri  s     rO   depart_block_quotez!HTMLTranslator.depart_block_quote  s    		*+rP   c                    t        | j                        }	 |j                  |       y# t        j                  $ r Y yw xY w)z7Check for a simple list that can be rendered compactly.TF)SimpleListCheckerrS   walkr   	NodeFound)rM   r   rT   s      rO   check_simple_listz HTMLTranslator.check_simple_list  s>    #DMM2	IIg   		s   ) ??c                l   d|d   v ryd|d   v ryt        |t        j                  t        j                  f      r| j                  j
                  syt        |t        j                  t        j                  f      r| j                  j                  syd|j                  d   v ry| j                  |      S )Ncompactr  Tr   Fcontents)r   r   
field_listdefinition_listra   r/   enumerated_listbullet_listr.   rW  r  ri  s     rO   is_compactablezHTMLTranslator.is_compactable  s    Y'T)_$te..0E0EFGMM55te33U5F5FGHMM//Y//%%d++rP   c                <   i }| j                   }| j                  j                  | j                   | j                  f       d | _        | j	                  |      | _         | j                   r|sd|d<   | j
                  j                   | j                  |dfi |       y )Nsimpler  ul)r   r   r   r   r  r;   rR  )rM   r   r&  old_compact_simples       rO   visit_bullet_listz HTMLTranslator.visit_bullet_list  s    !00T00$..AB"11$7'9$DM		tT:T:;rP   c                    | j                   j                         \  | _        | _        | j                  j                  d       y )Nz</ul>
)r   r?  r   r   r;   r   ri  s     rO   depart_bullet_listz!HTMLTranslator.depart_bullet_list  s0    .2ll.>.>.@+T^		#rP   c                `    | j                   j                  | j                  |ddd             y )Nr  r0   captionr  rn  ri  s     rO   visit_captionzHTMLTranslator.visit_caption  s%    		tS"IFGrP   c                :    | j                   j                  d       y r  rq  ri  s     rO   depart_captionzHTMLTranslator.depart_caption      		"rP   c                    t        |j                         t        |            s| j                  j	                  d       | j                  j	                  | j                  |d|j                  gd             y )Nz(<div role="list" class="citation-list">
r   zdoc-biblioentryr  role)r   previous_siblingtyper;   r   rR  r   ri  s     rO   visit_citationzHTMLTranslator.visit_citation	  s`     $//14:>IIHI		tUT\\N,= ' ? 	@rP   c                    | j                   j                  d       t        |j                  dd      t	        |            s| j                   j                  d       y y )N</div>
FTr   siblingsr;   r   r   r   r  ri  s     rO   depart_citationzHTMLTranslator.depart_citation  sI    		$$...Ft*&IIZ(&rP   c           
         d}d|v r	||d   z  }n#d|v r|| j                   j                  |d      z  }| j                  j                  | j	                  |dd|dgd             y )	N#refidrefnamea[zcitation-referencezdoc-biblioref)rH  hrefr  r  )rS   nameidsr;   r   rR  )rM   r   r  s      rO   visit_citation_referencez'HTMLTranslator.visit_citation_reference  sv    d?DM!D$DMM))$y/::D 			tS40D/E,; ' = 	>rP   c                :    | j                   j                  d       y )Nz]</a>rq  ri  s     rO   depart_citation_referencez(HTMLTranslator.depart_citation_reference%      		!rP   c                `    | j                   j                  | j                  |ddd             y )Nspanr0   
classifierr  rn  ri  s     rO   visit_classifierzHTMLTranslator.visit_classifier(  s%    		tVR|LMrP   c                \    | j                   j                  d       | j                  |       y N</span>)r;   r   depart_termri  s     rO   depart_classifierz HTMLTranslator.depart_classifier+  s"    		#rP   c                    | j                   j                  |       |j                  j                  j                  |j                  j                  d             y )Nstub)r   r   rW  stubsrJ  r   ri  s     rO   visit_colspeczHTMLTranslator.visit_colspec/  s;    T"  !4!4V!<=rP   c           
     h   t        |j                  dd      t        j                        ry d|j                  j                  d   v s3d| j
                  j                  vrd|j                  j                  d   vry | j                  j                  | j                  |d             t        d	 | j                  D              }| j                  D ]F  }|j                         |z  }| j                  j                  | j                  |d
d|d             H | j                  j                  d       y )NFTr  r:  r  r<  r;  colgroupc              3  <   K   | ]  }|j                           y wrI   )	propwidth)r  r   s     rO   r  z0HTMLTranslator.depart_colspec.<locals>.<genexpr>>  s     Et$..*Es   colwidth: z.1%)r   z</colgroup>
)r   r   r   colspecrW  ra   table_styler;   r   rR  sumr   r  rT  )rM   r   total_widthcolwidths       rO   depart_colspeczHTMLTranslator.depart_colspec4  s   dnnUTnBmm%t{{11)<<DMM$=$==!););I)FF		tZ89Et}}EEMM 	LD~~'+5HIIT]]43:8C.1I + K L	L 			)rP   z-(?=-)c                    | j                   j                  d |d|j                               z         t        j                  )z%Escape double-dashes in comment text.z<!-- %s -->
z- )r;   r   r   r   SkipNode)rM   r   r   s      rO   visit_commentzHTMLTranslator.visit_commentE  s2     			3tT[[]+CCDnnrP   c                ^    | j                   j                  | j                  |dd             y )Nr   compoundr  rn  ri  s     rO   visit_compoundzHTMLTranslator.visit_compoundL  s#    		tU*EFrP   c                :    | j                   j                  d       y Nr  rq  ri  s     rO   depart_compoundzHTMLTranslator.depart_compoundO      		$rP   c                ^    | j                   j                  | j                  |dd             y )Nr   zdocutils containerr  rn  ri  s     rO   visit_containerzHTMLTranslator.visit_containerR  s-    		tU-A ' C 	DrP   c                :    | j                   j                  d       y r   rq  ri  s     rO   depart_containerzHTMLTranslator.depart_containerV  r  rP   c                ,    | j                  |dd       y )NcontactFr|  r  ri  s     rO   visit_contactzHTMLTranslator.visit_contactY      ie<rP   c                $    | j                          y rI   r  ri  s     rO   depart_contactzHTMLTranslator.depart_contact\  r  rP   c                (    | j                  |d       y )N	copyrightr  ri  s     rO   visit_copyrightzHTMLTranslator.visit_copyright_  s    k2rP   c                $    | j                          y rI   r  ri  s     rO   depart_copyrightzHTMLTranslator.depart_copyrightb  r  rP   c                (    | j                  |d       y )Ndater  ri  s     rO   
visit_datezHTMLTranslator.visit_datee  s    f-rP   c                $    | j                          y rI   r  ri  s     rO   depart_datezHTMLTranslator.depart_dateh  r  rP   c                     y rI   r  ri  s     rO   visit_decorationzHTMLTranslator.visit_decorationk  rk  rP   c                     y rI   r  ri  s     rO   depart_decorationz HTMLTranslator.depart_decorationn  rk  rP   c                    d|j                   j                   d   vr-| j                  j                  | j                  |dd             y y )Ndetailsr  ddr0   rW  r;   r   rR  ri  s     rO   visit_definitionzHTMLTranslator.visit_definitionq  s=    DKK..y99IIT]]4r:; :rP   c                r    d|j                   j                   d   vr| j                  j                  d       y y )Nr  r  </dd>
rW  r;   r   ri  s     rO   depart_definitionz HTMLTranslator.depart_definitionu  s0    DKK..y99IIY' :rP   c                    d|d   v r,| j                   j                  | j                  |d             y | j                  |      rdgng }| j                   j                  | j                  |d|             y )Nr  r  r   r  dlr  )r;   r   rR  r  rM   r   r  s      rO   visit_definition_listz$HTMLTranslator.visit_definition_listy  sb    Y'IIT]]478$($7$7$=xj2GIIT]]4w]GHrP   c                    d|d   v r| j                   j                  d       y | j                   j                  d       y )Nr  r  r  </dl>
rq  ri  s     rO   depart_definition_listz%HTMLTranslator.depart_definition_list  s2    Y'IIZ(IIY'rP   c                    d|j                   d   v rFi }d|j                   d   v rd|d<   | j                  j                   | j                  |dfi |       y y )Nr  r  r   r  rM   r   r&  s      rO   visit_definition_list_itemz)HTMLTranslator.visit_definition_list_item  s[    I..DY//%VII]T]]4CdCD	 /rP   c                ^    d|j                   d   v r| j                  j                  d       y y )Nr  r  z</details>
r"  ri  s     rO   depart_definition_list_itemz*HTMLTranslator.depart_definition_list_item  s*    I..II^, /rP   c                \    | j                   j                  | j                  |dd             y )Nr  r0   rn  ri  s     rO   visit_descriptionz HTMLTranslator.visit_description  !    		tT267rP   c                :    | j                   j                  d       y Nr!  rq  ri  s     rO   depart_descriptionz!HTMLTranslator.depart_description  rs  rP   c                   | j                   j                  t        | j                               dg}| j	                  |      r|j                  d       | j                  j                  | j                  |d|             y )Nr:   r  r%  r  )r   r   r   r;   r  rR  r&  s      rO   visit_docinfozHTMLTranslator.visit_docinfo  s^    C		N++t$NN8$		tT7CDrP   c                    | j                   j                  d       | j                  j                         }| j                   |d  | _        g | _         y Nr)  )r;   r   r   r?  r:   )rM   r   starts      rO   depart_docinfozHTMLTranslator.depart_docinfo  s?    		#  "yy(	rP   c           	     T   |r?| j                   j                  d| d| j                  |j                                d       | j                  j                  d| d| j
                  j                  |    d       | j                  j                  | j                  |dd|	             y )
Nz<meta name="z" content="z" />
z<dt class="">"<span class="colon">:</span></dt>
r  r0   r  )rA   r   r   r   r;   r   labelsrR  )rM   r   rL  rA   s       rO   r  z!HTMLTranslator.visit_docinfo_item  s    II|D6 2))-T[[])C(DFL M		;tfBt}}/C/CD/I.J>? 	@		tT2TBCrP   c                :    | j                   j                  d       y r4  rq  r   s    rO   r  z"HTMLTranslator.depart_docinfo_item  rs  rP   c           	     d    | j                   j                  | j                  |ddg d             y )Nr}  r0   )r%  pythondoctestrH  r  rn  ri  s     rO   visit_doctest_blockz"HTMLTranslator.visit_doctest_block  s/    		tU2/L ' N 	OrP   c                :    | j                   j                  d       y r  rq  ri  s     rO   depart_doctest_blockz#HTMLTranslator.depart_doctest_block  ry  rP   c                    |j                  d      xs6 t        j                  j                  |j                  d      xs d      xs d}| j                  j                  d| j                  |       d       y )Nr=   sourcer0   zuntitled Docutils documentz<title>z	</title>
)r   osr   basenamer7   r   r   )rM   r   r=   s      rO   visit_documentzHTMLTranslator.visit_document  sg    '" 1GG$$TXXh%7%=2>10 	 			74;;u#5"6jABrP   c                   | j                   j                  | j                  | j                  d| j                  j
                  iz  g       | j                  j                  | j                         | j                  d d  | j                  z   | _	        ddj                  | j                        v r| j                  j                  d       | j                  rZ| j                  dk(  r&| j                  j                  | j                         n%| j                  j                  | j                         | j                  j                  rP| j                  j                  j                         dk7  r)| j                   j                  | j                  dd         n%| j                   j                  | j                         | j"                  j                   | j$                  |fi | j&                         | j(                  j+                  dd	| j&                  d
    d       | j,                  j                  | j.                         | j0                  j                  | j"                  dd  | j2                  z   | j4                  z   | j.                  z   | j(                  d d z          | j6                  rJ dt9        | j6                                y )Nr   zname="dcterms.r0   z=<link rel="schema.dcterms" href="http://purl.org/dc/terms/"/>mathjaxr   r   r   </r   z>
zlen(context) = )r6   rD  doctypehead_prefix_templatera   r   rC   r   rA   r7   rh   r   r   r   rj   r   rD   r8   rR  documenttag_argsr<   r   rB   r;   rG   r9   r:   r   r   ri  s     rO   depart_documentzHTMLTranslator.depart_document  s0   !%!:!:"($--*E*E!F"G!H 	I 	-IIaL499,	rwwtyy11II C D9,		  !1!12&&t'7'78MM))--335BNN!!$))AB-0NN!!$)),d Ld6K6K LMR(=(=i(H'I#MNTYY'd..qr2T5J5JJ $-/3yy9 $ 0 0" 56 	7 <<F?3t||3D2E!FF<rP   c                \    | j                   j                  | j                  |dd             y )Nemr0   rn  ri  s     rO   visit_emphasiszHTMLTranslator.visit_emphasis  r2  rP   c                :    | j                   j                  d       y )Nz</em>rq  ri  s     rO   depart_emphasiszHTMLTranslator.depart_emphasis  r  rP   c                   dg i}t        |j                  j                  t        j                        r|d   j	                  d       |j                  j                  j                  j
                  |j                  j                     r|d   j	                  d       |d   rd}nd}|j                  xj                  dz  c_        d|v r|d   dz   |d<   d	|v r-|d	   dz   |d
<   |j                  xj                  |d	   z  c_        | j                  j	                   | j                  ||dfi |       | j                  j	                  d|j                         z         y )Nr  r7   r  thtdr   morerowsrowspanmorecolscolspanr0   </%s>
)r   rW  r   theadr   r  columnr;   rR  r   r   )rM   r   r&  r   s       rO   visit_entryzHTMLTranslator.visit_entry  s(   2dkk((%++6O""6*;;$$**4;;+=+=>O""6*	?GGa":.2DO":.2DOKK$z"22		tWbADABI78rP   c                j    | j                   j                  | j                  j                                y rI   r  ri  s     rO   depart_entryzHTMLTranslator.depart_entry  !    		))+,rP   c                    dg i}d|v r|d   |d<   d|v r|d   j                  |d          | j                  |      r|d   j                  d       | j                  j                   | j                  |dfi |       y )Nr  r:  enumtyper  ol)r   r  r;   rR  r,  s      rO   visit_enumerated_listz$HTMLTranslator.visit_enumerated_list  s    2d? MDMO""4
#34t$O""8,		tT:T:;rP   c                :    | j                   j                  d       y )Nz</ol>
rq  ri  s     rO   depart_enumerated_listz%HTMLTranslator.depart_enumerated_list   rs  rP   c                   i }|j                  dg       }t        |      D ]M  \  }}|j                  d      s	 t        |j	                  d      d      }d|z  |d<   |j                  |        n |j                  d       | j                  |      r|j                  d       | j                  j                   | j                  |dfi |       y # t
        $ r Y  mw xY w)	Nr  zfield-indent-pxz--field-indent: %s;r   z
field-listr  r%  )
setdefault	enumerater@  r   rA  r  r?  r   r  r;   rR  )rM   r   r&  r  irM  indent_lengths          rO   visit_field_listzHTMLTranslator.visit_field_list  s    //)R0( 		FAs~~o.$D((94%AM !6 EWA		 	|$t$NN8$		tT:T:; " s   C	CCc                :    | j                   j                  d       y r9  rq  ri  s     rO   depart_field_listz HTMLTranslator.depart_field_list  rs  rP   c                v    |D ]4  }t        |t        j                        s|d   j                  |d          6 y )Nr>  )r   r   
field_namerD  )rM   r   rd  s      rO   visit_fieldzHTMLTranslator.visit_field  s9      	1E%!1!12e##DK0	1rP   c                     y rI   r  ri  s     rO   depart_fieldzHTMLTranslator.depart_field  rk  rP   c           	     z    | j                   j                  | j                  |dd|j                  d                y )Ndtr0   r  r  )r;   r   rR  rW  ri  s     rO   visit_field_namezHTMLTranslator.visit_field_name#  s8    		tT2/3{{9/E ' G 	HrP   c                :    | j                   j                  d       y )Nr>  rq  ri  s     rO   depart_field_namez HTMLTranslator.depart_field_name'  s    		>?rP   c           	         | j                   j                  | j                  |dd|j                  d                |j                  s| j                   j                  d       y y )Nr  r0   r  r  z<p></p>)r;   r   rR  rW  rc  ri  s     rO   visit_field_bodyzHTMLTranslator.visit_field_body*  sX    		tT2/3{{9/E ' G 	H }}IIY' rP   c                :    | j                   j                  d       y r4  rq  ri  s     rO   depart_field_bodyz HTMLTranslator.depart_field_body1  rs  rP   c                    ddi}|j                  d      rd|d   z  |d<   |j                  d      r|dxx   d|d   z   z  cc<   | j                  j                   | j                  |dfi |       y )	Nr  figurer   z	width: %sr   alignz align-r   )r   r;   r   rR  r,  s      rO   visit_figurezHTMLTranslator.visit_figure4  sq    "88G'$w-7DM88GMYg66M		tU;d;<rP   c                :    | j                   j                  d       y r   rq  ri  s     rO   depart_figurezHTMLTranslator.depart_figure<  r  rP   c                `    | j                   j                  t        | j                               y rI   r   r   r   r;   ri  s     rO   visit_footerzHTMLTranslator.visit_footer?      C		N+rP   c                4   | j                   j                         }| j                  |dd      dg}|j                  | j                  |d         |j                  d       | j                  j                  |       || j                  d d | j                  |d = y )Nr   r@   r  z<hr class="footer" />
z
</div>
r   )r   r?  rR  rD  r;   r   r@   r<   )rM   r   r:  r@   s       rO   depart_footerzHTMLTranslator.depart_footerB  s      "--e8-<+-dii'(l#6"%!IIefrP   c                (   | j                   j                  }t        |j                         t	        |            s| j
                  j                  d| d       | j
                  j                  | j                  |d|j                  |gd             y )Nz<aside class="footnote-list z">
r  zdoc-footnoter  )	ra   footnote_referencesr   r  r  r;   r   rR  r   )rM   r   label_styles      rO   visit_footnotezHTMLTranslator.visit_footnoteL  s{     mm77$//14:>II;K=MN		tW04k/J,: ' < 	=rP   c                    | j                   j                  d       t        |j                  dd      t	        |            s| j                   j                  d       y y )Nr  FTr  r  ri  s     rO   depart_footnotezHTMLTranslator.depart_footnoteW  sI    		&$...Ft*&II\*&rP   c           
         d|d   z   }| j                   j                  g}| j                  j                  | j	                  |dd|d|             | j                  j                  d       y )Nr  r  r  r0   zdoc-noteref)rH  r  r  r  !<span class="fn-bracket">[</span>)ra   r  r;   r   rR  )rM   r   r  r  s       rO   visit_footnote_referencez'HTMLTranslator.visit_footnote_reference]  sf    T']"==445		tSW,9 ' F 	G		<=rP   c                p    | j                   j                  d       | j                   j                  d       y )Nz!<span class="fn-bracket">]</span></a>rq  ri  s     rO   depart_footnote_referencez(HTMLTranslator.depart_footnote_referenced  s'    		<=		 rP   c                    d|d   v r\|j                         j                  d      }| j                  j                  d| j	                  |      z         t
        j                  y )Nsectnumr      z <span class="sectnum">%s </span>)r   ri   r;   r   r   r   r  )rM   r   r  s      rO   visit_generatedzHTMLTranslator.visit_generatedi  s[    Y'kkm**40GII?#{{734 5 ..  (rP   c                     y rI   r  ri  s     rO   depart_generatedzHTMLTranslator.depart_generatedr  rk  rP   c                `    | j                   j                  t        | j                               y rI   r  ri  s     rO   visit_headerzHTMLTranslator.visit_headeru  r  rP   c                J   | j                   j                         }| j                  |dd      g}|j                  | j                  |d         |j                  d       | j                  j                  |       | j                  j                  |       | j                  |d = y )Nr   r?   r  z
<hr class="header"/>
</div>
)r   r?  rR  rD  r;   r   r8   r?   )rM   r   r:  r?   s       rO   depart_headerzHTMLTranslator.depart_headerx  s      "--e8-<=dii'(89'6"IIefrP   c           	        |d   }|j                  d|      }t        j                  |      d   }d}| j                  |      }d|v rd|d    g|d<   || j                  v rdn| j
                  }|j                  d	|      }|d
k(  rd
|d	<   n|dk(  r	 | j                  |      }|dk(  rt        |      j                  d      }	nt        |      j                         }	| j                  j                  j                  |       |dk(  r| j                  |	||      }n,t        j                  |	      j!                         }
d| d|
 }	 t3        |j4                  t6        j8                        rRt3        |j4                  t6        j:                        r1t3        |j4                  j4                  t6        j8                        sd}nd}|| j                  v rR||d<   d|d   v r|d   j=                  d       d|d<    | j>                  |d|fd|i|d|d    d| d| z   d| z   }nN|dk(  r%||d<    | j>                  |ddfd |i|| d!| z   }n$|r||z  }n||d<    | j@                  |d"|fd|i|}| jB                  j+                  |       |r| jE                  |       y y # t"        t$        t&        f$ rQ}| j(                  j+                  | j,                  j.                  j1                  d| d| |             Y d }~d }~ww xY w)#Nr   r  r   r0   r  zalign-r  r   loadinglazyr   zimage/svg+xmlr^   r_   zdata:z;base64,zCannot embed image "r  r   rf   r=   controlsvideosrcz	<a href="r=  r  z</video>zapplication/x-shockwave-flashr  objectdataz	</object>r
  )#r   r   r   r   r   r   r   r   rb   
read_bytesra   r  r  r0  base64	b64encodedecoder  r  UnicodeErrorr   r   rS   r   r  r   rW  r   TextElement	referenceremoverR  rT  r;   r\  )rM   r   r   r  mimetypeelementr&  r  r	  	imagedatadata64r  rH  s                rO   visit_imagezHTMLTranslator.visit_image  s%   5khhuc"'',Q/t$d?!'W78DO %7&T=O=O((9g.f$DO= MM#.	. $Y 9 97 9 KI $Y : : <I 1155i@."..y$EG#--i8??AF!(8F8<C 4;;(9(9:$++u7t{{1153D3DEFFt&DMT)_,Y&&z2#-Z $t}}T7FLLtL$T%[MC5VHEF#F8,-G 88#DL$t}}T8RJcJTJ5	&23GvGDK#dmmD%ISIDIG		!  & O 6 N$$T]]%;%;%A%A*3%vcU;t &B &M N NNs   AJ   L4AL  Lc                     y rI   r  ri  s     rO   depart_imagezHTMLTranslator.depart_image  rk  rP   c                \    | j                   j                  | j                  |dd             y )Nr  r0   rn  ri  s     rO   visit_inlinezHTMLTranslator.visit_inline  !    		tVR89rP   c                :    | j                   j                  d       y r  rq  ri  s     rO   depart_inlinezHTMLTranslator.depart_inline  rs  rP   c                6   | j                   j                  d       | j                   j                  d       | j                  j                  rM|j                  j                  dg       }t        |      dk(  r"| j                   j                  d|d   z         y y y )Nz<span class="label">r  backrefsr   z"<a role="doc-backlink" href="#%s">r   )r;   r   ra   footnote_backlinksrW  r   r   )rM   r   r  s      rO   visit_labelzHTMLTranslator.visit_label  s    		/0		<===++{{z26H8}!		   "02:1+"> ? " ,rP   c           	        g }| j                   j                  r|j                  j                  d|      }t	        |      dk(  r| j
                  j                  d       | j
                  j                  d       t	        |      dkD  rSt        |d      D cg c]  \  }}d|d|d }}}| j
                  j                  ddj                  |      z         y y c c}}w )	Nr  r   r  z)<span class="fn-bracket">]</span></span>
z<a role="doc-backlink" href="#r=  z#<span class="backrefs">(%s)</span>
,)	ra   r  rW  r   r   r;   r   rq  rh   )rM   r   r  rr  ref	backlinkss         rO   depart_labelzHTMLTranslator.depart_label  s    ==++{{z8<Hx=AIIV$		EFx=1)28Q)?A%a HKAN AI AIIC"xx	23 4 As   Cc                ^    | j                   j                  | j                  |dd             y )Nr   legendr  rn  ri  s     rO   visit_legendzHTMLTranslator.visit_legend  s#    		tU(CDrP   c                :    | j                   j                  d       y r   rq  ri  s     rO   depart_legendzHTMLTranslator.depart_legend  r  rP   c                    | j                   j                  | j                  |ddd             t        |      s| j                   j                  d       y y )Nr   r0   liner~  z<br />)r;   r   rR  r   ri  s     rO   
visit_linezHTMLTranslator.visit_line  sC    		tU2VLM4yIIX& rP   c                :    | j                   j                  d       y r   rq  ri  s     rO   depart_linezHTMLTranslator.depart_line  r  rP   c                ^    | j                   j                  | j                  |dd             y )Nr   z
line-blockr  rn  ri  s     rO   visit_line_blockzHTMLTranslator.visit_line_block  s#    		tU,GHrP   c                :    | j                   j                  d       y r   rq  ri  s     rO   depart_line_blockz HTMLTranslator.depart_line_block  r  rP   c                \    | j                   j                  | j                  |dd             y )Nlir0   rn  ri  s     rO   visit_list_itemzHTMLTranslator.visit_list_item  r2  rP   c                :    | j                   j                  d       y )Nz</li>
rq  ri  s     rO   depart_list_itemzHTMLTranslator.depart_list_item  rs  rP   c                2   |d   }d|v rM|j                  |j                  d             | j                  j                  | j	                  |dd             y | j                  j                  | j	                  |ddd             |j                         }t        |j                  t        j                        s|j                  dd      }| j                  j                  |      D ]  }|j                         rI| j                  j                  |      r.| j                  j                  d	| j!                  |      z         \| j                  j                  | j!                  |              | j                  j                  d
       t        j"                  )Nr  r%  r0   r  zdocutils literalr  rf   r   z<span class="pre">%s</span>r  )r?  ra  r;   r   rR  r   r   rW  r   literal_blockr   words_and_spacesfindallr  in_word_wrap_pointsearchr   r  )rM   r   r  r   tokens        rO   visit_literalzHTMLTranslator.visit_literal  s@   y/WKKf-.IIT]]4<=		MM$2DME	G{{}$++u':':;<<c*D **2248 	5E{{}!8!8!?!?!F		  !>#';;u#5"6 7 		  U!34	5 			#nnrP   c                :    | j                   j                  d       y )N</code>rq  ri  s     rO   depart_literalzHTMLTranslator.depart_literal  s    		#rP   c                    | j                   j                  | j                  |ddd             d|d   v r| j                   j                  d       y y )Nr}  r0   zliteral-blockr  r%  r  z<code>rn  ri  s     rO   visit_literal_blockz"HTMLTranslator.visit_literal_block  sH    		tUBoNOT)_$IIX& %rP   c                ~    d|d   v r| j                   j                  d       | j                   j                  d       y )Nr%  r  r  z</pre>
rq  ri  s     rO   depart_literal_blockz#HTMLTranslator.depart_literal_block   s2    T)_$IIY'		$rP   r  formulattr}  mathr0   problematic)r   latexrN  mathmlr  c           	     v   t        |t        j                        }| j                  }|j	                         j                  t        j                        }|dk(  r| j                  rs| j                  sg| j                  j                  d      D cg c]=  }| j                  t        j                  || j                  j                        d      ? c}| _	        |t         j"                  _        t'        ||      }t!        j                   |      }n=|dk(  r| j)                  |      }n%|dk(  r| j                  s| j                  r| j                  | _        n'| j,                  j.                  j1                  d|       d	| j*                  vr| xj*                  d
z  c_        | j2                  | j*                  z  g| _	        |rt'        ||      }nd| d}| j)                  |      }nf|dk(  rad| j4                  v r| j6                  | _        | j                  rt;        t<        | j                        }nt>        j@                  }	  |||      }| jL                  |   |   }	|rdnd}
|	r>| jN                  jI                  | jQ                  ||	|
| jL                  |   d                | jN                  jS                  ||
g       |	r!| jN                  jI                  d|	 d|
        t        jT                  c c}w # tB        tD        f$ r}t;        |dg       }| jF                  jI                   | j,                  j.                  j0                  |g|d|i       | j)                  |j	                               }| j                  jJ                  dk  rd}nd}t        |tD              r|| _        Y d }~fd }~ww xY w)Nr   r  T)r7  r  rN  zANo MathJax URL specified, using local fallback (see config.html).r   ?z?config=TeX-AMS_CHTMLz\(z\)r  zXHTML 1)as_blockr  r   r   r  rf   r0   rD  rO  r   )+r   r   
math_blockr   r   r\   r   uni2tex_tabler   r   r}   r   r	   find_file_in_dirsra   stylesheet_dirsr   DocumentParametersdisplaymoder   r   mathjax_urlrS   r   r  mathjax_scriptrQ  content_type_mathmlr   rX   r   r   
tex2mathmlr   r  r   r   rZ  	math_tagsr;   rR  rD  SkipChildren)rM   r   is_blockformat	math_codes	converterr  r  tagrH  s              rO   
visit_mathzHTMLTranslator.visit_math2  sX   dE$4$45!!KKM++K,E,EF	 V  )9)9 "..44S9$;  (()@)@4==88*:GK ) M$;  8@I((4&y(;I!++I6IwI.Iy ##$$'+'8'8D$MM**22-8< 3 >
 d...$$(??$$($7$7$:J:J$J#K *9h?	!)B/	I.IxDLL($($<$<!  #$5t7H7HI	(33	.%i(C	 nnV$X.!rIIT]]4V37>>&3I!3L + N O		)V,-IIr#ax01   y$;J w' .!#y"5$$%CT]]%;%;%C%C&3!&3-1&3 4 KK6	==--2*F$Fc7+'-D$.s    AK5
K: :N8	B$N33N8c                     y rI   r  ri  s     rO   depart_mathzHTMLTranslator.depart_mathy  rk  rP   c                &    | j                  |       y rI   )r	  ri  s     rO   visit_math_blockzHTMLTranslator.visit_math_block|  s    rP   c                &    | j                  |       y rI   )r\  ri  s     rO   depart_math_blockz HTMLTranslator.depart_math_block  s    T"rP   c                z    | j                   j                   | j                  |dfi |j                                y )NrA   )rA   r   rT  non_default_attributesri  s     rO   
visit_metazHTMLTranslator.visit_meta  s9    		tV H)-)D)D)FH 	IrP   c                     y rI   r  ri  s     rO   depart_metazHTMLTranslator.depart_meta  rk  rP   c                `    | j                   j                  | j                  |ddd             y )Nr  r0   optionr  rn  ri  s     rO   visit_optionzHTMLTranslator.visit_option  s%    		tVRxHIrP   c                    | j                   j                  d       t        |j                  dd      t        j
                        r| j                   j                  d       y y )Nr  FTr  , )r;   r   r   r   r   r  ri  s     rO   depart_optionzHTMLTranslator.depart_option  sI    		#dnnUTnBll$IIT"$rP   c                    | j                   j                  |j                  dd             | j                   j                  | j                  |dd             y )N	delimiterr   varr0   )r;   r   r   rR  ri  s     rO   visit_option_argumentz$HTMLTranslator.visit_option_argument  s>    		+s34		tUB78rP   c                :    | j                   j                  d       y )Nz</var>rq  ri  s     rO   depart_option_argumentz%HTMLTranslator.depart_option_argument  r  rP   c                    | j                   j                  | j                  |dd             | j                   j                  d       y )Nr}  r0   z<kbd>rn  ri  s     rO   visit_option_groupz!HTMLTranslator.visit_option_group  s3    		tT267		!rP   c                :    | j                   j                  d       y )Nz</kbd></dt>
rq  ri  s     rO   depart_option_groupz"HTMLTranslator.depart_option_group  s    		)rP   c                ^    | j                   j                  | j                  |dd             y )Nr%  zoption-listr  rn  ri  s     rO   visit_option_listz HTMLTranslator.visit_option_list  s&    		MM$MM:	<rP   c                :    | j                   j                  d       y r9  rq  ri  s     rO   depart_option_listz!HTMLTranslator.depart_option_list  rs  rP   c                     y rI   r  ri  s     rO   visit_option_list_itemz%HTMLTranslator.visit_option_list_item  rk  rP   c                     y rI   r  ri  s     rO   depart_option_list_itemz&HTMLTranslator.depart_option_list_item  rk  rP   c                     y rI   r  ri  s     rO   visit_option_stringz"HTMLTranslator.visit_option_string  rk  rP   c                     y rI   r  ri  s     rO   depart_option_stringz#HTMLTranslator.depart_option_string  rk  rP   c                (    | j                  |d       y )Norganizationr  ri  s     rO   visit_organizationz!HTMLTranslator.visit_organization  s    n5rP   c                $    | j                          y rI   r  ri  s     rO   depart_organizationz"HTMLTranslator.depart_organization  r  rP   c                \    | j                   j                  | j                  |dd             y )Nr  r0   rn  ri  s     rO   visit_paragraphzHTMLTranslator.visit_paragraph  s!    		tS"56rP   c                ,   | j                   j                  d       t        |j                  t        j
                  t        j                  f      rt        |j                        dk(  s-| j                   j                  d       | j                  |       y y )Nr  r   rf   )	r;   r   r   rW  r   	list_itemrY  r   r\  ri  s     rO   depart_paragraphzHTMLTranslator.depart_paragraph  se    		 4;;%++(FG%*IIT"  & +rP   c                2   |j                  d      r=| j                  j                  d|d   z         | j                  j                  d       n| j                  j                  d       | j                  j                  | j	                  |ddd             y )Nr  z<a href="#%s">r  r0   r  r  r  )hasattrr;   r   r   rR  ri  s     rO   visit_problematicz HTMLTranslator.visit_problematic  sq    << II-W=>LL'LL#		tVR}MNrP   c                    | j                   j                  d       | j                   j                  | j                  j                                y r  r  ri  s     rO   depart_problematicz!HTMLTranslator.depart_problematic  s3    		#		))+,rP   c                   d|j                  dd      j                         v rt        |j                  t        j
                        rd}nd}|d   r-| j                  j                  | j                  ||d             | j                  j                  |j                                |d   r| j                  j                  d|z         t        j                  )	Nr   r  r0   r  r   r  rH  z</%s>)r   r}   r   rW  r   r  r;   r   rR  r   r  )rM   r   r   s      rO   	visit_rawzHTMLTranslator.visit_raw  s    TXXh+1133$++u'8'89 I		  tWR!HIIIT[[]+I		  7!23nnrP   c                ^   ddgi}d}d|v re|d   |d<   | j                   j                  r2|d   j                  d      r| j                  |d         |d<   d| _        |d   j                  d       n*d	|v sJ d
       d|d	   z   |d<   |d   j                  d       t        |      dk(  r1t        |d   t        j                        r|d   j                  d       t        |j                  t        j                        sd}| j                  j                   | j                  |d|fi |       y )Nr  r  r0   refurir  zmailto:Texternalr  z3References must have "refuri" or "refid" attribute.r  rN  r   r   zimage-referencerf   r  )ra   r   r@  r   r   r   r   r   r   imagerW  r  r;   rR  )rM   r   r&  rH  s       rO   visit_referencezHTMLTranslator.visit_reference  s"   K=)t>DL33L++I6#00f>V!%O"":.d? IHI?g.DLO"":.t9>ja%++>O""#45$++u'8'89F		tS&ADABrP   c                    | j                   j                  d       t        |j                  t        j
                        s| j                   j                  d       d| _        y )Nr  rf   F)r;   r   r   rW  r   r  r   ri  s     rO   depart_referencezHTMLTranslator.depart_reference  sA    		 $++u'8'89IIT"rP   c                ,    | j                  |dd       y )NrevisionFr|  r  ri  s     rO   visit_revisionzHTMLTranslator.visit_revision	  s    ju=rP   c                $    | j                          y rI   r  ri  s     rO   depart_revisionzHTMLTranslator.depart_revision  r  rP   c                j    | j                   j                  | j                  |dd             d|_        y )Ntrr0   r   )r;   r   rR  rc  ri  s     rO   	visit_rowzHTMLTranslator.visit_row  s(    		tT267rP   c                :    | j                   j                  d       y )Nz</tr>
rq  ri  s     rO   
depart_rowzHTMLTranslator.depart_row  rs  rP   c                `    | j                   j                  | j                  |ddd             y )Nr  r0   rubricr  rn  ri  s     rO   visit_rubriczHTMLTranslator.visit_rubric  s%    		tS"HEFrP   c                :    | j                   j                  d       y r  rq  ri  s     rO   depart_rubriczHTMLTranslator.depart_rubric  r  rP   c                    | xj                   dz  c_         | j                  j                  | j                  |dd             y )Nr   r   sectionr  )r   r;   r   rR  ri  s     rO   visit_sectionzHTMLTranslator.visit_section  s7    a		MM$YM7	9rP   c                d    | xj                   dz  c_         | j                  j                  d       y )Nr   r  )r   r;   r   ri  s     rO   depart_sectionzHTMLTranslator.depart_section!  s%    a		$rP   c                l    | j                   j                  | j                  |dd             d| _        y )Nr   sidebarr  T)r;   r   rR  r   ri  s     rO   visit_sidebarzHTMLTranslator.visit_sidebar&  s-    		MM$YM7	9rP   c                H    | j                   j                  d       d| _        y )Nr  F)r;   r   r   ri  s     rO   depart_sidebarzHTMLTranslator.depart_sidebar+  s    		$rP   c                ,    | j                  |dd       y )NstatusFr|  r  ri  s     rO   visit_statuszHTMLTranslator.visit_status/  s    hU;rP   c                $    | j                          y rI   r  ri  s     rO   depart_statuszHTMLTranslator.depart_status2  r  rP   c                \    | j                   j                  | j                  |dd             y )Nstrongr0   rn  ri  s     rO   visit_strongzHTMLTranslator.visit_strong5  s!    		tXr:;rP   c                :    | j                   j                  d       y )Nz	</strong>rq  ri  s     rO   depart_strongzHTMLTranslator.depart_strong8  s    		%rP   c                \    | j                   j                  | j                  |dd             y )Nr   r0   rn  ri  s     rO   visit_subscriptzHTMLTranslator.visit_subscript;  !    		tUB78rP   c                :    | j                   j                  d       y )Nz</sub>rq  ri  s     rO   depart_subscriptzHTMLTranslator.depart_subscript>  r  rP   c                "    t         j                  )zInternal only.r   r  ri  s     rO   visit_substitution_definitionz,HTMLTranslator.visit_substitution_definitionA      nnrP   c                &    | j                  |       y rI   )unimplemented_visitri  s     rO   visit_substitution_referencez+HTMLTranslator.visit_substitution_referenceE  s      &rP   c                   t        |j                  t        j                        rdg}nlt        |j                  t        j                        r!dg}t        | j                        dz   | _        n't        |j                  t        j                        rdg}| j                  j                  | j                  |dd             y )Nzsidebar-subtitler>   r   zsection-subtitler  r0   r  )r   rW  r   r_  rS   r   r;   r   rZ  r   rR  r&  s      rO   visit_subtitlezHTMLTranslator.visit_subtitleL  s    dkk5==1)*GU^^4!lG%(^a%7D"U]]3)*G		tS"gFGrP   c                   | j                   j                  d       t        |j                  t        j
                        r| j                   | j                  d | _        d| _        | j                  j                  | j                          | j                  j                  | j                          | j                   d d = y y )Nr  rP  r   )r;   r   r   rW  r   rS   r   r>   r9   rD  rF   ri  s     rO   depart_subtitlezHTMLTranslator.depart_subtitleV  s    		"dkk5>>2 IId&<&<R@DM%&D"!!((3%%dii0		! 3rP   c                \    | j                   j                  | j                  |dd             y )Nsupr0   rn  ri  s     rO   visit_superscriptz HTMLTranslator.visit_superscript_  ro  rP   c                :    | j                   j                  d       y )Nz</sup>rq  ri  s     rO   depart_superscriptz!HTMLTranslator.depart_superscriptb  r  rP   c                "   | j                   j                  | j                  |dd             | j                   j                  d       d}t        |d         rX|d   }t        |      dk(  r	d|d	   z  }n<d}g }|D ]  }|j                  d
|d|d       |dz  }! ddj	                  |      z  }|j                  d      r	d|d   z  }nd}| j                   j                  d|d   d|d   d| j                  |d         d|d|d       y )Nr  zsystem-messager  z <p class="system-message-title">r0   r  r   z%; <em><a href="#%s">backlink</a></em>r   z
<a href="#r=  r  z; <em>backlinks: %s</em>r  r  z	, line %szSystem Message: r  /rV  z! (<span class="docutils literal">rI  r  r  r  )r;   r   rR  r   rh   r<  r   )rM   r   backref_textr  rr  r  backrefr  s           rO   visit_system_messagez#HTMLTranslator.visit_system_messagee  s   		tW<LMN		;<tJ J'H8}! G"*1+!. 	' G$$w%JKFA !;"&))I"6!7<<f-DD		 L$w- KKX7|M 	NrP   c                :    | j                   j                  d       y r  rq  ri  s     rO   depart_system_messagez$HTMLTranslator.depart_system_message  ry  rP   c                F   d| j                   j                  j                  dd      j                         i}d|v r|d   j	                  d|d   z         d|v r|d   }|dd  dv r|d	z  }d
| d|d<    | j
                  |dfi |}| j                  j	                  |       y )Nr  r  r   r  zalign-%sr   rP  z0123456789.ro  r  r   r   rC  )ra   r  r   r}   r   rR  r;   )rM   r   r&  r   r  s        rO   visit_tablezHTMLTranslator.visit_table  s    4==44<<S#FLLNOd?O"":W#=>d?MERSz]*%eWA.DMdmmD'2T2		rP   c                \    | j                   j                  d       | j                  |       y )Nz	</table>
)r;   r   r\  ri  s     rO   depart_tablezHTMLTranslator.depart_table  s"    		&T"rP   c                    d|vrRd|vrNd|vrJ| j                   j                  | j                  |ddd             | j                  j                  d       y | j                  j                  d       y )	NrD  r  r  r  r0   targetr  r  )r;   r   rR  r   ri  s     rO   visit_targetzHTMLTranslator.visit_target  sa    D 4'T)IIT]]48]LMLL	*LL#rP   c                j    | j                   j                  | j                  j                                y rI   r  ri  s     rO   depart_targetzHTMLTranslator.depart_target  rg  rP   c                Z    | j                   j                  | j                  |d             y )Ntbodyrn  ri  s     rO   visit_tbodyzHTMLTranslator.visit_tbody      		tW56rP   c                :    | j                   j                  d       y )Nz	</tbody>
rq  ri  s     rO   depart_tbodyzHTMLTranslator.depart_tbody  ry  rP   c           
     (   d|j                   j                   d   v r.| j                  j                  | j                  |dd             y | j                  j                  | j                  |dd|j                   d   |j                   d                y )	Nr  r  summaryr0   rA  r}  r>  )rH  r  r>  r  ri  s     rO   
visit_termzHTMLTranslator.visit_term  s~    **955IIT]]42]FG IIT]]4b37;;y3I/3{{5/A + C DrP   c                    |j                  t        j                  dd      ry d|j                  j                  d   v r| j                  j                  d       y | j                  j                  d       y )NFTr  r  r  z</summary>
z</dt>
)r   r   r  rW  r;   r   ri  s     rO   r  zHTMLTranslator.depart_term  sX    >>%**ED>I**955II^,IIY'rP   c                     g | _         g |_        y rI   )r   r  ri  s     rO   visit_tgroupzHTMLTranslator.visit_tgroup  s    
rP   c                     y rI   r  ri  s     rO   depart_tgroupzHTMLTranslator.depart_tgroup  rk  rP   c                Z    | j                   j                  | j                  |d             y )Nrb  rn  ri  s     rO   visit_theadzHTMLTranslator.visit_thead  r  rP   c                :    | j                   j                  d       y )Nz	</thead>
rq  ri  s     rO   depart_theadzHTMLTranslator.depart_thead  ry  rP   c                b   i }| j                   | j                  z   dz
  }dt        |d      z  }|dkD  r||d<    | j                  ||dfi |}|j	                  d      rJi }d|d<   d	|d
<   d|d   z   |d<   | | j                  t        j                         ddfi |z  }d|z  }||fS d|z  }||fS )Nr   zh%i   z
aria-levelr0   r  ztoc-backrefr  zdoc-backlinkr  r  r  r  z
</a></%s>
ra  )r   r   minrR  r<  r   r  )rM   r   r&  h_levelr   	start_tag	close_tags          rO   section_title_tagsz!HTMLTranslator.section_title_tags  s    $$t'@'@@1D#gq/)Q;!(D!DMM$<t<	<< D)DM)DLg.DLu'8#rJTJJI%/I )## "G+I)##rP   c                   d}t        |j                  t        j                        rv| j                  j                  | j                  |ddd             | j                  j                  rd|j                  d   v r| j                  j                  d       d	}nt        |j                  t        j                        r0| j                  j                  | j                  |ddd
             nkt        |j                  t        j                        r0| j                  j                  | j                  |ddd             nt        |j                  t        j                        r/| j                  j                  | j                  |dd             d}nt        |j                  t        j                        rK| j                  j                  | j                  |ddd             d}t        | j                        | _        nUt        |j                  t        j                        sJ | j!                  |      \  }}| j                  j                  |       | j"                  j                  |       y )Nr  r  r0   ztopic-titler  r  r  z*<a class="reference internal" href="#top">z	</a></p>
zsidebar-titlezadmonition-titler  z</caption>
h1r=   z</h1>
)r   rW  r   topicr;   r   rR  ra   toc_backlinksr_  
AdmonitionrC  rS   r   r   rZ  r  r   )rM   r   r  r  s       rO   visit_titlezHTMLTranslator.visit_title  s   	dkk5;;/IIdC=AC++$++i"88		  !MN(	U]]3IIdC?CEU%5%56II--c25G-HJU[[1IIT]]4B?@&IU^^4IIT]]4r]IJ!I%(^D"dkk5==999#'#:#:4#@ IyIIY'I&rP   c                   | j                   j                  | j                  j                                | j                  r| j                   | j                  d | _        d| _        | j                  j                  | j                          | j                  j                  | j                          | j                   d d = y y )NrP  r   )	r;   r   r   r?  r   r=   r9   rD  rE   ri  s     rO   depart_titlezHTMLTranslator.depart_title  s    		))+,!!4#9#9"=DJ%&D"!!((3OO""499-		! "rP   c                \    | j                   j                  | j                  |dd             y )Nciter0   rn  ri  s     rO   visit_title_referencez$HTMLTranslator.visit_title_reference  r  rP   c                :    | j                   j                  d       y )Nz</cite>rq  ri  s     rO   depart_title_referencez%HTMLTranslator.depart_title_reference  rs  rP   c                ^    | j                   j                  | j                  |dd             y )Nr   r  r  rn  ri  s     rO   visit_topiczHTMLTranslator.visit_topic  s#    		tU'BCrP   c                :    | j                   j                  d       y r   rq  ri  s     rO   depart_topiczHTMLTranslator.depart_topic  r  rP   c                ^    | j                   j                  | j                  |dd             y )Nhrrk   r  )r;   r   rT  ri  s     rO   visit_transitionzHTMLTranslator.visit_transition  s#    		tTDErP   c                     y rI   r  ri  s     rO   depart_transitionz HTMLTranslator.depart_transition  rk  rP   c                ,    | j                  |dd       y )Nrg   Fr|  r  ri  s     rO   visit_versionzHTMLTranslator.visit_version  r
  rP   c                $    | j                          y rI   r  ri  s     rO   depart_versionzHTMLTranslator.depart_version  r  rP   c                F    t        d|j                  j                  z        )Nz$visiting unimplemented node type: %s)NotImplementedErrorrN   rw   ri  s     rO   rw  z"HTMLTranslator.unimplemented_visit  s$    !"H$(NN$;$;#< = 	=rP   rt   )r   znodes.imagers   zdict[str, str])rs   ztuple[int, int] | None)r%  rv   r   znodes.Elementr&  dictrs   rv   rI   )rf   F)rf   )r   )rs   r2  )T)rw   rx   ry   __doc__rQ  rR  r   rk   rl   r   rS  r  r  r6  r3  recompiler  r  rB  ordr   r   r   r   r   r   r   r   r   r   r0  r   rR  rT  r\  re  rg  rj  ro  rr  rv  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r#  r'  r*  r-  r/  r1  r5  r7  r;  r  r  rE  rG  rL  rT  rW  rY  rd  rf  rk  rm  rt  rv  ry  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r   r"  r$  r&  r(  r*  r,  r.  r0  r3  r5  r7  r:  r=  r?  rB  rG  rI  rL  rN  rQ  rS  rV  rX  r[  r]  r`  rb  re  rg  rj  rl  rn  rq  rt  rx  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rw  r   r   s   @rO   r   r      sI   6p "GN,L
3H4H4H3I J1 	1  $):> KNAK NOE!rzz"23#$67Nc(Gc(Fc(Hc(Fc(G	 N9J<Wr7 %"**^47'7"H>*4X8(@FDN(
(":$='D
#O' $2*4%/#+-
C8 
'1#<,",&<$H#@)
>"N>
*$ %"**X.22G%D%=#3#.#<(I(E-8$ED$O'CG88"9(-<$<$$1H@($=%,	=+>!
!,@'D:$?4E%'
%I%8$0$'
% !%)51#UVH5r?!'0G HIE!N#
IJ#9#"*<$6#$7'O-C*>#$G#9
%

 <#<&9#'H9#N4'
#$-7'D(7'$&'>:$D%F=#=rP   r   c                      e Zd ZdZd Zd Zd ZddZd ZeZ	eZ
eZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZ eZ!eZ"eZ#y)	r  a  
    Raise `nodes.NodeFound` if non-simple list item is encountered.

    Here "simple" means a list item containing nothing other than a single
    paragraph, a simple list, or a paragraph followed by a simple list.

    This version also checks for simple field lists and docinfo.
    c                "    t         j                  rI   )r   r  ri  s     rO   default_visitzSimpleListChecker.default_visit'  s    oorP   c                     y rI   r  ri  s     rO   default_departurez#SimpleListChecker.default_departure*  rk  rP   c                   |j                   D cg c]  }t        |t        j                        s|  }}|rt        |d   t        j                        rgt        |d   t        j
                        s:t        |d   t        j                        st        |d   t        j                        r|j                          t        |      dk  ry t        j                  c c}w )Nr   rP  r   )rc  r   r   r^  	paragraphr  r  r  r?  r   r  )rM   r   rd  rc  s       rO   r  z!SimpleListChecker.visit_list_item-  s    '+}} ?e%eU__=  ? ?HQKAHRL%*;*;<x|U-B-BCx|U-=-=>LLNx=A//!?s   #Cc                     y rI   r  ri  s     rO   	pass_nodezSimpleListChecker.pass_node:  rk  rP   c                "    t         j                  rI   rs  ri  s     rO   ignore_nodezSimpleListChecker.ignore_node=  ru  rP   Nrt   )$rw   rx   ry   r  r  r  r  r  r  rg  r7  r  rk  r7  r  r  r  r	  r  r  r3  re  r  r'  r-  r  r  r  rt  ry  r  r~  r  rt  r  visit_pendingr  rP   rO   r  r    s    "
 J!O "%M L#M#MM!OJ$L#M &!*J & !K&"  M$/!LMrP   r  )*r  
__future__r   __docformat__r  r   rJ  os.pathr  r   xml.etree.ElementTreeetreeElementTreer  pathlibr   rk   r   r   r   r	   r
   docutils.parsers.rst.directivesr   &docutils.parsers.rst.directives.imagesr   docutils.transformsr   docutils.utils.mathr   r   r   r   r   r   TYPE_CHECKINGr   r   DoctreeTranslatorr   GenericNodeVisitorr  r  rP   rO   <module>r     s   " 4 ""   	  	  " "   ? ? L 6 *I I -K<W^^ K<\^=W.. ^=B3K 00 K rP   