
    Mh                         d Z ddlZddlmZmZmZmZmZmZm	Z	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mZ ddlmZ g dZ G d d	e          Z G d
 de          Z G d de          Z G d de          Z  G d de          Z!d Z" G d de          Z# G d de          Z$ G d de          Z% G d de          Z& G d de          Z' G d de          Z( G d d e          Z) G d! d"e          Z* G d# d$e          Z+ G d% d&e          Z, G d' d(e          Z- G d) d*e          Z. G d+ d,e          Z/ G d- d.e          Z0 G d/ d0e          Z1 G d1 d2e          Z2 G d3 d4e          Z3dS )5z
    pygments.lexers.configs
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for configuration file formats.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)ExtendedRegexLexer
RegexLexerdefaultwordsbygroupsincludeusingline_re)TextCommentOperatorKeywordNameStringNumberPunctuation
WhitespaceLiteralErrorGeneric)	BashLexer)	JsonLexer)IniLexerSystemdLexerDesktopLexerRegeditLexerPropertiesLexerKconfigLexerCfengine3LexerApacheConfLexerSquidConfLexerNginxConfLexerLighttpdConfLexerDockerLexerTerraformLexerTermcapLexerTerminfoLexerPkgConfigLexerPacmanConfLexerAugeasLexer	TOMLLexerNestedTextLexerSingularityLexerUnixConfigLexerc                   p   e Zd ZdZdZg dZg dZddgZdZdZ	d	e
fd
ej        fd eee
          fd eej        e
ee
e          dfd eej        e
ee
eee
          dfd eej        e
ee
e          fdej        fgd eeee
          dfd
ej        fdedfgd	e
fd ee
eee
          fdedfgdZd ZdS )r   z5
    Lexer for configuration files in INI style.
    INI)inicfgdosini)z*.iniz*.cfgz*.infz.editorconfigz
text/x-iniztext/infz&https://en.wikipedia.org/wiki/INI_file \s+[;#].*z(\[.*?\])([ \t]*)$z!(.*?)([ \t]*)([=:])([ \t]*)(["'])quoted_valuez.(.*?)([ \t]*)([=:])([ \t]*)([^;#\n]*)(\\)(\s+)valuez6(.*?)([ \t]*)([=:])([ \t]*)([^ ;#\n]*(?: +[^ ;#\n]+)*)z(.+?)$z([^"'\n]*)(["'])(\s*)#pop$z(\s*)(.*)(\\)([ \t]*)z.*$)rootr7   r8   c                 z    |                      d          }|dk     rdS | d         dk    r| |dz
           dk    rdS dS )	N
   Fr   [   ]g?)find)textnposs     W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pygments/lexers/configs.pyanalyse_textzIniLexer.analyse_textI   sH    yy!8857c>>d46lc113u    N)__name__
__module____qualname____doc__namealiases	filenames	mimetypesurlversion_addedr   r   Singler   r   r   	Attributer   r   r   tokensrF    rG   rE   r   r      s         D&&&G  I z*I
2CM Z '"HHWj$A$AB5Xdnj(JOO ?Xdnj(JJ( ( GXdnj(JOOQ '
" *Xffj116;'66"	
 Z %Xj&$
;;=VV$	
/ F>    rG   r   c                       e Zd ZdZdZdZdgZdgZdgZdZ	dd	e
fd
 eej        e
          fd eee
          fd eej        ej        e
ee
ee
          fgiZd ZdS )r   z#
    Lexer for .desktop files.
    zDesktop filezXhttps://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.htmldesktopz	*.desktopzapplication/x-desktop2.16r;   	^[ \t]*\nz
^(#.*)(\n)(\[[^\]\n]+\])(\n)zG([-A-Za-z0-9]+)(\[[^\] \t=]+\])?([ \t]*)(=)([ \t]*)([^\n]*)([ \t\n]*\n)c                     |                      d          rdS t          j        d| d d         t          j                  dS dS )Nz[Desktop Entry]      ?z^\[Desktop Entry\][ \t]*$  ?        
startswithresearch	MULTILINErC   s    rE   rF   zDesktopLexer.analyse_texth   sE    ??,-- 	3914:r|LLX3srG   N)rH   rI   rJ   rK   rL   rP   rM   rN   rO   rQ   r   r   r   rR   r   r   rS   	Namespacer   r   rT   rF   rU   rG   rE   r   r   R   s          D
dCkGI()IM 	:&HHW^Z@@A"HHWj$A$ABWXdndnj(JX^`jkkm	
F    rG   r   c                   <   e Zd ZdZdZdZdgZg dZdZde	fd e
ej        e	          fd	 e
ee	          fd
 e
ej        e	ee	eee	          dfd e
ej        e	ee	ee	          fgd e
ej        e	          fd e
e	eee	          fd e
e	ee	          dfgdZd ZdS )r   z'
    Lexer for systemd unit files.
    SystemdzDhttps://www.freedesktop.org/software/systemd/man/systemd.syntax.htmlsystemd)z	*.servicez*.socketz*.devicez*.mountz*.automountz*.swapz*.targetz*.pathz*.timerz*.slicez*.scoperX   rY   z^([;#].*)(\n)rZ   z*([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\\)(\n)r8   z&([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\n)z([ \t]*)([^\n]*)(\\)(\n)z([ \t]*)([^\n]*)(\n)r9   r;   r8   c                     |                      d          rdS t          j        d| d d         t          j                  dS dS )Nz[Unit]r\   z^\[Unit\][ \t]*$r]   r^   r_   r`   re   s    rE   rF   zSystemdLexer.analyse_text   sD    ??8$$ 	39($tt*blCCO3srG   N)rH   rI   rJ   rK   rL   rP   rM   rN   rQ   r   r   r   rR   r   r   rS   r   r   r   rT   rF   rU   rG   rE   r   r   p   s@         D
