
    }cS                        U d Z ddlZddlZddlZddl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mZmZmZmZmZmZ ddlZddlmZ dd	lmZ dd
lmZmZmZ ddlm Z m!Z!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7  e5j8        e9          Z: ej;        d          Z<erddl=m>Z> ddl?m@Z@ ddlAmBZB  e.ddejC        ie-ddi            eD            ZEeee                  eFd<   eded         fd            ZGdeHdeIfd ZJdeHd!ee          ddfd"ZKdeHdeIfd#ZLdeHd$e7ddfd%ZMdeHddfd&ZNd'ee         deIfd(ZOd'ee         ddfd)ZPd'ee         ddfd*ZQeded         fd+            ZReded         fd,            ZSed-eeH         ded         fd.            ZTedPd-eeH         ded         fd/            ZU G d0 d1          ZV G d2 d3eW          ZX G d4 d5eV          ZY G d6 d7          ZZ G d8 d9e*          Z[ G d: d;e*          Z\deIfd<Z]ed=e&d>e(ded         fd?            Z^ G d@ dAe          Z_ G dB dCe           Z` G dD dE          Za G dF dGea          Zb G dH dIejc                  ZdejC        dJk     r
dK Zeeee_e        dafeejg                 eFdL<   dPdMeHdNedejg        fdOZhdS )QzUtility functions for docutils.    N)contextmanager)copy)path)
ModuleType)IOTYPE_CHECKINGAnyCallableDict	GeneratorListOptionalSetTupleTypecast)nodes)
FileOutput)ElementNodesystem_message)	Directive
directivesroles)Inliner)StateStateMachine
StringList)Reporterunescape)RemovedInSphinx70Warningdeprecated_alias)SphinxError)___)logging)RoleFunctionz>^(.+?:(?:\d+)?): \((DEBUG|INFO|WARNING|ERROR|SEVERE)/(\d+)?\) )Builder)Config)BuildEnvironmentzsphinx.util.docutils__version_info__zdocutils.__version_info__additional_nodesreturn)NNNc               #     K   	 t          t          j                  } t          t          j                  }dV  | t          _        |t          _        t          t                    D ]+}t          |           t                              |           ,dS # | t          _        |t          _        t          t                    D ]+}t          |           t                              |           ,w xY w)z"Create namespace for reST parsers.N)	r   r   _directivesr   _roleslistr,   unregister_nodediscard)r/   r0   nodes      4lib/python3.11/site-packages/sphinx/util/docutils.pydocutils_namespacer6   /   s      +:122el##!,
)** 	+ 	+DD!!!$$T****	+ 	+ "-
)** 	+ 	+DD!!!$$T****	+s   6B AC.namec                     | t           j        v S )z1Check the *name* directive is already registered.)r   r/   r7   s    r5   is_directive_registeredr:   @   s    :)))    	directivec                 0    t          j        | |           dS )zRegister a directive to docutils.

    This modifies global state of docutils.  So it is better to use this
    inside ``docutils_namespace()`` to prevent side-effects.
    N)r   register_directive)r7   r<   s     r5   r>   r>   E   s     !$	22222r;   c                     | t           j        v S )z,Check the *name* role is already registered.)r   r0   r9   s    r5   is_role_registeredr@   N   s    5<r;   rolec                 0    t          j        | |           dS )zRegister a role to docutils.

    This modifies global state of docutils.  So it is better to use this
    inside ``docutils_namespace()`` to prevent side-effects.
    N)r   register_local_role)r7   rA   s     r5   register_rolerD   S   s     
