
    oheA                        d Z dZddlZddlZddlZddlmZmZmZ ddl	m
Z
 ddlmZmZ  G d dej                  j                        Z G d	 d
ej                  j                        Z G d dej                  j                         Zy)a/  
Simple HyperText Markup Language document tree Writer.

The output conforms to the XHTML version 1.0 Transitional DTD
(*almost* strict).  The output contains a minimum of formatting
information.  The cascading style sheet "html4css1.css" is required
for proper viewing with a modern graphical browser.
reStructuredText    N)frontendnodeswriters)
_html_base)PILurl2pathnamec                   ~   e Zd ZdZ	 dgZd ej                  ej                  j                  e
            ej                  j                   ej                  ej                  j                  ej                  j                  e
                  d      gZej                  j                   ej                  ej                  j                  e
            d      Z ej                   ej$                  j&                  j(                  dez  dgedd	fd
dj                  e      z  dgddej*                  edfddj                  e      z  dgdej*                  edfddgdj-                         dddfddgddej.                  df      Zed d!d"d#gd$dej0                  d%fd&d'gd$dej0                  d%fffz   Zd(Zd) Zy*)+Writer)htmlhtml4	html4css1xhtmlxhtml10zhtml4css1.css.html5_polyglotztemplate.txtz-Template file. (UTF-8 encoded, default: "%s")z
--templatez<file>)defaultmetavarzComma 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: "%s"),z--stylesheet-pathz<file[,file,...]>
stylesheet)r   	overrides	validatorr   zComma-separated list of directories where stylesheets are found. Used by --stylesheet-path when expanding relative path arguments. (default: "%s")z--stylesheet-dirsz<dir[,dir,...]>)r   r   r   zySpecify the initial header level. Does not affect document title & subtitle (see --no-doc-title). (default: 1 for "<h1>")z--initial-header-levelz1 2 3 4 5 61z<level>)choicesr   r   z&Prepend an XML declaration (default). z--xml-declarationT
store_true)r   actionr   )templatestylesheet_pathstylesheet_dirsinitial_header_levelxml_declarationzHTML4 Writer Options zSpecify the maximum width (in characters) for one-column field names.  Longer field names will span an entire row of the table used to render the field list.  Default is 14 characters.  Use 0 for "no limit".z--field-name-limit   )r   r   r   zSpecify the maximum width (in characters) for options in option lists.  Longer options will span an entire row of the table used to render the option list.  Default is 14 characters.  Use 0 for "no limit".z--option-limitzhtml4css1 writerc                 (    i | _         t        | _        y N)partsHTMLTranslatortranslator_classselfs    E/usr/lib/python3/dist-packages/docutils/writers/html4css1/__init__.py__init__zWriter.__init__d   s    
 .    N)__name__
__module____qualname__	supporteddefault_stylesheetsdocutils_datadirospathabspath__file__joindirnamedefault_stylesheet_dirsdefault_templater   filter_settings_specr   r   r   settings_specvalidate_comma_separated_listsplitvalidate_booleanvalidate_nonnegative_intconfig_sectionr,    r-   r+   r   r      s%   BI'*+"0x001JK!ww||#48#4#4RWW__RWW__U]E^5_#`#3 5! ww||"''//(34nF 2H11!!//;>NNN(X>@
 !$)< =	>
 !!+,"@@+-	.)+.884K+LM !!)"@@/12M%&%++-#!#	$ 5 !"3356=#
MH "
"  
 Y 99;
<" 
Y 99;
<	%
 