PCkG  I M :&xx
CCD"HHWj$A$AB:Xdnj(JJ( ( 7Xdnj(JPZ[[]

 xx
CCD(Xj&$
;;=$Xj&*55v?
 F,    rG   r   c                   $   e Zd ZdZdZdZdgZdgZdgZdZ	de
fd	efd
ej        fd eeeej        e          fd eej        eee          dfd eej        eee          dfgdedfd eej        ee          dfdedf ed          gdZd ZdS )r   z?
    Lexer for Windows Registry files produced by regedit.
    regz8http://en.wikipedia.org/wiki/Windows_Registry#.REG_filesregistryz*.regztext/x-windows-registry1.6zWindows Registry Editor.*r5   r6   z(\[)(-?)(HKEY_[A-Z_]+)(.*?\])$z)("(?:\\"|\\\\|[^"])+")([ \t]*)(=)([ \t]*)r8   z(.*?)([ \t]*)(=)([ \t]*)-r9   z1(dword|hex(?:\([0-9a-fA-F]\))?)(:)([0-9a-fA-F,]+).+rj   c                 ,    |                      d          S )NzWindows Registry Editor)ra   re   s    rE   rF   zRegeditLexer.analyse_text   s    8999rG   N)rH   rI   rJ   rK   rL   rP   rM   rN   rO   rQ   r   r   r   rR   r   r   r   r   BuiltinrS   Variabler   r   r   r   rT   rF   rU   rG   rE   r   r      s)         D
DClG	I*+IM *40Z '.Xgxw??A :Xdnj(JGG )Xdnj(JGG
  8V$AXdm[&996C FF#GFOO
! F4: : : : :rG   r   c            	          e Zd ZdZdZddgZdgZdgZdZdZ	d	e
j        fd
efdef ed          gdej        f ed          d eeee          dfdedfd
edfgdef ed          d
edfgd eej        e          fdej        fgdZdS )r   z
    Lexer for configuration files in Java's properties format.

    Note: trailing whitespace counts as part of the value as per spec
    
Properties
propertiesjpropertiesz*.propertiesztext/x-java-propertiesz)https://en.wikipedia.org/wiki/.propertiesz1.4z[!#].*|/{2}.*\nz	^[^\S\n]+keyz
[^\\:=\s]+escapesz([^\S\n]*)([:=])([^\S\n]*))r9   r8   [^\S\n]+r9   z[^\\\n]+z(\\\n)([^\S\n]*)z\\(.|\n))r;   rz   r8   r{   N)rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   r   rR   r   r   r   rS   r   r   r   r   EscaperT   rU   rG   rE   r   r      s         D]+G I)*I
5CM
 w~.J:&GENN	
 DN+GI +Xj(J77  *&78J'
  &!GIJ'
 !((6=*"E"EF&-(	
C' 'FFFrG   r   c                 ^    d}|dk    rd}nd|dz
  z  }| dk    rd}nd|  d}d	| d
| d| dS )N      +z{1,%d}r@   r4   {}z(?:\t| z\t| {z})z.*\nrU   )level	tab_widthspace_repeatlevel_repeats       rE   
_rx_indentr      sg     I A~~9q=1zz%E~~~JlJJ)JJJJJJrG   c                      e Zd ZdZdZg dZdZg dZdgZdZ	dZ
d	 Zd
 Zdefdej        f edd          efdedfdej        fdefdefdej        fdej        fdej        fdefgdef ed           ed           ed           ed           ed           ed           ed            ed!          g	 ed           ed           ed           ed           ed           ed           ed           d"	Zd#S )$r   z(
    For Linux-style Kconfig files.
    Kconfig)kconfig
menuconfigzlinux-configzkernel-configro   )zKconfig*z*Config.in*zexternal.in*zstandard-modules.inztext/x-kconfigzChttps://www.kernel.org/doc/html/latest/kbuild/kconfig-language.htmlr   c                 @    t          |           t          j        d|  fS )Nindent)r   r   Docr   s    rE   call_indentzKconfigLexer.call_indent#  s"    5!!6:/?/?/?@@rG   c                 f    t          |           t          j        fdt          ft	          d          gS )N\s*\n#pop:2)r   r   r   r   r   r   s    rE   	do_indentzKconfigLexer.do_indent'  s3     
+tH
 	
rG   r5   #.*?\n)mainmenuconfigr   choice	endchoicecommentmenuendmenuz
visible ififendifsourcepromptselectz
depends onr   rangeoption\bsuffixz(---help---|help)[\t ]*\nhelpz;(bool|tristate|string|hex|int|defconfig_list|modules|env)\bz[!=&|]z[()][0-9]+z'(''|[^'])*'z"(""|[^"])*"\S+r               r>   r   r@   r9   )	r;   r   indent7indent6indent5indent4indent3indent2indent1N)rH   rI   rJ   rK   rL   rM   rQ   rN   rO   rP   flagsr   r   r   r   rR   r   r   r   rs   r   r   r   Integerr   Doubler   r   rT   rU   rG   rE   r   r     s         DHHHGM( ( (I!"I
OC EA A A
 
 
 Z 'U # ,1	2 2 2
  *7F;K\!k"'fm,fm,TN#
. t KNNKNNKNNKNNKNNKNNKNNGFOO
  9Q<<9Q<<9Q<<9Q<<9Q<<9Q<<9Q<<Y- -FFFrG   r   c                   x   e Zd ZdZdZdZddgZdgZg ZdZ	de
