[
    {
        "name": "Html.Keyed",
        "comment": " A keyed node helps optimize cases where children are getting added, moved,\nremoved, etc. Common examples include:\n\n  - The user can delete items from a list.\n  - The user can create new items in a list.\n  - You can sort a list based on name or date or whatever.\n\nWhen you use a keyed node, every child is paired with a string identifier. This\nmakes it possible for the underlying diffing algorithm to reuse nodes more\nefficiently.\n\n# Keyed Nodes\n@docs node\n\n# Commonly Keyed Nodes\n@docs ol, ul\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "node",
                "comment": " Works just like `Html.node`, but you add a unique identifier to each child\nnode. You want this when you have a list of nodes that is changing: adding\nnodes, removing nodes, etc. In these cases, the unique identifiers help make\nthe DOM modifications more efficient.\n",
                "type": "String -> List (Attribute msg) -> List ( String, Html msg ) -> Html msg"
            },
            {
                "name": "ol",
                "comment": "",
                "type": "List (Attribute msg) -> List ( String, Html msg ) -> Html msg"
            },
            {
                "name": "ul",
                "comment": "",
                "type": "List (Attribute msg) -> List ( String, Html msg ) -> Html msg"
            }
        ],
        "binops": []
    },
    {
        "name": "Html.App",
        "comment": " These functions will help you set up an Elm program that follows [the Elm\nArchitecture][arch], a pattern for creating great code that *stays* great as\nyour project grows.\n\nIf you are totally new to Elm, you should only worry about the `beginnerProgram`\nfunction. As you progress through [the tutorial][arch], more advanced functions\nlike `program` and `map` will be introduced gradually. The hope is that every\ntime Elm needs you to learn something, the usage path will clearly motivate and\nexplain the new concept!\n\n[arch]: https://github.com/evancz/elm-architecture-tutorial/\n\n# Nesting Views\n@docs map\n\n# Create a Program\n\nEvery Elm app needs to define a `main` value. That is what we are going to\nshow on screen. The following functions help you define `main`, so your first\nElm program will likely contain a definition like:\n\n    main =\n      Html.beginnerProgram\n        { model = model\n        , view = view\n        , update = update\n        }\n\nIf you are using `elm-reactor` you will just see everything on screen. If you\nare using `elm-make` it will be generating HTML files that you can open in any\nbrowser.\n\n@docs beginnerProgram, program, programWithFlags\n\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "beginnerProgram",
                "comment": " Create a [`Program`][program] that specifies how your whole app should\nwork. The essense of every Elm program is:\n\n  * **Model** &mdash; a nice representation of your application state.\n  * **View** &mdash; a function that turns models into HTML.\n  * **Update** &mdash; given a user-input messages and the model, produce a new model.\n\nBetween these three things, you have everything you need! When the user clicks\non a button, it produces a message. That message is piped into the `update`\nfunction, producing a new model. We use the `view` function to show the new\nmodel on screen. And then we just repeat this forever!\n\nCheck out [the Elm Architecture Tutorial][tutorial] for a a more complete\nexplanation along with some examples!\n\n[program]: http://package.elm-lang.org/packages/elm-lang/core/latest/Platform#Program\n[tutorial]: https://github.com/evancz/elm-architecture-tutorial\n\n",
                "type": "{ model : model, view : model -> Html msg, update : msg -> model -> model } -> Program Never"
            },
            {
                "name": "map",
                "comment": " This function is useful when nesting components with [the Elm\nArchitecture](https://github.com/evancz/elm-architecture-tutorial/). It lets\nyou transform the messages produced by a subtree.\n\nSay you have a node named `button` that produces `()` values when it is\nclicked. To get your model updating properly, you will probably want to tag\nthis `()` value like this:\n\n    type Msg = Click | ...\n\n    update msg model =\n      case msg of\n        Click ->\n          ...\n\n    view model =\n      map (\\_ -> Click) button\n\nSo now all the events produced by `button` will be transformed to be of type\n`Msg` so they can be handled by your update function!\n",
                "type": "(a -> msg) -> Html a -> Html msg"
            },
            {
                "name": "program",
                "comment": " Create a [`Program`][program] that specifies how your whole app should\nwork. Here we extend the basic model/view/update pattern we saw in\n`beginnerProgram` with a few things.\n\n> I would very highly recommend reading [the Elm Architecture Tutorial][tutorial]\nfor a proper introduction to all the new pieces here.\n\n[program]: http://package.elm-lang.org/packages/elm-lang/core/latest/Platform#Program\n[tutorial]: https://github.com/evancz/elm-architecture-tutorial\n\nFirst we augment the `model` and `update` functions to return a pair of\n`model` and `Cmd msg`. A [command][cmd] is a way of saying “Hey Elm, I need\nyou to perform all these tasks.” This lets us update our model *and* make HTTP\nrequests or whatever else.\n\nSecond we add a `subscriptions` function. Similar to `view` it is always\napplied to the latest model, but instead of HTML it gives us a list of\n*subscriptions*. A [subscription][sub] is a way of saying “Hey Elm, I need\nyou to listen for any updates about these various things.” Now when you get\na geolocation change or a websocket message, it will be given to your update\nfunction.\n\n[cmd]: http://package.elm-lang.org/packages/elm-lang/core/latest/Platform-Cmd\n[sub]: http://package.elm-lang.org/packages/elm-lang/core/latest/Platform-Sub\n\nNow again, it is very important that you read [the Elm Architecture Tutorial][tutorial]\nbecause it describes how these building blocks work and how you can put them\ntogether into a nice modular architecture. I swear it will be faster to read\nthrough than to muddle around and try to sort it out by trial-and-error.\n",
                "type": "{ init : ( model, Cmd msg ), update : msg -> model -> ( model, Cmd msg ), subscriptions : model -> Sub msg, view : model -> Html msg } -> Program Never"
            },
            {
                "name": "programWithFlags",
                "comment": " Same as `program` but it lets you demand flags on initialization. So the\nJavaScript code to start a program with flags might look like this:\n\n```javascript\n// Program { userID : String, token : String }\n\nvar app = Elm.MyApp.fullscreen({\n    userID: 'Tom',\n    token: '12345'\n});\n```\n",
                "type": "{ init : flags -> ( model, Cmd msg ), update : msg -> model -> ( model, Cmd msg ), subscriptions : model -> Sub msg, view : model -> Html msg } -> Program flags"
            }
        ],
        "binops": []
    },
    {
        "name": "Html.Events",
        "comment": "\nIt is often helpful to create an [Union Type][] so you can have many different kinds\nof events as seen in the [TodoMVC][] example.\n\n[Union Type]: http://elm-lang.org/learn/Union-Types.elm\n[TodoMVC]: https://github.com/evancz/elm-todomvc/blob/master/Todo.elm\n\n# Mouse Helpers\n@docs onClick, onDoubleClick,\n      onMouseDown, onMouseUp,\n      onMouseEnter, onMouseLeave,\n      onMouseOver, onMouseOut\n\n# Form Helpers\n@docs onInput, onCheck, onSubmit\n\n# Focus Helpers\n@docs onBlur, onFocus\n\n# Custom Event Handlers\n@docs on, onWithOptions, Options, defaultOptions\n\n# Custom Decoders\n@docs targetValue, targetChecked, keyCode\n",
        "unions": [],
        "aliases": [
            {
                "name": "Options",
                "comment": " Options for an event listener. If `stopPropagation` is true, it means the\nevent stops traveling through the DOM so it will not trigger any other event\nlisteners. If `preventDefault` is true, any built-in browser behavior related\nto the event is prevented. For example, this is used with touch events when you\nwant to treat them as gestures of your own, not as scrolls.\n",
                "args": [],
                "type": "{ stopPropagation : Bool, preventDefault : Bool }"
            }
        ],
        "values": [
            {
                "name": "defaultOptions",
                "comment": " Everything is `False` by default.\n\n    defaultOptions =\n        { stopPropagation = False\n        , preventDefault = False\n        }\n",
                "type": "Options"
            },
            {
                "name": "keyCode",
                "comment": " A `Json.Decoder` for grabbing `event.keyCode`. This helps you define\nkeyboard listeners like this:\n\n    import Json.Decode as Json\n\n    onKeyUp : (Int -> msg) -> Attribute msg\n    onKeyUp tagger =\n      on \"keyup\" (Json.map tagger keyCode)\n\n**Note:** It looks like the spec is moving away from `event.keyCode` and\ntowards `event.key`. Once this is supported in more browsers, we may add\nhelpers here for `onKeyUp`, `onKeyDown`, `onKeyPress`, etc.\n",
                "type": "Decoder Int"
            },
            {
                "name": "on",
                "comment": " Create a custom event listener. Normally this will not be necessary, but\nyou have the power! Here is how `onClick` is defined for example:\n\n    import Json.Decode as Json\n\n    onClick : msg -> Attribute msg\n    onClick message =\n      on \"click\" (Json.succeed message)\n\nThe first argument is the event name in the same format as with JavaScript's\n[`addEventListener`][aEL] function.\n\nThe second argument is a JSON decoder. Read more about these [here][decoder].\nWhen an event occurs, the decoder tries to turn the event object into an Elm\nvalue. If successful, the value is routed to your `update` function. In the\ncase of `onClick` we always just succeed with the given `message`.\n\nIf this is confusing, work through the [Elm Architecture Tutorial][tutorial].\nIt really does help!\n\n[aEL]: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n[decoder]: http://package.elm-lang.org/packages/elm-lang/core/latest/Json-Decode\n[tutorial]: https://github.com/evancz/elm-architecture-tutorial/\n",
                "type": "String -> Decoder msg -> Attribute msg"
            },
            {
                "name": "onBlur",
                "comment": "",
                "type": "msg -> Attribute msg"
            },
            {
                "name": "onCheck",
                "comment": " Capture [change](https://developer.mozilla.org/en-US/docs/Web/Events/change)\nevents on checkboxes. It will grab the boolean value from `event.target.checked`\non any input event.\n\nCheck out [targetChecked](#targetChecked) for more details on how this works.\n",
                "type": "(Bool -> msg) -> Attribute msg"
            },
            {
                "name": "onClick",
                "comment": "",
                "type": "msg -> Attribute msg"
            },
            {
                "name": "onDoubleClick",
                "comment": "",
                "type": "msg -> Attribute msg"
            },
            {
                "name": "onFocus",
                "comment": "",
                "type": "msg -> Attribute msg"
            },
            {
                "name": "onInput",
                "comment": " Capture [input](https://developer.mozilla.org/en-US/docs/Web/Events/input)\nevents for things like text fields or text areas.\n\nIt grabs the **string** value at `event.target.value`, so it will not work if\nneed some other type of information. For example, if you want to track inputs\non a range slider, make a custom handler with [`on`](#on).\n\nFor more details on how `onInput` works, check out [targetValue](#targetValue).\n",
                "type": "(String -> msg) -> Attribute msg"
            },
            {
                "name": "onMouseDown",
                "comment": "",
                "type": "msg -> Attribute msg"
            },
            {
                "name": "onMouseEnter",
                "comment": "",
                "type": "msg -> Attribute msg"
            },
            {
                "name": "onMouseLeave",
                "comment": "",
                "type": "msg -> Attribute msg"
            },
            {
                "name": "onMouseOut",
                "comment": "",
                "type": "msg -> Attribute msg"
            },
            {
                "name": "onMouseOver",
                "comment": "",
                "type": "msg -> Attribute msg"
            },
            {
                "name": "onMouseUp",
                "comment": "",
                "type": "msg -> Attribute msg"
            },
            {
                "name": "onSubmit",
                "comment": " Capture a [submit](https://developer.mozilla.org/en-US/docs/Web/Events/submit)\nevent with [`preventDefault`](https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)\nin order to prevent the form from changing the page’s location. If you need\ndifferent behavior, use `onWithOptions` to create a customized version of\n`onSubmit`.\n",
                "type": "msg -> Attribute msg"
            },
            {
                "name": "onWithOptions",
                "comment": " Same as `on` but you can set a few options.\n",
                "type": "String -> Options -> Decoder msg -> Attribute msg"
            },
            {
                "name": "targetChecked",
                "comment": " A `Json.Decoder` for grabbing `event.target.checked`. We use this to define\n`onCheck` as follows:\n\n    import Json.Decode as Json\n\n    onCheck : (Bool -> msg) -> Attribute msg\n    onCheck tagger =\n      on \"input\" (Json.map tagger targetChecked)\n",
                "type": "Decoder Bool"
            },
            {
                "name": "targetValue",
                "comment": " A `Json.Decoder` for grabbing `event.target.value`. We use this to define\n`onInput` as follows:\n\n    import Json.Decode as Json\n\n    onInput : (String -> msg) -> Attribute msg\n    onInput tagger =\n      on \"input\" (Json.map tagger targetValue)\n\nYou probably will never need this, but hopefully it gives some insights into\nhow to make custom event handlers.\n",
                "type": "Decoder String"
            }
        ],
        "binops": []
    },
    {
        "name": "Html.Attributes",
        "comment": " Helper functions for HTML attributes. They are organized roughly by\ncategory. Each attribute is labeled with the HTML tags it can be used with, so\njust search the page for `video` if you want video stuff.\n\nIf you cannot find what you are looking for, go to the [Custom\nAttributes](#custom-attributes) section to learn how to create new helpers.\n\n# Special Attributes\n@docs style\n\n# Super Common Attributes\n@docs class, classList, id, title, hidden\n\n# Inputs\n@docs type', value, defaultValue, checked, placeholder, selected\n\n## Input Helpers\n@docs accept, acceptCharset, action, autocomplete, autofocus, autosave,\n    disabled, enctype, formaction, list, maxlength, minlength, method, multiple,\n    name, novalidate, pattern, readonly, required, size, for, form\n\n## Input Ranges\n@docs max, min, step\n\n## Input Text Areas\n@docs cols, rows, wrap\n\n\n# Links and Areas\n@docs href, target, download, downloadAs, hreflang, media, ping, rel\n\n## Maps\n@docs ismap, usemap, shape, coords\n\n\n# Embedded Content\n@docs src, height, width, alt\n\n## Audio and Video\n@docs autoplay, controls, loop, preload, poster, default, kind, srclang\n\n## iframes\n@docs sandbox, seamless, srcdoc\n\n# Ordered Lists\n@docs reversed, start\n\n# Tables\n@docs align, colspan, rowspan, headers, scope\n\n# Header Stuff\n@docs async, charset, content, defer, httpEquiv, language, scoped\n\n# Less Common Global Attributes\nAttributes that can be attached to any HTML tag but are less commonly used.\n@docs accesskey, contenteditable, contextmenu, dir, draggable, dropzone,\n      itemprop, lang, spellcheck, tabindex\n\n# Key Generation\n@docs challenge, keytype\n\n# Miscellaneous\n@docs cite, datetime, pubdate, manifest\n\n# Custom Attributes\n\nWhen using HTML and JS, there are two ways to specify parts of a DOM node.\n\n  1. Attributes &mdash; You can set things in HTML itself. So the `class`\n     in `<div class=\"greeting\"></div>` is called an *attribute*.\n\n  2. Properties &mdash; You can also set things in JS. So the `className`\n     in `div.className = 'greeting'` is called a *property*.\n\nSo the `class` attribute corresponds to the `className` property. At first\nglance, perhaps this distinction is defensible, but it gets much crazier.\n*There is not always a one-to-one mapping between attributes and properties!*\nYes, that is a true fact. Sometimes an attribute exists, but there is no\ncorresponding property. Sometimes changing an attribute does not change the\nunderlying property. For example, as of this writing the `webkit-playsinline`\nattribute can be used in HTML, but there is no corresponding property!\n\nPretty much all of the functions in `Html.Attributes` are defined with\n`property` and that is generally the preferred approach.\n\n@docs property, attribute\n\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "accept",
                "comment": " List of types the server accepts, typically a file type.\nFor `form` and `input`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "acceptCharset",
                "comment": " List of supported charsets in a `form`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "accesskey",
                "comment": " Defines a keyboard shortcut to activate or add focus to the element. ",
                "type": "Char -> Attribute msg"
            },
            {
                "name": "action",
                "comment": " The URI of a program that processes the information submitted via a `form`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "align",
                "comment": " Specifies the horizontal alignment of a `caption`, `col`, `colgroup`,\n`hr`, `iframe`, `img`, `table`, `tbody`,  `td`,  `tfoot`, `th`, `thead`, or\n`tr`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "alt",
                "comment": " Alternative text in case an image can't be displayed. Works with `img`,\n`area`, and `input`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "async",
                "comment": " Indicates that the `script` should be executed asynchronously. ",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "attribute",
                "comment": " Create arbitrary HTML *attributes*. Maps onto JavaScript&rsquo;s\n`setAttribute` function under the hood.\n\n    greeting : Html\n    greeting =\n        div [ attribute \"class\" \"greeting\" ] [\n          text \"Hello!\"\n        ]\n\nNotice that you must give the *attribute* name, so we use `class` as it would\nbe in HTML, not `className` as it would appear in JS.\n",
                "type": "String -> String -> Attribute msg"
            },
            {
                "name": "autocomplete",
                "comment": " Indicates whether a `form` or an `input` can have their values automatically\ncompleted by the browser.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "autofocus",
                "comment": " The element should be automatically focused after the page loaded.\nFor `button`, `input`, `keygen`, `select`, and `textarea`.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "autoplay",
                "comment": " The `audio` or `video` should play as soon as possible. ",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "autosave",
                "comment": " Previous entries into an `input` will be persisted across page loads,\nassociated with a unique ID. The previous entries will be displayed as\nsuggestions when the user types into an `input` that has an autosave attribute\nwith the same unique ID.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "challenge",
                "comment": " A challenge string that is submitted along with the public key in a `keygen`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "charset",
                "comment": " Declares the character encoding of the page or script. Common values include:\n\n  * UTF-8 - Character encoding for Unicode\n  * ISO-8859-1 - Character encoding for the Latin alphabet\n\nFor `meta` and `script`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "checked",
                "comment": " Indicates whether an `input` of type checkbox is checked. ",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "cite",
                "comment": " Contains a URI which points to the source of the quote or change in a\n`blockquote`, `del`, `ins`, or `q`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "class",
                "comment": " Often used with CSS to style elements with common properties. ",
                "type": "String -> Attribute msg"
            },
            {
                "name": "classList",
                "comment": " This function makes it easier to build a space-separated class attribute.\nEach class can easily be added and removed depending on the boolean value it\nis paired with.\n\n    renderMessage : Msg -> Html\n    renderMessage msg =\n      div\n        [\n          classList [\n            (\"message\", True),\n            (\"message-important\", msg.isImportant),\n            (\"message-read\", msg.isRead)\n          ]\n        ]\n        [ text msg.content ]\n",
                "type": "List ( String, Bool ) -> Attribute msg"
            },
            {
                "name": "cols",
                "comment": " Defines the number of columns in a `textarea`. ",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "colspan",
                "comment": " The colspan attribute defines the number of columns a cell should span.\nFor `td` and `th`.\n",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "content",
                "comment": " A value associated with http-equiv or name depending on the context. For\n`meta`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "contenteditable",
                "comment": " Indicates whether the element's content is editable. ",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "contextmenu",
                "comment": " Defines the ID of a `menu` element which will serve as the element's\ncontext menu.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "controls",
                "comment": " Indicates whether the browser should show playback controls for the `audio`\nor `video`.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "coords",
                "comment": " A set of values specifying the coordinates of the hot-spot region in an\n`area`. Needs to be paired with a `shape` attribute to be meaningful.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "datetime",
                "comment": " Indicates the date and time associated with the element.\nFor `del`, `ins`, `time`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "default",
                "comment": " Indicates that the `track` should be enabled unless the user's preferences\nindicate something different.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "defaultValue",
                "comment": " Defines an initial value which will be displayed in an `input` when that\n`input` is added to the DOM. Unlike `value`, altering `defaultValue` after the\n`input` element has been added to the DOM has no effect.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "defer",
                "comment": " Indicates that a `script` should be executed after the page has been\nparsed.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "dir",
                "comment": " Defines the text direction. Allowed values are ltr (Left-To-Right) or rtl\n(Right-To-Left).\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "disabled",
                "comment": " Indicates whether the user can interact with a `button`, `fieldset`,\n`input`, `keygen`, `optgroup`, `option`, `select` or `textarea`.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "download",
                "comment": " Indicates that clicking an `a` and `area` will download the resource\ndirectly.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "downloadAs",
                "comment": " Indicates that clicking an `a` and `area` will download the resource\ndirectly, and that the downloaded resource with have the given filename.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "draggable",
                "comment": " Defines whether the element can be dragged. ",
                "type": "String -> Attribute msg"
            },
            {
                "name": "dropzone",
                "comment": " Indicates that the element accept the dropping of content on it. ",
                "type": "String -> Attribute msg"
            },
            {
                "name": "enctype",
                "comment": " How `form` data should be encoded when submitted with the POST method.\nOptions include: application/x-www-form-urlencoded, multipart/form-data, and\ntext/plain.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "for",
                "comment": " The element ID described by this `label` or the element IDs that are used\nfor an `output`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "form",
                "comment": " Indicates the element ID of the `form` that owns this particular `button`,\n`fieldset`, `input`, `keygen`, `label`, `meter`, `object`, `output`,\n`progress`, `select`, or `textarea`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "formaction",
                "comment": " Indicates the action of an `input` or `button`. This overrides the action\ndefined in the surrounding `form`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "headers",
                "comment": " A space separated list of element IDs indicating which `th` elements are\nheaders for this cell. For `td` and `th`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "height",
                "comment": " Declare the height of a `canvas`, `embed`, `iframe`, `img`, `input`,\n`object`, or `video`.\n",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "hidden",
                "comment": " Indicates the relevance of an element. ",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "href",
                "comment": " The URL of a linked resource, such as `a`, `area`, `base`, or `link`. ",
                "type": "String -> Attribute msg"
            },
            {
                "name": "hreflang",
                "comment": " Two-letter language code of the linked resource of an `a`, `area`, or `link`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "httpEquiv",
                "comment": " This attribute is an indicator that is paired with the `content` attribute,\nindicating what that content means. `httpEquiv` can take on three different\nvalues: content-type, default-style, or refresh. For `meta`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "id",
                "comment": " Often used with CSS to style a specific element. The value of this\nattribute must be unique.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "ismap",
                "comment": " When an `img` is a descendent of an `a` tag, the `ismap` attribute\nindicates that the click location should be added to the parent `a`'s href as\na query string.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "itemprop",
                "comment": "",
                "type": "String -> Attribute msg"
            },
            {
                "name": "keytype",
                "comment": " Specifies the type of key generated by a `keygen`. Possible values are:\nrsa, dsa, and ec.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "kind",
                "comment": " Specifies the kind of text `track`. ",
                "type": "String -> Attribute msg"
            },
            {
                "name": "lang",
                "comment": " Defines the language used in the element. ",
                "type": "String -> Attribute msg"
            },
            {
                "name": "language",
                "comment": " Defines the script language used in a `script`. ",
                "type": "String -> Attribute msg"
            },
            {
                "name": "list",
                "comment": " Associates an `input` with a `datalist` tag. The datalist gives some\npre-defined options to suggest to the user as they interact with an input.\nThe value of the list attribute must match the id of a `datalist` node.\nFor `input`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "loop",
                "comment": " Indicates whether the `audio` or `video` should start playing from the\nstart when it's finished.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "manifest",
                "comment": " Specifies the URL of the cache manifest for an `html` tag. ",
                "type": "String -> Attribute msg"
            },
            {
                "name": "max",
                "comment": " Indicates the maximum value allowed. When using an input of type number or\ndate, the max value must be a number or date. For `input`, `meter`, and `progress`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "maxlength",
                "comment": " Defines the maximum number of characters allowed in an `input` or\n`textarea`.\n",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "media",
                "comment": " Specifies a hint of the target media of a `a`, `area`, `link`, `source`,\nor `style`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "method",
                "comment": " Defines which HTTP method to use when submitting a `form`. Can be GET\n(default) or POST.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "min",
                "comment": " Indicates the minimum value allowed. When using an input of type number or\ndate, the min value must be a number or date. For `input` and `meter`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "minlength",
                "comment": " Defines the minimum number of characters allowed in an `input` or\n`textarea`.\n",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "multiple",
                "comment": " Indicates whether multiple values can be entered in an `input` of type\nemail or file. Can also indicate that you can `select` many options.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "name",
                "comment": " Name of the element. For example used by the server to identify the fields\nin form submits. For `button`, `form`, `fieldset`, `iframe`, `input`, `keygen`,\n`object`, `output`, `select`, `textarea`, `map`, `meta`, and `param`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "novalidate",
                "comment": " This attribute indicates that a `form` shouldn't be validated when\nsubmitted.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "pattern",
                "comment": " Defines a regular expression which an `input`'s value will be validated\nagainst.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "ping",
                "comment": " Specify a URL to send a short POST request to when the user clicks on an\n`a` or `area`. Useful for monitoring and tracking.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "placeholder",
                "comment": " Provides a hint to the user of what can be entered into an `input` or\n`textarea`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "poster",
                "comment": " A URL indicating a poster frame to show until the user plays or seeks the\n`video`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "preload",
                "comment": " Control how much of an `audio` or `video` resource should be preloaded. ",
                "type": "String -> Attribute msg"
            },
            {
                "name": "property",
                "comment": " Create arbitrary *properties*.\n\n    import Json.Encode as Json\n\n    greeting : Html\n    greeting =\n        div [ property \"className\" (Json.string \"greeting\") ] [\n          text \"Hello!\"\n        ]\n\nNotice that you must give the *property* name, so we use `className` as it\nwould be in JavaScript, not `class` as it would appear in HTML.\n",
                "type": "String -> Value -> Attribute msg"
            },
            {
                "name": "pubdate",
                "comment": " Indicates whether this date and time is the date of the nearest `article`\nancestor element. For `time`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "readonly",
                "comment": " Indicates whether an `input` or `textarea` can be edited. ",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "rel",
                "comment": " Specifies the relationship of the target object to the link object.\nFor `a`, `area`, `link`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "required",
                "comment": " Indicates whether this element is required to fill out or not.\nFor `input`, `select`, and `textarea`.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "reversed",
                "comment": " Indicates whether an ordered list `ol` should be displayed in a descending\norder instead of a ascending.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "rows",
                "comment": " Defines the number of rows in a `textarea`. ",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "rowspan",
                "comment": " Defines the number of rows a table cell should span over.\nFor `td` and `th`.\n",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "sandbox",
                "comment": " A space separated list of security restrictions you'd like to lift for an\n`iframe`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "scope",
                "comment": " Specifies the scope of a header cell `th`. Possible values are: col, row,\ncolgroup, rowgroup.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "scoped",
                "comment": " Indicates that a `style` should only apply to its parent and all of the\nparents children.\n",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "seamless",
                "comment": "  Make an `iframe` look like part of the containing document. ",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "selected",
                "comment": " Defines which `option` will be selected on page load. ",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "shape",
                "comment": " Declare the shape of the clickable area in an `a` or `area`. Valid values\ninclude: default, rect, circle, poly. This attribute can be paired with\n`coords` to create more particular shapes.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "size",
                "comment": " For `input` specifies the width of an input in characters.\n\nFor `select` specifies the number of visible options in a drop-down list.\n",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "spellcheck",
                "comment": " Indicates whether spell checking is allowed for the element. ",
                "type": "Bool -> Attribute msg"
            },
            {
                "name": "src",
                "comment": " The URL of the embeddable content. For `audio`, `embed`, `iframe`, `img`,\n`input`, `script`, `source`, `track`, and `video`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "srcdoc",
                "comment": " An HTML document that will be displayed as the body of an `iframe`. It will\noverride the content of the `src` attribute if it has been specified.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "srclang",
                "comment": " A two letter language code indicating the language of the `track` text data.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "start",
                "comment": " Defines the first number of an ordered list if you want it to be something\nbesides 1.\n",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "step",
                "comment": " Add a step size to an `input`. Use `step \"any\"` to allow any floating-point\nnumber to be used in the input.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "style",
                "comment": " Specify a list of styles.\n\n    myStyle : Attribute msg\n    myStyle =\n      style\n        [ (\"backgroundColor\", \"red\")\n        , (\"height\", \"90px\")\n        , (\"width\", \"100%\")\n        ]\n\n    greeting : Html msg\n    greeting =\n      div [ myStyle ] [ text \"Hello!\" ]\n\nThere is no `Html.Styles` module because best practices for working with HTML\nsuggest that this should primarily be specified in CSS files. So the general\nrecommendation is to use this function lightly.\n",
                "type": "List ( String, String ) -> Attribute msg"
            },
            {
                "name": "tabindex",
                "comment": " Overrides the browser's default tab order and follows the one specified\ninstead.\n",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "target",
                "comment": " Specify where the results of clicking an `a`, `area`, `base`, or `form`\nshould appear. Possible special values include:\n\n  * _blank &mdash; a new window or tab\n  * _self &mdash; the same frame (this is default)\n  * _parent &mdash; the parent frame\n  * _top &mdash; the full body of the window\n\nYou can also give the name of any `frame` you have created.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "title",
                "comment": " Text to be displayed in a tooltip when hovering over the element. ",
                "type": "String -> Attribute msg"
            },
            {
                "name": "type'",
                "comment": " Defines the type of a `button`, `input`, `embed`, `object`, `script`,\n`source`, `style`, or `menu`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "usemap",
                "comment": " Specify the hash name reference of a `map` that should be used for an `img`\nor `object`. A hash name reference is a hash symbol followed by the element's name or id.\nE.g. `\"#planet-map\"`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "value",
                "comment": " Defines a default value which will be displayed in a `button`, `option`,\n`input`, `li`, `meter`, `progress`, or `param`.\n",
                "type": "String -> Attribute msg"
            },
            {
                "name": "width",
                "comment": " Declare the width of a `canvas`, `embed`, `iframe`, `img`, `input`,\n`object`, or `video`.\n",
                "type": "Int -> Attribute msg"
            },
            {
                "name": "wrap",
                "comment": " Indicates whether the text should be wrapped in a `textarea`. Possible\nvalues are \"hard\" and \"soft\".\n",
                "type": "String -> Attribute msg"
            }
        ],
        "binops": []
    },
    {
        "name": "Html.Lazy",
        "comment": " Since all Elm functions are pure we have a guarantee that the same input\nwill always result in the same output. This module gives us tools to be lazy\nabout building `Html` that utilize this fact.\n\nRather than immediately applying functions to their arguments, the `lazy`\nfunctions just bundle the function and arguments up for later. When diffing\nthe old and new virtual DOM, it checks to see if all the arguments are equal.\nIf so, it skips calling the function!\n\nThis is a really cheap test and often makes things a lot faster, but definitely\nbenchmark to be sure!\n\n@docs lazy, lazy2, lazy3\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "lazy",
                "comment": " A performance optimization that delays the building of virtual DOM nodes.\n\nCalling `(view model)` will definitely build some virtual DOM, perhaps a lot of\nit. Calling `(lazy view model)` delays the call until later. During diffing, we\ncan check to see if `model` is referentially equal to the previous value used,\nand if so, we just stop. No need to build up the tree structure and diff it,\nwe know if the input to `view` is the same, the output must be the same!\n",
                "type": "(a -> Html msg) -> a -> Html msg"
            },
            {
                "name": "lazy2",
                "comment": " Same as `lazy` but checks on two arguments.\n",
                "type": "(a -> b -> Html msg) -> a -> b -> Html msg"
            },
            {
                "name": "lazy3",
                "comment": " Same as `lazy` but checks on three arguments.\n",
                "type": "(a -> b -> c -> Html msg) -> a -> b -> c -> Html msg"
            }
        ],
        "binops": []
    },
    {
        "name": "Html",
        "comment": " This file is organized roughly in order of popularity. The tags which you'd\nexpect to use frequently will be closer to the top.\n\n# Custom Nodes\n@docs text, node, Html, Attribute\n\n# Headers\n@docs h1, h2, h3, h4, h5, h6\n\n# Grouping Content\n@docs div, p, hr, pre, blockquote\n\n# Text\n@docs span, a, code, em, strong, i, b, u, sub, sup, br\n\n# Lists\n@docs ol, ul, li, dl, dt, dd\n\n# Emdedded Content\n@docs img, iframe, canvas, svg, math\n\n# Inputs\n@docs form, input, textarea, button, select, option\n\n# Sections\n@docs section, nav, article, aside, header, footer, address, main', body\n\n# Figures\n@docs figure, figcaption\n\n# Tables\n@docs table, caption, colgroup, col, tbody, thead, tfoot, tr, td, th\n\n\n# Less Common Elements\n\n## Less Common Inputs\n@docs fieldset, legend, label, datalist, optgroup, keygen, output, progress, meter\n\n\n## Audio and Video\n@docs audio, video, source, track\n\n## Embedded Objects\n@docs embed, object, param\n\n## Text Edits\n@docs ins, del\n\n## Semantic Text\n@docs small, cite, dfn, abbr, time, var, samp, kbd, s, q\n\n## Less Common Text Tags\n@docs mark, ruby, rt, rp, bdi, bdo, wbr\n\n# Interactive Elements\n@docs details, summary, menuitem, menu\n\n",
        "unions": [],
        "aliases": [
            {
                "name": "Attribute",
                "comment": " Set attributes on your `Html`.\n",
                "args": [
                    "msg"
                ],
                "type": "Property msg"
            },
            {
                "name": "Html",
                "comment": " The core building block used to build up HTML. It is backed by\n`VirtualDom.Node` in `elm-lang/virtual-dom` but that is not a super crucial\ndetail.\n",
                "args": [
                    "msg"
                ],
                "type": "Node msg"
            }
        ],
        "values": [
            {
                "name": "a",
                "comment": " Represents a hyperlink, linking to another resource. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "abbr",
                "comment": " Represents an abbreviation or an acronym; the expansion of the\nabbreviation can be represented in the title attribute.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "address",
                "comment": " Defines a section containing contact information. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "article",
                "comment": " Defines self-contained content that could exist independently of the rest\nof the content.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "aside",
                "comment": " Defines some content loosely related to the page content. If it is removed,\nthe remaining content still makes sense.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "audio",
                "comment": " Represents a sound or audio stream. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "b",
                "comment": " Represents a text which to which attention is drawn for utilitarian\npurposes. It doesn't convey extra importance and doesn't imply an alternate\nvoice.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "bdi",
                "comment": " Represents text that must be isolated from its surrounding for\nbidirectional text formatting. It allows embedding a span of text with a\ndifferent, or unknown, directionality.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "bdo",
                "comment": " Represents the directionality of its children, in order to explicitly\noverride the Unicode bidirectional algorithm.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "blockquote",
                "comment": " Represents a content that is quoted from another source. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "body",
                "comment": " Represents the content of an HTML document. There is only one `body`\nelement in a document.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "br",
                "comment": " Represents a line break. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "button",
                "comment": " Represents a button. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "canvas",
                "comment": " Represents a bitmap area for graphics rendering. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "caption",
                "comment": " Represents the title of a table. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "cite",
                "comment": " Represents the title of a work. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "code",
                "comment": " Represents computer code. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "col",
                "comment": " Represents a column of a table. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "colgroup",
                "comment": " Represents a set of one or more columns of a table. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "datalist",
                "comment": " Represents a set of predefined options for other controls. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "dd",
                "comment": " Represents the definition of the terms immediately listed before it. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "del",
                "comment": " Defines a removal from the document. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "details",
                "comment": " Represents a widget from which the user can obtain additional information\nor controls.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "dfn",
                "comment": " Represents a term whose definition is contained in its nearest ancestor\ncontent.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "div",
                "comment": " Represents a generic container with no special meaning. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "dl",
                "comment": " Defines a definition list, that is, a list of terms and their associated\ndefinitions.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "dt",
                "comment": " Represents a term defined by the next `dd`. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "em",
                "comment": " Represents emphasized text, like a stress accent. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "embed",
                "comment": " Represents a integration point for an external, often non-HTML,\napplication or interactive content.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "fieldset",
                "comment": " Represents a set of controls. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "figcaption",
                "comment": " Represents the legend of a figure. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "figure",
                "comment": " Represents a figure illustrated as part of the document. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "footer",
                "comment": " Defines the footer for a page or section. It often contains a copyright\nnotice, some links to legal information, or addresses to give feedback.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "form",
                "comment": " Represents a form, consisting of controls, that can be submitted to a\nserver for processing.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "h1",
                "comment": "",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "h2",
                "comment": "",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "h3",
                "comment": "",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "h4",
                "comment": "",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "h5",
                "comment": "",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "h6",
                "comment": "",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "header",
                "comment": " Defines the header of a page or section. It often contains a logo, the\ntitle of the web site, and a navigational table of content.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "hr",
                "comment": " Represents a thematic break between paragraphs of a section or article or\nany longer content.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "i",
                "comment": " Represents some text in an alternate voice or mood, or at least of\ndifferent quality, such as a taxonomic designation, a technical term, an\nidiomatic phrase, a thought, or a ship name.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "iframe",
                "comment": " Embedded an HTML document. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "img",
                "comment": " Represents an image. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "input",
                "comment": " Represents a typed data field allowing the user to edit the data. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "ins",
                "comment": " Defines an addition to the document. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "kbd",
                "comment": " Represents user input, often from the keyboard, but not necessarily; it\nmay represent other input, like transcribed voice commands.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "keygen",
                "comment": " Represents a key-pair generator control. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "label",
                "comment": " Represents the caption of a form control. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "legend",
                "comment": " Represents the caption for a `fieldset`. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "li",
                "comment": " Defines a item of an enumeration list. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "main'",
                "comment": " Defines the main or important content in the document. There is only one\n`main` element in the document.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "mark",
                "comment": " Represents text highlighted for reference purposes, that is for its\nrelevance in another context.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "math",
                "comment": " Defines a mathematical formula. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "menu",
                "comment": " Represents a list of commands. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "menuitem",
                "comment": " Represents a command that the user can invoke. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "meter",
                "comment": " Represents a scalar measurement (or a fractional value), within a known\nrange.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "nav",
                "comment": " Defines a section that contains only navigation links.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "node",
                "comment": " General way to create HTML nodes. It is used to define all of the helper\nfunctions in this library.\n\n    div : List (Attribute msg) -> List (Html msg) -> Html msg\n    div attributes children =\n        node \"div\" attributes children\n\nYou can use this to create custom nodes if you need to create something that\nis not covered by the helper functions in this library.\n",
                "type": "String -> List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "object",
                "comment": " Represents an external resource, which is treated as an image, an HTML\nsub-document, or an external resource to be processed by a plug-in.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "ol",
                "comment": " Defines an ordered list of items. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "optgroup",
                "comment": " Represents a set of options, logically grouped. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "option",
                "comment": " Represents an option in a `select` element or a suggestion of a `datalist`\nelement.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "output",
                "comment": " Represents the result of a calculation. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "p",
                "comment": " Defines a portion that should be displayed as a paragraph. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "param",
                "comment": " Defines parameters for use by plug-ins invoked by `object` elements. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "pre",
                "comment": " Indicates that its content is preformatted and that this format must be\npreserved.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "progress",
                "comment": " Represents the completion progress of a task. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "q",
                "comment": " Represents an inline quotation. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "rp",
                "comment": " Represents parenthesis around a ruby annotation, used to display the\nannotation in an alternate way by browsers not supporting the standard display\nfor annotations.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "rt",
                "comment": " Represents the text of a ruby annotation. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "ruby",
                "comment": " Represents content to be marked with ruby annotations, short runs of text\npresented alongside the text. This is often used in conjunction with East Asian\nlanguage where the annotations act as a guide for pronunciation, like the\nJapanese furigana.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "s",
                "comment": " Represents content that is no longer accurate or relevant. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "samp",
                "comment": " Represents the output of a program or a computer. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "section",
                "comment": " Defines a section in a document.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "select",
                "comment": " Represents a control allowing selection among a set of options. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "small",
                "comment": " Represents a side comment, that is, text like a disclaimer or a\ncopyright, which is not essential to the comprehension of the document.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "source",
                "comment": " Allows authors to specify alternative media resources for media elements\nlike `video` or `audio`.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "span",
                "comment": " Represents text with no specific meaning. This has to be used when no other\ntext-semantic element conveys an adequate meaning, which, in this case, is\noften brought by global attributes like `class`, `lang`, or `dir`.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "strong",
                "comment": " Represents especially important text. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "sub",
                "comment": " Represent a subscript. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "summary",
                "comment": " Represents a summary, caption, or legend for a given `details`. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "sup",
                "comment": " Represent a superscript. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "svg",
                "comment": " Defines an embedded vectorial image. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "table",
                "comment": " Represents data with more than one dimension. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "tbody",
                "comment": " Represents the block of rows that describes the concrete data of a table.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "td",
                "comment": " Represents a data cell in a table. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "text",
                "comment": " Just put plain text in the DOM. It will escape the string so that it appears\nexactly as you specify.\n\n      text \"Hello World!\"\n",
                "type": "String -> Html msg"
            },
            {
                "name": "textarea",
                "comment": " Represents a multiline text edit control. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "tfoot",
                "comment": " Represents the block of rows that describes the column summaries of a table.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "th",
                "comment": " Represents a header cell in a table. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "thead",
                "comment": " Represents the block of rows that describes the column labels of a table.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "time",
                "comment": " Represents a date and time value; the machine-readable equivalent can be\nrepresented in the datetime attribute.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "tr",
                "comment": " Represents a row of cells in a table. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "track",
                "comment": " Allows authors to specify timed text track for media elements like `video`\nor `audio`.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "u",
                "comment": " Represents a non-textual annoatation for which the conventional\npresentation is underlining, such labeling the text as being misspelt or\nlabeling a proper name in Chinese text.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "ul",
                "comment": " Defines an unordered list of items. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "var",
                "comment": " Represents a variable. Specific cases where it should be used include an\nactual mathematical expression or programming context, an identifier\nrepresenting a constant, a symbol identifying a physical quantity, a function\nparameter, or a mere placeholder in prose.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "video",
                "comment": " Represents a video, the associated audio and captions, and controls. ",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            },
            {
                "name": "wbr",
                "comment": " Represents a line break opportunity, that is a suggested point for\nwrapping text in order to improve readability of text split on several lines.\n",
                "type": "List (Attribute msg) -> List (Html msg) -> Html msg"
            }
        ],
        "binops": []
    }
]