html = {}

function html.get_keywords()
  local keywords0_set = "a abbr acronym address applet area b base basefont bdo bgsound big blink blockquote body br button caption center cite code col colgroup dd del dfn dir div dl dt em fieldset font form frame frameset h1 h2 h3 h4 h5 h6 head hr html i iframe img input ins isindex kbd label legend li link listing map marquee menu menuitem meta multicol nobr noembed noframes noscript object ol optgroup option p param plaintext pre q s samp script select small spacer span strike strong style sub sup table tbody td textarea tfoot th thead title tr tt u ul var xml xmlns xmp address article aside audio base bdi canvas command details datalist dialog embed figure figcaption footer header hgroup keygen main mark menu meter nav output picture progress ruby rb rt rtc rp section source template track time video wbr"
  keywords1_set = "abbr accept-charset accept accesskey action align alink allowtransparency alt archive axis background bgcolor border bordercolor bottommargin cellpadding cellspacing char charoff charset checked cite class classid clear codebase codetype color cols colspan compact content coords data datafld dataformatas datapagesize datasrc datetime declare defer dir disabled enctype event face for frame frameborder framespacing headers height href hreflang hspace http-equiv id is ismap itemid itemprop itemref itemscope itemtype label lang language leftmargin link longdesc lowsrc marginwidth marginheight maxlength media method methods multiple name nohref noresize noshade nowrap object onblur onchange onclick ondblclick onfocus onkeydown onkeypress onkeyup onload onmousedown onmousemove onmouseover onmouseout onmouseup onreset onselect onsubmit onunload profile prompt readonly rel rev rightmargin rows rowspan rules scheme scope scrolling selected shape size span src standby start style summary tabindex target text title topmargin type usemap urn valign value valuetype version vlink vspace width text password checkbox radio submit reset file hidden image allowfullscreen allowpaymentrequest async autocomplete autofocus autoplay controls contenteditable contextmenu crossorigin default dirname download draggable form formaction formenctype formmethod formnovalidate formtarget high kind list low loop manifest max muted min minlength nonce novalidate open optimum onabort onaddtrack onafterprint onauxclick onbeforeprint onbeforeunload oncancel oncanplay oncanplaythrough onclose oncopy oncuechange oncut ondrag ondragend ondragenter ondragexit ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended onerror onenter onexit onhashchange oninput oninvalid onlanguagechange onloadeddata onloadedmetadata onloadend onloadstart onmessage onmouseenter onmouseleave onoffline ononline onpagehide onpageshow onpaste onpause onplay onplaying onprogress onpopstate onratechange onremovetrack onresize onrejectionhandled onresize onscroll onseeked onseeking onshow onstalled onstorage onsuspend ontimeupdate ontoggle onunhandledrejection onvolumechange onwaiting onwheel pattern placeholder poster preload referrerpolicy required reversed role sandbox scoped seamless sizes spellcheck srcdoc srclang srcset step translate typemustmatch wrap"
  keywords2_set = "abstract boolean break byte case catch char class const continue debugger default delete do double else enum export extends final finally float for function goto if implements import in instanceof int interface long native new package private protected public return short static super switch synchronized this throw throws transient try typeof var void volatile while with"
  keywords3_set = "addressof alias and as attribute base begin binary boolean byref byte byval call case cdbl cint clng compare const csng cstr currency date decimal declare defbool defbyte defcur defdate defdbl defdec defint deflng defobj defsng defstr defvar dim do double each else elseif empty end enum eqv erase error event exit explicit false for friend function get global gosub goto if imp implements in input integer is len let lib like load lock long loop lset me mid midb mod new next not nothing null object on option optional or paramarray preserve print private property public raiseevent randomize redim rem resume return rset seek select set single static step stop string sub text then time to true type typeof unload until variant wend while with withevents xor"
  keywords4_set = "and as assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while with yield False None True and as assert break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield"
  keywords5_set = "and array as bool boolean break case cfunction class const continue declare default die directory do double echo else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval exit extends false float for foreach function global goto if include include_once int integer isset list namespace new null object old_function or parent print real require require_once resource return static stdclass string switch true unset use var while xor abstract catch clone exception final implements interface php_user_filter private protected public this throw try __class__ __dir__ __file__ __function__ __line__ __method__ __namespace__ __sleep __wakeup substr"
  return keywords0_set,keywords1_set,keywords2_set,keywords3_set,keywords4_set,keywords5_set
end

