lua << EOF
--[[ Build using Highlite, a Neovim colorscheme template.
	* Author:     Iron-E (https://github.com/Iron-E)
	* Repository: https://github.com/Iron-E/nvim-highlite

	Rewrite of RNB, a Vim colorsheme template.
	* Author:        Romain Lafourcade (https://github.com/romainl)
	* Canonical URL: https://github.com/romainl/vim-rnb

	Yolokai colorscheme based on monokai/molokai with minor changes
	* Background is completely black. No washed out greyish backgrounds
	* Comment highlight is slightly different
	* Slightly different colors for errors, floating windows, quickfix
	  line selection and such
	* Author: Sanchayan Maity (https://gitlab.com/SanchayanMaity)
]]

vim.g.colors_name = 'yolokai'

local white       = { '#DOBFA1', 252, 'white'       }
local white2      = { '#d8d8d3', 250, 'white2'      }
local black       = { '#000000', 234, 'black'       }
local lightblack  = { '#2D2E27', 235, 'lightblack'  }
local lightblack2 = { '#383a3e', 236, 'lightblack2' }
local lightblack3 = { '#3f4145', 237, 'lightblack3' }
local darkblack   = { '#211F1C', 233, 'darkblack'   }
local grey        = { '#8F908A', 243, 'grey'        }
local lightgrey   = { '#575b61', 237, 'lightgrey'   }
local darkgrey    = { '#64645e', 239, 'darkgrey'    }
local warmgrey    = { '#A6A185', 59,  'warmgrey'    }

local pink        = { '#F92772', 197, 'pink'      }
local green       = { '#A6E22D', 148, 'green'     }
local darkgreen   = { '#50de60', 83,  'darkgreen' }
local aqua        = { '#66d9ef', 81,  'aqua'      }
local yellow      = { '#E6DB74', 186, 'yellow'    }
local orange      = { '#FD9720', 208, 'orange'    }
local purple      = { '#ae81ff', 141, 'purple'    }
local red         = { '#e73c50', 196, 'red'       }
local purered     = { '#ff0000', 52,  'purered'   }
local darkred     = { '#5f0000', 52,  'darkred'   }

--[[ DO NOT EDIT `BG`, `FG`, or `NONE`.
	Feel free to uncomment `BG`. It is not used by default so it is commented out.
]]
local BG   = 'bg'
local FG   = 'fg'
local NONE = 'NONE'

--[[ These are the ones you should edit. ]]
-- This is the only highlight that must be defined separately.
local highlight_group_normal = {bg=black, fg=white, style=NONE}

-- This is where the rest of your highlights should go.
local highlight_groups = {
	--[[ 4.1. Text Analysis ]]
	Comment     = {bg=NONE,        fg=warmgrey,     style='italic'},
	EndOfBuffer = 'NonText',
	NonText     = {bg=NONE,        fg=lightgrey,    style=NONE    },
	Whitespace  = 'NonText',

	--[[ 4.1.1. Literals]]
	Constant  = {bg=NONE,       fg=purple,         style=NONE},
	String    = {bg=NONE,       fg=yellow,         style=NONE},
	Character = {bg=NONE,       fg=yellow,         style=NONE},
	Number    = {bg=NONE,       fg=purple,         style=NONE},
	Boolean   = {bg=NONE,       fg=purple,         style=NONE},
	Float     = 'Number',

	--[[ 4.1.2. Identifiers]]
	Identifier = {bg=NONE, fg=green,     style=NONE},
	Function   = {bg=NONE, fg=darkgreen, style=NONE},

	--[[ 4.1.3. Syntax]]
	Statement   = {bg=NONE,        fg=pink,        style=NONE    },
	Conditional = {bg=NONE,        fg=pink,        style='italic'},
	Repeat      = 'Keyword',
	Label       = {bg=NONE,        fg=pink,        style='italic'},
	Operator    = {bg=NONE,        fg=pink,        style=NONE    },
	Keyword     = {bg=NONE,        fg=pink,        style='bold'  },
	Exception   = {bg=NONE,        fg=red,         style='bold'  },
	Noise       = 'Delimiter',

	--[[ 4.1.4. Metatextual Information]]
	PreProc   = {bg=NONE,      fg=green,        style=NONE       },
	Include   = {bg=NONE,      fg=pink,         style='nocombine'},
	Define    = {bg=NONE,      fg=pink,         style='nocombine'},
	Macro     = {bg=NONE,      fg=orange,       style={'bold', 'nocombine'}},
	PreCondit = {bg=NONE,      fg=green,        style='nocombine'},

	--[[ 4.1.5. Semantics]]
	Type         = {bg=NONE,  fg=aqua,          style=NONE    },
	StorageClass = {bg=NONE,  fg=aqua,          style='bold'  },
	Structure    = {bg=NONE,  fg=aqua,          style='bold'  },
	Typedef      = {bg=NONE,  fg=aqua,          style='italic'},

	--[[ 4.1.6. Edge Cases]]
	Special        = {bg=NONE,           fg=purple,   style=NONE                 },
	SpecialChar    = 'Character' ,
	SpecialKey     = 'Character' ,
	Tag            = 'Underlined',
	Delimiter      = {bg=NONE,           fg=red,      style=NONE                 },
	-- SpecialComment affects Haskell Language Extension
	SpecialComment = {bg=NONE,           fg=orange,   style={'bold', 'nocombine'}},
	Debug          = 'WarningMsg',

	--[[ 4.1.7. Help Syntax]]
	Underlined        = {bg=NONE,           fg=green,     style='underline'          },
	Ignore            = {bg=NONE,           fg=gray,      style=NONE                 },
	Error             = {bg=black,          fg=red,       style=NONE                 },
	Todo              = {bg=NONE,           fg=orange,    style={'bold', 'underline'}},
	Hint              = {bg=lightblack3,    fg=white,     style='bold'               },
	Info              = {bg=orange,         fg=black,     style='bold'               },
	Warning           = {bg=pink,           fg=black,     style='bold'               },

	--[[ 4.2... Editor UI  ]]
	--[[ 4.2.1. Status Line]]
	StatusLine       = {bg=black,              fg=warmgrey,     style='inverse'},
	StatusLineNC     = {bg=black,              fg=darkgrey,     style='inverse'},
	StatusLineTerm   = 'StatusLine'  ,
	StatusLineTermNC = 'StatusLineNC',

	--[[ 4.2.2. Separators]]
	VertSplit   = {bg=darkblack,    fg=darkgrey,     style=NONE     },
	TabLine     = {bg=darkblack,    fg=white,        style=NONE     },
	TabLineFill = {bg=NONE,         fg=FG,           style=NONE     },
	TabLineSel  = {bg=darkgrey,     fg=FG,           style='inverse'},
	Title       = {bg=NONE,         fg=NONE,         style='bold'   },

	--[[ 4.2.3. Conditional Line Highlighting]]
	--Conceal={}
	CursorLine      = {bg=lightblack2,     fg=NONE,  style=NONE     },
	CursorLineNr    = {bg=lightblack,      fg=orange,style=NONE     },
	debugBreakpoint = 'ErrorMsg'   ,
	debugPC         = 'ColorColumn',
	LineNr          = {bg=black,           fg=grey,  style=NONE     },
	QuickFixLine    = {bg=darkgrey,        fg=NONE,  style=NONE     },
	Visual          = {bg=NONE,            fg=NONE,  style='inverse'},
	VisualNOS       = {bg=darkgrey,        fg=NONE,  style=NONE     },

	--[[ 4.2.4. Popup Menu]]
	Pmenu      = {bg=black,      fg=aqua,        style=NONE         },
	PmenuSbar  = {bg=black,      fg=NONE,        style=NONE         },
	PmenuSel   = {bg=warmgrey,   fg=white,       style='bold'       },
	PmenuThumb = {bg=grey,       fg=lightblack,  style=NONE         },
	WildMenu   = {bg=NONE,       fg=NONE,        style=NONE         },

	--[[ 4.2.5. Folds]]
	FoldColumn = {bg=darkblack,     fg=NONE,      style='bold'  },
	Folded     = {bg=darkblack,     fg=warmgrey,  style='italic'},

	--[[ 4.2.6. Diffs]]
	DiffAdd    = {bg=lightblack3,  fg=darkgreen,   style=NONE},
	DiffChange = {bg=lightblack3,  fg=yellow,      style=NONE},
	DiffDelete = {bg=lightblack3,  fg=red,         style=NONE},
	DiffText   = {bg=lightblack3,  fg=NONE,        style=NONE},

	--[[ 4.2.7. Searching]]
	IncSearch  = {bg=NONE,  fg=NONE,   style='inverse'                 },
	Search     = {bg=yellow,fg=black,  style={'underline', color=white}},
	MatchParen = {bg=NONE,  fg=purple, style={'bold', 'underline'     }},

	--[[ 4.2.8. Spelling]]
	SpellBad   = {bg=NONE,  fg=NONE,  style={'undercurl', color=red   }},
	SpellCap   = {bg=NONE,  fg=NONE,  style={'undercurl', color=purple}},
	SpellLocal = {bg=NONE,  fg=NONE,  style={'undercurl', color=pink  }},
	SpellRare  = {bg=NONE,  fg=NONE,  style={'undercurl', color=aqua  }},

	--[[ 4.2.9. Conditional Column Highlighting]]
	ColorColumn = {bg=lightblack,  fg=NONE,  style=NONE     },
	SignColumn  = {bg=black,       fg=NONE,  style=NONE     },

	--[[ 4.2.10. Messages]]
	ErrorMsg   = {bg=black,  fg=red,          style=NONE       },
	HintMsg    = {bg=black,  fg=purple,       style='bold'     },
	InfoMsg    = {bg=black,  fg=orange,       style='bold'     },
	ModeMsg    = {bg=black,  fg=yellow,       style=NONE       },
	WarningMsg = {bg=black,  fg=pink,         style='bold'     },
	Question   = {bg=black,  fg=yellow,       style='underline'},

	--[[ 4.2.11. LSP ]]
	DiagnosticDefaultError           = 'ErrorMsg'         ,
	DiagnosticDefaultWarning         = 'WarningMsg'       ,
	DiagnosticDefaultInformation     = 'InfoMsg'          ,
	DiagnosticDefaultHint            = 'HintMsg'          ,

	DiagnosticFloatingError          = 'ErrorMsg'         ,
	DiagnosticFloatingWarning        = 'WarningMsg'       ,
	DiagnosticFloatingInformation    = 'InfoMsg'          ,
	DiagnosticFloatingHint           = 'HintMsg'          ,

	DiagnosticSignError              = 'ErrorMsg'         ,
	DiagnosticSignWarning            = 'WarningMsg'       ,
	DiagnosticSignInformation        = 'InfoMsg'          ,
	DiagnosticSignHint               = 'HintMsg'          ,

	DiagnosticUnderlineError         = {style={'undercurl', color=red    }},
	DiagnosticUnderlineWarning       = {style={'undercurl', color=pink   }},
	DiagnosticUnderlineInformation   = {style={'undercurl', color=orange }},
	DiagnosticUnderlineHint          = {style={'undercurl', color=purple }},

	DiagnosticVirtualTextError       = 'ErrorMsg'         ,
	DiagnosticVirtualTextWarning     = 'WarningMsg'       ,
	DiagnosticVirtualTextInformation = 'InfoMsg'          ,
	DiagnosticVirtualTextHint        = 'HintMsg'          ,

	--[[ 4.2.12. Cursor ]]
	Cursor   = {bg=white,          fg=black, style='inverse'},
	CursorIM = 'Cursor',
	CursorColumn = {bg=lightblack2,fg=NONE,  style=NONE     },

	--[[ 4.2.13. Misc ]]
	Directory     = {bg=NONE,      fg=aqua,  style='bold'},
	Terminal      = 'Normal',
	NormalFloat   = {bg=black,     fg=white, style=NONE  },

	--[[ 4.2.14. LSP Highlight ]]
	LspReferenceText  = 'InfoMsg',
	LspReferenceRead  = 'InfoMsg',
	LspReferenceWrite = 'InfoMsg',

	--[[ 4.3. Programming Languages
		Everything in this section is OPTIONAL. Feel free to remove everything
		here if you don't want to define it, or add more if there's something
		missing.
	]]

	--[[ 4.3.1. C ]]
	cConstant    = 'Constant',
	cCustomClass = 'Type'    ,

	--[[ 4.3.2. C++ ]]
	cppSTLexception = 'Exception',
	cppSTLnamespace = 'String'   ,

	--[[ 4.3.3 C# ]]
	csBraces                       = 'Delimiter',
	csClass                        = 'Structure',
	csClassType                    = 'Type',
	csContextualStatement          = 'Conditional',
	csEndColon                     = 'Delimiter',
	csGeneric                      = 'Typedef',
	csInterpolation                = 'Include',
	csInterpolationDelimiter       = 'SpecialChar',
	csLogicSymbols                 = 'Operator',
	csModifier                     = 'Keyword',
	csNew                          = 'Operator',
	csNewType                      = 'Type',
	csParens                       = 'Delimiter',
	csPreCondit                    = 'PreProc',
	csQuote                        = 'Delimiter',
	csRepeat                       = 'Repeat',
	csStorage                      = 'StorageClass',
	csUnspecifiedStatement         = 'Statement',
	csXmlTag                       = 'Define',
	csXmlTagName                   = 'Define',
	razorCode                      = 'PreProc',
	razorcsLHSMemberAccessOperator = 'Noise',
	razorcsRHSMemberAccessOperator = 'razorcsLHSMemberAccessOperator',
	razorcsStringDelimiter         = 'razorhtmlValueDelimiter',
	razorcsTypeNullable            = 'Special',
	razorcsUnaryOperatorKeyword    = 'Operator',
	razorDelimiter                 = 'Delimiter',
	razorEventAttribute            = 'PreCondit',
	razorFor                       = 'razorIf',
	razorhtmlAttribute             = 'htmlArg',
	razorhtmlAttributeOperator     = 'Operator',
	razorhtmlTag                   = 'htmlTag',
	razorhtmlValueDelimiter        = 'Delimiter',
	razorIf                        = 'PreCondit',
	razorImplicitExpression        = 'PreProc',
	razorLine                      = 'Constant',
	razorUsing                     = 'Include',

	--[[ 4.3.4. CSS ]]
	cssAtRule              = 'PreCondit',
	cssAttr                = 'Keyword',
	cssAttrComma           = 'Noise',
	cssAttrRegion          = 'Keyword',
	cssBraces              = 'Delimiter',
	cssClassName           = 'Identifier',
	cssClassNameDot        = 'Noise',
	cssFlexibleBoxAttr     = 'cssAttr',
	cssFunctionComma       = 'Noise',
	cssImportant           = 'Exception',
	cssNoise               = 'Noise',
	cssProp                = 'Label',
	cssPseudoClass         = 'Special',
	cssPseudoClassId       = 'cssSelectorOp',
	cssSelectorOp          = 'Operator',
	cssTagName             = 'Structure',
	cssUnitDecorators      = 'Type',
	scssAmpersand          = 'Special',
	scssAttribute          = 'Noise',
	scssBoolean            = 'Boolean',
	scssDefault            = 'Keyword',
	scssElse               = 'scssIf',
	scssMixinName          = function(self)
		local super    = self.cssClassName
		return {bg     = super.bg, fg=super.fg, style='Italic'}
		end,
	scssIf                 = 'PreCondit',
	scssInclude            = 'Include',
	scssSelectorChar       = 'Delimiter',
	scssDefinition         = 'PreProc',
	scssSelectorName       = 'Identifier',
	scssVariable           = 'Define',
	scssVariableAssignment = 'Operator',

	--[[ 4.3.5. Dart ]]
	dartLibrary = 'Statement',

	--[[ 4.3.6. dot ]]
	dotKeyChar = 'Character',
	dotType    = 'Type'     ,

	--[[ 4.3.7. Go ]]
	goBlock                 = 'Delimiter' ,
	goBoolean               = 'Boolean'   ,
	goBuiltins              = 'Operator'  ,
	goField                 = 'Identifier',
	goFloat                 = 'Float'     ,
	goFormatSpecifier       = 'Character' ,
	goFunction              = 'Function'  ,
	goFunctionCall          = 'goFunction',
	goFunctionReturn        = {bg=NONE, fg=NONE, style=NONE},
	goMethodCall            = 'goFunctionCall',
	goParamType             = 'goReceiverType',
	goPointerOperator       = 'SpecialChar'   ,
	goPredefinedIdentifiers = 'Constant'      ,
	goReceiver              = 'goBlock'       ,
	goReceiverType          = 'goTypeName'    ,
	goSimpleParams          = 'goBlock'       ,
	goType                  = 'Type'          ,
	goTypeConstructor       = 'goFunction'    ,
	goTypeName              = 'Type'          ,
	goVarAssign             = 'Identifier'    ,
	goVarDefs               = 'goVarAssign'   ,

	--[[ 4.3.8. HTML ]]
	htmlArg            = 'Label',
	htmlBold           = {bg=NONE, fg=lightgrey, style='bold'},
	htmlTitle          = 'htmlBold',
	htmlEndTag         = 'htmlTag',
	htmlH1             = 'markdownH1',
	htmlH2             = 'markdownH2',
	htmlH3             = 'markdownH3',
	htmlH4             = 'markdownH4',
	htmlH5             = 'markdownH5',
	htmlH6             = 'markdownH6',
	htmlItalic         = {bg=NONE, fg=NONE, style='italic'},
	htmlSpecialTagName = 'Keyword',
	htmlTag            = 'Special',
	htmlTagN           = 'Typedef',
	htmlTagName        = 'Type',

	--[[ 4.3.9. Java ]]
	javaClassDecl = 'Structure',

	--[[ 4.3.10. JavaScript ]]
	jsFuncBlock   = 'Function'  ,
	jsObjectKey   = 'Type'      ,
	jsReturn      = 'Keyword'   ,
	jsVariableDef = 'Identifier',

	--[[ 4.3.11. JSON ]]
	jsonBraces        = 'Structure',
	jsonKeywordMatch  = 'Delimiter',
	jsonNull          = 'Constant' ,
	jsonQuote         = 'String'   ,
	jsonString        = 'Normal'   ,
	jsonStringSQError = 'Exception',

	--[[ 4.3.12. Make ]]
	makeCommands   = 'Statment',
	makeSpecTarget = 'Type'    ,

	--[[ 4.3.13. Markdown ]]
	markdownH1          = {bg=NONE,          fg=green_dark,  style='bold'  },
	markdownH2          = {bg=NONE,          fg=red_light,   style='bold'  },
	markdownH3          = {bg=NONE,          fg=green,       style='bold'  },
	markdownH4          = {bg=NONE,          fg=purple,      style='bold'  },
	markdownH5          = {bg=NONE,          fg=orange,      style='bold'  },
	markdownH6          = {bg=NONE,          fg=yellow,      style='bold'  },
	mkdBold             = 'SpecialComment'  ,
	mkdCode             = 'Keyword'         ,
	mkdCodeDelimiter    = 'mkdBold'         ,
	mkdCodeStart        = 'mkdCodeDelimiter',
	mkdCodeEnd          = 'mkdCodeStart'    ,
	mkdHeading          = 'Delimiter'       ,
	mkdItalic           = 'mkdBold'         ,
	mkdListItem         = 'Special'         ,
	mkdRule             = 'Underlined'      ,
	texMathMatcher      = 'Number'          ,
	texMathZoneX        = 'Number'          ,
	texMathZoneY        = 'Number'          ,

	--[[ 4.3.14. Python ]]
	pythonBrackets        = 'Delimiter'       ,
	pythonBuiltinFunc     = 'Operator'        ,
	pythonBuiltinObj      = 'Type'            ,
	pythonBuiltinType     = 'Type'            ,
	pythonClass           = 'Structure'       ,
	pythonClassParameters = 'pythonParameters',
	pythonDecorator       = 'PreProc'         ,
	pythonDottedName      = 'Identifier'      ,
	pythonError           = 'Error'           ,
	pythonException       = 'Exception'       ,
	pythonInclude         = 'Include'         ,
	pythonIndentError     = 'pythonError'     ,
	pythonLambdaExpr      = 'pythonOperator'  ,
	pythonOperator        = 'Operator'        ,
	pythonParam           = 'Identifier'      ,
	pythonParameters      = 'Delimiter'       ,
	pythonSelf            = 'Statement'       ,
	pythonSpaceError      = 'pythonError'     ,
	pythonStatement       = 'Statement'       ,

	--[[ 4.3.15. Ruby ]]
	rubyClass                  = 'Structure',
	rubyDefine                 = 'Define'   ,
	rubyInterpolationDelimiter = 'Delimiter',

	--[[ 4.3.16. Rust ]]
	rustAssert     = 'Debug'      ,
	rustConstraint = 'Operator'   ,
	rustDynKeyword = 'rustStorage',
	rustGeneric    = 'Delimiter'  ,
	rustEscape     = 'SpecialChar',
	rustIdentifier = 'Identifier' ,
	rustKeyword    = 'Keyword'    ,
	rustLifetime   = 'Label'      ,
	rustModPath    = 'Include'    ,
	rustNoise      = 'Delimiter'  ,
	rustPanic      = 'Exception'  ,
	rustRepeat     = 'Repeat'     ,
	rustScopeDecl  = 'Delimiter'  ,
	rustStructure  = 'Structure'  ,
	rustUnused     = 'Special'    ,

	--[[ 4.3.17. Scala ]]
	scalaKeyword        = 'Keyword'   ,
	scalaNameDefinition = 'Identifier',

	--[[ 4.3.18. shell ]]
	shDerefSimple = 'SpecialChar',
	shFunctionKey = 'Function'   ,
	shLoop        = 'Repeat'     ,
	shParen       = 'Delimiter'  ,
	shQuote       = 'Delimiter'  ,
	shSet         = 'Statement'  ,
	shTestOpr     = 'Debug'      ,

	--[[ 4.3.19. Solidity ]]
	solBuiltinType  = 'Type'    ,
	solContract     = 'Typedef' ,
	solContractName = 'Function',

	--[[ 4.3.20. TOML ]]
	tomlComment = 'Comment'     ,
	tomlDate    = 'Special'     ,
	tomlFloat   = 'Float'       ,
	tomlKey     = 'Label'       ,
	tomlTable   = 'StorageClass',

	--[[ 4.3.21. VimScript ]]
	vimFgBgAttrib  = 'Constant'  ,
	vimHiCterm     = 'Label'     ,
	vimHiCtermFgBg = 'vimHiCterm',
	vimHiGroup     = 'Typedef'   ,
	vimHiGui       = 'vimHiCterm',
	vimHiGuiFgBg   = 'vimHiGui'  ,
	vimHiKeyList   = 'Operator'  ,
	vimOption      = 'Keyword'   ,
	vimScriptDelim = 'Ignore'    ,
	vimSet         = 'String'    ,
	vimSetEqual    = 'Operator'  ,
	vimSetSep      = 'Delimiter' ,

	--[[ 4.3.22. XML ]]
	xmlAttrib  = 'Label'    ,
	xmlEndTag  = 'Exception',
	xmlEqual   = 'Operator' ,
	xmlTag     = 'Delimiter',
	xmlTagName = 'Define'   ,

	--[[ 4.3.23 Haskell ]]
	haskellType           = 'Type'      ,
	haskellIdentifier     = 'Identifier',
	haskellOperators      = 'Operator'  ,
	haskellWhere          = 'Keyword'   ,
	haskellDelimiter      = 'Delimiter' ,
	haskellImportKeywords = 'Include'   ,
	haskellStatement      = 'Statement' ,

	--[[ 4.3.24 Lua ]]
	luaBraces               = 'Structure',
	luaBrackets             = 'Delimiter',
	luaBuiltin              = 'Keyword',
	luaComma                = 'Delimiter',
	luaFuncArgName          = 'Identifier',
	luaFuncCall             = 'Function',
	luaFuncId               = 'luaNoise',
	luaFuncKeyword          = 'Type',
	luaFuncName             = 'Function',
	luaFuncParens           = 'Delimiter',
	luaFuncTable            = 'Structure',
	luaIn                   = 'luaRepeat',
	luaLocal                = 'Type',
	luaNoise                = 'Delimiter',
	luaParens               = 'Delimiter',
	luaSpecialTable         = 'Structure',
	luaSpecialValue         = 'Function',
	luaStringLongTag        = function(self)
		local delimiter = self.Delimiter
		return {bg      = delimiter.bg, fg=delimiter.fg, style='italic'}
		end,

	--[[ 4.3.25. SQL ]]
	sqlKeyword   = 'Keyword'  ,
	sqlParen     = 'Delimiter',
	sqlSpecial   = 'Constant' ,
	sqlStatement = 'Statement',
	sqlParenFunc = 'Function' ,

	--[[ 4.3.26. dos INI ]]
	dosiniHeader = 'Title',
	dosiniLabel  = 'Label',

	--[[ 4.3.27. Crontab ]]
	crontabDay  = 'StorageClass',
	crontabDow  = 'String'      ,
	crontabHr   = 'Number'      ,
	crontabMin  = 'Float'       ,
	crontabMnth = 'Structure'   ,

	--[[ 4.3.28. PlantUML ]]
	plantumlArrowLR   = 'Statement',
	plantumlColonLine = NONE       ,
	plantumlMindmap   = 'Label'    ,
	plantumlMindmap2  = 'Label'    ,

	--[[ 4.3.33. YAML ]]
	yamlKey             = 'Label',
	yamlBlockMappingKey = { bg=black, fg=red,   style=NONE },
	yamlPlainScalar     = { bg=black, fg=green, style=NONE },

	--[[ 4.3.34. Git ]]
	diffAdded              = 'DiffAdd'              ,
	diffRemoved            = 'DiffDelete'           ,
	gitcommitHeader        = 'SpecialComment'       ,
	gitcommitDiscardedFile = 'gitcommitSelectedFile',
	gitcommitOverFlow      = 'Error'                ,
	gitcommitSelectedFile  = 'Directory'            ,
	gitcommitSummary       = 'Title'                ,
	gitcommitUntrackedFile = 'gitcommitSelectedFile',
	gitconfigAssignment    = 'String'               ,
	gitconfigEscape        = 'SpecialChar'          ,
	gitconfigNone          = 'Operator'             ,
	gitconfigSection       = 'Structure'            ,
	gitconfigVariable      = 'Label'                ,
	gitrebaseBreak         = 'Keyword'              ,
	gitrebaseCommit        = 'Tag'                  ,
	gitrebaseDrop          = 'Exception'            ,
	gitrebaseEdit          = 'Define'               ,
	gitrebaseExec          = 'PreProc'              ,
	gitrebaseFixup         = 'gitrebaseSquash'      ,
	gitrebaseMerge         = 'PreProc'              ,
	gitrebasePick          = 'Include'              ,
	gitrebaseReset         = 'gitrebaseLabel'       ,
	gitrebaseReword        = 'gitrebasePick'        ,
	gitrebaseSquash        = 'Macro'                ,
	gitrebaseSummary       = 'Normal'               ,

	--[[ 4.3.35 Help ]]
	helpHeader        = 'Label'     ,
	helpOption        = 'Keyword'   ,
	helpHeadline      = 'Title'     ,
	helpSectionDelim  = 'Delimiter' ,
	helpHyperTextJump = 'Underlined',

	--[[ 4.4. Plugins
		Everything in this section is OPTIONAL. Feel free to remove everything
		here if you don't want to define it, or add more if there's something
		missing.
	]]
	--[[ 4.4.1. ALE ]]
	ALEErrorSign   = 'ErrorMsg'  ,
	ALEWarningSign = 'WarningMsg',

	--[[ 4.4.2. vim-jumpmotion / vim-easymotion ]]
	EasyMotion = 'IncSearch' ,
	JumpMotion = 'EasyMotion',

	--[[ 4.4.3. vim-markdown ]]
	htmlH1 = 'markdownH1',
	htmlH2 = 'markdownH2',
	htmlH3 = 'markdownH3',
	htmlH4 = 'markdownH4',
	htmlH5 = 'markdownH5',
	htmlH6 = 'markdownH6',

	--[[ 4.4.4. vim-gitgutter / vim-signify ]]
	GitGutterAdd          = {bg=NONE,  fg=green,   style=NONE},
	GitGutterChange       = {bg=NONE,  fg=yellow,  style=NONE},
	GitGutterDelete       = {bg=NONE,  fg=red,     style=NONE},
	GitGutterChangeDelete = {bg=NONE,  fg=orange,  style=NONE},

	SignifySignAdd          = 'GitGutterAdd'         ,
	SignifySignChange       = 'GitGutterChange'      ,
	SignifySignDelete       = 'GitGutterDelete'      ,
	SignifySignChangeDelete = 'GitGutterChangeDelete',

	--[[ 4.4.5. vim-indent-guides ]]
	IndentGuidesOdd  = {bg=darkgrey,   fg=NONE, style=NONE},
	IndentGuidesEven = {bg=grey,       fg=NONE, style=NONE},

	--[[ 4.4.7. NERDTree ]]
	NERDTreeCWD        = 'Label'           ,
	NERDTreeUp         = 'Operator'        ,
	NERDTreeDir        = 'Directory'       ,
	NERDTreeDirSlash   = 'Delimiter'       ,
	NERDTreeOpenable   = 'NERDTreeDir'     ,
	NERDTreeClosable   = 'NERDTreeOpenable',
	NERDTreeExecFile   = 'Function'        ,
	NERDTreeLinkTarget = 'Tag'             ,

	--[[ 4.4.8. nvim-treesitter ]]
	TSAnnotation         = 'SpecialChar',
	TSAttribute          = 'Normal',
	TSBoolean            = 'Boolean',
	TSCharacter          = 'Character',
	TSComment            = 'Comment',
	TSConstructor        = 'Typedef',
	TSConditional        = 'Conditional',
	TSConstant           = 'Constant',
	TSConstBuiltin       = 'Type',
	TSConstMacro         = 'Define',
	TSError              = 'Error',
	TSException          = 'Exception',
	TSField              = 'Identifier',
	TSFloat              = 'Float',
	TSFunction           = 'Function',
	TSFuncBuiltin        = 'Special',
	TSFuncMacro          = 'Macro',
	TSInclude            = 'Include',
	TSKeyword            = 'Keyword',
	TSKeywordFunction    = 'Keyword',
	TSLabel              = 'Label',
	TSMethod             = 'Function',
	TSNamespace          = 'Include',
	TSNone               = 'NONE',
	TSNumber             = 'Number',
	TSOperator           = 'Operator',
	TSParameter          = 'Identifier',
	TSParameterReference = 'Type',
	TSProperty           = 'Identifier',
	TSPunctDelimiter     = 'Delimiter',
	TSPunctBracket       = 'Delimiter',
	TSPunctSpecial       = 'Special',
	TSRepeat             = 'Repeat',
	TSString             = 'String',
	TSStringRegex        = 'String',
	TSStringEscape       = 'SpecialChar',
	TSTag                = 'Tag',
	TSTagDelimiter       = 'Delimiter',
	TSText               = 'String',
	TSEmphasis           = 'Underlined',
	TSUnderline          = 'Underlined',
	TSTitle              = 'Comment',
	TSLiteral            = 'Character',
	TSURI                = 'Tag',
	TSType               = 'Type',
	TSTypeBuiltin        = 'Type',
	TSVariable           = 'Identifier',
	TSVariableBuiltin    = 'Identifier',

	--[[ 4.4.9 SearchLight ]]
	SearchLight = {bg=black, fg=orange, style={'bold', 'italic', 'underline'}},

	--[[ 4.4.10 Sneak ]]
	Sneak      = {bg=red,    fg=black,  style='bold'               },
	SneakScope = {bg=black,  fg=orange, style={'bold', 'underline'}},

	--[[ 4.4.11 Which key ]]
	WhichKey          = 'Function' ,
	WhichKeySeperator = {bg=black,  fg=green,  style=NONE },
	WhichKeyGroup     = 'Keyword'  ,
	WhichKeyDesc      = {bg=black,  fg=orange, style=NONE },
	WhichKeyFloating  = 'Pmenu'    ,

	--[[ 4.4.12 conflict-marker ]]
	ConflictMarkerBegin               = {bg=black,  fg=purple,  style=NONE },
	ConflictMarkerEnd                 = {bg=black,  fg=purple,  style=NONE },
	ConflictMarkerOurs                = {bg=black,  fg=green,   style=NONE },
	ConflictMarkerTheirs              = {bg=black,  fg=red,     style=NONE },
	ConflictMarkerCommonAncestorsHunk = {bg=black,  fg=orange,  style=NONE },

	--[[ 4.4.13 hlslens ]]
	HlSearchLensCur = 'SearchLight',
	HlSearchLens    = 'IncSearch',
	HlSearchCur     = 'SearchLight',

	--[[ 4.4.14 pandoc ]]
	pandocAtxHeader                  = { bg=black, fg=aqua,   style=NONE },
	pandocAtxStart                   = { bg=black, fg=orange, style=NONE },
	pandocDelimitedCodeBlockStart    = { bg=black, fg=green,  style=NONE },
	pandocDelimitedCodeBlockEnd      = { bg=black, fg=green,  style=NONE },
	pandocDelimitedCodeBlockLanguage = 'Comment',
	pandocListItemBullet             = { bg=black, fg=purple, style=NONE },
	pandocUListItemBullet            = { bg=black, fg=purple, style=NONE },
	pandocReferenceURL               = { bg=black, fg=pink,   style={'underline'      }},
	pandocReferenceDefinition        = { bg=black, fg=aqua,   style={'bold'           }},
	pandocEmphasis                   = { bg=black, fg=purple, style={'italic'         }},
	pandocStrong                     = { bg=black, fg=purple, style={'bold'           }},
	pandocStrongEmphasis             = { bg=black, fg=purple, style={'bold', 'italic' }},
	pandocStrongInEmphasis           = 'pandocStrongEmphasis',
	pandocEmphasisInStrong           = 'pandocStrongEmphasis',

	--[[ 4.4.15 nvim-cmp ]]
	CmpItemKind           = {bg=black,      fg=orange,      style=NONE         },
	CmpItemMenu           = {bg=black,      fg=NONE,        style=NONE         },
	CmpItemAbbr           = {bg=black,      fg=aqua,        style=NONE         },
	CmpItemAbbrMatch      = {bg=black,      fg=red,         style='bold'       },
	CmpItemAbbrMatchFuzzy = {bg=black,      fg=aqua,        style='bold'       },
	CmpItemAbbrDeprecated = {bg=black,      fg=purple,      style=NONE         },

	--[[ 4.4.16 Hop ]]
	HopNextKey   = {bg=red  , fg=black    , style='bold'},
	HopNextKey1  = {bg=black, fg=orange   , style='bold'},
	HopNextKey2  = {bg=black, fg=purple   , style='bold'},
	HopUnmatched = {bg=black, fg=lightgrey, style='bold'},
	HopCursor    = {bg=black, fg=aqua     , style='bold'},
}

-- We do not care about terminals which do not support 256 colors
local terminal_ansi_colors = { }

require('yolokai')(
	highlight_group_normal,
	highlight_groups,
	terminal_ansi_colors
)

EOF