fd	 eeeeee          fd
 eeeeeej        e          dfd eeeeeej                  fd eeej        eeej        eee          fd eej        eee          fdedfd eej        e          fd eej        e          fd eej        e          fdej        fdefdefdefdej        fdej        fdej        fdefgdej        dfdej        fdedfd efd!efgdej        d"fd#ej        dfd$ej        fgd%edfd&efdej        fdefgd'Zd(S ))r   z+
    Lexer for CFEngine3 policy files.
    	CFEngine3zhttp://cfengine.org	cfengine3cf3z*.cfz1.5r   z(body)(\s+)(\S+)(\s+)(control)z%(body|bundle)(\s+)(\S+)(\s+)(\w+)(\()arglistz!(body|bundle)(\s+)(\S+)(\s+)(\w+)z7(")([^"]+)(")(\s+)(string|slist|int|real)(\s*)(=>)(\s*)z(\S+)(\s*)(=>)(\s*)"stringz	(\w+)(\()z([\w.!&|()]+)(::)z(\w+)(:)z@[{(][^)}]+[})]z[(){},;]z=>z->z\d+\.\d+\d+\w+r5   z\$[{(]interpol\\.r9   ry   .#pushz[})]z	[^${()}]+z\),)r;   r   r   r   N)rH   rI   rJ   rK   rL   rP   rM   rN   rO   rQ   r   r   r   r   r   Functionr   rt   Typer   Reservedr   r   ClassDeclarationr   Floatr   Interpolr}   rT   rU   rG   rE   r   r   `  s-         D
CE"GIIM  .Xgz7JHHJ5Xgz7J{[[ 2Xgz7JNNPGXk4=+ ',
HjR RS $Xg&
HdCCE68$88DM;??@!88DJ#D#DE((7#6DDE/+&HH&,'V^$T]#Z 3
8 4V]#66"FO6N
 1fov.6?+
 K(;T]#Z 	
Q. .FFFrG   r   c                   2   e Zd ZdZdZg dZg dZdgZdZdZ	e
j        e
j        z  Zdefd	efd
 eej        eeej                  fd eej        ej                  fdej        dfdefgdefdedfdefdefdefdefdej        fdefdej        fdefg
dZdS )r    zT
    Lexer for configuration files following the Apache config file
    format.
    
ApacheConf)
apacheconfaconfapache)z	.htaccesszapache.confzapache2.confztext/x-apacheconfz6https://httpd.apache.org/docs/current/configuring.htmlz0.6r5   z#(.*\\\n)+.*$|(#.*?)$z"(<[^\s>/][^\s>]*)(?:(\s+)(.*))?(>)z(</[^\s>]+)(>)z[a-z]\w*r8   z\.+z\\\nz\n+r9   z\\r|   \d+\.\d+\.\d+\.\d+(?:/\d+)?r   z/([*a-z0-9][*\w./-]+)z(on|off|none|any|all|double|email|dns|min|minimal|os|productonly|full|emerg|alert|crit|error|warn|notice|info|debug|registry|script|inetd|standalone|user|group)\bz"([^"\\]*(?:\\(.|\n)[^"\\]*)*)"z	[^\s"\\]+rj   N)rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rb   rd   
IGNORECASEr   r   r   r   r   Tagr   rs   r   r   Otherr   r   rT   rU   rG   rE   r    r      s)        
 D///G<<<I$%I