dD)))))r;   c                 F    t           j                            | d           dS )z Unregister a role from docutils.N)r   r0   popr9   s    r5   unregister_rolerG   \   s     	LT4     r;   r4   c                 F    t          t          j        d| j        z             S )z'Check the *node* is already registered.visit_)hasattrr   GenericNodeVisitor__name__r4   s    r5   is_node_registeredrN   a   s    5+X-EFFFr;   c                     t          t          j        d| j        z             s6t          j        | j        g           t
                              |            dS dS )zRegister a node to docutils.

    This modifies global state of some visitors.  So it is better to use this
    inside ``docutils_namespace()`` to prevent side-effects.
    rI   N)rJ   r   rK   rL   _add_node_class_namesr,   addrM   s    r5   register_noderR   f   sY     5+X-EFF ##T]O444T"""""# #r;   c                 ^   t          t          j        d| j        z             rt	          t          j        d| j        z              t	          t          j        d| j        z              t	          t          j        d| j        z              t	          t          j        d| j        z              dS dS )zaUnregister a node from docutils.

    This is inverse of ``nodes._add_nodes_class_names()``.
    rI   depart_N)rJ   r   rK   rL   delattrSparseNodeVisitorrM   s    r5   r2   r2   q   s    
 u'DM)ABB D((T]*BCCC()dm*CDDD'DM)ABBB'T])BCCCCC	D Dr;   c               #      K   ddl m ddt          dt          dt          ffd} 	 | t
          j        _        dV  t
          j        _        dS # t
          j        _        w xY w)	zPatch docutils.languages.get_language() temporarily.

    This ignores the second argument ``reporter`` to suppress warnings.
    refs: https://github.com/sphinx-doc/sphinx/issues/3788
    r   get_languageNlanguage_codereporterr-   c                      |           S N rZ   r[   rY   s     r5   patched_get_languagez2patched_get_language.<locals>.patched_get_language       |M***r;   r]   )docutils.languagesrY   strr   r	   docutils	languagesr`   rY   s    @r5   r`   r`   }   s       0/////+ +C +8 +s + + + + + +7*>' +7''','6666s   A A"c               #     K   ddl m ddt          dt          dt          ffd} 	 | t
          j        j        j        _        dV  t
          j        j        j        _        dS # t
          j        j        j        _        w xY w)	a^  Patch docutils.parsers.rst.languages.get_language().
    Starting from docutils 0.17, get_language() in ``rst.languages``
    also has a reporter, which needs to be disabled temporarily.

    This should also work for old versions of docutils,
    because reporter is none by default.

    refs: https://github.com/sphinx-doc/sphinx/issues/10179
    r   rX   NrZ   r[   r-   c                      |           S r]   r^   r_   s     r5   r`   z6patched_rst_get_language.<locals>.patched_get_language   ra   r;   r]   )	docutils.parsers.rst.languagesrY   rc   r   r	   rd   parsersrstre   rf   s    @r5   patched_rst_get_languagerl      s       <;;;;;+ +C +8 +s + + + + + +C6J&3 7C&333l&3BBBBs   A# #B confdirc              #     K   	 t           j                            dd          }| r4t          j        t          j        |           d          t           j        d<   dV  |"t           j                            dd           dS |t           j        d<   dS # |!t           j                            dd           n|t           j        d<   w xY w)z?Let docutils know the location of ``docutils.conf`` for Sphinx.DOCUTILSCONFIGNzdocutils.conf)osenvirongetr   joinabspathrF   )rm   docutilsconfigs     r5   using_user_docutils_confrv      s      
:(8$?? 	]+/9T\'5J5JO+\+\BJ'( 	:JNN+T22222+9BJ'(((  	:JNN+T2222+9BJ'(9999s   AB 4Cc              #      K   t                      5  t                      5  t          |           5  dV  ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )zPatch to docutils temporarily.N)r`   rl   rv   )rm   s    r5   patch_docutilsrx      sF      
		  !9!;!;  =UV]=^=^                                                 sV   A0AAAAAA	AA0A	A0A	 A00A47A4c                       e Zd ZdZddZddZdee         dededdfd	Z	dd
Z
ddZdededej        deeee                  ee         f         fdZdededededeeee         f         f
dZdS )CustomReSTDispatcherzCustom reST's mark-up dispatcher.

    This replaces docutils's directives and roles dispatch mechanism for reST parser
    by original one temporarily.
    r-   Nc                 &    d | _         d | _        d S )Nc                  
    d g fS r]   r^   argss    r5   <lambda>z/CustomReSTDispatcher.__init__.<locals>.<lambda>   s
    tRj r;   c                  
    d g fS r]   r^   r}   s    r5   r   z/CustomReSTDispatcher.__init__.<locals>.<lambda>   s
    4* r;   )directive_func
