{
    "tests": [
        {
            "description": "<head></head><style></style>",
            "input": "<head></head><style></style>",
            "output": [
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "StartTag",
                    "style",
                    {}
                ],
                [
                    "EndTag",
                    "style"
                ]
            ]
        },
        {
            "description": "<head></head><script></script>",
            "input": "<head></head><script></script>",
            "output": [
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "StartTag",
                    "script",
                    {}
                ],
                [
                    "EndTag",
                    "script"
                ]
            ]
        },
        {
            "description": "<head></head><!-- --><style></style><!-- --><script></script>",
            "input": "<head></head><!-- --><style></style><!-- --><script></script>",
            "output": [
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "Comment",
                    " "
                ],
                [
                    "StartTag",
                    "style",
                    {}
                ],
                [
                    "EndTag",
                    "style"
                ],
                [
                    "Comment",
                    " "
                ],
                [
                    "StartTag",
                    "script",
                    {}
                ],
                [
                    "EndTag",
                    "script"
                ]
            ]
        },
        {
            "description": "<head></head><!-- -->x<style></style><!-- --><script></script>",
            "input": "<head></head><!-- -->x<style></style><!-- --><script></script>",
            "output": [
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "Comment",
                    " "
                ],
                [
                    "Character",
                    "x"
                ],
                [
                    "StartTag",
                    "style",
                    {}
                ],
                [
                    "EndTag",
                    "style"
                ],
                [
                    "Comment",
                    " "
                ],
                [
                    "StartTag",
                    "script",
                    {}
                ],
                [
                    "EndTag",
                    "script"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><html><head></head><body><pre>\\r\\n</pre></body></html>",
            "input": "<!DOCTYPE html><html><head></head><body><pre>\r\n</pre></body></html>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "StartTag",
                    "pre",
                    {}
                ],
                [
                    "EndTag",
                    "pre"
                ],
                [
                    "EndTag",
                    "body"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><html><head></head><body><pre>\\r\\nfoo</pre></body></html>",
            "input": "<!DOCTYPE html><html><head></head><body><pre>\r\nfoo</pre></body></html>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "StartTag",
                    "pre",
                    {}
                ],
                [
                    "Character",
                    "foo"
                ],
                [
                    "EndTag",
                    "pre"
                ],
                [
                    "EndTag",
                    "body"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><html><head></head><body><pre>\\r\\n\\r\\nfoo</pre></body></html>",
            "input": "<!DOCTYPE html><html><head></head><body><pre>\r\n\r\nfoo</pre></body></html>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "StartTag",
                    "pre",
                    {}
                ],
                [
                    "Character",
                    "\nfoo"
                ],
                [
                    "EndTag",
                    "pre"
                ],
                [
                    "EndTag",
                    "body"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><html><head></head><body><pre>\\r\\nfoo\\r\\n</pre></body></html>",
            "input": "<!DOCTYPE html><html><head></head><body><pre>\r\nfoo\r\n</pre></body></html>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "StartTag",
                    "pre",
                    {}
                ],
                [
                    "Character",
                    "foo\n"
                ],
                [
                    "EndTag",
                    "pre"
                ],
                [
                    "EndTag",
                    "body"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><html><head></head><body><pre>x</pre><span>\\r\\n</span></body></html>",
            "input": "<!DOCTYPE html><html><head></head><body><pre>x</pre><span>\r\n</span></body></html>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "StartTag",
                    "pre",
                    {}
                ],
                [
                    "Character",
                    "x"
                ],
                [
                    "EndTag",
                    "pre"
                ],
                [
                    "StartTag",
                    "span",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "EndTag",
                    "span"
                ],
                [
                    "EndTag",
                    "body"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><html><head></head><body><pre>x\\r\\ny</pre></body></html>",
            "input": "<!DOCTYPE html><html><head></head><body><pre>x\r\ny</pre></body></html>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "StartTag",
                    "pre",
                    {}
                ],
                [
                    "Character",
                    "x\ny"
                ],
                [
                    "EndTag",
                    "pre"
                ],
                [
                    "EndTag",
                    "body"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><html><head></head><body><pre>x<div>\\r\\ny</pre></body></html>",
            "input": "<!DOCTYPE html><html><head></head><body><pre>x<div>\r\ny</pre></body></html>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "StartTag",
                    "pre",
                    {}
                ],
                [
                    "Character",
                    "x"
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "Character",
                    "\ny"
                ],
                [
                    "EndTag",
                    "pre"
                ],
                [
                    "EndTag",
                    "body"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><pre>&#x0a;&#x0a;A</pre>",
            "input": "<!DOCTYPE html><pre>&#x0a;&#x0a;A</pre>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "pre",
                    {}
                ],
                [
                    "Character",
                    "\nA"
                ],
                [
                    "EndTag",
                    "pre"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><HTML><META><HEAD></HEAD></HTML>",
            "input": "<!DOCTYPE html><HTML><META><HEAD></HEAD></HTML>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "meta",
                    {}
                ],
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><HTML><HEAD><head></HEAD></HTML>",
            "input": "<!DOCTYPE html><HTML><HEAD><head></HEAD></HTML>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "description": "<textarea>foo<span>bar</span><i>baz",
            "input": "<textarea>foo<span>bar</span><i>baz",
            "output": [
                [
                    "StartTag",
                    "textarea",
                    {}
                ],
                [
                    "Character",
                    "foo<span>bar</span><i>baz"
                ]
            ]
        },
        {
            "description": "<title>foo<span>bar</em><i>baz",
            "input": "<title>foo<span>bar</em><i>baz",
            "output": [
                [
                    "StartTag",
                    "title",
                    {}
                ],
                [
                    "Character",
                    "foo<span>bar</em><i>baz"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><textarea>\\r\\n</textarea>",
            "input": "<!DOCTYPE html><textarea>\r\n</textarea>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "textarea",
                    {}
                ],
                [
                    "EndTag",
                    "textarea"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><textarea>\\r\\nfoo</textarea>",
            "input": "<!DOCTYPE html><textarea>\r\nfoo</textarea>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "textarea",
                    {}
                ],
                [
                    "Character",
                    "foo"
                ],
                [
                    "EndTag",
                    "textarea"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><textarea>\\r\\n\\r\\nfoo</textarea>",
            "input": "<!DOCTYPE html><textarea>\r\n\r\nfoo</textarea>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "textarea",
                    {}
                ],
                [
                    "Character",
                    "\nfoo"
                ],
                [
                    "EndTag",
                    "textarea"
                ]
            ]
        },
        {
            "description": "<!DOCTYPE html><html><head></head><body><ul><li><div><p><li></ul></body></html>",
            "input": "<!DOCTYPE html><html><head></head><body><ul><li><div><p><li></ul></body></html>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "head",
                    {}
                ],
                [
                    "EndTag",
                    "head"
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "StartTag",
                    "ul",
                    {}
                ],
                [
                    "StartTag",
                    "li",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "StartTag",
                    "li",
                    {}
                ],
                [
                    "EndTag",
                    "ul"
                ],
                [
                    "EndTag",
                    "body"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "description": "<!doctype html><nobr><nobr><nobr>",
            "input": "<!doctype html><nobr><nobr><nobr>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "nobr",
                    {}
                ],
                [
                    "StartTag",
                    "nobr",
                    {}
                ],
                [
                    "StartTag",
                    "nobr",
                    {}
                ]
            ]
        },
        {
            "description": "<!doctype html><nobr><nobr></nobr><nobr>",
            "input": "<!doctype html><nobr><nobr></nobr><nobr>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "nobr",
                    {}
                ],
                [
                    "StartTag",
                    "nobr",
                    {}
                ],
                [
                    "EndTag",
                    "nobr"
                ],
                [
                    "StartTag",
                    "nobr",
                    {}
                ]
            ]
        },
        {
            "description": "<!doctype html><html><body><p><table></table></body></html>",
            "input": "<!doctype html><html><body><p><table></table></body></html>",
            "output": [
                [
                    "DOCTYPE",
                    "html",
                    null,
                    null,
                    true
                ],
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "StartTag",
                    "table",
                    {}
                ],
                [
                    "EndTag",
                    "table"
                ],
                [
                    "EndTag",
                    "body"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "description": "<p><table></table>",
            "input": "<p><table></table>",
            "output": [
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "StartTag",
                    "table",
                    {}
                ],
                [
                    "EndTag",
                    "table"
                ]
            ]
        }
    ]
}