403Webshell
Server IP : 127.0.0.1  /  Your IP : 216.73.216.109
Web Server : Apache/2.4.54 (Win64) OpenSSL/1.1.1q PHP/8.1.10
System : Windows NT DESKTOP-E5T4RUN 10.0 build 19045 (Windows 10) AMD64
User : SERVERWEB ( 0)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : OFF |  Perl : OFF |  Python : OFF |  Sudo : OFF |  Pkexec : OFF
Directory :  C:/cygwin64/lib/python3.9/site-packages/sphinx/writers/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : C:/cygwin64/lib/python3.9/site-packages/sphinx/writers/__pycache__/latex.cpython-39.opt-2.pyc
a

�ab�B�@s>ddlZddlZddlmZddlmZddlmZmZm	Z	m
Z
mZmZm
Z
mZddlmZmZddlmZmZmZddlmZmZddlmZdd	lmZdd
lmZddlm Z ddl!m"Z"m#Z#m$Z$dd
l%m&Z&m'Z'm(Z(ddl)m*Z*ddl+m,Z,m-Z-ddl.m/Z/ddl0m1Z1zddl2m3Z3Wn e4�y@ddl5m3Z3Yn0e�r`ddl6m7Z7ddl8m9Z9e&�:e;�Z<dZ=gd�Z>edd�dddddd��Z?dZ@d ZAe�Bd!�ZCGd"d#�d#ejD�ZEGd$d%�d%e �ZFGd&d'�d'ejG�ZHGd(d)�d)�ZIGd*d+�d+�ZJeKeKd,�d-d.�ZLd6eKeMeKd0�d1d2�ZNGd3d4�d4e*�ZOdd5lPmQZQmRZRmSZSdS)7�N)�defaultdict)�path)�
TYPE_CHECKING�Any�Dict�Iterable�List�Set�Tuple�cast)�nodes�writers)�Element�Node�Text)�addnodes�highlighting)�RemovedInSphinx50Warning)�
IndexEntry)�StandardDomain)�SphinxError)�_�__�admonitionlabels)�logging�
split_into�	texescape)�SphinxTranslator)�clean_astext�
get_prev_node)�
LaTeXRenderer)�tex_replace_map)�toRoman)�LaTeXBuilder)�Theme�)�part�chapter�sectionZ
subsectionZ
subsubsection�	paragraphZsubparagraphcCsdS)N�\arabic�r+r+r+�8/usr/lib/python3.9/site-packages/sphinx/writers/latex.py�<lambda>3�r-r*z\alphz\Alphz\romanz\Roman)�arabicZ
loweralphaZ
upperalphaZ
lowerromanZ
upperroman�
z

z^(.*\S)\s+\(([^()]*)\)\s*$c@seZdZdS)�collected_footnoteN)�__name__�
__module__�__qualname__r+r+r+r,r1Asr1c@seZdZdZdS)�UnsupportedErrorzMarkup is unsupported in LaTeXN)r2r3r4�categoryr+r+r+r,r5Esr5cs|eZdZUdZddddgddifddgdd	ifd
dgddifffZiZeed<d
Zdd
d��fdd�Z	d
d�dd�Z
�ZS)�LaTeXWriter)ZsphinxlatexzLaTeX writer options�z
Document namez	--docname�defaultzDocument classz
--docclass�manualZAuthorz--author�settings_defaultsNr#)�builder�returncst���||_d|_dS�N)�super�__init__r<�theme)�selfr<��	__class__r+r,r@Vs
zLaTeXWriter.__init__�r=cCspz|j�|j|j|j�}Wn4tyNtjdtdd�|j�|j|j�}Yn0|j�|�t	t
|���|_dS)N�0LaTeXTranslator now takes 3rd argument; "theme".���
stacklevel)
r<Zcreate_translator�documentrA�	TypeError�warnings�warnrZ	walkaboutr�LaTeXTranslator�astext�output)rBZvisitorr+r+r,�	translate[s�zLaTeXWriter.translate)r2r3r4Z	supportedZ
settings_specr;r�__annotations__rPr@rQ�
__classcell__r+r+rCr,r7Is
�r7c@sleZdZedd�dd�Zed�dd�Zed�dd	�Zed�d
d�Z	e
e
dd�d
d�Zde
e
dd�dd�ZdS)�TableN��noder=cCsxg|_g|_|�dd�|_|�dg�|_d|_d|_g|_d|_d|_	d|_
d|_g|_d|_
d|_tt�|_d|_dS)N�alignr9�classesrF)�header�body�getrWrX�colcount�colspec�	colwidths�has_problematic�has_oldproblematic�has_verbatim�caption�stubs�col�rowr�int�cells�cell_id�rBrVr+r+r,r@ls 
zTable.__init__rEcCs|jdkpd|jvS)N��	longtable)rerX�rBr+r+r,�is_longtable�szTable.is_longtablecCsB|��rdS|jrdS|jr dS|js6|jr:d|jvr:dSdSdS)NrkZtabular�tabulary�colwidths-given)rmrar]r_r^rXrlr+r+r,�get_table_type�s	zTable.get_table_typecs�|jr|jS|jrLd|jvrLt|j���fdd�|jD�}dd�|�tS|jrfd|j|jftS|��dkr�dd	|jd
tS|j	r�d|j|jftSdd|jd
tSdS)Nrocsg|]}d|�f�qS)z
\X{%d}{%d}r+)�.0�width��totalr+r,�
<listcomp>�r.z%Table.get_colspec.<locals>.<listcomp>z{|%s|}�|z{|*{%d}{\X{1}{%d}|}}rnz{|zT|�}zl|)
r]r^rX�sum�join�CRr_r\rpr`)rBZcolspecsr+rsr,�get_colspec�s
zTable.get_colspec)�heightrrr=cCsJ|jd7_t|�D].}t|�D] }|j|j|j||j|f<q"qdS�N�)rh�rangergrerd)rBr|rrrdrer+r+r,�add_cell�szTable.add_cell�	TableCell)rerdr=cCsDz*|dur|j}|dur|j}t|||�WSty>YdS0dSr>)rerdr��
IndexError)rBrerdr+r+r,�cell�sz
Table.cell)NN)
r2r3r4rr@�boolrm�strrpr{rfr�r�r+r+r+r,rTisrTc@sDeZdZeeedd�dd�Zeed�dd��Zeed�dd	��ZdS)
r�N)�tablererdr=cCs�|j||fdkrt�||_|j||f|_||_||_|j|jd|jf|jkrd|jd8_q8|j|j|jdf|jkr�|jd8_qddS�Nrr~)rgr�r�rhrerd)rBr�rerdr+r+r,r@�szTableCell.__init__rEcCs0d}|jj|j|j|f|jkr,|d7}q|Sr��r�rgrerdrh)rBrrr+r+r,rr�s
zTableCell.widthcCs0d}|jj|j||jf|jkr,|d7}q|Sr�r�)rBr|r+r+r,r|�s
zTableCell.height)	r2r3r4rTrfr@�propertyrrr|r+r+r+r,r��s
r���textr=cCst�dd|�S)Nz
\.(?=\s|$)z.\@)�re�sub)r�r+r+r,�escape_abbr�sr��d��	width_str�scaler=cCs�t�d|�}|st�|}|��dd�\}}|dkrzt|�|dvrNd|}q�|dkr`d|}q�|dkr�d	t|�d
}nVt|�|d
}|dvr�d|}n4|dkr�d|}n"|dkr�d
|d
}nd||f}|S)Nz^(\d*\.?\d*)\s*(\S*)$rGr�)r8Zpxz%s\sphinxpxdimen�ptz%sbp�%z%.3f\linewidth�Y@z%.5f\sphinxpxdimenz%.5fbpz%.5f\linewidthz%.5f%s)r��match�
ValueError�groups�float)r�r�r��res�amountZunitZamount_floatr+r+r,�rstdim_to_latexdim�s,



r�cs�eZdZUdZded<dZdZdZ�d�ej	dddd��fd	d
�
Z
eedd�dd
�Z
eed�dd�Zeed�dd�Zed�dd�Z�d�eeeed�dd�Z�d�eeed�dd�Zeed�dd�Zeed�d d!�Zeed"�d#d$�Zeed�d%d&�Zeeed'�d(d)�Zed�d*d+�Zeeed,�d-d.�Zeed�d/d0��Zedd1�d2d3�Z edd1�d4d5�Z!edd1�d6d7�Z"edd1�d8d9�Z#edd1�d:d;�Z$edd1�d<d=�Z%edd1�d>d?�Z&edd1�d@dA�Z'edd1�dBdC�Z(edd1�dDdE�Z)e(Z*e)Z+edd1�dFdG�Z,edd1�dHdI�Z-edd1�dJdK�Z.edd1�dLdM�Z/edd1�dNdO�Z0edd1�dPdQ�Z1edd1�dRdS�Z2edd1�dTdU�Z3edd1�dVdW�Z4edd1�dXdY�Z5edd1�dZd[�Z6edd1�d\d]�Z7edd1�d^d_�Z8edd1�d`da�Z9edd1�dbdc�Z:edd1�ddde�Z;edd1�dfdg�Z<edd1�dhdi�Z=edd1�djdk�Z>edd1�dldm�Z?edd1�dndo�Z@edd1�dpdq�ZAedd1�drds�ZBedd1�dtdu�ZCedd1�dvdw�ZDedd1�dxdy�ZEedd1�dzd{�ZFedd1�d|d}�ZGedd1�d~d�ZHedd1�d�d��ZIedd1�d�d��ZJedd1�d�d��ZKedd1�d�d��ZLedd1�d�d��ZMedd1�d�d��ZNedd1�d�d��ZOedd1�d�d��ZPedd1�d�d��ZQedd1�d�d��ZRedd1�d�d��ZSedd1�d�d��ZTedd1�d�d��ZUedd1�d�d��ZVedd1�d�d��ZWedd1�d�d��ZXedd1�d�d��ZYedd1�d�d��ZZedd1�d�d��Z[edd1�d�d��Z\edd1�d�d��Z]edd1�d�d��Z^edd1�d�d��Z_edd1�d�d��Z`edd1�d�d��Zaedd1�d�d��Zbedd1�d�d��Zcedd1�d�d��Zdedd1�d�d��Zeedd1�d�d��Zfedd1�d�d��Zgedd1�d�d��Zhedd1�d�d��Ziedd1�d�dÄZjedd1�d�dńZkedd1�d�dDŽZledd1�d�dɄZmedd1�d�d˄Znedd1�d�d̈́Zoedd1�d�dτZpedd1�d�dфZqedd1�d�dӄZredd1�d�dՄZsedd1�d�dׄZtedd1�d�dلZuedd1�d�dۄZvedd1�d�d݄Zwedd1�d�d߄Zxedd1�d�d�Zyedd1�d�d�Zzedd1�d�d�Z{edd1�d�d�Z|edd1�d�d�Z}edd1�d�d�Z~euZevZ�eyZ�ezZ�edd1�d�d�Z�edd1�d�d�Z�edd1�d�d�Z�edd1�d�d�Z�edd1�d�d��Z�edd1�d�d��Z�edd1�d�d��Z�edd1�d�d��Z��d�ee�ed��d�d��Z�eed1��d�d�Z�edd1��d�d�Z�edd1��d�d�Z�edd1��d�d�Z�edd1��d�d	�Z�edd1��d
�d�Z�edd1��d�d
�Z�edd1��d�d�Z�edd1��d�d�Z�edd1��d�d�Z�edd1��d�d�Z�edd1��d�d�Z�edd1��d�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�edd1��d�d�Z�edd1��d�d�Z�edd1��d�d�Z�edd1��d �d!�Z�edd1��d"�d#�Z�edd1��d$�d%�Z�edd1��d&�d'�Z�edd1��d(�d)�Z�edd1��d*�d+�Z�edd1��d,�d-�Z�edd1��d.�d/�Z�edd1��d0�d1�Z�edd1��d2�d3�Z�edd1��d4�d5�Z�edd1��d6�d7�Z�edd1��d8�d9�Z�edd1��d:�d;�Z�edd1��d<�d=�Z�edd1��d>�d?�Z�edd1��d@�dA�Z�edd1��dB�dC�Z�edd1��dD�dE�Z�edd1��dF�dG�Z�edd1��dH�dI�Z�edd1��dJ�dK�Z�edd1��dL�dM�Z�edd1��dN�dO�Z�edd1��dP�dQ�Z�edd1��dR�dS�Z�edd1��dT�dU�Z�edd1��dV�dW�Z�edd1��dX�dY�Z�edd1��dZ�d[�Z�edd1��d\�d]�Z�edd1��d^�d_�Z�edd1��d`�da�Z�edd1��db�dc�Z�edd1��dd�de�Z�edd1��df�dg�Z�edd1��dh�di�Z�edd1��dj�dk�Z�edd1��dl�dm�Z�edd1��dn�do�Z�edd1��dp�dq�Z�edd1��dr�ds�Z�edd1��dt�du�Z�e�Z�e�Z�edd1��dv�dw�Z�edd1��dx�dy�Z�edd1��dz�d{�Z�edd1��d|�d}�Z�edd1��d~�d�Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�edd1��d��d��Z�ee�d���d��d���Zee�d���d��d„�Z�edd1��dÐdĄ�Z�edd1��dŐdƄ�Zedd1��dǐdȄ�Zedd1��dɐdʄ�Zedd1��dːd̄�Zedd1��d͐d΄�Zedd1��dϐdЄ�Z	edd1��dѐd҄�Z
edd1��dӐdԄ�Zedd1��dՐdք�Z��Z
S(�rNNr#r<rGF)�howtor:r$)rJr<rAr=c	s�t��||�g|_||_|dur2tjdtdd�d|_d|_d|_	d|_
d|_d|_d|_
d|_d|_d|_d|_d|_d|_d|_g}|jj��|_tdd�|_|jr�|jj}|jjdkr�|j�d�nl|�|jj�|jd<|� d	�d
k�r |j!j"� d
d�}|ddk�rn|j�d�n|j!j"� d
d�}||jd	<d|_#|j!j$�r�z|j�%|j!j$�|_#Wn.t&�y�t'�(t)d�|j!j$|f�Yn0|j!j*�r(|j!j+|_+|j+dk�rt,|j�t,t�k�r�|j#dk�r�|j+|j#7_+n|j+|j#d7_+t-|j+t,t�d�|_+|�.d|j+�n
|�.d�|j!j*�rF|j!j/�rF|�.d�|j!j0dv�r|d|j!j1v�r|dt2dt2d|jd<|jj3|_3|j!j0�r�|j3�4��s�t'�(t)d�|j!j0�|j5}|j6� d��rH|j6� dd�|j#d}t,|j�t,t�k�r|j#dk�r|d7}|t,t�dk�r0t'�(t)d��t,t�d}d||jd<t7||�}|j!j*�rp|j!j+dk�rpt7||j+d�}||j5k�r�d||jd<|� d�}|�r�|�8d |�|jd<|jd!�r�|�.d"|jd!�|�r�d#d$�9|�|jd%<|jd&�rd'|jd&|jd&<|jd(�r.|jd)d$|jd(7<t:j;d*|j!j<|j!j=d+�|_>g|_g|_?g|_@d|_Ag|_Bd|_Cg|_Dg|_EtF�|_GdS),NrFrGrHrr~r(r'Zwrapperclass�docclassr�Zarticle�jr:�reportz+unknown %r toplevel_sectioning for class %rznumfigreset=%sZ
nonumfigresetZ
mathnumfig>�en�jaNZfncychapz\usepackage[Sonny]{fncychap}z&\ChNameVar{\Large\normalfont\sffamily}z'\ChTitleVar{\Large\normalfont\sffamily}z%no Babel option known for language %r�tocdepthi�ztoo large :maxdepth:, ignored.z\setcounter{tocdepth}{%d}z\setcounter{secnumdepth}{%d}�secnumdepth�contentsnamez
\contentsnameZmaxlistdepthzmaxlistdepth=%sz[,%s]�,�sphinxpkgoptionsZsphinxsetupz\sphinxsetup{%s}ZextraclassoptionsZclassoptions�latex��latex_engine)Hr?r@rZrArLrMr�in_title�in_production_list�in_footnote�
in_caption�in_term�needs_linetrimming�in_minipage�no_latex_floats�first_document�this_is_the_title�literal_whitespace�in_parsed_literal�compact_list�first_paramr<�context�copy�elements�LATEXSECTIONNAMES�sectionnamesr�Ztoplevel_sectioning�remove�format_docclassZsettingsr[�configZlatex_docclass�top_sectionlevelZlatex_toplevel_sectioning�indexr��logger�warningrZnumfigZnumfig_secnum_depth�len�min�appendZmath_numfig�languageZlatex_elementsrz�babelZis_supported_languager�rJ�max�babel_renewcommandryrZPygmentsBridgeZpygments_styler��highlighterZ	descstack�tables�next_table_colspec�	bodystackZfootnote_restrictedZpending_footnotes�curfilestack�set�
handled_abbrs)	rBrJr<rAr�r�Zminsecnumdepthr�r�rCr+r,r@s��

�

�

�
�


����


��
�

�
��zLaTeXTranslator.__init__)�newbodyr=cCs|j�|j�||_dSr>)r�r�rZ)rBr�r+r+r,�pushbody�szLaTeXTranslator.pushbodyrEcCs|j}|j��|_|Sr>)rZr��pop)rBrZr+r+r,�popbody�szLaTeXTranslator.popbody)r�r=cCs&tjdtdd�||jvr"d|}|S)Nz,LaTeXWriter.format_docclass() is deprecated.rGrH�sphinx)rLrMr�
docclasses)rBr�r+r+r,r��s�
zLaTeXTranslator.format_docclasscCs,|j�d�|j�|��d��|�d|j�S)Nr8)rZ�indiceszlatex.tex_t)r��updateryrZ�generate_indices�renderrlr+r+r,rO�s

�zLaTeXTranslator.astextT)�id�withdoc�anchorr=cCs0|r|jdd|}|rdndd|�|�S)N����:�\phantomsectionr8�
\label{%s})r��idescape)rBr�r�r�r+r+r,�hypertarget�szLaTeXTranslator.hypertarget)rVr�r=cs0d��fdd�|dD��}|r(d|S|SdS)Nr8c3s|]}�j|dd�VqdS)F�r�N)r�)rq�node_idrlr+r,�	<genexpr>�r.z1LaTeXTranslator.hypertarget_to.<locals>.<genexpr>�idsr�)ry)rBrVr��labelsr+rlr,�hypertarget_to�szLaTeXTranslator.hypertarget_to�r�r=cCsd|�|�S)Nz{\hyperref[%s]{�r��rBr�r+r+r,�	hyperlink�szLaTeXTranslator.hyperlinkcCsd|�|�S)Nz\autopageref*{%s}r�r�r+r+r,�hyperpageref�szLaTeXTranslator.hyperpageref)�sr=cCst�||jj�Sr>)r�escaper�r�)rBr�r+r+r,r��szLaTeXTranslator.escapecCs(dt|��t��dd��d��dd�S)Nz\detokenize{%s}�ascii�backslashreplace�\r)r�rQr!�encode�decode�replacer�r+r+r,r��s���zLaTeXTranslator.idescape)�command�
definitionr=cCs:|jdrd|j��}d}nd}d}d||||ftS)NZmultilingualz\addto\captions%s{rwr8z%s\renewcommand{%s}{%s}%s)r�r�Zget_languagerz)rBr�r��prefix�suffixr+r+r,r��s
z"LaTeXTranslator.babel_renewcommandcs�tttttftdd���fdd�}g��jj}|r��jjj	�
�D]n}|jD]b}d|j|jf}t
|t�rx||vrxqP||���jj�\}}|s�qP��d|jt�|||�qPqFd���S)N)�content�	collapsedr=c
s���dt���dt�t|�D]�\}\}}|dkrF��dt���d��|�t�|D]j}|dspqb��d��|d��|dr���d	��|d����d
|d��|d�ft�qbq$��dt�dS)
Nz\begin{sphinxtheindex}z*\let\bigletter\sphinxstyleindexlettergrouprz\indexspacez\bigletter{%s}�z%\item\relax\sphinxstyleindexentry{%s}�z\sphinxstyleindexextra{%s}z\sphinxstyleindexpageref{%s:%s}rGz\end{sphinxtheindex})r�rz�	enumerater�r�r�)r�r��iZletter�entries�entry��retrBr+r,�generate�s(���
z2LaTeXTranslator.generate_indices.<locals>.generatez%s-%sz\renewcommand{\indexname}{%s}r8)rr
r�rr�r�Zlatex_domain_indicesr<�envZdomains�valuesr��name�
isinstance�listrZdocnamesr�Z	localnamerzry)rBrZindices_config�domainZindexclsZ	indexnamer�r�r+rr,r��s$(

�z LaTeXTranslator.generate_indices)�
template_name�	variablesr=cCsTt|jjd�}|jjD]0}t�|jj||�}t�|�r|�	||�Sq|�	||�S)Nr�)
r r�r�Ztemplates_pathrryr<Zconfdir�existsr�)rBrrZrendererZtemplate_dir�templater+r+r,r�s�
zLaTeXTranslator.rendercCs|jr|jdSdSdS)Nr�)r�rlr+r+r,r�#s
zLaTeXTranslator.tablerUcCst|j�|�dd��|jdkr&d|_n$|jdkrJ|j�tdt�d|_d|vrd|j�|�d��|jd|_dS)N�docnamer8r~rz	\appendixr�z:doc)	r�r�r[r�rZrzr�r��sectionlevelrir+r+r,�visit_document+s

zLaTeXTranslator.visit_documentcCsdSr>r+rir+r+r,�depart_document9szLaTeXTranslator.depart_documentcCs|j�|d�dS)Nr)r�r�rir+r+r,�visit_start_of_file<sz#LaTeXTranslator.visit_start_of_filecCs|j��dSr>)r�r�rir+r+r,�depart_start_of_file?sz$LaTeXTranslator.depart_start_of_filecCs$|js|jd7_|j�t�dSr})r�rrZr��	BLANKLINErir+r+r,�
visit_sectionBszLaTeXTranslator.visit_sectioncCst|jd|jd�|_dSr})r�rr�rir+r+r,�depart_sectionGs
�zLaTeXTranslator.depart_sectioncCs|j�d�dS)Nz{\color{red}\bfseries{}�rZr�rir+r+r,�visit_problematicKsz!LaTeXTranslator.visit_problematiccCs|j�d�dS�Nrwrrir+r+r,�depart_problematicNsz"LaTeXTranslator.depart_problematiccCsd|_|j�tdt�dS)Nr~z\begin{sphinxShadowBox}�r�rZr�rzrir+r+r,�visit_topicQszLaTeXTranslator.visit_topiccCsd|_|j�dt�dS)Nrz\end{sphinxShadowBox}rrir+r+r,�depart_topicUszLaTeXTranslator.depart_topiccCsdSr>r+rir+r+r,�visit_glossary[szLaTeXTranslator.visit_glossarycCsdSr>r+rir+r+r,�depart_glossary^szLaTeXTranslator.depart_glossarycCs&|j�t�|j�dt�d|_dS)Nz\begin{productionlist}r~)rZr�rrzr�rir+r+r,�visit_productionlistasz$LaTeXTranslator.visit_productionlistcCs|j�dt�d|_dS)Nz\end{productionlist}r)rZr�rr�rir+r+r,�depart_productionlistfsz%LaTeXTranslator.depart_productionlistcCsN|dr>|d}|j�|�d|��|j�d|�|��n|j�d�dS)NZ	tokennamezgrammar-token-z\production{%s}{z\productioncont{)rZr�r�r�)rBrV�tnr+r+r,�visit_productionjs
z LaTeXTranslator.visit_productioncCs|j�dt�dSr�rZr�rzrir+r+r,�depart_productionrsz!LaTeXTranslator.depart_productioncCs|j�|jd�dS)NZ
transition)rZr�r�rir+r+r,�visit_transitionusz LaTeXTranslator.visit_transitioncCsdSr>r+rir+r+r,�depart_transitionxsz!LaTeXTranslator.depart_transitioncCs|j}t|tj�rtj��n�t|tj��r,|jr�t|j	�dkrbt|j	dtj
�sbtjt
d�|d�|jds�|�|���|jd<d|_tj�n�d}t|�tj��r�d|�d�t|�����}z |j�d	|j|j|f�Wn.t�y|j�d	|jd
|f�Yn0|j�dt|�|j��n�t|tj��rX|j�d�|j�dt�n�t|tj ��r�|j�d
�|j�dt�ntt|tj!��r�|j�d�|j�dt�nHt|tj"��r�|�#g�n.tjt
d�|d�|j�d�|j�dt�d|_$dS)Nr~rz(document title is not a single Text node��location�titler8�[%s]� z\%s%s{r�rwz\sphinxstyletopictitle{z\sphinxstylesidebartitle{�{zJencountered title node not in section, topic, table, admonition or sidebarz\sphinxstyleothertitle{)%�parentrr�seealsor�SkipNoder(r�r��childrenrr�r�rr�r�rO�any�findall�imageryr�splitrZr�r�rr�r�rzr�Ztopic�sidebarZ
Admonitionr�r�r�)rBrVr2Zshortr+r+r,�visit_title{sP
�
�
  
�zLaTeXTranslator.visit_titlecCs8d|_t|jtj�r"|��|j_n|j�|j	�
��dS�Nr)r�rr2rr�r�rbrZr�r�r�rir+r+r,�depart_title�szLaTeXTranslator.depart_titlecCs<t|jtj�r,|j�d�|j�dt�n|j�d�dS)Nz\sphinxstylesidebarsubtitle{rwr8)rr2rr:rZr�r�rzrir+r+r,�visit_subtitle�szLaTeXTranslator.visit_subtitlecCs|j�|j���dSr>�rZr�r�r�rir+r+r,�depart_subtitle�szLaTeXTranslator.depart_subtitlecCsX|jjdkr*|j�t�|j�dt�n|j�t�|j�dt�|jrTd|j_dS)N�footnotez&\begin{savenotes}\begin{fulllineitems}z\begin{fulllineitems}T)r��latex_show_urlsrZr�rrzr�r_rir+r+r,�
visit_desc�szLaTeXTranslator.visit_desccCs:|jjdkr"|j�tdt�n|j�tdt�dS)NrAz"\end{fulllineitems}\end{savenotes}z\end{fulllineitems})r�rBrZr�rzrrir+r+r,�depart_desc�szLaTeXTranslator.depart_desccCs6|D] }t|tj�r|j�d�q2q|j�d�dS)Nz\pysiglinewithargsret{z\pysigline{)rrZdesc_parameterlistrZr�)rBrV�childr+r+r,�_visit_signature_line�s
z%LaTeXTranslator._visit_signature_linecCs|j�d�dSrrrir+r+r,�_depart_signature_line�sz&LaTeXTranslator._depart_signature_linecCst|jddkr*|dr*|�|dd�}nd}|j�|�|�d�sP|�|�n |j�dt�|j�dt�dS)	NZobjtypeZdescriber�rr8�is_multiliner�z\pysigstartmultiline)r2r�rZr�r[rFrz)rBrVZhyperr+r+r,�visit_desc_signature�s
z$LaTeXTranslator.visit_desc_signaturecCs6|�d�s|�|�n|j�dt�|j�d�dS)NrHr�z\pysigstopmultiline)r[rGrZr�rzrir+r+r,�depart_desc_signature�s
z%LaTeXTranslator.depart_desc_signaturecCs|�|�dSr>)rFrir+r+r,�visit_desc_signature_line�sz)LaTeXTranslator.visit_desc_signature_linecCs|�|�dSr>)rGrir+r+r,�depart_desc_signature_line�sz*LaTeXTranslator.depart_desc_signature_linecCsdSr>r+rir+r+r,�visit_desc_content�sz"LaTeXTranslator.visit_desc_contentcCsdSr>r+rir+r+r,�depart_desc_content�sz#LaTeXTranslator.depart_desc_contentcCs|j�d�dS)N�\sphinxcode{\sphinxupquote{rrir+r+r,�visit_desc_inline�sz!LaTeXTranslator.visit_desc_inlinecCs|j�d�dS�N�}}rrir+r+r,�depart_desc_inlinesz"LaTeXTranslator.depart_desc_inlinecCs|j�d�|jd7_dS)N�\sphinxbfcode{\sphinxupquote{r~�rZr�r�rir+r+r,�visit_desc_nameszLaTeXTranslator.visit_desc_namecCs|j�d�|jd8_dS�NrRr~rUrir+r+r,�depart_desc_name
sz LaTeXTranslator.depart_desc_namecCs|j�d�|jd7_dS)NrOr~rUrir+r+r,�visit_desc_addnamesz"LaTeXTranslator.visit_desc_addnamecCs|j�d�|jd8_dSrWrUrir+r+r,�depart_desc_addnamesz#LaTeXTranslator.depart_desc_addnamecCsdSr>r+rir+r+r,�visit_desc_typeszLaTeXTranslator.visit_desc_typecCsdSr>r+rir+r+r,�depart_desc_typesz LaTeXTranslator.depart_desc_typecCs|j�d�dS)Nz{ $\rightarrow$ rrir+r+r,�visit_desc_returnssz"LaTeXTranslator.visit_desc_returnscCs|j�d�dSrrrir+r+r,�depart_desc_returnssz#LaTeXTranslator.depart_desc_returnscCs|j�d�d|_dS)N�}{r~)rZr�r�rir+r+r,�visit_desc_parameterlist"sz(LaTeXTranslator.visit_desc_parameterlistcCs|j�d�dS)Nr_rrir+r+r,�depart_desc_parameterlist'sz)LaTeXTranslator.depart_desc_parameterlistcCs4|js|j�d�nd|_|�d�s0|j�d�dS)N�, r�noemph�\emph{)r�rZr��hasattrrir+r+r,�visit_desc_parameter+s

z$LaTeXTranslator.visit_desc_parametercCs|�d�s|j�d�dS)Nrcrw)rerZr�rir+r+r,�depart_desc_parameter3s
z%LaTeXTranslator.depart_desc_parametercCs|j�d�dS)Nz\sphinxoptional{rrir+r+r,�visit_desc_optional7sz#LaTeXTranslator.visit_desc_optionalcCs|j�d�dSrrrir+r+r,�depart_desc_optional:sz$LaTeXTranslator.depart_desc_optionalcCs|j�d�dS)NrTrrir+r+r,�visit_desc_annotation=sz%LaTeXTranslator.visit_desc_annotationcCs|j�d�dSrQrrir+r+r,�depart_desc_annotation@sz&LaTeXTranslator.depart_desc_annotationcCs8|j�t�|j�dtdt�|j�dt�dS)Nz\sphinxstrong{%s:}r3z\nopagebreak)rZr�rrrzrir+r+r,�
visit_seealsoEszLaTeXTranslator.visit_seealsocCs|j�t�dSr>)rZr�rrir+r+r,�depart_seealsoJszLaTeXTranslator.depart_seealsocCsLt|�dkr&|��dtd�fvr&tj�|j�d�|j�dt�d|_	dS)Nr~Z	Footnotesz\subsubsection*{rw)
r�rOrrr4rZr�r�rzr�rir+r+r,�visit_rubricMs
 zLaTeXTranslator.visit_rubriccCsd|_|j�|j���dSr<)r�rZr�r�r�rir+r+r,�
depart_rubricTszLaTeXTranslator.depart_rubriccCs�|jd7_ttj|d�}d|vr2|j�d�|jrN|j�d|���n$|j�dt�|j�d|���d|vr�|j�d|��t�|j�dt�dS)	Nr~r�autoz\sphinxstepexplicit z\begin{footnote}[%s]r�z+\phantomsection\label{\thesphinxscope.%s}%%�\sphinxAtStartFootnote)	r�rr�labelrZr�r�rOrz�rBrVrrr+r+r,�visit_footnoteXs��zLaTeXTranslator.visit_footnotecCsB|jr|j�d�n|j�dt�|j�d�|jd8_dS)Nz\end{footnote}r�r~)r�rZr�rzr�rir+r+r,�depart_footnotegs
zLaTeXTranslator.depart_footnotecCs
tj�dSr>�rr4rir+r+r,�visit_labeloszLaTeXTranslator.visit_labelcCs|d|_tj�dS)N�spec)r�rr4rir+r+r,�visit_tabular_col_specrs
z&LaTeXTranslator.visit_tabular_col_speccCs�t|j�dkrD|j��dkr:td|jd|jp0df��qnd|j_n*t|j�dkrntd|jd|jpfdf��|j�t	|��|j
r�d	|j
t|j_d
|�
dg�vr�tjtd�|d
�d|_
dS)Nr~rkz2%s:%s: longtable does not support nesting a table.r�r8TrGz0%s:%s: deeply nested tables are not implemented.z{%s}rorXzGboth tabularcolumns and :widths: option are given. :widths: is ignored.r,)r�r�r�rpr5r��liner_r�rTr�rzr]r[r��inforrir+r+r,�visit_tablevs,��
��
�zLaTeXTranslator.visit_tablecCs`|�|�}|j��}|�|dt|j|d��}|j�t�|j�|�|j�t�|j	�
�dS)Nz.tex_t)r�r�)r�r�rpr��dictrZr�rrzr�r�)rBrVr�Z
table_typer�r+r+r,�depart_table�s


�zLaTeXTranslator.depart_tablecCsL|jjd7_d|vr*|jj�|d�d|vrH|jj�|jjd�dS)Nr~ZcolwidthZstub)r�r\r^r�rcrir+r+r,�
visit_colspec�s
zLaTeXTranslator.visit_colspeccCsdSr>r+rir+r+r,�depart_colspec�szLaTeXTranslator.depart_colspeccCsdSr>r+rir+r+r,�visit_tgroup�szLaTeXTranslator.visit_tgroupcCsdSr>r+rir+r+r,�
depart_tgroup�szLaTeXTranslator.depart_tgroupcCs|�|jj�dSr>)r�r�rYrir+r+r,�visit_thead�szLaTeXTranslator.visit_theadcCs|��dSr>�r�rir+r+r,�depart_thead�szLaTeXTranslator.depart_theadcCs|�|jj�dSr>)r�r�rZrir+r+r,�visit_tbody�szLaTeXTranslator.visit_tbodycCs|��dSr>r�rir+r+r,�depart_tbody�szLaTeXTranslator.depart_tbodycCs�d|j_|j�|jj|jj�}|dur*q�q|jj|j7_|jrN|j�d�|jdkrl|j�d|j�q|j�d|j|jf�qdS)Nr�&r~�\sphinxtablestrut{%d}z,\multicolumn{%d}{|l|}{\sphinxtablestrut{%d}})r�rdr�rerrrZr�rh)rBrVr�r+r+r,�	visit_row�s

�zLaTeXTranslator.visit_rowcs��j�dt��fdd�t�jj�D�}�fdd�|D�}t|�rR�j�d�nhd}|�dg�|t|�kr�||dur�||d��	d�}�j�d	|d
||f�||7}|d
7}qb�jj
d
7_
dS)Nz\\csg|]}�j��jj|��qSr+)r�r�re)rqrrlr+r,ru�r.z.LaTeXTranslator.depart_row.<locals>.<listcomp>cs$g|]}|j|j�jjdk�qS)r~)rer|r�)rqr�rlr+r,ru�r.z\hlinerFTz
\cline{%d-%d}r~)rZr�rzrr�r\�all�extendr�r�re)rBrVrgZ
underlinedrr�r+rlr,�
depart_row�s
zLaTeXTranslator.depart_rowcCs�|jjdkr|j�d�|j�|�dd�d|�dd�d�|j��}d}|jdkr�|jj	r�|jjdkr�|j�d|jt
�n|j�d|jt
�d	t
}n|j�d
|jt
�dt
}|jdkr�|j�d|j|jft
�d	t
|}|jdk�s
|jdk�rB|j�d
|j|jj
ft
�dt
dt
|}d|_tt|�tj���dk�rdd|j_t|jjtj��s�|j|jjv�r�t|�dk�r�t|dtj��r�|��dk�r�n|j�d�|j�r�|�g�|j�|�dS)Nrr�Zmorerowsr~Zmorecolsr8z\multicolumn{%d}{|l|}{%%z\multicolumn{%d}{l|}{%%z}%z\sphinxstartmulticolumn{%d}%%z\sphinxstopmulticolumnz\sphinxmultirow{%d}{%d}{%%z,\begin{varwidth}[t]{\sphinxcolwidth{%d}{%d}}z\parz7\vskip-\baselineskip\vbox{\hbox{\strut}}\end{varwidth}%rGTz\sphinxstyletheadfamily )r�rdrZr�r�r[r�rrr�Zlatex_use_latex_multicolumnrzr|rhr\r�r�rr7rr)r`rr2ZtheadrcrOr�r�)rBrVr�r�r+r+r,�visit_entry�sJ&