roles_funcselfs    r5   __init__zCustomReSTDispatcher.__init__   s    (@(@$<$<r;   c                 .    |                                   d S r]   )enabler   s    r5   	__enter__zCustomReSTDispatcher.__enter__   s    r;   exc_type	exc_value	tracebackc                 .    |                                   d S r]   )disable)r   r   r   r   s       r5   __exit__zCustomReSTDispatcher.__exit__   s    r;   c                     t           j        | _        t          j        | _        | j        t           _        | j        t          _        d S r]   )r   r<   r   r   rA   	role_funcr   s    r5   r   zCustomReSTDispatcher.enable   s-    (2#~
Y


r;   c                 J    | j         t          _        | j        t          _        d S r]   )r   r   r<   r   r   rA   r   s    r5   r   zCustomReSTDispatcher.disable   s    #2
^


r;   directive_namelanguage_moduledocumentc                 0    |                      |||          S r]   )r   )r   r   r   r   s       r5   r<   zCustomReSTDispatcher.directive   s     "">?HMMMr;   	role_namelinenor[   c                 2    |                      ||||          S r]   )r   )r   r   r   r   r[   s        r5   rA   zCustomReSTDispatcher.role   s    ~~i&(KKKr;   r-   N)rL   
__module____qualname____doc__r   r   r   	Exceptionr	   r   r   r   rc   r   r   r   r   r   r   r   r   r<   intr   r'   rA   r^   r;   r5   rz   rz      sM        = = = =   i Y SV [_       $ $ $ $N"%N8BNNSnNXd9o6^8LLMN N N N
Lc LJ L LW_ Ld>&::;L L L L L Lr;   rz   c                       e Zd ZdS )ElementLookupErrorN)rL   r   r   r^   r;   r5   r   r      s        Dr;   r   c                        e Zd ZdZd fdZdededefd	Zd
edede	j
        deeee                  ee         f         f fdZdededededeeee         f         f
 fdZ xZS )sphinx_domainszcMonkey-patch directive and role dispatch, so that domain-specific
    markup takes precedence.
    envr*   r-   Nc                 V    || _         t                                                       d S r]   )r   superr   )r   r   	__class__s     r5   r   zsphinx_domains.__init__   s&    r;   typer7   c                 D   |                                 }d|v r|                    dd          \  }}|| j        j        v r:| j                            |          } t          ||          |          }||g fS njt                              t          d          ||           n@| j        j	        
                    d          }| t          ||          |          }||g fS  t          | j                            d          |          |          }||g fS t          )ztLookup a markup element (directive or role), given its name which can
        be a full name (with domain).
        :   Nz%unknown directive or role name: %s:%sdefault_domainstd)lowersplitr   domains
get_domaingetattrloggerwarningr$   	temp_datarr   r   )r   r   r7   domain_namedomainelement
def_domains          r5   lookup_domain_elementz$sphinx_domains.lookup_domain_element   sC    zz||$; 	' $

