text: # -*- coding: utf-8 -*-
  """
      pygments.lexers.automation
      ~~~~~~~~~~~~~~~~~~~~~~~~~~
  
      Lexers for automation scripting languages.
  
      :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
      :license: BSD, see LICENSE for details.
  """
  
  from pygments.lexer import RegexLexer, include, bygroups, combined
  from pygments.token import Text, Comment, Operator, Name, String, \
      Number, Punctuation, Generic
  
  __all__ = ['AutohotkeyLexer', 'AutoItLexer']
  
  
  class AutohotkeyLexer(RegexLexer):
      """
      For `autohotkey <http://www.autohotkey.com/>`_ source code.
  
      .. versionadded:: 1.4
      """
      name = 'autohotkey'
      aliases = ['ahk', 'autohotkey']
      filenames = ['*.ahk', '*.ahkl']
      mimetypes = ['text/x-autohotkey']
  
      tokens = {
          'root': [
              (r'^(\s*)(/\*)', bygroups(Text, Comment.Multiline), 'incomment'),
              (r'^(\s*)(\()', bygroups(Text, Generic), 'incontinuation'),
              (r'\s+;.*?$', Comment.Singleline),
              (r'^;.*?$', Comment.Singleline),
              (r'[]{}(),;[]', Punctuation),
              (r'(in|is|and|or|not)\b', Operator.Word),
              (r'\%[a-zA-Z_#@$][\w#@$]*\%', Name.Variable),
              (r'!=|==|:=|\.=|<<|>>|[-~+/*%=<>&^|?:!.]', Operator),
              include('commands'),
              include('labels'),
              include('builtInFunctions'),
              include('builtInVariables'),
              (r'"', String, combined('stringescape', 'dqs')),
              include('numbers'),
              (r'[a-zA-Z_#@$][\w#@$]*', Name),
              (r'\\|\'', Text),
              (r'\`([,%`abfnrtv\-+;])', String.Escape),
              include('garbage'),
          ],
          'incomment': [
              (r'^\s*\*/', Comment.Multiline, '#pop'),
              (r'[^*/]', Comment.Multiline),
              (r'[*/]', Comment.Multiline)
          ],
          'incontinuation': [
              (r'^\s*\)', Generic, '#pop'),
              (r'[^)]', Generic),
              (r'[)]', Generic),
          ],
          'commands': [
              (r'(?i)^(\s*)(global|local|static|'
               r'#AllowSameLineComments|#ClipboardTimeout|#CommentFlag|'
               r'#ErrorStdOut|#EscapeChar|#HotkeyInterval|#HotkeyModifierTimeout|'
               r'#Hotstring|#IfWinActive|#IfWinExist|#IfWinNotActive|'
               r'#IfWinNotExist|#IncludeAgain|#Include|#InstallKeybdHook|'
               r'#InstallMouseHook|#KeyHistory|#LTrim|#MaxHotkeysPerInterval|'
               r'#MaxMem|#MaxThreads|#MaxThreadsBuffer|#MaxThreadsPerHotkey|'
               r'#NoEnv|#NoTrayIcon|#Persistent|#SingleInstance|#UseHook|'
               r'#WinActivateForce|AutoTrim|BlockInput|Break|Click|ClipWait|'
               r'Continue|Control|ControlClick|ControlFocus|ControlGetFocus|'
               r'ControlGetPos|ControlGetText|ControlGet|ControlMove|ControlSend|'
               r'ControlSendRaw|ControlSetText|CoordMode|Critical|'
               r'DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|'
               r'DriveSpaceFree|Edit|Else|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|'
               r'EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|'
               r'FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|'
               r'FileDelete|FileGetAttrib|FileGetShortcut|FileGetSize|'
               r'FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|'
               r'FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|'
               r'FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|'
               r'FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|'
               r'GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|'
               r'GuiControlGet|Hotkey|IfEqual|IfExist|IfGreaterOrEqual|IfGreater|'
               r'IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|'
               r'IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|'
               r'IfWinNotExist|If |ImageSearch|IniDelete|IniRead|IniWrite|'
               r'InputBox|Input|KeyHistory|KeyWait|ListHotkeys|ListLines|'
               r'ListVars|Loop|Menu|MouseClickDrag|MouseClick|MouseGetPos|'
               r'MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|'
               r'PixelSearch|PostMessage|Process|Progress|Random|RegDelete|'
               r'RegRead|RegWrite|Reload|Repeat|Return|RunAs|RunWait|Run|'
               r'SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|Send|'
               r'SetBatchLines|SetCapslockState|SetControlDelay|'
               r'SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|'
               r'SetMouseDelay|SetNumlockState|SetScrollLockState|'
               r'SetStoreCapslockMode|SetTimer|SetTitleMatchMode|'
               r'SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|'
               r'SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|'
               r'SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|'
               r'SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|'
               r'StringGetPos|StringLeft|StringLen|StringLower|StringMid|'
               r'StringReplace|StringRight|StringSplit|StringTrimLeft|'
               r'StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|'
               r'Transform|TrayTip|URLDownloadToFile|While|WinActivate|'
               r'WinActivateBottom|WinClose|WinGetActiveStats|WinGetActiveTitle|'
               r'WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinGet|WinHide|'
               r'WinKill|WinMaximize|WinMenuSelectItem|WinMinimizeAllUndo|'
               r'WinMinimizeAll|WinMinimize|WinMove|WinRestore|WinSetTitle|'
               r'WinSet|WinShow|WinWaitActive|WinWaitClose|WinWaitNotActive|'
               r'WinWait)\b', bygroups(Text, Name.Builtin)),
          ],
          'builtInFunctions': [
              (r'(?i)(Abs|ACos|Asc|ASin|ATan|Ceil|Chr|Cos|DllCall|Exp|FileExist|'
               r'Floor|GetKeyState|IL_Add|IL_Create|IL_Destroy|InStr|IsFunc|'
               r'IsLabel|Ln|Log|LV_Add|LV_Delete|LV_DeleteCol|LV_GetCount|'
               r'LV_GetNext|LV_GetText|LV_Insert|LV_InsertCol|LV_Modify|'
               r'LV_ModifyCol|LV_SetImageList|Mod|NumGet|NumPut|OnMessage|'
               r'RegExMatch|RegExReplace|RegisterCallback|Round|SB_SetIcon|'
               r'SB_SetParts|SB_SetText|Sin|Sqrt|StrLen|SubStr|Tan|TV_Add|'
               r'TV_Delete|TV_GetChild|TV_GetCount|TV_GetNext|TV_Get|'
               r'TV_GetParent|TV_GetPrev|TV_GetSelection|TV_GetText|TV_Modify|'
               r'VarSetCapacity|WinActive|WinExist|Object|ComObjActive|'
               r'ComObjArray|ComObjEnwrap|ComObjUnwrap|ComObjParameter|'
               r'ComObjType|ComObjConnect|ComObjCreate|ComObjGet|ComObjError|'
               r'ComObjValue|Insert|MinIndex|MaxIndex|Remove|SetCapacity|'
               r'GetCapacity|GetAddress|_NewEnum|FileOpen|Read|Write|ReadLine|'
               r'WriteLine|ReadNumType|WriteNumType|RawRead|RawWrite|Seek|Tell|'
               r'Close|Next|IsObject|StrPut|StrGet|Trim|LTrim|RTrim)\b',
               Name.Function),
          ],
          'builtInVariables': [
              (r'(?i)(A_AhkPath|A_AhkVersion|A_AppData|A_AppDataCommon|'
               r'A_AutoTrim|A_BatchLines|A_CaretX|A_CaretY|A_ComputerName|'
               r'A_ControlDelay|A_Cursor|A_DDDD|A_DDD|A_DD|A_DefaultMouseSpeed|'
               r'A_Desktop|A_DesktopCommon|A_DetectHiddenText|'
               r'A_DetectHiddenWindows|A_EndChar|A_EventInfo|A_ExitReason|'
               r'A_FormatFloat|A_FormatInteger|A_Gui|A_GuiEvent|A_GuiControl|'
               r'A_GuiControlEvent|A_GuiHeight|A_GuiWidth|A_GuiX|A_GuiY|A_Hour|'
               r'A_IconFile|A_IconHidden|A_IconNumber|A_IconTip|A_Index|'
               r'A_IPAddress1|A_IPAddress2|A_IPAddress3|A_IPAddress4|A_ISAdmin|'
               r'A_IsCompiled|A_IsCritical|A_IsPaused|A_IsSuspended|A_KeyDelay|'
               r'A_Language|A_LastError|A_LineFile|A_LineNumber|A_LoopField|'
               r'A_LoopFileAttrib|A_LoopFileDir|A_LoopFileExt|A_LoopFileFullPath|'
               r'A_LoopFileLongPath|A_LoopFileName|A_LoopFileShortName|'
               r'A_LoopFileShortPath|A_LoopFileSize|A_LoopFileSizeKB|'
               r'A_LoopFileSizeMB|A_LoopFileTimeAccessed|A_LoopFileTimeCreated|'
               r'A_LoopFileTimeModified|A_LoopReadLine|A_LoopRegKey|'
               r'A_LoopRegName|A_LoopRegSubkey|A_LoopRegTimeModified|'
               r'A_LoopRegType|A_MDAY|A_Min|A_MM|A_MMM|A_MMMM|A_Mon|A_MouseDelay|'
               r'A_MSec|A_MyDocuments|A_Now|A_NowUTC|A_NumBatchLines|A_OSType|'
               r'A_OSVersion|A_PriorHotkey|A_ProgramFiles|A_Programs|'
               r'A_ProgramsCommon|A_ScreenHeight|A_ScreenWidth|A_ScriptDir|'
               r'A_ScriptFullPath|A_ScriptName|A_Sec|A_Space|A_StartMenu|'
               r'A_StartMenuCommon|A_Startup|A_StartupCommon|A_StringCaseSense|'
               r'A_Tab|A_Temp|A_ThisFunc|A_ThisHotkey|A_ThisLabel|A_ThisMenu|'
               r'A_ThisMenuItem|A_ThisMenuItemPos|A_TickCount|A_TimeIdle|'
               r'A_TimeIdlePhysical|A_TimeSincePriorHotkey|A_TimeSinceThisHotkey|'
               r'A_TitleMatchMode|A_TitleMatchModeSpeed|A_UserName|A_WDay|'
               r'A_WinDelay|A_WinDir|A_WorkingDir|A_YDay|A_YEAR|A_YWeek|A_YYYY|'
               r'Clipboard|ClipboardAll|ComSpec|ErrorLevel|ProgramFiles|True|'
               r'False|A_IsUnicode|A_FileEncoding|A_OSVersion|A_PtrSize)\b',
               Name.Variable),
          ],
          'labels': [
              # hotkeys and labels
              # technically, hotkey names are limited to named keys and buttons
              (r'(^\s*)([^:\s("]+?:{1,2})', bygroups(Text, Name.Label)),
              (r'(^\s*)(::[^:\s]+?::)', bygroups(Text, Name.Label)),
          ],
          'numbers': [
              (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float),
              (r'\d+[eE][+-]?[0-9]+', Number.Float),
              (r'0\d+', Number.Oct),
              (r'0[xX][a-fA-F0-9]+', Number.Hex),
              (r'\d+L', Number.Integer.Long),
              (r'\d+', Number.Integer)
          ],
          'stringescape': [
              (r'\"\"|\`([,%`abfnrtv])', String.Escape),
          ],
          'strings': [
              (r'[^"\n]+', String),
          ],
          'dqs': [
              (r'"', String, '#pop'),
              include('strings')
          ],
          'garbage': [
              (r'[^\S\n]', Text),
              # (r'.', Text),      # no cheating
          ],
      }
  
  
  class AutoItLexer(RegexLexer):
      """
      For `AutoIt <http://www.autoitscript.com/site/autoit/>`_ files.
  
      AutoIt is a freeware BASIC-like scripting language
      designed for automating the Windows GUI and general scripting
  
      .. versionadded:: 1.6
      """
      name = 'AutoIt'
      aliases = ['autoit']
      filenames = ['*.au3']
      mimetypes = ['text/x-autoit']
  
      # Keywords, functions, macros from au3.keywords.properties
      # which can be found in AutoIt installed directory, e.g.
      # c:\Program Files (x86)\AutoIt3\SciTE\au3.keywords.properties
  
      keywords = """\
      #include-once #include #endregion #forcedef #forceref #region
      and byref case continueloop dim do else elseif endfunc endif
      endselect exit exitloop for func global
      if local next not or return select step
      then to until wend while exit""".split()
  
      functions = """\
      abs acos adlibregister adlibunregister asc ascw asin assign atan
      autoitsetoption autoitwingettitle autoitwinsettitle beep binary binarylen
      binarymid binarytostring bitand bitnot bitor bitrotate bitshift bitxor
      blockinput break call cdtray ceiling chr chrw clipget clipput consoleread
      consolewrite consolewriteerror controlclick controlcommand controldisable
      controlenable controlfocus controlgetfocus controlgethandle controlgetpos
      controlgettext controlhide controllistview controlmove controlsend
      controlsettext controlshow controltreeview cos dec dircopy dircreate
      dirgetsize dirmove dirremove dllcall dllcalladdress dllcallbackfree
      dllcallbackgetptr dllcallbackregister dllclose dllopen dllstructcreate
      dllstructgetdata dllstructgetptr dllstructgetsize dllstructsetdata
      drivegetdrive drivegetfilesystem drivegetlabel drivegetserial drivegettype
      drivemapadd drivemapdel drivemapget drivesetlabel drivespacefree
      drivespacetotal drivestatus envget envset envupdate eval execute exp
      filechangedir fileclose filecopy filecreatentfslink filecreateshortcut
      filedelete fileexists filefindfirstfile filefindnextfile fileflush
      filegetattrib filegetencoding filegetlongname filegetpos filegetshortcut
      filegetshortname filegetsize filegettime filegetversion fileinstall filemove
      fileopen fileopendialog fileread filereadline filerecycle filerecycleempty
      filesavedialog fileselectfolder filesetattrib filesetpos filesettime
      filewrite filewriteline floor ftpsetproxy guicreate guictrlcreateavi
      guictrlcreatebutton guictrlcreatecheckbox guictrlcreatecombo
      guictrlcreatecontextmenu guictrlcreatedate guictrlcreatedummy
      guictrlcreateedit guictrlcreategraphic guictrlcreategroup guictrlcreateicon
      guictrlcreateinput guictrlcreatelabel guictrlcreatelist
      guictrlcreatelistview guictrlcreatelistviewitem guictrlcreatemenu
      guictrlcreatemenuitem guictrlcreatemonthcal guictrlcreateobj
      guictrlcreatepic guictrlcreateprogress guictrlcreateradio
      guictrlcreateslider guictrlcreatetab guictrlcreatetabitem
      guictrlcreatetreeview guictrlcreatetreeviewitem guictrlcreateupdown
      guictrldelete guictrlgethandle guictrlgetstate guictrlread guictrlrecvmsg
      guictrlregisterlistviewsort guictrlsendmsg guictrlsendtodummy
      guictrlsetbkcolor guictrlsetcolor guictrlsetcursor guictrlsetdata
      guictrlsetdefbkcolor guictrlsetdefcolor guictrlsetfont guictrlsetgraphic
      guictrlsetimage guictrlsetlimit guictrlsetonevent guictrlsetpos
      guictrlsetresizing guictrlsetstate guictrlsetstyle guictrlsettip guidelete
      guigetcursorinfo guigetmsg guigetstyle guiregistermsg guisetaccelerators
      guisetbkcolor guisetcoord guisetcursor guisetfont guisethelp guiseticon
      guisetonevent guisetstate guisetstyle guistartgroup guiswitch hex hotkeyset
      httpsetproxy httpsetuseragent hwnd inetclose inetget inetgetinfo inetgetsize
      inetread inidelete iniread inireadsection inireadsectionnames
      inirenamesection iniwrite iniwritesection inputbox int isadmin isarray
      isbinary isbool isdeclared isdllstruct isfloat ishwnd isint iskeyword
      isnumber isobj isptr isstring log memgetstats mod mouseclick mouseclickdrag
      mousedown mousegetcursor mousegetpos mousemove mouseup mousewheel msgbox
      number objcreate objcreateinterface objevent objevent objget objname
      onautoitexitregister onautoitexitunregister opt ping pixelchecksum
      pixelgetcolor pixelsearch pluginclose pluginopen processclose processexists
      processgetstats processlist processsetpriority processwait processwaitclose
      progressoff progresson progressset ptr random regdelete regenumkey
      regenumval regread regwrite round run runas runaswait runwait send
      sendkeepactive seterror setextended shellexecute shellexecutewait shutdown
      sin sleep soundplay soundsetwavevolume splashimageon splashoff splashtexton
      sqrt srandom statusbargettext stderrread stdinwrite stdioclose stdoutread
      string stringaddcr stringcompare stringformat stringfromasciiarray
      stringinstr stringisalnum stringisalpha stringisascii stringisdigit
      stringisfloat stringisint stringislower stringisspace stringisupper
      stringisxdigit stringleft stringlen stringlower stringmid stringregexp
      stringregexpreplace stringreplace stringright stringsplit stringstripcr
      stringstripws stringtoasciiarray stringtobinary stringtrimleft
      stringtrimright stringupper tan tcpaccept tcpclosesocket tcpconnect
      tcplisten tcpnametoip tcprecv tcpsend tcpshutdown tcpstartup timerdiff
      timerinit tooltip traycreateitem traycreatemenu traygetmsg trayitemdelete
      trayitemgethandle trayitemgetstate trayitemgettext trayitemsetonevent
      trayitemsetstate trayitemsettext traysetclick trayseticon traysetonevent
      traysetpauseicon traysetstate traysettooltip traytip ubound udpbind
      udpclosesocket udpopen udprecv udpsend udpshutdown udpstartup vargettype
      winactivate winactive winclose winexists winflash wingetcaretpos
      wingetclasslist wingetclientsize wingethandle wingetpos wingetprocess
      wingetstate wingettext wingettitle winkill winlist winmenuselectitem
      winminimizeall winminimizeallundo winmove winsetontop winsetstate
      winsettitle winsettrans winwait winwaitactive winwaitclose
      winwaitnotactive""".split()
  
      macros = """\
      @appdatacommondir @appdatadir @autoitexe @autoitpid @autoitversion
      @autoitx64 @com_eventobj @commonfilesdir @compiled @computername @comspec
      @cpuarch @cr @crlf @desktopcommondir @desktopdepth @desktopdir
      @desktopheight @desktoprefresh @desktopwidth @documentscommondir @error
      @exitcode @exitmethod @extended @favoritescommondir @favoritesdir
      @gui_ctrlhandle @gui_ctrlid @gui_dragfile @gui_dragid @gui_dropid
      @gui_winhandle @homedrive @homepath @homeshare @hotkeypressed @hour
      @ipaddress1 @ipaddress2 @ipaddress3 @ipaddress4 @kblayout @lf
      @logondnsdomain @logondomain @logonserver @mday @min @mon @msec @muilang
      @mydocumentsdir @numparams @osarch @osbuild @oslang @osservicepack @ostype
      @osversion @programfilesdir @programscommondir @programsdir @scriptdir
      @scriptfullpath @scriptlinenumber @scriptname @sec @startmenucommondir
      @startmenudir @startupcommondir @startupdir @sw_disable @sw_enable @sw_hide
      @sw_lock @sw_maximize @sw_minimize @sw_restore @sw_show @sw_showdefault
      @sw_showmaximized @sw_showminimized @sw_showminnoactive @sw_showna
      @sw_shownoactivate @sw_shownormal @sw_unlock @systemdir @tab @tempdir
      @tray_id @trayiconflashing @trayiconvisible @username @userprofiledir @wday
      @windowsdir @workingdir @yday @year""".split()
  
      tokens = {
          'root': [
              (r';.*\n', Comment.Single),
              (r'(#comments-start|#cs)(.|\n)*?(#comments-end|#ce)',
               Comment.Multiline),
              (r'[\[\]{}(),;]', Punctuation),
              (r'(and|or|not)\b', Operator.Word),
              (r'[$|@][a-zA-Z_]\w*', Name.Variable),
              (r'!=|==|:=|\.=|<<|>>|[-~+/*%=<>&^|?:!.]', Operator),
              include('commands'),
              include('labels'),
              include('builtInFunctions'),
              include('builtInMarcros'),
              (r'"', String, combined('stringescape', 'dqs')),
              include('numbers'),
              (r'[a-zA-Z_#@$][\w#@$]*', Name),
              (r'\\|\'', Text),
              (r'\`([,%`abfnrtv\-+;])', String.Escape),
              (r'_\n', Text),  # Line continuation
              include('garbage'),
          ],
          'commands': [
              (r'(?i)(\s*)(%s)\b' % '|'.join(keywords),
               bygroups(Text, Name.Builtin)),
          ],
          'builtInFunctions': [
              (r'(?i)(%s)\b' % '|'.join(functions),
               Name.Function),
          ],
          'builtInMarcros': [
              (r'(?i)(%s)\b' % '|'.join(macros),
               Name.Variable.Global),
          ],
          'labels': [
              # sendkeys
              (r'(^\s*)(\{\S+?\})', bygroups(Text, Name.Label)),
          ],
          'numbers': [
              (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float),
              (r'\d+[eE][+-]?[0-9]+', Number.Float),
              (r'0\d+', Number.Oct),
              (r'0[xX][a-fA-F0-9]+', Number.Hex),
              (r'\d+L', Number.Integer.Long),
              (r'\d+', Number.Integer)
          ],
          'stringescape': [
              (r'\"\"|\`([,%`abfnrtv])', String.Escape),
          ],
          'strings': [
              (r'[^"\n]+', String),
          ],
          'dqs': [
              (r'"', String, '#pop'),
              include('strings')
          ],
          'garbage': [
              (r'[^\S\n]', Text),
          ],
      }
  