M( (N/r-   r   c                      e Zd ZdZdZdZdZej                  j                  j                         Z	de	d<   dddd	d
Zd Zd Zd Zd ZdidZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Z d! Z!d" Z"d# Z#d$ Z$d% Z%d& Z&d' Z'd( Z(d) Z)djd*Z*d+ Z+d, Z,d- Z-d. Z.d/ Z/d0 Z0d1 Z1d2 Z2d3 Z3d4 Z4d5 Z5d6 Z6d7 Z7d8 Z8d9 Z9d: Z:d; Z;d< Z<d= Z=d> Z>d? Z?d@dAdBZ@dC ZAdD ZBdE ZCdF ZDdG ZEdH ZFdI ZGdJ ZHdK ZIdL ZJdM ZKdN ZLdO ZMdP ZNdQ ZOdR ZPdS ZQdT ZRdU ZSdV ZTdW ZUdX ZVdY ZWdZ ZXd[ ZYd\ ZZd] Z[d^ Z\d_ Z]d` Z^da Z_db Z`dc Zadd Zbde Zcdf Zddg Zedh Zfy)kr'   aH  
    The html4css1 writer has been optimized to produce visually compact
    lists (less vertical whitespace).  HTML's mixed content models
    allow list items to contain "<li><p>body elements</p></li>" or
    "<li>just text</li>" or even "<li>text<p>and body
    elements</p>combined</li>", each with different effects.  It would
    be best to stick with strict body elements in list items, but they
    affect vertical spacing in older browsers (although they really
    shouldn't).
    The html5_polyglot writer solves this using CSS2.

    Here is an outline of the optimization:

    - Check for and omit <p> tags in "simple" lists: list items
      contain either a single paragraph, a nested simple list, or a
      paragraph followed by a nested simple list.  This means that
      this list can be compact:

          - Item 1.
          - Item 2.

      But this list cannot be compact:

          - Item 1.

            This second paragraph forces space between list items.

          - Item 2.

    - In non-list contexts, omit <p> tags on a paragraph if that
      paragraph is the only child of its parent (footnotes & citations
      are allowed a label first).

    - Regardless of the above, in definitions, table cells, field bodies,
      option descriptions, and list items, mark the first child with
      'class="first"' and the last child with 'class="last"'.  The stylesheet
      sets the margins (top & bottom respectively) to 0 for these elements.

    The ``no_compact_lists`` setting (``--no-compact-lists`` command-line
    option) disables list whitespace optimization.
    zz<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
zC<meta http-equiv="Content-Type" content="text/html; charset=%s" />
zO<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=%s" />
&nbsp;   )z&mdash;r"   )())r"   r"   )dashparenthesesparensnonec                 P    | j                  |dd       | j                  |dd       y )Nfirstr   last)set_class_on_childr*   nodes     r+   set_first_lastzHTMLTranslator.set_first_last   s&    gq1fb1r-   c                     | j                  |dd       | j                  j                  | j                  |dd             y )NaddressF)metapreCLASS)visit_docinfo_itembodyappendstarttagrS   s     r+   visit_addresszHTMLTranslator.visit_address   s8    ie<		tU)DEr-   c                 Z    | j                   j                  d       | j                          y Nz
</pre>
)r]   r^   depart_docinfo_itemrS   s     r+   depart_addresszHTMLTranslator.depart_address   s     		&  "r-   c                     |d   j                  dd       | j                  j                  | j                  |d             | j	                  |       y )Nclassesr   
admonitiondiv)insertr]   r^   r_   rU   rS   s     r+   visit_admonitionzHTMLTranslator.visit_admonition   sA    Yq,/		tU34D!r-   Nc                 :    | j                   j                  d       y N</div>
r]   r^   rS   s     r+   depart_admonitionz HTMLTranslator.depart_admonition       		$r-   c                     t        |j                  t        j                        r)| j                  r| j
                  j                  d       y y | j                  |d       y )Nz
<br />author)
isinstanceparentr   authorsauthor_in_authorsr]   r^   r\   rS   s     r+   visit_authorzHTMLTranslator.visit_author   sF    dkk5==1%%		  , & ##D(3r-   c                 |    t        |j                  t        j                        rd| _        y | j                          y )NT)rs   rt   r   ru   rv   rc   rS   s     r+   depart_authorzHTMLTranslator.depart_author   s(    dkk5==1%)D"$$&r-   c                 6    | j                  |d       d| _        y )Nru   F)r\   rv   rS   s     r+   visit_authorszHTMLTranslator.visit_authors   s    i0!&r-   c                 $    | j                          y r%   )rc   rS   s     r+   depart_authorszHTMLTranslator.depart_authors   s      "r-   c                     | j                   j                  |       |j                  j                  j                  |j                  j                  d             y )Nstub)colspecsr^   rt   stubs
attributesgetrS   s     r+   visit_colspeczHTMLTranslator.visit_colspec   s;    T"  !4!4V!<=r-   c           	      n   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 t        d | j                  D              }| j                  j                  | j                  |d             | j                  D ]I  }t        |d	   d
z  |z  dz         }| j                  j                  | j                  |dd|z               K | j                  j                  d       y )NFT)descendsiblingszcolwidths-autorf   zcolwidths-givenc              3   &   K   | ]	  }|d      yw)colwidthNrD   ).0rT   s     r+   	<genexpr>z0HTMLTranslator.depart_colspec.<locals>.<genexpr>   s     Et$z*Es   colgroupr   g      Y@g      ?colz%i%%)widthz</colgroup>
)rs   	next_noder   colspecrt   settingstable_stylesumr   r]   r^   r_   intemptytag)r*   rT   total_widthr   s       r+   depart_colspeczHTMLTranslator.depart_colspec   s   dnnUTnBmm% 2 29 == DMM$=$==%T[[-?-?	-JJEt}}EE		tZ89MM 	ED4
+e3kACGHHIIT]]417(1B + D E	E 			)r-   c                     d|d   v xsS | j                   j                  xr; d|d   vxr2 | j                  xs$ d|j                  d   v xs | j	                  |      S )Ncompactrf   opencontents)r   compact_listscompact_simplert   check_simple_listrS   s     r+   is_compactablezHTMLTranslator.is_compactable   so    T)_, ;MM// :d9o5:,, 9&$++i*@@9 !2248	<r-   c           	          | j                   j                  | j                  |dddd             | j                   j                  d       | j                  |       y )Ntablezdocutils citationvoidrM   r[   framerulesK<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr>r]   r^   r_   footnote_backrefsrS   s     r+   visit_citationzHTMLTranslator.visit_citation   [    		tW-@-36 ' C 	D 			   	! 	t$r-   c                 :    | j                   j                  d       y Nz</td></tr>
</tbody>
</table>
rn   rS   s     r+   depart_citationzHTMLTranslator.depart_citation      		 0 	1r-   c           	          d}d|v r	||d   z  }n#d|v r|| j                   j                  |d      z  }| j                  j                  | j	                  |dd|dg             y )N#refidrefnamea[zcitation-reference)suffixhrefrf   )documentnameidsr]   r^   r_   )r*   rT   r   s      r+   visit_citation_referencez'HTMLTranslator.visit_citation_reference  ss    d?DM!D$DMM))$y/::D		tS40D/E ' G 	Hr-   c                 :    | j                   j                  d       y )Nz]</a>rn   rS   s     r+   depart_citation_referencez(HTMLTranslator.depart_citation_reference      		!r-   c                     | j                   j                  d       | j                   j                  | j                  |ddd             y )Nz- <span class="classifier-delimiter">:</span> spanr"   
classifierrZ   r]   r^   r_   rS   s     r+   visit_classifierzHTMLTranslator.visit_classifier  s8    		HI		tVR|LMr-   c                 :    | j                   j                  d       y )N</span>rn   rS   s     r+   depart_classifierz HTMLTranslator.depart_classifier      		#r-   c                    | j                   j                  | j                  |dd             t        |      dkD  rM|d   d   j                  d       |d   d   j                  d	       |dd D ]  }|d   j                  d
        y y )Nrh   compoundrZ      r   rf   zcompound-firstrQ   zcompound-lastzcompound-middler]   r^   r_   len)r*   rT   childs      r+   visit_compoundzHTMLTranslator.visit_compound  s    		tU*EFt9q=GI%%&67HY&&7a ;i ''(9:; r-   c                 :    | j                   j                  d       y rl   rn   rS   s     r+   depart_compoundzHTMLTranslator.depart_compound$  rp   r-   c                     | j                   j                  d       | j                   j                  | j                  |dd             | j                  |       y )Nz</dt>
