
    |e                     z   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      Z3y)5z
    pygments.lexers.configs
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for configuration file formats.

    :copyright: Copyright 2006-2023 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                      e Zd ZdZdZg dZg dZddgZdefde	j                  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      fdej                  fgdefd eeeee      fdedfgdZd Zy)r   z5
    Lexer for configuration files in INI style.
    INI)inicfgdosini)z*.iniz*.cfgz*.infz.editorconfigz
text/x-iniztext/inf\s+[;#].*z(\[.*?\])([ \t]*)$u0   (.*?)([  \t]*)([=:])([ \t]*)([^;#\n]*)(\\)(\s+)valueu8   (.*?)([ \t]*)([=:])([  \t]*)([^ ;#\n]*(?: +[^ ;#\n]+)*)z(.+?)$z(\s*)(.*)(\\)([ \t]*)z.*$#poprootr6   c                 Z    | j                  d      }|dk  ry| d   dk(  r| |dz
     dk(  ryy)	N
   Fr   [   ]g?)find)textnposs     9/usr/lib/python3/dist-packages/pygments/lexers/configs.pyanalyse_textzIniLexer.analyse_text>   s9    yy!87c>d46lc1    N)__name__
__module____qualname____doc__namealiases	filenames	mimetypesr   r   Singler   r   r   	Attributer   r   r   tokensrD    rE   rC   r   r      s     D&GI z*I Z '"HWj$AB@dnnj(JJ( Idnnj(JOQ '
 Z %j&$
;=VV$	
F,rE   r   c                       e Zd ZdZdZdZdgZdg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y)r   z?
    Lexer for .desktop files.

    .. versionadded:: 2.16
    zDesktop filezXhttps://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.htmldesktopz	*.desktopr9   	^[ \t]*\nz
^(#.*)(\n)(\[[^\]\n]+\])(\n)zG([-A-Za-z0-9]+)(\[[^\] \t=]+\])?([ \t]*)(=)([ \t]*)([^\n]*)([ \t\n]*\n)c                 z    | j                  d      ryt        j                  d| d d t        j                        yy)Nz[Desktop Entry]      ?z^\[Desktop Entry\][ \t]*$  ?        
startswithresearch	MULTILINErA   s    rC   rD   zDesktopLexer.analyse_text]   s6    ??,-9914:r||LXrE   N)rF   rG   rH   rI   rJ   urlrK   rL   r   r   r   rN   r   r   rO   	Namespacer   r   rP   rD   rQ   rE   rC   r   r   G   s     D
dCkGI 	:&HW^^Z@A"HWj$ABWdnndnnj(JX^`jkm	
FrE   r   c                   4   e Zd ZdZdZdZdgZg 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y)r   zC
    Lexer for systemd unit files.

    .. versionadded:: 2.16
    SystemdzDhttps://www.freedesktop.org/software/systemd/man/systemd.syntax.htmlsystemd)z	*.servicez*.socketz*.devicez*.mountz*.automountz*.swapz*.targetz*.pathz*.timerz*.slicez*.scoperT   z^([;#].*)(\n)rU   z*([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\\)(\n)r6   z&([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\n)z([ \t]*)([^\n]*)(\\)(\n)z([ \t]*)([^\n]*)(\n)r7   r8   c                 z    | j                  d      ryt        j                  d| d d t        j                        yy)Nz[Unit]rW   z^\[Unit\][ \t]*$rX   rY   rZ   r[   r`   s    rC   rD   zSystemdLexer.analyse_text   s5    ??8$99($t*bllCOrE   N)rF   rG   rH   rI   rJ   ra   rK   rL   r   r   r   rN   r   r   rO   r   r   r   rP   rD   rQ   rE   rC   r   r   e   s     D
PCkGI :&x
CD"HWj$AB:dnnj(JJ( 7dnnj(JPZ[]

 x
CD(j&$
;=$j&*5v?
F,rE   r   c                   2   e Zd ZdZdZdZdgZdgZdg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y)r   zZ
    Lexer for Windows Registry files produced by regedit.

    .. versionadded:: 1.6
    regz8http://en.wikipedia.org/wiki/Windows_Registry#.REG_filesregistryz*.regztext/x-windows-registryzWindows Registry Editor.*r4   r5   z(\[)(-?)(HKEY_[A-Z_]+)(.*?\])$z)("(?:\\"|\\\\|[^"])+")([ \t]*)(=)([ \t]*)r6   z(.*?)([ \t]*)(=)([ \t]*)-r7   z1(dword|hex(?:\([0-9a-fA-F]\))?)(:)([0-9a-fA-F,]+).+r8   c                 $    | j                  d      S )NzWindows Registry Editor)r\   r`   s    rC   rD   zRegeditLexer.analyse_text   s    899rE   N)rF   rG   rH   rI   rJ   ra   rK   rL   rM   r   r   r   rN   r   r   r   r   BuiltinrO   Variabler   r   r   r   rP   rD   rQ   rE   rC   r   r      s     D
