
    }c<X                     N   d Z ddlZddl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 ddlm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 ddlmZ ddl m!Z! 	 ddl"m#Z# n# e$$ r	 ddl%m#Z# Y nw xY wddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> dd
l?mZ@ ddlAmBZB ddlCmDZD ddlEmFZF ddlGmHZHmIZI erddlJmKZK ddlLmMZM  eDjN        eO          ZPddiZQ G d  d!          ZRd"d#d$e)d%dfd&ZSd"d#d%eeTe	f         fd'ZUdS )(zSphinx component registry.    N)import_module)
MethodType)
TYPE_CHECKINGAnyCallableDictIteratorListOptionalTupleTypeUnion)nodes)	Publisher)Input)ElementNodeTextElement)Parser)	Directive)	Transform)entry_points)Builder)Config)RemovedInSphinx60Warning)DomainIndexObjType)GenericObjectTarget)BuildEnvironment)ExtensionErrorSphinxErrorVersionRequirementError)	Extension)create_publisher)__)XRefRole)logging)prefixed_warnings)RoleFunctionTitleGetter)Sphinx)
Documenterzsphinxjp.themecorez1.2c                      e Zd ZdSdZdTdee         deddfdZdd	d
eddfdZ	dd	d
edefdZ
dTdee         deddfdZdedefdZdedee         fdZ	 dTded
edee         deddf
dZ	 dTded
edeeef         deddf
dZ	 dTdedee         deddfdZddddg dfdededededee         dedededdfd Z	 	 	 dUdedededee         dededdfd!ZdTd"ed#ededdfd$ZdTd%ee         deddfd&Z d#edee         fd'Z!de"eee         f         fd(Z#dd	d)edefd*Z$d#ede%ee&                  fd+Z'	 dTd
ed,ee(j)                 deddfd-Z*d.ee+         d/e,eef         ddfd0Z-dedee(j)                 fd1Z.ded2e/de(j)        fd3Z0d4ee1         ddfd5Z2deee1                  fd6Z3d4ee1         ddfd7Z4deee1                  fd8Z5d9ed:ed;         ddfd<Z6d=ed>ee/ee/ge/f         ddfd?Z7d)ed@e/ddfdAZ8d)ed@e/ddfdBZ9d
edefdCZ:dTd
edDedEeddfdFZ;	 dVd.ee<         dGedHe=deddf
dIZ>d
edJe,eef         dKe,eef         ddfdLZ?d
edMeddfdNZ@dd	dOeddfdPZAdd	de"eef         fdQZBdd	d#edeCfdRZDdS )WSphinxComponentRegistryreturnNc                 d   i | _         i | _        i | _        g | _        i | _        i | _        i | _        i | _        i | _        i | _	        i | _
        i | _        d| _        i | _        g | _        g | _        g | _        g | _        i | _        i | _        i | _        i | _        i | _        g | _        i | _        d S )Nper_page)autodoc_attrgettrsbuildersdocumenters	css_filesdomainsdomain_directivesdomain_indicesdomain_object_typesdomain_rolesenumerable_nodeshtml_inline_math_renderershtml_block_math_renderershtml_assets_policyhtml_themesjs_fileslatex_packageslatex_packages_after_hyperrefpost_transformssource_parserssource_inputssource_suffixtranslatorstranslation_handlers