ddr"   r]   r^   r_   rU   rS   s     r+   visit_definitionzHTMLTranslator.visit_definition(  sA    		#		tT267D!r-   c                 :    | j                   j                  d       y )Nz</dd>
rn   rS   s     r+   depart_definitionz HTMLTranslator.depart_definition-  r   r-   c                 ^    | j                   j                  | j                  |dd             y )Ndlr3   rZ   r   rS   s     r+   visit_definition_listz$HTMLTranslator.visit_definition_list1  s#    		tTDEr-   c                 :    | j                   j                  d       y )Nz</dl>
rn   rS   s     r+   depart_definition_listz%HTMLTranslator.depart_definition_list4  r   r-   c                      y r%   rD   rS   s     r+   visit_definition_list_itemz)HTMLTranslator.visit_definition_list_item8      r-   c                      y r%   rD   rS   s     r+   depart_definition_list_itemz*HTMLTranslator.depart_definition_list_item;  r   r-   c                 ~    | j                   j                  | j                  |dd             | j                  |       y )Ntdr"   r   rS   s     r+   visit_descriptionz HTMLTranslator.visit_description?  s/    		tT267D!r-   c                 :    | j                   j                  d       y )Nz</td>rn   rS   s     r+   depart_descriptionz!HTMLTranslator.depart_descriptionC  r   r-   c           	         | j                   j                  t        | j                               | j                  j                  | j	                  |dddd             | j                  j                  d       d| _        y )Nr   docinfor   rM   r   zR<col class="docinfo-name" />
<col class="docinfo-content" />
<tbody valign="top">
T)contextr^   r   r]   r_   
in_docinforS   s     r+   visit_docinfozHTMLTranslator.visit_docinfoG  sn    C		N+		tW-6-36 ' C 	D 			 2 	3 r-   c                     | j                   j                  d       d| _        | j                  j	                         }| j                   |d  | _        g | _         y )N</tbody>
</table>
F)r]   r^   r   r   popr   )r*   rT   starts      r+   depart_docinfozHTMLTranslator.depart_docinfoQ  sG    		/0  "yy(	r-   c                 6   |rAd|d| j                  |j                               d}| j                  j                  |       | j                  j                  | j                  |dd             | j                  j                  d| j                  j                  |   z         t        |      rjt        |d   t        j                        r|d   d   j                  d	       t        |d
   t        j                        r|d
   d   j                  d       y y y )Nz<meta name="z" content="z" />