BCML2=(E Z %w/2Xdh
FDH==?Xdh))+$,0TN	
 dOZ(DM*%+V4V%v|4  '( 0?4 
 FFFrG   r    c                      e Zd ZdZdZdZg dZdgZdgZdZ	e
j        ZdZd	Zd
ZdZdZdZdZde de dZdZde de dZde de dZe de dZdefdedf eedd          ef eedd          ej        f eedd          ef eedd          ef eedd           ef eedd          efee j!        fd!e fd"e"fgd#ej#        d$fd%ed$f e$d$          gd&Z%d'S )(r!   z.
    Lexer for squid configuration files.
    	SquidConfzhttp://www.squid-cache.org/)	squidconf
squid.confsquidr   ztext/x-squidconfz0.9)
access_logaclalways_directannounce_hostannounce_periodannounce_portannounce_toanonymize_headersappend_domainas_whois_serverauth_param_basicauthenticate_childrenauthenticate_programauthenticate_ttlbroken_postsbuffered_logscache_access_logcache_announce	cache_dircache_dns_programcache_effective_groupcache_effective_user
cache_hostcache_host_aclcache_host_domain	cache_log	cache_memcache_mem_highcache_mem_low	cache_mgrcachemgr_passwd
cache_peercache_peer_accesscache_replacement_policycache_stoplistcache_stoplist_patterncache_store_log
cache_swapcache_swap_highcache_swap_logcache_swap_low	client_dbclient_lifetimeclient_netmaskconnect_timeoutcoredump_dirdead_peer_timeoutdebug_optionsdelay_accessdelay_classdelay_initial_bucket_leveldelay_parametersdelay_pools	deny_infodns_childrendns_defnamesdns_nameserversdns_testnamesemulate_httpd_logerr_html_textfake_user_agentfirewall_ipforwarded_forforward_snmpd_portfqdncache_sizeftpget_optionsftpget_programftp_list_widthftp_passiveftp_userhalf_closed_clientsheader_accessheader_replacehierarchy_stoplisthigh_response_time_warninghigh_page_fault_warning
hosts_file	htcp_porthttp_accesshttp_anonymizerhttpd_accelhttpd_accel_hosthttpd_accel_porthttpd_accel_uses_host_headerhttpd_accel_with_proxy	http_porthttp_reply_access
icp_accessicp_hit_staleicp_porticp_query_timeoutident_lookupident_lookup_accessident_timeoutincoming_http_averageincoming_icp_averageinside_firewallipcache_highipcache_lowipcache_sizelocal_domainlocal_iplogfile_rotatelog_fqdnlog_icp_querieslog_mime_hdrsmaximum_object_sizemaximum_single_addr_triesmcast_groupsmcast_icp_query_timeoutmcast_miss_addrmcast_miss_encode_keymcast_miss_portmemory_poolsmemory_pools_limitmemory_replacement_policy
mime_tablemin_http_poll_cntmin_icp_poll_cntminimum_direct_hopsminimum_object_sizeminimum_retry_timeoutmiss_accessnegative_dns_ttlnegative_ttlneighbor_timeoutneighbor_type_domain
netdb_high	netdb_lownetdb_ping_periodnetdb_ping_ratenever_directno_cachepassthrough_proxypconn_timeoutpid_filenamepinger_programpositive_dns_ttlprefer_direct
proxy_authproxy_auth_realm
query_icmpquick_abortquick_abort_maxquick_abort_minquick_abort_pctrange_offset_limitread_timeoutredirect_childrenredirect_programredirect_rewrites_host_headerreference_agerefresh_patternreload_into_imsrequest_body_max_sizerequest_sizerequest_timeoutshutdown_lifetimesingle_parent_bypasssiteselect_timeoutsnmp_accesssnmp_incoming_address	snmp_portsource_ping	ssl_proxystore_avg_object_sizestore_objects_per_bucketstrip_query_termsswap_level1_dirsswap_level2_dirstcp_incoming_addresstcp_outgoing_addresstcp_recv_bufsizetest_reachabilityudp_hit_objudp_hit_obj_sizeudp_incoming_addressudp_outgoing_addressunique_hostnameunlinkd_programuri_whitespaceuseragent_logvisible_hostname
wais_relaywais_relay_hostwais_relay_port)z
proxy-onlyweightttlzno-queryr   zround-robinzmulticast-responderonoffalldenyallowviaparentz	no-digestheaplrurealmchildrenq1q2credentialsttlnonedisableoffline_togglediskd)shutdowninfo	parameterserver_listclient_listr   )objects
vm_objectsutilizationipcache	fqdncachedns
redirectorioreply_headersfiledescriptorsnetdb)statusenabler  clear)	url_regexurlpath_regexreferer_regexportprotoreq_mime_typerep_mime_typemethodbrowserusersrcdsttime	dstdomainidentsnmp_communityz(\d+|0x[0-9a-f]+)(z(\.z){3})z([0-9a-f]{0,4})z(:z){1,7})|)z(/(z|\d+))?r5   #r   r   prefixr   zstats/zlog/=z(?:\b\d+\b(?:-\b\d+|%)?)r   z	\s*TAG:.*r9   rq   )r;   r   N)&rH   rI   rJ   rK   rL   rP   rM   rN   rO   rQ   rb   r   r   keywordsoptsactionsactions_statsactions_logacls
ipv4_groupipv4
ipv6_groupipv6bare_ipipr   r   r   r   r   Constantr   r   r   r   r}   r   rT   rU   rG   rE   r!   r!     s         D
'C222GI#$IMME9HvDG
M
 ;KD &J2
22z222D#J3
33j333D!4!!$!!!G 	)	)	)	)	)B Z 7I&U8E%888'BU4e444dmDU75777@U=5AAA6JU;wt<<<fEU4e444g>(&1TN
 6=&1GV$GFOO
 FFFrG   r!   c                   x   e Zd ZdZdZdZdgZdgZdgZdZ	d e
eee          fd	ed
f ed          gdedfd	ej        d
f ed          gdedfdedf ed          gdej        fdej        fdej        fd e
eeej                  fdefdej        fd e
eeej                  fdefdefdefdefdefgdZdS ) r"   z.
    Lexer for Nginx configuration files.
    zNginx configuration filezhttp://nginx.net/nginxz
nginx.confztext/x-nginx-conf0.11z(include)(\s+)([^\s;]+)z[^\s;#]+stmtbase\}r   \{block;r9   #.*\nzon|offz\$[^\s;#()]+z([a-z0-9.-]+)(:)([0-9]+)z[a-z-]+/[a-z-+]+z[0-9]+[km]?\bz(~)(\s*)([^\s{]+)z[:=~]z[^\s;#{}$]+z	/[^\s;#]*r5   z[$;])r;   r  r  r  N)rH   rI   rJ   rK   rL   rP   rM   rN   rO   rQ   r   r   r   r   r   r   rf   r   rR   r  rt   r   r   r   Regexr   rT   rU   rG   rE   r"   r"   I  s]         &D
CiGI$%IM (':t)L)LM'6*GFOO
 K*'+V4GFOO
 K);'GFOO
 w~&&dm,(XdK88: &)v~.!88KV\#R#RS{#V$4 Z dO
!   FFFrG   r"   c                       e Zd ZdZdZdZddgZdgZdgZdZ	d	d
e
j        fdefdefdefdefdefdej        fdefdej        fdefg
iZdS )r#   z1
    Lexer for Lighttpd configuration files.
    zLighttpd configuration filezhttp://lighttpd.net/lighttpdlightyzlighttpd.confztext/x-lighttpd-confr  r;   r  z/\S*z[a-zA-Z._-]+r   r   z=>|=~|\+=|==|=|\+z\$[A-Z]+z[(){}\[\],]z"([^"\\]*(?:\\.[^"\\]*)*)"r5   N)rH   rI   rJ   rK   rL   rP   rM   rN   rO   rQ   r   rR   r   r   r   r   rs   r   r   r   r   rT   rU   rG   rE   r#   r#   w  s          )D
 C8$G !I'(IM 	w~&dOg&+V4!8,$,'[)*FM:Z 