��
��".
zLaTeXTranslator.visit_entrycCs�|jr<d|_|��}|r0|dtkr0|�d�q|j�|�|j�|j���|j�	�}|jj
|j7_
|j�	�}|dur�q�qj|jj
|j7_
|j�d�|jdkr�|j�d|j�qj|j�d|j|jf�qjdS)Nrr�r~r�z+\multicolumn{%d}{l|}{\sphinxtablestrut{%d}})
r�r�rzr�rZr�r�r�r�r�rdrrrh)rBrVrZr�Znextcellr+r+r,�depart_entry�s&



�zLaTeXTranslator.depart_entrycCsbttj|d�}tttj|�}|j�t�|j�d�dd�|D��d�|j�t�tj	�dS)Nrrbcss|]}|��VqdSr>�rO)rq�nr+r+r,r�%r.z-LaTeXTranslator.visit_acks.<locals>.<genexpr>�.)
rr�bullet_listrZ	list_itemrZr�rryr4)rBrVr�Z
list_itemsr+r+r,�
visit_ackss zLaTeXTranslator.visit_ackscCs(|js|j�dt�|jr$d|j_dS)Nz\begin{itemize}T�r�rZr�rzr�r_rir+r+r,�visit_bullet_list)sz!LaTeXTranslator.visit_bullet_listcCs|js|j�dt�dS)Nz
\end{itemize}�r�rZr�rzrir+r+r,�depart_bullet_list/sz"LaTeXTranslator.depart_bullet_listcs�ttd�dd�}ttd��fdd��dt�|����}dt�|�d���}t�||��}|�dd	�}|�d
d�}|j�dt	�|j�d
|||||ft	�d|vr�|j�d||ddft	�|j
r�d|j
_dS)NrUcSs4|�dd�}d|vr0d|�dd�t|�kr0d}|S)N�enumtyper/Zalpha��startr)r[r�)rVr�r+r+r,�get_enumtype4s z;LaTeXTranslator.visit_enumerated_list.<locals>.get_enumtypecs4|durdSt|tj�r&�|j�dS�|j�SdSr�)rr�enumerated_listr2)rV��get_nested_levelr+r,r�<s
z?LaTeXTranslator.visit_enumerated_list.<locals>.get_nested_levelzenum%sr~r�r8r�r�z\begin{enumerate}z*\sphinxsetlistlabels{%s}{%s}{%s}{%s}{%s}%%r�z\setcounter{%s}{%d}T)rr�rfr"�lower�ENUMERATE_LIST_STYLEr[rZr�rzr�r_)rBrVr��enumZenumnext�styler�r�r+r�r,�visit_enumerated_list3s"�� z%LaTeXTranslator.visit_enumerated_listcCs|j�dt�dS)Nz\end{enumerate}r(rir+r+r,�depart_enumerated_listRsz&LaTeXTranslator.depart_enumerated_listcCs|j�d�dS)Nz	\item {} rrir+r+r,�visit_list_itemUszLaTeXTranslator.visit_list_itemcCs|j�t�dSr>r(rir+r+r,�depart_list_itemZsz LaTeXTranslator.depart_list_itemcCs"|j�dt�|jrd|j_dS)Nz\begin{description}T�rZr�rzr�r_rir+r+r,�visit_definition_list]sz%LaTeXTranslator.visit_definition_listcCs|j�dt�dS)Nz\end{description}r(rir+r+r,�depart_definition_listbsz&LaTeXTranslator.depart_definition_listcCsdSr>r+rir+r+r,�visit_definition_list_itemesz*LaTeXTranslator.visit_definition_list_itemcCsdSr>r+rir+r+r,�depart_definition_list_itemhsz+LaTeXTranslator.depart_definition_list_itemcCsd|jd7_d}|�d�r@d}|dD]}||j|dd�7}q(|d7}|j�d�|j�|�dS)	Nr~r8r�r�Fr�z}] \leavevmodez\item[{)r�r[r�rZr�r�)rBrV�ctxr�r+r+r,�
visit_termks
zLaTeXTranslator.visit_termcCs$|j�|j���|jd8_dSr})rZr�r�r�r�rir+r+r,�depart_termvszLaTeXTranslator.depart_termcCs|j�d�dS)Nz{[}rrir+r+r,�visit_classifierzsz LaTeXTranslator.visit_classifiercCs|j�d�dS)Nz{]}rrir+r+r,�depart_classifier}sz!LaTeXTranslator.depart_classifiercCsdSr>r+rir+r+r,�visit_definition�sz LaTeXTranslator.visit_definitioncCs|j�t�dSr>r(rir+r+r,�depart_definition�sz!LaTeXTranslator.depart_definitioncCs"|j�dt�|jrd|j_dS)Nz \begin{quote}\begin{description}Tr�rir+r+r,�visit_field_list�sz LaTeXTranslator.visit_field_listcCs|j�dt�dS)Nz\end{description}\end{quote}r(rir+r+r,�depart_field_list�sz!LaTeXTranslator.depart_field_listcCsdSr>r+rir+r+r,�visit_field�szLaTeXTranslator.visit_fieldcCsdSr>r+rir+r+r,�depart_field�szLaTeXTranslator.depart_fieldcCs�|j�|�}|dkr`t|jtj�r`t|j|dtj�s`t|j|dtj�s`|j�dt�n0|dkr|t|jtj	t
f�r|n|j�tdtg�dS)Nrr~�	\noindentz\sphinxAtStartPar)r2r�rrZcompoundr)rZr�rzrA�footnotetextr�)rBrVr�r+r+r,�visit_paragraph�s��zLaTeXTranslator.visit_paragraphcCs|j�t�dSr>r(rir+r+r,�depart_paragraph�sz LaTeXTranslator.depart_paragraphcCs"|j�td�|jrd|j_dS)N�\begin{center}Tr�rir+r+r,�visit_centered�szLaTeXTranslator.visit_centeredcCs|j�td�dS)N�\end{center}r(rir+r+r,�depart_centered�szLaTeXTranslator.depart_centeredcCsj|jd7_|d}|jdkr0|j�dt�|j�d|dt�|j�dt�|jrfd|j_dS)Nr~�ncolumnsz\setlength{\multicolsep}{0pt}z\begin{multicols}{z
}\raggedrightzA\begin{itemize}\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}Tr�)rBrVr�r+r+r,�visit_hlist�s
�zLaTeXTranslator.visit_hlistcCs"|jd8_|j�dt�dS)Nr~z*\end{itemize}\raggedcolumns\end{multicols}r�rir+r+r,�depart_hlist�szLaTeXTranslator.depart_hlistcCsdSr>r+rir+r+r,�visit_hlistcol�szLaTeXTranslator.visit_hlistcolcCsdSr>r+rir+r+r,�depart_hlistcol�szLaTeXTranslator.depart_hlistcolr�r�cCs6zt||�WSty0t�td�|�YdS0dS)Nz&dimension unit %s is invalid. Ignored.)r�r�r�r�r)rBr�r�r+r+r,�latex_image_length�s
z"LaTeXTranslator.latex_image_lengthcCst|jtj�Sr>)rr2rZTextElementrir+r+r,�	is_inline�szLaTeXTranslator.is_inlinecCsdg}g}g}t|jtj�}|r,|�|j�}n
|�|�}d|vr|d|vr\|�|d|d�}n|�|d�}|r||�d|�d|vr�d|vr�|�|d|d�}n|�|d�}|r�|�d|�d|vr�|s�|�dt|d�d�d|v�rRd	d
ddd
dd�}	z8|�|	||dfd�|�|	||dfd�Wnt�yPYn0|j	�rn|�d�|�d�|�s�|�s�|�t
d�|�t
�|��|d|jj
v�r�|jj
|d}
n|j�r�dS|d}
|
�d�dk�r�dS|j�|�d}|�r
dd�|�}t�|
�\}}
|j�r>|�r>|j�d|||
f�n|j�d|||
f�|j�|�dS)Nrrr�zwidth=%sr|z	height=%szscale=%sr�rW)r8r8)z\raisebox{-0.5\height}{rw)z\raisebox{-\height}{rw)�{\hspace*{\fill}�\hspace*{\fill}})r1r�)r�rw))r~�top)r~Zmiddle)r~Zbottom)r�center)r�left)r�rightrr~z!{\sphinxunactivateextrasandspace rwr��uriz://r�r8r/r�z,\lowercase{\sphinxincludegraphics%s}{{%s}%s}z \sphinxincludegraphics%s{{%s}%s})rr2r�	referencer�r�r�r��KeyErrorr�rz�reverser<Zimages�ignore_missing_images�findrZr�ryr�splitextr�)rBrVZpreZpostZinclude_graphics_optionsZ
has_hyperlinkr��w�hZ
align_prepostr��options�base�extr+r+r,�visit_image�s�
�
�


��zLaTeXTranslator.visit_imagecCsdSr>r+rir+r+r,�depart_image*szLaTeXTranslator.depart_imagecCs�|jd}|jrd}|jr�d|vrZ|�|d�}|rz|j�d|t�|j�dt�n |j�dt�|j�dt�tdd�|D��r�|j�d	�|j�d
t��n@|�	dd�d
v�rfd}d|vr�|�|d�}n2t
|dtj��rd|dv�r|�|dd�}|j�t
�|j�d|ddk�r2dnd|�p<dft�|j�d�|j�dt�n�|j�r�|j�td�|j�dt�n\|j�td|t�|j�dt�tdd�|D���r�|j�d	t�|j�dt�dS)NZfigure_align�Hrrz!\begin{sphinxfigure-in-table}[%s]z
\centeringz\begin{sphinxfigure-in-table}css|]}t|tj�VqdSr>�rrrb�rqrEr+r+r,r�;r.z/LaTeXTranslator.visit_figure.<locals>.<genexpr>z	\capstartz!\end{sphinxfigure-in-table}\relaxrWr8)r�r�rz\begin{wrapfigure}{%s}{%s}r��r�lZ0ptz\end{wrapfigure}r�r�z\begin{figure}[%s]css|]}t|tj�VqdSr>r�r�r+r+r,r�Pr.z\end{figure})r�r�r�r�rZr�rzr6r�r[rrr8rr�)rBrVrW�lengthr+r+r,�visit_figure-sH
 ��zLaTeXTranslator.visit_figurecCs|j�|j���dSr>r?rir+r+r,�
depart_figureTszLaTeXTranslator.depart_figurecCsz|jd7_t|jt�r(|j�d�nN|jrJt|jtj�rJ|j�d�n,|j	rj|jj
dkrj|j�d�n|j�d�dS)Nr~z\sphinxSetupCaptionForVerbatim{z\captionof{figure}{�figurez\sphinxfigcaption{z	\caption{)r�rr2�captioned_literal_blockrZr�r�rr�r��tagnamerir+r+r,�
visit_captionWszLaTeXTranslator.visit_captioncCsD|j�d�t|jtj�r2|�|j�}|j�|�|jd8_dS)Nrwr~)rZr�rr2rr�r�r�)rBrVr�r+r+r,�depart_captionbs
zLaTeXTranslator.depart_captioncCs|j�td�dS)Nz\begin{sphinxlegend}r(rir+r+r,�visit_legendiszLaTeXTranslator.visit_legendcCs|j�dt�dS)Nz\end{sphinxlegend}r(rir+r+r,�
depart_legendlszLaTeXTranslator.depart_legendcCs"|j�td�|jd7_dS)Nz\begin{sphinxadmonition}{note}r~�rZr�rzr�rir+r+r,�visit_admonitionosz LaTeXTranslator.visit_admonitioncCs"|j�dt�|jd8_dS�Nz\end{sphinxadmonition}r~r�rir+r+r,�depart_admonitionssz!LaTeXTranslator.depart_admonitioncCs6t|j}|j�td|j|f�|jd7_dS)Nz!\begin{sphinxadmonition}{%s}{%s:}r~)rr�rZr�rzr�rsr+r+r,�_visit_named_admonitionws