trr"   z&<th class="docinfo-name">%s:</th>
<td>r   rf   rO   rQ   rP   )attvalastextrX   r^   r]   r_   languagelabelsr   rs   r   Element)r*   rT   namerX   meta_tags        r+   r\   z!HTMLTranslator.visit_docinfo_itemX  s    DKKM :<HIIX&		tT267		B==//56 	7t9$q'5==1Q	"))'2$r(EMM2R#**62 3 r-   c                 :    | j                   j                  d       y )Nz</td></tr>
rn   r)   s    r+   rc   z"HTMLTranslator.depart_docinfo_itemf  s    		(r-   c                 ^    | j                   j                  | j                  |dd             y )NrY   zdoctest-blockrZ   r   rS   s     r+   visit_doctest_blockz"HTMLTranslator.visit_doctest_blockj  #    		tU/JKr-   c                 :    | j                   j                  d       y rb   rn   rS   s     r+   depart_doctest_blockz#HTMLTranslator.depart_doctest_blockm      		&r-   c                     t         j                  j                  j                  | |       t	        |      dk(  r| j
                  j                  d       | j                  |       y )Nr   rF   )r   r   r'   visit_entryr   r]   r^   rU   rS   s     r+   r   zHTMLTranslator.visit_entryq  sI    ))55dDAt9>IIX&D!r-   c                 j    | j                   j                  | j                  j                                y r%   r]   r^   r   r   rS   s     r+   depart_entryzHTMLTranslator.depart_entryw  !    		))+,r-   c                    i }d|v r|d   |d<   d|v r|d   |d<   | j                   }| j                  j                  | j                   | j                  f       d| _        | j	                  |      | _         | j                   r(|s&|j                  dd      dz   j                         |d<   | j                  j                   | j                  |dfi |       y)z
        The 'start' attribute does not conform to HTML 4.01's strict.dtd, but
        cannot be emulated in CSS1 (HTML 5 reincludes it).
        r   enumtypeclassNr"   z simpleol)	r   r   r^   	compact_pr   r   stripr]   r_   )r*   rT   attsold_compact_simples       r+   visit_enumerated_listz$HTMLTranslator.visit_enumerated_list{  s    
 d? MDM ,DM "00T00$..AB"11$7'9!XXgr2Y>EEGDM		tT:T:;r-   c                     | j                   j                         \  | _        | _        | j                  j                  d       y )Nz</ol>
)r   r   r   r  r]   r^   rS   s     r+   depart_enumerated_listz%HTMLTranslator.depart_enumerated_list  s0    .2ll.>.>.@+T^		#r-   c                 `    | j                   j                  | j                  |ddd             y )Nr   r"   fieldrZ   r   rS   s     r+   visit_fieldzHTMLTranslator.visit_field  s%    		tT2WEFr-   c                 :    | j                   j                  d       y N</tr>
rn   rS   s     r+   depart_fieldzHTMLTranslator.depart_field  r   r-   c                    | j                   j                  | j                  |ddd             | j                  |dd       |j                  }| j
                  sXt        |j                  t        j                        s4|j                  j                  |      t        |j                        dz
  k(  r| j                  |dd	       y y )
Nr   r"   z
field-bodyrZ   rO   r   r   rP   rQ   )r]   r^   r_   rR   rt   compact_field_listrs   r   r   indexr   )r*   rT   r  s      r+   visit_field_bodyzHTMLTranslator.visit_field_body  s    		tT2\JKgq1##%,,6||!!%(C,=,AA ##D&"5	 Br-   c                 :    | j                   j                  d       y )Nz</td>
rn   rS   s     r+   depart_field_bodyz HTMLTranslator.depart_field_body  r   r-   c           	         | j                   j                  | j                  | j                  f       d | _        d|d   v rd| _        n$| j                  j
                  rd|d   vrd| _        | j                  r|D ]  }|d   }t        |t        j                        sJ |D cg c]  }t        |t        j                        s|  }}t        |      dk(  r\t        |      dk(  r.t        |d   t        j                  t        j                  f      rd| _         n | j                  j                  | j                  |d	d
dd             | j                  j                  d       y c c}w )Nr   rf   Tr   rQ   r   r   Fr   r   rM   zdocutils field-list)r   r   r[   zK<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
)r   r^   r  r  r   compact_field_listsrs   r   
field_body	Invisibler   	paragraph
line_blockr]   r_   )r*   rT   r  r  nchildrens         r+   visit_field_listzHTMLTranslator.visit_field_list  sX   T44dnnEFY'&*D#mm//Y/&*D#"" 
"2Y
!*e.>.>???'1 C!#-a#A  C CH*x=A-&x{(-9I9I'JL.3D+
 			tWF-3-B ' D 	E 			 2 	3Cs   "#E'c                     | j                   j                  d       | j                  j                         \  | _        | _        y Nr   )r]   r^   r   r   r  r  rS   s     r+   depart_field_listz HTMLTranslator.depart_field_list  s1    		/026,,2B2B2D/r-   c           	         i }| j                   rd|d<   nd|d<   | j                  j                  rtt        |j	                               | j                  j                  kD  rDd|d<   | j
                  j                  d| j                  |j                  ddd	
      z   dz          n| j
                  j                  d       | j                  j                   | j                  |ddfi |       y )Nzdocinfo-namer  z