transforms
publishersselfs    /lib/python3.11/site-packages/sphinx/registry.py__init__z SphinxComponentRegistry.__init__5   s    NP 35 9; <> 13 =? =? CE  RT LN QS'OQ& (2 ,. ;= 68DF* 79 8: 68 .0 @B VX! 24 13    Fbuilderoverridec                 N   t                               d|           t          |d          st          t	          d          |z            |j        | j        v r=|s;t          t	          d          |j        | j        |j                 j        fz            || j        |j        <   d S )Nz[app] adding builder: %rnamez(Builder class %s has no "name" attributez(Builder %r already exists (in module %s))loggerdebughasattrr"   r'   rU   r5   
__module__)rN   rR   rS   s      rO   add_builderz#SphinxComponentRegistry.add_builder   s    /999w'' 	[ $N!O!ORY!YZZZ<4=( 	Y 	Y $N!O!O"),gl0K0V!W"X Y Y Y&-gl###rQ   appr-   rU   c                     |d S || j         vrit          d          }	 ||         }n2# t          $ r%}t          t	          d          |z            |d }~ww xY w|                     ||j                   d S d S )Nzsphinx.builders)groupz?Builder name %s not registered or available through entry point)r5   r   KeyErrorr#   r'   load_extensionmodule)rN   r[   rU   builder_entry_pointsentry_pointexcs         rO   preload_builderz'SphinxComponentRegistry.preload_builder   s     	Ft}$ 	9#/6G#H#H#H N248 N N N!" &< #= #=?C#D E EJMNN [%788888	9 	9s   ( 
A AAc                 ~    || j         vrt          t          d          |z             | j         |         |          S )NzBuilder name %s not registered)r5   r#   r'   )rN   r[   rU   s      rO   create_builderz&SphinxComponentRegistry.create_builder   sE    t}$ 	Kb!ABBTIJJJ"t}T"3'''rQ   domainc                     t                               d|           |j        | j        v r&|s$t	          t          d          |j        z            || j        |j        <   d S )Nz[app] adding domain: %rzdomain %s already registered)rV   rW   rU   r8   r"   r'   )rN   rg   rS   s      rO   
add_domainz"SphinxComponentRegistry.add_domain   sc    .777;$,& 	Sx 	S $B!C!Cfk!QRRR$*V[!!!rQ   c                     || j         v S N)r8   )rN   rg   s     rO   
has_domainz"SphinxComponentRegistry.has_domain   s    %%rQ   envc              #   P  K   | j                                         D ]} ||          }|j                            | j                            |j        i                      |j                            | j                            |j        i                      |j	        
                    | j                            |j        g                      | j                            |j        i                                           D ]\  }}|                    ||           |V  
d S rk   )r8   values
directivesupdater9   getrU   rolesr<   indicesextendr:   r;   itemsadd_object_type)rN   rm   DomainClassrg   rU   objtypes         rO   create_domainsz&SphinxComponentRegistry.create_domains   s     <..00 
	 
	K [%%F $$T%;%?%?R%P%PQQQL 1 5 5fk2 F FGGGN!!$"5"9"9&+r"J"JKKK!%!9!=!=fk2!N!N!T!T!V!V 6 6g&&tW5555LLLL
	 
	rQ   clsc                     t                               d|||f           || j        vrt          t	          d          |z            | j                            |i           }||v r#|s!t          t	          d          ||fz            |||<   d S )Nz$[app] adding directive to domain: %rdomain %s not yet registeredz3The %r directive is already registered to domain %s)rV   rW   r8   r"   r'   r9   
setdefault)rN   rg   rU   r{   rS   rp   s         rO   add_directive_to_domainz/SphinxComponentRegistry.add_directive_to_domain   s    ;fdC=PQQQ% 	N $B!C!Cf!LMMM+66vrBB
: 	1h 	1 $Y!Z!Z"&"0 1 1 1
4rQ   rolec                     t                               d|||f           || j        vrt          t	          d          |z            | j                            |i           }||v r#|s!t          t	          d          ||fz            |||<   d S )Nz[app] adding role to domain: %rr}   z.The %r role is already registered to domain %s)rV   rW   r8   r"   r'   r<   r~   )rN   rg   rU   r   rS   rs   s         rO   add_role_to_domainz*SphinxComponentRegistry.add_role_to_domain   s     	6t8LMMM% 	N $B!C!Cf!LMMM!,,VR885= 	1 	1 $T!U!U"&"0 1 1 1drQ   indexc                 H   t                               d||f           || j        vrt          t	          d          |z            | j                            |g           }||v r(|s&t          t	          d          |j        |fz            |                    |           d S )Nz [app] adding index to domain: %rr}   z/The %r index is already registered to domain %s)	rV   rW   r8   r"   r'   r:   r~   rU   append)rN   rg   r   rS   rt   s        rO   add_index_to_domainz+SphinxComponentRegistry.add_index_to_domain   s    7&%III% 	N $B!C!Cf!LMMM%00<<G 	7H 	7 $U!V!V"'*f!5"6 7 7 7urQ    directivenamerolenameindextemplate
parse_noderef_nodeclassobjnamedoc_field_typesc	           
         t                               d|||||||f           t          |t          t          f|t          |          |d          }	|                     d||	           |                     d|t          |                     | j	        
                    di           }