function html.get_autocomplete()
  local autocomplete_set = "a abbr accept accept-charset accesskey acronym action address address align alink allowfullscreen allowpaymentrequest allowtransparency alt applet archive area article aside async audio autocomplete autofocus autoplay axis b background base base basefont bdi bdo bgcolor bgsound big blink blockquote body border bordercolor bottommargin br button canvas caption cellpadding cellspacing center char charoff charset checkbox checked cite class classid clear code codebase codetype col colgroup color cols colspan command compact content contenteditable contextmenu controls coords crossorigin data datafld dataformatas datalist datapagesize datasrc datetime dd declare default defer del details dfn dialog dir dirname disabled div dl download draggable dt em embed enctype event face fieldset figcaption figure file font footer for form formaction formenctype formmethod formnovalidate formtarget frame frameborder frameset framespacing h1 h2 h3 h4 h5 h6 head header headers height hgroup hidden high hr href hreflang hspace html http-equiv i id iframe image img input ins is isindex ismap itemid itemprop itemref itemscope itemtype kbd keygen kind label lang language leftmargin legend li link list listing longdesc loop low lowsrc main manifest map marginheight marginwidth mark marquee max maxlength media menu menu menuitem meta meter method methods min minlength multicol multiple muted name nav nobr noembed noframes nohref nonce noresize noscript noshade novalidate nowrap object ol onabort onaddtrack onafterprint onauxclick onbeforeprint onbeforeunload onblur oncancel oncanplay oncanplaythrough onchange onclick onclose oncopy oncuechange oncut ondblclick ondrag ondragend ondragenter ondragexit ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended onenter onerror onexit onfocus onhashchange oninput oninvalid onkeydown onkeypress onkeyup onlanguagechange onload onloadeddata onloadedmetadata onloadend onloadstart onmessage onmousedown onmouseenter onmouseleave onmousemove onmouseout onmouseover onmouseup onoffline ononline onpagehide onpageshow onpaste onpause onplay onplaying onpopstate onprogress onratechange onrejectionhandled onremovetrack onreset onresize onresize onscroll onseeked onseeking onselect onshow onstalled onstorage onsubmit onsuspend ontimeupdate ontoggle onunhandledrejection onunload onvolumechange onwaiting onwheel open optgroup optimum option output p param password pattern picture placeholder plaintext poster pre preload profile progress prompt q radio rb readonly referrerpolicy rel required reset rev reversed rightmargin role rows rowspan rp rt rtc ruby rules s samp sandbox scheme scope scoped script scrolling seamless section select selected shape size sizes small source spacer span spellcheck src srcdoc srclang srcset standby start step strike strong style sub submit summary sup tabindex table target tbody td template text text textarea tfoot th thead time title topmargin tr track translate tt type typemustmatch u ul urn usemap valign value valuetype var version video vlink vspace wbr width wrap xml xmlns xmp"
  return autocomplete_set
end