field-name   colspanr  r   r"   r  rZ   z<td>&nbsp;</td>th)
r   r   field_name_limitr   r   r   r^   r_   rt   r]   r*   rT   r
  s      r+   visit_field_namezHTMLTranslator.visit_field_name  s    ??*DM(DMMM**DKKM"T]]%C%CCDOLL	"&--T26= #0 #?!? #4!4 5
 LL#		tT2>>?r-   c                     | j                   j                  d       | j                   j                  | j                  j                                y )Nz:</th>r  rS   s     r+   depart_field_namez HTMLTranslator.depart_field_name  s3    		"		))+,r-   c           	          | j                   j                  | j                  |dddd             | j                   j                  d       | j                  |       y )Nr   zdocutils footnoter   rM   r   r   r   rS   s     r+   visit_footnotezHTMLTranslator.visit_footnote  r   r-   c                    g }|d   }| j                   j                  r|rt        |      dk(  rX| j                  j	                  d       | j                  j	                  d       | j                  j	                  d|d   z         nt        |d      D ]  \  }}|j	                  d|d|d        | j                  j	                  d	d
j                  |      z         | xj                  ddgz  c_        n2| j                  j	                  d       | xj                  ddgz  c_        t        |      dkD  r1|s|d   d   j	                  d       |d   d   j	                  d       y y )Nbackrefsr   r"   </a>z!<a class="fn-backref" href="#%s">r   z<a class="fn-backref" href="#">z<em>(%s)</em> , rf   rO   rQ   rP   )r   footnote_backlinksr   r   r^   	enumerater9   )r*   rT   	backlinksr4  ibackrefs         r+   r   z HTMLTranslator.footnote_backrefs  sA   	
#==++8}!##B'##F+##$G&.qk%2 3 %.h$: 5LQ$$(/&4 55 ##$4tyy7K$KLR(LL#LLRH$Lt9q= Q	"))'2HY&&v. r-   c                 :    | j                   j                  d       y r   rn   rS   s     r+   depart_footnotezHTMLTranslator.depart_footnote  r   r-   c           	      ,   d|d   z   }| j                   j                  }|dk(  rd}| j                  j                  d       n$|dk(  sJ d}| j                  j                  d       | j                  j                  | j                  |d	|d
|             y )Nr   r   bracketsr   ]superscriptz<sup></sup>r   zfootnote-reference)r[   r   )r   footnote_referencesr   r^   r]   r_   )r*   rT   r   formatr   s        r+   visit_footnote_referencez'HTMLTranslator.visit_footnote_reference  s    T']"22ZFLL$]***FLL)		tS&-A ' N 	Or-   c                 p    | j                   j                  | j                  j                         dz          y )Nr5  r  rS   s     r+   depart_footnote_referencez(HTMLTranslator.depart_footnote_reference  s&    		))+f45r-   c                      y r%   rD   rS   s     r+   visit_generatedzHTMLTranslator.visit_generated  r   r-   zimage/svg+xmlzapplication/x-shockwave-flash)z.svgz.swfc                    i }|d   }t         j                  j                  |      d   j                         }|| j                  v r||d<   | j                  |   |d<   n||d<   |j                  d|      |d<   d|v r|d   |d<   d|v r|d   |d<   d	|v r#t        rd|vsd|vr| j                  j                  rt        |      }	 t        j                  j                  |      5 }|j                  }d d d        | j                  j                  j                  |j                  d
d             d|vrdd   z  |d<   d|vrdd   z  |d<   	 dD ]f  }||v st%        j&                  d||         }	|	sJ t)        |	j+                  d            t)        |d	         dz  z  |	j+                  d      ||<   h g }
dD ]J  }||v st%        j&                  d||         r||xx   dz  cc<   |
j-                  |d||   d       ||= L |
rdj/                  |
      |d<   t1        |j2                  t4        j6                        sRt1        |j2                  t4        j8                        r1t1        |j2                  j2                  t4        j6                        sd}nd}d|v rd|d   z  |d<   || j                  v rH| j:                  j-                   | j<                  |ddfi ||j                  d|      z   dz   |z          y | j:                  j-                   | j>                  |d|fi |       y # 1 sw Y   ?xY w# t         t"        f$ r Y  w xY w) Nurir   datatypesrcaltr   heightscale\/z%dpxr   )r   rQ  z([0-9.]+)(\S*)$d   r)  z	^[0-9.]+$pxz: ; styler"   