||
v r!|st          t          d          |z            t          |p||          |
|<   d S )Nz[app] adding object type: %r)r   r   r   stdinnernodeclassz(The %r object_type is already registered)rV   rW   typer   objectstaticmethodr   r   r(   r;   r~   r"   r'   r   )rN   r   r   r   r   r   r   r   rS   	directiveobject_typess              rO   rw   z'SphinxComponentRegistry.add_object_type   s    	3#X}j#Wo?	@ 	@ 	@
 '0+8(4Z(@(@-<> >? ?	 	$$UM9EEEx1W1W1WXXX/::5"EEL( 	0 	0 $N!O!O!."/ 0 0 0&-g.F&Q&Q]###rQ   c                    t                               d|||||f           t          |t          t          fd|i          }|                     d||           |                     d|t          |                     | j        	                    di           }||v r!|st          t          d          |z            t          |p||          ||<   d S )Nz[app] adding crossref type: %rr   r   r   z*The %r crossref_type is already registered)rV   rW   r   r    r   r   r   r(   r;   r~   r"   r'   r   )	rN   r   r   r   r   r   rS   r   r   s	            rO   add_crossref_typez)SphinxComponentRegistry.add_crossref_type   s     	5#X}mWU	W 	W 	W  &))=9; ;	 	$$UM9EEEx1W1W1WXXX/::5"EEL( 	0 	0 $P!Q!Q!."/ 0 0 0&-g.F&Q&Q]###rQ   suffixfiletypec                     t                               d||           || j        v r!|st          t	          d          |z            || j        |<   d S )Nz"[app] adding source_suffix: %r, %rz&source_suffix %r is already registered)rV   rW   rH   r"   r'   )rN   r   r   rS   s       rO   add_source_suffixz)SphinxComponentRegistry.add_source_suffix  s`    968LLLT'' 	2 	2 $L!M!MPV!VWWW)1Dv&&&rQ   parserc                     t                               d|           |j        D ]6}|| j        v r!|st	          t          d          |z            || j        |<   7d S )Nz%[app] adding search source_parser: %rz*source_parser for %r is already registered)rV   rW   	supportedrF   r"   r'   )rN   r   rS   r   s       rO   add_source_parserz)SphinxComponentRegistry.add_source_parser  s    <fEEE ( 	7 	7H4.. 7x 7$R(T%U%U%-&. / / / 17#H--	7 	7rQ   c                     	 | j         |         S # t          $ r%}t          t          d          |z            |d }~ww xY w)Nz#Source parser for %s not registered)rF   r^   r#   r'   )rN   r   rc   s      rO   get_source_parserz)SphinxComponentRegistry.get_source_parser  sX    	]&x00 	] 	] 	]b!FGG(RSSY\\	]s    
