aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/__init__.py20
-rw-r--r--tests/basic/amps-and-angle-encoding.html (renamed from tests/markdown-test/amps-and-angle-encoding.html)0
-rw-r--r--tests/basic/amps-and-angle-encoding.txt (renamed from tests/markdown-test/amps-and-angle-encoding.txt)0
-rw-r--r--tests/basic/angle-links-and-img.html (renamed from tests/markdown-test/angle-links-and-img.html)0
-rw-r--r--tests/basic/angle-links-and-img.txt (renamed from tests/markdown-test/angle-links-and-img.txt)0
-rw-r--r--tests/basic/auto-links.html (renamed from tests/markdown-test/auto-links.html)0
-rw-r--r--tests/basic/auto-links.txt (renamed from tests/markdown-test/auto-links.txt)0
-rw-r--r--tests/basic/backlash-escapes.html (renamed from tests/markdown-test/backlash-escapes.html)0
-rw-r--r--tests/basic/backlash-escapes.txt (renamed from tests/markdown-test/backlash-escapes.txt)0
-rw-r--r--tests/basic/blockquotes-with-code-blocks.html (renamed from tests/markdown-test/blockquotes-with-code-blocks.html)0
-rw-r--r--tests/basic/blockquotes-with-code-blocks.txt (renamed from tests/markdown-test/blockquotes-with-code-blocks.txt)0
-rw-r--r--tests/basic/codeblock-in-list.html (renamed from tests/markdown-test/codeblock-in-list.html)0
-rw-r--r--tests/basic/codeblock-in-list.txt (renamed from tests/markdown-test/codeblock-in-list.txt)0
-rw-r--r--tests/basic/hard-wrapped.html (renamed from tests/markdown-test/hard-wrapped.html)0
-rw-r--r--tests/basic/hard-wrapped.txt (renamed from tests/markdown-test/hard-wrapped.txt)0
-rw-r--r--tests/basic/horizontal-rules.html (renamed from tests/markdown-test/horizontal-rules.html)0
-rw-r--r--tests/basic/horizontal-rules.txt (renamed from tests/markdown-test/horizontal-rules.txt)0
-rw-r--r--tests/basic/links-inline.html (renamed from tests/markdown-test/links-inline.html)0
-rw-r--r--tests/basic/links-inline.txt (renamed from tests/markdown-test/links-inline.txt)0
-rw-r--r--tests/basic/links-reference.html22
-rw-r--r--tests/basic/links-reference.txt61
-rw-r--r--tests/basic/literal-quotes.html (renamed from tests/markdown-test/literal-quotes.html)0
-rw-r--r--tests/basic/literal-quotes.txt (renamed from tests/markdown-test/literal-quotes.txt)0
-rw-r--r--tests/basic/markdown-documentation-basics.html243
-rw-r--r--tests/basic/markdown-documentation-basics.txt306
-rw-r--r--tests/basic/markdown-syntax.html (renamed from tests/extensions-x-def_list/markdown-syntax.html)16
-rw-r--r--tests/basic/markdown-syntax.txt (renamed from tests/extensions-x-def_list/markdown-syntax.txt)6
-rw-r--r--tests/basic/nested-blockquotes.html (renamed from tests/markdown-test/nested-blockquotes.html)0
-rw-r--r--tests/basic/nested-blockquotes.txt (renamed from tests/markdown-test/nested-blockquotes.txt)0
-rw-r--r--tests/basic/ordered-and-unordered-list.html (renamed from tests/markdown-test/ordered-and-unordered-list.html)0
-rw-r--r--tests/basic/ordered-and-unordered-list.txt (renamed from tests/markdown-test/ordered-and-unordered-list.txt)0
-rw-r--r--tests/basic/strong-and-em-together.html (renamed from tests/markdown-test/strong-and-em-together.html)0
-rw-r--r--tests/basic/strong-and-em-together.txt (renamed from tests/markdown-test/strong-and-em-together.txt)0
-rw-r--r--tests/basic/tabs.html (renamed from tests/markdown-test/tabs.html)4
-rw-r--r--tests/basic/tabs.txt (renamed from tests/markdown-test/tabs.txt)0
-rw-r--r--tests/basic/tidyness.html (renamed from tests/markdown-test/tidyness.html)0
-rw-r--r--tests/basic/tidyness.txt (renamed from tests/markdown-test/tidyness.txt)0
-rw-r--r--tests/extensions-x-abbr/abbr.html4
-rw-r--r--tests/extensions-x-abbr/abbr.txt13
-rw-r--r--tests/extensions-x-footnotes/footnote.html29
-rw-r--r--tests/extensions-x-footnotes/footnote.txt14
-rw-r--r--tests/extensions-x-footnotes/named_markers.html24
-rw-r--r--tests/extensions-x-tables/tables.html119
-rw-r--r--tests/extensions-x-tables/tables.txt34
-rw-r--r--tests/extensions-x-toc/nested.html16
-rw-r--r--tests/extensions-x-wikilinks/wikilinks.html6
-rw-r--r--tests/extensions/admonition.html48
-rw-r--r--tests/extensions/admonition.txt45
-rw-r--r--tests/extensions/attr_list.html69
-rw-r--r--tests/extensions/attr_list.txt94
-rw-r--r--tests/extensions/codehilite.html (renamed from tests/extensions-x-codehilite/code.html)0
-rw-r--r--tests/extensions/codehilite.txt (renamed from tests/extensions-x-codehilite/code.txt)0
-rw-r--r--tests/extensions/extra/def-in-list.html25
-rw-r--r--tests/extensions/extra/def-in-list.txt15
-rw-r--r--tests/extensions/extra/extra_config.html9
-rw-r--r--tests/extensions/extra/extra_config.txt5
-rw-r--r--tests/extensions/extra/footnote.html71
-rw-r--r--tests/extensions/extra/footnote.txt62
-rw-r--r--tests/extensions/extra/footnote_many_footnotes.html4801
-rw-r--r--tests/extensions/extra/footnote_many_footnotes.txt4796
-rw-r--r--tests/extensions/extra/footnote_placeholder.html9
-rw-r--r--tests/extensions/extra/footnote_placeholder.txt5
-rw-r--r--tests/extensions/extra/footnote_placeholder_depth.html13
-rw-r--r--tests/extensions/extra/footnote_placeholder_depth.txt5
-rw-r--r--tests/extensions/extra/loose_def_list.html (renamed from tests/extensions-x-def_list/loose_def_list.html)12
-rw-r--r--tests/extensions/extra/loose_def_list.txt (renamed from tests/extensions-x-def_list/loose_def_list.txt)11
-rw-r--r--tests/extensions/extra/markdown-syntax.html (renamed from tests/markdown-test/markdown-syntax.html)16
-rw-r--r--tests/extensions/extra/markdown-syntax.txt888
-rw-r--r--tests/extensions/extra/named_markers.html20
-rw-r--r--tests/extensions/extra/named_markers.txt (renamed from tests/extensions-x-footnotes/named_markers.txt)0
-rw-r--r--tests/extensions/extra/raw-html.html123
-rw-r--r--tests/extensions/extra/raw-html.txt184
-rw-r--r--tests/extensions/extra/simple_def-lists.html (renamed from tests/extensions-x-def_list/simple_def-lists.html)6
-rw-r--r--tests/extensions/extra/simple_def-lists.txt (renamed from tests/extensions-x-def_list/simple_def-lists.txt)6
-rw-r--r--tests/extensions/github_flavored.html40
-rw-r--r--tests/extensions/github_flavored.txt45
-rw-r--r--tests/extensions/nl2br_w_attr_list.html1
-rw-r--r--tests/extensions/nl2br_w_attr_list.txt2
-rw-r--r--tests/extensions/sane_lists.html32
-rw-r--r--tests/extensions/sane_lists.txt26
-rw-r--r--tests/extensions/smarty.html32
-rw-r--r--tests/extensions/smarty.txt40
-rw-r--r--tests/extensions/toc.html (renamed from tests/extensions-x-toc/syntax-toc.html)16
-rw-r--r--tests/extensions/toc.txt (renamed from tests/extensions-x-toc/syntax-toc.txt)6
-rw-r--r--tests/extensions/toc_invalid.html (renamed from tests/extensions-x-toc/invalid.html)0
-rw-r--r--tests/extensions/toc_invalid.txt (renamed from tests/extensions-x-toc/invalid.txt)0
-rw-r--r--tests/extensions/toc_nested.html16
-rw-r--r--tests/extensions/toc_nested.txt (renamed from tests/extensions-x-toc/nested.txt)2
-rw-r--r--tests/extensions/toc_nested2.html14
-rw-r--r--tests/extensions/toc_nested2.txt10
-rw-r--r--tests/extensions/toc_nested_list.html30
-rw-r--r--tests/extensions/toc_nested_list.txt19
-rw-r--r--tests/extensions/toc_out_of_order.html8
-rw-r--r--tests/extensions/toc_out_of_order.txt5
-rw-r--r--tests/extensions/wikilinks.html9
-rw-r--r--tests/extensions/wikilinks.txt (renamed from tests/extensions-x-wikilinks/wikilinks.txt)0
-rw-r--r--tests/html4/html4.html2
-rw-r--r--tests/html4/html4.txt2
-rw-r--r--tests/markdown-test/benchmark.dat20
-rw-r--r--tests/misc/amp-in-url.html1
-rw-r--r--tests/misc/amp-in-url.txt1
-rw-r--r--tests/misc/ampersand.html2
-rw-r--r--tests/misc/ampersand.txt5
-rw-r--r--tests/misc/attributes2.html6
-rw-r--r--tests/misc/attributes2.txt10
-rw-r--r--tests/misc/backtick-escape.html5
-rw-r--r--tests/misc/backtick-escape.txt5
-rw-r--r--tests/misc/bidi.html4
-rw-r--r--tests/misc/bidi.txt4
-rw-r--r--tests/misc/blank-block-quote.html2
-rw-r--r--tests/misc/blank_lines_in_codeblocks.html61
-rw-r--r--tests/misc/blank_lines_in_codeblocks.txt73
-rw-r--r--tests/misc/blockquote-hr.html9
-rw-r--r--tests/misc/blockquote-hr.txt6
-rw-r--r--tests/misc/br.html2
-rw-r--r--tests/misc/br.txt2
-rw-r--r--tests/misc/brackets-in-img-title.html9
-rw-r--r--tests/misc/brackets-in-img-title.txt12
-rw-r--r--tests/misc/comments.html5
-rw-r--r--tests/misc/comments.txt7
-rw-r--r--tests/misc/div.html4
-rw-r--r--tests/misc/div.txt5
-rw-r--r--tests/misc/em-around-links.html15
-rw-r--r--tests/misc/em-around-links.txt10
-rw-r--r--tests/misc/em_strong.html3
-rw-r--r--tests/misc/em_strong.txt1
-rw-r--r--tests/misc/em_strong_complex.html14
-rw-r--r--tests/misc/em_strong_complex.txt27
-rw-r--r--tests/misc/email.html3
-rw-r--r--tests/misc/email.txt2
-rw-r--r--tests/misc/escaped_links.html4
-rw-r--r--tests/misc/escaped_links.txt9
-rw-r--r--tests/misc/h1.html4
-rw-r--r--tests/misc/h1.txt6
-rw-r--r--tests/misc/header-in-lists.html20
-rw-r--r--tests/misc/header-in-lists.txt14
-rw-r--r--tests/misc/html-comments.html2
-rw-r--r--tests/misc/html-comments.txt2
-rw-r--r--tests/misc/html.html9
-rw-r--r--tests/misc/html.txt13
-rw-r--r--tests/misc/image.html1
-rw-r--r--tests/misc/image.txt2
-rw-r--r--tests/misc/ins-at-start-of-paragraph.html1
-rw-r--r--tests/misc/ins-at-start-of-paragraph.txt1
-rw-r--r--tests/misc/lists3.html4
-rw-r--r--tests/misc/lists7.html98
-rw-r--r--tests/misc/lists7.txt44
-rw-r--r--tests/misc/lists8.html39
-rw-r--r--tests/misc/lists8.txt16
-rw-r--r--tests/misc/markup-inside-p.html21
-rw-r--r--tests/misc/markup-inside-p.txt21
-rw-r--r--tests/misc/mismatched-tags.html11
-rw-r--r--tests/misc/mismatched-tags.txt9
-rw-r--r--tests/misc/more_comments.html7
-rw-r--r--tests/misc/more_comments.txt9
-rw-r--r--tests/misc/multi-line-tags.html4
-rw-r--r--tests/misc/multi-line-tags.txt6
-rw-r--r--tests/misc/multi-paragraph-block-quote.html2
-rw-r--r--tests/misc/multi-test.html2
-rw-r--r--tests/misc/multi-test.txt6
-rw-r--r--tests/misc/multiline-comments.html16
-rw-r--r--tests/misc/multiline-comments.txt18
-rw-r--r--tests/misc/nested-lists.html13
-rw-r--r--tests/misc/nested-lists.txt9
-rw-r--r--tests/misc/nested-patterns.html17
-rw-r--r--tests/misc/nested-patterns.txt20
-rw-r--r--tests/misc/para-with-hr.html5
-rw-r--r--tests/misc/para-with-hr.txt3
-rw-r--r--tests/misc/php.html11
-rw-r--r--tests/misc/php.txt13
-rw-r--r--tests/misc/pre.html13
-rw-r--r--tests/misc/pre.txt14
-rw-r--r--tests/misc/some-test.html6
-rw-r--r--tests/misc/tabs-in-lists.html2
-rw-r--r--tests/misc/two-spaces.html6
-rw-r--r--tests/misc/uche.html2
-rw-r--r--tests/misc/uche.txt3
-rw-r--r--tests/misc/underscores.html2
-rw-r--r--tests/php/Auto Links.text3
-rw-r--r--tests/php/Auto Links.xhtml3
-rw-r--r--tests/php/Backslash escapes.text1
-rw-r--r--tests/php/Backslash escapes.xhtml1
-rw-r--r--tests/php/Code Spans.text6
-rw-r--r--tests/php/Code Spans.xhtml6
-rw-r--r--tests/php/Code block in a list item.text15
-rw-r--r--tests/php/Code block in a list item.xhtml18
-rw-r--r--tests/php/Code block on second line.text2
-rw-r--r--tests/php/Code block on second line.xhtml2
-rw-r--r--tests/php/Email auto links.text3
-rw-r--r--tests/php/Email auto links.xhtml3
-rw-r--r--tests/php/Emphasis.text80
-rw-r--r--tests/php/Emphasis.xhtml83
-rw-r--r--tests/php/Empty List Item.text35
-rw-r--r--tests/php/Empty List Item.xhtml47
-rw-r--r--tests/php/Headers.text9
-rw-r--r--tests/php/Headers.xhtml39
-rw-r--r--tests/php/Horizontal Rules.text29
-rw-r--r--tests/php/Horizontal Rules.xhtml30
-rw-r--r--tests/php/Inline HTML (Simple).text15
-rw-r--r--tests/php/Inline HTML (Simple).xhtml15
-rw-r--r--tests/php/Inline HTML (Span).text4
-rw-r--r--tests/php/Inline HTML (Span).xhtml4
-rw-r--r--tests/php/Inline HTML comments.text9
-rw-r--r--tests/php/Inline HTML comments.xhtml9
-rw-r--r--tests/php/Ins & del.text17
-rw-r--r--tests/php/Ins & del.xhtml17
-rw-r--r--tests/php/License339
-rw-r--r--tests/php/Links, inline style.text1
-rw-r--r--tests/php/Links, inline style.xhtml1
-rw-r--r--tests/php/MD5 Hashes.text11
-rw-r--r--tests/php/MD5 Hashes.xhtml11
-rw-r--r--tests/php/Mixed OLs and ULs.text13
-rw-r--r--tests/php/Mixed OLs and ULs.xhtml21
-rw-r--r--tests/php/Nesting.text11
-rw-r--r--tests/php/Nesting.xhtml11
-rw-r--r--tests/php/PHP-Specific Bugs.text22
-rw-r--r--tests/php/PHP-Specific Bugs.xhtml17
-rw-r--r--tests/php/Parens in URL.text14
-rw-r--r--tests/php/Parens in URL.xhtml11
-rw-r--r--tests/php/Quotes in attributes.text5
-rw-r--r--tests/php/Quotes in attributes.xhtml5
-rw-r--r--tests/php/Tight blocks.text1
-rw-r--r--tests/php/Tight blocks.xhtml21
-rw-r--r--tests/php/extra/Abbr.text31
-rw-r--r--tests/php/extra/Abbr.xhtml15
-rw-r--r--tests/php/extra/Definition Lists.text115
-rw-r--r--tests/php/extra/Definition Lists.xhtml155
-rw-r--r--tests/php/extra/Emphasis.text80
-rw-r--r--tests/php/extra/Emphasis.xhtml83
-rw-r--r--tests/php/extra/Fenced Code Blocks.text60
-rw-r--r--tests/php/extra/Fenced Code Blocks.xhtml53
-rw-r--r--tests/php/extra/Footnotes.text61
-rw-r--r--tests/php/extra/Footnotes.xhtml96
-rw-r--r--tests/php/extra/Inline HTML with Markdown content.text104
-rw-r--r--tests/php/extra/Inline HTML with Markdown content.xhtml125
-rw-r--r--tests/php/extra/Tables.text104
-rw-r--r--tests/php/extra/Tables.xhtml310
-rw-r--r--tests/pl/Tests_2004/Amps and angle encoding.html17
-rw-r--r--tests/pl/Tests_2004/Amps and angle encoding.text21
-rw-r--r--tests/pl/Tests_2004/Auto links.html18
-rw-r--r--tests/pl/Tests_2004/Auto links.text13
-rw-r--r--tests/pl/Tests_2004/Backslash escapes.html102
-rw-r--r--tests/pl/Tests_2004/Backslash escapes.text104
-rw-r--r--tests/pl/Tests_2004/Blockquotes with code blocks.html15
-rw-r--r--tests/pl/Tests_2004/Blockquotes with code blocks.text11
-rw-r--r--tests/pl/Tests_2004/Hard-wrapped paragraphs with list-like lines.html8
-rw-r--r--tests/pl/Tests_2004/Hard-wrapped paragraphs with list-like lines.text8
-rw-r--r--tests/pl/Tests_2004/Horizontal rules.html71
-rw-r--r--tests/pl/Tests_2004/Horizontal rules.text67
-rw-r--r--tests/pl/Tests_2004/Inline HTML (Advanced).html (renamed from tests/markdown-test/inline-html-advanced.html)4
-rw-r--r--tests/pl/Tests_2004/Inline HTML (Advanced).text (renamed from tests/markdown-test/inline-html-advanced.txt)0
-rw-r--r--tests/pl/Tests_2004/Inline HTML (Simple).html (renamed from tests/markdown-test/inline-html-simple.html)24
-rw-r--r--tests/pl/Tests_2004/Inline HTML (Simple).text (renamed from tests/markdown-test/inline-html-simple.txt)0
-rw-r--r--tests/pl/Tests_2004/Inline HTML comments.html (renamed from tests/markdown-test/inline-html-comments.html)4
-rw-r--r--tests/pl/Tests_2004/Inline HTML comments.text (renamed from tests/markdown-test/inline-html-comments.txt)0
-rw-r--r--tests/pl/Tests_2004/Links, inline style.html9
-rw-r--r--tests/pl/Tests_2004/Links, inline style.text9
-rw-r--r--tests/pl/Tests_2004/Links, reference style.html (renamed from tests/markdown-test/links-reference.html)10
-rw-r--r--tests/pl/Tests_2004/Links, reference style.text (renamed from tests/markdown-test/links-reference.txt)0
-rw-r--r--tests/pl/Tests_2004/Literal quotes in titles.html3
-rw-r--r--tests/pl/Tests_2004/Literal quotes in titles.text7
-rw-r--r--tests/pl/Tests_2004/Markdown Documentation - Basics.html (renamed from tests/markdown-test/markdown-documentation-basics.html)75
-rw-r--r--tests/pl/Tests_2004/Markdown Documentation - Basics.text (renamed from tests/markdown-test/markdown-documentation-basics.txt)2
-rw-r--r--tests/pl/Tests_2004/Markdown Documentation - Syntax.html942
-rw-r--r--tests/pl/Tests_2004/Markdown Documentation - Syntax.text (renamed from tests/markdown-test/markdown-syntax.txt)4
-rw-r--r--tests/pl/Tests_2004/Nested blockquotes.html9
-rw-r--r--tests/pl/Tests_2004/Nested blockquotes.text5
-rw-r--r--tests/pl/Tests_2004/Ordered and unordered lists.html137
-rw-r--r--tests/pl/Tests_2004/Ordered and unordered lists.text122
-rw-r--r--tests/pl/Tests_2004/Strong and em together.html7
-rw-r--r--tests/pl/Tests_2004/Strong and em together.text7
-rw-r--r--tests/pl/Tests_2004/Tabs.html25
-rw-r--r--tests/pl/Tests_2004/Tabs.text21
-rw-r--r--tests/pl/Tests_2004/Tidyness.html8
-rw-r--r--tests/pl/Tests_2004/Tidyness.text5
-rw-r--r--tests/pl/Tests_2004/Yuri-Attributes.html28
-rw-r--r--tests/pl/Tests_2004/Yuri-Attributes.text19
-rw-r--r--tests/pl/Tests_2004/Yuri-Email.html18
-rw-r--r--tests/pl/Tests_2004/Yuri-Email.text7
-rw-r--r--tests/pl/Tests_2004/Yuri-Footnotes.html46
-rw-r--r--tests/pl/Tests_2004/Yuri-Footnotes.text32
-rw-r--r--tests/pl/Tests_2004/Yuri-Links-in-Headers.html15
-rw-r--r--tests/pl/Tests_2004/Yuri-Links-in-Headers.text18
-rw-r--r--tests/pl/Tests_2007/Amps and angle encoding.html17
-rw-r--r--tests/pl/Tests_2007/Amps and angle encoding.text21
-rw-r--r--tests/pl/Tests_2007/Auto links.html18
-rw-r--r--tests/pl/Tests_2007/Auto links.text13
-rw-r--r--tests/pl/Tests_2007/Backslash escapes.html118
-rw-r--r--tests/pl/Tests_2007/Backslash escapes.text120
-rw-r--r--tests/pl/Tests_2007/Blockquotes with code blocks.html15
-rw-r--r--tests/pl/Tests_2007/Blockquotes with code blocks.text11
-rw-r--r--tests/pl/Tests_2007/Code Blocks.html18
-rw-r--r--tests/pl/Tests_2007/Code Blocks.text14
-rw-r--r--tests/pl/Tests_2007/Code Spans.html5
-rw-r--r--tests/pl/Tests_2007/Code Spans.text5
-rw-r--r--tests/pl/Tests_2007/Hard-wrapped paragraphs with list-like lines.html8
-rw-r--r--tests/pl/Tests_2007/Hard-wrapped paragraphs with list-like lines.text8
-rw-r--r--tests/pl/Tests_2007/Horizontal rules.html71
-rw-r--r--tests/pl/Tests_2007/Horizontal rules.text67
-rw-r--r--tests/pl/Tests_2007/Images.html21
-rw-r--r--tests/pl/Tests_2007/Images.text26
-rw-r--r--tests/pl/Tests_2007/Inline HTML (Advanced).html30
-rw-r--r--tests/pl/Tests_2007/Inline HTML (Advanced).text30
-rw-r--r--tests/pl/Tests_2007/Inline HTML (Simple).html (renamed from tests/safe_mode/inline-html-simple.html)69
-rw-r--r--tests/pl/Tests_2007/Inline HTML (Simple).text (renamed from tests/safe_mode/inline-html-simple.txt)0
-rw-r--r--tests/pl/Tests_2007/Inline HTML comments.html13
-rw-r--r--tests/pl/Tests_2007/Inline HTML comments.text (renamed from tests/safe_mode/inline-html-comments.txt)0
-rw-r--r--tests/pl/Tests_2007/Links, inline style.html23
-rw-r--r--tests/pl/Tests_2007/Links, inline style.text24
-rw-r--r--tests/pl/Tests_2007/Links, reference style.html52
-rw-r--r--tests/pl/Tests_2007/Links, reference style.text71
-rw-r--r--tests/pl/Tests_2007/Links, shortcut references.html9
-rw-r--r--tests/pl/Tests_2007/Links, shortcut references.text20
-rw-r--r--tests/pl/Tests_2007/Literal quotes in titles.html3
-rw-r--r--tests/pl/Tests_2007/Literal quotes in titles.text7
-rw-r--r--tests/pl/Tests_2007/Markdown Documentation - Basics.html314
-rw-r--r--tests/pl/Tests_2007/Markdown Documentation - Basics.text306
-rw-r--r--tests/pl/Tests_2007/Markdown Documentation - Syntax.html942
-rw-r--r--tests/pl/Tests_2007/Markdown Documentation - Syntax.text888
-rw-r--r--tests/pl/Tests_2007/Nested blockquotes.html9
-rw-r--r--tests/pl/Tests_2007/Nested blockquotes.text5
-rw-r--r--tests/pl/Tests_2007/Ordered and unordered lists.html148
-rw-r--r--tests/pl/Tests_2007/Ordered and unordered lists.text131
-rw-r--r--tests/pl/Tests_2007/Strong and em together.html7
-rw-r--r--tests/pl/Tests_2007/Strong and em together.text7
-rw-r--r--tests/pl/Tests_2007/Tabs.html25
-rw-r--r--tests/pl/Tests_2007/Tabs.text21
-rw-r--r--tests/pl/Tests_2007/Tidyness.html8
-rw-r--r--tests/pl/Tests_2007/Tidyness.text5
-rw-r--r--tests/safe_mode/inline-html-advanced.html11
-rw-r--r--tests/safe_mode/inline-html-advanced.txt14
-rw-r--r--tests/safe_mode/inline-html-comments.html8
-rw-r--r--tests/safe_mode/script_tags.html28
-rw-r--r--tests/safe_mode/script_tags.txt33
-rw-r--r--tests/safe_mode/unsafe_urls.html20
-rw-r--r--tests/safe_mode/unsafe_urls.txt27
-rw-r--r--tests/test_apis.py957
-rw-r--r--tests/test_extensions.py665
-rw-r--r--tests/test_legacy.py194
-rw-r--r--tests/test_meta.py24
-rw-r--r--tests/test_syntax/__init__.py20
-rw-r--r--tests/test_syntax/blocks/__init__.py20
-rw-r--r--tests/test_syntax/blocks/test_blockquotes.py51
-rw-r--r--tests/test_syntax/blocks/test_code_blocks.py88
-rw-r--r--tests/test_syntax/blocks/test_headers.py729
-rw-r--r--tests/test_syntax/blocks/test_hr.py402
-rw-r--r--tests/test_syntax/blocks/test_html_blocks.py1619
-rw-r--r--tests/test_syntax/blocks/test_paragraphs.py229
-rw-r--r--tests/test_syntax/extensions/__init__.py20
-rw-r--r--tests/test_syntax/extensions/test_abbr.py242
-rw-r--r--tests/test_syntax/extensions/test_admonition.py245
-rw-r--r--tests/test_syntax/extensions/test_attr_list.py80
-rw-r--r--tests/test_syntax/extensions/test_code_hilite.py764
-rw-r--r--tests/test_syntax/extensions/test_def_list.py323
-rw-r--r--tests/test_syntax/extensions/test_fenced_code.py1020
-rw-r--r--tests/test_syntax/extensions/test_footnotes.py338
-rw-r--r--tests/test_syntax/extensions/test_legacy_attrs.py67
-rw-r--r--tests/test_syntax/extensions/test_legacy_em.py66
-rw-r--r--tests/test_syntax/extensions/test_md_in_html.py1216
-rw-r--r--tests/test_syntax/extensions/test_smarty.py36
-rw-r--r--tests/test_syntax/extensions/test_tables.py922
-rw-r--r--tests/test_syntax/extensions/test_toc.py614
-rw-r--r--tests/test_syntax/inline/__init__.py20
-rw-r--r--tests/test_syntax/inline/test_autolinks.py63
-rw-r--r--tests/test_syntax/inline/test_emphasis.py130
-rw-r--r--tests/test_syntax/inline/test_entities.py43
-rw-r--r--tests/test_syntax/inline/test_images.py184
-rw-r--r--tests/test_syntax/inline/test_links.py386
-rw-r--r--tests/test_syntax/inline/test_raw_html.py30
369 files changed, 32902 insertions, 805 deletions
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..564ba3b
--- /dev/null
+++ b/tests/__init__.py
@@ -0,0 +1,20 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
diff --git a/tests/markdown-test/amps-and-angle-encoding.html b/tests/basic/amps-and-angle-encoding.html
index 2c466c1..2c466c1 100644
--- a/tests/markdown-test/amps-and-angle-encoding.html
+++ b/tests/basic/amps-and-angle-encoding.html
diff --git a/tests/markdown-test/amps-and-angle-encoding.txt b/tests/basic/amps-and-angle-encoding.txt
index 0e9527f..0e9527f 100644
--- a/tests/markdown-test/amps-and-angle-encoding.txt
+++ b/tests/basic/amps-and-angle-encoding.txt
diff --git a/tests/markdown-test/angle-links-and-img.html b/tests/basic/angle-links-and-img.html
index 1ca3b0b..1ca3b0b 100644
--- a/tests/markdown-test/angle-links-and-img.html
+++ b/tests/basic/angle-links-and-img.html
diff --git a/tests/markdown-test/angle-links-and-img.txt b/tests/basic/angle-links-and-img.txt
index 1dbf404..1dbf404 100644
--- a/tests/markdown-test/angle-links-and-img.txt
+++ b/tests/basic/angle-links-and-img.txt
diff --git a/tests/markdown-test/auto-links.html b/tests/basic/auto-links.html
index 7481fe2..7481fe2 100644
--- a/tests/markdown-test/auto-links.html
+++ b/tests/basic/auto-links.html
diff --git a/tests/markdown-test/auto-links.txt b/tests/basic/auto-links.txt
index a188b40..a188b40 100644
--- a/tests/markdown-test/auto-links.txt
+++ b/tests/basic/auto-links.txt
diff --git a/tests/markdown-test/backlash-escapes.html b/tests/basic/backlash-escapes.html
index 876775f..876775f 100644
--- a/tests/markdown-test/backlash-escapes.html
+++ b/tests/basic/backlash-escapes.html
diff --git a/tests/markdown-test/backlash-escapes.txt b/tests/basic/backlash-escapes.txt
index 16447a0..16447a0 100644
--- a/tests/markdown-test/backlash-escapes.txt
+++ b/tests/basic/backlash-escapes.txt
diff --git a/tests/markdown-test/blockquotes-with-code-blocks.html b/tests/basic/blockquotes-with-code-blocks.html
index 5fc98b1..5fc98b1 100644
--- a/tests/markdown-test/blockquotes-with-code-blocks.html
+++ b/tests/basic/blockquotes-with-code-blocks.html
diff --git a/tests/markdown-test/blockquotes-with-code-blocks.txt b/tests/basic/blockquotes-with-code-blocks.txt
index c31d171..c31d171 100644
--- a/tests/markdown-test/blockquotes-with-code-blocks.txt
+++ b/tests/basic/blockquotes-with-code-blocks.txt
diff --git a/tests/markdown-test/codeblock-in-list.html b/tests/basic/codeblock-in-list.html
index 49edd56..49edd56 100644
--- a/tests/markdown-test/codeblock-in-list.html
+++ b/tests/basic/codeblock-in-list.html
diff --git a/tests/markdown-test/codeblock-in-list.txt b/tests/basic/codeblock-in-list.txt
index 87d4e3b..87d4e3b 100644
--- a/tests/markdown-test/codeblock-in-list.txt
+++ b/tests/basic/codeblock-in-list.txt
diff --git a/tests/markdown-test/hard-wrapped.html b/tests/basic/hard-wrapped.html
index e28e900..e28e900 100644
--- a/tests/markdown-test/hard-wrapped.html
+++ b/tests/basic/hard-wrapped.html
diff --git a/tests/markdown-test/hard-wrapped.txt b/tests/basic/hard-wrapped.txt
index f8a5b27..f8a5b27 100644
--- a/tests/markdown-test/hard-wrapped.txt
+++ b/tests/basic/hard-wrapped.txt
diff --git a/tests/markdown-test/horizontal-rules.html b/tests/basic/horizontal-rules.html
index 478e8c5..478e8c5 100644
--- a/tests/markdown-test/horizontal-rules.html
+++ b/tests/basic/horizontal-rules.html
diff --git a/tests/markdown-test/horizontal-rules.txt b/tests/basic/horizontal-rules.txt
index 1594bda..1594bda 100644
--- a/tests/markdown-test/horizontal-rules.txt
+++ b/tests/basic/horizontal-rules.txt
diff --git a/tests/markdown-test/links-inline.html b/tests/basic/links-inline.html
index 707937a..707937a 100644
--- a/tests/markdown-test/links-inline.html
+++ b/tests/basic/links-inline.html
diff --git a/tests/markdown-test/links-inline.txt b/tests/basic/links-inline.txt
index 4d0c1c2..4d0c1c2 100644
--- a/tests/markdown-test/links-inline.txt
+++ b/tests/basic/links-inline.txt
diff --git a/tests/basic/links-reference.html b/tests/basic/links-reference.html
new file mode 100644
index 0000000..63f242d
--- /dev/null
+++ b/tests/basic/links-reference.html
@@ -0,0 +1,22 @@
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+<p>With <a href="/url/">embedded [brackets]</a>.</p>
+<p>Indented <a href="/url">once</a>.</p>
+<p>Indented <a href="/url">twice</a>.</p>
+<p>Indented <a href="/url">thrice</a>.</p>
+<p>Indented [four][] times.</p>
+<pre><code>[four]: /url
+</code></pre>
+<p>With <a href="http://example.com/" title="Angle Brackets">angle brackets</a>.</p>
+<p>And <a href="http://example.com/" title="Without angle brackets.">without</a>.</p>
+<p>With <a href="http://example.com" title="Yes this works">line
+breaks</a></p>
+<p>and <a href="http://example.com" title="Yes this works">line
+breaks</a> with one space.</p>
+<p>and [line<br />
+breaks[] with two spaces.</p>
+<p><a href="http://example.com" title="No more hanging empty bracket!">short ref</a></p>
+<p><a href="http://example.com" title="No more hanging empty bracket!">short
+ref</a></p>
+<p><a href="http://example.com" title="Title on next line.">a ref</a></p> \ No newline at end of file
diff --git a/tests/basic/links-reference.txt b/tests/basic/links-reference.txt
new file mode 100644
index 0000000..3d636e5
--- /dev/null
+++ b/tests/basic/links-reference.txt
@@ -0,0 +1,61 @@
+Foo [bar] [1].
+
+Foo [bar][1].
+
+Foo [bar]
+[1].
+
+[1]: /url/ "Title"
+
+
+With [embedded [brackets]] [b].
+
+
+Indented [once][].
+
+Indented [twice][].
+
+Indented [thrice][].
+
+Indented [four][] times.
+
+ [once]: /url
+
+ [twice]: /url
+
+ [thrice]: /url
+
+ [four]: /url
+
+
+[b]: /url/
+
+With [angle brackets][].
+
+And [without][].
+
+[angle brackets]: <http://example.com/> "Angle Brackets"
+[without]: http://example.com/ "Without angle brackets."
+
+With [line
+breaks][]
+
+and [line
+breaks][] with one space.
+
+and [line
+breaks[] with two spaces.
+
+[line breaks]: http://example.com "Yes this works"
+
+[short ref]
+
+[short
+ref]
+
+[short ref]: http://example.com "No more hanging empty bracket!"
+
+[a ref]
+
+[a ref]: http://example.com
+ "Title on next line."
diff --git a/tests/markdown-test/literal-quotes.html b/tests/basic/literal-quotes.html
index 0342589..0342589 100644
--- a/tests/markdown-test/literal-quotes.html
+++ b/tests/basic/literal-quotes.html
diff --git a/tests/markdown-test/literal-quotes.txt b/tests/basic/literal-quotes.txt
index 29d0e42..29d0e42 100644
--- a/tests/markdown-test/literal-quotes.txt
+++ b/tests/basic/literal-quotes.txt
diff --git a/tests/basic/markdown-documentation-basics.html b/tests/basic/markdown-documentation-basics.html
new file mode 100644
index 0000000..fd2e687
--- /dev/null
+++ b/tests/basic/markdown-documentation-basics.html
@@ -0,0 +1,243 @@
+<h1>Markdown: Basics</h1>
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a class="selected" title="Markdown Basics">Basics</a></li>
+ <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+<h2>Getting the Gist of Markdown's Formatting Syntax</h2>
+<p>This page offers a brief overview of what it's like to use Markdown.
+The <a href="/projects/markdown/syntax" title="Markdown Syntax">syntax page</a> provides complete, detailed documentation for
+every feature, but Markdown should be very easy to pick up simply by
+looking at a few examples of it in action. The examples on this page
+are written in a before/after style, showing example syntax and the
+HTML output produced by Markdown.</p>
+<p>It's also helpful to simply try Markdown out; the <a href="/projects/markdown/dingus" title="Markdown Dingus">Dingus</a> is a
+web application that allows you type your own Markdown-formatted text
+and translate it to XHTML.</p>
+<p><strong>Note:</strong> This document is itself written using Markdown; you
+can <a href="/projects/markdown/basics.text">see the source for it by adding '.text' to the URL</a>.</p>
+<h2>Paragraphs, Headers, Blockquotes</h2>
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing spaces or tabs is considered
+blank.) Normal paragraphs should not be indented with spaces or tabs.</p>
+<p>Markdown offers two styles of headers: <em>Setext</em> and <em>atx</em>.
+Setext-style headers for <code>&lt;h1&gt;</code> and <code>&lt;h2&gt;</code> are created by
+"underlining" with equal signs (<code>=</code>) and hyphens (<code>-</code>), respectively.
+To create an atx-style header, you put 1-6 hash marks (<code>#</code>) at the
+beginning of the line -- the number of hashes equals the resulting
+HTML header level.</p>
+<p>Blockquotes are indicated using email-style '<code>&gt;</code>' angle brackets.</p>
+<p>Markdown:</p>
+<pre><code>A First Level Header
+====================
+
+A Second Level Header
+---------------------
+
+Now is the time for all good men to come to
+the aid of their country. This is just a
+regular paragraph.
+
+The quick brown fox jumped over the lazy
+dog's back.
+
+### Header 3
+
+&gt; This is a blockquote.
+&gt;
+&gt; This is the second paragraph in the blockquote.
+&gt;
+&gt; ## This is an H2 in a blockquote
+</code></pre>
+<p>Output:</p>
+<pre><code>&lt;h1&gt;A First Level Header&lt;/h1&gt;
+
+&lt;h2&gt;A Second Level Header&lt;/h2&gt;
+
+&lt;p&gt;Now is the time for all good men to come to
+the aid of their country. This is just a
+regular paragraph.&lt;/p&gt;
+
+&lt;p&gt;The quick brown fox jumped over the lazy
+dog's back.&lt;/p&gt;
+
+&lt;h3&gt;Header 3&lt;/h3&gt;
+
+&lt;blockquote&gt;
+ &lt;p&gt;This is a blockquote.&lt;/p&gt;
+
+ &lt;p&gt;This is the second paragraph in the blockquote.&lt;/p&gt;
+
+ &lt;h2&gt;This is an H2 in a blockquote&lt;/h2&gt;
+&lt;/blockquote&gt;
+</code></pre>
+<h3>Phrase Emphasis</h3>
+<p>Markdown uses asterisks and underscores to indicate spans of emphasis.</p>
+<p>Markdown:</p>
+<pre><code>Some of these words *are emphasized*.
+Some of these words _are emphasized also_.
+
+Use two asterisks for **strong emphasis**.
+Or, if you prefer, __use two underscores instead__.
+</code></pre>
+<p>Output:</p>
+<pre><code>&lt;p&gt;Some of these words &lt;em&gt;are emphasized&lt;/em&gt;.
+Some of these words &lt;em&gt;are emphasized also&lt;/em&gt;.&lt;/p&gt;
+
+&lt;p&gt;Use two asterisks for &lt;strong&gt;strong emphasis&lt;/strong&gt;.
+Or, if you prefer, &lt;strong&gt;use two underscores instead&lt;/strong&gt;.&lt;/p&gt;
+</code></pre>
+<h2>Lists</h2>
+<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,
+<code>+</code>, and <code>-</code>) as list markers. These three markers are
+interchangeable; this:</p>
+<pre><code>* Candy.
+* Gum.
+* Booze.
+</code></pre>
+<p>this:</p>
+<pre><code>+ Candy.
++ Gum.
++ Booze.
+</code></pre>
+<p>and this:</p>
+<pre><code>- Candy.
+- Gum.
+- Booze.
+</code></pre>
+<p>all produce the same output:</p>
+<pre><code>&lt;ul&gt;
+&lt;li&gt;Candy.&lt;/li&gt;
+&lt;li&gt;Gum.&lt;/li&gt;
+&lt;li&gt;Booze.&lt;/li&gt;
+&lt;/ul&gt;
+</code></pre>
+<p>Ordered (numbered) lists use regular numbers, followed by periods, as
+list markers:</p>
+<pre><code>1. Red
+2. Green
+3. Blue
+</code></pre>
+<p>Output:</p>
+<pre><code>&lt;ol&gt;
+&lt;li&gt;Red&lt;/li&gt;
+&lt;li&gt;Green&lt;/li&gt;
+&lt;li&gt;Blue&lt;/li&gt;
+&lt;/ol&gt;
+</code></pre>
+<p>If you put blank lines between items, you'll get <code>&lt;p&gt;</code> tags for the
+list item text. You can create multi-paragraph list items by indenting
+the paragraphs by 4 spaces or 1 tab:</p>
+<pre><code>* A list item.
+
+ With multiple paragraphs.
+
+* Another item in the list.
+</code></pre>
+<p>Output:</p>
+<pre><code>&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;A list item.&lt;/p&gt;
+&lt;p&gt;With multiple paragraphs.&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Another item in the list.&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+</code></pre>
+<h3>Links</h3>
+<p>Markdown supports two styles for creating links: <em>inline</em> and
+<em>reference</em>. With both styles, you use square brackets to delimit the
+text you want to turn into a link.</p>
+<p>Inline-style links use parentheses immediately after the link text.
+For example:</p>
+<pre><code>This is an [example link](http://example.com/).
+</code></pre>
+<p>Output:</p>
+<pre><code>&lt;p&gt;This is an &lt;a href="http://example.com/"&gt;
+example link&lt;/a&gt;.&lt;/p&gt;
+</code></pre>
+<p>Optionally, you may include a title attribute in the parentheses:</p>
+<pre><code>This is an [example link](http://example.com/ "With a Title").
+</code></pre>
+<p>Output:</p>
+<pre><code>&lt;p&gt;This is an &lt;a href="http://example.com/" title="With a Title"&gt;
+example link&lt;/a&gt;.&lt;/p&gt;
+</code></pre>
+<p>Reference-style links allow you to refer to your links by names, which
+you define elsewhere in your document:</p>
+<pre><code>I get 10 times more traffic from [Google][1] than from
+[Yahoo][2] or [MSN][3].
+
+[1]: http://google.com/ "Google"
+[2]: http://search.yahoo.com/ "Yahoo Search"
+[3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+<p>Output:</p>
+<pre><code>&lt;p&gt;I get 10 times more traffic from &lt;a href="http://google.com/"
+title="Google"&gt;Google&lt;/a&gt; than from &lt;a href="http://search.yahoo.com/"
+title="Yahoo Search"&gt;Yahoo&lt;/a&gt; or &lt;a href="http://search.msn.com/"
+title="MSN Search"&gt;MSN&lt;/a&gt;.&lt;/p&gt;
+</code></pre>
+<p>The title attribute is optional. Link names may contain letters,
+numbers and spaces, but are <em>not</em> case sensitive:</p>
+<pre><code>I start my morning with a cup of coffee and
+[The New York Times][NY Times].
+
+[ny times]: http://www.nytimes.com/
+</code></pre>
+<p>Output:</p>
+<pre><code>&lt;p&gt;I start my morning with a cup of coffee and
+&lt;a href="http://www.nytimes.com/"&gt;The New York Times&lt;/a&gt;.&lt;/p&gt;
+</code></pre>
+<h3>Images</h3>
+<p>Image syntax is very much like link syntax.</p>
+<p>Inline (titles are optional):</p>
+<pre><code>![alt text](/path/to/img.jpg "Title")
+</code></pre>
+<p>Reference-style:</p>
+<pre><code>![alt text][id]
+
+[id]: /path/to/img.jpg "Title"
+</code></pre>
+<p>Both of the above examples produce the same output:</p>
+<pre><code>&lt;img src="/path/to/img.jpg" alt="alt text" title="Title" /&gt;
+</code></pre>
+<h3>Code</h3>
+<p>In a regular paragraph, you can create code span by wrapping text in
+backtick quotes. Any ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> or
+<code>&gt;</code>) will automatically be translated into HTML entities. This makes
+it easy to use Markdown to write about HTML example code:</p>
+<pre><code>I strongly recommend against using any `&lt;blink&gt;` tags.
+
+I wish SmartyPants used named entities like `&amp;mdash;`
+instead of decimal-encoded entities like `&amp;#8212;`.
+</code></pre>
+<p>Output:</p>
+<pre><code>&lt;p&gt;I strongly recommend against using any
+&lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;
+
+&lt;p&gt;I wish SmartyPants used named entities like
+&lt;code&gt;&amp;amp;mdash;&lt;/code&gt; instead of decimal-encoded
+entities like &lt;code&gt;&amp;amp;#8212;&lt;/code&gt;.&lt;/p&gt;
+</code></pre>
+<p>To specify an entire block of pre-formatted code, indent every line of
+the block by 4 spaces or 1 tab. Just like with code spans, <code>&amp;</code>, <code>&lt;</code>,
+and <code>&gt;</code> characters will be escaped automatically.</p>
+<p>Markdown:</p>
+<pre><code>If you want your page to validate under XHTML 1.0 Strict,
+you've got to put paragraph tags in your blockquotes:
+
+ &lt;blockquote&gt;
+ &lt;p&gt;For example.&lt;/p&gt;
+ &lt;/blockquote&gt;
+</code></pre>
+<p>Output:</p>
+<pre><code>&lt;p&gt;If you want your page to validate under XHTML 1.0 Strict,
+you've got to put paragraph tags in your blockquotes:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;&amp;lt;blockquote&amp;gt;
+ &amp;lt;p&amp;gt;For example.&amp;lt;/p&amp;gt;
+&amp;lt;/blockquote&amp;gt;
+&lt;/code&gt;&lt;/pre&gt;
+</code></pre> \ No newline at end of file
diff --git a/tests/basic/markdown-documentation-basics.txt b/tests/basic/markdown-documentation-basics.txt
new file mode 100644
index 0000000..b0932f3
--- /dev/null
+++ b/tests/basic/markdown-documentation-basics.txt
@@ -0,0 +1,306 @@
+Markdown: Basics
+================
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a class="selected" title="Markdown Basics">Basics</a></li>
+ <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+
+Getting the Gist of Markdown's Formatting Syntax
+------------------------------------------------
+
+This page offers a brief overview of what it's like to use Markdown.
+The [syntax page] [s] provides complete, detailed documentation for
+every feature, but Markdown should be very easy to pick up simply by
+looking at a few examples of it in action. The examples on this page
+are written in a before/after style, showing example syntax and the
+HTML output produced by Markdown.
+
+It's also helpful to simply try Markdown out; the [Dingus] [d] is a
+web application that allows you type your own Markdown-formatted text
+and translate it to XHTML.
+
+**Note:** This document is itself written using Markdown; you
+can [see the source for it by adding '.text' to the URL] [src].
+
+ [s]: /projects/markdown/syntax "Markdown Syntax"
+ [d]: /projects/markdown/dingus "Markdown Dingus"
+ [src]: /projects/markdown/basics.text
+
+
+## Paragraphs, Headers, Blockquotes ##
+
+A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing spaces or tabs is considered
+blank.) Normal paragraphs should not be indented with spaces or tabs.
+
+Markdown offers two styles of headers: *Setext* and *atx*.
+Setext-style headers for `<h1>` and `<h2>` are created by
+"underlining" with equal signs (`=`) and hyphens (`-`), respectively.
+To create an atx-style header, you put 1-6 hash marks (`#`) at the
+beginning of the line -- the number of hashes equals the resulting
+HTML header level.
+
+Blockquotes are indicated using email-style '`>`' angle brackets.
+
+Markdown:
+
+ A First Level Header
+ ====================
+
+ A Second Level Header
+ ---------------------
+
+ Now is the time for all good men to come to
+ the aid of their country. This is just a
+ regular paragraph.
+
+ The quick brown fox jumped over the lazy
+ dog's back.
+
+ ### Header 3
+
+ > This is a blockquote.
+ >
+ > This is the second paragraph in the blockquote.
+ >
+ > ## This is an H2 in a blockquote
+
+
+Output:
+
+ <h1>A First Level Header</h1>
+
+ <h2>A Second Level Header</h2>
+
+ <p>Now is the time for all good men to come to
+ the aid of their country. This is just a
+ regular paragraph.</p>
+
+ <p>The quick brown fox jumped over the lazy
+ dog's back.</p>
+
+ <h3>Header 3</h3>
+
+ <blockquote>
+ <p>This is a blockquote.</p>
+
+ <p>This is the second paragraph in the blockquote.</p>
+
+ <h2>This is an H2 in a blockquote</h2>
+ </blockquote>
+
+
+
+### Phrase Emphasis ###
+
+Markdown uses asterisks and underscores to indicate spans of emphasis.
+
+Markdown:
+
+ Some of these words *are emphasized*.
+ Some of these words _are emphasized also_.
+
+ Use two asterisks for **strong emphasis**.
+ Or, if you prefer, __use two underscores instead__.
+
+Output:
+
+ <p>Some of these words <em>are emphasized</em>.
+ Some of these words <em>are emphasized also</em>.</p>
+
+ <p>Use two asterisks for <strong>strong emphasis</strong>.
+ Or, if you prefer, <strong>use two underscores instead</strong>.</p>
+
+
+
+## Lists ##
+
+Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,
+`+`, and `-`) as list markers. These three markers are
+interchangeable; this:
+
+ * Candy.
+ * Gum.
+ * Booze.
+
+this:
+
+ + Candy.
+ + Gum.
+ + Booze.
+
+and this:
+
+ - Candy.
+ - Gum.
+ - Booze.
+
+all produce the same output:
+
+ <ul>
+ <li>Candy.</li>
+ <li>Gum.</li>
+ <li>Booze.</li>
+ </ul>
+
+Ordered (numbered) lists use regular numbers, followed by periods, as
+list markers:
+
+ 1. Red
+ 2. Green
+ 3. Blue
+
+Output:
+
+ <ol>
+ <li>Red</li>
+ <li>Green</li>
+ <li>Blue</li>
+ </ol>
+
+If you put blank lines between items, you'll get `<p>` tags for the
+list item text. You can create multi-paragraph list items by indenting
+the paragraphs by 4 spaces or 1 tab:
+
+ * A list item.
+
+ With multiple paragraphs.
+
+ * Another item in the list.
+
+Output:
+
+ <ul>
+ <li><p>A list item.</p>
+ <p>With multiple paragraphs.</p></li>
+ <li><p>Another item in the list.</p></li>
+ </ul>
+
+
+
+### Links ###
+
+Markdown supports two styles for creating links: *inline* and
+*reference*. With both styles, you use square brackets to delimit the
+text you want to turn into a link.
+
+Inline-style links use parentheses immediately after the link text.
+For example:
+
+ This is an [example link](http://example.com/).
+
+Output:
+
+ <p>This is an <a href="http://example.com/">
+ example link</a>.</p>
+
+Optionally, you may include a title attribute in the parentheses:
+
+ This is an [example link](http://example.com/ "With a Title").
+
+Output:
+
+ <p>This is an <a href="http://example.com/" title="With a Title">
+ example link</a>.</p>
+
+Reference-style links allow you to refer to your links by names, which
+you define elsewhere in your document:
+
+ I get 10 times more traffic from [Google][1] than from
+ [Yahoo][2] or [MSN][3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+
+Output:
+
+ <p>I get 10 times more traffic from <a href="http://google.com/"
+ title="Google">Google</a> than from <a href="http://search.yahoo.com/"
+ title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"
+ title="MSN Search">MSN</a>.</p>
+
+The title attribute is optional. Link names may contain letters,
+numbers and spaces, but are *not* case sensitive:
+
+ I start my morning with a cup of coffee and
+ [The New York Times][NY Times].
+
+ [ny times]: http://www.nytimes.com/
+
+Output:
+
+ <p>I start my morning with a cup of coffee and
+ <a href="http://www.nytimes.com/">The New York Times</a>.</p>
+
+
+### Images ###
+
+Image syntax is very much like link syntax.
+
+Inline (titles are optional):
+
+ ![alt text](/path/to/img.jpg "Title")
+
+Reference-style:
+
+ ![alt text][id]
+
+ [id]: /path/to/img.jpg "Title"
+
+Both of the above examples produce the same output:
+
+ <img src="/path/to/img.jpg" alt="alt text" title="Title" />
+
+
+
+### Code ###
+
+In a regular paragraph, you can create code span by wrapping text in
+backtick quotes. Any ampersands (`&`) and angle brackets (`<` or
+`>`) will automatically be translated into HTML entities. This makes
+it easy to use Markdown to write about HTML example code:
+
+ I strongly recommend against using any `<blink>` tags.
+
+ I wish SmartyPants used named entities like `&mdash;`
+ instead of decimal-encoded entities like `&#8212;`.
+
+Output:
+
+ <p>I strongly recommend against using any
+ <code>&lt;blink&gt;</code> tags.</p>
+
+ <p>I wish SmartyPants used named entities like
+ <code>&amp;mdash;</code> instead of decimal-encoded
+ entities like <code>&amp;#8212;</code>.</p>
+
+
+To specify an entire block of pre-formatted code, indent every line of
+the block by 4 spaces or 1 tab. Just like with code spans, `&`, `<`,
+and `>` characters will be escaped automatically.
+
+Markdown:
+
+ If you want your page to validate under XHTML 1.0 Strict,
+ you've got to put paragraph tags in your blockquotes:
+
+ <blockquote>
+ <p>For example.</p>
+ </blockquote>
+
+Output:
+
+ <p>If you want your page to validate under XHTML 1.0 Strict,
+ you've got to put paragraph tags in your blockquotes:</p>
+
+ <pre><code>&lt;blockquote&gt;
+ &lt;p&gt;For example.&lt;/p&gt;
+ &lt;/blockquote&gt;
+ </code></pre>
diff --git a/tests/extensions-x-def_list/markdown-syntax.html b/tests/basic/markdown-syntax.html
index 2f63b4b..cd7ba17 100644
--- a/tests/extensions-x-def_list/markdown-syntax.html
+++ b/tests/basic/markdown-syntax.html
@@ -151,7 +151,7 @@ and <code>&amp;</code> in your example code needs to be escaped.)</p>
<p>A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing but spaces or tabs is considered
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+blank.) Normal paragraphs should not be indented with spaces or tabs.</p>
<p>The implication of the "one or more consecutive lines of text" rule is
that Markdown supports "hard-wrapped" text paragraphs. This differs
significantly from most other text-to-HTML formatters (including Movable
@@ -241,7 +241,7 @@ Quote Level from the Text menu.</p>
<h3 id="list">Lists</h3>
<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>
-<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably
+<p>Unordered lists use asterisks, pluses, and hyphens -- interchangeably
-- as list markers:</p>
<pre><code>* Red
* Green
@@ -328,7 +328,7 @@ items in <code>&lt;p&gt;</code> tags in the HTML output. For example, this input
&lt;/ul&gt;
</code></pre>
<p>List items may consist of multiple paragraphs. Each subsequent
-paragraph in a list item must be intended by either 4 spaces
+paragraph in a list item must be indented by either 4 spaces
or one tab:</p>
<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit. Aliquam hendrerit
@@ -484,12 +484,12 @@ on a line by itself:</p>
<p>That is:</p>
<ul>
<li>Square brackets containing the link identifier (optionally
-indented from the left margin using up to three spaces);</li>
+ indented from the left margin using up to three spaces);</li>
<li>followed by a colon;</li>
<li>followed by one or more spaces (or tabs);</li>
<li>followed by the URL for the link;</li>
<li>optionally followed by a title attribute for the link, enclosed
-in double or single quotes.</li>
+ in double or single quotes.</li>
</ul>
<p>The link URL may, optionally, be surrounded by angle brackets:</p>
<pre><code>[id]: &lt;http://example.com/&gt; "Optional Title Here"
@@ -660,10 +660,10 @@ for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>
<ul>
<li>An exclamation mark: <code>!</code>;</li>
<li>followed by a set of square brackets, containing the <code>alt</code>
-attribute text for the image;</li>
+ attribute text for the image;</li>
<li>followed by a set of parentheses, containing the URL or path to
-the image, and an optional <code>title</code> attribute enclosed in double
-or single quotes.</li>
+ the image, and an optional <code>title</code> attribute enclosed in double
+ or single quotes.</li>
</ul>
<p>Reference-style image syntax looks like this:</p>
<pre><code>![Alt text][id]
diff --git a/tests/extensions-x-def_list/markdown-syntax.txt b/tests/basic/markdown-syntax.txt
index dabd75c..38f6e78 100644
--- a/tests/extensions-x-def_list/markdown-syntax.txt
+++ b/tests/basic/markdown-syntax.txt
@@ -186,7 +186,7 @@ and `&` in your example code needs to be escaped.)
A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing but spaces or tabs is considered
-blank.) Normal paragraphs should not be intended with spaces or tabs.
+blank.) Normal paragraphs should not be indented with spaces or tabs.
The implication of the "one or more consecutive lines of text" rule is
that Markdown supports "hard-wrapped" text paragraphs. This differs
@@ -298,7 +298,7 @@ Quote Level from the Text menu.
Markdown supports ordered (numbered) and unordered (bulleted) lists.
-Unordered lists use asterisks, pluses, and hyphens -- interchangably
+Unordered lists use asterisks, pluses, and hyphens -- interchangeably
-- as list markers:
* Red
@@ -401,7 +401,7 @@ will turn into:
</ul>
List items may consist of multiple paragraphs. Each subsequent
-paragraph in a list item must be intended by either 4 spaces
+paragraph in a list item must be indented by either 4 spaces
or one tab:
1. This is a list item with two paragraphs. Lorem ipsum dolor
diff --git a/tests/markdown-test/nested-blockquotes.html b/tests/basic/nested-blockquotes.html
index f1b017e..f1b017e 100644
--- a/tests/markdown-test/nested-blockquotes.html
+++ b/tests/basic/nested-blockquotes.html
diff --git a/tests/markdown-test/nested-blockquotes.txt b/tests/basic/nested-blockquotes.txt
index ed3c624..ed3c624 100644
--- a/tests/markdown-test/nested-blockquotes.txt
+++ b/tests/basic/nested-blockquotes.txt
diff --git a/tests/markdown-test/ordered-and-unordered-list.html b/tests/basic/ordered-and-unordered-list.html
index 090c43c..090c43c 100644
--- a/tests/markdown-test/ordered-and-unordered-list.html
+++ b/tests/basic/ordered-and-unordered-list.html
diff --git a/tests/markdown-test/ordered-and-unordered-list.txt b/tests/basic/ordered-and-unordered-list.txt
index 621db58..621db58 100644
--- a/tests/markdown-test/ordered-and-unordered-list.txt
+++ b/tests/basic/ordered-and-unordered-list.txt
diff --git a/tests/markdown-test/strong-and-em-together.html b/tests/basic/strong-and-em-together.html
index 7bf5163..7bf5163 100644
--- a/tests/markdown-test/strong-and-em-together.html
+++ b/tests/basic/strong-and-em-together.html
diff --git a/tests/markdown-test/strong-and-em-together.txt b/tests/basic/strong-and-em-together.txt
index 95ee690..95ee690 100644
--- a/tests/markdown-test/strong-and-em-together.txt
+++ b/tests/basic/strong-and-em-together.txt
diff --git a/tests/markdown-test/tabs.html b/tests/basic/tabs.html
index b26391b..3c11f14 100644
--- a/tests/markdown-test/tabs.html
+++ b/tests/basic/tabs.html
@@ -1,11 +1,11 @@
<ul>
<li>
<p>this is a list item
-indented with tabs</p>
+ indented with tabs</p>
</li>
<li>
<p>this is a list item
-indented with spaces</p>
+ indented with spaces</p>
</li>
</ul>
<p>Code:</p>
diff --git a/tests/markdown-test/tabs.txt b/tests/basic/tabs.txt
index 589d113..589d113 100644
--- a/tests/markdown-test/tabs.txt
+++ b/tests/basic/tabs.txt
diff --git a/tests/markdown-test/tidyness.html b/tests/basic/tidyness.html
index 52b2eaf..52b2eaf 100644
--- a/tests/markdown-test/tidyness.html
+++ b/tests/basic/tidyness.html
diff --git a/tests/markdown-test/tidyness.txt b/tests/basic/tidyness.txt
index 5f18b8d..5f18b8d 100644
--- a/tests/markdown-test/tidyness.txt
+++ b/tests/basic/tidyness.txt
diff --git a/tests/extensions-x-abbr/abbr.html b/tests/extensions-x-abbr/abbr.html
deleted file mode 100644
index 456524e..0000000
--- a/tests/extensions-x-abbr/abbr.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<p>An <abbr title="Abbreviation">ABBR</abbr>: "<abbr title="Reference">REF</abbr>".
-ref and REFERENCE should be ignored.</p>
-<p>The <abbr title="Hyper Text Markup Language">HTML</abbr> specification
-is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.</p> \ No newline at end of file
diff --git a/tests/extensions-x-abbr/abbr.txt b/tests/extensions-x-abbr/abbr.txt
deleted file mode 100644
index 991bf15..0000000
--- a/tests/extensions-x-abbr/abbr.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-An ABBR: "REF".
-ref and REFERENCE should be ignored.
-
-*[REF]: Reference
-*[ABBR]: This gets overriden by the next one.
-*[ABBR]: Abbreviation
-
-The HTML specification
-is maintained by the W3C.
-
-*[HTML]: Hyper Text Markup Language
-*[W3C]: World Wide Web Consortium
-
diff --git a/tests/extensions-x-footnotes/footnote.html b/tests/extensions-x-footnotes/footnote.html
deleted file mode 100644
index 6556dab..0000000
--- a/tests/extensions-x-footnotes/footnote.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<p>This is the body with a footnote<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> or two<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> or more<sup id="fnref:3"><a href="#fn:3" rel="footnote">3</a></sup> <sup id="fnref:4"><a href="#fn:4" rel="footnote">4</a></sup>.</p>
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>Footnote that ends with a list:</p>
-<ul>
-<li>item 1</li>
-<li>item 2</li>
-</ul>
-<p><a href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:2">
-<blockquote>
-<p>This footnote is a blockquote.
-</p>
-</blockquote>
-<p><a href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-<li id="fn:3">
-<p>A simple oneliner.
-&#160;<a href="#fnref:3" rev="footnote" title="Jump back to footnote 3 in the text">&#8617;</a></p>
-</li>
-<li id="fn:4">
-<p>A footnote with multiple paragraphs.</p>
-<p>Paragraph two.&#160;<a href="#fnref:4" rev="footnote" title="Jump back to footnote 4 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div> \ No newline at end of file
diff --git a/tests/extensions-x-footnotes/footnote.txt b/tests/extensions-x-footnotes/footnote.txt
deleted file mode 100644
index 07188d0..0000000
--- a/tests/extensions-x-footnotes/footnote.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-This is the body with a footnote[^1] or two[^2] or more[^3] [^4].
-
-[^1]: Footnote that ends with a list:
-
- * item 1
- * item 2
-
-[^2]: > This footnote is a blockquote.
-
-[^3]: A simple oneliner.
-
-[^4]: A footnote with multiple paragraphs.
-
- Paragraph two.
diff --git a/tests/extensions-x-footnotes/named_markers.html b/tests/extensions-x-footnotes/named_markers.html
deleted file mode 100644
index 6996b5f..0000000
--- a/tests/extensions-x-footnotes/named_markers.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<p>This is the body with footnotes<sup id="fnref:foo"><a href="#fn:foo" rel="footnote">1</a></sup>
-that have named<sup id="fnref:bar"><a href="#fn:bar" rel="footnote">2</a></sup> markers and
-oddly<sup id="fnref:56"><a href="#fn:56" rel="footnote">3</a></sup> numbered<sup id="fnref:99"><a href="#fn:99" rel="footnote">4</a></sup> markers.</p>
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:foo">
-<p>Footnote marked <code>foo</code>.
-&#160;<a href="#fnref:foo" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:bar">
-<p>This one is marked <em>bar</em>.
-&#160;<a href="#fnref:bar" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-<li id="fn:56">
-<p>A <strong>numbered</strong> footnote.
-&#160;<a href="#fnref:56" rev="footnote" title="Jump back to footnote 3 in the text">&#8617;</a></p>
-</li>
-<li id="fn:99">
-<p>The last one.
-&#160;<a href="#fnref:99" rev="footnote" title="Jump back to footnote 4 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div> \ No newline at end of file
diff --git a/tests/extensions-x-tables/tables.html b/tests/extensions-x-tables/tables.html
deleted file mode 100644
index c931e6a..0000000
--- a/tests/extensions-x-tables/tables.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<h2>Table Tests</h2>
-<table>
-<thead>
-<tr>
-<th>First Header</th>
-<th>Second Header</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>Content Cell</td>
-<td>Content Cell</td>
-</tr>
-<tr>
-<td>Content Cell</td>
-<td>Content Cell</td>
-</tr>
-</tbody>
-</table>
-<table>
-<thead>
-<tr>
-<th>First Header</th>
-<th>Second Header</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>Content Cell</td>
-<td>Content Cell</td>
-</tr>
-<tr>
-<td>Content Cell</td>
-<td>Content Cell</td>
-</tr>
-</tbody>
-</table>
-<table>
-<thead>
-<tr>
-<th>Item</th>
-<th align="right">Value</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>Computer</td>
-<td align="right">$1600</td>
-</tr>
-<tr>
-<td>Phone</td>
-<td align="right">$12</td>
-</tr>
-<tr>
-<td>Pipe</td>
-<td align="right">$1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<thead>
-<tr>
-<th>Function name</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td><code>help()</code></td>
-<td>Display the help window.</td>
-</tr>
-<tr>
-<td><code>destroy()</code></td>
-<td><strong>Destroy your computer!</strong></td>
-</tr>
-</tbody>
-</table>
-<table>
-<thead>
-<tr>
-<th align="left">foo</th>
-<th align="center">bar</th>
-<th align="right">baz</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td align="left" />
-<td align="center">Q</td>
-<td align="right" />
-</tr>
-<tr>
-<td align="left">W</td>
-<td align="center" />
-<td align="right">W</td>
-</tr>
-</tbody>
-</table>
-<table>
-<thead>
-<tr>
-<th>foo</th>
-<th>bar</th>
-<th>baz</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td />
-<td>Q</td>
-<td />
-</tr>
-<tr>
-<td>W</td>
-<td />
-<td>W</td>
-</tr>
-</tbody>
-</table> \ No newline at end of file
diff --git a/tests/extensions-x-tables/tables.txt b/tests/extensions-x-tables/tables.txt
deleted file mode 100644
index 64917ab..0000000
--- a/tests/extensions-x-tables/tables.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-Table Tests
------------
-
-First Header | Second Header
-------------- | -------------
-Content Cell | Content Cell
-Content Cell | Content Cell
-
-| First Header | Second Header |
-| ------------- | ------------- |
-| Content Cell | Content Cell |
-| Content Cell | Content Cell |
-
-| Item | Value |
-| :-------- | -----:|
-| Computer | $1600 |
-| Phone | $12 |
-| Pipe | $1 |
-
-| Function name | Description |
-| ------------- | ------------------------------ |
-| `help()` | Display the help window. |
-| `destroy()` | **Destroy your computer!** |
-
-|foo|bar|baz|
-|:--|:-:|--:|
-| | Q | |
-|W | | W|
-
-foo|bar|baz
----|---|---
- | Q |
- W | | W
-
diff --git a/tests/extensions-x-toc/nested.html b/tests/extensions-x-toc/nested.html
deleted file mode 100644
index a8a1583..0000000
--- a/tests/extensions-x-toc/nested.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<h1 id="header-a">Header A</h1>
-<h2 id="header-1">Header 1</h2>
-<h3 id="header-i">Header i</h3>
-<h1 id="header-b">Header B</h1>
-<div class="toc">
-<ul>
-<li><a href="#header-a">Header A</a><ul>
-<li><a href="#header-1">Header 1</a><ul>
-<li><a href="#header-i">Header i</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li><a href="#header-b">Header B</a></li>
-</ul>
-</div> \ No newline at end of file
diff --git a/tests/extensions-x-wikilinks/wikilinks.html b/tests/extensions-x-wikilinks/wikilinks.html
deleted file mode 100644
index 1a38535..0000000
--- a/tests/extensions-x-wikilinks/wikilinks.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<p>Some text with a <a class="wikilink" href="/WikiLink/">WikiLink</a>.</p>
-<p>A link with <a class="wikilink" href="/white_space_and_underscores/">white space and_underscores</a> and a empty one.</p>
-<p>And a <a href="http://example.com/RealLink">RealLink</a>.</p>
-<p><a href="http://example.com/And_A_AutoLink">http://example.com/And_A_AutoLink</a></p>
-<p>And a <a href="/MarkdownLink/" title="A MarkdownLink">MarkdownLink</a> for
-completeness.</p> \ No newline at end of file
diff --git a/tests/extensions/admonition.html b/tests/extensions/admonition.html
new file mode 100644
index 0000000..8812dcb
--- /dev/null
+++ b/tests/extensions/admonition.html
@@ -0,0 +1,48 @@
+<p>Some text</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>A normal paragraph here</p>
+<ol>
+<li>first</li>
+<li>second</li>
+</ol>
+<blockquote>
+<p>Some important quote</p>
+<p>another paragraph in the quote</p>
+</blockquote>
+<pre><code>int main() {
+ // insert some code
+}
+</code></pre>
+</div>
+<p>More text and stuff.</p>
+<div class="admonition note">
+<p class="admonition-title">Did you know?</p>
+<p>You can customize the title of the admonition</p>
+</div>
+<p>Not part of an Admonition!</p>
+<div class="admonition mycustomcssclass">
+<p class="admonition-title">And now...</p>
+<p>For something completely different.</p>
+<p>You can also use a custom CSS class name.</p>
+</div>
+<div class="admonition class1 class2 class3">
+<p class="admonition-title">And now...</p>
+<p>For something completely different.</p>
+<p>Several class names can be separated by space chars.</p>
+</div>
+<div class="admonition note anotherclass">
+<p class="admonition-title">Note</p>
+<p>The default title is the capitalized first class name.</p>
+</div>
+<div class="admonition tip">
+<p>An explicitly empty string prevents the title from being rendered.</p>
+</div>
+<p>No body:</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+</div>
+<p>Extra whitespace after the title should not alter output:</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+</div> \ No newline at end of file
diff --git a/tests/extensions/admonition.txt b/tests/extensions/admonition.txt
new file mode 100644
index 0000000..03ff4e9
--- /dev/null
+++ b/tests/extensions/admonition.txt
@@ -0,0 +1,45 @@
+Some text
+
+!!! note
+ A normal paragraph here
+
+ 1. first
+ 2. second
+
+ > Some important quote
+
+ > another paragraph in the quote
+
+ int main() {
+ // insert some code
+ }
+
+More text and stuff.
+
+!!! Note "Did you know?"
+ You can customize the title of the admonition
+Not part of an Admonition!
+
+!!! mycustomcssclass "And now..."
+ For something completely different.
+
+ You can also use a custom CSS class name.
+
+!!! class1 class2 class3 "And now..."
+ For something completely different.
+
+ Several class names can be separated by space chars.
+
+!!! note anotherclass
+ The default title is the capitalized first class name.
+
+!!! tip ""
+ An explicitly empty string prevents the title from being rendered.
+
+No body:
+
+!!! note
+
+Extra whitespace after the title should not alter output:
+
+!!! note
diff --git a/tests/extensions/attr_list.html b/tests/extensions/attr_list.html
new file mode 100644
index 0000000..e7bfe0b
--- /dev/null
+++ b/tests/extensions/attr_list.html
@@ -0,0 +1,69 @@
+<h1 id="setext">This is a sextext header</h1>
+<p class="myclass" id="par1">A paragraph with some text.
+Line two of the paragraph.</p>
+<h2 class="someclass" id="sextext2">This is another</h2>
+<p>Test some <em class="inline">inline</em> text.
+A <a class="linkkyclass" href="http://example.com" title="A title.">link</a>
+And a <strong class="nest">nested <a class="linky2" href="http://example.com" title="Some title">link</a></strong></p>
+<h3 id="hash">This is a hash Header</h3>
+<p bar="b az" baz="blah blah" foo="foo" title="I wasn't kidding!">And now some random attributes.</p>
+<h3 id="hash2">No closing hash header</h3>
+<p class="foo bar addme" id="overridden">Now test overrides</p>
+<pre><code># A code block which contains attr_list syntax
+# This should be ignored.
+{: #someid .someclass }
+</code></pre>
+<h3 id="hash3">No colon for compatibility with Headerid ext</h3>
+<p id="the_end">Also a codespan: <code class="foo">{: .someclass}</code>.</p>
+<h3 _:="{:" id="hash5">Bad Syntax</h3>
+<ul>
+<li class="item">Item1</li>
+<li class="item">Item2<ul>
+<li class="subitem">Item2-1</li>
+</ul>
+</li>
+<li class="item"><em class="emph">Item3</em><ul>
+<li class="subitem"><em class="emph">Item3-1</em></li>
+</ul>
+</li>
+<li>Item4<ul>
+<li>Item4-1</li>
+</ul>
+</li>
+<li>Item5</li>
+</ul>
+<h1>And ordered lists <em class="inline">too</em></h1>
+<ol>
+<li class="item">Item1</li>
+<li class="item">Item2<ol>
+<li class="subitem">Item2-1</li>
+</ol>
+</li>
+<li class="item"><em class="emph">Item3</em><ol>
+<li class="subitem"><em class="emph">Item3-1</em></li>
+</ol>
+</li>
+<li>Item4<ol>
+<li>Item4-1</li>
+</ol>
+</li>
+<li>Item5</li>
+</ol>
+<h1 class="block">Definition <em>lists</em></h1>
+<dl>
+<dt class="term">DT1</dt>
+<dt class="term">DT2</dt>
+<dd class="def">Some dd</dd>
+<dd><em class="inline">dd</em></dd>
+<dt><em class="inline">DT3</em></dt>
+<dd>Some dd</dd>
+</dl>
+<h1>Bad attributes</h1>
+<p>Key without <em foo="foo">value</em></p>
+<p>Value without <em>key</em></p>
+<p>No <em>key or value</em></p>
+<p><em>Weirdness</em></p>
+<p><em>More weirdness</em></p>
+<p>This should not cause a <em foo="a">crash</em></p>
+<p>Attr_lists do not contain <em>newlines</em>{ foo=bar
+key=value }</p> \ No newline at end of file
diff --git a/tests/extensions/attr_list.txt b/tests/extensions/attr_list.txt
new file mode 100644
index 0000000..465ce4f
--- /dev/null
+++ b/tests/extensions/attr_list.txt
@@ -0,0 +1,94 @@
+This is a sextext header {: #setext}
+====================================
+
+A paragraph with some text.
+Line two of the paragraph.
+{: #par1 .myclass }
+
+This is another {: #sextext2 .someclass}
+----------------------------------------
+
+Test some _inline_{: .inline} text.
+A [link](http://example.com){: .linkkyclass title="A title."}
+And a __nested [link][]{: .linky2}__{: .nest}
+
+[link]: http://example.com "Some title"
+
+### This is a hash Header ### {: #hash}
+
+And now some random attributes.
+{:foo bar='b az' baz="blah blah" title="I wasn't kidding!" }
+
+### No closing hash header {: #hash2}
+
+Now test overrides
+{: #overrideme .andme id=overridden class='foo bar' .addme }
+
+ # A code block which contains attr_list syntax
+ # This should be ignored.
+ {: #someid .someclass }
+
+### No colon for compatibility with Headerid ext { #hash3 }
+
+Also a codespan: `{: .someclass}`{: .foo}.
+{: #the_end}
+
+### Bad Syntax { {: #hash5 }
+
+* Item1
+ {: .item }
+* Item2
+ {: .item }
+ * Item2-1
+ {: .subitem }
+* _Item3_{: .emph }
+ {: .item }
+ * _Item3-1_{: .emph }
+ {: .subitem }
+* Item4
+ * Item4-1
+* Item5
+
+# And ordered lists *too*{.inline}
+
+1. Item1
+ {: .item }
+2. Item2
+ {: .item }
+ 1. Item2-1
+ {: .subitem }
+3. _Item3_{: .emph }
+ {: .item }
+ 1. _Item3-1_{: .emph }
+ {: .subitem }
+4. Item4
+ 1. Item4-1
+5. Item5
+
+# Definition *lists* {.block}
+
+DT1 {.term}
+DT2 {.term}
+: Some dd
+ {.def}
+: *dd*{.inline}
+
+*DT3*{.inline}
+: Some dd
+
+# Bad attributes
+
+Key without *value*{ foo= }
+
+Value without *key*{ =bar }
+
+No *key or value*{ = }
+
+*Weirdness*{ == }
+
+*More weirdness*{ === }
+
+This should not cause a *crash*{ foo=a=b }
+
+Attr_lists do not contain *newlines*{ foo=bar
+key=value }
diff --git a/tests/extensions-x-codehilite/code.html b/tests/extensions/codehilite.html
index 6a8ee91..6a8ee91 100644
--- a/tests/extensions-x-codehilite/code.html
+++ b/tests/extensions/codehilite.html
diff --git a/tests/extensions-x-codehilite/code.txt b/tests/extensions/codehilite.txt
index 6c62e6a..6c62e6a 100644
--- a/tests/extensions-x-codehilite/code.txt
+++ b/tests/extensions/codehilite.txt
diff --git a/tests/extensions/extra/def-in-list.html b/tests/extensions/extra/def-in-list.html
new file mode 100644
index 0000000..21cddaa
--- /dev/null
+++ b/tests/extensions/extra/def-in-list.html
@@ -0,0 +1,25 @@
+<p>: a paragraph that starts with a colon</p>
+<ul>
+<li>A List item</li>
+<li>
+<dl>
+<dt>A def term</dt>
+<dd>A def item</dd>
+<dd>a second</dd>
+</dl>
+</li>
+<li>
+<dl>
+<dt>Another def term</dt>
+<dd>
+<p>a loose item</p>
+</dd>
+<dd>
+<p>a second</p>
+</dd>
+</dl>
+</li>
+<li>
+<p>: a list item that starts with a colon</p>
+</li>
+</ul> \ No newline at end of file
diff --git a/tests/extensions/extra/def-in-list.txt b/tests/extensions/extra/def-in-list.txt
new file mode 100644
index 0000000..7a292ab
--- /dev/null
+++ b/tests/extensions/extra/def-in-list.txt
@@ -0,0 +1,15 @@
+: a paragraph that starts with a colon
+
+* A List item
+*
+ A def term
+ : A def item
+ : a second
+
+* Another def term
+
+ : a loose item
+
+ : a second
+
+* : a list item that starts with a colon
diff --git a/tests/extensions/extra/extra_config.html b/tests/extensions/extra/extra_config.html
new file mode 100644
index 0000000..cbad740
--- /dev/null
+++ b/tests/extensions/extra/extra_config.html
@@ -0,0 +1,9 @@
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:1">
+<p>A Footnote.&#160;<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
+</li>
+</ol>
+</div>
+<p>Some text with a footnote<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup>.</p> \ No newline at end of file
diff --git a/tests/extensions/extra/extra_config.txt b/tests/extensions/extra/extra_config.txt
new file mode 100644
index 0000000..2d29819
--- /dev/null
+++ b/tests/extensions/extra/extra_config.txt
@@ -0,0 +1,5 @@
+~~~placemarker~~~
+
+Some text with a footnote[^1].
+
+[^1]: A Footnote.
diff --git a/tests/extensions/extra/footnote.html b/tests/extensions/extra/footnote.html
new file mode 100644
index 0000000..4d86421
--- /dev/null
+++ b/tests/extensions/extra/footnote.html
@@ -0,0 +1,71 @@
+<p>This is the body with a footnote<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup> or two<sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup> or more<sup id="fnref:3"><a class="footnote-ref" href="#fn:3">3</a></sup> <sup id="fnref:4"><a class="footnote-ref" href="#fn:4">4</a></sup> <sup id="fnref:5"><a class="footnote-ref" href="#fn:5">5</a></sup>.</p>
+<p>Also a reference that does not exist[^6].</p>
+<p>Duplicate<sup id="fnref:a"><a class="footnote-ref" href="#fn:a">6</a></sup> footnotes<sup id="fnref2:a"><a class="footnote-ref" href="#fn:a">6</a></sup> test<sup id="fnref3:a"><a class="footnote-ref" href="#fn:a">6</a></sup>.</p>
+<p>Duplicate<sup id="fnref:b"><a class="footnote-ref" href="#fn:b">7</a></sup> footnotes<sup id="fnref2:b"><a class="footnote-ref" href="#fn:b">7</a></sup> test<sup id="fnref3:b"><a class="footnote-ref" href="#fn:b">7</a></sup>.</p>
+<p>Single after duplicates<sup id="fnref:c"><a class="footnote-ref" href="#fn:c">8</a></sup>.</p>
+<p>Test emphasis at end of footnote<sup id="fnref:d"><a class="footnote-ref" href="#fn:d">9</a></sup></p>
+<p>Complex footnote content<sup id="fnref:e"><a class="footnote-ref" href="#fn:e">10</a></sup></p>
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:1">
+<p>Footnote that ends with a list:</p>
+<ul>
+<li>item 1</li>
+<li>item 2</li>
+</ul>
+<p><a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
+</li>
+<li id="fn:2">
+<blockquote>
+<p>This footnote is a blockquote.</p>
+</blockquote>
+<p><a class="footnote-backref" href="#fnref:2" title="Jump back to footnote 2 in the text">&#8617;</a></p>
+</li>
+<li id="fn:3">
+<p>A simple oneliner.&#160;<a class="footnote-backref" href="#fnref:3" title="Jump back to footnote 3 in the text">&#8617;</a></p>
+</li>
+<li id="fn:4">
+<p>A footnote with multiple paragraphs.</p>
+<p>Paragraph two.&#160;<a class="footnote-backref" href="#fnref:4" title="Jump back to footnote 4 in the text">&#8617;</a></p>
+</li>
+<li id="fn:5">
+<p>First line of first paragraph.
+Second line of first paragraph is not intended.
+Nor is third...&#160;<a class="footnote-backref" href="#fnref:5" title="Jump back to footnote 5 in the text">&#8617;</a></p>
+</li>
+<li id="fn:a">
+<p>1&#160;<a class="footnote-backref" href="#fnref:a" title="Jump back to footnote 6 in the text">&#8617;</a><a class="footnote-backref" href="#fnref2:a" title="Jump back to footnote 6 in the text">&#8617;</a><a class="footnote-backref" href="#fnref3:a" title="Jump back to footnote 6 in the text">&#8617;</a></p>
+</li>
+<li id="fn:b">
+<p>2&#160;<a class="footnote-backref" href="#fnref:b" title="Jump back to footnote 7 in the text">&#8617;</a><a class="footnote-backref" href="#fnref2:b" title="Jump back to footnote 7 in the text">&#8617;</a><a class="footnote-backref" href="#fnref3:b" title="Jump back to footnote 7 in the text">&#8617;</a></p>
+</li>
+<li id="fn:c">
+<p>3&#160;<a class="footnote-backref" href="#fnref:c" title="Jump back to footnote 8 in the text">&#8617;</a></p>
+</li>
+<li id="fn:d">
+<p><em>emphasis works</em></p>
+<p><em>emphasis still works</em>&#160;<a class="footnote-backref" href="#fnref:d" title="Jump back to footnote 9 in the text">&#8617;</a></p>
+</li>
+<li id="fn:e">
+<ol>
+<li>
+<p>The top couple half figure, contrary sides and hands across with bottom couple,</p>
+<p>Half figure back on your own sides, and turn partner to places,</p>
+<p>Swing partners with right hands into straight line long-ways, as in a reel, and</p>
+<p>Set,</p>
+<p>Hey and return to places,</p>
+<p>The other three couples do the same.</p>
+</li>
+<li>
+<p>Top and bottom couples meet and set,</p>
+<p>Then each gentleman leas the opposite lady to the couple on his left, and set,</p>
+<p>Aach four right and left,</p>
+<p>Swing side couples to places, and turn partners all eight,</p>
+<p>The other two couple o the same.</p>
+</li>
+</ol>
+<p><a class="footnote-backref" href="#fnref:e" title="Jump back to footnote 10 in the text">&#8617;</a></p>
+</li>
+</ol>
+</div> \ No newline at end of file
diff --git a/tests/extensions/extra/footnote.txt b/tests/extensions/extra/footnote.txt
new file mode 100644
index 0000000..93b5869
--- /dev/null
+++ b/tests/extensions/extra/footnote.txt
@@ -0,0 +1,62 @@
+This is the body with a footnote[^1] or two[^2] or more[^3] [^4] [^5].
+
+Also a reference that does not exist[^6].
+
+Duplicate[^a] footnotes[^a] test[^a].
+
+Duplicate[^b] footnotes[^b] test[^b].
+
+Single after duplicates[^c].
+
+Test emphasis at end of footnote[^d]
+
+Complex footnote content[^e]
+
+[^1]: Footnote that ends with a list:
+
+ * item 1
+ * item 2
+
+[^2]: > This footnote is a blockquote.
+
+[^3]: A simple oneliner.
+
+[^4]: A footnote with multiple paragraphs.
+
+ Paragraph two.
+
+[^5]: First line of first paragraph.
+Second line of first paragraph is not intended.
+Nor is third...
+
+[^a]: 1
+[^b]: 2
+[^c]: 3
+
+[^d]:
+ _emphasis works_
+
+ _emphasis still works_
+
+[^e]:
+ 1. The top couple half figure, contrary sides and hands across with bottom couple,
+
+ Half figure back on your own sides, and turn partner to places,
+
+ Swing partners with right hands into straight line long-ways, as in a reel, and
+
+ Set,
+
+ Hey and return to places,
+
+ The other three couples do the same.
+
+ 2. Top and bottom couples meet and set,
+
+ Then each gentleman leas the opposite lady to the couple on his left, and set,
+
+ Aach four right and left,
+
+ Swing side couples to places, and turn partners all eight,
+
+ The other two couple o the same.
diff --git a/tests/extensions/extra/footnote_many_footnotes.html b/tests/extensions/extra/footnote_many_footnotes.html
new file mode 100644
index 0000000..00de949
--- /dev/null
+++ b/tests/extensions/extra/footnote_many_footnotes.html
@@ -0,0 +1,4801 @@
+<p>Something<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>
+<p>Something<sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup></p>
+<p>Something<sup id="fnref:3"><a class="footnote-ref" href="#fn:3">3</a></sup></p>
+<p>Something<sup id="fnref:4"><a class="footnote-ref" href="#fn:4">4</a></sup></p>
+<p>Something<sup id="fnref:5"><a class="footnote-ref" href="#fn:5">5</a></sup></p>
+<p>Something<sup id="fnref:6"><a class="footnote-ref" href="#fn:6">6</a></sup></p>
+<p>Something<sup id="fnref:7"><a class="footnote-ref" href="#fn:7">7</a></sup></p>
+<p>Something<sup id="fnref:8"><a class="footnote-ref" href="#fn:8">8</a></sup></p>
+<p>Something<sup id="fnref:9"><a class="footnote-ref" href="#fn:9">9</a></sup></p>
+<p>Something<sup id="fnref:10"><a class="footnote-ref" href="#fn:10">10</a></sup></p>
+<p>Something<sup id="fnref:11"><a class="footnote-ref" href="#fn:11">11</a></sup></p>
+<p>Something<sup id="fnref:12"><a class="footnote-ref" href="#fn:12">12</a></sup></p>
+<p>Something<sup id="fnref:13"><a class="footnote-ref" href="#fn:13">13</a></sup></p>
+<p>Something<sup id="fnref:14"><a class="footnote-ref" href="#fn:14">14</a></sup></p>
+<p>Something<sup id="fnref:15"><a class="footnote-ref" href="#fn:15">15</a></sup></p>
+<p>Something<sup id="fnref:16"><a class="footnote-ref" href="#fn:16">16</a></sup></p>
+<p>Something<sup id="fnref:17"><a class="footnote-ref" href="#fn:17">17</a></sup></p>
+<p>Something<sup id="fnref:18"><a class="footnote-ref" href="#fn:18">18</a></sup></p>
+<p>Something<sup id="fnref:19"><a class="footnote-ref" href="#fn:19">19</a></sup></p>
+<p>Something<sup id="fnref:20"><a class="footnote-ref" href="#fn:20">20</a></sup></p>
+<p>Something<sup id="fnref:21"><a class="footnote-ref" href="#fn:21">21</a></sup></p>
+<p>Something<sup id="fnref:22"><a class="footnote-ref" href="#fn:22">22</a></sup></p>
+<p>Something<sup id="fnref:23"><a class="footnote-ref" href="#fn:23">23</a></sup></p>
+<p>Something<sup id="fnref:24"><a class="footnote-ref" href="#fn:24">24</a></sup></p>
+<p>Something<sup id="fnref:25"><a class="footnote-ref" href="#fn:25">25</a></sup></p>
+<p>Something<sup id="fnref:26"><a class="footnote-ref" href="#fn:26">26</a></sup></p>
+<p>Something<sup id="fnref:27"><a class="footnote-ref" href="#fn:27">27</a></sup></p>
+<p>Something<sup id="fnref:28"><a class="footnote-ref" href="#fn:28">28</a></sup></p>
+<p>Something<sup id="fnref:29"><a class="footnote-ref" href="#fn:29">29</a></sup></p>
+<p>Something<sup id="fnref:30"><a class="footnote-ref" href="#fn:30">30</a></sup></p>
+<p>Something<sup id="fnref:31"><a class="footnote-ref" href="#fn:31">31</a></sup></p>
+<p>Something<sup id="fnref:32"><a class="footnote-ref" href="#fn:32">32</a></sup></p>
+<p>Something<sup id="fnref:33"><a class="footnote-ref" href="#fn:33">33</a></sup></p>
+<p>Something<sup id="fnref:34"><a class="footnote-ref" href="#fn:34">34</a></sup></p>
+<p>Something<sup id="fnref:35"><a class="footnote-ref" href="#fn:35">35</a></sup></p>
+<p>Something<sup id="fnref:36"><a class="footnote-ref" href="#fn:36">36</a></sup></p>
+<p>Something<sup id="fnref:37"><a class="footnote-ref" href="#fn:37">37</a></sup></p>
+<p>Something<sup id="fnref:38"><a class="footnote-ref" href="#fn:38">38</a></sup></p>
+<p>Something<sup id="fnref:39"><a class="footnote-ref" href="#fn:39">39</a></sup></p>
+<p>Something<sup id="fnref:40"><a class="footnote-ref" href="#fn:40">40</a></sup></p>
+<p>Something<sup id="fnref:41"><a class="footnote-ref" href="#fn:41">41</a></sup></p>
+<p>Something<sup id="fnref:42"><a class="footnote-ref" href="#fn:42">42</a></sup></p>
+<p>Something<sup id="fnref:43"><a class="footnote-ref" href="#fn:43">43</a></sup></p>
+<p>Something<sup id="fnref:44"><a class="footnote-ref" href="#fn:44">44</a></sup></p>
+<p>Something<sup id="fnref:45"><a class="footnote-ref" href="#fn:45">45</a></sup></p>
+<p>Something<sup id="fnref:46"><a class="footnote-ref" href="#fn:46">46</a></sup></p>
+<p>Something<sup id="fnref:47"><a class="footnote-ref" href="#fn:47">47</a></sup></p>
+<p>Something<sup id="fnref:48"><a class="footnote-ref" href="#fn:48">48</a></sup></p>
+<p>Something<sup id="fnref:49"><a class="footnote-ref" href="#fn:49">49</a></sup></p>
+<p>Something<sup id="fnref:50"><a class="footnote-ref" href="#fn:50">50</a></sup></p>
+<p>Something<sup id="fnref:51"><a class="footnote-ref" href="#fn:51">51</a></sup></p>
+<p>Something<sup id="fnref:52"><a class="footnote-ref" href="#fn:52">52</a></sup></p>
+<p>Something<sup id="fnref:53"><a class="footnote-ref" href="#fn:53">53</a></sup></p>
+<p>Something<sup id="fnref:54"><a class="footnote-ref" href="#fn:54">54</a></sup></p>
+<p>Something<sup id="fnref:55"><a class="footnote-ref" href="#fn:55">55</a></sup></p>
+<p>Something<sup id="fnref:56"><a class="footnote-ref" href="#fn:56">56</a></sup></p>
+<p>Something<sup id="fnref:57"><a class="footnote-ref" href="#fn:57">57</a></sup></p>
+<p>Something<sup id="fnref:58"><a class="footnote-ref" href="#fn:58">58</a></sup></p>
+<p>Something<sup id="fnref:59"><a class="footnote-ref" href="#fn:59">59</a></sup></p>
+<p>Something<sup id="fnref:60"><a class="footnote-ref" href="#fn:60">60</a></sup></p>
+<p>Something<sup id="fnref:61"><a class="footnote-ref" href="#fn:61">61</a></sup></p>
+<p>Something<sup id="fnref:62"><a class="footnote-ref" href="#fn:62">62</a></sup></p>
+<p>Something<sup id="fnref:63"><a class="footnote-ref" href="#fn:63">63</a></sup></p>
+<p>Something<sup id="fnref:64"><a class="footnote-ref" href="#fn:64">64</a></sup></p>
+<p>Something<sup id="fnref:65"><a class="footnote-ref" href="#fn:65">65</a></sup></p>
+<p>Something<sup id="fnref:66"><a class="footnote-ref" href="#fn:66">66</a></sup></p>
+<p>Something<sup id="fnref:67"><a class="footnote-ref" href="#fn:67">67</a></sup></p>
+<p>Something<sup id="fnref:68"><a class="footnote-ref" href="#fn:68">68</a></sup></p>
+<p>Something<sup id="fnref:69"><a class="footnote-ref" href="#fn:69">69</a></sup></p>
+<p>Something<sup id="fnref:70"><a class="footnote-ref" href="#fn:70">70</a></sup></p>
+<p>Something<sup id="fnref:71"><a class="footnote-ref" href="#fn:71">71</a></sup></p>
+<p>Something<sup id="fnref:72"><a class="footnote-ref" href="#fn:72">72</a></sup></p>
+<p>Something<sup id="fnref:73"><a class="footnote-ref" href="#fn:73">73</a></sup></p>
+<p>Something<sup id="fnref:74"><a class="footnote-ref" href="#fn:74">74</a></sup></p>
+<p>Something<sup id="fnref:75"><a class="footnote-ref" href="#fn:75">75</a></sup></p>
+<p>Something<sup id="fnref:76"><a class="footnote-ref" href="#fn:76">76</a></sup></p>
+<p>Something<sup id="fnref:77"><a class="footnote-ref" href="#fn:77">77</a></sup></p>
+<p>Something<sup id="fnref:78"><a class="footnote-ref" href="#fn:78">78</a></sup></p>
+<p>Something<sup id="fnref:79"><a class="footnote-ref" href="#fn:79">79</a></sup></p>
+<p>Something<sup id="fnref:80"><a class="footnote-ref" href="#fn:80">80</a></sup></p>
+<p>Something<sup id="fnref:81"><a class="footnote-ref" href="#fn:81">81</a></sup></p>
+<p>Something<sup id="fnref:82"><a class="footnote-ref" href="#fn:82">82</a></sup></p>
+<p>Something<sup id="fnref:83"><a class="footnote-ref" href="#fn:83">83</a></sup></p>
+<p>Something<sup id="fnref:84"><a class="footnote-ref" href="#fn:84">84</a></sup></p>
+<p>Something<sup id="fnref:85"><a class="footnote-ref" href="#fn:85">85</a></sup></p>
+<p>Something<sup id="fnref:86"><a class="footnote-ref" href="#fn:86">86</a></sup></p>
+<p>Something<sup id="fnref:87"><a class="footnote-ref" href="#fn:87">87</a></sup></p>
+<p>Something<sup id="fnref:88"><a class="footnote-ref" href="#fn:88">88</a></sup></p>
+<p>Something<sup id="fnref:89"><a class="footnote-ref" href="#fn:89">89</a></sup></p>
+<p>Something<sup id="fnref:90"><a class="footnote-ref" href="#fn:90">90</a></sup></p>
+<p>Something<sup id="fnref:91"><a class="footnote-ref" href="#fn:91">91</a></sup></p>
+<p>Something<sup id="fnref:92"><a class="footnote-ref" href="#fn:92">92</a></sup></p>
+<p>Something<sup id="fnref:93"><a class="footnote-ref" href="#fn:93">93</a></sup></p>
+<p>Something<sup id="fnref:94"><a class="footnote-ref" href="#fn:94">94</a></sup></p>
+<p>Something<sup id="fnref:95"><a class="footnote-ref" href="#fn:95">95</a></sup></p>
+<p>Something<sup id="fnref:96"><a class="footnote-ref" href="#fn:96">96</a></sup></p>
+<p>Something<sup id="fnref:97"><a class="footnote-ref" href="#fn:97">97</a></sup></p>
+<p>Something<sup id="fnref:98"><a class="footnote-ref" href="#fn:98">98</a></sup></p>
+<p>Something<sup id="fnref:99"><a class="footnote-ref" href="#fn:99">99</a></sup></p>
+<p>Something<sup id="fnref:100"><a class="footnote-ref" href="#fn:100">100</a></sup></p>
+<p>Something<sup id="fnref:101"><a class="footnote-ref" href="#fn:101">101</a></sup></p>
+<p>Something<sup id="fnref:102"><a class="footnote-ref" href="#fn:102">102</a></sup></p>
+<p>Something<sup id="fnref:103"><a class="footnote-ref" href="#fn:103">103</a></sup></p>
+<p>Something<sup id="fnref:104"><a class="footnote-ref" href="#fn:104">104</a></sup></p>
+<p>Something<sup id="fnref:105"><a class="footnote-ref" href="#fn:105">105</a></sup></p>
+<p>Something<sup id="fnref:106"><a class="footnote-ref" href="#fn:106">106</a></sup></p>
+<p>Something<sup id="fnref:107"><a class="footnote-ref" href="#fn:107">107</a></sup></p>
+<p>Something<sup id="fnref:108"><a class="footnote-ref" href="#fn:108">108</a></sup></p>
+<p>Something<sup id="fnref:109"><a class="footnote-ref" href="#fn:109">109</a></sup></p>
+<p>Something<sup id="fnref:110"><a class="footnote-ref" href="#fn:110">110</a></sup></p>
+<p>Something<sup id="fnref:111"><a class="footnote-ref" href="#fn:111">111</a></sup></p>
+<p>Something<sup id="fnref:112"><a class="footnote-ref" href="#fn:112">112</a></sup></p>
+<p>Something<sup id="fnref:113"><a class="footnote-ref" href="#fn:113">113</a></sup></p>
+<p>Something<sup id="fnref:114"><a class="footnote-ref" href="#fn:114">114</a></sup></p>
+<p>Something<sup id="fnref:115"><a class="footnote-ref" href="#fn:115">115</a></sup></p>
+<p>Something<sup id="fnref:116"><a class="footnote-ref" href="#fn:116">116</a></sup></p>
+<p>Something<sup id="fnref:117"><a class="footnote-ref" href="#fn:117">117</a></sup></p>
+<p>Something<sup id="fnref:118"><a class="footnote-ref" href="#fn:118">118</a></sup></p>
+<p>Something<sup id="fnref:119"><a class="footnote-ref" href="#fn:119">119</a></sup></p>
+<p>Something<sup id="fnref:120"><a class="footnote-ref" href="#fn:120">120</a></sup></p>
+<p>Something<sup id="fnref:121"><a class="footnote-ref" href="#fn:121">121</a></sup></p>
+<p>Something<sup id="fnref:122"><a class="footnote-ref" href="#fn:122">122</a></sup></p>
+<p>Something<sup id="fnref:123"><a class="footnote-ref" href="#fn:123">123</a></sup></p>
+<p>Something<sup id="fnref:124"><a class="footnote-ref" href="#fn:124">124</a></sup></p>
+<p>Something<sup id="fnref:125"><a class="footnote-ref" href="#fn:125">125</a></sup></p>
+<p>Something<sup id="fnref:126"><a class="footnote-ref" href="#fn:126">126</a></sup></p>
+<p>Something<sup id="fnref:127"><a class="footnote-ref" href="#fn:127">127</a></sup></p>
+<p>Something<sup id="fnref:128"><a class="footnote-ref" href="#fn:128">128</a></sup></p>
+<p>Something<sup id="fnref:129"><a class="footnote-ref" href="#fn:129">129</a></sup></p>
+<p>Something<sup id="fnref:130"><a class="footnote-ref" href="#fn:130">130</a></sup></p>
+<p>Something<sup id="fnref:131"><a class="footnote-ref" href="#fn:131">131</a></sup></p>
+<p>Something<sup id="fnref:132"><a class="footnote-ref" href="#fn:132">132</a></sup></p>
+<p>Something<sup id="fnref:133"><a class="footnote-ref" href="#fn:133">133</a></sup></p>
+<p>Something<sup id="fnref:134"><a class="footnote-ref" href="#fn:134">134</a></sup></p>
+<p>Something<sup id="fnref:135"><a class="footnote-ref" href="#fn:135">135</a></sup></p>
+<p>Something<sup id="fnref:136"><a class="footnote-ref" href="#fn:136">136</a></sup></p>
+<p>Something<sup id="fnref:137"><a class="footnote-ref" href="#fn:137">137</a></sup></p>
+<p>Something<sup id="fnref:138"><a class="footnote-ref" href="#fn:138">138</a></sup></p>
+<p>Something<sup id="fnref:139"><a class="footnote-ref" href="#fn:139">139</a></sup></p>
+<p>Something<sup id="fnref:140"><a class="footnote-ref" href="#fn:140">140</a></sup></p>
+<p>Something<sup id="fnref:141"><a class="footnote-ref" href="#fn:141">141</a></sup></p>
+<p>Something<sup id="fnref:142"><a class="footnote-ref" href="#fn:142">142</a></sup></p>
+<p>Something<sup id="fnref:143"><a class="footnote-ref" href="#fn:143">143</a></sup></p>
+<p>Something<sup id="fnref:144"><a class="footnote-ref" href="#fn:144">144</a></sup></p>
+<p>Something<sup id="fnref:145"><a class="footnote-ref" href="#fn:145">145</a></sup></p>
+<p>Something<sup id="fnref:146"><a class="footnote-ref" href="#fn:146">146</a></sup></p>
+<p>Something<sup id="fnref:147"><a class="footnote-ref" href="#fn:147">147</a></sup></p>
+<p>Something<sup id="fnref:148"><a class="footnote-ref" href="#fn:148">148</a></sup></p>
+<p>Something<sup id="fnref:149"><a class="footnote-ref" href="#fn:149">149</a></sup></p>
+<p>Something<sup id="fnref:150"><a class="footnote-ref" href="#fn:150">150</a></sup></p>
+<p>Something<sup id="fnref:151"><a class="footnote-ref" href="#fn:151">151</a></sup></p>
+<p>Something<sup id="fnref:152"><a class="footnote-ref" href="#fn:152">152</a></sup></p>
+<p>Something<sup id="fnref:153"><a class="footnote-ref" href="#fn:153">153</a></sup></p>
+<p>Something<sup id="fnref:154"><a class="footnote-ref" href="#fn:154">154</a></sup></p>
+<p>Something<sup id="fnref:155"><a class="footnote-ref" href="#fn:155">155</a></sup></p>
+<p>Something<sup id="fnref:156"><a class="footnote-ref" href="#fn:156">156</a></sup></p>
+<p>Something<sup id="fnref:157"><a class="footnote-ref" href="#fn:157">157</a></sup></p>
+<p>Something<sup id="fnref:158"><a class="footnote-ref" href="#fn:158">158</a></sup></p>
+<p>Something<sup id="fnref:159"><a class="footnote-ref" href="#fn:159">159</a></sup></p>
+<p>Something<sup id="fnref:160"><a class="footnote-ref" href="#fn:160">160</a></sup></p>
+<p>Something<sup id="fnref:161"><a class="footnote-ref" href="#fn:161">161</a></sup></p>
+<p>Something<sup id="fnref:162"><a class="footnote-ref" href="#fn:162">162</a></sup></p>
+<p>Something<sup id="fnref:163"><a class="footnote-ref" href="#fn:163">163</a></sup></p>
+<p>Something<sup id="fnref:164"><a class="footnote-ref" href="#fn:164">164</a></sup></p>
+<p>Something<sup id="fnref:165"><a class="footnote-ref" href="#fn:165">165</a></sup></p>
+<p>Something<sup id="fnref:166"><a class="footnote-ref" href="#fn:166">166</a></sup></p>
+<p>Something<sup id="fnref:167"><a class="footnote-ref" href="#fn:167">167</a></sup></p>
+<p>Something<sup id="fnref:168"><a class="footnote-ref" href="#fn:168">168</a></sup></p>
+<p>Something<sup id="fnref:169"><a class="footnote-ref" href="#fn:169">169</a></sup></p>
+<p>Something<sup id="fnref:170"><a class="footnote-ref" href="#fn:170">170</a></sup></p>
+<p>Something<sup id="fnref:171"><a class="footnote-ref" href="#fn:171">171</a></sup></p>
+<p>Something<sup id="fnref:172"><a class="footnote-ref" href="#fn:172">172</a></sup></p>
+<p>Something<sup id="fnref:173"><a class="footnote-ref" href="#fn:173">173</a></sup></p>
+<p>Something<sup id="fnref:174"><a class="footnote-ref" href="#fn:174">174</a></sup></p>
+<p>Something<sup id="fnref:175"><a class="footnote-ref" href="#fn:175">175</a></sup></p>
+<p>Something<sup id="fnref:176"><a class="footnote-ref" href="#fn:176">176</a></sup></p>
+<p>Something<sup id="fnref:177"><a class="footnote-ref" href="#fn:177">177</a></sup></p>
+<p>Something<sup id="fnref:178"><a class="footnote-ref" href="#fn:178">178</a></sup></p>
+<p>Something<sup id="fnref:179"><a class="footnote-ref" href="#fn:179">179</a></sup></p>
+<p>Something<sup id="fnref:180"><a class="footnote-ref" href="#fn:180">180</a></sup></p>
+<p>Something<sup id="fnref:181"><a class="footnote-ref" href="#fn:181">181</a></sup></p>
+<p>Something<sup id="fnref:182"><a class="footnote-ref" href="#fn:182">182</a></sup></p>
+<p>Something<sup id="fnref:183"><a class="footnote-ref" href="#fn:183">183</a></sup></p>
+<p>Something<sup id="fnref:184"><a class="footnote-ref" href="#fn:184">184</a></sup></p>
+<p>Something<sup id="fnref:185"><a class="footnote-ref" href="#fn:185">185</a></sup></p>
+<p>Something<sup id="fnref:186"><a class="footnote-ref" href="#fn:186">186</a></sup></p>
+<p>Something<sup id="fnref:187"><a class="footnote-ref" href="#fn:187">187</a></sup></p>
+<p>Something<sup id="fnref:188"><a class="footnote-ref" href="#fn:188">188</a></sup></p>
+<p>Something<sup id="fnref:189"><a class="footnote-ref" href="#fn:189">189</a></sup></p>
+<p>Something<sup id="fnref:190"><a class="footnote-ref" href="#fn:190">190</a></sup></p>
+<p>Something<sup id="fnref:191"><a class="footnote-ref" href="#fn:191">191</a></sup></p>
+<p>Something<sup id="fnref:192"><a class="footnote-ref" href="#fn:192">192</a></sup></p>
+<p>Something<sup id="fnref:193"><a class="footnote-ref" href="#fn:193">193</a></sup></p>
+<p>Something<sup id="fnref:194"><a class="footnote-ref" href="#fn:194">194</a></sup></p>
+<p>Something<sup id="fnref:195"><a class="footnote-ref" href="#fn:195">195</a></sup></p>
+<p>Something<sup id="fnref:196"><a class="footnote-ref" href="#fn:196">196</a></sup></p>
+<p>Something<sup id="fnref:197"><a class="footnote-ref" href="#fn:197">197</a></sup></p>
+<p>Something<sup id="fnref:198"><a class="footnote-ref" href="#fn:198">198</a></sup></p>
+<p>Something<sup id="fnref:199"><a class="footnote-ref" href="#fn:199">199</a></sup></p>
+<p>Something<sup id="fnref:200"><a class="footnote-ref" href="#fn:200">200</a></sup></p>
+<p>Something<sup id="fnref:201"><a class="footnote-ref" href="#fn:201">201</a></sup></p>
+<p>Something<sup id="fnref:202"><a class="footnote-ref" href="#fn:202">202</a></sup></p>
+<p>Something<sup id="fnref:203"><a class="footnote-ref" href="#fn:203">203</a></sup></p>
+<p>Something<sup id="fnref:204"><a class="footnote-ref" href="#fn:204">204</a></sup></p>
+<p>Something<sup id="fnref:205"><a class="footnote-ref" href="#fn:205">205</a></sup></p>
+<p>Something<sup id="fnref:206"><a class="footnote-ref" href="#fn:206">206</a></sup></p>
+<p>Something<sup id="fnref:207"><a class="footnote-ref" href="#fn:207">207</a></sup></p>
+<p>Something<sup id="fnref:208"><a class="footnote-ref" href="#fn:208">208</a></sup></p>
+<p>Something<sup id="fnref:209"><a class="footnote-ref" href="#fn:209">209</a></sup></p>
+<p>Something<sup id="fnref:210"><a class="footnote-ref" href="#fn:210">210</a></sup></p>
+<p>Something<sup id="fnref:211"><a class="footnote-ref" href="#fn:211">211</a></sup></p>
+<p>Something<sup id="fnref:212"><a class="footnote-ref" href="#fn:212">212</a></sup></p>
+<p>Something<sup id="fnref:213"><a class="footnote-ref" href="#fn:213">213</a></sup></p>
+<p>Something<sup id="fnref:214"><a class="footnote-ref" href="#fn:214">214</a></sup></p>
+<p>Something<sup id="fnref:215"><a class="footnote-ref" href="#fn:215">215</a></sup></p>
+<p>Something<sup id="fnref:216"><a class="footnote-ref" href="#fn:216">216</a></sup></p>
+<p>Something<sup id="fnref:217"><a class="footnote-ref" href="#fn:217">217</a></sup></p>
+<p>Something<sup id="fnref:218"><a class="footnote-ref" href="#fn:218">218</a></sup></p>
+<p>Something<sup id="fnref:219"><a class="footnote-ref" href="#fn:219">219</a></sup></p>
+<p>Something<sup id="fnref:220"><a class="footnote-ref" href="#fn:220">220</a></sup></p>
+<p>Something<sup id="fnref:221"><a class="footnote-ref" href="#fn:221">221</a></sup></p>
+<p>Something<sup id="fnref:222"><a class="footnote-ref" href="#fn:222">222</a></sup></p>
+<p>Something<sup id="fnref:223"><a class="footnote-ref" href="#fn:223">223</a></sup></p>
+<p>Something<sup id="fnref:224"><a class="footnote-ref" href="#fn:224">224</a></sup></p>
+<p>Something<sup id="fnref:225"><a class="footnote-ref" href="#fn:225">225</a></sup></p>
+<p>Something<sup id="fnref:226"><a class="footnote-ref" href="#fn:226">226</a></sup></p>
+<p>Something<sup id="fnref:227"><a class="footnote-ref" href="#fn:227">227</a></sup></p>
+<p>Something<sup id="fnref:228"><a class="footnote-ref" href="#fn:228">228</a></sup></p>
+<p>Something<sup id="fnref:229"><a class="footnote-ref" href="#fn:229">229</a></sup></p>
+<p>Something<sup id="fnref:230"><a class="footnote-ref" href="#fn:230">230</a></sup></p>
+<p>Something<sup id="fnref:231"><a class="footnote-ref" href="#fn:231">231</a></sup></p>
+<p>Something<sup id="fnref:232"><a class="footnote-ref" href="#fn:232">232</a></sup></p>
+<p>Something<sup id="fnref:233"><a class="footnote-ref" href="#fn:233">233</a></sup></p>
+<p>Something<sup id="fnref:234"><a class="footnote-ref" href="#fn:234">234</a></sup></p>
+<p>Something<sup id="fnref:235"><a class="footnote-ref" href="#fn:235">235</a></sup></p>
+<p>Something<sup id="fnref:236"><a class="footnote-ref" href="#fn:236">236</a></sup></p>
+<p>Something<sup id="fnref:237"><a class="footnote-ref" href="#fn:237">237</a></sup></p>
+<p>Something<sup id="fnref:238"><a class="footnote-ref" href="#fn:238">238</a></sup></p>
+<p>Something<sup id="fnref:239"><a class="footnote-ref" href="#fn:239">239</a></sup></p>
+<p>Something<sup id="fnref:240"><a class="footnote-ref" href="#fn:240">240</a></sup></p>
+<p>Something<sup id="fnref:241"><a class="footnote-ref" href="#fn:241">241</a></sup></p>
+<p>Something<sup id="fnref:242"><a class="footnote-ref" href="#fn:242">242</a></sup></p>
+<p>Something<sup id="fnref:243"><a class="footnote-ref" href="#fn:243">243</a></sup></p>
+<p>Something<sup id="fnref:244"><a class="footnote-ref" href="#fn:244">244</a></sup></p>
+<p>Something<sup id="fnref:245"><a class="footnote-ref" href="#fn:245">245</a></sup></p>
+<p>Something<sup id="fnref:246"><a class="footnote-ref" href="#fn:246">246</a></sup></p>
+<p>Something<sup id="fnref:247"><a class="footnote-ref" href="#fn:247">247</a></sup></p>
+<p>Something<sup id="fnref:248"><a class="footnote-ref" href="#fn:248">248</a></sup></p>
+<p>Something<sup id="fnref:249"><a class="footnote-ref" href="#fn:249">249</a></sup></p>
+<p>Something<sup id="fnref:250"><a class="footnote-ref" href="#fn:250">250</a></sup></p>
+<p>Something<sup id="fnref:251"><a class="footnote-ref" href="#fn:251">251</a></sup></p>
+<p>Something<sup id="fnref:252"><a class="footnote-ref" href="#fn:252">252</a></sup></p>
+<p>Something<sup id="fnref:253"><a class="footnote-ref" href="#fn:253">253</a></sup></p>
+<p>Something<sup id="fnref:254"><a class="footnote-ref" href="#fn:254">254</a></sup></p>
+<p>Something<sup id="fnref:255"><a class="footnote-ref" href="#fn:255">255</a></sup></p>
+<p>Something<sup id="fnref:256"><a class="footnote-ref" href="#fn:256">256</a></sup></p>
+<p>Something<sup id="fnref:257"><a class="footnote-ref" href="#fn:257">257</a></sup></p>
+<p>Something<sup id="fnref:258"><a class="footnote-ref" href="#fn:258">258</a></sup></p>
+<p>Something<sup id="fnref:259"><a class="footnote-ref" href="#fn:259">259</a></sup></p>
+<p>Something<sup id="fnref:260"><a class="footnote-ref" href="#fn:260">260</a></sup></p>
+<p>Something<sup id="fnref:261"><a class="footnote-ref" href="#fn:261">261</a></sup></p>
+<p>Something<sup id="fnref:262"><a class="footnote-ref" href="#fn:262">262</a></sup></p>
+<p>Something<sup id="fnref:263"><a class="footnote-ref" href="#fn:263">263</a></sup></p>
+<p>Something<sup id="fnref:264"><a class="footnote-ref" href="#fn:264">264</a></sup></p>
+<p>Something<sup id="fnref:265"><a class="footnote-ref" href="#fn:265">265</a></sup></p>
+<p>Something<sup id="fnref:266"><a class="footnote-ref" href="#fn:266">266</a></sup></p>
+<p>Something<sup id="fnref:267"><a class="footnote-ref" href="#fn:267">267</a></sup></p>
+<p>Something<sup id="fnref:268"><a class="footnote-ref" href="#fn:268">268</a></sup></p>
+<p>Something<sup id="fnref:269"><a class="footnote-ref" href="#fn:269">269</a></sup></p>
+<p>Something<sup id="fnref:270"><a class="footnote-ref" href="#fn:270">270</a></sup></p>
+<p>Something<sup id="fnref:271"><a class="footnote-ref" href="#fn:271">271</a></sup></p>
+<p>Something<sup id="fnref:272"><a class="footnote-ref" href="#fn:272">272</a></sup></p>
+<p>Something<sup id="fnref:273"><a class="footnote-ref" href="#fn:273">273</a></sup></p>
+<p>Something<sup id="fnref:274"><a class="footnote-ref" href="#fn:274">274</a></sup></p>
+<p>Something<sup id="fnref:275"><a class="footnote-ref" href="#fn:275">275</a></sup></p>
+<p>Something<sup id="fnref:276"><a class="footnote-ref" href="#fn:276">276</a></sup></p>
+<p>Something<sup id="fnref:277"><a class="footnote-ref" href="#fn:277">277</a></sup></p>
+<p>Something<sup id="fnref:278"><a class="footnote-ref" href="#fn:278">278</a></sup></p>
+<p>Something<sup id="fnref:279"><a class="footnote-ref" href="#fn:279">279</a></sup></p>
+<p>Something<sup id="fnref:280"><a class="footnote-ref" href="#fn:280">280</a></sup></p>
+<p>Something<sup id="fnref:281"><a class="footnote-ref" href="#fn:281">281</a></sup></p>
+<p>Something<sup id="fnref:282"><a class="footnote-ref" href="#fn:282">282</a></sup></p>
+<p>Something<sup id="fnref:283"><a class="footnote-ref" href="#fn:283">283</a></sup></p>
+<p>Something<sup id="fnref:284"><a class="footnote-ref" href="#fn:284">284</a></sup></p>
+<p>Something<sup id="fnref:285"><a class="footnote-ref" href="#fn:285">285</a></sup></p>
+<p>Something<sup id="fnref:286"><a class="footnote-ref" href="#fn:286">286</a></sup></p>
+<p>Something<sup id="fnref:287"><a class="footnote-ref" href="#fn:287">287</a></sup></p>
+<p>Something<sup id="fnref:288"><a class="footnote-ref" href="#fn:288">288</a></sup></p>
+<p>Something<sup id="fnref:289"><a class="footnote-ref" href="#fn:289">289</a></sup></p>
+<p>Something<sup id="fnref:290"><a class="footnote-ref" href="#fn:290">290</a></sup></p>
+<p>Something<sup id="fnref:291"><a class="footnote-ref" href="#fn:291">291</a></sup></p>
+<p>Something<sup id="fnref:292"><a class="footnote-ref" href="#fn:292">292</a></sup></p>
+<p>Something<sup id="fnref:293"><a class="footnote-ref" href="#fn:293">293</a></sup></p>
+<p>Something<sup id="fnref:294"><a class="footnote-ref" href="#fn:294">294</a></sup></p>
+<p>Something<sup id="fnref:295"><a class="footnote-ref" href="#fn:295">295</a></sup></p>
+<p>Something<sup id="fnref:296"><a class="footnote-ref" href="#fn:296">296</a></sup></p>
+<p>Something<sup id="fnref:297"><a class="footnote-ref" href="#fn:297">297</a></sup></p>
+<p>Something<sup id="fnref:298"><a class="footnote-ref" href="#fn:298">298</a></sup></p>
+<p>Something<sup id="fnref:299"><a class="footnote-ref" href="#fn:299">299</a></sup></p>
+<p>Something<sup id="fnref:300"><a class="footnote-ref" href="#fn:300">300</a></sup></p>
+<p>Something<sup id="fnref:301"><a class="footnote-ref" href="#fn:301">301</a></sup></p>
+<p>Something<sup id="fnref:302"><a class="footnote-ref" href="#fn:302">302</a></sup></p>
+<p>Something<sup id="fnref:303"><a class="footnote-ref" href="#fn:303">303</a></sup></p>
+<p>Something<sup id="fnref:304"><a class="footnote-ref" href="#fn:304">304</a></sup></p>
+<p>Something<sup id="fnref:305"><a class="footnote-ref" href="#fn:305">305</a></sup></p>
+<p>Something<sup id="fnref:306"><a class="footnote-ref" href="#fn:306">306</a></sup></p>
+<p>Something<sup id="fnref:307"><a class="footnote-ref" href="#fn:307">307</a></sup></p>
+<p>Something<sup id="fnref:308"><a class="footnote-ref" href="#fn:308">308</a></sup></p>
+<p>Something<sup id="fnref:309"><a class="footnote-ref" href="#fn:309">309</a></sup></p>
+<p>Something<sup id="fnref:310"><a class="footnote-ref" href="#fn:310">310</a></sup></p>
+<p>Something<sup id="fnref:311"><a class="footnote-ref" href="#fn:311">311</a></sup></p>
+<p>Something<sup id="fnref:312"><a class="footnote-ref" href="#fn:312">312</a></sup></p>
+<p>Something<sup id="fnref:313"><a class="footnote-ref" href="#fn:313">313</a></sup></p>
+<p>Something<sup id="fnref:314"><a class="footnote-ref" href="#fn:314">314</a></sup></p>
+<p>Something<sup id="fnref:315"><a class="footnote-ref" href="#fn:315">315</a></sup></p>
+<p>Something<sup id="fnref:316"><a class="footnote-ref" href="#fn:316">316</a></sup></p>
+<p>Something<sup id="fnref:317"><a class="footnote-ref" href="#fn:317">317</a></sup></p>
+<p>Something<sup id="fnref:318"><a class="footnote-ref" href="#fn:318">318</a></sup></p>
+<p>Something<sup id="fnref:319"><a class="footnote-ref" href="#fn:319">319</a></sup></p>
+<p>Something<sup id="fnref:320"><a class="footnote-ref" href="#fn:320">320</a></sup></p>
+<p>Something<sup id="fnref:321"><a class="footnote-ref" href="#fn:321">321</a></sup></p>
+<p>Something<sup id="fnref:322"><a class="footnote-ref" href="#fn:322">322</a></sup></p>
+<p>Something<sup id="fnref:323"><a class="footnote-ref" href="#fn:323">323</a></sup></p>
+<p>Something<sup id="fnref:324"><a class="footnote-ref" href="#fn:324">324</a></sup></p>
+<p>Something<sup id="fnref:325"><a class="footnote-ref" href="#fn:325">325</a></sup></p>
+<p>Something<sup id="fnref:326"><a class="footnote-ref" href="#fn:326">326</a></sup></p>
+<p>Something<sup id="fnref:327"><a class="footnote-ref" href="#fn:327">327</a></sup></p>
+<p>Something<sup id="fnref:328"><a class="footnote-ref" href="#fn:328">328</a></sup></p>
+<p>Something<sup id="fnref:329"><a class="footnote-ref" href="#fn:329">329</a></sup></p>
+<p>Something<sup id="fnref:330"><a class="footnote-ref" href="#fn:330">330</a></sup></p>
+<p>Something<sup id="fnref:331"><a class="footnote-ref" href="#fn:331">331</a></sup></p>
+<p>Something<sup id="fnref:332"><a class="footnote-ref" href="#fn:332">332</a></sup></p>
+<p>Something<sup id="fnref:333"><a class="footnote-ref" href="#fn:333">333</a></sup></p>
+<p>Something<sup id="fnref:334"><a class="footnote-ref" href="#fn:334">334</a></sup></p>
+<p>Something<sup id="fnref:335"><a class="footnote-ref" href="#fn:335">335</a></sup></p>
+<p>Something<sup id="fnref:336"><a class="footnote-ref" href="#fn:336">336</a></sup></p>
+<p>Something<sup id="fnref:337"><a class="footnote-ref" href="#fn:337">337</a></sup></p>
+<p>Something<sup id="fnref:338"><a class="footnote-ref" href="#fn:338">338</a></sup></p>
+<p>Something<sup id="fnref:339"><a class="footnote-ref" href="#fn:339">339</a></sup></p>
+<p>Something<sup id="fnref:340"><a class="footnote-ref" href="#fn:340">340</a></sup></p>
+<p>Something<sup id="fnref:341"><a class="footnote-ref" href="#fn:341">341</a></sup></p>
+<p>Something<sup id="fnref:342"><a class="footnote-ref" href="#fn:342">342</a></sup></p>
+<p>Something<sup id="fnref:343"><a class="footnote-ref" href="#fn:343">343</a></sup></p>
+<p>Something<sup id="fnref:344"><a class="footnote-ref" href="#fn:344">344</a></sup></p>
+<p>Something<sup id="fnref:345"><a class="footnote-ref" href="#fn:345">345</a></sup></p>
+<p>Something<sup id="fnref:346"><a class="footnote-ref" href="#fn:346">346</a></sup></p>
+<p>Something<sup id="fnref:347"><a class="footnote-ref" href="#fn:347">347</a></sup></p>
+<p>Something<sup id="fnref:348"><a class="footnote-ref" href="#fn:348">348</a></sup></p>
+<p>Something<sup id="fnref:349"><a class="footnote-ref" href="#fn:349">349</a></sup></p>
+<p>Something<sup id="fnref:350"><a class="footnote-ref" href="#fn:350">350</a></sup></p>
+<p>Something<sup id="fnref:351"><a class="footnote-ref" href="#fn:351">351</a></sup></p>
+<p>Something<sup id="fnref:352"><a class="footnote-ref" href="#fn:352">352</a></sup></p>
+<p>Something<sup id="fnref:353"><a class="footnote-ref" href="#fn:353">353</a></sup></p>
+<p>Something<sup id="fnref:354"><a class="footnote-ref" href="#fn:354">354</a></sup></p>
+<p>Something<sup id="fnref:355"><a class="footnote-ref" href="#fn:355">355</a></sup></p>
+<p>Something<sup id="fnref:356"><a class="footnote-ref" href="#fn:356">356</a></sup></p>
+<p>Something<sup id="fnref:357"><a class="footnote-ref" href="#fn:357">357</a></sup></p>
+<p>Something<sup id="fnref:358"><a class="footnote-ref" href="#fn:358">358</a></sup></p>
+<p>Something<sup id="fnref:359"><a class="footnote-ref" href="#fn:359">359</a></sup></p>
+<p>Something<sup id="fnref:360"><a class="footnote-ref" href="#fn:360">360</a></sup></p>
+<p>Something<sup id="fnref:361"><a class="footnote-ref" href="#fn:361">361</a></sup></p>
+<p>Something<sup id="fnref:362"><a class="footnote-ref" href="#fn:362">362</a></sup></p>
+<p>Something<sup id="fnref:363"><a class="footnote-ref" href="#fn:363">363</a></sup></p>
+<p>Something<sup id="fnref:364"><a class="footnote-ref" href="#fn:364">364</a></sup></p>
+<p>Something<sup id="fnref:365"><a class="footnote-ref" href="#fn:365">365</a></sup></p>
+<p>Something<sup id="fnref:366"><a class="footnote-ref" href="#fn:366">366</a></sup></p>
+<p>Something<sup id="fnref:367"><a class="footnote-ref" href="#fn:367">367</a></sup></p>
+<p>Something<sup id="fnref:368"><a class="footnote-ref" href="#fn:368">368</a></sup></p>
+<p>Something<sup id="fnref:369"><a class="footnote-ref" href="#fn:369">369</a></sup></p>
+<p>Something<sup id="fnref:370"><a class="footnote-ref" href="#fn:370">370</a></sup></p>
+<p>Something<sup id="fnref:371"><a class="footnote-ref" href="#fn:371">371</a></sup></p>
+<p>Something<sup id="fnref:372"><a class="footnote-ref" href="#fn:372">372</a></sup></p>
+<p>Something<sup id="fnref:373"><a class="footnote-ref" href="#fn:373">373</a></sup></p>
+<p>Something<sup id="fnref:374"><a class="footnote-ref" href="#fn:374">374</a></sup></p>
+<p>Something<sup id="fnref:375"><a class="footnote-ref" href="#fn:375">375</a></sup></p>
+<p>Something<sup id="fnref:376"><a class="footnote-ref" href="#fn:376">376</a></sup></p>
+<p>Something<sup id="fnref:377"><a class="footnote-ref" href="#fn:377">377</a></sup></p>
+<p>Something<sup id="fnref:378"><a class="footnote-ref" href="#fn:378">378</a></sup></p>
+<p>Something<sup id="fnref:379"><a class="footnote-ref" href="#fn:379">379</a></sup></p>
+<p>Something<sup id="fnref:380"><a class="footnote-ref" href="#fn:380">380</a></sup></p>
+<p>Something<sup id="fnref:381"><a class="footnote-ref" href="#fn:381">381</a></sup></p>
+<p>Something<sup id="fnref:382"><a class="footnote-ref" href="#fn:382">382</a></sup></p>
+<p>Something<sup id="fnref:383"><a class="footnote-ref" href="#fn:383">383</a></sup></p>
+<p>Something<sup id="fnref:384"><a class="footnote-ref" href="#fn:384">384</a></sup></p>
+<p>Something<sup id="fnref:385"><a class="footnote-ref" href="#fn:385">385</a></sup></p>
+<p>Something<sup id="fnref:386"><a class="footnote-ref" href="#fn:386">386</a></sup></p>
+<p>Something<sup id="fnref:387"><a class="footnote-ref" href="#fn:387">387</a></sup></p>
+<p>Something<sup id="fnref:388"><a class="footnote-ref" href="#fn:388">388</a></sup></p>
+<p>Something<sup id="fnref:389"><a class="footnote-ref" href="#fn:389">389</a></sup></p>
+<p>Something<sup id="fnref:390"><a class="footnote-ref" href="#fn:390">390</a></sup></p>
+<p>Something<sup id="fnref:391"><a class="footnote-ref" href="#fn:391">391</a></sup></p>
+<p>Something<sup id="fnref:392"><a class="footnote-ref" href="#fn:392">392</a></sup></p>
+<p>Something<sup id="fnref:393"><a class="footnote-ref" href="#fn:393">393</a></sup></p>
+<p>Something<sup id="fnref:394"><a class="footnote-ref" href="#fn:394">394</a></sup></p>
+<p>Something<sup id="fnref:395"><a class="footnote-ref" href="#fn:395">395</a></sup></p>
+<p>Something<sup id="fnref:396"><a class="footnote-ref" href="#fn:396">396</a></sup></p>
+<p>Something<sup id="fnref:397"><a class="footnote-ref" href="#fn:397">397</a></sup></p>
+<p>Something<sup id="fnref:398"><a class="footnote-ref" href="#fn:398">398</a></sup></p>
+<p>Something<sup id="fnref:399"><a class="footnote-ref" href="#fn:399">399</a></sup></p>
+<p>Something<sup id="fnref:400"><a class="footnote-ref" href="#fn:400">400</a></sup></p>
+<p>Something<sup id="fnref:401"><a class="footnote-ref" href="#fn:401">401</a></sup></p>
+<p>Something<sup id="fnref:402"><a class="footnote-ref" href="#fn:402">402</a></sup></p>
+<p>Something<sup id="fnref:403"><a class="footnote-ref" href="#fn:403">403</a></sup></p>
+<p>Something<sup id="fnref:404"><a class="footnote-ref" href="#fn:404">404</a></sup></p>
+<p>Something<sup id="fnref:405"><a class="footnote-ref" href="#fn:405">405</a></sup></p>
+<p>Something<sup id="fnref:406"><a class="footnote-ref" href="#fn:406">406</a></sup></p>
+<p>Something<sup id="fnref:407"><a class="footnote-ref" href="#fn:407">407</a></sup></p>
+<p>Something<sup id="fnref:408"><a class="footnote-ref" href="#fn:408">408</a></sup></p>
+<p>Something<sup id="fnref:409"><a class="footnote-ref" href="#fn:409">409</a></sup></p>
+<p>Something<sup id="fnref:410"><a class="footnote-ref" href="#fn:410">410</a></sup></p>
+<p>Something<sup id="fnref:411"><a class="footnote-ref" href="#fn:411">411</a></sup></p>
+<p>Something<sup id="fnref:412"><a class="footnote-ref" href="#fn:412">412</a></sup></p>
+<p>Something<sup id="fnref:413"><a class="footnote-ref" href="#fn:413">413</a></sup></p>
+<p>Something<sup id="fnref:414"><a class="footnote-ref" href="#fn:414">414</a></sup></p>
+<p>Something<sup id="fnref:415"><a class="footnote-ref" href="#fn:415">415</a></sup></p>
+<p>Something<sup id="fnref:416"><a class="footnote-ref" href="#fn:416">416</a></sup></p>
+<p>Something<sup id="fnref:417"><a class="footnote-ref" href="#fn:417">417</a></sup></p>
+<p>Something<sup id="fnref:418"><a class="footnote-ref" href="#fn:418">418</a></sup></p>
+<p>Something<sup id="fnref:419"><a class="footnote-ref" href="#fn:419">419</a></sup></p>
+<p>Something<sup id="fnref:420"><a class="footnote-ref" href="#fn:420">420</a></sup></p>
+<p>Something<sup id="fnref:421"><a class="footnote-ref" href="#fn:421">421</a></sup></p>
+<p>Something<sup id="fnref:422"><a class="footnote-ref" href="#fn:422">422</a></sup></p>
+<p>Something<sup id="fnref:423"><a class="footnote-ref" href="#fn:423">423</a></sup></p>
+<p>Something<sup id="fnref:424"><a class="footnote-ref" href="#fn:424">424</a></sup></p>
+<p>Something<sup id="fnref:425"><a class="footnote-ref" href="#fn:425">425</a></sup></p>
+<p>Something<sup id="fnref:426"><a class="footnote-ref" href="#fn:426">426</a></sup></p>
+<p>Something<sup id="fnref:427"><a class="footnote-ref" href="#fn:427">427</a></sup></p>
+<p>Something<sup id="fnref:428"><a class="footnote-ref" href="#fn:428">428</a></sup></p>
+<p>Something<sup id="fnref:429"><a class="footnote-ref" href="#fn:429">429</a></sup></p>
+<p>Something<sup id="fnref:430"><a class="footnote-ref" href="#fn:430">430</a></sup></p>
+<p>Something<sup id="fnref:431"><a class="footnote-ref" href="#fn:431">431</a></sup></p>
+<p>Something<sup id="fnref:432"><a class="footnote-ref" href="#fn:432">432</a></sup></p>
+<p>Something<sup id="fnref:433"><a class="footnote-ref" href="#fn:433">433</a></sup></p>
+<p>Something<sup id="fnref:434"><a class="footnote-ref" href="#fn:434">434</a></sup></p>
+<p>Something<sup id="fnref:435"><a class="footnote-ref" href="#fn:435">435</a></sup></p>
+<p>Something<sup id="fnref:436"><a class="footnote-ref" href="#fn:436">436</a></sup></p>
+<p>Something<sup id="fnref:437"><a class="footnote-ref" href="#fn:437">437</a></sup></p>
+<p>Something<sup id="fnref:438"><a class="footnote-ref" href="#fn:438">438</a></sup></p>
+<p>Something<sup id="fnref:439"><a class="footnote-ref" href="#fn:439">439</a></sup></p>
+<p>Something<sup id="fnref:440"><a class="footnote-ref" href="#fn:440">440</a></sup></p>
+<p>Something<sup id="fnref:441"><a class="footnote-ref" href="#fn:441">441</a></sup></p>
+<p>Something<sup id="fnref:442"><a class="footnote-ref" href="#fn:442">442</a></sup></p>
+<p>Something<sup id="fnref:443"><a class="footnote-ref" href="#fn:443">443</a></sup></p>
+<p>Something<sup id="fnref:444"><a class="footnote-ref" href="#fn:444">444</a></sup></p>
+<p>Something<sup id="fnref:445"><a class="footnote-ref" href="#fn:445">445</a></sup></p>
+<p>Something<sup id="fnref:446"><a class="footnote-ref" href="#fn:446">446</a></sup></p>
+<p>Something<sup id="fnref:447"><a class="footnote-ref" href="#fn:447">447</a></sup></p>
+<p>Something<sup id="fnref:448"><a class="footnote-ref" href="#fn:448">448</a></sup></p>
+<p>Something<sup id="fnref:449"><a class="footnote-ref" href="#fn:449">449</a></sup></p>
+<p>Something<sup id="fnref:450"><a class="footnote-ref" href="#fn:450">450</a></sup></p>
+<p>Something<sup id="fnref:451"><a class="footnote-ref" href="#fn:451">451</a></sup></p>
+<p>Something<sup id="fnref:452"><a class="footnote-ref" href="#fn:452">452</a></sup></p>
+<p>Something<sup id="fnref:453"><a class="footnote-ref" href="#fn:453">453</a></sup></p>
+<p>Something<sup id="fnref:454"><a class="footnote-ref" href="#fn:454">454</a></sup></p>
+<p>Something<sup id="fnref:455"><a class="footnote-ref" href="#fn:455">455</a></sup></p>
+<p>Something<sup id="fnref:456"><a class="footnote-ref" href="#fn:456">456</a></sup></p>
+<p>Something<sup id="fnref:457"><a class="footnote-ref" href="#fn:457">457</a></sup></p>
+<p>Something<sup id="fnref:458"><a class="footnote-ref" href="#fn:458">458</a></sup></p>
+<p>Something<sup id="fnref:459"><a class="footnote-ref" href="#fn:459">459</a></sup></p>
+<p>Something<sup id="fnref:460"><a class="footnote-ref" href="#fn:460">460</a></sup></p>
+<p>Something<sup id="fnref:461"><a class="footnote-ref" href="#fn:461">461</a></sup></p>
+<p>Something<sup id="fnref:462"><a class="footnote-ref" href="#fn:462">462</a></sup></p>
+<p>Something<sup id="fnref:463"><a class="footnote-ref" href="#fn:463">463</a></sup></p>
+<p>Something<sup id="fnref:464"><a class="footnote-ref" href="#fn:464">464</a></sup></p>
+<p>Something<sup id="fnref:465"><a class="footnote-ref" href="#fn:465">465</a></sup></p>
+<p>Something<sup id="fnref:466"><a class="footnote-ref" href="#fn:466">466</a></sup></p>
+<p>Something<sup id="fnref:467"><a class="footnote-ref" href="#fn:467">467</a></sup></p>
+<p>Something<sup id="fnref:468"><a class="footnote-ref" href="#fn:468">468</a></sup></p>
+<p>Something<sup id="fnref:469"><a class="footnote-ref" href="#fn:469">469</a></sup></p>
+<p>Something<sup id="fnref:470"><a class="footnote-ref" href="#fn:470">470</a></sup></p>
+<p>Something<sup id="fnref:471"><a class="footnote-ref" href="#fn:471">471</a></sup></p>
+<p>Something<sup id="fnref:472"><a class="footnote-ref" href="#fn:472">472</a></sup></p>
+<p>Something<sup id="fnref:473"><a class="footnote-ref" href="#fn:473">473</a></sup></p>
+<p>Something<sup id="fnref:474"><a class="footnote-ref" href="#fn:474">474</a></sup></p>
+<p>Something<sup id="fnref:475"><a class="footnote-ref" href="#fn:475">475</a></sup></p>
+<p>Something<sup id="fnref:476"><a class="footnote-ref" href="#fn:476">476</a></sup></p>
+<p>Something<sup id="fnref:477"><a class="footnote-ref" href="#fn:477">477</a></sup></p>
+<p>Something<sup id="fnref:478"><a class="footnote-ref" href="#fn:478">478</a></sup></p>
+<p>Something<sup id="fnref:479"><a class="footnote-ref" href="#fn:479">479</a></sup></p>
+<p>Something<sup id="fnref:480"><a class="footnote-ref" href="#fn:480">480</a></sup></p>
+<p>Something<sup id="fnref:481"><a class="footnote-ref" href="#fn:481">481</a></sup></p>
+<p>Something<sup id="fnref:482"><a class="footnote-ref" href="#fn:482">482</a></sup></p>
+<p>Something<sup id="fnref:483"><a class="footnote-ref" href="#fn:483">483</a></sup></p>
+<p>Something<sup id="fnref:484"><a class="footnote-ref" href="#fn:484">484</a></sup></p>
+<p>Something<sup id="fnref:485"><a class="footnote-ref" href="#fn:485">485</a></sup></p>
+<p>Something<sup id="fnref:486"><a class="footnote-ref" href="#fn:486">486</a></sup></p>
+<p>Something<sup id="fnref:487"><a class="footnote-ref" href="#fn:487">487</a></sup></p>
+<p>Something<sup id="fnref:488"><a class="footnote-ref" href="#fn:488">488</a></sup></p>
+<p>Something<sup id="fnref:489"><a class="footnote-ref" href="#fn:489">489</a></sup></p>
+<p>Something<sup id="fnref:490"><a class="footnote-ref" href="#fn:490">490</a></sup></p>
+<p>Something<sup id="fnref:491"><a class="footnote-ref" href="#fn:491">491</a></sup></p>
+<p>Something<sup id="fnref:492"><a class="footnote-ref" href="#fn:492">492</a></sup></p>
+<p>Something<sup id="fnref:493"><a class="footnote-ref" href="#fn:493">493</a></sup></p>
+<p>Something<sup id="fnref:494"><a class="footnote-ref" href="#fn:494">494</a></sup></p>
+<p>Something<sup id="fnref:495"><a class="footnote-ref" href="#fn:495">495</a></sup></p>
+<p>Something<sup id="fnref:496"><a class="footnote-ref" href="#fn:496">496</a></sup></p>
+<p>Something<sup id="fnref:497"><a class="footnote-ref" href="#fn:497">497</a></sup></p>
+<p>Something<sup id="fnref:498"><a class="footnote-ref" href="#fn:498">498</a></sup></p>
+<p>Something<sup id="fnref:499"><a class="footnote-ref" href="#fn:499">499</a></sup></p>
+<p>Something<sup id="fnref:500"><a class="footnote-ref" href="#fn:500">500</a></sup></p>
+<p>Something<sup id="fnref:501"><a class="footnote-ref" href="#fn:501">501</a></sup></p>
+<p>Something<sup id="fnref:502"><a class="footnote-ref" href="#fn:502">502</a></sup></p>
+<p>Something<sup id="fnref:503"><a class="footnote-ref" href="#fn:503">503</a></sup></p>
+<p>Something<sup id="fnref:504"><a class="footnote-ref" href="#fn:504">504</a></sup></p>
+<p>Something<sup id="fnref:505"><a class="footnote-ref" href="#fn:505">505</a></sup></p>
+<p>Something<sup id="fnref:506"><a class="footnote-ref" href="#fn:506">506</a></sup></p>
+<p>Something<sup id="fnref:507"><a class="footnote-ref" href="#fn:507">507</a></sup></p>
+<p>Something<sup id="fnref:508"><a class="footnote-ref" href="#fn:508">508</a></sup></p>
+<p>Something<sup id="fnref:509"><a class="footnote-ref" href="#fn:509">509</a></sup></p>
+<p>Something<sup id="fnref:510"><a class="footnote-ref" href="#fn:510">510</a></sup></p>
+<p>Something<sup id="fnref:511"><a class="footnote-ref" href="#fn:511">511</a></sup></p>
+<p>Something<sup id="fnref:512"><a class="footnote-ref" href="#fn:512">512</a></sup></p>
+<p>Something<sup id="fnref:513"><a class="footnote-ref" href="#fn:513">513</a></sup></p>
+<p>Something<sup id="fnref:514"><a class="footnote-ref" href="#fn:514">514</a></sup></p>
+<p>Something<sup id="fnref:515"><a class="footnote-ref" href="#fn:515">515</a></sup></p>
+<p>Something<sup id="fnref:516"><a class="footnote-ref" href="#fn:516">516</a></sup></p>
+<p>Something<sup id="fnref:517"><a class="footnote-ref" href="#fn:517">517</a></sup></p>
+<p>Something<sup id="fnref:518"><a class="footnote-ref" href="#fn:518">518</a></sup></p>
+<p>Something<sup id="fnref:519"><a class="footnote-ref" href="#fn:519">519</a></sup></p>
+<p>Something<sup id="fnref:520"><a class="footnote-ref" href="#fn:520">520</a></sup></p>
+<p>Something<sup id="fnref:521"><a class="footnote-ref" href="#fn:521">521</a></sup></p>
+<p>Something<sup id="fnref:522"><a class="footnote-ref" href="#fn:522">522</a></sup></p>
+<p>Something<sup id="fnref:523"><a class="footnote-ref" href="#fn:523">523</a></sup></p>
+<p>Something<sup id="fnref:524"><a class="footnote-ref" href="#fn:524">524</a></sup></p>
+<p>Something<sup id="fnref:525"><a class="footnote-ref" href="#fn:525">525</a></sup></p>
+<p>Something<sup id="fnref:526"><a class="footnote-ref" href="#fn:526">526</a></sup></p>
+<p>Something<sup id="fnref:527"><a class="footnote-ref" href="#fn:527">527</a></sup></p>
+<p>Something<sup id="fnref:528"><a class="footnote-ref" href="#fn:528">528</a></sup></p>
+<p>Something<sup id="fnref:529"><a class="footnote-ref" href="#fn:529">529</a></sup></p>
+<p>Something<sup id="fnref:530"><a class="footnote-ref" href="#fn:530">530</a></sup></p>
+<p>Something<sup id="fnref:531"><a class="footnote-ref" href="#fn:531">531</a></sup></p>
+<p>Something<sup id="fnref:532"><a class="footnote-ref" href="#fn:532">532</a></sup></p>
+<p>Something<sup id="fnref:533"><a class="footnote-ref" href="#fn:533">533</a></sup></p>
+<p>Something<sup id="fnref:534"><a class="footnote-ref" href="#fn:534">534</a></sup></p>
+<p>Something<sup id="fnref:535"><a class="footnote-ref" href="#fn:535">535</a></sup></p>
+<p>Something<sup id="fnref:536"><a class="footnote-ref" href="#fn:536">536</a></sup></p>
+<p>Something<sup id="fnref:537"><a class="footnote-ref" href="#fn:537">537</a></sup></p>
+<p>Something<sup id="fnref:538"><a class="footnote-ref" href="#fn:538">538</a></sup></p>
+<p>Something<sup id="fnref:539"><a class="footnote-ref" href="#fn:539">539</a></sup></p>
+<p>Something<sup id="fnref:540"><a class="footnote-ref" href="#fn:540">540</a></sup></p>
+<p>Something<sup id="fnref:541"><a class="footnote-ref" href="#fn:541">541</a></sup></p>
+<p>Something<sup id="fnref:542"><a class="footnote-ref" href="#fn:542">542</a></sup></p>
+<p>Something<sup id="fnref:543"><a class="footnote-ref" href="#fn:543">543</a></sup></p>
+<p>Something<sup id="fnref:544"><a class="footnote-ref" href="#fn:544">544</a></sup></p>
+<p>Something<sup id="fnref:545"><a class="footnote-ref" href="#fn:545">545</a></sup></p>
+<p>Something<sup id="fnref:546"><a class="footnote-ref" href="#fn:546">546</a></sup></p>
+<p>Something<sup id="fnref:547"><a class="footnote-ref" href="#fn:547">547</a></sup></p>
+<p>Something<sup id="fnref:548"><a class="footnote-ref" href="#fn:548">548</a></sup></p>
+<p>Something<sup id="fnref:549"><a class="footnote-ref" href="#fn:549">549</a></sup></p>
+<p>Something<sup id="fnref:550"><a class="footnote-ref" href="#fn:550">550</a></sup></p>
+<p>Something<sup id="fnref:551"><a class="footnote-ref" href="#fn:551">551</a></sup></p>
+<p>Something<sup id="fnref:552"><a class="footnote-ref" href="#fn:552">552</a></sup></p>
+<p>Something<sup id="fnref:553"><a class="footnote-ref" href="#fn:553">553</a></sup></p>
+<p>Something<sup id="fnref:554"><a class="footnote-ref" href="#fn:554">554</a></sup></p>
+<p>Something<sup id="fnref:555"><a class="footnote-ref" href="#fn:555">555</a></sup></p>
+<p>Something<sup id="fnref:556"><a class="footnote-ref" href="#fn:556">556</a></sup></p>
+<p>Something<sup id="fnref:557"><a class="footnote-ref" href="#fn:557">557</a></sup></p>
+<p>Something<sup id="fnref:558"><a class="footnote-ref" href="#fn:558">558</a></sup></p>
+<p>Something<sup id="fnref:559"><a class="footnote-ref" href="#fn:559">559</a></sup></p>
+<p>Something<sup id="fnref:560"><a class="footnote-ref" href="#fn:560">560</a></sup></p>
+<p>Something<sup id="fnref:561"><a class="footnote-ref" href="#fn:561">561</a></sup></p>
+<p>Something<sup id="fnref:562"><a class="footnote-ref" href="#fn:562">562</a></sup></p>
+<p>Something<sup id="fnref:563"><a class="footnote-ref" href="#fn:563">563</a></sup></p>
+<p>Something<sup id="fnref:564"><a class="footnote-ref" href="#fn:564">564</a></sup></p>
+<p>Something<sup id="fnref:565"><a class="footnote-ref" href="#fn:565">565</a></sup></p>
+<p>Something<sup id="fnref:566"><a class="footnote-ref" href="#fn:566">566</a></sup></p>
+<p>Something<sup id="fnref:567"><a class="footnote-ref" href="#fn:567">567</a></sup></p>
+<p>Something<sup id="fnref:568"><a class="footnote-ref" href="#fn:568">568</a></sup></p>
+<p>Something<sup id="fnref:569"><a class="footnote-ref" href="#fn:569">569</a></sup></p>
+<p>Something<sup id="fnref:570"><a class="footnote-ref" href="#fn:570">570</a></sup></p>
+<p>Something<sup id="fnref:571"><a class="footnote-ref" href="#fn:571">571</a></sup></p>
+<p>Something<sup id="fnref:572"><a class="footnote-ref" href="#fn:572">572</a></sup></p>
+<p>Something<sup id="fnref:573"><a class="footnote-ref" href="#fn:573">573</a></sup></p>
+<p>Something<sup id="fnref:574"><a class="footnote-ref" href="#fn:574">574</a></sup></p>
+<p>Something<sup id="fnref:575"><a class="footnote-ref" href="#fn:575">575</a></sup></p>
+<p>Something<sup id="fnref:576"><a class="footnote-ref" href="#fn:576">576</a></sup></p>
+<p>Something<sup id="fnref:577"><a class="footnote-ref" href="#fn:577">577</a></sup></p>
+<p>Something<sup id="fnref:578"><a class="footnote-ref" href="#fn:578">578</a></sup></p>
+<p>Something<sup id="fnref:579"><a class="footnote-ref" href="#fn:579">579</a></sup></p>
+<p>Something<sup id="fnref:580"><a class="footnote-ref" href="#fn:580">580</a></sup></p>
+<p>Something<sup id="fnref:581"><a class="footnote-ref" href="#fn:581">581</a></sup></p>
+<p>Something<sup id="fnref:582"><a class="footnote-ref" href="#fn:582">582</a></sup></p>
+<p>Something<sup id="fnref:583"><a class="footnote-ref" href="#fn:583">583</a></sup></p>
+<p>Something<sup id="fnref:584"><a class="footnote-ref" href="#fn:584">584</a></sup></p>
+<p>Something<sup id="fnref:585"><a class="footnote-ref" href="#fn:585">585</a></sup></p>
+<p>Something<sup id="fnref:586"><a class="footnote-ref" href="#fn:586">586</a></sup></p>
+<p>Something<sup id="fnref:587"><a class="footnote-ref" href="#fn:587">587</a></sup></p>
+<p>Something<sup id="fnref:588"><a class="footnote-ref" href="#fn:588">588</a></sup></p>
+<p>Something<sup id="fnref:589"><a class="footnote-ref" href="#fn:589">589</a></sup></p>
+<p>Something<sup id="fnref:590"><a class="footnote-ref" href="#fn:590">590</a></sup></p>
+<p>Something<sup id="fnref:591"><a class="footnote-ref" href="#fn:591">591</a></sup></p>
+<p>Something<sup id="fnref:592"><a class="footnote-ref" href="#fn:592">592</a></sup></p>
+<p>Something<sup id="fnref:593"><a class="footnote-ref" href="#fn:593">593</a></sup></p>
+<p>Something<sup id="fnref:594"><a class="footnote-ref" href="#fn:594">594</a></sup></p>
+<p>Something<sup id="fnref:595"><a class="footnote-ref" href="#fn:595">595</a></sup></p>
+<p>Something<sup id="fnref:596"><a class="footnote-ref" href="#fn:596">596</a></sup></p>
+<p>Something<sup id="fnref:597"><a class="footnote-ref" href="#fn:597">597</a></sup></p>
+<p>Something<sup id="fnref:598"><a class="footnote-ref" href="#fn:598">598</a></sup></p>
+<p>Something<sup id="fnref:599"><a class="footnote-ref" href="#fn:599">599</a></sup></p>
+<p>Something<sup id="fnref:600"><a class="footnote-ref" href="#fn:600">600</a></sup></p>
+<p>Something<sup id="fnref:601"><a class="footnote-ref" href="#fn:601">601</a></sup></p>
+<p>Something<sup id="fnref:602"><a class="footnote-ref" href="#fn:602">602</a></sup></p>
+<p>Something<sup id="fnref:603"><a class="footnote-ref" href="#fn:603">603</a></sup></p>
+<p>Something<sup id="fnref:604"><a class="footnote-ref" href="#fn:604">604</a></sup></p>
+<p>Something<sup id="fnref:605"><a class="footnote-ref" href="#fn:605">605</a></sup></p>
+<p>Something<sup id="fnref:606"><a class="footnote-ref" href="#fn:606">606</a></sup></p>
+<p>Something<sup id="fnref:607"><a class="footnote-ref" href="#fn:607">607</a></sup></p>
+<p>Something<sup id="fnref:608"><a class="footnote-ref" href="#fn:608">608</a></sup></p>
+<p>Something<sup id="fnref:609"><a class="footnote-ref" href="#fn:609">609</a></sup></p>
+<p>Something<sup id="fnref:610"><a class="footnote-ref" href="#fn:610">610</a></sup></p>
+<p>Something<sup id="fnref:611"><a class="footnote-ref" href="#fn:611">611</a></sup></p>
+<p>Something<sup id="fnref:612"><a class="footnote-ref" href="#fn:612">612</a></sup></p>
+<p>Something<sup id="fnref:613"><a class="footnote-ref" href="#fn:613">613</a></sup></p>
+<p>Something<sup id="fnref:614"><a class="footnote-ref" href="#fn:614">614</a></sup></p>
+<p>Something<sup id="fnref:615"><a class="footnote-ref" href="#fn:615">615</a></sup></p>
+<p>Something<sup id="fnref:616"><a class="footnote-ref" href="#fn:616">616</a></sup></p>
+<p>Something<sup id="fnref:617"><a class="footnote-ref" href="#fn:617">617</a></sup></p>
+<p>Something<sup id="fnref:618"><a class="footnote-ref" href="#fn:618">618</a></sup></p>
+<p>Something<sup id="fnref:619"><a class="footnote-ref" href="#fn:619">619</a></sup></p>
+<p>Something<sup id="fnref:620"><a class="footnote-ref" href="#fn:620">620</a></sup></p>
+<p>Something<sup id="fnref:621"><a class="footnote-ref" href="#fn:621">621</a></sup></p>
+<p>Something<sup id="fnref:622"><a class="footnote-ref" href="#fn:622">622</a></sup></p>
+<p>Something<sup id="fnref:623"><a class="footnote-ref" href="#fn:623">623</a></sup></p>
+<p>Something<sup id="fnref:624"><a class="footnote-ref" href="#fn:624">624</a></sup></p>
+<p>Something<sup id="fnref:625"><a class="footnote-ref" href="#fn:625">625</a></sup></p>
+<p>Something<sup id="fnref:626"><a class="footnote-ref" href="#fn:626">626</a></sup></p>
+<p>Something<sup id="fnref:627"><a class="footnote-ref" href="#fn:627">627</a></sup></p>
+<p>Something<sup id="fnref:628"><a class="footnote-ref" href="#fn:628">628</a></sup></p>
+<p>Something<sup id="fnref:629"><a class="footnote-ref" href="#fn:629">629</a></sup></p>
+<p>Something<sup id="fnref:630"><a class="footnote-ref" href="#fn:630">630</a></sup></p>
+<p>Something<sup id="fnref:631"><a class="footnote-ref" href="#fn:631">631</a></sup></p>
+<p>Something<sup id="fnref:632"><a class="footnote-ref" href="#fn:632">632</a></sup></p>
+<p>Something<sup id="fnref:633"><a class="footnote-ref" href="#fn:633">633</a></sup></p>
+<p>Something<sup id="fnref:634"><a class="footnote-ref" href="#fn:634">634</a></sup></p>
+<p>Something<sup id="fnref:635"><a class="footnote-ref" href="#fn:635">635</a></sup></p>
+<p>Something<sup id="fnref:636"><a class="footnote-ref" href="#fn:636">636</a></sup></p>
+<p>Something<sup id="fnref:637"><a class="footnote-ref" href="#fn:637">637</a></sup></p>
+<p>Something<sup id="fnref:638"><a class="footnote-ref" href="#fn:638">638</a></sup></p>
+<p>Something<sup id="fnref:639"><a class="footnote-ref" href="#fn:639">639</a></sup></p>
+<p>Something<sup id="fnref:640"><a class="footnote-ref" href="#fn:640">640</a></sup></p>
+<p>Something<sup id="fnref:641"><a class="footnote-ref" href="#fn:641">641</a></sup></p>
+<p>Something<sup id="fnref:642"><a class="footnote-ref" href="#fn:642">642</a></sup></p>
+<p>Something<sup id="fnref:643"><a class="footnote-ref" href="#fn:643">643</a></sup></p>
+<p>Something<sup id="fnref:644"><a class="footnote-ref" href="#fn:644">644</a></sup></p>
+<p>Something<sup id="fnref:645"><a class="footnote-ref" href="#fn:645">645</a></sup></p>
+<p>Something<sup id="fnref:646"><a class="footnote-ref" href="#fn:646">646</a></sup></p>
+<p>Something<sup id="fnref:647"><a class="footnote-ref" href="#fn:647">647</a></sup></p>
+<p>Something<sup id="fnref:648"><a class="footnote-ref" href="#fn:648">648</a></sup></p>
+<p>Something<sup id="fnref:649"><a class="footnote-ref" href="#fn:649">649</a></sup></p>
+<p>Something<sup id="fnref:650"><a class="footnote-ref" href="#fn:650">650</a></sup></p>
+<p>Something<sup id="fnref:651"><a class="footnote-ref" href="#fn:651">651</a></sup></p>
+<p>Something<sup id="fnref:652"><a class="footnote-ref" href="#fn:652">652</a></sup></p>
+<p>Something<sup id="fnref:653"><a class="footnote-ref" href="#fn:653">653</a></sup></p>
+<p>Something<sup id="fnref:654"><a class="footnote-ref" href="#fn:654">654</a></sup></p>
+<p>Something<sup id="fnref:655"><a class="footnote-ref" href="#fn:655">655</a></sup></p>
+<p>Something<sup id="fnref:656"><a class="footnote-ref" href="#fn:656">656</a></sup></p>
+<p>Something<sup id="fnref:657"><a class="footnote-ref" href="#fn:657">657</a></sup></p>
+<p>Something<sup id="fnref:658"><a class="footnote-ref" href="#fn:658">658</a></sup></p>
+<p>Something<sup id="fnref:659"><a class="footnote-ref" href="#fn:659">659</a></sup></p>
+<p>Something<sup id="fnref:660"><a class="footnote-ref" href="#fn:660">660</a></sup></p>
+<p>Something<sup id="fnref:661"><a class="footnote-ref" href="#fn:661">661</a></sup></p>
+<p>Something<sup id="fnref:662"><a class="footnote-ref" href="#fn:662">662</a></sup></p>
+<p>Something<sup id="fnref:663"><a class="footnote-ref" href="#fn:663">663</a></sup></p>
+<p>Something<sup id="fnref:664"><a class="footnote-ref" href="#fn:664">664</a></sup></p>
+<p>Something<sup id="fnref:665"><a class="footnote-ref" href="#fn:665">665</a></sup></p>
+<p>Something<sup id="fnref:666"><a class="footnote-ref" href="#fn:666">666</a></sup></p>
+<p>Something<sup id="fnref:667"><a class="footnote-ref" href="#fn:667">667</a></sup></p>
+<p>Something<sup id="fnref:668"><a class="footnote-ref" href="#fn:668">668</a></sup></p>
+<p>Something<sup id="fnref:669"><a class="footnote-ref" href="#fn:669">669</a></sup></p>
+<p>Something<sup id="fnref:670"><a class="footnote-ref" href="#fn:670">670</a></sup></p>
+<p>Something<sup id="fnref:671"><a class="footnote-ref" href="#fn:671">671</a></sup></p>
+<p>Something<sup id="fnref:672"><a class="footnote-ref" href="#fn:672">672</a></sup></p>
+<p>Something<sup id="fnref:673"><a class="footnote-ref" href="#fn:673">673</a></sup></p>
+<p>Something<sup id="fnref:674"><a class="footnote-ref" href="#fn:674">674</a></sup></p>
+<p>Something<sup id="fnref:675"><a class="footnote-ref" href="#fn:675">675</a></sup></p>
+<p>Something<sup id="fnref:676"><a class="footnote-ref" href="#fn:676">676</a></sup></p>
+<p>Something<sup id="fnref:677"><a class="footnote-ref" href="#fn:677">677</a></sup></p>
+<p>Something<sup id="fnref:678"><a class="footnote-ref" href="#fn:678">678</a></sup></p>
+<p>Something<sup id="fnref:679"><a class="footnote-ref" href="#fn:679">679</a></sup></p>
+<p>Something<sup id="fnref:680"><a class="footnote-ref" href="#fn:680">680</a></sup></p>
+<p>Something<sup id="fnref:681"><a class="footnote-ref" href="#fn:681">681</a></sup></p>
+<p>Something<sup id="fnref:682"><a class="footnote-ref" href="#fn:682">682</a></sup></p>
+<p>Something<sup id="fnref:683"><a class="footnote-ref" href="#fn:683">683</a></sup></p>
+<p>Something<sup id="fnref:684"><a class="footnote-ref" href="#fn:684">684</a></sup></p>
+<p>Something<sup id="fnref:685"><a class="footnote-ref" href="#fn:685">685</a></sup></p>
+<p>Something<sup id="fnref:686"><a class="footnote-ref" href="#fn:686">686</a></sup></p>
+<p>Something<sup id="fnref:687"><a class="footnote-ref" href="#fn:687">687</a></sup></p>
+<p>Something<sup id="fnref:688"><a class="footnote-ref" href="#fn:688">688</a></sup></p>
+<p>Something<sup id="fnref:689"><a class="footnote-ref" href="#fn:689">689</a></sup></p>
+<p>Something<sup id="fnref:690"><a class="footnote-ref" href="#fn:690">690</a></sup></p>
+<p>Something<sup id="fnref:691"><a class="footnote-ref" href="#fn:691">691</a></sup></p>
+<p>Something<sup id="fnref:692"><a class="footnote-ref" href="#fn:692">692</a></sup></p>
+<p>Something<sup id="fnref:693"><a class="footnote-ref" href="#fn:693">693</a></sup></p>
+<p>Something<sup id="fnref:694"><a class="footnote-ref" href="#fn:694">694</a></sup></p>
+<p>Something<sup id="fnref:695"><a class="footnote-ref" href="#fn:695">695</a></sup></p>
+<p>Something<sup id="fnref:696"><a class="footnote-ref" href="#fn:696">696</a></sup></p>
+<p>Something<sup id="fnref:697"><a class="footnote-ref" href="#fn:697">697</a></sup></p>
+<p>Something<sup id="fnref:698"><a class="footnote-ref" href="#fn:698">698</a></sup></p>
+<p>Something<sup id="fnref:699"><a class="footnote-ref" href="#fn:699">699</a></sup></p>
+<p>Something<sup id="fnref:700"><a class="footnote-ref" href="#fn:700">700</a></sup></p>
+<p>Something<sup id="fnref:701"><a class="footnote-ref" href="#fn:701">701</a></sup></p>
+<p>Something<sup id="fnref:702"><a class="footnote-ref" href="#fn:702">702</a></sup></p>
+<p>Something<sup id="fnref:703"><a class="footnote-ref" href="#fn:703">703</a></sup></p>
+<p>Something<sup id="fnref:704"><a class="footnote-ref" href="#fn:704">704</a></sup></p>
+<p>Something<sup id="fnref:705"><a class="footnote-ref" href="#fn:705">705</a></sup></p>
+<p>Something<sup id="fnref:706"><a class="footnote-ref" href="#fn:706">706</a></sup></p>
+<p>Something<sup id="fnref:707"><a class="footnote-ref" href="#fn:707">707</a></sup></p>
+<p>Something<sup id="fnref:708"><a class="footnote-ref" href="#fn:708">708</a></sup></p>
+<p>Something<sup id="fnref:709"><a class="footnote-ref" href="#fn:709">709</a></sup></p>
+<p>Something<sup id="fnref:710"><a class="footnote-ref" href="#fn:710">710</a></sup></p>
+<p>Something<sup id="fnref:711"><a class="footnote-ref" href="#fn:711">711</a></sup></p>
+<p>Something<sup id="fnref:712"><a class="footnote-ref" href="#fn:712">712</a></sup></p>
+<p>Something<sup id="fnref:713"><a class="footnote-ref" href="#fn:713">713</a></sup></p>
+<p>Something<sup id="fnref:714"><a class="footnote-ref" href="#fn:714">714</a></sup></p>
+<p>Something<sup id="fnref:715"><a class="footnote-ref" href="#fn:715">715</a></sup></p>
+<p>Something<sup id="fnref:716"><a class="footnote-ref" href="#fn:716">716</a></sup></p>
+<p>Something<sup id="fnref:717"><a class="footnote-ref" href="#fn:717">717</a></sup></p>
+<p>Something<sup id="fnref:718"><a class="footnote-ref" href="#fn:718">718</a></sup></p>
+<p>Something<sup id="fnref:719"><a class="footnote-ref" href="#fn:719">719</a></sup></p>
+<p>Something<sup id="fnref:720"><a class="footnote-ref" href="#fn:720">720</a></sup></p>
+<p>Something<sup id="fnref:721"><a class="footnote-ref" href="#fn:721">721</a></sup></p>
+<p>Something<sup id="fnref:722"><a class="footnote-ref" href="#fn:722">722</a></sup></p>
+<p>Something<sup id="fnref:723"><a class="footnote-ref" href="#fn:723">723</a></sup></p>
+<p>Something<sup id="fnref:724"><a class="footnote-ref" href="#fn:724">724</a></sup></p>
+<p>Something<sup id="fnref:725"><a class="footnote-ref" href="#fn:725">725</a></sup></p>
+<p>Something<sup id="fnref:726"><a class="footnote-ref" href="#fn:726">726</a></sup></p>
+<p>Something<sup id="fnref:727"><a class="footnote-ref" href="#fn:727">727</a></sup></p>
+<p>Something<sup id="fnref:728"><a class="footnote-ref" href="#fn:728">728</a></sup></p>
+<p>Something<sup id="fnref:729"><a class="footnote-ref" href="#fn:729">729</a></sup></p>
+<p>Something<sup id="fnref:730"><a class="footnote-ref" href="#fn:730">730</a></sup></p>
+<p>Something<sup id="fnref:731"><a class="footnote-ref" href="#fn:731">731</a></sup></p>
+<p>Something<sup id="fnref:732"><a class="footnote-ref" href="#fn:732">732</a></sup></p>
+<p>Something<sup id="fnref:733"><a class="footnote-ref" href="#fn:733">733</a></sup></p>
+<p>Something<sup id="fnref:734"><a class="footnote-ref" href="#fn:734">734</a></sup></p>
+<p>Something<sup id="fnref:735"><a class="footnote-ref" href="#fn:735">735</a></sup></p>
+<p>Something<sup id="fnref:736"><a class="footnote-ref" href="#fn:736">736</a></sup></p>
+<p>Something<sup id="fnref:737"><a class="footnote-ref" href="#fn:737">737</a></sup></p>
+<p>Something<sup id="fnref:738"><a class="footnote-ref" href="#fn:738">738</a></sup></p>
+<p>Something<sup id="fnref:739"><a class="footnote-ref" href="#fn:739">739</a></sup></p>
+<p>Something<sup id="fnref:740"><a class="footnote-ref" href="#fn:740">740</a></sup></p>
+<p>Something<sup id="fnref:741"><a class="footnote-ref" href="#fn:741">741</a></sup></p>
+<p>Something<sup id="fnref:742"><a class="footnote-ref" href="#fn:742">742</a></sup></p>
+<p>Something<sup id="fnref:743"><a class="footnote-ref" href="#fn:743">743</a></sup></p>
+<p>Something<sup id="fnref:744"><a class="footnote-ref" href="#fn:744">744</a></sup></p>
+<p>Something<sup id="fnref:745"><a class="footnote-ref" href="#fn:745">745</a></sup></p>
+<p>Something<sup id="fnref:746"><a class="footnote-ref" href="#fn:746">746</a></sup></p>
+<p>Something<sup id="fnref:747"><a class="footnote-ref" href="#fn:747">747</a></sup></p>
+<p>Something<sup id="fnref:748"><a class="footnote-ref" href="#fn:748">748</a></sup></p>
+<p>Something<sup id="fnref:749"><a class="footnote-ref" href="#fn:749">749</a></sup></p>
+<p>Something<sup id="fnref:750"><a class="footnote-ref" href="#fn:750">750</a></sup></p>
+<p>Something<sup id="fnref:751"><a class="footnote-ref" href="#fn:751">751</a></sup></p>
+<p>Something<sup id="fnref:752"><a class="footnote-ref" href="#fn:752">752</a></sup></p>
+<p>Something<sup id="fnref:753"><a class="footnote-ref" href="#fn:753">753</a></sup></p>
+<p>Something<sup id="fnref:754"><a class="footnote-ref" href="#fn:754">754</a></sup></p>
+<p>Something<sup id="fnref:755"><a class="footnote-ref" href="#fn:755">755</a></sup></p>
+<p>Something<sup id="fnref:756"><a class="footnote-ref" href="#fn:756">756</a></sup></p>
+<p>Something<sup id="fnref:757"><a class="footnote-ref" href="#fn:757">757</a></sup></p>
+<p>Something<sup id="fnref:758"><a class="footnote-ref" href="#fn:758">758</a></sup></p>
+<p>Something<sup id="fnref:759"><a class="footnote-ref" href="#fn:759">759</a></sup></p>
+<p>Something<sup id="fnref:760"><a class="footnote-ref" href="#fn:760">760</a></sup></p>
+<p>Something<sup id="fnref:761"><a class="footnote-ref" href="#fn:761">761</a></sup></p>
+<p>Something<sup id="fnref:762"><a class="footnote-ref" href="#fn:762">762</a></sup></p>
+<p>Something<sup id="fnref:763"><a class="footnote-ref" href="#fn:763">763</a></sup></p>
+<p>Something<sup id="fnref:764"><a class="footnote-ref" href="#fn:764">764</a></sup></p>
+<p>Something<sup id="fnref:765"><a class="footnote-ref" href="#fn:765">765</a></sup></p>
+<p>Something<sup id="fnref:766"><a class="footnote-ref" href="#fn:766">766</a></sup></p>
+<p>Something<sup id="fnref:767"><a class="footnote-ref" href="#fn:767">767</a></sup></p>
+<p>Something<sup id="fnref:768"><a class="footnote-ref" href="#fn:768">768</a></sup></p>
+<p>Something<sup id="fnref:769"><a class="footnote-ref" href="#fn:769">769</a></sup></p>
+<p>Something<sup id="fnref:770"><a class="footnote-ref" href="#fn:770">770</a></sup></p>
+<p>Something<sup id="fnref:771"><a class="footnote-ref" href="#fn:771">771</a></sup></p>
+<p>Something<sup id="fnref:772"><a class="footnote-ref" href="#fn:772">772</a></sup></p>
+<p>Something<sup id="fnref:773"><a class="footnote-ref" href="#fn:773">773</a></sup></p>
+<p>Something<sup id="fnref:774"><a class="footnote-ref" href="#fn:774">774</a></sup></p>
+<p>Something<sup id="fnref:775"><a class="footnote-ref" href="#fn:775">775</a></sup></p>
+<p>Something<sup id="fnref:776"><a class="footnote-ref" href="#fn:776">776</a></sup></p>
+<p>Something<sup id="fnref:777"><a class="footnote-ref" href="#fn:777">777</a></sup></p>
+<p>Something<sup id="fnref:778"><a class="footnote-ref" href="#fn:778">778</a></sup></p>
+<p>Something<sup id="fnref:779"><a class="footnote-ref" href="#fn:779">779</a></sup></p>
+<p>Something<sup id="fnref:780"><a class="footnote-ref" href="#fn:780">780</a></sup></p>
+<p>Something<sup id="fnref:781"><a class="footnote-ref" href="#fn:781">781</a></sup></p>
+<p>Something<sup id="fnref:782"><a class="footnote-ref" href="#fn:782">782</a></sup></p>
+<p>Something<sup id="fnref:783"><a class="footnote-ref" href="#fn:783">783</a></sup></p>
+<p>Something<sup id="fnref:784"><a class="footnote-ref" href="#fn:784">784</a></sup></p>
+<p>Something<sup id="fnref:785"><a class="footnote-ref" href="#fn:785">785</a></sup></p>
+<p>Something<sup id="fnref:786"><a class="footnote-ref" href="#fn:786">786</a></sup></p>
+<p>Something<sup id="fnref:787"><a class="footnote-ref" href="#fn:787">787</a></sup></p>
+<p>Something<sup id="fnref:788"><a class="footnote-ref" href="#fn:788">788</a></sup></p>
+<p>Something<sup id="fnref:789"><a class="footnote-ref" href="#fn:789">789</a></sup></p>
+<p>Something<sup id="fnref:790"><a class="footnote-ref" href="#fn:790">790</a></sup></p>
+<p>Something<sup id="fnref:791"><a class="footnote-ref" href="#fn:791">791</a></sup></p>
+<p>Something<sup id="fnref:792"><a class="footnote-ref" href="#fn:792">792</a></sup></p>
+<p>Something<sup id="fnref:793"><a class="footnote-ref" href="#fn:793">793</a></sup></p>
+<p>Something<sup id="fnref:794"><a class="footnote-ref" href="#fn:794">794</a></sup></p>
+<p>Something<sup id="fnref:795"><a class="footnote-ref" href="#fn:795">795</a></sup></p>
+<p>Something<sup id="fnref:796"><a class="footnote-ref" href="#fn:796">796</a></sup></p>
+<p>Something<sup id="fnref:797"><a class="footnote-ref" href="#fn:797">797</a></sup></p>
+<p>Something<sup id="fnref:798"><a class="footnote-ref" href="#fn:798">798</a></sup></p>
+<p>Something<sup id="fnref:799"><a class="footnote-ref" href="#fn:799">799</a></sup></p>
+<p>Something<sup id="fnref:800"><a class="footnote-ref" href="#fn:800">800</a></sup></p>
+<p>Something<sup id="fnref:801"><a class="footnote-ref" href="#fn:801">801</a></sup></p>
+<p>Something<sup id="fnref:802"><a class="footnote-ref" href="#fn:802">802</a></sup></p>
+<p>Something<sup id="fnref:803"><a class="footnote-ref" href="#fn:803">803</a></sup></p>
+<p>Something<sup id="fnref:804"><a class="footnote-ref" href="#fn:804">804</a></sup></p>
+<p>Something<sup id="fnref:805"><a class="footnote-ref" href="#fn:805">805</a></sup></p>
+<p>Something<sup id="fnref:806"><a class="footnote-ref" href="#fn:806">806</a></sup></p>
+<p>Something<sup id="fnref:807"><a class="footnote-ref" href="#fn:807">807</a></sup></p>
+<p>Something<sup id="fnref:808"><a class="footnote-ref" href="#fn:808">808</a></sup></p>
+<p>Something<sup id="fnref:809"><a class="footnote-ref" href="#fn:809">809</a></sup></p>
+<p>Something<sup id="fnref:810"><a class="footnote-ref" href="#fn:810">810</a></sup></p>
+<p>Something<sup id="fnref:811"><a class="footnote-ref" href="#fn:811">811</a></sup></p>
+<p>Something<sup id="fnref:812"><a class="footnote-ref" href="#fn:812">812</a></sup></p>
+<p>Something<sup id="fnref:813"><a class="footnote-ref" href="#fn:813">813</a></sup></p>
+<p>Something<sup id="fnref:814"><a class="footnote-ref" href="#fn:814">814</a></sup></p>
+<p>Something<sup id="fnref:815"><a class="footnote-ref" href="#fn:815">815</a></sup></p>
+<p>Something<sup id="fnref:816"><a class="footnote-ref" href="#fn:816">816</a></sup></p>
+<p>Something<sup id="fnref:817"><a class="footnote-ref" href="#fn:817">817</a></sup></p>
+<p>Something<sup id="fnref:818"><a class="footnote-ref" href="#fn:818">818</a></sup></p>
+<p>Something<sup id="fnref:819"><a class="footnote-ref" href="#fn:819">819</a></sup></p>
+<p>Something<sup id="fnref:820"><a class="footnote-ref" href="#fn:820">820</a></sup></p>
+<p>Something<sup id="fnref:821"><a class="footnote-ref" href="#fn:821">821</a></sup></p>
+<p>Something<sup id="fnref:822"><a class="footnote-ref" href="#fn:822">822</a></sup></p>
+<p>Something<sup id="fnref:823"><a class="footnote-ref" href="#fn:823">823</a></sup></p>
+<p>Something<sup id="fnref:824"><a class="footnote-ref" href="#fn:824">824</a></sup></p>
+<p>Something<sup id="fnref:825"><a class="footnote-ref" href="#fn:825">825</a></sup></p>
+<p>Something<sup id="fnref:826"><a class="footnote-ref" href="#fn:826">826</a></sup></p>
+<p>Something<sup id="fnref:827"><a class="footnote-ref" href="#fn:827">827</a></sup></p>
+<p>Something<sup id="fnref:828"><a class="footnote-ref" href="#fn:828">828</a></sup></p>
+<p>Something<sup id="fnref:829"><a class="footnote-ref" href="#fn:829">829</a></sup></p>
+<p>Something<sup id="fnref:830"><a class="footnote-ref" href="#fn:830">830</a></sup></p>
+<p>Something<sup id="fnref:831"><a class="footnote-ref" href="#fn:831">831</a></sup></p>
+<p>Something<sup id="fnref:832"><a class="footnote-ref" href="#fn:832">832</a></sup></p>
+<p>Something<sup id="fnref:833"><a class="footnote-ref" href="#fn:833">833</a></sup></p>
+<p>Something<sup id="fnref:834"><a class="footnote-ref" href="#fn:834">834</a></sup></p>
+<p>Something<sup id="fnref:835"><a class="footnote-ref" href="#fn:835">835</a></sup></p>
+<p>Something<sup id="fnref:836"><a class="footnote-ref" href="#fn:836">836</a></sup></p>
+<p>Something<sup id="fnref:837"><a class="footnote-ref" href="#fn:837">837</a></sup></p>
+<p>Something<sup id="fnref:838"><a class="footnote-ref" href="#fn:838">838</a></sup></p>
+<p>Something<sup id="fnref:839"><a class="footnote-ref" href="#fn:839">839</a></sup></p>
+<p>Something<sup id="fnref:840"><a class="footnote-ref" href="#fn:840">840</a></sup></p>
+<p>Something<sup id="fnref:841"><a class="footnote-ref" href="#fn:841">841</a></sup></p>
+<p>Something<sup id="fnref:842"><a class="footnote-ref" href="#fn:842">842</a></sup></p>
+<p>Something<sup id="fnref:843"><a class="footnote-ref" href="#fn:843">843</a></sup></p>
+<p>Something<sup id="fnref:844"><a class="footnote-ref" href="#fn:844">844</a></sup></p>
+<p>Something<sup id="fnref:845"><a class="footnote-ref" href="#fn:845">845</a></sup></p>
+<p>Something<sup id="fnref:846"><a class="footnote-ref" href="#fn:846">846</a></sup></p>
+<p>Something<sup id="fnref:847"><a class="footnote-ref" href="#fn:847">847</a></sup></p>
+<p>Something<sup id="fnref:848"><a class="footnote-ref" href="#fn:848">848</a></sup></p>
+<p>Something<sup id="fnref:849"><a class="footnote-ref" href="#fn:849">849</a></sup></p>
+<p>Something<sup id="fnref:850"><a class="footnote-ref" href="#fn:850">850</a></sup></p>
+<p>Something<sup id="fnref:851"><a class="footnote-ref" href="#fn:851">851</a></sup></p>
+<p>Something<sup id="fnref:852"><a class="footnote-ref" href="#fn:852">852</a></sup></p>
+<p>Something<sup id="fnref:853"><a class="footnote-ref" href="#fn:853">853</a></sup></p>
+<p>Something<sup id="fnref:854"><a class="footnote-ref" href="#fn:854">854</a></sup></p>
+<p>Something<sup id="fnref:855"><a class="footnote-ref" href="#fn:855">855</a></sup></p>
+<p>Something<sup id="fnref:856"><a class="footnote-ref" href="#fn:856">856</a></sup></p>
+<p>Something<sup id="fnref:857"><a class="footnote-ref" href="#fn:857">857</a></sup></p>
+<p>Something<sup id="fnref:858"><a class="footnote-ref" href="#fn:858">858</a></sup></p>
+<p>Something<sup id="fnref:859"><a class="footnote-ref" href="#fn:859">859</a></sup></p>
+<p>Something<sup id="fnref:860"><a class="footnote-ref" href="#fn:860">860</a></sup></p>
+<p>Something<sup id="fnref:861"><a class="footnote-ref" href="#fn:861">861</a></sup></p>
+<p>Something<sup id="fnref:862"><a class="footnote-ref" href="#fn:862">862</a></sup></p>
+<p>Something<sup id="fnref:863"><a class="footnote-ref" href="#fn:863">863</a></sup></p>
+<p>Something<sup id="fnref:864"><a class="footnote-ref" href="#fn:864">864</a></sup></p>
+<p>Something<sup id="fnref:865"><a class="footnote-ref" href="#fn:865">865</a></sup></p>
+<p>Something<sup id="fnref:866"><a class="footnote-ref" href="#fn:866">866</a></sup></p>
+<p>Something<sup id="fnref:867"><a class="footnote-ref" href="#fn:867">867</a></sup></p>
+<p>Something<sup id="fnref:868"><a class="footnote-ref" href="#fn:868">868</a></sup></p>
+<p>Something<sup id="fnref:869"><a class="footnote-ref" href="#fn:869">869</a></sup></p>
+<p>Something<sup id="fnref:870"><a class="footnote-ref" href="#fn:870">870</a></sup></p>
+<p>Something<sup id="fnref:871"><a class="footnote-ref" href="#fn:871">871</a></sup></p>
+<p>Something<sup id="fnref:872"><a class="footnote-ref" href="#fn:872">872</a></sup></p>
+<p>Something<sup id="fnref:873"><a class="footnote-ref" href="#fn:873">873</a></sup></p>
+<p>Something<sup id="fnref:874"><a class="footnote-ref" href="#fn:874">874</a></sup></p>
+<p>Something<sup id="fnref:875"><a class="footnote-ref" href="#fn:875">875</a></sup></p>
+<p>Something<sup id="fnref:876"><a class="footnote-ref" href="#fn:876">876</a></sup></p>
+<p>Something<sup id="fnref:877"><a class="footnote-ref" href="#fn:877">877</a></sup></p>
+<p>Something<sup id="fnref:878"><a class="footnote-ref" href="#fn:878">878</a></sup></p>
+<p>Something<sup id="fnref:879"><a class="footnote-ref" href="#fn:879">879</a></sup></p>
+<p>Something<sup id="fnref:880"><a class="footnote-ref" href="#fn:880">880</a></sup></p>
+<p>Something<sup id="fnref:881"><a class="footnote-ref" href="#fn:881">881</a></sup></p>
+<p>Something<sup id="fnref:882"><a class="footnote-ref" href="#fn:882">882</a></sup></p>
+<p>Something<sup id="fnref:883"><a class="footnote-ref" href="#fn:883">883</a></sup></p>
+<p>Something<sup id="fnref:884"><a class="footnote-ref" href="#fn:884">884</a></sup></p>
+<p>Something<sup id="fnref:885"><a class="footnote-ref" href="#fn:885">885</a></sup></p>
+<p>Something<sup id="fnref:886"><a class="footnote-ref" href="#fn:886">886</a></sup></p>
+<p>Something<sup id="fnref:887"><a class="footnote-ref" href="#fn:887">887</a></sup></p>
+<p>Something<sup id="fnref:888"><a class="footnote-ref" href="#fn:888">888</a></sup></p>
+<p>Something<sup id="fnref:889"><a class="footnote-ref" href="#fn:889">889</a></sup></p>
+<p>Something<sup id="fnref:890"><a class="footnote-ref" href="#fn:890">890</a></sup></p>
+<p>Something<sup id="fnref:891"><a class="footnote-ref" href="#fn:891">891</a></sup></p>
+<p>Something<sup id="fnref:892"><a class="footnote-ref" href="#fn:892">892</a></sup></p>
+<p>Something<sup id="fnref:893"><a class="footnote-ref" href="#fn:893">893</a></sup></p>
+<p>Something<sup id="fnref:894"><a class="footnote-ref" href="#fn:894">894</a></sup></p>
+<p>Something<sup id="fnref:895"><a class="footnote-ref" href="#fn:895">895</a></sup></p>
+<p>Something<sup id="fnref:896"><a class="footnote-ref" href="#fn:896">896</a></sup></p>
+<p>Something<sup id="fnref:897"><a class="footnote-ref" href="#fn:897">897</a></sup></p>
+<p>Something<sup id="fnref:898"><a class="footnote-ref" href="#fn:898">898</a></sup></p>
+<p>Something<sup id="fnref:899"><a class="footnote-ref" href="#fn:899">899</a></sup></p>
+<p>Something<sup id="fnref:900"><a class="footnote-ref" href="#fn:900">900</a></sup></p>
+<p>Something<sup id="fnref:901"><a class="footnote-ref" href="#fn:901">901</a></sup></p>
+<p>Something<sup id="fnref:902"><a class="footnote-ref" href="#fn:902">902</a></sup></p>
+<p>Something<sup id="fnref:903"><a class="footnote-ref" href="#fn:903">903</a></sup></p>
+<p>Something<sup id="fnref:904"><a class="footnote-ref" href="#fn:904">904</a></sup></p>
+<p>Something<sup id="fnref:905"><a class="footnote-ref" href="#fn:905">905</a></sup></p>
+<p>Something<sup id="fnref:906"><a class="footnote-ref" href="#fn:906">906</a></sup></p>
+<p>Something<sup id="fnref:907"><a class="footnote-ref" href="#fn:907">907</a></sup></p>
+<p>Something<sup id="fnref:908"><a class="footnote-ref" href="#fn:908">908</a></sup></p>
+<p>Something<sup id="fnref:909"><a class="footnote-ref" href="#fn:909">909</a></sup></p>
+<p>Something<sup id="fnref:910"><a class="footnote-ref" href="#fn:910">910</a></sup></p>
+<p>Something<sup id="fnref:911"><a class="footnote-ref" href="#fn:911">911</a></sup></p>
+<p>Something<sup id="fnref:912"><a class="footnote-ref" href="#fn:912">912</a></sup></p>
+<p>Something<sup id="fnref:913"><a class="footnote-ref" href="#fn:913">913</a></sup></p>
+<p>Something<sup id="fnref:914"><a class="footnote-ref" href="#fn:914">914</a></sup></p>
+<p>Something<sup id="fnref:915"><a class="footnote-ref" href="#fn:915">915</a></sup></p>
+<p>Something<sup id="fnref:916"><a class="footnote-ref" href="#fn:916">916</a></sup></p>
+<p>Something<sup id="fnref:917"><a class="footnote-ref" href="#fn:917">917</a></sup></p>
+<p>Something<sup id="fnref:918"><a class="footnote-ref" href="#fn:918">918</a></sup></p>
+<p>Something<sup id="fnref:919"><a class="footnote-ref" href="#fn:919">919</a></sup></p>
+<p>Something<sup id="fnref:920"><a class="footnote-ref" href="#fn:920">920</a></sup></p>
+<p>Something<sup id="fnref:921"><a class="footnote-ref" href="#fn:921">921</a></sup></p>
+<p>Something<sup id="fnref:922"><a class="footnote-ref" href="#fn:922">922</a></sup></p>
+<p>Something<sup id="fnref:923"><a class="footnote-ref" href="#fn:923">923</a></sup></p>
+<p>Something<sup id="fnref:924"><a class="footnote-ref" href="#fn:924">924</a></sup></p>
+<p>Something<sup id="fnref:925"><a class="footnote-ref" href="#fn:925">925</a></sup></p>
+<p>Something<sup id="fnref:926"><a class="footnote-ref" href="#fn:926">926</a></sup></p>
+<p>Something<sup id="fnref:927"><a class="footnote-ref" href="#fn:927">927</a></sup></p>
+<p>Something<sup id="fnref:928"><a class="footnote-ref" href="#fn:928">928</a></sup></p>
+<p>Something<sup id="fnref:929"><a class="footnote-ref" href="#fn:929">929</a></sup></p>
+<p>Something<sup id="fnref:930"><a class="footnote-ref" href="#fn:930">930</a></sup></p>
+<p>Something<sup id="fnref:931"><a class="footnote-ref" href="#fn:931">931</a></sup></p>
+<p>Something<sup id="fnref:932"><a class="footnote-ref" href="#fn:932">932</a></sup></p>
+<p>Something<sup id="fnref:933"><a class="footnote-ref" href="#fn:933">933</a></sup></p>
+<p>Something<sup id="fnref:934"><a class="footnote-ref" href="#fn:934">934</a></sup></p>
+<p>Something<sup id="fnref:935"><a class="footnote-ref" href="#fn:935">935</a></sup></p>
+<p>Something<sup id="fnref:936"><a class="footnote-ref" href="#fn:936">936</a></sup></p>
+<p>Something<sup id="fnref:937"><a class="footnote-ref" href="#fn:937">937</a></sup></p>
+<p>Something<sup id="fnref:938"><a class="footnote-ref" href="#fn:938">938</a></sup></p>
+<p>Something<sup id="fnref:939"><a class="footnote-ref" href="#fn:939">939</a></sup></p>
+<p>Something<sup id="fnref:940"><a class="footnote-ref" href="#fn:940">940</a></sup></p>
+<p>Something<sup id="fnref:941"><a class="footnote-ref" href="#fn:941">941</a></sup></p>
+<p>Something<sup id="fnref:942"><a class="footnote-ref" href="#fn:942">942</a></sup></p>
+<p>Something<sup id="fnref:943"><a class="footnote-ref" href="#fn:943">943</a></sup></p>
+<p>Something<sup id="fnref:944"><a class="footnote-ref" href="#fn:944">944</a></sup></p>
+<p>Something<sup id="fnref:945"><a class="footnote-ref" href="#fn:945">945</a></sup></p>
+<p>Something<sup id="fnref:946"><a class="footnote-ref" href="#fn:946">946</a></sup></p>
+<p>Something<sup id="fnref:947"><a class="footnote-ref" href="#fn:947">947</a></sup></p>
+<p>Something<sup id="fnref:948"><a class="footnote-ref" href="#fn:948">948</a></sup></p>
+<p>Something<sup id="fnref:949"><a class="footnote-ref" href="#fn:949">949</a></sup></p>
+<p>Something<sup id="fnref:950"><a class="footnote-ref" href="#fn:950">950</a></sup></p>
+<p>Something<sup id="fnref:951"><a class="footnote-ref" href="#fn:951">951</a></sup></p>
+<p>Something<sup id="fnref:952"><a class="footnote-ref" href="#fn:952">952</a></sup></p>
+<p>Something<sup id="fnref:953"><a class="footnote-ref" href="#fn:953">953</a></sup></p>
+<p>Something<sup id="fnref:954"><a class="footnote-ref" href="#fn:954">954</a></sup></p>
+<p>Something<sup id="fnref:955"><a class="footnote-ref" href="#fn:955">955</a></sup></p>
+<p>Something<sup id="fnref:956"><a class="footnote-ref" href="#fn:956">956</a></sup></p>
+<p>Something<sup id="fnref:957"><a class="footnote-ref" href="#fn:957">957</a></sup></p>
+<p>Something<sup id="fnref:958"><a class="footnote-ref" href="#fn:958">958</a></sup></p>
+<p>Something<sup id="fnref:959"><a class="footnote-ref" href="#fn:959">959</a></sup></p>
+<p>Something<sup id="fnref:960"><a class="footnote-ref" href="#fn:960">960</a></sup></p>
+<p>Something<sup id="fnref:961"><a class="footnote-ref" href="#fn:961">961</a></sup></p>
+<p>Something<sup id="fnref:962"><a class="footnote-ref" href="#fn:962">962</a></sup></p>
+<p>Something<sup id="fnref:963"><a class="footnote-ref" href="#fn:963">963</a></sup></p>
+<p>Something<sup id="fnref:964"><a class="footnote-ref" href="#fn:964">964</a></sup></p>
+<p>Something<sup id="fnref:965"><a class="footnote-ref" href="#fn:965">965</a></sup></p>
+<p>Something<sup id="fnref:966"><a class="footnote-ref" href="#fn:966">966</a></sup></p>
+<p>Something<sup id="fnref:967"><a class="footnote-ref" href="#fn:967">967</a></sup></p>
+<p>Something<sup id="fnref:968"><a class="footnote-ref" href="#fn:968">968</a></sup></p>
+<p>Something<sup id="fnref:969"><a class="footnote-ref" href="#fn:969">969</a></sup></p>
+<p>Something<sup id="fnref:970"><a class="footnote-ref" href="#fn:970">970</a></sup></p>
+<p>Something<sup id="fnref:971"><a class="footnote-ref" href="#fn:971">971</a></sup></p>
+<p>Something<sup id="fnref:972"><a class="footnote-ref" href="#fn:972">972</a></sup></p>
+<p>Something<sup id="fnref:973"><a class="footnote-ref" href="#fn:973">973</a></sup></p>
+<p>Something<sup id="fnref:974"><a class="footnote-ref" href="#fn:974">974</a></sup></p>
+<p>Something<sup id="fnref:975"><a class="footnote-ref" href="#fn:975">975</a></sup></p>
+<p>Something<sup id="fnref:976"><a class="footnote-ref" href="#fn:976">976</a></sup></p>
+<p>Something<sup id="fnref:977"><a class="footnote-ref" href="#fn:977">977</a></sup></p>
+<p>Something<sup id="fnref:978"><a class="footnote-ref" href="#fn:978">978</a></sup></p>
+<p>Something<sup id="fnref:979"><a class="footnote-ref" href="#fn:979">979</a></sup></p>
+<p>Something<sup id="fnref:980"><a class="footnote-ref" href="#fn:980">980</a></sup></p>
+<p>Something<sup id="fnref:981"><a class="footnote-ref" href="#fn:981">981</a></sup></p>
+<p>Something<sup id="fnref:982"><a class="footnote-ref" href="#fn:982">982</a></sup></p>
+<p>Something<sup id="fnref:983"><a class="footnote-ref" href="#fn:983">983</a></sup></p>
+<p>Something<sup id="fnref:984"><a class="footnote-ref" href="#fn:984">984</a></sup></p>
+<p>Something<sup id="fnref:985"><a class="footnote-ref" href="#fn:985">985</a></sup></p>
+<p>Something<sup id="fnref:986"><a class="footnote-ref" href="#fn:986">986</a></sup></p>
+<p>Something<sup id="fnref:987"><a class="footnote-ref" href="#fn:987">987</a></sup></p>
+<p>Something<sup id="fnref:988"><a class="footnote-ref" href="#fn:988">988</a></sup></p>
+<p>Something<sup id="fnref:989"><a class="footnote-ref" href="#fn:989">989</a></sup></p>
+<p>Something<sup id="fnref:990"><a class="footnote-ref" href="#fn:990">990</a></sup></p>
+<p>Something<sup id="fnref:991"><a class="footnote-ref" href="#fn:991">991</a></sup></p>
+<p>Something<sup id="fnref:992"><a class="footnote-ref" href="#fn:992">992</a></sup></p>
+<p>Something<sup id="fnref:993"><a class="footnote-ref" href="#fn:993">993</a></sup></p>
+<p>Something<sup id="fnref:994"><a class="footnote-ref" href="#fn:994">994</a></sup></p>
+<p>Something<sup id="fnref:995"><a class="footnote-ref" href="#fn:995">995</a></sup></p>
+<p>Something<sup id="fnref:996"><a class="footnote-ref" href="#fn:996">996</a></sup></p>
+<p>Something<sup id="fnref:997"><a class="footnote-ref" href="#fn:997">997</a></sup></p>
+<p>Something<sup id="fnref:998"><a class="footnote-ref" href="#fn:998">998</a></sup></p>
+<p>Something<sup id="fnref:999"><a class="footnote-ref" href="#fn:999">999</a></sup></p>
+<p>Something<sup id="fnref:1000"><a class="footnote-ref" href="#fn:1000">1000</a></sup></p>
+<p>Something<sup id="fnref:1001"><a class="footnote-ref" href="#fn:1001">1001</a></sup></p>
+<p>Something<sup id="fnref:1002"><a class="footnote-ref" href="#fn:1002">1002</a></sup></p>
+<p>Something<sup id="fnref:1003"><a class="footnote-ref" href="#fn:1003">1003</a></sup></p>
+<p>Something<sup id="fnref:1004"><a class="footnote-ref" href="#fn:1004">1004</a></sup></p>
+<p>Something<sup id="fnref:1005"><a class="footnote-ref" href="#fn:1005">1005</a></sup></p>
+<p>Something<sup id="fnref:1006"><a class="footnote-ref" href="#fn:1006">1006</a></sup></p>
+<p>Something<sup id="fnref:1007"><a class="footnote-ref" href="#fn:1007">1007</a></sup></p>
+<p>Something<sup id="fnref:1008"><a class="footnote-ref" href="#fn:1008">1008</a></sup></p>
+<p>Something<sup id="fnref:1009"><a class="footnote-ref" href="#fn:1009">1009</a></sup></p>
+<p>Something<sup id="fnref:1010"><a class="footnote-ref" href="#fn:1010">1010</a></sup></p>
+<p>Something<sup id="fnref:1011"><a class="footnote-ref" href="#fn:1011">1011</a></sup></p>
+<p>Something<sup id="fnref:1012"><a class="footnote-ref" href="#fn:1012">1012</a></sup></p>
+<p>Something<sup id="fnref:1013"><a class="footnote-ref" href="#fn:1013">1013</a></sup></p>
+<p>Something<sup id="fnref:1014"><a class="footnote-ref" href="#fn:1014">1014</a></sup></p>
+<p>Something<sup id="fnref:1015"><a class="footnote-ref" href="#fn:1015">1015</a></sup></p>
+<p>Something<sup id="fnref:1016"><a class="footnote-ref" href="#fn:1016">1016</a></sup></p>
+<p>Something<sup id="fnref:1017"><a class="footnote-ref" href="#fn:1017">1017</a></sup></p>
+<p>Something<sup id="fnref:1018"><a class="footnote-ref" href="#fn:1018">1018</a></sup></p>
+<p>Something<sup id="fnref:1019"><a class="footnote-ref" href="#fn:1019">1019</a></sup></p>
+<p>Something<sup id="fnref:1020"><a class="footnote-ref" href="#fn:1020">1020</a></sup></p>
+<p>Something<sup id="fnref:1021"><a class="footnote-ref" href="#fn:1021">1021</a></sup></p>
+<p>Something<sup id="fnref:1022"><a class="footnote-ref" href="#fn:1022">1022</a></sup></p>
+<p>Something<sup id="fnref:1023"><a class="footnote-ref" href="#fn:1023">1023</a></sup></p>
+<p>Something<sup id="fnref:1024"><a class="footnote-ref" href="#fn:1024">1024</a></sup></p>
+<p>Something<sup id="fnref:1025"><a class="footnote-ref" href="#fn:1025">1025</a></sup></p>
+<p>Something<sup id="fnref:1026"><a class="footnote-ref" href="#fn:1026">1026</a></sup></p>
+<p>Something<sup id="fnref:1027"><a class="footnote-ref" href="#fn:1027">1027</a></sup></p>
+<p>Something<sup id="fnref:1028"><a class="footnote-ref" href="#fn:1028">1028</a></sup></p>
+<p>Something<sup id="fnref:1029"><a class="footnote-ref" href="#fn:1029">1029</a></sup></p>
+<p>Something<sup id="fnref:1030"><a class="footnote-ref" href="#fn:1030">1030</a></sup></p>
+<p>Something<sup id="fnref:1031"><a class="footnote-ref" href="#fn:1031">1031</a></sup></p>
+<p>Something<sup id="fnref:1032"><a class="footnote-ref" href="#fn:1032">1032</a></sup></p>
+<p>Something<sup id="fnref:1033"><a class="footnote-ref" href="#fn:1033">1033</a></sup></p>
+<p>Something<sup id="fnref:1034"><a class="footnote-ref" href="#fn:1034">1034</a></sup></p>
+<p>Something<sup id="fnref:1035"><a class="footnote-ref" href="#fn:1035">1035</a></sup></p>
+<p>Something<sup id="fnref:1036"><a class="footnote-ref" href="#fn:1036">1036</a></sup></p>
+<p>Something<sup id="fnref:1037"><a class="footnote-ref" href="#fn:1037">1037</a></sup></p>
+<p>Something<sup id="fnref:1038"><a class="footnote-ref" href="#fn:1038">1038</a></sup></p>
+<p>Something<sup id="fnref:1039"><a class="footnote-ref" href="#fn:1039">1039</a></sup></p>
+<p>Something<sup id="fnref:1040"><a class="footnote-ref" href="#fn:1040">1040</a></sup></p>
+<p>Something<sup id="fnref:1041"><a class="footnote-ref" href="#fn:1041">1041</a></sup></p>
+<p>Something<sup id="fnref:1042"><a class="footnote-ref" href="#fn:1042">1042</a></sup></p>
+<p>Something<sup id="fnref:1043"><a class="footnote-ref" href="#fn:1043">1043</a></sup></p>
+<p>Something<sup id="fnref:1044"><a class="footnote-ref" href="#fn:1044">1044</a></sup></p>
+<p>Something<sup id="fnref:1045"><a class="footnote-ref" href="#fn:1045">1045</a></sup></p>
+<p>Something<sup id="fnref:1046"><a class="footnote-ref" href="#fn:1046">1046</a></sup></p>
+<p>Something<sup id="fnref:1047"><a class="footnote-ref" href="#fn:1047">1047</a></sup></p>
+<p>Something<sup id="fnref:1048"><a class="footnote-ref" href="#fn:1048">1048</a></sup></p>
+<p>Something<sup id="fnref:1049"><a class="footnote-ref" href="#fn:1049">1049</a></sup></p>
+<p>Something<sup id="fnref:1050"><a class="footnote-ref" href="#fn:1050">1050</a></sup></p>
+<p>Something<sup id="fnref:1051"><a class="footnote-ref" href="#fn:1051">1051</a></sup></p>
+<p>Something<sup id="fnref:1052"><a class="footnote-ref" href="#fn:1052">1052</a></sup></p>
+<p>Something<sup id="fnref:1053"><a class="footnote-ref" href="#fn:1053">1053</a></sup></p>
+<p>Something<sup id="fnref:1054"><a class="footnote-ref" href="#fn:1054">1054</a></sup></p>
+<p>Something<sup id="fnref:1055"><a class="footnote-ref" href="#fn:1055">1055</a></sup></p>
+<p>Something<sup id="fnref:1056"><a class="footnote-ref" href="#fn:1056">1056</a></sup></p>
+<p>Something<sup id="fnref:1057"><a class="footnote-ref" href="#fn:1057">1057</a></sup></p>
+<p>Something<sup id="fnref:1058"><a class="footnote-ref" href="#fn:1058">1058</a></sup></p>
+<p>Something<sup id="fnref:1059"><a class="footnote-ref" href="#fn:1059">1059</a></sup></p>
+<p>Something<sup id="fnref:1060"><a class="footnote-ref" href="#fn:1060">1060</a></sup></p>
+<p>Something<sup id="fnref:1061"><a class="footnote-ref" href="#fn:1061">1061</a></sup></p>
+<p>Something<sup id="fnref:1062"><a class="footnote-ref" href="#fn:1062">1062</a></sup></p>
+<p>Something<sup id="fnref:1063"><a class="footnote-ref" href="#fn:1063">1063</a></sup></p>
+<p>Something<sup id="fnref:1064"><a class="footnote-ref" href="#fn:1064">1064</a></sup></p>
+<p>Something<sup id="fnref:1065"><a class="footnote-ref" href="#fn:1065">1065</a></sup></p>
+<p>Something<sup id="fnref:1066"><a class="footnote-ref" href="#fn:1066">1066</a></sup></p>
+<p>Something<sup id="fnref:1067"><a class="footnote-ref" href="#fn:1067">1067</a></sup></p>
+<p>Something<sup id="fnref:1068"><a class="footnote-ref" href="#fn:1068">1068</a></sup></p>
+<p>Something<sup id="fnref:1069"><a class="footnote-ref" href="#fn:1069">1069</a></sup></p>
+<p>Something<sup id="fnref:1070"><a class="footnote-ref" href="#fn:1070">1070</a></sup></p>
+<p>Something<sup id="fnref:1071"><a class="footnote-ref" href="#fn:1071">1071</a></sup></p>
+<p>Something<sup id="fnref:1072"><a class="footnote-ref" href="#fn:1072">1072</a></sup></p>
+<p>Something<sup id="fnref:1073"><a class="footnote-ref" href="#fn:1073">1073</a></sup></p>
+<p>Something<sup id="fnref:1074"><a class="footnote-ref" href="#fn:1074">1074</a></sup></p>
+<p>Something<sup id="fnref:1075"><a class="footnote-ref" href="#fn:1075">1075</a></sup></p>
+<p>Something<sup id="fnref:1076"><a class="footnote-ref" href="#fn:1076">1076</a></sup></p>
+<p>Something<sup id="fnref:1077"><a class="footnote-ref" href="#fn:1077">1077</a></sup></p>
+<p>Something<sup id="fnref:1078"><a class="footnote-ref" href="#fn:1078">1078</a></sup></p>
+<p>Something<sup id="fnref:1079"><a class="footnote-ref" href="#fn:1079">1079</a></sup></p>
+<p>Something<sup id="fnref:1080"><a class="footnote-ref" href="#fn:1080">1080</a></sup></p>
+<p>Something<sup id="fnref:1081"><a class="footnote-ref" href="#fn:1081">1081</a></sup></p>
+<p>Something<sup id="fnref:1082"><a class="footnote-ref" href="#fn:1082">1082</a></sup></p>
+<p>Something<sup id="fnref:1083"><a class="footnote-ref" href="#fn:1083">1083</a></sup></p>
+<p>Something<sup id="fnref:1084"><a class="footnote-ref" href="#fn:1084">1084</a></sup></p>
+<p>Something<sup id="fnref:1085"><a class="footnote-ref" href="#fn:1085">1085</a></sup></p>
+<p>Something<sup id="fnref:1086"><a class="footnote-ref" href="#fn:1086">1086</a></sup></p>
+<p>Something<sup id="fnref:1087"><a class="footnote-ref" href="#fn:1087">1087</a></sup></p>
+<p>Something<sup id="fnref:1088"><a class="footnote-ref" href="#fn:1088">1088</a></sup></p>
+<p>Something<sup id="fnref:1089"><a class="footnote-ref" href="#fn:1089">1089</a></sup></p>
+<p>Something<sup id="fnref:1090"><a class="footnote-ref" href="#fn:1090">1090</a></sup></p>
+<p>Something<sup id="fnref:1091"><a class="footnote-ref" href="#fn:1091">1091</a></sup></p>
+<p>Something<sup id="fnref:1092"><a class="footnote-ref" href="#fn:1092">1092</a></sup></p>
+<p>Something<sup id="fnref:1093"><a class="footnote-ref" href="#fn:1093">1093</a></sup></p>
+<p>Something<sup id="fnref:1094"><a class="footnote-ref" href="#fn:1094">1094</a></sup></p>
+<p>Something<sup id="fnref:1095"><a class="footnote-ref" href="#fn:1095">1095</a></sup></p>
+<p>Something<sup id="fnref:1096"><a class="footnote-ref" href="#fn:1096">1096</a></sup></p>
+<p>Something<sup id="fnref:1097"><a class="footnote-ref" href="#fn:1097">1097</a></sup></p>
+<p>Something<sup id="fnref:1098"><a class="footnote-ref" href="#fn:1098">1098</a></sup></p>
+<p>Something<sup id="fnref:1099"><a class="footnote-ref" href="#fn:1099">1099</a></sup></p>
+<p>Something<sup id="fnref:1100"><a class="footnote-ref" href="#fn:1100">1100</a></sup></p>
+<p>Something<sup id="fnref:1101"><a class="footnote-ref" href="#fn:1101">1101</a></sup></p>
+<p>Something<sup id="fnref:1102"><a class="footnote-ref" href="#fn:1102">1102</a></sup></p>
+<p>Something<sup id="fnref:1103"><a class="footnote-ref" href="#fn:1103">1103</a></sup></p>
+<p>Something<sup id="fnref:1104"><a class="footnote-ref" href="#fn:1104">1104</a></sup></p>
+<p>Something<sup id="fnref:1105"><a class="footnote-ref" href="#fn:1105">1105</a></sup></p>
+<p>Something<sup id="fnref:1106"><a class="footnote-ref" href="#fn:1106">1106</a></sup></p>
+<p>Something<sup id="fnref:1107"><a class="footnote-ref" href="#fn:1107">1107</a></sup></p>
+<p>Something<sup id="fnref:1108"><a class="footnote-ref" href="#fn:1108">1108</a></sup></p>
+<p>Something<sup id="fnref:1109"><a class="footnote-ref" href="#fn:1109">1109</a></sup></p>
+<p>Something<sup id="fnref:1110"><a class="footnote-ref" href="#fn:1110">1110</a></sup></p>
+<p>Something<sup id="fnref:1111"><a class="footnote-ref" href="#fn:1111">1111</a></sup></p>
+<p>Something<sup id="fnref:1112"><a class="footnote-ref" href="#fn:1112">1112</a></sup></p>
+<p>Something<sup id="fnref:1113"><a class="footnote-ref" href="#fn:1113">1113</a></sup></p>
+<p>Something<sup id="fnref:1114"><a class="footnote-ref" href="#fn:1114">1114</a></sup></p>
+<p>Something<sup id="fnref:1115"><a class="footnote-ref" href="#fn:1115">1115</a></sup></p>
+<p>Something<sup id="fnref:1116"><a class="footnote-ref" href="#fn:1116">1116</a></sup></p>
+<p>Something<sup id="fnref:1117"><a class="footnote-ref" href="#fn:1117">1117</a></sup></p>
+<p>Something<sup id="fnref:1118"><a class="footnote-ref" href="#fn:1118">1118</a></sup></p>
+<p>Something<sup id="fnref:1119"><a class="footnote-ref" href="#fn:1119">1119</a></sup></p>
+<p>Something<sup id="fnref:1120"><a class="footnote-ref" href="#fn:1120">1120</a></sup></p>
+<p>Something<sup id="fnref:1121"><a class="footnote-ref" href="#fn:1121">1121</a></sup></p>
+<p>Something<sup id="fnref:1122"><a class="footnote-ref" href="#fn:1122">1122</a></sup></p>
+<p>Something<sup id="fnref:1123"><a class="footnote-ref" href="#fn:1123">1123</a></sup></p>
+<p>Something<sup id="fnref:1124"><a class="footnote-ref" href="#fn:1124">1124</a></sup></p>
+<p>Something<sup id="fnref:1125"><a class="footnote-ref" href="#fn:1125">1125</a></sup></p>
+<p>Something<sup id="fnref:1126"><a class="footnote-ref" href="#fn:1126">1126</a></sup></p>
+<p>Something<sup id="fnref:1127"><a class="footnote-ref" href="#fn:1127">1127</a></sup></p>
+<p>Something<sup id="fnref:1128"><a class="footnote-ref" href="#fn:1128">1128</a></sup></p>
+<p>Something<sup id="fnref:1129"><a class="footnote-ref" href="#fn:1129">1129</a></sup></p>
+<p>Something<sup id="fnref:1130"><a class="footnote-ref" href="#fn:1130">1130</a></sup></p>
+<p>Something<sup id="fnref:1131"><a class="footnote-ref" href="#fn:1131">1131</a></sup></p>
+<p>Something<sup id="fnref:1132"><a class="footnote-ref" href="#fn:1132">1132</a></sup></p>
+<p>Something<sup id="fnref:1133"><a class="footnote-ref" href="#fn:1133">1133</a></sup></p>
+<p>Something<sup id="fnref:1134"><a class="footnote-ref" href="#fn:1134">1134</a></sup></p>
+<p>Something<sup id="fnref:1135"><a class="footnote-ref" href="#fn:1135">1135</a></sup></p>
+<p>Something<sup id="fnref:1136"><a class="footnote-ref" href="#fn:1136">1136</a></sup></p>
+<p>Something<sup id="fnref:1137"><a class="footnote-ref" href="#fn:1137">1137</a></sup></p>
+<p>Something<sup id="fnref:1138"><a class="footnote-ref" href="#fn:1138">1138</a></sup></p>
+<p>Something<sup id="fnref:1139"><a class="footnote-ref" href="#fn:1139">1139</a></sup></p>
+<p>Something<sup id="fnref:1140"><a class="footnote-ref" href="#fn:1140">1140</a></sup></p>
+<p>Something<sup id="fnref:1141"><a class="footnote-ref" href="#fn:1141">1141</a></sup></p>
+<p>Something<sup id="fnref:1142"><a class="footnote-ref" href="#fn:1142">1142</a></sup></p>
+<p>Something<sup id="fnref:1143"><a class="footnote-ref" href="#fn:1143">1143</a></sup></p>
+<p>Something<sup id="fnref:1144"><a class="footnote-ref" href="#fn:1144">1144</a></sup></p>
+<p>Something<sup id="fnref:1145"><a class="footnote-ref" href="#fn:1145">1145</a></sup></p>
+<p>Something<sup id="fnref:1146"><a class="footnote-ref" href="#fn:1146">1146</a></sup></p>
+<p>Something<sup id="fnref:1147"><a class="footnote-ref" href="#fn:1147">1147</a></sup></p>
+<p>Something<sup id="fnref:1148"><a class="footnote-ref" href="#fn:1148">1148</a></sup></p>
+<p>Something<sup id="fnref:1149"><a class="footnote-ref" href="#fn:1149">1149</a></sup></p>
+<p>Something<sup id="fnref:1150"><a class="footnote-ref" href="#fn:1150">1150</a></sup></p>
+<p>Something<sup id="fnref:1151"><a class="footnote-ref" href="#fn:1151">1151</a></sup></p>
+<p>Something<sup id="fnref:1152"><a class="footnote-ref" href="#fn:1152">1152</a></sup></p>
+<p>Something<sup id="fnref:1153"><a class="footnote-ref" href="#fn:1153">1153</a></sup></p>
+<p>Something<sup id="fnref:1154"><a class="footnote-ref" href="#fn:1154">1154</a></sup></p>
+<p>Something<sup id="fnref:1155"><a class="footnote-ref" href="#fn:1155">1155</a></sup></p>
+<p>Something<sup id="fnref:1156"><a class="footnote-ref" href="#fn:1156">1156</a></sup></p>
+<p>Something<sup id="fnref:1157"><a class="footnote-ref" href="#fn:1157">1157</a></sup></p>
+<p>Something<sup id="fnref:1158"><a class="footnote-ref" href="#fn:1158">1158</a></sup></p>
+<p>Something<sup id="fnref:1159"><a class="footnote-ref" href="#fn:1159">1159</a></sup></p>
+<p>Something<sup id="fnref:1160"><a class="footnote-ref" href="#fn:1160">1160</a></sup></p>
+<p>Something<sup id="fnref:1161"><a class="footnote-ref" href="#fn:1161">1161</a></sup></p>
+<p>Something<sup id="fnref:1162"><a class="footnote-ref" href="#fn:1162">1162</a></sup></p>
+<p>Something<sup id="fnref:1163"><a class="footnote-ref" href="#fn:1163">1163</a></sup></p>
+<p>Something<sup id="fnref:1164"><a class="footnote-ref" href="#fn:1164">1164</a></sup></p>
+<p>Something<sup id="fnref:1165"><a class="footnote-ref" href="#fn:1165">1165</a></sup></p>
+<p>Something<sup id="fnref:1166"><a class="footnote-ref" href="#fn:1166">1166</a></sup></p>
+<p>Something<sup id="fnref:1167"><a class="footnote-ref" href="#fn:1167">1167</a></sup></p>
+<p>Something<sup id="fnref:1168"><a class="footnote-ref" href="#fn:1168">1168</a></sup></p>
+<p>Something<sup id="fnref:1169"><a class="footnote-ref" href="#fn:1169">1169</a></sup></p>
+<p>Something<sup id="fnref:1170"><a class="footnote-ref" href="#fn:1170">1170</a></sup></p>
+<p>Something<sup id="fnref:1171"><a class="footnote-ref" href="#fn:1171">1171</a></sup></p>
+<p>Something<sup id="fnref:1172"><a class="footnote-ref" href="#fn:1172">1172</a></sup></p>
+<p>Something<sup id="fnref:1173"><a class="footnote-ref" href="#fn:1173">1173</a></sup></p>
+<p>Something<sup id="fnref:1174"><a class="footnote-ref" href="#fn:1174">1174</a></sup></p>
+<p>Something<sup id="fnref:1175"><a class="footnote-ref" href="#fn:1175">1175</a></sup></p>
+<p>Something<sup id="fnref:1176"><a class="footnote-ref" href="#fn:1176">1176</a></sup></p>
+<p>Something<sup id="fnref:1177"><a class="footnote-ref" href="#fn:1177">1177</a></sup></p>
+<p>Something<sup id="fnref:1178"><a class="footnote-ref" href="#fn:1178">1178</a></sup></p>
+<p>Something<sup id="fnref:1179"><a class="footnote-ref" href="#fn:1179">1179</a></sup></p>
+<p>Something<sup id="fnref:1180"><a class="footnote-ref" href="#fn:1180">1180</a></sup></p>
+<p>Something<sup id="fnref:1181"><a class="footnote-ref" href="#fn:1181">1181</a></sup></p>
+<p>Something<sup id="fnref:1182"><a class="footnote-ref" href="#fn:1182">1182</a></sup></p>
+<p>Something<sup id="fnref:1183"><a class="footnote-ref" href="#fn:1183">1183</a></sup></p>
+<p>Something<sup id="fnref:1184"><a class="footnote-ref" href="#fn:1184">1184</a></sup></p>
+<p>Something<sup id="fnref:1185"><a class="footnote-ref" href="#fn:1185">1185</a></sup></p>
+<p>Something<sup id="fnref:1186"><a class="footnote-ref" href="#fn:1186">1186</a></sup></p>
+<p>Something<sup id="fnref:1187"><a class="footnote-ref" href="#fn:1187">1187</a></sup></p>
+<p>Something<sup id="fnref:1188"><a class="footnote-ref" href="#fn:1188">1188</a></sup></p>
+<p>Something<sup id="fnref:1189"><a class="footnote-ref" href="#fn:1189">1189</a></sup></p>
+<p>Something<sup id="fnref:1190"><a class="footnote-ref" href="#fn:1190">1190</a></sup></p>
+<p>Something<sup id="fnref:1191"><a class="footnote-ref" href="#fn:1191">1191</a></sup></p>
+<p>Something<sup id="fnref:1192"><a class="footnote-ref" href="#fn:1192">1192</a></sup></p>
+<p>Something<sup id="fnref:1193"><a class="footnote-ref" href="#fn:1193">1193</a></sup></p>
+<p>Something<sup id="fnref:1194"><a class="footnote-ref" href="#fn:1194">1194</a></sup></p>
+<p>Something<sup id="fnref:1195"><a class="footnote-ref" href="#fn:1195">1195</a></sup></p>
+<p>Something<sup id="fnref:1196"><a class="footnote-ref" href="#fn:1196">1196</a></sup></p>
+<p>Something<sup id="fnref:1197"><a class="footnote-ref" href="#fn:1197">1197</a></sup></p>
+<p>Something<sup id="fnref:1198"><a class="footnote-ref" href="#fn:1198">1198</a></sup></p>
+<p>Something<sup id="fnref:1199"><a class="footnote-ref" href="#fn:1199">1199</a></sup></p>
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:1">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
+</li>
+<li id="fn:2">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:2" title="Jump back to footnote 2 in the text">&#8617;</a></p>
+</li>
+<li id="fn:3">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:3" title="Jump back to footnote 3 in the text">&#8617;</a></p>
+</li>
+<li id="fn:4">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:4" title="Jump back to footnote 4 in the text">&#8617;</a></p>
+</li>
+<li id="fn:5">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:5" title="Jump back to footnote 5 in the text">&#8617;</a></p>
+</li>
+<li id="fn:6">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:6" title="Jump back to footnote 6 in the text">&#8617;</a></p>
+</li>
+<li id="fn:7">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:7" title="Jump back to footnote 7 in the text">&#8617;</a></p>
+</li>
+<li id="fn:8">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:8" title="Jump back to footnote 8 in the text">&#8617;</a></p>
+</li>
+<li id="fn:9">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:9" title="Jump back to footnote 9 in the text">&#8617;</a></p>
+</li>
+<li id="fn:10">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:10" title="Jump back to footnote 10 in the text">&#8617;</a></p>
+</li>
+<li id="fn:11">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:11" title="Jump back to footnote 11 in the text">&#8617;</a></p>
+</li>
+<li id="fn:12">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:12" title="Jump back to footnote 12 in the text">&#8617;</a></p>
+</li>
+<li id="fn:13">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:13" title="Jump back to footnote 13 in the text">&#8617;</a></p>
+</li>
+<li id="fn:14">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:14" title="Jump back to footnote 14 in the text">&#8617;</a></p>
+</li>
+<li id="fn:15">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:15" title="Jump back to footnote 15 in the text">&#8617;</a></p>
+</li>
+<li id="fn:16">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:16" title="Jump back to footnote 16 in the text">&#8617;</a></p>
+</li>
+<li id="fn:17">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:17" title="Jump back to footnote 17 in the text">&#8617;</a></p>
+</li>
+<li id="fn:18">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:18" title="Jump back to footnote 18 in the text">&#8617;</a></p>
+</li>
+<li id="fn:19">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:19" title="Jump back to footnote 19 in the text">&#8617;</a></p>
+</li>
+<li id="fn:20">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:20" title="Jump back to footnote 20 in the text">&#8617;</a></p>
+</li>
+<li id="fn:21">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:21" title="Jump back to footnote 21 in the text">&#8617;</a></p>
+</li>
+<li id="fn:22">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:22" title="Jump back to footnote 22 in the text">&#8617;</a></p>
+</li>
+<li id="fn:23">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:23" title="Jump back to footnote 23 in the text">&#8617;</a></p>
+</li>
+<li id="fn:24">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:24" title="Jump back to footnote 24 in the text">&#8617;</a></p>
+</li>
+<li id="fn:25">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:25" title="Jump back to footnote 25 in the text">&#8617;</a></p>
+</li>
+<li id="fn:26">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:26" title="Jump back to footnote 26 in the text">&#8617;</a></p>
+</li>
+<li id="fn:27">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:27" title="Jump back to footnote 27 in the text">&#8617;</a></p>
+</li>
+<li id="fn:28">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:28" title="Jump back to footnote 28 in the text">&#8617;</a></p>
+</li>
+<li id="fn:29">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:29" title="Jump back to footnote 29 in the text">&#8617;</a></p>
+</li>
+<li id="fn:30">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:30" title="Jump back to footnote 30 in the text">&#8617;</a></p>
+</li>
+<li id="fn:31">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:31" title="Jump back to footnote 31 in the text">&#8617;</a></p>
+</li>
+<li id="fn:32">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:32" title="Jump back to footnote 32 in the text">&#8617;</a></p>
+</li>
+<li id="fn:33">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:33" title="Jump back to footnote 33 in the text">&#8617;</a></p>
+</li>
+<li id="fn:34">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:34" title="Jump back to footnote 34 in the text">&#8617;</a></p>
+</li>
+<li id="fn:35">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:35" title="Jump back to footnote 35 in the text">&#8617;</a></p>
+</li>
+<li id="fn:36">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:36" title="Jump back to footnote 36 in the text">&#8617;</a></p>
+</li>
+<li id="fn:37">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:37" title="Jump back to footnote 37 in the text">&#8617;</a></p>
+</li>
+<li id="fn:38">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:38" title="Jump back to footnote 38 in the text">&#8617;</a></p>
+</li>
+<li id="fn:39">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:39" title="Jump back to footnote 39 in the text">&#8617;</a></p>
+</li>
+<li id="fn:40">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:40" title="Jump back to footnote 40 in the text">&#8617;</a></p>
+</li>
+<li id="fn:41">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:41" title="Jump back to footnote 41 in the text">&#8617;</a></p>
+</li>
+<li id="fn:42">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:42" title="Jump back to footnote 42 in the text">&#8617;</a></p>
+</li>
+<li id="fn:43">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:43" title="Jump back to footnote 43 in the text">&#8617;</a></p>
+</li>
+<li id="fn:44">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:44" title="Jump back to footnote 44 in the text">&#8617;</a></p>
+</li>
+<li id="fn:45">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:45" title="Jump back to footnote 45 in the text">&#8617;</a></p>
+</li>
+<li id="fn:46">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:46" title="Jump back to footnote 46 in the text">&#8617;</a></p>
+</li>
+<li id="fn:47">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:47" title="Jump back to footnote 47 in the text">&#8617;</a></p>
+</li>
+<li id="fn:48">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:48" title="Jump back to footnote 48 in the text">&#8617;</a></p>
+</li>
+<li id="fn:49">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:49" title="Jump back to footnote 49 in the text">&#8617;</a></p>
+</li>
+<li id="fn:50">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:50" title="Jump back to footnote 50 in the text">&#8617;</a></p>
+</li>
+<li id="fn:51">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:51" title="Jump back to footnote 51 in the text">&#8617;</a></p>
+</li>
+<li id="fn:52">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:52" title="Jump back to footnote 52 in the text">&#8617;</a></p>
+</li>
+<li id="fn:53">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:53" title="Jump back to footnote 53 in the text">&#8617;</a></p>
+</li>
+<li id="fn:54">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:54" title="Jump back to footnote 54 in the text">&#8617;</a></p>
+</li>
+<li id="fn:55">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:55" title="Jump back to footnote 55 in the text">&#8617;</a></p>
+</li>
+<li id="fn:56">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:56" title="Jump back to footnote 56 in the text">&#8617;</a></p>
+</li>
+<li id="fn:57">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:57" title="Jump back to footnote 57 in the text">&#8617;</a></p>
+</li>
+<li id="fn:58">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:58" title="Jump back to footnote 58 in the text">&#8617;</a></p>
+</li>
+<li id="fn:59">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:59" title="Jump back to footnote 59 in the text">&#8617;</a></p>
+</li>
+<li id="fn:60">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:60" title="Jump back to footnote 60 in the text">&#8617;</a></p>
+</li>
+<li id="fn:61">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:61" title="Jump back to footnote 61 in the text">&#8617;</a></p>
+</li>
+<li id="fn:62">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:62" title="Jump back to footnote 62 in the text">&#8617;</a></p>
+</li>
+<li id="fn:63">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:63" title="Jump back to footnote 63 in the text">&#8617;</a></p>
+</li>
+<li id="fn:64">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:64" title="Jump back to footnote 64 in the text">&#8617;</a></p>
+</li>
+<li id="fn:65">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:65" title="Jump back to footnote 65 in the text">&#8617;</a></p>
+</li>
+<li id="fn:66">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:66" title="Jump back to footnote 66 in the text">&#8617;</a></p>
+</li>
+<li id="fn:67">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:67" title="Jump back to footnote 67 in the text">&#8617;</a></p>
+</li>
+<li id="fn:68">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:68" title="Jump back to footnote 68 in the text">&#8617;</a></p>
+</li>
+<li id="fn:69">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:69" title="Jump back to footnote 69 in the text">&#8617;</a></p>
+</li>
+<li id="fn:70">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:70" title="Jump back to footnote 70 in the text">&#8617;</a></p>
+</li>
+<li id="fn:71">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:71" title="Jump back to footnote 71 in the text">&#8617;</a></p>
+</li>
+<li id="fn:72">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:72" title="Jump back to footnote 72 in the text">&#8617;</a></p>
+</li>
+<li id="fn:73">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:73" title="Jump back to footnote 73 in the text">&#8617;</a></p>
+</li>
+<li id="fn:74">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:74" title="Jump back to footnote 74 in the text">&#8617;</a></p>
+</li>
+<li id="fn:75">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:75" title="Jump back to footnote 75 in the text">&#8617;</a></p>
+</li>
+<li id="fn:76">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:76" title="Jump back to footnote 76 in the text">&#8617;</a></p>
+</li>
+<li id="fn:77">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:77" title="Jump back to footnote 77 in the text">&#8617;</a></p>
+</li>
+<li id="fn:78">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:78" title="Jump back to footnote 78 in the text">&#8617;</a></p>
+</li>
+<li id="fn:79">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:79" title="Jump back to footnote 79 in the text">&#8617;</a></p>
+</li>
+<li id="fn:80">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:80" title="Jump back to footnote 80 in the text">&#8617;</a></p>
+</li>
+<li id="fn:81">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:81" title="Jump back to footnote 81 in the text">&#8617;</a></p>
+</li>
+<li id="fn:82">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:82" title="Jump back to footnote 82 in the text">&#8617;</a></p>
+</li>
+<li id="fn:83">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:83" title="Jump back to footnote 83 in the text">&#8617;</a></p>
+</li>
+<li id="fn:84">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:84" title="Jump back to footnote 84 in the text">&#8617;</a></p>
+</li>
+<li id="fn:85">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:85" title="Jump back to footnote 85 in the text">&#8617;</a></p>
+</li>
+<li id="fn:86">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:86" title="Jump back to footnote 86 in the text">&#8617;</a></p>
+</li>
+<li id="fn:87">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:87" title="Jump back to footnote 87 in the text">&#8617;</a></p>
+</li>
+<li id="fn:88">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:88" title="Jump back to footnote 88 in the text">&#8617;</a></p>
+</li>
+<li id="fn:89">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:89" title="Jump back to footnote 89 in the text">&#8617;</a></p>
+</li>
+<li id="fn:90">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:90" title="Jump back to footnote 90 in the text">&#8617;</a></p>
+</li>
+<li id="fn:91">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:91" title="Jump back to footnote 91 in the text">&#8617;</a></p>
+</li>
+<li id="fn:92">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:92" title="Jump back to footnote 92 in the text">&#8617;</a></p>
+</li>
+<li id="fn:93">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:93" title="Jump back to footnote 93 in the text">&#8617;</a></p>
+</li>
+<li id="fn:94">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:94" title="Jump back to footnote 94 in the text">&#8617;</a></p>
+</li>
+<li id="fn:95">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:95" title="Jump back to footnote 95 in the text">&#8617;</a></p>
+</li>
+<li id="fn:96">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:96" title="Jump back to footnote 96 in the text">&#8617;</a></p>
+</li>
+<li id="fn:97">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:97" title="Jump back to footnote 97 in the text">&#8617;</a></p>
+</li>
+<li id="fn:98">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:98" title="Jump back to footnote 98 in the text">&#8617;</a></p>
+</li>
+<li id="fn:99">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:99" title="Jump back to footnote 99 in the text">&#8617;</a></p>
+</li>
+<li id="fn:100">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:100" title="Jump back to footnote 100 in the text">&#8617;</a></p>
+</li>
+<li id="fn:101">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:101" title="Jump back to footnote 101 in the text">&#8617;</a></p>
+</li>
+<li id="fn:102">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:102" title="Jump back to footnote 102 in the text">&#8617;</a></p>
+</li>
+<li id="fn:103">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:103" title="Jump back to footnote 103 in the text">&#8617;</a></p>
+</li>
+<li id="fn:104">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:104" title="Jump back to footnote 104 in the text">&#8617;</a></p>
+</li>
+<li id="fn:105">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:105" title="Jump back to footnote 105 in the text">&#8617;</a></p>
+</li>
+<li id="fn:106">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:106" title="Jump back to footnote 106 in the text">&#8617;</a></p>
+</li>
+<li id="fn:107">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:107" title="Jump back to footnote 107 in the text">&#8617;</a></p>
+</li>
+<li id="fn:108">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:108" title="Jump back to footnote 108 in the text">&#8617;</a></p>
+</li>
+<li id="fn:109">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:109" title="Jump back to footnote 109 in the text">&#8617;</a></p>
+</li>
+<li id="fn:110">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:110" title="Jump back to footnote 110 in the text">&#8617;</a></p>
+</li>
+<li id="fn:111">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:111" title="Jump back to footnote 111 in the text">&#8617;</a></p>
+</li>
+<li id="fn:112">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:112" title="Jump back to footnote 112 in the text">&#8617;</a></p>
+</li>
+<li id="fn:113">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:113" title="Jump back to footnote 113 in the text">&#8617;</a></p>
+</li>
+<li id="fn:114">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:114" title="Jump back to footnote 114 in the text">&#8617;</a></p>
+</li>
+<li id="fn:115">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:115" title="Jump back to footnote 115 in the text">&#8617;</a></p>
+</li>
+<li id="fn:116">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:116" title="Jump back to footnote 116 in the text">&#8617;</a></p>
+</li>
+<li id="fn:117">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:117" title="Jump back to footnote 117 in the text">&#8617;</a></p>
+</li>
+<li id="fn:118">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:118" title="Jump back to footnote 118 in the text">&#8617;</a></p>
+</li>
+<li id="fn:119">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:119" title="Jump back to footnote 119 in the text">&#8617;</a></p>
+</li>
+<li id="fn:120">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:120" title="Jump back to footnote 120 in the text">&#8617;</a></p>
+</li>
+<li id="fn:121">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:121" title="Jump back to footnote 121 in the text">&#8617;</a></p>
+</li>
+<li id="fn:122">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:122" title="Jump back to footnote 122 in the text">&#8617;</a></p>
+</li>
+<li id="fn:123">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:123" title="Jump back to footnote 123 in the text">&#8617;</a></p>
+</li>
+<li id="fn:124">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:124" title="Jump back to footnote 124 in the text">&#8617;</a></p>
+</li>
+<li id="fn:125">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:125" title="Jump back to footnote 125 in the text">&#8617;</a></p>
+</li>
+<li id="fn:126">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:126" title="Jump back to footnote 126 in the text">&#8617;</a></p>
+</li>
+<li id="fn:127">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:127" title="Jump back to footnote 127 in the text">&#8617;</a></p>
+</li>
+<li id="fn:128">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:128" title="Jump back to footnote 128 in the text">&#8617;</a></p>
+</li>
+<li id="fn:129">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:129" title="Jump back to footnote 129 in the text">&#8617;</a></p>
+</li>
+<li id="fn:130">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:130" title="Jump back to footnote 130 in the text">&#8617;</a></p>
+</li>
+<li id="fn:131">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:131" title="Jump back to footnote 131 in the text">&#8617;</a></p>
+</li>
+<li id="fn:132">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:132" title="Jump back to footnote 132 in the text">&#8617;</a></p>
+</li>
+<li id="fn:133">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:133" title="Jump back to footnote 133 in the text">&#8617;</a></p>
+</li>
+<li id="fn:134">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:134" title="Jump back to footnote 134 in the text">&#8617;</a></p>
+</li>
+<li id="fn:135">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:135" title="Jump back to footnote 135 in the text">&#8617;</a></p>
+</li>
+<li id="fn:136">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:136" title="Jump back to footnote 136 in the text">&#8617;</a></p>
+</li>
+<li id="fn:137">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:137" title="Jump back to footnote 137 in the text">&#8617;</a></p>
+</li>
+<li id="fn:138">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:138" title="Jump back to footnote 138 in the text">&#8617;</a></p>
+</li>
+<li id="fn:139">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:139" title="Jump back to footnote 139 in the text">&#8617;</a></p>
+</li>
+<li id="fn:140">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:140" title="Jump back to footnote 140 in the text">&#8617;</a></p>
+</li>
+<li id="fn:141">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:141" title="Jump back to footnote 141 in the text">&#8617;</a></p>
+</li>
+<li id="fn:142">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:142" title="Jump back to footnote 142 in the text">&#8617;</a></p>
+</li>
+<li id="fn:143">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:143" title="Jump back to footnote 143 in the text">&#8617;</a></p>
+</li>
+<li id="fn:144">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:144" title="Jump back to footnote 144 in the text">&#8617;</a></p>
+</li>
+<li id="fn:145">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:145" title="Jump back to footnote 145 in the text">&#8617;</a></p>
+</li>
+<li id="fn:146">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:146" title="Jump back to footnote 146 in the text">&#8617;</a></p>
+</li>
+<li id="fn:147">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:147" title="Jump back to footnote 147 in the text">&#8617;</a></p>
+</li>
+<li id="fn:148">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:148" title="Jump back to footnote 148 in the text">&#8617;</a></p>
+</li>
+<li id="fn:149">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:149" title="Jump back to footnote 149 in the text">&#8617;</a></p>
+</li>
+<li id="fn:150">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:150" title="Jump back to footnote 150 in the text">&#8617;</a></p>
+</li>
+<li id="fn:151">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:151" title="Jump back to footnote 151 in the text">&#8617;</a></p>
+</li>
+<li id="fn:152">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:152" title="Jump back to footnote 152 in the text">&#8617;</a></p>
+</li>
+<li id="fn:153">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:153" title="Jump back to footnote 153 in the text">&#8617;</a></p>
+</li>
+<li id="fn:154">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:154" title="Jump back to footnote 154 in the text">&#8617;</a></p>
+</li>
+<li id="fn:155">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:155" title="Jump back to footnote 155 in the text">&#8617;</a></p>
+</li>
+<li id="fn:156">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:156" title="Jump back to footnote 156 in the text">&#8617;</a></p>
+</li>
+<li id="fn:157">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:157" title="Jump back to footnote 157 in the text">&#8617;</a></p>
+</li>
+<li id="fn:158">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:158" title="Jump back to footnote 158 in the text">&#8617;</a></p>
+</li>
+<li id="fn:159">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:159" title="Jump back to footnote 159 in the text">&#8617;</a></p>
+</li>
+<li id="fn:160">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:160" title="Jump back to footnote 160 in the text">&#8617;</a></p>
+</li>
+<li id="fn:161">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:161" title="Jump back to footnote 161 in the text">&#8617;</a></p>
+</li>
+<li id="fn:162">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:162" title="Jump back to footnote 162 in the text">&#8617;</a></p>
+</li>
+<li id="fn:163">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:163" title="Jump back to footnote 163 in the text">&#8617;</a></p>
+</li>
+<li id="fn:164">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:164" title="Jump back to footnote 164 in the text">&#8617;</a></p>
+</li>
+<li id="fn:165">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:165" title="Jump back to footnote 165 in the text">&#8617;</a></p>
+</li>
+<li id="fn:166">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:166" title="Jump back to footnote 166 in the text">&#8617;</a></p>
+</li>
+<li id="fn:167">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:167" title="Jump back to footnote 167 in the text">&#8617;</a></p>
+</li>
+<li id="fn:168">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:168" title="Jump back to footnote 168 in the text">&#8617;</a></p>
+</li>
+<li id="fn:169">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:169" title="Jump back to footnote 169 in the text">&#8617;</a></p>
+</li>
+<li id="fn:170">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:170" title="Jump back to footnote 170 in the text">&#8617;</a></p>
+</li>
+<li id="fn:171">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:171" title="Jump back to footnote 171 in the text">&#8617;</a></p>
+</li>
+<li id="fn:172">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:172" title="Jump back to footnote 172 in the text">&#8617;</a></p>
+</li>
+<li id="fn:173">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:173" title="Jump back to footnote 173 in the text">&#8617;</a></p>
+</li>
+<li id="fn:174">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:174" title="Jump back to footnote 174 in the text">&#8617;</a></p>
+</li>
+<li id="fn:175">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:175" title="Jump back to footnote 175 in the text">&#8617;</a></p>
+</li>
+<li id="fn:176">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:176" title="Jump back to footnote 176 in the text">&#8617;</a></p>
+</li>
+<li id="fn:177">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:177" title="Jump back to footnote 177 in the text">&#8617;</a></p>
+</li>
+<li id="fn:178">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:178" title="Jump back to footnote 178 in the text">&#8617;</a></p>
+</li>
+<li id="fn:179">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:179" title="Jump back to footnote 179 in the text">&#8617;</a></p>
+</li>
+<li id="fn:180">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:180" title="Jump back to footnote 180 in the text">&#8617;</a></p>
+</li>
+<li id="fn:181">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:181" title="Jump back to footnote 181 in the text">&#8617;</a></p>
+</li>
+<li id="fn:182">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:182" title="Jump back to footnote 182 in the text">&#8617;</a></p>
+</li>
+<li id="fn:183">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:183" title="Jump back to footnote 183 in the text">&#8617;</a></p>
+</li>
+<li id="fn:184">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:184" title="Jump back to footnote 184 in the text">&#8617;</a></p>
+</li>
+<li id="fn:185">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:185" title="Jump back to footnote 185 in the text">&#8617;</a></p>
+</li>
+<li id="fn:186">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:186" title="Jump back to footnote 186 in the text">&#8617;</a></p>
+</li>
+<li id="fn:187">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:187" title="Jump back to footnote 187 in the text">&#8617;</a></p>
+</li>
+<li id="fn:188">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:188" title="Jump back to footnote 188 in the text">&#8617;</a></p>
+</li>
+<li id="fn:189">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:189" title="Jump back to footnote 189 in the text">&#8617;</a></p>
+</li>
+<li id="fn:190">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:190" title="Jump back to footnote 190 in the text">&#8617;</a></p>
+</li>
+<li id="fn:191">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:191" title="Jump back to footnote 191 in the text">&#8617;</a></p>
+</li>
+<li id="fn:192">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:192" title="Jump back to footnote 192 in the text">&#8617;</a></p>
+</li>
+<li id="fn:193">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:193" title="Jump back to footnote 193 in the text">&#8617;</a></p>
+</li>
+<li id="fn:194">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:194" title="Jump back to footnote 194 in the text">&#8617;</a></p>
+</li>
+<li id="fn:195">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:195" title="Jump back to footnote 195 in the text">&#8617;</a></p>
+</li>
+<li id="fn:196">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:196" title="Jump back to footnote 196 in the text">&#8617;</a></p>
+</li>
+<li id="fn:197">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:197" title="Jump back to footnote 197 in the text">&#8617;</a></p>
+</li>
+<li id="fn:198">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:198" title="Jump back to footnote 198 in the text">&#8617;</a></p>
+</li>
+<li id="fn:199">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:199" title="Jump back to footnote 199 in the text">&#8617;</a></p>
+</li>
+<li id="fn:200">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:200" title="Jump back to footnote 200 in the text">&#8617;</a></p>
+</li>
+<li id="fn:201">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:201" title="Jump back to footnote 201 in the text">&#8617;</a></p>
+</li>
+<li id="fn:202">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:202" title="Jump back to footnote 202 in the text">&#8617;</a></p>
+</li>
+<li id="fn:203">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:203" title="Jump back to footnote 203 in the text">&#8617;</a></p>
+</li>
+<li id="fn:204">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:204" title="Jump back to footnote 204 in the text">&#8617;</a></p>
+</li>
+<li id="fn:205">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:205" title="Jump back to footnote 205 in the text">&#8617;</a></p>
+</li>
+<li id="fn:206">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:206" title="Jump back to footnote 206 in the text">&#8617;</a></p>
+</li>
+<li id="fn:207">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:207" title="Jump back to footnote 207 in the text">&#8617;</a></p>
+</li>
+<li id="fn:208">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:208" title="Jump back to footnote 208 in the text">&#8617;</a></p>
+</li>
+<li id="fn:209">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:209" title="Jump back to footnote 209 in the text">&#8617;</a></p>
+</li>
+<li id="fn:210">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:210" title="Jump back to footnote 210 in the text">&#8617;</a></p>
+</li>
+<li id="fn:211">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:211" title="Jump back to footnote 211 in the text">&#8617;</a></p>
+</li>
+<li id="fn:212">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:212" title="Jump back to footnote 212 in the text">&#8617;</a></p>
+</li>
+<li id="fn:213">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:213" title="Jump back to footnote 213 in the text">&#8617;</a></p>
+</li>
+<li id="fn:214">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:214" title="Jump back to footnote 214 in the text">&#8617;</a></p>
+</li>
+<li id="fn:215">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:215" title="Jump back to footnote 215 in the text">&#8617;</a></p>
+</li>
+<li id="fn:216">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:216" title="Jump back to footnote 216 in the text">&#8617;</a></p>
+</li>
+<li id="fn:217">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:217" title="Jump back to footnote 217 in the text">&#8617;</a></p>
+</li>
+<li id="fn:218">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:218" title="Jump back to footnote 218 in the text">&#8617;</a></p>
+</li>
+<li id="fn:219">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:219" title="Jump back to footnote 219 in the text">&#8617;</a></p>
+</li>
+<li id="fn:220">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:220" title="Jump back to footnote 220 in the text">&#8617;</a></p>
+</li>
+<li id="fn:221">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:221" title="Jump back to footnote 221 in the text">&#8617;</a></p>
+</li>
+<li id="fn:222">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:222" title="Jump back to footnote 222 in the text">&#8617;</a></p>
+</li>
+<li id="fn:223">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:223" title="Jump back to footnote 223 in the text">&#8617;</a></p>
+</li>
+<li id="fn:224">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:224" title="Jump back to footnote 224 in the text">&#8617;</a></p>
+</li>
+<li id="fn:225">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:225" title="Jump back to footnote 225 in the text">&#8617;</a></p>
+</li>
+<li id="fn:226">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:226" title="Jump back to footnote 226 in the text">&#8617;</a></p>
+</li>
+<li id="fn:227">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:227" title="Jump back to footnote 227 in the text">&#8617;</a></p>
+</li>
+<li id="fn:228">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:228" title="Jump back to footnote 228 in the text">&#8617;</a></p>
+</li>
+<li id="fn:229">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:229" title="Jump back to footnote 229 in the text">&#8617;</a></p>
+</li>
+<li id="fn:230">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:230" title="Jump back to footnote 230 in the text">&#8617;</a></p>
+</li>
+<li id="fn:231">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:231" title="Jump back to footnote 231 in the text">&#8617;</a></p>
+</li>
+<li id="fn:232">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:232" title="Jump back to footnote 232 in the text">&#8617;</a></p>
+</li>
+<li id="fn:233">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:233" title="Jump back to footnote 233 in the text">&#8617;</a></p>
+</li>
+<li id="fn:234">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:234" title="Jump back to footnote 234 in the text">&#8617;</a></p>
+</li>
+<li id="fn:235">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:235" title="Jump back to footnote 235 in the text">&#8617;</a></p>
+</li>
+<li id="fn:236">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:236" title="Jump back to footnote 236 in the text">&#8617;</a></p>
+</li>
+<li id="fn:237">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:237" title="Jump back to footnote 237 in the text">&#8617;</a></p>
+</li>
+<li id="fn:238">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:238" title="Jump back to footnote 238 in the text">&#8617;</a></p>
+</li>
+<li id="fn:239">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:239" title="Jump back to footnote 239 in the text">&#8617;</a></p>
+</li>
+<li id="fn:240">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:240" title="Jump back to footnote 240 in the text">&#8617;</a></p>
+</li>
+<li id="fn:241">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:241" title="Jump back to footnote 241 in the text">&#8617;</a></p>
+</li>
+<li id="fn:242">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:242" title="Jump back to footnote 242 in the text">&#8617;</a></p>
+</li>
+<li id="fn:243">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:243" title="Jump back to footnote 243 in the text">&#8617;</a></p>
+</li>
+<li id="fn:244">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:244" title="Jump back to footnote 244 in the text">&#8617;</a></p>
+</li>
+<li id="fn:245">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:245" title="Jump back to footnote 245 in the text">&#8617;</a></p>
+</li>
+<li id="fn:246">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:246" title="Jump back to footnote 246 in the text">&#8617;</a></p>
+</li>
+<li id="fn:247">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:247" title="Jump back to footnote 247 in the text">&#8617;</a></p>
+</li>
+<li id="fn:248">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:248" title="Jump back to footnote 248 in the text">&#8617;</a></p>
+</li>
+<li id="fn:249">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:249" title="Jump back to footnote 249 in the text">&#8617;</a></p>
+</li>
+<li id="fn:250">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:250" title="Jump back to footnote 250 in the text">&#8617;</a></p>
+</li>
+<li id="fn:251">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:251" title="Jump back to footnote 251 in the text">&#8617;</a></p>
+</li>
+<li id="fn:252">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:252" title="Jump back to footnote 252 in the text">&#8617;</a></p>
+</li>
+<li id="fn:253">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:253" title="Jump back to footnote 253 in the text">&#8617;</a></p>
+</li>
+<li id="fn:254">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:254" title="Jump back to footnote 254 in the text">&#8617;</a></p>
+</li>
+<li id="fn:255">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:255" title="Jump back to footnote 255 in the text">&#8617;</a></p>
+</li>
+<li id="fn:256">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:256" title="Jump back to footnote 256 in the text">&#8617;</a></p>
+</li>
+<li id="fn:257">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:257" title="Jump back to footnote 257 in the text">&#8617;</a></p>
+</li>
+<li id="fn:258">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:258" title="Jump back to footnote 258 in the text">&#8617;</a></p>
+</li>
+<li id="fn:259">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:259" title="Jump back to footnote 259 in the text">&#8617;</a></p>
+</li>
+<li id="fn:260">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:260" title="Jump back to footnote 260 in the text">&#8617;</a></p>
+</li>
+<li id="fn:261">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:261" title="Jump back to footnote 261 in the text">&#8617;</a></p>
+</li>
+<li id="fn:262">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:262" title="Jump back to footnote 262 in the text">&#8617;</a></p>
+</li>
+<li id="fn:263">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:263" title="Jump back to footnote 263 in the text">&#8617;</a></p>
+</li>
+<li id="fn:264">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:264" title="Jump back to footnote 264 in the text">&#8617;</a></p>
+</li>
+<li id="fn:265">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:265" title="Jump back to footnote 265 in the text">&#8617;</a></p>
+</li>
+<li id="fn:266">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:266" title="Jump back to footnote 266 in the text">&#8617;</a></p>
+</li>
+<li id="fn:267">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:267" title="Jump back to footnote 267 in the text">&#8617;</a></p>
+</li>
+<li id="fn:268">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:268" title="Jump back to footnote 268 in the text">&#8617;</a></p>
+</li>
+<li id="fn:269">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:269" title="Jump back to footnote 269 in the text">&#8617;</a></p>
+</li>
+<li id="fn:270">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:270" title="Jump back to footnote 270 in the text">&#8617;</a></p>
+</li>
+<li id="fn:271">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:271" title="Jump back to footnote 271 in the text">&#8617;</a></p>
+</li>
+<li id="fn:272">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:272" title="Jump back to footnote 272 in the text">&#8617;</a></p>
+</li>
+<li id="fn:273">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:273" title="Jump back to footnote 273 in the text">&#8617;</a></p>
+</li>
+<li id="fn:274">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:274" title="Jump back to footnote 274 in the text">&#8617;</a></p>
+</li>
+<li id="fn:275">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:275" title="Jump back to footnote 275 in the text">&#8617;</a></p>
+</li>
+<li id="fn:276">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:276" title="Jump back to footnote 276 in the text">&#8617;</a></p>
+</li>
+<li id="fn:277">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:277" title="Jump back to footnote 277 in the text">&#8617;</a></p>
+</li>
+<li id="fn:278">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:278" title="Jump back to footnote 278 in the text">&#8617;</a></p>
+</li>
+<li id="fn:279">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:279" title="Jump back to footnote 279 in the text">&#8617;</a></p>
+</li>
+<li id="fn:280">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:280" title="Jump back to footnote 280 in the text">&#8617;</a></p>
+</li>
+<li id="fn:281">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:281" title="Jump back to footnote 281 in the text">&#8617;</a></p>
+</li>
+<li id="fn:282">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:282" title="Jump back to footnote 282 in the text">&#8617;</a></p>
+</li>
+<li id="fn:283">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:283" title="Jump back to footnote 283 in the text">&#8617;</a></p>
+</li>
+<li id="fn:284">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:284" title="Jump back to footnote 284 in the text">&#8617;</a></p>
+</li>
+<li id="fn:285">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:285" title="Jump back to footnote 285 in the text">&#8617;</a></p>
+</li>
+<li id="fn:286">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:286" title="Jump back to footnote 286 in the text">&#8617;</a></p>
+</li>
+<li id="fn:287">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:287" title="Jump back to footnote 287 in the text">&#8617;</a></p>
+</li>
+<li id="fn:288">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:288" title="Jump back to footnote 288 in the text">&#8617;</a></p>
+</li>
+<li id="fn:289">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:289" title="Jump back to footnote 289 in the text">&#8617;</a></p>
+</li>
+<li id="fn:290">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:290" title="Jump back to footnote 290 in the text">&#8617;</a></p>
+</li>
+<li id="fn:291">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:291" title="Jump back to footnote 291 in the text">&#8617;</a></p>
+</li>
+<li id="fn:292">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:292" title="Jump back to footnote 292 in the text">&#8617;</a></p>
+</li>
+<li id="fn:293">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:293" title="Jump back to footnote 293 in the text">&#8617;</a></p>
+</li>
+<li id="fn:294">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:294" title="Jump back to footnote 294 in the text">&#8617;</a></p>
+</li>
+<li id="fn:295">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:295" title="Jump back to footnote 295 in the text">&#8617;</a></p>
+</li>
+<li id="fn:296">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:296" title="Jump back to footnote 296 in the text">&#8617;</a></p>
+</li>
+<li id="fn:297">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:297" title="Jump back to footnote 297 in the text">&#8617;</a></p>
+</li>
+<li id="fn:298">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:298" title="Jump back to footnote 298 in the text">&#8617;</a></p>
+</li>
+<li id="fn:299">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:299" title="Jump back to footnote 299 in the text">&#8617;</a></p>
+</li>
+<li id="fn:300">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:300" title="Jump back to footnote 300 in the text">&#8617;</a></p>
+</li>
+<li id="fn:301">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:301" title="Jump back to footnote 301 in the text">&#8617;</a></p>
+</li>
+<li id="fn:302">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:302" title="Jump back to footnote 302 in the text">&#8617;</a></p>
+</li>
+<li id="fn:303">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:303" title="Jump back to footnote 303 in the text">&#8617;</a></p>
+</li>
+<li id="fn:304">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:304" title="Jump back to footnote 304 in the text">&#8617;</a></p>
+</li>
+<li id="fn:305">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:305" title="Jump back to footnote 305 in the text">&#8617;</a></p>
+</li>
+<li id="fn:306">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:306" title="Jump back to footnote 306 in the text">&#8617;</a></p>
+</li>
+<li id="fn:307">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:307" title="Jump back to footnote 307 in the text">&#8617;</a></p>
+</li>
+<li id="fn:308">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:308" title="Jump back to footnote 308 in the text">&#8617;</a></p>
+</li>
+<li id="fn:309">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:309" title="Jump back to footnote 309 in the text">&#8617;</a></p>
+</li>
+<li id="fn:310">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:310" title="Jump back to footnote 310 in the text">&#8617;</a></p>
+</li>
+<li id="fn:311">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:311" title="Jump back to footnote 311 in the text">&#8617;</a></p>
+</li>
+<li id="fn:312">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:312" title="Jump back to footnote 312 in the text">&#8617;</a></p>
+</li>
+<li id="fn:313">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:313" title="Jump back to footnote 313 in the text">&#8617;</a></p>
+</li>
+<li id="fn:314">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:314" title="Jump back to footnote 314 in the text">&#8617;</a></p>
+</li>
+<li id="fn:315">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:315" title="Jump back to footnote 315 in the text">&#8617;</a></p>
+</li>
+<li id="fn:316">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:316" title="Jump back to footnote 316 in the text">&#8617;</a></p>
+</li>
+<li id="fn:317">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:317" title="Jump back to footnote 317 in the text">&#8617;</a></p>
+</li>
+<li id="fn:318">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:318" title="Jump back to footnote 318 in the text">&#8617;</a></p>
+</li>
+<li id="fn:319">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:319" title="Jump back to footnote 319 in the text">&#8617;</a></p>
+</li>
+<li id="fn:320">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:320" title="Jump back to footnote 320 in the text">&#8617;</a></p>
+</li>
+<li id="fn:321">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:321" title="Jump back to footnote 321 in the text">&#8617;</a></p>
+</li>
+<li id="fn:322">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:322" title="Jump back to footnote 322 in the text">&#8617;</a></p>
+</li>
+<li id="fn:323">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:323" title="Jump back to footnote 323 in the text">&#8617;</a></p>
+</li>
+<li id="fn:324">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:324" title="Jump back to footnote 324 in the text">&#8617;</a></p>
+</li>
+<li id="fn:325">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:325" title="Jump back to footnote 325 in the text">&#8617;</a></p>
+</li>
+<li id="fn:326">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:326" title="Jump back to footnote 326 in the text">&#8617;</a></p>
+</li>
+<li id="fn:327">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:327" title="Jump back to footnote 327 in the text">&#8617;</a></p>
+</li>
+<li id="fn:328">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:328" title="Jump back to footnote 328 in the text">&#8617;</a></p>
+</li>
+<li id="fn:329">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:329" title="Jump back to footnote 329 in the text">&#8617;</a></p>
+</li>
+<li id="fn:330">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:330" title="Jump back to footnote 330 in the text">&#8617;</a></p>
+</li>
+<li id="fn:331">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:331" title="Jump back to footnote 331 in the text">&#8617;</a></p>
+</li>
+<li id="fn:332">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:332" title="Jump back to footnote 332 in the text">&#8617;</a></p>
+</li>
+<li id="fn:333">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:333" title="Jump back to footnote 333 in the text">&#8617;</a></p>
+</li>
+<li id="fn:334">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:334" title="Jump back to footnote 334 in the text">&#8617;</a></p>
+</li>
+<li id="fn:335">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:335" title="Jump back to footnote 335 in the text">&#8617;</a></p>
+</li>
+<li id="fn:336">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:336" title="Jump back to footnote 336 in the text">&#8617;</a></p>
+</li>
+<li id="fn:337">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:337" title="Jump back to footnote 337 in the text">&#8617;</a></p>
+</li>
+<li id="fn:338">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:338" title="Jump back to footnote 338 in the text">&#8617;</a></p>
+</li>
+<li id="fn:339">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:339" title="Jump back to footnote 339 in the text">&#8617;</a></p>
+</li>
+<li id="fn:340">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:340" title="Jump back to footnote 340 in the text">&#8617;</a></p>
+</li>
+<li id="fn:341">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:341" title="Jump back to footnote 341 in the text">&#8617;</a></p>
+</li>
+<li id="fn:342">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:342" title="Jump back to footnote 342 in the text">&#8617;</a></p>
+</li>
+<li id="fn:343">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:343" title="Jump back to footnote 343 in the text">&#8617;</a></p>
+</li>
+<li id="fn:344">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:344" title="Jump back to footnote 344 in the text">&#8617;</a></p>
+</li>
+<li id="fn:345">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:345" title="Jump back to footnote 345 in the text">&#8617;</a></p>
+</li>
+<li id="fn:346">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:346" title="Jump back to footnote 346 in the text">&#8617;</a></p>
+</li>
+<li id="fn:347">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:347" title="Jump back to footnote 347 in the text">&#8617;</a></p>
+</li>
+<li id="fn:348">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:348" title="Jump back to footnote 348 in the text">&#8617;</a></p>
+</li>
+<li id="fn:349">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:349" title="Jump back to footnote 349 in the text">&#8617;</a></p>
+</li>
+<li id="fn:350">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:350" title="Jump back to footnote 350 in the text">&#8617;</a></p>
+</li>
+<li id="fn:351">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:351" title="Jump back to footnote 351 in the text">&#8617;</a></p>
+</li>
+<li id="fn:352">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:352" title="Jump back to footnote 352 in the text">&#8617;</a></p>
+</li>
+<li id="fn:353">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:353" title="Jump back to footnote 353 in the text">&#8617;</a></p>
+</li>
+<li id="fn:354">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:354" title="Jump back to footnote 354 in the text">&#8617;</a></p>
+</li>
+<li id="fn:355">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:355" title="Jump back to footnote 355 in the text">&#8617;</a></p>
+</li>
+<li id="fn:356">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:356" title="Jump back to footnote 356 in the text">&#8617;</a></p>
+</li>
+<li id="fn:357">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:357" title="Jump back to footnote 357 in the text">&#8617;</a></p>
+</li>
+<li id="fn:358">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:358" title="Jump back to footnote 358 in the text">&#8617;</a></p>
+</li>
+<li id="fn:359">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:359" title="Jump back to footnote 359 in the text">&#8617;</a></p>
+</li>
+<li id="fn:360">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:360" title="Jump back to footnote 360 in the text">&#8617;</a></p>
+</li>
+<li id="fn:361">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:361" title="Jump back to footnote 361 in the text">&#8617;</a></p>
+</li>
+<li id="fn:362">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:362" title="Jump back to footnote 362 in the text">&#8617;</a></p>
+</li>
+<li id="fn:363">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:363" title="Jump back to footnote 363 in the text">&#8617;</a></p>
+</li>
+<li id="fn:364">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:364" title="Jump back to footnote 364 in the text">&#8617;</a></p>
+</li>
+<li id="fn:365">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:365" title="Jump back to footnote 365 in the text">&#8617;</a></p>
+</li>
+<li id="fn:366">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:366" title="Jump back to footnote 366 in the text">&#8617;</a></p>
+</li>
+<li id="fn:367">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:367" title="Jump back to footnote 367 in the text">&#8617;</a></p>
+</li>
+<li id="fn:368">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:368" title="Jump back to footnote 368 in the text">&#8617;</a></p>
+</li>
+<li id="fn:369">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:369" title="Jump back to footnote 369 in the text">&#8617;</a></p>
+</li>
+<li id="fn:370">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:370" title="Jump back to footnote 370 in the text">&#8617;</a></p>
+</li>
+<li id="fn:371">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:371" title="Jump back to footnote 371 in the text">&#8617;</a></p>
+</li>
+<li id="fn:372">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:372" title="Jump back to footnote 372 in the text">&#8617;</a></p>
+</li>
+<li id="fn:373">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:373" title="Jump back to footnote 373 in the text">&#8617;</a></p>
+</li>
+<li id="fn:374">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:374" title="Jump back to footnote 374 in the text">&#8617;</a></p>
+</li>
+<li id="fn:375">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:375" title="Jump back to footnote 375 in the text">&#8617;</a></p>
+</li>
+<li id="fn:376">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:376" title="Jump back to footnote 376 in the text">&#8617;</a></p>
+</li>
+<li id="fn:377">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:377" title="Jump back to footnote 377 in the text">&#8617;</a></p>
+</li>
+<li id="fn:378">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:378" title="Jump back to footnote 378 in the text">&#8617;</a></p>
+</li>
+<li id="fn:379">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:379" title="Jump back to footnote 379 in the text">&#8617;</a></p>
+</li>
+<li id="fn:380">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:380" title="Jump back to footnote 380 in the text">&#8617;</a></p>
+</li>
+<li id="fn:381">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:381" title="Jump back to footnote 381 in the text">&#8617;</a></p>
+</li>
+<li id="fn:382">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:382" title="Jump back to footnote 382 in the text">&#8617;</a></p>
+</li>
+<li id="fn:383">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:383" title="Jump back to footnote 383 in the text">&#8617;</a></p>
+</li>
+<li id="fn:384">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:384" title="Jump back to footnote 384 in the text">&#8617;</a></p>
+</li>
+<li id="fn:385">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:385" title="Jump back to footnote 385 in the text">&#8617;</a></p>
+</li>
+<li id="fn:386">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:386" title="Jump back to footnote 386 in the text">&#8617;</a></p>
+</li>
+<li id="fn:387">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:387" title="Jump back to footnote 387 in the text">&#8617;</a></p>
+</li>
+<li id="fn:388">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:388" title="Jump back to footnote 388 in the text">&#8617;</a></p>
+</li>
+<li id="fn:389">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:389" title="Jump back to footnote 389 in the text">&#8617;</a></p>
+</li>
+<li id="fn:390">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:390" title="Jump back to footnote 390 in the text">&#8617;</a></p>
+</li>
+<li id="fn:391">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:391" title="Jump back to footnote 391 in the text">&#8617;</a></p>
+</li>
+<li id="fn:392">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:392" title="Jump back to footnote 392 in the text">&#8617;</a></p>
+</li>
+<li id="fn:393">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:393" title="Jump back to footnote 393 in the text">&#8617;</a></p>
+</li>
+<li id="fn:394">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:394" title="Jump back to footnote 394 in the text">&#8617;</a></p>
+</li>
+<li id="fn:395">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:395" title="Jump back to footnote 395 in the text">&#8617;</a></p>
+</li>
+<li id="fn:396">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:396" title="Jump back to footnote 396 in the text">&#8617;</a></p>
+</li>
+<li id="fn:397">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:397" title="Jump back to footnote 397 in the text">&#8617;</a></p>
+</li>
+<li id="fn:398">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:398" title="Jump back to footnote 398 in the text">&#8617;</a></p>
+</li>
+<li id="fn:399">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:399" title="Jump back to footnote 399 in the text">&#8617;</a></p>
+</li>
+<li id="fn:400">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:400" title="Jump back to footnote 400 in the text">&#8617;</a></p>
+</li>
+<li id="fn:401">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:401" title="Jump back to footnote 401 in the text">&#8617;</a></p>
+</li>
+<li id="fn:402">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:402" title="Jump back to footnote 402 in the text">&#8617;</a></p>
+</li>
+<li id="fn:403">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:403" title="Jump back to footnote 403 in the text">&#8617;</a></p>
+</li>
+<li id="fn:404">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:404" title="Jump back to footnote 404 in the text">&#8617;</a></p>
+</li>
+<li id="fn:405">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:405" title="Jump back to footnote 405 in the text">&#8617;</a></p>
+</li>
+<li id="fn:406">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:406" title="Jump back to footnote 406 in the text">&#8617;</a></p>
+</li>
+<li id="fn:407">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:407" title="Jump back to footnote 407 in the text">&#8617;</a></p>
+</li>
+<li id="fn:408">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:408" title="Jump back to footnote 408 in the text">&#8617;</a></p>
+</li>
+<li id="fn:409">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:409" title="Jump back to footnote 409 in the text">&#8617;</a></p>
+</li>
+<li id="fn:410">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:410" title="Jump back to footnote 410 in the text">&#8617;</a></p>
+</li>
+<li id="fn:411">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:411" title="Jump back to footnote 411 in the text">&#8617;</a></p>
+</li>
+<li id="fn:412">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:412" title="Jump back to footnote 412 in the text">&#8617;</a></p>
+</li>
+<li id="fn:413">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:413" title="Jump back to footnote 413 in the text">&#8617;</a></p>
+</li>
+<li id="fn:414">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:414" title="Jump back to footnote 414 in the text">&#8617;</a></p>
+</li>
+<li id="fn:415">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:415" title="Jump back to footnote 415 in the text">&#8617;</a></p>
+</li>
+<li id="fn:416">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:416" title="Jump back to footnote 416 in the text">&#8617;</a></p>
+</li>
+<li id="fn:417">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:417" title="Jump back to footnote 417 in the text">&#8617;</a></p>
+</li>
+<li id="fn:418">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:418" title="Jump back to footnote 418 in the text">&#8617;</a></p>
+</li>
+<li id="fn:419">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:419" title="Jump back to footnote 419 in the text">&#8617;</a></p>
+</li>
+<li id="fn:420">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:420" title="Jump back to footnote 420 in the text">&#8617;</a></p>
+</li>
+<li id="fn:421">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:421" title="Jump back to footnote 421 in the text">&#8617;</a></p>
+</li>
+<li id="fn:422">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:422" title="Jump back to footnote 422 in the text">&#8617;</a></p>
+</li>
+<li id="fn:423">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:423" title="Jump back to footnote 423 in the text">&#8617;</a></p>
+</li>
+<li id="fn:424">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:424" title="Jump back to footnote 424 in the text">&#8617;</a></p>
+</li>
+<li id="fn:425">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:425" title="Jump back to footnote 425 in the text">&#8617;</a></p>
+</li>
+<li id="fn:426">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:426" title="Jump back to footnote 426 in the text">&#8617;</a></p>
+</li>
+<li id="fn:427">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:427" title="Jump back to footnote 427 in the text">&#8617;</a></p>
+</li>
+<li id="fn:428">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:428" title="Jump back to footnote 428 in the text">&#8617;</a></p>
+</li>
+<li id="fn:429">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:429" title="Jump back to footnote 429 in the text">&#8617;</a></p>
+</li>
+<li id="fn:430">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:430" title="Jump back to footnote 430 in the text">&#8617;</a></p>
+</li>
+<li id="fn:431">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:431" title="Jump back to footnote 431 in the text">&#8617;</a></p>
+</li>
+<li id="fn:432">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:432" title="Jump back to footnote 432 in the text">&#8617;</a></p>
+</li>
+<li id="fn:433">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:433" title="Jump back to footnote 433 in the text">&#8617;</a></p>
+</li>
+<li id="fn:434">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:434" title="Jump back to footnote 434 in the text">&#8617;</a></p>
+</li>
+<li id="fn:435">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:435" title="Jump back to footnote 435 in the text">&#8617;</a></p>
+</li>
+<li id="fn:436">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:436" title="Jump back to footnote 436 in the text">&#8617;</a></p>
+</li>
+<li id="fn:437">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:437" title="Jump back to footnote 437 in the text">&#8617;</a></p>
+</li>
+<li id="fn:438">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:438" title="Jump back to footnote 438 in the text">&#8617;</a></p>
+</li>
+<li id="fn:439">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:439" title="Jump back to footnote 439 in the text">&#8617;</a></p>
+</li>
+<li id="fn:440">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:440" title="Jump back to footnote 440 in the text">&#8617;</a></p>
+</li>
+<li id="fn:441">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:441" title="Jump back to footnote 441 in the text">&#8617;</a></p>
+</li>
+<li id="fn:442">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:442" title="Jump back to footnote 442 in the text">&#8617;</a></p>
+</li>
+<li id="fn:443">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:443" title="Jump back to footnote 443 in the text">&#8617;</a></p>
+</li>
+<li id="fn:444">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:444" title="Jump back to footnote 444 in the text">&#8617;</a></p>
+</li>
+<li id="fn:445">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:445" title="Jump back to footnote 445 in the text">&#8617;</a></p>
+</li>
+<li id="fn:446">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:446" title="Jump back to footnote 446 in the text">&#8617;</a></p>
+</li>
+<li id="fn:447">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:447" title="Jump back to footnote 447 in the text">&#8617;</a></p>
+</li>
+<li id="fn:448">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:448" title="Jump back to footnote 448 in the text">&#8617;</a></p>
+</li>
+<li id="fn:449">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:449" title="Jump back to footnote 449 in the text">&#8617;</a></p>
+</li>
+<li id="fn:450">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:450" title="Jump back to footnote 450 in the text">&#8617;</a></p>
+</li>
+<li id="fn:451">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:451" title="Jump back to footnote 451 in the text">&#8617;</a></p>
+</li>
+<li id="fn:452">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:452" title="Jump back to footnote 452 in the text">&#8617;</a></p>
+</li>
+<li id="fn:453">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:453" title="Jump back to footnote 453 in the text">&#8617;</a></p>
+</li>
+<li id="fn:454">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:454" title="Jump back to footnote 454 in the text">&#8617;</a></p>
+</li>
+<li id="fn:455">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:455" title="Jump back to footnote 455 in the text">&#8617;</a></p>
+</li>
+<li id="fn:456">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:456" title="Jump back to footnote 456 in the text">&#8617;</a></p>
+</li>
+<li id="fn:457">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:457" title="Jump back to footnote 457 in the text">&#8617;</a></p>
+</li>
+<li id="fn:458">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:458" title="Jump back to footnote 458 in the text">&#8617;</a></p>
+</li>
+<li id="fn:459">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:459" title="Jump back to footnote 459 in the text">&#8617;</a></p>
+</li>
+<li id="fn:460">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:460" title="Jump back to footnote 460 in the text">&#8617;</a></p>
+</li>
+<li id="fn:461">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:461" title="Jump back to footnote 461 in the text">&#8617;</a></p>
+</li>
+<li id="fn:462">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:462" title="Jump back to footnote 462 in the text">&#8617;</a></p>
+</li>
+<li id="fn:463">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:463" title="Jump back to footnote 463 in the text">&#8617;</a></p>
+</li>
+<li id="fn:464">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:464" title="Jump back to footnote 464 in the text">&#8617;</a></p>
+</li>
+<li id="fn:465">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:465" title="Jump back to footnote 465 in the text">&#8617;</a></p>
+</li>
+<li id="fn:466">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:466" title="Jump back to footnote 466 in the text">&#8617;</a></p>
+</li>
+<li id="fn:467">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:467" title="Jump back to footnote 467 in the text">&#8617;</a></p>
+</li>
+<li id="fn:468">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:468" title="Jump back to footnote 468 in the text">&#8617;</a></p>
+</li>
+<li id="fn:469">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:469" title="Jump back to footnote 469 in the text">&#8617;</a></p>
+</li>
+<li id="fn:470">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:470" title="Jump back to footnote 470 in the text">&#8617;</a></p>
+</li>
+<li id="fn:471">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:471" title="Jump back to footnote 471 in the text">&#8617;</a></p>
+</li>
+<li id="fn:472">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:472" title="Jump back to footnote 472 in the text">&#8617;</a></p>
+</li>
+<li id="fn:473">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:473" title="Jump back to footnote 473 in the text">&#8617;</a></p>
+</li>
+<li id="fn:474">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:474" title="Jump back to footnote 474 in the text">&#8617;</a></p>
+</li>
+<li id="fn:475">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:475" title="Jump back to footnote 475 in the text">&#8617;</a></p>
+</li>
+<li id="fn:476">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:476" title="Jump back to footnote 476 in the text">&#8617;</a></p>
+</li>
+<li id="fn:477">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:477" title="Jump back to footnote 477 in the text">&#8617;</a></p>
+</li>
+<li id="fn:478">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:478" title="Jump back to footnote 478 in the text">&#8617;</a></p>
+</li>
+<li id="fn:479">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:479" title="Jump back to footnote 479 in the text">&#8617;</a></p>
+</li>
+<li id="fn:480">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:480" title="Jump back to footnote 480 in the text">&#8617;</a></p>
+</li>
+<li id="fn:481">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:481" title="Jump back to footnote 481 in the text">&#8617;</a></p>
+</li>
+<li id="fn:482">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:482" title="Jump back to footnote 482 in the text">&#8617;</a></p>
+</li>
+<li id="fn:483">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:483" title="Jump back to footnote 483 in the text">&#8617;</a></p>
+</li>
+<li id="fn:484">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:484" title="Jump back to footnote 484 in the text">&#8617;</a></p>
+</li>
+<li id="fn:485">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:485" title="Jump back to footnote 485 in the text">&#8617;</a></p>
+</li>
+<li id="fn:486">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:486" title="Jump back to footnote 486 in the text">&#8617;</a></p>
+</li>
+<li id="fn:487">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:487" title="Jump back to footnote 487 in the text">&#8617;</a></p>
+</li>
+<li id="fn:488">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:488" title="Jump back to footnote 488 in the text">&#8617;</a></p>
+</li>
+<li id="fn:489">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:489" title="Jump back to footnote 489 in the text">&#8617;</a></p>
+</li>
+<li id="fn:490">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:490" title="Jump back to footnote 490 in the text">&#8617;</a></p>
+</li>
+<li id="fn:491">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:491" title="Jump back to footnote 491 in the text">&#8617;</a></p>
+</li>
+<li id="fn:492">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:492" title="Jump back to footnote 492 in the text">&#8617;</a></p>
+</li>
+<li id="fn:493">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:493" title="Jump back to footnote 493 in the text">&#8617;</a></p>
+</li>
+<li id="fn:494">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:494" title="Jump back to footnote 494 in the text">&#8617;</a></p>
+</li>
+<li id="fn:495">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:495" title="Jump back to footnote 495 in the text">&#8617;</a></p>
+</li>
+<li id="fn:496">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:496" title="Jump back to footnote 496 in the text">&#8617;</a></p>
+</li>
+<li id="fn:497">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:497" title="Jump back to footnote 497 in the text">&#8617;</a></p>
+</li>
+<li id="fn:498">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:498" title="Jump back to footnote 498 in the text">&#8617;</a></p>
+</li>
+<li id="fn:499">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:499" title="Jump back to footnote 499 in the text">&#8617;</a></p>
+</li>
+<li id="fn:500">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:500" title="Jump back to footnote 500 in the text">&#8617;</a></p>
+</li>
+<li id="fn:501">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:501" title="Jump back to footnote 501 in the text">&#8617;</a></p>
+</li>
+<li id="fn:502">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:502" title="Jump back to footnote 502 in the text">&#8617;</a></p>
+</li>
+<li id="fn:503">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:503" title="Jump back to footnote 503 in the text">&#8617;</a></p>
+</li>
+<li id="fn:504">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:504" title="Jump back to footnote 504 in the text">&#8617;</a></p>
+</li>
+<li id="fn:505">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:505" title="Jump back to footnote 505 in the text">&#8617;</a></p>
+</li>
+<li id="fn:506">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:506" title="Jump back to footnote 506 in the text">&#8617;</a></p>
+</li>
+<li id="fn:507">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:507" title="Jump back to footnote 507 in the text">&#8617;</a></p>
+</li>
+<li id="fn:508">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:508" title="Jump back to footnote 508 in the text">&#8617;</a></p>
+</li>
+<li id="fn:509">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:509" title="Jump back to footnote 509 in the text">&#8617;</a></p>
+</li>
+<li id="fn:510">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:510" title="Jump back to footnote 510 in the text">&#8617;</a></p>
+</li>
+<li id="fn:511">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:511" title="Jump back to footnote 511 in the text">&#8617;</a></p>
+</li>
+<li id="fn:512">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:512" title="Jump back to footnote 512 in the text">&#8617;</a></p>
+</li>
+<li id="fn:513">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:513" title="Jump back to footnote 513 in the text">&#8617;</a></p>
+</li>
+<li id="fn:514">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:514" title="Jump back to footnote 514 in the text">&#8617;</a></p>
+</li>
+<li id="fn:515">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:515" title="Jump back to footnote 515 in the text">&#8617;</a></p>
+</li>
+<li id="fn:516">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:516" title="Jump back to footnote 516 in the text">&#8617;</a></p>
+</li>
+<li id="fn:517">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:517" title="Jump back to footnote 517 in the text">&#8617;</a></p>
+</li>
+<li id="fn:518">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:518" title="Jump back to footnote 518 in the text">&#8617;</a></p>
+</li>
+<li id="fn:519">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:519" title="Jump back to footnote 519 in the text">&#8617;</a></p>
+</li>
+<li id="fn:520">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:520" title="Jump back to footnote 520 in the text">&#8617;</a></p>
+</li>
+<li id="fn:521">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:521" title="Jump back to footnote 521 in the text">&#8617;</a></p>
+</li>
+<li id="fn:522">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:522" title="Jump back to footnote 522 in the text">&#8617;</a></p>
+</li>
+<li id="fn:523">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:523" title="Jump back to footnote 523 in the text">&#8617;</a></p>
+</li>
+<li id="fn:524">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:524" title="Jump back to footnote 524 in the text">&#8617;</a></p>
+</li>
+<li id="fn:525">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:525" title="Jump back to footnote 525 in the text">&#8617;</a></p>
+</li>
+<li id="fn:526">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:526" title="Jump back to footnote 526 in the text">&#8617;</a></p>
+</li>
+<li id="fn:527">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:527" title="Jump back to footnote 527 in the text">&#8617;</a></p>
+</li>
+<li id="fn:528">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:528" title="Jump back to footnote 528 in the text">&#8617;</a></p>
+</li>
+<li id="fn:529">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:529" title="Jump back to footnote 529 in the text">&#8617;</a></p>
+</li>
+<li id="fn:530">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:530" title="Jump back to footnote 530 in the text">&#8617;</a></p>
+</li>
+<li id="fn:531">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:531" title="Jump back to footnote 531 in the text">&#8617;</a></p>
+</li>
+<li id="fn:532">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:532" title="Jump back to footnote 532 in the text">&#8617;</a></p>
+</li>
+<li id="fn:533">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:533" title="Jump back to footnote 533 in the text">&#8617;</a></p>
+</li>
+<li id="fn:534">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:534" title="Jump back to footnote 534 in the text">&#8617;</a></p>
+</li>
+<li id="fn:535">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:535" title="Jump back to footnote 535 in the text">&#8617;</a></p>
+</li>
+<li id="fn:536">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:536" title="Jump back to footnote 536 in the text">&#8617;</a></p>
+</li>
+<li id="fn:537">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:537" title="Jump back to footnote 537 in the text">&#8617;</a></p>
+</li>
+<li id="fn:538">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:538" title="Jump back to footnote 538 in the text">&#8617;</a></p>
+</li>
+<li id="fn:539">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:539" title="Jump back to footnote 539 in the text">&#8617;</a></p>
+</li>
+<li id="fn:540">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:540" title="Jump back to footnote 540 in the text">&#8617;</a></p>
+</li>
+<li id="fn:541">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:541" title="Jump back to footnote 541 in the text">&#8617;</a></p>
+</li>
+<li id="fn:542">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:542" title="Jump back to footnote 542 in the text">&#8617;</a></p>
+</li>
+<li id="fn:543">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:543" title="Jump back to footnote 543 in the text">&#8617;</a></p>
+</li>
+<li id="fn:544">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:544" title="Jump back to footnote 544 in the text">&#8617;</a></p>
+</li>
+<li id="fn:545">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:545" title="Jump back to footnote 545 in the text">&#8617;</a></p>
+</li>
+<li id="fn:546">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:546" title="Jump back to footnote 546 in the text">&#8617;</a></p>
+</li>
+<li id="fn:547">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:547" title="Jump back to footnote 547 in the text">&#8617;</a></p>
+</li>
+<li id="fn:548">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:548" title="Jump back to footnote 548 in the text">&#8617;</a></p>
+</li>
+<li id="fn:549">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:549" title="Jump back to footnote 549 in the text">&#8617;</a></p>
+</li>
+<li id="fn:550">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:550" title="Jump back to footnote 550 in the text">&#8617;</a></p>
+</li>
+<li id="fn:551">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:551" title="Jump back to footnote 551 in the text">&#8617;</a></p>
+</li>
+<li id="fn:552">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:552" title="Jump back to footnote 552 in the text">&#8617;</a></p>
+</li>
+<li id="fn:553">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:553" title="Jump back to footnote 553 in the text">&#8617;</a></p>
+</li>
+<li id="fn:554">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:554" title="Jump back to footnote 554 in the text">&#8617;</a></p>
+</li>
+<li id="fn:555">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:555" title="Jump back to footnote 555 in the text">&#8617;</a></p>
+</li>
+<li id="fn:556">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:556" title="Jump back to footnote 556 in the text">&#8617;</a></p>
+</li>
+<li id="fn:557">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:557" title="Jump back to footnote 557 in the text">&#8617;</a></p>
+</li>
+<li id="fn:558">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:558" title="Jump back to footnote 558 in the text">&#8617;</a></p>
+</li>
+<li id="fn:559">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:559" title="Jump back to footnote 559 in the text">&#8617;</a></p>
+</li>
+<li id="fn:560">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:560" title="Jump back to footnote 560 in the text">&#8617;</a></p>
+</li>
+<li id="fn:561">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:561" title="Jump back to footnote 561 in the text">&#8617;</a></p>
+</li>
+<li id="fn:562">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:562" title="Jump back to footnote 562 in the text">&#8617;</a></p>
+</li>
+<li id="fn:563">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:563" title="Jump back to footnote 563 in the text">&#8617;</a></p>
+</li>
+<li id="fn:564">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:564" title="Jump back to footnote 564 in the text">&#8617;</a></p>
+</li>
+<li id="fn:565">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:565" title="Jump back to footnote 565 in the text">&#8617;</a></p>
+</li>
+<li id="fn:566">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:566" title="Jump back to footnote 566 in the text">&#8617;</a></p>
+</li>
+<li id="fn:567">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:567" title="Jump back to footnote 567 in the text">&#8617;</a></p>
+</li>
+<li id="fn:568">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:568" title="Jump back to footnote 568 in the text">&#8617;</a></p>
+</li>
+<li id="fn:569">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:569" title="Jump back to footnote 569 in the text">&#8617;</a></p>
+</li>
+<li id="fn:570">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:570" title="Jump back to footnote 570 in the text">&#8617;</a></p>
+</li>
+<li id="fn:571">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:571" title="Jump back to footnote 571 in the text">&#8617;</a></p>
+</li>
+<li id="fn:572">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:572" title="Jump back to footnote 572 in the text">&#8617;</a></p>
+</li>
+<li id="fn:573">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:573" title="Jump back to footnote 573 in the text">&#8617;</a></p>
+</li>
+<li id="fn:574">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:574" title="Jump back to footnote 574 in the text">&#8617;</a></p>
+</li>
+<li id="fn:575">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:575" title="Jump back to footnote 575 in the text">&#8617;</a></p>
+</li>
+<li id="fn:576">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:576" title="Jump back to footnote 576 in the text">&#8617;</a></p>
+</li>
+<li id="fn:577">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:577" title="Jump back to footnote 577 in the text">&#8617;</a></p>
+</li>
+<li id="fn:578">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:578" title="Jump back to footnote 578 in the text">&#8617;</a></p>
+</li>
+<li id="fn:579">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:579" title="Jump back to footnote 579 in the text">&#8617;</a></p>
+</li>
+<li id="fn:580">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:580" title="Jump back to footnote 580 in the text">&#8617;</a></p>
+</li>
+<li id="fn:581">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:581" title="Jump back to footnote 581 in the text">&#8617;</a></p>
+</li>
+<li id="fn:582">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:582" title="Jump back to footnote 582 in the text">&#8617;</a></p>
+</li>
+<li id="fn:583">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:583" title="Jump back to footnote 583 in the text">&#8617;</a></p>
+</li>
+<li id="fn:584">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:584" title="Jump back to footnote 584 in the text">&#8617;</a></p>
+</li>
+<li id="fn:585">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:585" title="Jump back to footnote 585 in the text">&#8617;</a></p>
+</li>
+<li id="fn:586">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:586" title="Jump back to footnote 586 in the text">&#8617;</a></p>
+</li>
+<li id="fn:587">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:587" title="Jump back to footnote 587 in the text">&#8617;</a></p>
+</li>
+<li id="fn:588">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:588" title="Jump back to footnote 588 in the text">&#8617;</a></p>
+</li>
+<li id="fn:589">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:589" title="Jump back to footnote 589 in the text">&#8617;</a></p>
+</li>
+<li id="fn:590">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:590" title="Jump back to footnote 590 in the text">&#8617;</a></p>
+</li>
+<li id="fn:591">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:591" title="Jump back to footnote 591 in the text">&#8617;</a></p>
+</li>
+<li id="fn:592">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:592" title="Jump back to footnote 592 in the text">&#8617;</a></p>
+</li>
+<li id="fn:593">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:593" title="Jump back to footnote 593 in the text">&#8617;</a></p>
+</li>
+<li id="fn:594">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:594" title="Jump back to footnote 594 in the text">&#8617;</a></p>
+</li>
+<li id="fn:595">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:595" title="Jump back to footnote 595 in the text">&#8617;</a></p>
+</li>
+<li id="fn:596">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:596" title="Jump back to footnote 596 in the text">&#8617;</a></p>
+</li>
+<li id="fn:597">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:597" title="Jump back to footnote 597 in the text">&#8617;</a></p>
+</li>
+<li id="fn:598">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:598" title="Jump back to footnote 598 in the text">&#8617;</a></p>
+</li>
+<li id="fn:599">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:599" title="Jump back to footnote 599 in the text">&#8617;</a></p>
+</li>
+<li id="fn:600">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:600" title="Jump back to footnote 600 in the text">&#8617;</a></p>
+</li>
+<li id="fn:601">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:601" title="Jump back to footnote 601 in the text">&#8617;</a></p>
+</li>
+<li id="fn:602">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:602" title="Jump back to footnote 602 in the text">&#8617;</a></p>
+</li>
+<li id="fn:603">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:603" title="Jump back to footnote 603 in the text">&#8617;</a></p>
+</li>
+<li id="fn:604">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:604" title="Jump back to footnote 604 in the text">&#8617;</a></p>
+</li>
+<li id="fn:605">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:605" title="Jump back to footnote 605 in the text">&#8617;</a></p>
+</li>
+<li id="fn:606">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:606" title="Jump back to footnote 606 in the text">&#8617;</a></p>
+</li>
+<li id="fn:607">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:607" title="Jump back to footnote 607 in the text">&#8617;</a></p>
+</li>
+<li id="fn:608">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:608" title="Jump back to footnote 608 in the text">&#8617;</a></p>
+</li>
+<li id="fn:609">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:609" title="Jump back to footnote 609 in the text">&#8617;</a></p>
+</li>
+<li id="fn:610">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:610" title="Jump back to footnote 610 in the text">&#8617;</a></p>
+</li>
+<li id="fn:611">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:611" title="Jump back to footnote 611 in the text">&#8617;</a></p>
+</li>
+<li id="fn:612">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:612" title="Jump back to footnote 612 in the text">&#8617;</a></p>
+</li>
+<li id="fn:613">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:613" title="Jump back to footnote 613 in the text">&#8617;</a></p>
+</li>
+<li id="fn:614">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:614" title="Jump back to footnote 614 in the text">&#8617;</a></p>
+</li>
+<li id="fn:615">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:615" title="Jump back to footnote 615 in the text">&#8617;</a></p>
+</li>
+<li id="fn:616">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:616" title="Jump back to footnote 616 in the text">&#8617;</a></p>
+</li>
+<li id="fn:617">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:617" title="Jump back to footnote 617 in the text">&#8617;</a></p>
+</li>
+<li id="fn:618">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:618" title="Jump back to footnote 618 in the text">&#8617;</a></p>
+</li>
+<li id="fn:619">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:619" title="Jump back to footnote 619 in the text">&#8617;</a></p>
+</li>
+<li id="fn:620">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:620" title="Jump back to footnote 620 in the text">&#8617;</a></p>
+</li>
+<li id="fn:621">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:621" title="Jump back to footnote 621 in the text">&#8617;</a></p>
+</li>
+<li id="fn:622">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:622" title="Jump back to footnote 622 in the text">&#8617;</a></p>
+</li>
+<li id="fn:623">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:623" title="Jump back to footnote 623 in the text">&#8617;</a></p>
+</li>
+<li id="fn:624">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:624" title="Jump back to footnote 624 in the text">&#8617;</a></p>
+</li>
+<li id="fn:625">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:625" title="Jump back to footnote 625 in the text">&#8617;</a></p>
+</li>
+<li id="fn:626">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:626" title="Jump back to footnote 626 in the text">&#8617;</a></p>
+</li>
+<li id="fn:627">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:627" title="Jump back to footnote 627 in the text">&#8617;</a></p>
+</li>
+<li id="fn:628">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:628" title="Jump back to footnote 628 in the text">&#8617;</a></p>
+</li>
+<li id="fn:629">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:629" title="Jump back to footnote 629 in the text">&#8617;</a></p>
+</li>
+<li id="fn:630">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:630" title="Jump back to footnote 630 in the text">&#8617;</a></p>
+</li>
+<li id="fn:631">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:631" title="Jump back to footnote 631 in the text">&#8617;</a></p>
+</li>
+<li id="fn:632">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:632" title="Jump back to footnote 632 in the text">&#8617;</a></p>
+</li>
+<li id="fn:633">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:633" title="Jump back to footnote 633 in the text">&#8617;</a></p>
+</li>
+<li id="fn:634">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:634" title="Jump back to footnote 634 in the text">&#8617;</a></p>
+</li>
+<li id="fn:635">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:635" title="Jump back to footnote 635 in the text">&#8617;</a></p>
+</li>
+<li id="fn:636">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:636" title="Jump back to footnote 636 in the text">&#8617;</a></p>
+</li>
+<li id="fn:637">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:637" title="Jump back to footnote 637 in the text">&#8617;</a></p>
+</li>
+<li id="fn:638">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:638" title="Jump back to footnote 638 in the text">&#8617;</a></p>
+</li>
+<li id="fn:639">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:639" title="Jump back to footnote 639 in the text">&#8617;</a></p>
+</li>
+<li id="fn:640">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:640" title="Jump back to footnote 640 in the text">&#8617;</a></p>
+</li>
+<li id="fn:641">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:641" title="Jump back to footnote 641 in the text">&#8617;</a></p>
+</li>
+<li id="fn:642">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:642" title="Jump back to footnote 642 in the text">&#8617;</a></p>
+</li>
+<li id="fn:643">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:643" title="Jump back to footnote 643 in the text">&#8617;</a></p>
+</li>
+<li id="fn:644">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:644" title="Jump back to footnote 644 in the text">&#8617;</a></p>
+</li>
+<li id="fn:645">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:645" title="Jump back to footnote 645 in the text">&#8617;</a></p>
+</li>
+<li id="fn:646">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:646" title="Jump back to footnote 646 in the text">&#8617;</a></p>
+</li>
+<li id="fn:647">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:647" title="Jump back to footnote 647 in the text">&#8617;</a></p>
+</li>
+<li id="fn:648">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:648" title="Jump back to footnote 648 in the text">&#8617;</a></p>
+</li>
+<li id="fn:649">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:649" title="Jump back to footnote 649 in the text">&#8617;</a></p>
+</li>
+<li id="fn:650">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:650" title="Jump back to footnote 650 in the text">&#8617;</a></p>
+</li>
+<li id="fn:651">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:651" title="Jump back to footnote 651 in the text">&#8617;</a></p>
+</li>
+<li id="fn:652">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:652" title="Jump back to footnote 652 in the text">&#8617;</a></p>
+</li>
+<li id="fn:653">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:653" title="Jump back to footnote 653 in the text">&#8617;</a></p>
+</li>
+<li id="fn:654">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:654" title="Jump back to footnote 654 in the text">&#8617;</a></p>
+</li>
+<li id="fn:655">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:655" title="Jump back to footnote 655 in the text">&#8617;</a></p>
+</li>
+<li id="fn:656">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:656" title="Jump back to footnote 656 in the text">&#8617;</a></p>
+</li>
+<li id="fn:657">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:657" title="Jump back to footnote 657 in the text">&#8617;</a></p>
+</li>
+<li id="fn:658">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:658" title="Jump back to footnote 658 in the text">&#8617;</a></p>
+</li>
+<li id="fn:659">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:659" title="Jump back to footnote 659 in the text">&#8617;</a></p>
+</li>
+<li id="fn:660">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:660" title="Jump back to footnote 660 in the text">&#8617;</a></p>
+</li>
+<li id="fn:661">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:661" title="Jump back to footnote 661 in the text">&#8617;</a></p>
+</li>
+<li id="fn:662">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:662" title="Jump back to footnote 662 in the text">&#8617;</a></p>
+</li>
+<li id="fn:663">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:663" title="Jump back to footnote 663 in the text">&#8617;</a></p>
+</li>
+<li id="fn:664">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:664" title="Jump back to footnote 664 in the text">&#8617;</a></p>
+</li>
+<li id="fn:665">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:665" title="Jump back to footnote 665 in the text">&#8617;</a></p>
+</li>
+<li id="fn:666">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:666" title="Jump back to footnote 666 in the text">&#8617;</a></p>
+</li>
+<li id="fn:667">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:667" title="Jump back to footnote 667 in the text">&#8617;</a></p>
+</li>
+<li id="fn:668">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:668" title="Jump back to footnote 668 in the text">&#8617;</a></p>
+</li>
+<li id="fn:669">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:669" title="Jump back to footnote 669 in the text">&#8617;</a></p>
+</li>
+<li id="fn:670">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:670" title="Jump back to footnote 670 in the text">&#8617;</a></p>
+</li>
+<li id="fn:671">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:671" title="Jump back to footnote 671 in the text">&#8617;</a></p>
+</li>
+<li id="fn:672">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:672" title="Jump back to footnote 672 in the text">&#8617;</a></p>
+</li>
+<li id="fn:673">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:673" title="Jump back to footnote 673 in the text">&#8617;</a></p>
+</li>
+<li id="fn:674">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:674" title="Jump back to footnote 674 in the text">&#8617;</a></p>
+</li>
+<li id="fn:675">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:675" title="Jump back to footnote 675 in the text">&#8617;</a></p>
+</li>
+<li id="fn:676">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:676" title="Jump back to footnote 676 in the text">&#8617;</a></p>
+</li>
+<li id="fn:677">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:677" title="Jump back to footnote 677 in the text">&#8617;</a></p>
+</li>
+<li id="fn:678">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:678" title="Jump back to footnote 678 in the text">&#8617;</a></p>
+</li>
+<li id="fn:679">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:679" title="Jump back to footnote 679 in the text">&#8617;</a></p>
+</li>
+<li id="fn:680">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:680" title="Jump back to footnote 680 in the text">&#8617;</a></p>
+</li>
+<li id="fn:681">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:681" title="Jump back to footnote 681 in the text">&#8617;</a></p>
+</li>
+<li id="fn:682">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:682" title="Jump back to footnote 682 in the text">&#8617;</a></p>
+</li>
+<li id="fn:683">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:683" title="Jump back to footnote 683 in the text">&#8617;</a></p>
+</li>
+<li id="fn:684">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:684" title="Jump back to footnote 684 in the text">&#8617;</a></p>
+</li>
+<li id="fn:685">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:685" title="Jump back to footnote 685 in the text">&#8617;</a></p>
+</li>
+<li id="fn:686">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:686" title="Jump back to footnote 686 in the text">&#8617;</a></p>
+</li>
+<li id="fn:687">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:687" title="Jump back to footnote 687 in the text">&#8617;</a></p>
+</li>
+<li id="fn:688">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:688" title="Jump back to footnote 688 in the text">&#8617;</a></p>
+</li>
+<li id="fn:689">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:689" title="Jump back to footnote 689 in the text">&#8617;</a></p>
+</li>
+<li id="fn:690">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:690" title="Jump back to footnote 690 in the text">&#8617;</a></p>
+</li>
+<li id="fn:691">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:691" title="Jump back to footnote 691 in the text">&#8617;</a></p>
+</li>
+<li id="fn:692">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:692" title="Jump back to footnote 692 in the text">&#8617;</a></p>
+</li>
+<li id="fn:693">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:693" title="Jump back to footnote 693 in the text">&#8617;</a></p>
+</li>
+<li id="fn:694">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:694" title="Jump back to footnote 694 in the text">&#8617;</a></p>
+</li>
+<li id="fn:695">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:695" title="Jump back to footnote 695 in the text">&#8617;</a></p>
+</li>
+<li id="fn:696">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:696" title="Jump back to footnote 696 in the text">&#8617;</a></p>
+</li>
+<li id="fn:697">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:697" title="Jump back to footnote 697 in the text">&#8617;</a></p>
+</li>
+<li id="fn:698">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:698" title="Jump back to footnote 698 in the text">&#8617;</a></p>
+</li>
+<li id="fn:699">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:699" title="Jump back to footnote 699 in the text">&#8617;</a></p>
+</li>
+<li id="fn:700">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:700" title="Jump back to footnote 700 in the text">&#8617;</a></p>
+</li>
+<li id="fn:701">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:701" title="Jump back to footnote 701 in the text">&#8617;</a></p>
+</li>
+<li id="fn:702">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:702" title="Jump back to footnote 702 in the text">&#8617;</a></p>
+</li>
+<li id="fn:703">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:703" title="Jump back to footnote 703 in the text">&#8617;</a></p>
+</li>
+<li id="fn:704">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:704" title="Jump back to footnote 704 in the text">&#8617;</a></p>
+</li>
+<li id="fn:705">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:705" title="Jump back to footnote 705 in the text">&#8617;</a></p>
+</li>
+<li id="fn:706">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:706" title="Jump back to footnote 706 in the text">&#8617;</a></p>
+</li>
+<li id="fn:707">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:707" title="Jump back to footnote 707 in the text">&#8617;</a></p>
+</li>
+<li id="fn:708">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:708" title="Jump back to footnote 708 in the text">&#8617;</a></p>
+</li>
+<li id="fn:709">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:709" title="Jump back to footnote 709 in the text">&#8617;</a></p>
+</li>
+<li id="fn:710">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:710" title="Jump back to footnote 710 in the text">&#8617;</a></p>
+</li>
+<li id="fn:711">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:711" title="Jump back to footnote 711 in the text">&#8617;</a></p>
+</li>
+<li id="fn:712">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:712" title="Jump back to footnote 712 in the text">&#8617;</a></p>
+</li>
+<li id="fn:713">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:713" title="Jump back to footnote 713 in the text">&#8617;</a></p>
+</li>
+<li id="fn:714">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:714" title="Jump back to footnote 714 in the text">&#8617;</a></p>
+</li>
+<li id="fn:715">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:715" title="Jump back to footnote 715 in the text">&#8617;</a></p>
+</li>
+<li id="fn:716">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:716" title="Jump back to footnote 716 in the text">&#8617;</a></p>
+</li>
+<li id="fn:717">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:717" title="Jump back to footnote 717 in the text">&#8617;</a></p>
+</li>
+<li id="fn:718">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:718" title="Jump back to footnote 718 in the text">&#8617;</a></p>
+</li>
+<li id="fn:719">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:719" title="Jump back to footnote 719 in the text">&#8617;</a></p>
+</li>
+<li id="fn:720">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:720" title="Jump back to footnote 720 in the text">&#8617;</a></p>
+</li>
+<li id="fn:721">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:721" title="Jump back to footnote 721 in the text">&#8617;</a></p>
+</li>
+<li id="fn:722">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:722" title="Jump back to footnote 722 in the text">&#8617;</a></p>
+</li>
+<li id="fn:723">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:723" title="Jump back to footnote 723 in the text">&#8617;</a></p>
+</li>
+<li id="fn:724">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:724" title="Jump back to footnote 724 in the text">&#8617;</a></p>
+</li>
+<li id="fn:725">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:725" title="Jump back to footnote 725 in the text">&#8617;</a></p>
+</li>
+<li id="fn:726">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:726" title="Jump back to footnote 726 in the text">&#8617;</a></p>
+</li>
+<li id="fn:727">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:727" title="Jump back to footnote 727 in the text">&#8617;</a></p>
+</li>
+<li id="fn:728">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:728" title="Jump back to footnote 728 in the text">&#8617;</a></p>
+</li>
+<li id="fn:729">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:729" title="Jump back to footnote 729 in the text">&#8617;</a></p>
+</li>
+<li id="fn:730">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:730" title="Jump back to footnote 730 in the text">&#8617;</a></p>
+</li>
+<li id="fn:731">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:731" title="Jump back to footnote 731 in the text">&#8617;</a></p>
+</li>
+<li id="fn:732">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:732" title="Jump back to footnote 732 in the text">&#8617;</a></p>
+</li>
+<li id="fn:733">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:733" title="Jump back to footnote 733 in the text">&#8617;</a></p>
+</li>
+<li id="fn:734">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:734" title="Jump back to footnote 734 in the text">&#8617;</a></p>
+</li>
+<li id="fn:735">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:735" title="Jump back to footnote 735 in the text">&#8617;</a></p>
+</li>
+<li id="fn:736">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:736" title="Jump back to footnote 736 in the text">&#8617;</a></p>
+</li>
+<li id="fn:737">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:737" title="Jump back to footnote 737 in the text">&#8617;</a></p>
+</li>
+<li id="fn:738">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:738" title="Jump back to footnote 738 in the text">&#8617;</a></p>
+</li>
+<li id="fn:739">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:739" title="Jump back to footnote 739 in the text">&#8617;</a></p>
+</li>
+<li id="fn:740">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:740" title="Jump back to footnote 740 in the text">&#8617;</a></p>
+</li>
+<li id="fn:741">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:741" title="Jump back to footnote 741 in the text">&#8617;</a></p>
+</li>
+<li id="fn:742">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:742" title="Jump back to footnote 742 in the text">&#8617;</a></p>
+</li>
+<li id="fn:743">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:743" title="Jump back to footnote 743 in the text">&#8617;</a></p>
+</li>
+<li id="fn:744">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:744" title="Jump back to footnote 744 in the text">&#8617;</a></p>
+</li>
+<li id="fn:745">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:745" title="Jump back to footnote 745 in the text">&#8617;</a></p>
+</li>
+<li id="fn:746">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:746" title="Jump back to footnote 746 in the text">&#8617;</a></p>
+</li>
+<li id="fn:747">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:747" title="Jump back to footnote 747 in the text">&#8617;</a></p>
+</li>
+<li id="fn:748">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:748" title="Jump back to footnote 748 in the text">&#8617;</a></p>
+</li>
+<li id="fn:749">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:749" title="Jump back to footnote 749 in the text">&#8617;</a></p>
+</li>
+<li id="fn:750">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:750" title="Jump back to footnote 750 in the text">&#8617;</a></p>
+</li>
+<li id="fn:751">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:751" title="Jump back to footnote 751 in the text">&#8617;</a></p>
+</li>
+<li id="fn:752">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:752" title="Jump back to footnote 752 in the text">&#8617;</a></p>
+</li>
+<li id="fn:753">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:753" title="Jump back to footnote 753 in the text">&#8617;</a></p>
+</li>
+<li id="fn:754">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:754" title="Jump back to footnote 754 in the text">&#8617;</a></p>
+</li>
+<li id="fn:755">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:755" title="Jump back to footnote 755 in the text">&#8617;</a></p>
+</li>
+<li id="fn:756">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:756" title="Jump back to footnote 756 in the text">&#8617;</a></p>
+</li>
+<li id="fn:757">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:757" title="Jump back to footnote 757 in the text">&#8617;</a></p>
+</li>
+<li id="fn:758">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:758" title="Jump back to footnote 758 in the text">&#8617;</a></p>
+</li>
+<li id="fn:759">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:759" title="Jump back to footnote 759 in the text">&#8617;</a></p>
+</li>
+<li id="fn:760">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:760" title="Jump back to footnote 760 in the text">&#8617;</a></p>
+</li>
+<li id="fn:761">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:761" title="Jump back to footnote 761 in the text">&#8617;</a></p>
+</li>
+<li id="fn:762">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:762" title="Jump back to footnote 762 in the text">&#8617;</a></p>
+</li>
+<li id="fn:763">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:763" title="Jump back to footnote 763 in the text">&#8617;</a></p>
+</li>
+<li id="fn:764">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:764" title="Jump back to footnote 764 in the text">&#8617;</a></p>
+</li>
+<li id="fn:765">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:765" title="Jump back to footnote 765 in the text">&#8617;</a></p>
+</li>
+<li id="fn:766">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:766" title="Jump back to footnote 766 in the text">&#8617;</a></p>
+</li>
+<li id="fn:767">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:767" title="Jump back to footnote 767 in the text">&#8617;</a></p>
+</li>
+<li id="fn:768">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:768" title="Jump back to footnote 768 in the text">&#8617;</a></p>
+</li>
+<li id="fn:769">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:769" title="Jump back to footnote 769 in the text">&#8617;</a></p>
+</li>
+<li id="fn:770">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:770" title="Jump back to footnote 770 in the text">&#8617;</a></p>
+</li>
+<li id="fn:771">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:771" title="Jump back to footnote 771 in the text">&#8617;</a></p>
+</li>
+<li id="fn:772">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:772" title="Jump back to footnote 772 in the text">&#8617;</a></p>
+</li>
+<li id="fn:773">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:773" title="Jump back to footnote 773 in the text">&#8617;</a></p>
+</li>
+<li id="fn:774">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:774" title="Jump back to footnote 774 in the text">&#8617;</a></p>
+</li>
+<li id="fn:775">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:775" title="Jump back to footnote 775 in the text">&#8617;</a></p>
+</li>
+<li id="fn:776">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:776" title="Jump back to footnote 776 in the text">&#8617;</a></p>
+</li>
+<li id="fn:777">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:777" title="Jump back to footnote 777 in the text">&#8617;</a></p>
+</li>
+<li id="fn:778">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:778" title="Jump back to footnote 778 in the text">&#8617;</a></p>
+</li>
+<li id="fn:779">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:779" title="Jump back to footnote 779 in the text">&#8617;</a></p>
+</li>
+<li id="fn:780">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:780" title="Jump back to footnote 780 in the text">&#8617;</a></p>
+</li>
+<li id="fn:781">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:781" title="Jump back to footnote 781 in the text">&#8617;</a></p>
+</li>
+<li id="fn:782">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:782" title="Jump back to footnote 782 in the text">&#8617;</a></p>
+</li>
+<li id="fn:783">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:783" title="Jump back to footnote 783 in the text">&#8617;</a></p>
+</li>
+<li id="fn:784">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:784" title="Jump back to footnote 784 in the text">&#8617;</a></p>
+</li>
+<li id="fn:785">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:785" title="Jump back to footnote 785 in the text">&#8617;</a></p>
+</li>
+<li id="fn:786">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:786" title="Jump back to footnote 786 in the text">&#8617;</a></p>
+</li>
+<li id="fn:787">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:787" title="Jump back to footnote 787 in the text">&#8617;</a></p>
+</li>
+<li id="fn:788">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:788" title="Jump back to footnote 788 in the text">&#8617;</a></p>
+</li>
+<li id="fn:789">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:789" title="Jump back to footnote 789 in the text">&#8617;</a></p>
+</li>
+<li id="fn:790">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:790" title="Jump back to footnote 790 in the text">&#8617;</a></p>
+</li>
+<li id="fn:791">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:791" title="Jump back to footnote 791 in the text">&#8617;</a></p>
+</li>
+<li id="fn:792">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:792" title="Jump back to footnote 792 in the text">&#8617;</a></p>
+</li>
+<li id="fn:793">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:793" title="Jump back to footnote 793 in the text">&#8617;</a></p>
+</li>
+<li id="fn:794">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:794" title="Jump back to footnote 794 in the text">&#8617;</a></p>
+</li>
+<li id="fn:795">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:795" title="Jump back to footnote 795 in the text">&#8617;</a></p>
+</li>
+<li id="fn:796">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:796" title="Jump back to footnote 796 in the text">&#8617;</a></p>
+</li>
+<li id="fn:797">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:797" title="Jump back to footnote 797 in the text">&#8617;</a></p>
+</li>
+<li id="fn:798">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:798" title="Jump back to footnote 798 in the text">&#8617;</a></p>
+</li>
+<li id="fn:799">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:799" title="Jump back to footnote 799 in the text">&#8617;</a></p>
+</li>
+<li id="fn:800">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:800" title="Jump back to footnote 800 in the text">&#8617;</a></p>
+</li>
+<li id="fn:801">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:801" title="Jump back to footnote 801 in the text">&#8617;</a></p>
+</li>
+<li id="fn:802">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:802" title="Jump back to footnote 802 in the text">&#8617;</a></p>
+</li>
+<li id="fn:803">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:803" title="Jump back to footnote 803 in the text">&#8617;</a></p>
+</li>
+<li id="fn:804">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:804" title="Jump back to footnote 804 in the text">&#8617;</a></p>
+</li>
+<li id="fn:805">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:805" title="Jump back to footnote 805 in the text">&#8617;</a></p>
+</li>
+<li id="fn:806">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:806" title="Jump back to footnote 806 in the text">&#8617;</a></p>
+</li>
+<li id="fn:807">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:807" title="Jump back to footnote 807 in the text">&#8617;</a></p>
+</li>
+<li id="fn:808">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:808" title="Jump back to footnote 808 in the text">&#8617;</a></p>
+</li>
+<li id="fn:809">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:809" title="Jump back to footnote 809 in the text">&#8617;</a></p>
+</li>
+<li id="fn:810">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:810" title="Jump back to footnote 810 in the text">&#8617;</a></p>
+</li>
+<li id="fn:811">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:811" title="Jump back to footnote 811 in the text">&#8617;</a></p>
+</li>
+<li id="fn:812">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:812" title="Jump back to footnote 812 in the text">&#8617;</a></p>
+</li>
+<li id="fn:813">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:813" title="Jump back to footnote 813 in the text">&#8617;</a></p>
+</li>
+<li id="fn:814">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:814" title="Jump back to footnote 814 in the text">&#8617;</a></p>
+</li>
+<li id="fn:815">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:815" title="Jump back to footnote 815 in the text">&#8617;</a></p>
+</li>
+<li id="fn:816">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:816" title="Jump back to footnote 816 in the text">&#8617;</a></p>
+</li>
+<li id="fn:817">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:817" title="Jump back to footnote 817 in the text">&#8617;</a></p>
+</li>
+<li id="fn:818">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:818" title="Jump back to footnote 818 in the text">&#8617;</a></p>
+</li>
+<li id="fn:819">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:819" title="Jump back to footnote 819 in the text">&#8617;</a></p>
+</li>
+<li id="fn:820">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:820" title="Jump back to footnote 820 in the text">&#8617;</a></p>
+</li>
+<li id="fn:821">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:821" title="Jump back to footnote 821 in the text">&#8617;</a></p>
+</li>
+<li id="fn:822">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:822" title="Jump back to footnote 822 in the text">&#8617;</a></p>
+</li>
+<li id="fn:823">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:823" title="Jump back to footnote 823 in the text">&#8617;</a></p>
+</li>
+<li id="fn:824">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:824" title="Jump back to footnote 824 in the text">&#8617;</a></p>
+</li>
+<li id="fn:825">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:825" title="Jump back to footnote 825 in the text">&#8617;</a></p>
+</li>
+<li id="fn:826">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:826" title="Jump back to footnote 826 in the text">&#8617;</a></p>
+</li>
+<li id="fn:827">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:827" title="Jump back to footnote 827 in the text">&#8617;</a></p>
+</li>
+<li id="fn:828">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:828" title="Jump back to footnote 828 in the text">&#8617;</a></p>
+</li>
+<li id="fn:829">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:829" title="Jump back to footnote 829 in the text">&#8617;</a></p>
+</li>
+<li id="fn:830">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:830" title="Jump back to footnote 830 in the text">&#8617;</a></p>
+</li>
+<li id="fn:831">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:831" title="Jump back to footnote 831 in the text">&#8617;</a></p>
+</li>
+<li id="fn:832">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:832" title="Jump back to footnote 832 in the text">&#8617;</a></p>
+</li>
+<li id="fn:833">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:833" title="Jump back to footnote 833 in the text">&#8617;</a></p>
+</li>
+<li id="fn:834">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:834" title="Jump back to footnote 834 in the text">&#8617;</a></p>
+</li>
+<li id="fn:835">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:835" title="Jump back to footnote 835 in the text">&#8617;</a></p>
+</li>
+<li id="fn:836">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:836" title="Jump back to footnote 836 in the text">&#8617;</a></p>
+</li>
+<li id="fn:837">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:837" title="Jump back to footnote 837 in the text">&#8617;</a></p>
+</li>
+<li id="fn:838">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:838" title="Jump back to footnote 838 in the text">&#8617;</a></p>
+</li>
+<li id="fn:839">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:839" title="Jump back to footnote 839 in the text">&#8617;</a></p>
+</li>
+<li id="fn:840">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:840" title="Jump back to footnote 840 in the text">&#8617;</a></p>
+</li>
+<li id="fn:841">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:841" title="Jump back to footnote 841 in the text">&#8617;</a></p>
+</li>
+<li id="fn:842">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:842" title="Jump back to footnote 842 in the text">&#8617;</a></p>
+</li>
+<li id="fn:843">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:843" title="Jump back to footnote 843 in the text">&#8617;</a></p>
+</li>
+<li id="fn:844">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:844" title="Jump back to footnote 844 in the text">&#8617;</a></p>
+</li>
+<li id="fn:845">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:845" title="Jump back to footnote 845 in the text">&#8617;</a></p>
+</li>
+<li id="fn:846">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:846" title="Jump back to footnote 846 in the text">&#8617;</a></p>
+</li>
+<li id="fn:847">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:847" title="Jump back to footnote 847 in the text">&#8617;</a></p>
+</li>
+<li id="fn:848">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:848" title="Jump back to footnote 848 in the text">&#8617;</a></p>
+</li>
+<li id="fn:849">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:849" title="Jump back to footnote 849 in the text">&#8617;</a></p>
+</li>
+<li id="fn:850">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:850" title="Jump back to footnote 850 in the text">&#8617;</a></p>
+</li>
+<li id="fn:851">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:851" title="Jump back to footnote 851 in the text">&#8617;</a></p>
+</li>
+<li id="fn:852">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:852" title="Jump back to footnote 852 in the text">&#8617;</a></p>
+</li>
+<li id="fn:853">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:853" title="Jump back to footnote 853 in the text">&#8617;</a></p>
+</li>
+<li id="fn:854">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:854" title="Jump back to footnote 854 in the text">&#8617;</a></p>
+</li>
+<li id="fn:855">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:855" title="Jump back to footnote 855 in the text">&#8617;</a></p>
+</li>
+<li id="fn:856">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:856" title="Jump back to footnote 856 in the text">&#8617;</a></p>
+</li>
+<li id="fn:857">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:857" title="Jump back to footnote 857 in the text">&#8617;</a></p>
+</li>
+<li id="fn:858">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:858" title="Jump back to footnote 858 in the text">&#8617;</a></p>
+</li>
+<li id="fn:859">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:859" title="Jump back to footnote 859 in the text">&#8617;</a></p>
+</li>
+<li id="fn:860">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:860" title="Jump back to footnote 860 in the text">&#8617;</a></p>
+</li>
+<li id="fn:861">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:861" title="Jump back to footnote 861 in the text">&#8617;</a></p>
+</li>
+<li id="fn:862">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:862" title="Jump back to footnote 862 in the text">&#8617;</a></p>
+</li>
+<li id="fn:863">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:863" title="Jump back to footnote 863 in the text">&#8617;</a></p>
+</li>
+<li id="fn:864">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:864" title="Jump back to footnote 864 in the text">&#8617;</a></p>
+</li>
+<li id="fn:865">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:865" title="Jump back to footnote 865 in the text">&#8617;</a></p>
+</li>
+<li id="fn:866">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:866" title="Jump back to footnote 866 in the text">&#8617;</a></p>
+</li>
+<li id="fn:867">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:867" title="Jump back to footnote 867 in the text">&#8617;</a></p>
+</li>
+<li id="fn:868">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:868" title="Jump back to footnote 868 in the text">&#8617;</a></p>
+</li>
+<li id="fn:869">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:869" title="Jump back to footnote 869 in the text">&#8617;</a></p>
+</li>
+<li id="fn:870">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:870" title="Jump back to footnote 870 in the text">&#8617;</a></p>
+</li>
+<li id="fn:871">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:871" title="Jump back to footnote 871 in the text">&#8617;</a></p>
+</li>
+<li id="fn:872">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:872" title="Jump back to footnote 872 in the text">&#8617;</a></p>
+</li>
+<li id="fn:873">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:873" title="Jump back to footnote 873 in the text">&#8617;</a></p>
+</li>
+<li id="fn:874">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:874" title="Jump back to footnote 874 in the text">&#8617;</a></p>
+</li>
+<li id="fn:875">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:875" title="Jump back to footnote 875 in the text">&#8617;</a></p>
+</li>
+<li id="fn:876">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:876" title="Jump back to footnote 876 in the text">&#8617;</a></p>
+</li>
+<li id="fn:877">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:877" title="Jump back to footnote 877 in the text">&#8617;</a></p>
+</li>
+<li id="fn:878">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:878" title="Jump back to footnote 878 in the text">&#8617;</a></p>
+</li>
+<li id="fn:879">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:879" title="Jump back to footnote 879 in the text">&#8617;</a></p>
+</li>
+<li id="fn:880">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:880" title="Jump back to footnote 880 in the text">&#8617;</a></p>
+</li>
+<li id="fn:881">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:881" title="Jump back to footnote 881 in the text">&#8617;</a></p>
+</li>
+<li id="fn:882">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:882" title="Jump back to footnote 882 in the text">&#8617;</a></p>
+</li>
+<li id="fn:883">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:883" title="Jump back to footnote 883 in the text">&#8617;</a></p>
+</li>
+<li id="fn:884">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:884" title="Jump back to footnote 884 in the text">&#8617;</a></p>
+</li>
+<li id="fn:885">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:885" title="Jump back to footnote 885 in the text">&#8617;</a></p>
+</li>
+<li id="fn:886">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:886" title="Jump back to footnote 886 in the text">&#8617;</a></p>
+</li>
+<li id="fn:887">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:887" title="Jump back to footnote 887 in the text">&#8617;</a></p>
+</li>
+<li id="fn:888">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:888" title="Jump back to footnote 888 in the text">&#8617;</a></p>
+</li>
+<li id="fn:889">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:889" title="Jump back to footnote 889 in the text">&#8617;</a></p>
+</li>
+<li id="fn:890">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:890" title="Jump back to footnote 890 in the text">&#8617;</a></p>
+</li>
+<li id="fn:891">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:891" title="Jump back to footnote 891 in the text">&#8617;</a></p>
+</li>
+<li id="fn:892">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:892" title="Jump back to footnote 892 in the text">&#8617;</a></p>
+</li>
+<li id="fn:893">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:893" title="Jump back to footnote 893 in the text">&#8617;</a></p>
+</li>
+<li id="fn:894">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:894" title="Jump back to footnote 894 in the text">&#8617;</a></p>
+</li>
+<li id="fn:895">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:895" title="Jump back to footnote 895 in the text">&#8617;</a></p>
+</li>
+<li id="fn:896">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:896" title="Jump back to footnote 896 in the text">&#8617;</a></p>
+</li>
+<li id="fn:897">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:897" title="Jump back to footnote 897 in the text">&#8617;</a></p>
+</li>
+<li id="fn:898">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:898" title="Jump back to footnote 898 in the text">&#8617;</a></p>
+</li>
+<li id="fn:899">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:899" title="Jump back to footnote 899 in the text">&#8617;</a></p>
+</li>
+<li id="fn:900">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:900" title="Jump back to footnote 900 in the text">&#8617;</a></p>
+</li>
+<li id="fn:901">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:901" title="Jump back to footnote 901 in the text">&#8617;</a></p>
+</li>
+<li id="fn:902">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:902" title="Jump back to footnote 902 in the text">&#8617;</a></p>
+</li>
+<li id="fn:903">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:903" title="Jump back to footnote 903 in the text">&#8617;</a></p>
+</li>
+<li id="fn:904">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:904" title="Jump back to footnote 904 in the text">&#8617;</a></p>
+</li>
+<li id="fn:905">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:905" title="Jump back to footnote 905 in the text">&#8617;</a></p>
+</li>
+<li id="fn:906">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:906" title="Jump back to footnote 906 in the text">&#8617;</a></p>
+</li>
+<li id="fn:907">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:907" title="Jump back to footnote 907 in the text">&#8617;</a></p>
+</li>
+<li id="fn:908">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:908" title="Jump back to footnote 908 in the text">&#8617;</a></p>
+</li>
+<li id="fn:909">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:909" title="Jump back to footnote 909 in the text">&#8617;</a></p>
+</li>
+<li id="fn:910">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:910" title="Jump back to footnote 910 in the text">&#8617;</a></p>
+</li>
+<li id="fn:911">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:911" title="Jump back to footnote 911 in the text">&#8617;</a></p>
+</li>
+<li id="fn:912">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:912" title="Jump back to footnote 912 in the text">&#8617;</a></p>
+</li>
+<li id="fn:913">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:913" title="Jump back to footnote 913 in the text">&#8617;</a></p>
+</li>
+<li id="fn:914">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:914" title="Jump back to footnote 914 in the text">&#8617;</a></p>
+</li>
+<li id="fn:915">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:915" title="Jump back to footnote 915 in the text">&#8617;</a></p>
+</li>
+<li id="fn:916">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:916" title="Jump back to footnote 916 in the text">&#8617;</a></p>
+</li>
+<li id="fn:917">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:917" title="Jump back to footnote 917 in the text">&#8617;</a></p>
+</li>
+<li id="fn:918">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:918" title="Jump back to footnote 918 in the text">&#8617;</a></p>
+</li>
+<li id="fn:919">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:919" title="Jump back to footnote 919 in the text">&#8617;</a></p>
+</li>
+<li id="fn:920">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:920" title="Jump back to footnote 920 in the text">&#8617;</a></p>
+</li>
+<li id="fn:921">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:921" title="Jump back to footnote 921 in the text">&#8617;</a></p>
+</li>
+<li id="fn:922">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:922" title="Jump back to footnote 922 in the text">&#8617;</a></p>
+</li>
+<li id="fn:923">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:923" title="Jump back to footnote 923 in the text">&#8617;</a></p>
+</li>
+<li id="fn:924">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:924" title="Jump back to footnote 924 in the text">&#8617;</a></p>
+</li>
+<li id="fn:925">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:925" title="Jump back to footnote 925 in the text">&#8617;</a></p>
+</li>
+<li id="fn:926">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:926" title="Jump back to footnote 926 in the text">&#8617;</a></p>
+</li>
+<li id="fn:927">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:927" title="Jump back to footnote 927 in the text">&#8617;</a></p>
+</li>
+<li id="fn:928">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:928" title="Jump back to footnote 928 in the text">&#8617;</a></p>
+</li>
+<li id="fn:929">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:929" title="Jump back to footnote 929 in the text">&#8617;</a></p>
+</li>
+<li id="fn:930">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:930" title="Jump back to footnote 930 in the text">&#8617;</a></p>
+</li>
+<li id="fn:931">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:931" title="Jump back to footnote 931 in the text">&#8617;</a></p>
+</li>
+<li id="fn:932">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:932" title="Jump back to footnote 932 in the text">&#8617;</a></p>
+</li>
+<li id="fn:933">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:933" title="Jump back to footnote 933 in the text">&#8617;</a></p>
+</li>
+<li id="fn:934">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:934" title="Jump back to footnote 934 in the text">&#8617;</a></p>
+</li>
+<li id="fn:935">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:935" title="Jump back to footnote 935 in the text">&#8617;</a></p>
+</li>
+<li id="fn:936">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:936" title="Jump back to footnote 936 in the text">&#8617;</a></p>
+</li>
+<li id="fn:937">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:937" title="Jump back to footnote 937 in the text">&#8617;</a></p>
+</li>
+<li id="fn:938">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:938" title="Jump back to footnote 938 in the text">&#8617;</a></p>
+</li>
+<li id="fn:939">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:939" title="Jump back to footnote 939 in the text">&#8617;</a></p>
+</li>
+<li id="fn:940">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:940" title="Jump back to footnote 940 in the text">&#8617;</a></p>
+</li>
+<li id="fn:941">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:941" title="Jump back to footnote 941 in the text">&#8617;</a></p>
+</li>
+<li id="fn:942">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:942" title="Jump back to footnote 942 in the text">&#8617;</a></p>
+</li>
+<li id="fn:943">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:943" title="Jump back to footnote 943 in the text">&#8617;</a></p>
+</li>
+<li id="fn:944">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:944" title="Jump back to footnote 944 in the text">&#8617;</a></p>
+</li>
+<li id="fn:945">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:945" title="Jump back to footnote 945 in the text">&#8617;</a></p>
+</li>
+<li id="fn:946">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:946" title="Jump back to footnote 946 in the text">&#8617;</a></p>
+</li>
+<li id="fn:947">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:947" title="Jump back to footnote 947 in the text">&#8617;</a></p>
+</li>
+<li id="fn:948">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:948" title="Jump back to footnote 948 in the text">&#8617;</a></p>
+</li>
+<li id="fn:949">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:949" title="Jump back to footnote 949 in the text">&#8617;</a></p>
+</li>
+<li id="fn:950">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:950" title="Jump back to footnote 950 in the text">&#8617;</a></p>
+</li>
+<li id="fn:951">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:951" title="Jump back to footnote 951 in the text">&#8617;</a></p>
+</li>
+<li id="fn:952">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:952" title="Jump back to footnote 952 in the text">&#8617;</a></p>
+</li>
+<li id="fn:953">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:953" title="Jump back to footnote 953 in the text">&#8617;</a></p>
+</li>
+<li id="fn:954">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:954" title="Jump back to footnote 954 in the text">&#8617;</a></p>
+</li>
+<li id="fn:955">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:955" title="Jump back to footnote 955 in the text">&#8617;</a></p>
+</li>
+<li id="fn:956">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:956" title="Jump back to footnote 956 in the text">&#8617;</a></p>
+</li>
+<li id="fn:957">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:957" title="Jump back to footnote 957 in the text">&#8617;</a></p>
+</li>
+<li id="fn:958">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:958" title="Jump back to footnote 958 in the text">&#8617;</a></p>
+</li>
+<li id="fn:959">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:959" title="Jump back to footnote 959 in the text">&#8617;</a></p>
+</li>
+<li id="fn:960">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:960" title="Jump back to footnote 960 in the text">&#8617;</a></p>
+</li>
+<li id="fn:961">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:961" title="Jump back to footnote 961 in the text">&#8617;</a></p>
+</li>
+<li id="fn:962">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:962" title="Jump back to footnote 962 in the text">&#8617;</a></p>
+</li>
+<li id="fn:963">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:963" title="Jump back to footnote 963 in the text">&#8617;</a></p>
+</li>
+<li id="fn:964">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:964" title="Jump back to footnote 964 in the text">&#8617;</a></p>
+</li>
+<li id="fn:965">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:965" title="Jump back to footnote 965 in the text">&#8617;</a></p>
+</li>
+<li id="fn:966">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:966" title="Jump back to footnote 966 in the text">&#8617;</a></p>
+</li>
+<li id="fn:967">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:967" title="Jump back to footnote 967 in the text">&#8617;</a></p>
+</li>
+<li id="fn:968">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:968" title="Jump back to footnote 968 in the text">&#8617;</a></p>
+</li>
+<li id="fn:969">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:969" title="Jump back to footnote 969 in the text">&#8617;</a></p>
+</li>
+<li id="fn:970">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:970" title="Jump back to footnote 970 in the text">&#8617;</a></p>
+</li>
+<li id="fn:971">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:971" title="Jump back to footnote 971 in the text">&#8617;</a></p>
+</li>
+<li id="fn:972">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:972" title="Jump back to footnote 972 in the text">&#8617;</a></p>
+</li>
+<li id="fn:973">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:973" title="Jump back to footnote 973 in the text">&#8617;</a></p>
+</li>
+<li id="fn:974">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:974" title="Jump back to footnote 974 in the text">&#8617;</a></p>
+</li>
+<li id="fn:975">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:975" title="Jump back to footnote 975 in the text">&#8617;</a></p>
+</li>
+<li id="fn:976">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:976" title="Jump back to footnote 976 in the text">&#8617;</a></p>
+</li>
+<li id="fn:977">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:977" title="Jump back to footnote 977 in the text">&#8617;</a></p>
+</li>
+<li id="fn:978">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:978" title="Jump back to footnote 978 in the text">&#8617;</a></p>
+</li>
+<li id="fn:979">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:979" title="Jump back to footnote 979 in the text">&#8617;</a></p>
+</li>
+<li id="fn:980">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:980" title="Jump back to footnote 980 in the text">&#8617;</a></p>
+</li>
+<li id="fn:981">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:981" title="Jump back to footnote 981 in the text">&#8617;</a></p>
+</li>
+<li id="fn:982">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:982" title="Jump back to footnote 982 in the text">&#8617;</a></p>
+</li>
+<li id="fn:983">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:983" title="Jump back to footnote 983 in the text">&#8617;</a></p>
+</li>
+<li id="fn:984">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:984" title="Jump back to footnote 984 in the text">&#8617;</a></p>
+</li>
+<li id="fn:985">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:985" title="Jump back to footnote 985 in the text">&#8617;</a></p>
+</li>
+<li id="fn:986">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:986" title="Jump back to footnote 986 in the text">&#8617;</a></p>
+</li>
+<li id="fn:987">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:987" title="Jump back to footnote 987 in the text">&#8617;</a></p>
+</li>
+<li id="fn:988">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:988" title="Jump back to footnote 988 in the text">&#8617;</a></p>
+</li>
+<li id="fn:989">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:989" title="Jump back to footnote 989 in the text">&#8617;</a></p>
+</li>
+<li id="fn:990">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:990" title="Jump back to footnote 990 in the text">&#8617;</a></p>
+</li>
+<li id="fn:991">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:991" title="Jump back to footnote 991 in the text">&#8617;</a></p>
+</li>
+<li id="fn:992">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:992" title="Jump back to footnote 992 in the text">&#8617;</a></p>
+</li>
+<li id="fn:993">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:993" title="Jump back to footnote 993 in the text">&#8617;</a></p>
+</li>
+<li id="fn:994">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:994" title="Jump back to footnote 994 in the text">&#8617;</a></p>
+</li>
+<li id="fn:995">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:995" title="Jump back to footnote 995 in the text">&#8617;</a></p>
+</li>
+<li id="fn:996">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:996" title="Jump back to footnote 996 in the text">&#8617;</a></p>
+</li>
+<li id="fn:997">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:997" title="Jump back to footnote 997 in the text">&#8617;</a></p>
+</li>
+<li id="fn:998">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:998" title="Jump back to footnote 998 in the text">&#8617;</a></p>
+</li>
+<li id="fn:999">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:999" title="Jump back to footnote 999 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1000">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1000" title="Jump back to footnote 1000 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1001">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1001" title="Jump back to footnote 1001 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1002">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1002" title="Jump back to footnote 1002 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1003">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1003" title="Jump back to footnote 1003 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1004">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1004" title="Jump back to footnote 1004 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1005">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1005" title="Jump back to footnote 1005 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1006">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1006" title="Jump back to footnote 1006 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1007">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1007" title="Jump back to footnote 1007 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1008">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1008" title="Jump back to footnote 1008 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1009">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1009" title="Jump back to footnote 1009 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1010">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1010" title="Jump back to footnote 1010 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1011">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1011" title="Jump back to footnote 1011 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1012">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1012" title="Jump back to footnote 1012 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1013">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1013" title="Jump back to footnote 1013 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1014">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1014" title="Jump back to footnote 1014 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1015">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1015" title="Jump back to footnote 1015 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1016">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1016" title="Jump back to footnote 1016 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1017">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1017" title="Jump back to footnote 1017 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1018">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1018" title="Jump back to footnote 1018 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1019">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1019" title="Jump back to footnote 1019 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1020">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1020" title="Jump back to footnote 1020 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1021">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1021" title="Jump back to footnote 1021 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1022">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1022" title="Jump back to footnote 1022 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1023">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1023" title="Jump back to footnote 1023 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1024">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1024" title="Jump back to footnote 1024 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1025">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1025" title="Jump back to footnote 1025 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1026">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1026" title="Jump back to footnote 1026 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1027">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1027" title="Jump back to footnote 1027 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1028">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1028" title="Jump back to footnote 1028 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1029">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1029" title="Jump back to footnote 1029 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1030">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1030" title="Jump back to footnote 1030 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1031">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1031" title="Jump back to footnote 1031 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1032">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1032" title="Jump back to footnote 1032 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1033">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1033" title="Jump back to footnote 1033 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1034">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1034" title="Jump back to footnote 1034 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1035">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1035" title="Jump back to footnote 1035 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1036">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1036" title="Jump back to footnote 1036 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1037">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1037" title="Jump back to footnote 1037 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1038">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1038" title="Jump back to footnote 1038 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1039">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1039" title="Jump back to footnote 1039 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1040">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1040" title="Jump back to footnote 1040 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1041">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1041" title="Jump back to footnote 1041 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1042">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1042" title="Jump back to footnote 1042 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1043">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1043" title="Jump back to footnote 1043 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1044">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1044" title="Jump back to footnote 1044 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1045">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1045" title="Jump back to footnote 1045 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1046">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1046" title="Jump back to footnote 1046 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1047">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1047" title="Jump back to footnote 1047 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1048">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1048" title="Jump back to footnote 1048 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1049">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1049" title="Jump back to footnote 1049 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1050">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1050" title="Jump back to footnote 1050 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1051">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1051" title="Jump back to footnote 1051 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1052">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1052" title="Jump back to footnote 1052 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1053">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1053" title="Jump back to footnote 1053 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1054">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1054" title="Jump back to footnote 1054 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1055">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1055" title="Jump back to footnote 1055 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1056">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1056" title="Jump back to footnote 1056 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1057">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1057" title="Jump back to footnote 1057 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1058">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1058" title="Jump back to footnote 1058 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1059">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1059" title="Jump back to footnote 1059 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1060">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1060" title="Jump back to footnote 1060 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1061">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1061" title="Jump back to footnote 1061 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1062">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1062" title="Jump back to footnote 1062 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1063">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1063" title="Jump back to footnote 1063 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1064">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1064" title="Jump back to footnote 1064 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1065">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1065" title="Jump back to footnote 1065 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1066">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1066" title="Jump back to footnote 1066 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1067">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1067" title="Jump back to footnote 1067 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1068">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1068" title="Jump back to footnote 1068 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1069">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1069" title="Jump back to footnote 1069 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1070">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1070" title="Jump back to footnote 1070 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1071">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1071" title="Jump back to footnote 1071 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1072">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1072" title="Jump back to footnote 1072 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1073">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1073" title="Jump back to footnote 1073 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1074">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1074" title="Jump back to footnote 1074 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1075">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1075" title="Jump back to footnote 1075 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1076">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1076" title="Jump back to footnote 1076 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1077">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1077" title="Jump back to footnote 1077 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1078">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1078" title="Jump back to footnote 1078 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1079">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1079" title="Jump back to footnote 1079 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1080">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1080" title="Jump back to footnote 1080 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1081">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1081" title="Jump back to footnote 1081 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1082">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1082" title="Jump back to footnote 1082 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1083">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1083" title="Jump back to footnote 1083 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1084">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1084" title="Jump back to footnote 1084 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1085">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1085" title="Jump back to footnote 1085 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1086">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1086" title="Jump back to footnote 1086 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1087">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1087" title="Jump back to footnote 1087 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1088">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1088" title="Jump back to footnote 1088 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1089">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1089" title="Jump back to footnote 1089 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1090">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1090" title="Jump back to footnote 1090 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1091">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1091" title="Jump back to footnote 1091 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1092">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1092" title="Jump back to footnote 1092 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1093">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1093" title="Jump back to footnote 1093 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1094">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1094" title="Jump back to footnote 1094 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1095">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1095" title="Jump back to footnote 1095 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1096">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1096" title="Jump back to footnote 1096 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1097">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1097" title="Jump back to footnote 1097 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1098">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1098" title="Jump back to footnote 1098 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1099">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1099" title="Jump back to footnote 1099 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1100">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1100" title="Jump back to footnote 1100 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1101">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1101" title="Jump back to footnote 1101 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1102">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1102" title="Jump back to footnote 1102 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1103">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1103" title="Jump back to footnote 1103 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1104">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1104" title="Jump back to footnote 1104 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1105">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1105" title="Jump back to footnote 1105 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1106">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1106" title="Jump back to footnote 1106 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1107">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1107" title="Jump back to footnote 1107 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1108">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1108" title="Jump back to footnote 1108 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1109">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1109" title="Jump back to footnote 1109 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1110">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1110" title="Jump back to footnote 1110 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1111">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1111" title="Jump back to footnote 1111 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1112">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1112" title="Jump back to footnote 1112 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1113">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1113" title="Jump back to footnote 1113 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1114">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1114" title="Jump back to footnote 1114 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1115">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1115" title="Jump back to footnote 1115 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1116">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1116" title="Jump back to footnote 1116 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1117">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1117" title="Jump back to footnote 1117 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1118">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1118" title="Jump back to footnote 1118 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1119">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1119" title="Jump back to footnote 1119 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1120">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1120" title="Jump back to footnote 1120 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1121">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1121" title="Jump back to footnote 1121 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1122">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1122" title="Jump back to footnote 1122 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1123">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1123" title="Jump back to footnote 1123 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1124">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1124" title="Jump back to footnote 1124 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1125">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1125" title="Jump back to footnote 1125 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1126">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1126" title="Jump back to footnote 1126 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1127">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1127" title="Jump back to footnote 1127 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1128">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1128" title="Jump back to footnote 1128 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1129">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1129" title="Jump back to footnote 1129 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1130">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1130" title="Jump back to footnote 1130 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1131">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1131" title="Jump back to footnote 1131 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1132">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1132" title="Jump back to footnote 1132 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1133">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1133" title="Jump back to footnote 1133 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1134">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1134" title="Jump back to footnote 1134 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1135">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1135" title="Jump back to footnote 1135 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1136">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1136" title="Jump back to footnote 1136 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1137">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1137" title="Jump back to footnote 1137 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1138">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1138" title="Jump back to footnote 1138 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1139">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1139" title="Jump back to footnote 1139 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1140">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1140" title="Jump back to footnote 1140 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1141">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1141" title="Jump back to footnote 1141 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1142">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1142" title="Jump back to footnote 1142 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1143">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1143" title="Jump back to footnote 1143 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1144">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1144" title="Jump back to footnote 1144 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1145">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1145" title="Jump back to footnote 1145 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1146">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1146" title="Jump back to footnote 1146 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1147">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1147" title="Jump back to footnote 1147 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1148">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1148" title="Jump back to footnote 1148 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1149">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1149" title="Jump back to footnote 1149 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1150">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1150" title="Jump back to footnote 1150 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1151">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1151" title="Jump back to footnote 1151 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1152">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1152" title="Jump back to footnote 1152 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1153">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1153" title="Jump back to footnote 1153 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1154">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1154" title="Jump back to footnote 1154 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1155">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1155" title="Jump back to footnote 1155 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1156">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1156" title="Jump back to footnote 1156 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1157">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1157" title="Jump back to footnote 1157 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1158">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1158" title="Jump back to footnote 1158 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1159">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1159" title="Jump back to footnote 1159 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1160">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1160" title="Jump back to footnote 1160 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1161">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1161" title="Jump back to footnote 1161 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1162">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1162" title="Jump back to footnote 1162 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1163">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1163" title="Jump back to footnote 1163 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1164">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1164" title="Jump back to footnote 1164 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1165">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1165" title="Jump back to footnote 1165 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1166">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1166" title="Jump back to footnote 1166 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1167">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1167" title="Jump back to footnote 1167 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1168">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1168" title="Jump back to footnote 1168 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1169">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1169" title="Jump back to footnote 1169 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1170">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1170" title="Jump back to footnote 1170 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1171">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1171" title="Jump back to footnote 1171 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1172">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1172" title="Jump back to footnote 1172 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1173">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1173" title="Jump back to footnote 1173 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1174">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1174" title="Jump back to footnote 1174 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1175">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1175" title="Jump back to footnote 1175 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1176">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1176" title="Jump back to footnote 1176 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1177">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1177" title="Jump back to footnote 1177 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1178">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1178" title="Jump back to footnote 1178 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1179">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1179" title="Jump back to footnote 1179 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1180">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1180" title="Jump back to footnote 1180 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1181">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1181" title="Jump back to footnote 1181 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1182">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1182" title="Jump back to footnote 1182 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1183">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1183" title="Jump back to footnote 1183 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1184">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1184" title="Jump back to footnote 1184 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1185">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1185" title="Jump back to footnote 1185 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1186">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1186" title="Jump back to footnote 1186 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1187">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1187" title="Jump back to footnote 1187 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1188">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1188" title="Jump back to footnote 1188 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1189">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1189" title="Jump back to footnote 1189 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1190">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1190" title="Jump back to footnote 1190 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1191">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1191" title="Jump back to footnote 1191 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1192">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1192" title="Jump back to footnote 1192 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1193">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1193" title="Jump back to footnote 1193 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1194">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1194" title="Jump back to footnote 1194 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1195">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1195" title="Jump back to footnote 1195 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1196">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1196" title="Jump back to footnote 1196 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1197">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1197" title="Jump back to footnote 1197 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1198">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1198" title="Jump back to footnote 1198 in the text">&#8617;</a></p>
+</li>
+<li id="fn:1199">
+<p>Another thing&#160;<a class="footnote-backref" href="#fnref:1199" title="Jump back to footnote 1199 in the text">&#8617;</a></p>
+</li>
+</ol>
+</div> \ No newline at end of file
diff --git a/tests/extensions/extra/footnote_many_footnotes.txt b/tests/extensions/extra/footnote_many_footnotes.txt
new file mode 100644
index 0000000..cd5ee8d
--- /dev/null
+++ b/tests/extensions/extra/footnote_many_footnotes.txt
@@ -0,0 +1,4796 @@
+Something[^1]
+
+Something[^2]
+
+Something[^3]
+
+Something[^4]
+
+Something[^5]
+
+Something[^6]
+
+Something[^7]
+
+Something[^8]
+
+Something[^9]
+
+Something[^10]
+
+Something[^11]
+
+Something[^12]
+
+Something[^13]
+
+Something[^14]
+
+Something[^15]
+
+Something[^16]
+
+Something[^17]
+
+Something[^18]
+
+Something[^19]
+
+Something[^20]
+
+Something[^21]
+
+Something[^22]
+
+Something[^23]
+
+Something[^24]
+
+Something[^25]
+
+Something[^26]
+
+Something[^27]
+
+Something[^28]
+
+Something[^29]
+
+Something[^30]
+
+Something[^31]
+
+Something[^32]
+
+Something[^33]
+
+Something[^34]
+
+Something[^35]
+
+Something[^36]
+
+Something[^37]
+
+Something[^38]
+
+Something[^39]
+
+Something[^40]
+
+Something[^41]
+
+Something[^42]
+
+Something[^43]
+
+Something[^44]
+
+Something[^45]
+
+Something[^46]
+
+Something[^47]
+
+Something[^48]
+
+Something[^49]
+
+Something[^50]
+
+Something[^51]
+
+Something[^52]
+
+Something[^53]
+
+Something[^54]
+
+Something[^55]
+
+Something[^56]
+
+Something[^57]
+
+Something[^58]
+
+Something[^59]
+
+Something[^60]
+
+Something[^61]
+
+Something[^62]
+
+Something[^63]
+
+Something[^64]
+
+Something[^65]
+
+Something[^66]
+
+Something[^67]
+
+Something[^68]
+
+Something[^69]
+
+Something[^70]
+
+Something[^71]
+
+Something[^72]
+
+Something[^73]
+
+Something[^74]
+
+Something[^75]
+
+Something[^76]
+
+Something[^77]
+
+Something[^78]
+
+Something[^79]
+
+Something[^80]
+
+Something[^81]
+
+Something[^82]
+
+Something[^83]
+
+Something[^84]
+
+Something[^85]
+
+Something[^86]
+
+Something[^87]
+
+Something[^88]
+
+Something[^89]
+
+Something[^90]
+
+Something[^91]
+
+Something[^92]
+
+Something[^93]
+
+Something[^94]
+
+Something[^95]
+
+Something[^96]
+
+Something[^97]
+
+Something[^98]
+
+Something[^99]
+
+Something[^100]
+
+Something[^101]
+
+Something[^102]
+
+Something[^103]
+
+Something[^104]
+
+Something[^105]
+
+Something[^106]
+
+Something[^107]
+
+Something[^108]
+
+Something[^109]
+
+Something[^110]
+
+Something[^111]
+
+Something[^112]
+
+Something[^113]
+
+Something[^114]
+
+Something[^115]
+
+Something[^116]
+
+Something[^117]
+
+Something[^118]
+
+Something[^119]
+
+Something[^120]
+
+Something[^121]
+
+Something[^122]
+
+Something[^123]
+
+Something[^124]
+
+Something[^125]
+
+Something[^126]
+
+Something[^127]
+
+Something[^128]
+
+Something[^129]
+
+Something[^130]
+
+Something[^131]
+
+Something[^132]
+
+Something[^133]
+
+Something[^134]
+
+Something[^135]
+
+Something[^136]
+
+Something[^137]
+
+Something[^138]
+
+Something[^139]
+
+Something[^140]
+
+Something[^141]
+
+Something[^142]
+
+Something[^143]
+
+Something[^144]
+
+Something[^145]
+
+Something[^146]
+
+Something[^147]
+
+Something[^148]
+
+Something[^149]
+
+Something[^150]
+
+Something[^151]
+
+Something[^152]
+
+Something[^153]
+
+Something[^154]
+
+Something[^155]
+
+Something[^156]
+
+Something[^157]
+
+Something[^158]
+
+Something[^159]
+
+Something[^160]
+
+Something[^161]
+
+Something[^162]
+
+Something[^163]
+
+Something[^164]
+
+Something[^165]
+
+Something[^166]
+
+Something[^167]
+
+Something[^168]
+
+Something[^169]
+
+Something[^170]
+
+Something[^171]
+
+Something[^172]
+
+Something[^173]
+
+Something[^174]
+
+Something[^175]
+
+Something[^176]
+
+Something[^177]
+
+Something[^178]
+
+Something[^179]
+
+Something[^180]
+
+Something[^181]
+
+Something[^182]
+
+Something[^183]
+
+Something[^184]
+
+Something[^185]
+
+Something[^186]
+
+Something[^187]
+
+Something[^188]
+
+Something[^189]
+
+Something[^190]
+
+Something[^191]
+
+Something[^192]
+
+Something[^193]
+
+Something[^194]
+
+Something[^195]
+
+Something[^196]
+
+Something[^197]
+
+Something[^198]
+
+Something[^199]
+
+Something[^200]
+
+Something[^201]
+
+Something[^202]
+
+Something[^203]
+
+Something[^204]
+
+Something[^205]
+
+Something[^206]
+
+Something[^207]
+
+Something[^208]
+
+Something[^209]
+
+Something[^210]
+
+Something[^211]
+
+Something[^212]
+
+Something[^213]
+
+Something[^214]
+
+Something[^215]
+
+Something[^216]
+
+Something[^217]
+
+Something[^218]
+
+Something[^219]
+
+Something[^220]
+
+Something[^221]
+
+Something[^222]
+
+Something[^223]
+
+Something[^224]
+
+Something[^225]
+
+Something[^226]
+
+Something[^227]
+
+Something[^228]
+
+Something[^229]
+
+Something[^230]
+
+Something[^231]
+
+Something[^232]
+
+Something[^233]
+
+Something[^234]
+
+Something[^235]
+
+Something[^236]
+
+Something[^237]
+
+Something[^238]
+
+Something[^239]
+
+Something[^240]
+
+Something[^241]
+
+Something[^242]
+
+Something[^243]
+
+Something[^244]
+
+Something[^245]
+
+Something[^246]
+
+Something[^247]
+
+Something[^248]
+
+Something[^249]
+
+Something[^250]
+
+Something[^251]
+
+Something[^252]
+
+Something[^253]
+
+Something[^254]
+
+Something[^255]
+
+Something[^256]
+
+Something[^257]
+
+Something[^258]
+
+Something[^259]
+
+Something[^260]
+
+Something[^261]
+
+Something[^262]
+
+Something[^263]
+
+Something[^264]
+
+Something[^265]
+
+Something[^266]
+
+Something[^267]
+
+Something[^268]
+
+Something[^269]
+
+Something[^270]
+
+Something[^271]
+
+Something[^272]
+
+Something[^273]
+
+Something[^274]
+
+Something[^275]
+
+Something[^276]
+
+Something[^277]
+
+Something[^278]
+
+Something[^279]
+
+Something[^280]
+
+Something[^281]
+
+Something[^282]
+
+Something[^283]
+
+Something[^284]
+
+Something[^285]
+
+Something[^286]
+
+Something[^287]
+
+Something[^288]
+
+Something[^289]
+
+Something[^290]
+
+Something[^291]
+
+Something[^292]
+
+Something[^293]
+
+Something[^294]
+
+Something[^295]
+
+Something[^296]
+
+Something[^297]
+
+Something[^298]
+
+Something[^299]
+
+Something[^300]
+
+Something[^301]
+
+Something[^302]
+
+Something[^303]
+
+Something[^304]
+
+Something[^305]
+
+Something[^306]
+
+Something[^307]
+
+Something[^308]
+
+Something[^309]
+
+Something[^310]
+
+Something[^311]
+
+Something[^312]
+
+Something[^313]
+
+Something[^314]
+
+Something[^315]
+
+Something[^316]
+
+Something[^317]
+
+Something[^318]
+
+Something[^319]
+
+Something[^320]
+
+Something[^321]
+
+Something[^322]
+
+Something[^323]
+
+Something[^324]
+
+Something[^325]
+
+Something[^326]
+
+Something[^327]
+
+Something[^328]
+
+Something[^329]
+
+Something[^330]
+
+Something[^331]
+
+Something[^332]
+
+Something[^333]
+
+Something[^334]
+
+Something[^335]
+
+Something[^336]
+
+Something[^337]
+
+Something[^338]
+
+Something[^339]
+
+Something[^340]
+
+Something[^341]
+
+Something[^342]
+
+Something[^343]
+
+Something[^344]
+
+Something[^345]
+
+Something[^346]
+
+Something[^347]
+
+Something[^348]
+
+Something[^349]
+
+Something[^350]
+
+Something[^351]
+
+Something[^352]
+
+Something[^353]
+
+Something[^354]
+
+Something[^355]
+
+Something[^356]
+
+Something[^357]
+
+Something[^358]
+
+Something[^359]
+
+Something[^360]
+
+Something[^361]
+
+Something[^362]
+
+Something[^363]
+
+Something[^364]
+
+Something[^365]
+
+Something[^366]
+
+Something[^367]
+
+Something[^368]
+
+Something[^369]
+
+Something[^370]
+
+Something[^371]
+
+Something[^372]
+
+Something[^373]
+
+Something[^374]
+
+Something[^375]
+
+Something[^376]
+
+Something[^377]
+
+Something[^378]
+
+Something[^379]
+
+Something[^380]
+
+Something[^381]
+
+Something[^382]
+
+Something[^383]
+
+Something[^384]
+
+Something[^385]
+
+Something[^386]
+
+Something[^387]
+
+Something[^388]
+
+Something[^389]
+
+Something[^390]
+
+Something[^391]
+
+Something[^392]
+
+Something[^393]
+
+Something[^394]
+
+Something[^395]
+
+Something[^396]
+
+Something[^397]
+
+Something[^398]
+
+Something[^399]
+
+Something[^400]
+
+Something[^401]
+
+Something[^402]
+
+Something[^403]
+
+Something[^404]
+
+Something[^405]
+
+Something[^406]
+
+Something[^407]
+
+Something[^408]
+
+Something[^409]
+
+Something[^410]
+
+Something[^411]
+
+Something[^412]
+
+Something[^413]
+
+Something[^414]
+
+Something[^415]
+
+Something[^416]
+
+Something[^417]
+
+Something[^418]
+
+Something[^419]
+
+Something[^420]
+
+Something[^421]
+
+Something[^422]
+
+Something[^423]
+
+Something[^424]
+
+Something[^425]
+
+Something[^426]
+
+Something[^427]
+
+Something[^428]
+
+Something[^429]
+
+Something[^430]
+
+Something[^431]
+
+Something[^432]
+
+Something[^433]
+
+Something[^434]
+
+Something[^435]
+
+Something[^436]
+
+Something[^437]
+
+Something[^438]
+
+Something[^439]
+
+Something[^440]
+
+Something[^441]
+
+Something[^442]
+
+Something[^443]
+
+Something[^444]
+
+Something[^445]
+
+Something[^446]
+
+Something[^447]
+
+Something[^448]
+
+Something[^449]
+
+Something[^450]
+
+Something[^451]
+
+Something[^452]
+
+Something[^453]
+
+Something[^454]
+
+Something[^455]
+
+Something[^456]
+
+Something[^457]
+
+Something[^458]
+
+Something[^459]
+
+Something[^460]
+
+Something[^461]
+
+Something[^462]
+
+Something[^463]
+
+Something[^464]
+
+Something[^465]
+
+Something[^466]
+
+Something[^467]
+
+Something[^468]
+
+Something[^469]
+
+Something[^470]
+
+Something[^471]
+
+Something[^472]
+
+Something[^473]
+
+Something[^474]
+
+Something[^475]
+
+Something[^476]
+
+Something[^477]
+
+Something[^478]
+
+Something[^479]
+
+Something[^480]
+
+Something[^481]
+
+Something[^482]
+
+Something[^483]
+
+Something[^484]
+
+Something[^485]
+
+Something[^486]
+
+Something[^487]
+
+Something[^488]
+
+Something[^489]
+
+Something[^490]
+
+Something[^491]
+
+Something[^492]
+
+Something[^493]
+
+Something[^494]
+
+Something[^495]
+
+Something[^496]
+
+Something[^497]
+
+Something[^498]
+
+Something[^499]
+
+Something[^500]
+
+Something[^501]
+
+Something[^502]
+
+Something[^503]
+
+Something[^504]
+
+Something[^505]
+
+Something[^506]
+
+Something[^507]
+
+Something[^508]
+
+Something[^509]
+
+Something[^510]
+
+Something[^511]
+
+Something[^512]
+
+Something[^513]
+
+Something[^514]
+
+Something[^515]
+
+Something[^516]
+
+Something[^517]
+
+Something[^518]
+
+Something[^519]
+
+Something[^520]
+
+Something[^521]
+
+Something[^522]
+
+Something[^523]
+
+Something[^524]
+
+Something[^525]
+
+Something[^526]
+
+Something[^527]
+
+Something[^528]
+
+Something[^529]
+
+Something[^530]
+
+Something[^531]
+
+Something[^532]
+
+Something[^533]
+
+Something[^534]
+
+Something[^535]
+
+Something[^536]
+
+Something[^537]
+
+Something[^538]
+
+Something[^539]
+
+Something[^540]
+
+Something[^541]
+
+Something[^542]
+
+Something[^543]
+
+Something[^544]
+
+Something[^545]
+
+Something[^546]
+
+Something[^547]
+
+Something[^548]
+
+Something[^549]
+
+Something[^550]
+
+Something[^551]
+
+Something[^552]
+
+Something[^553]
+
+Something[^554]
+
+Something[^555]
+
+Something[^556]
+
+Something[^557]
+
+Something[^558]
+
+Something[^559]
+
+Something[^560]
+
+Something[^561]
+
+Something[^562]
+
+Something[^563]
+
+Something[^564]
+
+Something[^565]
+
+Something[^566]
+
+Something[^567]
+
+Something[^568]
+
+Something[^569]
+
+Something[^570]
+
+Something[^571]
+
+Something[^572]
+
+Something[^573]
+
+Something[^574]
+
+Something[^575]
+
+Something[^576]
+
+Something[^577]
+
+Something[^578]
+
+Something[^579]
+
+Something[^580]
+
+Something[^581]
+
+Something[^582]
+
+Something[^583]
+
+Something[^584]
+
+Something[^585]
+
+Something[^586]
+
+Something[^587]
+
+Something[^588]
+
+Something[^589]
+
+Something[^590]
+
+Something[^591]
+
+Something[^592]
+
+Something[^593]
+
+Something[^594]
+
+Something[^595]
+
+Something[^596]
+
+Something[^597]
+
+Something[^598]
+
+Something[^599]
+
+Something[^600]
+
+Something[^601]
+
+Something[^602]
+
+Something[^603]
+
+Something[^604]
+
+Something[^605]
+
+Something[^606]
+
+Something[^607]
+
+Something[^608]
+
+Something[^609]
+
+Something[^610]
+
+Something[^611]
+
+Something[^612]
+
+Something[^613]
+
+Something[^614]
+
+Something[^615]
+
+Something[^616]
+
+Something[^617]
+
+Something[^618]
+
+Something[^619]
+
+Something[^620]
+
+Something[^621]
+
+Something[^622]
+
+Something[^623]
+
+Something[^624]
+
+Something[^625]
+
+Something[^626]
+
+Something[^627]
+
+Something[^628]
+
+Something[^629]
+
+Something[^630]
+
+Something[^631]
+
+Something[^632]
+
+Something[^633]
+
+Something[^634]
+
+Something[^635]
+
+Something[^636]
+
+Something[^637]
+
+Something[^638]
+
+Something[^639]
+
+Something[^640]
+
+Something[^641]
+
+Something[^642]
+
+Something[^643]
+
+Something[^644]
+
+Something[^645]
+
+Something[^646]
+
+Something[^647]
+
+Something[^648]
+
+Something[^649]
+
+Something[^650]
+
+Something[^651]
+
+Something[^652]
+
+Something[^653]
+
+Something[^654]
+
+Something[^655]
+
+Something[^656]
+
+Something[^657]
+
+Something[^658]
+
+Something[^659]
+
+Something[^660]
+
+Something[^661]
+
+Something[^662]
+
+Something[^663]
+
+Something[^664]
+
+Something[^665]
+
+Something[^666]
+
+Something[^667]
+
+Something[^668]
+
+Something[^669]
+
+Something[^670]
+
+Something[^671]
+
+Something[^672]
+
+Something[^673]
+
+Something[^674]
+
+Something[^675]
+
+Something[^676]
+
+Something[^677]
+
+Something[^678]
+
+Something[^679]
+
+Something[^680]
+
+Something[^681]
+
+Something[^682]
+
+Something[^683]
+
+Something[^684]
+
+Something[^685]
+
+Something[^686]
+
+Something[^687]
+
+Something[^688]
+
+Something[^689]
+
+Something[^690]
+
+Something[^691]
+
+Something[^692]
+
+Something[^693]
+
+Something[^694]
+
+Something[^695]
+
+Something[^696]
+
+Something[^697]
+
+Something[^698]
+
+Something[^699]
+
+Something[^700]
+
+Something[^701]
+
+Something[^702]
+
+Something[^703]
+
+Something[^704]
+
+Something[^705]
+
+Something[^706]
+
+Something[^707]
+
+Something[^708]
+
+Something[^709]
+
+Something[^710]
+
+Something[^711]
+
+Something[^712]
+
+Something[^713]
+
+Something[^714]
+
+Something[^715]
+
+Something[^716]
+
+Something[^717]
+
+Something[^718]
+
+Something[^719]
+
+Something[^720]
+
+Something[^721]
+
+Something[^722]
+
+Something[^723]
+
+Something[^724]
+
+Something[^725]
+
+Something[^726]
+
+Something[^727]
+
+Something[^728]
+
+Something[^729]
+
+Something[^730]
+
+Something[^731]
+
+Something[^732]
+
+Something[^733]
+
+Something[^734]
+
+Something[^735]
+
+Something[^736]
+
+Something[^737]
+
+Something[^738]
+
+Something[^739]
+
+Something[^740]
+
+Something[^741]
+
+Something[^742]
+
+Something[^743]
+
+Something[^744]
+
+Something[^745]
+
+Something[^746]
+
+Something[^747]
+
+Something[^748]
+
+Something[^749]
+
+Something[^750]
+
+Something[^751]
+
+Something[^752]
+
+Something[^753]
+
+Something[^754]
+
+Something[^755]
+
+Something[^756]
+
+Something[^757]
+
+Something[^758]
+
+Something[^759]
+
+Something[^760]
+
+Something[^761]
+
+Something[^762]
+
+Something[^763]
+
+Something[^764]
+
+Something[^765]
+
+Something[^766]
+
+Something[^767]
+
+Something[^768]
+
+Something[^769]
+
+Something[^770]
+
+Something[^771]
+
+Something[^772]
+
+Something[^773]
+
+Something[^774]
+
+Something[^775]
+
+Something[^776]
+
+Something[^777]
+
+Something[^778]
+
+Something[^779]
+
+Something[^780]
+
+Something[^781]
+
+Something[^782]
+
+Something[^783]
+
+Something[^784]
+
+Something[^785]
+
+Something[^786]
+
+Something[^787]
+
+Something[^788]
+
+Something[^789]
+
+Something[^790]
+
+Something[^791]
+
+Something[^792]
+
+Something[^793]
+
+Something[^794]
+
+Something[^795]
+
+Something[^796]
+
+Something[^797]
+
+Something[^798]
+
+Something[^799]
+
+Something[^800]
+
+Something[^801]
+
+Something[^802]
+
+Something[^803]
+
+Something[^804]
+
+Something[^805]
+
+Something[^806]
+
+Something[^807]
+
+Something[^808]
+
+Something[^809]
+
+Something[^810]
+
+Something[^811]
+
+Something[^812]
+
+Something[^813]
+
+Something[^814]
+
+Something[^815]
+
+Something[^816]
+
+Something[^817]
+
+Something[^818]
+
+Something[^819]
+
+Something[^820]
+
+Something[^821]
+
+Something[^822]
+
+Something[^823]
+
+Something[^824]
+
+Something[^825]
+
+Something[^826]
+
+Something[^827]
+
+Something[^828]
+
+Something[^829]
+
+Something[^830]
+
+Something[^831]
+
+Something[^832]
+
+Something[^833]
+
+Something[^834]
+
+Something[^835]
+
+Something[^836]
+
+Something[^837]
+
+Something[^838]
+
+Something[^839]
+
+Something[^840]
+
+Something[^841]
+
+Something[^842]
+
+Something[^843]
+
+Something[^844]
+
+Something[^845]
+
+Something[^846]
+
+Something[^847]
+
+Something[^848]
+
+Something[^849]
+
+Something[^850]
+
+Something[^851]
+
+Something[^852]
+
+Something[^853]
+
+Something[^854]
+
+Something[^855]
+
+Something[^856]
+
+Something[^857]
+
+Something[^858]
+
+Something[^859]
+
+Something[^860]
+
+Something[^861]
+
+Something[^862]
+
+Something[^863]
+
+Something[^864]
+
+Something[^865]
+
+Something[^866]
+
+Something[^867]
+
+Something[^868]
+
+Something[^869]
+
+Something[^870]
+
+Something[^871]
+
+Something[^872]
+
+Something[^873]
+
+Something[^874]
+
+Something[^875]
+
+Something[^876]
+
+Something[^877]
+
+Something[^878]
+
+Something[^879]
+
+Something[^880]
+
+Something[^881]
+
+Something[^882]
+
+Something[^883]
+
+Something[^884]
+
+Something[^885]
+
+Something[^886]
+
+Something[^887]
+
+Something[^888]
+
+Something[^889]
+
+Something[^890]
+
+Something[^891]
+
+Something[^892]
+
+Something[^893]
+
+Something[^894]
+
+Something[^895]
+
+Something[^896]
+
+Something[^897]
+
+Something[^898]
+
+Something[^899]
+
+Something[^900]
+
+Something[^901]
+
+Something[^902]
+
+Something[^903]
+
+Something[^904]
+
+Something[^905]
+
+Something[^906]
+
+Something[^907]
+
+Something[^908]
+
+Something[^909]
+
+Something[^910]
+
+Something[^911]
+
+Something[^912]
+
+Something[^913]
+
+Something[^914]
+
+Something[^915]
+
+Something[^916]
+
+Something[^917]
+
+Something[^918]
+
+Something[^919]
+
+Something[^920]
+
+Something[^921]
+
+Something[^922]
+
+Something[^923]
+
+Something[^924]
+
+Something[^925]
+
+Something[^926]
+
+Something[^927]
+
+Something[^928]
+
+Something[^929]
+
+Something[^930]
+
+Something[^931]
+
+Something[^932]
+
+Something[^933]
+
+Something[^934]
+
+Something[^935]
+
+Something[^936]
+
+Something[^937]
+
+Something[^938]
+
+Something[^939]
+
+Something[^940]
+
+Something[^941]
+
+Something[^942]
+
+Something[^943]
+
+Something[^944]
+
+Something[^945]
+
+Something[^946]
+
+Something[^947]
+
+Something[^948]
+
+Something[^949]
+
+Something[^950]
+
+Something[^951]
+
+Something[^952]
+
+Something[^953]
+
+Something[^954]
+
+Something[^955]
+
+Something[^956]
+
+Something[^957]
+
+Something[^958]
+
+Something[^959]
+
+Something[^960]
+
+Something[^961]
+
+Something[^962]
+
+Something[^963]
+
+Something[^964]
+
+Something[^965]
+
+Something[^966]
+
+Something[^967]
+
+Something[^968]
+
+Something[^969]
+
+Something[^970]
+
+Something[^971]
+
+Something[^972]
+
+Something[^973]
+
+Something[^974]
+
+Something[^975]
+
+Something[^976]
+
+Something[^977]
+
+Something[^978]
+
+Something[^979]
+
+Something[^980]
+
+Something[^981]
+
+Something[^982]
+
+Something[^983]
+
+Something[^984]
+
+Something[^985]
+
+Something[^986]
+
+Something[^987]
+
+Something[^988]
+
+Something[^989]
+
+Something[^990]
+
+Something[^991]
+
+Something[^992]
+
+Something[^993]
+
+Something[^994]
+
+Something[^995]
+
+Something[^996]
+
+Something[^997]
+
+Something[^998]
+
+Something[^999]
+
+Something[^1000]
+
+Something[^1001]
+
+Something[^1002]
+
+Something[^1003]
+
+Something[^1004]
+
+Something[^1005]
+
+Something[^1006]
+
+Something[^1007]
+
+Something[^1008]
+
+Something[^1009]
+
+Something[^1010]
+
+Something[^1011]
+
+Something[^1012]
+
+Something[^1013]
+
+Something[^1014]
+
+Something[^1015]
+
+Something[^1016]
+
+Something[^1017]
+
+Something[^1018]
+
+Something[^1019]
+
+Something[^1020]
+
+Something[^1021]
+
+Something[^1022]
+
+Something[^1023]
+
+Something[^1024]
+
+Something[^1025]
+
+Something[^1026]
+
+Something[^1027]
+
+Something[^1028]
+
+Something[^1029]
+
+Something[^1030]
+
+Something[^1031]
+
+Something[^1032]
+
+Something[^1033]
+
+Something[^1034]
+
+Something[^1035]
+
+Something[^1036]
+
+Something[^1037]
+
+Something[^1038]
+
+Something[^1039]
+
+Something[^1040]
+
+Something[^1041]
+
+Something[^1042]
+
+Something[^1043]
+
+Something[^1044]
+
+Something[^1045]
+
+Something[^1046]
+
+Something[^1047]
+
+Something[^1048]
+
+Something[^1049]
+
+Something[^1050]
+
+Something[^1051]
+
+Something[^1052]
+
+Something[^1053]
+
+Something[^1054]
+
+Something[^1055]
+
+Something[^1056]
+
+Something[^1057]
+
+Something[^1058]
+
+Something[^1059]
+
+Something[^1060]
+
+Something[^1061]
+
+Something[^1062]
+
+Something[^1063]
+
+Something[^1064]
+
+Something[^1065]
+
+Something[^1066]
+
+Something[^1067]
+
+Something[^1068]
+
+Something[^1069]
+
+Something[^1070]
+
+Something[^1071]
+
+Something[^1072]
+
+Something[^1073]
+
+Something[^1074]
+
+Something[^1075]
+
+Something[^1076]
+
+Something[^1077]
+
+Something[^1078]
+
+Something[^1079]
+
+Something[^1080]
+
+Something[^1081]
+
+Something[^1082]
+
+Something[^1083]
+
+Something[^1084]
+
+Something[^1085]
+
+Something[^1086]
+
+Something[^1087]
+
+Something[^1088]
+
+Something[^1089]
+
+Something[^1090]
+
+Something[^1091]
+
+Something[^1092]
+
+Something[^1093]
+
+Something[^1094]
+
+Something[^1095]
+
+Something[^1096]
+
+Something[^1097]
+
+Something[^1098]
+
+Something[^1099]
+
+Something[^1100]
+
+Something[^1101]
+
+Something[^1102]
+
+Something[^1103]
+
+Something[^1104]
+
+Something[^1105]
+
+Something[^1106]
+
+Something[^1107]
+
+Something[^1108]
+
+Something[^1109]
+
+Something[^1110]
+
+Something[^1111]
+
+Something[^1112]
+
+Something[^1113]
+
+Something[^1114]
+
+Something[^1115]
+
+Something[^1116]
+
+Something[^1117]
+
+Something[^1118]
+
+Something[^1119]
+
+Something[^1120]
+
+Something[^1121]
+
+Something[^1122]
+
+Something[^1123]
+
+Something[^1124]
+
+Something[^1125]
+
+Something[^1126]
+
+Something[^1127]
+
+Something[^1128]
+
+Something[^1129]
+
+Something[^1130]
+
+Something[^1131]
+
+Something[^1132]
+
+Something[^1133]
+
+Something[^1134]
+
+Something[^1135]
+
+Something[^1136]
+
+Something[^1137]
+
+Something[^1138]
+
+Something[^1139]
+
+Something[^1140]
+
+Something[^1141]
+
+Something[^1142]
+
+Something[^1143]
+
+Something[^1144]
+
+Something[^1145]
+
+Something[^1146]
+
+Something[^1147]
+
+Something[^1148]
+
+Something[^1149]
+
+Something[^1150]
+
+Something[^1151]
+
+Something[^1152]
+
+Something[^1153]
+
+Something[^1154]
+
+Something[^1155]
+
+Something[^1156]
+
+Something[^1157]
+
+Something[^1158]
+
+Something[^1159]
+
+Something[^1160]
+
+Something[^1161]
+
+Something[^1162]
+
+Something[^1163]
+
+Something[^1164]
+
+Something[^1165]
+
+Something[^1166]
+
+Something[^1167]
+
+Something[^1168]
+
+Something[^1169]
+
+Something[^1170]
+
+Something[^1171]
+
+Something[^1172]
+
+Something[^1173]
+
+Something[^1174]
+
+Something[^1175]
+
+Something[^1176]
+
+Something[^1177]
+
+Something[^1178]
+
+Something[^1179]
+
+Something[^1180]
+
+Something[^1181]
+
+Something[^1182]
+
+Something[^1183]
+
+Something[^1184]
+
+Something[^1185]
+
+Something[^1186]
+
+Something[^1187]
+
+Something[^1188]
+
+Something[^1189]
+
+Something[^1190]
+
+Something[^1191]
+
+Something[^1192]
+
+Something[^1193]
+
+Something[^1194]
+
+Something[^1195]
+
+Something[^1196]
+
+Something[^1197]
+
+Something[^1198]
+
+Something[^1199]
+
+[^1]: Another thing
+
+[^2]: Another thing
+
+[^3]: Another thing
+
+[^4]: Another thing
+
+[^5]: Another thing
+
+[^6]: Another thing
+
+[^7]: Another thing
+
+[^8]: Another thing
+
+[^9]: Another thing
+
+[^10]: Another thing
+
+[^11]: Another thing
+
+[^12]: Another thing
+
+[^13]: Another thing
+
+[^14]: Another thing
+
+[^15]: Another thing
+
+[^16]: Another thing
+
+[^17]: Another thing
+
+[^18]: Another thing
+
+[^19]: Another thing
+
+[^20]: Another thing
+
+[^21]: Another thing
+
+[^22]: Another thing
+
+[^23]: Another thing
+
+[^24]: Another thing
+
+[^25]: Another thing
+
+[^26]: Another thing
+
+[^27]: Another thing
+
+[^28]: Another thing
+
+[^29]: Another thing
+
+[^30]: Another thing
+
+[^31]: Another thing
+
+[^32]: Another thing
+
+[^33]: Another thing
+
+[^34]: Another thing
+
+[^35]: Another thing
+
+[^36]: Another thing
+
+[^37]: Another thing
+
+[^38]: Another thing
+
+[^39]: Another thing
+
+[^40]: Another thing
+
+[^41]: Another thing
+
+[^42]: Another thing
+
+[^43]: Another thing
+
+[^44]: Another thing
+
+[^45]: Another thing
+
+[^46]: Another thing
+
+[^47]: Another thing
+
+[^48]: Another thing
+
+[^49]: Another thing
+
+[^50]: Another thing
+
+[^51]: Another thing
+
+[^52]: Another thing
+
+[^53]: Another thing
+
+[^54]: Another thing
+
+[^55]: Another thing
+
+[^56]: Another thing
+
+[^57]: Another thing
+
+[^58]: Another thing
+
+[^59]: Another thing
+
+[^60]: Another thing
+
+[^61]: Another thing
+
+[^62]: Another thing
+
+[^63]: Another thing
+
+[^64]: Another thing
+
+[^65]: Another thing
+
+[^66]: Another thing
+
+[^67]: Another thing
+
+[^68]: Another thing
+
+[^69]: Another thing
+
+[^70]: Another thing
+
+[^71]: Another thing
+
+[^72]: Another thing
+
+[^73]: Another thing
+
+[^74]: Another thing
+
+[^75]: Another thing
+
+[^76]: Another thing
+
+[^77]: Another thing
+
+[^78]: Another thing
+
+[^79]: Another thing
+
+[^80]: Another thing
+
+[^81]: Another thing
+
+[^82]: Another thing
+
+[^83]: Another thing
+
+[^84]: Another thing
+
+[^85]: Another thing
+
+[^86]: Another thing
+
+[^87]: Another thing
+
+[^88]: Another thing
+
+[^89]: Another thing
+
+[^90]: Another thing
+
+[^91]: Another thing
+
+[^92]: Another thing
+
+[^93]: Another thing
+
+[^94]: Another thing
+
+[^95]: Another thing
+
+[^96]: Another thing
+
+[^97]: Another thing
+
+[^98]: Another thing
+
+[^99]: Another thing
+
+[^100]: Another thing
+
+[^101]: Another thing
+
+[^102]: Another thing
+
+[^103]: Another thing
+
+[^104]: Another thing
+
+[^105]: Another thing
+
+[^106]: Another thing
+
+[^107]: Another thing
+
+[^108]: Another thing
+
+[^109]: Another thing
+
+[^110]: Another thing
+
+[^111]: Another thing
+
+[^112]: Another thing
+
+[^113]: Another thing
+
+[^114]: Another thing
+
+[^115]: Another thing
+
+[^116]: Another thing
+
+[^117]: Another thing
+
+[^118]: Another thing
+
+[^119]: Another thing
+
+[^120]: Another thing
+
+[^121]: Another thing
+
+[^122]: Another thing
+
+[^123]: Another thing
+
+[^124]: Another thing
+
+[^125]: Another thing
+
+[^126]: Another thing
+
+[^127]: Another thing
+
+[^128]: Another thing
+
+[^129]: Another thing
+
+[^130]: Another thing
+
+[^131]: Another thing
+
+[^132]: Another thing
+
+[^133]: Another thing
+
+[^134]: Another thing
+
+[^135]: Another thing
+
+[^136]: Another thing
+
+[^137]: Another thing
+
+[^138]: Another thing
+
+[^139]: Another thing
+
+[^140]: Another thing
+
+[^141]: Another thing
+
+[^142]: Another thing
+
+[^143]: Another thing
+
+[^144]: Another thing
+
+[^145]: Another thing
+
+[^146]: Another thing
+
+[^147]: Another thing
+
+[^148]: Another thing
+
+[^149]: Another thing
+
+[^150]: Another thing
+
+[^151]: Another thing
+
+[^152]: Another thing
+
+[^153]: Another thing
+
+[^154]: Another thing
+
+[^155]: Another thing
+
+[^156]: Another thing
+
+[^157]: Another thing
+
+[^158]: Another thing
+
+[^159]: Another thing
+
+[^160]: Another thing
+
+[^161]: Another thing
+
+[^162]: Another thing
+
+[^163]: Another thing
+
+[^164]: Another thing
+
+[^165]: Another thing
+
+[^166]: Another thing
+
+[^167]: Another thing
+
+[^168]: Another thing
+
+[^169]: Another thing
+
+[^170]: Another thing
+
+[^171]: Another thing
+
+[^172]: Another thing
+
+[^173]: Another thing
+
+[^174]: Another thing
+
+[^175]: Another thing
+
+[^176]: Another thing
+
+[^177]: Another thing
+
+[^178]: Another thing
+
+[^179]: Another thing
+
+[^180]: Another thing
+
+[^181]: Another thing
+
+[^182]: Another thing
+
+[^183]: Another thing
+
+[^184]: Another thing
+
+[^185]: Another thing
+
+[^186]: Another thing
+
+[^187]: Another thing
+
+[^188]: Another thing
+
+[^189]: Another thing
+
+[^190]: Another thing
+
+[^191]: Another thing
+
+[^192]: Another thing
+
+[^193]: Another thing
+
+[^194]: Another thing
+
+[^195]: Another thing
+
+[^196]: Another thing
+
+[^197]: Another thing
+
+[^198]: Another thing
+
+[^199]: Another thing
+
+[^200]: Another thing
+
+[^201]: Another thing
+
+[^202]: Another thing
+
+[^203]: Another thing
+
+[^204]: Another thing
+
+[^205]: Another thing
+
+[^206]: Another thing
+
+[^207]: Another thing
+
+[^208]: Another thing
+
+[^209]: Another thing
+
+[^210]: Another thing
+
+[^211]: Another thing
+
+[^212]: Another thing
+
+[^213]: Another thing
+
+[^214]: Another thing
+
+[^215]: Another thing
+
+[^216]: Another thing
+
+[^217]: Another thing
+
+[^218]: Another thing
+
+[^219]: Another thing
+
+[^220]: Another thing
+
+[^221]: Another thing
+
+[^222]: Another thing
+
+[^223]: Another thing
+
+[^224]: Another thing
+
+[^225]: Another thing
+
+[^226]: Another thing
+
+[^227]: Another thing
+
+[^228]: Another thing
+
+[^229]: Another thing
+
+[^230]: Another thing
+
+[^231]: Another thing
+
+[^232]: Another thing
+
+[^233]: Another thing
+
+[^234]: Another thing
+
+[^235]: Another thing
+
+[^236]: Another thing
+
+[^237]: Another thing
+
+[^238]: Another thing
+
+[^239]: Another thing
+
+[^240]: Another thing
+
+[^241]: Another thing
+
+[^242]: Another thing
+
+[^243]: Another thing
+
+[^244]: Another thing
+
+[^245]: Another thing
+
+[^246]: Another thing
+
+[^247]: Another thing
+
+[^248]: Another thing
+
+[^249]: Another thing
+
+[^250]: Another thing
+
+[^251]: Another thing
+
+[^252]: Another thing
+
+[^253]: Another thing
+
+[^254]: Another thing
+
+[^255]: Another thing
+
+[^256]: Another thing
+
+[^257]: Another thing
+
+[^258]: Another thing
+
+[^259]: Another thing
+
+[^260]: Another thing
+
+[^261]: Another thing
+
+[^262]: Another thing
+
+[^263]: Another thing
+
+[^264]: Another thing
+
+[^265]: Another thing
+
+[^266]: Another thing
+
+[^267]: Another thing
+
+[^268]: Another thing
+
+[^269]: Another thing
+
+[^270]: Another thing
+
+[^271]: Another thing
+
+[^272]: Another thing
+
+[^273]: Another thing
+
+[^274]: Another thing
+
+[^275]: Another thing
+
+[^276]: Another thing
+
+[^277]: Another thing
+
+[^278]: Another thing
+
+[^279]: Another thing
+
+[^280]: Another thing
+
+[^281]: Another thing
+
+[^282]: Another thing
+
+[^283]: Another thing
+
+[^284]: Another thing
+
+[^285]: Another thing
+
+[^286]: Another thing
+
+[^287]: Another thing
+
+[^288]: Another thing
+
+[^289]: Another thing
+
+[^290]: Another thing
+
+[^291]: Another thing
+
+[^292]: Another thing
+
+[^293]: Another thing
+
+[^294]: Another thing
+
+[^295]: Another thing
+
+[^296]: Another thing
+
+[^297]: Another thing
+
+[^298]: Another thing
+
+[^299]: Another thing
+
+[^300]: Another thing
+
+[^301]: Another thing
+
+[^302]: Another thing
+
+[^303]: Another thing
+
+[^304]: Another thing
+
+[^305]: Another thing
+
+[^306]: Another thing
+
+[^307]: Another thing
+
+[^308]: Another thing
+
+[^309]: Another thing
+
+[^310]: Another thing
+
+[^311]: Another thing
+
+[^312]: Another thing
+
+[^313]: Another thing
+
+[^314]: Another thing
+
+[^315]: Another thing
+
+[^316]: Another thing
+
+[^317]: Another thing
+
+[^318]: Another thing
+
+[^319]: Another thing
+
+[^320]: Another thing
+
+[^321]: Another thing
+
+[^322]: Another thing
+
+[^323]: Another thing
+
+[^324]: Another thing
+
+[^325]: Another thing
+
+[^326]: Another thing
+
+[^327]: Another thing
+
+[^328]: Another thing
+
+[^329]: Another thing
+
+[^330]: Another thing
+
+[^331]: Another thing
+
+[^332]: Another thing
+
+[^333]: Another thing
+
+[^334]: Another thing
+
+[^335]: Another thing
+
+[^336]: Another thing
+
+[^337]: Another thing
+
+[^338]: Another thing
+
+[^339]: Another thing
+
+[^340]: Another thing
+
+[^341]: Another thing
+
+[^342]: Another thing
+
+[^343]: Another thing
+
+[^344]: Another thing
+
+[^345]: Another thing
+
+[^346]: Another thing
+
+[^347]: Another thing
+
+[^348]: Another thing
+
+[^349]: Another thing
+
+[^350]: Another thing
+
+[^351]: Another thing
+
+[^352]: Another thing
+
+[^353]: Another thing
+
+[^354]: Another thing
+
+[^355]: Another thing
+
+[^356]: Another thing
+
+[^357]: Another thing
+
+[^358]: Another thing
+
+[^359]: Another thing
+
+[^360]: Another thing
+
+[^361]: Another thing
+
+[^362]: Another thing
+
+[^363]: Another thing
+
+[^364]: Another thing
+
+[^365]: Another thing
+
+[^366]: Another thing
+
+[^367]: Another thing
+
+[^368]: Another thing
+
+[^369]: Another thing
+
+[^370]: Another thing
+
+[^371]: Another thing
+
+[^372]: Another thing
+
+[^373]: Another thing
+
+[^374]: Another thing
+
+[^375]: Another thing
+
+[^376]: Another thing
+
+[^377]: Another thing
+
+[^378]: Another thing
+
+[^379]: Another thing
+
+[^380]: Another thing
+
+[^381]: Another thing
+
+[^382]: Another thing
+
+[^383]: Another thing
+
+[^384]: Another thing
+
+[^385]: Another thing
+
+[^386]: Another thing
+
+[^387]: Another thing
+
+[^388]: Another thing
+
+[^389]: Another thing
+
+[^390]: Another thing
+
+[^391]: Another thing
+
+[^392]: Another thing
+
+[^393]: Another thing
+
+[^394]: Another thing
+
+[^395]: Another thing
+
+[^396]: Another thing
+
+[^397]: Another thing
+
+[^398]: Another thing
+
+[^399]: Another thing
+
+[^400]: Another thing
+
+[^401]: Another thing
+
+[^402]: Another thing
+
+[^403]: Another thing
+
+[^404]: Another thing
+
+[^405]: Another thing
+
+[^406]: Another thing
+
+[^407]: Another thing
+
+[^408]: Another thing
+
+[^409]: Another thing
+
+[^410]: Another thing
+
+[^411]: Another thing
+
+[^412]: Another thing
+
+[^413]: Another thing
+
+[^414]: Another thing
+
+[^415]: Another thing
+
+[^416]: Another thing
+
+[^417]: Another thing
+
+[^418]: Another thing
+
+[^419]: Another thing
+
+[^420]: Another thing
+
+[^421]: Another thing
+
+[^422]: Another thing
+
+[^423]: Another thing
+
+[^424]: Another thing
+
+[^425]: Another thing
+
+[^426]: Another thing
+
+[^427]: Another thing
+
+[^428]: Another thing
+
+[^429]: Another thing
+
+[^430]: Another thing
+
+[^431]: Another thing
+
+[^432]: Another thing
+
+[^433]: Another thing
+
+[^434]: Another thing
+
+[^435]: Another thing
+
+[^436]: Another thing
+
+[^437]: Another thing
+
+[^438]: Another thing
+
+[^439]: Another thing
+
+[^440]: Another thing
+
+[^441]: Another thing
+
+[^442]: Another thing
+
+[^443]: Another thing
+
+[^444]: Another thing
+
+[^445]: Another thing
+
+[^446]: Another thing
+
+[^447]: Another thing
+
+[^448]: Another thing
+
+[^449]: Another thing
+
+[^450]: Another thing
+
+[^451]: Another thing
+
+[^452]: Another thing
+
+[^453]: Another thing
+
+[^454]: Another thing
+
+[^455]: Another thing
+
+[^456]: Another thing
+
+[^457]: Another thing
+
+[^458]: Another thing
+
+[^459]: Another thing
+
+[^460]: Another thing
+
+[^461]: Another thing
+
+[^462]: Another thing
+
+[^463]: Another thing
+
+[^464]: Another thing
+
+[^465]: Another thing
+
+[^466]: Another thing
+
+[^467]: Another thing
+
+[^468]: Another thing
+
+[^469]: Another thing
+
+[^470]: Another thing
+
+[^471]: Another thing
+
+[^472]: Another thing
+
+[^473]: Another thing
+
+[^474]: Another thing
+
+[^475]: Another thing
+
+[^476]: Another thing
+
+[^477]: Another thing
+
+[^478]: Another thing
+
+[^479]: Another thing
+
+[^480]: Another thing
+
+[^481]: Another thing
+
+[^482]: Another thing
+
+[^483]: Another thing
+
+[^484]: Another thing
+
+[^485]: Another thing
+
+[^486]: Another thing
+
+[^487]: Another thing
+
+[^488]: Another thing
+
+[^489]: Another thing
+
+[^490]: Another thing
+
+[^491]: Another thing
+
+[^492]: Another thing
+
+[^493]: Another thing
+
+[^494]: Another thing
+
+[^495]: Another thing
+
+[^496]: Another thing
+
+[^497]: Another thing
+
+[^498]: Another thing
+
+[^499]: Another thing
+
+[^500]: Another thing
+
+[^501]: Another thing
+
+[^502]: Another thing
+
+[^503]: Another thing
+
+[^504]: Another thing
+
+[^505]: Another thing
+
+[^506]: Another thing
+
+[^507]: Another thing
+
+[^508]: Another thing
+
+[^509]: Another thing
+
+[^510]: Another thing
+
+[^511]: Another thing
+
+[^512]: Another thing
+
+[^513]: Another thing
+
+[^514]: Another thing
+
+[^515]: Another thing
+
+[^516]: Another thing
+
+[^517]: Another thing
+
+[^518]: Another thing
+
+[^519]: Another thing
+
+[^520]: Another thing
+
+[^521]: Another thing
+
+[^522]: Another thing
+
+[^523]: Another thing
+
+[^524]: Another thing
+
+[^525]: Another thing
+
+[^526]: Another thing
+
+[^527]: Another thing
+
+[^528]: Another thing
+
+[^529]: Another thing
+
+[^530]: Another thing
+
+[^531]: Another thing
+
+[^532]: Another thing
+
+[^533]: Another thing
+
+[^534]: Another thing
+
+[^535]: Another thing
+
+[^536]: Another thing
+
+[^537]: Another thing
+
+[^538]: Another thing
+
+[^539]: Another thing
+
+[^540]: Another thing
+
+[^541]: Another thing
+
+[^542]: Another thing
+
+[^543]: Another thing
+
+[^544]: Another thing
+
+[^545]: Another thing
+
+[^546]: Another thing
+
+[^547]: Another thing
+
+[^548]: Another thing
+
+[^549]: Another thing
+
+[^550]: Another thing
+
+[^551]: Another thing
+
+[^552]: Another thing
+
+[^553]: Another thing
+
+[^554]: Another thing
+
+[^555]: Another thing
+
+[^556]: Another thing
+
+[^557]: Another thing
+
+[^558]: Another thing
+
+[^559]: Another thing
+
+[^560]: Another thing
+
+[^561]: Another thing
+
+[^562]: Another thing
+
+[^563]: Another thing
+
+[^564]: Another thing
+
+[^565]: Another thing
+
+[^566]: Another thing
+
+[^567]: Another thing
+
+[^568]: Another thing
+
+[^569]: Another thing
+
+[^570]: Another thing
+
+[^571]: Another thing
+
+[^572]: Another thing
+
+[^573]: Another thing
+
+[^574]: Another thing
+
+[^575]: Another thing
+
+[^576]: Another thing
+
+[^577]: Another thing
+
+[^578]: Another thing
+
+[^579]: Another thing
+
+[^580]: Another thing
+
+[^581]: Another thing
+
+[^582]: Another thing
+
+[^583]: Another thing
+
+[^584]: Another thing
+
+[^585]: Another thing
+
+[^586]: Another thing
+
+[^587]: Another thing
+
+[^588]: Another thing
+
+[^589]: Another thing
+
+[^590]: Another thing
+
+[^591]: Another thing
+
+[^592]: Another thing
+
+[^593]: Another thing
+
+[^594]: Another thing
+
+[^595]: Another thing
+
+[^596]: Another thing
+
+[^597]: Another thing
+
+[^598]: Another thing
+
+[^599]: Another thing
+
+[^600]: Another thing
+
+[^601]: Another thing
+
+[^602]: Another thing
+
+[^603]: Another thing
+
+[^604]: Another thing
+
+[^605]: Another thing
+
+[^606]: Another thing
+
+[^607]: Another thing
+
+[^608]: Another thing
+
+[^609]: Another thing
+
+[^610]: Another thing
+
+[^611]: Another thing
+
+[^612]: Another thing
+
+[^613]: Another thing
+
+[^614]: Another thing
+
+[^615]: Another thing
+
+[^616]: Another thing
+
+[^617]: Another thing
+
+[^618]: Another thing
+
+[^619]: Another thing
+
+[^620]: Another thing
+
+[^621]: Another thing
+
+[^622]: Another thing
+
+[^623]: Another thing
+
+[^624]: Another thing
+
+[^625]: Another thing
+
+[^626]: Another thing
+
+[^627]: Another thing
+
+[^628]: Another thing
+
+[^629]: Another thing
+
+[^630]: Another thing
+
+[^631]: Another thing
+
+[^632]: Another thing
+
+[^633]: Another thing
+
+[^634]: Another thing
+
+[^635]: Another thing
+
+[^636]: Another thing
+
+[^637]: Another thing
+
+[^638]: Another thing
+
+[^639]: Another thing
+
+[^640]: Another thing
+
+[^641]: Another thing
+
+[^642]: Another thing
+
+[^643]: Another thing
+
+[^644]: Another thing
+
+[^645]: Another thing
+
+[^646]: Another thing
+
+[^647]: Another thing
+
+[^648]: Another thing
+
+[^649]: Another thing
+
+[^650]: Another thing
+
+[^651]: Another thing
+
+[^652]: Another thing
+
+[^653]: Another thing
+
+[^654]: Another thing
+
+[^655]: Another thing
+
+[^656]: Another thing
+
+[^657]: Another thing
+
+[^658]: Another thing
+
+[^659]: Another thing
+
+[^660]: Another thing
+
+[^661]: Another thing
+
+[^662]: Another thing
+
+[^663]: Another thing
+
+[^664]: Another thing
+
+[^665]: Another thing
+
+[^666]: Another thing
+
+[^667]: Another thing
+
+[^668]: Another thing
+
+[^669]: Another thing
+
+[^670]: Another thing
+
+[^671]: Another thing
+
+[^672]: Another thing
+
+[^673]: Another thing
+
+[^674]: Another thing
+
+[^675]: Another thing
+
+[^676]: Another thing
+
+[^677]: Another thing
+
+[^678]: Another thing
+
+[^679]: Another thing
+
+[^680]: Another thing
+
+[^681]: Another thing
+
+[^682]: Another thing
+
+[^683]: Another thing
+
+[^684]: Another thing
+
+[^685]: Another thing
+
+[^686]: Another thing
+
+[^687]: Another thing
+
+[^688]: Another thing
+
+[^689]: Another thing
+
+[^690]: Another thing
+
+[^691]: Another thing
+
+[^692]: Another thing
+
+[^693]: Another thing
+
+[^694]: Another thing
+
+[^695]: Another thing
+
+[^696]: Another thing
+
+[^697]: Another thing
+
+[^698]: Another thing
+
+[^699]: Another thing
+
+[^700]: Another thing
+
+[^701]: Another thing
+
+[^702]: Another thing
+
+[^703]: Another thing
+
+[^704]: Another thing
+
+[^705]: Another thing
+
+[^706]: Another thing
+
+[^707]: Another thing
+
+[^708]: Another thing
+
+[^709]: Another thing
+
+[^710]: Another thing
+
+[^711]: Another thing
+
+[^712]: Another thing
+
+[^713]: Another thing
+
+[^714]: Another thing
+
+[^715]: Another thing
+
+[^716]: Another thing
+
+[^717]: Another thing
+
+[^718]: Another thing
+
+[^719]: Another thing
+
+[^720]: Another thing
+
+[^721]: Another thing
+
+[^722]: Another thing
+
+[^723]: Another thing
+
+[^724]: Another thing
+
+[^725]: Another thing
+
+[^726]: Another thing
+
+[^727]: Another thing
+
+[^728]: Another thing
+
+[^729]: Another thing
+
+[^730]: Another thing
+
+[^731]: Another thing
+
+[^732]: Another thing
+
+[^733]: Another thing
+
+[^734]: Another thing
+
+[^735]: Another thing
+
+[^736]: Another thing
+
+[^737]: Another thing
+
+[^738]: Another thing
+
+[^739]: Another thing
+
+[^740]: Another thing
+
+[^741]: Another thing
+
+[^742]: Another thing
+
+[^743]: Another thing
+
+[^744]: Another thing
+
+[^745]: Another thing
+
+[^746]: Another thing
+
+[^747]: Another thing
+
+[^748]: Another thing
+
+[^749]: Another thing
+
+[^750]: Another thing
+
+[^751]: Another thing
+
+[^752]: Another thing
+
+[^753]: Another thing
+
+[^754]: Another thing
+
+[^755]: Another thing
+
+[^756]: Another thing
+
+[^757]: Another thing
+
+[^758]: Another thing
+
+[^759]: Another thing
+
+[^760]: Another thing
+
+[^761]: Another thing
+
+[^762]: Another thing
+
+[^763]: Another thing
+
+[^764]: Another thing
+
+[^765]: Another thing
+
+[^766]: Another thing
+
+[^767]: Another thing
+
+[^768]: Another thing
+
+[^769]: Another thing
+
+[^770]: Another thing
+
+[^771]: Another thing
+
+[^772]: Another thing
+
+[^773]: Another thing
+
+[^774]: Another thing
+
+[^775]: Another thing
+
+[^776]: Another thing
+
+[^777]: Another thing
+
+[^778]: Another thing
+
+[^779]: Another thing
+
+[^780]: Another thing
+
+[^781]: Another thing
+
+[^782]: Another thing
+
+[^783]: Another thing
+
+[^784]: Another thing
+
+[^785]: Another thing
+
+[^786]: Another thing
+
+[^787]: Another thing
+
+[^788]: Another thing
+
+[^789]: Another thing
+
+[^790]: Another thing
+
+[^791]: Another thing
+
+[^792]: Another thing
+
+[^793]: Another thing
+
+[^794]: Another thing
+
+[^795]: Another thing
+
+[^796]: Another thing
+
+[^797]: Another thing
+
+[^798]: Another thing
+
+[^799]: Another thing
+
+[^800]: Another thing
+
+[^801]: Another thing
+
+[^802]: Another thing
+
+[^803]: Another thing
+
+[^804]: Another thing
+
+[^805]: Another thing
+
+[^806]: Another thing
+
+[^807]: Another thing
+
+[^808]: Another thing
+
+[^809]: Another thing
+
+[^810]: Another thing
+
+[^811]: Another thing
+
+[^812]: Another thing
+
+[^813]: Another thing
+
+[^814]: Another thing
+
+[^815]: Another thing
+
+[^816]: Another thing
+
+[^817]: Another thing
+
+[^818]: Another thing
+
+[^819]: Another thing
+
+[^820]: Another thing
+
+[^821]: Another thing
+
+[^822]: Another thing
+
+[^823]: Another thing
+
+[^824]: Another thing
+
+[^825]: Another thing
+
+[^826]: Another thing
+
+[^827]: Another thing
+
+[^828]: Another thing
+
+[^829]: Another thing
+
+[^830]: Another thing
+
+[^831]: Another thing
+
+[^832]: Another thing
+
+[^833]: Another thing
+
+[^834]: Another thing
+
+[^835]: Another thing
+
+[^836]: Another thing
+
+[^837]: Another thing
+
+[^838]: Another thing
+
+[^839]: Another thing
+
+[^840]: Another thing
+
+[^841]: Another thing
+
+[^842]: Another thing
+
+[^843]: Another thing
+
+[^844]: Another thing
+
+[^845]: Another thing
+
+[^846]: Another thing
+
+[^847]: Another thing
+
+[^848]: Another thing
+
+[^849]: Another thing
+
+[^850]: Another thing
+
+[^851]: Another thing
+
+[^852]: Another thing
+
+[^853]: Another thing
+
+[^854]: Another thing
+
+[^855]: Another thing
+
+[^856]: Another thing
+
+[^857]: Another thing
+
+[^858]: Another thing
+
+[^859]: Another thing
+
+[^860]: Another thing
+
+[^861]: Another thing
+
+[^862]: Another thing
+
+[^863]: Another thing
+
+[^864]: Another thing
+
+[^865]: Another thing
+
+[^866]: Another thing
+
+[^867]: Another thing
+
+[^868]: Another thing
+
+[^869]: Another thing
+
+[^870]: Another thing
+
+[^871]: Another thing
+
+[^872]: Another thing
+
+[^873]: Another thing
+
+[^874]: Another thing
+
+[^875]: Another thing
+
+[^876]: Another thing
+
+[^877]: Another thing
+
+[^878]: Another thing
+
+[^879]: Another thing
+
+[^880]: Another thing
+
+[^881]: Another thing
+
+[^882]: Another thing
+
+[^883]: Another thing
+
+[^884]: Another thing
+
+[^885]: Another thing
+
+[^886]: Another thing
+
+[^887]: Another thing
+
+[^888]: Another thing
+
+[^889]: Another thing
+
+[^890]: Another thing
+
+[^891]: Another thing
+
+[^892]: Another thing
+
+[^893]: Another thing
+
+[^894]: Another thing
+
+[^895]: Another thing
+
+[^896]: Another thing
+
+[^897]: Another thing
+
+[^898]: Another thing
+
+[^899]: Another thing
+
+[^900]: Another thing
+
+[^901]: Another thing
+
+[^902]: Another thing
+
+[^903]: Another thing
+
+[^904]: Another thing
+
+[^905]: Another thing
+
+[^906]: Another thing
+
+[^907]: Another thing
+
+[^908]: Another thing
+
+[^909]: Another thing
+
+[^910]: Another thing
+
+[^911]: Another thing
+
+[^912]: Another thing
+
+[^913]: Another thing
+
+[^914]: Another thing
+
+[^915]: Another thing
+
+[^916]: Another thing
+
+[^917]: Another thing
+
+[^918]: Another thing
+
+[^919]: Another thing
+
+[^920]: Another thing
+
+[^921]: Another thing
+
+[^922]: Another thing
+
+[^923]: Another thing
+
+[^924]: Another thing
+
+[^925]: Another thing
+
+[^926]: Another thing
+
+[^927]: Another thing
+
+[^928]: Another thing
+
+[^929]: Another thing
+
+[^930]: Another thing
+
+[^931]: Another thing
+
+[^932]: Another thing
+
+[^933]: Another thing
+
+[^934]: Another thing
+
+[^935]: Another thing
+
+[^936]: Another thing
+
+[^937]: Another thing
+
+[^938]: Another thing
+
+[^939]: Another thing
+
+[^940]: Another thing
+
+[^941]: Another thing
+
+[^942]: Another thing
+
+[^943]: Another thing
+
+[^944]: Another thing
+
+[^945]: Another thing
+
+[^946]: Another thing
+
+[^947]: Another thing
+
+[^948]: Another thing
+
+[^949]: Another thing
+
+[^950]: Another thing
+
+[^951]: Another thing
+
+[^952]: Another thing
+
+[^953]: Another thing
+
+[^954]: Another thing
+
+[^955]: Another thing
+
+[^956]: Another thing
+
+[^957]: Another thing
+
+[^958]: Another thing
+
+[^959]: Another thing
+
+[^960]: Another thing
+
+[^961]: Another thing
+
+[^962]: Another thing
+
+[^963]: Another thing
+
+[^964]: Another thing
+
+[^965]: Another thing
+
+[^966]: Another thing
+
+[^967]: Another thing
+
+[^968]: Another thing
+
+[^969]: Another thing
+
+[^970]: Another thing
+
+[^971]: Another thing
+
+[^972]: Another thing
+
+[^973]: Another thing
+
+[^974]: Another thing
+
+[^975]: Another thing
+
+[^976]: Another thing
+
+[^977]: Another thing
+
+[^978]: Another thing
+
+[^979]: Another thing
+
+[^980]: Another thing
+
+[^981]: Another thing
+
+[^982]: Another thing
+
+[^983]: Another thing
+
+[^984]: Another thing
+
+[^985]: Another thing
+
+[^986]: Another thing
+
+[^987]: Another thing
+
+[^988]: Another thing
+
+[^989]: Another thing
+
+[^990]: Another thing
+
+[^991]: Another thing
+
+[^992]: Another thing
+
+[^993]: Another thing
+
+[^994]: Another thing
+
+[^995]: Another thing
+
+[^996]: Another thing
+
+[^997]: Another thing
+
+[^998]: Another thing
+
+[^999]: Another thing
+
+[^1000]: Another thing
+
+[^1001]: Another thing
+
+[^1002]: Another thing
+
+[^1003]: Another thing
+
+[^1004]: Another thing
+
+[^1005]: Another thing
+
+[^1006]: Another thing
+
+[^1007]: Another thing
+
+[^1008]: Another thing
+
+[^1009]: Another thing
+
+[^1010]: Another thing
+
+[^1011]: Another thing
+
+[^1012]: Another thing
+
+[^1013]: Another thing
+
+[^1014]: Another thing
+
+[^1015]: Another thing
+
+[^1016]: Another thing
+
+[^1017]: Another thing
+
+[^1018]: Another thing
+
+[^1019]: Another thing
+
+[^1020]: Another thing
+
+[^1021]: Another thing
+
+[^1022]: Another thing
+
+[^1023]: Another thing
+
+[^1024]: Another thing
+
+[^1025]: Another thing
+
+[^1026]: Another thing
+
+[^1027]: Another thing
+
+[^1028]: Another thing
+
+[^1029]: Another thing
+
+[^1030]: Another thing
+
+[^1031]: Another thing
+
+[^1032]: Another thing
+
+[^1033]: Another thing
+
+[^1034]: Another thing
+
+[^1035]: Another thing
+
+[^1036]: Another thing
+
+[^1037]: Another thing
+
+[^1038]: Another thing
+
+[^1039]: Another thing
+
+[^1040]: Another thing
+
+[^1041]: Another thing
+
+[^1042]: Another thing
+
+[^1043]: Another thing
+
+[^1044]: Another thing
+
+[^1045]: Another thing
+
+[^1046]: Another thing
+
+[^1047]: Another thing
+
+[^1048]: Another thing
+
+[^1049]: Another thing
+
+[^1050]: Another thing
+
+[^1051]: Another thing
+
+[^1052]: Another thing
+
+[^1053]: Another thing
+
+[^1054]: Another thing
+
+[^1055]: Another thing
+
+[^1056]: Another thing
+
+[^1057]: Another thing
+
+[^1058]: Another thing
+
+[^1059]: Another thing
+
+[^1060]: Another thing
+
+[^1061]: Another thing
+
+[^1062]: Another thing
+
+[^1063]: Another thing
+
+[^1064]: Another thing
+
+[^1065]: Another thing
+
+[^1066]: Another thing
+
+[^1067]: Another thing
+
+[^1068]: Another thing
+
+[^1069]: Another thing
+
+[^1070]: Another thing
+
+[^1071]: Another thing
+
+[^1072]: Another thing
+
+[^1073]: Another thing
+
+[^1074]: Another thing
+
+[^1075]: Another thing
+
+[^1076]: Another thing
+
+[^1077]: Another thing
+
+[^1078]: Another thing
+
+[^1079]: Another thing
+
+[^1080]: Another thing
+
+[^1081]: Another thing
+
+[^1082]: Another thing
+
+[^1083]: Another thing
+
+[^1084]: Another thing
+
+[^1085]: Another thing
+
+[^1086]: Another thing
+
+[^1087]: Another thing
+
+[^1088]: Another thing
+
+[^1089]: Another thing
+
+[^1090]: Another thing
+
+[^1091]: Another thing
+
+[^1092]: Another thing
+
+[^1093]: Another thing
+
+[^1094]: Another thing
+
+[^1095]: Another thing
+
+[^1096]: Another thing
+
+[^1097]: Another thing
+
+[^1098]: Another thing
+
+[^1099]: Another thing
+
+[^1100]: Another thing
+
+[^1101]: Another thing
+
+[^1102]: Another thing
+
+[^1103]: Another thing
+
+[^1104]: Another thing
+
+[^1105]: Another thing
+
+[^1106]: Another thing
+
+[^1107]: Another thing
+
+[^1108]: Another thing
+
+[^1109]: Another thing
+
+[^1110]: Another thing
+
+[^1111]: Another thing
+
+[^1112]: Another thing
+
+[^1113]: Another thing
+
+[^1114]: Another thing
+
+[^1115]: Another thing
+
+[^1116]: Another thing
+
+[^1117]: Another thing
+
+[^1118]: Another thing
+
+[^1119]: Another thing
+
+[^1120]: Another thing
+
+[^1121]: Another thing
+
+[^1122]: Another thing
+
+[^1123]: Another thing
+
+[^1124]: Another thing
+
+[^1125]: Another thing
+
+[^1126]: Another thing
+
+[^1127]: Another thing
+
+[^1128]: Another thing
+
+[^1129]: Another thing
+
+[^1130]: Another thing
+
+[^1131]: Another thing
+
+[^1132]: Another thing
+
+[^1133]: Another thing
+
+[^1134]: Another thing
+
+[^1135]: Another thing
+
+[^1136]: Another thing
+
+[^1137]: Another thing
+
+[^1138]: Another thing
+
+[^1139]: Another thing
+
+[^1140]: Another thing
+
+[^1141]: Another thing
+
+[^1142]: Another thing
+
+[^1143]: Another thing
+
+[^1144]: Another thing
+
+[^1145]: Another thing
+
+[^1146]: Another thing
+
+[^1147]: Another thing
+
+[^1148]: Another thing
+
+[^1149]: Another thing
+
+[^1150]: Another thing
+
+[^1151]: Another thing
+
+[^1152]: Another thing
+
+[^1153]: Another thing
+
+[^1154]: Another thing
+
+[^1155]: Another thing
+
+[^1156]: Another thing
+
+[^1157]: Another thing
+
+[^1158]: Another thing
+
+[^1159]: Another thing
+
+[^1160]: Another thing
+
+[^1161]: Another thing
+
+[^1162]: Another thing
+
+[^1163]: Another thing
+
+[^1164]: Another thing
+
+[^1165]: Another thing
+
+[^1166]: Another thing
+
+[^1167]: Another thing
+
+[^1168]: Another thing
+
+[^1169]: Another thing
+
+[^1170]: Another thing
+
+[^1171]: Another thing
+
+[^1172]: Another thing
+
+[^1173]: Another thing
+
+[^1174]: Another thing
+
+[^1175]: Another thing
+
+[^1176]: Another thing
+
+[^1177]: Another thing
+
+[^1178]: Another thing
+
+[^1179]: Another thing
+
+[^1180]: Another thing
+
+[^1181]: Another thing
+
+[^1182]: Another thing
+
+[^1183]: Another thing
+
+[^1184]: Another thing
+
+[^1185]: Another thing
+
+[^1186]: Another thing
+
+[^1187]: Another thing
+
+[^1188]: Another thing
+
+[^1189]: Another thing
+
+[^1190]: Another thing
+
+[^1191]: Another thing
+
+[^1192]: Another thing
+
+[^1193]: Another thing
+
+[^1194]: Another thing
+
+[^1195]: Another thing
+
+[^1196]: Another thing
+
+[^1197]: Another thing
+
+[^1198]: Another thing
+
+[^1199]: Another thing
+
diff --git a/tests/extensions/extra/footnote_placeholder.html b/tests/extensions/extra/footnote_placeholder.html
new file mode 100644
index 0000000..cbad740
--- /dev/null
+++ b/tests/extensions/extra/footnote_placeholder.html
@@ -0,0 +1,9 @@
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:1">
+<p>A Footnote.&#160;<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
+</li>
+</ol>
+</div>
+<p>Some text with a footnote<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup>.</p> \ No newline at end of file
diff --git a/tests/extensions/extra/footnote_placeholder.txt b/tests/extensions/extra/footnote_placeholder.txt
new file mode 100644
index 0000000..0b0af42
--- /dev/null
+++ b/tests/extensions/extra/footnote_placeholder.txt
@@ -0,0 +1,5 @@
+///Footnotes Go Here///
+
+Some text with a footnote[^1].
+
+[^1]: A Footnote.
diff --git a/tests/extensions/extra/footnote_placeholder_depth.html b/tests/extensions/extra/footnote_placeholder_depth.html
new file mode 100644
index 0000000..60c2bbb
--- /dev/null
+++ b/tests/extensions/extra/footnote_placeholder_depth.html
@@ -0,0 +1,13 @@
+<blockquote>
+<blockquote>
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:1">
+<p>A Footnote.&#160;<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
+</li>
+</ol>
+</div>
+<p>Some text with a footnote<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup>.</p>
+</blockquote>
+</blockquote> \ No newline at end of file
diff --git a/tests/extensions/extra/footnote_placeholder_depth.txt b/tests/extensions/extra/footnote_placeholder_depth.txt
new file mode 100644
index 0000000..cfe87c0
--- /dev/null
+++ b/tests/extensions/extra/footnote_placeholder_depth.txt
@@ -0,0 +1,5 @@
+>> ///Footnotes Go Here///
+>>
+>> Some text with a footnote[^1].
+
+[^1]: A Footnote.
diff --git a/tests/extensions-x-def_list/loose_def_list.html b/tests/extensions/extra/loose_def_list.html
index 98fdec8..0de6eb6 100644
--- a/tests/extensions-x-def_list/loose_def_list.html
+++ b/tests/extensions/extra/loose_def_list.html
@@ -18,4 +18,14 @@ line 2 of def 2-1</p>
<p>par 2 of def2-2</p>
</dd>
</dl>
-<p>more text</p> \ No newline at end of file
+<p>more text</p>
+<dl>
+<dt>term 4</dt>
+<dd>not loose</dd>
+<dt>term 5</dt>
+<dd>
+<p>loose</p>
+</dd>
+<dt>term 6</dt>
+<dd>also not loose</dd>
+</dl> \ No newline at end of file
diff --git a/tests/extensions-x-def_list/loose_def_list.txt b/tests/extensions/extra/loose_def_list.txt
index 24cd6a4..909d12b 100644
--- a/tests/extensions-x-def_list/loose_def_list.txt
+++ b/tests/extensions/extra/loose_def_list.txt
@@ -18,3 +18,14 @@ term 3
more text
+term 4
+: not loose
+
+
+term 5
+
+: loose
+
+term 6
+: also not loose
+
diff --git a/tests/markdown-test/markdown-syntax.html b/tests/extensions/extra/markdown-syntax.html
index 2f63b4b..cd7ba17 100644
--- a/tests/markdown-test/markdown-syntax.html
+++ b/tests/extensions/extra/markdown-syntax.html
@@ -151,7 +151,7 @@ and <code>&amp;</code> in your example code needs to be escaped.)</p>
<p>A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing but spaces or tabs is considered
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+blank.) Normal paragraphs should not be indented with spaces or tabs.</p>
<p>The implication of the "one or more consecutive lines of text" rule is
that Markdown supports "hard-wrapped" text paragraphs. This differs
significantly from most other text-to-HTML formatters (including Movable
@@ -241,7 +241,7 @@ Quote Level from the Text menu.</p>
<h3 id="list">Lists</h3>
<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>
-<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably
+<p>Unordered lists use asterisks, pluses, and hyphens -- interchangeably
-- as list markers:</p>
<pre><code>* Red
* Green
@@ -328,7 +328,7 @@ items in <code>&lt;p&gt;</code> tags in the HTML output. For example, this input
&lt;/ul&gt;
</code></pre>
<p>List items may consist of multiple paragraphs. Each subsequent
-paragraph in a list item must be intended by either 4 spaces
+paragraph in a list item must be indented by either 4 spaces
or one tab:</p>
<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit. Aliquam hendrerit
@@ -484,12 +484,12 @@ on a line by itself:</p>
<p>That is:</p>
<ul>
<li>Square brackets containing the link identifier (optionally
-indented from the left margin using up to three spaces);</li>
+ indented from the left margin using up to three spaces);</li>
<li>followed by a colon;</li>
<li>followed by one or more spaces (or tabs);</li>
<li>followed by the URL for the link;</li>
<li>optionally followed by a title attribute for the link, enclosed
-in double or single quotes.</li>
+ in double or single quotes.</li>
</ul>
<p>The link URL may, optionally, be surrounded by angle brackets:</p>
<pre><code>[id]: &lt;http://example.com/&gt; "Optional Title Here"
@@ -660,10 +660,10 @@ for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>
<ul>
<li>An exclamation mark: <code>!</code>;</li>
<li>followed by a set of square brackets, containing the <code>alt</code>
-attribute text for the image;</li>
+ attribute text for the image;</li>
<li>followed by a set of parentheses, containing the URL or path to
-the image, and an optional <code>title</code> attribute enclosed in double
-or single quotes.</li>
+ the image, and an optional <code>title</code> attribute enclosed in double
+ or single quotes.</li>
</ul>
<p>Reference-style image syntax looks like this:</p>
<pre><code>![Alt text][id]
diff --git a/tests/extensions/extra/markdown-syntax.txt b/tests/extensions/extra/markdown-syntax.txt
new file mode 100644
index 0000000..38f6e78
--- /dev/null
+++ b/tests/extensions/extra/markdown-syntax.txt
@@ -0,0 +1,888 @@
+Markdown: Syntax
+================
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
+ <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+
+* [Overview](#overview)
+ * [Philosophy](#philosophy)
+ * [Inline HTML](#html)
+ * [Automatic Escaping for Special Characters](#autoescape)
+* [Block Elements](#block)
+ * [Paragraphs and Line Breaks](#p)
+ * [Headers](#header)
+ * [Blockquotes](#blockquote)
+ * [Lists](#list)
+ * [Code Blocks](#precode)
+ * [Horizontal Rules](#hr)
+* [Span Elements](#span)
+ * [Links](#link)
+ * [Emphasis](#em)
+ * [Code](#code)
+ * [Images](#img)
+* [Miscellaneous](#misc)
+ * [Backslash Escapes](#backslash)
+ * [Automatic Links](#autolink)
+
+
+**Note:** This document is itself written using Markdown; you
+can [see the source for it by adding '.text' to the URL][src].
+
+ [src]: /projects/markdown/syntax.text
+
+* * *
+
+<h2 id="overview">Overview</h2>
+
+<h3 id="philosophy">Philosophy</h3>
+
+Markdown is intended to be as easy-to-read and easy-to-write as is feasible.
+
+Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4],
+[Grutatext] [5], and [EtText] [6] -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.
+
+ [1]: http://docutils.sourceforge.net/mirror/setext.html
+ [2]: http://www.aaronsw.com/2002/atx/
+ [3]: http://textism.com/tools/textile/
+ [4]: http://docutils.sourceforge.net/rst.html
+ [5]: http://www.triptico.com/software/grutatxt.html
+ [6]: http://ettext.taint.org/doc/
+
+To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like \*emphasis\*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.
+
+
+
+<h3 id="html">Inline HTML</h3>
+
+Markdown's syntax is intended for one purpose: to be used as a
+format for *writing* for the web.
+
+Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is *not* to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a *publishing* format; Markdown is a *writing*
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.
+
+For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.
+
+The only restrictions are that block-level HTML elements -- e.g. `<div>`,
+`<table>`, `<pre>`, `<p>`, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) `<p>` tags around HTML block-level tags.
+
+For example, to add an HTML table to a Markdown article:
+
+ This is a regular paragraph.
+
+ <table>
+ <tr>
+ <td>Foo</td>
+ </tr>
+ </table>
+
+ This is another regular paragraph.
+
+Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an
+HTML block.
+
+Span-level HTML tags -- e.g. `<span>`, `<cite>`, or `<del>` -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML `<a>` or `<img>` tags instead of Markdown's
+link or image syntax, go right ahead.
+
+Unlike block-level HTML tags, Markdown syntax *is* processed within
+span-level tags.
+
+
+<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
+
+In HTML, there are two characters that demand special treatment: `<`
+and `&`. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. `&lt;`, and
+`&amp;`.
+
+Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&T', you need to write '`AT&amp;T`'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:
+
+ http://images.google.com/images?num=30&q=larry+bird
+
+you need to encode the URL as:
+
+ http://images.google.com/images?num=30&amp;q=larry+bird
+
+in your anchor tag `href` attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.
+
+Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into `&amp;`.
+
+So, if you want to include a copyright symbol in your article, you can write:
+
+ &copy;
+
+and Markdown will leave it alone. But if you write:
+
+ AT&T
+
+Markdown will translate it to:
+
+ AT&amp;T
+
+Similarly, because Markdown supports [inline HTML](#html), if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:
+
+ 4 < 5
+
+Markdown will translate it to:
+
+ 4 &lt; 5
+
+However, inside Markdown code spans and blocks, angle brackets and
+ampersands are *always* encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single `<`
+and `&` in your example code needs to be escaped.)
+
+
+* * *
+
+
+<h2 id="block">Block Elements</h2>
+
+
+<h3 id="p">Paragraphs and Line Breaks</h3>
+
+A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be indented with spaces or tabs.
+
+The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a `<br />` tag.
+
+When you *do* want to insert a `<br />` break tag using Markdown, you
+end a line with two or more spaces, then type return.
+
+Yes, this takes a tad more effort to create a `<br />`, but a simplistic
+"every line break is a `<br />`" rule wouldn't work for Markdown.
+Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l]
+work best -- and look better -- when you format them with hard breaks.
+
+ [bq]: #blockquote
+ [l]: #list
+
+
+
+<h3 id="header">Headers</h3>
+
+Markdown supports two styles of headers, [Setext] [1] and [atx] [2].
+
+Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:
+
+ This is an H1
+ =============
+
+ This is an H2
+ -------------
+
+Any number of underlining `=`'s or `-`'s will work.
+
+Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:
+
+ # This is an H1
+
+ ## This is an H2
+
+ ###### This is an H6
+
+Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :
+
+ # This is an H1 #
+
+ ## This is an H2 ##
+
+ ### This is an H3 ######
+
+
+<h3 id="blockquote">Blockquotes</h3>
+
+Markdown uses email-style `>` characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a `>` before every line:
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+ >
+ > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ > id sem consectetuer libero luctus adipiscing.
+
+Markdown allows you to be lazy and only put the `>` before the first
+line of a hard-wrapped paragraph:
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+ > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ id sem consectetuer libero luctus adipiscing.
+
+Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of `>`:
+
+ > This is the first level of quoting.
+ >
+ > > This is nested blockquote.
+ >
+ > Back to the first level.
+
+Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:
+
+ > ## This is a header.
+ >
+ > 1. This is the first list item.
+ > 2. This is the second list item.
+ >
+ > Here's some example code:
+ >
+ > return shell_exec("echo $input | $markdown_script");
+
+Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.
+
+
+<h3 id="list">Lists</h3>
+
+Markdown supports ordered (numbered) and unordered (bulleted) lists.
+
+Unordered lists use asterisks, pluses, and hyphens -- interchangeably
+-- as list markers:
+
+ * Red
+ * Green
+ * Blue
+
+is equivalent to:
+
+ + Red
+ + Green
+ + Blue
+
+and:
+
+ - Red
+ - Green
+ - Blue
+
+Ordered lists use numbers followed by periods:
+
+ 1. Bird
+ 2. McHale
+ 3. Parish
+
+It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:
+
+ <ol>
+ <li>Bird</li>
+ <li>McHale</li>
+ <li>Parish</li>
+ </ol>
+
+If you instead wrote the list in Markdown like this:
+
+ 1. Bird
+ 1. McHale
+ 1. Parish
+
+or even:
+
+ 3. Bird
+ 1. McHale
+ 8. Parish
+
+you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.
+
+If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.
+
+List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.
+
+To make lists look nice, you can wrap items with hanging indents:
+
+ * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+ * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+But if you want to be lazy, you don't have to:
+
+ * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+ * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+If list items are separated by blank lines, Markdown will wrap the
+items in `<p>` tags in the HTML output. For example, this input:
+
+ * Bird
+ * Magic
+
+will turn into:
+
+ <ul>
+ <li>Bird</li>
+ <li>Magic</li>
+ </ul>
+
+But this:
+
+ * Bird
+
+ * Magic
+
+will turn into:
+
+ <ul>
+ <li><p>Bird</p></li>
+ <li><p>Magic</p></li>
+ </ul>
+
+List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be indented by either 4 spaces
+or one tab:
+
+ 1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+ 2. Suspendisse id sem consectetuer libero luctus adipiscing.
+
+It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:
+
+ * This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+ only required to indent the first line. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit.
+
+ * Another item in the same list.
+
+To put a blockquote within a list item, the blockquote's `>`
+delimiters need to be indented:
+
+ * A list item with a blockquote:
+
+ > This is a blockquote
+ > inside a list item.
+
+To put a code block within a list item, the code block needs
+to be indented *twice* -- 8 spaces or two tabs:
+
+ * A list item with a code block:
+
+ <code goes here>
+
+
+It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:
+
+ 1986. What a great season.
+
+In other words, a *number-period-space* sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:
+
+ 1986\. What a great season.
+
+
+
+<h3 id="precode">Code Blocks</h3>
+
+Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both `<pre>` and `<code>` tags.
+
+To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:
+
+ This is a normal paragraph:
+
+ This is a code block.
+
+Markdown will generate:
+
+ <p>This is a normal paragraph:</p>
+
+ <pre><code>This is a code block.
+ </code></pre>
+
+One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:
+
+ Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+
+will turn into:
+
+ <p>Here is an example of AppleScript:</p>
+
+ <pre><code>tell application "Foo"
+ beep
+ end tell
+ </code></pre>
+
+A code block continues until it reaches a line that is not indented
+(or the end of the article).
+
+Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:
+
+ <div class="footer">
+ &copy; 2004 Foo Corporation
+ </div>
+
+will turn into:
+
+ <pre><code>&lt;div class="footer"&gt;
+ &amp;copy; 2004 Foo Corporation
+ &lt;/div&gt;
+ </code></pre>
+
+Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.
+
+
+
+<h3 id="hr">Horizontal Rules</h3>
+
+You can produce a horizontal rule tag (`<hr />`) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:
+
+ * * *
+
+ ***
+
+ *****
+
+ - - -
+
+ ---------------------------------------
+
+ _ _ _
+
+
+* * *
+
+<h2 id="span">Span Elements</h2>
+
+<h3 id="link">Links</h3>
+
+Markdown supports two style of links: *inline* and *reference*.
+
+In both styles, the link text is delimited by [square brackets].
+
+To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an *optional*
+title for the link, surrounded in quotes. For example:
+
+ This is [an example](http://example.com/ "Title") inline link.
+
+ [This link](http://example.net/) has no title attribute.
+
+Will produce:
+
+ <p>This is <a href="http://example.com/" title="Title">
+ an example</a> inline link.</p>
+
+ <p><a href="http://example.net/">This link</a> has no
+ title attribute.</p>
+
+If you're referring to a local resource on the same server, you can
+use relative paths:
+
+ See my [About](/about/) page for details.
+
+Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:
+
+ This is [an example][id] reference-style link.
+
+You can optionally use a space to separate the sets of brackets:
+
+ This is [an example] [id] reference-style link.
+
+Then, anywhere in the document, you define your link label like this,
+on a line by itself:
+
+ [id]: http://example.com/ "Optional Title Here"
+
+That is:
+
+* Square brackets containing the link identifier (optionally
+ indented from the left margin using up to three spaces);
+* followed by a colon;
+* followed by one or more spaces (or tabs);
+* followed by the URL for the link;
+* optionally followed by a title attribute for the link, enclosed
+ in double or single quotes.
+
+The link URL may, optionally, be surrounded by angle brackets:
+
+ [id]: <http://example.com/> "Optional Title Here"
+
+You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:
+
+ [id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+
+Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.
+
+Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links:
+
+ [link text][a]
+ [link text][A]
+
+are equivalent.
+
+The *implicit link name* shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:
+
+ [Google][]
+
+And then define the link:
+
+ [Google]: http://google.com/
+
+Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:
+
+ Visit [Daring Fireball][] for more information.
+
+And then define the link:
+
+ [Daring Fireball]: http://daringfireball.net/
+
+Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.
+
+Here's an example of reference links in action:
+
+ I get 10 times more traffic from [Google] [1] than from
+ [Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+
+Using the implicit link name shortcut, you could instead write:
+
+ I get 10 times more traffic from [Google][] than from
+ [Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+
+Both of the above examples will produce the following HTML output:
+
+ <p>I get 10 times more traffic from <a href="http://google.com/"
+ title="Google">Google</a> than from
+ <a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+ or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+
+For comparison, here is the same paragraph written using
+Markdown's inline link style:
+
+ I get 10 times more traffic from [Google](http://google.com/ "Google")
+ than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+ [MSN](http://search.msn.com/ "MSN Search").
+
+The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.
+
+With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.
+
+
+<h3 id="em">Emphasis</h3>
+
+Markdown treats asterisks (`*`) and underscores (`_`) as indicators of
+emphasis. Text wrapped with one `*` or `_` will be wrapped with an
+HTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML
+`<strong>` tag. E.g., this input:
+
+ *single asterisks*
+
+ _single underscores_
+
+ **double asterisks**
+
+ __double underscores__
+
+will produce:
+
+ <em>single asterisks</em>
+
+ <em>single underscores</em>
+
+ <strong>double asterisks</strong>
+
+ <strong>double underscores</strong>
+
+You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.
+
+Emphasis can be used in the middle of a word:
+
+ un*fucking*believable
+
+But if you surround an `*` or `_` with spaces, it'll be treated as a
+literal asterisk or underscore.
+
+To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:
+
+ \*this text is surrounded by literal asterisks\*
+
+
+
+<h3 id="code">Code</h3>
+
+To indicate a span of code, wrap it with backtick quotes (`` ` ``).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:
+
+ Use the `printf()` function.
+
+will produce:
+
+ <p>Use the <code>printf()</code> function.</p>
+
+To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:
+
+ ``There is a literal backtick (`) here.``
+
+which will produce this:
+
+ <p><code>There is a literal backtick (`) here.</code></p>
+
+The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:
+
+ A single backtick in a code span: `` ` ``
+
+ A backtick-delimited string in a code span: `` `foo` ``
+
+will produce:
+
+ <p>A single backtick in a code span: <code>`</code></p>
+
+ <p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+
+With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:
+
+ Please don't use any `<blink>` tags.
+
+into:
+
+ <p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
+
+You can write this:
+
+ `&#8212;` is the decimal-encoded equivalent of `&mdash;`.
+
+to produce:
+
+ <p><code>&amp;#8212;</code> is the decimal-encoded
+ equivalent of <code>&amp;mdash;</code>.</p>
+
+
+
+<h3 id="img">Images</h3>
+
+Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.
+
+Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: *inline* and *reference*.
+
+Inline image syntax looks like this:
+
+ ![Alt text](/path/to/img.jpg)
+
+ ![Alt text](/path/to/img.jpg "Optional title")
+
+That is:
+
+* An exclamation mark: `!`;
+* followed by a set of square brackets, containing the `alt`
+ attribute text for the image;
+* followed by a set of parentheses, containing the URL or path to
+ the image, and an optional `title` attribute enclosed in double
+ or single quotes.
+
+Reference-style image syntax looks like this:
+
+ ![Alt text][id]
+
+Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:
+
+ [id]: url/to/image "Optional title attribute"
+
+As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML `<img>` tags.
+
+
+* * *
+
+
+<h2 id="misc">Miscellaneous</h2>
+
+<h3 id="autolink">Automatic Links</h3>
+
+Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:
+
+ <http://example.com/>
+
+Markdown will turn this into:
+
+ <a href="http://example.com/">http://example.com/</a>
+
+Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:
+
+ <address@example.com>
+
+into something like this:
+
+ <a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
+ &#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
+ &#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
+ &#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
+
+which will render in a browser as a clickable link to "address@example.com".
+
+(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)
+
+
+
+<h3 id="backslash">Backslash Escapes</h3>
+
+Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML `<em>` tag), you can backslashes
+before the asterisks, like this:
+
+ \*literal asterisks\*
+
+Markdown provides backslash escapes for the following characters:
+
+ \ backslash
+ ` backtick
+ * asterisk
+ _ underscore
+ {} curly braces
+ [] square brackets
+ () parentheses
+ # hash mark
+ + plus sign
+ - minus sign (hyphen)
+ . dot
+ ! exclamation mark
+
diff --git a/tests/extensions/extra/named_markers.html b/tests/extensions/extra/named_markers.html
new file mode 100644
index 0000000..fd40245
--- /dev/null
+++ b/tests/extensions/extra/named_markers.html
@@ -0,0 +1,20 @@
+<p>This is the body with footnotes<sup id="fnref:foo"><a class="footnote-ref" href="#fn:foo">1</a></sup>
+that have named<sup id="fnref:bar"><a class="footnote-ref" href="#fn:bar">2</a></sup> markers and
+oddly<sup id="fnref:56"><a class="footnote-ref" href="#fn:56">3</a></sup> numbered<sup id="fnref:99"><a class="footnote-ref" href="#fn:99">4</a></sup> markers.</p>
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:foo">
+<p>Footnote marked <code>foo</code>.&#160;<a class="footnote-backref" href="#fnref:foo" title="Jump back to footnote 1 in the text">&#8617;</a></p>
+</li>
+<li id="fn:bar">
+<p>This one is marked <em>bar</em>.&#160;<a class="footnote-backref" href="#fnref:bar" title="Jump back to footnote 2 in the text">&#8617;</a></p>
+</li>
+<li id="fn:56">
+<p>A <strong>numbered</strong> footnote.&#160;<a class="footnote-backref" href="#fnref:56" title="Jump back to footnote 3 in the text">&#8617;</a></p>
+</li>
+<li id="fn:99">
+<p>The last one.&#160;<a class="footnote-backref" href="#fnref:99" title="Jump back to footnote 4 in the text">&#8617;</a></p>
+</li>
+</ol>
+</div> \ No newline at end of file
diff --git a/tests/extensions-x-footnotes/named_markers.txt b/tests/extensions/extra/named_markers.txt
index d246524..d246524 100644
--- a/tests/extensions-x-footnotes/named_markers.txt
+++ b/tests/extensions/extra/named_markers.txt
diff --git a/tests/extensions/extra/raw-html.html b/tests/extensions/extra/raw-html.html
new file mode 100644
index 0000000..ef94cb3
--- /dev/null
+++ b/tests/extensions/extra/raw-html.html
@@ -0,0 +1,123 @@
+<div>
+<p><em>foo</em></p>
+</div>
+<div class="baz">
+<p><em>bar</em></p>
+</div>
+<div>
+<p><em>blah</em></p>
+</div>
+<div name="Example">
+<p>The text of the <code>Example</code> element.</p>
+<div name="DefaultBlockMode">
+<p>This text gets wrapped in <code>p</code> tags.</p>
+</div>
+<p>The tail of the <code>DefaultBlockMode</code> subelement.</p>
+<p name="DefaultSpanMode">
+This text <em>is not</em> wrapped in additional <code>p</code> tags.
+</p>
+<p>The tail of the <code>DefaultSpanMode</code> subelement.</p>
+<div name="SpanModeOverride">
+This <code>div</code> block is not wrapped in paragraph tags.
+Note: Subelements are not required to have tail text.
+</div>
+<p name="BlockModeOverride">
+<p>This <code>p</code> block <em>is</em> foolishly wrapped in further paragraph tags.</p>
+</p>
+<p>The tail of the <code>BlockModeOverride</code> subelement.</p>
+<div name="RawHtml">
+Raw html blocks may also be nested.
+</div>
+</div>
+<p>This text is after the markdown in html.</p>
+<div name="issue308">
+<p><span>1</span>
+<span>2</span></p>
+</div>
+<div name="issue368">
+<p>Markdown is <em>active</em> here.</p>
+<div name="RawHtml">
+Raw html blocks may also be nested.
+</div>
+<p>Markdown is <em>still</em> active here.</p>
+</div>
+<p>Markdown is <em>active again</em> here.</p>
+<div>
+<p>foo bar</p>
+<p><em>bar</em></p>
+</div>
+<div name="issue584">
+<div>
+<p><a href="http://example.com">link</a></p>
+</div>
+</div>
+<div name="issue584">
+<div>
+<p><abbr title="Abbreviation">abbr</abbr></p>
+</div>
+</div>
+<div name="issue584">
+<div>
+<p>footnote<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>
+</div>
+</div>
+<div name="issue584">
+<div>
+<p><a href="http://example.com">link</a></p>
+</div>
+</div>
+<div name="issue584">
+<div>
+<p><abbr title="Abbreviation">abbr</abbr></p>
+</div>
+</div>
+<div name="issue584">
+<div>
+<p>footnote<sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup></p>
+</div>
+</div>
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:1">
+<ol>
+<li>
+<p>The top couple half figure, contrary sides and hands across with bottom couple,</p>
+<p>Half figure back on your own sides, and turn partner to places,</p>
+<p>Swing partners with right hands into straight line long-ways, as in a reel, and</p>
+<p>Set,</p>
+<p>Hey and return to places,</p>
+<p>The other three couples do the same.</p>
+</li>
+<li>
+<p>Top and bottom couples meet and set,</p>
+<p>Then each gentleman leas the opposite lady to the couple on his left, and set,</p>
+<p>Aach four right and left,</p>
+<p>Swing side couples to places, and turn partners all eight,</p>
+<p>The other two couple o the same.</p>
+</li>
+</ol>
+<p><a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
+</li>
+<li id="fn:2">
+<ol>
+<li>
+<p>The top couple half figure, contrary sides and hands across with bottom couple,</p>
+<p>Half figure back on your own sides, and turn partner to places,</p>
+<p>Swing partners with right hands into straight line long-ways, as in a reel, and</p>
+<p>Set,</p>
+<p>Hey and return to places,</p>
+<p>The other three couples do the same.</p>
+</li>
+<li>
+<p>Top and bottom couples meet and set,</p>
+<p>Then each gentleman leas the opposite lady to the couple on his left, and set,</p>
+<p>Aach four right and left,</p>
+<p>Swing side couples to places, and turn partners all eight,</p>
+<p>The other two couple o the same.</p>
+</li>
+</ol>
+<p><a class="footnote-backref" href="#fnref:2" title="Jump back to footnote 2 in the text">&#8617;</a></p>
+</li>
+</ol>
+</div> \ No newline at end of file
diff --git a/tests/extensions/extra/raw-html.txt b/tests/extensions/extra/raw-html.txt
new file mode 100644
index 0000000..c82ddbb
--- /dev/null
+++ b/tests/extensions/extra/raw-html.txt
@@ -0,0 +1,184 @@
+<div markdown="1">_foo_</div>
+
+<div markdown=1 class="baz">
+_bar_
+</div>
+
+<div markdown>
+
+_blah_
+
+</div>
+
+<div markdown="1" name="Example">
+
+The text of the `Example` element.
+
+<div markdown="1" name="DefaultBlockMode">
+This text gets wrapped in `p` tags.
+</div>
+
+The tail of the `DefaultBlockMode` subelement.
+
+<p markdown="1" name="DefaultSpanMode">
+This text *is not* wrapped in additional `p` tags.
+</p>
+
+The tail of the `DefaultSpanMode` subelement.
+
+<div markdown="span" name="SpanModeOverride">
+This `div` block is not wrapped in paragraph tags.
+Note: Subelements are not required to have tail text.
+</div>
+
+<p markdown="block" name="BlockModeOverride">
+This `p` block *is* foolishly wrapped in further paragraph tags.
+</p>
+
+The tail of the `BlockModeOverride` subelement.
+
+<div name="RawHtml">
+Raw html blocks may also be nested.
+</div>
+
+</div>
+
+This text is after the markdown in html.
+
+<div markdown="1" name="issue308">
+
+<span>1</span>
+<span>2</span>
+
+</div>
+
+<div markdown="1" name="issue368">
+
+Markdown is *active* here.
+
+<div name="RawHtml">
+Raw html blocks may also be nested.
+</div>
+
+Markdown is *still* active here.
+
+</div>
+
+Markdown is *active again* here.
+
+<div markdown=1>
+foo bar
+
+<em>bar</em>
+</div>
+
+<div markdown="1" name="issue584">
+
+[link]: http://example.com
+
+<div markdown="1">
+[link][link]
+</div>
+
+</div>
+
+<div markdown="1" name="issue584">
+
+*[abbr]: Abbreviation
+
+<div markdown="1">
+abbr
+</div>
+
+</div>
+
+<div markdown="1" name="issue584">
+
+[^1]:
+ 1. The top couple half figure, contrary sides and hands across with bottom couple,
+
+ Half figure back on your own sides, and turn partner to places,
+
+ Swing partners with right hands into straight line long-ways, as in a reel, and
+
+ Set,
+
+ Hey and return to places,
+
+ The other three couples do the same.
+
+ 2. Top and bottom couples meet and set,
+
+ Then each gentleman leas the opposite lady to the couple on his left, and set,
+
+ Aach four right and left,
+
+ Swing side couples to places, and turn partners all eight,
+
+ The other two couple o the same.
+
+<div markdown="1">
+footnote[^1]
+</div>
+
+</div>
+
+<div markdown="1" name="issue584">
+
+[link]: http://example.com
+
+
+
+
+<div markdown="1">
+[link][link]
+</div>
+
+</div>
+
+<div markdown="1" name="issue584">
+
+*[abbr]: Abbreviation
+
+
+
+
+<div markdown="1">
+abbr
+</div>
+
+</div>
+
+<div markdown="1" name="issue584">
+
+[^2]:
+ 1. The top couple half figure, contrary sides and hands across with bottom couple,
+
+ Half figure back on your own sides, and turn partner to places,
+
+ Swing partners with right hands into straight line long-ways, as in a reel, and
+
+ Set,
+
+ Hey and return to places,
+
+ The other three couples do the same.
+
+ 2. Top and bottom couples meet and set,
+
+ Then each gentleman leas the opposite lady to the couple on his left, and set,
+
+ Aach four right and left,
+
+ Swing side couples to places, and turn partners all eight,
+
+ The other two couple o the same.
+
+
+
+
+<div markdown="1">
+footnote[^2]
+</div>
+
+</div>
diff --git a/tests/extensions-x-def_list/simple_def-lists.html b/tests/extensions/extra/simple_def-lists.html
index 278e1ec..9448773 100644
--- a/tests/extensions-x-def_list/simple_def-lists.html
+++ b/tests/extensions/extra/simple_def-lists.html
@@ -34,4 +34,10 @@ line <strong>2</strong> of def 3</p>
</ul>
</dd>
</dl>
+<p>and more text.</p>
+<dl>
+<dt>term 4</dt>
+<dd>def4
+ line 2 of def 4</dd>
+</dl>
<p>final text.</p> \ No newline at end of file
diff --git a/tests/extensions-x-def_list/simple_def-lists.txt b/tests/extensions/extra/simple_def-lists.txt
index 20c028a..20e9afa 100644
--- a/tests/extensions-x-def_list/simple_def-lists.txt
+++ b/tests/extensions/extra/simple_def-lists.txt
@@ -26,4 +26,10 @@ term *3*
* > blockquote in list
+and more text.
+
+term 4
+: def4
+ line 2 of def 4
+
final text.
diff --git a/tests/extensions/github_flavored.html b/tests/extensions/github_flavored.html
new file mode 100644
index 0000000..98dc82a
--- /dev/null
+++ b/tests/extensions/github_flavored.html
@@ -0,0 +1,40 @@
+<p>index 0000000..6e956a9</p>
+<pre><code class="language-diff">--- /dev/null
++++ b/test/data/stripped_text/mike-30-lili
+@@ -0,0 +1,27 @@
++Summary:
++ drift_mod.py | 1 +
++ 1 files changed, 1 insertions(+), 0 deletions(-)
++
++commit da4bfb04debdd994683740878d09988b2641513d
++Author: Mike Dirolf &lt;mike@dirolf.com&gt;
++Date: Tue Jan 17 13:42:28 2012 -0500
++
++```
++minor: just wanted to push something.
++```
++
++diff --git a/drift_mod.py b/drift_mod.py
++index 34dfba6..8a88a69 100644
++
++```
++--- a/drift_mod.py
+++++ b/drift_mod.py
++@@ -281,6 +281,7 @@ CONTEXT_DIFF_LINE_PATTERN = re.compile(r'^('
++ '|\+ .*'
++ '|- .*'
++ ')$')
+++
++ def wrap_context_diffs(message_text):
++ return _wrap_diff(CONTEXT_DIFF_HEADER_PATTERN,
++ CONTEXT_DIFF_LINE_PATTERN,
++```
+</code></pre>
+<p>Test support for foo+bar lexer names.</p>
+<pre><code class="language-html+jinja">&lt;title&gt;{% block title %}{% endblock %}&lt;/title&gt;
+&lt;ul&gt;
+{% for user in users %}
+ &lt;li&gt;&lt;a href=&quot;{{ user.url }}&quot;&gt;{{ user.username }}&lt;/a&gt;&lt;/li&gt;
+{% endfor %}
+&lt;/ul&gt;
+</code></pre> \ No newline at end of file
diff --git a/tests/extensions/github_flavored.txt b/tests/extensions/github_flavored.txt
new file mode 100644
index 0000000..4f362b7
--- /dev/null
+++ b/tests/extensions/github_flavored.txt
@@ -0,0 +1,45 @@
+index 0000000..6e956a9
+
+```diff
+--- /dev/null
++++ b/test/data/stripped_text/mike-30-lili
+@@ -0,0 +1,27 @@
++Summary:
++ drift_mod.py | 1 +
++ 1 files changed, 1 insertions(+), 0 deletions(-)
++
++commit da4bfb04debdd994683740878d09988b2641513d
++Author: Mike Dirolf <mike@dirolf.com>
++Date: Tue Jan 17 13:42:28 2012 -0500
++
++```
++minor: just wanted to push something.
++```
++
++diff --git a/drift_mod.py b/drift_mod.py
++index 34dfba6..8a88a69 100644
++
++```
++--- a/drift_mod.py
+++++ b/drift_mod.py
++@@ -281,6 +281,7 @@ CONTEXT_DIFF_LINE_PATTERN = re.compile(r'^('
++ '|\+ .*'
++ '|- .*'
++ ')$')
+++
++ def wrap_context_diffs(message_text):
++ return _wrap_diff(CONTEXT_DIFF_HEADER_PATTERN,
++ CONTEXT_DIFF_LINE_PATTERN,
++```
+```
+
+Test support for foo+bar lexer names.
+
+```html+jinja
+<title>{% block title %}{% endblock %}</title>
+<ul>
+{% for user in users %}
+ <li><a href="{{ user.url }}">{{ user.username }}</a></li>
+{% endfor %}
+</ul>
+```
diff --git a/tests/extensions/nl2br_w_attr_list.html b/tests/extensions/nl2br_w_attr_list.html
new file mode 100644
index 0000000..e5e7eb2
--- /dev/null
+++ b/tests/extensions/nl2br_w_attr_list.html
@@ -0,0 +1 @@
+<p id="bar">Foo<br /></p> \ No newline at end of file
diff --git a/tests/extensions/nl2br_w_attr_list.txt b/tests/extensions/nl2br_w_attr_list.txt
new file mode 100644
index 0000000..4b520b5
--- /dev/null
+++ b/tests/extensions/nl2br_w_attr_list.txt
@@ -0,0 +1,2 @@
+Foo
+{: #bar} \ No newline at end of file
diff --git a/tests/extensions/sane_lists.html b/tests/extensions/sane_lists.html
new file mode 100644
index 0000000..ed51b4d
--- /dev/null
+++ b/tests/extensions/sane_lists.html
@@ -0,0 +1,32 @@
+<ol>
+<li>Ordered</li>
+<li>List</li>
+</ol>
+<ul>
+<li>Unordered</li>
+<li>List</li>
+</ul>
+<ol>
+<li>Ordered again</li>
+</ol>
+<p>Paragraph
+* not a list item</p>
+<ol>
+<li>More ordered
+* not a list item</li>
+</ol>
+<ul>
+<li>Unordered again
+1. not a list item</li>
+</ul>
+<ol start="3">
+<li>Bird</li>
+<li>McHale</li>
+<li>Parish</li>
+</ol>
+<p>Not a list</p>
+<ol start="3">
+<li>Bird</li>
+<li>McHale</li>
+<li>Parish</li>
+</ol> \ No newline at end of file
diff --git a/tests/extensions/sane_lists.txt b/tests/extensions/sane_lists.txt
new file mode 100644
index 0000000..464149f
--- /dev/null
+++ b/tests/extensions/sane_lists.txt
@@ -0,0 +1,26 @@
+1. Ordered
+2. List
+
+* Unordered
+* List
+
+1. Ordered again
+
+Paragraph
+* not a list item
+
+1. More ordered
+* not a list item
+
+* Unordered again
+1. not a list item
+
+3. Bird
+1. McHale
+8. Parish
+
+Not a list
+
+3. Bird
+1. McHale
+8. Parish \ No newline at end of file
diff --git a/tests/extensions/smarty.html b/tests/extensions/smarty.html
new file mode 100644
index 0000000..e37e377
--- /dev/null
+++ b/tests/extensions/smarty.html
@@ -0,0 +1,32 @@
+<p>&rsquo;.<br />
+1440&ndash;80&rsquo;s<br />
+1440&ndash;&rsquo;80s<br />
+1440&mdash;&rsquo;80s<br />
+1960s<br />
+1960&rsquo;s<br />
+one two &rsquo;60s<br />
+&rsquo;60s</p>
+<p>It&rsquo;s fun. What&rsquo;s fun?<br />
+&ldquo;Isn&rsquo;t this fun&rdquo;? &mdash; she said&hellip;<br />
+&ldquo;&lsquo;Quoted&rsquo; words in a larger quote.&rdquo;<br />
+&lsquo;Quoted &ldquo;words&rdquo; in a larger quote.&rsquo;<br />
+&ldquo;quoted&rdquo; text and <strong>bold &ldquo;quoted&rdquo; text</strong><br />
+&lsquo;quoted&rsquo; text and <strong>bold &lsquo;quoted&rsquo; text</strong><br />
+em-dashes (&mdash;) and ellipes (&hellip;)<br />
+&ldquo;<a href="http://example.com">Link</a>&rdquo; &mdash; she said.</p>
+<p>&ldquo;Ellipsis within quotes&hellip;&rdquo;</p>
+<p>Кавычки-&laquo;ёлочки&raquo;<br />
+&laquo;hello&raquo;<br />
+Anführungszeichen-&raquo;Chevrons&laquo;</p>
+<hr />
+<p>Escaped -- ndash<br />
+'Escaped' "quotes"<br />
+Escaped ellipsis...</p>
+<p>&lsquo;Escaped "quotes" in real ones&rsquo;<br />
+'&ldquo;Real&rdquo; quotes in escaped ones'</p>
+<p>Skip <code>&lt;&lt;all&gt;&gt; "code" -- --- 'spans' ...</code>.</p>
+<pre><code>Also skip "code" 'blocks'
+foo -- bar --- baz ...
+</code></pre>
+<p>A line that &lsquo;wraps&rsquo; with
+<em>emphasis</em> at the beginning of the next line.</p> \ No newline at end of file
diff --git a/tests/extensions/smarty.txt b/tests/extensions/smarty.txt
new file mode 100644
index 0000000..12e5c95
--- /dev/null
+++ b/tests/extensions/smarty.txt
@@ -0,0 +1,40 @@
+'.
+1440--80's
+1440--'80s
+1440---'80s
+1960s
+1960's
+one two '60s
+'60s
+
+It's fun. What's fun?
+"Isn't this fun"? --- she said...
+"'Quoted' words in a larger quote."
+'Quoted "words" in a larger quote.'
+"quoted" text and **bold "quoted" text**
+'quoted' text and **bold 'quoted' text**
+em-dashes (---) and ellipes (...)
+"[Link](http://example.com)" --- she said.
+
+"Ellipsis within quotes..."
+
+Кавычки-<<ёлочки>>
+<<hello>>
+Anführungszeichen->>Chevrons<<
+
+--- -- ---
+
+Escaped \-- ndash
+\'Escaped\' \"quotes\"
+Escaped ellipsis\...
+
+'Escaped \"quotes\" in real ones'
+\'"Real" quotes in escaped ones\'
+
+Skip `<<all>> "code" -- --- 'spans' ...`.
+
+ Also skip "code" 'blocks'
+ foo -- bar --- baz ...
+
+A line that 'wraps' with
+*emphasis* at the beginning of the next line.
diff --git a/tests/extensions-x-toc/syntax-toc.html b/tests/extensions/toc.html
index eea5347..1f06b68 100644
--- a/tests/extensions-x-toc/syntax-toc.html
+++ b/tests/extensions/toc.html
@@ -135,7 +135,7 @@ and <code>&amp;</code> in your example code needs to be escaped.)</p>
<p>A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing but spaces or tabs is considered
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+blank.) Normal paragraphs should not be indented with spaces or tabs.</p>
<p>The implication of the "one or more consecutive lines of text" rule is
that Markdown supports "hard-wrapped" text paragraphs. This differs
significantly from most other text-to-HTML formatters (including Movable
@@ -222,7 +222,7 @@ example, with BBEdit, you can make a selection and choose Increase
Quote Level from the Text menu.</p>
<h2 id="lists">Lists</h2>
<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>
-<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably
+<p>Unordered lists use asterisks, pluses, and hyphens -- interchangeably
-- as list markers:</p>
<pre><code>* Red
* Green
@@ -309,7 +309,7 @@ items in <code>&lt;p&gt;</code> tags in the HTML output. For example, this input
&lt;/ul&gt;
</code></pre>
<p>List items may consist of multiple paragraphs. Each subsequent
-paragraph in a list item must be intended by either 4 spaces
+paragraph in a list item must be indented by either 4 spaces
or one tab:</p>
<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit. Aliquam hendrerit
@@ -461,12 +461,12 @@ on a line by itself:</p>
<p>That is:</p>
<ul>
<li>Square brackets containing the link identifier (optionally
-indented from the left margin using up to three spaces);</li>
+ indented from the left margin using up to three spaces);</li>
<li>followed by a colon;</li>
<li>followed by one or more spaces (or tabs);</li>
<li>followed by the URL for the link;</li>
<li>optionally followed by a title attribute for the link, enclosed
-in double or single quotes.</li>
+ in double or single quotes.</li>
</ul>
<p>The link URL may, optionally, be surrounded by angle brackets:</p>
<pre><code>[id]: &lt;http://example.com/&gt; "Optional Title Here"
@@ -634,10 +634,10 @@ for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>
<ul>
<li>An exclamation mark: <code>!</code>;</li>
<li>followed by a set of square brackets, containing the <code>alt</code>
-attribute text for the image;</li>
+ attribute text for the image;</li>
<li>followed by a set of parentheses, containing the URL or path to
-the image, and an optional <code>title</code> attribute enclosed in double
-or single quotes.</li>
+ the image, and an optional <code>title</code> attribute enclosed in double
+ or single quotes.</li>
</ul>
<p>Reference-style image syntax looks like this:</p>
<pre><code>![Alt text][id]
diff --git a/tests/extensions-x-toc/syntax-toc.txt b/tests/extensions/toc.txt
index f297200..1a1de34 100644
--- a/tests/extensions-x-toc/syntax-toc.txt
+++ b/tests/extensions/toc.txt
@@ -149,7 +149,7 @@ and `&` in your example code needs to be escaped.)
A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing but spaces or tabs is considered
-blank.) Normal paragraphs should not be intended with spaces or tabs.
+blank.) Normal paragraphs should not be indented with spaces or tabs.
The implication of the "one or more consecutive lines of text" rule is
that Markdown supports "hard-wrapped" text paragraphs. This differs
@@ -261,7 +261,7 @@ Quote Level from the Text menu.
Markdown supports ordered (numbered) and unordered (bulleted) lists.
-Unordered lists use asterisks, pluses, and hyphens -- interchangably
+Unordered lists use asterisks, pluses, and hyphens -- interchangeably
-- as list markers:
* Red
@@ -364,7 +364,7 @@ will turn into:
</ul>
List items may consist of multiple paragraphs. Each subsequent
-paragraph in a list item must be intended by either 4 spaces
+paragraph in a list item must be indented by either 4 spaces
or one tab:
1. This is a list item with two paragraphs. Lorem ipsum dolor
diff --git a/tests/extensions-x-toc/invalid.html b/tests/extensions/toc_invalid.html
index 41a3b1f..41a3b1f 100644
--- a/tests/extensions-x-toc/invalid.html
+++ b/tests/extensions/toc_invalid.html
diff --git a/tests/extensions-x-toc/invalid.txt b/tests/extensions/toc_invalid.txt
index f6c4ec4..f6c4ec4 100644
--- a/tests/extensions-x-toc/invalid.txt
+++ b/tests/extensions/toc_invalid.txt
diff --git a/tests/extensions/toc_nested.html b/tests/extensions/toc_nested.html
new file mode 100644
index 0000000..27af9df
--- /dev/null
+++ b/tests/extensions/toc_nested.html
@@ -0,0 +1,16 @@
+<h1 id="header-a">Header A<a class="headerlink" href="#header-a" title="Permanent link">&para;</a></h1>
+<h2 id="header-1">Header 1<a class="headerlink" href="#header-1" title="Permanent link">&para;</a></h2>
+<h3 id="header-i">Header i<a class="headerlink" href="#header-i" title="Permanent link">&para;</a></h3>
+<h1 id="header-b">Header <em>B</em><a class="headerlink" href="#header-b" title="Permanent link">&para;</a></h1>
+<div class="toc">
+<ul>
+<li><a href="#header-a">Header A</a><ul>
+<li><a href="#header-1">Header 1</a><ul>
+<li><a href="#header-i">Header i</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#header-b">Header B</a></li>
+</ul>
+</div> \ No newline at end of file
diff --git a/tests/extensions-x-toc/nested.txt b/tests/extensions/toc_nested.txt
index 9b515f9..0f897b2 100644
--- a/tests/extensions-x-toc/nested.txt
+++ b/tests/extensions/toc_nested.txt
@@ -4,6 +4,6 @@
### Header i
-# Header B
+# Header *B*
[TOC]
diff --git a/tests/extensions/toc_nested2.html b/tests/extensions/toc_nested2.html
new file mode 100644
index 0000000..2d8fa2d
--- /dev/null
+++ b/tests/extensions/toc_nested2.html
@@ -0,0 +1,14 @@
+<div class="toc">
+<ul>
+<li><a href="#start-with-header-other-than-one">Start with header other than one.</a></li>
+<li><a href="#header-3">Header 3</a><ul>
+<li><a href="#header-4">Header 4</a></li>
+</ul>
+</li>
+<li><a href="#header-3_1">Header 3</a></li>
+</ul>
+</div>
+<h3 id="start-with-header-other-than-one">Start with header other than one.<a class="headerlink" href="#start-with-header-other-than-one" title="Permanent link">[link]</a></h3>
+<h3 id="header-3">Header 3<a class="headerlink" href="#header-3" title="Permanent link">[link]</a></h3>
+<h4 id="header-4">Header 4<a class="headerlink" href="#header-4" title="Permanent link">[link]</a></h4>
+<h3 id="header-3_1">Header 3<a class="headerlink" href="#header-3_1" title="Permanent link">[link]</a></h3> \ No newline at end of file
diff --git a/tests/extensions/toc_nested2.txt b/tests/extensions/toc_nested2.txt
new file mode 100644
index 0000000..9db4d8c
--- /dev/null
+++ b/tests/extensions/toc_nested2.txt
@@ -0,0 +1,10 @@
+[TOC]
+
+### Start with header other than one.
+
+### Header 3
+
+#### Header 4
+
+### Header 3
+
diff --git a/tests/extensions/toc_nested_list.html b/tests/extensions/toc_nested_list.html
new file mode 100644
index 0000000..6912411
--- /dev/null
+++ b/tests/extensions/toc_nested_list.html
@@ -0,0 +1,30 @@
+<h1 id="title">Title</h1>
+<div class="toc">
+<ul>
+<li><a href="#title">Title</a><ul>
+<li><a href="#section-1">Section 1</a><ul>
+<li><a href="#subsection-1">Subsection 1</a></li>
+<li><a href="#subsection-2">Subsection 2</a></li>
+</ul>
+</li>
+<li><a href="#section-2">Section 2</a></li>
+<li><a href="#section-3">Section 3</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<h2 id="section-1">Section 1</h2>
+<ol>
+<li>
+<p>List Item 1</p>
+<h3 id="subsection-1">Subsection 1</h3>
+<p>Explanation 1</p>
+</li>
+<li>
+<p>List Item 2</p>
+<h3 id="subsection-2">Subsection 2</h3>
+<p>Explanation 2</p>
+</li>
+</ol>
+<h2 id="section-2">Section 2</h2>
+<h2 id="section-3">Section 3</h2> \ No newline at end of file
diff --git a/tests/extensions/toc_nested_list.txt b/tests/extensions/toc_nested_list.txt
new file mode 100644
index 0000000..d83e96f
--- /dev/null
+++ b/tests/extensions/toc_nested_list.txt
@@ -0,0 +1,19 @@
+# Title
+
+[TOC]
+
+## Section 1
+
+1. List Item 1
+
+ ### Subsection 1
+ Explanation 1
+
+2. List Item 2
+
+ ### Subsection 2
+ Explanation 2
+
+## Section 2
+
+## Section 3 \ No newline at end of file
diff --git a/tests/extensions/toc_out_of_order.html b/tests/extensions/toc_out_of_order.html
new file mode 100644
index 0000000..93d8b04
--- /dev/null
+++ b/tests/extensions/toc_out_of_order.html
@@ -0,0 +1,8 @@
+<div class="toc">
+<ul>
+<li><a href="#header-2">Header 2</a></li>
+<li><a href="#header-1">Header 1</a></li>
+</ul>
+</div>
+<h2 id="header-2">Header 2</h2>
+<h1 id="header-1">Header 1</h1> \ No newline at end of file
diff --git a/tests/extensions/toc_out_of_order.txt b/tests/extensions/toc_out_of_order.txt
new file mode 100644
index 0000000..f08bdbc
--- /dev/null
+++ b/tests/extensions/toc_out_of_order.txt
@@ -0,0 +1,5 @@
+[TOC]
+
+## Header 2
+
+# Header 1
diff --git a/tests/extensions/wikilinks.html b/tests/extensions/wikilinks.html
new file mode 100644
index 0000000..a76a693
--- /dev/null
+++ b/tests/extensions/wikilinks.html
@@ -0,0 +1,9 @@
+<p>Some text with a <a class="wikilink" href="/WikiLink/">WikiLink</a>.</p>
+<p>A link with <a class="wikilink" href="/white_space_and_underscores/">white space and_underscores</a> and a empty one.</p>
+<p>Another with <a class="wikilink" href="/double_spaces/">double spaces</a> and <a class="wikilink" href="/double__underscores/">double__underscores</a> and
+one that <a class="wikilink" href="/has_emphasis_inside/">has <em>emphasis</em> inside</a> and one <a class="wikilink" href="/with_multiple_underscores/">with_multiple_underscores</a>
+and one that is <em><a class="wikilink" href="/emphasised/">emphasised</a></em>.</p>
+<p>And a <a href="http://example.com/RealLink">RealLink</a>.</p>
+<p><a href="http://example.com/And_A_AutoLink">http://example.com/And_A_AutoLink</a></p>
+<p>And a <a href="/MarkdownLink/" title="A MarkdownLink">MarkdownLink</a> for
+completeness.</p> \ No newline at end of file
diff --git a/tests/extensions-x-wikilinks/wikilinks.txt b/tests/extensions/wikilinks.txt
index 8e6911b..8e6911b 100644
--- a/tests/extensions-x-wikilinks/wikilinks.txt
+++ b/tests/extensions/wikilinks.txt
diff --git a/tests/html4/html4.html b/tests/html4/html4.html
deleted file mode 100644
index 7c88ad7..0000000
--- a/tests/html4/html4.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<p>A test of the most<br>
-basic of html/xhtml differences.</p> \ No newline at end of file
diff --git a/tests/html4/html4.txt b/tests/html4/html4.txt
deleted file mode 100644
index fddaf8e..0000000
--- a/tests/html4/html4.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-A test of the most
-basic of html/xhtml differences. \ No newline at end of file
diff --git a/tests/markdown-test/benchmark.dat b/tests/markdown-test/benchmark.dat
deleted file mode 100644
index 3d549dd..0000000
--- a/tests/markdown-test/benchmark.dat
+++ /dev/null
@@ -1,20 +0,0 @@
-construction:0.000000:0.000000
-amps-and-angle-encoding:0.070000:131072.000000
-auto-links:0.080000:397312.000000
-backlash-escapes:0.270000:884736.000000
-blockquotes-with-dode-blocks:0.020000:0.000000
-hard-wrapped:0.020000:0.000000
-horizontal-rules:0.180000:135168.000000
-inline-html-advanced:0.070000:0.000000
-inline-html-comments:0.080000:0.000000
-inline-html-simple:0.210000:0.000000
-links-inline:0.140000:0.000000
-links-reference:0.170000:0.000000
-literal-quotes:0.090000:0.000000
-markdown-documentation-basics:0.690000:1806336.000000
-markdown-syntax:3.310000:6696960.000000
-nested-blockquotes:0.200000:0.000000
-ordered-and-unordered-list:0.530000:0.000000
-strong-and-em-together:0.200000:0.000000
-tabs:0.200000:0.000000
-tidyness:0.200000:0.000000
diff --git a/tests/misc/amp-in-url.html b/tests/misc/amp-in-url.html
deleted file mode 100644
index 2170a54..0000000
--- a/tests/misc/amp-in-url.html
+++ /dev/null
@@ -1 +0,0 @@
-<p><a href="http://www.freewisdom.org/this&amp;that">link</a></p> \ No newline at end of file
diff --git a/tests/misc/amp-in-url.txt b/tests/misc/amp-in-url.txt
deleted file mode 100644
index 471106e..0000000
--- a/tests/misc/amp-in-url.txt
+++ /dev/null
@@ -1 +0,0 @@
-[link](http://www.freewisdom.org/this&that)
diff --git a/tests/misc/ampersand.html b/tests/misc/ampersand.html
deleted file mode 100644
index 94ed80c..0000000
--- a/tests/misc/ampersand.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<p>&amp;</p>
-<p>AT&amp;T</p> \ No newline at end of file
diff --git a/tests/misc/ampersand.txt b/tests/misc/ampersand.txt
deleted file mode 100644
index 367d32c..0000000
--- a/tests/misc/ampersand.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-&
-
-AT&T
-
-
diff --git a/tests/misc/attributes2.html b/tests/misc/attributes2.html
deleted file mode 100644
index 5971cc8..0000000
--- a/tests/misc/attributes2.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<p id="TABLE.OF.CONTENTS" />
-<ul>
-<li id="TABLEOFCONTENTS" />
-</ul>
-<p id="TABLEOFCONTENTS">Or in the middle of the text </p>
-<p id="tableofcontents" /> \ No newline at end of file
diff --git a/tests/misc/attributes2.txt b/tests/misc/attributes2.txt
deleted file mode 100644
index d635cb2..0000000
--- a/tests/misc/attributes2.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-{@id=TABLE.OF.CONTENTS}
-
-
-* {@id=TABLEOFCONTENTS}
-
-
-Or in the middle of the text {@id=TABLEOFCONTENTS}
-
-{@id=tableofcontents}
-
diff --git a/tests/misc/backtick-escape.html b/tests/misc/backtick-escape.html
index 07f5115..da30541 100644
--- a/tests/misc/backtick-escape.html
+++ b/tests/misc/backtick-escape.html
@@ -1,3 +1,4 @@
-<p>\`This should not be in code.\`
-`This also should not be in code.`
+<p>`This should not be in code.`
+\<code>This should be in code.\\</code>
+\`This should not be in code.\`
`And finally this should not be in code.`</p> \ No newline at end of file
diff --git a/tests/misc/backtick-escape.txt b/tests/misc/backtick-escape.txt
index b4d80b2..c019463 100644
--- a/tests/misc/backtick-escape.txt
+++ b/tests/misc/backtick-escape.txt
@@ -1,3 +1,4 @@
-\\`This should not be in code.\\`
-\`This also should not be in code.\`
+\`This should not be in code.\`
+\\`This should be in code.\\`
+\\\`This should not be in code.\\\`
\`And finally this should not be in code.`
diff --git a/tests/misc/bidi.html b/tests/misc/bidi.html
index ffe04dc..3cc0444 100644
--- a/tests/misc/bidi.html
+++ b/tests/misc/bidi.html
@@ -1,7 +1,7 @@
<p><strong>Python</strong>(パイソン)は、<a href="http://en.wikipedia.org/wiki/Guido_van_Rossum">Guido van Rossum</a> によって作られたオープンソースのオブジェクト指向スクリプト言語。<a href="http://ja.wikipedia.org/wiki/Perl">Perl</a>とともに欧米で広く普及している。イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』にちなんで名付けられた。 (Pythonには、爬虫類のニシキヘビの意味があり、Python言語のマスコットやアイコンとして使われることがある。)</p>
<p>|||||||||||||||||||||||||||||THIS SHOULD BE LTR|||||||||||||||||||||||||</p>
-<p dir="rtl">|||||||||||||||||||||||||||||THIS SHOULD BE RTL||||||||||||||||||||||||| </p>
-<p dir="ltr">(<strong>بايثون</strong> لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (THIS SHOULD BE LTR ) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوح </p>
+<p>|||||||||||||||||||||||||||||THIS SHOULD BE RTL||||||||||||||||||||||||| </p>
+<p>(<strong>بايثون</strong> لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (THIS SHOULD BE LTR ) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوح </p>
<p>پایتون زبان برنامه‌نویسی تفسیری و سطح بالا ، شی‌گرا و یک زبان برنامه‌نویسی تفسیری سمت سرور قدرتمند است که توسط گیدو ون روسوم در سال ۱۹۹۰ ساخته شد. این زبان در ویژگی‌ها شبیه پرل، روبی، اسکیم، اسمال‌تاک و تی‌سی‌ال است و از مدیریت خودکار حافظه استفاده می‌کند</p>
<p>Python,是一种面向对象的、直譯式的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。</p>
<p>ބްލޫ ވޭލްގެ ދޫ މަތީގައި އެއްފަހަރާ 50 މީހުންނަށް ތިބެވިދާނެވެ. ބޮޑު މަހުގެ ދުލަކީ އެހާމެ ބޮޑު އެއްޗެކެވެ.</p>
diff --git a/tests/misc/bidi.txt b/tests/misc/bidi.txt
index f11ff1c..7e6dbea 100644
--- a/tests/misc/bidi.txt
+++ b/tests/misc/bidi.txt
@@ -2,10 +2,10 @@
|||||||||||||||||||||||||||||THIS SHOULD BE LTR|||||||||||||||||||||||||
-|||||||||||||||||||||||||||||THIS SHOULD BE RTL||||||||||||||||||||||||| {@dir=rtl}
+|||||||||||||||||||||||||||||THIS SHOULD BE RTL|||||||||||||||||||||||||
-(**بايثون** لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (THIS SHOULD BE LTR ) وقابلة للتطوير {@dir=ltr} بالإضافة إلى أنها مجانية و مفتوح
+(**بايثون** لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (THIS SHOULD BE LTR ) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوح
diff --git a/tests/misc/blank-block-quote.html b/tests/misc/blank-block-quote.html
index 23df17a..966078c 100644
--- a/tests/misc/blank-block-quote.html
+++ b/tests/misc/blank-block-quote.html
@@ -1,3 +1,3 @@
<p>aaaaaaaaaaa</p>
-<blockquote />
+<blockquote></blockquote>
<p>bbbbbbbbbbb</p> \ No newline at end of file
diff --git a/tests/misc/blank_lines_in_codeblocks.html b/tests/misc/blank_lines_in_codeblocks.html
new file mode 100644
index 0000000..57a4c36
--- /dev/null
+++ b/tests/misc/blank_lines_in_codeblocks.html
@@ -0,0 +1,61 @@
+<p>Preserve blank lines in code blocks with tabs:</p>
+<pre><code>a code block
+
+two tabbed lines
+
+
+three tabbed lines
+
+
+
+four tabbed lines
+
+
+
+
+five tabbed lines
+
+
+
+
+
+six tabbed lines
+
+
+
+
+
+
+End of tabbed block
+</code></pre>
+<p>And without tabs:</p>
+<pre><code>a code block
+
+two blank lines
+
+
+three blank lines
+
+
+
+four blank lines
+
+
+
+
+five blank lines
+
+
+
+
+
+six blank lines
+
+
+
+
+
+
+End of block
+</code></pre>
+<p>End of document</p> \ No newline at end of file
diff --git a/tests/misc/blank_lines_in_codeblocks.txt b/tests/misc/blank_lines_in_codeblocks.txt
new file mode 100644
index 0000000..e7ae102
--- /dev/null
+++ b/tests/misc/blank_lines_in_codeblocks.txt
@@ -0,0 +1,73 @@
+Preserve blank lines in code blocks with tabs:
+
+ a code block
+
+ two tabbed lines
+
+
+ three tabbed lines
+
+
+
+ four tabbed lines
+
+
+
+
+ five tabbed lines
+
+
+
+
+
+ six tabbed lines
+
+
+
+
+
+
+ End of tabbed block
+
+
+
+
+
+
+And without tabs:
+
+ a code block
+
+ two blank lines
+
+
+ three blank lines
+
+
+
+ four blank lines
+
+
+
+
+ five blank lines
+
+
+
+
+
+ six blank lines
+
+
+
+
+
+
+ End of block
+
+
+
+
+
+
+End of document \ No newline at end of file
diff --git a/tests/misc/blockquote-hr.html b/tests/misc/blockquote-hr.html
index 61c1a3c..e13784f 100644
--- a/tests/misc/blockquote-hr.html
+++ b/tests/misc/blockquote-hr.html
@@ -13,4 +13,13 @@ With multiple lines.
Even a lazy line.</p>
<hr />
<p>The last line.</p>
+</blockquote>
+<p>foo</p>
+<blockquote>
+<p>bar</p>
+<hr />
+</blockquote>
+<hr />
+<blockquote>
+<p>baz</p>
</blockquote> \ No newline at end of file
diff --git a/tests/misc/blockquote-hr.txt b/tests/misc/blockquote-hr.txt
index ef9c44f..8f67b24 100644
--- a/tests/misc/blockquote-hr.txt
+++ b/tests/misc/blockquote-hr.txt
@@ -19,3 +19,9 @@ Even a lazy line.
> ---
> The last line.
+
+foo
+> bar
+> ***
+---
+> baz
diff --git a/tests/misc/br.html b/tests/misc/br.html
index 08563a5..e8e6fdf 100644
--- a/tests/misc/br.html
+++ b/tests/misc/br.html
@@ -8,4 +8,4 @@ Or, if you prefer, &lt;strong&gt;use two underscores instead&lt;/strong&gt;.&lt;
<h2>Lists</h2>
<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,
<code>+</code>, and <code>-</code>) as list markers. These three markers are
-interchangable; this:</p> \ No newline at end of file
+interchangeable; this:</p> \ No newline at end of file
diff --git a/tests/misc/br.txt b/tests/misc/br.txt
index 59d29e0..19f4cf1 100644
--- a/tests/misc/br.txt
+++ b/tests/misc/br.txt
@@ -12,5 +12,5 @@ Output:
Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,
`+`, and `-`) as list markers. These three markers are
-interchangable; this:
+interchangeable; this:
diff --git a/tests/misc/brackets-in-img-title.html b/tests/misc/brackets-in-img-title.html
new file mode 100644
index 0000000..3677139
--- /dev/null
+++ b/tests/misc/brackets-in-img-title.html
@@ -0,0 +1,9 @@
+<p><img alt="alt" src="local-img.jpg" />
+<img alt="alt" src="local-img.jpg" title="" />
+<img alt="alt" src="local-img.jpg" title="normal title" /></p>
+<p><img alt="alt" src="local-img.jpg" title="(just title in brackets)" />
+<img alt="alt" src="local-img.jpg" title="title with brackets (I think)" /></p>
+<p><img alt="alt" src="local-img.jpg" title="(" />
+<img alt="alt" src="local-img.jpg" title="(open only" />
+<img alt="alt" src="local-img.jpg" title=")" />
+<img alt="alt" src="local-img.jpg" title="close only)" /></p> \ No newline at end of file
diff --git a/tests/misc/brackets-in-img-title.txt b/tests/misc/brackets-in-img-title.txt
new file mode 100644
index 0000000..01fcd4e
--- /dev/null
+++ b/tests/misc/brackets-in-img-title.txt
@@ -0,0 +1,12 @@
+![alt](local-img.jpg)
+![alt](local-img.jpg "")
+![alt](local-img.jpg "normal title")
+
+![alt](local-img.jpg "(just title in brackets)")
+![alt](local-img.jpg "title with brackets (I think)")
+
+![alt](local-img.jpg "(")
+![alt](local-img.jpg "(open only")
+![alt](local-img.jpg ")")
+![alt](local-img.jpg "close only)")
+
diff --git a/tests/misc/comments.html b/tests/misc/comments.html
deleted file mode 100644
index 005a755..0000000
--- a/tests/misc/comments.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<p>X&lt;0</p>
-<p>X&gt;0</p>
-<!-- A comment -->
-
-<div>as if</div> \ No newline at end of file
diff --git a/tests/misc/comments.txt b/tests/misc/comments.txt
deleted file mode 100644
index 68302b0..0000000
--- a/tests/misc/comments.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-X<0
-
-X>0
-
-<!-- A comment -->
-
-<div>as if</div>
diff --git a/tests/misc/div.html b/tests/misc/div.html
deleted file mode 100644
index 7cd0d6d..0000000
--- a/tests/misc/div.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<div id="sidebar">
-
-<p><em>foo</em></p>
-</div> \ No newline at end of file
diff --git a/tests/misc/div.txt b/tests/misc/div.txt
deleted file mode 100644
index ca87745..0000000
--- a/tests/misc/div.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-<div id="sidebar">
-
- _foo_
-
-</div>
diff --git a/tests/misc/em-around-links.html b/tests/misc/em-around-links.html
index 06bfa8e..cc415f5 100644
--- a/tests/misc/em-around-links.html
+++ b/tests/misc/em-around-links.html
@@ -1,16 +1,13 @@
<h1>Title</h1>
-
<ul>
- <li><em><a href="http://www.freewisdom.org/projects/python-markdown/">Python in Markdown</a> by some
+<li><em><a href="http://example.com">Python in Markdown</a> by some
great folks</em> - This <em>does</em> work as expected.</li>
- <li><em><a href="http://www.freewisdom.org/projects/python-markdown/">Python in Markdown</a> by some
+<li><em><a href="http://example.com">Python in Markdown</a> by some
great folks</em> - This <em>does</em> work as expected.</li>
- <li><a href="http://www.freewisdom.org/projects/python-markdown/"><em>Python in Markdown</em></a> by some
+<li><a href="http://example.com"><em>Python in Markdown</em></a> by some
great folks - This <em>does</em> work as expected.</li>
- <li><a href="http://www.freewisdom.org/projects/python-markdown/"><em>Python in Markdown</em></a> <em>by some
+<li><a href="http://example.com"><em>Python in Markdown</em></a> <em>by some
great folks</em> - This <em>does</em> work as expected.</li>
</ul>
-
-<p><em><a href="http://www.freewisdom.org/projects/python-markdown/">Python in Markdown</a> by some
- great folks</em> - This <em>does</em> work as expected.</p>
-
+<p><em><a href="http://example.com">Python in Markdown</a> by some
+great folks</em> - This <em>does</em> work as expected.</p> \ No newline at end of file
diff --git a/tests/misc/em-around-links.txt b/tests/misc/em-around-links.txt
index 5b15be4..dbc3644 100644
--- a/tests/misc/em-around-links.txt
+++ b/tests/misc/em-around-links.txt
@@ -1,14 +1,14 @@
# Title
- - *[Python in Markdown](http://www.freewisdom.org/projects/python-markdown/) by some
+ - *[Python in Markdown](http://example.com) by some
great folks* - This *does* work as expected.
- - _[Python in Markdown](http://www.freewisdom.org/projects/python-markdown/) by some
+ - _[Python in Markdown](http://example.com) by some
great folks_ - This *does* work as expected.
- - [_Python in Markdown_](http://www.freewisdom.org/projects/python-markdown/) by some
+ - [_Python in Markdown_](http://example.com) by some
great folks - This *does* work as expected.
- - [_Python in Markdown_](http://www.freewisdom.org/projects/python-markdown/) _by some
+ - [_Python in Markdown_](http://example.com) _by some
great folks_ - This *does* work as expected.
-_[Python in Markdown](http://www.freewisdom.org/projects/python-markdown/) by some
+_[Python in Markdown](http://example.com) by some
great folks_ - This *does* work as expected.
diff --git a/tests/misc/em_strong.html b/tests/misc/em_strong.html
index 75c92d8..776381b 100644
--- a/tests/misc/em_strong.html
+++ b/tests/misc/em_strong.html
@@ -7,4 +7,5 @@
<p>three asterisks: ***</p>
<p>with spaces: * * *</p>
<p>three underscores: ___</p>
-<p>with spaces: _ _ _</p> \ No newline at end of file
+<p>with spaces: _ _ _</p>
+<p>One char: <em>a</em></p> \ No newline at end of file
diff --git a/tests/misc/em_strong.txt b/tests/misc/em_strong.txt
index d0774ad..1285665 100644
--- a/tests/misc/em_strong.txt
+++ b/tests/misc/em_strong.txt
@@ -18,3 +18,4 @@ three underscores: ___
with spaces: _ _ _
+One char: _a_
diff --git a/tests/misc/em_strong_complex.html b/tests/misc/em_strong_complex.html
new file mode 100644
index 0000000..65faddf
--- /dev/null
+++ b/tests/misc/em_strong_complex.html
@@ -0,0 +1,14 @@
+<p><em><strong>test test</strong> test test</em></p>
+<p><strong><em>test test</em> test test</strong></p>
+<p><strong><em>test</em></strong></p>
+<p><strong>test</strong></p>
+<p><strong><em>test</em> test</strong>_</p>
+<p><strong><em>test</em> test</strong></p>
+<p><em>test_test test_test</em></p>
+<p><em><strong>test test</strong> test test</em></p>
+<p><strong><em>test test</em> test test</strong></p>
+<p>*<em>test</em></p>
+<p><strong><em>test</em></strong></p>
+<p><strong>test</strong>*</p>
+<p><strong><em>test</em> test</strong></p>
+<p><em>test</em>test test<em>test</em></p> \ No newline at end of file
diff --git a/tests/misc/em_strong_complex.txt b/tests/misc/em_strong_complex.txt
new file mode 100644
index 0000000..0425971
--- /dev/null
+++ b/tests/misc/em_strong_complex.txt
@@ -0,0 +1,27 @@
+___test test__ test test_
+
+___test test_ test test__
+
+___test___
+
+__test__
+
+___test_ test___
+
+___test_ test__
+
+_test_test test_test_
+
+***test test** test test*
+
+***test test* test test**
+
+**test*
+
+***test***
+
+**test***
+
+***test* test**
+
+*test*test test*test* \ No newline at end of file
diff --git a/tests/misc/email.html b/tests/misc/email.html
index 0d033bb..8ef799f 100644
--- a/tests/misc/email.html
+++ b/tests/misc/email.html
@@ -1,2 +1,3 @@
<p>asdfasdfadsfasd <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#121;&#117;&#114;&#105;&#64;&#102;&#114;&#101;&#101;&#119;&#105;&#115;&#100;&#111;&#109;&#46;&#111;&#114;&#103;">&#121;&#117;&#114;&#105;&#64;&#102;&#114;&#101;&#101;&#119;&#105;&#115;&#100;&#111;&#109;&#46;&#111;&#114;&#103;</a> or you can say
-instead <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#121;&#117;&#114;&#105;&#64;&#102;&#114;&#101;&#101;&#119;&#105;&#115;&#100;&#111;&#109;&#46;&#111;&#114;&#103;">&#121;&#117;&#114;&#105;&#64;&#102;&#114;&#101;&#101;&#119;&#105;&#115;&#100;&#111;&#109;&#46;&#111;&#114;&#103;</a></p> \ No newline at end of file
+instead <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#121;&#117;&#114;&#105;&#64;&#102;&#114;&#101;&#101;&#119;&#105;&#115;&#100;&#111;&#109;&#46;&#111;&#114;&#103;">&#121;&#117;&#114;&#105;&#64;&#102;&#114;&#101;&#101;&#119;&#105;&#115;&#100;&#111;&#109;&#46;&#111;&#114;&#103;</a></p>
+<p><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#98;&#111;&#98;&#38;&#115;&#117;&#101;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;">&#98;&#111;&#98;&amp;&#115;&#117;&#101;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;</a></p> \ No newline at end of file
diff --git a/tests/misc/email.txt b/tests/misc/email.txt
index ece8801..c557c73 100644
--- a/tests/misc/email.txt
+++ b/tests/misc/email.txt
@@ -1,3 +1,5 @@
asdfasdfadsfasd <yuri@freewisdom.org> or you can say
instead <mailto:yuri@freewisdom.org>
+
+<bob&sue@example.com>
diff --git a/tests/misc/escaped_links.html b/tests/misc/escaped_links.html
new file mode 100644
index 0000000..b2a7c96
--- /dev/null
+++ b/tests/misc/escaped_links.html
@@ -0,0 +1,4 @@
+<p>Backslashed in links:</p>
+<p><a href="/query?q=go:GO\:0000307">q=go:GO\:0000307</a></p>
+<p><a href="/query?q=go:GO\:0000308" title="/query?q=go:GO\:0000308">q=go:GO\:0000308</a></p>
+<p>a \non-escaped char.</p> \ No newline at end of file
diff --git a/tests/misc/escaped_links.txt b/tests/misc/escaped_links.txt
new file mode 100644
index 0000000..c64ab26
--- /dev/null
+++ b/tests/misc/escaped_links.txt
@@ -0,0 +1,9 @@
+Backslashed in links:
+
+[q=go:GO\\:0000307](/query?q=go:GO\\:0000307)
+
+[q=go:GO\\:0000308][foo]
+
+[foo]: /query?q=go:GO\:0000308 "/query?q=go:GO\:0000308"
+
+a \non-escaped char. \ No newline at end of file
diff --git a/tests/misc/h1.html b/tests/misc/h1.html
index fbf9b4d..886b61e 100644
--- a/tests/misc/h1.html
+++ b/tests/misc/h1.html
@@ -1,3 +1,5 @@
<h2>Header</h2>
<h1>Header 2</h1>
-<h3>H3</h3> \ No newline at end of file
+<h3>H3</h3>
+<h1>H1</h1>
+<h2>H2</h2> \ No newline at end of file
diff --git a/tests/misc/h1.txt b/tests/misc/h1.txt
index 0a1c8f9..f67b921 100644
--- a/tests/misc/h1.txt
+++ b/tests/misc/h1.txt
@@ -5,3 +5,9 @@ Header 2
========
### H3
+
+H1
+=
+
+H2
+--
diff --git a/tests/misc/header-in-lists.html b/tests/misc/header-in-lists.html
new file mode 100644
index 0000000..351b44a
--- /dev/null
+++ b/tests/misc/header-in-lists.html
@@ -0,0 +1,20 @@
+<p>Tight List:</p>
+<ul>
+<li>
+<h1>Header1</h1>
+Line 1-2 - <strong>not</strong> a header <em>or</em> paragraph!</li>
+<li>
+<h1>Header2</h1>
+Line 2-2 - not a header or paragraph!</li>
+</ul>
+<p>Loose List:</p>
+<ul>
+<li>
+<h1>Header1</h1>
+<p>Line 1-2 - <em>a</em> paragraph</p>
+</li>
+<li>
+<h1>Header2</h1>
+<p>Line 2-2 - a paragraph</p>
+</li>
+</ul> \ No newline at end of file
diff --git a/tests/misc/header-in-lists.txt b/tests/misc/header-in-lists.txt
new file mode 100644
index 0000000..b22083e
--- /dev/null
+++ b/tests/misc/header-in-lists.txt
@@ -0,0 +1,14 @@
+Tight List:
+
+* #Header1
+Line 1-2 - **not** a header *or* paragraph!
+* #Header2
+Line 2-2 - not a header or paragraph!
+
+Loose List:
+
+* #Header1
+Line 1-2 - *a* paragraph
+
+* #Header2
+Line 2-2 - a paragraph
diff --git a/tests/misc/html-comments.html b/tests/misc/html-comments.html
deleted file mode 100644
index 7b36246..0000000
--- a/tests/misc/html-comments.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<p>Here is HTML <!-- **comment** -->
-and once more <p><!--comment--></p></p> \ No newline at end of file
diff --git a/tests/misc/html-comments.txt b/tests/misc/html-comments.txt
deleted file mode 100644
index cac4da5..0000000
--- a/tests/misc/html-comments.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Here is HTML <!-- **comment** -->
-and once more <p><!--comment--></p>
diff --git a/tests/misc/html.html b/tests/misc/html.html
deleted file mode 100644
index 81ac5ee..0000000
--- a/tests/misc/html.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<h1>Block level html</h1>
-
-<p>Some inline <b>stuff<b>.<br />
-</p>
-<p>Now some <arbitrary>arbitrary tags</arbitrary>.</p>
-<div>More block level html.</div>
-
-<p>And of course <script>blah</script>.</p>
-<p><a href="script&gt;stuff&lt;/script">this <script>link</a></p> \ No newline at end of file
diff --git a/tests/misc/html.txt b/tests/misc/html.txt
deleted file mode 100644
index 3ac3ae0..0000000
--- a/tests/misc/html.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-
-<h1>Block level html</h1>
-
-Some inline <b>stuff<b>.
-
-Now some <arbitrary>arbitrary tags</arbitrary>.
-
-<div>More block level html.</div>
-
-And of course <script>blah</script>.
-
-[this <script>link](<script>stuff</script>)
-
diff --git a/tests/misc/image.html b/tests/misc/image.html
deleted file mode 100644
index 16be2d5..0000000
--- a/tests/misc/image.html
+++ /dev/null
@@ -1 +0,0 @@
-<p><img alt="Poster" src="http://humane_man.jpg" title="The most humane man." /></p> \ No newline at end of file
diff --git a/tests/misc/image.txt b/tests/misc/image.txt
deleted file mode 100644
index 5553bd4..0000000
--- a/tests/misc/image.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-
-![Poster](http://humane_man.jpg "The most humane man.")
diff --git a/tests/misc/ins-at-start-of-paragraph.html b/tests/misc/ins-at-start-of-paragraph.html
new file mode 100644
index 0000000..a08524e
--- /dev/null
+++ b/tests/misc/ins-at-start-of-paragraph.html
@@ -0,0 +1 @@
+<p><ins>Hello, fellow developer</ins> this ins should be wrapped in a p.</p> \ No newline at end of file
diff --git a/tests/misc/ins-at-start-of-paragraph.txt b/tests/misc/ins-at-start-of-paragraph.txt
new file mode 100644
index 0000000..2aee0bc
--- /dev/null
+++ b/tests/misc/ins-at-start-of-paragraph.txt
@@ -0,0 +1 @@
+<ins>Hello, fellow developer</ins> this ins should be wrapped in a p.
diff --git a/tests/misc/lists3.html b/tests/misc/lists3.html
index 991395b..7cfe001 100644
--- a/tests/misc/lists3.html
+++ b/tests/misc/lists3.html
@@ -1,5 +1,5 @@
<ul>
<li>blah blah blah
-sdf asdf asdf asdf asdf
-asda asdf asdfasd</li>
+ sdf asdf asdf asdf asdf
+ asda asdf asdfasd</li>
</ul> \ No newline at end of file
diff --git a/tests/misc/lists7.html b/tests/misc/lists7.html
new file mode 100644
index 0000000..81c1daa
--- /dev/null
+++ b/tests/misc/lists7.html
@@ -0,0 +1,98 @@
+<ul>
+<li>item 1</li>
+<li>
+<ul>
+<li>item 2-1</li>
+<li>item 2-2</li>
+<li>item 2-3</li>
+<li>item 2-4</li>
+</ul>
+</li>
+<li>item 3</li>
+<li>
+<ul>
+<li>
+<p>item 4-1</p>
+</li>
+<li>
+<p>item 4-2</p>
+</li>
+<li>
+<p>item 4-3</p>
+</li>
+<li>
+<p>item 4-4</p>
+</li>
+</ul>
+</li>
+</ul>
+<h2>same as above, different spacing</h2>
+<ul>
+<li>item 1</li>
+<li>
+<ul>
+<li>item 2-1</li>
+<li>item 2-2</li>
+</ul>
+</li>
+<li>item 3</li>
+<li>
+<ul>
+<li>
+<p>item 4-1</p>
+</li>
+<li>
+<p>item 4-2</p>
+</li>
+</ul>
+</li>
+</ul>
+<h2>only 1 item in nested list ##</h2>
+<ul>
+<li>item 1</li>
+<li>
+<ul>
+<li>item 2-1</li>
+</ul>
+</li>
+<li>item 3</li>
+<li>
+<ul>
+<li>item 4-1</li>
+</ul>
+</li>
+</ul>
+<h2>Something ludicrous ##</h2>
+<ul>
+<li>item 1</li>
+<li>
+<ul>
+<li>item 2-1</li>
+<li>item 2-2</li>
+<li>
+<ul>
+<li>item 2-2-1</li>
+<li>item 2-2-2</li>
+</ul>
+</li>
+<li>item 2-3</li>
+</ul>
+</li>
+<li>item 3</li>
+<li>
+<ul>
+<li>
+<p>item 4-1</p>
+</li>
+<li>
+<ul>
+<li>item 4-1-1</li>
+<li>item 4-1-2</li>
+</ul>
+</li>
+<li>
+<p>item 4-2</p>
+</li>
+</ul>
+</li>
+</ul> \ No newline at end of file
diff --git a/tests/misc/lists7.txt b/tests/misc/lists7.txt
new file mode 100644
index 0000000..77181c8
--- /dev/null
+++ b/tests/misc/lists7.txt
@@ -0,0 +1,44 @@
+* item 1
+* * item 2-1
+ * item 2-2
+ * item 2-3
+ * item 2-4
+* item 3
+* * item 4-1
+
+ * item 4-2
+
+ * item 4-3
+
+ * item 4-4
+
+## same as above, different spacing
+* item 1
+* * item 2-1
+ * item 2-2
+* item 3
+* * item 4-1
+
+ * item 4-2
+
+## only 1 item in nested list ##
+* item 1
+* * item 2-1
+* item 3
+* * item 4-1
+
+## Something ludicrous ##
+* item 1
+* * item 2-1
+ * item 2-2
+ * * item 2-2-1
+ * item 2-2-2
+ * item 2-3
+* item 3
+* * item 4-1
+
+ * * item 4-1-1
+ * item 4-1-2
+
+ * item 4-2
+
diff --git a/tests/misc/lists8.html b/tests/misc/lists8.html
new file mode 100644
index 0000000..8a93a51
--- /dev/null
+++ b/tests/misc/lists8.html
@@ -0,0 +1,39 @@
+<h1>Lists with blockquotes</h1>
+<ol>
+<li>
+<blockquote>
+<p>Four-score and seven years ago...</p>
+</blockquote>
+</li>
+<li>
+<blockquote>
+<p>We have nothing to fear...</p>
+</blockquote>
+</li>
+<li>
+<blockquote>
+<p>This is it...</p>
+</blockquote>
+</li>
+</ol>
+<h1>Multi-line blockquotes</h1>
+<ul>
+<li>
+<blockquote>
+<p>Four-score and sever years ago
+our fathers brought forth</p>
+</blockquote>
+</li>
+<li>
+<blockquote>
+<p>We have nothing to fear
+but fear itself</p>
+</blockquote>
+</li>
+<li>
+<blockquote>
+<p>This is it
+as far as I'm concerned</p>
+</blockquote>
+</li>
+</ul> \ No newline at end of file
diff --git a/tests/misc/lists8.txt b/tests/misc/lists8.txt
new file mode 100644
index 0000000..8ab6767
--- /dev/null
+++ b/tests/misc/lists8.txt
@@ -0,0 +1,16 @@
+# Lists with blockquotes
+1. > Four-score and seven years ago...
+
+2. > We have nothing to fear...
+
+3. > This is it...
+
+# Multi-line blockquotes
+* > Four-score and sever years ago
+ > our fathers brought forth
+
+* > We have nothing to fear
+ > but fear itself
+
+* > This is it
+ > as far as I'm concerned
diff --git a/tests/misc/markup-inside-p.html b/tests/misc/markup-inside-p.html
deleted file mode 100644
index 1b6b420..0000000
--- a/tests/misc/markup-inside-p.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<p>
-
-_foo_
-
-</p>
-
-<p>
-_foo_
-</p>
-
-<p>_foo_</p>
-
-<p>
-
-_foo_
-</p>
-
-<p>
-_foo_
-
-</p> \ No newline at end of file
diff --git a/tests/misc/markup-inside-p.txt b/tests/misc/markup-inside-p.txt
deleted file mode 100644
index ab7dd0f..0000000
--- a/tests/misc/markup-inside-p.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-<p>
-
-_foo_
-
-</p>
-
-<p>
-_foo_
-</p>
-
-<p>_foo_</p>
-
-<p>
-
-_foo_
-</p>
-
-<p>
-_foo_
-
-</p>
diff --git a/tests/misc/mismatched-tags.html b/tests/misc/mismatched-tags.html
deleted file mode 100644
index ec087e1..0000000
--- a/tests/misc/mismatched-tags.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<p>Some text</p>
-
-<div>some more text</div>
-
-<p>and a bit more</p>
-<p>And this output</p>
-
-<p><em>Compatible with PHP Markdown Extra 1.2.2 and Markdown.pl1.0.2b8:</em></p>
-<!-- comment --><p><div>text</div><br /></p><br />
-
-<p>Should be in p</p> \ No newline at end of file
diff --git a/tests/misc/mismatched-tags.txt b/tests/misc/mismatched-tags.txt
deleted file mode 100644
index 8e6a52f..0000000
--- a/tests/misc/mismatched-tags.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-<p>Some text</p><div>some more text</div>
-
-and a bit more
-
-<p>And this output</p> *Compatible with PHP Markdown Extra 1.2.2 and Markdown.pl1.0.2b8:*
-
-<!-- comment --><p><div>text</div><br /></p><br />
-
-Should be in p
diff --git a/tests/misc/more_comments.html b/tests/misc/more_comments.html
deleted file mode 100644
index 97074d5..0000000
--- a/tests/misc/more_comments.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<!--asd@asdfd.com>
-
-<!asd@asdfd.com>
-
-<asd!@asdfd.com>
-
-<p>Test</p> \ No newline at end of file
diff --git a/tests/misc/more_comments.txt b/tests/misc/more_comments.txt
deleted file mode 100644
index 0397f9c..0000000
--- a/tests/misc/more_comments.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-<!--asd@asdfd.com>
-
-
-<!asd@asdfd.com>
-
-
-<asd!@asdfd.com>
-
-Test
diff --git a/tests/misc/multi-line-tags.html b/tests/misc/multi-line-tags.html
deleted file mode 100644
index 763a050..0000000
--- a/tests/misc/multi-line-tags.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<div>
-
-<p>asdf asdfasd</p>
-</div> \ No newline at end of file
diff --git a/tests/misc/multi-line-tags.txt b/tests/misc/multi-line-tags.txt
deleted file mode 100644
index 4ea3b02..0000000
--- a/tests/misc/multi-line-tags.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-
-<div>
-
-asdf asdfasd
-
-</div>
diff --git a/tests/misc/multi-paragraph-block-quote.html b/tests/misc/multi-paragraph-block-quote.html
index e13986a..f01b5e4 100644
--- a/tests/misc/multi-paragraph-block-quote.html
+++ b/tests/misc/multi-paragraph-block-quote.html
@@ -1,6 +1,6 @@
<blockquote>
<p>This is line one of paragraph one
- This is line two of paragraph one</p>
+This is line two of paragraph one</p>
<p>This is line one of paragraph two</p>
<p>This is another blockquote.</p>
</blockquote> \ No newline at end of file
diff --git a/tests/misc/multi-test.html b/tests/misc/multi-test.html
index 2c8fe9e..9fe9648 100644
--- a/tests/misc/multi-test.html
+++ b/tests/misc/multi-test.html
@@ -1,5 +1,3 @@
-<h1 id="inthebeginning">Header </h1>
-<p>Now, let's try something <em class="special">inline</em>, to see if it works</p>
<p>Blah blah blah <a href="http://www.slashdot.org">http://www.slashdot.org</a></p>
<ul>
<li>Basic list</li>
diff --git a/tests/misc/multi-test.txt b/tests/misc/multi-test.txt
index c4ab1c1..feaac31 100644
--- a/tests/misc/multi-test.txt
+++ b/tests/misc/multi-test.txt
@@ -1,9 +1,3 @@
-
-# Header {@id=inthebeginning}
-
-Now, let's try something *inline{@class=special}*, to see if it works
-
-
Blah blah blah <http://www.slashdot.org>
* Basic list
diff --git a/tests/misc/multiline-comments.html b/tests/misc/multiline-comments.html
deleted file mode 100644
index 547ba0b..0000000
--- a/tests/misc/multiline-comments.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
-
-foo
-
--->
-
-<p>
-
-foo
-
-</p>
-
-<div>
-
-<p>foo</p>
-</div> \ No newline at end of file
diff --git a/tests/misc/multiline-comments.txt b/tests/misc/multiline-comments.txt
deleted file mode 100644
index 71bc418..0000000
--- a/tests/misc/multiline-comments.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-
-foo
-
--->
-
-<p>
-
-foo
-
-</p>
-
-
-<div>
-
-foo
-
-</div>
diff --git a/tests/misc/nested-lists.html b/tests/misc/nested-lists.html
index bb73784..9af441a 100644
--- a/tests/misc/nested-lists.html
+++ b/tests/misc/nested-lists.html
@@ -36,4 +36,17 @@
</ul>
</li>
<li>item 2</li>
+<li>item 3</li>
+<li>
+<p>item 4</p>
+<ul>
+<li>item 4-1</li>
+<li>item 4-2</li>
+<li>
+<p>item 4-3</p>
+<p>Paragraph under item 4-3</p>
+</li>
+</ul>
+<p>Paragraph under item 4</p>
+</li>
</ul> \ No newline at end of file
diff --git a/tests/misc/nested-lists.txt b/tests/misc/nested-lists.txt
index 38aae15..a2704b4 100644
--- a/tests/misc/nested-lists.txt
+++ b/tests/misc/nested-lists.txt
@@ -22,3 +22,12 @@ plain text
* item 1-2
* item 1-2-1
* item 2
+* item 3
+* item 4
+ * item 4-1
+ * item 4-2
+ * item 4-3
+
+ Paragraph under item 4-3
+
+ Paragraph under item 4
diff --git a/tests/misc/nested-patterns.html b/tests/misc/nested-patterns.html
index b90d46d..1c7bb43 100644
--- a/tests/misc/nested-patterns.html
+++ b/tests/misc/nested-patterns.html
@@ -1,7 +1,10 @@
-<p><strong><em><a href="http://www.freewisdom.org">link</a></em></strong>
-<strong><em><a href="http://www.freewisdom.org">link</a></em></strong>
-<strong><a href="http://www.freewisdom.org"><em>link</em></a></strong>
-<strong><a href="http://www.freewisdom.org"><em>link</em></a></strong>
-<strong><a href="http://www.freewisdom.org"><em>link</em></a></strong>
-<strong><a href="http://www.freewisdom.org"><em>link</em></a></strong>
-<a href="http://www.freewisdom.org"><strong><em>link</em></strong></a></p> \ No newline at end of file
+<p><strong><em><a href="http://example.com">link</a></em></strong>
+<strong><em><a href="http://example.com">link</a></em></strong>
+<strong><a href="http://example.com"><em>link</em></a></strong>
+<strong><a href="http://example.com"><em>link</em></a></strong>
+<strong><a href="http://example.com"><em>link</em></a></strong>
+<strong><a href="http://example.com"><em>link</em></a></strong>
+<a href="http://example.com"><strong><em>link</em></strong></a></p>
+<p><strong><em>I am <strong><em>italic</em> and</strong> bold</em> I am <code>just</code> bold</strong></p>
+<p>Example <strong><em>bold italic</em></strong> on the same line <strong><em>bold italic</em></strong>.</p>
+<p>Example <strong><em>bold italic</em></strong> on the same line <strong><em>bold italic</em></strong>.</p> \ No newline at end of file
diff --git a/tests/misc/nested-patterns.txt b/tests/misc/nested-patterns.txt
index 3f5dc3e..9032cf1 100644
--- a/tests/misc/nested-patterns.txt
+++ b/tests/misc/nested-patterns.txt
@@ -1,7 +1,13 @@
-___[link](http://www.freewisdom.org)___
-***[link](http://www.freewisdom.org)***
-**[*link*](http://www.freewisdom.org)**
-__[_link_](http://www.freewisdom.org)__
-__[*link*](http://www.freewisdom.org)__
-**[_link_](http://www.freewisdom.org)**
-[***link***](http://www.freewisdom.org)
+___[link](http://example.com)___
+***[link](http://example.com)***
+**[*link*](http://example.com)**
+__[_link_](http://example.com)__
+__[*link*](http://example.com)__
+**[_link_](http://example.com)**
+[***link***](http://example.com)
+
+***I am ___italic_ and__ bold* I am `just` bold**
+
+Example __*bold italic*__ on the same line __*bold italic*__.
+
+Example **_bold italic_** on the same line **_bold italic_**.
diff --git a/tests/misc/para-with-hr.html b/tests/misc/para-with-hr.html
index 8569fec..7607449 100644
--- a/tests/misc/para-with-hr.html
+++ b/tests/misc/para-with-hr.html
@@ -1,3 +1,6 @@
<p>Here is a paragraph, followed by a horizontal rule.</p>
<hr />
-<p>Followed by another paragraph.</p> \ No newline at end of file
+<p>Followed by another paragraph.</p>
+<p>Here is another paragraph, followed by:
+*** not an HR.
+Followed by more of the same paragraph.</p> \ No newline at end of file
diff --git a/tests/misc/para-with-hr.txt b/tests/misc/para-with-hr.txt
index 20735fb..165bbe3 100644
--- a/tests/misc/para-with-hr.txt
+++ b/tests/misc/para-with-hr.txt
@@ -2,3 +2,6 @@ Here is a paragraph, followed by a horizontal rule.
***
Followed by another paragraph.
+Here is another paragraph, followed by:
+*** not an HR.
+Followed by more of the same paragraph.
diff --git a/tests/misc/php.html b/tests/misc/php.html
deleted file mode 100644
index 8cd4ed5..0000000
--- a/tests/misc/php.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
- "http://www.w3.org/TR/html4/strict.dtd">
-
-<p><b>This should have a p tag</b></p>
-<!--This is a comment -->
-
-<div>This shouldn't</div>
-
-<?php echo "block_level";?>
-
-<p>&lt;?php echo "not_block_level";?&gt;</p> \ No newline at end of file
diff --git a/tests/misc/php.txt b/tests/misc/php.txt
deleted file mode 100644
index ca5be45..0000000
--- a/tests/misc/php.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
- "http://www.w3.org/TR/html4/strict.dtd">
-
-<b>This should have a p tag</b>
-
-<!--This is a comment -->
-
-<div>This shouldn't</div>
-
-<?php echo "block_level";?>
-
- <?php echo "not_block_level";?>
-
diff --git a/tests/misc/pre.html b/tests/misc/pre.html
deleted file mode 100644
index a44ae12..0000000
--- a/tests/misc/pre.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<pre>
-
-aaa
-
-bbb
-</pre>
-
-<pre>
-* and this is pre-formatted content
-* and it should be printed just like this
-* and not formatted as a list
-
-</pre> \ No newline at end of file
diff --git a/tests/misc/pre.txt b/tests/misc/pre.txt
deleted file mode 100644
index 31243b5..0000000
--- a/tests/misc/pre.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-<pre>
-
-aaa
-
-bbb
-</pre>
-
-<pre>
-* and this is pre-formatted content
-* and it should be printed just like this
-* and not formatted as a list
-
-</pre>
-
diff --git a/tests/misc/some-test.html b/tests/misc/some-test.html
index a36d1ee..b78683f 100644
--- a/tests/misc/some-test.html
+++ b/tests/misc/some-test.html
@@ -24,8 +24,10 @@
</ul>
<p>Markdown</p>
<ul>
-<li>Python
- is ok<ul>
+<li>
+<p>Python
+ is ok</p>
+<ul>
<li>Therefore i am</li>
</ul>
</li>
diff --git a/tests/misc/tabs-in-lists.html b/tests/misc/tabs-in-lists.html
index a1a92ec..fdb7cb6 100644
--- a/tests/misc/tabs-in-lists.html
+++ b/tests/misc/tabs-in-lists.html
@@ -19,7 +19,7 @@
<p>Now a list with 4 spaces and some text:</p>
<ul>
<li>A
-abcdef</li>
+ abcdef</li>
<li>B</li>
</ul>
<p>Now with a tab and an extra space:</p>
diff --git a/tests/misc/two-spaces.html b/tests/misc/two-spaces.html
index 102d1db..97b54b4 100644
--- a/tests/misc/two-spaces.html
+++ b/tests/misc/two-spaces.html
@@ -4,14 +4,12 @@ but this line has three <br />
and this is the second from last line
in this test message</p>
<ul>
-<li>This list item has two spaces.<br />
-</li>
+<li>This list item has two spaces. </li>
<li>
<p>This has none.
This line has three. <br />
This line has none.
- And this line two.<br />
-</p>
+ And this line two. </p>
<p>This line has none.</p>
</li>
<li>
diff --git a/tests/misc/uche.html b/tests/misc/uche.html
index e62329d..9134e95 100644
--- a/tests/misc/uche.html
+++ b/tests/misc/uche.html
@@ -1,3 +1,3 @@
<p><img alt="asif" src="http://fourthought.com/images/ftlogo.png" title="Fourthought logo" /></p>
-<p><a href="http://fourthought.com/"><img alt="" src="http://fourthought.com/images/ftlogo.png" style="float: left; margin: 10px; border: none;" title="Fourthought logo" /></a></p>
+<p><a href="http://fourthought.com/"><img alt="Alt text" src="http://fourthought.com/images/ftlogo.png" title="Fourthought logo" /></a></p>
<p><a href="http://link.com/"><img alt="text" src="x" /></a></p> \ No newline at end of file
diff --git a/tests/misc/uche.txt b/tests/misc/uche.txt
index a3dda1a..625d2ae 100644
--- a/tests/misc/uche.txt
+++ b/tests/misc/uche.txt
@@ -1,7 +1,6 @@
![asif](http://fourthought.com/images/ftlogo.png "Fourthought logo")
-[![{@style=float: left; margin: 10px; border:
-none;}](http://fourthought.com/images/ftlogo.png "Fourthought
+[![Alt text](http://fourthought.com/images/ftlogo.png "Fourthought
logo")](http://fourthought.com/)
[![text](x)](http://link.com/)
diff --git a/tests/misc/underscores.html b/tests/misc/underscores.html
index 54bd9f9..72d51b8 100644
--- a/tests/misc/underscores.html
+++ b/tests/misc/underscores.html
@@ -1,6 +1,6 @@
<p>THIS_SHOULD_STAY_AS_IS</p>
<p>Here is some <em>emphasis</em>, ok?</p>
<p>Ok, at least <em>this</em> should work.</p>
-<p>THIS<strong>SHOULD</strong>STAY</p>
+<p>THIS__SHOULD__STAY</p>
<p>Here is some <strong>strong</strong> stuff.</p>
<p>THIS<strong><em>SHOULD</em></strong>STAY?</p> \ No newline at end of file
diff --git a/tests/php/Auto Links.text b/tests/php/Auto Links.text
new file mode 100644
index 0000000..4b10d32
--- /dev/null
+++ b/tests/php/Auto Links.text
@@ -0,0 +1,3 @@
+<HTTP://WWW.SOMEURL.COM>
+
+<hr@company.com> \ No newline at end of file
diff --git a/tests/php/Auto Links.xhtml b/tests/php/Auto Links.xhtml
new file mode 100644
index 0000000..259c47f
--- /dev/null
+++ b/tests/php/Auto Links.xhtml
@@ -0,0 +1,3 @@
+<p><a href="HTTP://WWW.SOMEURL.COM">HTTP://WWW.SOMEURL.COM</a></p>
+
+<p><a href="mailto:hr@company.com">hr@company.com</a></p> \ No newline at end of file
diff --git a/tests/php/Backslash escapes.text b/tests/php/Backslash escapes.text
new file mode 100644
index 0000000..a5e769b
--- /dev/null
+++ b/tests/php/Backslash escapes.text
@@ -0,0 +1 @@
+Tricky combinaisons: backslash with \\-- two dashes backslash with \\> greater than \\\[test](not a link) \\\*no emphasis* \ No newline at end of file
diff --git a/tests/php/Backslash escapes.xhtml b/tests/php/Backslash escapes.xhtml
new file mode 100644
index 0000000..08fb8ef
--- /dev/null
+++ b/tests/php/Backslash escapes.xhtml
@@ -0,0 +1 @@
+<p>Tricky combinaisons:</p> <p>backslash with \-- two dashes</p> <p>backslash with \> greater than</p> <p>\[test](not a link)</p> <p>\*no emphasis*</p> \ No newline at end of file
diff --git a/tests/php/Code Spans.text b/tests/php/Code Spans.text
new file mode 100644
index 0000000..43f2bcf
--- /dev/null
+++ b/tests/php/Code Spans.text
@@ -0,0 +1,6 @@
+From `<!--` to `-->`
+on two lines.
+
+From `<!--`
+to `-->`
+on three lines.
diff --git a/tests/php/Code Spans.xhtml b/tests/php/Code Spans.xhtml
new file mode 100644
index 0000000..9ed0df8
--- /dev/null
+++ b/tests/php/Code Spans.xhtml
@@ -0,0 +1,6 @@
+<p>From <code>&lt;!--</code> to <code>--&gt;</code>
+on two lines.</p>
+
+<p>From <code>&lt;!--</code>
+to <code>--&gt;</code>
+on three lines.</p>
diff --git a/tests/php/Code block in a list item.text b/tests/php/Code block in a list item.text
new file mode 100644
index 0000000..5093348
--- /dev/null
+++ b/tests/php/Code block in a list item.text
@@ -0,0 +1,15 @@
+
+* List Item:
+
+ code block
+
+ with a blank line
+
+ within a list item.
+
+* code block
+ as first element of a list item
+
+* List Item:
+
+ code block with whitespace on preceding line \ No newline at end of file
diff --git a/tests/php/Code block in a list item.xhtml b/tests/php/Code block in a list item.xhtml
new file mode 100644
index 0000000..361c1ae
--- /dev/null
+++ b/tests/php/Code block in a list item.xhtml
@@ -0,0 +1,18 @@
+<ul>
+<li><p>List Item:</p>
+
+<pre><code>code block
+
+with a blank line
+</code></pre>
+
+<p>within a list item.</p></li>
+<li><pre><code>code block
+as first element of a list item
+</code></pre></li>
+
+<li><p>List Item:</p>
+
+<pre><code>code block with whitespace on preceding line
+</code></pre></li>
+</ul> \ No newline at end of file
diff --git a/tests/php/Code block on second line.text b/tests/php/Code block on second line.text
new file mode 100644
index 0000000..b7fcd97
--- /dev/null
+++ b/tests/php/Code block on second line.text
@@ -0,0 +1,2 @@
+
+ Codeblock on second line
diff --git a/tests/php/Code block on second line.xhtml b/tests/php/Code block on second line.xhtml
new file mode 100644
index 0000000..25abb16
--- /dev/null
+++ b/tests/php/Code block on second line.xhtml
@@ -0,0 +1,2 @@
+<pre><code>Codeblock on second line
+</code></pre>
diff --git a/tests/php/Email auto links.text b/tests/php/Email auto links.text
new file mode 100644
index 0000000..a8af4ec
--- /dev/null
+++ b/tests/php/Email auto links.text
@@ -0,0 +1,3 @@
+<michel.fortin@michelf.com>
+
+International domain names: <help@tūdaliņ.lv> \ No newline at end of file
diff --git a/tests/php/Email auto links.xhtml b/tests/php/Email auto links.xhtml
new file mode 100644
index 0000000..a32c408
--- /dev/null
+++ b/tests/php/Email auto links.xhtml
@@ -0,0 +1,3 @@
+<p><a href="&#109;&#x61;&#105;&#x6c;&#116;&#x6f;&#58;&#x6d;&#105;&#x63;&#104;&#x65;&#108;&#x2e;&#102;&#x6f;&#114;&#x74;&#105;&#x6e;&#64;&#x6d;&#105;&#x63;&#104;&#x65;&#108;&#x66;&#46;&#x63;&#111;&#x6d;">&#x6d;&#105;&#x63;&#104;&#x65;&#108;&#x2e;&#102;&#x6f;&#114;&#x74;&#105;&#x6e;&#64;&#x6d;&#105;&#x63;&#104;&#x65;&#108;&#x66;&#46;&#x63;&#111;&#x6d;</a></p>
+
+<p>International domain names: <a href="&#x6d;&#97;&#105;&#x6c;&#x74;&#111;&#58;&#x68;&#x65;&#108;&#112;&#x40;&#x74;ū&#x64;&#x61;&#108;&#105;ņ&#46;&#108;&#x76;">&#x68;&#x65;&#108;&#112;&#x40;&#x74;ū&#x64;&#x61;&#108;&#105;ņ&#46;&#108;&#x76;</a></p>
diff --git a/tests/php/Emphasis.text b/tests/php/Emphasis.text
new file mode 100644
index 0000000..88e93d4
--- /dev/null
+++ b/tests/php/Emphasis.text
@@ -0,0 +1,80 @@
+Combined emphasis:
+
+1. ***test test***
+2. ___test test___
+3. *test **test***
+4. **test *test***
+5. ***test* test**
+6. ***test** test*
+7. ***test* test**
+8. **test *test***
+9. *test **test***
+10. _test __test___
+11. __test _test___
+12. ___test_ test__
+13. ___test__ test_
+14. ___test_ test__
+15. __test _test___
+16. _test __test___
+
+
+Incorrect nesting:
+
+1. *test **test* test**
+2. _test __test_ test__
+3. **test *test** test*
+4. __test _test__ test_
+5. *test *test* test*
+6. _test _test_ test_
+7. **test **test** test**
+8. __test __test__ test__
+
+
+
+No emphasis:
+
+1. test* test *test
+2. test** test **test
+3. test_ test _test
+4. test__ test __test
+
+
+
+Middle-word emphasis (asterisks):
+
+1. *a*b
+2. a*b*
+3. a*b*c
+4. **a**b
+5. a**b**
+6. a**b**c
+
+
+Middle-word emphasis (underscore):
+
+1. _a_b
+2. a_b_
+3. a_b_c
+4. __a__b
+5. a__b__
+6. a__b__c
+
+my_precious_file.txt
+
+
+## Tricky Cases
+
+E**. **Test** TestTestTest
+
+E**. **Test** Test Test Test
+
+
+## Overlong emphasis
+
+Name: ____________
+Organization: ____
+Region/Country: __
+
+_____Cut here_____
+
+____Cut here____
diff --git a/tests/php/Emphasis.xhtml b/tests/php/Emphasis.xhtml
new file mode 100644
index 0000000..4879070
--- /dev/null
+++ b/tests/php/Emphasis.xhtml
@@ -0,0 +1,83 @@
+<p>Combined emphasis:</p>
+
+<ol>
+<li><strong><em>test test</em></strong></li>
+<li><strong><em>test test</em></strong></li>
+<li><em>test <strong>test</strong></em></li>
+<li><strong>test <em>test</em></strong></li>
+<li><strong><em>test</em> test</strong></li>
+<li><em><strong>test</strong> test</em></li>
+<li><strong><em>test</em> test</strong></li>
+<li><strong>test <em>test</em></strong></li>
+<li><em>test <strong>test</strong></em></li>
+<li><em>test <strong>test</strong></em></li>
+<li><strong>test <em>test</em></strong></li>
+<li><strong><em>test</em> test</strong></li>
+<li><em><strong>test</strong> test</em></li>
+<li><strong><em>test</em> test</strong></li>
+<li><strong>test <em>test</em></strong></li>
+<li><em>test <strong>test</strong></em></li>
+</ol>
+
+<p>Incorrect nesting:</p>
+
+<ol>
+<li>*test <strong>test* test</strong></li>
+<li>_test <strong>test_ test</strong></li>
+<li><strong>test *test</strong> test*</li>
+<li><strong>test _test</strong> test_</li>
+<li><em>test *test</em> test*</li>
+<li><em>test _test</em> test_</li>
+<li><strong>test **test</strong> test**</li>
+<li><strong>test __test</strong> test__</li>
+</ol>
+
+<p>No emphasis:</p>
+
+<ol>
+<li>test* test *test</li>
+<li>test** test **test</li>
+<li>test_ test _test</li>
+<li>test__ test __test</li>
+</ol>
+
+<p>Middle-word emphasis (asterisks):</p>
+
+<ol>
+<li><em>a</em>b</li>
+<li>a<em>b</em></li>
+<li>a<em>b</em>c</li>
+<li><strong>a</strong>b</li>
+<li>a<strong>b</strong></li>
+<li>a<strong>b</strong>c</li>
+</ol>
+
+<p>Middle-word emphasis (underscore):</p>
+
+<ol>
+<li><em>a</em>b</li>
+<li>a<em>b</em></li>
+<li>a<em>b</em>c</li>
+<li><strong>a</strong>b</li>
+<li>a<strong>b</strong></li>
+<li>a<strong>b</strong>c</li>
+</ol>
+
+<p>my<em>precious</em>file.txt</p>
+
+<h2>Tricky Cases</h2>
+
+<p>E**. <strong>Test</strong> TestTestTest</p>
+
+<p>E**. <strong>Test</strong> Test Test Test</p>
+
+
+<h2>Overlong emphasis</h2>
+
+<p>Name: ____________<br />
+Organization: ____<br />
+Region/Country: __</p>
+
+<p>_____Cut here_____</p>
+
+<p>____Cut here____</p> \ No newline at end of file
diff --git a/tests/php/Empty List Item.text b/tests/php/Empty List Item.text
new file mode 100644
index 0000000..3c4edba
--- /dev/null
+++ b/tests/php/Empty List Item.text
@@ -0,0 +1,35 @@
+With asterisks
+
+ * List item
+ *
+ * List item
+
+With numbers
+
+1. List item
+2.
+3. List item
+
+With hyphens
+
+- List item
+-
+- List item
+
+With asterisks
+
+ * List item
+ * List item
+ *
+
+With numbers
+
+1. List item
+2. List item
+3.
+
+With hyphens
+
+- List item
+- List item
+-
diff --git a/tests/php/Empty List Item.xhtml b/tests/php/Empty List Item.xhtml
new file mode 100644
index 0000000..02d86ed
--- /dev/null
+++ b/tests/php/Empty List Item.xhtml
@@ -0,0 +1,47 @@
+<p>With asterisks</p>
+
+<ul>
+<li>List item</li>
+<li></li>
+<li>List item</li>
+</ul>
+
+<p>With numbers</p>
+
+<ol>
+<li>List item</li>
+<li></li>
+<li>List item</li>
+</ol>
+
+<p>With hyphens</p>
+
+<ul>
+<li>List item</li>
+<li></li>
+<li>List item</li>
+</ul>
+
+<p>With asterisks</p>
+
+<ul>
+<li>List item</li>
+<li>List item</li>
+<li></li>
+</ul>
+
+<p>With numbers</p>
+
+<ol>
+<li>List item</li>
+<li>List item</li>
+<li></li>
+</ol>
+
+<p>With hyphens</p>
+
+<ul>
+<li>List item</li>
+<li>List item</li>
+<li></li>
+</ul> \ No newline at end of file
diff --git a/tests/php/Headers.text b/tests/php/Headers.text
new file mode 100644
index 0000000..3a39174
--- /dev/null
+++ b/tests/php/Headers.text
@@ -0,0 +1,9 @@
+Header ====== Header ------ ### Header
+
+ - - -
+
+Header ====== Paragraph Header ------ Paragraph ### Header Paragraph
+
+ - - -
+
+Paragraph Header ====== Paragraph Paragraph Header ------ Paragraph Paragraph ### Header Paragraph \ No newline at end of file
diff --git a/tests/php/Headers.xhtml b/tests/php/Headers.xhtml
new file mode 100644
index 0000000..3adb470
--- /dev/null
+++ b/tests/php/Headers.xhtml
@@ -0,0 +1,39 @@
+<h1>Header</h1>
+
+<h2>Header</h2>
+
+<h3>Header</h3>
+
+<hr />
+
+<h1>Header</h1>
+
+<p>Paragraph</p>
+
+<h2>Header</h2>
+
+<p>Paragraph</p>
+
+<h3>Header</h3>
+
+<p>Paragraph</p>
+
+<hr />
+
+<p>Paragraph</p>
+
+<h1>Header</h1>
+
+<p>Paragraph</p>
+
+<p>Paragraph</p>
+
+<h2>Header</h2>
+
+<p>Paragraph</p>
+
+<p>Paragraph</p>
+
+<h3>Header</h3>
+
+<p>Paragraph</p>
diff --git a/tests/php/Horizontal Rules.text b/tests/php/Horizontal Rules.text
new file mode 100644
index 0000000..8e2da0b
--- /dev/null
+++ b/tests/php/Horizontal Rules.text
@@ -0,0 +1,29 @@
+Horizontal rules:
+
+- - -
+
+* * *
+
+***
+
+---
+
+___
+
+Not horizontal rules (testing for a bug in 1.0.1j):
+
++++
+
+,,,
+
+===
+
+???
+
+AAA
+
+jjj
+
+j j j
+
+n n n
diff --git a/tests/php/Horizontal Rules.xhtml b/tests/php/Horizontal Rules.xhtml
new file mode 100644
index 0000000..b9170b1
--- /dev/null
+++ b/tests/php/Horizontal Rules.xhtml
@@ -0,0 +1,30 @@
+<p>Horizontal rules:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<p>Not horizontal rules (testing for a bug in 1.0.1j):</p>
+
+<p>+++</p>
+
+<p>,,,</p>
+
+<p>===</p>
+
+<p>???</p>
+
+<p>AAA</p>
+
+<p>jjj</p>
+
+<p>j j j</p>
+
+<p>n n n</p>
+
diff --git a/tests/php/Inline HTML (Simple).text b/tests/php/Inline HTML (Simple).text
new file mode 100644
index 0000000..9177105
--- /dev/null
+++ b/tests/php/Inline HTML (Simple).text
@@ -0,0 +1,15 @@
+With some attributes:
+
+<div id="test">
+ foo
+</div>
+
+<div id="test"
+ class="nono">
+ foo
+</div>
+
+Hr's:
+
+<hr class="foo"
+ id="bar" >
diff --git a/tests/php/Inline HTML (Simple).xhtml b/tests/php/Inline HTML (Simple).xhtml
new file mode 100644
index 0000000..facfefb
--- /dev/null
+++ b/tests/php/Inline HTML (Simple).xhtml
@@ -0,0 +1,15 @@
+<p>With some attributes:</p>
+
+<div id="test">
+ foo
+</div>
+
+<div id="test"
+ class="nono">
+ foo
+</div>
+
+<p>Hr's:</p>
+
+<hr class="foo"
+ id="bar" > \ No newline at end of file
diff --git a/tests/php/Inline HTML (Span).text b/tests/php/Inline HTML (Span).text
new file mode 100644
index 0000000..19028bb
--- /dev/null
+++ b/tests/php/Inline HTML (Span).text
@@ -0,0 +1,4 @@
+<abbr title="` **Attribute Content Is Not A Code Span** `">ACINACS</abbr>
+
+<abbr title="`first backtick!">SB</abbr>
+<abbr title="`second backtick!">SB</abbr> \ No newline at end of file
diff --git a/tests/php/Inline HTML (Span).xhtml b/tests/php/Inline HTML (Span).xhtml
new file mode 100644
index 0000000..4d18aff
--- /dev/null
+++ b/tests/php/Inline HTML (Span).xhtml
@@ -0,0 +1,4 @@
+<p><abbr title="` **Attribute Content Is Not A Code Span** `">ACINACS</abbr></p>
+
+<p><abbr title="`first backtick!">SB</abbr>
+<abbr title="`second backtick!">SB</abbr></p> \ No newline at end of file
diff --git a/tests/php/Inline HTML comments.text b/tests/php/Inline HTML comments.text
new file mode 100644
index 0000000..d57d00a
--- /dev/null
+++ b/tests/php/Inline HTML comments.text
@@ -0,0 +1,9 @@
+Paragraph one.
+
+<!-- double--dash (invalid SGML comment) -->
+
+Paragraph two.
+
+<!-- enclosed tag </div> -->
+
+The end.
diff --git a/tests/php/Inline HTML comments.xhtml b/tests/php/Inline HTML comments.xhtml
new file mode 100644
index 0000000..b45f014
--- /dev/null
+++ b/tests/php/Inline HTML comments.xhtml
@@ -0,0 +1,9 @@
+<p>Paragraph one.</p>
+
+<!-- double--dash (invalid SGML comment) -->
+
+<p>Paragraph two.</p>
+
+<!-- enclosed tag </div> -->
+
+<p>The end.</p>
diff --git a/tests/php/Ins & del.text b/tests/php/Ins & del.text
new file mode 100644
index 0000000..2d54c66
--- /dev/null
+++ b/tests/php/Ins & del.text
@@ -0,0 +1,17 @@
+Here is a block tag ins:
+
+<ins>
+<p>Some text</p>
+</ins>
+
+<ins>And here it is inside a paragraph.</ins>
+
+And here it is <ins>in the middle of</ins> a paragraph.
+
+<del>
+<p>Some text</p>
+</del>
+
+<del>And here is ins as a paragraph.</del>
+
+And here it is <del>in the middle of</del> a paragraph.
diff --git a/tests/php/Ins & del.xhtml b/tests/php/Ins & del.xhtml
new file mode 100644
index 0000000..60e8c5f
--- /dev/null
+++ b/tests/php/Ins & del.xhtml
@@ -0,0 +1,17 @@
+<p>Here is a block tag ins:</p>
+
+<ins>
+<p>Some text</p>
+</ins>
+
+<p><ins>And here it is inside a paragraph.</ins></p>
+
+<p>And here it is <ins>in the middle of</ins> a paragraph.</p>
+
+<del>
+<p>Some text</p>
+</del>
+
+<p><del>And here is ins as a paragraph.</del></p>
+
+<p>And here it is <del>in the middle of</del> a paragraph.</p>
diff --git a/tests/php/License b/tests/php/License
new file mode 100644
index 0000000..d511905
--- /dev/null
+++ b/tests/php/License
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/tests/php/Links, inline style.text b/tests/php/Links, inline style.text
new file mode 100644
index 0000000..600a044
--- /dev/null
+++ b/tests/php/Links, inline style.text
@@ -0,0 +1 @@
+[silly URL w/ angle brackets](<?}]*+|&)>).
diff --git a/tests/php/Links, inline style.xhtml b/tests/php/Links, inline style.xhtml
new file mode 100644
index 0000000..d3e4d11
--- /dev/null
+++ b/tests/php/Links, inline style.xhtml
@@ -0,0 +1 @@
+<p><a href="?}]*+|&amp;)">silly URL w/ angle brackets</a>.</p>
diff --git a/tests/php/MD5 Hashes.text b/tests/php/MD5 Hashes.text
new file mode 100644
index 0000000..7e03221
--- /dev/null
+++ b/tests/php/MD5 Hashes.text
@@ -0,0 +1,11 @@
+# Character Escapes
+
+The MD5 value for `+` is "26b17225b626fb9238849fd60eabdf60".
+
+# HTML Blocks
+
+<p>test</p>
+
+The MD5 value for `<p>test</p>` is:
+
+6205333b793f34273d75379350b36826 \ No newline at end of file
diff --git a/tests/php/MD5 Hashes.xhtml b/tests/php/MD5 Hashes.xhtml
new file mode 100644
index 0000000..894e4aa
--- /dev/null
+++ b/tests/php/MD5 Hashes.xhtml
@@ -0,0 +1,11 @@
+<h1>Character Escapes</h1>
+
+<p>The MD5 value for <code>+</code> is "26b17225b626fb9238849fd60eabdf60".</p>
+
+<h1>HTML Blocks</h1>
+
+<p>test</p>
+
+<p>The MD5 value for <code>&lt;p&gt;test&lt;/p&gt;</code> is:</p>
+
+<p>6205333b793f34273d75379350b36826</p>
diff --git a/tests/php/Mixed OLs and ULs.text b/tests/php/Mixed OLs and ULs.text
new file mode 100644
index 0000000..cecde21
--- /dev/null
+++ b/tests/php/Mixed OLs and ULs.text
@@ -0,0 +1,13 @@
+* test
++ test
+- test
+
+1. test
+2. test
+
+* test
++ test
+- test
+
+1. test
+2. test
diff --git a/tests/php/Mixed OLs and ULs.xhtml b/tests/php/Mixed OLs and ULs.xhtml
new file mode 100644
index 0000000..0872aaa
--- /dev/null
+++ b/tests/php/Mixed OLs and ULs.xhtml
@@ -0,0 +1,21 @@
+<ul>
+<li>test</li>
+<li>test</li>
+<li>test</li>
+</ul>
+
+<ol>
+<li>test</li>
+<li>test</li>
+</ol>
+
+<ul>
+<li>test</li>
+<li>test</li>
+<li>test</li>
+</ul>
+
+<ol>
+<li>test</li>
+<li>test</li>
+</ol>
diff --git a/tests/php/Nesting.text b/tests/php/Nesting.text
new file mode 100644
index 0000000..791538c
--- /dev/null
+++ b/tests/php/Nesting.text
@@ -0,0 +1,11 @@
+Valid nesting:
+
+**[Link](url)**
+
+[**Link**](url)
+
+**[**Link**](url)**
+
+Invalid nesting:
+
+[[Link](url)](url) \ No newline at end of file
diff --git a/tests/php/Nesting.xhtml b/tests/php/Nesting.xhtml
new file mode 100644
index 0000000..37845d3
--- /dev/null
+++ b/tests/php/Nesting.xhtml
@@ -0,0 +1,11 @@
+<p>Valid nesting:</p>
+
+<p><strong><a href="url">Link</a></strong></p>
+
+<p><a href="url"><strong>Link</strong></a></p>
+
+<p><strong><a href="url"><strong>Link</strong></a></strong></p>
+
+<p>Invalid nesting:</p>
+
+<p><a href="url">[Link](url)</a></p>
diff --git a/tests/php/PHP-Specific Bugs.text b/tests/php/PHP-Specific Bugs.text
new file mode 100644
index 0000000..246b60d
--- /dev/null
+++ b/tests/php/PHP-Specific Bugs.text
@@ -0,0 +1,22 @@
+This tests for a bug where quotes escaped by PHP when using
+`preg_replace` with the `/e` modifier must be correctly unescaped
+(hence the `_UnslashQuotes` function found only in PHP Markdown).
+
+
+
+Headers below should appear exactly as they are typed (no backslash
+added or removed).
+
+Header "quoted\" again \\""
+===========================
+
+Header "quoted\" again \\""
+---------------------------
+
+### Header "quoted\" again \\"" ###
+
+
+
+Test with tabs for `_Detab`:
+
+ Code 'block' with some "tabs" and "quotes"
diff --git a/tests/php/PHP-Specific Bugs.xhtml b/tests/php/PHP-Specific Bugs.xhtml
new file mode 100644
index 0000000..c982417
--- /dev/null
+++ b/tests/php/PHP-Specific Bugs.xhtml
@@ -0,0 +1,17 @@
+<p>This tests for a bug where quotes escaped by PHP when using
+<code>preg_replace</code> with the <code>/e</code> modifier must be correctly unescaped
+(hence the <code>_UnslashQuotes</code> function found only in PHP Markdown).</p>
+
+<p>Headers below should appear exactly as they are typed (no backslash
+added or removed).</p>
+
+<h1>Header "quoted\" again \""</h1>
+
+<h2>Header "quoted\" again \""</h2>
+
+<h3>Header "quoted\" again \""</h3>
+
+<p>Test with tabs for <code>_Detab</code>:</p>
+
+<pre><code>Code 'block' with some "tabs" and "quotes"
+</code></pre>
diff --git a/tests/php/Parens in URL.text b/tests/php/Parens in URL.text
new file mode 100644
index 0000000..bb7be4f
--- /dev/null
+++ b/tests/php/Parens in URL.text
@@ -0,0 +1,14 @@
+[Inline link 1 with parens](/url\(test\) "title").
+
+[Inline link 2 with parens](</url\(test\)> "title").
+
+[Inline link 3 with non-escaped parens](/url(test) "title").
+
+[Inline link 4 with non-escaped parens](</url(test)> "title").
+
+[Reference link 1 with parens][1].
+
+[Reference link 2 with parens][2].
+
+ [1]: /url(test) "title"
+ [2]: </url(test)> "title"
diff --git a/tests/php/Parens in URL.xhtml b/tests/php/Parens in URL.xhtml
new file mode 100644
index 0000000..a81aa02
--- /dev/null
+++ b/tests/php/Parens in URL.xhtml
@@ -0,0 +1,11 @@
+<p><a href="/url(test)" title="title">Inline link 1 with parens</a>.</p>
+
+<p><a href="/url(test)" title="title">Inline link 2 with parens</a>.</p>
+
+<p><a href="/url(test)" title="title">Inline link 3 with non-escaped parens</a>.</p>
+
+<p><a href="/url(test)" title="title">Inline link 4 with non-escaped parens</a>.</p>
+
+<p><a href="/url(test)" title="title">Reference link 1 with parens</a>.</p>
+
+<p><a href="/url(test)" title="title">Reference link 2 with parens</a>.</p> \ No newline at end of file
diff --git a/tests/php/Quotes in attributes.text b/tests/php/Quotes in attributes.text
new file mode 100644
index 0000000..9792286
--- /dev/null
+++ b/tests/php/Quotes in attributes.text
@@ -0,0 +1,5 @@
+[Test](/"style="color:red)
+[Test](/'style='color:red)
+
+![](/"style="border-color:red;border-size:1px;border-style:solid)
+![](/'style='border-color:red;border-size:1px;border-style:solid)
diff --git a/tests/php/Quotes in attributes.xhtml b/tests/php/Quotes in attributes.xhtml
new file mode 100644
index 0000000..e3fcfd2
--- /dev/null
+++ b/tests/php/Quotes in attributes.xhtml
@@ -0,0 +1,5 @@
+<p><a href="/&quot;style=&quot;color:red">Test</a>
+<a href="/'style='color:red">Test</a></p>
+
+<p><img src="/&quot;style=&quot;border-color:red;border-size:1px;border-style:solid" alt="" />
+<img src="/'style='border-color:red;border-size:1px;border-style:solid" alt="" /></p>
diff --git a/tests/php/Tight blocks.text b/tests/php/Tight blocks.text
new file mode 100644
index 0000000..ae4cdcb
--- /dev/null
+++ b/tests/php/Tight blocks.text
@@ -0,0 +1 @@
+Paragraph and no space: * ciao Paragraph and 1 space: * ciao Paragraph and 3 spaces: * ciao Paragraph and 4 spaces: * ciao Paragraph before header: #Header Paragraph before blockquote: >Some quote. \ No newline at end of file
diff --git a/tests/php/Tight blocks.xhtml b/tests/php/Tight blocks.xhtml
new file mode 100644
index 0000000..8655430
--- /dev/null
+++ b/tests/php/Tight blocks.xhtml
@@ -0,0 +1,21 @@
+<p>Paragraph and no space:
+* ciao</p>
+
+<p>Paragraph and 1 space:
+ * ciao</p>
+
+<p>Paragraph and 3 spaces:
+ * ciao</p>
+
+<p>Paragraph and 4 spaces:
+ * ciao</p>
+
+<p>Paragraph before header:</p>
+
+<h1>Header</h1>
+
+<p>Paragraph before blockquote:</p>
+
+<blockquote>
+ <p>Some quote.</p>
+</blockquote>
diff --git a/tests/php/extra/Abbr.text b/tests/php/extra/Abbr.text
new file mode 100644
index 0000000..ae72f4e
--- /dev/null
+++ b/tests/php/extra/Abbr.text
@@ -0,0 +1,31 @@
+Some text about HTML, SGML and HTML4.
+
+Let's talk about the U.S.A., (É.U. or É.-U. d'A. in French).
+
+*[HTML4]: Hyper Text Markup Language version 4
+*[HTML]: Hyper Text Markup Language
+*[SGML]: Standard Generalized Markup Language
+*[U.S.A.]: United States of America
+*[É.U.] : États-Unis d'Amérique
+*[É.-U. d'A.] : États-Unis d'Amérique
+
+And here we have a CD, some CDs, and some other CD's.
+
+*[CD]: Compact Disk
+
+Let's transfert documents through TCP/IP, using TCP packets.
+
+*[IP]: Internet Protocol
+*[TCP]: Transmission Control Protocol
+
+ ---
+
+Bienvenue sur [CMS](http://www.bidulecms.com "Bidule CMS").
+
+*[CMS]: Content Management System
+
+ ---
+
+ATCCE
+
+*[ATCCE]: Abbreviation "Testing" Correct 'Character' < Escapes > \ No newline at end of file
diff --git a/tests/php/extra/Abbr.xhtml b/tests/php/extra/Abbr.xhtml
new file mode 100644
index 0000000..8beaa2e
--- /dev/null
+++ b/tests/php/extra/Abbr.xhtml
@@ -0,0 +1,15 @@
+<p>Some text about <abbr title="Hyper Text Markup Language">HTML</abbr>, <abbr title="Standard Generalized Markup Language">SGML</abbr> and <abbr title="Hyper Text Markup Language version 4">HTML4</abbr>.</p>
+
+<p>Let's talk about the <abbr title="United States of America">U.S.A.</abbr>, (<abbr title="États-Unis d'Amérique">É.U.</abbr> or <abbr title="États-Unis d'Amérique">É.-U. d'A.</abbr> in French).</p>
+
+<p>And here we have a <abbr title="Compact Disk">CD</abbr>, some CDs, and some other <abbr title="Compact Disk">CD</abbr>'s.</p>
+
+<p>Let's transfert documents through <abbr title="Transmission Control Protocol">TCP</abbr>/<abbr title="Internet Protocol">IP</abbr>, using <abbr title="Transmission Control Protocol">TCP</abbr> packets.</p>
+
+<hr />
+
+<p>Bienvenue sur <a href="http://www.bidulecms.com" title="Bidule CMS"><abbr title="Content Management System">CMS</abbr></a>.</p>
+
+<hr />
+
+<p><abbr title="Abbreviation &quot;Testing&quot; Correct 'Character' &lt; Escapes &gt;">ATCCE</abbr></p>
diff --git a/tests/php/extra/Definition Lists.text b/tests/php/extra/Definition Lists.text
new file mode 100644
index 0000000..5b3bdb6
--- /dev/null
+++ b/tests/php/extra/Definition Lists.text
@@ -0,0 +1,115 @@
+A simple definition list:
+
+Term 1
+: Definition 1
+
+Term 2
+: Definition 2
+
+With multiple terms:
+
+Term 1
+Term 2
+: Definition 1
+
+Term 3
+Term 4
+: Definition 2
+
+With multiple definitions:
+
+Term 1
+: Definition 1
+: Definition 2
+
+Term 2
+: Definition 3
+: Definition 4
+
+With multiple lines per definition:
+
+Term 1
+: Definition 1 line 1 ...
+Definition 1 line 2
+: Definition 2 line 1 ...
+Definition 2 line 2
+
+Term 2
+: Definition 3 line 2 ...
+ Definition 3 line 2
+: Definition 4 line 2 ...
+ Definition 4 line 2
+
+With paragraphs:
+
+Term 1
+
+: Definition 1 (paragraph)
+
+Term 2
+
+: Definition 2 (paragraph)
+
+With multiple paragraphs:
+
+Term 1
+
+: Definition 1 paragraph 1 line 1 ...
+ Definition 1 paragraph 1 line 2
+
+ Definition 1 paragraph 2 line 1 ...
+ Definition 1 paragraph 2 line 2
+
+Term 2
+
+: Definition 1 paragraph 1 line 1 ...
+Definition 1 paragraph 1 line 2 (lazy)
+
+ Definition 1 paragraph 2 line 1 ...
+Definition 1 paragraph 2 line 2 (lazy)
+
+* * *
+
+A mix:
+
+Term 1
+Term 2
+
+: Definition 1 paragraph 1 line 1 ...
+Definition 1 paragraph 1 line 2 (lazy)
+
+ Definition 1 paragraph 2 line 1 ...
+ Definition 1 paragraph 2 line 2
+
+: Definition 2 paragraph 1 line 1 ...
+Definition 2 paragraph 1 line 2 (lazy)
+
+Term 3
+: Definition 3 (no paragraph)
+: Definition 4 (no paragraph)
+: Definition 5 line 1 ...
+ Definition 5 line 2 (no paragraph)
+
+: Definition 6 paragraph 1 line 1 ...
+Definition 6 paragraph 1 line 2
+: Definition 7 (no paragraph)
+: Definition 8 paragraph 1 line 1 (forced paragraph) ...
+ Definition 8 paragraph 1 line 2
+
+ Definition 8 paragraph 2 line 1
+
+Term 4
+: Definition 9 paragraph 1 line 1 (forced paragraph) ...
+ Definition 9 paragraph 1 line 2
+
+ Definition 9 paragraph 2 line 1
+: Definition 10 (no paragraph)
+
+* * *
+
+Special cases:
+
+Term
+
+: code block
+ as first element of a definition \ No newline at end of file
diff --git a/tests/php/extra/Definition Lists.xhtml b/tests/php/extra/Definition Lists.xhtml
new file mode 100644
index 0000000..f99f456
--- /dev/null
+++ b/tests/php/extra/Definition Lists.xhtml
@@ -0,0 +1,155 @@
+<p>A simple definition list:</p>
+
+<dl>
+<dt>Term 1</dt>
+<dd>Definition 1</dd>
+
+<dt>Term 2</dt>
+<dd>Definition 2</dd>
+</dl>
+
+<p>With multiple terms:</p>
+
+<dl>
+<dt>Term 1</dt>
+<dt>Term 2</dt>
+<dd>Definition 1</dd>
+
+<dt>Term 3</dt>
+<dt>Term 4</dt>
+<dd>Definition 2</dd>
+</dl>
+
+<p>With multiple definitions:</p>
+
+<dl>
+<dt>Term 1</dt>
+<dd>Definition 1</dd>
+
+<dd>Definition 2</dd>
+
+<dt>Term 2</dt>
+<dd>Definition 3</dd>
+
+<dd>Definition 4</dd>
+</dl>
+
+<p>With multiple lines per definition:</p>
+
+<dl>
+<dt>Term 1</dt>
+<dd>Definition 1 line 1 ...
+Definition 1 line 2</dd>
+
+<dd>Definition 2 line 1 ...
+Definition 2 line 2</dd>
+
+<dt>Term 2</dt>
+<dd>Definition 3 line 2 ...
+Definition 3 line 2</dd>
+
+<dd>Definition 4 line 2 ...
+Definition 4 line 2</dd>
+</dl>
+
+<p>With paragraphs:</p>
+
+<dl>
+<dt>Term 1</dt>
+<dd>
+<p>Definition 1 (paragraph)</p>
+</dd>
+
+<dt>Term 2</dt>
+<dd>
+<p>Definition 2 (paragraph)</p>
+</dd>
+</dl>
+
+<p>With multiple paragraphs:</p>
+
+<dl>
+<dt>Term 1</dt>
+<dd>
+<p>Definition 1 paragraph 1 line 1 ...
+Definition 1 paragraph 1 line 2</p>
+
+<p>Definition 1 paragraph 2 line 1 ...
+Definition 1 paragraph 2 line 2</p>
+</dd>
+
+<dt>Term 2</dt>
+<dd>
+<p>Definition 1 paragraph 1 line 1 ...
+Definition 1 paragraph 1 line 2 (lazy)</p>
+
+<p>Definition 1 paragraph 2 line 1 ...
+Definition 1 paragraph 2 line 2 (lazy)</p>
+</dd>
+</dl>
+
+<hr />
+
+<p>A mix:</p>
+
+<dl>
+<dt>Term 1</dt>
+<dt>Term 2</dt>
+<dd>
+<p>Definition 1 paragraph 1 line 1 ...
+Definition 1 paragraph 1 line 2 (lazy)</p>
+
+<p>Definition 1 paragraph 2 line 1 ...
+Definition 1 paragraph 2 line 2</p>
+</dd>
+
+<dd>
+<p>Definition 2 paragraph 1 line 1 ...
+Definition 2 paragraph 1 line 2 (lazy)</p>
+</dd>
+
+<dt>Term 3</dt>
+<dd>Definition 3 (no paragraph)</dd>
+
+<dd>Definition 4 (no paragraph)</dd>
+
+<dd>Definition 5 line 1 ...
+Definition 5 line 2 (no paragraph)</dd>
+
+<dd>
+<p>Definition 6 paragraph 1 line 1 ...
+Definition 6 paragraph 1 line 2</p>
+</dd>
+
+<dd>Definition 7 (no paragraph)</dd>
+
+<dd>
+<p>Definition 8 paragraph 1 line 1 (forced paragraph) ...
+Definition 8 paragraph 1 line 2</p>
+
+<p>Definition 8 paragraph 2 line 1</p>
+</dd>
+
+<dt>Term 4</dt>
+<dd>
+<p>Definition 9 paragraph 1 line 1 (forced paragraph) ...
+Definition 9 paragraph 1 line 2</p>
+
+<p>Definition 9 paragraph 2 line 1</p>
+</dd>
+
+<dd>Definition 10 (no paragraph)</dd>
+</dl>
+
+<hr />
+
+<p>Special cases:</p>
+
+<dl>
+<dt>Term</dt>
+<dd>
+<pre><code>code block
+as first element of a definition
+</code></pre>
+</dd>
+</dl>
diff --git a/tests/php/extra/Emphasis.text b/tests/php/extra/Emphasis.text
new file mode 100644
index 0000000..88e93d4
--- /dev/null
+++ b/tests/php/extra/Emphasis.text
@@ -0,0 +1,80 @@
+Combined emphasis:
+
+1. ***test test***
+2. ___test test___
+3. *test **test***
+4. **test *test***
+5. ***test* test**
+6. ***test** test*
+7. ***test* test**
+8. **test *test***
+9. *test **test***
+10. _test __test___
+11. __test _test___
+12. ___test_ test__
+13. ___test__ test_
+14. ___test_ test__
+15. __test _test___
+16. _test __test___
+
+
+Incorrect nesting:
+
+1. *test **test* test**
+2. _test __test_ test__
+3. **test *test** test*
+4. __test _test__ test_
+5. *test *test* test*
+6. _test _test_ test_
+7. **test **test** test**
+8. __test __test__ test__
+
+
+
+No emphasis:
+
+1. test* test *test
+2. test** test **test
+3. test_ test _test
+4. test__ test __test
+
+
+
+Middle-word emphasis (asterisks):
+
+1. *a*b
+2. a*b*
+3. a*b*c
+4. **a**b
+5. a**b**
+6. a**b**c
+
+
+Middle-word emphasis (underscore):
+
+1. _a_b
+2. a_b_
+3. a_b_c
+4. __a__b
+5. a__b__
+6. a__b__c
+
+my_precious_file.txt
+
+
+## Tricky Cases
+
+E**. **Test** TestTestTest
+
+E**. **Test** Test Test Test
+
+
+## Overlong emphasis
+
+Name: ____________
+Organization: ____
+Region/Country: __
+
+_____Cut here_____
+
+____Cut here____
diff --git a/tests/php/extra/Emphasis.xhtml b/tests/php/extra/Emphasis.xhtml
new file mode 100644
index 0000000..1fa8218
--- /dev/null
+++ b/tests/php/extra/Emphasis.xhtml
@@ -0,0 +1,83 @@
+<p>Combined emphasis:</p>
+
+<ol>
+<li><strong><em>test test</em></strong></li>
+<li><strong><em>test test</em></strong></li>
+<li><em>test <strong>test</strong></em></li>
+<li><strong>test <em>test</em></strong></li>
+<li><strong><em>test</em> test</strong></li>
+<li><em><strong>test</strong> test</em></li>
+<li><strong><em>test</em> test</strong></li>
+<li><strong>test <em>test</em></strong></li>
+<li><em>test <strong>test</strong></em></li>
+<li><em>test <strong>test</strong></em></li>
+<li><strong>test <em>test</em></strong></li>
+<li><strong><em>test</em> test</strong></li>
+<li><em><strong>test</strong> test</em></li>
+<li><strong><em>test</em> test</strong></li>
+<li><strong>test <em>test</em></strong></li>
+<li><em>test <strong>test</strong></em></li>
+</ol>
+
+<p>Incorrect nesting:</p>
+
+<ol>
+<li>*test <strong>test* test</strong></li>
+<li>_test <strong>test_ test</strong></li>
+<li><strong>test *test</strong> test*</li>
+<li><strong>test _test</strong> test_</li>
+<li><em>test *test</em> test*</li>
+<li><em>test _test</em> test_</li>
+<li><strong>test **test</strong> test**</li>
+<li><strong>test __test</strong> test__</li>
+</ol>
+
+<p>No emphasis:</p>
+
+<ol>
+<li>test* test *test</li>
+<li>test** test **test</li>
+<li>test_ test _test</li>
+<li>test__ test __test</li>
+</ol>
+
+<p>Middle-word emphasis (asterisks):</p>
+
+<ol>
+<li><em>a</em>b</li>
+<li>a<em>b</em></li>
+<li>a<em>b</em>c</li>
+<li><strong>a</strong>b</li>
+<li>a<strong>b</strong></li>
+<li>a<strong>b</strong>c</li>
+</ol>
+
+<p>Middle-word emphasis (underscore):</p>
+
+<ol>
+<li>_a_b</li>
+<li>a_b_</li>
+<li>a_b_c</li>
+<li>__a__b</li>
+<li>a__b__</li>
+<li>a__b__c</li>
+</ol>
+
+<p>my_precious_file.txt</p>
+
+<h2>Tricky Cases</h2>
+
+<p>E**. <strong>Test</strong> TestTestTest</p>
+
+<p>E**. <strong>Test</strong> Test Test Test</p>
+
+
+<h2>Overlong emphasis</h2>
+
+<p>Name: ____________<br />
+Organization: ____<br />
+Region/Country: __</p>
+
+<p>_____Cut here_____</p>
+
+<p>____Cut here____</p>
diff --git a/tests/php/extra/Fenced Code Blocks.text b/tests/php/extra/Fenced Code Blocks.text
new file mode 100644
index 0000000..f2400ff
--- /dev/null
+++ b/tests/php/extra/Fenced Code Blocks.text
@@ -0,0 +1,60 @@
+~~~
+Fenced
+~~~
+
+Code block starting and ending with empty lines:
+~~~
+
+
+Fenced
+
+
+~~~
+
+Indented code block containing fenced code block sample:
+
+ ~~~
+ Fenced
+ ~~~
+
+Fenced code block with indented code block sample:
+
+~~~
+Some text
+
+ Indented code block sample code
+~~~
+
+Fenced code block with long markers:
+
+~~~~~~~~~~~~~~~~~~
+Fenced
+~~~~~~~~~~~~~~~~~~
+
+Fenced code block with fenced code block markers of different length in it:
+
+~~~~
+In code block
+~~~
+Still in code block
+~~~~~
+Still in code block
+~~~~
+
+Fenced code block with Markdown header and horizontal rule:
+
+~~~
+#test
+---
+~~~
+
+Fenced code block with link definitions, footnote definition and
+abbreviation definitions:
+
+~~~
+[example]: http://example.com/
+
+[^1]: Footnote def
+
+*[HTML]: HyperText Markup Language
+~~~ \ No newline at end of file
diff --git a/tests/php/extra/Fenced Code Blocks.xhtml b/tests/php/extra/Fenced Code Blocks.xhtml
new file mode 100644
index 0000000..518908c
--- /dev/null
+++ b/tests/php/extra/Fenced Code Blocks.xhtml
@@ -0,0 +1,53 @@
+<pre><code>Fenced
+</code></pre>
+
+<p>Code block starting and ending with empty lines:</p>
+
+<pre><code><br /><br />Fenced
+
+
+</code></pre>
+
+<p>Indented code block containing fenced code block sample:</p>
+
+<pre><code>~~~
+Fenced
+~~~
+</code></pre>
+
+<p>Fenced code block with indented code block sample:</p>
+
+<pre><code>Some text
+
+ Indented code block sample code
+</code></pre>
+
+<p>Fenced code block with long markers:</p>
+
+<pre><code>Fenced
+</code></pre>
+
+<p>Fenced code block with fenced code block markers of different length in it:</p>
+
+<pre><code>In code block
+~~~
+Still in code block
+~~~~~
+Still in code block
+</code></pre>
+
+<p>Fenced code block with Markdown header and horizontal rule:</p>
+
+<pre><code>#test
+---
+</code></pre>
+
+<p>Fenced code block with link definitions, footnote definition and
+abbreviation definitions:</p>
+
+<pre><code>[example]: http://example.com/
+
+[^1]: Footnote def
+
+*[HTML]: HyperText Markup Language
+</code></pre>
diff --git a/tests/php/extra/Footnotes.text b/tests/php/extra/Footnotes.text
new file mode 100644
index 0000000..40192e9
--- /dev/null
+++ b/tests/php/extra/Footnotes.text
@@ -0,0 +1,61 @@
+This is the first paragraph.[^first]
+
+[^first]: This is the first note.
+
+* List item one.[^second]
+* List item two.[^third]
+
+[^third]: This is the third note, defined out of order.
+[^second]: This is the second note.
+[^fourth]: This is the fourth note.
+
+# Header[^fourth]
+
+Some paragraph with a footnote[^1], and another[^2].
+
+[^1]: Content for fifth footnote.
+[^2]: Content for sixth footnote spaning on
+ three lines, with some span-level markup like
+ _emphasis_, a [link][].
+
+[link]: http://www.michelf.com/
+
+Another paragraph with a named footnote[^fn-name].
+
+[^fn-name]:
+ Footnote beginning on the line next to the marker.
+
+This paragraph should not have a footnote marker since
+the footnote is undefined.[^3]
+
+This paragraph should not have a footnote marker since
+the footnote has already been used before.[^1]
+
+This paragraph links to a footnote with plenty of
+block-level content.[^block]
+
+[^block]:
+ Paragraph.
+
+ * List item
+
+ > Blockquote
+
+ Code block
+
+This paragraph host the footnote reference within a
+footnote test[^reference].
+
+[^reference]:
+ This footnote has a footnote of its own.[^nested]
+
+[^nested]:
+ This footnote should appear even though as it is refered
+ from another footnote. But [^reference] should be litteral
+ since the footnote with that name has already been used.
+
+ - - -
+
+Testing unusual footnote name[^1$^!"'].
+
+[^1$^!"']: Haha!
diff --git a/tests/php/extra/Footnotes.xhtml b/tests/php/extra/Footnotes.xhtml
new file mode 100644
index 0000000..e33639d
--- /dev/null
+++ b/tests/php/extra/Footnotes.xhtml
@@ -0,0 +1,96 @@
+<p>This is the first paragraph.<sup id="fnref:first"><a href="#fn:first" rel="footnote">1</a></sup></p>
+
+<ul>
+<li>List item one.<sup id="fnref:second"><a href="#fn:second" rel="footnote">2</a></sup></li>
+<li>List item two.<sup id="fnref:third"><a href="#fn:third" rel="footnote">3</a></sup></li>
+</ul>
+
+<h1>Header<sup id="fnref:fourth"><a href="#fn:fourth" rel="footnote">4</a></sup></h1>
+
+<p>Some paragraph with a footnote<sup id="fnref:1"><a href="#fn:1" rel="footnote">5</a></sup>, and another<sup id="fnref:2"><a href="#fn:2" rel="footnote">6</a></sup>.</p>
+
+<p>Another paragraph with a named footnote<sup id="fnref:fn-name"><a href="#fn:fn-name" rel="footnote">7</a></sup>.</p>
+
+<p>This paragraph should not have a footnote marker since
+the footnote is undefined.[^3]</p>
+
+<p>This paragraph should not have a footnote marker since
+the footnote has already been used before.[^1]</p>
+
+<p>This paragraph links to a footnote with plenty of
+block-level content.<sup id="fnref:block"><a href="#fn:block" rel="footnote">8</a></sup></p>
+
+<p>This paragraph host the footnote reference within a
+footnote test<sup id="fnref:reference"><a href="#fn:reference" rel="footnote">9</a></sup>.</p>
+
+<hr />
+
+<p>Testing unusual footnote name<sup id="fnref:1$^!&quot;'"><a href="#fn:1$^!&quot;'" rel="footnote">10</a></sup>.</p>
+
+<div class="footnotes">
+<hr />
+<ol>
+
+<li id="fn:first">
+<p>This is the first note.&#160;<a href="#fnref:first" rev="footnote">&#8617;</a></p>
+</li>
+
+<li id="fn:second">
+<p>This is the second note.&#160;<a href="#fnref:second" rev="footnote">&#8617;</a></p>
+</li>
+
+<li id="fn:third">
+<p>This is the third note, defined out of order.&#160;<a href="#fnref:third" rev="footnote">&#8617;</a></p>
+</li>
+
+<li id="fn:fourth">
+<p>This is the fourth note.&#160;<a href="#fnref:fourth" rev="footnote">&#8617;</a></p>
+</li>
+
+<li id="fn:1">
+<p>Content for fifth footnote.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
+</li>
+
+<li id="fn:2">
+<p>Content for sixth footnote spaning on
+three lines, with some span-level markup like
+<em>emphasis</em>, a <a href="http://www.michelf.com/">link</a>.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
+</li>
+
+<li id="fn:fn-name">
+<p>Footnote beginning on the line next to the marker.&#160;<a href="#fnref:fn-name" rev="footnote">&#8617;</a></p>
+</li>
+
+<li id="fn:block">
+<p>Paragraph.</p>
+
+<ul>
+<li>List item</li>
+</ul>
+
+<blockquote>
+ <p>Blockquote</p>
+</blockquote>
+
+<pre><code>Code block
+</code></pre>
+
+<p><a href="#fnref:block" rev="footnote">&#8617;</a></p>
+</li>
+
+<li id="fn:reference">
+<p>This footnote has a footnote of its own.<sup id="fnref:nested"><a href="#fn:nested" rel="footnote">11</a></sup>&#160;<a href="#fnref:reference" rev="footnote">&#8617;</a></p>
+</li>
+
+<li id="fn:1$^!&quot;'">
+<p>Haha!&#160;<a href="#fnref:1$^!&quot;'" rev="footnote">&#8617;</a></p>
+</li>
+
+<li id="fn:nested">
+<p>This footnote should appear even though as it is refered
+from another footnote. But [^reference] should be litteral
+since the footnote with that name has already been used.&#160;<a href="#fnref:nested" rev="footnote">&#8617;</a></p>
+</li>
+
+</ol>
+</div>
diff --git a/tests/php/extra/Inline HTML with Markdown content.text b/tests/php/extra/Inline HTML with Markdown content.text
new file mode 100644
index 0000000..1eb5450
--- /dev/null
+++ b/tests/php/extra/Inline HTML with Markdown content.text
@@ -0,0 +1,104 @@
+# Markdown inside code blocks
+
+<div markdown="1">
+foo
+</div>
+
+<div markdown='1'>
+foo
+</div>
+
+<div markdown=1>
+foo
+</div>
+
+<table>
+<tr><td markdown="1">test _emphasis_ (span)</td></tr>
+</table>
+
+<table>
+<tr><td markdown="span">test _emphasis_ (span)</td></tr>
+</table>
+
+<table>
+<tr><td markdown="block">test _emphasis_ (block)</td></tr>
+</table>
+
+## More complicated
+
+<table>
+<tr><td markdown="1">
+* this is _not_ a list item</td></tr>
+<tr><td markdown="span">
+* this is _not_ a list item</td></tr>
+<tr><td markdown="block">
+* this _is_ a list item
+</td></tr>
+</table>
+
+## With indent
+
+<div>
+ <div markdown="1">
+ This text is no code block: if it was, the
+ closing `<div>` would be too and the HTML block
+ would be invalid.
+
+ Markdown content in HTML blocks is assumed to be
+ indented the same as the block opening tag.
+
+ **This should be the third paragraph after the header.**
+ </div>
+</div>
+
+## Code block with rogue `</div>`s in Markdown code span and block
+
+<div>
+ <div markdown="1">
+
+ This is a code block however:
+
+ </div>
+
+ Funny isn't it? Here is a code span: `</div>`.
+
+ </div>
+</div>
+
+<div>
+ <div markdown="1">
+ * List item, not a code block
+
+Some text
+
+ This is a code block.
+ </div>
+</div>
+
+## No code block in markdown span mode
+
+<p markdown="1">
+ This is not a code block since Markdown parse paragraph
+ content as span. Code spans like `</p>` are allowed though.
+</p>
+
+<p markdown="1">_Hello_ _world_</p>
+
+## Preserving attributes and tags on more than one line:
+
+<p class="test" markdown="1"
+id="12">
+Some _span_ content.
+</p>
+
+
+## Header confusion bug
+
+<table class="canvas">
+<tr>
+<td id="main" markdown="1">Hello World!
+============
+
+Hello World!</td>
+</tr>
+</table>
diff --git a/tests/php/extra/Inline HTML with Markdown content.xhtml b/tests/php/extra/Inline HTML with Markdown content.xhtml
new file mode 100644
index 0000000..4751f78
--- /dev/null
+++ b/tests/php/extra/Inline HTML with Markdown content.xhtml
@@ -0,0 +1,125 @@
+<h1>Markdown inside code blocks</h1>
+
+<div>
+
+<p>foo</p>
+
+</div>
+
+<div>
+
+<p>foo</p>
+
+</div>
+
+<div>
+
+<p>foo</p>
+
+</div>
+
+<table>
+<tr><td>test <em>emphasis</em> (span)</td></tr>
+</table>
+
+<table>
+<tr><td>test <em>emphasis</em> (span)</td></tr>
+</table>
+
+<table>
+<tr><td>
+
+<p>test <em>emphasis</em> (block)</p>
+
+</td></tr>
+</table>
+
+<h2>More complicated</h2>
+
+<table>
+<tr><td>
+* this is <em>not</em> a list item</td></tr>
+<tr><td>
+* this is <em>not</em> a list item</td></tr>
+<tr><td>
+
+<ul>
+<li>this <em>is</em> a list item</li>
+</ul>
+
+</td></tr>
+</table>
+
+<h2>With indent</h2>
+
+<div>
+ <div>
+
+<p>This text is no code block: if it was, the
+closing <code>&lt;div&gt;</code> would be too and the HTML block
+would be invalid.</p>
+
+<p>Markdown content in HTML blocks is assumed to be
+indented the same as the block opening tag.</p>
+
+<p><strong>This should be the third paragraph after the header.</strong></p>
+
+</div>
+</div>
+
+<h2>Code block with rogue <code>&lt;/div&gt;</code>s in Markdown code span and block</h2>
+
+<div>
+ <div>
+
+<p>This is a code block however:</p>
+
+<pre><code>&lt;/div&gt;
+</code></pre>
+
+<p>Funny isn't it? Here is a code span: <code>&lt;/div&gt;</code>.</p>
+
+</div>
+</div>
+
+<div>
+ <div>
+
+<ul>
+<li>List item, not a code block</li>
+</ul>
+
+<p>Some text</p>
+
+<pre><code>This is a code block.
+</code></pre>
+
+</div>
+</div>
+
+<h2>No code block in markdown span mode</h2>
+
+<p>
+ This is not a code block since Markdown parse paragraph
+ content as span. Code spans like <code>&lt;/p&gt;</code> are allowed though.
+</p>
+
+<p><em>Hello</em> <em>world</em></p>
+
+<h2>Preserving attributes and tags on more than one line:</h2>
+
+<p class="test"
+id="12">
+Some <em>span</em> content.
+</p>
+
+<h2>Header confusion bug</h2>
+
+<table class="canvas">
+<tr>
+<td id="main">Hello World!
+============
+
+Hello World!</td>
+</tr>
+</table> \ No newline at end of file
diff --git a/tests/php/extra/Tables.text b/tests/php/extra/Tables.text
new file mode 100644
index 0000000..71b93ca
--- /dev/null
+++ b/tests/php/extra/Tables.text
@@ -0,0 +1,104 @@
+# Simple tables
+
+Header 1 | Header 2
+--------- | ---------
+Cell 1 | Cell 2
+Cell 3 | Cell 4
+
+With leading pipes:
+
+| Header 1 | Header 2
+| --------- | ---------
+| Cell 1 | Cell 2
+| Cell 3 | Cell 4
+
+With tailing pipes:
+
+Header 1 | Header 2 |
+--------- | --------- |
+Cell 1 | Cell 2 |
+Cell 3 | Cell 4 |
+
+With leading and tailing pipes:
+
+| Header 1 | Header 2 |
+| --------- | --------- |
+| Cell 1 | Cell 2 |
+| Cell 3 | Cell 4 |
+
+* * *
+
+# One-column one-row table
+
+With leading pipes:
+
+| Header
+| -------
+| Cell
+
+With tailing pipes:
+
+Header |
+------- |
+Cell |
+
+With leading and tailing pipes:
+
+| Header |
+| ------- |
+| Cell |
+
+* * *
+
+Table alignement:
+
+| Default | Right | Center | Left |
+| --------- |:--------- |:---------:| ---------:|
+| Long Cell | Long Cell | Long Cell | Long Cell |
+| Cell | Cell | Cell | Cell |
+
+Table alignement (alternate spacing):
+
+| Default | Right | Center | Left |
+| --------- | :-------- | :-------: | --------: |
+| Long Cell | Long Cell | Long Cell | Long Cell |
+| Cell | Cell | Cell | Cell |
+
+* * *
+
+# Empty cells
+
+| Header 1 | Header 2 |
+| --------- | --------- |
+| A | B |
+| C | |
+
+Header 1 | Header 2
+--------- | ---------
+A | B
+ | D
+
+* * *
+
+# Missing tailing pipe
+
+Header 1 | Header 2
+--------- | --------- |
+Cell | Cell |
+Cell | Cell |
+
+Header 1 | Header 2 |
+--------- | ---------
+Cell | Cell |
+Cell | Cell |
+
+Header 1 | Header 2 |
+--------- | --------- |
+Cell | Cell
+Cell | Cell |
+
+Header 1 | Header 2 |
+--------- | --------- |
+Cell | Cell |
+Cell | Cell
+
diff --git a/tests/php/extra/Tables.xhtml b/tests/php/extra/Tables.xhtml
new file mode 100644
index 0000000..e36286c
--- /dev/null
+++ b/tests/php/extra/Tables.xhtml
@@ -0,0 +1,310 @@
+<h1>Simple tables</h1>
+
+<table>
+<thead>
+<tr>
+ <th>Header 1</th>
+ <th>Header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Cell 1</td>
+ <td>Cell 2</td>
+</tr>
+<tr>
+ <td>Cell 3</td>
+ <td>Cell 4</td>
+</tr>
+</tbody>
+</table>
+
+<p>With leading pipes:</p>
+
+<table>
+<thead>
+<tr>
+ <th>Header 1</th>
+ <th>Header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Cell 1</td>
+ <td>Cell 2</td>
+</tr>
+<tr>
+ <td>Cell 3</td>
+ <td>Cell 4</td>
+</tr>
+</tbody>
+</table>
+
+<p>With tailing pipes:</p>
+
+<table>
+<thead>
+<tr>
+ <th>Header 1</th>
+ <th>Header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Cell 1</td>
+ <td>Cell 2</td>
+</tr>
+<tr>
+ <td>Cell 3</td>
+ <td>Cell 4</td>
+</tr>
+</tbody>
+</table>
+
+<p>With leading and tailing pipes:</p>
+
+<table>
+<thead>
+<tr>
+ <th>Header 1</th>
+ <th>Header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Cell 1</td>
+ <td>Cell 2</td>
+</tr>
+<tr>
+ <td>Cell 3</td>
+ <td>Cell 4</td>
+</tr>
+</tbody>
+</table>
+
+<hr />
+
+<h1>One-column one-row table</h1>
+
+<p>With leading pipes:</p>
+
+<table>
+<thead>
+<tr>
+ <th>Header</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Cell</td>
+</tr>
+</tbody>
+</table>
+
+<p>With tailing pipes:</p>
+
+<table>
+<thead>
+<tr>
+ <th>Header</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Cell</td>
+</tr>
+</tbody>
+</table>
+
+<p>With leading and tailing pipes:</p>
+
+<table>
+<thead>
+<tr>
+ <th>Header</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Cell</td>
+</tr>
+</tbody>
+</table>
+
+<hr />
+
+<p>Table alignement:</p>
+
+<table>
+<thead>
+<tr>
+ <th>Default</th>
+ <th align="left">Right</th>
+ <th align="center">Center</th>
+ <th align="right">Left</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Long Cell</td>
+ <td align="left">Long Cell</td>
+ <td align="center">Long Cell</td>
+ <td align="right">Long Cell</td>
+</tr>
+<tr>
+ <td>Cell</td>
+ <td align="left">Cell</td>
+ <td align="center">Cell</td>
+ <td align="right">Cell</td>
+</tr>
+</tbody>
+</table>
+
+<p>Table alignement (alternate spacing):</p>
+
+<table>
+<thead>
+<tr>
+ <th>Default</th>
+ <th align="left">Right</th>
+ <th align="center">Center</th>
+ <th align="right">Left</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Long Cell</td>
+ <td align="left">Long Cell</td>
+ <td align="center">Long Cell</td>
+ <td align="right">Long Cell</td>
+</tr>
+<tr>
+ <td>Cell</td>
+ <td align="left">Cell</td>
+ <td align="center">Cell</td>
+ <td align="right">Cell</td>
+</tr>
+</tbody>
+</table>
+
+<hr />
+
+<h1>Empty cells</h1>
+
+<table>
+<thead>
+<tr>
+ <th>Header 1</th>
+ <th>Header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>A</td>
+ <td>B</td>
+</tr>
+<tr>
+ <td>C</td>
+ <td></td>
+</tr>
+</tbody>
+</table>
+
+<table>
+<thead>
+<tr>
+ <th>Header 1</th>
+ <th>Header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>A</td>
+ <td>B</td>
+</tr>
+<tr>
+ <td></td>
+ <td>D</td>
+</tr>
+</tbody>
+</table>
+
+<hr />
+
+<h1>Missing tailing pipe</h1>
+
+<table>
+<thead>
+<tr>
+ <th>Header 1</th>
+ <th>Header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Cell</td>
+ <td>Cell</td>
+</tr>
+<tr>
+ <td>Cell</td>
+ <td>Cell</td>
+</tr>
+</tbody>
+</table>
+
+<table>
+<thead>
+<tr>
+ <th>Header 1</th>
+ <th>Header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Cell</td>
+ <td>Cell</td>
+</tr>
+<tr>
+ <td>Cell</td>
+ <td>Cell</td>
+</tr>
+</tbody>
+</table>
+
+<table>
+<thead>
+<tr>
+ <th>Header 1</th>
+ <th>Header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Cell</td>
+ <td>Cell</td>
+</tr>
+<tr>
+ <td>Cell</td>
+ <td>Cell</td>
+</tr>
+</tbody>
+</table>
+
+<table>
+<thead>
+<tr>
+ <th>Header 1</th>
+ <th>Header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>Cell</td>
+ <td>Cell</td>
+</tr>
+<tr>
+ <td>Cell</td>
+ <td>Cell</td>
+</tr>
+</tbody>
+</table> \ No newline at end of file
diff --git a/tests/pl/Tests_2004/Amps and angle encoding.html b/tests/pl/Tests_2004/Amps and angle encoding.html
new file mode 100644
index 0000000..9606860
--- /dev/null
+++ b/tests/pl/Tests_2004/Amps and angle encoding.html
@@ -0,0 +1,17 @@
+<p>AT&amp;T has an ampersand in their name.</p>
+
+<p>AT&amp;T is another way to write it.</p>
+
+<p>This &amp; that.</p>
+
+<p>4 &lt; 5.</p>
+
+<p>6 > 5.</p>
+
+<p>Here's a <a href="http://example.com/?foo=1&amp;bar=2">link</a> with an ampersand in the URL.</p>
+
+<p>Here's a link with an amersand in the link text: <a href="http://att.com/" title="AT&amp;T">AT&amp;T</a>.</p>
+
+<p>Here's an inline <a href="/script?foo=1&amp;bar=2">link</a>.</p>
+
+<p>Here's an inline <a href="/script?foo=1&amp;bar=2">link</a>.</p>
diff --git a/tests/pl/Tests_2004/Amps and angle encoding.text b/tests/pl/Tests_2004/Amps and angle encoding.text
new file mode 100644
index 0000000..0e9527f
--- /dev/null
+++ b/tests/pl/Tests_2004/Amps and angle encoding.text
@@ -0,0 +1,21 @@
+AT&T has an ampersand in their name.
+
+AT&amp;T is another way to write it.
+
+This & that.
+
+4 < 5.
+
+6 > 5.
+
+Here's a [link] [1] with an ampersand in the URL.
+
+Here's a link with an amersand in the link text: [AT&T] [2].
+
+Here's an inline [link](/script?foo=1&bar=2).
+
+Here's an inline [link](</script?foo=1&bar=2>).
+
+
+[1]: http://example.com/?foo=1&bar=2
+[2]: http://att.com/ "AT&T" \ No newline at end of file
diff --git a/tests/pl/Tests_2004/Auto links.html b/tests/pl/Tests_2004/Auto links.html
new file mode 100644
index 0000000..f8df985
--- /dev/null
+++ b/tests/pl/Tests_2004/Auto links.html
@@ -0,0 +1,18 @@
+<p>Link: <a href="http://example.com/">http://example.com/</a>.</p>
+
+<p>With an ampersand: <a href="http://example.com/?foo=1&amp;bar=2">http://example.com/?foo=1&amp;bar=2</a></p>
+
+<ul>
+<li>In a list?</li>
+<li><a href="http://example.com/">http://example.com/</a></li>
+<li>It should.</li>
+</ul>
+
+<blockquote>
+ <p>Blockquoted: <a href="http://example.com/">http://example.com/</a></p>
+</blockquote>
+
+<p>Auto-links should not occur here: <code>&lt;http://example.com/&gt;</code></p>
+
+<pre><code>or here: &lt;http://example.com/&gt;
+</code></pre>
diff --git a/tests/pl/Tests_2004/Auto links.text b/tests/pl/Tests_2004/Auto links.text
new file mode 100644
index 0000000..abbc488
--- /dev/null
+++ b/tests/pl/Tests_2004/Auto links.text
@@ -0,0 +1,13 @@
+Link: <http://example.com/>.
+
+With an ampersand: <http://example.com/?foo=1&bar=2>
+
+* In a list?
+* <http://example.com/>
+* It should.
+
+> Blockquoted: <http://example.com/>
+
+Auto-links should not occur here: `<http://example.com/>`
+
+ or here: <http://example.com/> \ No newline at end of file
diff --git a/tests/pl/Tests_2004/Backslash escapes.html b/tests/pl/Tests_2004/Backslash escapes.html
new file mode 100644
index 0000000..77823c3
--- /dev/null
+++ b/tests/pl/Tests_2004/Backslash escapes.html
@@ -0,0 +1,102 @@
+<p>These should all get escaped:</p>
+
+<p>Backslash: \</p>
+
+<p>Backtick: `</p>
+
+<p>Asterisk: *</p>
+
+<p>Underscore: _</p>
+
+<p>Left brace: {</p>
+
+<p>Right brace: }</p>
+
+<p>Left bracket: [</p>
+
+<p>Right bracket: ]</p>
+
+<p>Left paren: (</p>
+
+<p>Right paren: )</p>
+
+<p>Greater-than: ></p>
+
+<p>Hash: #</p>
+
+<p>Period: .</p>
+
+<p>Bang: !</p>
+
+<p>Plus: +</p>
+
+<p>Minus: -</p>
+
+<p>These should not, because they occur within a code block:</p>
+
+<pre><code>Backslash: \\
+
+Backtick: \`
+
+Asterisk: \*
+
+Underscore: \_
+
+Left brace: \{
+
+Right brace: \}
+
+Left bracket: \[
+
+Right bracket: \]
+
+Left paren: \(
+
+Right paren: \)
+
+Greater-than: \&gt;
+
+Hash: \#
+
+Period: \.
+
+Bang: \!
+
+Plus: \+
+
+Minus: \-
+</code></pre>
+
+<p>Nor should these, which occur in code spans:</p>
+
+<p>Backslash: <code>\\</code></p>
+
+<p>Backtick: <code>\`</code></p>
+
+<p>Asterisk: <code>\*</code></p>
+
+<p>Underscore: <code>\_</code></p>
+
+<p>Left brace: <code>\{</code></p>
+
+<p>Right brace: <code>\}</code></p>
+
+<p>Left bracket: <code>\[</code></p>
+
+<p>Right bracket: <code>\]</code></p>
+
+<p>Left paren: <code>\(</code></p>
+
+<p>Right paren: <code>\)</code></p>
+
+<p>Greater-than: <code>\&gt;</code></p>
+
+<p>Hash: <code>\#</code></p>
+
+<p>Period: <code>\.</code></p>
+
+<p>Bang: <code>\!</code></p>
+
+<p>Plus: <code>\+</code></p>
+
+<p>Minus: <code>\-</code></p>
diff --git a/tests/pl/Tests_2004/Backslash escapes.text b/tests/pl/Tests_2004/Backslash escapes.text
new file mode 100644
index 0000000..16447a0
--- /dev/null
+++ b/tests/pl/Tests_2004/Backslash escapes.text
@@ -0,0 +1,104 @@
+These should all get escaped:
+
+Backslash: \\
+
+Backtick: \`
+
+Asterisk: \*
+
+Underscore: \_
+
+Left brace: \{
+
+Right brace: \}
+
+Left bracket: \[
+
+Right bracket: \]
+
+Left paren: \(
+
+Right paren: \)
+
+Greater-than: \>
+
+Hash: \#
+
+Period: \.
+
+Bang: \!
+
+Plus: \+
+
+Minus: \-
+
+
+
+These should not, because they occur within a code block:
+
+ Backslash: \\
+
+ Backtick: \`
+
+ Asterisk: \*
+
+ Underscore: \_
+
+ Left brace: \{
+
+ Right brace: \}
+
+ Left bracket: \[
+
+ Right bracket: \]
+
+ Left paren: \(
+
+ Right paren: \)
+
+ Greater-than: \>
+
+ Hash: \#
+
+ Period: \.
+
+ Bang: \!
+
+ Plus: \+
+
+ Minus: \-
+
+
+Nor should these, which occur in code spans:
+
+Backslash: `\\`
+
+Backtick: `` \` ``
+
+Asterisk: `\*`
+
+Underscore: `\_`
+
+Left brace: `\{`
+
+Right brace: `\}`
+
+Left bracket: `\[`
+
+Right bracket: `\]`
+
+Left paren: `\(`
+
+Right paren: `\)`
+
+Greater-than: `\>`
+
+Hash: `\#`
+
+Period: `\.`
+
+Bang: `\!`
+
+Plus: `\+`
+
+Minus: `\-`
diff --git a/tests/pl/Tests_2004/Blockquotes with code blocks.html b/tests/pl/Tests_2004/Blockquotes with code blocks.html
new file mode 100644
index 0000000..990202a
--- /dev/null
+++ b/tests/pl/Tests_2004/Blockquotes with code blocks.html
@@ -0,0 +1,15 @@
+<blockquote>
+ <p>Example:</p>
+
+<pre><code>sub status {
+ print "working";
+}
+</code></pre>
+
+ <p>Or:</p>
+
+<pre><code>sub status {
+ return "working";
+}
+</code></pre>
+</blockquote>
diff --git a/tests/pl/Tests_2004/Blockquotes with code blocks.text b/tests/pl/Tests_2004/Blockquotes with code blocks.text
new file mode 100644
index 0000000..c31d171
--- /dev/null
+++ b/tests/pl/Tests_2004/Blockquotes with code blocks.text
@@ -0,0 +1,11 @@
+> Example:
+>
+> sub status {
+> print "working";
+> }
+>
+> Or:
+>
+> sub status {
+> return "working";
+> }
diff --git a/tests/pl/Tests_2004/Hard-wrapped paragraphs with list-like lines.html b/tests/pl/Tests_2004/Hard-wrapped paragraphs with list-like lines.html
new file mode 100644
index 0000000..e21ac79
--- /dev/null
+++ b/tests/pl/Tests_2004/Hard-wrapped paragraphs with list-like lines.html
@@ -0,0 +1,8 @@
+<p>In Markdown 1.0.0 and earlier. Version
+8. This line turns into a list item.
+Because a hard-wrapped line in the
+middle of a paragraph looked like a
+list item.</p>
+
+<p>Here's one with a bullet.
+* criminey.</p>
diff --git a/tests/pl/Tests_2004/Hard-wrapped paragraphs with list-like lines.text b/tests/pl/Tests_2004/Hard-wrapped paragraphs with list-like lines.text
new file mode 100644
index 0000000..f8a5b27
--- /dev/null
+++ b/tests/pl/Tests_2004/Hard-wrapped paragraphs with list-like lines.text
@@ -0,0 +1,8 @@
+In Markdown 1.0.0 and earlier. Version
+8. This line turns into a list item.
+Because a hard-wrapped line in the
+middle of a paragraph looked like a
+list item.
+
+Here's one with a bullet.
+* criminey.
diff --git a/tests/pl/Tests_2004/Horizontal rules.html b/tests/pl/Tests_2004/Horizontal rules.html
new file mode 100644
index 0000000..2dc2ab6
--- /dev/null
+++ b/tests/pl/Tests_2004/Horizontal rules.html
@@ -0,0 +1,71 @@
+<p>Dashes:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>---
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>- - -
+</code></pre>
+
+<p>Asterisks:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>***
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>* * *
+</code></pre>
+
+<p>Underscores:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>___
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>_ _ _
+</code></pre>
diff --git a/tests/pl/Tests_2004/Horizontal rules.text b/tests/pl/Tests_2004/Horizontal rules.text
new file mode 100644
index 0000000..1594bda
--- /dev/null
+++ b/tests/pl/Tests_2004/Horizontal rules.text
@@ -0,0 +1,67 @@
+Dashes:
+
+---
+
+ ---
+
+ ---
+
+ ---
+
+ ---
+
+- - -
+
+ - - -
+
+ - - -
+
+ - - -
+
+ - - -
+
+
+Asterisks:
+
+***
+
+ ***
+
+ ***
+
+ ***
+
+ ***
+
+* * *
+
+ * * *
+
+ * * *
+
+ * * *
+
+ * * *
+
+
+Underscores:
+
+___
+
+ ___
+
+ ___
+
+ ___
+
+ ___
+
+_ _ _
+
+ _ _ _
+
+ _ _ _
+
+ _ _ _
+
+ _ _ _
diff --git a/tests/markdown-test/inline-html-advanced.html b/tests/pl/Tests_2004/Inline HTML (Advanced).html
index af1dec1..1972d87 100644
--- a/tests/markdown-test/inline-html-advanced.html
+++ b/tests/pl/Tests_2004/Inline HTML (Advanced).html
@@ -1,7 +1,9 @@
<p>Simple block on one line:</p>
+
<div>foo</div>
<p>And nested without indentation:</p>
+
<div>
<div>
<div>
@@ -9,4 +11,4 @@ foo
</div>
</div>
<div>bar</div>
-</div> \ No newline at end of file
+</div>
diff --git a/tests/markdown-test/inline-html-advanced.txt b/tests/pl/Tests_2004/Inline HTML (Advanced).text
index 9d71ddc..9d71ddc 100644
--- a/tests/markdown-test/inline-html-advanced.txt
+++ b/tests/pl/Tests_2004/Inline HTML (Advanced).text
diff --git a/tests/markdown-test/inline-html-simple.html b/tests/pl/Tests_2004/Inline HTML (Simple).html
index cb10451..6bf78f8 100644
--- a/tests/markdown-test/inline-html-simple.html
+++ b/tests/pl/Tests_2004/Inline HTML (Simple).html
@@ -1,17 +1,23 @@
<p>Here's a simple block:</p>
+
<div>
foo
</div>
<p>This should be a code block, though:</p>
+
<pre><code>&lt;div&gt;
foo
&lt;/div&gt;
</code></pre>
+
<p>As should this:</p>
+
<pre><code>&lt;div&gt;foo&lt;/div&gt;
</code></pre>
+
<p>Now, nested:</p>
+
<div>
<div>
<div>
@@ -21,38 +27,46 @@
</div>
<p>This should just be an HTML comment:</p>
+
<!-- Comment -->
<p>Multiline:</p>
+
<!--
Blah
Blah
-->
<p>Code block:</p>
+
<pre><code>&lt;!-- Comment --&gt;
</code></pre>
+
<p>Just plain comment, with trailing spaces on the line:</p>
-<!-- foo -->
+
+<!-- foo -->
<p>Code:</p>
+
<pre><code>&lt;hr /&gt;
</code></pre>
+
<p>Hr's:</p>
+
<hr>
<hr/>
<hr />
-<hr>
+<hr>
-<hr/>
+<hr/>
-<hr />
+<hr />
<hr class="foo" id="bar" />
<hr class="foo" id="bar"/>
-<hr class="foo" id="bar" > \ No newline at end of file
+<hr class="foo" id="bar" >
diff --git a/tests/markdown-test/inline-html-simple.txt b/tests/pl/Tests_2004/Inline HTML (Simple).text
index 14aa2dc..14aa2dc 100644
--- a/tests/markdown-test/inline-html-simple.txt
+++ b/tests/pl/Tests_2004/Inline HTML (Simple).text
diff --git a/tests/markdown-test/inline-html-comments.html b/tests/pl/Tests_2004/Inline HTML comments.html
index 0d4cad9..3f167a1 100644
--- a/tests/markdown-test/inline-html-comments.html
+++ b/tests/pl/Tests_2004/Inline HTML comments.html
@@ -1,4 +1,5 @@
<p>Paragraph one.</p>
+
<!-- This is a simple comment -->
<!--
@@ -6,6 +7,7 @@
-->
<p>Paragraph two.</p>
+
<!-- one comment block -- -- with two comments -->
-<p>The end.</p> \ No newline at end of file
+<p>The end.</p>
diff --git a/tests/markdown-test/inline-html-comments.txt b/tests/pl/Tests_2004/Inline HTML comments.text
index 41d830d..41d830d 100644
--- a/tests/markdown-test/inline-html-comments.txt
+++ b/tests/pl/Tests_2004/Inline HTML comments.text
diff --git a/tests/pl/Tests_2004/Links, inline style.html b/tests/pl/Tests_2004/Links, inline style.html
new file mode 100644
index 0000000..bdfabb5
--- /dev/null
+++ b/tests/pl/Tests_2004/Links, inline style.html
@@ -0,0 +1,9 @@
+<p>Just a <a href="/url/">URL</a>.</p>
+
+<p><a href="/url/" title="title">URL and title</a>.</p>
+
+<p><a href="/url/" title="title preceded by two spaces">URL and title</a>.</p>
+
+<p><a href="/url/" title="title preceded by a tab">URL and title</a>.</p>
+
+<p><a href="">Empty</a>.</p>
diff --git a/tests/pl/Tests_2004/Links, inline style.text b/tests/pl/Tests_2004/Links, inline style.text
new file mode 100644
index 0000000..4d0c1c2
--- /dev/null
+++ b/tests/pl/Tests_2004/Links, inline style.text
@@ -0,0 +1,9 @@
+Just a [URL](/url/).
+
+[URL and title](/url/ "title").
+
+[URL and title](/url/ "title preceded by two spaces").
+
+[URL and title](/url/ "title preceded by a tab").
+
+[Empty]().
diff --git a/tests/markdown-test/links-reference.html b/tests/pl/Tests_2004/Links, reference style.html
index 165c71a..cf4d833 100644
--- a/tests/markdown-test/links-reference.html
+++ b/tests/pl/Tests_2004/Links, reference style.html
@@ -1,10 +1,18 @@
<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
<p>With <a href="/url/">embedded [brackets]</a>.</p>
+
<p>Indented <a href="/url">once</a>.</p>
+
<p>Indented <a href="/url">twice</a>.</p>
+
<p>Indented <a href="/url">thrice</a>.</p>
+
<p>Indented [four][] times.</p>
+
<pre><code>[four]: /url
-</code></pre> \ No newline at end of file
+</code></pre>
diff --git a/tests/markdown-test/links-reference.txt b/tests/pl/Tests_2004/Links, reference style.text
index b2fa734..b2fa734 100644
--- a/tests/markdown-test/links-reference.txt
+++ b/tests/pl/Tests_2004/Links, reference style.text
diff --git a/tests/pl/Tests_2004/Literal quotes in titles.html b/tests/pl/Tests_2004/Literal quotes in titles.html
new file mode 100644
index 0000000..611c1ac
--- /dev/null
+++ b/tests/pl/Tests_2004/Literal quotes in titles.html
@@ -0,0 +1,3 @@
+<p>Foo <a href="/url/" title="Title with &quot;quotes&quot; inside">bar</a>.</p>
+
+<p>Foo <a href="/url/" title="Title with &quot;quotes&quot; inside">bar</a>.</p>
diff --git a/tests/pl/Tests_2004/Literal quotes in titles.text b/tests/pl/Tests_2004/Literal quotes in titles.text
new file mode 100644
index 0000000..29d0e42
--- /dev/null
+++ b/tests/pl/Tests_2004/Literal quotes in titles.text
@@ -0,0 +1,7 @@
+Foo [bar][].
+
+Foo [bar](/url/ "Title with "quotes" inside").
+
+
+ [bar]: /url/ "Title with "quotes" inside"
+
diff --git a/tests/markdown-test/markdown-documentation-basics.html b/tests/pl/Tests_2004/Markdown Documentation - Basics.html
index 3bcaea9..342f0c1 100644
--- a/tests/markdown-test/markdown-documentation-basics.html
+++ b/tests/pl/Tests_2004/Markdown Documentation - Basics.html
@@ -1,4 +1,5 @@
<h1>Markdown: Basics</h1>
+
<ul id="ProjectSubmenu">
<li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
<li><a class="selected" title="Markdown Basics">Basics</a></li>
@@ -8,30 +9,39 @@
</ul>
<h2>Getting the Gist of Markdown's Formatting Syntax</h2>
+
<p>This page offers a brief overview of what it's like to use Markdown.
The <a href="/projects/markdown/syntax" title="Markdown Syntax">syntax page</a> provides complete, detailed documentation for
every feature, but Markdown should be very easy to pick up simply by
looking at a few examples of it in action. The examples on this page
are written in a before/after style, showing example syntax and the
HTML output produced by Markdown.</p>
+
<p>It's also helpful to simply try Markdown out; the <a href="/projects/markdown/dingus" title="Markdown Dingus">Dingus</a> is a
web application that allows you type your own Markdown-formatted text
and translate it to XHTML.</p>
+
<p><strong>Note:</strong> This document is itself written using Markdown; you
can <a href="/projects/markdown/basics.text">see the source for it by adding '.text' to the URL</a>.</p>
+
<h2>Paragraphs, Headers, Blockquotes</h2>
+
<p>A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing spaces or tabs is considered
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+blank.) Normal paragraphs should not be indented with spaces or tabs.</p>
+
<p>Markdown offers two styles of headers: <em>Setext</em> and <em>atx</em>.
Setext-style headers for <code>&lt;h1&gt;</code> and <code>&lt;h2&gt;</code> are created by
"underlining" with equal signs (<code>=</code>) and hyphens (<code>-</code>), respectively.
To create an atx-style header, you put 1-6 hash marks (<code>#</code>) at the
beginning of the line -- the number of hashes equals the resulting
HTML header level.</p>
+
<p>Blockquotes are indicated using email-style '<code>&gt;</code>' angle brackets.</p>
+
<p>Markdown:</p>
+
<pre><code>A First Level Header
====================
@@ -53,7 +63,9 @@ dog's back.
&gt;
&gt; ## This is an H2 in a blockquote
</code></pre>
+
<p>Output:</p>
+
<pre><code>&lt;h1&gt;A First Level Header&lt;/h1&gt;
&lt;h2&gt;A Second Level Header&lt;/h2&gt;
@@ -75,97 +87,132 @@ dog's back.&lt;/p&gt;
&lt;h2&gt;This is an H2 in a blockquote&lt;/h2&gt;
&lt;/blockquote&gt;
</code></pre>
+
<h3>Phrase Emphasis</h3>
+
<p>Markdown uses asterisks and underscores to indicate spans of emphasis.</p>
+
<p>Markdown:</p>
+
<pre><code>Some of these words *are emphasized*.
Some of these words _are emphasized also_.
Use two asterisks for **strong emphasis**.
Or, if you prefer, __use two underscores instead__.
</code></pre>
+
<p>Output:</p>
+
<pre><code>&lt;p&gt;Some of these words &lt;em&gt;are emphasized&lt;/em&gt;.
Some of these words &lt;em&gt;are emphasized also&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Use two asterisks for &lt;strong&gt;strong emphasis&lt;/strong&gt;.
Or, if you prefer, &lt;strong&gt;use two underscores instead&lt;/strong&gt;.&lt;/p&gt;
</code></pre>
+
<h2>Lists</h2>
+
<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,
<code>+</code>, and <code>-</code>) as list markers. These three markers are
interchangable; this:</p>
+
<pre><code>* Candy.
* Gum.
* Booze.
</code></pre>
+
<p>this:</p>
+
<pre><code>+ Candy.
+ Gum.
+ Booze.
</code></pre>
+
<p>and this:</p>
+
<pre><code>- Candy.
- Gum.
- Booze.
</code></pre>
+
<p>all produce the same output:</p>
+
<pre><code>&lt;ul&gt;
&lt;li&gt;Candy.&lt;/li&gt;
&lt;li&gt;Gum.&lt;/li&gt;
&lt;li&gt;Booze.&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
+
<p>Ordered (numbered) lists use regular numbers, followed by periods, as
list markers:</p>
+
<pre><code>1. Red
2. Green
3. Blue
</code></pre>
+
<p>Output:</p>
+
<pre><code>&lt;ol&gt;
&lt;li&gt;Red&lt;/li&gt;
&lt;li&gt;Green&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;/ol&gt;
</code></pre>
+
<p>If you put blank lines between items, you'll get <code>&lt;p&gt;</code> tags for the
list item text. You can create multi-paragraph list items by indenting
the paragraphs by 4 spaces or 1 tab:</p>
+
<pre><code>* A list item.
With multiple paragraphs.
* Another item in the list.
</code></pre>
+
<p>Output:</p>
+
<pre><code>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A list item.&lt;/p&gt;
&lt;p&gt;With multiple paragraphs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Another item in the list.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
+
<h3>Links</h3>
+
<p>Markdown supports two styles for creating links: <em>inline</em> and
<em>reference</em>. With both styles, you use square brackets to delimit the
text you want to turn into a link.</p>
+
<p>Inline-style links use parentheses immediately after the link text.
For example:</p>
+
<pre><code>This is an [example link](http://example.com/).
</code></pre>
+
<p>Output:</p>
+
<pre><code>&lt;p&gt;This is an &lt;a href="http://example.com/"&gt;
example link&lt;/a&gt;.&lt;/p&gt;
</code></pre>
+
<p>Optionally, you may include a title attribute in the parentheses:</p>
+
<pre><code>This is an [example link](http://example.com/ "With a Title").
</code></pre>
+
<p>Output:</p>
+
<pre><code>&lt;p&gt;This is an &lt;a href="http://example.com/" title="With a Title"&gt;
example link&lt;/a&gt;.&lt;/p&gt;
</code></pre>
+
<p>Reference-style links allow you to refer to your links by names, which
you define elsewhere in your document:</p>
+
<pre><code>I get 10 times more traffic from [Google][1] than from
[Yahoo][2] or [MSN][3].
@@ -173,47 +220,66 @@ you define elsewhere in your document:</p>
[2]: http://search.yahoo.com/ "Yahoo Search"
[3]: http://search.msn.com/ "MSN Search"
</code></pre>
+
<p>Output:</p>
+
<pre><code>&lt;p&gt;I get 10 times more traffic from &lt;a href="http://google.com/"
title="Google"&gt;Google&lt;/a&gt; than from &lt;a href="http://search.yahoo.com/"
title="Yahoo Search"&gt;Yahoo&lt;/a&gt; or &lt;a href="http://search.msn.com/"
title="MSN Search"&gt;MSN&lt;/a&gt;.&lt;/p&gt;
</code></pre>
+
<p>The title attribute is optional. Link names may contain letters,
numbers and spaces, but are <em>not</em> case sensitive:</p>
+
<pre><code>I start my morning with a cup of coffee and
[The New York Times][NY Times].
[ny times]: http://www.nytimes.com/
</code></pre>
+
<p>Output:</p>
+
<pre><code>&lt;p&gt;I start my morning with a cup of coffee and
&lt;a href="http://www.nytimes.com/"&gt;The New York Times&lt;/a&gt;.&lt;/p&gt;
</code></pre>
+
<h3>Images</h3>
+
<p>Image syntax is very much like link syntax.</p>
+
<p>Inline (titles are optional):</p>
+
<pre><code>![alt text](/path/to/img.jpg "Title")
</code></pre>
+
<p>Reference-style:</p>
+
<pre><code>![alt text][id]
[id]: /path/to/img.jpg "Title"
</code></pre>
+
<p>Both of the above examples produce the same output:</p>
+
<pre><code>&lt;img src="/path/to/img.jpg" alt="alt text" title="Title" /&gt;
</code></pre>
+
<h3>Code</h3>
+
<p>In a regular paragraph, you can create code span by wrapping text in
backtick quotes. Any ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> or
<code>&gt;</code>) will automatically be translated into HTML entities. This makes
it easy to use Markdown to write about HTML example code:</p>
+
<pre><code>I strongly recommend against using any `&lt;blink&gt;` tags.
I wish SmartyPants used named entities like `&amp;mdash;`
instead of decimal-encoded entites like `&amp;#8212;`.
</code></pre>
+
<p>Output:</p>
+
<pre><code>&lt;p&gt;I strongly recommend against using any
&lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;
@@ -221,10 +287,13 @@ instead of decimal-encoded entites like `&amp;#8212;`.
&lt;code&gt;&amp;amp;mdash;&lt;/code&gt; instead of decimal-encoded
entites like &lt;code&gt;&amp;amp;#8212;&lt;/code&gt;.&lt;/p&gt;
</code></pre>
+
<p>To specify an entire block of pre-formatted code, indent every line of
the block by 4 spaces or 1 tab. Just like with code spans, <code>&amp;</code>, <code>&lt;</code>,
and <code>&gt;</code> characters will be escaped automatically.</p>
+
<p>Markdown:</p>
+
<pre><code>If you want your page to validate under XHTML 1.0 Strict,
you've got to put paragraph tags in your blockquotes:
@@ -232,7 +301,9 @@ you've got to put paragraph tags in your blockquotes:
&lt;p&gt;For example.&lt;/p&gt;
&lt;/blockquote&gt;
</code></pre>
+
<p>Output:</p>
+
<pre><code>&lt;p&gt;If you want your page to validate under XHTML 1.0 Strict,
you've got to put paragraph tags in your blockquotes:&lt;/p&gt;
@@ -240,4 +311,4 @@ you've got to put paragraph tags in your blockquotes:&lt;/p&gt;
&amp;lt;p&amp;gt;For example.&amp;lt;/p&amp;gt;
&amp;lt;/blockquote&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
-</code></pre> \ No newline at end of file
+</code></pre>
diff --git a/tests/markdown-test/markdown-documentation-basics.txt b/tests/pl/Tests_2004/Markdown Documentation - Basics.text
index 486055c..2abe24a 100644
--- a/tests/markdown-test/markdown-documentation-basics.txt
+++ b/tests/pl/Tests_2004/Markdown Documentation - Basics.text
@@ -37,7 +37,7 @@ can [see the source for it by adding '.text' to the URL] [src].
A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing spaces or tabs is considered
-blank.) Normal paragraphs should not be intended with spaces or tabs.
+blank.) Normal paragraphs should not be indented with spaces or tabs.
Markdown offers two styles of headers: *Setext* and *atx*.
Setext-style headers for `<h1>` and `<h2>` are created by
diff --git a/tests/pl/Tests_2004/Markdown Documentation - Syntax.html b/tests/pl/Tests_2004/Markdown Documentation - Syntax.html
new file mode 100644
index 0000000..7847793
--- /dev/null
+++ b/tests/pl/Tests_2004/Markdown Documentation - Syntax.html
@@ -0,0 +1,942 @@
+<h1>Markdown: Syntax</h1>
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
+ <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+<ul>
+<li><a href="#overview">Overview</a>
+<ul>
+<li><a href="#philosophy">Philosophy</a></li>
+<li><a href="#html">Inline HTML</a></li>
+<li><a href="#autoescape">Automatic Escaping for Special Characters</a></li>
+</ul></li>
+<li><a href="#block">Block Elements</a>
+<ul>
+<li><a href="#p">Paragraphs and Line Breaks</a></li>
+<li><a href="#header">Headers</a></li>
+<li><a href="#blockquote">Blockquotes</a></li>
+<li><a href="#list">Lists</a></li>
+<li><a href="#precode">Code Blocks</a></li>
+<li><a href="#hr">Horizontal Rules</a></li>
+</ul></li>
+<li><a href="#span">Span Elements</a>
+<ul>
+<li><a href="#link">Links</a></li>
+<li><a href="#em">Emphasis</a></li>
+<li><a href="#code">Code</a></li>
+<li><a href="#img">Images</a></li>
+</ul></li>
+<li><a href="#misc">Miscellaneous</a>
+<ul>
+<li><a href="#backslash">Backslash Escapes</a></li>
+<li><a href="#autolink">Automatic Links</a></li>
+</ul></li>
+</ul>
+
+<p><strong>Note:</strong> This document is itself written using Markdown; you
+can <a href="/projects/markdown/syntax.text">see the source for it by adding '.text' to the URL</a>.</p>
+
+<hr />
+
+<h2 id="overview">Overview</h2>
+
+<h3 id="philosophy">Philosophy</h3>
+
+<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>
+
+<p>Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,
+<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.</p>
+
+<p>To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like *emphasis*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.</p>
+
+<h3 id="html">Inline HTML</h3>
+
+<p>Markdown's syntax is intended for one purpose: to be used as a
+format for <em>writing</em> for the web.</p>
+
+<p>Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is <em>not</em> to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.</p>
+
+<p>For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.</p>
+
+<p>The only restrictions are that block-level HTML elements -- e.g. <code>&lt;div&gt;</code>,
+<code>&lt;table&gt;</code>, <code>&lt;pre&gt;</code>, <code>&lt;p&gt;</code>, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) <code>&lt;p&gt;</code> tags around HTML block-level tags.</p>
+
+<p>For example, to add an HTML table to a Markdown article:</p>
+
+<pre><code>This is a regular paragraph.
+
+&lt;table&gt;
+ &lt;tr&gt;
+ &lt;td&gt;Foo&lt;/td&gt;
+ &lt;/tr&gt;
+&lt;/table&gt;
+
+This is another regular paragraph.
+</code></pre>
+
+<p>Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an
+HTML block.</p>
+
+<p>Span-level HTML tags -- e.g. <code>&lt;span&gt;</code>, <code>&lt;cite&gt;</code>, or <code>&lt;del&gt;</code> -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML <code>&lt;a&gt;</code> or <code>&lt;img&gt;</code> tags instead of Markdown's
+link or image syntax, go right ahead.</p>
+
+<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within
+span-level tags.</p>
+
+<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
+
+<p>In HTML, there are two characters that demand special treatment: <code>&lt;</code>
+and <code>&amp;</code>. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. <code>&amp;lt;</code>, and
+<code>&amp;amp;</code>.</p>
+
+<p>Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&amp;T', you need to write '<code>AT&amp;amp;T</code>'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:</p>
+
+<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird
+</code></pre>
+
+<p>you need to encode the URL as:</p>
+
+<pre><code>http://images.google.com/images?num=30&amp;amp;q=larry+bird
+</code></pre>
+
+<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.</p>
+
+<p>Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into <code>&amp;amp;</code>.</p>
+
+<p>So, if you want to include a copyright symbol in your article, you can write:</p>
+
+<pre><code>&amp;copy;
+</code></pre>
+
+<p>and Markdown will leave it alone. But if you write:</p>
+
+<pre><code>AT&amp;T
+</code></pre>
+
+<p>Markdown will translate it to:</p>
+
+<pre><code>AT&amp;amp;T
+</code></pre>
+
+<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:</p>
+
+<pre><code>4 &lt; 5
+</code></pre>
+
+<p>Markdown will translate it to:</p>
+
+<pre><code>4 &amp;lt; 5
+</code></pre>
+
+<p>However, inside Markdown code spans and blocks, angle brackets and
+ampersands are <em>always</em> encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single <code>&lt;</code>
+and <code>&amp;</code> in your example code needs to be escaped.)</p>
+
+<hr />
+
+<h2 id="block">Block Elements</h2>
+
+<h3 id="p">Paragraphs and Line Breaks</h3>
+
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be indented with spaces or tabs.</p>
+
+<p>The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a <code>&lt;br /&gt;</code> tag.</p>
+
+<p>When you <em>do</em> want to insert a <code>&lt;br /&gt;</code> break tag using Markdown, you
+end a line with two or more spaces, then type return.</p>
+
+<p>Yes, this takes a tad more effort to create a <code>&lt;br /&gt;</code>, but a simplistic
+"every line break is a <code>&lt;br /&gt;</code>" rule wouldn't work for Markdown.
+Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>
+work best -- and look better -- when you format them with hard breaks.</p>
+
+<h3 id="header">Headers</h3>
+
+<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>
+
+<p>Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:</p>
+
+<pre><code>This is an H1
+=============
+
+This is an H2
+-------------
+</code></pre>
+
+<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>
+
+<p>Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:</p>
+
+<pre><code># This is an H1
+
+## This is an H2
+
+###### This is an H6
+</code></pre>
+
+<p>Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :</p>
+
+<pre><code># This is an H1 #
+
+## This is an H2 ##
+
+### This is an H3 ######
+</code></pre>
+
+<h3 id="blockquote">Blockquotes</h3>
+
+<p>Markdown uses email-style <code>&gt;</code> characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a <code>&gt;</code> before every line:</p>
+
+<pre><code>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+&gt; consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+&gt; Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+&gt;
+&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+&gt; id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>Markdown allows you to be lazy and only put the <code>&gt;</code> before the first
+line of a hard-wrapped paragraph:</p>
+
+<pre><code>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of <code>&gt;</code>:</p>
+
+<pre><code>&gt; This is the first level of quoting.
+&gt;
+&gt; &gt; This is nested blockquote.
+&gt;
+&gt; Back to the first level.
+</code></pre>
+
+<p>Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:</p>
+
+<pre><code>&gt; ## This is a header.
+&gt;
+&gt; 1. This is the first list item.
+&gt; 2. This is the second list item.
+&gt;
+&gt; Here's some example code:
+&gt;
+&gt; return shell_exec("echo $input | $markdown_script");
+</code></pre>
+
+<p>Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.</p>
+
+<h3 id="list">Lists</h3>
+
+<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>
+
+<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:</p>
+
+<pre><code>* Red
+* Green
+* Blue
+</code></pre>
+
+<p>is equivalent to:</p>
+
+<pre><code>+ Red
++ Green
++ Blue
+</code></pre>
+
+<p>and:</p>
+
+<pre><code>- Red
+- Green
+- Blue
+</code></pre>
+
+<p>Ordered lists use numbers followed by periods:</p>
+
+<pre><code>1. Bird
+2. McHale
+3. Parish
+</code></pre>
+
+<p>It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:</p>
+
+<pre><code>&lt;ol&gt;
+&lt;li&gt;Bird&lt;/li&gt;
+&lt;li&gt;McHale&lt;/li&gt;
+&lt;li&gt;Parish&lt;/li&gt;
+&lt;/ol&gt;
+</code></pre>
+
+<p>If you instead wrote the list in Markdown like this:</p>
+
+<pre><code>1. Bird
+1. McHale
+1. Parish
+</code></pre>
+
+<p>or even:</p>
+
+<pre><code>3. Bird
+1. McHale
+8. Parish
+</code></pre>
+
+<p>you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.</p>
+
+<p>If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.</p>
+
+<p>List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.</p>
+
+<p>To make lists look nice, you can wrap items with hanging indents:</p>
+
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>But if you want to be lazy, you don't have to:</p>
+
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>If list items are separated by blank lines, Markdown will wrap the
+items in <code>&lt;p&gt;</code> tags in the HTML output. For example, this input:</p>
+
+<pre><code>* Bird
+* Magic
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code>&lt;ul&gt;
+&lt;li&gt;Bird&lt;/li&gt;
+&lt;li&gt;Magic&lt;/li&gt;
+&lt;/ul&gt;
+</code></pre>
+
+<p>But this:</p>
+
+<pre><code>* Bird
+
+* Magic
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code>&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Bird&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Magic&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+</code></pre>
+
+<p>List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be indented by either 4 spaces
+or one tab:</p>
+
+<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+2. Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:</p>
+
+<pre><code>* This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+only required to indent the first line. Lorem ipsum dolor
+sit amet, consectetuer adipiscing elit.
+
+* Another item in the same list.
+</code></pre>
+
+<p>To put a blockquote within a list item, the blockquote's <code>&gt;</code>
+delimiters need to be indented:</p>
+
+<pre><code>* A list item with a blockquote:
+
+ &gt; This is a blockquote
+ &gt; inside a list item.
+</code></pre>
+
+<p>To put a code block within a list item, the code block needs
+to be indented <em>twice</em> -- 8 spaces or two tabs:</p>
+
+<pre><code>* A list item with a code block:
+
+ &lt;code goes here&gt;
+</code></pre>
+
+<p>It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:</p>
+
+<pre><code>1986. What a great season.
+</code></pre>
+
+<p>In other words, a <em>number-period-space</em> sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:</p>
+
+<pre><code>1986\. What a great season.
+</code></pre>
+
+<h3 id="precode">Code Blocks</h3>
+
+<p>Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both <code>&lt;pre&gt;</code> and <code>&lt;code&gt;</code> tags.</p>
+
+<p>To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:</p>
+
+<pre><code>This is a normal paragraph:
+
+ This is a code block.
+</code></pre>
+
+<p>Markdown will generate:</p>
+
+<pre><code>&lt;p&gt;This is a normal paragraph:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;This is a code block.
+&lt;/code&gt;&lt;/pre&gt;
+</code></pre>
+
+<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:</p>
+
+<pre><code>Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code>&lt;p&gt;Here is an example of AppleScript:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;tell application "Foo"
+ beep
+end tell
+&lt;/code&gt;&lt;/pre&gt;
+</code></pre>
+
+<p>A code block continues until it reaches a line that is not indented
+(or the end of the article).</p>
+
+<p>Within a code block, ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> and <code>&gt;</code>)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:</p>
+
+<pre><code> &lt;div class="footer"&gt;
+ &amp;copy; 2004 Foo Corporation
+ &lt;/div&gt;
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code>&lt;pre&gt;&lt;code&gt;&amp;lt;div class="footer"&amp;gt;
+ &amp;amp;copy; 2004 Foo Corporation
+&amp;lt;/div&amp;gt;
+&lt;/code&gt;&lt;/pre&gt;
+</code></pre>
+
+<p>Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.</p>
+
+<h3 id="hr">Horizontal Rules</h3>
+
+<p>You can produce a horizontal rule tag (<code>&lt;hr /&gt;</code>) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:</p>
+
+<pre><code>* * *
+
+***
+
+*****
+
+- - -
+
+---------------------------------------
+
+_ _ _
+</code></pre>
+
+<hr />
+
+<h2 id="span">Span Elements</h2>
+
+<h3 id="link">Links</h3>
+
+<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>
+
+<p>In both styles, the link text is delimited by [square brackets].</p>
+
+<p>To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an <em>optional</em>
+title for the link, surrounded in quotes. For example:</p>
+
+<pre><code>This is [an example](http://example.com/ "Title") inline link.
+
+[This link](http://example.net/) has no title attribute.
+</code></pre>
+
+<p>Will produce:</p>
+
+<pre><code>&lt;p&gt;This is &lt;a href="http://example.com/" title="Title"&gt;
+an example&lt;/a&gt; inline link.&lt;/p&gt;
+
+&lt;p&gt;&lt;a href="http://example.net/"&gt;This link&lt;/a&gt; has no
+title attribute.&lt;/p&gt;
+</code></pre>
+
+<p>If you're referring to a local resource on the same server, you can
+use relative paths:</p>
+
+<pre><code>See my [About](/about/) page for details.
+</code></pre>
+
+<p>Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:</p>
+
+<pre><code>This is [an example][id] reference-style link.
+</code></pre>
+
+<p>You can optionally use a space to separate the sets of brackets:</p>
+
+<pre><code>This is [an example] [id] reference-style link.
+</code></pre>
+
+<p>Then, anywhere in the document, you define your link label like this,
+on a line by itself:</p>
+
+<pre><code>[id]: http://example.com/ "Optional Title Here"
+</code></pre>
+
+<p>That is:</p>
+
+<ul>
+<li>Square brackets containing the link identifier (optionally
+indented from the left margin using up to three spaces);</li>
+<li>followed by a colon;</li>
+<li>followed by one or more spaces (or tabs);</li>
+<li>followed by the URL for the link;</li>
+<li>optionally followed by a title attribute for the link, enclosed
+in double or single quotes.</li>
+</ul>
+
+<p>The link URL may, optionally, be surrounded by angle brackets:</p>
+
+<pre><code>[id]: &lt;http://example.com/&gt; "Optional Title Here"
+</code></pre>
+
+<p>You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:</p>
+
+<pre><code>[id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+</code></pre>
+
+<p>Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.</p>
+
+<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>
+
+<pre><code>[link text][a]
+[link text][A]
+</code></pre>
+
+<p>are equivalent.</p>
+
+<p>The <em>implicit link name</em> shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:</p>
+
+<pre><code>[Google][]
+</code></pre>
+
+<p>And then define the link:</p>
+
+<pre><code>[Google]: http://google.com/
+</code></pre>
+
+<p>Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:</p>
+
+<pre><code>Visit [Daring Fireball][] for more information.
+</code></pre>
+
+<p>And then define the link:</p>
+
+<pre><code>[Daring Fireball]: http://daringfireball.net/
+</code></pre>
+
+<p>Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.</p>
+
+<p>Here's an example of reference links in action:</p>
+
+<pre><code>I get 10 times more traffic from [Google] [1] than from
+[Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+
+<p>Using the implicit link name shortcut, you could instead write:</p>
+
+<pre><code>I get 10 times more traffic from [Google][] than from
+[Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+</code></pre>
+
+<p>Both of the above examples will produce the following HTML output:</p>
+
+<pre><code>&lt;p&gt;I get 10 times more traffic from &lt;a href="http://google.com/"
+title="Google"&gt;Google&lt;/a&gt; than from
+&lt;a href="http://search.yahoo.com/" title="Yahoo Search"&gt;Yahoo&lt;/a&gt;
+or &lt;a href="http://search.msn.com/" title="MSN Search"&gt;MSN&lt;/a&gt;.&lt;/p&gt;
+</code></pre>
+
+<p>For comparison, here is the same paragraph written using
+Markdown's inline link style:</p>
+
+<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")
+than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+[MSN](http://search.msn.com/ "MSN Search").
+</code></pre>
+
+<p>The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.</p>
+
+<p>With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.</p>
+
+<h3 id="em">Emphasis</h3>
+
+<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of
+emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an
+HTML <code>&lt;em&gt;</code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML
+<code>&lt;strong&gt;</code> tag. E.g., this input:</p>
+
+<pre><code>*single asterisks*
+
+_single underscores_
+
+**double asterisks**
+
+__double underscores__
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code>&lt;em&gt;single asterisks&lt;/em&gt;
+
+&lt;em&gt;single underscores&lt;/em&gt;
+
+&lt;strong&gt;double asterisks&lt;/strong&gt;
+
+&lt;strong&gt;double underscores&lt;/strong&gt;
+</code></pre>
+
+<p>You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.</p>
+
+<p>Emphasis can be used in the middle of a word:</p>
+
+<pre><code>un*fucking*believable
+</code></pre>
+
+<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a
+literal asterisk or underscore.</p>
+
+<p>To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:</p>
+
+<pre><code>\*this text is surrounded by literal asterisks\*
+</code></pre>
+
+<h3 id="code">Code</h3>
+
+<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:</p>
+
+<pre><code>Use the `printf()` function.
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code>&lt;p&gt;Use the &lt;code&gt;printf()&lt;/code&gt; function.&lt;/p&gt;
+</code></pre>
+
+<p>To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:</p>
+
+<pre><code>``There is a literal backtick (`) here.``
+</code></pre>
+
+<p>which will produce this:</p>
+
+<pre><code>&lt;p&gt;&lt;code&gt;There is a literal backtick (`) here.&lt;/code&gt;&lt;/p&gt;
+</code></pre>
+
+<p>The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:</p>
+
+<pre><code>A single backtick in a code span: `` ` ``
+
+A backtick-delimited string in a code span: `` `foo` ``
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code>&lt;p&gt;A single backtick in a code span: &lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
+
+&lt;p&gt;A backtick-delimited string in a code span: &lt;code&gt;`foo`&lt;/code&gt;&lt;/p&gt;
+</code></pre>
+
+<p>With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:</p>
+
+<pre><code>Please don't use any `&lt;blink&gt;` tags.
+</code></pre>
+
+<p>into:</p>
+
+<pre><code>&lt;p&gt;Please don't use any &lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;
+</code></pre>
+
+<p>You can write this:</p>
+
+<pre><code>`&amp;#8212;` is the decimal-encoded equivalent of `&amp;mdash;`.
+</code></pre>
+
+<p>to produce:</p>
+
+<pre><code>&lt;p&gt;&lt;code&gt;&amp;amp;#8212;&lt;/code&gt; is the decimal-encoded
+equivalent of &lt;code&gt;&amp;amp;mdash;&lt;/code&gt;.&lt;/p&gt;
+</code></pre>
+
+<h3 id="img">Images</h3>
+
+<p>Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.</p>
+
+<p>Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>
+
+<p>Inline image syntax looks like this:</p>
+
+<pre><code>![Alt text](/path/to/img.jpg)
+
+![Alt text](/path/to/img.jpg "Optional title")
+</code></pre>
+
+<p>That is:</p>
+
+<ul>
+<li>An exclamation mark: <code>!</code>;</li>
+<li>followed by a set of square brackets, containing the <code>alt</code>
+attribute text for the image;</li>
+<li>followed by a set of parentheses, containing the URL or path to
+the image, and an optional <code>title</code> attribute enclosed in double
+or single quotes.</li>
+</ul>
+
+<p>Reference-style image syntax looks like this:</p>
+
+<pre><code>![Alt text][id]
+</code></pre>
+
+<p>Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:</p>
+
+<pre><code>[id]: url/to/image "Optional title attribute"
+</code></pre>
+
+<p>As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML <code>&lt;img&gt;</code> tags.</p>
+
+<hr />
+
+<h2 id="misc">Miscellaneous</h2>
+
+<h3 id="autolink">Automatic Links</h3>
+
+<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>
+
+<pre><code>&lt;http://example.com/&gt;
+</code></pre>
+
+<p>Markdown will turn this into:</p>
+
+<pre><code>&lt;a href="http://example.com/"&gt;http://example.com/&lt;/a&gt;
+</code></pre>
+
+<p>Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:</p>
+
+<pre><code>&lt;address@example.com&gt;
+</code></pre>
+
+<p>into something like this:</p>
+
+<pre><code>&lt;a href="&amp;#x6D;&amp;#x61;i&amp;#x6C;&amp;#x74;&amp;#x6F;:&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;
+&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;
+&amp;#109;"&gt;&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;
+&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;&amp;#109;&lt;/a&gt;
+</code></pre>
+
+<p>which will render in a browser as a clickable link to "address@example.com".</p>
+
+<p>(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)</p>
+
+<h3 id="backslash">Backslash Escapes</h3>
+
+<p>Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML <code>&lt;em&gt;</code> tag), you can backslashes
+before the asterisks, like this:</p>
+
+<pre><code>\*literal asterisks\*
+</code></pre>
+
+<p>Markdown provides backslash escapes for the following characters:</p>
+
+<pre><code>\ backslash
+` backtick
+* asterisk
+_ underscore
+{} curly braces
+[] square brackets
+() parentheses
+# hash mark
++ plus sign
+- minus sign (hyphen)
+. dot
+! exclamation mark
+</code></pre>
diff --git a/tests/markdown-test/markdown-syntax.txt b/tests/pl/Tests_2004/Markdown Documentation - Syntax.text
index dabd75c..e0a3d1c 100644
--- a/tests/markdown-test/markdown-syntax.txt
+++ b/tests/pl/Tests_2004/Markdown Documentation - Syntax.text
@@ -186,7 +186,7 @@ and `&` in your example code needs to be escaped.)
A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing but spaces or tabs is considered
-blank.) Normal paragraphs should not be intended with spaces or tabs.
+blank.) Normal paragraphs should not be indented with spaces or tabs.
The implication of the "one or more consecutive lines of text" rule is
that Markdown supports "hard-wrapped" text paragraphs. This differs
@@ -401,7 +401,7 @@ will turn into:
</ul>
List items may consist of multiple paragraphs. Each subsequent
-paragraph in a list item must be intended by either 4 spaces
+paragraph in a list item must be indented by either 4 spaces
or one tab:
1. This is a list item with two paragraphs. Lorem ipsum dolor
diff --git a/tests/pl/Tests_2004/Nested blockquotes.html b/tests/pl/Tests_2004/Nested blockquotes.html
new file mode 100644
index 0000000..d8ec7f8
--- /dev/null
+++ b/tests/pl/Tests_2004/Nested blockquotes.html
@@ -0,0 +1,9 @@
+<blockquote>
+ <p>foo</p>
+
+ <blockquote>
+ <p>bar</p>
+ </blockquote>
+
+ <p>foo</p>
+</blockquote>
diff --git a/tests/pl/Tests_2004/Nested blockquotes.text b/tests/pl/Tests_2004/Nested blockquotes.text
new file mode 100644
index 0000000..ed3c624
--- /dev/null
+++ b/tests/pl/Tests_2004/Nested blockquotes.text
@@ -0,0 +1,5 @@
+> foo
+>
+> > bar
+>
+> foo
diff --git a/tests/pl/Tests_2004/Ordered and unordered lists.html b/tests/pl/Tests_2004/Ordered and unordered lists.html
new file mode 100644
index 0000000..ce85c3a
--- /dev/null
+++ b/tests/pl/Tests_2004/Ordered and unordered lists.html
@@ -0,0 +1,137 @@
+<h2>Unordered</h2>
+
+<p>Asterisks tight:</p>
+
+<ul>
+<li>asterisk 1</li>
+<li>asterisk 2</li>
+<li>asterisk 3</li>
+</ul>
+
+<p>Asterisks loose:</p>
+
+<ul>
+<li><p>asterisk 1</p></li>
+<li><p>asterisk 2</p></li>
+<li><p>asterisk 3</p></li>
+</ul>
+
+<hr />
+
+<p>Pluses tight:</p>
+
+<ul>
+<li>Plus 1</li>
+<li>Plus 2</li>
+<li>Plus 3</li>
+</ul>
+
+<p>Pluses loose:</p>
+
+<ul>
+<li><p>Plus 1</p></li>
+<li><p>Plus 2</p></li>
+<li><p>Plus 3</p></li>
+</ul>
+
+<hr />
+
+<p>Minuses tight:</p>
+
+<ul>
+<li>Minus 1</li>
+<li>Minus 2</li>
+<li>Minus 3</li>
+</ul>
+
+<p>Minuses loose:</p>
+
+<ul>
+<li><p>Minus 1</p></li>
+<li><p>Minus 2</p></li>
+<li><p>Minus 3</p></li>
+</ul>
+
+<h2>Ordered</h2>
+
+<p>Tight:</p>
+
+<ol>
+<li>First</li>
+<li>Second</li>
+<li>Third</li>
+</ol>
+
+<p>and:</p>
+
+<ol>
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+</ol>
+
+<p>Loose using tabs:</p>
+
+<ol>
+<li><p>First</p></li>
+<li><p>Second</p></li>
+<li><p>Third</p></li>
+</ol>
+
+<p>and using spaces:</p>
+
+<ol>
+<li><p>One</p></li>
+<li><p>Two</p></li>
+<li><p>Three</p></li>
+</ol>
+
+<p>Multiple paragraphs:</p>
+
+<ol>
+<li><p>Item 1, graf one.</p>
+
+<p>Item 2. graf two. The quick brown fox jumped over the lazy dog's
+back.</p></li>
+<li><p>Item 2.</p></li>
+<li><p>Item 3.</p></li>
+</ol>
+
+<h2>Nested</h2>
+
+<ul>
+<li>Tab
+<ul>
+<li>Tab
+<ul>
+<li>Tab</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<p>Here's another:</p>
+
+<ol>
+<li>First</li>
+<li>Second:
+<ul>
+<li>Fee</li>
+<li>Fie</li>
+<li>Foe</li>
+</ul></li>
+<li>Third</li>
+</ol>
+
+<p>Same thing but with paragraphs:</p>
+
+<ol>
+<li><p>First</p></li>
+<li><p>Second:</p>
+
+<ul>
+<li>Fee</li>
+<li>Fie</li>
+<li>Foe</li>
+</ul></li>
+<li><p>Third</p></li>
+</ol>
diff --git a/tests/pl/Tests_2004/Ordered and unordered lists.text b/tests/pl/Tests_2004/Ordered and unordered lists.text
new file mode 100644
index 0000000..621db58
--- /dev/null
+++ b/tests/pl/Tests_2004/Ordered and unordered lists.text
@@ -0,0 +1,122 @@
+## Unordered
+
+Asterisks tight:
+
+* asterisk 1
+* asterisk 2
+* asterisk 3
+
+
+Asterisks loose:
+
+* asterisk 1
+
+* asterisk 2
+
+* asterisk 3
+
+* * *
+
+Pluses tight:
+
++ Plus 1
++ Plus 2
++ Plus 3
+
+
+Pluses loose:
+
++ Plus 1
+
++ Plus 2
+
++ Plus 3
+
+* * *
+
+
+Minuses tight:
+
+- Minus 1
+- Minus 2
+- Minus 3
+
+
+Minuses loose:
+
+- Minus 1
+
+- Minus 2
+
+- Minus 3
+
+
+## Ordered
+
+Tight:
+
+1. First
+2. Second
+3. Third
+
+and:
+
+1. One
+2. Two
+3. Three
+
+
+Loose using tabs:
+
+1. First
+
+2. Second
+
+3. Third
+
+and using spaces:
+
+1. One
+
+2. Two
+
+3. Three
+
+Multiple paragraphs:
+
+1. Item 1, graf one.
+
+ Item 2. graf two. The quick brown fox jumped over the lazy dog's
+ back.
+
+2. Item 2.
+
+3. Item 3.
+
+
+
+## Nested
+
+* Tab
+ * Tab
+ * Tab
+
+Here's another:
+
+1. First
+2. Second:
+ * Fee
+ * Fie
+ * Foe
+3. Third
+
+Same thing but with paragraphs:
+
+1. First
+
+2. Second:
+ * Fee
+ * Fie
+ * Foe
+
+3. Third
diff --git a/tests/pl/Tests_2004/Strong and em together.html b/tests/pl/Tests_2004/Strong and em together.html
new file mode 100644
index 0000000..71ec78c
--- /dev/null
+++ b/tests/pl/Tests_2004/Strong and em together.html
@@ -0,0 +1,7 @@
+<p><strong><em>This is strong and em.</em></strong></p>
+
+<p>So is <strong><em>this</em></strong> word.</p>
+
+<p><strong><em>This is strong and em.</em></strong></p>
+
+<p>So is <strong><em>this</em></strong> word.</p>
diff --git a/tests/pl/Tests_2004/Strong and em together.text b/tests/pl/Tests_2004/Strong and em together.text
new file mode 100644
index 0000000..95ee690
--- /dev/null
+++ b/tests/pl/Tests_2004/Strong and em together.text
@@ -0,0 +1,7 @@
+***This is strong and em.***
+
+So is ***this*** word.
+
+___This is strong and em.___
+
+So is ___this___ word.
diff --git a/tests/pl/Tests_2004/Tabs.html b/tests/pl/Tests_2004/Tabs.html
new file mode 100644
index 0000000..3301ba8
--- /dev/null
+++ b/tests/pl/Tests_2004/Tabs.html
@@ -0,0 +1,25 @@
+<ul>
+<li><p>this is a list item
+indented with tabs</p></li>
+<li><p>this is a list item
+indented with spaces</p></li>
+</ul>
+
+<p>Code:</p>
+
+<pre><code>this code block is indented by one tab
+</code></pre>
+
+<p>And:</p>
+
+<pre><code> this code block is indented by two tabs
+</code></pre>
+
+<p>And:</p>
+
+<pre><code>+ this is an example list item
+ indented with tabs
+
++ this is an example list item
+ indented with spaces
+</code></pre>
diff --git a/tests/pl/Tests_2004/Tabs.text b/tests/pl/Tests_2004/Tabs.text
new file mode 100644
index 0000000..589d113
--- /dev/null
+++ b/tests/pl/Tests_2004/Tabs.text
@@ -0,0 +1,21 @@
++ this is a list item
+ indented with tabs
+
++ this is a list item
+ indented with spaces
+
+Code:
+
+ this code block is indented by one tab
+
+And:
+
+ this code block is indented by two tabs
+
+And:
+
+ + this is an example list item
+ indented with tabs
+
+ + this is an example list item
+ indented with spaces
diff --git a/tests/pl/Tests_2004/Tidyness.html b/tests/pl/Tests_2004/Tidyness.html
new file mode 100644
index 0000000..f2a8ce7
--- /dev/null
+++ b/tests/pl/Tests_2004/Tidyness.html
@@ -0,0 +1,8 @@
+<blockquote>
+<p>A list within a blockquote:</p>
+<ul>
+<li>asterisk 1</li>
+<li>asterisk 2</li>
+<li>asterisk 3</li>
+</ul>
+</blockquote>
diff --git a/tests/pl/Tests_2004/Tidyness.text b/tests/pl/Tests_2004/Tidyness.text
new file mode 100644
index 0000000..5f18b8d
--- /dev/null
+++ b/tests/pl/Tests_2004/Tidyness.text
@@ -0,0 +1,5 @@
+> A list within a blockquote:
+>
+> * asterisk 1
+> * asterisk 2
+> * asterisk 3
diff --git a/tests/pl/Tests_2004/Yuri-Attributes.html b/tests/pl/Tests_2004/Yuri-Attributes.html
new file mode 100644
index 0000000..057da2f
--- /dev/null
+++ b/tests/pl/Tests_2004/Yuri-Attributes.html
@@ -0,0 +1,28 @@
+
+
+<h1 id="lorem"> Lorem ipsum </h1>
+<p>Dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+ incididunt ut labore et dolore magna aliqua.
+</p>
+<ul>
+ <li><p class="first_item">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
+ nisi ut aliquip ex ea commodo consequat.
+</p>
+
+ </li>
+
+ <li><p>Duis aute irure dolor in reprehenderit in voluptate velit esse
+ cillum dolore eu fugiat nulla pariatur2. Excepteur sint occaecat
+ cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+</p>
+
+ </li>
+</ul>
+<p>Duis aute <strong type="term">irure</strong> dolor in reprehenderit in voluptate
+ velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
+ occaecat cupidatat non proident, sunt in culpa qui officia deserunt
+ mollit anim id est laborum.
+</p>
+
+
diff --git a/tests/pl/Tests_2004/Yuri-Attributes.text b/tests/pl/Tests_2004/Yuri-Attributes.text
new file mode 100644
index 0000000..8ee512d
--- /dev/null
+++ b/tests/pl/Tests_2004/Yuri-Attributes.text
@@ -0,0 +1,19 @@
+
+Lorem ipsum {@id=lorem}
+=================================
+
+Dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+incididunt ut labore et dolore magna aliqua.
+
+* Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
+ nisi ut aliquip ex ea commodo consequat.{@class=first_item}
+
+* Duis aute irure dolor in reprehenderit in voluptate velit esse
+ cillum dolore eu fugiat nulla pariatur2. Excepteur sint occaecat
+ cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+
+Duis aute **irure{@type=term}** dolor in reprehenderit in voluptate
+velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
+occaecat cupidatat non proident, sunt in culpa qui officia deserunt
+mollit anim id est laborum.
diff --git a/tests/pl/Tests_2004/Yuri-Email.html b/tests/pl/Tests_2004/Yuri-Email.html
new file mode 100644
index 0000000..bf1d149
--- /dev/null
+++ b/tests/pl/Tests_2004/Yuri-Email.html
@@ -0,0 +1,18 @@
+
+<p>Lorem ipsum <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#121;&#117;&#114;&#105;&#64;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#111;&#114;&#103;">&#121;&#117;&#114;&#105;&#64;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#111;&#114;&#103;</a>, etc.
+</p>
+<ul>
+ <li>
+ An email address in a list
+ </li>
+
+ <li>
+ <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#121;&#117;&#114;&#105;&#64;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#111;&#114;&#103;">&#121;&#117;&#114;&#105;&#64;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#111;&#114;&#103;</a>
+ </li>
+
+ <li>
+ Another item.
+ </li>
+</ul>
+
+
diff --git a/tests/pl/Tests_2004/Yuri-Email.text b/tests/pl/Tests_2004/Yuri-Email.text
new file mode 100644
index 0000000..8f9c779
--- /dev/null
+++ b/tests/pl/Tests_2004/Yuri-Email.text
@@ -0,0 +1,7 @@
+Lorem ipsum <yuri@domain.org>, etc.
+
+* An email address in a list
+* <yuri@domain.org>
+* Another item.
+
+
diff --git a/tests/pl/Tests_2004/Yuri-Footnotes.html b/tests/pl/Tests_2004/Yuri-Footnotes.html
new file mode 100644
index 0000000..cadb040
--- /dev/null
+++ b/tests/pl/Tests_2004/Yuri-Footnotes.html
@@ -0,0 +1,46 @@
+
+<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+ tempor incididunt ut labore et dolore magna aliqua<sup><a href="#fn1-903162597" id="fnr1-903162597">1</a></sup>. Ut enim ad minim
+ veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
+ commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
+ velit esse cillum dolore eu fugiat nulla pariatur<sup><a href="#fn2-903162597" id="fnr2-903162597">2</a></sup>. Excepteur sint
+ occaecat cupidatat non proident, sunt in culpa qui officia deserunt
+ mollit anim id est laborum.
+</p>
+<ul>
+ <li>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+ eiusmod tempor incididunt ut labore et dolore<sup><a href="#fn3-903162597" id="fnr3-903162597">3</a></sup> magna aliqua.
+ </li>
+</ul>
+<p>Duis aute irure dolor in reprehenderit in voluptate
+ velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
+ occaecat cupidatat non proident, sunt in culpa qui officia deserunt
+ mollit anim id est laborum.
+</p>
+
+<div class="footnote"><hr/><ol>
+ <li id="fn1-903162597">
+ Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
+ quae ab illo inventore veritatis et quasi architecto beatae vitae
+ dicta sunt explicabo.<a href="#fnr1-903162597" class="footnoteBackLink" title="Jump back to footnote 1 in the text">&#8617;</a>
+ </li>
+
+ <li id="fn2-903162597">
+ Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit
+ aut fugit, sed quia consequuntur magni dolores eos qui ratione
+ voluptatem sequi nesciunt. <p> Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,
+ consectetur, adipisci velit, sed quia non numquam eius modi
+ tempora incidunt ut labore et dolore magnam aliquam quaerat
+ voluptatem. <a href="#fnr2-903162597" class="footnoteBackLink" title="Jump back to footnote 1 in the text">&#8617;</a>
+</p>
+
+ </li>
+
+ <li id="fn3-903162597">
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco
+ laboris nisi ut aliquip ex ea commodo consequat. <a href="#fnr3-903162597" class="footnoteBackLink" title="Jump back to footnote 1 in the text">&#8617;</a>
+ </li>
+</ol>
+</div>
diff --git a/tests/pl/Tests_2004/Yuri-Footnotes.text b/tests/pl/Tests_2004/Yuri-Footnotes.text
new file mode 100644
index 0000000..16fe402
--- /dev/null
+++ b/tests/pl/Tests_2004/Yuri-Footnotes.text
@@ -0,0 +1,32 @@
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+tempor incididunt ut labore et dolore magna aliqua[^2]. Ut enim ad minim
+veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
+commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
+velit esse cillum dolore eu fugiat nulla pariatur[^1]. Excepteur sint
+occaecat cupidatat non proident, sunt in culpa qui officia deserunt
+mollit anim id est laborum.
+
+[^1]: Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit
+ aut fugit, sed quia consequuntur magni dolores eos qui ratione
+ voluptatem sequi nesciunt.
+
+ Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,
+ consectetur, adipisci velit, sed quia non numquam eius modi
+ tempora incidunt ut labore et dolore magnam aliquam quaerat
+ voluptatem.
+
+[^2]: Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
+ quae ab illo inventore veritatis et quasi architecto beatae vitae
+ dicta sunt explicabo.
+
+* Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+ eiusmod tempor incididunt ut labore et dolore[^foo] magna aliqua.
+
+[^foo]: Ut enim ad minim veniam, quis nostrud exercitation ullamco
+ laboris nisi ut aliquip ex ea commodo consequat.
+
+Duis aute irure dolor in reprehenderit in voluptate
+velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
+occaecat cupidatat non proident, sunt in culpa qui officia deserunt
+mollit anim id est laborum.
diff --git a/tests/pl/Tests_2004/Yuri-Links-in-Headers.html b/tests/pl/Tests_2004/Yuri-Links-in-Headers.html
new file mode 100644
index 0000000..6afc56e
--- /dev/null
+++ b/tests/pl/Tests_2004/Yuri-Links-in-Headers.html
@@ -0,0 +1,15 @@
+<h2>A plain header</h2>
+
+<p>Let's first have a plain header</p>
+
+<h1>An underlined header</h1>
+
+<p>(That's also useful)</p>
+
+<h1>A header with a <a href="http://www.link.com">link</a></h1>
+
+<p>First with a hash</p>
+
+<h2>Another with a <a href="http://www.link.com/">link</a></h2>
+
+<p>This time underlined</p>
diff --git a/tests/pl/Tests_2004/Yuri-Links-in-Headers.text b/tests/pl/Tests_2004/Yuri-Links-in-Headers.text
new file mode 100644
index 0000000..d06a9e1
--- /dev/null
+++ b/tests/pl/Tests_2004/Yuri-Links-in-Headers.text
@@ -0,0 +1,18 @@
+## A plain header
+
+Let's first have a plain header
+
+An underlined header
+====================
+
+(That's also useful)
+
+# A header with a [link](http://www.link.com)
+
+First with a hash
+
+Another with a [link][a]
+------------------------
+This time underlined
+
+[a]: http://www.link.com/
diff --git a/tests/pl/Tests_2007/Amps and angle encoding.html b/tests/pl/Tests_2007/Amps and angle encoding.html
new file mode 100644
index 0000000..9606860
--- /dev/null
+++ b/tests/pl/Tests_2007/Amps and angle encoding.html
@@ -0,0 +1,17 @@
+<p>AT&amp;T has an ampersand in their name.</p>
+
+<p>AT&amp;T is another way to write it.</p>
+
+<p>This &amp; that.</p>
+
+<p>4 &lt; 5.</p>
+
+<p>6 > 5.</p>
+
+<p>Here's a <a href="http://example.com/?foo=1&amp;bar=2">link</a> with an ampersand in the URL.</p>
+
+<p>Here's a link with an amersand in the link text: <a href="http://att.com/" title="AT&amp;T">AT&amp;T</a>.</p>
+
+<p>Here's an inline <a href="/script?foo=1&amp;bar=2">link</a>.</p>
+
+<p>Here's an inline <a href="/script?foo=1&amp;bar=2">link</a>.</p>
diff --git a/tests/pl/Tests_2007/Amps and angle encoding.text b/tests/pl/Tests_2007/Amps and angle encoding.text
new file mode 100644
index 0000000..0e9527f
--- /dev/null
+++ b/tests/pl/Tests_2007/Amps and angle encoding.text
@@ -0,0 +1,21 @@
+AT&T has an ampersand in their name.
+
+AT&amp;T is another way to write it.
+
+This & that.
+
+4 < 5.
+
+6 > 5.
+
+Here's a [link] [1] with an ampersand in the URL.
+
+Here's a link with an amersand in the link text: [AT&T] [2].
+
+Here's an inline [link](/script?foo=1&bar=2).
+
+Here's an inline [link](</script?foo=1&bar=2>).
+
+
+[1]: http://example.com/?foo=1&bar=2
+[2]: http://att.com/ "AT&T" \ No newline at end of file
diff --git a/tests/pl/Tests_2007/Auto links.html b/tests/pl/Tests_2007/Auto links.html
new file mode 100644
index 0000000..f8df985
--- /dev/null
+++ b/tests/pl/Tests_2007/Auto links.html
@@ -0,0 +1,18 @@
+<p>Link: <a href="http://example.com/">http://example.com/</a>.</p>
+
+<p>With an ampersand: <a href="http://example.com/?foo=1&amp;bar=2">http://example.com/?foo=1&amp;bar=2</a></p>
+
+<ul>
+<li>In a list?</li>
+<li><a href="http://example.com/">http://example.com/</a></li>
+<li>It should.</li>
+</ul>
+
+<blockquote>
+ <p>Blockquoted: <a href="http://example.com/">http://example.com/</a></p>
+</blockquote>
+
+<p>Auto-links should not occur here: <code>&lt;http://example.com/&gt;</code></p>
+
+<pre><code>or here: &lt;http://example.com/&gt;
+</code></pre>
diff --git a/tests/pl/Tests_2007/Auto links.text b/tests/pl/Tests_2007/Auto links.text
new file mode 100644
index 0000000..abbc488
--- /dev/null
+++ b/tests/pl/Tests_2007/Auto links.text
@@ -0,0 +1,13 @@
+Link: <http://example.com/>.
+
+With an ampersand: <http://example.com/?foo=1&bar=2>
+
+* In a list?
+* <http://example.com/>
+* It should.
+
+> Blockquoted: <http://example.com/>
+
+Auto-links should not occur here: `<http://example.com/>`
+
+ or here: <http://example.com/> \ No newline at end of file
diff --git a/tests/pl/Tests_2007/Backslash escapes.html b/tests/pl/Tests_2007/Backslash escapes.html
new file mode 100644
index 0000000..29870da
--- /dev/null
+++ b/tests/pl/Tests_2007/Backslash escapes.html
@@ -0,0 +1,118 @@
+<p>These should all get escaped:</p>
+
+<p>Backslash: \</p>
+
+<p>Backtick: `</p>
+
+<p>Asterisk: *</p>
+
+<p>Underscore: _</p>
+
+<p>Left brace: {</p>
+
+<p>Right brace: }</p>
+
+<p>Left bracket: [</p>
+
+<p>Right bracket: ]</p>
+
+<p>Left paren: (</p>
+
+<p>Right paren: )</p>
+
+<p>Greater-than: ></p>
+
+<p>Hash: #</p>
+
+<p>Period: .</p>
+
+<p>Bang: !</p>
+
+<p>Plus: +</p>
+
+<p>Minus: -</p>
+
+<p>These should not, because they occur within a code block:</p>
+
+<pre><code>Backslash: \\
+
+Backtick: \`
+
+Asterisk: \*
+
+Underscore: \_
+
+Left brace: \{
+
+Right brace: \}
+
+Left bracket: \[
+
+Right bracket: \]
+
+Left paren: \(
+
+Right paren: \)
+
+Greater-than: \&gt;
+
+Hash: \#
+
+Period: \.
+
+Bang: \!
+
+Plus: \+
+
+Minus: \-
+</code></pre>
+
+<p>Nor should these, which occur in code spans:</p>
+
+<p>Backslash: <code>\\</code></p>
+
+<p>Backtick: <code>\`</code></p>
+
+<p>Asterisk: <code>\*</code></p>
+
+<p>Underscore: <code>\_</code></p>
+
+<p>Left brace: <code>\{</code></p>
+
+<p>Right brace: <code>\}</code></p>
+
+<p>Left bracket: <code>\[</code></p>
+
+<p>Right bracket: <code>\]</code></p>
+
+<p>Left paren: <code>\(</code></p>
+
+<p>Right paren: <code>\)</code></p>
+
+<p>Greater-than: <code>\&gt;</code></p>
+
+<p>Hash: <code>\#</code></p>
+
+<p>Period: <code>\.</code></p>
+
+<p>Bang: <code>\!</code></p>
+
+<p>Plus: <code>\+</code></p>
+
+<p>Minus: <code>\-</code></p>
+
+
+<p>These should get escaped, even though they're matching pairs for
+other Markdown constructs:</p>
+
+<p>*asterisks*</p>
+
+<p>_underscores_</p>
+
+<p>`backticks`</p>
+
+<p>This is a code span with a literal backslash-backtick sequence: <code>\`</code></p>
+
+<p>This is a tag with unescaped backticks <span attr='`ticks`'>bar</span>.</p>
+
+<p>This is a tag with backslashes <span attr='\\backslashes\\'>bar</span>.</p>
diff --git a/tests/pl/Tests_2007/Backslash escapes.text b/tests/pl/Tests_2007/Backslash escapes.text
new file mode 100644
index 0000000..5b014cb
--- /dev/null
+++ b/tests/pl/Tests_2007/Backslash escapes.text
@@ -0,0 +1,120 @@
+These should all get escaped:
+
+Backslash: \\
+
+Backtick: \`
+
+Asterisk: \*
+
+Underscore: \_
+
+Left brace: \{
+
+Right brace: \}
+
+Left bracket: \[
+
+Right bracket: \]
+
+Left paren: \(
+
+Right paren: \)
+
+Greater-than: \>
+
+Hash: \#
+
+Period: \.
+
+Bang: \!
+
+Plus: \+
+
+Minus: \-
+
+
+
+These should not, because they occur within a code block:
+
+ Backslash: \\
+
+ Backtick: \`
+
+ Asterisk: \*
+
+ Underscore: \_
+
+ Left brace: \{
+
+ Right brace: \}
+
+ Left bracket: \[
+
+ Right bracket: \]
+
+ Left paren: \(
+
+ Right paren: \)
+
+ Greater-than: \>
+
+ Hash: \#
+
+ Period: \.
+
+ Bang: \!
+
+ Plus: \+
+
+ Minus: \-
+
+
+Nor should these, which occur in code spans:
+
+Backslash: `\\`
+
+Backtick: `` \` ``
+
+Asterisk: `\*`
+
+Underscore: `\_`
+
+Left brace: `\{`
+
+Right brace: `\}`
+
+Left bracket: `\[`
+
+Right bracket: `\]`
+
+Left paren: `\(`
+
+Right paren: `\)`
+
+Greater-than: `\>`
+
+Hash: `\#`
+
+Period: `\.`
+
+Bang: `\!`
+
+Plus: `\+`
+
+Minus: `\-`
+
+
+These should get escaped, even though they're matching pairs for
+other Markdown constructs:
+
+\*asterisks\*
+
+\_underscores\_
+
+\`backticks\`
+
+This is a code span with a literal backslash-backtick sequence: `` \` ``
+
+This is a tag with unescaped backticks <span attr='`ticks`'>bar</span>.
+
+This is a tag with backslashes <span attr='\\backslashes\\'>bar</span>.
diff --git a/tests/pl/Tests_2007/Blockquotes with code blocks.html b/tests/pl/Tests_2007/Blockquotes with code blocks.html
new file mode 100644
index 0000000..990202a
--- /dev/null
+++ b/tests/pl/Tests_2007/Blockquotes with code blocks.html
@@ -0,0 +1,15 @@
+<blockquote>
+ <p>Example:</p>
+
+<pre><code>sub status {
+ print "working";
+}
+</code></pre>
+
+ <p>Or:</p>
+
+<pre><code>sub status {
+ return "working";
+}
+</code></pre>
+</blockquote>
diff --git a/tests/pl/Tests_2007/Blockquotes with code blocks.text b/tests/pl/Tests_2007/Blockquotes with code blocks.text
new file mode 100644
index 0000000..c31d171
--- /dev/null
+++ b/tests/pl/Tests_2007/Blockquotes with code blocks.text
@@ -0,0 +1,11 @@
+> Example:
+>
+> sub status {
+> print "working";
+> }
+>
+> Or:
+>
+> sub status {
+> return "working";
+> }
diff --git a/tests/pl/Tests_2007/Code Blocks.html b/tests/pl/Tests_2007/Code Blocks.html
new file mode 100644
index 0000000..32703f5
--- /dev/null
+++ b/tests/pl/Tests_2007/Code Blocks.html
@@ -0,0 +1,18 @@
+<pre><code>code block on the first line
+</code></pre>
+
+<p>Regular text.</p>
+
+<pre><code>code block indented by spaces
+</code></pre>
+
+<p>Regular text.</p>
+
+<pre><code>the lines in this block
+all contain trailing spaces
+</code></pre>
+
+<p>Regular Text.</p>
+
+<pre><code>code block on the last line
+</code></pre>
diff --git a/tests/pl/Tests_2007/Code Blocks.text b/tests/pl/Tests_2007/Code Blocks.text
new file mode 100644
index 0000000..b54b092
--- /dev/null
+++ b/tests/pl/Tests_2007/Code Blocks.text
@@ -0,0 +1,14 @@
+ code block on the first line
+
+Regular text.
+
+ code block indented by spaces
+
+Regular text.
+
+ the lines in this block
+ all contain trailing spaces
+
+Regular Text.
+
+ code block on the last line \ No newline at end of file
diff --git a/tests/pl/Tests_2007/Code Spans.html b/tests/pl/Tests_2007/Code Spans.html
new file mode 100644
index 0000000..b057457
--- /dev/null
+++ b/tests/pl/Tests_2007/Code Spans.html
@@ -0,0 +1,5 @@
+<p><code>&lt;test a="</code> content of attribute <code>"&gt;</code></p>
+
+<p>Fix for backticks within HTML tag: <span attr='`ticks`'>like this</span></p>
+
+<p>Here's how you put <code>`backticks`</code> in a code span.</p>
diff --git a/tests/pl/Tests_2007/Code Spans.text b/tests/pl/Tests_2007/Code Spans.text
new file mode 100644
index 0000000..5c229c7
--- /dev/null
+++ b/tests/pl/Tests_2007/Code Spans.text
@@ -0,0 +1,5 @@
+`<test a="` content of attribute `">`
+
+Fix for backticks within HTML tag: <span attr='`ticks`'>like this</span>
+
+Here's how you put `` `backticks` `` in a code span. \ No newline at end of file
diff --git a/tests/pl/Tests_2007/Hard-wrapped paragraphs with list-like lines.html b/tests/pl/Tests_2007/Hard-wrapped paragraphs with list-like lines.html
new file mode 100644
index 0000000..e21ac79
--- /dev/null
+++ b/tests/pl/Tests_2007/Hard-wrapped paragraphs with list-like lines.html
@@ -0,0 +1,8 @@
+<p>In Markdown 1.0.0 and earlier. Version
+8. This line turns into a list item.
+Because a hard-wrapped line in the
+middle of a paragraph looked like a
+list item.</p>
+
+<p>Here's one with a bullet.
+* criminey.</p>
diff --git a/tests/pl/Tests_2007/Hard-wrapped paragraphs with list-like lines.text b/tests/pl/Tests_2007/Hard-wrapped paragraphs with list-like lines.text
new file mode 100644
index 0000000..f8a5b27
--- /dev/null
+++ b/tests/pl/Tests_2007/Hard-wrapped paragraphs with list-like lines.text
@@ -0,0 +1,8 @@
+In Markdown 1.0.0 and earlier. Version
+8. This line turns into a list item.
+Because a hard-wrapped line in the
+middle of a paragraph looked like a
+list item.
+
+Here's one with a bullet.
+* criminey.
diff --git a/tests/pl/Tests_2007/Horizontal rules.html b/tests/pl/Tests_2007/Horizontal rules.html
new file mode 100644
index 0000000..2dc2ab6
--- /dev/null
+++ b/tests/pl/Tests_2007/Horizontal rules.html
@@ -0,0 +1,71 @@
+<p>Dashes:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>---
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>- - -
+</code></pre>
+
+<p>Asterisks:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>***
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>* * *
+</code></pre>
+
+<p>Underscores:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>___
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>_ _ _
+</code></pre>
diff --git a/tests/pl/Tests_2007/Horizontal rules.text b/tests/pl/Tests_2007/Horizontal rules.text
new file mode 100644
index 0000000..1594bda
--- /dev/null
+++ b/tests/pl/Tests_2007/Horizontal rules.text
@@ -0,0 +1,67 @@
+Dashes:
+
+---
+
+ ---
+
+ ---
+
+ ---
+
+ ---
+
+- - -
+
+ - - -
+
+ - - -
+
+ - - -
+
+ - - -
+
+
+Asterisks:
+
+***
+
+ ***
+
+ ***
+
+ ***
+
+ ***
+
+* * *
+
+ * * *
+
+ * * *
+
+ * * *
+
+ * * *
+
+
+Underscores:
+
+___
+
+ ___
+
+ ___
+
+ ___
+
+ ___
+
+_ _ _
+
+ _ _ _
+
+ _ _ _
+
+ _ _ _
+
+ _ _ _
diff --git a/tests/pl/Tests_2007/Images.html b/tests/pl/Tests_2007/Images.html
new file mode 100644
index 0000000..217f028
--- /dev/null
+++ b/tests/pl/Tests_2007/Images.html
@@ -0,0 +1,21 @@
+<p><img src="/path/to/img.jpg" alt="Alt text" title="" /></p>
+
+<p><img src="/path/to/img.jpg" alt="Alt text" title="Optional title" /></p>
+
+<p>Inline within a paragraph: <a href="/url/">alt text</a>.</p>
+
+<p><img src="/url/" alt="alt text" title="title preceded by two spaces" /></p>
+
+<p><img src="/url/" alt="alt text" title="title has spaces afterward" /></p>
+
+<p><img src="/url/" alt="alt text" title="" /></p>
+
+<p><img src="/url/" alt="alt text" title="with a title" />.</p>
+
+<p><img src="" alt="Empty" title="" /></p>
+
+<p><img src="http://example.com/(parens).jpg" alt="this is a stupid URL" title="" /></p>
+
+<p><img src="/url/" alt="alt text" /></p>
+
+<p><img src="/url/" alt="alt text" title="Title here" /></p>
diff --git a/tests/pl/Tests_2007/Images.text b/tests/pl/Tests_2007/Images.text
new file mode 100644
index 0000000..5707590
--- /dev/null
+++ b/tests/pl/Tests_2007/Images.text
@@ -0,0 +1,26 @@
+![Alt text](/path/to/img.jpg)
+
+![Alt text](/path/to/img.jpg "Optional title")
+
+Inline within a paragraph: [alt text](/url/).
+
+![alt text](/url/ "title preceded by two spaces")
+
+![alt text](/url/ "title has spaces afterward" )
+
+![alt text](</url/>)
+
+![alt text](</url/> "with a title").
+
+![Empty]()
+
+![this is a stupid URL](http://example.com/(parens).jpg)
+
+
+![alt text][foo]
+
+ [foo]: /url/
+
+![alt text][bar]
+
+ [bar]: /url/ "Title here" \ No newline at end of file
diff --git a/tests/pl/Tests_2007/Inline HTML (Advanced).html b/tests/pl/Tests_2007/Inline HTML (Advanced).html
new file mode 100644
index 0000000..884f14c
--- /dev/null
+++ b/tests/pl/Tests_2007/Inline HTML (Advanced).html
@@ -0,0 +1,30 @@
+<p>Simple block on one line:</p>
+
+<div>foo</div>
+
+<p>And nested without indentation:</p>
+
+<div>
+<div>
+<div>
+foo
+</div>
+<div style=">"/>
+</div>
+<div>bar</div>
+</div>
+
+<p>And with attributes:</p>
+
+<div>
+ <div id="foo">
+ </div>
+</div>
+
+<p>This was broken in 1.0.2b7:</p>
+
+<div class="inlinepage">
+<div class="toggleableend">
+foo
+</div>
+</div>
diff --git a/tests/pl/Tests_2007/Inline HTML (Advanced).text b/tests/pl/Tests_2007/Inline HTML (Advanced).text
new file mode 100644
index 0000000..3633f81
--- /dev/null
+++ b/tests/pl/Tests_2007/Inline HTML (Advanced).text
@@ -0,0 +1,30 @@
+Simple block on one line:
+
+<div>foo</div>
+
+And nested without indentation:
+
+<div>
+<div>
+<div>
+foo
+</div>
+<div style=">"/>
+</div>
+<div>bar</div>
+</div>
+
+And with attributes:
+
+<div>
+ <div id="foo">
+ </div>
+</div>
+
+This was broken in 1.0.2b7:
+
+<div class="inlinepage">
+<div class="toggleableend">
+foo
+</div>
+</div>
diff --git a/tests/safe_mode/inline-html-simple.html b/tests/pl/Tests_2007/Inline HTML (Simple).html
index ad19a77..6bf78f8 100644
--- a/tests/safe_mode/inline-html-simple.html
+++ b/tests/pl/Tests_2007/Inline HTML (Simple).html
@@ -1,45 +1,72 @@
<p>Here's a simple block:</p>
-<p>&lt;div&gt;
+
+<div>
foo
-&lt;/div&gt;</p>
+</div>
+
<p>This should be a code block, though:</p>
+
<pre><code>&lt;div&gt;
foo
&lt;/div&gt;
</code></pre>
+
<p>As should this:</p>
+
<pre><code>&lt;div&gt;foo&lt;/div&gt;
</code></pre>
+
<p>Now, nested:</p>
-<p>&lt;div&gt;
- &lt;div&gt;
- &lt;div&gt;
+
+<div>
+ <div>
+ <div>
foo
- &lt;/div&gt;
- &lt;/div&gt;
-&lt;/div&gt;</p>
+ </div>
+ </div>
+</div>
+
<p>This should just be an HTML comment:</p>
-<p>&lt;!-- Comment --&gt;</p>
+
+<!-- Comment -->
+
<p>Multiline:</p>
-<p>&lt;!--
+
+<!--
Blah
Blah
---&gt;</p>
+-->
+
<p>Code block:</p>
+
<pre><code>&lt;!-- Comment --&gt;
</code></pre>
+
<p>Just plain comment, with trailing spaces on the line:</p>
-<p>&lt;!-- foo --&gt;</p>
+
+<!-- foo -->
+
<p>Code:</p>
+
<pre><code>&lt;hr /&gt;
</code></pre>
+
<p>Hr's:</p>
-<p>&lt;hr&gt;</p>
-<p>&lt;hr/&gt;</p>
-<p>&lt;hr /&gt;</p>
-<p>&lt;hr&gt;</p>
-<p>&lt;hr/&gt;</p>
-<p>&lt;hr /&gt;</p>
-<p>&lt;hr class=&quot;foo&quot; id=&quot;bar&quot; /&gt;</p>
-<p>&lt;hr class=&quot;foo&quot; id=&quot;bar&quot;/&gt;</p>
-<p>&lt;hr class=&quot;foo&quot; id=&quot;bar&quot; &gt;</p> \ No newline at end of file
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr class="foo" id="bar" />
+
+<hr class="foo" id="bar"/>
+
+<hr class="foo" id="bar" >
diff --git a/tests/safe_mode/inline-html-simple.txt b/tests/pl/Tests_2007/Inline HTML (Simple).text
index 14aa2dc..14aa2dc 100644
--- a/tests/safe_mode/inline-html-simple.txt
+++ b/tests/pl/Tests_2007/Inline HTML (Simple).text
diff --git a/tests/pl/Tests_2007/Inline HTML comments.html b/tests/pl/Tests_2007/Inline HTML comments.html
new file mode 100644
index 0000000..3f167a1
--- /dev/null
+++ b/tests/pl/Tests_2007/Inline HTML comments.html
@@ -0,0 +1,13 @@
+<p>Paragraph one.</p>
+
+<!-- This is a simple comment -->
+
+<!--
+ This is another comment.
+-->
+
+<p>Paragraph two.</p>
+
+<!-- one comment block -- -- with two comments -->
+
+<p>The end.</p>
diff --git a/tests/safe_mode/inline-html-comments.txt b/tests/pl/Tests_2007/Inline HTML comments.text
index 41d830d..41d830d 100644
--- a/tests/safe_mode/inline-html-comments.txt
+++ b/tests/pl/Tests_2007/Inline HTML comments.text
diff --git a/tests/pl/Tests_2007/Links, inline style.html b/tests/pl/Tests_2007/Links, inline style.html
new file mode 100644
index 0000000..9f351ef
--- /dev/null
+++ b/tests/pl/Tests_2007/Links, inline style.html
@@ -0,0 +1,23 @@
+<p>Just a <a href="/url/">URL</a>.</p>
+
+<p><a href="/url/" title="title">URL and title</a>.</p>
+
+<p><a href="/url/" title="title preceded by two spaces">URL and title</a>.</p>
+
+<p><a href="/url/" title="title preceded by a tab">URL and title</a>.</p>
+
+<p><a href="/url/" title="title has spaces afterward">URL and title</a>.</p>
+
+<p><a href="/url/">URL wrapped in angle brackets</a>.</p>
+
+<p><a href="/url/" title="Here's the title">URL w/ angle brackets + title</a>.</p>
+
+<p><a href="">Empty</a>.</p>
+
+<p><a href="http://en.wikipedia.org/wiki/WIMP_(computing)">With parens in the URL</a></p>
+
+<p>(With outer parens and <a href="/foo(bar)">parens in url</a>)</p>
+
+<p><a href="/foo(bar)" title="and a title">With parens in the URL</a></p>
+
+<p>(With outer parens and <a href="/foo(bar)" title="and a title">parens in url</a>)</p>
diff --git a/tests/pl/Tests_2007/Links, inline style.text b/tests/pl/Tests_2007/Links, inline style.text
new file mode 100644
index 0000000..aba9658
--- /dev/null
+++ b/tests/pl/Tests_2007/Links, inline style.text
@@ -0,0 +1,24 @@
+Just a [URL](/url/).
+
+[URL and title](/url/ "title").
+
+[URL and title](/url/ "title preceded by two spaces").
+
+[URL and title](/url/ "title preceded by a tab").
+
+[URL and title](/url/ "title has spaces afterward" ).
+
+[URL wrapped in angle brackets](</url/>).
+
+[URL w/ angle brackets + title](</url/> "Here's the title").
+
+[Empty]().
+
+[With parens in the URL](http://en.wikipedia.org/wiki/WIMP_(computing))
+
+(With outer parens and [parens in url](/foo(bar)))
+
+
+[With parens in the URL](/foo(bar) "and a title")
+
+(With outer parens and [parens in url](/foo(bar) "and a title"))
diff --git a/tests/pl/Tests_2007/Links, reference style.html b/tests/pl/Tests_2007/Links, reference style.html
new file mode 100644
index 0000000..8e70c32
--- /dev/null
+++ b/tests/pl/Tests_2007/Links, reference style.html
@@ -0,0 +1,52 @@
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
+<p>With <a href="/url/">embedded [brackets]</a>.</p>
+
+<p>Indented <a href="/url">once</a>.</p>
+
+<p>Indented <a href="/url">twice</a>.</p>
+
+<p>Indented <a href="/url">thrice</a>.</p>
+
+<p>Indented [four][] times.</p>
+
+<pre><code>[four]: /url
+</code></pre>
+
+<hr />
+
+<p><a href="foo">this</a> should work</p>
+
+<p>So should <a href="foo">this</a>.</p>
+
+<p>And <a href="foo">this</a>.</p>
+
+<p>And <a href="foo">this</a>.</p>
+
+<p>And <a href="foo">this</a>.</p>
+
+<p>But not [that] [].</p>
+
+<p>Nor [that][].</p>
+
+<p>Nor [that].</p>
+
+<p>[Something in brackets like <a href="foo">this</a> should work]</p>
+
+<p>[Same with <a href="foo">this</a>.]</p>
+
+<p>In this case, <a href="/somethingelse/">this</a> points to something else.</p>
+
+<p>Backslashing should suppress [this] and [this].</p>
+
+<hr />
+
+<p>Here's one where the <a href="/url/">link
+breaks</a> across lines.</p>
+
+<p>Here's another where the <a href="/url/">link
+breaks</a> across lines, but with a line-ending space.</p>
diff --git a/tests/pl/Tests_2007/Links, reference style.text b/tests/pl/Tests_2007/Links, reference style.text
new file mode 100644
index 0000000..341ec88
--- /dev/null
+++ b/tests/pl/Tests_2007/Links, reference style.text
@@ -0,0 +1,71 @@
+Foo [bar] [1].
+
+Foo [bar][1].
+
+Foo [bar]
+[1].
+
+[1]: /url/ "Title"
+
+
+With [embedded [brackets]] [b].
+
+
+Indented [once][].
+
+Indented [twice][].
+
+Indented [thrice][].
+
+Indented [four][] times.
+
+ [once]: /url
+
+ [twice]: /url
+
+ [thrice]: /url
+
+ [four]: /url
+
+
+[b]: /url/
+
+* * *
+
+[this] [this] should work
+
+So should [this][this].
+
+And [this] [].
+
+And [this][].
+
+And [this].
+
+But not [that] [].
+
+Nor [that][].
+
+Nor [that].
+
+[Something in brackets like [this][] should work]
+
+[Same with [this].]
+
+In this case, [this](/somethingelse/) points to something else.
+
+Backslashing should suppress \[this] and [this\].
+
+[this]: foo
+
+
+* * *
+
+Here's one where the [link
+breaks] across lines.
+
+Here's another where the [link
+breaks] across lines, but with a line-ending space.
+
+
+[link breaks]: /url/
diff --git a/tests/pl/Tests_2007/Links, shortcut references.html b/tests/pl/Tests_2007/Links, shortcut references.html
new file mode 100644
index 0000000..bf81e93
--- /dev/null
+++ b/tests/pl/Tests_2007/Links, shortcut references.html
@@ -0,0 +1,9 @@
+<p>This is the <a href="/simple">simple case</a>.</p>
+
+<p>This one has a <a href="/foo">line
+break</a>.</p>
+
+<p>This one has a <a href="/foo">line
+break</a> with a line-ending space.</p>
+
+<p><a href="/that">this</a> and the <a href="/other">other</a></p>
diff --git a/tests/pl/Tests_2007/Links, shortcut references.text b/tests/pl/Tests_2007/Links, shortcut references.text
new file mode 100644
index 0000000..8c44c98
--- /dev/null
+++ b/tests/pl/Tests_2007/Links, shortcut references.text
@@ -0,0 +1,20 @@
+This is the [simple case].
+
+[simple case]: /simple
+
+
+
+This one has a [line
+break].
+
+This one has a [line
+break] with a line-ending space.
+
+[line break]: /foo
+
+
+[this] [that] and the [other]
+
+[this]: /this
+[that]: /that
+[other]: /other
diff --git a/tests/pl/Tests_2007/Literal quotes in titles.html b/tests/pl/Tests_2007/Literal quotes in titles.html
new file mode 100644
index 0000000..611c1ac
--- /dev/null
+++ b/tests/pl/Tests_2007/Literal quotes in titles.html
@@ -0,0 +1,3 @@
+<p>Foo <a href="/url/" title="Title with &quot;quotes&quot; inside">bar</a>.</p>
+
+<p>Foo <a href="/url/" title="Title with &quot;quotes&quot; inside">bar</a>.</p>
diff --git a/tests/pl/Tests_2007/Literal quotes in titles.text b/tests/pl/Tests_2007/Literal quotes in titles.text
new file mode 100644
index 0000000..29d0e42
--- /dev/null
+++ b/tests/pl/Tests_2007/Literal quotes in titles.text
@@ -0,0 +1,7 @@
+Foo [bar][].
+
+Foo [bar](/url/ "Title with "quotes" inside").
+
+
+ [bar]: /url/ "Title with "quotes" inside"
+
diff --git a/tests/pl/Tests_2007/Markdown Documentation - Basics.html b/tests/pl/Tests_2007/Markdown Documentation - Basics.html
new file mode 100644
index 0000000..342f0c1
--- /dev/null
+++ b/tests/pl/Tests_2007/Markdown Documentation - Basics.html
@@ -0,0 +1,314 @@
+<h1>Markdown: Basics</h1>
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a class="selected" title="Markdown Basics">Basics</a></li>
+ <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+<h2>Getting the Gist of Markdown's Formatting Syntax</h2>
+
+<p>This page offers a brief overview of what it's like to use Markdown.
+The <a href="/projects/markdown/syntax" title="Markdown Syntax">syntax page</a> provides complete, detailed documentation for
+every feature, but Markdown should be very easy to pick up simply by
+looking at a few examples of it in action. The examples on this page
+are written in a before/after style, showing example syntax and the
+HTML output produced by Markdown.</p>
+
+<p>It's also helpful to simply try Markdown out; the <a href="/projects/markdown/dingus" title="Markdown Dingus">Dingus</a> is a
+web application that allows you type your own Markdown-formatted text
+and translate it to XHTML.</p>
+
+<p><strong>Note:</strong> This document is itself written using Markdown; you
+can <a href="/projects/markdown/basics.text">see the source for it by adding '.text' to the URL</a>.</p>
+
+<h2>Paragraphs, Headers, Blockquotes</h2>
+
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing spaces or tabs is considered
+blank.) Normal paragraphs should not be indented with spaces or tabs.</p>
+
+<p>Markdown offers two styles of headers: <em>Setext</em> and <em>atx</em>.
+Setext-style headers for <code>&lt;h1&gt;</code> and <code>&lt;h2&gt;</code> are created by
+"underlining" with equal signs (<code>=</code>) and hyphens (<code>-</code>), respectively.
+To create an atx-style header, you put 1-6 hash marks (<code>#</code>) at the
+beginning of the line -- the number of hashes equals the resulting
+HTML header level.</p>
+
+<p>Blockquotes are indicated using email-style '<code>&gt;</code>' angle brackets.</p>
+
+<p>Markdown:</p>
+
+<pre><code>A First Level Header
+====================
+
+A Second Level Header
+---------------------
+
+Now is the time for all good men to come to
+the aid of their country. This is just a
+regular paragraph.
+
+The quick brown fox jumped over the lazy
+dog's back.
+
+### Header 3
+
+&gt; This is a blockquote.
+&gt;
+&gt; This is the second paragraph in the blockquote.
+&gt;
+&gt; ## This is an H2 in a blockquote
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code>&lt;h1&gt;A First Level Header&lt;/h1&gt;
+
+&lt;h2&gt;A Second Level Header&lt;/h2&gt;
+
+&lt;p&gt;Now is the time for all good men to come to
+the aid of their country. This is just a
+regular paragraph.&lt;/p&gt;
+
+&lt;p&gt;The quick brown fox jumped over the lazy
+dog's back.&lt;/p&gt;
+
+&lt;h3&gt;Header 3&lt;/h3&gt;
+
+&lt;blockquote&gt;
+ &lt;p&gt;This is a blockquote.&lt;/p&gt;
+
+ &lt;p&gt;This is the second paragraph in the blockquote.&lt;/p&gt;
+
+ &lt;h2&gt;This is an H2 in a blockquote&lt;/h2&gt;
+&lt;/blockquote&gt;
+</code></pre>
+
+<h3>Phrase Emphasis</h3>
+
+<p>Markdown uses asterisks and underscores to indicate spans of emphasis.</p>
+
+<p>Markdown:</p>
+
+<pre><code>Some of these words *are emphasized*.
+Some of these words _are emphasized also_.
+
+Use two asterisks for **strong emphasis**.
+Or, if you prefer, __use two underscores instead__.
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code>&lt;p&gt;Some of these words &lt;em&gt;are emphasized&lt;/em&gt;.
+Some of these words &lt;em&gt;are emphasized also&lt;/em&gt;.&lt;/p&gt;
+
+&lt;p&gt;Use two asterisks for &lt;strong&gt;strong emphasis&lt;/strong&gt;.
+Or, if you prefer, &lt;strong&gt;use two underscores instead&lt;/strong&gt;.&lt;/p&gt;
+</code></pre>
+
+<h2>Lists</h2>
+
+<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,
+<code>+</code>, and <code>-</code>) as list markers. These three markers are
+interchangable; this:</p>
+
+<pre><code>* Candy.
+* Gum.
+* Booze.
+</code></pre>
+
+<p>this:</p>
+
+<pre><code>+ Candy.
++ Gum.
++ Booze.
+</code></pre>
+
+<p>and this:</p>
+
+<pre><code>- Candy.
+- Gum.
+- Booze.
+</code></pre>
+
+<p>all produce the same output:</p>
+
+<pre><code>&lt;ul&gt;
+&lt;li&gt;Candy.&lt;/li&gt;
+&lt;li&gt;Gum.&lt;/li&gt;
+&lt;li&gt;Booze.&lt;/li&gt;
+&lt;/ul&gt;
+</code></pre>
+
+<p>Ordered (numbered) lists use regular numbers, followed by periods, as
+list markers:</p>
+
+<pre><code>1. Red
+2. Green
+3. Blue
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code>&lt;ol&gt;
+&lt;li&gt;Red&lt;/li&gt;
+&lt;li&gt;Green&lt;/li&gt;
+&lt;li&gt;Blue&lt;/li&gt;
+&lt;/ol&gt;
+</code></pre>
+
+<p>If you put blank lines between items, you'll get <code>&lt;p&gt;</code> tags for the
+list item text. You can create multi-paragraph list items by indenting
+the paragraphs by 4 spaces or 1 tab:</p>
+
+<pre><code>* A list item.
+
+ With multiple paragraphs.
+
+* Another item in the list.
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code>&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;A list item.&lt;/p&gt;
+&lt;p&gt;With multiple paragraphs.&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Another item in the list.&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+</code></pre>
+
+<h3>Links</h3>
+
+<p>Markdown supports two styles for creating links: <em>inline</em> and
+<em>reference</em>. With both styles, you use square brackets to delimit the
+text you want to turn into a link.</p>
+
+<p>Inline-style links use parentheses immediately after the link text.
+For example:</p>
+
+<pre><code>This is an [example link](http://example.com/).
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code>&lt;p&gt;This is an &lt;a href="http://example.com/"&gt;
+example link&lt;/a&gt;.&lt;/p&gt;
+</code></pre>
+
+<p>Optionally, you may include a title attribute in the parentheses:</p>
+
+<pre><code>This is an [example link](http://example.com/ "With a Title").
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code>&lt;p&gt;This is an &lt;a href="http://example.com/" title="With a Title"&gt;
+example link&lt;/a&gt;.&lt;/p&gt;
+</code></pre>
+
+<p>Reference-style links allow you to refer to your links by names, which
+you define elsewhere in your document:</p>
+
+<pre><code>I get 10 times more traffic from [Google][1] than from
+[Yahoo][2] or [MSN][3].
+
+[1]: http://google.com/ "Google"
+[2]: http://search.yahoo.com/ "Yahoo Search"
+[3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code>&lt;p&gt;I get 10 times more traffic from &lt;a href="http://google.com/"
+title="Google"&gt;Google&lt;/a&gt; than from &lt;a href="http://search.yahoo.com/"
+title="Yahoo Search"&gt;Yahoo&lt;/a&gt; or &lt;a href="http://search.msn.com/"
+title="MSN Search"&gt;MSN&lt;/a&gt;.&lt;/p&gt;
+</code></pre>
+
+<p>The title attribute is optional. Link names may contain letters,
+numbers and spaces, but are <em>not</em> case sensitive:</p>
+
+<pre><code>I start my morning with a cup of coffee and
+[The New York Times][NY Times].
+
+[ny times]: http://www.nytimes.com/
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code>&lt;p&gt;I start my morning with a cup of coffee and
+&lt;a href="http://www.nytimes.com/"&gt;The New York Times&lt;/a&gt;.&lt;/p&gt;
+</code></pre>
+
+<h3>Images</h3>
+
+<p>Image syntax is very much like link syntax.</p>
+
+<p>Inline (titles are optional):</p>
+
+<pre><code>![alt text](/path/to/img.jpg "Title")
+</code></pre>
+
+<p>Reference-style:</p>
+
+<pre><code>![alt text][id]
+
+[id]: /path/to/img.jpg "Title"
+</code></pre>
+
+<p>Both of the above examples produce the same output:</p>
+
+<pre><code>&lt;img src="/path/to/img.jpg" alt="alt text" title="Title" /&gt;
+</code></pre>
+
+<h3>Code</h3>
+
+<p>In a regular paragraph, you can create code span by wrapping text in
+backtick quotes. Any ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> or
+<code>&gt;</code>) will automatically be translated into HTML entities. This makes
+it easy to use Markdown to write about HTML example code:</p>
+
+<pre><code>I strongly recommend against using any `&lt;blink&gt;` tags.
+
+I wish SmartyPants used named entities like `&amp;mdash;`
+instead of decimal-encoded entites like `&amp;#8212;`.
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code>&lt;p&gt;I strongly recommend against using any
+&lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;
+
+&lt;p&gt;I wish SmartyPants used named entities like
+&lt;code&gt;&amp;amp;mdash;&lt;/code&gt; instead of decimal-encoded
+entites like &lt;code&gt;&amp;amp;#8212;&lt;/code&gt;.&lt;/p&gt;
+</code></pre>
+
+<p>To specify an entire block of pre-formatted code, indent every line of
+the block by 4 spaces or 1 tab. Just like with code spans, <code>&amp;</code>, <code>&lt;</code>,
+and <code>&gt;</code> characters will be escaped automatically.</p>
+
+<p>Markdown:</p>
+
+<pre><code>If you want your page to validate under XHTML 1.0 Strict,
+you've got to put paragraph tags in your blockquotes:
+
+ &lt;blockquote&gt;
+ &lt;p&gt;For example.&lt;/p&gt;
+ &lt;/blockquote&gt;
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code>&lt;p&gt;If you want your page to validate under XHTML 1.0 Strict,
+you've got to put paragraph tags in your blockquotes:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;&amp;lt;blockquote&amp;gt;
+ &amp;lt;p&amp;gt;For example.&amp;lt;/p&amp;gt;
+&amp;lt;/blockquote&amp;gt;
+&lt;/code&gt;&lt;/pre&gt;
+</code></pre>
diff --git a/tests/pl/Tests_2007/Markdown Documentation - Basics.text b/tests/pl/Tests_2007/Markdown Documentation - Basics.text
new file mode 100644
index 0000000..2abe24a
--- /dev/null
+++ b/tests/pl/Tests_2007/Markdown Documentation - Basics.text
@@ -0,0 +1,306 @@
+Markdown: Basics
+================
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a class="selected" title="Markdown Basics">Basics</a></li>
+ <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+
+Getting the Gist of Markdown's Formatting Syntax
+------------------------------------------------
+
+This page offers a brief overview of what it's like to use Markdown.
+The [syntax page] [s] provides complete, detailed documentation for
+every feature, but Markdown should be very easy to pick up simply by
+looking at a few examples of it in action. The examples on this page
+are written in a before/after style, showing example syntax and the
+HTML output produced by Markdown.
+
+It's also helpful to simply try Markdown out; the [Dingus] [d] is a
+web application that allows you type your own Markdown-formatted text
+and translate it to XHTML.
+
+**Note:** This document is itself written using Markdown; you
+can [see the source for it by adding '.text' to the URL] [src].
+
+ [s]: /projects/markdown/syntax "Markdown Syntax"
+ [d]: /projects/markdown/dingus "Markdown Dingus"
+ [src]: /projects/markdown/basics.text
+
+
+## Paragraphs, Headers, Blockquotes ##
+
+A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing spaces or tabs is considered
+blank.) Normal paragraphs should not be indented with spaces or tabs.
+
+Markdown offers two styles of headers: *Setext* and *atx*.
+Setext-style headers for `<h1>` and `<h2>` are created by
+"underlining" with equal signs (`=`) and hyphens (`-`), respectively.
+To create an atx-style header, you put 1-6 hash marks (`#`) at the
+beginning of the line -- the number of hashes equals the resulting
+HTML header level.
+
+Blockquotes are indicated using email-style '`>`' angle brackets.
+
+Markdown:
+
+ A First Level Header
+ ====================
+
+ A Second Level Header
+ ---------------------
+
+ Now is the time for all good men to come to
+ the aid of their country. This is just a
+ regular paragraph.
+
+ The quick brown fox jumped over the lazy
+ dog's back.
+
+ ### Header 3
+
+ > This is a blockquote.
+ >
+ > This is the second paragraph in the blockquote.
+ >
+ > ## This is an H2 in a blockquote
+
+
+Output:
+
+ <h1>A First Level Header</h1>
+
+ <h2>A Second Level Header</h2>
+
+ <p>Now is the time for all good men to come to
+ the aid of their country. This is just a
+ regular paragraph.</p>
+
+ <p>The quick brown fox jumped over the lazy
+ dog's back.</p>
+
+ <h3>Header 3</h3>
+
+ <blockquote>
+ <p>This is a blockquote.</p>
+
+ <p>This is the second paragraph in the blockquote.</p>
+
+ <h2>This is an H2 in a blockquote</h2>
+ </blockquote>
+
+
+
+### Phrase Emphasis ###
+
+Markdown uses asterisks and underscores to indicate spans of emphasis.
+
+Markdown:
+
+ Some of these words *are emphasized*.
+ Some of these words _are emphasized also_.
+
+ Use two asterisks for **strong emphasis**.
+ Or, if you prefer, __use two underscores instead__.
+
+Output:
+
+ <p>Some of these words <em>are emphasized</em>.
+ Some of these words <em>are emphasized also</em>.</p>
+
+ <p>Use two asterisks for <strong>strong emphasis</strong>.
+ Or, if you prefer, <strong>use two underscores instead</strong>.</p>
+
+
+
+## Lists ##
+
+Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,
+`+`, and `-`) as list markers. These three markers are
+interchangable; this:
+
+ * Candy.
+ * Gum.
+ * Booze.
+
+this:
+
+ + Candy.
+ + Gum.
+ + Booze.
+
+and this:
+
+ - Candy.
+ - Gum.
+ - Booze.
+
+all produce the same output:
+
+ <ul>
+ <li>Candy.</li>
+ <li>Gum.</li>
+ <li>Booze.</li>
+ </ul>
+
+Ordered (numbered) lists use regular numbers, followed by periods, as
+list markers:
+
+ 1. Red
+ 2. Green
+ 3. Blue
+
+Output:
+
+ <ol>
+ <li>Red</li>
+ <li>Green</li>
+ <li>Blue</li>
+ </ol>
+
+If you put blank lines between items, you'll get `<p>` tags for the
+list item text. You can create multi-paragraph list items by indenting
+the paragraphs by 4 spaces or 1 tab:
+
+ * A list item.
+
+ With multiple paragraphs.
+
+ * Another item in the list.
+
+Output:
+
+ <ul>
+ <li><p>A list item.</p>
+ <p>With multiple paragraphs.</p></li>
+ <li><p>Another item in the list.</p></li>
+ </ul>
+
+
+
+### Links ###
+
+Markdown supports two styles for creating links: *inline* and
+*reference*. With both styles, you use square brackets to delimit the
+text you want to turn into a link.
+
+Inline-style links use parentheses immediately after the link text.
+For example:
+
+ This is an [example link](http://example.com/).
+
+Output:
+
+ <p>This is an <a href="http://example.com/">
+ example link</a>.</p>
+
+Optionally, you may include a title attribute in the parentheses:
+
+ This is an [example link](http://example.com/ "With a Title").
+
+Output:
+
+ <p>This is an <a href="http://example.com/" title="With a Title">
+ example link</a>.</p>
+
+Reference-style links allow you to refer to your links by names, which
+you define elsewhere in your document:
+
+ I get 10 times more traffic from [Google][1] than from
+ [Yahoo][2] or [MSN][3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+
+Output:
+
+ <p>I get 10 times more traffic from <a href="http://google.com/"
+ title="Google">Google</a> than from <a href="http://search.yahoo.com/"
+ title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"
+ title="MSN Search">MSN</a>.</p>
+
+The title attribute is optional. Link names may contain letters,
+numbers and spaces, but are *not* case sensitive:
+
+ I start my morning with a cup of coffee and
+ [The New York Times][NY Times].
+
+ [ny times]: http://www.nytimes.com/
+
+Output:
+
+ <p>I start my morning with a cup of coffee and
+ <a href="http://www.nytimes.com/">The New York Times</a>.</p>
+
+
+### Images ###
+
+Image syntax is very much like link syntax.
+
+Inline (titles are optional):
+
+ ![alt text](/path/to/img.jpg "Title")
+
+Reference-style:
+
+ ![alt text][id]
+
+ [id]: /path/to/img.jpg "Title"
+
+Both of the above examples produce the same output:
+
+ <img src="/path/to/img.jpg" alt="alt text" title="Title" />
+
+
+
+### Code ###
+
+In a regular paragraph, you can create code span by wrapping text in
+backtick quotes. Any ampersands (`&`) and angle brackets (`<` or
+`>`) will automatically be translated into HTML entities. This makes
+it easy to use Markdown to write about HTML example code:
+
+ I strongly recommend against using any `<blink>` tags.
+
+ I wish SmartyPants used named entities like `&mdash;`
+ instead of decimal-encoded entites like `&#8212;`.
+
+Output:
+
+ <p>I strongly recommend against using any
+ <code>&lt;blink&gt;</code> tags.</p>
+
+ <p>I wish SmartyPants used named entities like
+ <code>&amp;mdash;</code> instead of decimal-encoded
+ entites like <code>&amp;#8212;</code>.</p>
+
+
+To specify an entire block of pre-formatted code, indent every line of
+the block by 4 spaces or 1 tab. Just like with code spans, `&`, `<`,
+and `>` characters will be escaped automatically.
+
+Markdown:
+
+ If you want your page to validate under XHTML 1.0 Strict,
+ you've got to put paragraph tags in your blockquotes:
+
+ <blockquote>
+ <p>For example.</p>
+ </blockquote>
+
+Output:
+
+ <p>If you want your page to validate under XHTML 1.0 Strict,
+ you've got to put paragraph tags in your blockquotes:</p>
+
+ <pre><code>&lt;blockquote&gt;
+ &lt;p&gt;For example.&lt;/p&gt;
+ &lt;/blockquote&gt;
+ </code></pre>
diff --git a/tests/pl/Tests_2007/Markdown Documentation - Syntax.html b/tests/pl/Tests_2007/Markdown Documentation - Syntax.html
new file mode 100644
index 0000000..7847793
--- /dev/null
+++ b/tests/pl/Tests_2007/Markdown Documentation - Syntax.html
@@ -0,0 +1,942 @@
+<h1>Markdown: Syntax</h1>
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
+ <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+<ul>
+<li><a href="#overview">Overview</a>
+<ul>
+<li><a href="#philosophy">Philosophy</a></li>
+<li><a href="#html">Inline HTML</a></li>
+<li><a href="#autoescape">Automatic Escaping for Special Characters</a></li>
+</ul></li>
+<li><a href="#block">Block Elements</a>
+<ul>
+<li><a href="#p">Paragraphs and Line Breaks</a></li>
+<li><a href="#header">Headers</a></li>
+<li><a href="#blockquote">Blockquotes</a></li>
+<li><a href="#list">Lists</a></li>
+<li><a href="#precode">Code Blocks</a></li>
+<li><a href="#hr">Horizontal Rules</a></li>
+</ul></li>
+<li><a href="#span">Span Elements</a>
+<ul>
+<li><a href="#link">Links</a></li>
+<li><a href="#em">Emphasis</a></li>
+<li><a href="#code">Code</a></li>
+<li><a href="#img">Images</a></li>
+</ul></li>
+<li><a href="#misc">Miscellaneous</a>
+<ul>
+<li><a href="#backslash">Backslash Escapes</a></li>
+<li><a href="#autolink">Automatic Links</a></li>
+</ul></li>
+</ul>
+
+<p><strong>Note:</strong> This document is itself written using Markdown; you
+can <a href="/projects/markdown/syntax.text">see the source for it by adding '.text' to the URL</a>.</p>
+
+<hr />
+
+<h2 id="overview">Overview</h2>
+
+<h3 id="philosophy">Philosophy</h3>
+
+<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>
+
+<p>Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,
+<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.</p>
+
+<p>To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like *emphasis*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.</p>
+
+<h3 id="html">Inline HTML</h3>
+
+<p>Markdown's syntax is intended for one purpose: to be used as a
+format for <em>writing</em> for the web.</p>
+
+<p>Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is <em>not</em> to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.</p>
+
+<p>For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.</p>
+
+<p>The only restrictions are that block-level HTML elements -- e.g. <code>&lt;div&gt;</code>,
+<code>&lt;table&gt;</code>, <code>&lt;pre&gt;</code>, <code>&lt;p&gt;</code>, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) <code>&lt;p&gt;</code> tags around HTML block-level tags.</p>
+
+<p>For example, to add an HTML table to a Markdown article:</p>
+
+<pre><code>This is a regular paragraph.
+
+&lt;table&gt;
+ &lt;tr&gt;
+ &lt;td&gt;Foo&lt;/td&gt;
+ &lt;/tr&gt;
+&lt;/table&gt;
+
+This is another regular paragraph.
+</code></pre>
+
+<p>Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an
+HTML block.</p>
+
+<p>Span-level HTML tags -- e.g. <code>&lt;span&gt;</code>, <code>&lt;cite&gt;</code>, or <code>&lt;del&gt;</code> -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML <code>&lt;a&gt;</code> or <code>&lt;img&gt;</code> tags instead of Markdown's
+link or image syntax, go right ahead.</p>
+
+<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within
+span-level tags.</p>
+
+<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
+
+<p>In HTML, there are two characters that demand special treatment: <code>&lt;</code>
+and <code>&amp;</code>. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. <code>&amp;lt;</code>, and
+<code>&amp;amp;</code>.</p>
+
+<p>Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&amp;T', you need to write '<code>AT&amp;amp;T</code>'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:</p>
+
+<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird
+</code></pre>
+
+<p>you need to encode the URL as:</p>
+
+<pre><code>http://images.google.com/images?num=30&amp;amp;q=larry+bird
+</code></pre>
+
+<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.</p>
+
+<p>Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into <code>&amp;amp;</code>.</p>
+
+<p>So, if you want to include a copyright symbol in your article, you can write:</p>
+
+<pre><code>&amp;copy;
+</code></pre>
+
+<p>and Markdown will leave it alone. But if you write:</p>
+
+<pre><code>AT&amp;T
+</code></pre>
+
+<p>Markdown will translate it to:</p>
+
+<pre><code>AT&amp;amp;T
+</code></pre>
+
+<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:</p>
+
+<pre><code>4 &lt; 5
+</code></pre>
+
+<p>Markdown will translate it to:</p>
+
+<pre><code>4 &amp;lt; 5
+</code></pre>
+
+<p>However, inside Markdown code spans and blocks, angle brackets and
+ampersands are <em>always</em> encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single <code>&lt;</code>
+and <code>&amp;</code> in your example code needs to be escaped.)</p>
+
+<hr />
+
+<h2 id="block">Block Elements</h2>
+
+<h3 id="p">Paragraphs and Line Breaks</h3>
+
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be indented with spaces or tabs.</p>
+
+<p>The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a <code>&lt;br /&gt;</code> tag.</p>
+
+<p>When you <em>do</em> want to insert a <code>&lt;br /&gt;</code> break tag using Markdown, you
+end a line with two or more spaces, then type return.</p>
+
+<p>Yes, this takes a tad more effort to create a <code>&lt;br /&gt;</code>, but a simplistic
+"every line break is a <code>&lt;br /&gt;</code>" rule wouldn't work for Markdown.
+Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>
+work best -- and look better -- when you format them with hard breaks.</p>
+
+<h3 id="header">Headers</h3>
+
+<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>
+
+<p>Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:</p>
+
+<pre><code>This is an H1
+=============
+
+This is an H2
+-------------
+</code></pre>
+
+<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>
+
+<p>Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:</p>
+
+<pre><code># This is an H1
+
+## This is an H2
+
+###### This is an H6
+</code></pre>
+
+<p>Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :</p>
+
+<pre><code># This is an H1 #
+
+## This is an H2 ##
+
+### This is an H3 ######
+</code></pre>
+
+<h3 id="blockquote">Blockquotes</h3>
+
+<p>Markdown uses email-style <code>&gt;</code> characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a <code>&gt;</code> before every line:</p>
+
+<pre><code>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+&gt; consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+&gt; Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+&gt;
+&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+&gt; id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>Markdown allows you to be lazy and only put the <code>&gt;</code> before the first
+line of a hard-wrapped paragraph:</p>
+
+<pre><code>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of <code>&gt;</code>:</p>
+
+<pre><code>&gt; This is the first level of quoting.
+&gt;
+&gt; &gt; This is nested blockquote.
+&gt;
+&gt; Back to the first level.
+</code></pre>
+
+<p>Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:</p>
+
+<pre><code>&gt; ## This is a header.
+&gt;
+&gt; 1. This is the first list item.
+&gt; 2. This is the second list item.
+&gt;
+&gt; Here's some example code:
+&gt;
+&gt; return shell_exec("echo $input | $markdown_script");
+</code></pre>
+
+<p>Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.</p>
+
+<h3 id="list">Lists</h3>
+
+<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>
+
+<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:</p>
+
+<pre><code>* Red
+* Green
+* Blue
+</code></pre>
+
+<p>is equivalent to:</p>
+
+<pre><code>+ Red
++ Green
++ Blue
+</code></pre>
+
+<p>and:</p>
+
+<pre><code>- Red
+- Green
+- Blue
+</code></pre>
+
+<p>Ordered lists use numbers followed by periods:</p>
+
+<pre><code>1. Bird
+2. McHale
+3. Parish
+</code></pre>
+
+<p>It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:</p>
+
+<pre><code>&lt;ol&gt;
+&lt;li&gt;Bird&lt;/li&gt;
+&lt;li&gt;McHale&lt;/li&gt;
+&lt;li&gt;Parish&lt;/li&gt;
+&lt;/ol&gt;
+</code></pre>
+
+<p>If you instead wrote the list in Markdown like this:</p>
+
+<pre><code>1. Bird
+1. McHale
+1. Parish
+</code></pre>
+
+<p>or even:</p>
+
+<pre><code>3. Bird
+1. McHale
+8. Parish
+</code></pre>
+
+<p>you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.</p>
+
+<p>If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.</p>
+
+<p>List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.</p>
+
+<p>To make lists look nice, you can wrap items with hanging indents:</p>
+
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>But if you want to be lazy, you don't have to:</p>
+
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>If list items are separated by blank lines, Markdown will wrap the
+items in <code>&lt;p&gt;</code> tags in the HTML output. For example, this input:</p>
+
+<pre><code>* Bird
+* Magic
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code>&lt;ul&gt;
+&lt;li&gt;Bird&lt;/li&gt;
+&lt;li&gt;Magic&lt;/li&gt;
+&lt;/ul&gt;
+</code></pre>
+
+<p>But this:</p>
+
+<pre><code>* Bird
+
+* Magic
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code>&lt;ul&gt;
+&lt;li&gt;&lt;p&gt;Bird&lt;/p&gt;&lt;/li&gt;
+&lt;li&gt;&lt;p&gt;Magic&lt;/p&gt;&lt;/li&gt;
+&lt;/ul&gt;
+</code></pre>
+
+<p>List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be indented by either 4 spaces
+or one tab:</p>
+
+<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+2. Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:</p>
+
+<pre><code>* This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+only required to indent the first line. Lorem ipsum dolor
+sit amet, consectetuer adipiscing elit.
+
+* Another item in the same list.
+</code></pre>
+
+<p>To put a blockquote within a list item, the blockquote's <code>&gt;</code>
+delimiters need to be indented:</p>
+
+<pre><code>* A list item with a blockquote:
+
+ &gt; This is a blockquote
+ &gt; inside a list item.
+</code></pre>
+
+<p>To put a code block within a list item, the code block needs
+to be indented <em>twice</em> -- 8 spaces or two tabs:</p>
+
+<pre><code>* A list item with a code block:
+
+ &lt;code goes here&gt;
+</code></pre>
+
+<p>It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:</p>
+
+<pre><code>1986. What a great season.
+</code></pre>
+
+<p>In other words, a <em>number-period-space</em> sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:</p>
+
+<pre><code>1986\. What a great season.
+</code></pre>
+
+<h3 id="precode">Code Blocks</h3>
+
+<p>Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both <code>&lt;pre&gt;</code> and <code>&lt;code&gt;</code> tags.</p>
+
+<p>To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:</p>
+
+<pre><code>This is a normal paragraph:
+
+ This is a code block.
+</code></pre>
+
+<p>Markdown will generate:</p>
+
+<pre><code>&lt;p&gt;This is a normal paragraph:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;This is a code block.
+&lt;/code&gt;&lt;/pre&gt;
+</code></pre>
+
+<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:</p>
+
+<pre><code>Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code>&lt;p&gt;Here is an example of AppleScript:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code&gt;tell application "Foo"
+ beep
+end tell
+&lt;/code&gt;&lt;/pre&gt;
+</code></pre>
+
+<p>A code block continues until it reaches a line that is not indented
+(or the end of the article).</p>
+
+<p>Within a code block, ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> and <code>&gt;</code>)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:</p>
+
+<pre><code> &lt;div class="footer"&gt;
+ &amp;copy; 2004 Foo Corporation
+ &lt;/div&gt;
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code>&lt;pre&gt;&lt;code&gt;&amp;lt;div class="footer"&amp;gt;
+ &amp;amp;copy; 2004 Foo Corporation
+&amp;lt;/div&amp;gt;
+&lt;/code&gt;&lt;/pre&gt;
+</code></pre>
+
+<p>Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.</p>
+
+<h3 id="hr">Horizontal Rules</h3>
+
+<p>You can produce a horizontal rule tag (<code>&lt;hr /&gt;</code>) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:</p>
+
+<pre><code>* * *
+
+***
+
+*****
+
+- - -
+
+---------------------------------------
+
+_ _ _
+</code></pre>
+
+<hr />
+
+<h2 id="span">Span Elements</h2>
+
+<h3 id="link">Links</h3>
+
+<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>
+
+<p>In both styles, the link text is delimited by [square brackets].</p>
+
+<p>To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an <em>optional</em>
+title for the link, surrounded in quotes. For example:</p>
+
+<pre><code>This is [an example](http://example.com/ "Title") inline link.
+
+[This link](http://example.net/) has no title attribute.
+</code></pre>
+
+<p>Will produce:</p>
+
+<pre><code>&lt;p&gt;This is &lt;a href="http://example.com/" title="Title"&gt;
+an example&lt;/a&gt; inline link.&lt;/p&gt;
+
+&lt;p&gt;&lt;a href="http://example.net/"&gt;This link&lt;/a&gt; has no
+title attribute.&lt;/p&gt;
+</code></pre>
+
+<p>If you're referring to a local resource on the same server, you can
+use relative paths:</p>
+
+<pre><code>See my [About](/about/) page for details.
+</code></pre>
+
+<p>Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:</p>
+
+<pre><code>This is [an example][id] reference-style link.
+</code></pre>
+
+<p>You can optionally use a space to separate the sets of brackets:</p>
+
+<pre><code>This is [an example] [id] reference-style link.
+</code></pre>
+
+<p>Then, anywhere in the document, you define your link label like this,
+on a line by itself:</p>
+
+<pre><code>[id]: http://example.com/ "Optional Title Here"
+</code></pre>
+
+<p>That is:</p>
+
+<ul>
+<li>Square brackets containing the link identifier (optionally
+indented from the left margin using up to three spaces);</li>
+<li>followed by a colon;</li>
+<li>followed by one or more spaces (or tabs);</li>
+<li>followed by the URL for the link;</li>
+<li>optionally followed by a title attribute for the link, enclosed
+in double or single quotes.</li>
+</ul>
+
+<p>The link URL may, optionally, be surrounded by angle brackets:</p>
+
+<pre><code>[id]: &lt;http://example.com/&gt; "Optional Title Here"
+</code></pre>
+
+<p>You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:</p>
+
+<pre><code>[id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+</code></pre>
+
+<p>Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.</p>
+
+<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>
+
+<pre><code>[link text][a]
+[link text][A]
+</code></pre>
+
+<p>are equivalent.</p>
+
+<p>The <em>implicit link name</em> shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:</p>
+
+<pre><code>[Google][]
+</code></pre>
+
+<p>And then define the link:</p>
+
+<pre><code>[Google]: http://google.com/
+</code></pre>
+
+<p>Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:</p>
+
+<pre><code>Visit [Daring Fireball][] for more information.
+</code></pre>
+
+<p>And then define the link:</p>
+
+<pre><code>[Daring Fireball]: http://daringfireball.net/
+</code></pre>
+
+<p>Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.</p>
+
+<p>Here's an example of reference links in action:</p>
+
+<pre><code>I get 10 times more traffic from [Google] [1] than from
+[Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+
+<p>Using the implicit link name shortcut, you could instead write:</p>
+
+<pre><code>I get 10 times more traffic from [Google][] than from
+[Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+</code></pre>
+
+<p>Both of the above examples will produce the following HTML output:</p>
+
+<pre><code>&lt;p&gt;I get 10 times more traffic from &lt;a href="http://google.com/"
+title="Google"&gt;Google&lt;/a&gt; than from
+&lt;a href="http://search.yahoo.com/" title="Yahoo Search"&gt;Yahoo&lt;/a&gt;
+or &lt;a href="http://search.msn.com/" title="MSN Search"&gt;MSN&lt;/a&gt;.&lt;/p&gt;
+</code></pre>
+
+<p>For comparison, here is the same paragraph written using
+Markdown's inline link style:</p>
+
+<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")
+than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+[MSN](http://search.msn.com/ "MSN Search").
+</code></pre>
+
+<p>The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.</p>
+
+<p>With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.</p>
+
+<h3 id="em">Emphasis</h3>
+
+<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of
+emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an
+HTML <code>&lt;em&gt;</code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML
+<code>&lt;strong&gt;</code> tag. E.g., this input:</p>
+
+<pre><code>*single asterisks*
+
+_single underscores_
+
+**double asterisks**
+
+__double underscores__
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code>&lt;em&gt;single asterisks&lt;/em&gt;
+
+&lt;em&gt;single underscores&lt;/em&gt;
+
+&lt;strong&gt;double asterisks&lt;/strong&gt;
+
+&lt;strong&gt;double underscores&lt;/strong&gt;
+</code></pre>
+
+<p>You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.</p>
+
+<p>Emphasis can be used in the middle of a word:</p>
+
+<pre><code>un*fucking*believable
+</code></pre>
+
+<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a
+literal asterisk or underscore.</p>
+
+<p>To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:</p>
+
+<pre><code>\*this text is surrounded by literal asterisks\*
+</code></pre>
+
+<h3 id="code">Code</h3>
+
+<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:</p>
+
+<pre><code>Use the `printf()` function.
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code>&lt;p&gt;Use the &lt;code&gt;printf()&lt;/code&gt; function.&lt;/p&gt;
+</code></pre>
+
+<p>To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:</p>
+
+<pre><code>``There is a literal backtick (`) here.``
+</code></pre>
+
+<p>which will produce this:</p>
+
+<pre><code>&lt;p&gt;&lt;code&gt;There is a literal backtick (`) here.&lt;/code&gt;&lt;/p&gt;
+</code></pre>
+
+<p>The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:</p>
+
+<pre><code>A single backtick in a code span: `` ` ``
+
+A backtick-delimited string in a code span: `` `foo` ``
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code>&lt;p&gt;A single backtick in a code span: &lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
+
+&lt;p&gt;A backtick-delimited string in a code span: &lt;code&gt;`foo`&lt;/code&gt;&lt;/p&gt;
+</code></pre>
+
+<p>With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:</p>
+
+<pre><code>Please don't use any `&lt;blink&gt;` tags.
+</code></pre>
+
+<p>into:</p>
+
+<pre><code>&lt;p&gt;Please don't use any &lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;
+</code></pre>
+
+<p>You can write this:</p>
+
+<pre><code>`&amp;#8212;` is the decimal-encoded equivalent of `&amp;mdash;`.
+</code></pre>
+
+<p>to produce:</p>
+
+<pre><code>&lt;p&gt;&lt;code&gt;&amp;amp;#8212;&lt;/code&gt; is the decimal-encoded
+equivalent of &lt;code&gt;&amp;amp;mdash;&lt;/code&gt;.&lt;/p&gt;
+</code></pre>
+
+<h3 id="img">Images</h3>
+
+<p>Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.</p>
+
+<p>Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>
+
+<p>Inline image syntax looks like this:</p>
+
+<pre><code>![Alt text](/path/to/img.jpg)
+
+![Alt text](/path/to/img.jpg "Optional title")
+</code></pre>
+
+<p>That is:</p>
+
+<ul>
+<li>An exclamation mark: <code>!</code>;</li>
+<li>followed by a set of square brackets, containing the <code>alt</code>
+attribute text for the image;</li>
+<li>followed by a set of parentheses, containing the URL or path to
+the image, and an optional <code>title</code> attribute enclosed in double
+or single quotes.</li>
+</ul>
+
+<p>Reference-style image syntax looks like this:</p>
+
+<pre><code>![Alt text][id]
+</code></pre>
+
+<p>Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:</p>
+
+<pre><code>[id]: url/to/image "Optional title attribute"
+</code></pre>
+
+<p>As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML <code>&lt;img&gt;</code> tags.</p>
+
+<hr />
+
+<h2 id="misc">Miscellaneous</h2>
+
+<h3 id="autolink">Automatic Links</h3>
+
+<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>
+
+<pre><code>&lt;http://example.com/&gt;
+</code></pre>
+
+<p>Markdown will turn this into:</p>
+
+<pre><code>&lt;a href="http://example.com/"&gt;http://example.com/&lt;/a&gt;
+</code></pre>
+
+<p>Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:</p>
+
+<pre><code>&lt;address@example.com&gt;
+</code></pre>
+
+<p>into something like this:</p>
+
+<pre><code>&lt;a href="&amp;#x6D;&amp;#x61;i&amp;#x6C;&amp;#x74;&amp;#x6F;:&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;
+&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;
+&amp;#109;"&gt;&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;
+&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;&amp;#109;&lt;/a&gt;
+</code></pre>
+
+<p>which will render in a browser as a clickable link to "address@example.com".</p>
+
+<p>(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)</p>
+
+<h3 id="backslash">Backslash Escapes</h3>
+
+<p>Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML <code>&lt;em&gt;</code> tag), you can backslashes
+before the asterisks, like this:</p>
+
+<pre><code>\*literal asterisks\*
+</code></pre>
+
+<p>Markdown provides backslash escapes for the following characters:</p>
+
+<pre><code>\ backslash
+` backtick
+* asterisk
+_ underscore
+{} curly braces
+[] square brackets
+() parentheses
+# hash mark
++ plus sign
+- minus sign (hyphen)
+. dot
+! exclamation mark
+</code></pre>
diff --git a/tests/pl/Tests_2007/Markdown Documentation - Syntax.text b/tests/pl/Tests_2007/Markdown Documentation - Syntax.text
new file mode 100644
index 0000000..f175fa9
--- /dev/null
+++ b/tests/pl/Tests_2007/Markdown Documentation - Syntax.text
@@ -0,0 +1,888 @@
+Markdown: Syntax
+================
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
+ <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+
+* [Overview](#overview)
+ * [Philosophy](#philosophy)
+ * [Inline HTML](#html)
+ * [Automatic Escaping for Special Characters](#autoescape)
+* [Block Elements](#block)
+ * [Paragraphs and Line Breaks](#p)
+ * [Headers](#header)
+ * [Blockquotes](#blockquote)
+ * [Lists](#list)
+ * [Code Blocks](#precode)
+ * [Horizontal Rules](#hr)
+* [Span Elements](#span)
+ * [Links](#link)
+ * [Emphasis](#em)
+ * [Code](#code)
+ * [Images](#img)
+* [Miscellaneous](#misc)
+ * [Backslash Escapes](#backslash)
+ * [Automatic Links](#autolink)
+
+
+**Note:** This document is itself written using Markdown; you
+can [see the source for it by adding '.text' to the URL][src].
+
+ [src]: /projects/markdown/syntax.text
+
+* * *
+
+<h2 id="overview">Overview</h2>
+
+<h3 id="philosophy">Philosophy</h3>
+
+Markdown is intended to be as easy-to-read and easy-to-write as is feasible.
+
+Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4],
+[Grutatext] [5], and [EtText] [6] -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.
+
+ [1]: http://docutils.sourceforge.net/mirror/setext.html
+ [2]: http://www.aaronsw.com/2002/atx/
+ [3]: http://textism.com/tools/textile/
+ [4]: http://docutils.sourceforge.net/rst.html
+ [5]: http://www.triptico.com/software/grutatxt.html
+ [6]: http://ettext.taint.org/doc/
+
+To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like \*emphasis\*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.
+
+
+
+<h3 id="html">Inline HTML</h3>
+
+Markdown's syntax is intended for one purpose: to be used as a
+format for *writing* for the web.
+
+Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is *not* to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a *publishing* format; Markdown is a *writing*
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.
+
+For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.
+
+The only restrictions are that block-level HTML elements -- e.g. `<div>`,
+`<table>`, `<pre>`, `<p>`, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) `<p>` tags around HTML block-level tags.
+
+For example, to add an HTML table to a Markdown article:
+
+ This is a regular paragraph.
+
+ <table>
+ <tr>
+ <td>Foo</td>
+ </tr>
+ </table>
+
+ This is another regular paragraph.
+
+Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an
+HTML block.
+
+Span-level HTML tags -- e.g. `<span>`, `<cite>`, or `<del>` -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML `<a>` or `<img>` tags instead of Markdown's
+link or image syntax, go right ahead.
+
+Unlike block-level HTML tags, Markdown syntax *is* processed within
+span-level tags.
+
+
+<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
+
+In HTML, there are two characters that demand special treatment: `<`
+and `&`. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. `&lt;`, and
+`&amp;`.
+
+Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&T', you need to write '`AT&amp;T`'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:
+
+ http://images.google.com/images?num=30&q=larry+bird
+
+you need to encode the URL as:
+
+ http://images.google.com/images?num=30&amp;q=larry+bird
+
+in your anchor tag `href` attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.
+
+Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into `&amp;`.
+
+So, if you want to include a copyright symbol in your article, you can write:
+
+ &copy;
+
+and Markdown will leave it alone. But if you write:
+
+ AT&T
+
+Markdown will translate it to:
+
+ AT&amp;T
+
+Similarly, because Markdown supports [inline HTML](#html), if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:
+
+ 4 < 5
+
+Markdown will translate it to:
+
+ 4 &lt; 5
+
+However, inside Markdown code spans and blocks, angle brackets and
+ampersands are *always* encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single `<`
+and `&` in your example code needs to be escaped.)
+
+
+* * *
+
+
+<h2 id="block">Block Elements</h2>
+
+
+<h3 id="p">Paragraphs and Line Breaks</h3>
+
+A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be indented with spaces or tabs.
+
+The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a `<br />` tag.
+
+When you *do* want to insert a `<br />` break tag using Markdown, you
+end a line with two or more spaces, then type return.
+
+Yes, this takes a tad more effort to create a `<br />`, but a simplistic
+"every line break is a `<br />`" rule wouldn't work for Markdown.
+Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l]
+work best -- and look better -- when you format them with hard breaks.
+
+ [bq]: #blockquote
+ [l]: #list
+
+
+
+<h3 id="header">Headers</h3>
+
+Markdown supports two styles of headers, [Setext] [1] and [atx] [2].
+
+Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:
+
+ This is an H1
+ =============
+
+ This is an H2
+ -------------
+
+Any number of underlining `=`'s or `-`'s will work.
+
+Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:
+
+ # This is an H1
+
+ ## This is an H2
+
+ ###### This is an H6
+
+Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :
+
+ # This is an H1 #
+
+ ## This is an H2 ##
+
+ ### This is an H3 ######
+
+
+<h3 id="blockquote">Blockquotes</h3>
+
+Markdown uses email-style `>` characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a `>` before every line:
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+ >
+ > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ > id sem consectetuer libero luctus adipiscing.
+
+Markdown allows you to be lazy and only put the `>` before the first
+line of a hard-wrapped paragraph:
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+ > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ id sem consectetuer libero luctus adipiscing.
+
+Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of `>`:
+
+ > This is the first level of quoting.
+ >
+ > > This is nested blockquote.
+ >
+ > Back to the first level.
+
+Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:
+
+ > ## This is a header.
+ >
+ > 1. This is the first list item.
+ > 2. This is the second list item.
+ >
+ > Here's some example code:
+ >
+ > return shell_exec("echo $input | $markdown_script");
+
+Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.
+
+
+<h3 id="list">Lists</h3>
+
+Markdown supports ordered (numbered) and unordered (bulleted) lists.
+
+Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:
+
+ * Red
+ * Green
+ * Blue
+
+is equivalent to:
+
+ + Red
+ + Green
+ + Blue
+
+and:
+
+ - Red
+ - Green
+ - Blue
+
+Ordered lists use numbers followed by periods:
+
+ 1. Bird
+ 2. McHale
+ 3. Parish
+
+It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:
+
+ <ol>
+ <li>Bird</li>
+ <li>McHale</li>
+ <li>Parish</li>
+ </ol>
+
+If you instead wrote the list in Markdown like this:
+
+ 1. Bird
+ 1. McHale
+ 1. Parish
+
+or even:
+
+ 3. Bird
+ 1. McHale
+ 8. Parish
+
+you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.
+
+If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.
+
+List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.
+
+To make lists look nice, you can wrap items with hanging indents:
+
+ * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+ * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+But if you want to be lazy, you don't have to:
+
+ * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+ * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+If list items are separated by blank lines, Markdown will wrap the
+items in `<p>` tags in the HTML output. For example, this input:
+
+ * Bird
+ * Magic
+
+will turn into:
+
+ <ul>
+ <li>Bird</li>
+ <li>Magic</li>
+ </ul>
+
+But this:
+
+ * Bird
+
+ * Magic
+
+will turn into:
+
+ <ul>
+ <li><p>Bird</p></li>
+ <li><p>Magic</p></li>
+ </ul>
+
+List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be indented by either 4 spaces
+or one tab:
+
+ 1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+ 2. Suspendisse id sem consectetuer libero luctus adipiscing.
+
+It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:
+
+ * This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+ only required to indent the first line. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit.
+
+ * Another item in the same list.
+
+To put a blockquote within a list item, the blockquote's `>`
+delimiters need to be indented:
+
+ * A list item with a blockquote:
+
+ > This is a blockquote
+ > inside a list item.
+
+To put a code block within a list item, the code block needs
+to be indented *twice* -- 8 spaces or two tabs:
+
+ * A list item with a code block:
+
+ <code goes here>
+
+
+It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:
+
+ 1986. What a great season.
+
+In other words, a *number-period-space* sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:
+
+ 1986\. What a great season.
+
+
+
+<h3 id="precode">Code Blocks</h3>
+
+Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both `<pre>` and `<code>` tags.
+
+To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:
+
+ This is a normal paragraph:
+
+ This is a code block.
+
+Markdown will generate:
+
+ <p>This is a normal paragraph:</p>
+
+ <pre><code>This is a code block.
+ </code></pre>
+
+One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:
+
+ Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+
+will turn into:
+
+ <p>Here is an example of AppleScript:</p>
+
+ <pre><code>tell application "Foo"
+ beep
+ end tell
+ </code></pre>
+
+A code block continues until it reaches a line that is not indented
+(or the end of the article).
+
+Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:
+
+ <div class="footer">
+ &copy; 2004 Foo Corporation
+ </div>
+
+will turn into:
+
+ <pre><code>&lt;div class="footer"&gt;
+ &amp;copy; 2004 Foo Corporation
+ &lt;/div&gt;
+ </code></pre>
+
+Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.
+
+
+
+<h3 id="hr">Horizontal Rules</h3>
+
+You can produce a horizontal rule tag (`<hr />`) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:
+
+ * * *
+
+ ***
+
+ *****
+
+ - - -
+
+ ---------------------------------------
+
+ _ _ _
+
+
+* * *
+
+<h2 id="span">Span Elements</h2>
+
+<h3 id="link">Links</h3>
+
+Markdown supports two style of links: *inline* and *reference*.
+
+In both styles, the link text is delimited by [square brackets].
+
+To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an *optional*
+title for the link, surrounded in quotes. For example:
+
+ This is [an example](http://example.com/ "Title") inline link.
+
+ [This link](http://example.net/) has no title attribute.
+
+Will produce:
+
+ <p>This is <a href="http://example.com/" title="Title">
+ an example</a> inline link.</p>
+
+ <p><a href="http://example.net/">This link</a> has no
+ title attribute.</p>
+
+If you're referring to a local resource on the same server, you can
+use relative paths:
+
+ See my [About](/about/) page for details.
+
+Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:
+
+ This is [an example][id] reference-style link.
+
+You can optionally use a space to separate the sets of brackets:
+
+ This is [an example] [id] reference-style link.
+
+Then, anywhere in the document, you define your link label like this,
+on a line by itself:
+
+ [id]: http://example.com/ "Optional Title Here"
+
+That is:
+
+* Square brackets containing the link identifier (optionally
+ indented from the left margin using up to three spaces);
+* followed by a colon;
+* followed by one or more spaces (or tabs);
+* followed by the URL for the link;
+* optionally followed by a title attribute for the link, enclosed
+ in double or single quotes.
+
+The link URL may, optionally, be surrounded by angle brackets:
+
+ [id]: <http://example.com/> "Optional Title Here"
+
+You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:
+
+ [id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+
+Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.
+
+Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links:
+
+ [link text][a]
+ [link text][A]
+
+are equivalent.
+
+The *implicit link name* shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:
+
+ [Google][]
+
+And then define the link:
+
+ [Google]: http://google.com/
+
+Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:
+
+ Visit [Daring Fireball][] for more information.
+
+And then define the link:
+
+ [Daring Fireball]: http://daringfireball.net/
+
+Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.
+
+Here's an example of reference links in action:
+
+ I get 10 times more traffic from [Google] [1] than from
+ [Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+
+Using the implicit link name shortcut, you could instead write:
+
+ I get 10 times more traffic from [Google][] than from
+ [Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+
+Both of the above examples will produce the following HTML output:
+
+ <p>I get 10 times more traffic from <a href="http://google.com/"
+ title="Google">Google</a> than from
+ <a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+ or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+
+For comparison, here is the same paragraph written using
+Markdown's inline link style:
+
+ I get 10 times more traffic from [Google](http://google.com/ "Google")
+ than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+ [MSN](http://search.msn.com/ "MSN Search").
+
+The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.
+
+With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.
+
+
+<h3 id="em">Emphasis</h3>
+
+Markdown treats asterisks (`*`) and underscores (`_`) as indicators of
+emphasis. Text wrapped with one `*` or `_` will be wrapped with an
+HTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML
+`<strong>` tag. E.g., this input:
+
+ *single asterisks*
+
+ _single underscores_
+
+ **double asterisks**
+
+ __double underscores__
+
+will produce:
+
+ <em>single asterisks</em>
+
+ <em>single underscores</em>
+
+ <strong>double asterisks</strong>
+
+ <strong>double underscores</strong>
+
+You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.
+
+Emphasis can be used in the middle of a word:
+
+ un*fucking*believable
+
+But if you surround an `*` or `_` with spaces, it'll be treated as a
+literal asterisk or underscore.
+
+To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:
+
+ \*this text is surrounded by literal asterisks\*
+
+
+
+<h3 id="code">Code</h3>
+
+To indicate a span of code, wrap it with backtick quotes (`` ` ``).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:
+
+ Use the `printf()` function.
+
+will produce:
+
+ <p>Use the <code>printf()</code> function.</p>
+
+To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:
+
+ ``There is a literal backtick (`) here.``
+
+which will produce this:
+
+ <p><code>There is a literal backtick (`) here.</code></p>
+
+The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:
+
+ A single backtick in a code span: `` ` ``
+
+ A backtick-delimited string in a code span: `` `foo` ``
+
+will produce:
+
+ <p>A single backtick in a code span: <code>`</code></p>
+
+ <p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+
+With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:
+
+ Please don't use any `<blink>` tags.
+
+into:
+
+ <p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
+
+You can write this:
+
+ `&#8212;` is the decimal-encoded equivalent of `&mdash;`.
+
+to produce:
+
+ <p><code>&amp;#8212;</code> is the decimal-encoded
+ equivalent of <code>&amp;mdash;</code>.</p>
+
+
+
+<h3 id="img">Images</h3>
+
+Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.
+
+Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: *inline* and *reference*.
+
+Inline image syntax looks like this:
+
+ ![Alt text](/path/to/img.jpg)
+
+ ![Alt text](/path/to/img.jpg "Optional title")
+
+That is:
+
+* An exclamation mark: `!`;
+* followed by a set of square brackets, containing the `alt`
+ attribute text for the image;
+* followed by a set of parentheses, containing the URL or path to
+ the image, and an optional `title` attribute enclosed in double
+ or single quotes.
+
+Reference-style image syntax looks like this:
+
+ ![Alt text][id]
+
+Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:
+
+ [id]: url/to/image "Optional title attribute"
+
+As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML `<img>` tags.
+
+
+* * *
+
+
+<h2 id="misc">Miscellaneous</h2>
+
+<h3 id="autolink">Automatic Links</h3>
+
+Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:
+
+ <http://example.com/>
+
+Markdown will turn this into:
+
+ <a href="http://example.com/">http://example.com/</a>
+
+Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:
+
+ <address@example.com>
+
+into something like this:
+
+ <a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
+ &#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
+ &#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
+ &#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
+
+which will render in a browser as a clickable link to "address@example.com".
+
+(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)
+
+
+
+<h3 id="backslash">Backslash Escapes</h3>
+
+Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML `<em>` tag), you can backslashes
+before the asterisks, like this:
+
+ \*literal asterisks\*
+
+Markdown provides backslash escapes for the following characters:
+
+ \ backslash
+ ` backtick
+ * asterisk
+ _ underscore
+ {} curly braces
+ [] square brackets
+ () parentheses
+ # hash mark
+ + plus sign
+ - minus sign (hyphen)
+ . dot
+ ! exclamation mark
+
diff --git a/tests/pl/Tests_2007/Nested blockquotes.html b/tests/pl/Tests_2007/Nested blockquotes.html
new file mode 100644
index 0000000..d8ec7f8
--- /dev/null
+++ b/tests/pl/Tests_2007/Nested blockquotes.html
@@ -0,0 +1,9 @@
+<blockquote>
+ <p>foo</p>
+
+ <blockquote>
+ <p>bar</p>
+ </blockquote>
+
+ <p>foo</p>
+</blockquote>
diff --git a/tests/pl/Tests_2007/Nested blockquotes.text b/tests/pl/Tests_2007/Nested blockquotes.text
new file mode 100644
index 0000000..ed3c624
--- /dev/null
+++ b/tests/pl/Tests_2007/Nested blockquotes.text
@@ -0,0 +1,5 @@
+> foo
+>
+> > bar
+>
+> foo
diff --git a/tests/pl/Tests_2007/Ordered and unordered lists.html b/tests/pl/Tests_2007/Ordered and unordered lists.html
new file mode 100644
index 0000000..ba71eab
--- /dev/null
+++ b/tests/pl/Tests_2007/Ordered and unordered lists.html
@@ -0,0 +1,148 @@
+<h2>Unordered</h2>
+
+<p>Asterisks tight:</p>
+
+<ul>
+<li>asterisk 1</li>
+<li>asterisk 2</li>
+<li>asterisk 3</li>
+</ul>
+
+<p>Asterisks loose:</p>
+
+<ul>
+<li><p>asterisk 1</p></li>
+<li><p>asterisk 2</p></li>
+<li><p>asterisk 3</p></li>
+</ul>
+
+<hr />
+
+<p>Pluses tight:</p>
+
+<ul>
+<li>Plus 1</li>
+<li>Plus 2</li>
+<li>Plus 3</li>
+</ul>
+
+<p>Pluses loose:</p>
+
+<ul>
+<li><p>Plus 1</p></li>
+<li><p>Plus 2</p></li>
+<li><p>Plus 3</p></li>
+</ul>
+
+<hr />
+
+<p>Minuses tight:</p>
+
+<ul>
+<li>Minus 1</li>
+<li>Minus 2</li>
+<li>Minus 3</li>
+</ul>
+
+<p>Minuses loose:</p>
+
+<ul>
+<li><p>Minus 1</p></li>
+<li><p>Minus 2</p></li>
+<li><p>Minus 3</p></li>
+</ul>
+
+<h2>Ordered</h2>
+
+<p>Tight:</p>
+
+<ol>
+<li>First</li>
+<li>Second</li>
+<li>Third</li>
+</ol>
+
+<p>and:</p>
+
+<ol>
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+</ol>
+
+<p>Loose using tabs:</p>
+
+<ol>
+<li><p>First</p></li>
+<li><p>Second</p></li>
+<li><p>Third</p></li>
+</ol>
+
+<p>and using spaces:</p>
+
+<ol>
+<li><p>One</p></li>
+<li><p>Two</p></li>
+<li><p>Three</p></li>
+</ol>
+
+<p>Multiple paragraphs:</p>
+
+<ol>
+<li><p>Item 1, graf one.</p>
+
+<p>Item 2. graf two. The quick brown fox jumped over the lazy dog's
+back.</p></li>
+<li><p>Item 2.</p></li>
+<li><p>Item 3.</p></li>
+</ol>
+
+<h2>Nested</h2>
+
+<ul>
+<li>Tab
+<ul>
+<li>Tab
+<ul>
+<li>Tab</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<p>Here's another:</p>
+
+<ol>
+<li>First</li>
+<li>Second:
+<ul>
+<li>Fee</li>
+<li>Fie</li>
+<li>Foe</li>
+</ul></li>
+<li>Third</li>
+</ol>
+
+<p>Same thing but with paragraphs:</p>
+
+<ol>
+<li><p>First</p></li>
+<li><p>Second:</p>
+
+<ul>
+<li>Fee</li>
+<li>Fie</li>
+<li>Foe</li>
+</ul></li>
+<li><p>Third</p></li>
+</ol>
+
+
+<p>This was an error in Markdown 1.0.1:</p>
+
+<ul>
+<li><p>this</p>
+
+<ul><li>sub</li></ul>
+
+<p>that</p></li>
+</ul>
diff --git a/tests/pl/Tests_2007/Ordered and unordered lists.text b/tests/pl/Tests_2007/Ordered and unordered lists.text
new file mode 100644
index 0000000..7f3b497
--- /dev/null
+++ b/tests/pl/Tests_2007/Ordered and unordered lists.text
@@ -0,0 +1,131 @@
+## Unordered
+
+Asterisks tight:
+
+* asterisk 1
+* asterisk 2
+* asterisk 3
+
+
+Asterisks loose:
+
+* asterisk 1
+
+* asterisk 2
+
+* asterisk 3
+
+* * *
+
+Pluses tight:
+
++ Plus 1
++ Plus 2
++ Plus 3
+
+
+Pluses loose:
+
++ Plus 1
+
++ Plus 2
+
++ Plus 3
+
+* * *
+
+
+Minuses tight:
+
+- Minus 1
+- Minus 2
+- Minus 3
+
+
+Minuses loose:
+
+- Minus 1
+
+- Minus 2
+
+- Minus 3
+
+
+## Ordered
+
+Tight:
+
+1. First
+2. Second
+3. Third
+
+and:
+
+1. One
+2. Two
+3. Three
+
+
+Loose using tabs:
+
+1. First
+
+2. Second
+
+3. Third
+
+and using spaces:
+
+1. One
+
+2. Two
+
+3. Three
+
+Multiple paragraphs:
+
+1. Item 1, graf one.
+
+ Item 2. graf two. The quick brown fox jumped over the lazy dog's
+ back.
+
+2. Item 2.
+
+3. Item 3.
+
+
+
+## Nested
+
+* Tab
+ * Tab
+ * Tab
+
+Here's another:
+
+1. First
+2. Second:
+ * Fee
+ * Fie
+ * Foe
+3. Third
+
+Same thing but with paragraphs:
+
+1. First
+
+2. Second:
+ * Fee
+ * Fie
+ * Foe
+
+3. Third
+
+
+This was an error in Markdown 1.0.1:
+
+* this
+
+ * sub
+
+ that
diff --git a/tests/pl/Tests_2007/Strong and em together.html b/tests/pl/Tests_2007/Strong and em together.html
new file mode 100644
index 0000000..71ec78c
--- /dev/null
+++ b/tests/pl/Tests_2007/Strong and em together.html
@@ -0,0 +1,7 @@
+<p><strong><em>This is strong and em.</em></strong></p>
+
+<p>So is <strong><em>this</em></strong> word.</p>
+
+<p><strong><em>This is strong and em.</em></strong></p>
+
+<p>So is <strong><em>this</em></strong> word.</p>
diff --git a/tests/pl/Tests_2007/Strong and em together.text b/tests/pl/Tests_2007/Strong and em together.text
new file mode 100644
index 0000000..95ee690
--- /dev/null
+++ b/tests/pl/Tests_2007/Strong and em together.text
@@ -0,0 +1,7 @@
+***This is strong and em.***
+
+So is ***this*** word.
+
+___This is strong and em.___
+
+So is ___this___ word.
diff --git a/tests/pl/Tests_2007/Tabs.html b/tests/pl/Tests_2007/Tabs.html
new file mode 100644
index 0000000..3301ba8
--- /dev/null
+++ b/tests/pl/Tests_2007/Tabs.html
@@ -0,0 +1,25 @@
+<ul>
+<li><p>this is a list item
+indented with tabs</p></li>
+<li><p>this is a list item
+indented with spaces</p></li>
+</ul>
+
+<p>Code:</p>
+
+<pre><code>this code block is indented by one tab
+</code></pre>
+
+<p>And:</p>
+
+<pre><code> this code block is indented by two tabs
+</code></pre>
+
+<p>And:</p>
+
+<pre><code>+ this is an example list item
+ indented with tabs
+
++ this is an example list item
+ indented with spaces
+</code></pre>
diff --git a/tests/pl/Tests_2007/Tabs.text b/tests/pl/Tests_2007/Tabs.text
new file mode 100644
index 0000000..589d113
--- /dev/null
+++ b/tests/pl/Tests_2007/Tabs.text
@@ -0,0 +1,21 @@
++ this is a list item
+ indented with tabs
+
++ this is a list item
+ indented with spaces
+
+Code:
+
+ this code block is indented by one tab
+
+And:
+
+ this code block is indented by two tabs
+
+And:
+
+ + this is an example list item
+ indented with tabs
+
+ + this is an example list item
+ indented with spaces
diff --git a/tests/pl/Tests_2007/Tidyness.html b/tests/pl/Tests_2007/Tidyness.html
new file mode 100644
index 0000000..f2a8ce7
--- /dev/null
+++ b/tests/pl/Tests_2007/Tidyness.html
@@ -0,0 +1,8 @@
+<blockquote>
+<p>A list within a blockquote:</p>
+<ul>
+<li>asterisk 1</li>
+<li>asterisk 2</li>
+<li>asterisk 3</li>
+</ul>
+</blockquote>
diff --git a/tests/pl/Tests_2007/Tidyness.text b/tests/pl/Tests_2007/Tidyness.text
new file mode 100644
index 0000000..5f18b8d
--- /dev/null
+++ b/tests/pl/Tests_2007/Tidyness.text
@@ -0,0 +1,5 @@
+> A list within a blockquote:
+>
+> * asterisk 1
+> * asterisk 2
+> * asterisk 3
diff --git a/tests/safe_mode/inline-html-advanced.html b/tests/safe_mode/inline-html-advanced.html
deleted file mode 100644
index e9dd2ec..0000000
--- a/tests/safe_mode/inline-html-advanced.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<p>Simple block on one line:</p>
-<p>&lt;div&gt;foo&lt;/div&gt;</p>
-<p>And nested without indentation:</p>
-<p>&lt;div&gt;
-&lt;div&gt;
-&lt;div&gt;
-foo
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div&gt;bar&lt;/div&gt;
-&lt;/div&gt;</p> \ No newline at end of file
diff --git a/tests/safe_mode/inline-html-advanced.txt b/tests/safe_mode/inline-html-advanced.txt
deleted file mode 100644
index 9d71ddc..0000000
--- a/tests/safe_mode/inline-html-advanced.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Simple block on one line:
-
-<div>foo</div>
-
-And nested without indentation:
-
-<div>
-<div>
-<div>
-foo
-</div>
-</div>
-<div>bar</div>
-</div>
diff --git a/tests/safe_mode/inline-html-comments.html b/tests/safe_mode/inline-html-comments.html
deleted file mode 100644
index 0f1e417..0000000
--- a/tests/safe_mode/inline-html-comments.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<p>Paragraph one.</p>
-<p>&lt;!-- This is a simple comment --&gt;</p>
-<p>&lt;!--
- This is another comment.
---&gt;</p>
-<p>Paragraph two.</p>
-<p>&lt;!-- one comment block -- -- with two comments --&gt;</p>
-<p>The end.</p> \ No newline at end of file
diff --git a/tests/safe_mode/script_tags.html b/tests/safe_mode/script_tags.html
deleted file mode 100644
index df63ffc..0000000
--- a/tests/safe_mode/script_tags.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<p>This should be stripped/escaped in safe_mode.</p>
-<p>&lt;script&gt;
-alert(&quot;Hello world!&quot;)
-&lt;/script&gt;</p>
-<p>With blank lines.</p>
-<p>&lt;script&gt;
-
-alert(&quot;Hello world!&quot;)
-
-&lt;/script&gt;</p>
-<p>Now with some weirdness</p>
-<p><code>&lt;script &lt;!--
-alert("Hello world!")
-&lt;/script &lt;&gt;</code> `</p>
-<p>Try another way.</p>
-<p>&lt;script &lt;!--
-alert(&quot;Hello world!&quot;)
-&lt;/script &lt;&gt;
-
-This time with blank lines.
-
-&lt;script &lt;!--
-
-alert(&quot;Hello world!&quot;)
-
-&lt;/script &lt;&gt;
-
-</p> \ No newline at end of file
diff --git a/tests/safe_mode/script_tags.txt b/tests/safe_mode/script_tags.txt
deleted file mode 100644
index 44041c2..0000000
--- a/tests/safe_mode/script_tags.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-This should be stripped/escaped in safe_mode.
-
-<script>
-alert("Hello world!")
-</script>
-
-With blank lines.
-
-<script>
-
-alert("Hello world!")
-
-</script>
-
-Now with some weirdness
-
-``<script <!--
-alert("Hello world!")
-</script <>`` `
-
-Try another way.
-
-<script <!--
-alert("Hello world!")
-</script <>
-
-This time with blank lines.
-
-<script <!--
-
-alert("Hello world!")
-
-</script <>
diff --git a/tests/safe_mode/unsafe_urls.html b/tests/safe_mode/unsafe_urls.html
deleted file mode 100644
index e617f35..0000000
--- a/tests/safe_mode/unsafe_urls.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<p>These links should be unsafe and not allowed in safe_mode</p>
-<p><a href="">link</a>
-<a href="">link</a>
-<a href="">link</a>
-<a href="">link</a>
-<a href="">link</a>
-<a href="">link</a>
-<a href="">link</a>
-<a href="">link</a>
-<a href="">link</a>
-<a href="">link</a>
-<a href="">link</a></p>
-<p><img alt="img" src="" />
-<a href="">ref</a>
-<img alt="imgref" src="" /></p>
-<p>These should work regardless:</p>
-<p><a href="relative/url.html">relative</a>
-<a href="mailto:foo@bar.com">email</a>
-<a href="news:some.news.group.com">news scheme</a>
-<a href="http://example.com">http link</a></p> \ No newline at end of file
diff --git a/tests/safe_mode/unsafe_urls.txt b/tests/safe_mode/unsafe_urls.txt
deleted file mode 100644
index 7bfd81d..0000000
--- a/tests/safe_mode/unsafe_urls.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-These links should be unsafe and not allowed in safe_mode
-
-[link](javascript:alert%28'Hello%20world!'%29)
-[link](vbscript:msgbox%28%22Hello%20world!%22%29)
-[link](livescript:alert%28'Hello%20world!'%29)
-[link](mocha:[code])
-[link](jAvAsCrIpT:alert%28'Hello%20world!'%29)
-[link](ja&#32;vas&#32;cr&#32;ipt:alert%28'Hello%20world!'%29)
-[link](ja&#00032;vas&#32;cr&#32;ipt:alert%28'Hello%20world!'%29)
-[link](ja&#x00020;vas&#32;cr&#32;ipt:alert%28'Hello%20world!'%29)
-[link](ja%09&#x20;%0Avas&#32;cr&#x0a;ipt:alert%28'Hello%20world!'%29)
-[link](ja%20vas%20cr%20ipt:alert%28'Hello%20world!'%29)
-[link](live%20script:alert%28'Hello%20world!'%29)
-
-![img](javascript:alert%29'XSS'%29)
-[ref][]
-![imgref][]
-
-[ref]: javascript:alert%29'XSS'%29
-[imgref]: javascript:alert%29'XSS'%29
-
-These should work regardless:
-
-[relative](relative/url.html)
-[email](mailto:foo@bar.com)
-[news scheme](news:some.news.group.com)
-[http link](http://example.com)
diff --git a/tests/test_apis.py b/tests/test_apis.py
new file mode 100644
index 0000000..1a38be6
--- /dev/null
+++ b/tests/test_apis.py
@@ -0,0 +1,957 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+
+Python-Markdown Regression Tests
+================================
+
+Tests of the various APIs with the python markdown lib.
+"""
+
+import unittest
+import sys
+import os
+import markdown
+import warnings
+from markdown.__main__ import parse_options
+from logging import DEBUG, WARNING, CRITICAL
+import yaml
+import tempfile
+from io import BytesIO
+import xml.etree.ElementTree as etree
+from xml.etree.ElementTree import ProcessingInstruction
+
+
+class TestMarkdownBasics(unittest.TestCase):
+ """ Tests basics of the Markdown class. """
+
+ def setUp(self):
+ """ Create instance of Markdown. """
+ self.md = markdown.Markdown()
+
+ def testBlankInput(self):
+ """ Test blank input. """
+ self.assertEqual(self.md.convert(''), '')
+
+ def testWhitespaceOnly(self):
+ """ Test input of only whitespace. """
+ self.assertEqual(self.md.convert(' '), '')
+
+ def testSimpleInput(self):
+ """ Test simple input. """
+ self.assertEqual(self.md.convert('foo'), '<p>foo</p>')
+
+ def testInstanceExtension(self):
+ """ Test Extension loading with a class instance. """
+ from markdown.extensions.footnotes import FootnoteExtension
+ markdown.Markdown(extensions=[FootnoteExtension()])
+
+ def testEntryPointExtension(self):
+ """ Test Extension loading with an entry point. """
+ markdown.Markdown(extensions=['footnotes'])
+
+ def testDotNotationExtension(self):
+ """ Test Extension loading with Name (`path.to.module`). """
+ markdown.Markdown(extensions=['markdown.extensions.footnotes'])
+
+ def testDotNotationExtensionWithClass(self):
+ """ Test Extension loading with class name (`path.to.module:Class`). """
+ markdown.Markdown(extensions=['markdown.extensions.footnotes:FootnoteExtension'])
+
+
+class TestConvertFile(unittest.TestCase):
+ """ Tests of ConvertFile. """
+
+ def setUp(self):
+ self.saved = sys.stdin, sys.stdout
+ sys.stdin = BytesIO(bytes('foo', encoding='utf-8'))
+ sys.stdout = BytesIO()
+
+ def tearDown(self):
+ sys.stdin, sys.stdout = self.saved
+
+ def getTempFiles(self, src):
+ """ Return the file names for two temp files. """
+ infd, infile = tempfile.mkstemp(suffix='.txt')
+ with os.fdopen(infd, 'w') as fp:
+ fp.write(src)
+ outfd, outfile = tempfile.mkstemp(suffix='.html')
+ return infile, outfile, outfd
+
+ def testFileNames(self):
+ infile, outfile, outfd = self.getTempFiles('foo')
+ markdown.markdownFromFile(input=infile, output=outfile)
+ with os.fdopen(outfd, 'r') as fp:
+ output = fp.read()
+ self.assertEqual(output, '<p>foo</p>')
+
+ def testFileObjects(self):
+ infile = BytesIO(bytes('foo', encoding='utf-8'))
+ outfile = BytesIO()
+ markdown.markdownFromFile(input=infile, output=outfile)
+ outfile.seek(0)
+ self.assertEqual(outfile.read().decode('utf-8'), '<p>foo</p>')
+
+ def testStdinStdout(self):
+ markdown.markdownFromFile()
+ sys.stdout.seek(0)
+ self.assertEqual(sys.stdout.read().decode('utf-8'), '<p>foo</p>')
+
+
+class TestBlockParser(unittest.TestCase):
+ """ Tests of the BlockParser class. """
+
+ def setUp(self):
+ """ Create instance of BlockParser. """
+ self.parser = markdown.Markdown().parser
+
+ def testParseChunk(self):
+ """ Test BlockParser.parseChunk. """
+ root = etree.Element("div")
+ text = 'foo'
+ self.parser.parseChunk(root, text)
+ self.assertEqual(
+ markdown.serializers.to_xhtml_string(root),
+ "<div><p>foo</p></div>"
+ )
+
+ def testParseDocument(self):
+ """ Test BlockParser.parseDocument. """
+ lines = ['#foo', '', 'bar', '', ' baz']
+ tree = self.parser.parseDocument(lines)
+ self.assertIsInstance(tree, etree.ElementTree)
+ self.assertIs(etree.iselement(tree.getroot()), True)
+ self.assertEqual(
+ markdown.serializers.to_xhtml_string(tree.getroot()),
+ "<div><h1>foo</h1><p>bar</p><pre><code>baz\n</code></pre></div>"
+ )
+
+
+class TestBlockParserState(unittest.TestCase):
+ """ Tests of the State class for BlockParser. """
+
+ def setUp(self):
+ self.state = markdown.blockparser.State()
+
+ def testBlankState(self):
+ """ Test State when empty. """
+ self.assertEqual(self.state, [])
+
+ def testSetSate(self):
+ """ Test State.set(). """
+ self.state.set('a_state')
+ self.assertEqual(self.state, ['a_state'])
+ self.state.set('state2')
+ self.assertEqual(self.state, ['a_state', 'state2'])
+
+ def testIsSate(self):
+ """ Test State.isstate(). """
+ self.assertEqual(self.state.isstate('anything'), False)
+ self.state.set('a_state')
+ self.assertEqual(self.state.isstate('a_state'), True)
+ self.state.set('state2')
+ self.assertEqual(self.state.isstate('state2'), True)
+ self.assertEqual(self.state.isstate('a_state'), False)
+ self.assertEqual(self.state.isstate('missing'), False)
+
+ def testReset(self):
+ """ Test State.reset(). """
+ self.state.set('a_state')
+ self.state.reset()
+ self.assertEqual(self.state, [])
+ self.state.set('state1')
+ self.state.set('state2')
+ self.state.reset()
+ self.assertEqual(self.state, ['state1'])
+
+
+class TestHtmlStash(unittest.TestCase):
+ """ Test Markdown's HtmlStash. """
+
+ def setUp(self):
+ self.stash = markdown.util.HtmlStash()
+ self.placeholder = self.stash.store('foo')
+
+ def testSimpleStore(self):
+ """ Test HtmlStash.store. """
+ self.assertEqual(self.placeholder, self.stash.get_placeholder(0))
+ self.assertEqual(self.stash.html_counter, 1)
+ self.assertEqual(self.stash.rawHtmlBlocks, ['foo'])
+
+ def testStoreMore(self):
+ """ Test HtmlStash.store with additional blocks. """
+ placeholder = self.stash.store('bar')
+ self.assertEqual(placeholder, self.stash.get_placeholder(1))
+ self.assertEqual(self.stash.html_counter, 2)
+ self.assertEqual(
+ self.stash.rawHtmlBlocks,
+ ['foo', 'bar']
+ )
+
+ def testReset(self):
+ """ Test HtmlStash.reset. """
+ self.stash.reset()
+ self.assertEqual(self.stash.html_counter, 0)
+ self.assertEqual(self.stash.rawHtmlBlocks, [])
+
+
+class Item:
+ """ A dummy Registry item object for testing. """
+ def __init__(self, data):
+ self.data = data
+
+ def __repr__(self):
+ return repr(self.data)
+
+ def __eq__(self, other):
+ return self.data == other
+
+
+class RegistryTests(unittest.TestCase):
+ """ Test the processor registry. """
+
+ def testCreateRegistry(self):
+ r = markdown.util.Registry()
+ r.register(Item('a'), 'a', 20)
+ self.assertEqual(len(r), 1)
+ self.assertIsInstance(r, markdown.util.Registry)
+
+ def testRegisterWithoutPriority(self):
+ r = markdown.util.Registry()
+ with self.assertRaises(TypeError):
+ r.register(Item('a'))
+
+ def testSortRegistry(self):
+ r = markdown.util.Registry()
+ r.register(Item('a'), 'a', 20)
+ r.register(Item('b'), 'b', 21)
+ r.register(Item('c'), 'c', 20.5)
+ self.assertEqual(len(r), 3)
+ self.assertEqual(list(r), ['b', 'c', 'a'])
+
+ def testIsSorted(self):
+ r = markdown.util.Registry()
+ self.assertIs(r._is_sorted, False)
+ r.register(Item('a'), 'a', 20)
+ list(r)
+ self.assertIs(r._is_sorted, True)
+ r.register(Item('b'), 'b', 21)
+ self.assertIs(r._is_sorted, False)
+ r['a']
+ self.assertIs(r._is_sorted, True)
+ r._is_sorted = False
+ r.get_index_for_name('a')
+ self.assertIs(r._is_sorted, True)
+ r._is_sorted = False
+ repr(r)
+ self.assertIs(r._is_sorted, True)
+
+ def testDeregister(self):
+ r = markdown.util.Registry()
+ r.register(Item('a'), 'a', 20)
+ r.register(Item('b'), 'b', 30)
+ r.register(Item('c'), 'c', 40)
+ self.assertEqual(len(r), 3)
+ r.deregister('b')
+ self.assertEqual(len(r), 2)
+ r.deregister('c', strict=False)
+ self.assertEqual(len(r), 1)
+ # deregister non-existent item with strict=False
+ r.deregister('d', strict=False)
+ self.assertEqual(len(r), 1)
+ with self.assertRaises(ValueError):
+ # deregister non-existent item with strict=True
+ r.deregister('e')
+ self.assertEqual(list(r), ['a'])
+
+ def testRegistryContains(self):
+ r = markdown.util.Registry()
+ item = Item('a')
+ r.register(item, 'a', 20)
+ self.assertIs('a' in r, True)
+ self.assertIn(item, r)
+ self.assertNotIn('b', r)
+
+ def testRegistryIter(self):
+ r = markdown.util.Registry()
+ r.register(Item('a'), 'a', 20)
+ r.register(Item('b'), 'b', 30)
+ self.assertEqual(list(r), ['b', 'a'])
+
+ def testRegistryGetItemByIndex(self):
+ r = markdown.util.Registry()
+ r.register(Item('a'), 'a', 20)
+ r.register(Item('b'), 'b', 30)
+ self.assertEqual(r[0], 'b')
+ self.assertEqual(r[1], 'a')
+ with self.assertRaises(IndexError):
+ r[3]
+
+ def testRegistryGetItemByItem(self):
+ r = markdown.util.Registry()
+ r.register(Item('a'), 'a', 20)
+ r.register(Item('b'), 'b', 30)
+ self.assertEqual(r['a'], 'a')
+ self.assertEqual(r['b'], 'b')
+ with self.assertRaises(KeyError):
+ r['c']
+
+ def testRegistrySetItem(self):
+ r = markdown.util.Registry()
+ with self.assertRaises(TypeError):
+ r[0] = 'a'
+ with self.assertRaises(TypeError):
+ r['a'] = 'a'
+
+ def testRegistryDelItem(self):
+ r = markdown.util.Registry()
+ r.register(Item('a'), 'a', 20)
+ with self.assertRaises(TypeError):
+ del r[0]
+ with self.assertRaises(TypeError):
+ del r['a']
+
+ def testRegistrySlice(self):
+ r = markdown.util.Registry()
+ r.register(Item('a'), 'a', 20)
+ r.register(Item('b'), 'b', 30)
+ r.register(Item('c'), 'c', 40)
+ slc = r[1:]
+ self.assertEqual(len(slc), 2)
+ self.assertIsInstance(slc, markdown.util.Registry)
+ self.assertEqual(list(slc), ['b', 'a'])
+
+ def testGetIndexForName(self):
+ r = markdown.util.Registry()
+ r.register(Item('a'), 'a', 20)
+ r.register(Item('b'), 'b', 30)
+ self.assertEqual(r.get_index_for_name('a'), 1)
+ self.assertEqual(r.get_index_for_name('b'), 0)
+ with self.assertRaises(ValueError):
+ r.get_index_for_name('c')
+
+ def testRegisterDupplicate(self):
+ r = markdown.util.Registry()
+ r.register(Item('a'), 'a', 20)
+ r.register(Item('b1'), 'b', 10)
+ self.assertEqual(list(r), ['a', 'b1'])
+ self.assertEqual(len(r), 2)
+ r.register(Item('b2'), 'b', 30)
+ self.assertEqual(len(r), 2)
+ self.assertEqual(list(r), ['b2', 'a'])
+
+
+class TestErrors(unittest.TestCase):
+ """ Test Error Reporting. """
+
+ def setUp(self):
+ # Set warnings to be raised as errors
+ warnings.simplefilter('error')
+
+ def tearDown(self):
+ # Reset warning behavior back to default
+ warnings.simplefilter('default')
+
+ def testBadOutputFormat(self):
+ """ Test failure on bad output_format. """
+ self.assertRaises(KeyError, markdown.Markdown, output_format='invalid')
+
+ def testLoadExtensionFailure(self):
+ """ Test failure of an extension to load. """
+ self.assertRaises(
+ ImportError,
+ markdown.Markdown, extensions=['non_existant_ext']
+ )
+
+ def testLoadBadExtension(self):
+ """ Test loading of an Extension with no makeExtension function. """
+ self.assertRaises(AttributeError, markdown.Markdown, extensions=['markdown.util'])
+
+ def testNonExtension(self):
+ """ Test loading a non Extension object as an extension. """
+ self.assertRaises(TypeError, markdown.Markdown, extensions=[object])
+
+ def testDotNotationExtensionWithBadClass(self):
+ """ Test Extension loading with non-existent class name (`path.to.module:Class`). """
+ self.assertRaises(
+ AttributeError,
+ markdown.Markdown,
+ extensions=['markdown.extensions.footnotes:MissingExtension']
+ )
+
+ def testBaseExtention(self):
+ """ Test that the base Extension class will raise NotImplemented. """
+ self.assertRaises(
+ NotImplementedError,
+ markdown.Markdown, extensions=[markdown.extensions.Extension()]
+ )
+
+
+class testETreeComments(unittest.TestCase):
+ """
+ Test that ElementTree Comments work.
+
+ These tests should only be a concern when using cElementTree with third
+ party serializers (including markdown's (x)html serializer). While markdown
+ doesn't use ElementTree.Comment itself, we should certainly support any
+ third party extensions which may. Therefore, these tests are included to
+ ensure such support is maintained.
+ """
+
+ def setUp(self):
+ # Create comment node
+ self.comment = etree.Comment('foo')
+
+ def testCommentIsComment(self):
+ """ Test that an ElementTree Comment passes the `is Comment` test. """
+ self.assertIs(self.comment.tag, etree.Comment)
+
+ def testCommentIsBlockLevel(self):
+ """ Test that an ElementTree Comment is recognized as BlockLevel. """
+ md = markdown.Markdown()
+ self.assertIs(md.is_block_level(self.comment.tag), False)
+
+ def testCommentSerialization(self):
+ """ Test that an ElementTree Comment serializes properly. """
+ self.assertEqual(
+ markdown.serializers.to_html_string(self.comment),
+ '<!--foo-->'
+ )
+
+ def testCommentPrettify(self):
+ """ Test that an ElementTree Comment is prettified properly. """
+ pretty = markdown.treeprocessors.PrettifyTreeprocessor(markdown.Markdown())
+ pretty.run(self.comment)
+ self.assertEqual(
+ markdown.serializers.to_html_string(self.comment),
+ '<!--foo-->\n'
+ )
+
+
+class testElementTailTests(unittest.TestCase):
+ """ Element Tail Tests """
+ def setUp(self):
+ self.pretty = markdown.treeprocessors.PrettifyTreeprocessor(markdown.Markdown())
+
+ def testBrTailNoNewline(self):
+ """ Test that last <br> in tree has a new line tail """
+ root = etree.Element('root')
+ br = etree.SubElement(root, 'br')
+ self.assertEqual(br.tail, None)
+ self.pretty.run(root)
+ self.assertEqual(br.tail, "\n")
+
+
+class testElementPreCodeTests(unittest.TestCase):
+ """ Element PreCode Tests """
+ def setUp(self):
+ md = markdown.Markdown()
+ self.pretty = markdown.treeprocessors.PrettifyTreeprocessor(md)
+
+ def prettify(self, xml):
+ root = etree.fromstring(xml)
+ self.pretty.run(root)
+ return etree.tostring(root, encoding="unicode", short_empty_elements=False)
+
+ def testPreCodeEmpty(self):
+ xml = "<pre><code></code></pre>"
+ expected = "<pre><code></code></pre>\n"
+ self.assertEqual(expected, self.prettify(xml))
+
+ def testPreCodeWithChildren(self):
+ xml = "<pre><code> <span /></code></pre>"
+ expected = "<pre><code> <span></span></code></pre>\n"
+ self.assertEqual(expected, self.prettify(xml))
+
+ def testPreCodeWithSpaceOnly(self):
+ xml = "<pre><code> </code></pre>"
+ expected = "<pre><code>\n</code></pre>\n"
+ self.assertEqual(expected, self.prettify(xml))
+
+ def testPreCodeWithText(self):
+ xml = "<pre><code> hello</code></pre>"
+ expected = "<pre><code> hello\n</code></pre>\n"
+ self.assertEqual(expected, self.prettify(xml))
+
+ def testPreCodeWithTrailingSpace(self):
+ xml = "<pre><code> hello </code></pre>"
+ expected = "<pre><code> hello\n</code></pre>\n"
+ self.assertEqual(expected, self.prettify(xml))
+
+
+class testSerializers(unittest.TestCase):
+ """ Test the html and xhtml serializers. """
+
+ def testHtml(self):
+ """ Test HTML serialization. """
+ el = etree.Element('div')
+ el.set('id', 'foo<&">')
+ p = etree.SubElement(el, 'p')
+ p.text = 'foo <&escaped>'
+ p.set('hidden', 'hidden')
+ etree.SubElement(el, 'hr')
+ non_element = etree.SubElement(el, None)
+ non_element.text = 'non-element text'
+ script = etree.SubElement(non_element, 'script')
+ script.text = '<&"test\nescaping">'
+ el.tail = "tail text"
+ self.assertEqual(
+ markdown.serializers.to_html_string(el),
+ '<div id="foo&lt;&amp;&quot;&gt;">'
+ '<p hidden>foo &lt;&amp;escaped&gt;</p>'
+ '<hr>'
+ 'non-element text'
+ '<script><&"test\nescaping"></script>'
+ '</div>tail text'
+ )
+
+ def testXhtml(self):
+ """" Test XHTML serialization. """
+ el = etree.Element('div')
+ el.set('id', 'foo<&">')
+ p = etree.SubElement(el, 'p')
+ p.text = 'foo<&escaped>'
+ p.set('hidden', 'hidden')
+ etree.SubElement(el, 'hr')
+ non_element = etree.SubElement(el, None)
+ non_element.text = 'non-element text'
+ script = etree.SubElement(non_element, 'script')
+ script.text = '<&"test\nescaping">'
+ el.tail = "tail text"
+ self.assertEqual(
+ markdown.serializers.to_xhtml_string(el),
+ '<div id="foo&lt;&amp;&quot;&gt;">'
+ '<p hidden="hidden">foo&lt;&amp;escaped&gt;</p>'
+ '<hr />'
+ 'non-element text'
+ '<script><&"test\nescaping"></script>'
+ '</div>tail text'
+ )
+
+ def testMixedCaseTags(self):
+ """" Test preservation of tag case. """
+ el = etree.Element('MixedCase')
+ el.text = 'not valid '
+ em = etree.SubElement(el, 'EMPHASIS')
+ em.text = 'html'
+ etree.SubElement(el, 'HR')
+ self.assertEqual(
+ markdown.serializers.to_xhtml_string(el),
+ '<MixedCase>not valid <EMPHASIS>html</EMPHASIS><HR /></MixedCase>'
+ )
+
+ def testProsessingInstruction(self):
+ """ Test serialization of ProcessignInstruction. """
+ pi = ProcessingInstruction('foo', text='<&"test\nescaping">')
+ self.assertIs(pi.tag, ProcessingInstruction)
+ self.assertEqual(
+ markdown.serializers.to_xhtml_string(pi),
+ '<?foo &lt;&amp;"test\nescaping"&gt;?>'
+ )
+
+ def testQNameTag(self):
+ """ Test serialization of QName tag. """
+ div = etree.Element('div')
+ qname = etree.QName('http://www.w3.org/1998/Math/MathML', 'math')
+ math = etree.SubElement(div, qname)
+ math.set('display', 'block')
+ sem = etree.SubElement(math, 'semantics')
+ msup = etree.SubElement(sem, 'msup')
+ mi = etree.SubElement(msup, 'mi')
+ mi.text = 'x'
+ mn = etree.SubElement(msup, 'mn')
+ mn.text = '2'
+ ann = etree.SubElement(sem, 'annotations')
+ ann.text = 'x^2'
+ self.assertEqual(
+ markdown.serializers.to_xhtml_string(div),
+ '<div>'
+ '<math display="block" xmlns="http://www.w3.org/1998/Math/MathML">'
+ '<semantics>'
+ '<msup>'
+ '<mi>x</mi>'
+ '<mn>2</mn>'
+ '</msup>'
+ '<annotations>x^2</annotations>'
+ '</semantics>'
+ '</math>'
+ '</div>'
+ )
+
+ def testQNameAttribute(self):
+ """ Test serialization of QName attribute. """
+ div = etree.Element('div')
+ div.set(etree.QName('foo'), etree.QName('bar'))
+ self.assertEqual(
+ markdown.serializers.to_xhtml_string(div),
+ '<div foo="bar"></div>'
+ )
+
+ def testBadQNameTag(self):
+ """ Test serialization of QName with no tag. """
+ qname = etree.QName('http://www.w3.org/1998/Math/MathML')
+ el = etree.Element(qname)
+ self.assertRaises(ValueError, markdown.serializers.to_xhtml_string, el)
+
+ def testQNameEscaping(self):
+ """ Test QName escaping. """
+ qname = etree.QName('<&"test\nescaping">', 'div')
+ el = etree.Element(qname)
+ self.assertEqual(
+ markdown.serializers.to_xhtml_string(el),
+ '<div xmlns="&lt;&amp;&quot;test&#10;escaping&quot;&gt;"></div>'
+ )
+
+ def testQNamePreEscaping(self):
+ """ Test QName that is already partially escaped. """
+ qname = etree.QName('&lt;&amp;"test&#10;escaping"&gt;', 'div')
+ el = etree.Element(qname)
+ self.assertEqual(
+ markdown.serializers.to_xhtml_string(el),
+ '<div xmlns="&lt;&amp;&quot;test&#10;escaping&quot;&gt;"></div>'
+ )
+
+ def buildExtension(self):
+ """ Build an extension which registers fakeSerializer. """
+ def fakeSerializer(elem):
+ # Ignore input and return hardcoded output
+ return '<div><p>foo</p></div>'
+
+ class registerFakeSerializer(markdown.extensions.Extension):
+ def extendMarkdown(self, md):
+ md.output_formats['fake'] = fakeSerializer
+
+ return registerFakeSerializer()
+
+ def testRegisterSerializer(self):
+ self.assertEqual(
+ markdown.markdown(
+ 'baz', extensions=[self.buildExtension()], output_format='fake'
+ ),
+ '<p>foo</p>'
+ )
+
+ def testXHTMLOutput(self):
+ self.assertEqual(
+ markdown.markdown('foo \nbar', output_format='xhtml'),
+ '<p>foo<br />\nbar</p>'
+ )
+
+ def testHTMLOutput(self):
+ self.assertEqual(
+ markdown.markdown('foo \nbar', output_format='html'),
+ '<p>foo<br>\nbar</p>'
+ )
+
+
+class testAtomicString(unittest.TestCase):
+ """ Test that AtomicStrings are honored (not parsed). """
+
+ def setUp(self):
+ md = markdown.Markdown()
+ self.inlineprocessor = md.treeprocessors['inline']
+
+ def testString(self):
+ """ Test that a regular string is parsed. """
+ tree = etree.Element('div')
+ p = etree.SubElement(tree, 'p')
+ p.text = 'some *text*'
+ new = self.inlineprocessor.run(tree)
+ self.assertEqual(
+ markdown.serializers.to_html_string(new),
+ '<div><p>some <em>text</em></p></div>'
+ )
+
+ def testSimpleAtomicString(self):
+ """ Test that a simple AtomicString is not parsed. """
+ tree = etree.Element('div')
+ p = etree.SubElement(tree, 'p')
+ p.text = markdown.util.AtomicString('some *text*')
+ new = self.inlineprocessor.run(tree)
+ self.assertEqual(
+ markdown.serializers.to_html_string(new),
+ '<div><p>some *text*</p></div>'
+ )
+
+ def testNestedAtomicString(self):
+ """ Test that a nested AtomicString is not parsed. """
+ tree = etree.Element('div')
+ p = etree.SubElement(tree, 'p')
+ p.text = markdown.util.AtomicString('*some* ')
+ span1 = etree.SubElement(p, 'span')
+ span1.text = markdown.util.AtomicString('*more* ')
+ span2 = etree.SubElement(span1, 'span')
+ span2.text = markdown.util.AtomicString('*text* ')
+ span3 = etree.SubElement(span2, 'span')
+ span3.text = markdown.util.AtomicString('*here*')
+ span3.tail = markdown.util.AtomicString(' *to*')
+ span2.tail = markdown.util.AtomicString(' *test*')
+ span1.tail = markdown.util.AtomicString(' *with*')
+ new = self.inlineprocessor.run(tree)
+ self.assertEqual(
+ markdown.serializers.to_html_string(new),
+ '<div><p>*some* <span>*more* <span>*text* <span>*here*</span> '
+ '*to*</span> *test*</span> *with*</p></div>'
+ )
+
+
+class TestConfigParsing(unittest.TestCase):
+ def assertParses(self, value, result):
+ self.assertIs(markdown.util.parseBoolValue(value, False), result)
+
+ def testBooleansParsing(self):
+ self.assertParses(True, True)
+ self.assertParses('novalue', None)
+ self.assertParses('yES', True)
+ self.assertParses('FALSE', False)
+ self.assertParses(0., False)
+ self.assertParses('none', False)
+
+ def testPreserveNone(self):
+ self.assertIsNone(markdown.util.parseBoolValue('None', preserve_none=True))
+ self.assertIsNone(markdown.util.parseBoolValue(None, preserve_none=True))
+
+ def testInvalidBooleansParsing(self):
+ self.assertRaises(ValueError, markdown.util.parseBoolValue, 'novalue')
+
+
+class TestCliOptionParsing(unittest.TestCase):
+ """ Test parsing of Command Line Interface Options. """
+
+ def setUp(self):
+ self.default_options = {
+ 'input': None,
+ 'output': None,
+ 'encoding': None,
+ 'output_format': 'xhtml',
+ 'lazy_ol': True,
+ 'extensions': [],
+ 'extension_configs': {},
+ }
+ self.tempfile = ''
+
+ def tearDown(self):
+ if os.path.isfile(self.tempfile):
+ os.remove(self.tempfile)
+
+ def testNoOptions(self):
+ options, logging_level = parse_options([])
+ self.assertEqual(options, self.default_options)
+ self.assertEqual(logging_level, CRITICAL)
+
+ def testQuietOption(self):
+ options, logging_level = parse_options(['-q'])
+ self.assertGreater(logging_level, CRITICAL)
+
+ def testVerboseOption(self):
+ options, logging_level = parse_options(['-v'])
+ self.assertEqual(logging_level, WARNING)
+
+ def testNoisyOption(self):
+ options, logging_level = parse_options(['--noisy'])
+ self.assertEqual(logging_level, DEBUG)
+
+ def testInputFileOption(self):
+ options, logging_level = parse_options(['foo.txt'])
+ self.default_options['input'] = 'foo.txt'
+ self.assertEqual(options, self.default_options)
+
+ def testOutputFileOption(self):
+ options, logging_level = parse_options(['-f', 'foo.html'])
+ self.default_options['output'] = 'foo.html'
+ self.assertEqual(options, self.default_options)
+
+ def testInputAndOutputFileOptions(self):
+ options, logging_level = parse_options(['-f', 'foo.html', 'foo.txt'])
+ self.default_options['output'] = 'foo.html'
+ self.default_options['input'] = 'foo.txt'
+ self.assertEqual(options, self.default_options)
+
+ def testEncodingOption(self):
+ options, logging_level = parse_options(['-e', 'utf-8'])
+ self.default_options['encoding'] = 'utf-8'
+ self.assertEqual(options, self.default_options)
+
+ def testOutputFormatOption(self):
+ options, logging_level = parse_options(['-o', 'html'])
+ self.default_options['output_format'] = 'html'
+ self.assertEqual(options, self.default_options)
+
+ def testNoLazyOlOption(self):
+ options, logging_level = parse_options(['-n'])
+ self.default_options['lazy_ol'] = False
+ self.assertEqual(options, self.default_options)
+
+ def testExtensionOption(self):
+ options, logging_level = parse_options(['-x', 'markdown.extensions.footnotes'])
+ self.default_options['extensions'] = ['markdown.extensions.footnotes']
+ self.assertEqual(options, self.default_options)
+
+ def testMultipleExtensionOptions(self):
+ options, logging_level = parse_options([
+ '-x', 'markdown.extensions.footnotes',
+ '-x', 'markdown.extensions.smarty'
+ ])
+ self.default_options['extensions'] = [
+ 'markdown.extensions.footnotes',
+ 'markdown.extensions.smarty'
+ ]
+ self.assertEqual(options, self.default_options)
+
+ def create_config_file(self, config):
+ """ Helper to create temp config files. """
+ if not isinstance(config, str):
+ # convert to string
+ config = yaml.dump(config)
+ fd, self.tempfile = tempfile.mkstemp('.yml')
+ with os.fdopen(fd, 'w') as fp:
+ fp.write(config)
+
+ def testExtensionConfigOption(self):
+ config = {
+ 'markdown.extensions.wikilinks': {
+ 'base_url': 'http://example.com/',
+ 'end_url': '.html',
+ 'html_class': 'test',
+ },
+ 'markdown.extensions.footnotes:FootnotesExtension': {
+ 'PLACE_MARKER': '~~~footnotes~~~'
+ }
+ }
+ self.create_config_file(config)
+ options, logging_level = parse_options(['-c', self.tempfile])
+ self.default_options['extension_configs'] = config
+ self.assertEqual(options, self.default_options)
+
+ def textBoolExtensionConfigOption(self):
+ config = {
+ 'markdown.extensions.toc': {
+ 'title': 'Some Title',
+ 'anchorlink': True,
+ 'permalink': True
+ }
+ }
+ self.create_config_file(config)
+ options, logging_level = parse_options(['-c', self.tempfile])
+ self.default_options['extension_configs'] = config
+ self.assertEqual(options, self.default_options)
+
+ def testExtensionConfigOptionAsJSON(self):
+ config = {
+ 'markdown.extensions.wikilinks': {
+ 'base_url': 'http://example.com/',
+ 'end_url': '.html',
+ 'html_class': 'test',
+ },
+ 'markdown.extensions.footnotes:FootnotesExtension': {
+ 'PLACE_MARKER': '~~~footnotes~~~'
+ }
+ }
+ import json
+ self.create_config_file(json.dumps(config))
+ options, logging_level = parse_options(['-c', self.tempfile])
+ self.default_options['extension_configs'] = config
+ self.assertEqual(options, self.default_options)
+
+ def testExtensionConfigOptionMissingFile(self):
+ self.assertRaises(IOError, parse_options, ['-c', 'missing_file.yaml'])
+
+ def testExtensionConfigOptionBadFormat(self):
+ config = """
+[footnotes]
+PLACE_MARKER= ~~~footnotes~~~
+"""
+ self.create_config_file(config)
+ self.assertRaises(yaml.YAMLError, parse_options, ['-c', self.tempfile])
+
+
+class TestEscapeAppend(unittest.TestCase):
+ """ Tests escape character append. """
+
+ def testAppend(self):
+ """ Test that appended escapes are only in the current instance. """
+ md = markdown.Markdown()
+ md.ESCAPED_CHARS.append('|')
+ self.assertEqual('|' in md.ESCAPED_CHARS, True)
+ md2 = markdown.Markdown()
+ self.assertEqual('|' not in md2.ESCAPED_CHARS, True)
+
+
+class TestBlockAppend(unittest.TestCase):
+ """ Tests block kHTML append. """
+
+ def testBlockAppend(self):
+ """ Test that appended escapes are only in the current instance. """
+ md = markdown.Markdown()
+ md.block_level_elements.append('test')
+ self.assertEqual('test' in md.block_level_elements, True)
+ md2 = markdown.Markdown()
+ self.assertEqual('test' not in md2.block_level_elements, True)
+
+
+class TestAncestorExclusion(unittest.TestCase):
+ """ Tests exclusion of tags in ancestor list. """
+
+ class AncestorExample(markdown.inlinepatterns.SimpleTagInlineProcessor):
+ """ Ancestor Test. """
+
+ ANCESTOR_EXCLUDES = ('a',)
+
+ def handleMatch(self, m, data):
+ """ Handle match. """
+ el = etree.Element(self.tag)
+ el.text = m.group(2)
+ return el, m.start(0), m.end(0)
+
+ class AncestorExtension(markdown.Extension):
+
+ def __init__(self, *args, **kwargs):
+ """Initialize."""
+
+ self.config = {}
+
+ def extendMarkdown(self, md):
+ """Modify inline patterns."""
+
+ pattern = r'(\+)([^\+]+)\1'
+ md.inlinePatterns.register(TestAncestorExclusion.AncestorExample(pattern, 'strong'), 'ancestor-test', 0)
+
+ def setUp(self):
+ """Setup markdown object."""
+ self.md = markdown.Markdown(extensions=[TestAncestorExclusion.AncestorExtension()])
+
+ def test_ancestors(self):
+ """ Test that an extension can exclude parent tags. """
+ test = """
+Some +test+ and a [+link+](http://test.com)
+"""
+ result = """<p>Some <strong>test</strong> and a <a href="http://test.com">+link+</a></p>"""
+
+ self.md.reset()
+ self.assertEqual(self.md.convert(test), result)
+
+ def test_ancestors_tail(self):
+ """ Test that an extension can exclude parent tags when dealing with a tail. """
+ test = """
+[***+em+*+strong+**](http://test.com)
+"""
+ result = """<p><a href="http://test.com"><strong><em>+em+</em>+strong+</strong></a></p>"""
+
+ self.md.reset()
+ self.assertEqual(self.md.convert(test), result)
diff --git a/tests/test_extensions.py b/tests/test_extensions.py
new file mode 100644
index 0000000..b19d10a
--- /dev/null
+++ b/tests/test_extensions.py
@@ -0,0 +1,665 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+
+Python-Markdown Extension Regression Tests
+==========================================
+
+A collection of regression tests to confirm that the included extensions
+continue to work as advertised. This used to be accomplished by doctests.
+"""
+
+import unittest
+import markdown
+
+
+class TestCaseWithAssertStartsWith(unittest.TestCase):
+
+ def assertStartsWith(self, expectedPrefix, text, msg=None):
+ if not text.startswith(expectedPrefix):
+ if len(expectedPrefix) + 5 < len(text):
+ text = text[:len(expectedPrefix) + 5] + '...'
+ standardMsg = '{} not found at the start of {}'.format(repr(expectedPrefix),
+ repr(text))
+ self.fail(self._formatMessage(msg, standardMsg))
+
+
+class TestExtensionClass(unittest.TestCase):
+ """ Test markdown.extensions.Extension. """
+
+ def setUp(self):
+ class TestExtension(markdown.extensions.Extension):
+ config = {
+ 'foo': ['bar', 'Description of foo'],
+ 'bar': ['baz', 'Description of bar']
+ }
+
+ self.ext = TestExtension()
+ self.ExtKlass = TestExtension
+
+ def testGetConfig(self):
+ self.assertEqual(self.ext.getConfig('foo'), 'bar')
+
+ def testGetConfigDefault(self):
+ self.assertEqual(self.ext.getConfig('baz'), '')
+ self.assertEqual(self.ext.getConfig('baz', default='missing'), 'missing')
+
+ def testGetConfigs(self):
+ self.assertEqual(self.ext.getConfigs(), {'foo': 'bar', 'bar': 'baz'})
+
+ def testGetConfigInfo(self):
+ self.assertEqual(
+ dict(self.ext.getConfigInfo()),
+ dict([
+ ('foo', 'Description of foo'),
+ ('bar', 'Description of bar')
+ ])
+ )
+
+ def testSetConfig(self):
+ self.ext.setConfig('foo', 'baz')
+ self.assertEqual(self.ext.getConfigs(), {'foo': 'baz', 'bar': 'baz'})
+
+ def testSetConfigWithBadKey(self):
+ # self.ext.setConfig('bad', 'baz) ==> KeyError
+ self.assertRaises(KeyError, self.ext.setConfig, 'bad', 'baz')
+
+ def testConfigAsKwargsOnInit(self):
+ ext = self.ExtKlass(foo='baz', bar='blah')
+ self.assertEqual(ext.getConfigs(), {'foo': 'baz', 'bar': 'blah'})
+
+
+class TestAbbr(unittest.TestCase):
+ """ Test abbr extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['abbr'])
+
+ def testSimpleAbbr(self):
+ """ Test Abbreviations. """
+ text = 'Some text with an ABBR and a REF. Ignore REFERENCE and ref.' + \
+ '\n\n*[ABBR]: Abbreviation\n' + \
+ '*[REF]: Abbreviation Reference'
+ self.assertEqual(
+ self.md.convert(text),
+ '<p>Some text with an <abbr title="Abbreviation">ABBR</abbr> '
+ 'and a <abbr title="Abbreviation Reference">REF</abbr>. Ignore '
+ 'REFERENCE and ref.</p>'
+ )
+
+ def testNestedAbbr(self):
+ """ Test Nested Abbreviations. """
+ text = '[ABBR](/foo) and _ABBR_\n\n' + \
+ '*[ABBR]: Abbreviation'
+ self.assertEqual(
+ self.md.convert(text),
+ '<p><a href="/foo"><abbr title="Abbreviation">ABBR</abbr></a> '
+ 'and <em><abbr title="Abbreviation">ABBR</abbr></em></p>'
+ )
+
+
+class TestMetaData(unittest.TestCase):
+ """ Test MetaData extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['meta'])
+
+ def testBasicMetaData(self):
+ """ Test basic metadata. """
+
+ text = '''Title: A Test Doc.
+Author: Waylan Limberg
+ John Doe
+Blank_Data:
+
+The body. This is paragraph one.'''
+ self.assertEqual(
+ self.md.convert(text),
+ '<p>The body. This is paragraph one.</p>'
+ )
+ self.assertEqual(
+ self.md.Meta, {
+ 'author': ['Waylan Limberg', 'John Doe'],
+ 'blank_data': [''],
+ 'title': ['A Test Doc.']
+ }
+ )
+
+ def testYamlMetaData(self):
+ """ Test metadata specified as simple YAML. """
+
+ text = '''---
+Title: A Test Doc.
+Author: [Waylan Limberg, John Doe]
+Blank_Data:
+---
+
+The body. This is paragraph one.'''
+ self.assertEqual(
+ self.md.convert(text),
+ '<p>The body. This is paragraph one.</p>'
+ )
+ self.assertEqual(
+ self.md.Meta, {
+ 'author': ['[Waylan Limberg, John Doe]'],
+ 'blank_data': [''],
+ 'title': ['A Test Doc.']
+ }
+ )
+
+ def testMissingMetaData(self):
+ """ Test document without Meta Data. """
+
+ text = ' Some Code - not extra lines of meta data.'
+ self.assertEqual(
+ self.md.convert(text),
+ '<pre><code>Some Code - not extra lines of meta data.\n'
+ '</code></pre>'
+ )
+ self.assertEqual(self.md.Meta, {})
+
+ def testMetaDataWithoutNewline(self):
+ """ Test document with only metadata and no newline at end."""
+ text = 'title: No newline'
+ self.assertEqual(self.md.convert(text), '')
+ self.assertEqual(self.md.Meta, {'title': ['No newline']})
+
+ def testMetaDataReset(self):
+ """ Test that reset call remove Meta entirely """
+
+ text = '''Title: A Test Doc.
+Author: Waylan Limberg
+ John Doe
+Blank_Data:
+
+The body. This is paragraph one.'''
+ self.md.convert(text)
+
+ self.md.reset()
+ self.assertEqual(self.md.Meta, {})
+
+
+class TestWikiLinks(unittest.TestCase):
+ """ Test Wikilinks Extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['wikilinks'])
+ self.text = "Some text with a [[WikiLink]]."
+
+ def testBasicWikilinks(self):
+ """ Test [[wikilinks]]. """
+
+ self.assertEqual(
+ self.md.convert(self.text),
+ '<p>Some text with a '
+ '<a class="wikilink" href="/WikiLink/">WikiLink</a>.</p>'
+ )
+
+ def testWikilinkWhitespace(self):
+ """ Test whitespace in wikilinks. """
+ self.assertEqual(
+ self.md.convert('[[ foo bar_baz ]]'),
+ '<p><a class="wikilink" href="/foo_bar_baz/">foo bar_baz</a></p>'
+ )
+ self.assertEqual(
+ self.md.convert('foo [[ ]] bar'),
+ '<p>foo bar</p>'
+ )
+
+ def testSimpleSettings(self):
+ """ Test Simple Settings. """
+
+ self.assertEqual(markdown.markdown(
+ self.text, extensions=[
+ markdown.extensions.wikilinks.WikiLinkExtension(
+ base_url='/wiki/',
+ end_url='.html',
+ html_class='foo')
+ ]
+ ),
+ '<p>Some text with a '
+ '<a class="foo" href="/wiki/WikiLink.html">WikiLink</a>.</p>')
+
+ def testComplexSettings(self):
+ """ Test Complex Settings. """
+
+ md = markdown.Markdown(
+ extensions=['wikilinks'],
+ extension_configs={
+ 'wikilinks': [
+ ('base_url', 'http://example.com/'),
+ ('end_url', '.html'),
+ ('html_class', '')
+ ]
+ },
+ safe_mode=True
+ )
+ self.assertEqual(
+ md.convert(self.text),
+ '<p>Some text with a '
+ '<a href="http://example.com/WikiLink.html">WikiLink</a>.</p>'
+ )
+
+ def testWikilinksMetaData(self):
+ """ test MetaData with Wikilinks Extension. """
+
+ text = """wiki_base_url: http://example.com/
+wiki_end_url: .html
+wiki_html_class:
+
+Some text with a [[WikiLink]]."""
+ md = markdown.Markdown(extensions=['meta', 'wikilinks'])
+ self.assertEqual(
+ md.convert(text),
+ '<p>Some text with a '
+ '<a href="http://example.com/WikiLink.html">WikiLink</a>.</p>'
+ )
+
+ # MetaData should not carry over to next document:
+ self.assertEqual(
+ md.convert("No [[MetaData]] here."),
+ '<p>No <a class="wikilink" href="/MetaData/">MetaData</a> '
+ 'here.</p>'
+ )
+
+ def testURLCallback(self):
+ """ Test used of a custom URL builder. """
+
+ from markdown.extensions.wikilinks import WikiLinkExtension
+
+ def my_url_builder(label, base, end):
+ return '/bar/'
+
+ md = markdown.Markdown(extensions=[WikiLinkExtension(build_url=my_url_builder)])
+ self.assertEqual(
+ md.convert('[[foo]]'),
+ '<p><a class="wikilink" href="/bar/">foo</a></p>'
+ )
+
+
+class TestAdmonition(unittest.TestCase):
+ """ Test Admonition Extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['admonition'])
+
+ def testRE(self):
+ RE = self.md.parser.blockprocessors['admonition'].RE
+ tests = [
+ ('!!! note', ('note', None)),
+ ('!!! note "Please Note"', ('note', 'Please Note')),
+ ('!!! note ""', ('note', '')),
+ ]
+ for test, expected in tests:
+ self.assertEqual(RE.match(test).groups(), expected)
+
+
+class TestTOC(TestCaseWithAssertStartsWith):
+ """ Test TOC Extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['toc'])
+
+ def testMarker(self):
+ """ Test TOC with a Marker. """
+ text = '[TOC]\n\n# Header 1\n\n## Header 2'
+ self.assertEqual(
+ self.md.convert(text),
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#header-1">Header 1</a>' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#header-2">Header 2</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n'
+ '<h1 id="header-1">Header 1</h1>\n'
+ '<h2 id="header-2">Header 2</h2>'
+ )
+
+ def testNoMarker(self):
+ """ Test TOC without a Marker. """
+ text = '# Header 1\n\n## Header 2'
+ self.assertEqual(
+ self.md.convert(text),
+ '<h1 id="header-1">Header 1</h1>\n'
+ '<h2 id="header-2">Header 2</h2>'
+ )
+ self.assertEqual(
+ self.md.toc,
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#header-1">Header 1</a>' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#header-2">Header 2</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n'
+ )
+
+ def testAlternateMarker(self):
+ """ Test TOC with user defined marker. """
+ md = markdown.Markdown(
+ extensions=[markdown.extensions.toc.TocExtension(marker='{{marker}}')]
+ )
+ text = '{{marker}}\n\n# Header 1\n\n## Header 2'
+ self.assertEqual(
+ md.convert(text),
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#header-1">Header 1</a>' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#header-2">Header 2</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n'
+ '<h1 id="header-1">Header 1</h1>\n'
+ '<h2 id="header-2">Header 2</h2>'
+ )
+
+ def testDisabledMarker(self):
+ """ Test TOC with disabled marker. """
+ md = markdown.Markdown(
+ extensions=[markdown.extensions.toc.TocExtension(marker='')]
+ )
+ text = '[TOC]\n\n# Header 1\n\n## Header 2'
+ self.assertEqual(
+ md.convert(text),
+ '<p>[TOC]</p>\n'
+ '<h1 id="header-1">Header 1</h1>\n'
+ '<h2 id="header-2">Header 2</h2>'
+ )
+ self.assertStartsWith('<div class="toc">', md.toc)
+
+ def testReset(self):
+ """ Test TOC Reset. """
+ self.assertEqual(self.md.toc, '')
+ self.md.convert('# Header 1\n\n## Header 2')
+ self.assertStartsWith('<div class="toc">', self.md.toc)
+ self.md.reset()
+ self.assertEqual(self.md.toc, '')
+ self.assertEqual(self.md.toc_tokens, [])
+
+ def testUniqueIds(self):
+ """ Test Unique IDs. """
+
+ text = '#Header\n#Header\n#Header'
+ self.assertEqual(
+ self.md.convert(text),
+ '<h1 id="header">Header</h1>\n'
+ '<h1 id="header_1">Header</h1>\n'
+ '<h1 id="header_2">Header</h1>'
+ )
+ self.assertEqual(
+ self.md.toc,
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#header">Header</a></li>\n' # noqa
+ '<li><a href="#header_1">Header</a></li>\n' # noqa
+ '<li><a href="#header_2">Header</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n'
+ )
+ self.assertEqual(self.md.toc_tokens, [
+ {'level': 1, 'id': 'header', 'name': 'Header', 'children': []},
+ {'level': 1, 'id': 'header_1', 'name': 'Header', 'children': []},
+ {'level': 1, 'id': 'header_2', 'name': 'Header', 'children': []},
+ ])
+
+ def testHtmlEntities(self):
+ """ Test Headers with HTML Entities. """
+ text = '# Foo &amp; bar'
+ self.assertEqual(
+ self.md.convert(text),
+ '<h1 id="foo-bar">Foo &amp; bar</h1>'
+ )
+ self.assertEqual(
+ self.md.toc,
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#foo-bar">Foo &amp; bar</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n'
+ )
+ self.assertEqual(self.md.toc_tokens, [
+ {'level': 1, 'id': 'foo-bar', 'name': 'Foo &amp; bar', 'children': []},
+ ])
+
+ def testHtmlSpecialChars(self):
+ """ Test Headers with HTML special characters. """
+ text = '# Foo > & bar'
+ self.assertEqual(
+ self.md.convert(text),
+ '<h1 id="foo-bar">Foo &gt; &amp; bar</h1>'
+ )
+ self.assertEqual(
+ self.md.toc,
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#foo-bar">Foo &gt; &amp; bar</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n'
+ )
+ self.assertEqual(self.md.toc_tokens, [
+ {'level': 1, 'id': 'foo-bar', 'name': 'Foo &gt; &amp; bar', 'children': []},
+ ])
+
+ def testRawHtml(self):
+ """ Test Headers with raw HTML. """
+ text = '# Foo <b>Bar</b> Baz.'
+ self.assertEqual(
+ self.md.convert(text),
+ '<h1 id="foo-bar-baz">Foo <b>Bar</b> Baz.</h1>'
+ )
+ self.assertEqual(
+ self.md.toc,
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#foo-bar-baz">Foo Bar Baz.</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n'
+ )
+ self.assertEqual(self.md.toc_tokens, [
+ {'level': 1, 'id': 'foo-bar-baz', 'name': 'Foo Bar Baz.', 'children': []},
+ ])
+
+ def testBaseLevel(self):
+ """ Test Header Base Level. """
+ md = markdown.Markdown(
+ extensions=[markdown.extensions.toc.TocExtension(baselevel=5)]
+ )
+ text = '# Some Header\n\n## Next Level\n\n### Too High'
+ self.assertEqual(
+ md.convert(text),
+ '<h5 id="some-header">Some Header</h5>\n'
+ '<h6 id="next-level">Next Level</h6>\n'
+ '<h6 id="too-high">Too High</h6>'
+ )
+ self.assertEqual(
+ md.toc,
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#some-header">Some Header</a>' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#next-level">Next Level</a></li>\n' # noqa
+ '<li><a href="#too-high">Too High</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n'
+ )
+ self.assertEqual(md.toc_tokens, [
+ {'level': 5, 'id': 'some-header', 'name': 'Some Header', 'children': [
+ {'level': 6, 'id': 'next-level', 'name': 'Next Level', 'children': []},
+ {'level': 6, 'id': 'too-high', 'name': 'Too High', 'children': []},
+ ]},
+ ])
+
+ def testHeaderInlineMarkup(self):
+ """ Test Headers with inline markup. """
+
+ text = '#Some *Header* with [markup](http://example.com).'
+ self.assertEqual(
+ self.md.convert(text),
+ '<h1 id="some-header-with-markup">Some <em>Header</em> with '
+ '<a href="http://example.com">markup</a>.</h1>'
+ )
+ self.assertEqual(
+ self.md.toc,
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#some-header-with-markup">' # noqa
+ 'Some Header with markup.</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n'
+ )
+ self.assertEqual(self.md.toc_tokens, [
+ {'level': 1, 'id': 'some-header-with-markup', 'name': 'Some Header with markup.', 'children': []},
+ ])
+
+ def testTitle(self):
+ """ Test TOC Title. """
+ md = markdown.Markdown(
+ extensions=[markdown.extensions.toc.TocExtension(title='Table of Contents')]
+ )
+ md.convert('# Header 1\n\n## Header 2')
+ self.assertStartsWith(
+ '<div class="toc"><span class="toctitle">Table of Contents</span><ul>',
+ md.toc
+ )
+
+ def testWithAttrList(self):
+ """ Test TOC with attr_list Extension. """
+ md = markdown.Markdown(extensions=['toc', 'attr_list'])
+ text = ('# Header 1\n\n'
+ '## Header 2 { #foo }\n\n'
+ '## Header 3 { data-toc-label="Foo Bar" }\n\n'
+ '# Header 4 { data-toc-label="Foo > Baz" }\n\n'
+ '# Header 5 { data-toc-label="Foo <b>Quux</b>" }')
+
+ self.assertEqual(
+ md.convert(text),
+ '<h1 id="header-1">Header 1</h1>\n'
+ '<h2 id="foo">Header 2</h2>\n'
+ '<h2 id="header-3">Header 3</h2>\n'
+ '<h1 id="header-4">Header 4</h1>\n'
+ '<h1 id="header-5">Header 5</h1>'
+ )
+ self.assertEqual(
+ md.toc,
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#header-1">Header 1</a>' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#foo">Header 2</a></li>\n' # noqa
+ '<li><a href="#header-3">Foo Bar</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</li>\n' # noqa
+ '<li><a href="#header-4">Foo &gt; Baz</a></li>\n' # noqa
+ '<li><a href="#header-5">Foo Quux</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n'
+ )
+ self.assertEqual(md.toc_tokens, [
+ {'level': 1, 'id': 'header-1', 'name': 'Header 1', 'children': [
+ {'level': 2, 'id': 'foo', 'name': 'Header 2', 'children': []},
+ {'level': 2, 'id': 'header-3', 'name': 'Foo Bar', 'children': []}
+ ]},
+ {'level': 1, 'id': 'header-4', 'name': 'Foo &gt; Baz', 'children': []},
+ {'level': 1, 'id': 'header-5', 'name': 'Foo Quux', 'children': []},
+ ])
+
+ def testUniqueFunc(self):
+ """ Test 'unique' function. """
+ from markdown.extensions.toc import unique
+ ids = {'foo'}
+ self.assertEqual(unique('foo', ids), 'foo_1')
+ self.assertEqual(ids, {'foo', 'foo_1'})
+
+ def testTocInHeaders(self):
+
+ text = '[TOC]\n#[TOC]'
+ self.assertEqual(
+ self.md.convert(text),
+ '<div class="toc">\n' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#toc">[TOC]</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n' # noqa
+ '<h1 id="toc">[TOC]</h1>' # noqa
+ )
+
+ text = '#[TOC]\n[TOC]'
+ self.assertEqual(
+ self.md.convert(text),
+ '<h1 id="toc">[TOC]</h1>\n' # noqa
+ '<div class="toc">\n' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#toc">[TOC]</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>' # noqa
+ )
+
+ text = '[TOC]\n# *[TOC]*'
+ self.assertEqual(
+ self.md.convert(text),
+ '<div class="toc">\n' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#toc">[TOC]</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n' # noqa
+ '<h1 id="toc"><em>[TOC]</em></h1>' # noqa
+ )
+
+
+class TestSmarty(unittest.TestCase):
+ def setUp(self):
+ config = {
+ 'smarty': [
+ ('smart_angled_quotes', True),
+ ('substitutions', {
+ 'ndash': '\u2013',
+ 'mdash': '\u2014',
+ 'ellipsis': '\u2026',
+ 'left-single-quote': '&sbquo;', # sb is not a typo!
+ 'right-single-quote': '&lsquo;',
+ 'left-double-quote': '&bdquo;',
+ 'right-double-quote': '&ldquo;',
+ 'left-angle-quote': '[',
+ 'right-angle-quote': ']',
+ }),
+ ]
+ }
+ self.md = markdown.Markdown(
+ extensions=['smarty'],
+ extension_configs=config
+ )
+
+ def testCustomSubstitutions(self):
+ text = """<< The "Unicode char of the year 2014"
+is the 'mdash': ---
+Must not be confused with 'ndash' (--) ... >>
+"""
+ correct = """<p>[ The &bdquo;Unicode char of the year 2014&ldquo;
+is the &sbquo;mdash&lsquo;: \u2014
+Must not be confused with &sbquo;ndash&lsquo; (\u2013) \u2026 ]</p>"""
+ self.assertEqual(self.md.convert(text), correct)
diff --git a/tests/test_legacy.py b/tests/test_legacy.py
new file mode 100644
index 0000000..62bc075
--- /dev/null
+++ b/tests/test_legacy.py
@@ -0,0 +1,194 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import LegacyTestCase, Kwargs
+import os
+import warnings
+
+# Warnings should cause tests to fail...
+warnings.simplefilter('error')
+# Except for the warnings that shouldn't
+warnings.filterwarnings('default', category=PendingDeprecationWarning)
+warnings.filterwarnings('default', category=DeprecationWarning, module='markdown')
+
+parent_test_dir = os.path.abspath(os.path.dirname(__file__))
+
+
+class TestBasic(LegacyTestCase):
+ location = os.path.join(parent_test_dir, 'basic')
+
+
+class TestMisc(LegacyTestCase):
+ location = os.path.join(parent_test_dir, 'misc')
+
+
+class TestPhp(LegacyTestCase):
+ """
+ Notes on "excluded" tests:
+
+ Quotes in attributes: attributes get output in different order
+
+ Inline HTML (Span): Backtick in raw HTML attribute TODO: fixme
+
+ Backslash escapes: Weird whitespace issue in output
+
+ Ins & del: Our behavior follows markdown.pl I think PHP is wrong here
+
+ Auto Links: TODO: fix raw HTML so is doesn't match <hr@example.com> as a <hr>.
+
+ Empty List Item: We match markdown.pl here. Maybe someday we'll support this
+
+ Headers: TODO: fix headers to not require blank line before
+
+ Mixed OLs and ULs: We match markdown.pl here. I think PHP is wrong here
+
+ Emphasis: We have various minor differences in combined & incorrect em markup.
+ Maybe fix a few of them - but most aren't too important
+
+ Code block in a list item: We match markdown.pl - not sure how php gets that output??
+
+ PHP-Specific Bugs: Not sure what to make of the escaping stuff here.
+ Why is PHP not removing a blackslash?
+ """
+ location = os.path.join(parent_test_dir, 'php')
+ normalize = True
+ input_ext = '.text'
+ output_ext = '.xhtml'
+ exclude = [
+ 'Quotes_in_attributes',
+ 'Inline_HTML_(Span)',
+ 'Backslash_escapes',
+ 'Ins_&_del',
+ 'Auto_Links',
+ 'Empty_List_Item',
+ 'Headers',
+ 'Mixed_OLs_and_ULs',
+ 'Emphasis',
+ 'Code_block_in_a_list_item',
+ 'PHP_Specific_Bugs'
+ ]
+
+
+# class TestPhpExtra(LegacyTestCase):
+# location = os.path.join(parent_test_dir, 'php/extra')
+# normalize = True
+# input_ext = '.text'
+# output_ext = '.xhtml'
+# default_kwargs = Kwargs(extensions=['extra'])
+
+
+class TestPl2004(LegacyTestCase):
+ location = os.path.join(parent_test_dir, 'pl/Tests_2004')
+ normalize = True
+ input_ext = '.text'
+ exclude = ['Yuri_Footnotes', 'Yuri_Attributes']
+
+
+class TestPl2007(LegacyTestCase):
+ """
+ Notes on "excluded" tests:
+
+ Images: the attributes don't get ordered the same so we skip this
+
+ Code Blocks: some weird whitespace issue
+
+ Links, reference style: weird issue with nested brackets TODO: fixme
+
+ Backslash escapes: backticks in raw html attributes TODO: fixme
+
+ Code Spans: more backticks in raw html attributes TODO: fixme
+ """
+ location = os.path.join(parent_test_dir, 'pl/Tests_2007')
+ normalize = True
+ input_ext = '.text'
+ exclude = [
+ 'Images',
+ 'Code_Blocks',
+ 'Links,_reference_style',
+ 'Backslash_escapes',
+ 'Code_Spans'
+ ]
+
+
+class TestExtensions(LegacyTestCase):
+ location = os.path.join(parent_test_dir, 'extensions')
+ exclude = ['codehilite']
+
+ attr_list = Kwargs(extensions=['attr_list', 'def_list', 'smarty'])
+
+ codehilite = Kwargs(extensions=['codehilite'])
+
+ toc = Kwargs(extensions=['toc'])
+
+ toc_invalid = Kwargs(extensions=['toc'])
+
+ toc_out_of_order = Kwargs(extensions=['toc'])
+
+ toc_nested = Kwargs(
+ extensions=['toc'],
+ extension_configs={'toc': {'permalink': True}}
+ )
+
+ toc_nested2 = Kwargs(
+ extensions=['toc'],
+ extension_configs={'toc': {'permalink': "[link]"}}
+ )
+
+ toc_nested_list = Kwargs(extensions=['toc'])
+
+ wikilinks = Kwargs(extensions=['wikilinks'])
+
+ github_flavored = Kwargs(extensions=['fenced_code'])
+
+ sane_lists = Kwargs(extensions=['sane_lists'])
+
+ nl2br_w_attr_list = Kwargs(extensions=['nl2br', 'attr_list'])
+
+ admonition = Kwargs(extensions=['admonition'])
+
+ smarty = Kwargs(
+ extensions=['smarty'],
+ extension_configs={'smarty': {'smart_angled_quotes': True}}
+ )
+
+
+class TestExtensionsExtra(LegacyTestCase):
+ location = os.path.join(parent_test_dir, 'extensions/extra')
+ default_kwargs = Kwargs(extensions=['extra'])
+
+ loose_def_list = Kwargs(extensions=['def_list'])
+
+ simple_def_lists = Kwargs(extensions=['def_list'])
+
+ abbr = Kwargs(extensions=['abbr'])
+
+ footnotes = Kwargs(extensions=['footnotes'])
+
+ extra_config = Kwargs(
+ extensions=['extra'],
+ extension_configs={
+ 'extra': {
+ 'footnotes': {
+ 'PLACE_MARKER': '~~~placemarker~~~'
+ }
+ }
+ }
+ )
diff --git a/tests/test_meta.py b/tests/test_meta.py
new file mode 100644
index 0000000..10a2d33
--- /dev/null
+++ b/tests/test_meta.py
@@ -0,0 +1,24 @@
+import unittest
+from markdown.__meta__ import _get_version, __version__
+
+
+class TestVersion(unittest.TestCase):
+
+ def test_get_version(self):
+ """Test that _get_version formats __version_info__ as required by PEP 440."""
+
+ self.assertEqual(_get_version((1, 1, 2, 'dev', 0)), "1.1.2.dev0")
+ self.assertEqual(_get_version((1, 1, 2, 'alpha', 1)), "1.1.2a1")
+ self.assertEqual(_get_version((1, 2, 0, 'beta', 2)), "1.2b2")
+ self.assertEqual(_get_version((1, 2, 0, 'rc', 4)), "1.2rc4")
+ self.assertEqual(_get_version((1, 2, 0, 'final', 0)), "1.2")
+
+ def test__version__IsValid(self):
+ """Test that __version__ is valid and normalized."""
+
+ try:
+ import packaging.version
+ except ImportError:
+ from pkg_resources.extern import packaging
+
+ self.assertEqual(__version__, str(packaging.version.Version(__version__)))
diff --git a/tests/test_syntax/__init__.py b/tests/test_syntax/__init__.py
new file mode 100644
index 0000000..564ba3b
--- /dev/null
+++ b/tests/test_syntax/__init__.py
@@ -0,0 +1,20 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
diff --git a/tests/test_syntax/blocks/__init__.py b/tests/test_syntax/blocks/__init__.py
new file mode 100644
index 0000000..564ba3b
--- /dev/null
+++ b/tests/test_syntax/blocks/__init__.py
@@ -0,0 +1,20 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
diff --git a/tests/test_syntax/blocks/test_blockquotes.py b/tests/test_syntax/blocks/test_blockquotes.py
new file mode 100644
index 0000000..3422f9f
--- /dev/null
+++ b/tests/test_syntax/blocks/test_blockquotes.py
@@ -0,0 +1,51 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2020 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase, recursionlimit
+
+
+class TestBlockquoteBlocks(TestCase):
+
+ # TODO: Move legacy tests here
+
+ def test_nesting_limit(self):
+ # Test that the nesting limit is within 100 levels of recursion limit. Future code changes could cause the
+ # recursion limit to need adjusted here. We need to account for all of Markdown's internal calls. Finally, we
+ # need to account for the 100 level cushion which we are testing.
+ with recursionlimit(120):
+ self.assertMarkdownRenders(
+ '>>>>>>>>>>',
+ self.dedent(
+ """
+ <blockquote>
+ <blockquote>
+ <blockquote>
+ <blockquote>
+ <blockquote>
+ <p>&gt;&gt;&gt;&gt;&gt;</p>
+ </blockquote>
+ </blockquote>
+ </blockquote>
+ </blockquote>
+ </blockquote>
+ """
+ )
+ )
diff --git a/tests/test_syntax/blocks/test_code_blocks.py b/tests/test_syntax/blocks/test_code_blocks.py
new file mode 100644
index 0000000..54b6860
--- /dev/null
+++ b/tests/test_syntax/blocks/test_code_blocks.py
@@ -0,0 +1,88 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestCodeBlocks(TestCase):
+
+ def test_spaced_codeblock(self):
+ self.assertMarkdownRenders(
+ ' # A code block.',
+
+ self.dedent(
+ """
+ <pre><code># A code block.
+ </code></pre>
+ """
+ )
+ )
+
+ def test_tabbed_codeblock(self):
+ self.assertMarkdownRenders(
+ '\t# A code block.',
+
+ self.dedent(
+ """
+ <pre><code># A code block.
+ </code></pre>
+ """
+ )
+ )
+
+ def test_multiline_codeblock(self):
+ self.assertMarkdownRenders(
+ ' # Line 1\n # Line 2\n',
+
+ self.dedent(
+ """
+ <pre><code># Line 1
+ # Line 2
+ </code></pre>
+ """
+ )
+ )
+
+ def test_codeblock_with_blankline(self):
+ self.assertMarkdownRenders(
+ ' # Line 1\n\n # Line 2\n',
+
+ self.dedent(
+ """
+ <pre><code># Line 1
+
+ # Line 2
+ </code></pre>
+ """
+ )
+ )
+
+ def test_codeblock_escape(self):
+ self.assertMarkdownRenders(
+ ' <foo & bar>',
+
+ self.dedent(
+ """
+ <pre><code>&lt;foo &amp; bar&gt;
+ </code></pre>
+ """
+ )
+ )
diff --git a/tests/test_syntax/blocks/test_headers.py b/tests/test_syntax/blocks/test_headers.py
new file mode 100644
index 0000000..ca065a5
--- /dev/null
+++ b/tests/test_syntax/blocks/test_headers.py
@@ -0,0 +1,729 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+import unittest
+from markdown.test_tools import TestCase
+
+
+class TestSetextHeaders(TestCase):
+
+ def test_setext_h1(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ This is an H1
+ =============
+ """
+ ),
+
+ '<h1>This is an H1</h1>'
+ )
+
+ def test_setext_h2(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ This is an H2
+ -------------
+ """
+ ),
+
+ '<h2>This is an H2</h2>'
+ )
+
+ def test_setext_h1_mismatched_length(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ This is an H1
+ ===
+ """
+ ),
+
+ '<h1>This is an H1</h1>'
+ )
+
+ def test_setext_h2_mismatched_length(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ This is an H2
+ ---
+ """
+ ),
+
+ '<h2>This is an H2</h2>'
+ )
+
+ def test_setext_h1_followed_by_p(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ This is an H1
+ =============
+ Followed by a Paragraph with no blank line.
+ """
+ ),
+ self.dedent(
+ """
+ <h1>This is an H1</h1>
+ <p>Followed by a Paragraph with no blank line.</p>
+ """
+ )
+ )
+
+ def test_setext_h2_followed_by_p(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ This is an H2
+ -------------
+ Followed by a Paragraph with no blank line.
+ """
+ ),
+ self.dedent(
+ """
+ <h2>This is an H2</h2>
+ <p>Followed by a Paragraph with no blank line.</p>
+ """
+ )
+ )
+
+ # TODO: fix this
+ # see https://johnmacfarlane.net/babelmark2/?normalize=1&text=Paragraph%0AAn+H1%0A%3D%3D%3D%3D%3D
+ @unittest.skip('This is broken in Python-Markdown')
+ def test_p_followed_by_setext_h1(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ This is a Paragraph.
+ Followed by an H1 with no blank line.
+ =====================================
+ """
+ ),
+ self.dedent(
+ """
+ <p>This is a Paragraph.</p>
+ <h1>Followed by an H1 with no blank line.</h1>
+ """
+ )
+ )
+
+ # TODO: fix this
+ # see https://johnmacfarlane.net/babelmark2/?normalize=1&text=Paragraph%0AAn+H2%0A-----
+ @unittest.skip('This is broken in Python-Markdown')
+ def test_p_followed_by_setext_h2(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ This is a Paragraph.
+ Followed by an H2 with no blank line.
+ -------------------------------------
+ """
+ ),
+ self.dedent(
+ """
+ <p>This is a Paragraph.</p>
+ <h2>Followed by an H2 with no blank line.</h2>
+ """
+ )
+ )
+
+
+class TestHashHeaders(TestCase):
+
+ def test_hash_h1_open(self):
+ self.assertMarkdownRenders(
+ '# This is an H1',
+
+ '<h1>This is an H1</h1>'
+ )
+
+ def test_hash_h2_open(self):
+ self.assertMarkdownRenders(
+ '## This is an H2',
+
+ '<h2>This is an H2</h2>'
+ )
+
+ def test_hash_h3_open(self):
+ self.assertMarkdownRenders(
+ '### This is an H3',
+
+ '<h3>This is an H3</h3>'
+ )
+
+ def test_hash_h4_open(self):
+ self.assertMarkdownRenders(
+ '#### This is an H4',
+
+ '<h4>This is an H4</h4>'
+ )
+
+ def test_hash_h5_open(self):
+ self.assertMarkdownRenders(
+ '##### This is an H5',
+
+ '<h5>This is an H5</h5>'
+ )
+
+ def test_hash_h6_open(self):
+ self.assertMarkdownRenders(
+ '###### This is an H6',
+
+ '<h6>This is an H6</h6>'
+ )
+
+ def test_hash_gt6_open(self):
+ self.assertMarkdownRenders(
+ '####### This is an H6',
+
+ '<h6># This is an H6</h6>'
+ )
+
+ def test_hash_h1_open_missing_space(self):
+ self.assertMarkdownRenders(
+ '#This is an H1',
+
+ '<h1>This is an H1</h1>'
+ )
+
+ def test_hash_h2_open_missing_space(self):
+ self.assertMarkdownRenders(
+ '##This is an H2',
+
+ '<h2>This is an H2</h2>'
+ )
+
+ def test_hash_h3_open_missing_space(self):
+ self.assertMarkdownRenders(
+ '###This is an H3',
+
+ '<h3>This is an H3</h3>'
+ )
+
+ def test_hash_h4_open_missing_space(self):
+ self.assertMarkdownRenders(
+ '####This is an H4',
+
+ '<h4>This is an H4</h4>'
+ )
+
+ def test_hash_h5_open_missing_space(self):
+ self.assertMarkdownRenders(
+ '#####This is an H5',
+
+ '<h5>This is an H5</h5>'
+ )
+
+ def test_hash_h6_open_missing_space(self):
+ self.assertMarkdownRenders(
+ '######This is an H6',
+
+ '<h6>This is an H6</h6>'
+ )
+
+ def test_hash_gt6_open_missing_space(self):
+ self.assertMarkdownRenders(
+ '#######This is an H6',
+
+ '<h6>#This is an H6</h6>'
+ )
+
+ def test_hash_h1_closed(self):
+ self.assertMarkdownRenders(
+ '# This is an H1 #',
+
+ '<h1>This is an H1</h1>'
+ )
+
+ def test_hash_h2_closed(self):
+ self.assertMarkdownRenders(
+ '## This is an H2 ##',
+
+ '<h2>This is an H2</h2>'
+ )
+
+ def test_hash_h3_closed(self):
+ self.assertMarkdownRenders(
+ '### This is an H3 ###',
+
+ '<h3>This is an H3</h3>'
+ )
+
+ def test_hash_h4_closed(self):
+ self.assertMarkdownRenders(
+ '#### This is an H4 ####',
+
+ '<h4>This is an H4</h4>'
+ )
+
+ def test_hash_h5_closed(self):
+ self.assertMarkdownRenders(
+ '##### This is an H5 #####',
+
+ '<h5>This is an H5</h5>'
+ )
+
+ def test_hash_h6_closed(self):
+ self.assertMarkdownRenders(
+ '###### This is an H6 ######',
+
+ '<h6>This is an H6</h6>'
+ )
+
+ def test_hash_gt6_closed(self):
+ self.assertMarkdownRenders(
+ '####### This is an H6 #######',
+
+ '<h6># This is an H6</h6>'
+ )
+
+ def test_hash_h1_closed_missing_space(self):
+ self.assertMarkdownRenders(
+ '#This is an H1#',
+
+ '<h1>This is an H1</h1>'
+ )
+
+ def test_hash_h2_closed_missing_space(self):
+ self.assertMarkdownRenders(
+ '##This is an H2##',
+
+ '<h2>This is an H2</h2>'
+ )
+
+ def test_hash_h3_closed_missing_space(self):
+ self.assertMarkdownRenders(
+ '###This is an H3###',
+
+ '<h3>This is an H3</h3>'
+ )
+
+ def test_hash_h4_closed_missing_space(self):
+ self.assertMarkdownRenders(
+ '####This is an H4####',
+
+ '<h4>This is an H4</h4>'
+ )
+
+ def test_hash_h5_closed_missing_space(self):
+ self.assertMarkdownRenders(
+ '#####This is an H5#####',
+
+ '<h5>This is an H5</h5>'
+ )
+
+ def test_hash_h6_closed_missing_space(self):
+ self.assertMarkdownRenders(
+ '######This is an H6######',
+
+ '<h6>This is an H6</h6>'
+ )
+
+ def test_hash_gt6_closed_missing_space(self):
+ self.assertMarkdownRenders(
+ '#######This is an H6#######',
+
+ '<h6>#This is an H6</h6>'
+ )
+
+ def test_hash_h1_closed_mismatch(self):
+ self.assertMarkdownRenders(
+ '# This is an H1 ##',
+
+ '<h1>This is an H1</h1>'
+ )
+
+ def test_hash_h2_closed_mismatch(self):
+ self.assertMarkdownRenders(
+ '## This is an H2 #',
+
+ '<h2>This is an H2</h2>'
+ )
+
+ def test_hash_h3_closed_mismatch(self):
+ self.assertMarkdownRenders(
+ '### This is an H3 #',
+
+ '<h3>This is an H3</h3>'
+ )
+
+ def test_hash_h4_closed_mismatch(self):
+ self.assertMarkdownRenders(
+ '#### This is an H4 #',
+
+ '<h4>This is an H4</h4>'
+ )
+
+ def test_hash_h5_closed_mismatch(self):
+ self.assertMarkdownRenders(
+ '##### This is an H5 #',
+
+ '<h5>This is an H5</h5>'
+ )
+
+ def test_hash_h6_closed_mismatch(self):
+ self.assertMarkdownRenders(
+ '###### This is an H6 #',
+
+ '<h6>This is an H6</h6>'
+ )
+
+ def test_hash_gt6_closed_mismatch(self):
+ self.assertMarkdownRenders(
+ '####### This is an H6 ##################',
+
+ '<h6># This is an H6</h6>'
+ )
+
+ def test_hash_h1_followed_by_p(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ # This is an H1
+ Followed by a Paragraph with no blank line.
+ """
+ ),
+ self.dedent(
+ """
+ <h1>This is an H1</h1>
+ <p>Followed by a Paragraph with no blank line.</p>
+ """
+ )
+ )
+
+ def test_hash_h2_followed_by_p(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ## This is an H2
+ Followed by a Paragraph with no blank line.
+ """
+ ),
+ self.dedent(
+ """
+ <h2>This is an H2</h2>
+ <p>Followed by a Paragraph with no blank line.</p>
+ """
+ )
+ )
+
+ def test_hash_h3_followed_by_p(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ### This is an H3
+ Followed by a Paragraph with no blank line.
+ """
+ ),
+ self.dedent(
+ """
+ <h3>This is an H3</h3>
+ <p>Followed by a Paragraph with no blank line.</p>
+ """
+ )
+ )
+
+ def test_hash_h4_followed_by_p(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ #### This is an H4
+ Followed by a Paragraph with no blank line.
+ """
+ ),
+ self.dedent(
+ """
+ <h4>This is an H4</h4>
+ <p>Followed by a Paragraph with no blank line.</p>
+ """
+ )
+ )
+
+ def test_hash_h5_followed_by_p(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ##### This is an H5
+ Followed by a Paragraph with no blank line.
+ """
+ ),
+ self.dedent(
+ """
+ <h5>This is an H5</h5>
+ <p>Followed by a Paragraph with no blank line.</p>
+ """
+ )
+ )
+
+ def test_hash_h6_followed_by_p(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ###### This is an H6
+ Followed by a Paragraph with no blank line.
+ """
+ ),
+ self.dedent(
+ """
+ <h6>This is an H6</h6>
+ <p>Followed by a Paragraph with no blank line.</p>
+ """
+ )
+ )
+
+ def test_hash_h1_leading_space(self):
+ self.assertMarkdownRenders(
+ ' # This is an H1',
+
+ '<p># This is an H1</p>'
+ )
+
+ def test_hash_h2_leading_space(self):
+ self.assertMarkdownRenders(
+ ' ## This is an H2',
+
+ '<p>## This is an H2</p>'
+ )
+
+ def test_hash_h3_leading_space(self):
+ self.assertMarkdownRenders(
+ ' ### This is an H3',
+
+ '<p>### This is an H3</p>'
+ )
+
+ def test_hash_h4_leading_space(self):
+ self.assertMarkdownRenders(
+ ' #### This is an H4',
+
+ '<p>#### This is an H4</p>'
+ )
+
+ def test_hash_h5_leading_space(self):
+ self.assertMarkdownRenders(
+ ' ##### This is an H5',
+
+ '<p>##### This is an H5</p>'
+ )
+
+ def test_hash_h6_leading_space(self):
+ self.assertMarkdownRenders(
+ ' ###### This is an H6',
+
+ '<p>###### This is an H6</p>'
+ )
+
+ def test_hash_h1_open_trailing_space(self):
+ self.assertMarkdownRenders(
+ '# This is an H1 ',
+
+ '<h1>This is an H1</h1>'
+ )
+
+ def test_hash_h2_open_trailing_space(self):
+ self.assertMarkdownRenders(
+ '## This is an H2 ',
+
+ '<h2>This is an H2</h2>'
+ )
+
+ def test_hash_h3_open_trailing_space(self):
+ self.assertMarkdownRenders(
+ '### This is an H3 ',
+
+ '<h3>This is an H3</h3>'
+ )
+
+ def test_hash_h4_open_trailing_space(self):
+ self.assertMarkdownRenders(
+ '#### This is an H4 ',
+
+ '<h4>This is an H4</h4>'
+ )
+
+ def test_hash_h5_open_trailing_space(self):
+ self.assertMarkdownRenders(
+ '##### This is an H5 ',
+
+ '<h5>This is an H5</h5>'
+ )
+
+ def test_hash_h6_open_trailing_space(self):
+ self.assertMarkdownRenders(
+ '###### This is an H6 ',
+
+ '<h6>This is an H6</h6>'
+ )
+
+ def test_hash_gt6_open_trailing_space(self):
+ self.assertMarkdownRenders(
+ '####### This is an H6 ',
+
+ '<h6># This is an H6</h6>'
+ )
+
+ # TODO: Possibly change the following behavior. While this follows the behavior
+ # of markdown.pl, it is rather uncommon and not necessarily intuitive.
+ # See: https://johnmacfarlane.net/babelmark2/?normalize=1&text=%23+This+is+an+H1+%23+
+ def test_hash_h1_closed_trailing_space(self):
+ self.assertMarkdownRenders(
+ '# This is an H1 # ',
+
+ '<h1>This is an H1 #</h1>'
+ )
+
+ def test_hash_h2_closed_trailing_space(self):
+ self.assertMarkdownRenders(
+ '## This is an H2 ## ',
+
+ '<h2>This is an H2 ##</h2>'
+ )
+
+ def test_hash_h3_closed_trailing_space(self):
+ self.assertMarkdownRenders(
+ '### This is an H3 ### ',
+
+ '<h3>This is an H3 ###</h3>'
+ )
+
+ def test_hash_h4_closed_trailing_space(self):
+ self.assertMarkdownRenders(
+ '#### This is an H4 #### ',
+
+ '<h4>This is an H4 ####</h4>'
+ )
+
+ def test_hash_h5_closed_trailing_space(self):
+ self.assertMarkdownRenders(
+ '##### This is an H5 ##### ',
+
+ '<h5>This is an H5 #####</h5>'
+ )
+
+ def test_hash_h6_closed_trailing_space(self):
+ self.assertMarkdownRenders(
+ '###### This is an H6 ###### ',
+
+ '<h6>This is an H6 ######</h6>'
+ )
+
+ def test_hash_gt6_closed_trailing_space(self):
+ self.assertMarkdownRenders(
+ '####### This is an H6 ####### ',
+
+ '<h6># This is an H6 #######</h6>'
+ )
+
+ def test_no_blank_lines_between_hashs(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ # This is an H1
+ ## This is an H2
+ """
+ ),
+ self.dedent(
+ """
+ <h1>This is an H1</h1>
+ <h2>This is an H2</h2>
+ """
+ )
+ )
+
+ def test_random_hash_levels(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ### H3
+ ###### H6
+ # H1
+ ##### H5
+ #### H4
+ ## H2
+ ### H3
+ """
+ ),
+ self.dedent(
+ """
+ <h3>H3</h3>
+ <h6>H6</h6>
+ <h1>H1</h1>
+ <h5>H5</h5>
+ <h4>H4</h4>
+ <h2>H2</h2>
+ <h3>H3</h3>
+ """
+ )
+ )
+
+ def test_hash_followed_by_p(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ # This is an H1
+ Followed by a Paragraph with no blank line.
+ """
+ ),
+ self.dedent(
+ """
+ <h1>This is an H1</h1>
+ <p>Followed by a Paragraph with no blank line.</p>
+ """
+ )
+ )
+
+ def test_p_followed_by_hash(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ This is a Paragraph.
+ # Followed by an H1 with no blank line.
+ """
+ ),
+ self.dedent(
+ """
+ <p>This is a Paragraph.</p>
+ <h1>Followed by an H1 with no blank line.</h1>
+ """
+ )
+ )
+
+ def test_escaped_hash(self):
+ self.assertMarkdownRenders(
+ "### H3 \\###",
+ self.dedent(
+ """
+ <h3>H3 #</h3>
+ """
+ )
+ )
+
+ def test_unescaped_hash(self):
+ self.assertMarkdownRenders(
+ "### H3 \\\\###",
+ self.dedent(
+ """
+ <h3>H3 \\</h3>
+ """
+ )
+ )
diff --git a/tests/test_syntax/blocks/test_hr.py b/tests/test_syntax/blocks/test_hr.py
new file mode 100644
index 0000000..85a51b3
--- /dev/null
+++ b/tests/test_syntax/blocks/test_hr.py
@@ -0,0 +1,402 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestHorizontalRules(TestCase):
+
+ def test_hr_asterisks(self):
+ self.assertMarkdownRenders(
+ '***',
+
+ '<hr />'
+ )
+
+ def test_hr_asterisks_spaces(self):
+ self.assertMarkdownRenders(
+ '* * *',
+
+ '<hr />'
+ )
+
+ def test_hr_asterisks_long(self):
+ self.assertMarkdownRenders(
+ '*******',
+
+ '<hr />'
+ )
+
+ def test_hr_asterisks_spaces_long(self):
+ self.assertMarkdownRenders(
+ '* * * * * * *',
+
+ '<hr />'
+ )
+
+ def test_hr_asterisks_1_indent(self):
+ self.assertMarkdownRenders(
+ ' ***',
+
+ '<hr />'
+ )
+
+ def test_hr_asterisks_spaces_1_indent(self):
+ self.assertMarkdownRenders(
+ ' * * *',
+
+ '<hr />'
+ )
+
+ def test_hr_asterisks_2_indent(self):
+ self.assertMarkdownRenders(
+ ' ***',
+
+ '<hr />'
+ )
+
+ def test_hr_asterisks_spaces_2_indent(self):
+ self.assertMarkdownRenders(
+ ' * * *',
+
+ '<hr />'
+ )
+
+ def test_hr_asterisks_3_indent(self):
+ self.assertMarkdownRenders(
+ ' ***',
+
+ '<hr />'
+ )
+
+ def test_hr_asterisks_spaces_3_indent(self):
+ self.assertMarkdownRenders(
+ ' * * *',
+
+ '<hr />'
+ )
+
+ def test_hr_asterisks_trailing_space(self):
+ self.assertMarkdownRenders(
+ '*** ',
+
+ '<hr />'
+ )
+
+ def test_hr_asterisks_spaces_trailing_space(self):
+ self.assertMarkdownRenders(
+ '* * * ',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens(self):
+ self.assertMarkdownRenders(
+ '---',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens_spaces(self):
+ self.assertMarkdownRenders(
+ '- - -',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens_long(self):
+ self.assertMarkdownRenders(
+ '-------',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens_spaces_long(self):
+ self.assertMarkdownRenders(
+ '- - - - - - -',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens_1_indent(self):
+ self.assertMarkdownRenders(
+ ' ---',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens_spaces_1_indent(self):
+ self.assertMarkdownRenders(
+ ' - - -',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens_2_indent(self):
+ self.assertMarkdownRenders(
+ ' ---',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens_spaces_2_indent(self):
+ self.assertMarkdownRenders(
+ ' - - -',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens_3_indent(self):
+ self.assertMarkdownRenders(
+ ' ---',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens_spaces_3_indent(self):
+ self.assertMarkdownRenders(
+ ' - - -',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens_trailing_space(self):
+ self.assertMarkdownRenders(
+ '--- ',
+
+ '<hr />'
+ )
+
+ def test_hr_hyphens_spaces_trailing_space(self):
+ self.assertMarkdownRenders(
+ '- - - ',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores(self):
+ self.assertMarkdownRenders(
+ '___',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores_spaces(self):
+ self.assertMarkdownRenders(
+ '_ _ _',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores_long(self):
+ self.assertMarkdownRenders(
+ '_______',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores_spaces_long(self):
+ self.assertMarkdownRenders(
+ '_ _ _ _ _ _ _',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores_1_indent(self):
+ self.assertMarkdownRenders(
+ ' ___',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores_spaces_1_indent(self):
+ self.assertMarkdownRenders(
+ ' _ _ _',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores_2_indent(self):
+ self.assertMarkdownRenders(
+ ' ___',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores_spaces_2_indent(self):
+ self.assertMarkdownRenders(
+ ' _ _ _',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores_3_indent(self):
+ self.assertMarkdownRenders(
+ ' ___',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores_spaces_3_indent(self):
+ self.assertMarkdownRenders(
+ ' _ _ _',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores_trailing_space(self):
+ self.assertMarkdownRenders(
+ '___ ',
+
+ '<hr />'
+ )
+
+ def test_hr_underscores_spaces_trailing_space(self):
+ self.assertMarkdownRenders(
+ '_ _ _ ',
+
+ '<hr />'
+ )
+
+ def test_hr_before_paragraph(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ***
+ An HR followed by a paragraph with no blank line.
+ """
+ ),
+ self.dedent(
+ """
+ <hr />
+ <p>An HR followed by a paragraph with no blank line.</p>
+ """
+ )
+ )
+
+ def test_hr_after_paragraph(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ A paragraph followed by an HR with no blank line.
+ ***
+ """
+ ),
+ self.dedent(
+ """
+ <p>A paragraph followed by an HR with no blank line.</p>
+ <hr />
+ """
+ )
+ )
+
+ def test_hr_after_emstrong(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ***text***
+ ***
+ """
+ ),
+ self.dedent(
+ """
+ <p><strong><em>text</em></strong></p>
+ <hr />
+ """
+ )
+ )
+
+ def test_not_hr_2_asterisks(self):
+ self.assertMarkdownRenders(
+ '**',
+
+ '<p>**</p>'
+ )
+
+ def test_not_hr_2_asterisks_spaces(self):
+ self.assertMarkdownRenders(
+ '* *',
+
+ self.dedent(
+ """
+ <ul>
+ <li>*</li>
+ </ul>
+ """
+ )
+ )
+
+ def test_not_hr_2_hyphens(self):
+ self.assertMarkdownRenders(
+ '--',
+
+ '<p>--</p>'
+ )
+
+ def test_not_hr_2_hyphens_spaces(self):
+ self.assertMarkdownRenders(
+ '- -',
+
+ self.dedent(
+ """
+ <ul>
+ <li>-</li>
+ </ul>
+ """
+ )
+ )
+
+ def test_not_hr_2_underscores(self):
+ self.assertMarkdownRenders(
+ '__',
+
+ '<p>__</p>'
+ )
+
+ def test_not_hr_2_underscores_spaces(self):
+ self.assertMarkdownRenders(
+ '_ _',
+
+ '<p>_ _</p>'
+ )
+
+ def test_2_consecutive_hr(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ - - -
+ - - -
+ """
+ ),
+ self.dedent(
+ """
+ <hr />
+ <hr />
+ """
+ )
+ )
+
+ def test_not_hr_end_in_char(self):
+ self.assertMarkdownRenders(
+ '--------------------------------------c',
+
+ '<p>--------------------------------------c</p>'
+ )
diff --git a/tests/test_syntax/blocks/test_html_blocks.py b/tests/test_syntax/blocks/test_html_blocks.py
new file mode 100644
index 0000000..9ec0668
--- /dev/null
+++ b/tests/test_syntax/blocks/test_html_blocks.py
@@ -0,0 +1,1619 @@
+# -*- coding: utf-8 -*-
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+import markdown
+
+
+class TestHTMLBlocks(TestCase):
+
+ def test_raw_paragraph(self):
+ self.assertMarkdownRenders(
+ '<p>A raw paragraph.</p>',
+ '<p>A raw paragraph.</p>'
+ )
+
+ def test_raw_skip_inline_markdown(self):
+ self.assertMarkdownRenders(
+ '<p>A *raw* paragraph.</p>',
+ '<p>A *raw* paragraph.</p>'
+ )
+
+ def test_raw_indent_one_space(self):
+ self.assertMarkdownRenders(
+ ' <p>A *raw* paragraph.</p>',
+ '<p>A *raw* paragraph.</p>'
+ )
+
+ def test_raw_indent_two_spaces(self):
+ self.assertMarkdownRenders(
+ ' <p>A *raw* paragraph.</p>',
+ '<p>A *raw* paragraph.</p>'
+ )
+
+ def test_raw_indent_three_spaces(self):
+ self.assertMarkdownRenders(
+ ' <p>A *raw* paragraph.</p>',
+ '<p>A *raw* paragraph.</p>'
+ )
+
+ def test_raw_indent_four_spaces(self):
+ self.assertMarkdownRenders(
+ ' <p>code block</p>',
+ self.dedent(
+ """
+ <pre><code>&lt;p&gt;code block&lt;/p&gt;
+ </code></pre>
+ """
+ )
+ )
+
+ def test_raw_span(self):
+ self.assertMarkdownRenders(
+ '<span>*inline*</span>',
+ '<p><span><em>inline</em></span></p>'
+ )
+
+ def test_code_span(self):
+ self.assertMarkdownRenders(
+ '`<p>code span</p>`',
+ '<p><code>&lt;p&gt;code span&lt;/p&gt;</code></p>'
+ )
+
+ def test_code_span_open_gt(self):
+ self.assertMarkdownRenders(
+ '*bar* `<` *foo*',
+ '<p><em>bar</em> <code>&lt;</code> <em>foo</em></p>'
+ )
+
+ def test_raw_empty(self):
+ self.assertMarkdownRenders(
+ '<p></p>',
+ '<p></p>'
+ )
+
+ def test_raw_empty_space(self):
+ self.assertMarkdownRenders(
+ '<p> </p>',
+ '<p> </p>'
+ )
+
+ def test_raw_empty_newline(self):
+ self.assertMarkdownRenders(
+ '<p>\n</p>',
+ '<p>\n</p>'
+ )
+
+ def test_raw_empty_blank_line(self):
+ self.assertMarkdownRenders(
+ '<p>\n\n</p>',
+ '<p>\n\n</p>'
+ )
+
+ def test_raw_uppercase(self):
+ self.assertMarkdownRenders(
+ '<DIV>*foo*</DIV>',
+ '<DIV>*foo*</DIV>'
+ )
+
+ def test_raw_uppercase_multiline(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <DIV>
+ *foo*
+ </DIV>
+ """
+ ),
+ self.dedent(
+ """
+ <DIV>
+ *foo*
+ </DIV>
+ """
+ )
+ )
+
+ def test_multiple_raw_single_line(self):
+ self.assertMarkdownRenders(
+ '<p>*foo*</p><div>*bar*</div>',
+ self.dedent(
+ """
+ <p>*foo*</p>
+ <div>*bar*</div>
+ """
+ )
+ )
+
+ def test_multiple_raw_single_line_with_pi(self):
+ self.assertMarkdownRenders(
+ "<p>*foo*</p><?php echo '>'; ?>",
+ self.dedent(
+ """
+ <p>*foo*</p>
+ <?php echo '>'; ?>
+ """
+ )
+ )
+
+ def test_multiline_raw(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <p>
+ A raw paragraph
+ with multiple lines.
+ </p>
+ """
+ ),
+ self.dedent(
+ """
+ <p>
+ A raw paragraph
+ with multiple lines.
+ </p>
+ """
+ )
+ )
+
+ def test_blank_lines_in_raw(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <p>
+
+ A raw paragraph...
+
+ with many blank lines.
+
+ </p>
+ """
+ ),
+ self.dedent(
+ """
+ <p>
+
+ A raw paragraph...
+
+ with many blank lines.
+
+ </p>
+ """
+ )
+ )
+
+ def test_raw_surrounded_by_Markdown(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Some *Markdown* text.
+
+ <p>*Raw* HTML.</p>
+
+ More *Markdown* text.
+ """
+ ),
+ self.dedent(
+ """
+ <p>Some <em>Markdown</em> text.</p>
+ <p>*Raw* HTML.</p>
+
+ <p>More <em>Markdown</em> text.</p>
+ """
+ )
+ )
+
+ def test_raw_surrounded_by_text_without_blank_lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Some *Markdown* text.
+ <p>*Raw* HTML.</p>
+ More *Markdown* text.
+ """
+ ),
+ self.dedent(
+ """
+ <p>Some <em>Markdown</em> text.</p>
+ <p>*Raw* HTML.</p>
+ <p>More <em>Markdown</em> text.</p>
+ """
+ )
+ )
+
+ def test_multiline_markdown_with_code_span(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ A paragraph with a block-level
+ `<p>code span</p>`, which is
+ at the start of a line.
+ """
+ ),
+ self.dedent(
+ """
+ <p>A paragraph with a block-level
+ <code>&lt;p&gt;code span&lt;/p&gt;</code>, which is
+ at the start of a line.</p>
+ """
+ )
+ )
+
+ def test_raw_block_preceded_by_markdown_code_span_with_unclosed_block_tag(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ A paragraph with a block-level code span: `<div>`.
+
+ <p>*not markdown*</p>
+
+ This is *markdown*
+ """
+ ),
+ self.dedent(
+ """
+ <p>A paragraph with a block-level code span: <code>&lt;div&gt;</code>.</p>
+ <p>*not markdown*</p>
+
+ <p>This is <em>markdown</em></p>
+ """
+ )
+ )
+
+ def test_raw_one_line_followed_by_text(self):
+ self.assertMarkdownRenders(
+ '<p>*foo*</p>*bar*',
+ self.dedent(
+ """
+ <p>*foo*</p>
+ <p><em>bar</em></p>
+ """
+ )
+ )
+
+ def test_raw_one_line_followed_by_span(self):
+ self.assertMarkdownRenders(
+ "<p>*foo*</p><span>*bar*</span>",
+ self.dedent(
+ """
+ <p>*foo*</p>
+ <p><span><em>bar</em></span></p>
+ """
+ )
+ )
+
+ def test_raw_with_markdown_blocks(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div>
+ Not a Markdown paragraph.
+
+ * Not a list item.
+ * Another non-list item.
+
+ Another non-Markdown paragraph.
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ Not a Markdown paragraph.
+
+ * Not a list item.
+ * Another non-list item.
+
+ Another non-Markdown paragraph.
+ </div>
+ """
+ )
+ )
+
+ def test_adjacent_raw_blocks(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <p>A raw paragraph.</p>
+ <p>A second raw paragraph.</p>
+ """
+ ),
+ self.dedent(
+ """
+ <p>A raw paragraph.</p>
+ <p>A second raw paragraph.</p>
+ """
+ )
+ )
+
+ def test_adjacent_raw_blocks_with_blank_lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <p>A raw paragraph.</p>
+
+ <p>A second raw paragraph.</p>
+ """
+ ),
+ self.dedent(
+ """
+ <p>A raw paragraph.</p>
+
+ <p>A second raw paragraph.</p>
+ """
+ )
+ )
+
+ def test_nested_raw_one_line(self):
+ self.assertMarkdownRenders(
+ '<div><p>*foo*</p></div>',
+ '<div><p>*foo*</p></div>'
+ )
+
+ def test_nested_raw_block(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div>
+ <p>A raw paragraph.</p>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p>A raw paragraph.</p>
+ </div>
+ """
+ )
+ )
+
+ def test_nested_indented_raw_block(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div>
+ <p>A raw paragraph.</p>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p>A raw paragraph.</p>
+ </div>
+ """
+ )
+ )
+
+ def test_nested_raw_blocks(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div>
+ <p>A raw paragraph.</p>
+ <p>A second raw paragraph.</p>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p>A raw paragraph.</p>
+ <p>A second raw paragraph.</p>
+ </div>
+ """
+ )
+ )
+
+ def test_nested_raw_blocks_with_blank_lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div>
+
+ <p>A raw paragraph.</p>
+
+ <p>A second raw paragraph.</p>
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+
+ <p>A raw paragraph.</p>
+
+ <p>A second raw paragraph.</p>
+
+ </div>
+ """
+ )
+ )
+
+ def test_nested_inline_one_line(self):
+ self.assertMarkdownRenders(
+ '<p><em>foo</em><br></p>',
+ '<p><em>foo</em><br></p>'
+ )
+
+ def test_raw_nested_inline(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div>
+ <p>
+ <span>*text*</span>
+ </p>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p>
+ <span>*text*</span>
+ </p>
+ </div>
+ """
+ )
+ )
+
+ def test_raw_nested_inline_with_blank_lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div>
+
+ <p>
+
+ <span>*text*</span>
+
+ </p>
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+
+ <p>
+
+ <span>*text*</span>
+
+ </p>
+
+ </div>
+ """
+ )
+ )
+
+ def test_raw_html5(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <section>
+ <header>
+ <hgroup>
+ <h1>Hello :-)</h1>
+ </hgroup>
+ </header>
+ <figure>
+ <img src="image.png" alt="" />
+ <figcaption>Caption</figcaption>
+ </figure>
+ <footer>
+ <p>Some footer</p>
+ </footer>
+ </section>
+ """
+ ),
+ self.dedent(
+ """
+ <section>
+ <header>
+ <hgroup>
+ <h1>Hello :-)</h1>
+ </hgroup>
+ </header>
+ <figure>
+ <img src="image.png" alt="" />
+ <figcaption>Caption</figcaption>
+ </figure>
+ <footer>
+ <p>Some footer</p>
+ </footer>
+ </section>
+ """
+ )
+ )
+
+ def test_raw_pre_tag(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Preserve whitespace in raw html
+
+ <pre>
+ class Foo():
+ bar = 'bar'
+
+ @property
+ def baz(self):
+ return self.bar
+ </pre>
+ """
+ ),
+ self.dedent(
+ """
+ <p>Preserve whitespace in raw html</p>
+ <pre>
+ class Foo():
+ bar = 'bar'
+
+ @property
+ def baz(self):
+ return self.bar
+ </pre>
+ """
+ )
+ )
+
+ def test_raw_pre_tag_nested_escaped_html(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <pre>
+ &lt;p&gt;foo&lt;/p&gt;
+ </pre>
+ """
+ ),
+ self.dedent(
+ """
+ <pre>
+ &lt;p&gt;foo&lt;/p&gt;
+ </pre>
+ """
+ )
+ )
+
+ def test_raw_p_no_end_tag(self):
+ self.assertMarkdownRenders(
+ '<p>*text*',
+ '<p>*text*'
+ )
+
+ def test_raw_multiple_p_no_end_tag(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <p>*text*'
+
+ <p>more *text*
+ """
+ ),
+ self.dedent(
+ """
+ <p>*text*'
+
+ <p>more *text*
+ """
+ )
+ )
+
+ def test_raw_p_no_end_tag_followed_by_blank_line(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <p>*raw text*'
+
+ Still part of *raw* text.
+ """
+ ),
+ self.dedent(
+ """
+ <p>*raw text*'
+
+ Still part of *raw* text.
+ """
+ )
+ )
+
+ def test_raw_nested_p_no_end_tag(self):
+ self.assertMarkdownRenders(
+ '<div><p>*text*</div>',
+ '<div><p>*text*</div>'
+ )
+
+ def test_raw_open_bracket_only(self):
+ self.assertMarkdownRenders(
+ '<',
+ '<p>&lt;</p>'
+ )
+
+ def test_raw_open_bracket_followed_by_space(self):
+ self.assertMarkdownRenders(
+ '< foo',
+ '<p>&lt; foo</p>'
+ )
+
+ def test_raw_missing_close_bracket(self):
+ self.assertMarkdownRenders(
+ '<foo',
+ '<p>&lt;foo</p>'
+ )
+
+ def test_raw_unclosed_tag_in_code_span(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ `<div`.
+
+ <div>
+ hello
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <p><code>&lt;div</code>.</p>
+ <div>
+ hello
+ </div>
+ """
+ )
+ )
+
+ def test_raw_unclosed_tag_in_code_span_space(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ` <div `.
+
+ <div>
+ hello
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <p><code>&lt;div</code>.</p>
+ <div>
+ hello
+ </div>
+ """
+ )
+ )
+
+ def test_raw_attributes(self):
+ self.assertMarkdownRenders(
+ '<p id="foo", class="bar baz", style="margin: 15px; line-height: 1.5; text-align: center;">text</p>',
+ '<p id="foo", class="bar baz", style="margin: 15px; line-height: 1.5; text-align: center;">text</p>'
+ )
+
+ def test_raw_attributes_nested(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div id="foo, class="bar", style="background: #ffe7e8; border: 2px solid #e66465;">
+ <p id="baz", style="margin: 15px; line-height: 1.5; text-align: center;">
+ <img scr="../foo.jpg" title="with 'quoted' text." valueless_attr weirdness="<i>foo</i>" />
+ </p>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div id="foo, class="bar", style="background: #ffe7e8; border: 2px solid #e66465;">
+ <p id="baz", style="margin: 15px; line-height: 1.5; text-align: center;">
+ <img scr="../foo.jpg" title="with 'quoted' text." valueless_attr weirdness="<i>foo</i>" />
+ </p>
+ </div>
+ """
+ )
+ )
+
+ def test_raw_comment_one_line(self):
+ self.assertMarkdownRenders(
+ '<!-- *foo* -->',
+ '<!-- *foo* -->'
+ )
+
+ def test_raw_comment_one_line_with_tag(self):
+ self.assertMarkdownRenders(
+ '<!-- <tag> -->',
+ '<!-- <tag> -->'
+ )
+
+ def test_comment_in_code_span(self):
+ self.assertMarkdownRenders(
+ '`<!-- *foo* -->`',
+ '<p><code>&lt;!-- *foo* --&gt;</code></p>'
+ )
+
+ def test_raw_comment_one_line_followed_by_text(self):
+ self.assertMarkdownRenders(
+ '<!-- *foo* -->*bar*',
+ self.dedent(
+ """
+ <!-- *foo* -->
+ <p><em>bar</em></p>
+ """
+ )
+ )
+
+ def test_raw_comment_one_line_followed_by_html(self):
+ self.assertMarkdownRenders(
+ '<!-- *foo* --><p>*bar*</p>',
+ self.dedent(
+ """
+ <!-- *foo* -->
+ <p>*bar*</p>
+ """
+ )
+ )
+
+ # Note: Trailing (insignificant) whitespace is not preserved, which does not match the
+ # reference implementation. However, it is not a change in behavior for Python-Markdown.
+ def test_raw_comment_trailing_whitespace(self):
+ self.assertMarkdownRenders(
+ '<!-- *foo* --> ',
+ '<!-- *foo* -->'
+ )
+
+ # Note: this is a change in behavior for Python-Markdown, which does *not* match the reference
+ # implementation. However, it does match the HTML5 spec. Declarations must start with either
+ # `<!DOCTYPE` or `<![`. Anything else that starts with `<!` is a comment. According to the
+ # HTML5 spec, a comment without the hyphens is a "bogus comment", but a comment nonetheless.
+ # See https://www.w3.org/TR/html52/syntax.html#markup-declaration-open-state.
+ # If we wanted to change this behavior, we could override `HTMLParser.parse_bogus_comment()`.
+ def test_bogus_comment(self):
+ self.assertMarkdownRenders(
+ '<!*foo*>',
+ '<!--*foo*-->'
+ )
+
+ def test_raw_multiline_comment(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!--
+ *foo*
+ -->
+ """
+ ),
+ self.dedent(
+ """
+ <!--
+ *foo*
+ -->
+ """
+ )
+ )
+
+ def test_raw_multiline_comment_with_tag(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!--
+ <tag>
+ -->
+ """
+ ),
+ self.dedent(
+ """
+ <!--
+ <tag>
+ -->
+ """
+ )
+ )
+
+ def test_raw_multiline_comment_first_line(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!-- *foo*
+ -->
+ """
+ ),
+ self.dedent(
+ """
+ <!-- *foo*
+ -->
+ """
+ )
+ )
+
+ def test_raw_multiline_comment_last_line(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!--
+ *foo* -->
+ """
+ ),
+ self.dedent(
+ """
+ <!--
+ *foo* -->
+ """
+ )
+ )
+
+ def test_raw_comment_with_blank_lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!--
+
+ *foo*
+
+ -->
+ """
+ ),
+ self.dedent(
+ """
+ <!--
+
+ *foo*
+
+ -->
+ """
+ )
+ )
+
+ def test_raw_comment_with_blank_lines_with_tag(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!--
+
+ <tag>
+
+ -->
+ """
+ ),
+ self.dedent(
+ """
+ <!--
+
+ <tag>
+
+ -->
+ """
+ )
+ )
+
+ def test_raw_comment_with_blank_lines_first_line(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!-- *foo*
+
+ -->
+ """
+ ),
+ self.dedent(
+ """
+ <!-- *foo*
+
+ -->
+ """
+ )
+ )
+
+ def test_raw_comment_with_blank_lines_last_line(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!--
+
+ *foo* -->
+ """
+ ),
+ self.dedent(
+ """
+ <!--
+
+ *foo* -->
+ """
+ )
+ )
+
+ def test_raw_comment_indented(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!--
+
+ *foo*
+
+ -->
+ """
+ ),
+ self.dedent(
+ """
+ <!--
+
+ *foo*
+
+ -->
+ """
+ )
+ )
+
+ def test_raw_comment_indented_with_tag(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!--
+
+ <tag>
+
+ -->
+ """
+ ),
+ self.dedent(
+ """
+ <!--
+
+ <tag>
+
+ -->
+ """
+ )
+ )
+
+ def test_raw_comment_nested(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div>
+ <!-- *foo* -->
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <!-- *foo* -->
+ </div>
+ """
+ )
+ )
+
+ def test_comment_in_code_block(self):
+ self.assertMarkdownRenders(
+ ' <!-- *foo* -->',
+ self.dedent(
+ """
+ <pre><code>&lt;!-- *foo* --&gt;
+ </code></pre>
+ """
+ )
+ )
+
+ # Note: This is a change in behavior. Previously, Python-Markdown interpreted this in the same manner
+ # as browsers and all text after the opening comment tag was considered to be in a comment. However,
+ # that did not match the reference implementation. The new behavior does.
+ def test_unclosed_comment_(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!-- unclosed comment
+
+ *not* a comment
+ """
+ ),
+ self.dedent(
+ """
+ <p>&lt;!-- unclosed comment</p>
+ <p><em>not</em> a comment</p>
+ """
+ )
+ )
+
+ def test_raw_processing_instruction_one_line(self):
+ self.assertMarkdownRenders(
+ "<?php echo '>'; ?>",
+ "<?php echo '>'; ?>"
+ )
+
+ # This is a change in behavior and does not match the reference implementation.
+ # We have no way to determine if text is on the same line, so we get this. TODO: reevaluate!
+ def test_raw_processing_instruction_one_line_followed_by_text(self):
+ self.assertMarkdownRenders(
+ "<?php echo '>'; ?>*bar*",
+ self.dedent(
+ """
+ <?php echo '>'; ?>
+ <p><em>bar</em></p>
+ """
+ )
+ )
+
+ def test_raw_multiline_processing_instruction(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <?php
+ echo '>';
+ ?>
+ """
+ ),
+ self.dedent(
+ """
+ <?php
+ echo '>';
+ ?>
+ """
+ )
+ )
+
+ def test_raw_processing_instruction_with_blank_lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <?php
+
+ echo '>';
+
+ ?>
+ """
+ ),
+ self.dedent(
+ """
+ <?php
+
+ echo '>';
+
+ ?>
+ """
+ )
+ )
+
+ def test_raw_processing_instruction_indented(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <?php
+
+ echo '>';
+
+ ?>
+ """
+ ),
+ self.dedent(
+ """
+ <?php
+
+ echo '>';
+
+ ?>
+ """
+ )
+ )
+
+ def test_raw_processing_instruction_code_span(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ `<?php`
+
+ <div>
+ foo
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <p><code>&lt;?php</code></p>
+ <div>
+ foo
+ </div>
+ """
+ )
+ )
+
+ def test_raw_declaration_one_line(self):
+ self.assertMarkdownRenders(
+ '<!DOCTYPE html>',
+ '<!DOCTYPE html>'
+ )
+
+ # This is a change in behavior and does not match the reference implementation.
+ # We have no way to determine if text is on the same line, so we get this. TODO: reevaluate!
+ def test_raw_declaration_one_line_followed_by_text(self):
+ self.assertMarkdownRenders(
+ '<!DOCTYPE html>*bar*',
+ self.dedent(
+ """
+ <!DOCTYPE html>
+ <p><em>bar</em></p>
+ """
+ )
+ )
+
+ def test_raw_multiline_declaration(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ """
+ ),
+ self.dedent(
+ """
+ <!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ """
+ )
+ )
+
+ def test_raw_declaration_code_span(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ `<!`
+
+ <div>
+ foo
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <p><code>&lt;!</code></p>
+ <div>
+ foo
+ </div>
+ """
+ )
+ )
+
+ def test_raw_cdata_one_line(self):
+ self.assertMarkdownRenders(
+ '<![CDATA[ document.write(">"); ]]>',
+ '<![CDATA[ document.write(">"); ]]>'
+ )
+
+ # Note: this is a change. Neither previous output nor this match reference implementation.
+ def test_raw_cdata_one_line_followed_by_text(self):
+ self.assertMarkdownRenders(
+ '<![CDATA[ document.write(">"); ]]>*bar*',
+ self.dedent(
+ """
+ <![CDATA[ document.write(">"); ]]>
+ <p><em>bar</em></p>
+ """
+ )
+ )
+
+ def test_raw_multiline_cdata(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <![CDATA[
+ document.write(">");
+ ]]>
+ """
+ ),
+ self.dedent(
+ """
+ <![CDATA[
+ document.write(">");
+ ]]>
+ """
+ )
+ )
+
+ def test_raw_cdata_with_blank_lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <![CDATA[
+
+ document.write(">");
+
+ ]]>
+ """
+ ),
+ self.dedent(
+ """
+ <![CDATA[
+
+ document.write(">");
+
+ ]]>
+ """
+ )
+ )
+
+ def test_raw_cdata_indented(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <![CDATA[
+
+ document.write(">");
+
+ ]]>
+ """
+ ),
+ self.dedent(
+ """
+ <![CDATA[
+
+ document.write(">");
+
+ ]]>
+ """
+ )
+ )
+
+ def test_raw_cdata_code_span(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ `<![`
+
+ <div>
+ foo
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <p><code>&lt;![</code></p>
+ <div>
+ foo
+ </div>
+ """
+ )
+ )
+
+ def test_charref(self):
+ self.assertMarkdownRenders(
+ '&sect;',
+ '<p>&sect;</p>'
+ )
+
+ def test_nested_charref(self):
+ self.assertMarkdownRenders(
+ '<p>&sect;</p>',
+ '<p>&sect;</p>'
+ )
+
+ def test_entityref(self):
+ self.assertMarkdownRenders(
+ '&#167;',
+ '<p>&#167;</p>'
+ )
+
+ def test_nested_entityref(self):
+ self.assertMarkdownRenders(
+ '<p>&#167;</p>',
+ '<p>&#167;</p>'
+ )
+
+ def test_amperstand(self):
+ self.assertMarkdownRenders(
+ 'AT&T & AT&amp;T',
+ '<p>AT&amp;T &amp; AT&amp;T</p>'
+ )
+
+ def test_startendtag(self):
+ self.assertMarkdownRenders(
+ '<hr>',
+ '<hr>'
+ )
+
+ def test_startendtag_with_attrs(self):
+ self.assertMarkdownRenders(
+ '<hr id="foo" class="bar">',
+ '<hr id="foo" class="bar">'
+ )
+
+ def test_startendtag_with_space(self):
+ self.assertMarkdownRenders(
+ '<hr >',
+ '<hr >'
+ )
+
+ def test_closed_startendtag(self):
+ self.assertMarkdownRenders(
+ '<hr />',
+ '<hr />'
+ )
+
+ def test_closed_startendtag_without_space(self):
+ self.assertMarkdownRenders(
+ '<hr/>',
+ '<hr/>'
+ )
+
+ def test_closed_startendtag_with_attrs(self):
+ self.assertMarkdownRenders(
+ '<hr id="foo" class="bar" />',
+ '<hr id="foo" class="bar" />'
+ )
+
+ def test_nested_startendtag(self):
+ self.assertMarkdownRenders(
+ '<div><hr></div>',
+ '<div><hr></div>'
+ )
+
+ def test_nested_closed_startendtag(self):
+ self.assertMarkdownRenders(
+ '<div><hr /></div>',
+ '<div><hr /></div>'
+ )
+
+ def test_auto_links_dont_break_parser(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <https://example.com>
+
+ <email@example.com>
+ """
+ ),
+ '<p><a href="https://example.com">https://example.com</a></p>\n'
+ '<p><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#109;'
+ '&#97;&#105;&#108;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;'
+ '&#46;&#99;&#111;&#109;">&#101;&#109;&#97;&#105;&#108;&#64;&#101;'
+ '&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;</a></p>'
+ )
+
+ def test_text_links_ignored(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ https://example.com
+
+ email@example.com
+ """
+ ),
+ self.dedent(
+ """
+ <p>https://example.com</p>
+ <p>email@example.com</p>
+ """
+ ),
+ )
+
+ def text_invalid_tags(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <some [weird](http://example.com) stuff>
+
+ <some>> <<unbalanced>> <<brackets>
+ """
+ ),
+ self.dedent(
+ """
+ <p><some <a href="http://example.com">weird</a> stuff></p>
+ <p><some>&gt; &lt;<unbalanced>&gt; &lt;<brackets></p>
+ """
+ )
+ )
+
+ def test_script_tags(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <script>
+ *random stuff* <div> &amp;
+ </script>
+
+ <style>
+ **more stuff**
+ </style>
+ """
+ ),
+ self.dedent(
+ """
+ <script>
+ *random stuff* <div> &amp;
+ </script>
+
+ <style>
+ **more stuff**
+ </style>
+ """
+ )
+ )
+
+ def test_unclosed_script_tag(self):
+ # Ensure we have a working fix for https://bugs.python.org/issue41989
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <script>
+ *random stuff* <div> &amp;
+
+ Still part of the *script* tag
+ """
+ ),
+ self.dedent(
+ """
+ <script>
+ *random stuff* <div> &amp;
+
+ Still part of the *script* tag
+ """
+ )
+ )
+
+ def test_inline_script_tags(self):
+ # Ensure inline script tags doesn't cause the parser to eat content (see #1036).
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Text `<script>` more *text*.
+
+ <div>
+ *foo*
+ </div>
+
+ <div>
+
+ bar
+
+ </div>
+
+ A new paragraph with a closing `</script>` tag.
+ """
+ ),
+ self.dedent(
+ """
+ <p>Text <code>&lt;script&gt;</code> more <em>text</em>.</p>
+ <div>
+ *foo*
+ </div>
+
+ <div>
+
+ bar
+
+ </div>
+
+ <p>A new paragraph with a closing <code>&lt;/script&gt;</code> tag.</p>
+ """
+ )
+ )
+
+ def test_hr_only_start(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ *emphasis1*
+ <hr>
+ *emphasis2*
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>emphasis1</em></p>
+ <hr>
+ <p><em>emphasis2</em></p>
+ """
+ )
+ )
+
+ def test_hr_self_close(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ *emphasis1*
+ <hr/>
+ *emphasis2*
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>emphasis1</em></p>
+ <hr/>
+ <p><em>emphasis2</em></p>
+ """
+ )
+ )
+
+ def test_hr_start_and_end(self):
+ # Browsers ignore ending hr tags, so we don't try to do anything to handle them special.
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ *emphasis1*
+ <hr></hr>
+ *emphasis2*
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>emphasis1</em></p>
+ <hr>
+ <p></hr>
+ <em>emphasis2</em></p>
+ """
+ )
+ )
+
+ def test_hr_only_end(self):
+ # Browsers ignore ending hr tags, so we don't try to do anything to handle them special.
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ *emphasis1*
+ </hr>
+ *emphasis2*
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>emphasis1</em>
+ </hr>
+ <em>emphasis2</em></p>
+ """
+ )
+ )
+
+ def test_hr_with_content(self):
+ # Browsers ignore ending hr tags, so we don't try to do anything to handle them special.
+ # Content is not allowed and will be treated as normal content between two hr tags.
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ *emphasis1*
+ <hr>
+ **content**
+ </hr>
+ *emphasis2*
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>emphasis1</em></p>
+ <hr>
+ <p><strong>content</strong>
+ </hr>
+ <em>emphasis2</em></p>
+ """
+ )
+ )
+
+ def test_placeholder_in_source(self):
+ # This should never occur, but third party extensions could create weird edge cases.
+ md = markdown.Markdown()
+ # Ensure there is an htmlstash so relevant code (nested in `if replacements`) is run.
+ md.htmlStash.store('foo')
+ # Run with a placeholder which is not in the stash
+ placeholder = md.htmlStash.get_placeholder(md.htmlStash.html_counter + 1)
+ result = md.postprocessors['raw_html'].run(placeholder)
+ self.assertEqual(placeholder, result)
diff --git a/tests/test_syntax/blocks/test_paragraphs.py b/tests/test_syntax/blocks/test_paragraphs.py
new file mode 100644
index 0000000..9b7ba03
--- /dev/null
+++ b/tests/test_syntax/blocks/test_paragraphs.py
@@ -0,0 +1,229 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestParagraphBlocks(TestCase):
+
+ def test_simple_paragraph(self):
+ self.assertMarkdownRenders(
+ 'A simple paragraph.',
+
+ '<p>A simple paragraph.</p>'
+ )
+
+ def test_blank_line_before_paragraph(self):
+ self.assertMarkdownRenders(
+ '\nA paragraph preceded by a blank line.',
+
+ '<p>A paragraph preceded by a blank line.</p>'
+ )
+
+ def test_multiline_paragraph(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ This is a paragraph
+ on multiple lines
+ with hard returns.
+ """
+ ),
+ self.dedent(
+ """
+ <p>This is a paragraph
+ on multiple lines
+ with hard returns.</p>
+ """
+ )
+ )
+
+ def test_paragraph_long_line(self):
+ self.assertMarkdownRenders(
+ 'A very long long long long long long long long long long long long long long long long long long long '
+ 'long long long long long long long long long long long long long paragraph on 1 line.',
+
+ '<p>A very long long long long long long long long long long long long long long long long long long '
+ 'long long long long long long long long long long long long long long paragraph on 1 line.</p>'
+ )
+
+ def test_2_paragraphs_long_line(self):
+ self.assertMarkdownRenders(
+ 'A very long long long long long long long long long long long long long long long long long long long '
+ 'long long long long long long long long long long long long long paragraph on 1 line.\n\n'
+
+ 'A new long long long long long long long long long long long long long long long '
+ 'long paragraph on 1 line.',
+
+ '<p>A very long long long long long long long long long long long long long long long long long long '
+ 'long long long long long long long long long long long long long long paragraph on 1 line.</p>\n'
+ '<p>A new long long long long long long long long long long long long long long long '
+ 'long paragraph on 1 line.</p>'
+ )
+
+ def test_consecutive_paragraphs(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Paragraph 1.
+
+ Paragraph 2.
+ """
+ ),
+ self.dedent(
+ """
+ <p>Paragraph 1.</p>
+ <p>Paragraph 2.</p>
+ """
+ )
+ )
+
+ def test_consecutive_paragraphs_tab(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Paragraph followed by a line with a tab only.
+ \t
+ Paragraph after a line with a tab only.
+ """
+ ),
+ self.dedent(
+ """
+ <p>Paragraph followed by a line with a tab only.</p>
+ <p>Paragraph after a line with a tab only.</p>
+ """
+ )
+ )
+
+ def test_consecutive_paragraphs_space(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Paragraph followed by a line with a space only.
+
+ Paragraph after a line with a space only.
+ """
+ ),
+ self.dedent(
+ """
+ <p>Paragraph followed by a line with a space only.</p>
+ <p>Paragraph after a line with a space only.</p>
+ """
+ )
+ )
+
+ def test_consecutive_multiline_paragraphs(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Paragraph 1, line 1.
+ Paragraph 1, line 2.
+
+ Paragraph 2, line 1.
+ Paragraph 2, line 2.
+ """
+ ),
+ self.dedent(
+ """
+ <p>Paragraph 1, line 1.
+ Paragraph 1, line 2.</p>
+ <p>Paragraph 2, line 1.
+ Paragraph 2, line 2.</p>
+ """
+ )
+ )
+
+ def test_paragraph_leading_space(self):
+ self.assertMarkdownRenders(
+ ' A paragraph with 1 leading space.',
+
+ '<p>A paragraph with 1 leading space.</p>'
+ )
+
+ def test_paragraph_2_leading_spaces(self):
+ self.assertMarkdownRenders(
+ ' A paragraph with 2 leading spaces.',
+
+ '<p>A paragraph with 2 leading spaces.</p>'
+ )
+
+ def test_paragraph_3_leading_spaces(self):
+ self.assertMarkdownRenders(
+ ' A paragraph with 3 leading spaces.',
+
+ '<p>A paragraph with 3 leading spaces.</p>'
+ )
+
+ def test_paragraph_trailing_leading_space(self):
+ self.assertMarkdownRenders(
+ ' A paragraph with 1 trailing and 1 leading space. ',
+
+ '<p>A paragraph with 1 trailing and 1 leading space. </p>'
+ )
+
+ def test_paragraph_trailing_tab(self):
+ self.assertMarkdownRenders(
+ 'A paragraph with 1 trailing tab.\t',
+
+ '<p>A paragraph with 1 trailing tab. </p>'
+ )
+
+ def test_paragraphs_CR(self):
+ self.assertMarkdownRenders(
+ 'Paragraph 1, line 1.\rParagraph 1, line 2.\r\rParagraph 2, line 1.\rParagraph 2, line 2.\r',
+
+ self.dedent(
+ """
+ <p>Paragraph 1, line 1.
+ Paragraph 1, line 2.</p>
+ <p>Paragraph 2, line 1.
+ Paragraph 2, line 2.</p>
+ """
+ )
+ )
+
+ def test_paragraphs_LF(self):
+ self.assertMarkdownRenders(
+ 'Paragraph 1, line 1.\nParagraph 1, line 2.\n\nParagraph 2, line 1.\nParagraph 2, line 2.\n',
+
+ self.dedent(
+ """
+ <p>Paragraph 1, line 1.
+ Paragraph 1, line 2.</p>
+ <p>Paragraph 2, line 1.
+ Paragraph 2, line 2.</p>
+ """
+ )
+ )
+
+ def test_paragraphs_CR_LF(self):
+ self.assertMarkdownRenders(
+ 'Paragraph 1, line 1.\r\nParagraph 1, line 2.\r\n\r\nParagraph 2, line 1.\r\nParagraph 2, line 2.\r\n',
+
+ self.dedent(
+ """
+ <p>Paragraph 1, line 1.
+ Paragraph 1, line 2.</p>
+ <p>Paragraph 2, line 1.
+ Paragraph 2, line 2.</p>
+ """
+ )
+ )
diff --git a/tests/test_syntax/extensions/__init__.py b/tests/test_syntax/extensions/__init__.py
new file mode 100644
index 0000000..564ba3b
--- /dev/null
+++ b/tests/test_syntax/extensions/__init__.py
@@ -0,0 +1,20 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
diff --git a/tests/test_syntax/extensions/test_abbr.py b/tests/test_syntax/extensions/test_abbr.py
new file mode 100644
index 0000000..64388c2
--- /dev/null
+++ b/tests/test_syntax/extensions/test_abbr.py
@@ -0,0 +1,242 @@
+# -*- coding: utf-8 -*-
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestAbbr(TestCase):
+
+ default_kwargs = {'extensions': ['abbr']}
+
+ def test_abbr_upper(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ABBR
+
+ *[ABBR]: Abbreviation
+ """
+ ),
+ self.dedent(
+ """
+ <p><abbr title="Abbreviation">ABBR</abbr></p>
+ """
+ )
+ )
+
+ def test_abbr_lower(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ abbr
+
+ *[abbr]: Abbreviation
+ """
+ ),
+ self.dedent(
+ """
+ <p><abbr title="Abbreviation">abbr</abbr></p>
+ """
+ )
+ )
+
+ def test_abbr_multiple(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ The HTML specification
+ is maintained by the W3C.
+
+ *[HTML]: Hyper Text Markup Language
+ *[W3C]: World Wide Web Consortium
+ """
+ ),
+ self.dedent(
+ """
+ <p>The <abbr title="Hyper Text Markup Language">HTML</abbr> specification
+ is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.</p>
+ """
+ )
+ )
+
+ def test_abbr_override(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ABBR
+
+ *[ABBR]: Ignored
+ *[ABBR]: The override
+ """
+ ),
+ self.dedent(
+ """
+ <p><abbr title="The override">ABBR</abbr></p>
+ """
+ )
+ )
+
+ def test_abbr_no_blank_Lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ABBR
+ *[ABBR]: Abbreviation
+ ABBR
+ """
+ ),
+ self.dedent(
+ """
+ <p><abbr title="Abbreviation">ABBR</abbr></p>
+ <p><abbr title="Abbreviation">ABBR</abbr></p>
+ """
+ )
+ )
+
+ def test_abbr_no_space(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ABBR
+
+ *[ABBR]:Abbreviation
+ """
+ ),
+ self.dedent(
+ """
+ <p><abbr title="Abbreviation">ABBR</abbr></p>
+ """
+ )
+ )
+
+ def test_abbr_extra_space(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ABBR
+
+ *[ABBR] : Abbreviation
+ """
+ ),
+ self.dedent(
+ """
+ <p><abbr title="Abbreviation">ABBR</abbr></p>
+ """
+ )
+ )
+
+ def test_abbr_line_break(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ABBR
+
+ *[ABBR]:
+ Abbreviation
+ """
+ ),
+ self.dedent(
+ """
+ <p><abbr title="Abbreviation">ABBR</abbr></p>
+ """
+ )
+ )
+
+ def test_abbr_ignore_unmatched_case(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ABBR abbr
+
+ *[ABBR]: Abbreviation
+ """
+ ),
+ self.dedent(
+ """
+ <p><abbr title="Abbreviation">ABBR</abbr> abbr</p>
+ """
+ )
+ )
+
+ def test_abbr_partial_word(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ABBR ABBREVIATION
+
+ *[ABBR]: Abbreviation
+ """
+ ),
+ self.dedent(
+ """
+ <p><abbr title="Abbreviation">ABBR</abbr> ABBREVIATION</p>
+ """
+ )
+ )
+
+ def test_abbr_unused(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ foo bar
+
+ *[ABBR]: Abbreviation
+ """
+ ),
+ self.dedent(
+ """
+ <p>foo bar</p>
+ """
+ )
+ )
+
+ def test_abbr_double_quoted(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ABBR
+
+ *[ABBR]: "Abbreviation"
+ """
+ ),
+ self.dedent(
+ """
+ <p><abbr title="&quot;Abbreviation&quot;">ABBR</abbr></p>
+ """
+ )
+ )
+
+ def test_abbr_single_quoted(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ABBR
+
+ *[ABBR]: 'Abbreviation'
+ """
+ ),
+ self.dedent(
+ """
+ <p><abbr title="'Abbreviation'">ABBR</abbr></p>
+ """
+ )
+ )
diff --git a/tests/test_syntax/extensions/test_admonition.py b/tests/test_syntax/extensions/test_admonition.py
new file mode 100644
index 0000000..44c70d1
--- /dev/null
+++ b/tests/test_syntax/extensions/test_admonition.py
@@ -0,0 +1,245 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2019 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestAdmonition(TestCase):
+
+ def test_with_lists(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ - List
+
+ !!! note "Admontion"
+
+ - Paragraph
+
+ Paragraph
+ '''
+ ),
+ self.dedent(
+ '''
+ <ul>
+ <li>
+ <p>List</p>
+ <div class="admonition note">
+ <p class="admonition-title">Admontion</p>
+ <ul>
+ <li>
+ <p>Paragraph</p>
+ <p>Paragraph</p>
+ </li>
+ </ul>
+ </div>
+ </li>
+ </ul>
+ '''
+ ),
+ extensions=['admonition']
+ )
+
+ def test_with_big_lists(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ - List
+
+ !!! note "Admontion"
+
+ - Paragraph
+
+ Paragraph
+
+ - Paragraph
+
+ paragraph
+ '''
+ ),
+ self.dedent(
+ '''
+ <ul>
+ <li>
+ <p>List</p>
+ <div class="admonition note">
+ <p class="admonition-title">Admontion</p>
+ <ul>
+ <li>
+ <p>Paragraph</p>
+ <p>Paragraph</p>
+ </li>
+ <li>
+ <p>Paragraph</p>
+ <p>paragraph</p>
+ </li>
+ </ul>
+ </div>
+ </li>
+ </ul>
+ '''
+ ),
+ extensions=['admonition']
+ )
+
+ def test_with_complex_lists(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ - List
+
+ !!! note "Admontion"
+
+ - Paragraph
+
+ !!! note "Admontion"
+
+ 1. Paragraph
+
+ Paragraph
+ '''
+ ),
+ self.dedent(
+ '''
+ <ul>
+ <li>
+ <p>List</p>
+ <div class="admonition note">
+ <p class="admonition-title">Admontion</p>
+ <ul>
+ <li>
+ <p>Paragraph</p>
+ <div class="admonition note">
+ <p class="admonition-title">Admontion</p>
+ <ol>
+ <li>
+ <p>Paragraph</p>
+ <p>Paragraph</p>
+ </li>
+ </ol>
+ </div>
+ </li>
+ </ul>
+ </div>
+ </li>
+ </ul>
+ '''
+ ),
+ extensions=['admonition']
+ )
+
+ def test_definition_list(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ - List
+
+ !!! note "Admontion"
+
+ Term
+
+ : Definition
+
+ More text
+
+ : Another
+ definition
+
+ Even more text
+ '''
+ ),
+ self.dedent(
+ '''
+ <ul>
+ <li>
+ <p>List</p>
+ <div class="admonition note">
+ <p class="admonition-title">Admontion</p>
+ <dl>
+ <dt>Term</dt>
+ <dd>
+ <p>Definition</p>
+ <p>More text</p>
+ </dd>
+ <dd>
+ <p>Another
+ definition</p>
+ <p>Even more text</p>
+ </dd>
+ </dl>
+ </div>
+ </li>
+ </ul>
+ '''
+ ),
+ extensions=['admonition', 'def_list']
+ )
+
+ def test_with_preceding_text(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ foo
+ **foo**
+ !!! note "Admonition"
+ '''
+ ),
+ self.dedent(
+ '''
+ <p>foo
+ <strong>foo</strong></p>
+ <div class="admonition note">
+ <p class="admonition-title">Admonition</p>
+ </div>
+ '''
+ ),
+ extensions=['admonition']
+ )
+
+ def test_admontion_detabbing(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ !!! note "Admonition"
+ - Parent 1
+
+ - Child 1
+ - Child 2
+ '''
+ ),
+ self.dedent(
+ '''
+ <div class="admonition note">
+ <p class="admonition-title">Admonition</p>
+ <ul>
+ <li>
+ <p>Parent 1</p>
+ <ul>
+ <li>Child 1</li>
+ <li>Child 2</li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ '''
+ ),
+ extensions=['admonition']
+ )
diff --git a/tests/test_syntax/extensions/test_attr_list.py b/tests/test_syntax/extensions/test_attr_list.py
new file mode 100644
index 0000000..6baaafb
--- /dev/null
+++ b/tests/test_syntax/extensions/test_attr_list.py
@@ -0,0 +1,80 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2020 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestAttrList(TestCase):
+
+ maxDiff = None
+
+ # TODO: Move the rest of the attr_list tests here.
+
+ def test_empty_list(self):
+ self.assertMarkdownRenders(
+ '*foo*{ }',
+ '<p><em>foo</em>{ }</p>',
+ extensions=['attr_list']
+ )
+
+ def test_table_td(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ | A { .foo } | *B*{ .foo } | C { } | D{ .foo } | E { .foo } F |
+ |-------------|-------------|-------|---------------|--------------|
+ | a { .foo } | *b*{ .foo } | c { } | d{ .foo } | e { .foo } f |
+ | valid on td | inline | empty | missing space | not at end |
+ """
+ ),
+ self.dedent(
+ """
+ <table>
+ <thead>
+ <tr>
+ <th class="foo">A</th>
+ <th><em class="foo">B</em></th>
+ <th>C { }</th>
+ <th>D{ .foo }</th>
+ <th>E { .foo } F</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td class="foo">a</td>
+ <td><em class="foo">b</em></td>
+ <td>c { }</td>
+ <td>d{ .foo }</td>
+ <td>e { .foo } f</td>
+ </tr>
+ <tr>
+ <td>valid on td</td>
+ <td>inline</td>
+ <td>empty</td>
+ <td>missing space</td>
+ <td>not at end</td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['attr_list', 'tables']
+ )
diff --git a/tests/test_syntax/extensions/test_code_hilite.py b/tests/test_syntax/extensions/test_code_hilite.py
new file mode 100644
index 0000000..09dd523
--- /dev/null
+++ b/tests/test_syntax/extensions/test_code_hilite.py
@@ -0,0 +1,764 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2019 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+from markdown.extensions.codehilite import CodeHiliteExtension, CodeHilite
+import os
+
+try:
+ import pygments # noqa
+ has_pygments = True
+except ImportError:
+ has_pygments = False
+
+# The version required by the tests is the version specified and installed in the 'pygments' tox env.
+# In any environment where the PYGMENTS_VERSION environment variable is either not defined or doesn't
+# match the version of Pygments installed, all tests which rely in pygments will be skipped.
+required_pygments_version = os.environ.get('PYGMENTS_VERSION', '')
+
+
+class TestCodeHiliteClass(TestCase):
+ """ Test the markdown.extensions.codehilite.CodeHilite class. """
+
+ def setUp(self):
+ if has_pygments and pygments.__version__ != required_pygments_version:
+ self.skipTest(f'Pygments=={required_pygments_version} is required')
+
+ maxDiff = None
+
+ def assertOutputEquals(self, source, expected, **options):
+ """
+ Test that source code block results in the expected output with given options.
+ """
+
+ output = CodeHilite(source, **options).hilite()
+ self.assertMultiLineEqual(output.strip(), expected)
+
+ def test_codehilite_defaults(self):
+ if has_pygments:
+ # Odd result as no lang given and a single comment is not enough for guessing.
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="err"># A Code Comment</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code># A Code Comment\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('# A Code Comment', expected)
+
+ def test_codehilite_guess_lang(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="cp">&lt;?php</span> '
+ '<span class="k">print</span><span class="p">(</span><span class="s2">&quot;Hello World&quot;</span>'
+ '<span class="p">);</span> <span class="cp">?&gt;</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code>&lt;?php print(&quot;Hello World&quot;); ?&gt;\n'
+ '</code></pre>'
+ )
+ # Use PHP as the the starting `<?php` tag ensures an accurate guess.
+ self.assertOutputEquals('<?php print("Hello World"); ?>', expected, guess_lang=True)
+
+ def test_codehilite_guess_lang_plain_text(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="err">plain text</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code>plain text\n'
+ '</code></pre>'
+ )
+ # This will be difficult to guess.
+ self.assertOutputEquals('plain text', expected, guess_lang=True)
+
+ def test_codehilite_set_lang(self):
+ if has_pygments:
+ # Note an extra `<span class="x">` is added to end of code block when lang explicitly set.
+ # Compare with expected output for `test_guess_lang`. Not sure why this happens.
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="cp">&lt;?php</span> '
+ '<span class="k">print</span><span class="p">(</span><span class="s2">&quot;Hello World&quot;</span>'
+ '<span class="p">);</span> <span class="cp">?&gt;</span><span class="x"></span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-php">&lt;?php print(&quot;Hello World&quot;); ?&gt;\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('<?php print("Hello World"); ?>', expected, lang='php')
+
+ def test_codehilite_bad_lang(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="cp">&lt;?php</span> '
+ '<span class="k">print</span><span class="p">(</span><span class="s2">'
+ '&quot;Hello World&quot;</span><span class="p">);</span> <span class="cp">?&gt;</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ # Note that without pygments there is no way to check that the language name is bad.
+ expected = (
+ '<pre class="codehilite"><code class="language-unkown">'
+ '&lt;?php print(&quot;Hello World&quot;); ?&gt;\n'
+ '</code></pre>'
+ )
+ # The starting `<?php` tag ensures an accurate guess.
+ self.assertOutputEquals('<?php print("Hello World"); ?>', expected, lang='unkown')
+
+ def test_codehilite_use_pygments_false(self):
+ expected = (
+ '<pre class="codehilite"><code class="language-php">&lt;?php print(&quot;Hello World&quot;); ?&gt;\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('<?php print("Hello World"); ?>', expected, lang='php', use_pygments=False)
+
+ def test_codehilite_lang_prefix_empty(self):
+ expected = (
+ '<pre class="codehilite"><code class="php">&lt;?php print(&quot;Hello World&quot;); ?&gt;\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals(
+ '<?php print("Hello World"); ?>', expected, lang='php', use_pygments=False, lang_prefix=''
+ )
+
+ def test_codehilite_lang_prefix(self):
+ expected = (
+ '<pre class="codehilite"><code class="lang-php">&lt;?php print(&quot;Hello World&quot;); ?&gt;\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals(
+ '<?php print("Hello World"); ?>', expected, lang='php', use_pygments=False, lang_prefix='lang-'
+ )
+
+ def test_codehilite_linenos_true(self):
+ if has_pygments:
+ expected = (
+ '<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div>'
+ '</td><td class="code"><div class="codehilite"><pre><span></span><code>plain text\n'
+ '</code></pre></div>\n'
+ '</td></tr></table>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-text linenums">plain text\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('plain text', expected, lang='text', linenos=True)
+
+ def test_codehilite_linenos_false(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code>plain text\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-text">plain text\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('plain text', expected, lang='text', linenos=False)
+
+ def test_codehilite_linenos_none(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code>plain text\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-text">plain text\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('plain text', expected, lang='text', linenos=None)
+
+ def test_codehilite_linenos_table(self):
+ if has_pygments:
+ expected = (
+ '<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div>'
+ '</td><td class="code"><div class="codehilite"><pre><span></span><code>plain text\n'
+ '</code></pre></div>\n'
+ '</td></tr></table>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-text linenums">plain text\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('plain text', expected, lang='text', linenos='table')
+
+ def test_codehilite_linenos_inline(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="linenos">1</span>plain text\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-text linenums">plain text\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('plain text', expected, lang='text', linenos='inline')
+
+ def test_codehilite_linenums_true(self):
+ if has_pygments:
+ expected = (
+ '<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div>'
+ '</td><td class="code"><div class="codehilite"><pre><span></span><code>plain text\n'
+ '</code></pre></div>\n'
+ '</td></tr></table>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-text linenums">plain text\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('plain text', expected, lang='text', linenums=True)
+
+ def test_codehilite_set_cssclass(self):
+ if has_pygments:
+ expected = (
+ '<div class="override"><pre><span></span><code>plain text\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="override"><code class="language-text">plain text\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('plain text', expected, lang='text', cssclass='override')
+
+ def test_codehilite_set_css_class(self):
+ if has_pygments:
+ expected = (
+ '<div class="override"><pre><span></span><code>plain text\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="override"><code class="language-text">plain text\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('plain text', expected, lang='text', css_class='override')
+
+ def test_codehilite_linenostart(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="linenos">42</span>plain text\n'
+ '</code></pre></div>'
+ )
+ else:
+ # TODO: Implement linenostart for no-pygments. Will need to check what JS libs look for.
+ expected = (
+ '<pre class="codehilite"><code class="language-text linenums">plain text\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('plain text', expected, lang='text', linenos='inline', linenostart=42)
+
+ def test_codehilite_linenos_hl_lines(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code>'
+ '<span class="linenos">1</span><span class="hll">line 1\n'
+ '</span><span class="linenos">2</span>line 2\n'
+ '<span class="linenos">3</span><span class="hll">line 3\n'
+ '</span></code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-text linenums">line 1\n'
+ 'line 2\n'
+ 'line 3\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('line 1\nline 2\nline 3', expected, lang='text', linenos='inline', hl_lines=[1, 3])
+
+ def test_codehilite_linenos_linenostep(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="linenos"> </span>line 1\n'
+ '<span class="linenos">2</span>line 2\n'
+ '<span class="linenos"> </span>line 3\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-text linenums">line 1\n'
+ 'line 2\n'
+ 'line 3\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('line 1\nline 2\nline 3', expected, lang='text', linenos='inline', linenostep=2)
+
+ def test_codehilite_linenos_linenospecial(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="linenos">1</span>line 1\n'
+ '<span class="linenos special">2</span>line 2\n'
+ '<span class="linenos">3</span>line 3\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-text linenums">line 1\n'
+ 'line 2\n'
+ 'line 3\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('line 1\nline 2\nline 3', expected, lang='text', linenos='inline', linenospecial=2)
+
+ def test_codehilite_startinline(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="k">print</span><span class="p">(</span>'
+ '<span class="s2">&quot;Hello World&quot;</span><span class="p">);</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-php">print(&quot;Hello World&quot;);\n'
+ '</code></pre>'
+ )
+ self.assertOutputEquals('print("Hello World");', expected, lang='php', startinline=True)
+
+
+class TestCodeHiliteExtension(TestCase):
+ """ Test codehilite extension. """
+
+ def setUp(self):
+ if has_pygments and pygments.__version__ != required_pygments_version:
+ self.skipTest(f'Pygments=={required_pygments_version} is required')
+
+ # Define a custom Pygments formatter (same example in the documentation)
+ if has_pygments:
+ class CustomAddLangHtmlFormatter(pygments.formatters.HtmlFormatter):
+ def __init__(self, lang_str='', **options):
+ super().__init__(**options)
+ self.lang_str = lang_str
+
+ def _wrap_code(self, source):
+ yield 0, f'<code class="{self.lang_str}">'
+ yield from source
+ yield 0, '</code>'
+ else:
+ CustomAddLangHtmlFormatter = None
+
+ self.custom_pygments_formatter = CustomAddLangHtmlFormatter
+
+ maxDiff = None
+
+ def testBasicCodeHilite(self):
+ if has_pygments:
+ # Odd result as no lang given and a single comment is not enough for guessing.
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="err"># A Code Comment</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code># A Code Comment\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ '\t# A Code Comment',
+ expected,
+ extensions=['codehilite']
+ )
+
+ def testLinenumsTrue(self):
+ if has_pygments:
+ expected = (
+ '<table class="codehilitetable"><tr>'
+ '<td class="linenos"><div class="linenodiv"><pre>1</pre></div></td>'
+ '<td class="code"><div class="codehilite"><pre><span></span>'
+ '<code><span class="err"># A Code Comment</span>\n'
+ '</code></pre></div>\n'
+ '</td></tr></table>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="linenums"># A Code Comment\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ '\t# A Code Comment',
+ expected,
+ extensions=[CodeHiliteExtension(linenums=True)]
+ )
+
+ def testLinenumsFalse(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="c1"># A Code Comment</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-python"># A Code Comment\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ (
+ '\t#!Python\n'
+ '\t# A Code Comment'
+ ),
+ expected,
+ extensions=[CodeHiliteExtension(linenums=False)]
+ )
+
+ def testLinenumsNone(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="err"># A Code Comment</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code># A Code Comment\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ '\t# A Code Comment',
+ expected,
+ extensions=[CodeHiliteExtension(linenums=None)]
+ )
+
+ def testLinenumsNoneWithShebang(self):
+ if has_pygments:
+ expected = (
+ '<table class="codehilitetable"><tr>'
+ '<td class="linenos"><div class="linenodiv"><pre>1</pre></div></td>'
+ '<td class="code"><div class="codehilite"><pre><span></span>'
+ '<code><span class="c1"># A Code Comment</span>\n'
+ '</code></pre></div>\n'
+ '</td></tr></table>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-python linenums"># A Code Comment\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ (
+ '\t#!Python\n'
+ '\t# A Code Comment'
+ ),
+ expected,
+ extensions=[CodeHiliteExtension(linenums=None)]
+ )
+
+ def testLinenumsNoneWithColon(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="c1"># A Code Comment</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-python"># A Code Comment\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ (
+ '\t:::Python\n'
+ '\t# A Code Comment'
+ ),
+ expected,
+ extensions=[CodeHiliteExtension(linenums=None)]
+ )
+
+ def testHighlightLinesWithColon(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="hll"><span class="c1">#line 1</span>\n'
+ '</span><span class="c1">#line 2</span>\n'
+ '<span class="c1">#line 3</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-python">#line 1\n'
+ '#line 2\n'
+ '#line 3\n'
+ '</code></pre>'
+ )
+ # Double quotes
+ self.assertMarkdownRenders(
+ (
+ '\t:::Python hl_lines="1"\n'
+ '\t#line 1\n'
+ '\t#line 2\n'
+ '\t#line 3'
+ ),
+ expected,
+ extensions=['codehilite']
+ )
+ # Single quotes
+ self.assertMarkdownRenders(
+ (
+ "\t:::Python hl_lines='1'\n"
+ '\t#line 1\n'
+ '\t#line 2\n'
+ '\t#line 3'
+ ),
+ expected,
+ extensions=['codehilite']
+ )
+
+ def testUsePygmentsFalse(self):
+ self.assertMarkdownRenders(
+ (
+ '\t:::Python\n'
+ '\t# A Code Comment'
+ ),
+ (
+ '<pre class="codehilite"><code class="language-python"># A Code Comment\n'
+ '</code></pre>'
+ ),
+ extensions=[CodeHiliteExtension(use_pygments=False)]
+ )
+
+ def testLangPrefixEmpty(self):
+ self.assertMarkdownRenders(
+ (
+ '\t:::Python\n'
+ '\t# A Code Comment'
+ ),
+ (
+ '<pre class="codehilite"><code class="python"># A Code Comment\n'
+ '</code></pre>'
+ ),
+ extensions=[CodeHiliteExtension(use_pygments=False, lang_prefix='')]
+ )
+
+ def testLangPrefix(self):
+ self.assertMarkdownRenders(
+ (
+ '\t:::Python\n'
+ '\t# A Code Comment'
+ ),
+ (
+ '<pre class="codehilite"><code class="lang-python"># A Code Comment\n'
+ '</code></pre>'
+ ),
+ extensions=[CodeHiliteExtension(use_pygments=False, lang_prefix='lang-')]
+ )
+
+ def testDoubleEscape(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre>'
+ '<span></span>'
+ '<code><span class="p">&lt;</span><span class="nt">span</span><span class="p">&gt;</span>'
+ 'This<span class="ni">&amp;amp;</span>That'
+ '<span class="p">&lt;/</span><span class="nt">span</span><span class="p">&gt;</span>'
+ '\n</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-html">'
+ '&lt;span&gt;This&amp;amp;That&lt;/span&gt;\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ (
+ '\t:::html\n'
+ '\t<span>This&amp;That</span>'
+ ),
+ expected,
+ extensions=['codehilite']
+ )
+
+ def testEntitiesIntact(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre>'
+ '<span></span>'
+ '<code>&lt; &amp;lt; and &gt; &amp;gt;'
+ '\n</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-text">'
+ '&lt; &amp;lt; and &gt; &amp;gt;\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ (
+ '\t:::text\n'
+ '\t< &lt; and > &gt;'
+ ),
+ expected,
+ extensions=['codehilite']
+ )
+
+ def testHighlightAmps(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code>&amp;\n'
+ '&amp;amp;\n'
+ '&amp;amp;amp;\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-text">&amp;\n'
+ '&amp;amp;\n'
+ '&amp;amp;amp;\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ (
+ '\t:::text\n'
+ '\t&\n'
+ '\t&amp;\n'
+ '\t&amp;amp;'
+ ),
+ expected,
+ extensions=['codehilite']
+ )
+
+ def testUnknownOption(self):
+ if has_pygments:
+ # Odd result as no lang given and a single comment is not enough for guessing.
+ expected = (
+ '<div class="codehilite"><pre><span></span><code><span class="err"># A Code Comment</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code># A Code Comment\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ '\t# A Code Comment',
+ expected,
+ extensions=[CodeHiliteExtension(unknown='some value')],
+ )
+
+ def testMultipleBlocksSameStyle(self):
+ if has_pygments:
+ # See also: https://github.com/Python-Markdown/markdown/issues/1240
+ expected = (
+ '<div class="codehilite" style="background: #202020"><pre style="line-height: 125%; margin: 0;">'
+ '<span></span><code><span style="color: #999999; font-style: italic"># First Code Block</span>\n'
+ '</code></pre></div>\n\n'
+ '<p>Normal paragraph</p>\n'
+ '<div class="codehilite" style="background: #202020"><pre style="line-height: 125%; margin: 0;">'
+ '<span></span><code><span style="color: #999999; font-style: italic"># Second Code Block</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-python"># First Code Block\n'
+ '</code></pre>\n\n'
+ '<p>Normal paragraph</p>\n'
+ '<pre class="codehilite"><code class="language-python"># Second Code Block\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ (
+ '\t:::Python\n'
+ '\t# First Code Block\n\n'
+ 'Normal paragraph\n\n'
+ '\t:::Python\n'
+ '\t# Second Code Block'
+ ),
+ expected,
+ extensions=[CodeHiliteExtension(pygments_style="native", noclasses=True)]
+ )
+
+ def testFormatterLangStr(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code class="language-python">'
+ '<span class="c1"># A Code Comment</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-python"># A Code Comment\n'
+ '</code></pre>'
+ )
+
+ self.assertMarkdownRenders(
+ '\t:::Python\n'
+ '\t# A Code Comment',
+ expected,
+ extensions=[
+ CodeHiliteExtension(
+ guess_lang=False,
+ pygments_formatter=self.custom_pygments_formatter
+ )
+ ]
+ )
+
+ def testFormatterLangStrGuessLang(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span>'
+ '<code class="language-js+php"><span class="cp">&lt;?php</span> '
+ '<span class="k">print</span><span class="p">(</span>'
+ '<span class="s2">&quot;Hello World&quot;</span>'
+ '<span class="p">);</span> <span class="cp">?&gt;</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code>&lt;?php print(&quot;Hello World&quot;); ?&gt;\n'
+ '</code></pre>'
+ )
+ # Use PHP as the the starting `<?php` tag ensures an accurate guess.
+ self.assertMarkdownRenders(
+ '\t<?php print("Hello World"); ?>',
+ expected,
+ extensions=[CodeHiliteExtension(pygments_formatter=self.custom_pygments_formatter)]
+ )
+
+ def testFormatterLangStrEmptyLang(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span>'
+ '<code class="language-text"># A Code Comment\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code># A Code Comment\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ '\t# A Code Comment',
+ expected,
+ extensions=[
+ CodeHiliteExtension(
+ guess_lang=False,
+ pygments_formatter=self.custom_pygments_formatter,
+ )
+ ]
+ )
diff --git a/tests/test_syntax/extensions/test_def_list.py b/tests/test_syntax/extensions/test_def_list.py
new file mode 100644
index 0000000..8273410
--- /dev/null
+++ b/tests/test_syntax/extensions/test_def_list.py
@@ -0,0 +1,323 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2019 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestDefList(TestCase):
+
+ def test_def_list_with_ol(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+
+ term
+
+ : this is a definition for term. it has
+ multiple lines in the first paragraph.
+
+ 1. first thing
+
+ first thing details in a second paragraph.
+
+ 1. second thing
+
+ second thing details in a second paragraph.
+
+ 1. third thing
+
+ third thing details in a second paragraph.
+ '''
+ ),
+ self.dedent(
+ '''
+ <dl>
+ <dt>term</dt>
+ <dd>
+ <p>this is a definition for term. it has
+ multiple lines in the first paragraph.</p>
+ <ol>
+ <li>
+ <p>first thing</p>
+ <p>first thing details in a second paragraph.</p>
+ </li>
+ <li>
+ <p>second thing</p>
+ <p>second thing details in a second paragraph.</p>
+ </li>
+ <li>
+ <p>third thing</p>
+ <p>third thing details in a second paragraph.</p>
+ </li>
+ </ol>
+ </dd>
+ </dl>
+ '''
+ ),
+ extensions=['def_list']
+ )
+
+ def test_def_list_with_ul(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+
+ term
+
+ : this is a definition for term. it has
+ multiple lines in the first paragraph.
+
+ - first thing
+
+ first thing details in a second paragraph.
+
+ - second thing
+
+ second thing details in a second paragraph.
+
+ - third thing
+
+ third thing details in a second paragraph.
+ '''
+ ),
+ self.dedent(
+ '''
+ <dl>
+ <dt>term</dt>
+ <dd>
+ <p>this is a definition for term. it has
+ multiple lines in the first paragraph.</p>
+ <ul>
+ <li>
+ <p>first thing</p>
+ <p>first thing details in a second paragraph.</p>
+ </li>
+ <li>
+ <p>second thing</p>
+ <p>second thing details in a second paragraph.</p>
+ </li>
+ <li>
+ <p>third thing</p>
+ <p>third thing details in a second paragraph.</p>
+ </li>
+ </ul>
+ </dd>
+ </dl>
+ '''
+ ),
+ extensions=['def_list']
+ )
+
+ def test_def_list_with_nesting(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+
+ term
+
+ : this is a definition for term. it has
+ multiple lines in the first paragraph.
+
+ 1. first thing
+
+ first thing details in a second paragraph.
+
+ - first nested thing
+
+ second nested thing details
+ '''
+ ),
+ self.dedent(
+ '''
+ <dl>
+ <dt>term</dt>
+ <dd>
+ <p>this is a definition for term. it has
+ multiple lines in the first paragraph.</p>
+ <ol>
+ <li>
+ <p>first thing</p>
+ <p>first thing details in a second paragraph.</p>
+ <ul>
+ <li>
+ <p>first nested thing</p>
+ <p>second nested thing details</p>
+ </li>
+ </ul>
+ </li>
+ </ol>
+ </dd>
+ </dl>
+ '''
+ ),
+ extensions=['def_list']
+ )
+
+ def test_def_list_with_nesting_self(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+
+ term
+
+ : this is a definition for term. it has
+ multiple lines in the first paragraph.
+
+ inception
+
+ : this is a definition for term. it has
+ multiple lines in the first paragraph.
+
+ - bullet point
+
+ another paragraph
+ '''
+ ),
+ self.dedent(
+ '''
+ <dl>
+ <dt>term</dt>
+ <dd>
+ <p>this is a definition for term. it has
+ multiple lines in the first paragraph.</p>
+ <dl>
+ <dt>inception</dt>
+ <dd>
+ <p>this is a definition for term. it has
+ multiple lines in the first paragraph.</p>
+ <ul>
+ <li>bullet point</li>
+ </ul>
+ <p>another paragraph</p>
+ </dd>
+ </dl>
+ </dd>
+ </dl>
+ '''
+ ),
+ extensions=['def_list']
+ )
+
+ def test_def_list_unreasonable_nesting(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+
+ turducken
+
+ : this is a definition for term. it has
+ multiple lines in the first paragraph.
+
+ 1. ordered list
+
+ - nested list
+
+ term
+
+ : definition
+
+ - item 1 paragraph 1
+
+ item 1 paragraph 2
+ '''
+ ),
+ self.dedent(
+ '''
+ <dl>
+ <dt>turducken</dt>
+ <dd>
+ <p>this is a definition for term. it has
+ multiple lines in the first paragraph.</p>
+ <ol>
+ <li>
+ <p>ordered list</p>
+ <ul>
+ <li>
+ <p>nested list</p>
+ <dl>
+ <dt>term</dt>
+ <dd>
+ <p>definition</p>
+ <ul>
+ <li>
+ <p>item 1 paragraph 1</p>
+ <p>item 1 paragraph 2</p>
+ </li>
+ </ul>
+ </dd>
+ </dl>
+ </li>
+ </ul>
+ </li>
+ </ol>
+ </dd>
+ </dl>
+ '''
+ ),
+ extensions=['def_list']
+ )
+
+ def test_def_list_nested_admontions(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ term
+
+ : definition
+
+ !!! note "Admontion"
+
+ term
+
+ : definition
+
+ 1. list
+
+ continue
+ '''
+ ),
+ self.dedent(
+ '''
+ <dl>
+ <dt>term</dt>
+ <dd>
+ <p>definition</p>
+ <div class="admonition note">
+ <p class="admonition-title">Admontion</p>
+ <dl>
+ <dt>term</dt>
+ <dd>
+ <p>definition</p>
+ <ol>
+ <li>
+ <p>list</p>
+ <p>continue</p>
+ </li>
+ </ol>
+ </dd>
+ </dl>
+ </div>
+ </dd>
+ </dl>
+ '''
+ ),
+ extensions=['def_list', 'admonition']
+ )
diff --git a/tests/test_syntax/extensions/test_fenced_code.py b/tests/test_syntax/extensions/test_fenced_code.py
new file mode 100644
index 0000000..be3c215
--- /dev/null
+++ b/tests/test_syntax/extensions/test_fenced_code.py
@@ -0,0 +1,1020 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2019 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+import markdown
+import markdown.extensions.codehilite
+import os
+
+try:
+ import pygments # noqa
+ import pygments.formatters # noqa
+ has_pygments = True
+except ImportError:
+ has_pygments = False
+
+# The version required by the tests is the version specified and installed in the 'pygments' tox env.
+# In any environment where the PYGMENTS_VERSION environment variable is either not defined or doesn't
+# match the version of Pygments installed, all tests which rely in pygments will be skipped.
+required_pygments_version = os.environ.get('PYGMENTS_VERSION', '')
+
+
+class TestFencedCode(TestCase):
+
+ def testBasicFence(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ A paragraph before a fenced code block:
+
+ ```
+ Fenced code block
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <p>A paragraph before a fenced code block:</p>
+ <pre><code>Fenced code block
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testNestedFence(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ````
+
+ ```
+ ````
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre><code>
+ ```
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testFencedTildes(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ~~~
+ # Arbitrary code
+ ``` # these backticks will not close the block
+ ~~~
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre><code># Arbitrary code
+ ``` # these backticks will not close the block
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testFencedLanguageNoDot(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` python
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testFencedLanguageWithDot(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` .python
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def test_fenced_code_in_raw_html(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <details>
+ ```
+ Begone placeholders!
+ ```
+ </details>
+ """
+ ),
+ self.dedent(
+ """
+ <details>
+
+ <pre><code>Begone placeholders!
+ </code></pre>
+
+ </details>
+ """
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testFencedLanguageInAttr(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` {.python}
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testFencedMultipleClassesInAttr(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` {.python .foo .bar}
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre class="foo bar"><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testFencedIdInAttr(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { #foo }
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre id="foo"><code># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testFencedIdAndLangInAttr(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python #foo }
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre id="foo"><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testFencedIdAndLangAndClassInAttr(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python #foo .bar }
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre id="foo" class="bar"><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testFencedLanguageIdAndPygmentsDisabledInAttrNoCodehilite(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python #foo use_pygments=False }
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre id="foo"><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testFencedLanguageIdAndPygmentsEnabledInAttrNoCodehilite(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python #foo use_pygments=True }
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre id="foo"><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code']
+ )
+
+ def testFencedLanguageNoCodehiliteWithAttrList(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python foo=bar }
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre><code class="language-python" foo="bar"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code', 'attr_list']
+ )
+
+ def testFencedLanguagePygmentsDisabledInAttrNoCodehiliteWithAttrList(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python foo=bar use_pygments=False }
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre><code class="language-python" foo="bar"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code', 'attr_list']
+ )
+
+ def testFencedLanguagePygmentsEnabledInAttrNoCodehiliteWithAttrList(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python foo=bar use_pygments=True }
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code', 'attr_list']
+ )
+
+ def testFencedLanguageNoPrefix(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` python
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre><code class="python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=[markdown.extensions.fenced_code.FencedCodeExtension(lang_prefix='')]
+ )
+
+ def testFencedLanguageAltPrefix(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` python
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre><code class="lang-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=[markdown.extensions.fenced_code.FencedCodeExtension(lang_prefix='lang-')]
+ )
+
+ def testFencedCodeEscapedAttrs(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { ."weird #"foo bar=">baz }
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre id="&quot;foo"><code class="language-&quot;weird" bar="&quot;&gt;baz"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['fenced_code', 'attr_list']
+ )
+
+
+class TestFencedCodeWithCodehilite(TestCase):
+
+ def setUp(self):
+ if has_pygments and pygments.__version__ != required_pygments_version:
+ self.skipTest(f'Pygments=={required_pygments_version} is required')
+
+ def test_shebang(self):
+
+ if has_pygments:
+ expected = '''
+ <div class="codehilite"><pre><span></span><code>#!test
+ </code></pre></div>
+ '''
+ else:
+ expected = '''
+ <pre class="codehilite"><code>#!test
+ </code></pre>
+ '''
+
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ```
+ #!test
+ ```
+ '''
+ ),
+ self.dedent(
+ expected
+ ),
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(linenums=None, guess_lang=False),
+ 'fenced_code'
+ ]
+ )
+
+ def testFencedCodeWithHighlightLines(self):
+ if has_pygments:
+ expected = self.dedent(
+ '''
+ <div class="codehilite"><pre><span></span><code><span class="hll">line 1
+ </span>line 2
+ <span class="hll">line 3
+ </span></code></pre></div>
+ '''
+ )
+ else:
+ expected = self.dedent(
+ '''
+ <pre class="codehilite"><code>line 1
+ line 2
+ line 3
+ </code></pre>
+ '''
+ )
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ```hl_lines="1 3"
+ line 1
+ line 2
+ line 3
+ ```
+ '''
+ ),
+ expected,
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(linenums=None, guess_lang=False),
+ 'fenced_code'
+ ]
+ )
+
+ def testFencedLanguageAndHighlightLines(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code>'
+ '<span class="hll"><span class="n">line</span> <span class="mi">1</span>\n'
+ '</span><span class="n">line</span> <span class="mi">2</span>\n'
+ '<span class="hll"><span class="n">line</span> <span class="mi">3</span>\n'
+ '</span></code></pre></div>'
+ )
+ else:
+ expected = self.dedent(
+ '''
+ <pre class="codehilite"><code class="language-python">line 1
+ line 2
+ line 3
+ </code></pre>
+ '''
+ )
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` .python hl_lines="1 3"
+ line 1
+ line 2
+ line 3
+ ```
+ '''
+ ),
+ expected,
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(linenums=None, guess_lang=False),
+ 'fenced_code'
+ ]
+ )
+
+ def testFencedLanguageAndPygmentsDisabled(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` .python
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(use_pygments=False),
+ 'fenced_code'
+ ]
+ )
+
+ def testFencedLanguageDoubleEscape(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code>'
+ '<span class="p">&lt;</span><span class="nt">span</span>'
+ '<span class="p">&gt;</span>This<span class="ni">&amp;amp;</span>'
+ 'That<span class="p">&lt;/</span><span class="nt">span</span>'
+ '<span class="p">&gt;</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-html">'
+ '&lt;span&gt;This&amp;amp;That&lt;/span&gt;\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ```html
+ <span>This&amp;That</span>
+ ```
+ '''
+ ),
+ expected,
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(),
+ 'fenced_code'
+ ]
+ )
+
+ def testFencedAmps(self):
+ if has_pygments:
+ expected = self.dedent(
+ '''
+ <div class="codehilite"><pre><span></span><code>&amp;
+ &amp;amp;
+ &amp;amp;amp;
+ </code></pre></div>
+ '''
+ )
+ else:
+ expected = self.dedent(
+ '''
+ <pre class="codehilite"><code class="language-text">&amp;
+ &amp;amp;
+ &amp;amp;amp;
+ </code></pre>
+ '''
+ )
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ```text
+ &
+ &amp;
+ &amp;amp;
+ ```
+ '''
+ ),
+ expected,
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(),
+ 'fenced_code'
+ ]
+ )
+
+ def testFencedCodeWithHighlightLinesInAttr(self):
+ if has_pygments:
+ expected = self.dedent(
+ '''
+ <div class="codehilite"><pre><span></span><code><span class="hll">line 1
+ </span>line 2
+ <span class="hll">line 3
+ </span></code></pre></div>
+ '''
+ )
+ else:
+ expected = self.dedent(
+ '''
+ <pre class="codehilite"><code>line 1
+ line 2
+ line 3
+ </code></pre>
+ '''
+ )
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ```{ hl_lines="1 3" }
+ line 1
+ line 2
+ line 3
+ ```
+ '''
+ ),
+ expected,
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(linenums=None, guess_lang=False),
+ 'fenced_code'
+ ]
+ )
+
+ def testFencedLanguageAndHighlightLinesInAttr(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite"><pre><span></span><code>'
+ '<span class="hll"><span class="n">line</span> <span class="mi">1</span>\n'
+ '</span><span class="n">line</span> <span class="mi">2</span>\n'
+ '<span class="hll"><span class="n">line</span> <span class="mi">3</span>\n'
+ '</span></code></pre></div>'
+ )
+ else:
+ expected = self.dedent(
+ '''
+ <pre class="codehilite"><code class="language-python">line 1
+ line 2
+ line 3
+ </code></pre>
+ '''
+ )
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python hl_lines="1 3" }
+ line 1
+ line 2
+ line 3
+ ```
+ '''
+ ),
+ expected,
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(linenums=None, guess_lang=False),
+ 'fenced_code'
+ ]
+ )
+
+ def testFencedLanguageIdInAttrAndPygmentsDisabled(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python #foo }
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre id="foo"><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(use_pygments=False),
+ 'fenced_code'
+ ]
+ )
+
+ def testFencedLanguageIdAndPygmentsDisabledInAttr(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python #foo use_pygments=False }
+ # Some python code
+ ```
+ '''
+ ),
+ self.dedent(
+ '''
+ <pre id="foo"><code class="language-python"># Some python code
+ </code></pre>
+ '''
+ ),
+ extensions=['codehilite', 'fenced_code']
+ )
+
+ def testFencedLanguageAttrCssclass(self):
+ if has_pygments:
+ expected = self.dedent(
+ '''
+ <div class="pygments"><pre><span></span><code><span class="c1"># Some python code</span>
+ </code></pre></div>
+ '''
+ )
+ else:
+ expected = (
+ '<pre class="pygments"><code class="language-python"># Some python code\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python css_class='pygments' }
+ # Some python code
+ ```
+ '''
+ ),
+ expected,
+ extensions=['codehilite', 'fenced_code']
+ )
+
+ def testFencedLanguageAttrLinenums(self):
+ if has_pygments:
+ expected = (
+ '<table class="codehilitetable"><tr>'
+ '<td class="linenos"><div class="linenodiv"><pre>1</pre></div></td>'
+ '<td class="code"><div class="codehilite"><pre><span></span>'
+ '<code><span class="c1"># Some python code</span>\n'
+ '</code></pre></div>\n'
+ '</td></tr></table>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-python linenums"># Some python code\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python linenums=True }
+ # Some python code
+ ```
+ '''
+ ),
+ expected,
+ extensions=['codehilite', 'fenced_code']
+ )
+
+ def testFencedLanguageAttrGuesslang(self):
+ if has_pygments:
+ expected = self.dedent(
+ '''
+ <div class="codehilite"><pre><span></span><code># Some python code
+ </code></pre></div>
+ '''
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code># Some python code\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { guess_lang=False }
+ # Some python code
+ ```
+ '''
+ ),
+ expected,
+ extensions=['codehilite', 'fenced_code']
+ )
+
+ def testFencedLanguageAttrNoclasses(self):
+ if has_pygments:
+ expected = (
+ '<div class="codehilite" style="background: #f8f8f8">'
+ '<pre style="line-height: 125%; margin: 0;"><span></span><code>'
+ '<span style="color: #408080; font-style: italic"># Some python code</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = (
+ '<pre class="codehilite"><code class="language-python"># Some python code\n'
+ '</code></pre>'
+ )
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python noclasses=True }
+ # Some python code
+ ```
+ '''
+ ),
+ expected,
+ extensions=['codehilite', 'fenced_code']
+ )
+
+ def testFencedMultipleBlocksSameStyle(self):
+ if has_pygments:
+ # See also: https://github.com/Python-Markdown/markdown/issues/1240
+ expected = (
+ '<div class="codehilite" style="background: #202020"><pre style="line-height: 125%; margin: 0;">'
+ '<span></span><code><span style="color: #999999; font-style: italic"># First Code Block</span>\n'
+ '</code></pre></div>\n\n'
+ '<p>Normal paragraph</p>\n'
+ '<div class="codehilite" style="background: #202020"><pre style="line-height: 125%; margin: 0;">'
+ '<span></span><code><span style="color: #999999; font-style: italic"># Second Code Block</span>\n'
+ '</code></pre></div>'
+ )
+ else:
+ expected = '''
+ <pre class="codehilite"><code class="language-python"># First Code Block
+ </code></pre>
+
+ <p>Normal paragraph</p>
+ <pre class="codehilite"><code class="language-python"># Second Code Block
+ </code></pre>
+ '''
+
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ``` { .python }
+ # First Code Block
+ ```
+
+ Normal paragraph
+
+ ``` { .python }
+ # Second Code Block
+ ```
+ '''
+ ),
+ self.dedent(
+ expected
+ ),
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(pygments_style="native", noclasses=True),
+ 'fenced_code'
+ ]
+ )
+
+ def testCustomPygmentsFormatter(self):
+ if has_pygments:
+ class CustomFormatter(pygments.formatters.HtmlFormatter):
+ def wrap(self, source, outfile):
+ return self._wrap_div(self._wrap_code(source))
+
+ def _wrap_code(self, source):
+ yield 0, '<code>'
+ for i, t in source:
+ if i == 1:
+ t += '<br>'
+ yield i, t
+ yield 0, '</code>'
+
+ expected = '''
+ <div class="codehilite"><code>hello world
+ <br>hello another world
+ <br></code></div>
+ '''
+
+ else:
+ CustomFormatter = None
+ expected = '''
+ <pre class="codehilite"><code>hello world
+ hello another world
+ </code></pre>
+ '''
+
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ```
+ hello world
+ hello another world
+ ```
+ '''
+ ),
+ self.dedent(
+ expected
+ ),
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(
+ pygments_formatter=CustomFormatter,
+ guess_lang=False,
+ ),
+ 'fenced_code'
+ ]
+ )
+
+ def testPygmentsAddLangClassFormatter(self):
+ if has_pygments:
+ class CustomAddLangHtmlFormatter(pygments.formatters.HtmlFormatter):
+ def __init__(self, lang_str='', **options):
+ super().__init__(**options)
+ self.lang_str = lang_str
+
+ def _wrap_code(self, source):
+ yield 0, f'<code class="{self.lang_str}">'
+ yield from source
+ yield 0, '</code>'
+
+ expected = '''
+ <div class="codehilite"><pre><span></span><code class="language-text">hello world
+ hello another world
+ </code></pre></div>
+ '''
+ else:
+ CustomAddLangHtmlFormatter = None
+ expected = '''
+ <pre class="codehilite"><code class="language-text">hello world
+ hello another world
+ </code></pre>
+ '''
+
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ```text
+ hello world
+ hello another world
+ ```
+ '''
+ ),
+ self.dedent(
+ expected
+ ),
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(
+ guess_lang=False,
+ pygments_formatter=CustomAddLangHtmlFormatter,
+ ),
+ 'fenced_code'
+ ]
+ )
+
+ def testSvgCustomPygmentsFormatter(self):
+ if has_pygments:
+ expected = '''
+ <?xml version="1.0"?>
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+ <svg xmlns="http://www.w3.org/2000/svg">
+ <g font-family="monospace" font-size="14px">
+ <text x="0" y="14" xml:space="preserve">hello&#160;world</text>
+ <text x="0" y="33" xml:space="preserve">hello&#160;another&#160;world</text>
+ <text x="0" y="52" xml:space="preserve"></text></g></svg>
+ '''
+
+ else:
+ expected = '''
+ <pre class="codehilite"><code>hello world
+ hello another world
+ </code></pre>
+ '''
+
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ```
+ hello world
+ hello another world
+ ```
+ '''
+ ),
+ self.dedent(
+ expected
+ ),
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(
+ pygments_formatter='svg',
+ linenos=False,
+ guess_lang=False,
+ ),
+ 'fenced_code'
+ ]
+ )
+
+ def testInvalidCustomPygmentsFormatter(self):
+ if has_pygments:
+ expected = '''
+ <div class="codehilite"><pre><span></span><code>hello world
+ hello another world
+ </code></pre></div>
+ '''
+
+ else:
+ expected = '''
+ <pre class="codehilite"><code>hello world
+ hello another world
+ </code></pre>
+ '''
+
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ ```
+ hello world
+ hello another world
+ ```
+ '''
+ ),
+ self.dedent(
+ expected
+ ),
+ extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(
+ pygments_formatter='invalid',
+ guess_lang=False,
+ ),
+ 'fenced_code'
+ ]
+ )
diff --git a/tests/test_syntax/extensions/test_footnotes.py b/tests/test_syntax/extensions/test_footnotes.py
new file mode 100644
index 0000000..9a6b32a
--- /dev/null
+++ b/tests/test_syntax/extensions/test_footnotes.py
@@ -0,0 +1,338 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestFootnotes(TestCase):
+
+ default_kwargs = {'extensions': ['footnotes']}
+ maxDiff = None
+
+ def test_basic_footnote(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ paragraph[^1]
+
+ [^1]: A Footnote
+ """
+ ),
+ '<p>paragraph<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>A Footnote&#160;<a class="footnote-backref" href="#fnref:1"'
+ ' title="Jump back to footnote 1 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>'
+ )
+
+ def test_multiple_footnotes(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ foo[^1]
+
+ bar[^2]
+
+ [^1]: Footnote 1
+ [^2]: Footnote 2
+ """
+ ),
+ '<p>foo<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>\n'
+ '<p>bar<sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>Footnote 1&#160;<a class="footnote-backref" href="#fnref:1"'
+ ' title="Jump back to footnote 1 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '<li id="fn:2">\n'
+ '<p>Footnote 2&#160;<a class="footnote-backref" href="#fnref:2"'
+ ' title="Jump back to footnote 2 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>'
+ )
+
+ def test_multiple_footnotes_multiline(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ foo[^1]
+
+ bar[^2]
+
+ [^1]: Footnote 1
+ line 2
+ [^2]: Footnote 2
+ """
+ ),
+ '<p>foo<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>\n'
+ '<p>bar<sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>Footnote 1\nline 2&#160;<a class="footnote-backref" href="#fnref:1"'
+ ' title="Jump back to footnote 1 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '<li id="fn:2">\n'
+ '<p>Footnote 2&#160;<a class="footnote-backref" href="#fnref:2"'
+ ' title="Jump back to footnote 2 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>'
+ )
+
+ def test_footnote_multi_line(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ paragraph[^1]
+ [^1]: A Footnote
+ line 2
+ """
+ ),
+ '<p>paragraph<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>A Footnote\nline 2&#160;<a class="footnote-backref" href="#fnref:1"'
+ ' title="Jump back to footnote 1 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>'
+ )
+
+ def test_footnote_multi_line_lazy_indent(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ paragraph[^1]
+ [^1]: A Footnote
+ line 2
+ """
+ ),
+ '<p>paragraph<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>A Footnote\nline 2&#160;<a class="footnote-backref" href="#fnref:1"'
+ ' title="Jump back to footnote 1 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>'
+ )
+
+ def test_footnote_multi_line_complex(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ paragraph[^1]
+
+ [^1]:
+
+ A Footnote
+ line 2
+
+ * list item
+
+ > blockquote
+ """
+ ),
+ '<p>paragraph<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>A Footnote\nline 2</p>\n'
+ '<ul>\n<li>list item</li>\n</ul>\n'
+ '<blockquote>\n<p>blockquote</p>\n</blockquote>\n'
+ '<p><a class="footnote-backref" href="#fnref:1"'
+ ' title="Jump back to footnote 1 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>'
+ )
+
+ def test_footnote_multple_complex(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ foo[^1]
+
+ bar[^2]
+
+ [^1]:
+
+ A Footnote
+ line 2
+
+ * list item
+
+ > blockquote
+
+ [^2]: Second footnote
+
+ paragraph 2
+ """
+ ),
+ '<p>foo<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>\n'
+ '<p>bar<sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>A Footnote\nline 2</p>\n'
+ '<ul>\n<li>list item</li>\n</ul>\n'
+ '<blockquote>\n<p>blockquote</p>\n</blockquote>\n'
+ '<p><a class="footnote-backref" href="#fnref:1"'
+ ' title="Jump back to footnote 1 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '<li id="fn:2">\n'
+ '<p>Second footnote</p>\n'
+ '<p>paragraph 2&#160;<a class="footnote-backref" href="#fnref:2"'
+ ' title="Jump back to footnote 2 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>'
+ )
+
+ def test_footnote_multple_complex_no_blank_line_between(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ foo[^1]
+
+ bar[^2]
+
+ [^1]:
+
+ A Footnote
+ line 2
+
+ * list item
+
+ > blockquote
+ [^2]: Second footnote
+
+ paragraph 2
+ """
+ ),
+ '<p>foo<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>\n'
+ '<p>bar<sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>A Footnote\nline 2</p>\n'
+ '<ul>\n<li>list item</li>\n</ul>\n'
+ '<blockquote>\n<p>blockquote</p>\n</blockquote>\n'
+ '<p><a class="footnote-backref" href="#fnref:1"'
+ ' title="Jump back to footnote 1 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '<li id="fn:2">\n'
+ '<p>Second footnote</p>\n'
+ '<p>paragraph 2&#160;<a class="footnote-backref" href="#fnref:2"'
+ ' title="Jump back to footnote 2 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>'
+ )
+
+ def test_backlink_text(self):
+ """Test backlink configuration."""
+
+ self.assertMarkdownRenders(
+ 'paragraph[^1]\n\n[^1]: A Footnote',
+ '<p>paragraph<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>A Footnote&#160;<a class="footnote-backref" href="#fnref:1"'
+ ' title="Jump back to footnote 1 in the text">back</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>',
+ extension_configs={'footnotes': {'BACKLINK_TEXT': 'back'}}
+ )
+
+ def test_footnote_separator(self):
+ """Test separator configuration."""
+
+ self.assertMarkdownRenders(
+ 'paragraph[^1]\n\n[^1]: A Footnote',
+ '<p>paragraph<sup id="fnref-1"><a class="footnote-ref" href="#fn-1">1</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn-1">\n'
+ '<p>A Footnote&#160;<a class="footnote-backref" href="#fnref-1"'
+ ' title="Jump back to footnote 1 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>',
+ extension_configs={'footnotes': {'SEPARATOR': '-'}}
+ )
+
+ def test_backlink_title(self):
+ """Test backlink title configuration without placeholder."""
+
+ self.assertMarkdownRenders(
+ 'paragraph[^1]\n\n[^1]: A Footnote',
+ '<p>paragraph<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>A Footnote&#160;<a class="footnote-backref" href="#fnref:1"'
+ ' title="Jump back to footnote">&#8617;</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>',
+ extension_configs={'footnotes': {'BACKLINK_TITLE': 'Jump back to footnote'}}
+ )
+
+ def test_superscript_text(self):
+ """Test superscript text configuration."""
+
+ self.assertMarkdownRenders(
+ 'paragraph[^1]\n\n[^1]: A Footnote',
+ '<p>paragraph<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">[1]</a></sup></p>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>A Footnote&#160;<a class="footnote-backref" href="#fnref:1"'
+ ' title="Jump back to footnote 1 in the text">&#8617;</a></p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>',
+ extension_configs={'footnotes': {'SUPERSCRIPT_TEXT': '[{}]'}}
+ )
diff --git a/tests/test_syntax/extensions/test_legacy_attrs.py b/tests/test_syntax/extensions/test_legacy_attrs.py
new file mode 100644
index 0000000..b4ba5e7
--- /dev/null
+++ b/tests/test_syntax/extensions/test_legacy_attrs.py
@@ -0,0 +1,67 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestLegacyAtrributes(TestCase):
+
+ maxDiff = None
+
+ def testLegacyAttrs(self):
+ self.assertMarkdownRenders(
+ self.dedent("""
+ # Header {@id=inthebeginning}
+
+ Now, let's try something *inline{@class=special}*, to see if it works
+
+ @id=TABLE.OF.CONTENTS}
+
+
+ * {@id=TABLEOFCONTENTS}
+
+
+ Or in the middle of the text {@id=TABLEOFCONTENTS}
+
+ {@id=tableofcontents}
+
+ [![{@style=float: left; margin: 10px; border:
+ none;}](http://fourthought.com/images/ftlogo.png "Fourthought
+ logo")](http://fourthought.com/)
+
+ ![img{@id=foo}][img]
+
+ [img]: http://example.com/i.jpg
+ """),
+ self.dedent("""
+ <h1 id="inthebeginning">Header </h1>
+ <p>Now, let's try something <em class="special">inline</em>, to see if it works</p>
+ <p>@id=TABLE.OF.CONTENTS}</p>
+ <ul>
+ <li id="TABLEOFCONTENTS"></li>
+ </ul>
+ <p id="TABLEOFCONTENTS">Or in the middle of the text </p>
+ <p id="tableofcontents"></p>
+ <p><a href="http://fourthought.com/"><img alt="" src="http://fourthought.com/images/ftlogo.png" style="float: left; margin: 10px; border: none;" title="Fourthought logo" /></a></p>
+ <p><img alt="img" id="foo" src="http://example.com/i.jpg" /></p>
+ """), # noqa: E501
+ extensions=['legacy_attrs']
+ )
diff --git a/tests/test_syntax/extensions/test_legacy_em.py b/tests/test_syntax/extensions/test_legacy_em.py
new file mode 100644
index 0000000..c5daf1c
--- /dev/null
+++ b/tests/test_syntax/extensions/test_legacy_em.py
@@ -0,0 +1,66 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestLegacyEm(TestCase):
+ def test_legacy_emphasis(self):
+ self.assertMarkdownRenders(
+ '_connected_words_',
+ '<p><em>connected</em>words_</p>',
+ extensions=['legacy_em']
+ )
+
+ def test_legacy_strong(self):
+ self.assertMarkdownRenders(
+ '__connected__words__',
+ '<p><strong>connected</strong>words__</p>',
+ extensions=['legacy_em']
+ )
+
+ def test_complex_emphasis_underscore(self):
+ self.assertMarkdownRenders(
+ 'This is text __bold _italic bold___ with more text',
+ '<p>This is text <strong>bold <em>italic bold</em></strong> with more text</p>',
+ extensions=['legacy_em']
+ )
+
+ def test_complex_emphasis_underscore_mid_word(self):
+ self.assertMarkdownRenders(
+ 'This is text __bold_italic bold___ with more text',
+ '<p>This is text <strong>bold<em>italic bold</em></strong> with more text</p>',
+ extensions=['legacy_em']
+ )
+
+ def test_complex_multple_underscore_type(self):
+
+ self.assertMarkdownRenders(
+ 'traced ___along___ bla __blocked__ if other ___or___',
+ '<p>traced <strong><em>along</em></strong> bla <strong>blocked</strong> if other <strong><em>or</em></strong></p>' # noqa: E501
+ )
+
+ def test_complex_multple_underscore_type_variant2(self):
+
+ self.assertMarkdownRenders(
+ 'on the __1-4 row__ of the AP Combat Table ___and___ receive',
+ '<p>on the <strong>1-4 row</strong> of the AP Combat Table <strong><em>and</em></strong> receive</p>'
+ )
diff --git a/tests/test_syntax/extensions/test_md_in_html.py b/tests/test_syntax/extensions/test_md_in_html.py
new file mode 100644
index 0000000..6c13f11
--- /dev/null
+++ b/tests/test_syntax/extensions/test_md_in_html.py
@@ -0,0 +1,1216 @@
+# -*- coding: utf-8 -*-
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from unittest import TestSuite
+from markdown.test_tools import TestCase
+from ..blocks.test_html_blocks import TestHTMLBlocks
+from markdown import Markdown
+from xml.etree.ElementTree import Element
+
+
+class TestMarkdownInHTMLPostProcessor(TestCase):
+ """ Ensure any remaining elements in HTML stash are properly serialized. """
+
+ def test_stash_to_string(self):
+ # There should be no known cases where this actually happens so we need to
+ # forcefully pass an etree Element to the method to ensure proper behavior.
+ element = Element('div')
+ element.text = 'Foo bar.'
+ md = Markdown(extensions=['md_in_html'])
+ result = md.postprocessors['raw_html'].stash_to_string(element)
+ self.assertEqual(result, '<div>Foo bar.</div>')
+
+
+class TestDefaultwMdInHTML(TestHTMLBlocks):
+ """ Ensure the md_in_html extension does not break the default behavior. """
+
+ default_kwargs = {'extensions': ['md_in_html']}
+
+
+class TestMdInHTML(TestCase):
+
+ default_kwargs = {'extensions': ['md_in_html']}
+
+ def test_md1_paragraph(self):
+ self.assertMarkdownRenders(
+ '<p markdown="1">*foo*</p>',
+ '<p><em>foo</em></p>'
+ )
+
+ def test_md1_p_linebreaks(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <p markdown="1">
+ *foo*
+ </p>
+ """
+ ),
+ self.dedent(
+ """
+ <p>
+ <em>foo</em>
+ </p>
+ """
+ )
+ )
+
+ def test_md1_p_blank_lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <p markdown="1">
+
+ *foo*
+
+ </p>
+ """
+ ),
+ self.dedent(
+ """
+ <p>
+
+ <em>foo</em>
+
+ </p>
+ """
+ )
+ )
+
+ def test_md1_div(self):
+ self.assertMarkdownRenders(
+ '<div markdown="1">*foo*</div>',
+ self.dedent(
+ """
+ <div>
+ <p><em>foo</em></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_div_linebreaks(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ *foo*
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><em>foo</em></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_code_span(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ `<h1>code span</h1>`
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><code>&lt;h1&gt;code span&lt;/h1&gt;</code></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_code_span_oneline(self):
+ self.assertMarkdownRenders(
+ '<div markdown="1">`<h1>code span</h1>`</div>',
+ self.dedent(
+ """
+ <div>
+ <p><code>&lt;h1&gt;code span&lt;/h1&gt;</code></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_code_span_unclosed(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ `<p>`
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><code>&lt;p&gt;</code></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_code_span_script_tag(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ `<script>`
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><code>&lt;script&gt;</code></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_div_blank_lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+
+ *foo*
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><em>foo</em></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_div_multi(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+
+ *foo*
+
+ __bar__
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><em>foo</em></p>
+ <p><strong>bar</strong></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_div_nested(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+
+ <div markdown="1">
+ *foo*
+ </div>
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <div>
+ <p><em>foo</em></p>
+ </div>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_div_multi_nest(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+
+ <div markdown="1">
+ <p markdown="1">*foo*</p>
+ </div>
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <div>
+ <p><em>foo</em></p>
+ </div>
+ </div>
+ """
+ )
+ )
+
+ def text_md1_details(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <details markdown="1">
+ <summary>Click to expand</summary>
+ *foo*
+ </details>
+ """
+ ),
+ self.dedent(
+ """
+ <details>
+ <summary>Click to expand</summary>
+ <p><em>foo</em></p>
+ </details>
+ """
+ )
+ )
+
+ def test_md1_mix(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ A _Markdown_ paragraph before a raw child.
+
+ <p markdown="1">A *raw* child.</p>
+
+ A _Markdown_ tail to the raw child.
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p>A <em>Markdown</em> paragraph before a raw child.</p>
+ <p>A <em>raw</em> child.</p>
+ <p>A <em>Markdown</em> tail to the raw child.</p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_deep_mix(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+
+ A _Markdown_ paragraph before a raw child.
+
+ A second Markdown paragraph
+ with two lines.
+
+ <div markdown="1">
+
+ A *raw* child.
+
+ <p markdown="1">*foo*</p>
+
+ Raw child tail.
+
+ </div>
+
+ A _Markdown_ tail to the raw child.
+
+ A second tail item
+ with two lines.
+
+ <p markdown="1">More raw.</p>
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p>A <em>Markdown</em> paragraph before a raw child.</p>
+ <p>A second Markdown paragraph
+ with two lines.</p>
+ <div>
+ <p>A <em>raw</em> child.</p>
+ <p><em>foo</em></p>
+ <p>Raw child tail.</p>
+ </div>
+ <p>A <em>Markdown</em> tail to the raw child.</p>
+ <p>A second tail item
+ with two lines.</p>
+ <p>More raw.</p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_div_raw_inline(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+
+ <em>foo</em>
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><em>foo</em></p>
+ </div>
+ """
+ )
+ )
+
+ def test_no_md1_paragraph(self):
+ self.assertMarkdownRenders(
+ '<p>*foo*</p>',
+ '<p>*foo*</p>'
+ )
+
+ def test_no_md1_nest(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ A _Markdown_ paragraph before a raw child.
+
+ <p>A *raw* child.</p>
+
+ A _Markdown_ tail to the raw child.
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p>A <em>Markdown</em> paragraph before a raw child.</p>
+ <p>A *raw* child.</p>
+ <p>A <em>Markdown</em> tail to the raw child.</p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_nested_empty(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ A _Markdown_ paragraph before a raw empty tag.
+
+ <img src="image.png" alt="An image" />
+
+ A _Markdown_ tail to the raw empty tag.
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p>A <em>Markdown</em> paragraph before a raw empty tag.</p>
+ <p><img src="image.png" alt="An image" /></p>
+ <p>A <em>Markdown</em> tail to the raw empty tag.</p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_nested_empty_block(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ A _Markdown_ paragraph before a raw empty tag.
+
+ <hr />
+
+ A _Markdown_ tail to the raw empty tag.
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p>A <em>Markdown</em> paragraph before a raw empty tag.</p>
+ <hr />
+ <p>A <em>Markdown</em> tail to the raw empty tag.</p>
+ </div>
+ """
+ )
+ )
+
+ def test_empty_tags(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ <div></div>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <div></div>
+ </div>
+ """
+ )
+ )
+
+ def test_orphan_end_tag_in_raw_html(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ <div>
+ Test
+
+ </pre>
+
+ Test
+ </div>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <div>
+ Test
+
+ </pre>
+
+ Test
+ </div>
+ </div>
+ """
+ )
+ )
+
+ def test_complex_nested_case(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ **test**
+ <div>
+ **test**
+ <img src=""/>
+ <code>Test</code>
+ <span>**test**</span>
+ <p>Test 2</p>
+ </div>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><strong>test</strong></p>
+ <div>
+ **test**
+ <img src=""/>
+ <code>Test</code>
+ <span>**test**</span>
+ <p>Test 2</p>
+ </div>
+ </div>
+ """
+ )
+ )
+
+ def test_complex_nested_case_whitespace(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Text with space\t
+ <div markdown="1">\t
+ \t
+ <div>
+ **test**
+ <img src=""/>
+ <code>Test</code>
+ <span>**test**</span>
+ <div>With whitespace</div>
+ <p>Test 2</p>
+ </div>
+ **test**
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <p>Text with space </p>
+ <div>
+ <div>
+ **test**
+ <img src=""/>
+ <code>Test</code>
+ <span>**test**</span>
+ <div>With whitespace</div>
+ <p>Test 2</p>
+ </div>
+ <p><strong>test</strong></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_intail_md1(self):
+ self.assertMarkdownRenders(
+ '<div markdown="1">*foo*</div><div markdown="1">*bar*</div>',
+ self.dedent(
+ """
+ <div>
+ <p><em>foo</em></p>
+ </div>
+ <div>
+ <p><em>bar</em></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_no_blank_line_before(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ A _Markdown_ paragraph with no blank line after.
+ <div markdown="1">
+ A _Markdown_ paragraph in an HTML block with no blank line before.
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <p>A <em>Markdown</em> paragraph with no blank line after.</p>
+ <div>
+ <p>A <em>Markdown</em> paragraph in an HTML block with no blank line before.</p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_no_line_break(self):
+ # The div here is parsed as a span-level element. Bad input equals bad output!
+ self.assertMarkdownRenders(
+ 'A _Markdown_ paragraph with <div markdown="1">no _line break_.</div>',
+ '<p>A <em>Markdown</em> paragraph with <div markdown="1">no <em>line break</em>.</div></p>'
+ )
+
+ def test_md1_in_tail(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div></div><div markdown="1">
+ A _Markdown_ paragraph in an HTML block in tail of previous element.
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div></div>
+ <div>
+ <p>A <em>Markdown</em> paragraph in an HTML block in tail of previous element.</p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_PI_oneliner(self):
+ self.assertMarkdownRenders(
+ '<div markdown="1"><?php print("foo"); ?></div>',
+ self.dedent(
+ """
+ <div>
+ <?php print("foo"); ?>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_PI_multiline(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ <?php print("foo"); ?>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <?php print("foo"); ?>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_PI_blank_lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+
+ <?php print("foo"); ?>
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <?php print("foo"); ?>
+ </div>
+ """
+ )
+ )
+
+ def test_md_span_paragraph(self):
+ self.assertMarkdownRenders(
+ '<p markdown="span">*foo*</p>',
+ '<p><em>foo</em></p>'
+ )
+
+ def test_md_block_paragraph(self):
+ self.assertMarkdownRenders(
+ '<p markdown="block">*foo*</p>',
+ self.dedent(
+ """
+ <p>
+ <p><em>foo</em></p>
+ </p>
+ """
+ )
+ )
+
+ def test_md_span_div(self):
+ self.assertMarkdownRenders(
+ '<div markdown="span">*foo*</div>',
+ '<div><em>foo</em></div>'
+ )
+
+ def test_md_block_div(self):
+ self.assertMarkdownRenders(
+ '<div markdown="block">*foo*</div>',
+ self.dedent(
+ """
+ <div>
+ <p><em>foo</em></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md_span_nested_in_block(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="block">
+ <div markdown="span">*foo*</div>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <div><em>foo</em></div>
+ </div>
+ """
+ )
+ )
+
+ def test_md_block_nested_in_span(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="span">
+ <div markdown="block">*foo*</div>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <div><em>foo</em></div>
+ </div>
+ """
+ )
+ )
+
+ def test_md_block_after_span_nested_in_block(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="block">
+ <div markdown="span">*foo*</div>
+ <div markdown="block">*bar*</div>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <div><em>foo</em></div>
+ <div>
+ <p><em>bar</em></p>
+ </div>
+ </div>
+ """
+ )
+ )
+
+ def test_nomd_nested_in_md1(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ *foo*
+ <div>
+ *foo*
+ <p>*bar*</p>
+ *baz*
+ </div>
+ *bar*
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><em>foo</em></p>
+ <div>
+ *foo*
+ <p>*bar*</p>
+ *baz*
+ </div>
+ <p><em>bar</em></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_nested_in_nomd(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div>
+ <div markdown="1">*foo*</div>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <div markdown="1">*foo*</div>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_single_quotes(self):
+ self.assertMarkdownRenders(
+ "<p markdown='1'>*foo*</p>",
+ '<p><em>foo</em></p>'
+ )
+
+ def test_md1_no_quotes(self):
+ self.assertMarkdownRenders(
+ '<p markdown=1>*foo*</p>',
+ '<p><em>foo</em></p>'
+ )
+
+ def test_md_no_value(self):
+ self.assertMarkdownRenders(
+ '<p markdown>*foo*</p>',
+ '<p><em>foo</em></p>'
+ )
+
+ def test_md1_preserve_attrs(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1" id="parent">
+
+ <div markdown="1" class="foo">
+ <p markdown="1" class="bar baz">*foo*</p>
+ </div>
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div id="parent">
+ <div class="foo">
+ <p class="bar baz"><em>foo</em></p>
+ </div>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_unclosed_div(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+
+ _foo_
+
+ <div class="unclosed">
+
+ _bar_
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><em>foo</em></p>
+ <div class="unclosed">
+
+ _bar_
+
+ </div>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_orphan_endtag(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+
+ _foo_
+
+ </p>
+
+ _bar_
+
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><em>foo</em></p>
+ </p>
+ <p><em>bar</em></p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_unclosed_p(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <p markdown="1">_foo_
+ <p markdown="1">_bar_
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>foo</em>
+ </p>
+ <p><em>bar</em>
+
+ </p>
+ """
+ )
+ )
+
+ def test_md1_nested_unclosed_p(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ <p markdown="1">_foo_
+ <p markdown="1">_bar_
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p><em>foo</em>
+ </p>
+ <p><em>bar</em>
+ </p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_nested_comment(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ A *Markdown* paragraph.
+ <!-- foobar -->
+ A *Markdown* paragraph.
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <p>A <em>Markdown</em> paragraph.</p>
+ <!-- foobar -->
+ <p>A <em>Markdown</em> paragraph.</p>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_nested_link_ref(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ [link]: http://example.com
+ <div markdown="1">
+ [link][link]
+ </div>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <div>
+ <p><a href="http://example.com">link</a></p>
+ </div>
+ </div>
+ """
+ )
+ )
+
+ def test_md1_hr_only_start(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ *emphasis1*
+ <hr markdown="1">
+ *emphasis2*
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>emphasis1</em></p>
+ <hr>
+ <p><em>emphasis2</em></p>
+ """
+ )
+ )
+
+ def test_md1_hr_self_close(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ *emphasis1*
+ <hr markdown="1" />
+ *emphasis2*
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>emphasis1</em></p>
+ <hr>
+ <p><em>emphasis2</em></p>
+ """
+ )
+ )
+
+ def test_md1_hr_start_and_end(self):
+ # Browsers ignore ending hr tags, so we don't try to do anything to handle them special.
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ *emphasis1*
+ <hr markdown="1"></hr>
+ *emphasis2*
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>emphasis1</em></p>
+ <hr>
+ <p></hr>
+ <em>emphasis2</em></p>
+ """
+ )
+ )
+
+ def test_md1_hr_only_end(self):
+ # Browsers ignore ending hr tags, so we don't try to do anything to handle them special.
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ *emphasis1*
+ </hr>
+ *emphasis2*
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>emphasis1</em>
+ </hr>
+ <em>emphasis2</em></p>
+ """
+ )
+ )
+
+ def test_md1_hr_with_content(self):
+ # Browsers ignore ending hr tags, so we don't try to do anything to handle them special.
+ # Content is not allowed and will be treated as normal content between two hr tags
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ *emphasis1*
+ <hr markdown="1">
+ **content**
+ </hr>
+ *emphasis2*
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>emphasis1</em></p>
+ <hr>
+ <p><strong>content</strong>
+ </hr>
+ <em>emphasis2</em></p>
+ """
+ )
+ )
+
+ def test_no_md1_hr_with_content(self):
+ # Browsers ignore ending hr tags, so we don't try to do anything to handle them special.
+ # Content is not allowed and will be treated as normal content between two hr tags
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ *emphasis1*
+ <hr>
+ **content**
+ </hr>
+ *emphasis2*
+ """
+ ),
+ self.dedent(
+ """
+ <p><em>emphasis1</em></p>
+ <hr>
+ <p><strong>content</strong>
+ </hr>
+ <em>emphasis2</em></p>
+ """
+ )
+ )
+
+ def test_md1_nested_abbr_ref(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ *[abbr]: Abbreviation
+ <div markdown="1">
+ abbr
+ </div>
+ </div>
+ """
+ ),
+ self.dedent(
+ """
+ <div>
+ <div>
+ <p><abbr title="Abbreviation">abbr</abbr></p>
+ </div>
+ </div>
+ """
+ ),
+ extensions=['md_in_html', 'abbr']
+ )
+
+ def test_md1_nested_footnote_ref(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ <div markdown="1">
+ [^1]: The footnote.
+ <div markdown="1">
+ Paragraph with a footnote.[^1]
+ </div>
+ </div>
+ """
+ ),
+ '<div>\n'
+ '<div>\n'
+ '<p>Paragraph with a footnote.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>\n'
+ '</div>\n'
+ '</div>\n'
+ '<div class="footnote">\n'
+ '<hr />\n'
+ '<ol>\n'
+ '<li id="fn:1">\n'
+ '<p>The footnote.&#160;'
+ '<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a>'
+ '</p>\n'
+ '</li>\n'
+ '</ol>\n'
+ '</div>',
+ extensions=['md_in_html', 'footnotes']
+ )
+
+
+def load_tests(loader, tests, pattern):
+ ''' Ensure TestHTMLBlocks doesn't get run twice by excluding it here. '''
+ suite = TestSuite()
+ for test_class in [TestDefaultwMdInHTML, TestMdInHTML, TestMarkdownInHTMLPostProcessor]:
+ tests = loader.loadTestsFromTestCase(test_class)
+ suite.addTests(tests)
+ return suite
diff --git a/tests/test_syntax/extensions/test_smarty.py b/tests/test_syntax/extensions/test_smarty.py
new file mode 100644
index 0000000..fc635ad
--- /dev/null
+++ b/tests/test_syntax/extensions/test_smarty.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2022 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestSmarty(TestCase):
+
+ default_kwargs = {'extensions': ['smarty']}
+
+ def test_escaped_attr(self):
+ self.assertMarkdownRenders(
+ '![x\"x](x)',
+ '<p><img alt="x&quot;x" src="x" /></p>'
+ )
+
+ # TODO: Move rest of smarty tests here.
diff --git a/tests/test_syntax/extensions/test_tables.py b/tests/test_syntax/extensions/test_tables.py
new file mode 100644
index 0000000..cd3fbe4
--- /dev/null
+++ b/tests/test_syntax/extensions/test_tables.py
@@ -0,0 +1,922 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+from markdown.extensions.tables import TableExtension
+
+
+class TestTableBlocks(TestCase):
+
+ def test_empty_cells(self):
+ """Empty cells (nbsp)."""
+
+ text = """
+  | Second Header
+------------- | -------------
+  | Content Cell
+Content Cell |  
+"""
+
+ self.assertMarkdownRenders(
+ text,
+ self.dedent(
+ """
+ <table>
+ <thead>
+ <tr>
+ <th> </th>
+ <th>Second Header</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td> </td>
+ <td>Content Cell</td>
+ </tr>
+ <tr>
+ <td>Content Cell</td>
+ <td> </td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_no_sides(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ First Header | Second Header
+ ------------- | -------------
+ Content Cell | Content Cell
+ Content Cell | Content Cell
+ """
+ ),
+ self.dedent(
+ """
+ <table>
+ <thead>
+ <tr>
+ <th>First Header</th>
+ <th>Second Header</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Content Cell</td>
+ <td>Content Cell</td>
+ </tr>
+ <tr>
+ <td>Content Cell</td>
+ <td>Content Cell</td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_both_sides(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ | First Header | Second Header |
+ | ------------- | ------------- |
+ | Content Cell | Content Cell |
+ | Content Cell | Content Cell |
+ """
+ ),
+ self.dedent(
+ """
+ <table>
+ <thead>
+ <tr>
+ <th>First Header</th>
+ <th>Second Header</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Content Cell</td>
+ <td>Content Cell</td>
+ </tr>
+ <tr>
+ <td>Content Cell</td>
+ <td>Content Cell</td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_align_columns(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ | Item | Value |
+ | :-------- | -----:|
+ | Computer | $1600 |
+ | Phone | $12 |
+ | Pipe | $1 |
+ """
+ ),
+ self.dedent(
+ """
+ <table>
+ <thead>
+ <tr>
+ <th style="text-align: left;">Item</th>
+ <th style="text-align: right;">Value</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left;">Computer</td>
+ <td style="text-align: right;">$1600</td>
+ </tr>
+ <tr>
+ <td style="text-align: left;">Phone</td>
+ <td style="text-align: right;">$12</td>
+ </tr>
+ <tr>
+ <td style="text-align: left;">Pipe</td>
+ <td style="text-align: right;">$1</td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_styles_in_tables(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ | Function name | Description |
+ | ------------- | ------------------------------ |
+ | `help()` | Display the help window. |
+ | `destroy()` | **Destroy your computer!** |
+ """
+ ),
+ self.dedent(
+ """
+ <table>
+ <thead>
+ <tr>
+ <th>Function name</th>
+ <th>Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>help()</code></td>
+ <td>Display the help window.</td>
+ </tr>
+ <tr>
+ <td><code>destroy()</code></td>
+ <td><strong>Destroy your computer!</strong></td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_align_three(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ |foo|bar|baz|
+ |:--|:-:|--:|
+ | | Q | |
+ |W | | W|
+ """
+ ),
+ self.dedent(
+ """
+ <table>
+ <thead>
+ <tr>
+ <th style="text-align: left;">foo</th>
+ <th style="text-align: center;">bar</th>
+ <th style="text-align: right;">baz</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left;"></td>
+ <td style="text-align: center;">Q</td>
+ <td style="text-align: right;"></td>
+ </tr>
+ <tr>
+ <td style="text-align: left;">W</td>
+ <td style="text-align: center;"></td>
+ <td style="text-align: right;">W</td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_three_columns(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ foo|bar|baz
+ ---|---|---
+ | Q |
+ W | | W
+ """
+ ),
+ self.dedent(
+ """
+ <table>
+ <thead>
+ <tr>
+ <th>foo</th>
+ <th>bar</th>
+ <th>baz</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td></td>
+ <td>Q</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>W</td>
+ <td></td>
+ <td>W</td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_three_spaces_prefix(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Three spaces in front of a table:
+
+ First Header | Second Header
+ ------------ | -------------
+ Content Cell | Content Cell
+ Content Cell | Content Cell
+
+ | First Header | Second Header |
+ | ------------ | ------------- |
+ | Content Cell | Content Cell |
+ | Content Cell | Content Cell |
+ """),
+ self.dedent(
+ """
+ <p>Three spaces in front of a table:</p>
+ <table>
+ <thead>
+ <tr>
+ <th>First Header</th>
+ <th>Second Header</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Content Cell</td>
+ <td>Content Cell</td>
+ </tr>
+ <tr>
+ <td>Content Cell</td>
+ <td>Content Cell</td>
+ </tr>
+ </tbody>
+ </table>
+ <table>
+ <thead>
+ <tr>
+ <th>First Header</th>
+ <th>Second Header</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Content Cell</td>
+ <td>Content Cell</td>
+ </tr>
+ <tr>
+ <td>Content Cell</td>
+ <td>Content Cell</td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_code_block_table(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Four spaces is a code block:
+
+ First Header | Second Header
+ ------------ | -------------
+ Content Cell | Content Cell
+ Content Cell | Content Cell
+
+ | First Header | Second Header |
+ | ------------ | ------------- |
+ """),
+ self.dedent(
+ """
+ <p>Four spaces is a code block:</p>
+ <pre><code>First Header | Second Header
+ ------------ | -------------
+ Content Cell | Content Cell
+ Content Cell | Content Cell
+ </code></pre>
+ <table>
+ <thead>
+ <tr>
+ <th>First Header</th>
+ <th>Second Header</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td></td>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_inline_code_blocks(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ More inline code block tests
+
+ Column 1 | Column 2 | Column 3
+ ---------|----------|---------
+ word 1 | word 2 | word 3
+ word 1 | `word 2` | word 3
+ word 1 | \\`word 2 | word 3
+ word 1 | `word 2 | word 3
+ word 1 | `word |2` | word 3
+ words |`` some | code `` | more words
+ words |``` some | code ``` | more words
+ words |```` some | code ```` | more words
+ words |`` some ` | ` code `` | more words
+ words |``` some ` | ` code ``` | more words
+ words |```` some ` | ` code ```` | more words
+ """),
+ self.dedent(
+ """
+ <p>More inline code block tests</p>
+ <table>
+ <thead>
+ <tr>
+ <th>Column 1</th>
+ <th>Column 2</th>
+ <th>Column 3</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>word 1</td>
+ <td>word 2</td>
+ <td>word 3</td>
+ </tr>
+ <tr>
+ <td>word 1</td>
+ <td><code>word 2</code></td>
+ <td>word 3</td>
+ </tr>
+ <tr>
+ <td>word 1</td>
+ <td>`word 2</td>
+ <td>word 3</td>
+ </tr>
+ <tr>
+ <td>word 1</td>
+ <td>`word 2</td>
+ <td>word 3</td>
+ </tr>
+ <tr>
+ <td>word 1</td>
+ <td><code>word |2</code></td>
+ <td>word 3</td>
+ </tr>
+ <tr>
+ <td>words</td>
+ <td><code>some | code</code></td>
+ <td>more words</td>
+ </tr>
+ <tr>
+ <td>words</td>
+ <td><code>some | code</code></td>
+ <td>more words</td>
+ </tr>
+ <tr>
+ <td>words</td>
+ <td><code>some | code</code></td>
+ <td>more words</td>
+ </tr>
+ <tr>
+ <td>words</td>
+ <td><code>some ` | ` code</code></td>
+ <td>more words</td>
+ </tr>
+ <tr>
+ <td>words</td>
+ <td><code>some ` | ` code</code></td>
+ <td>more words</td>
+ </tr>
+ <tr>
+ <td>words</td>
+ <td><code>some ` | ` code</code></td>
+ <td>more words</td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_issue_440(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ A test for issue #440:
+
+ foo | bar
+ --- | ---
+ foo | (`bar`) and `baz`.
+ """),
+ self.dedent(
+ """
+ <p>A test for issue #440:</p>
+ <table>
+ <thead>
+ <tr>
+ <th>foo</th>
+ <th>bar</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>foo</td>
+ <td>(<code>bar</code>) and <code>baz</code>.</td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_lists_not_tables(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Lists are not tables
+
+ - this | should | not
+ - be | a | table
+ """),
+ self.dedent(
+ """
+ <p>Lists are not tables</p>
+ <ul>
+ <li>this | should | not</li>
+ <li>be | a | table</li>
+ </ul>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_issue_449(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ r"""
+ Add tests for issue #449
+
+ Odd backticks | Even backticks
+ ------------ | -------------
+ ``[!\"\#$%&'()*+,\-./:;<=>?@\[\\\]^_`{|}~]`` | ``[!\"\#$%&'()*+,\-./:;<=>?@\[\\\]^`_`{|}~]``
+
+ Escapes | More Escapes
+ ------- | ------
+ `` `\`` | `\`
+
+ Only the first backtick can be escaped
+
+ Escaped | Bacticks
+ ------- | ------
+ \`` \` | \`\`
+
+ Test escaped pipes
+
+ Column 1 | Column 2
+ -------- | --------
+ `|` \| | Pipes are okay in code and escaped. \|
+
+ | Column 1 | Column 2 |
+ | -------- | -------- |
+ | row1 | row1 \|
+ | row2 | row2 |
+
+ Test header escapes
+
+ | `` `\`` \| | `\` \|
+ | ---------- | ---- |
+ | row1 | row1 |
+ | row2 | row2 |
+
+ Escaped pipes in format row should not be a table
+
+ | Column1 | Column2 |
+ | ------- \|| ------- |
+ | row1 | row1 |
+ | row2 | row2 |
+
+ Test escaped code in Table
+
+ Should not be code | Should be code
+ ------------------ | --------------
+ \`Not code\` | \\`code`
+ \\\`Not code\\\` | \\\\`code`
+ """),
+ self.dedent(
+ """
+ <p>Add tests for issue #449</p>
+ <table>
+ <thead>
+ <tr>
+ <th>Odd backticks</th>
+ <th>Even backticks</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>[!\\"\\#$%&amp;'()*+,\\-./:;&lt;=&gt;?@\\[\\\\\\]^_`{|}~]</code></td>
+ <td><code>[!\\"\\#$%&amp;'()*+,\\-./:;&lt;=&gt;?@\\[\\\\\\]^`_`{|}~]</code></td>
+ </tr>
+ </tbody>
+ </table>
+ <table>
+ <thead>
+ <tr>
+ <th>Escapes</th>
+ <th>More Escapes</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>`\\</code></td>
+ <td><code>\\</code></td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Only the first backtick can be escaped</p>
+ <table>
+ <thead>
+ <tr>
+ <th>Escaped</th>
+ <th>Bacticks</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>`<code>\\</code></td>
+ <td>``</td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Test escaped pipes</p>
+ <table>
+ <thead>
+ <tr>
+ <th>Column 1</th>
+ <th>Column 2</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>|</code> |</td>
+ <td>Pipes are okay in code and escaped. |</td>
+ </tr>
+ </tbody>
+ </table>
+ <table>
+ <thead>
+ <tr>
+ <th>Column 1</th>
+ <th>Column 2</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>row1</td>
+ <td>row1 |</td>
+ </tr>
+ <tr>
+ <td>row2</td>
+ <td>row2</td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Test header escapes</p>
+ <table>
+ <thead>
+ <tr>
+ <th><code>`\\</code> |</th>
+ <th><code>\\</code> |</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>row1</td>
+ <td>row1</td>
+ </tr>
+ <tr>
+ <td>row2</td>
+ <td>row2</td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Escaped pipes in format row should not be a table</p>
+ <p>| Column1 | Column2 |
+ | ------- || ------- |
+ | row1 | row1 |
+ | row2 | row2 |</p>
+ <p>Test escaped code in Table</p>
+ <table>
+ <thead>
+ <tr>
+ <th>Should not be code</th>
+ <th>Should be code</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>`Not code`</td>
+ <td>\\<code>code</code></td>
+ </tr>
+ <tr>
+ <td>\\`Not code\\`</td>
+ <td>\\\\<code>code</code></td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_single_column_tables(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Single column tables
+
+ | Is a Table |
+ | ---------- |
+
+ | Is a Table
+ | ----------
+
+ Is a Table |
+ ---------- |
+
+ | Is a Table |
+ | ---------- |
+ | row |
+
+ | Is a Table
+ | ----------
+ | row
+
+ Is a Table |
+ ---------- |
+ row |
+
+ | Is not a Table
+ --------------
+ | row
+
+ Is not a Table |
+ --------------
+ row |
+
+ | Is not a Table
+ | --------------
+ row
+
+ Is not a Table |
+ -------------- |
+ row
+ """),
+ self.dedent(
+ """
+ <p>Single column tables</p>
+ <table>
+ <thead>
+ <tr>
+ <th>Is a Table</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ <table>
+ <thead>
+ <tr>
+ <th>Is a Table</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ <table>
+ <thead>
+ <tr>
+ <th>Is a Table</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ <table>
+ <thead>
+ <tr>
+ <th>Is a Table</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>row</td>
+ </tr>
+ </tbody>
+ </table>
+ <table>
+ <thead>
+ <tr>
+ <th>Is a Table</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>row</td>
+ </tr>
+ </tbody>
+ </table>
+ <table>
+ <thead>
+ <tr>
+ <th>Is a Table</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>row</td>
+ </tr>
+ </tbody>
+ </table>
+ <h2>| Is not a Table</h2>
+ <p>| row</p>
+ <h2>Is not a Table |</h2>
+ <p>row |</p>
+ <p>| Is not a Table
+ | --------------
+ row</p>
+ <p>Is not a Table |
+ -------------- |
+ row</p>
+ """
+ ),
+ extensions=['tables']
+ )
+
+ def test_align_columns_legacy(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ | Item | Value |
+ | :-------- | -----:|
+ | Computer | $1600 |
+ | Phone | $12 |
+ | Pipe | $1 |
+ """
+ ),
+ self.dedent(
+ """
+ <table>
+ <thead>
+ <tr>
+ <th align="left">Item</th>
+ <th align="right">Value</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td align="left">Computer</td>
+ <td align="right">$1600</td>
+ </tr>
+ <tr>
+ <td align="left">Phone</td>
+ <td align="right">$12</td>
+ </tr>
+ <tr>
+ <td align="left">Pipe</td>
+ <td align="right">$1</td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=[TableExtension(use_align_attribute=True)]
+ )
+
+ def test_align_three_legacy(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ |foo|bar|baz|
+ |:--|:-:|--:|
+ | | Q | |
+ |W | | W|
+ """
+ ),
+ self.dedent(
+ """
+ <table>
+ <thead>
+ <tr>
+ <th align="left">foo</th>
+ <th align="center">bar</th>
+ <th align="right">baz</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td align="left"></td>
+ <td align="center">Q</td>
+ <td align="right"></td>
+ </tr>
+ <tr>
+ <td align="left">W</td>
+ <td align="center"></td>
+ <td align="right">W</td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=[TableExtension(use_align_attribute=True)]
+ )
diff --git a/tests/test_syntax/extensions/test_toc.py b/tests/test_syntax/extensions/test_toc.py
new file mode 100644
index 0000000..d879f6e
--- /dev/null
+++ b/tests/test_syntax/extensions/test_toc.py
@@ -0,0 +1,614 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2019 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+from markdown.extensions.toc import TocExtension
+from markdown.extensions.nl2br import Nl2BrExtension
+
+
+class TestTOC(TestCase):
+ maxDiff = None
+
+ # TODO: Move the rest of the TOC tests here.
+
+ def testAnchorLink(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ # Header 1
+
+ ## Header *2*
+ '''
+ ),
+ self.dedent(
+ '''
+ <h1 id="header-1"><a class="toclink" href="#header-1">Header 1</a></h1>
+ <h2 id="header-2"><a class="toclink" href="#header-2">Header <em>2</em></a></h2>
+ '''
+ ),
+ extensions=[TocExtension(anchorlink=True)]
+ )
+
+ def testAnchorLinkWithSingleInlineCode(self):
+ self.assertMarkdownRenders(
+ '# This is `code`.',
+ '<h1 id="this-is-code">' # noqa
+ '<a class="toclink" href="#this-is-code">' # noqa
+ 'This is <code>code</code>.' # noqa
+ '</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(anchorlink=True)]
+ )
+
+ def testAnchorLinkWithDoubleInlineCode(self):
+ self.assertMarkdownRenders(
+ '# This is `code` and `this` too.',
+ '<h1 id="this-is-code-and-this-too">' # noqa
+ '<a class="toclink" href="#this-is-code-and-this-too">' # noqa
+ 'This is <code>code</code> and <code>this</code> too.' # noqa
+ '</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(anchorlink=True)]
+ )
+
+ def testPermalink(self):
+ self.assertMarkdownRenders(
+ '# Header',
+ '<h1 id="header">' # noqa
+ 'Header' # noqa
+ '<a class="headerlink" href="#header" title="Permanent link">&para;</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(permalink=True)]
+ )
+
+ def testPermalinkWithSingleInlineCode(self):
+ self.assertMarkdownRenders(
+ '# This is `code`.',
+ '<h1 id="this-is-code">' # noqa
+ 'This is <code>code</code>.' # noqa
+ '<a class="headerlink" href="#this-is-code" title="Permanent link">&para;</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(permalink=True)]
+ )
+
+ def testPermalinkWithDoubleInlineCode(self):
+ self.assertMarkdownRenders(
+ '# This is `code` and `this` too.',
+ '<h1 id="this-is-code-and-this-too">' # noqa
+ 'This is <code>code</code> and <code>this</code> too.' # noqa
+ '<a class="headerlink" href="#this-is-code-and-this-too" title="Permanent link">&para;</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(permalink=True)]
+ )
+
+ def testMinMaxLevel(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ # Header 1 not in TOC
+
+ ## Header 2 not in TOC
+
+ ### Header 3
+
+ #### Header 4
+
+ ##### Header 5 not in TOC
+ '''
+ ),
+ self.dedent(
+ '''
+ <h1 id="header-1-not-in-toc">Header 1 not in TOC</h1>
+ <h2 id="header-2-not-in-toc">Header 2 not in TOC</h2>
+ <h3 id="header-3">Header 3</h3>
+ <h4 id="header-4">Header 4</h4>
+ <h5 id="header-5-not-in-toc">Header 5 not in TOC</h5>
+ '''
+ ),
+ expected_attrs={
+ 'toc': (
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#header-3">Header 3</a>' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#header-4">Header 4</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n' # noqa
+ ),
+ 'toc_tokens': [
+ {
+ 'level': 3,
+ 'id': 'header-3',
+ 'name': 'Header 3',
+ 'children': [
+ {
+ 'level': 4,
+ 'id': 'header-4',
+ 'name': 'Header 4',
+ 'children': []
+ }
+ ]
+ }
+ ]
+ },
+ extensions=[TocExtension(toc_depth='3-4')]
+ )
+
+ def testMaxLevel(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ # Header 1
+
+ ## Header 2
+
+ ### Header 3 not in TOC
+ '''
+ ),
+ self.dedent(
+ '''
+ <h1 id="header-1">Header 1</h1>
+ <h2 id="header-2">Header 2</h2>
+ <h3 id="header-3-not-in-toc">Header 3 not in TOC</h3>
+ '''
+ ),
+ expected_attrs={
+ 'toc': (
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#header-1">Header 1</a>' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#header-2">Header 2</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n' # noqa
+ ),
+ 'toc_tokens': [
+ {
+ 'level': 1,
+ 'id': 'header-1',
+ 'name': 'Header 1',
+ 'children': [
+ {
+ 'level': 2,
+ 'id': 'header-2',
+ 'name': 'Header 2',
+ 'children': []
+ }
+ ]
+ }
+ ]
+ },
+ extensions=[TocExtension(toc_depth=2)]
+ )
+
+ def testMinMaxLevelwithAnchorLink(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ # Header 1 not in TOC
+
+ ## Header 2 not in TOC
+
+ ### Header 3
+
+ #### Header 4
+
+ ##### Header 5 not in TOC
+ '''
+ ),
+ '<h1 id="header-1-not-in-toc">' # noqa
+ '<a class="toclink" href="#header-1-not-in-toc">Header 1 not in TOC</a></h1>\n' # noqa
+ '<h2 id="header-2-not-in-toc">' # noqa
+ '<a class="toclink" href="#header-2-not-in-toc">Header 2 not in TOC</a></h2>\n' # noqa
+ '<h3 id="header-3">' # noqa
+ '<a class="toclink" href="#header-3">Header 3</a></h3>\n' # noqa
+ '<h4 id="header-4">' # noqa
+ '<a class="toclink" href="#header-4">Header 4</a></h4>\n' # noqa
+ '<h5 id="header-5-not-in-toc">' # noqa
+ '<a class="toclink" href="#header-5-not-in-toc">Header 5 not in TOC</a></h5>', # noqa
+ expected_attrs={
+ 'toc': (
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#header-3">Header 3</a>' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#header-4">Header 4</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n' # noqa
+ ),
+ 'toc_tokens': [
+ {
+ 'level': 3,
+ 'id': 'header-3',
+ 'name': 'Header 3',
+ 'children': [
+ {
+ 'level': 4,
+ 'id': 'header-4',
+ 'name': 'Header 4',
+ 'children': []
+ }
+ ]
+ }
+ ]
+ },
+ extensions=[TocExtension(toc_depth='3-4', anchorlink=True)]
+ )
+
+ def testMinMaxLevelwithPermalink(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ # Header 1 not in TOC
+
+ ## Header 2 not in TOC
+
+ ### Header 3
+
+ #### Header 4
+
+ ##### Header 5 not in TOC
+ '''
+ ),
+ '<h1 id="header-1-not-in-toc">Header 1 not in TOC' # noqa
+ '<a class="headerlink" href="#header-1-not-in-toc" title="Permanent link">&para;</a></h1>\n' # noqa
+ '<h2 id="header-2-not-in-toc">Header 2 not in TOC' # noqa
+ '<a class="headerlink" href="#header-2-not-in-toc" title="Permanent link">&para;</a></h2>\n' # noqa
+ '<h3 id="header-3">Header 3' # noqa
+ '<a class="headerlink" href="#header-3" title="Permanent link">&para;</a></h3>\n' # noqa
+ '<h4 id="header-4">Header 4' # noqa
+ '<a class="headerlink" href="#header-4" title="Permanent link">&para;</a></h4>\n' # noqa
+ '<h5 id="header-5-not-in-toc">Header 5 not in TOC' # noqa
+ '<a class="headerlink" href="#header-5-not-in-toc" title="Permanent link">&para;</a></h5>', # noqa
+ expected_attrs={
+ 'toc': (
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#header-3">Header 3</a>' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#header-4">Header 4</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n' # noqa
+ ),
+ 'toc_tokens': [
+ {
+ 'level': 3,
+ 'id': 'header-3',
+ 'name': 'Header 3',
+ 'children': [
+ {
+ 'level': 4,
+ 'id': 'header-4',
+ 'name': 'Header 4',
+ 'children': []
+ }
+ ]
+ }
+ ]
+ },
+ extensions=[TocExtension(toc_depth='3-4', permalink=True)]
+ )
+
+ def testMinMaxLevelwithBaseLevel(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ # First Header
+
+ ## Second Level
+
+ ### Third Level
+
+ #### Forth Level
+ '''
+ ),
+ self.dedent(
+ '''
+ <h3 id="first-header">First Header</h3>
+ <h4 id="second-level">Second Level</h4>
+ <h5 id="third-level">Third Level</h5>
+ <h6 id="forth-level">Forth Level</h6>
+ '''
+ ),
+ expected_attrs={
+ 'toc': (
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#second-level">Second Level</a>' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#third-level">Third Level</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n' # noqa
+ ),
+ 'toc_tokens': [
+ {
+ 'level': 4,
+ 'id': 'second-level',
+ 'name': 'Second Level',
+ 'children': [
+ {
+ 'level': 5,
+ 'id': 'third-level',
+ 'name': 'Third Level',
+ 'children': []
+ }
+ ]
+ }
+ ]
+ },
+ extensions=[TocExtension(toc_depth='4-5', baselevel=3)]
+ )
+
+ def testMaxLevelwithBaseLevel(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ # Some Header
+
+ ## Next Level
+
+ ### Too High
+ '''
+ ),
+ self.dedent(
+ '''
+ <h2 id="some-header">Some Header</h2>
+ <h3 id="next-level">Next Level</h3>
+ <h4 id="too-high">Too High</h4>
+ '''
+ ),
+ expected_attrs={
+ 'toc': (
+ '<div class="toc">\n'
+ '<ul>\n' # noqa
+ '<li><a href="#some-header">Some Header</a>' # noqa
+ '<ul>\n' # noqa
+ '<li><a href="#next-level">Next Level</a></li>\n' # noqa
+ '</ul>\n' # noqa
+ '</li>\n' # noqa
+ '</ul>\n' # noqa
+ '</div>\n' # noqa
+ ),
+ 'toc_tokens': [
+ {
+ 'level': 2,
+ 'id': 'some-header',
+ 'name': 'Some Header',
+ 'children': [
+ {
+ 'level': 3,
+ 'id': 'next-level',
+ 'name': 'Next Level',
+ 'children': []
+ }
+ ]
+ }
+ ]
+ },
+ extensions=[TocExtension(toc_depth=3, baselevel=2)]
+ )
+
+ def test_escaped_code(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ [TOC]
+
+ # `<test>`
+ '''
+ ),
+ self.dedent(
+ '''
+ <div class="toc">
+ <ul>
+ <li><a href="#test">&lt;test&gt;</a></li>
+ </ul>
+ </div>
+ <h1 id="test"><code>&lt;test&gt;</code></h1>
+ '''
+ ),
+ extensions=['toc']
+ )
+
+ def test_escaped_char_in_id(self):
+ self.assertMarkdownRenders(
+ r'# escaped\_character',
+ '<h1 id="escaped_character">escaped_character</h1>',
+ extensions=['toc']
+ )
+
+ def testAnchorLinkWithCustomClass(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ # Header 1
+
+ ## Header *2*
+ '''
+ ),
+ self.dedent(
+ '''
+ <h1 id="header-1"><a class="custom" href="#header-1">Header 1</a></h1>
+ <h2 id="header-2"><a class="custom" href="#header-2">Header <em>2</em></a></h2>
+ '''
+ ),
+ extensions=[TocExtension(anchorlink=True, anchorlink_class="custom")]
+ )
+
+ def testAnchorLinkWithCustomClasses(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ # Header 1
+
+ ## Header *2*
+ '''
+ ),
+ self.dedent(
+ '''
+ <h1 id="header-1"><a class="custom1 custom2" href="#header-1">Header 1</a></h1>
+ <h2 id="header-2"><a class="custom1 custom2" href="#header-2">Header <em>2</em></a></h2>
+ '''
+ ),
+ extensions=[TocExtension(anchorlink=True, anchorlink_class="custom1 custom2")]
+ )
+
+ def testPermalinkWithEmptyText(self):
+ self.assertMarkdownRenders(
+ '# Header',
+ '<h1 id="header">' # noqa
+ 'Header' # noqa
+ '<a class="headerlink" href="#header" title="Permanent link"></a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(permalink="")]
+ )
+
+ def testPermalinkWithCustomClass(self):
+ self.assertMarkdownRenders(
+ '# Header',
+ '<h1 id="header">' # noqa
+ 'Header' # noqa
+ '<a class="custom" href="#header" title="Permanent link">&para;</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(permalink=True, permalink_class="custom")]
+ )
+
+ def testPermalinkWithCustomClasses(self):
+ self.assertMarkdownRenders(
+ '# Header',
+ '<h1 id="header">' # noqa
+ 'Header' # noqa
+ '<a class="custom1 custom2" href="#header" title="Permanent link">&para;</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(permalink=True, permalink_class="custom1 custom2")]
+ )
+
+ def testPermalinkWithCustomTitle(self):
+ self.assertMarkdownRenders(
+ '# Header',
+ '<h1 id="header">' # noqa
+ 'Header' # noqa
+ '<a class="headerlink" href="#header" title="custom">&para;</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(permalink=True, permalink_title="custom")]
+ )
+
+ def testPermalinkWithEmptyTitle(self):
+ self.assertMarkdownRenders(
+ '# Header',
+ '<h1 id="header">' # noqa
+ 'Header' # noqa
+ '<a class="headerlink" href="#header">&para;</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(permalink=True, permalink_title="")]
+ )
+
+ def testPermalinkWithUnicodeInID(self):
+ from markdown.extensions.toc import slugify_unicode
+ self.assertMarkdownRenders(
+ '# Unicode ヘッダー',
+ '<h1 id="unicode-ヘッダー">' # noqa
+ 'Unicode ヘッダー' # noqa
+ '<a class="headerlink" href="#unicode-ヘッダー" title="Permanent link">&para;</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(permalink=True, slugify=slugify_unicode)]
+ )
+
+ def testPermalinkWithUnicodeTitle(self):
+ from markdown.extensions.toc import slugify_unicode
+ self.assertMarkdownRenders(
+ '# Unicode ヘッダー',
+ '<h1 id="unicode-ヘッダー">' # noqa
+ 'Unicode ヘッダー' # noqa
+ '<a class="headerlink" href="#unicode-ヘッダー" title="パーマリンク">&para;</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(permalink=True, permalink_title="パーマリンク", slugify=slugify_unicode)]
+ )
+
+ def testPermalinkWithExtendedLatinInID(self):
+ self.assertMarkdownRenders(
+ '# Théâtre',
+ '<h1 id="theatre">' # noqa
+ 'Théâtre' # noqa
+ '<a class="headerlink" href="#theatre" title="Permanent link">&para;</a>' # noqa
+ '</h1>', # noqa
+ extensions=[TocExtension(permalink=True)]
+ )
+
+ def testNl2brCompatibility(self):
+ self.assertMarkdownRenders(
+ '[TOC]\ntext',
+ '<p>[TOC]<br />\ntext</p>',
+ extensions=[TocExtension(), Nl2BrExtension()]
+ )
+
+ def testTOCWithCustomClass(self):
+
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ [TOC]
+ # Header
+ '''
+ ),
+ self.dedent(
+ '''
+ <div class="custom">
+ <ul>
+ <li><a href="#header">Header</a></li>
+ </ul>
+ </div>
+ <h1 id="header">Header</h1>
+ '''
+ ),
+ extensions=[TocExtension(toc_class="custom")]
+ )
+
+ def testTOCWithCustomClasses(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ '''
+ [TOC]
+ # Header
+ '''
+ ),
+ self.dedent(
+ '''
+ <div class="custom1 custom2">
+ <ul>
+ <li><a href="#header">Header</a></li>
+ </ul>
+ </div>
+ <h1 id="header">Header</h1>
+ '''
+ ),
+ extensions=[TocExtension(toc_class="custom1 custom2")]
+ )
diff --git a/tests/test_syntax/inline/__init__.py b/tests/test_syntax/inline/__init__.py
new file mode 100644
index 0000000..564ba3b
--- /dev/null
+++ b/tests/test_syntax/inline/__init__.py
@@ -0,0 +1,20 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
diff --git a/tests/test_syntax/inline/test_autolinks.py b/tests/test_syntax/inline/test_autolinks.py
new file mode 100644
index 0000000..b6bd1cf
--- /dev/null
+++ b/tests/test_syntax/inline/test_autolinks.py
@@ -0,0 +1,63 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2021 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestAutomaticLinks(TestCase):
+
+ def test_email_address(self):
+ self.assertMarkdownRenders(
+ 'asdfasdfadsfasd <yuri@freewisdom.org> or you can say ',
+ '<p>asdfasdfadsfasd <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#121;&#117;&#114;'
+ '&#105;&#64;&#102;&#114;&#101;&#101;&#119;&#105;&#115;&#100;&#111;&#109;&#46;&#111;&#114;'
+ '&#103;">&#121;&#117;&#114;&#105;&#64;&#102;&#114;&#101;&#101;&#119;&#105;&#115;&#100;'
+ '&#111;&#109;&#46;&#111;&#114;&#103;</a> or you can say </p>'
+ )
+
+ def test_mailto_email_address(self):
+ self.assertMarkdownRenders(
+ 'instead <mailto:yuri@freewisdom.org>',
+ '<p>instead <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#121;&#117;&#114;&#105;&#64;'
+ '&#102;&#114;&#101;&#101;&#119;&#105;&#115;&#100;&#111;&#109;&#46;&#111;&#114;&#103;">'
+ '&#121;&#117;&#114;&#105;&#64;&#102;&#114;&#101;&#101;&#119;&#105;&#115;&#100;&#111;&#109;'
+ '&#46;&#111;&#114;&#103;</a></p>'
+ )
+
+ def test_email_address_with_ampersand(self):
+ self.assertMarkdownRenders(
+ '<bob&sue@example.com>',
+ '<p><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#98;&#111;&#98;&#38;&#115;&#117;&#101;'
+ '&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;">&#98;&#111;&#98;&amp;'
+ '&#115;&#117;&#101;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;</a></p>'
+ )
+
+ def test_invalid_email_address_local_part(self):
+ self.assertMarkdownRenders(
+ 'Missing local-part <@domain>',
+ '<p>Missing local-part &lt;@domain&gt;</p>'
+ )
+
+ def test_invalid_email_address_domain(self):
+ self.assertMarkdownRenders(
+ 'Missing domain <local-part@>',
+ '<p>Missing domain &lt;local-part@&gt;</p>'
+ )
diff --git a/tests/test_syntax/inline/test_emphasis.py b/tests/test_syntax/inline/test_emphasis.py
new file mode 100644
index 0000000..1e7fafa
--- /dev/null
+++ b/tests/test_syntax/inline/test_emphasis.py
@@ -0,0 +1,130 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2019 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestNotEmphasis(TestCase):
+
+ def test_standalone_asterisk(self):
+ self.assertMarkdownRenders(
+ '*',
+ '<p>*</p>'
+ )
+
+ def test_standalone_understore(self):
+ self.assertMarkdownRenders(
+ '_',
+ '<p>_</p>'
+ )
+
+ def test_standalone_asterisk_in_text(self):
+ self.assertMarkdownRenders(
+ 'foo * bar',
+ '<p>foo * bar</p>'
+ )
+
+ def test_standalone_understore_in_text(self):
+ self.assertMarkdownRenders(
+ 'foo _ bar',
+ '<p>foo _ bar</p>'
+ )
+
+ def test_standalone_asterisks_in_text(self):
+ self.assertMarkdownRenders(
+ 'foo * bar * baz',
+ '<p>foo * bar * baz</p>'
+ )
+
+ def test_standalone_understores_in_text(self):
+ self.assertMarkdownRenders(
+ 'foo _ bar _ baz',
+ '<p>foo _ bar _ baz</p>'
+ )
+
+ def test_standalone_asterisks_with_newlines(self):
+ self.assertMarkdownRenders(
+ 'foo\n* bar *\nbaz',
+ '<p>foo\n* bar *\nbaz</p>'
+ )
+
+ def test_standalone_understores_with_newlines(self):
+ self.assertMarkdownRenders(
+ 'foo\n_ bar _\nbaz',
+ '<p>foo\n_ bar _\nbaz</p>'
+ )
+
+ def test_standalone_asterisks_at_end(self):
+ self.assertMarkdownRenders(
+ 'foo * bar *',
+ '<p>foo * bar *</p>'
+ )
+
+ def test_standalone_understores_at_begin_end(self):
+ self.assertMarkdownRenders(
+ '_ bar _',
+ '<p>_ bar _</p>'
+ )
+
+ def test_complex_emphasis_asterisk(self):
+ self.assertMarkdownRenders(
+ 'This is text **bold *italic bold*** with more text',
+ '<p>This is text <strong>bold <em>italic bold</em></strong> with more text</p>'
+ )
+
+ def test_complex_emphasis_asterisk_mid_word(self):
+ self.assertMarkdownRenders(
+ 'This is text **bold*italic bold*** with more text',
+ '<p>This is text <strong>bold<em>italic bold</em></strong> with more text</p>'
+ )
+
+ def test_complex_emphasis_smart_underscore(self):
+ self.assertMarkdownRenders(
+ 'This is text __bold _italic bold___ with more text',
+ '<p>This is text <strong>bold <em>italic bold</em></strong> with more text</p>'
+ )
+
+ def test_complex_emphasis_smart_underscore_mid_word(self):
+ self.assertMarkdownRenders(
+ 'This is text __bold_italic bold___ with more text',
+ '<p>This is text __bold_italic bold___ with more text</p>'
+ )
+
+ def test_nested_emphasis(self):
+
+ self.assertMarkdownRenders(
+ 'This text is **bold *italic* *italic* bold**',
+ '<p>This text is <strong>bold <em>italic</em> <em>italic</em> bold</strong></p>'
+ )
+
+ def test_complex_multple_emphasis_type(self):
+
+ self.assertMarkdownRenders(
+ 'traced ***along*** bla **blocked** if other ***or***',
+ '<p>traced <strong><em>along</em></strong> bla <strong>blocked</strong> if other <strong><em>or</em></strong></p>' # noqa: E501
+ )
+
+ def test_complex_multple_emphasis_type_variant2(self):
+
+ self.assertMarkdownRenders(
+ 'on the **1-4 row** of the AP Combat Table ***and*** receive',
+ '<p>on the <strong>1-4 row</strong> of the AP Combat Table <strong><em>and</em></strong> receive</p>'
+ )
diff --git a/tests/test_syntax/inline/test_entities.py b/tests/test_syntax/inline/test_entities.py
new file mode 100644
index 0000000..34cc2e7
--- /dev/null
+++ b/tests/test_syntax/inline/test_entities.py
@@ -0,0 +1,43 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestEntities(TestCase):
+
+ def test_named_entities(self):
+ self.assertMarkdownRenders("&amp;", "<p>&amp;</p>")
+ self.assertMarkdownRenders("&sup2;", "<p>&sup2;</p>")
+ self.assertMarkdownRenders("&Aacute;", "<p>&Aacute;</p>")
+
+ def test_decimal_entities(self):
+ self.assertMarkdownRenders("&#38;", "<p>&#38;</p>")
+ self.assertMarkdownRenders("&#178;", "<p>&#178;</p>")
+
+ def test_hexadecimal_entities(self):
+ self.assertMarkdownRenders("&#x00026;", "<p>&#x00026;</p>")
+ self.assertMarkdownRenders("&#xB2;", "<p>&#xB2;</p>")
+
+ def test_false_entities(self):
+ self.assertMarkdownRenders("&not an entity;", "<p>&amp;not an entity;</p>")
+ self.assertMarkdownRenders("&#B2;", "<p>&amp;#B2;</p>")
+ self.assertMarkdownRenders("&#xnothex;", "<p>&amp;#xnothex;</p>")
diff --git a/tests/test_syntax/inline/test_images.py b/tests/test_syntax/inline/test_images.py
new file mode 100644
index 0000000..c9c7cb8
--- /dev/null
+++ b/tests/test_syntax/inline/test_images.py
@@ -0,0 +1,184 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestAdvancedImages(TestCase):
+
+ def test_nested_square_brackets(self):
+ self.assertMarkdownRenders(
+ """![Text[[[[[[[]]]]]]][]](http://link.com/image.png) more text""",
+ """<p><img alt="Text[[[[[[[]]]]]]][]" src="http://link.com/image.png" /> more text</p>"""
+ )
+
+ def test_nested_round_brackets(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/(((((((()))))))()).png) more text""",
+ """<p><img alt="Text" src="http://link.com/(((((((()))))))()).png" /> more text</p>"""
+ )
+
+ def test_uneven_brackets_with_titles1(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/(.png"title") more text""",
+ """<p><img alt="Text" src="http://link.com/(.png" title="title" /> more text</p>"""
+ )
+
+ def test_uneven_brackets_with_titles2(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/('.png"title") more text""",
+ """<p><img alt="Text" src="http://link.com/('.png" title="title" /> more text</p>"""
+ )
+
+ def test_uneven_brackets_with_titles3(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/(.png"title)") more text""",
+ """<p><img alt="Text" src="http://link.com/(.png" title="title)" /> more text</p>"""
+ )
+
+ def test_uneven_brackets_with_titles4(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/(.png "title") more text""",
+ """<p><img alt="Text" src="http://link.com/(.png" title="title" /> more text</p>"""
+ )
+
+ def test_uneven_brackets_with_titles5(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/(.png "title)") more text""",
+ """<p><img alt="Text" src="http://link.com/(.png" title="title)" /> more text</p>"""
+ )
+
+ def test_mixed_title_quotes1(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/'.png"title") more text""",
+ """<p><img alt="Text" src="http://link.com/'.png" title="title" /> more text</p>"""
+ )
+
+ def test_mixed_title_quotes2(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/".png'title') more text""",
+ """<p><img alt="Text" src="http://link.com/&quot;.png" title="title" /> more text</p>"""
+ )
+
+ def test_mixed_title_quotes3(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/with spaces.png'"and quotes" 'and title') more text""",
+ """<p><img alt="Text" src="http://link.com/with spaces.png" title="&quot;and quotes&quot; 'and title" />"""
+ """ more text</p>"""
+ )
+
+ def test_mixed_title_quotes4(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/with spaces'.png"and quotes" 'and title") more text""",
+ """<p><img alt="Text" src="http://link.com/with spaces'.png" title="and quotes&quot; 'and title" />"""
+ """ more text</p>"""
+ )
+
+ def test_mixed_title_quotes5(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/with spaces .png'"and quotes" 'and title') more text""",
+ """<p><img alt="Text" src="http://link.com/with spaces .png" title="&quot;and quotes&quot;"""
+ """ 'and title" /> more text</p>"""
+ )
+
+ def test_mixed_title_quotes6(self):
+ self.assertMarkdownRenders(
+ """![Text](http://link.com/with spaces "and quotes".png 'and title') more text""",
+ """<p><img alt="Text" src="http://link.com/with spaces &quot;and quotes&quot;.png" title="and title" />"""
+ """ more text</p>"""
+ )
+
+ def test_single_quote(self):
+ self.assertMarkdownRenders(
+ """![test](link"notitle.png)""",
+ """<p><img alt="test" src="link&quot;notitle.png" /></p>"""
+ )
+
+ def test_angle_with_mixed_title_quotes(self):
+ self.assertMarkdownRenders(
+ """![Text](<http://link.com/with spaces '"and quotes".png> 'and title') more text""",
+ """<p><img alt="Text" src="http://link.com/with spaces '&quot;and quotes&quot;.png" title="and title" />"""
+ """ more text</p>"""
+ )
+
+ def test_misc(self):
+ self.assertMarkdownRenders(
+ """![Poster](http://humane_man.jpg "The most humane man.")""",
+ """<p><img alt="Poster" src="http://humane_man.jpg" title="The most humane man." /></p>"""
+ )
+
+ def test_misc_ref(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ![Poster][]
+
+ [Poster]:http://humane_man.jpg "The most humane man."
+ """
+ ),
+ self.dedent(
+ """
+ <p><img alt="Poster" src="http://humane_man.jpg" title="The most humane man." /></p>
+ """
+ )
+ )
+
+ def test_misc_blank(self):
+ self.assertMarkdownRenders(
+ """![Blank]()""",
+ """<p><img alt="Blank" src="" /></p>"""
+ )
+
+ def test_misc_img_title(self):
+ self.assertMarkdownRenders(
+ """![Image](http://humane man.jpg "The most humane man.")""",
+ """<p><img alt="Image" src="http://humane man.jpg" title="The most humane man." /></p>"""
+ )
+
+ def test_misc_img(self):
+ self.assertMarkdownRenders(
+ """![Image](http://humane man.jpg)""",
+ """<p><img alt="Image" src="http://humane man.jpg" /></p>"""
+ )
+
+ def test_short_ref(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ ![ref]
+
+ [ref]: ./image.jpg
+ """
+ ),
+ '<p><img alt="ref" src="./image.jpg" /></p>'
+ )
+
+ def test_short_ref_in_link(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [![img ref]](http://example.com/)
+
+ [img ref]: ./image.jpg
+ """
+ ),
+ '<p><a href="http://example.com/"><img alt="img ref" src="./image.jpg" /></a></p>'
+ )
diff --git a/tests/test_syntax/inline/test_links.py b/tests/test_syntax/inline/test_links.py
new file mode 100644
index 0000000..0458756
--- /dev/null
+++ b/tests/test_syntax/inline/test_links.py
@@ -0,0 +1,386 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestInlineLinks(TestCase):
+
+ def test_nested_square_brackets(self):
+ self.assertMarkdownRenders(
+ """[Text[[[[[[[]]]]]]][]](http://link.com) more text""",
+ """<p><a href="http://link.com">Text[[[[[[[]]]]]]][]</a> more text</p>"""
+ )
+
+ def test_nested_round_brackets(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/(((((((()))))))())) more text""",
+ """<p><a href="http://link.com/(((((((()))))))())">Text</a> more text</p>"""
+ )
+
+ def test_uneven_brackets_with_titles1(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/("title") more text""",
+ """<p><a href="http://link.com/(" title="title">Text</a> more text</p>"""
+ )
+
+ def test_uneven_brackets_with_titles2(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/('"title") more text""",
+ """<p><a href="http://link.com/('" title="title">Text</a> more text</p>"""
+ )
+
+ def test_uneven_brackets_with_titles3(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/("title)") more text""",
+ """<p><a href="http://link.com/(" title="title)">Text</a> more text</p>"""
+ )
+
+ def test_uneven_brackets_with_titles4(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/( "title") more text""",
+ """<p><a href="http://link.com/(" title="title">Text</a> more text</p>"""
+ )
+
+ def test_uneven_brackets_with_titles5(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/( "title)") more text""",
+ """<p><a href="http://link.com/(" title="title)">Text</a> more text</p>"""
+ )
+
+ def test_mixed_title_quotes1(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/'"title") more text""",
+ """<p><a href="http://link.com/'" title="title">Text</a> more text</p>"""
+ )
+
+ def test_mixed_title_quotes2(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/"'title') more text""",
+ """<p><a href="http://link.com/&quot;" title="title">Text</a> more text</p>"""
+ )
+
+ def test_mixed_title_quotes3(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/with spaces'"and quotes" 'and title') more text""",
+ """<p><a href="http://link.com/with spaces" title="&quot;and quotes&quot; 'and title">"""
+ """Text</a> more text</p>"""
+ )
+
+ def test_mixed_title_quotes4(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/with spaces'"and quotes" 'and title") more text""",
+ """<p><a href="http://link.com/with spaces'" title="and quotes&quot; 'and title">Text</a> more text</p>"""
+ )
+
+ def test_mixed_title_quotes5(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/with spaces '"and quotes" 'and title') more text""",
+ """<p><a href="http://link.com/with spaces" title="&quot;and quotes&quot; 'and title">"""
+ """Text</a> more text</p>"""
+ )
+
+ def test_mixed_title_quotes6(self):
+ self.assertMarkdownRenders(
+ """[Text](http://link.com/with spaces "and quotes" 'and title') more text""",
+ """<p><a href="http://link.com/with spaces &quot;and quotes&quot;" title="and title">"""
+ """Text</a> more text</p>"""
+ )
+
+ def test_single_quote(self):
+ self.assertMarkdownRenders(
+ """[test](link"notitle)""",
+ """<p><a href="link&quot;notitle">test</a></p>"""
+ )
+
+ def test_angle_with_mixed_title_quotes(self):
+ self.assertMarkdownRenders(
+ """[Text](<http://link.com/with spaces '"and quotes"> 'and title') more text""",
+ """<p><a href="http://link.com/with spaces '&quot;and quotes&quot;" title="and title">"""
+ """Text</a> more text</p>"""
+ )
+
+ def test_amp_in_url(self):
+ """Test amp in URLs."""
+
+ self.assertMarkdownRenders(
+ '[link](http://www.freewisdom.org/this&that)',
+ '<p><a href="http://www.freewisdom.org/this&amp;that">link</a></p>'
+ )
+ self.assertMarkdownRenders(
+ '[title](http://example.com/?a=1&amp;b=2)',
+ '<p><a href="http://example.com/?a=1&amp;b=2">title</a></p>'
+ )
+ self.assertMarkdownRenders(
+ '[title](http://example.com/?a=1&#x26;b=2)',
+ '<p><a href="http://example.com/?a=1&#x26;b=2">title</a></p>'
+ )
+
+
+class TestReferenceLinks(TestCase):
+
+ def test_ref_link(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]: http://example.com
+ """
+ ),
+ """<p><a href="http://example.com">Text</a></p>"""
+ )
+
+ def test_ref_link_angle_brackets(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]: <http://example.com>
+ """
+ ),
+ """<p><a href="http://example.com">Text</a></p>"""
+ )
+
+ def test_ref_link_no_space(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]:http://example.com
+ """
+ ),
+ """<p><a href="http://example.com">Text</a></p>"""
+ )
+
+ def test_ref_link_angle_brackets_no_space(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]:<http://example.com>
+ """
+ ),
+ """<p><a href="http://example.com">Text</a></p>"""
+ )
+
+ def test_ref_link_angle_brackets_title(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]: <http://example.com> "title"
+ """
+ ),
+ """<p><a href="http://example.com" title="title">Text</a></p>"""
+ )
+
+ def test_ref_link_title(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]: http://example.com "title"
+ """
+ ),
+ """<p><a href="http://example.com" title="title">Text</a></p>"""
+ )
+
+ def test_ref_link_angle_brackets_title_no_space(self):
+ # TODO: Maybe reevaluate this?
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]: <http://example.com>"title"
+ """
+ ),
+ """<p><a href="http://example.com&gt;&quot;title&quot;">Text</a></p>"""
+ )
+
+ def test_ref_link_title_no_space(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]: http://example.com"title"
+ """
+ ),
+ """<p><a href="http://example.com&quot;title&quot;">Text</a></p>"""
+ )
+
+ def test_ref_link_single_quoted_title(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]: http://example.com 'title'
+ """
+ ),
+ """<p><a href="http://example.com" title="title">Text</a></p>"""
+ )
+
+ def test_ref_link_title_nested_quote(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]: http://example.com "title'"
+ """
+ ),
+ """<p><a href="http://example.com" title="title'">Text</a></p>"""
+ )
+
+ def test_ref_link_single_quoted_title_nested_quote(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]: http://example.com 'title"'
+ """
+ ),
+ """<p><a href="http://example.com" title="title&quot;">Text</a></p>"""
+ )
+
+ def test_ref_link_override(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]: http://example.com 'ignore'
+ [Text]: https://example.com 'override'
+ """
+ ),
+ """<p><a href="https://example.com" title="override">Text</a></p>"""
+ )
+
+ def test_ref_link_title_no_blank_lines(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+ [Text]: http://example.com "title"
+ [Text]
+ """
+ ),
+ self.dedent(
+ """
+ <p><a href="http://example.com" title="title">Text</a></p>
+ <p><a href="http://example.com" title="title">Text</a></p>
+ """
+ )
+ )
+
+ def test_ref_link_multi_line(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]
+
+ [Text]:
+ http://example.com
+ "title"
+ """
+ ),
+ """<p><a href="http://example.com" title="title">Text</a></p>"""
+ )
+
+ def test_reference_newlines(self):
+ """Test reference id whitespace cleanup."""
+
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ Two things:
+
+ - I would like to tell you about the [code of
+ conduct][] we are using in this project.
+ - Only one in fact.
+
+ [code of conduct]: https://github.com/Python-Markdown/markdown/blob/master/CODE_OF_CONDUCT.md
+ """
+ ),
+ '<p>Two things:</p>\n<ul>\n<li>I would like to tell you about the '
+ '<a href="https://github.com/Python-Markdown/markdown/blob/master/CODE_OF_CONDUCT.md">code of\n'
+ ' conduct</a> we are using in this project.</li>\n<li>Only one in fact.</li>\n</ul>'
+ )
+
+ def test_reference_across_blocks(self):
+ """Test references across blocks."""
+
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ I would like to tell you about the [code of
+
+ conduct][] we are using in this project.
+
+ [code of conduct]: https://github.com/Python-Markdown/markdown/blob/master/CODE_OF_CONDUCT.md
+ """
+ ),
+ '<p>I would like to tell you about the [code of</p>\n'
+ '<p>conduct][] we are using in this project.</p>'
+ )
+
+ def test_ref_link_nested_left_bracket(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text[]
+
+ [Text[]: http://example.com
+ """
+ ),
+ self.dedent(
+ """
+ <p>[Text[]</p>
+ <p>[Text[]: http://example.com</p>
+ """
+ )
+ )
+
+ def test_ref_link_nested_right_bracket(self):
+ self.assertMarkdownRenders(
+ self.dedent(
+ """
+ [Text]]
+
+ [Text]]: http://example.com
+ """
+ ),
+ self.dedent(
+ """
+ <p>[Text]]</p>
+ <p>[Text]]: http://example.com</p>
+ """
+ )
+ )
diff --git a/tests/test_syntax/inline/test_raw_html.py b/tests/test_syntax/inline/test_raw_html.py
new file mode 100644
index 0000000..a9c4857
--- /dev/null
+++ b/tests/test_syntax/inline/test_raw_html.py
@@ -0,0 +1,30 @@
+"""
+Python Markdown
+
+A Python implementation of John Gruber's Markdown.
+
+Documentation: https://python-markdown.github.io/
+GitHub: https://github.com/Python-Markdown/markdown/
+PyPI: https://pypi.org/project/Markdown/
+
+Started by Manfred Stienstra (http://www.dwerg.net/).
+Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org).
+Currently maintained by Waylan Limberg (https://github.com/waylan),
+Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser).
+
+Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE.md for details).
+"""
+
+from markdown.test_tools import TestCase
+
+
+class TestRawHtml(TestCase):
+ def test_inline_html_angle_brackets(self):
+ self.assertMarkdownRenders("<span>e<c</span>", "<p><span>e&lt;c</span></p>")
+ self.assertMarkdownRenders("<span>e>c</span>", "<p><span>e&gt;c</span></p>")
+ self.assertMarkdownRenders("<span>e < c</span>", "<p><span>e &lt; c</span></p>")
+ self.assertMarkdownRenders("<span>e > c</span>", "<p><span>e &gt; c</span></p>")