alignalign-%sr  objectz	</object>img) r5   r6   splitextlowerobject_image_typesr   r   r   file_insertion_enabledr	   Imager   sizerecord_dependenciesaddreplaceOSErrorUnicodeEncodeErrorrematchfloatgroupr^   r9   rs   rt   r   TextElement	referencer]   r_   r   )r*   rT   r
  rL  ext	imagepathr^  img_sizeatt_namerk  rY  r   s               r+   visit_imagezHTMLTranslator.visit_image#  s@   5kggs#A&,,.$)))DL2237DLDK((5#.DKd? MDMt!(^DNd?,0DMM88(-	>	2 ,c#&88,
 MM5599!))$46d*(.!(<Wt+)/(1+)=X- (t#HH%7hHE L5ekk!n-tG}1E1KLA&(DN	( ) 	#H488L$x.9Nd*N(DNCDN	# HHUODMt{{E$5$564;;8"4;;#5#5u7H7HIFFd?&g6DM$)))II]T]]42FF#xxs346ABDJK L II]T]]4G$GHU, ,!34 s*   L; $L.1L; .L83L; ;MMc                      y r%   rD   rS   s     r+   depart_imagezHTMLTranslator.depart_imagec  r   r-   c           	          | j                   j                  | j                  |dd| j                  j	                         z  d             y )Nr   z%s[labelrZ   )r]   r^   r_   r   r   rS   s     r+   visit_labelzHTMLTranslator.visit_labelh  s?    		tT54<<;K;K;M3M-4 ' 6 	7r-   c                     | j                   j                  d| j                  j                          d| j                  j                                 y )NrA  z	</td><td>r  rS   s     r+   depart_labelzHTMLTranslator.depart_labell  s=    		1T\\--/0	$,,:J:J:L9MNOr-   c                     | j                   j                  | j                  |dd             t        |      r|d   d   j                  d       y y )Nlir"   r   rf   rO   r   rS   s     r+   visit_list_itemzHTMLTranslator.visit_list_itemp  sD    		tT267t9GI%%g. r-   c                 :    | j                   j                  d       y )Nz</li>
rn   rS   s     r+   depart_list_itemzHTMLTranslator.depart_list_itemu  r   r-   c                 ^   |d   }d|v rF|D cg c]
  }|dk7  s	| c}|d<   | j                   j                  | j                  |dd             y | j                   j                  | j                  |ddd             |j                         }| j                  j                  |      D ]  }|j                         rt| j                  j                  |      r.| j                   j                  d| j                  |      z         \| j                   j                  | j                  |             |dv r| j                   j                  |       | j                   j                  d	t        |      d
z
  z  dz           | j                   j                  d       t        j                  c c}w )Nrf   coder"   ttzdocutils literalrZ   z<span class="pre">%s</span>)rZ  rX  rF   r   rX  </tt>)r]   r^   r_   r   words_and_spacesfindallr	  in_word_wrap_pointsearchencoder   r   SkipNode)r*   rT   rf   clstexttokens         r+   visit_literalzHTMLTranslator.visit_literalz  sj   y/W.5GssGDOIIT]]4<=		MM$b0BMC	E{{}**2248 	DE{{} **11%8II$$%B'+{{5'9&: ; II$$T[[%78+%		  ' 		  SZ!^!<s!BC	D 			!nn/ Hs
   
F*F*c                 :    | j                   j                  d       y )Nz</code>rn   rS   s     r+   depart_literalzHTMLTranslator.depart_literal  s    		#r-   c                 ^    | j                   j                  | j                  |dd             y )NrY   zliteral-blockrZ   r   rS   s     r+   visit_literal_blockz"HTMLTranslator.visit_literal_block  r   r-   c                 :    | j                   j                  d       y rb   rn   rS   s     r+   depart_literal_blockz#HTMLTranslator.depart_literal_block  r   r-   c                    i }| j                   j                  rQt        |j                               | j                   j                  kD  r!d|d<   | j                  j                  d       n| j                  j                  d       | j                  j                   | j                  |dfddi|       | j                  j                  d       | j                  j                  d	       y )
Nr)  r*  z</tr>
<tr><td>&nbsp;</td>r"   r   r[   zoption-groupz<kbd>r   )r   option_limitr   r   r   r^   r]   r_   r-  s      r+   visit_option_groupz!HTMLTranslator.visit_option_group  s    MM&&DKKM"T]]%?%??DOLL <=LL#		DMM$CNCdC	E		!Ar-   c                     | j                   j                          | j                  j                  d       | j                  j                  | j                   j                                y )Nz</kbd></td>
)r   r   r]   r^   rS   s     r+   depart_option_groupz"HTMLTranslator.depart_option_group  sC    		)		))+,r-   c           	          | j                   j                  | j                  |dddd             | j                   j                  d       y )Nr   zdocutils option-listr   rM   r   zH<col class="option" />
<col class="description" />
<tbody valign="top">
r   rS   s     r+   visit_option_listz HTMLTranslator.visit_option_list  sJ    		mmD'1G"(  8	9 			 2 	3r-   c                 :    | j                   j                  d       y r&  rn   rS   s     r+   depart_option_listz!HTMLTranslator.depart_option_list  s    		/0r-   c                 \    | j                   j                  | j                  |dd             y )Nr   r"   r   rS   s     r+   visit_option_list_itemz%HTMLTranslator.visit_option_list_item  s!    		tT267r-   c                 :    | j                   j                  d       y r  rn   rS   s     r+   depart_option_list_itemz&HTMLTranslator.depart_option_list_item  r   r-   c           
         t        |j                  t        j                        s$t        |j                  t        j                        ry|j                         D ]*  \  }}|j                  |      s|dk(  r|g dgdgddgfv r* y t        |j                  d   t        j                        }|j                  j                  |d D ]$  }t        |t        j                        r||u r n y t        |j                  D cg c]/  }t        |t        j                  t        j                  f      r.|1 c}      }| j                  s| j                  s| j                  r|dk(  ryyc c}w )	zU
        Determine if the <p> tags around paragraph ``node`` can be omitted.
        Frf   rO   rP   r   Nr   T)rs   rt   r   r   r   attlistis_not_defaultrx  r#  r  r   r   r  r  )r*   rT   keyvaluerO   r   r"  parent_lengths           r+   should_be_compact_paragraphz*HTMLTranslator.should_be_compact_paragraph  s=    t{{ENN3$++u~~6,,. 	JC##C(	)"rG9(.x'61B'D D 	 4;;q>5;;7[[))%&1 	E%1}	  01:-</Q 0 1&&~~-1"40s   /E'1E'c                     | j                  |      r| j                  j                  d       y | j                  j                  | j	                  |dd             | j                  j                  d       y )Nr"   p</p>
)r  r   r^   r]   r_   rS   s     r+   visit_paragraphzHTMLTranslator.visit_paragraph  sS    ++D1LL#IIT]]4b9:LL)r-   c                 j    | j                   j                  | j                  j                                y r%   r  rS   s     r+   depart_paragraphzHTMLTranslator.depart_paragraph  r  r-   c                     | j                   j                  | j                  |dd             | j                  |       d| _        y )Nrh   sidebarrZ   T)r]   r^   r_   rU   
in_sidebarrS   s     r+   visit_sidebarzHTMLTranslator.visit_sidebar  s;    		MM$YM7	9D!r-   c                 H    | j                   j                  d       d| _        y )Nrm   F)r]   r^   r  rS   s     r+   depart_sidebarzHTMLTranslator.depart_sidebar  s    		$r-   c                    t        |j                  t        j                        r/| j                  j                  | j                  |ddd             y | j                  j                  | j                  |dd             y )Nr   r"   	subscriptrZ   subrs   rt   r   literal_blockr]   r^   r_   rS   s     r+   visit_subscriptzHTMLTranslator.visit_subscript  sb    dkk5#6#67IIT]]41< + > ? IIT]]4;<r-   c                     t        |j                  t        j                        r| j                  j                  d       y | j                  j                  d       y )Nr   z</sub>rs   rt   r   r  r]   r^   rS   s     r+   depart_subscriptzHTMLTranslator.depart_subscript  :    dkk5#6#67IIY'IIX&r-   c           	      <   t        |j                  t        j                        rJ| j                  j                  | j                  |ddd             | j                  j                  d       y t        |j                  t        j                        rd| j                  j                  | j                  |ddd             | j                  j                  d       t        | j                        | _
        y t        |j                  t        j                        rd	| j                  | j                  z   d