DClG	I*+I *40Z '.gxw?A :dnnj(JG )dnnj(JG
  8V$Admm[&96C FF#FO
!F4:rE   r   c            	          e Zd ZdZdZddgZdgZdg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y)r   z
    Lexer for configuration files in Java's properties format.

    Note: trailing whitespace counts as part of the value as per spec

    .. versionadded:: 1.4
    
Properties
propertiesjpropertiesz*.propertiesztext/x-java-propertiesz[!#].*|/{2}.*\nz	^[^\S\n]+keyz
[^\\:=\s]+escapesz([^\S\n]*)([:=])([^\S\n]*))r7   r6   [^\S\n]+r7   z[^\\\n]+z(\\\n)([^\S\n]*)z\\(.|\n))r9   rt   r6   ru   N)rF   rG   rH   rI   rJ   rK   rL   rM   r   rN   r   r   r   rO   r   r   r   r   EscaperP   rQ   rE   rC   r   r      s     D]+G I)*I
 w~~.J:&EN	
 DNN+I +j(J7  *&78J'
  &!IJ'
 !(6==*"EF&--(	
C'FrE   r   c                 X    d}|dk(  rd}nd|dz
  z  }| dk(  rd}nd| z  }d|d	|d
|dS )N      +z{1,%d}r>    z{%s}z(?:\t| z\t| {z})z.*\nrQ   )level	tab_widthspace_repeatlevel_repeats       rC   
_rx_indentr      sH     I A~9q=1z~*6	<PPrE   c                      e Zd ZdZdZg dZg dZdg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y!)"r   zC
    For Linux-style Kconfig files.

    .. versionadded:: 1.6
    Kconfig)kconfig
menuconfigzlinux-configzkernel-config)zKconfig*z*Config.in*zexternal.in*zstandard-modules.inztext/x-kconfigr   c                 @    t        |       t        j                  d| z  fS )Nzindent%s)r   r   Docr}   s    rC   call_indentzKconfigLexer.call_indent  s    5!6::zE/ABBrE   c                 \    t        |       t        j                  fdt        ft	        d      gS )N\s*\n#pop:2)r   r   r   r   r   r   s    rC   	do_indentzKconfigLexer.do_indent  s/     

+tH
 	
rE   r4   #.*?\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<   rz   r>   r7   )	r9   r   indent7indent6indent5indent4indent3indent2indent1N)rF   rG   rH   rI   rJ   rK   rL   rM   flagsr   r   r   r   rN   r   r   r   rm   r   r   r   Integerr   Doubler   r   rP   rQ   rE   rC   r   r   	  sC    DHG(I!"IEC
 Z ' # ,1	2
  *7F;K\\!k"'fmm,fmm,TN#
. t NNNNNNNFO
  Q<Q<Q<Q<Q<Q<Q<Y-FrE   r   c                      e Zd ZdZdZdZddgZdgZg 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j2                  fdej4                  fdej                  fdefgdej6                  dfdej8                  fdedfdefd efgdej6                  d!fd"ej6                  dfd#ej6                  fgd$edfd%efdej                   fdefgd&Zy')(r   zF
    Lexer for CFEngine3 policy files.

    .. versionadded:: 1.5
    	CFEngine3zhttp://cfengine.org	cfengine3cf3z*.cfr   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+r4   z\$[{(]interpol\\.r7   rs   .#pushz[})]z	[^${()}]+z\),)r9   r   r   r   N)rF   rG   rH   rI   rJ   ra   rK   rL   rM   r   r   r   r   r   Functionr   rn   Typer   Reservedr   r   ClassDeclarationr   Floatr   Interpolrw   rP   rQ   rE   rC   r   r   V  s    D
CE"GII  .gz7JHJ5gz7J{[ 2gz7JNPGk4==+ ',,
HjRS $g&&
HdCE68$8DMM;?@!8DJJ#DE(7#6#6DE/+&HH&,,'V^^$T]]#Z 3
8 4V]]#66"FO6N
 1foov.6??+
 K(;T]]#Z 	