3 2 2Kdh.. ^,,[99/'&$//55 '"B;&' q!HII;X\]]]] +//0@AAJ '3'*d33D99 '"B;& <'$(--e44d;;DAA 	B;  r;   r   r   r   c                     	 |                      d|          S # t          $ r& t                                          |||          cY S w xY w)Nr<   )r   r   r   r<   )r   r   r   r   r   s       r5   r<   zsphinx_domains.directive  s`    	P--k>JJJ! 	P 	P 	P77$$^_hOOOOO	Ps    -A	A	r   r   r[   c                     	 |                      d|          S # t          $ r' t                                          ||||          cY S w xY w)NrA   )r   r   r   rA   )r   r   r   r   r[   r   s        r5   rA   zsphinx_domains.role  s`    	N--fi@@@! 	N 	N 	N77<<	?FHMMMMM	Ns    .A
	A
)r   r*   r-   N)rL   r   r   r   r   rc   r	   r   r   r   r   r   r   r   r   r   r   r<   r   r   r'   rA   __classcell__r   s   @r5   r   r      s3             !# !S !S ! ! ! !<P"%P8BPNSnPXd9o6^8LLMP P P P P PNc NJ N NW_ Nd>&::;N N N N N N N N N Nr;   r   c                       e Zd ZdeddfdZdS )WarningStreamtextr-   Nc                 `   t                               |          }|s/t                              |                    d                     d S |                                \  }}}t                               d|                                          }t                              |||           d S )Nz
 location)	report_researchr   r   rstripgroupssublog)r   r   matchedr   r   levelmessages          r5   writezWarningStream.write!  s    ""4(( 	9NN4;;v../////$+NN$4$4!HdEmmB--4466GJJtWxJ88888r;   )rL   r   r   rc   r   r^   r;   r5   r   r      s6        9# 9$ 9 9 9 9 9 9r;   r   c                   v     e Zd Zededd fd            Zej        ej        ddfdede	de	d	e
d
eddf fdZ xZS )LoggingReporterr[   r-   c                 R     | |j         |j        |j        |j        |j                  S )zACreate an instance of LoggingReporter from other reporter object.)sourcereport_level
halt_level
debug_flagerror_handler)clsr[   s     r5   from_reporterzLoggingReporter.from_reporter,  s4     s8?H$98;N&(>@ @ 	@r;   Fbackslashreplacer   r   r   debugr   Nc                     t          t          t                                }t                                          ||||||           d S )N)r   )r   r   r   r   r   )r   r   r   r   r   r   streamr   s          r5   r   zLoggingReporter.__init__2  sU     b-//**zm 	 	E 	E 	E 	E 	Er;   )rL   r   r   classmethodr   r   WARNING_LEVELSEVERE_LEVELrc   r   boolr   r   r   s   @r5   r   r   +  s        @X @2C @ @ @ [@
 9A8N#+#8&8E Es E# E EAEE #E=AE E E E E E E E E Er;   r   c                   $     e Zd ZdZd fdZ xZS )NullReporterz A dummy reporter; write nothing.r-   Nc                 N    t                                          ddd           d S )Nr   i     )r   r   )r   r   s    r5   r   zNullReporter.__init__=  s%    S!$$$$$r;   r   )rL   r   r   r   r   r   r   s   @r5   r   r   :  sC        **% % % % % % % % % %r;   r   c                  :    t          j        dt                     dS )Nz*is_html5_writer_available() is deprecated.T)warningswarnr!   r^   r;   r5   is_html5_writer_availabler   A  s!    M>*, , ,4r;   statecontentc              #      K   	 | j         j        j        }t          g d          }||_        |j        | j         j        _        dV  || j         j        _        dS # || j         j        _        w xY w)z1Switch current source input of state temporarily.N)memor[   get_source_and_liner   input_lines)r   r   r   state_machines       r5   switch_source_inputr   G  s|      F#j1E %R..$+!2?2S
/ 3F
///2E
/EEEEs   AA A,c                   @     e Zd ZdZdeddf fdZdedef fdZ xZS )SphinxFileOutputz#Better FileOutput class for Sphinx.kwargsr-   Nc                     |                     dd          | _        |                    dd            t                      j        di | d S )Noverwrite_if_changedFencodingzutf-8r^   )rF   r   
setdefaultr   r   )r   r   r   s     r5   r   zSphinxFileOutput.__init__\  sS    $*JJ/Eu$M$M!*g...""6"""""r;   datac                 ~   | j         r| j        rd| j        vr| j        r~t          j                            | j                   rZt          | j         | j                  5 }|	                                |k    r|cd d d            S 	 d d d            n# 1 swxY w Y   t                                          |          S )Nb)r   )destination_path	autoclosemoder   rp   r   existsopenr   readr   r   )r   r   fr   s      r5   r   zSphinxFileOutput.writea  s   ! 	 dn 	 DI9M 	 )	 .0gnnT=R.S.S	 d+dmDDD  6688t#                                               
 ww}}T"""s   BBB)	rL   r   r   r   r	   r   rc   r   r   r   s   @r5   r   r   Y  s}        --# # # # # # # #