�z'LaTeXTranslator._visit_named_admonitioncCs"|j�dt�|jd8_dSr�r�rir+r+r,�_depart_named_admonition}sz(LaTeXTranslator._depart_named_admonitioncCsdSr>r+rir+r+r,�visit_versionmodified�sz%LaTeXTranslator.visit_versionmodifiedcCsdSr>r+rir+r+r,�depart_versionmodified�sz&LaTeXTranslator.depart_versionmodifiedcs�tdd���fdd�}�}t|tj�r4|jdd�}qtt�jj�	d��}t|t
�rVdS|�|�rn|�|�rndSd�vrzdSd�vr�dS��
d	�r�t��}t|tj�r��d	|d	kr�n|�d	��d
D]}||�q�dS)Nr�cst|�d�rdS|�d�rdS�j���}|dkrRt�j|dtj�rR�j�t��j	}�j��j
||d��dS)Nzindex-z	equation-rr~r�)�
startswithr2r�rrr)rZr�rzr�r�)r�r�r��rVrBr+r,�
add_target�s

z0LaTeXTranslator.visit_target.<locals>.add_targetT)ZascendZstd�refuriZ	anonymous�refidr�)r�rr�target�	next_noderrr<rZ
get_domain�HYPERLINK_SUPPORT_NODESZget_enumerable_node_typeZget_numfig_titler[rr�)rBrVr�r�r
Z	prev_noder�r+r�r,�visit_target�s(

zLaTeXTranslator.visit_targetcCsdSr>r+rir+r+r,�
depart_target�szLaTeXTranslator.depart_targetcCs$|j�tdt�|j�d�dS)Nz\begin{flushright}z---r(rir+r+r,�visit_attribution�sz!LaTeXTranslator.visit_attributioncCs|j�tdt�dS)Nz\end{flushright}r(rir+r+r,�depart_attribution�sz"LaTeXTranslator.depart_attributioncs�ttd��fdd��ttd�dd�}|�dd�s<�j�t�|d	}|D�]~\}}}}}d
}	|rdd}	�z,|dk�rzN�fd
d�tdd|�D�\}
}||
�||�}}
�j�d|
|||
|	f�WnFt�y�tdd|�d�}||�}�j�d|||	f�Yn0�n�|dk�rn�fdd�tdd|�D�\}
}||
�||�}}
�j�d|
|||
|	||
|
||	f
��n"|dk�r�fdd�tdd|�D�\}
}}||
�||�||�}}
}�j�d|
||||
||	||
||
|||	|||
|||
|	f�n�|dk�r8�fdd�tdd|�D�\}
}||
�}�j�d|
||f�nX|dk�r��fdd�tdd|�D�\}
}||
�}�j�d|
||f�nt�t	d �|�WqHt�y�}zt�t|��WYd}~qHd}~00qH|�dd��s�j�d!�t
j�dS)"N)�valuer=csV��|�}|�dd�}|�dd�}|�dd�}|�dd�}|�d	d
�}|�dd�}|S)
Nz\{z\sphinxleftcurlybrace{}z\}z\sphinxrightcurlybrace{}�"z""�@z"@�!z"!rvz
\textbar{}�r�r�)r�rlr+r,r��s
z+LaTeXTranslator.visit_index.<locals>.escape)�stringr=cSs$t�|�}|r|�d�Sd|SdS)Nz\\spxentry{\1}\\spxextra{\2}z
\spxentry{%s})�EXTRA_REr��expand)rr�r+r+r,r��s

z*LaTeXTranslator.visit_index.<locals>.styleZinlineTrr8z	|spxpagemZsinglecsg|]}�|��qSr+r+�rq�x�r�r+r,ru�r.z/LaTeXTranslator.visit_index.<locals>.<listcomp>rGz\index{%s@%s!%s@%s%s}r~rz\index{%s@%s%s}Zpaircsg|]}�|��qSr+r+rrr+r,ru�r.z*\index{%s@%s!%s@%s%s}\index{%s@%s!%s@%s%s}Ztriplecsg|]}�|��qSr+r+rrr+r,ru�r.r�zS\index{%s@%s!%s %s@%s %s%s}\index{%s@%s!%s, %s@%s, %s%s}\index{%s@%s!%s %s@%s %s%s}Zseecsg|]}�|��qSr+r+rrr+r,rur.z\index{%s@%s|see{%s}}r3csg|]}�|��qSr+r+rrr+r,ru	r.z!unknown index entry type %s foundz\ignorespaces )r�r[rZr�rzrr�r�r�rrr4)rBrVr�r�typerZ_tidZismainZ_key�mZp1Zp2ZP1ZP2�p�PZp3ZP3�errr+)r�rBr,�visit_index�sd

 
�

 ���

&zLaTeXTranslator.visit_indexcCsZ|�|�s|j�t�d|�dd���vr:|j�|���|�|�sP|j�t�tj�dS)Nr��formatr8)	r�rZr�rzr[r9rOrr4rir+r+r,�	visit_raws

zLaTeXTranslator.visit_rawcCs�|js6|�d�D]$}|j}|j|j||d�7_q|�|�sL|j�t�|�dd�}|s�|�d�r�d|jdd|d}|js�|s�|j	�d��n�|�
d��r|jdd	|d
d�}|j�|�|��|j�d�|jj
�r|j�s|j	�d|�|��n|j	�d
��nh|�
d��r|�d�}|dk�rJ|d
d�d}n|d
d��dd	�}|j�|�|��t|��r�t|dtj��r�d|d�dg�v�r�|j	�d
�|j�d�nB|j�d�|jj
�r�|j�s�|j	�d|�|��n|j	�d
�n�t|�d
k�r^||dk�r^|�d��r@|j�d|�|��n|j�d|�|��tj�n"|j�d|�|��|j	�d�dS)Nr�r�r�r8r�r�r��#r�r~rdz}}} (%s)z}}}z::docrzstd-termrXz\sphinxtermref{z\sphinxcrossref{Z	nolinkurlz\sphinxnolinkurl{%s}z\sphinxurl{%s}z\sphinxhref{%s}{rw)r�r[r�rZr�r�r�rzr�r�r�r�r�Zlatex_show_pagerefsr�r�r�r�r�rrr�
encode_urir4)rBrVr�r�r�Z	hashindexr+r+r,�visit_referencesX


�


��zLaTeXTranslator.visit_referencecCs,|j�|j���|�|�s(|j�t�dSr>)rZr�r�r�r�rzrir+r+r,�depart_referenceUs
z LaTeXTranslator.depart_referencecCs�|�d�r"|jdd|d}n|�dd�dd��dd�}|�|�dd	���d
d	�}d|vshd|vr�|�dd
��dd�}t|�jd|�|�d|�|�d�}nt|�d|�|�}d|�|�|f}|j�|�t	j
�dS)Nr�r�r�r�r8r~rr.z%sz\%sz\{name\}z
\{number\}z{name}z{number}z\nameref{%s}�\ref{%s})r
�numberz\hyperref[%s]{%s})r[r�r�r�r�rr�rZr�rr4)rBrVr�r.r�Zhyperrefr+r+r,�visit_number_referenceZs
�z&LaTeXTranslator.visit_number_referencecCsdSr>r+rir+r+r,�visit_download_referencensz(LaTeXTranslator.visit_download_referencecCsdSr>r+rir+r+r,�depart_download_referenceqsz)LaTeXTranslator.depart_download_referencecCsdSr>r+rir+r+r,�visit_pending_xreftsz"LaTeXTranslator.visit_pending_xrefcCsdSr>r+rir+r+r,�depart_pending_xrefwsz#LaTeXTranslator.depart_pending_xrefcCs|j�d�dS)Nz\sphinxstyleemphasis{rrir+r+r,�visit_emphasiszszLaTeXTranslator.visit_emphasiscCs|j�d�dSrrrir+r+r,�depart_emphasis}szLaTeXTranslator.depart_emphasiscCs|j�d�dS)Nz+\sphinxstyleliteralemphasis{\sphinxupquote{rrir+r+r,�visit_literal_emphasis�sz&LaTeXTranslator.visit_literal_emphasiscCs|j�d�dSrQrrir+r+r,�depart_literal_emphasis�sz'LaTeXTranslator.depart_literal_emphasiscCs|j�d�dS)Nz\sphinxstylestrong{rrir+r+r,�visit_strong�szLaTeXTranslator.visit_strongcCs|j�d�dSrrrir+r+r,�
depart_strong�szLaTeXTranslator.depart_strongcCs|j�d�dS)Nz)\sphinxstyleliteralstrong{\sphinxupquote{rrir+r+r,�visit_literal_strong�sz$LaTeXTranslator.visit_literal_strongcCs|j�d�dSrQrrir+r+r,�depart_literal_strong�sz%LaTeXTranslator.depart_literal_strongcCs`|��}|j�d�|�d�rP||jvrP|j�d|�|d��|j�|�n|j�d�dS)Nz\sphinxstyleabbreviation{Zexplanationz} (%s)rw)rOrZr�rer�r�r��add)rBrVZabbrr+r+r,�visit_abbreviation�sz"LaTeXTranslator.visit_abbreviationcCs|j�|j���dSr>r?rir+r+r,�depart_abbreviation�sz#LaTeXTranslator.depart_abbreviationcCs
|�|�Sr>)rrir+r+r,�
visit_manpage�szLaTeXTranslator.visit_manpagecCs
|�|�Sr>)rrir+r+r,�depart_manpage�szLaTeXTranslator.depart_manpagecCs|j�d�dS)Nz\sphinxtitleref{rrir+r+r,�visit_title_reference�sz%LaTeXTranslator.visit_title_referencecCs|j�d�dSrrrir+r+r,�depart_title_reference�sz&LaTeXTranslator.depart_title_referencecCsntttj|�}dd�|D�}tdd�|D�td�}t|�tkrL|dt�}|j�t	d|�
|�t	�dS)Ncss|]}ttj|d�VqdS)rN)rrrr)rq�citationr+r+r,r��r.z8LaTeXTranslator.visit_thebibliography.<locals>.<genexpr>css|]}|��VqdSr>r�)rqrrr+r+r,r��r.)�keyz!\begin{sphinxthebibliography}{%s})rrrr+r�r��MAX_CITATION_LABEL_LENGTHrZr�rzr�)rBrVZ	citationsr�Z
longest_labelr+r+r,�visit_thebibliography�s
��z%LaTeXTranslator.visit_thebibliographycCs|j�dt�dS)Nz\end{sphinxthebibliography}r(rir+r+r,�depart_thebibliography�sz&LaTeXTranslator.depart_thebibliographycCs@ttj|d�}|j�d|�|���|d|ddf�dS)Nrz\bibitem[%s]{%s:%s}rr�)rrrrrZr�r�rOrsr+r+r,�visit_citation�s�zLaTeXTranslator.visit_citationcCsdSr>r+rir+r+r,�depart_citation�szLaTeXTranslator.depart_citationcCs.|jrn"|j�d|d|df�tj�dS)Nz\sphinxcite{%s:%s}rZrefname)r�rZr�rr4rir+r+r,�visit_citation_reference�sz(LaTeXTranslator.visit_citation_referencecCsdSr>r+rir+r+r,�depart_citation_reference�sz)LaTeXTranslator.depart_citation_referencecCs>|jr|j�d�n&d|dvr.|j�d�n|j�d�dS)Nz*\sphinxstyleliteralintitle{\sphinxupquote{ZkbdrXz\sphinxkeyboard{\sphinxupquote{rO)r�rZr�rir+r+r,�
visit_literal�s
zLaTeXTranslator.visit_literalcCs|j�d�dSrQrrir+r+r,�depart_literal�szLaTeXTranslator.depart_literalcCs
tj�dSr>rvrir+r+r,�visit_footnote_reference�sz(LaTeXTranslator.visit_footnote_referencecCs|j�d�dS)Nz\sphinxfootnotemark[rrir+r+r,�visit_footnotemark�sz"LaTeXTranslator.visit_footnotemarkcCs|j�d�dS)N�]rrir+r+r,�depart_footnotemark�sz#LaTeXTranslator.depart_footnotemarkcCsTttj|d�}|j�dt�|j�d|��|��ft�|j�dt�dS)Nrr�zC\begin{footnotetext}[%s]\phantomsection\label{\thesphinxscope.%s}%%rq)rrrrrZr�rzrOrsr+r+r,�visit_footnotetext�s��z"LaTeXTranslator.visit_footnotetextcCs |j�dt�|j�d�dS)Nr�z \end{footnotetext}\ignorespaces r(rir+r+r,�depart_footnotetext�sz#LaTeXTranslator.depart_footnotetextcCsdSr>r+rir+r+r,�visit_captioned_literal_block�sz-LaTeXTranslator.visit_captioned_literal_blockcCsdSr>r+rir+r+r,�depart_captioned_literal_block�sz.LaTeXTranslator.depart_captioned_literal_blockc	Cs�|j|��kr0|jd7_|j�dt��n�|�|�}t|jt	�rV||�|j�7}|rx|j
sx|j�td|d�|�dd�}|�dd�}|�d	i�}|�d
d�|d
<|jj
�|i�}|jj|j|f|||d�|��}|j
�r|j�td�|�d
d�}n2|j�r(d|j_d|j_|�d
d�}n|�d
d�}|��dd�}|j�r^|j
�s^|d7}n|d7}t|�dg��dd�}|�r�|j�td|�|j�t|t�|�r�|j�dt�tj�dS)Nr~z\begin{sphinxalltt}z\def\sphinxLiteralBlockLabel{rwr�r9�linenosF�highlight_args�force)�optsr>r-z\sphinxSetupCodeBlockInFootnotez\begin{Verbatim}z\begin{sphinxVerbatim}Tz\begin{sphinxVerbatimintable}i�z\end{sphinxVerbatimintable}z\end{sphinxVerbatim}Zhl_linesr�z\fvset{hllines={, %s,}}%%z\sphinxresetverbatimhllines)Z	rawsourcerOr�rZr�rzr�rr2r�r�r[r�Zhighlight_optionsr�Zhighlight_blockr�r�r_ra�rstripr�rr4)	rBrVr��langr>r?rAZhlcodeZhllinesr+r+r,�visit_literal_block�s\

������
z#LaTeXTranslator.visit_literal_blockcCs&|j�tdt�|jd8_dS)Nz\end{sphinxalltt}r~)rZr�rzr�rir+r+r,�depart_literal_block%sz$LaTeXTranslator.depart_literal_blockcCs|j�d�dS)Nz\item[] rrir+r+r,�
visit_line+szLaTeXTranslator.visit_linecCs|j�t�dSr>r(rir+r+r,�depart_line.szLaTeXTranslator.depart_linecCsVt|jtj�r0|j�dt�|j�dt�n|j�tdt�|jrRd|j_dS)Nz\item[]z'\begin{DUlineblock}{\DUlineblockindent}z\begin{DUlineblock}{0em}T)	rr2rZ
line_blockrZr�rzr�r_rir+r+r,�visit_line_block1sz LaTeXTranslator.visit_line_blockcCs|j�dt�dS)Nz\end{DUlineblock}r(rir+r+r,�depart_line_block:sz!LaTeXTranslator.depart_line_blockcCsXd}t|j�dkr2|jd}t|tjtjf�r2d}|sT|j�dt�|j	rTd|j	_
dS)Nrr~z
\begin{quote}T)r�r5rrr�r�rZr�rzr�r_�rBrVZdonerEr+r+r,�visit_block_quote=s
z!LaTeXTranslator.visit_block_quotecCsJd}t|j�dkr2|jd}t|tjtjf�r2d}|sF|j�dt�dS)Nrr~z\end{quote})	r�r5rrr�r�rZr�rzrJr+r+r,�depart_block_quoteKs
z"LaTeXTranslator.depart_block_quotecCs|jdr|j�d�dS)Nr�rb)r�rZr�rir+r+r,�visit_optionVs
zLaTeXTranslator.visit_optioncCs|jdd7<dS)Nr�r~)r�rir+r+r,�
depart_option[szLaTeXTranslator.depart_optioncCs|j�|�dd��dS)NZ	delimiterr0)rZr�r[rir+r+r,�visit_option_argument_sz%LaTeXTranslator.visit_option_argumentcCsdSr>r+rir+r+r,�depart_option_argumentcsz&LaTeXTranslator.depart_option_argumentcCs|j�d�|j�d�dS)Nz\item [r)rZr�r�rir+r+r,�visit_option_groupfsz"LaTeXTranslator.visit_option_groupcCs|j��|j�d�dS)Nz] )r�r�rZr�rir+r+r,�depart_option_groupks
z#LaTeXTranslator.depart_option_groupcCs"|j�dt�|jrd|j_dS)Nz\begin{optionlist}{3cm}Tr�rir+r+r,�visit_option_listosz!LaTeXTranslator.visit_option_listcCs|j�dt�dS)Nz\end{optionlist}r(rir+r+r,�depart_option_listtsz"LaTeXTranslator.depart_option_listcCsdSr>r+rir+r+r,�visit_option_list_itemwsz&LaTeXTranslator.visit_option_list_itemcCsdSr>r+rir+r+r,�depart_option_list_itemzsz'LaTeXTranslator.depart_option_list_itemcCs$|��}|j�|�|��tj�dSr>)rOrZr�r�rr4)rBrVZostringr+r+r,�visit_option_string}sz#LaTeXTranslator.visit_option_stringcCs|j�d�dS)Nr0rrir+r+r,�visit_description�sz!LaTeXTranslator.visit_descriptioncCsdSr>r+rir+r+r,�depart_description�sz"LaTeXTranslator.depart_descriptioncCs|j�d�dS)Nz	$^{\text{rrir+r+r,�visit_superscript�sz!LaTeXTranslator.visit_superscriptcCs|j�d�dS�Nz}}$rrir+r+r,�depart_superscript�sz"LaTeXTranslator.depart_superscriptcCs|j�d�dS)Nz	$_{\text{rrir+r+r,�visit_subscript�szLaTeXTranslator.visit_subscriptcCs|j�d�dSr[rrir+r+r,�depart_subscript�sz LaTeXTranslator.depart_subscriptcCs�|�dg�}|dgfvr2|j�d�|j�d�n�|dgfvrX|j�d�|j�d�n`|dgfvr~|j�d�|j�d�n:|r�|js�|j�d	d
�|��|j�d�n|j�d�dS)NrXZ
menuselectionz\sphinxmenuselection{rwZguilabelz\sphinxguilabel{Zacceleratorz\sphinxaccelerator{z\DUrole{%s}{r�r8)r[rZr�r�r�ry)rBrVrXr+r+r,�visit_inline�s
zLaTeXTranslator.visit_inlinecCs|j�|j���dSr>r?rir+r+r,�
depart_inline�szLaTeXTranslator.depart_inlinecCsdSr>r+rir+r+r,�visit_generated�szLaTeXTranslator.visit_generatedcCsdSr>r+rir+r+r,�depart_generated�sz LaTeXTranslator.depart_generatedcCsdSr>r+rir+r+r,�visit_compound�szLaTeXTranslator.visit_compoundcCsdSr>r+rir+r+r,�depart_compound�szLaTeXTranslator.depart_compoundcCs*|�dg�}|D]}|j�d|�qdS)NrXz
\begin{sphinxuseclass}{%s}�r[rZr�)rBrVrX�cr+r+r,�visit_container�szLaTeXTranslator.visit_containercCs&|�dg�}|D]}|j�d�qdS)NrXz
\end{sphinxuseclass}re)rBrVrXZ_cr+r+r,�depart_container�sz LaTeXTranslator.depart_containercCsdSr>r+rir+r+r,�visit_decoration�sz LaTeXTranslator.visit_decorationcCsdSr>r+rir+r+r,�depart_decoration�sz!LaTeXTranslator.depart_decorationcCs
tj�dSr>rvrir+r+r,�visit_header�szLaTeXTranslator.visit_headercCs
tj�dSr>rvrir+r+r,�visit_footer�szLaTeXTranslator.visit_footercCs
tj�dSr>rvrir+r+r,�
visit_docinfo�szLaTeXTranslator.visit_docinfor�cCs,|�|�}|jr(|�tdt��dd�}|S)Nz~\\r0�~)r�r�r�rz�rBr�r+r+r,r��s
zLaTeXTranslator.encodecCs"|�|��dd��dd��dd�S)Nz\textasciitilde{}rnz\sphinxhyphen{}�-z\textquotesingle{}�'rror+r+r,r�s
��zLaTeXTranslator.encode_uricCs|�|���}|j�|�dSr>)r�rOrZr�)rBrVr�r+r+r,�
visit_Text�szLaTeXTranslator.visit_TextcCsdSr>r+rir+r+r,�depart_Text�szLaTeXTranslator.depart_TextcCs
tj�dSr>rvrir+r+r,�
visit_comment�szLaTeXTranslator.visit_commentcCs
tj�dSr>rvrir+r+r,�
visit_meta�szLaTeXTranslator.visit_metacCsdSr>r+rir+r+r,�visit_system_message�sz$LaTeXTranslator.visit_system_messagecCs|j�t�dSr>r(rir+r+r,�depart_system_message�sz%LaTeXTranslator.depart_system_messagecCs:|jr|j�d|���n|j�d|���tj�dS)Nz\protect\(%s\protect\)z\(%s\))r�rZr�rOrr4rir+r+r,�
visit_math�szLaTeXTranslator.visit_mathcCs�|�d�r d|d|df}nd}|�d�rT|rB|j�d|�|j�|���n(ddlm}|j�||��||jj��tj	�dS)Nrr�equation:%s:%srZnowrapr�r)�wrap_displaymath)
r[rZr�rOZsphinx.util.mathrzr�Zmath_number_allrr4)rBrVrrrzr+r+r,�visit_math_block�s