> 9>c                     | j         S rk   )rF   rM   s    rO   get_source_parsersz*SphinxComponentRegistry.get_source_parsers  s    ""rQ   filenamec                     |                      |          } |            }t          |t                    r|                    |           |S rk   )r   
isinstanceSphinxParserset_application)rN   r[   r   parser_classr   s        rO   create_source_parserz,SphinxComponentRegistry.create_source_parser"  sK    --h77fl++ 	(""3'''rQ   c                     t          j        dt                     	 | j        |         S # t          $ r# 	 | j        d         cY S # t          $ r Y Y d S w xY ww xY w)Nz9SphinxComponentRegistry.get_source_input() is deprecated.*)warningswarnr   rG   r^   )rN   r   s     rO   get_source_inputz(SphinxComponentRegistry.get_source_input)  s    Q.	0 	0 	0	%h// 	 	 	)#....   ttt		s,   ) 
AA A
AAAA
translatorc                     t                               d|           || j        v r!|st          t	          d          |z            || j        |<   d S )Nz.[app] Change of translator for the %s builder.z Translator for %r already exists)rV   rW   rI   r"   r'   )rN   rU   r   rS   s       rO   add_translatorz&SphinxComponentRegistry.add_translator6  s_    EtLLL4## 	PH 	P $F!G!G$!NOOO!+rQ   nodekwargsc                 4   t                               d||           |                                D ]f\  }}| j                            |i           }	 |\  }}||f||j        <   3# t          $ r'}t          t          d          ||fz            |d }~ww xY wd S )Nz)[app] adding translation_handlers: %r, %rzEkwargs for add_node() must be a (visit, depart) function tuple: %r=%r)	rV   rW   rv   rJ   r~   __name__
ValueErrorr"   r'   )	rN   r   r   builder_namehandlersrJ   visitdepartrc   s	            rO   add_translation_handlersz0SphinxComponentRegistry.add_translation_handlers=  s    @$OOO&,llnn 		 		"L(#'#<#G#GVX#Y#Y  (v7<fo$T]33   $ / 0 03?2JK  		 		s   A$$
B."BBc                 L    | j                             |j        |j                  S rk   )rI   rr   rU   default_translator_class)rN   rR   s     rO   get_translator_classz,SphinxComponentRegistry.get_translator_classK  s*    ##GL$+$DF F 	FrQ   argsc           	         |                      |          }|sJ d|j        z               || }| j                            |j        d           }| | j                            |j        i           }|                                D ]N\  }\  }}t          |d|z   t          ||                     |r"t          |d|z   t          ||                     O|S )Nztranslator not found for %svisit_depart_)r   rU   rJ   rr   formatrv   setattrr   )	rN   rR   r   translator_classr   r   rU   r   r   s	            rO   create_translatorz)SphinxComponentRegistry.create_translatorO  s    44W==MM!>!MMMM%%t,
 ,00tDD 	I044W^RHHH%-^^%5%5 	V 	V!D/5&J4E:1N1NOOO V
I$4j6T6TUUUrQ   	transformc                 p    t                               d|           | j                            |           d S )Nz[app] adding transform: %r)rV   rW   rK   r   rN   r   s     rO   add_transformz%SphinxComponentRegistry.add_transforma  s3    19===y)))))rQ   c                     | j         S rk   )rK   rM   s    rO   get_transformsz&SphinxComponentRegistry.get_transformse  s
    rQ   c                 p    t                               d|           | j                            |           d S )Nz[app] adding post transform: %r)rV   rW   rE   r   r   s     rO   add_post_transformz*SphinxComponentRegistry.add_post_transformh  s4    6	BBB##I.....rQ   c                     | j         S rk   )rE   rM   s    rO   get_post_transformsz+SphinxComponentRegistry.get_post_transformsl  s    ##rQ   ry   