## ## # # # # # # # # # #r;   r   c                   z    e Zd ZdZedd            Zedd            Zdeee	f         fdZ
dedd	fd
ZdefdZd	S )SphinxDirectivezA base class for Sphinx directives.

    This class provides helper methods for Sphinx directives.

    .. note:: The subclasses of this class might not work with docutils.
              This class is strongly coupled with Sphinx.
    r-   r*   c                 .    | j         j        j        j        S z3Reference to the :class:`.BuildEnvironment` object.)r   r   settingsr   r   s    r5   r   zSphinxDirective.envu  s     z"+//r;   r)   c                     | j         j        S z)Reference to the :class:`.Config` object.r   configr   s    r5   r
  zSphinxDirective.configz       xr;   c                 @    | j                             | j                  S )zGet source and line number.)r   r   r   r   s    r5   get_source_infozSphinxDirective.get_source_info  s    !55dkBBBr;   r4   Nc                 H    |                                  \  |_        |_        dS )z'Set source and line number to the node.Nr  r   liner   r4   s     r5   set_source_infozSphinxDirective.set_source_info  s     !%!5!5!7!7TYYYr;   c                 d    d                     d |                                 D                       S )&Get current location info for logging.r   c              3   4   K   | ]}t          |          V  d S r]   rc   .0ss     r5   	<genexpr>z/SphinxDirective.get_location.<locals>.<genexpr>  (      ??1A??????r;   rs   r  r   s    r5   get_locationzSphinxDirective.get_location  /    xx??(<(<(>(>??????r;   r-   r*   r-   r)   )rL   r   r   r   propertyr   r
  r   rc   r   r  r   r  r  r^   r;   r5   r  r  l  s          0 0 0 X0    XCsCx C C C C8D 8T 8 8 8 8@c @ @ @ @ @ @r;   r  c                   p   e Zd ZU dZeed<   eed<   eed<   eed<   eed<   eed<   e	e         ed<   i g fdedededededede	e         d	e
e	e         e	e         f         fd
Zd	e
e	e         e	e         f         fdZedd            Zedd            Zdded	e
eef         fdZddeded	dfdZd	efdZdS )
SphinxRolezA base class for Sphinx roles.

    This class provides helper methods for Sphinx roles.

    .. note:: The subclasses of this class might not work with docutils.
              This class is strongly coupled with Sphinx.
    r7   rawtextr   r   inlineroptionsr   r-   c                    || _         t          |          | _        || _        || _        || _        || _        |r|                                | _        nX| j	        j
                            dd          | _        | j        s| j	        j        j        | _        | j        st          d          |                                 S )Ndefault_roler   zcannot determine default role!)r$  r    r   r   r%  r&  r   r   r7   r   r   rr   r
  r(  r#   run)r   r7   r$  r   r   r%  r&  r   s           r5   __call__zSphinxRole.__call__  s     TNN	  	D

DII*..~rBBDI9 9 HO8	9 D!"BCCCxxzzr;   c                     t           r]   )NotImplementedErrorr   s    r5   r)  zSphinxRole.run  s    !!r;   r*   c                 .    | j         j        j        j        S r  )r%  r   r  r   r   s    r5   r   zSphinxRole.env  s     |$-11r;   r)   c                     | j         j        S r  r	  r   s    r5   r
  zSphinxRole.config  r  r;   Nc                 R    || j         }| j        j                            |          S r]   )r   r%  r[   r   )r   r   s     r5   r  zSphinxRole.get_source_info  s*     	![F|$88@@@r;   r4   c                 J    |                      |          \  |_        |_        d S r]   r  )r   r4   r   s      r5   r  zSphinxRole.set_source_info  s"    !%!5!5f!=!=TYYYr;   c                 d    d                     d |                                 D                       S )r  r   c              3   4   K   | ]}t          |          V  d S r]   r  r  s     r5   r  z*SphinxRole.get_location.<locals>.<genexpr>  r  r;   r  r   s    r5   r  zSphinxRole.get_location  r  r;   r  r   r]   )rL   r   r   r   rc   __annotations__r   r   r   r   r   r   r   r*  r)  r!  r   r
  r  r  r  r^   r;   r5   r#  r#    s          IIILLL