�z LaTeXTranslator.visit_math_blockc
Cs�d|d|df}|jj}|r�z d|}|j�|j|d��Wq�ty�}z0tjtd�||d�|j�d|�WYd}~q�d}~00n|j�d|�dS)	Nryrr�r)rzInvalid math_eqref_format: %rr,z
\eqref{%s})	r�Zmath_eqref_formatrZr�rr�r�r�r)rBrVrrZeqref_format�ref�excr+r+r,�visit_math_reference
s�(z$LaTeXTranslator.visit_math_referencecCsdSr>r+rir+r+r,�depart_math_referencesz%LaTeXTranslator.depart_math_reference)N)TT)F)r�(r2r3r4r<rRr�r�r�rrJr@rr�r�r�r�rOr�r�rr�r�r�r�r�r�r�rr�r�rTr�rrrrrrrrr r!Z
visit_sidebarZdepart_sidebarr"r#r$r%r'r)r*r+r;r=r>r@rCrDrFrGrIrJrKrLrMrNrPrSrVrXrYrZr[r\r]r^r`rarfrgrhrirjrkrlrmrnrortrurwryr|r~rr�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�Zvisit_field_nameZdepart_field_nameZvisit_field_bodyZdepart_field_bodyr�r�r�r�r�r�r�r�rfr�r�r�r�r�r�r�r�r�r�r�r�r�r�Zvisit_attentionZdepart_attentionZ
visit_cautionZdepart_cautionZvisit_dangerZ
depart_dangerZvisit_errorZdepart_errorZ
visit_hintZdepart_hintZvisit_importantZdepart_importantZ
visit_noteZdepart_noteZ	visit_tipZ
depart_tipZ
visit_warningZdepart_warningr�r�r�r�r�r�rrrrrrrrrrrrrr r!r"r#r%r&r'r(r)r*r.r/r0r1r2r3r4r5r6r7r9r:r;r<r=rDrEZvisit_doctest_blockZdepart_doctest_blockrFrGrHrIrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr\r]r^r_r`rarbrcrdrgrhrirjrkrlrmr�rrrrrsrtrurvrwrxr{r~rrSr+r+rCr,rNs
��
'
0

% 
O'.B	8
3		rN)r�r�r�)r�)Tr�rL�collectionsr�osr�typingrrrrrr	r
rZdocutilsrr
Zdocutils.nodesrrrr�rrZsphinx.deprecationrZsphinx.domainsrZsphinx.domains.stdrZ
sphinx.errorsrZ
sphinx.localerrrZsphinx.utilrrrZsphinx.util.docutilsrZsphinx.util.nodesrrZsphinx.util.templater Zsphinx.util.texescaper!Zdocutils.utils.romanr"�ImportErrorZromanZsphinx.builders.latexr#Zsphinx.builders.latex.themingr$Z	getLoggerr2r�r-r�r�rzr�compilerrAr1r5�Writerr7rTr�r�r�rfr�rNZsphinx.builders.latex.nodesr�r�r�r+r+r+r,�<module>sz(
��	
 c#

Youez - 2016 - github.com/yon3zu
LinuXploit