z
  z  }| j                  j                  | j                  ||dd      | j                  i ddd      z          | j                  j                  d|z         y y )Nr  r"   zsidebar-subtitlerZ   r  h2subtitlez</h2>
zh%sr   zsection-subtitler   z</span></%s>
)rs   rt   r   r  r]   r^   r_   r   r   r   in_document_titlesectionsection_levelr    )r*   rT   tags      r+   visit_subtitlezHTMLTranslator.visit_subtitle  s>   dkk5==1IIT]]4b1C + E FLL)U^^4IIT]]4r]LMLL	*%(^D"U]]34--0I0IIAMNCIIdC3EF--FB6H-IJK LL 03 67 4r-   c                    | j                   j                  | j                  j                                | j                  r| j                   | j                  d | _        d| _        | j                  j                  | j                          | j                  j                  | j                          | j                   d d = y y )NrQ   r   )	r]   r^   r   r   r  r  body_pre_docinfoextendhtml_subtitlerS   s     r+   depart_subtitlezHTMLTranslator.depart_subtitle  s    		))+,!! IId&<&<R@DM%&D"!!((3%%dii0		! "r-   c                    t        |j                  t        j                        r/| j                  j                  | j                  |ddd             y | j                  j                  | j                  |dd             y )Nr   r"   rB  rZ   supr  rS   s     r+   visit_superscriptz HTMLTranslator.visit_superscript&  sd    dkk5#6#67IIT]]41> + @ A IIT]]4;<r-   c                     t        |j                  t        j                        r| j                  j                  d       y | j                  j                  d       y )Nr   rC  r  rS   s     r+   depart_superscriptz!HTMLTranslator.depart_superscript-  r  r-   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 )Nrh   zsystem-messagerZ   z <p class="system-message-title">r"   r4  r   z%; <em><a href="#%s">backlink</a></em>r   z
<a href="#r6  r5  z; <em>backlinks: %s</em>r7  linez	, line %szSystem Message: rN  rT  levelz (<tt class="docutils">sourcer  rI   r  )r]   r^   r_   r   r9   hasattrr  )r*   rT   backref_textr4  r;  r:  r<  r  s           r+   visit_system_messagez#HTMLTranslator.visit_system_message4  s   		tU:JKL		;<tJ J'H8}! G"*1+!. 	' G$$w%JKFA !;"&))I"6!7<<f-DD		 L$w- KKX7|M 	Nr-   c                 :    | j                   j                  d       y rl   rn   rS   s     r+   depart_system_messagez$HTMLTranslator.depart_system_messageN  rp   r-   c           	      d   | j                   j                  | j                         d| _        ddi}d| j                  j                  g}d|v r|j                  d|d   z         d|v rd|d   z  |d	<   | j
                  j                   | j                  |d
fddj                  |      i|       y )NTborderr   r3   r[  r\  r   z	width: %srY  r   r[   rX  )r   r^   r  r   r   r]   r_   r9   )r*   rT   r
  rf   s       r+   visit_tablezHTMLTranslator.visit_tableR  s    DNN+!}t}}889d?NN:W56d?'$w-7DM		DMM$Isxx/@IDI	Kr-   c                 x    | j                   j                         | _        | j                  j	                  d       y )Nz	</table>
)r   r   r  r]   r^   rS   s     r+   depart_tablezHTMLTranslator.depart_table^  s(    ))+		&r-   c                 ^    | j                   j                  | j                  |dd             y )Ntbodytopvalignr   rS   s     r+   visit_tbodyzHTMLTranslator.visit_tbodyc  s#    		tWUCDr-   c                 :    | j                   j                  d       y )Nz	</tbody>
rn   rS   s     r+   depart_tbodyzHTMLTranslator.depart_tbodyf  r   r-   c           
          | j                   j                  | j                  |dd|j                  d   |j                  d                y )Ndtr"   rf   ids)rf   r  )r]   r^   r_   rt   rS   s     r+   