Q.FrE   r   c                   v   e Zd ZdZdZg dZg dZdg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y)r    zo
    Lexer for configuration files following the Apache config file
    format.

    .. versionadded:: 0.6
    
ApacheConf)
apacheconfaconfapache)z	.htaccesszapache.confzapache2.confztext/x-apacheconfr4   z#(.*\\\n)+.*$|(#.*?)$z"(<[^\s>/][^\s>]*)(?:(\s+)(.*))?(>)z(</[^\s>]+)(>)z[a-z]\w*r6   z\.+z\\\nz\n+r7   z\\rv   \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"\\]+r8   N)rF   rG   rH   rI   rJ   rK   rL   rM   r]   r_   
IGNORECASEr   r   r   r   r   Tagr   rm   r   r   Otherr   r   rP   rQ   rE   rC   r    r      s    D/G<I$%ILL2==(E Z %w/2dhh
FDHH=?dhh)+$,,0TN	
 dOZ(DM*%+V4V%v||4  '( 0?4 
FrE   r    c                      e Zd ZdZdZdZg dZdgZdg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jD                  d#fd$ed#f e#d#      gd%Z$y&)'r!   zI
    Lexer for squid configuration files.

    .. versionadded:: 0.9
    	SquidConfzhttp://www.squid-cache.org/)	squidconf
squid.confsquidr   ztext/x-squidconf)
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+))?r4   #r   r   prefixr   zstats/zlog/=z(?:\b\d+\b(?:-\b\d+|%)?)r   z	\s*TAG:.*r7   rk   )r9   r   N)%rF   rG   rH   rI   rJ   ra   rK   rL   rM   r]   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   rw   r   rP   rQ   rE   rC   r!   r!     s    D
'C2GI#$IMME9HvDG
M
 ;KD &J
|3zl'2D#J
|2j\3D4&$q!G IS		)B Z 7I&8E%8'B4e4dmmD757@=5A6J;wt<fE4e4g>(&1TN
 6==&1GV$FO
FrE   r!   c                      e Zd ZdZdZdZdgZdgZdg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y)r"   zJ
    Lexer for Nginx configuration files.

    .. versionadded:: 0.11
    zNginx configuration filezhttp://nginx.net/nginxz
nginx.confztext/x-nginx-confz(include)(\s+)([^\s;]+)z[^\s;#]+stmtbase\}r   \{block;r7   #.*\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;#]*r4   z[$;])r9   r  r  r  N)rF   rG   rH   rI   rJ   ra   rK   rL   rM   r   r   r   r   r   r   rb   r   rN   r  rn   r   r   r   Regexr   rP   rQ   rE   rC   r"   r"   A  s6   
 &D
CiGI$%I (':t)LM'6*FO
 K*'++V4FO
 K);'FO
 w~~&&dmm,(dK8: &)v~~.!8KV\\#RS{#V$4 Z dO
! FrE   r"   c                       e Zd ZdZdZdZddgZdgZdg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y)r#   zM
    Lexer for Lighttpd configuration files.

    .. versionadded:: 0.11
    zLighttpd configuration filezhttp://lighttpd.net/lighttpdlightyzlighttpd.confztext/x-lighttpd-confr9   r  z/\S*z[a-zA-Z._-]+r   r   z=>|=~|\+=|==|=|\+z\$[A-Z]+z[(){}\[\],]z"([^"\\]*(?:\\.[^"\\]*)*)"r4   N)rF   rG   rH   rI   rJ   ra   rK   rL   rM   r   rN   r   r   r   r   rm   r   r   r   r   rP   rQ   rE   rC   r#   r#   p  s    
 )D
 C8$G !I'(I 	w~~&dOg&+V4!8,$,,'[)*FMM:Z 
FrE   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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	z   eeee      fde
d eee      fd ee      fg	iZy)r$   zJ
    Lexer for Docker configuration files.

    .. versionadded:: 2.0
    Dockerzhttp://docker.iodocker
dockerfile
Dockerfilez*.dockerztext/x-dockerfile-configz-(?:MAINTAINER|EXPOSE|WORKDIR|USER|STOPSIGNAL)z-(?:RUN|CMD|ENTRYPOINT|ENV|ARG|LABEL|ADD|COPY)z(?:\s*\\?\s*)r9   #.*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+z(%s|VOLUME)\b(\s+)(.*)r  z)(\s+)z(.*\\\n)*.+N)rF   rG   rH   rI   rJ   ra   rK   rL   rM   	_keywords_bash_keywords_lbr]   r   r_   r   r   r   r   r   r   r	   r   r   rP   rQ   rE   rC   r$   r$     s9   
 D