function html.create_bakup(path)
  local html_code = {
    "user_html = {}\n",
    "function user_html.get_keywords()\n",
    "  local keywords0_set = \"a abbr acronym address applet area b base basefont bdo bgsound big blink blockquote body br button caption center cite code col colgroup dd del dfn dir div dl dt em fieldset font form frame frameset h1 h2 h3 h4 h5 h6 head hr html i iframe img input ins isindex kbd label legend li link listing map marquee menu menuitem meta multicol nobr noembed noframes noscript object ol optgroup option p param plaintext pre q s samp script select small spacer span strike strong style sub sup table tbody td textarea tfoot th thead title tr tt u ul var xml xmlns xmp address article aside audio base bdi canvas command details datalist dialog embed figure figcaption footer header hgroup keygen main mark menu meter nav output picture progress ruby rb rt rtc rp section source template track time video wbr\"\n",
    "  keywords1_set = \"abbr accept-charset accept accesskey action align alink allowtransparency alt archive axis background bgcolor border bordercolor bottommargin cellpadding cellspacing char charoff charset checked cite class classid clear codebase codetype color cols colspan compact content coords data datafld dataformatas datapagesize datasrc datetime declare defer dir disabled enctype event face for frame frameborder framespacing headers height href hreflang hspace http-equiv id is ismap itemid itemprop itemref itemscope itemtype label lang language leftmargin link longdesc lowsrc marginwidth marginheight maxlength media method methods multiple name nohref noresize noshade nowrap object onblur onchange onclick ondblclick onfocus onkeydown onkeypress onkeyup onload onmousedown onmousemove onmouseover onmouseout onmouseup onreset onselect onsubmit onunload profile prompt readonly rel rev rightmargin rows rowspan rules scheme scope scrolling selected shape size span src standby start style summary tabindex target text title topmargin type usemap urn valign value valuetype version vlink vspace width text password checkbox radio submit reset file hidden image allowfullscreen allowpaymentrequest async autocomplete autofocus autoplay controls contenteditable contextmenu crossorigin default dirname download draggable form formaction formenctype formmethod formnovalidate formtarget high kind list low loop manifest max muted min minlength nonce novalidate open optimum onabort onaddtrack onafterprint onauxclick onbeforeprint onbeforeunload oncancel oncanplay oncanplaythrough onclose oncopy oncuechange oncut ondrag ondragend ondragenter ondragexit ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended onerror onenter onexit onhashchange oninput oninvalid onlanguagechange onloadeddata onloadedmetadata onloadend onloadstart onmessage onmouseenter onmouseleave onoffline ononline onpagehide onpageshow onpaste onpause onplay onplaying onprogress onpopstate onratechange onremovetrack onresize onrejectionhandled onresize onscroll onseeked onseeking onshow onstalled onstorage onsuspend ontimeupdate ontoggle onunhandledrejection onvolumechange onwaiting onwheel pattern placeholder poster preload referrerpolicy required reversed role sandbox scoped seamless sizes spellcheck srcdoc srclang srcset step translate typemustmatch wrap\"\n",
    "  keywords2_set = \"abstract boolean break byte case catch char class const continue debugger default delete do double else enum export extends final finally float for function goto if implements import in instanceof int interface long native new package private protected public return short static super switch synchronized this throw throws transient try typeof var void volatile while with\"\n",
    "  keywords3_set = \"addressof alias and as attribute base begin binary boolean byref byte byval call case cdbl cint clng compare const csng cstr currency date decimal declare defbool defbyte defcur defdate defdbl defdec defint deflng defobj defsng defstr defvar dim do double each else elseif empty end enum eqv erase error event exit explicit false for friend function get global gosub goto if imp implements in input integer is len let lib like load lock long loop lset me mid midb mod new next not nothing null object on option optional or paramarray preserve print private property public raiseevent randomize redim rem resume return rset seek select set single static step stop string sub text then time to true type typeof unload until variant wend while with withevents xor\"\n",
    "  keywords4_set = \"and as assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while with yield False None True and as assert break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield\"\n",
    "  keywords5_set = \"and array as bool boolean break case cfunction class const continue declare default die directory do double echo else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval exit extends false float for foreach function global goto if include include_once int integer isset list namespace new null object old_function or parent print real require require_once resource return static stdclass string switch true unset use var while xor abstract catch clone exception final implements interface php_user_filter private protected public this throw try __class__ __dir__ __file__ __function__ __line__ __method__ __namespace__ __sleep __wakeup substr\"\n",
    "  return keywords0_set,keywords1_set,keywords2_set,keywords3_set,keywords4_set,keywords5_set\n",
    "end\n",
    "\n",
    "function user_html.get_autocomplete()\n",
    "  local autocomplete_set = \"a abbr accept accept-charset accesskey acronym action address address align alink allowfullscreen allowpaymentrequest allowtransparency alt applet archive area article aside async audio autocomplete autofocus autoplay axis b background base base basefont bdi bdo bgcolor bgsound big blink blockquote body border bordercolor bottommargin br button canvas caption cellpadding cellspacing center char charoff charset checkbox checked cite class classid clear code codebase codetype col colgroup color cols colspan command compact content contenteditable contextmenu controls coords crossorigin data datafld dataformatas datalist datapagesize datasrc datetime dd declare default defer del details dfn dialog dir dirname disabled div dl download draggable dt em embed enctype event face fieldset figcaption figure file font footer for form formaction formenctype formmethod formnovalidate formtarget frame frameborder frameset framespacing h1 h2 h3 h4 h5 h6 head header headers height hgroup hidden high hr href hreflang hspace html http-equiv i id iframe image img input ins is isindex ismap itemid itemprop itemref itemscope itemtype kbd keygen kind label lang language leftmargin legend li link list listing longdesc loop low lowsrc main manifest map marginheight marginwidth mark marquee max maxlength media menu menu menuitem meta meter method methods min minlength multicol multiple muted name nav nobr noembed noframes nohref nonce noresize noscript noshade novalidate nowrap object ol onabort onaddtrack onafterprint onauxclick onbeforeprint onbeforeunload onblur oncancel oncanplay oncanplaythrough onchange onclick onclose oncopy oncuechange oncut ondblclick ondrag ondragend ondragenter ondragexit ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended onenter onerror onexit onfocus onhashchange oninput oninvalid onkeydown onkeypress onkeyup onlanguagechange onload onloadeddata onloadedmetadata onloadend onloadstart onmessage onmousedown onmouseenter onmouseleave onmousemove onmouseout onmouseover onmouseup onoffline ononline onpagehide onpageshow onpaste onpause onplay onplaying onpopstate onprogress onratechange onrejectionhandled onremovetrack onreset onresize onresize onscroll onseeked onseeking onselect onshow onstalled onstorage onsubmit onsuspend ontimeupdate ontoggle onunhandledrejection onunload onvolumechange onwaiting onwheel open optgroup optimum option output p param password pattern picture placeholder plaintext poster pre preload profile progress prompt q radio rb readonly referrerpolicy rel required reset rev reversed rightmargin role rows rowspan rp rt rtc ruby rules s samp sandbox scheme scope scoped script scrolling seamless section select selected shape size sizes small source spacer span spellcheck src srcdoc srclang srcset standby start step strike strong style sub submit summary sup tabindex table target tbody td template text text textarea tfoot th thead time title topmargin tr track translate tt type typemustmatch u ul urn usemap valign value valuetype var version video vlink vspace wbr width wrap xml xmlns xmp\"\n",
    "  return autocomplete_set\n",
    "end\n",
    "return user_html",
  }
  local shell_code = table.concat(html_code)
  eu_core.save_file(path, shell_code)
  shell_code = nil
  html_code = nil
end

return html