FFFrG   r#   c                      e Zd ZdZdZdZddgZddgZdgZd	Z	d
Z
dZdZej        ej        z  Zddefd eeeeeeee          fde d eee ee                    fde de d eee ee                    fde d eee ee           ee                    fde de d eee ee                    fde
 d eeee          fde d eee          fd ee          fg	iZdS )r$   z/
    Lexer for Docker configuration files.
    Dockerzhttp://docker.iodocker
dockerfile
Dockerfilez*.dockerztext/x-dockerfile-configz2.0z-(?:MAINTAINER|EXPOSE|WORKDIR|USER|STOPSIGNAL)z-(?:RUN|CMD|ENTRYPOINT|ENV|ARG|LABEL|ADD|COPY)z(?:\s*\\?\s*)r;   #.*z1(FROM)([ \t]*)(\S*)([ \t]*)(?:(AS)([ \t]*)(\S*))?z(ONBUILD)(\s+)(r  z(HEALTHCHECK)(\s+)((z	--\w+=\w+z)*)z#(VOLUME|ENTRYPOINT|CMD|SHELL)(\s+)(z
)(\[.*?\])z(LABEL|ENV|ARG)(\s+)((z\w+=\w+r  z|VOLUME)\b(\s+)(.*)z)(\s+)z(.*\\\n)*.+N)rH   rI   rJ   rK   rL   rP   rM   rN   rO   rQ   	_keywords_bash_keywords_lbrb   r   rd   r   r   r   r   r   r   r	   r   r   rT   rU   rG   rE   r$   r$     s         D
C&Gz*I+,IMAIFN
CMBL(E 	WAXgz6:w
TZ[[]&&&&*eeIFVFV(W(WX;S;;3;;;*eeI.>.>??ACCCCC*eeI.>.>i@P@PQQS;s;;3;;;*eeI.>.>??A0)000((7JPV2W2WX(.(((((7J*G*GHUU9--.
FFFrG   r$   c                   (   e Zd ZdZdZdZg dZddgZddgZd	Z	d
Z
d                    d                    e
                    ZdZdZdZdZdZdZdZdZdZdZeez   ez   ez   ez   ez   ez   ez   ez   Zd                    d                    e                    Zd Z ed           ed          d eej                  f eddd          e j!        f eedd          e"j#        f ed           ed          d e$fgd!e%j&        d"fd#e%j'        f ed          d$ ee(e j)        e(e*e(e+          fd% ee(e j,        e(e*e(          fd& ee(e-j        j        e(e*e(          fed'z    ee j.        e+          fd( ee+e j)        e+          fed)z    ee"j/        e(e j0        e(e j1        e(e+          fd*efg
d+ ee j1                  fd, ee j1                  fgd-e+fgd.e%j&        fd/e%j&        d0fd1e%j&        d2fd3e%j&        fgd4e(fd5e(fd6 ee2e(          fgd7Z3d8S )9r%   z-
    Lexer for terraformi ``.tf`` files.
    	Terraformzhttps://www.terraform.io/)	terraformtfhclz*.tfz*.hclzapplication/x-tfzapplication/x-terraform2.1)backenddatamoduleoutputproviderprovisionerresourcevariablez({})r  )	r   numberboollisttuplemapsetobjectnull)	absceilfloorlogmaxmixparseintpowsignum)chompformat
formatlistr   joinlowerregexregexallreplacesplitstrrevsubstrtitletrim
trimprefix
trimsuffix	trimspaceupper)alltrueanytrue	chunklistcoalescecoalescelistcompactconcatcontainsdistinctelementflattenindexkeyslengthr  lookupr
  	matchkeysmerger   reversesetintersection
setproductsetsubtractsetunionslicesortsum	transposevalueszipmap)base64decodebase64encode
base64gzip	csvdecode
jsondecode
jsonencodetextdecodebase64textencodebase64	urlencode
yamldecode
yamlencode)	abspathdirname
pathexpandbasenamefile
fileexistsfileset
filebase64templatefile)
formatdatetimeadd	timestamp)base64sha256base64sha512bcryptfilebase64sha256filebase64sha512filemd5filesha1
filesha256
filesha512md5
rsadecryptsha1sha256sha512uuiduuidv5)cidrhostcidrnetmask
cidrsubnetcidrsubnets)	candefaultstobooltolisttomaptonumbertosettostringtryc              #     K   |                     d          }|t          |                    d          fV  |                     d          t          j        |                    d          fV  |                     d          |_        |                    d          |_        |j        t          j        |                    d          fV  |                                |_        |                    d          }d}g }t          j	        |j
        |j                  D ]}|r'|                                                                }n&|                                                                }||k    r|D ]7}|                                 t          j        |                                fV  8|                                 t          j        |                                fV  |                                |_         nK|                    |           |D ]2}|                                 t          |                                fV  3t          |j
                  |_        d S )Nr@   r   r>   T)startr   groupr   	DelimiterposendHeredocr
   finditerrC   striprstripappendr   len)	selfmatchctxry  hdnametolerantlinescheckamatchs	            rE   heredoc_callbackzTerraformLexer.heredoc_callback  s       AXu{{1~~----kk!nnf.A>>>>++a..))A,,gv~u{{1~~5555))++Q%ch88 	< 	<E /++--,,..# I IF ,,..&.&,,..HHHHHkkmmV%5u{{}}DDDD))++U####   < <llnneV\\^^;;;;;ch--rG   basic
whitespacez(".*"))truefalser   r  
identifierpunctuationr   z\s*/\*r   z\s*(#|//).*\nz'(\s*)([0-9a-zA-Z-_]+)(\s*)(=?)(\s*)(\{)z"(\s*)([0-9a-zA-Z-_]+)(\s*)(=)(\s*)z(\s*)("\S+")(\s*)([=:])(\s*)z(\()z(\[)([a-z_,\s]+)(\])z8(\s+)("[0-9a-zA-Z-_]+")?(\s*)("[0-9a-zA-Z-_]+")(\s+)(\{)z(<<-?)\s*([a-zA-Z_]\w*)(.*?\n)z\b(var\.[0-9a-zA-Z-_\.\[\]]+)\bz.\b([0-9a-zA-Z-_\[\]]+\.[0-9a-zA-Z-_\.\[\]]+)\bz[\[\]()\{\},.?:!=]z[^*/]z/\*r   z\*/r9   z[*/]ry   r5   (\\)(\n))r;   r  r  r  r   r  N)4rH   rI   rJ   rK   rL   rP   rM   rN   rO   rQ   classesr  r  
classes_retypesnumeric_functionsstring_functionscollection_functionsencoding_functionsfilesystem_functionsdate_time_functionshash_crypto_functionsip_network_functionstype_conversion_functionsbuiltinsbuiltins_rer  r   r   r   r   r   r   r  r   r   r   r   	MultilinerR   r   rs   r   r   rS   r   r   r   r   rt   r   rT   rU   rG   rE   r%   r%     s         D
%C(((G!I#%>?IM6Gzz'2233JYE=W[ A` T!I !#336JJM__235JKMab!"H --

8 4 455K#  #  # N GGGL!! //0 U$U5AAA4=Q U5u555w|DGL!!GM""
$ )95w~.GL!! 8Xj$,
HjR]^^` 3Xj$.*h
SSU
 -Xj'."7XzZZ\ 7"HHT]K$H$HI %hh{DL+&V&VW UUXg&
DJ
DM[egrssu /0@A? 
D 0$-1H1HI>Xdm$$&
 #K0
 w()W&0W&/g'(	
 JZ ((4445
CF FFFFrG   r%   c            	           e Zd ZdZdZdgZddgZg ZdZdZ	de
fdej        d	fd
efgdedfdedfdefdej        fgd eee          fdedfd eee          fdedfdefdej        fgdefdedfdefdefgdZdS )r&   zR
    Lexer for termcap database source.

    This is very simple and minimal.
    Termcaptermcapztermcap.srcz%https://en.wikipedia.org/wiki/Termcapr  ^#.*z
^[^\s#:|]+namesr5   ry   r9   :defs\|z[^:|]+z(\\)(\n[ \t]*)z\n[ \t]*r   (#)([0-9]+)r  r  z	[^\s:=#]+z\\072z[^:\\]+r   r;   r  r  r  N)rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   r   r   r   r   r   rS   r   r   r   r   r   r   rT   rU   rG   rE   r&   r&   _  s        
 DkGM*II
1CM gDHg.Z 
 J';'K '	
 z : :;*h/XXh7788V$;4:&
 w;'!7O	
) FFFrG   r&   c                      e Zd ZdZdZdgZddgZg ZdZdZ	de
fdej        d	fd
efgdedfd eee          dfdefdej        fgdefdedfd eee          fdedfd eee          fdej        fgdefd eee          dfdefdefgdZdS )r'   zS
    Lexer for terminfo database source.

    This is very simple and minimal.
    Terminfoterminfozterminfo.srcz&https://en.wikipedia.org/wiki/Terminfor  z^#.*$z
^[^\s#,|]+r  r5   ry   r9   z(,)([ \t]*)r  r  z[^,|]+z\n[ \t]+r   r  r  r  z	[^\s,=#]+z\\[,\\]z[^\\,]+r   r  N)rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   r   r   r   r   r   r   rS   r   r   r   r   rT   rU   rG   rE   r'   r'     s0        
 DlG^,II
2CM wDHg.Z 
 J'XXk:>>GK '	
 *%J)XXh7788V$XXk:>>?4:&
 !XXk:>>G!7O	
) FFFrG   r'   c            
       6   e Zd ZdZdZdZdgZdgZg ZdZ	de
j        fd eej        e          fd	 eej        e          d
f ed          defdefdefgdefdej        dfgdej        dfdej        fg ed          de
j        dfdedfdefdefdefgdZdS )r(   ze
    Lexer for pkg-config
    (see also `manual page <http://linux.die.net/man/1/pkg-config>`_).
    	PkgConfigz4http://www.freedesktop.org/wiki/Software/pkg-config/	pkgconfigz*.pcr  #.*$z	^(\w+)(=)z^([\w.]+)(:)spvalueinterpr5   z[^${}#=:\n.]+r   z\$\$z\$\{curlyr  r9   r   ry   z[^${}#\n\s]+)r;   r  r  r  N)rH   rI   rJ   rK   rL   rP   rM   rN   rO   rQ   r   rR   r   r   rS   r   r   r   r   r   r   r   r   rT   rU   rG   rE   r(   r(     s2        
 D
@CmGIIM gn% 88DNH==> Xdh,,i9 GH Z t$4L!
( dO fow/
 FOV,T^$

 GHgnf-J' Z d#4L

=) )FFFrG   r(   c            
           e Zd ZdZdZdZdgZdgZg ZdZ	dde
j        fd	 eeee          fd
 eej        ee          fd eeej        e          f edd          ej        fdefdefgiZdS )r)   a@  
    Lexer for pacman.conf.

    Actually, IniLexer works almost fine for this format,
    but it yield error token. It is because pacman.conf has
    a form without assignment like:

        UseSyslog
        Color
        TotalDownload
        CheckSpace
        VerbosePkgLists

    These are flags to switch on.
    
PacmanConfz3https://www.archlinux.org/pacman/pacman.conf.5.html
pacmanconfzpacman.confr  r;   r  z^(\s*)(\[.*?\])(\s*)$z(\w+)(\s*)(=)z^(\s*)(\w+)(\s*)$)z$repoz$archz%oz%ur   r   r5   r   N)rH   rI   rJ   rK   rL   rP   rM   rN   rO   rQ   r   rR   r   r   r   r   rS   r   r   rt   r   rT   rU   rG   rE   r)   r)     s           D
?CnGIIM 	gn% &xx
GZ'P'PQ Xdnj(;;= "Xj$.*==? U 
  ! ! ! ] Z 4L7