C&Gz*I+,IAIFN
CMMBLL(E 	WAgz6:w
TZ[]&)+Xgz5QZK[-\]8;SA*eI.>?ACFH*eI.>i@PQS8;SA*eI.>?A&)4hw
TZ6[\+-x/LMU9-.
FrE   r$   c                   d   e Zd ZdZdZdZg dZddgZddgZd	Z	d
j                  dj                  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
j                  dj                  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!jD                  f ed       ed      de#fgd e$jJ                  d!fd"e$jL                  f ed      d# ee'ejP                  e'e)e'e*      fd$ ee'ejV                  e'e)e'      fd% ee'e,j8                  j:                  e'e)e'      fed&z    eejZ                  e*      fd' ee*ejP                  e*      fed(z    ee!j\                  e'ej^                  e'ej`                  e'e*      fd)efg
d* eej`                        fd+ eej`                        fgd,e*fgd-e$jJ                  fd.e$jJ                  d/fd0e$jJ                  d1fd2e$jJ                  fgd3e'fd4e'fd5 ee1e'      fgd6Z2y7)8r%   zH
    Lexer for terraformi ``.tf`` files.

    .. versionadded:: 2.1
    	Terraformzhttps://www.terraform.io/)	terraformtfhclz*.tfz*.hclzapplication/x-tfzapplication/x-terraform)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
formatlistindent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              #   h  K   |j                  d      }|t        |j                  d      f |j                  d      t        j                  |j                  d      f |j                  d      |_        |j                  d      |_        |j
                  t        j                  |j                  d      f |j                         |_        |j                  d      }d}g }t        j                  |j                  |j
                        D ]  }|r|j                         j                         }n|j                         j                         }||k(  r|D ]3  }|j                         t        j                  |j                         f 5 |j                         t        j                  |j                         f |j                         |_         nA|j                  |        |D ])  }|j                         t        |j                         f + t        |j                        |_        y w)Nr>   rz   r<   T)startr   groupr   	DelimiterposendHeredocr
   finditerrA   striprstripappendr   len)	selfmatchctxrp  hdnametolerantlinescheckamatchs	            rC   heredoc_callbackzTerraformLexer.heredoc_callback  s     AXu{{1~--kk!nf..A>>++a.))A,ggv~~u{{1~55))+Q%%chh8 	<E++-,,.# IF ,,.&..&,,.HHIkkmV%5%5u{{}DD))+U#	<   <llneV\\^;;<chh-s   H0H2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\*/r7   z[*/]rs   r4   (\\)(\n))r9   r  r  r  r   r  N)3rF   rG   rH   rI   rJ   ra   rK   rL   rM   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   	MultilinerN   r   rm   r   r   rO   r   r   r   r   rn   r   rP   rQ   rE   rC   r%   r%     s!    D