IIIKKKMMM#Y 46B S 3 c 3 !,0@DS	DJ^(<<=   ,"U4:tN';;< " " " " 2 2 2 X2    XA Ac AU38_ A A A A
> >D ># > > > > >@c @ @ @ @ @ @r;   r#  c                        e Zd ZU dZeed<   eed<   eed<   eed<    ej        dej	                  Z
i g fdeded	ed
edededee         deee         ee         f         f fdZ xZS )ReferenceRolezA base class for reference roles.

    The reference roles can accept ``link title <target>`` style as a text for
    the role.  The parsed result; link title and target will be stored to
    ``self.title`` and ``self.target``.
    has_explicit_titledisabledtitletargetz^(.+?)\s*(?<!\x00)<(.*?)>$r7   r$  r   r   r%  r&  r   r-   c           	         |                     d          | _        | j                            |          }|rVd| _        t          |                    d                    | _        t          |                    d                    | _        n/d| _        t          |          | _        t          |          | _        t                      
                    |||||||          S )N!Tr      F)
startswithr7  explicit_title_rematchr6  r    groupr8  r9  r   r*  )
r   r7   r$  r   r   r%  r&  r   r   r   s
            r5   r*  zReferenceRole.__call__  s     ,,(..t44 	)&*D#!'--"2"233DJ"7==#3#344DKK&+D#!$DJ"4..DKwwgtVWgwWWWr;   )rL   r   r   r   r   r3  rc   recompileDOTALLr>  r   r   r   r   r   r   r   r*  r   r   s   @r5   r5  r5    s           NNNJJJKKK #