documenterr.   c                     || j         |<   d S rk   )r6   )rN   ry   r   s      rO   add_documenterz&SphinxComponentRegistry.add_documentero  s    $.!!!rQ   typ
attrgetterc                     || j         |<   d S rk   )r4   )rN   r   r   s      rO   add_autodoc_attrgetterz.SphinxComponentRegistry.add_autodoc_attrgetterr  s    '1$$$rQ   
attributesc                 >    | j                             ||f           d S rk   )r7   r   rN   r   r   s      rO   add_css_filesz%SphinxComponentRegistry.add_css_filesv  s#    x455555rQ   c                 v    t                               d||           | j                            ||f           d S )Nz[app] adding js_file: %r, %r)rV   rW   rB   r   r   s      rO   add_js_filez#SphinxComponentRegistry.add_js_filey  s:    3XzJJJh
344444rQ   c                 X    | j         | j        z   }t          fd|D                       S )Nc                 ,    g | ]}|d          k    |S )r    ).0xrU   s     rO   
<listcomp>z=SphinxComponentRegistry.has_latex_package.<locals>.<listcomp>  s&    9991AaDDL9Q999rQ   )rC   rD   bool)rN   rU   packagess    ` rO   has_latex_packagez)SphinxComponentRegistry.has_latex_package}  s6    &)KK9999999:::rQ   optionsafter_hyperrefc                    |                      |          rt                              d|z             t                              d|           |r| j                            ||f           d S | j                            ||f           d S )Nz#latex package '%s' already includedz[app] adding latex package: %r)r   rV   r   rW   rD   r   rC   )rN   rU   r   r   s       rO   add_latex_packagez)SphinxComponentRegistry.add_latex_package  s    !!$'' 	FKK=DEEE5t<<< 	8.55tWoFFFFF&&g77777rQ   figtypetitle_getterc                     t                               d|||           || j        v r!|st          t	          d          |z            ||f| j        |<   d S )Nz*[app] adding enumerable node: (%r, %r, %r)z%enumerable_node %r already registered)rV   rW   r=   r"   r'   )rN   r   r   r   rS   s        rO   add_enumerable_nodez+SphinxComponentRegistry.add_enumerable_node  si    A4R^___4(( 	U 	U $K!L!Lt!STTT'.&=d###rQ   inline_renderersblock_renderersc                     t                               d|||           || j        v rt          t	          d          |z            || j        |<   || j        |<   d S )Nz+[app] adding html_math_renderer: %s, %r, %rz&math renderer %s is already registered)rV   rW   r>   r"   r'   r?   )rN   rU   r   r   s       rO   add_html_math_rendererz.SphinxComponentRegistry.add_html_math_renderer  ss     	B+_	> 	> 	>422 	V $L!M!MPT!TUUU0@'-/>&t,,,rQ   
theme_pathc                     || j         |<   d S rk   )rA   )rN   rU   r   s      rO   add_html_themez&SphinxComponentRegistry.add_html_theme  s    !+rQ   extnamec                    ||j         v rdS |t          v r6t                              t	          d          |t          |                    dS t	          d          |z  }t          |          5  	 t          |          }nn# t          $ ra}t                              t	          d          t          j
                    z              t          t	          d          |z  |          |d}~ww xY wt          |dd          }|+t                              t	          d          |           i }nA	  ||          }n4# t          $ r'}t          t	          d          ||fz            |d}~ww xY w|i }n?t          |t                    s*t                              t	          d	          |           i }t!          ||fi ||j         |<   ddd           dS # 1 swxY w Y   dS )
zLoad a Sphinx extension.Nz\the extension %r was already merged with Sphinx since version %s; this extension is ignored.zwhile setting up extension %s:zOriginal exception:
zCould not import extension %ssetupzMextension %r has no setup() function; is it really a Sphinx extension module?zpThe %s extension used by this project needs at least Sphinx v%s; it therefore cannot be built with this version.zuextension %r returned an unsupported object from its setup() function; it should return None or a metadata dictionary)
extensionsEXTENSION_BLACKLISTrV   warningr'   r*   r   ImportErrorverbose	traceback
format_excr"   getattrr$   r   dictr%   )rN   r[   r   prefixmoderrr   metadatas           rO   r_   z&SphinxComponentRegistry.load_extension  s   cn$ 	F)) 	NN2 G H H"$7$@B B B F 455?v&&  	J  	J3#G,, 3 3 3r"9::Y=Q=S=SSTTT$R(G%H%H7%R%(* */233
 C$//E r #?  @  @AHJ J J+-$uSzzHH.   1 & ' '*138  	  $// r #8  9  9:AC C C &/&I&I&I&ICN7#A 	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	Js]   ,G.A>=G>
C)AC$$C))AG+D76G7
E("E##E((AGGGc                 b    ddl m} d |j                                        D             }||d<   |S )Nr   )ENV_VERSIONc                 h    i | ]/}|j                             d           |j        |j         d          0S )env_version)r  rr   rU   )r   exts     rO   
<dictcomp>z:SphinxComponentRegistry.get_envversion.<locals>.<dictcomp>  sG     : : :))-88:ch] ; : : :rQ   sphinx)sphinx.environmentr
  r   ro   )rN   r[   r
  
envversions       rO   get_envversionz&SphinxComponentRegistry.get_envversion  sO    222222: :s~G\G\G^G^ : : :
*
8rQ   c                 v    	 | j         |         S # t          $ r Y nw xY wt          ||          }|| j         |<   |S rk   )rL   r^   r&   )rN   r[   r   	publishers       rO   get_publisherz%SphinxComponentRegistry.get_publisher  sU    	?8,, 	 	 	D	$S(33	$-!s    
)r1   N)F)r   Nr   F)NF)Er   rY   __qualname__rP   r   r   r   rZ   strrd   rf   r   ri   rl   r!   r	   rz   r   r   r   r+   r(   r   r   r   r   r   r
   rw   r   r   r   r   r   r   r   r   r   r   r   r   NodeVisitorr   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   rQ   rO   r0   r0   4   s       N3 N3 N3 N3`. .4= .D .T . . . .98 93 94 9 9 9 9(( (# (' ( ( ( (+ +f + +$ + + + +& & & & & &"2 x7G     HM
 
c 
 
%))_
@D
QU
 
 
 
 RW
 
 
C 
!&|X'=!>
JN
 $
 
 
 
 .3	 	# 	d5k 	&*	7;	 	 	 	 WY/3X\')2X]R RS RC RPS R$,RDHDUR!$R<@RQUR "R R R R0 Y[RT+0R Rs Rc RRU R)-k):RLOR$(R59R R R R(2 2 2s 2d 2W[ 2 2 2 2	7 	7V 	7 	7QU 	7 	7 	7 	7]# ]$v, ] ] ] ]#Dd6l):$; # # # # C F     $u+1F     )., ,3 ,D9J4K ,!%,26, , , ,T'] +081C+DIM   FG FU=N8O F F F F  AR    $*tI *4 * * * *T)_ 5    /DO / / / / /$T$y/%: $ $ $ $/c /tL7I /d / / / /2$ 2+3S#sOS4H+I2NR2 2 2 26c 6 6 6 6 6 65C 5s 5t 5 5 5 5;c ;d ; ; ; ;8 8c 8C 8 8Z^ 8 8 8 8 PU> >T
 >S >*5>HL>Y]> > > >	?3 	?16x7I1J	?05h6H0I	?NR	? 	? 	? 	?,3 ,C ,D , , , ,,J( ,JS ,JT ,J ,J ,J ,J\( tCH~     S Y      rQ   r0   r[   r-   configr1   c                     | j         j                                        D ]D\  }}|| j        j        vr|| j        j        |<   #| j        j        |         || j        j        |<   E| j        j        | j         _        dS )zDMerge any user-specified source_suffix with any added by extensions.N)registryrH   rv   r  )r[   r  r   r   s       rO   merge_source_suffixr    s    L6<<>> 8 811 	8/7CJ$V,,Z%f- 	8 08CJ$V, "%!9CLrQ   c                 H    |                      dt          d           ddddS )Nzconfig-initedi   )prioritybuiltinT)versionparallel_read_safeparallel_write_safe)connectr  )r[   s    rO   r   r     s5    KK!4sKCCC "#  rQ   )V__doc__r  r   	importlibr   typesr   typingr   r   r   r   r	   r
   r   r   r   r   docutilsr   docutils.corer   docutils.ior   docutils.nodesr   r   r   docutils.parsersr   docutils.parsers.rstr   docutils.transformsr   importlib_metadatar   r   importlib.metadatasphinx.buildersr   sphinx.configr   sphinx.deprecationr   sphinx.domainsr   r   r   sphinx.domains.stdr   r    r  r!   sphinx.errorsr"   r#   r$   sphinx.extensionr%   	sphinx.ior&   sphinx.localer'   sphinx.parsersr   sphinx.rolesr(   sphinx.utilr)   sphinx.util.loggingr*   sphinx.util.typingr+   r,   sphinx.applicationr-   sphinx.ext.autodocr.   	getLoggerr   rV   r   r0   r  r  r   r   rQ   rO   <module>rB     s            # # # # # #                                    # # # # # #       5 5 5 5 5 5 5 5 5 5 # # # # # # * * * * * * ) ) ) ) ) )0/////// 0 0 0////////0 $ # # # # #             7 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 / / / / / / N N N N N N N N N N & & & & & & & & & & & &       1 1 1 1 1 1 ! ! ! ! ! !       1 1 1 1 1 1 8 8 8 8 8 8 8 8 .))))))------		8	$	$
 % 
h h h h h h h hV:X :v :$ : : : :x DcN      s   A% %A32A3