%C(G!I#%>?I6Gzz'23JYE=W[ A` T!I !#336JJM__235JKMab!"H --

8 45K# N GL! /0 $U5A4==Q 5u5w||DL!M"
$ ))95w~~.L! 8j$,,
HjR]^` 3j$..*h
SU
 -j'.."7"7XzZ\ 7"HT]]K$HI %h{DLL+&VW UUg&&
DJJ
DMM[egrsu /0@A? 
D 0$--1HI>dmm$&
 #K0
 w(()W&&0W&&/g''(	
 JZ (445
CFFrE   r%   c            	           e Zd ZdZdZdgZddgZg 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y)r&   zm
    Lexer for termcap database source.

    This is very simple and minimal.

    .. versionadded:: 2.1
    Termcaptermcapztermcap.src^#.*z
^[^\s#:|]+namesr4   rs   r7   :defs\|z[^:|]+z(\\)(\n[ \t]*)z\n[ \t]*r   (#)([0-9]+)r  r  z	[^\s:=#]+z\\072z[^:\\]+r   r9   r  r  r  N)rF   rG   rH   rI   rJ   rK   rL   rM   r   r   r   r   r   rO   r   r   r   r   r   r   rP   rQ   rE   rC   r&   r&   [  s     DkGM*II gDHHg.Z 
 J';'K '	
 z :;*h/Xh788V$;4::&
 w;'!7O	
)FrE   r&   c                      e Zd ZdZdZdgZddgZg 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y)r'   zn
    Lexer for terminfo database source.

    This is very simple and minimal.

    .. versionadded:: 2.1
    Terminfoterminfozterminfo.srcz^#.*$z
^[^\s#,|]+r  r4   rs   r7   z(,)([ \t]*)r  r  z[^,|]+z\n[ \t]+r   r  r  r  z	[^\s,=#]+z\\[,\\]z[^\\,]+r   r  N)rF   rG   rH   rI   rJ   rK   rL   rM   r   r   r   r   r   r   rO   r   r   r   r   rP   rQ   rE   rC   r'   r'     s    DlG^,II wDHHg.Z 
 J'Xk:>GK '	
 *%J)Xh788V$Xk:>?4::&
 !Xk:>G!7O	
)FrE   r'   c            
       ^   e Zd ZdZdZdZdgZdgZg 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y)r(   z
    Lexer for pkg-config
    (see also `manual page <http://linux.die.net/man/1/pkg-config>`_).

    .. versionadded:: 2.1
    	PkgConfigz4http://www.freedesktop.org/wiki/Software/pkg-config/	pkgconfigz*.pc#.*$z	^(\w+)(=)z^([\w.]+)(:)spvalueinterpr4   z[^${}#=:\n.]+r   z\$\$z\$\{curlyr  r7   r   rs   z[^${}#\n\s]+)r9   r  r  r  N)rF   rG   rH   rI   rJ   ra   rK   rL   rM   r   rN   r   r   rO   r   r   r   r   r   r   r   r   rP   rQ   rE   rC   r(   r(     s    D
@CmGII gnn% 8DNNH=> dhh,i9 H Z t$4L!
( dO foow/
 FOOV,T^^$

 Hgnnf-J' Z d#4L

=)FrE   r(   c            
           e Zd ZdZdZdZdgZdgZg 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y)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.

    .. versionadded:: 2.1
    
PacmanConfz3https://www.archlinux.org/pacman/pacman.conf.5.html
pacmanconfzpacman.confr9   r  z^(\s*)(\[.*?\])(\s*)$z(\w+)(\s*)(=)z^(\s*)(\w+)(\s*)$)z$repoz$archz%oz%ur   r   r4   r   N)rF   rG   rH   rI   rJ   ra   rK   rL   rM   r   rN   r   r   r   r   rO   r   r   rn   r   rP   rQ   rE   rC   r)   r)     s    $ D
?CnGII 	gnn% &x
GZ'PQ dnnj(;= "j$..*=?  
  ! ]] Z 4L7
FrE   r)   c                      e Zd ZdZdZdZdgZdg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j0                  fdej,                  fdej,                  dfgdej0                  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y)r*   z6
    Lexer for Augeas.

    .. versionadded:: 2.4
    Augeaszhttp://augeas.netaugeasz*.augz(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   r4   r   z[^"]r7   z[^/]z[^*)]r   z\*\)z[)*])r9   r   r  r   N)rF   rG   rH   rI   rJ   ra   rK   rL   r   r   rb   r   r   r   rn   rm   r   r   r   r  r   r   r   r  rw   rP   rQ   rE   rC   r*   r*   -  s   
 D
