{% import 'mathjax.j2' as MathJax with context -%}
<!doctype html>
<!-- Created using https://codeberg.org/gi1242/md-to-html. Don't edit directly -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <title>reveal.js</title>

    <link rel="stylesheet" href="reveal.js/dist/reset.css">
    <link rel="stylesheet" href="reveal.js/dist/reveal.css">
    <link id='theme' rel="stylesheet" href="reveal.js/dist/theme/white.css">

    <link rel="stylesheet" href="local.css">
    <script>
      {{MathJax.configure()}}
      MathJax.startup = {
	pageReady: () => {
	  return MathJax.startup.defaultPageReady().then(() => {
	    {%- block reveal_plugins %}
	    var plugins = [ RevealNotes, RevealSearch, RevealZoom,
		RevealChalkboard, RevealCustomControls];
	    {%- endblock %}
	    {%- block reveal_initialize %}
	      {%- set RevealInitialize %}
		// More info about initialization & config:
		// - https://revealjs.com/initialization/
		// - https://revealjs.com/config/
		Reveal.initialize({
		  hash: true,
		  transition: 'none',
		  showNotes: 'separate-page',
		  slideNumber: 'c/t',
		  progress: false,
		  // keyboard: { 66: 'prev' },
		  customcontrols: {
		    controls: [
		      { icon: '<i class="fa fa-pen-square"></i>',
			title: 'Toggle chalkboard (B)',
			action: 'RevealChalkboard.toggleChalkboard();'
		      },
		      { icon: '<i class="fa fa-pen"></i>',
			title: 'Toggle notes canvas (C)',
			action: 'RevealChalkboard.toggleNotesCanvas();'
		      }
		    ]
		  },

		  // Learn about plugins: https://revealjs.com/plugins/
		  plugins: plugins
		});
	      {%- endset %}
	      {{- reveal_initialize | d(RevealInitialize) }}
	      {{- reveal_configure }}
	    {%- endblock %}
	  });
	}
      }
    </script>
    {{MathJax.load()}}
    {%- block end_head %}
      {% if uses_codehilite -%}
	<style>
	{# Generated by pygmentize -S <theme> -f html -a .codehilite #}
	.codehilite pre { line-height: 125%; padding: .5em}
	@media (prefers-color-scheme: light) { {# {{{ default #}
	  td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
	  span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
	  td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
	  span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
	  .codehilite .hll { background-color: #ffffcc }
	  .codehilite { background: #f8f8f8; }
	  .codehilite .c { color: #3D7B7B; font-style: italic } /* Comment */
	  .codehilite .err { border: 1px solid #FF0000 } /* Error */
	  .codehilite .k { color: #008000; font-weight: bold } /* Keyword */
	  .codehilite .o { color: #666666 } /* Operator */
	  .codehilite .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
	  .codehilite .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
	  .codehilite .cp { color: #9C6500 } /* Comment.Preproc */
	  .codehilite .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
	  .codehilite .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
	  .codehilite .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
	  .codehilite .gd { color: #A00000 } /* Generic.Deleted */
	  .codehilite .ge { font-style: italic } /* Generic.Emph */
	  .codehilite .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
	  .codehilite .gr { color: #E40000 } /* Generic.Error */
	  .codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
	  .codehilite .gi { color: #008400 } /* Generic.Inserted */
	  .codehilite .go { color: #717171 } /* Generic.Output */
	  .codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
	  .codehilite .gs { font-weight: bold } /* Generic.Strong */
	  .codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
	  .codehilite .gt { color: #0044DD } /* Generic.Traceback */
	  .codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
	  .codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
	  .codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
	  .codehilite .kp { color: #008000 } /* Keyword.Pseudo */
	  .codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
	  .codehilite .kt { color: #B00040 } /* Keyword.Type */
	  .codehilite .m { color: #666666 } /* Literal.Number */
	  .codehilite .s { color: #BA2121 } /* Literal.String */
	  .codehilite .na { color: #687822 } /* Name.Attribute */
	  .codehilite .nb { color: #008000 } /* Name.Builtin */
	  .codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */
	  .codehilite .no { color: #880000 } /* Name.Constant */
	  .codehilite .nd { color: #AA22FF } /* Name.Decorator */
	  .codehilite .ni { color: #717171; font-weight: bold } /* Name.Entity */
	  .codehilite .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
	  .codehilite .nf { color: #0000FF } /* Name.Function */
	  .codehilite .nl { color: #767600 } /* Name.Label */
	  .codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
	  .codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */
	  .codehilite .nv { color: #19177C } /* Name.Variable */
	  .codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
	  .codehilite .w { color: #bbbbbb } /* Text.Whitespace */
	  .codehilite .mb { color: #666666 } /* Literal.Number.Bin */
	  .codehilite .mf { color: #666666 } /* Literal.Number.Float */
	  .codehilite .mh { color: #666666 } /* Literal.Number.Hex */
	  .codehilite .mi { color: #666666 } /* Literal.Number.Integer */
	  .codehilite .mo { color: #666666 } /* Literal.Number.Oct */
	  .codehilite .sa { color: #BA2121 } /* Literal.String.Affix */
	  .codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */
	  .codehilite .sc { color: #BA2121 } /* Literal.String.Char */
	  .codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */
	  .codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
	  .codehilite .s2 { color: #BA2121 } /* Literal.String.Double */
	  .codehilite .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
	  .codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */
	  .codehilite .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
	  .codehilite .sx { color: #008000 } /* Literal.String.Other */
	  .codehilite .sr { color: #A45A77 } /* Literal.String.Regex */
	  .codehilite .s1 { color: #BA2121 } /* Literal.String.Single */
	  .codehilite .ss { color: #19177C } /* Literal.String.Symbol */
	  .codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */
	  .codehilite .fm { color: #0000FF } /* Name.Function.Magic */
	  .codehilite .vc { color: #19177C } /* Name.Variable.Class */
	  .codehilite .vg { color: #19177C } /* Name.Variable.Global */
	  .codehilite .vi { color: #19177C } /* Name.Variable.Instance */
	  .codehilite .vm { color: #19177C } /* Name.Variable.Magic */
	  .codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */
	} {# }}} #}
	@media (prefers-color-scheme: dark) { {# {{{ github-dark #}
	  td.linenos .normal { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
	  span.linenos { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
	  td.linenos .special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
	  span.linenos.special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
	  .codehilite .hll { background-color: #6e7681 }
	  .codehilite { background: #0d1117; color: #e6edf3 }
	  .codehilite .c { color: #8b949e; font-style: italic } /* Comment */
	  .codehilite .err { color: #f85149 } /* Error */
	  .codehilite .esc { color: #e6edf3 } /* Escape */
	  .codehilite .g { color: #e6edf3 } /* Generic */
	  .codehilite .k { color: #ff7b72 } /* Keyword */
	  .codehilite .l { color: #a5d6ff } /* Literal */
	  .codehilite .n { color: #e6edf3 } /* Name */
	  .codehilite .o { color: #ff7b72; font-weight: bold } /* Operator */
	  .codehilite .x { color: #e6edf3 } /* Other */
	  .codehilite .p { color: #e6edf3 } /* Punctuation */
	  .codehilite .ch { color: #8b949e; font-style: italic } /* Comment.Hashbang */
	  .codehilite .cm { color: #8b949e; font-style: italic } /* Comment.Multiline */
	  .codehilite .cp { color: #8b949e; font-weight: bold; font-style: italic } /* Comment.Preproc */
	  .codehilite .cpf { color: #8b949e; font-style: italic } /* Comment.PreprocFile */
	  .codehilite .c1 { color: #8b949e; font-style: italic } /* Comment.Single */
	  .codehilite .cs { color: #8b949e; font-weight: bold; font-style: italic } /* Comment.Special */
	  .codehilite .gd { color: #ffa198; background-color: #490202 } /* Generic.Deleted */
	  .codehilite .ge { color: #e6edf3; font-style: italic } /* Generic.Emph */
	  .codehilite .ges { color: #e6edf3; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
	  .codehilite .gr { color: #ffa198 } /* Generic.Error */
	  .codehilite .gh { color: #79c0ff; font-weight: bold } /* Generic.Heading */
	  .codehilite .gi { color: #56d364; background-color: #0f5323 } /* Generic.Inserted */
	  .codehilite .go { color: #8b949e } /* Generic.Output */
	  .codehilite .gp { color: #8b949e } /* Generic.Prompt */
	  .codehilite .gs { color: #e6edf3; font-weight: bold } /* Generic.Strong */
	  .codehilite .gu { color: #79c0ff } /* Generic.Subheading */
	  .codehilite .gt { color: #ff7b72 } /* Generic.Traceback */
	  .codehilite .g-Underline { color: #e6edf3; text-decoration: underline } /* Generic.Underline */
	  .codehilite .kc { color: #79c0ff } /* Keyword.Constant */
	  .codehilite .kd { color: #ff7b72 } /* Keyword.Declaration */
	  .codehilite .kn { color: #ff7b72 } /* Keyword.Namespace */
	  .codehilite .kp { color: #79c0ff } /* Keyword.Pseudo */
	  .codehilite .kr { color: #ff7b72 } /* Keyword.Reserved */
	  .codehilite .kt { color: #ff7b72 } /* Keyword.Type */
	  .codehilite .ld { color: #79c0ff } /* Literal.Date */
	  .codehilite .m { color: #a5d6ff } /* Literal.Number */
	  .codehilite .s { color: #a5d6ff } /* Literal.String */
	  .codehilite .na { color: #e6edf3 } /* Name.Attribute */
	  .codehilite .nb { color: #e6edf3 } /* Name.Builtin */
	  .codehilite .nc { color: #f0883e; font-weight: bold } /* Name.Class */
	  .codehilite .no { color: #79c0ff; font-weight: bold } /* Name.Constant */
	  .codehilite .nd { color: #d2a8ff; font-weight: bold } /* Name.Decorator */
	  .codehilite .ni { color: #ffa657 } /* Name.Entity */
	  .codehilite .ne { color: #f0883e; font-weight: bold } /* Name.Exception */
	  .codehilite .nf { color: #d2a8ff; font-weight: bold } /* Name.Function */
	  .codehilite .nl { color: #79c0ff; font-weight: bold } /* Name.Label */
	  .codehilite .nn { color: #ff7b72 } /* Name.Namespace */
	  .codehilite .nx { color: #e6edf3 } /* Name.Other */
	  .codehilite .py { color: #79c0ff } /* Name.Property */
	  .codehilite .nt { color: #7ee787 } /* Name.Tag */
	  .codehilite .nv { color: #79c0ff } /* Name.Variable */
	  .codehilite .ow { color: #ff7b72; font-weight: bold } /* Operator.Word */
	  .codehilite .pm { color: #e6edf3 } /* Punctuation.Marker */
	  .codehilite .w { color: #6e7681 } /* Text.Whitespace */
	  .codehilite .mb { color: #a5d6ff } /* Literal.Number.Bin */
	  .codehilite .mf { color: #a5d6ff } /* Literal.Number.Float */
	  .codehilite .mh { color: #a5d6ff } /* Literal.Number.Hex */
	  .codehilite .mi { color: #a5d6ff } /* Literal.Number.Integer */
	  .codehilite .mo { color: #a5d6ff } /* Literal.Number.Oct */
	  .codehilite .sa { color: #79c0ff } /* Literal.String.Affix */
	  .codehilite .sb { color: #a5d6ff } /* Literal.String.Backtick */
	  .codehilite .sc { color: #a5d6ff } /* Literal.String.Char */
	  .codehilite .dl { color: #79c0ff } /* Literal.String.Delimiter */
	  .codehilite .sd { color: #a5d6ff } /* Literal.String.Doc */
	  .codehilite .s2 { color: #a5d6ff } /* Literal.String.Double */
	  .codehilite .se { color: #79c0ff } /* Literal.String.Escape */
	  .codehilite .sh { color: #79c0ff } /* Literal.String.Heredoc */
	  .codehilite .si { color: #a5d6ff } /* Literal.String.Interpol */
	  .codehilite .sx { color: #a5d6ff } /* Literal.String.Other */
	  .codehilite .sr { color: #79c0ff } /* Literal.String.Regex */
	  .codehilite .s1 { color: #a5d6ff } /* Literal.String.Single */
	  .codehilite .ss { color: #a5d6ff } /* Literal.String.Symbol */
	  .codehilite .bp { color: #e6edf3 } /* Name.Builtin.Pseudo */
	  .codehilite .fm { color: #d2a8ff; font-weight: bold } /* Name.Function.Magic */
	  .codehilite .vc { color: #79c0ff } /* Name.Variable.Class */
	  .codehilite .vg { color: #79c0ff } /* Name.Variable.Global */
	  .codehilite .vi { color: #79c0ff } /* Name.Variable.Instance */
	  .codehilite .vm { color: #79c0ff } /* Name.Variable.Magic */
	  .codehilite .il { color: #a5d6ff } /* Literal.Number.Integer.Long */
	} {# }}} #}
	</style>
      {% endif -%}
      {{end_head}}
    {%- endblock %}
  </head>
  <body>
    <div class="reveal">
      {%- block before_slides %}{{ before_slides }}{% endblock %}
      <div class="slides">
	{{content}}
      </div>
      {%- block after_slides %}{{ after_slides }}{% endblock %}
    </div>

    {%- block reveal_load %}
      <script src="reveal.js/dist/reveal.js"></script>
      <script src="reveal.js/plugin/notes/notes.js"></script>
      <script src="reveal.js/plugin/search/search.js"></script>
      <script src="reveal.js/plugin/zoom/zoom.js"></script>

      <!-- Font awesome is required for the chalkboard plugin -->
      <script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/js/all.min.js"></script>
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
      <!-- Custom controls plugin is used to for opening and closing annotation modes. -->
      <script src="https://cdn.jsdelivr.net/npm/reveal.js-plugins@latest/customcontrols/plugin.js"></script>
      <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js-plugins@latest/customcontrols/style.css">
      <!-- Chalkboard plugin -->
      <script src="https://cdn.jsdelivr.net/npm/reveal.js-plugins@latest/chalkboard/plugin.js"></script>
      <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js-plugins@latest/chalkboard/style.css">
    {%- endblock %}

    {%- block end_body %}
      <script>
	(() => {
	  'use strict'

	  // Automatically set dark/light theme
	  const setTheme = () => {
	    var theme = window.matchMedia('(prefers-color-scheme: dark)')
	      .matches ? 'black.css' : 'white.css';
	    document.getElementById('theme').setAttribute(
	      'href', 'reveal.js/dist/theme/' + theme );
	  }
	  setTheme();
	  window.matchMedia('(prefers-color-scheme: dark)')
	    .addEventListener( 'change', setTheme );
	})()
      </script>
      {{end_body}}
    {%- endblock %}
  </body>
</html>