visit_termzHTMLTranslator.visit_termj  sC    		tT2/3{{9/E+/;;u+= ' ? 	@r-   c                      y r%   rD   rS   s     r+   depart_termzHTMLTranslator.depart_termo  r   r-   c                 ^    | j                   j                  | j                  |dd             y )Ntheadbottomr  r   rS   s     r+   visit_theadzHTMLTranslator.visit_theads  s#    		tWXFGr-   c                 :    | j                   j                  d       y )Nz	</thead>
rn   rS   s     r+   depart_theadzHTMLTranslator.depart_theadv  r   r-   c                    g }| j                   | j                  z   dz
  }t        |j                        dk\  r8t	        |j                  d   t
        j                        r|j                  d       |dkD  r|j                  d|z         dt        |d      z  }| j                  ||d|      }|j                  d      r3i }d	|d
<   d|d   z   |d<   | | j                  i ddfi |z  }d|z  }||fS d|z  }||fS )Nr   r)  zwith-subtitle   zh%ir"   )rf   r   ztoc-backrefr  r   r   r   z
</a></%s>
z</%s>
)r  r    r   rt   rs   r   r  r^   minr_   r  )r*   rT   rf   h_leveltagname	start_tagr
  	close_tags           r+   section_title_tagsz!HTMLTranslator.section_title_tags{  s
   $$t'@'@@1D!4;;q>5>>:NN?+Q;NN57?+#gq/)MM$WME	<< D)DMg.DLr3;d;;I%/I )## "G+I)##r-   r%   )T)gr.   r/   r0   __doc__doctypecontent_typecontent_type_mathmlr   r'   special_characterscopyattribution_formatsrU   r`   rd   rj   ro   rw   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\   rc   r   r   r   r  r  r  r  r  r  r  r$  r'  r.  r0  r2  r   r>  rF  rH  rJ  ra  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  rD   r-   r+   r'   r'   i   sF   (\	H <LO $22EEJJL't $3*4%/#+-2
F#
"
%4''#>
*(<%1H"N$;%"
$F$""3)L'"-<($
G$
6$36E@"-
%/41
O6 #2"AC>I@
7P/
$
<$
L'-
318$
>*- 
='8 ='N4%
K'
E'@
H'
$r-   r'   c                   (    e Zd ZdZd Zd Zd Zd Zy)SimpleListCheckerz
    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.
    c                    g }|j                   D ].  }t        |t        j                        r|j	                  |       0 |rgt        |d   t        j
                        rJt        |d   t        j                        st        |d   t        j                        r|j                          t        |      dk  ry t        j                  )Nr   rQ   r   )r#  rs   r   r  r^   r   bullet_listenumerated_listr   r   	NodeFound)r*   rT   r#  r   s       r+   r~  z!SimpleListChecker.visit_list_item  s    ]] 	'EeU__5&	' HQKAHRL%*;*;<x|U-B-BCLLNx=A//!r-   c                 "    t         j                  r%   )r   r  rS   s     r+   r  z!SimpleListChecker.visit_paragraph  s    nnr-   c                 "    t         j                  r%   r   r  rS   s     r+   r   z'SimpleListChecker.visit_definition_list      oor-   c                 "    t         j                  r%   r
  rS   s     r+   r   zSimpleListChecker.visit_docinfo  r  r-   N)r.   r/   r0   r  r~  r  r   r   rD   r-   r+   r  r    s    "(r-   r  )r  __docformat__os.pathr5   rj  r3   r   r   r   docutils.writersr   docutils.writers._html_baser   r	   r   r'   r  rD   r-   r+   <module>r     st    #  	  - - ' 9L/W&& L/^d$W''66 d$N$**<< $r-   