CjG	I '1B1BJPTP^P^(_`#Xg.A.A:t}}%]^fhpquq}q}  @J  iK  LH(S^`d`m`moz  }D  }I  }I  KV  KW  Xg''3X&H%6==(+FLL'*#Xdnnk4==%YZ4==!Z 
 V]]#fmm$6==&)
 V]]#fll#FLL&)
 w(()g''1g''0g''(	
3FrE   r*   c                      e Zd ZdZdZdgZg dZdg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j2                  dfdej2                  dfdej2                  dfdej4                  dfdej6                  dfdej8                  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d/      d0ej(                  fgd1ej                  dfgd!ej(                  dfd2 eej@                  e      f ed/      d0ej(                  fdej(                  fgd$ej                  dfd3ej                  fdej                  fgd4ej@                  fd5ej@                  fgd6Z!y7)8r+   zX
    Lexer for TOML, a simple language for config files.

    .. versionadded:: 2.4
    TOMLtoml)z*.tomlPipfilezpoetry.lockzapplication/tomlzhttps://toml.ioz\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
                  )?
                )?
              r4   r  rt   z(=)(\s*)r6   z\[\[?	table-keyz[A-Za-z0-9_-]+r   basic-string'literal-stringz\.z\]\]?r7   [ \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""")r7   multiline-basic-string)r7   r  z''')r7   multiline-literal-string)r7   r  z
true|false\[)r7   arrayr  )r7   inline-tabler   \]r  ru   z[^"\\]+z.*?'r  z[^']+z#\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}r   )r9   rt   r  r6   r  r  r  r  r  r  ru   N)"rF   rG   rH   rI   rJ   rK   rL   rM   ra   _time	_datetimer   r   rN   r   r   r   r   r   r   r   r   r   Dater   r   BinOctHexr   r  r   rw   rP   rQ   rE   rC   r+   r+   Z  sX    DhG4I#$I
C
 &E   I* Z  W^^$ EN (8Z8'B w,-
4 %6==.16=="23K 
 (6==.16=="23Gw' 
#
" f-GLL&) 1&,,G>\\6# f5 FJJ/VZZ0!6::v6fnnf5 V]]$FG6==":;V]]$HI6=="<= G,,f5 K!23 K!9:C"
L Z W^^$ ; K( G
$ 
# EN (;
;WE ; K(
$ 6==&)I'
 fmmV,
 V]]F+(6==*=>I'6==!#
 V]]F+v}}%6==!%
 4V]]CV]]#
QLFrE   r+   c                   >   e Zd ZdZdZdZddgZdg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y$)%r,   z
    Lexer for *NextedText*, a human-friendly data format.

    .. versionadded:: 2.9

    .. versionchanged:: 2.16
        Added support for *NextedText* v3.0.
    
NestedTextzhttps://nestedtext.org
nestedtextntz*.ntz^([ ]*)(#.*)$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  r7   rs   z[^\{\}\[\],:\s]+r  inline_dict_valuer  r   r  r  r  )r9   r  r  r  r  r  N)rF   rG   rH   rI   rJ   ra   rK   rL   r   r   r   r   r   r   r   r   r   rP   rQ   rE   rC   r,   r,     s    D
"CT"GI
 x
G<= Xj+>N Xj+>N Xj+>? ,Xj+z[_ak-lm Xj+>? ,Xj+z[_ak-lm Xj+>? 0*kS]_c_g_gis1tu *8J++VW :8JPTPXPXZegqsw  zD  <E  FA!
F L!&N#;K(E6"
 L! $((+; 34K(E6"
 L! $'N#;'K*
 L!K/K/
 
#
}AFrE   r,   c                   $   e Zd ZdZdZdZdgZddg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y)r-   zL
    Lexer for Singularity definition files.

    .. versionadded:: 2.6
    SingularityzAhttps://www.sylabs.io/guides/3.0/user-guide/definition_files.htmlsingularityz*.defzS^(\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*%))|(.*)r7   )r9   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\(\?)r]   r^   r   r-   _section)rA   results     rC   rD   zSingularityLexer.analyse_textv  sQ     99>bmmTcMF99%..qr2D9dNFrE   N)rF   rG   rH   rI   rJ   ra   rK   rL   r]   r   r_   DOTALLr   _headersr  _appsectr   r   Headingr   r   r   r   r   r	   r   rP   rD   rQ   rE   rC   r-   r-   V  s     D
MCoG-(IMMBLL(2994EeHfHHH x<hGx<hGx
GT:;7#2F;
#D!
 $U9%5v>
F
rE   r-   c                   L    e Zd ZdZdZddgZg Zddefdefde	fd	e
fd
efdefgiZy)r.   z
    Lexer for Unix/Linux config files using colon-separated values, e.g.

    * ``/etc/group``
    * ``/etc/passwd``
    * ``/etc/shadow``

    .. versionadded:: 2.12
    zUnix/Linux config files
unixconfiglinuxconfigr9   r  rs   r  r   z"((?!\n)[a-zA-Z0-9\_\-\s\(\),]){2,}z[^:\n]+N)rF   rG   rH   rI   rJ   rK   rL   r   r   r   r   r   r   rP   rQ   rE   rC   r.   r.     s^     %D]+GI 	gJ;2D9 
	FrE   r.   )4rI   r]   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.   rQ   rE   rC   <module>r     sl   
& & &= = = = + *E(z (V: <*: *Z(:: (:V5j 5pQ(J: JZ;Z ;|(j (VZ D,Z ,^
 :!* !Hg' gT,: ,^,J ,^7Z 7t7j 7t** *Zg
 gRPj Pf*z *Zj rE   