#@")LL 46BX XS X3 Xc X3 X!X,0X@DS	XDJ^(<<=X X X X X X X X X Xr;   r5  c                   r     e Zd ZdZdej        ddddf fdZdeddf fd	Zdeddf fd
Z	deddfdZ
 xZS )SphinxTranslatorax  A base class for Sphinx translators.

    This class adds a support for visitor/departure method for super node class
    if visitor/departure method for node class is not found.

    It also provides helper methods for Sphinx translators.

    .. note:: The subclasses of this class might not work with docutils.
              This class is strongly coupled with Sphinx.
    r   builderr(   r-   Nc                     t                                          |           || _        |j        | _        |j        | _        d S r]   )r   r   rF  r
  r  )r   r   rF  r   s      r5   r   zSphinxTranslator.__init__  s9    """n )r;   r4   c                     |j         j        D ]+}t          | d|j        z  d          }|r ||            dS ,t	                                          |           dS )z
        Dispatch node to appropriate visitor method.
        The priority of visitor method is:

        1. ``self.visit_{node_class}()``
        2. ``self.visit_{super_node_class}()``
        3. ``self.unknown_visit()``
        zvisit_%sN)r   __mro__r   rL   r   dispatch_visitr   r4   
node_classmethodr   s       r5   rJ  zSphinxTranslator.dispatch_visit  ss     .0 	) 	)JT:1D#EtLLF t GG""4(((((r;   c                     |j         j        D ]+}t          | d|j        z  d          }|r ||            dS ,t	                                          |           dS )z
        Dispatch node to appropriate departure method.
        The priority of departure method is:

        1. ``self.depart_{node_class}()``
        2. ``self.depart_{super_node_class}()``
        3. ``self.unknown_departure()``
        z	depart_%sN)r   rI  r   rL   r   dispatch_departurerK  s       r5   rO  z#SphinxTranslator.dispatch_departure  ss     .0 	- 	-JT;*2E#FMMF t GG&&t,,,,,r;   c                 Z    t                               t          d          ||           d S )Nzunknown node type: %rr   )r   r   r%   r  s     r5   unknown_visitzSphinxTranslator.unknown_visit$  s)    r122D4HHHHHr;   )rL   r   r   r   r   r   r   r   rJ  rO  rQ  r   r   s   @r5   rE  rE    s        	 	* *) * * * * * * *)4 )D ) ) ) ) ) )"-t - - - - - - -"I$ I4 I I I I I I I Ir;   rE  )r      c                 6    t           | j        |i |          S r]   )itertraverse)r   r~   r   s      r5   findallrV  ,  s!    MDM42622333r;   __document_cache__source_pathr  c                    t           t          j                            |           a |t	          t           j                  }ddlm} |                    |t           j	        |           }|
                    | d           |S )a&  Return a new empty document object.  This is an alternative of docutils'.

    This is a simple wrapper for ``docutils.utils.new_document()``.  It
    caches the result of docutils' and use it on second call for instantiation.
    This makes an instantiation of document nodes much faster.
    Nr   )addnodes)r   )rW  rd   utilsnew_documentr   r  sphinxrZ  r   r[   note_source)rX  r  rZ  r   s       r5   r]  r]  7  s      F%^88EE 5*344    +=+F{ [[Hb)))Or;   r]   )ir   rp   rA  r   
contextlibr   r   r   typesr   typingr   r   r	   r
   r   r   r   r   r   r   r   r   rd   r   docutils.ior   docutils.nodesr   r   r   docutils.parsers.rstr   r   r   docutils.parsers.rst.statesr   docutils.statemachiner   r   r   docutils.utilsr   r    sphinx.deprecationr!   r"   sphinx.errorsr#   sphinx.localer$   r%   sphinx.utilr&   sphinx.util.typingr'   	getLoggerrL   r   rB  r   sphinx.buildersr(   sphinx.configr)   sphinx.environmentr*   r+   setr,   r3  r6   rc   r   r:   r>   r@   rD   rG   rN   rR   r2   r`   rl   rv   rx   rz   r   r   r   r   r   r   r   r   r   r  r#  r5  NodeVisitorrE  rV  rW  r   r]  r^   r;   r5   <module>rt     s   % % % 				 				  % % % % % %                  ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '        " " " " " " 8 8 8 8 8 8 8 8 8 8 = = = = = = = = = = / / / / / / A A A A A A A A A A - - - - - - - - I I I I I I I I % % % % % %               + + + + + +		8	$	$BJ[\\	 4''''''$$$$$$333333  '')B *')D   (+suu #d7m$ , , , +I&67 + + + + *# *$ * * * *
3S 3T)_ 3 3 3 3 3 S  T        
* *< *D * * * *!# !$ ! ! ! !
GT'] Gt G G G G
#W #$ # # # #	D$w- 	DD 	D 	D 	D 	D 7i(89 7 7 7 7& C),<"= C C C C. :hsm :	BR8S : : : :  HSM Y?O5P    #L #L #L #L #L #L #L #LL	 	 	 	 	 	 	 	3N 3N 3N 3N 3N) 3N 3N 3Nl9 9 9 9 9 9 9 9E E E E Eh E E E% % % % %8 % % %4     Fu Fz FiHX>Y F F F F"# # # # #z # # #&@ @ @ @ @i @ @ @@?@ ?@ ?@ ?@ ?@ ?@ ?@ ?@DX X X X XJ X X XD5I 5I 5I 5I 5Iu( 5I 5I 5Iv w& 4 4 4 DL
 04 HU^, 3 3 3 c S EN      r;   