FFFrG   r)   c                       e Zd ZdZdZdZdgZdgZdZd e	e
j        eej                  fd e	e
j        eej                  fd	 e	ej        e          fd
 e	eej        ee
j        e          fdej        dfdefdefdej        dfdej        dfd e	ej        eej                  fdej        fdefgdej        fdej        fdej        dfgdej        fdej        fdej        dfgdej        fdej        dfdej        dfdej        fgdZdS ) r*   z
    Lexer for Augeas.
    Augeaszhttp://augeas.netaugeasz*.aug2.4z(module)(\s*)([^\s=]+)z(let)(\s*)([^\s=]+)zV(del|store|value|counter|seq|key|label|autoload|incl|excl|transform|test|get|put)(\s+)z8(\()([^:]+)(\:)(unit|string|regexp|lens|tree|filter)(\))z\(\*r   z[*+\-.;=?|]z
[()\[\]{}]r   r   z\/r  z([A-Z]\w*)(\.)(\w+)r   r5   r   z[^"]r9   z[^/]z[^*)]r   z\*\)z[)*])r;   r   r  r   N)rH   rI   rJ   rK   rL   rP   rM   rN   rQ   r   r   rf   r   r   r   rt   rs   r   r   r   r  r   r   r   r  r}   rT   rU   rG   rE   r*   r*   /  s         D
CjG	IM '1BJPTP^(_(_`#XXg.A:t}%]%]^fhphpquq}  @J  iK  iK  LH((S^`d`moz  }D  }I  KV  KW  KW  Xg'3X&H%6=(+FL'*#XXdnk4=%Y%YZ4=!Z 
 V]#fm$6=&)
 V]#fl#FL&)
 w()g'1g'0g'(	
3 FFFrG   r*   c                      e Zd ZdZdZdgZg dZdgZdZdZ	dZ
d	e
 d
Zdefdej        f ed          d eee          dfdedfgdefdej        dfdej        dfdefgdefdej        dfdej        dfdefdedfdefgeej        dfe
ej        dfdej        dfdej        dfdej        dfdej        dfdej        dfd ej        dfd!ej        dfd"ej        d#fdej        d$fd%ej        d&fdej        d'fd(ej        dfd)ed*fd+ed,fgdefdej        fd-efd.edf e d          gdef ed          d eee          dfd-efd/edfgdej        df ed0          d1ej        fgd2ej        dfgd"ej        dfd3 eej!        e          f ed0          d1ej        fdej        fgd%ej        dfd4ej        fdej        fgd5ej!        fd6ej!        fgd7Z"d8S )9r+   z=
    Lexer for TOML, a simple language for config files.
    TOMLtoml)z*.tomlPipfilezpoetry.lockzapplication/tomlzhttps://toml.ior  z\d\d:\d\d:\d\d(\.\d+)?zm(?x)
                  \d\d\d\d-\d\d-\d\d # date, e.g., 1988-10-27
                (
                  [Tt ] z # optional time
                  (
                    [Zz]|[+-]\d\d:\d\d # optional time offset
                  )?
                )?
              r5   r  rz   z(=)(\s*)r8   z\[\[?	table-keyz[A-Za-z0-9_-]+r   basic-string'literal-stringz\.z\]\]?r9   [ \t]+z [+-]?\d[0-9_]*[eE][+-]?\d[0-9_]*z.[+-]?\d[0-9_]*\.\d[0-9_]*([eE][+-]?\d[0-9_]*)?z[+-]?(inf|nan)z
-?0b[01_]+z-?0o[0-7_]+z-?0x[0-9a-fA-F_]+z[+-]?[0-9_]+z""")r9   multiline-basic-string)r9   r  z''')r9   multiline-literal-string)r9   r  z
true|false\[)r9   arrayr  )r9   inline-tabler   \]r  r{   z[^"\\]+z.*?'r  z[^']+z#\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}r   )r;   rz   r  r8   r  r  r  r  r  r  r{   N)#rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   _time	_datetimer   r   rR   r   r   r   r   r   r   r   r   r   Dater   r   BinOctHexr   r  r   r}   rT   rU   rG   rE   r+   r+   [  sb         DhG444I#$I
CM
 &E   I* Z  W^$ GENN ((8Z88'B w,-
4 %6=.16="23K 
 (6=.16="23Gw' 
#
" f-GL&) 1&,G>\6# f5 FJ/VZ0!6:v6fnf5 V]$FG6=":;V]$HI6="<= G,f5 K!23 K!9:C"
L Z W^$ ; K( GG
$ 
# GENN ((;
;;WE ; K(
$ 6=&)GI'
 fmV,
 V]F+((6=*==>GI'6=!#
 V]F+v}%6=!%
 4V]CV]#
QL LFFFrG   r+   c                      e Zd ZdZdZdZddgZdgZdZd e	e
e          fd	 e	e
e          d
fd e	e
e          dfd e	e
e          fd e	e
ee
ee
          fd e	e
e          fd e	e
ee
ee
          fd e	e
e          fd e	e
ee
ej        e
          fd e	e
ej        e          fd e	e
ej        ee
ee
          fg ed          def ed          defdedfdedfg ed          dej        fdedfdedfdedfg ed          def ed          dedfded fg ed          d!ed
fd"edfgd#e
fgd$Zd%S )&r,   z
    Lexer for *NextedText*, a human-friendly data format.

    .. versionchanged:: 2.16
        Added support for *NextedText* v3.0.
    
NestedTextzhttps://nestedtext.org
nestedtextntz*.ntz2.9z^([ ]*)(#.*)$z^([ ]*)(\{)inline_dictz^([ ]*)(\[)inline_listz^([ ]*)(>)$z^([ ]*)(>)( )(.*?)([ \t]*)$z^([ ]*)(-)$z^([ ]*)(-)( )(.*?)([ \t]*)$z^([ ]*)(:)$z^([ ]*)(:)( )([^\n]*?)([ \t]*)$z^([ ]*)([^\{\[\s].*?)(:)$z)^([ ]*)([^\{\[\s].*?)(:)( )(.*?)([ \t]*)$r  z[^\{\}\[\],\s]+inline_valuer   r  r9   ry   z[^\{\}\[\],:\s]+r  inline_dict_valuer  r   r  r  r  )r;   r  r  r  r  r  N)rH   rI   rJ   rK   rL   rP   rM   rN   rQ   r   r   r   r   r   r   r   r   r   rT   rU   rG   rE   r,   r,     sy         D
"CT"GIM
 xx
G<<= XXj+>>N XXj+>>N XXj+>>? ,XXj+z[_ak-l-lm XXj+>>? ,XXj+z[_ak-l-lm XXj+>>? 0*kS]_c_gis1t1tu *88J++V+VW :88JPTPXZegqsw  zD  <E  <E  FA!
F GL!!&GN##;K(E6"
 GL!! $(+; 34K(E6"
 GL!! $'GN##;'K*
 GL!!K/K/
 
#
}A AFFFrG   r,   c                      e Zd ZdZdZdZdgZddgZdZe	j
        e	j        z  e	j        z  ZdZdZd	Ze eej        e          d
fe eej        e          d
fe eeee          fdefdefdefdefgd ee          dfgdZd ZdS )r-   z1
    Lexer for Singularity definition files.
    SingularityzAhttps://www.sylabs.io/guides/3.0/user-guide/definition_files.htmlsingularityz*.defz2.6zS^(\s*)(bootstrap|from|osversion|mirrorurl|include|registry|namespace|includecmd)(:)zT^(%(?:pre|post|setup|environment|help|labels|test|runscript|files|startscript))(\s*)z6^(%app(?:install|help|run|labels|env|test|files))(\s*)scriptz	\s*#.*?\nz"\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))\br  z
(?!^\s*%).z(.+?(?=^\s*%))|(.*)r9   )r;   r  c                     d}t          j        d| t           j                  r|dz  }t          j        t          j        dd         |           r|dz  }|S )zlThis is a quite simple script file, but there are a few keywords
        which seem unique to this language.r   z&\b(?:osversion|includecmd|mirrorurl)\bg      ?r@   Ng\(\?)rb   rc   r   r-   _section)rC   results     rE   rF   zSingularityLexer.analyse_textt  sZ     9>bmTT 	cMF9%.qrr2D99 	dNFrG   N)rH   rI   rJ   rK   rL   rP   rM   rN   rQ   rb   r   rd   DOTALLr   _headersr  _appsectr   r   Headingr   r   r   r   r   r	   r   rT   rF   rU   rG   rE   r-   r-   U  s         D
MCoG-(IMMBL(294EeHfHHH xx<<hGxx<<hGxx
GT::;7#2F;
#D!
 $UU9%5%5v>
 F
 
 
 
 
rG   r-   c                   V    e Zd ZdZdZddgZg ZdZdZdde	fd	e
fd
efdefdefdefgiZdS )r.   z
    Lexer for Unix/Linux config files using colon-separated values, e.g.

    * ``/etc/group``
    * ``/etc/passwd``
    * ``/etc/shadow``
    zUnix/Linux config files
unixconfiglinuxconfigzUhttps://en.wikipedia.org/wiki/Configuration_file#Unix_and_Unix-like_operating_systemsz2.12r;   r  ry   r  r   z"((?!\n)[a-zA-Z0-9\_\-\s\(\),]){2,}z[^:\n]+N)rH   rI   rJ   rK   rL   rM   rN   rP   rQ   r   r   r   r   r   r   rT   rU   rG   rE   r.   r.     sy          %D]+GI
aCM 	gJ;2D9 
	FFFrG   r.   )4rK   rb   pygments.lexerr   r   r   r   r   r   r	   r
   pygments.tokenr   r   r   r   r   r   r   r   r   r   r   r   pygments.lexers.shellr   pygments.lexers.datar   __all__r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   rU   rG   rE   <module>r     s6    
			& & & & & & & & & & & & & & & & & & & &= = = = = = = = = = = = = = = = = = = = = = = = = = = = + + + + + + * * * * * *E E E3 3 3 3 3z 3 3 3l    :   <) ) ) ) ): ) ) )X': ': ': ': ':: ': ': ':T5 5 5 5 5j 5 5 5pK K K(K K K K K: K K K\: : : : :Z : : :z( ( ( ( (j ( ( (V~ ~ ~ ~ ~Z ~ ~ ~B+ + + + +Z + + +\    
   8         *      Ff f f f f' f f fR, , , , ,: , , ,^, , , , ,J , , ,^6 6 6 6 6Z 6 6 6r6 6 6 6 6j 6 6 6r) ) ) ) )* ) ) )Xf f f f f
 f f fPO O O O Oj O O Od) ) ) ) )z ) ) )X    j     rG   