Skip to content

Instantly share code, notes, and snippets.

@beiller
Last active July 16, 2019 16:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save beiller/01355d2f11c40d1ab12e8af1695dadf6 to your computer and use it in GitHub Desktop.
Save beiller/01355d2f11c40d1ab12e8af1695dadf6 to your computer and use it in GitHub Desktop.
Bill Hamilton 2019
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bill Hamilton 2019</title>
<style>
@font-face{font-family:KaTeX_AMS;src:url(/static/fonts/KaTeX_AMS-Regular.e78e28b.woff2) format("woff2"),url(/static/fonts/KaTeX_AMS-Regular.7f06b4e.woff) format("woff"),url(/static/fonts/KaTeX_AMS-Regular.aaf4eee.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(/static/fonts/KaTeX_Caligraphic-Bold.4ec58be.woff2) format("woff2"),url(/static/fonts/KaTeX_Caligraphic-Bold.1e802ca.woff) format("woff"),url(/static/fonts/KaTeX_Caligraphic-Bold.021dd4d.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(/static/fonts/KaTeX_Caligraphic-Regular.7edb53b.woff2) format("woff2"),url(/static/fonts/KaTeX_Caligraphic-Regular.d3b46c3.woff) format("woff"),url(/static/fonts/KaTeX_Caligraphic-Regular.d49f2d5.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(/static/fonts/KaTeX_Fraktur-Bold.d5b59ec.woff2) format("woff2"),url(/static/fonts/KaTeX_Fraktur-Bold.c4c8cab.woff) format("woff"),url(/static/fonts/KaTeX_Fraktur-Bold.a31e7cb.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(/static/fonts/KaTeX_Fraktur-Regular.32a5339.woff2) format("woff2"),url(/static/fonts/KaTeX_Fraktur-Regular.b7d9c46.woff) format("woff"),url(/static/fonts/KaTeX_Fraktur-Regular.a48dad4.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(/static/fonts/KaTeX_Main-Bold.8e1e01c.woff2) format("woff2"),url(/static/fonts/KaTeX_Main-Bold.22086eb.woff) format("woff"),url(/static/fonts/KaTeX_Main-Bold.9ceff51.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(/static/fonts/KaTeX_Main-BoldItalic.284a17f.woff2) format("woff2"),url(/static/fonts/KaTeX_Main-BoldItalic.4c57dbc.woff) format("woff"),url(/static/fonts/KaTeX_Main-BoldItalic.e8b44b9.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(/static/fonts/KaTeX_Main-Italic.e533d5a.woff2) format("woff2"),url(/static/fonts/KaTeX_Main-Italic.99be0e1.woff) format("woff"),url(/static/fonts/KaTeX_Main-Italic.29c8639.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(/static/fonts/KaTeX_Main-Regular.5c734d7.woff2) format("woff2"),url(/static/fonts/KaTeX_Main-Regular.b741441.woff) format("woff"),url(/static/fonts/KaTeX_Main-Regular.5c94aef.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(/static/fonts/KaTeX_Math-BoldItalic.d747bd1.woff2) format("woff2"),url(/static/fonts/KaTeX_Math-BoldItalic.b13731e.woff) format("woff"),url(/static/fonts/KaTeX_Math-BoldItalic.9a2834a.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(/static/fonts/KaTeX_Math-Italic.4ad08b8.woff2) format("woff2"),url(/static/fonts/KaTeX_Math-Italic.f030390.woff) format("woff"),url(/static/fonts/KaTeX_Math-Italic.291e76b.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(/static/fonts/KaTeX_SansSerif-Bold.6e0830b.woff2) format("woff2"),url(/static/fonts/KaTeX_SansSerif-Bold.3fb4195.woff) format("woff"),url(/static/fonts/KaTeX_SansSerif-Bold.7dc027c.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_SansSerif;src:url(/static/fonts/KaTeX_SansSerif-Italic.fba01c9.woff2) format("woff2"),url(/static/fonts/KaTeX_SansSerif-Italic.727a9b0.woff) format("woff"),url(/static/fonts/KaTeX_SansSerif-Italic.4059868.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(/static/fonts/KaTeX_SansSerif-Regular.d929cd6.woff2) format("woff2"),url(/static/fonts/KaTeX_SansSerif-Regular.2555754.woff) format("woff"),url(/static/fonts/KaTeX_SansSerif-Regular.5c58d16.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(/static/fonts/KaTeX_Script-Regular.755e249.woff2) format("woff2"),url(/static/fonts/KaTeX_Script-Regular.d524c9a.woff) format("woff"),url(/static/fonts/KaTeX_Script-Regular.d12ea9e.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(/static/fonts/KaTeX_Size1-Regular.048c39c.woff2) format("woff2"),url(/static/fonts/KaTeX_Size1-Regular.08b5f00.woff) format("woff"),url(/static/fonts/KaTeX_Size1-Regular.7342d45.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(/static/fonts/KaTeX_Size2-Regular.81d6b8d.woff2) format("woff2"),url(/static/fonts/KaTeX_Size2-Regular.af24b0e.woff) format("woff"),url(/static/fonts/KaTeX_Size2-Regular.eb130dc.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(/static/fonts/KaTeX_Size3-Regular.b311ca0.woff2) format("woff2"),url(/static/fonts/KaTeX_Size3-Regular.0d89264.woff) format("woff"),url(/static/fonts/KaTeX_Size3-Regular.7e02a40.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(/static/fonts/KaTeX_Size4-Regular.6a3255d.woff2) format("woff2"),url(/static/fonts/KaTeX_Size4-Regular.68895bb.woff) format("woff"),url(/static/fonts/KaTeX_Size4-Regular.ad76725.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(/static/fonts/KaTeX_Typewriter-Regular.6cc31ea.woff2) format("woff2"),url(/static/fonts/KaTeX_Typewriter-Regular.3fe216d.woff) format("woff"),url(/static/fonts/KaTeX_Typewriter-Regular.2570235.ttf) format("truetype");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.10.2"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid;min-width:1px}.katex .mtable .vs-dashed{border-right:.05em dashed}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left}@font-face{font-family:Lato;font-style:normal;font-weight:400;src:url(/static/fonts/lato-normal.27bd77b.woff) format("woff")}@font-face{font-family:Lato;font-style:italic;font-weight:400;src:url(/static/fonts/lato-normal-italic.f28f2d6.woff) format("woff")}@font-face{font-family:Lato;font-style:normal;font-weight:600;src:url(/static/fonts/lato-black.f80bda6.woff) format("woff")}@font-face{font-family:Lato;font-style:italic;font-weight:600;src:url(/static/fonts/lato-black-italic.798eafd.woff) format("woff")}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;src:url(/static/fonts/RobotoMono-Regular.0b6a547.woff) format("woff")}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:600;src:url(/static/fonts/RobotoMono-Bold.819f3b2.woff) format("woff")}.prism *,.token.pre.gfm *{font-weight:inherit!important}.prism .token.cdata,.prism .token.comment,.prism .token.doctype,.prism .token.prolog,.token.pre.gfm .token.cdata,.token.pre.gfm .token.comment,.token.pre.gfm .token.doctype,.token.pre.gfm .token.prolog{color:#708090}.prism .token.punctuation,.token.pre.gfm .token.punctuation{color:#999}.prism .namespace,.token.pre.gfm .namespace{opacity:.7}.prism .token.boolean,.prism .token.constant,.prism .token.deleted,.prism .token.number,.prism .token.property,.prism .token.symbol,.prism .token.tag,.token.pre.gfm .token.boolean,.token.pre.gfm .token.constant,.token.pre.gfm .token.deleted,.token.pre.gfm .token.number,.token.pre.gfm .token.property,.token.pre.gfm .token.symbol,.token.pre.gfm .token.tag{color:#905}.prism .token.attr-name,.prism .token.builtin,.prism .token.char,.prism .token.inserted,.prism .token.selector,.prism .token.string,.token.pre.gfm .token.attr-name,.token.pre.gfm .token.builtin,.token.pre.gfm .token.char,.token.pre.gfm .token.inserted,.token.pre.gfm .token.selector,.token.pre.gfm .token.string{color:#690}.prism .language-css .token.string,.prism .style .token.string,.prism .token.entity,.prism .token.operator,.prism .token.url,.token.pre.gfm .language-css .token.string,.token.pre.gfm .style .token.string,.token.pre.gfm .token.entity,.token.pre.gfm .token.operator,.token.pre.gfm .token.url{color:#a67f59}.prism .token.atrule,.prism .token.attr-value,.prism .token.keyword,.token.pre.gfm .token.atrule,.token.pre.gfm .token.attr-value,.token.pre.gfm .token.keyword{color:#07a}.prism .token.function,.token.pre.gfm .token.function{color:#dd4a68}.prism .token.important,.prism .token.regex,.prism .token.variable,.token.pre.gfm .token.important,.token.pre.gfm .token.regex,.token.pre.gfm .token.variable{color:#e90}.prism .token.bold,.prism .token.important,.token.pre.gfm .token.bold,.token.pre.gfm .token.important{font-weight:500}.prism .token.italic,.token.pre.gfm .token.italic{font-style:italic}.mermaid{font-size:16px}.mermaid svg{color:rgba(0,0,0,.75);width:100%;max-width:100%}.app--dark .mermaid svg{color:hsla(0,0%,100%,.75)}.mermaid svg *{font-family:Lato,Helvetica Neue,Helvetica,sans-serif}.mermaid .mermaid .label{color:#333}.mermaid .node circle,.mermaid .node ellipse,.mermaid .node polygon,.mermaid .node rect{fill:#eee;stroke:#999;stroke-width:1px}.mermaid .node.clickable{cursor:pointer}.mermaid .arrowheadPath{fill:#333}.mermaid .edgePath .path{stroke:#666;stroke-width:1.5px}.mermaid .edgeLabel{background-color:#fff}.mermaid .cluster rect{fill:#eaf2fb!important;stroke:#26a!important;stroke-width:1px!important}.mermaid .cluster text{fill:#333}.mermaid div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:trebuchet ms,verdana,arial;font-size:12px;background:#eaf2fb;border:1px solid #26a;border-radius:2px;pointer-events:none;z-index:100}.mermaid .actor{stroke:#999;fill:#eee}.mermaid text.actor{fill:#333;stroke:none}.mermaid .actor-line{stroke:#666}.mermaid .messageLine0{marker-end:"url(#arrowhead)"}.mermaid .messageLine0,.mermaid .messageLine1{stroke-width:1.5;stroke-dasharray:"2 2";stroke:#333}.mermaid #arrowhead{fill:#333}.mermaid #crosshead path{fill:#333!important;stroke:#333!important}.mermaid .messageText{fill:#333;stroke:none}.mermaid .labelBox{stroke:#999;fill:#eee}.mermaid .labelText,.mermaid .loopText{fill:#fff;stroke:none}.mermaid .loopLine{stroke-width:2;stroke-dasharray:"2 2";marker-end:"url(#arrowhead)";stroke:#999}.mermaid .note{stroke:#770;fill:#ffa}.mermaid .noteText{fill:#000;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:14px}.mermaid .section{stroke:none;opacity:.2}.mermaid .section0,.mermaid .section2{fill:#80b3e6}.mermaid .section1,.mermaid .section3{fill:#fff;opacity:.2}.mermaid .sectionTitle0,.mermaid .sectionTitle1,.mermaid .sectionTitle2,.mermaid .sectionTitle3{fill:#333}.mermaid .sectionTitle{text-anchor:start;font-size:11px}.mermaid .grid .tick{stroke:#e6e6e6;opacity:.3;shape-rendering:crispEdges}.mermaid .grid path{stroke-width:0}.mermaid .today{fill:none;stroke:#d42;stroke-width:2px}.mermaid .task{stroke-width:2}.mermaid .taskText{text-anchor:middle;font-size:11px}.mermaid .taskTextOutsideRight{fill:#333;text-anchor:start;font-size:11px}.mermaid .taskTextOutsideLeft{fill:#333;text-anchor:end;font-size:11px}.mermaid .taskText0,.mermaid .taskText1,.mermaid .taskText2,.mermaid .taskText3{fill:#fff}.mermaid .task0,.mermaid .task1,.mermaid .task2,.mermaid .task3{fill:#26a;stroke:#1a4d80}.mermaid .taskTextOutside0,.mermaid .taskTextOutside1,.mermaid .taskTextOutside2,.mermaid .taskTextOutside3{fill:#333}.mermaid .active0,.mermaid .active1,.mermaid .active2,.mermaid .active3{fill:#eee;stroke:#1a4d80}.mermaid .activeText0,.mermaid .activeText1,.mermaid .activeText2,.mermaid .activeText3{fill:#333!important}.mermaid .done0,.mermaid .done1,.mermaid .done2,.mermaid .done3{stroke:#666;fill:#bbb;stroke-width:2}.mermaid .doneText0,.mermaid .doneText1,.mermaid .doneText2,.mermaid .doneText3{fill:#333!important}.mermaid .crit0,.mermaid .crit1,.mermaid .crit2,.mermaid .crit3{stroke:#b1361b;fill:#d42;stroke-width:2}.mermaid .activeCrit0,.mermaid .activeCrit1,.mermaid .activeCrit2,.mermaid .activeCrit3{stroke:#b1361b;fill:#eee;stroke-width:2}.mermaid .doneCrit0,.mermaid .doneCrit1,.mermaid .doneCrit2,.mermaid .doneCrit3{stroke:#b1361b;fill:#bbb;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.mermaid .activeCritText0,.mermaid .activeCritText1,.mermaid .activeCritText2,.mermaid .activeCritText3,.mermaid .doneCritText0,.mermaid .doneCritText1,.mermaid .doneCritText2,.mermaid .doneCritText3{fill:#333!important}.mermaid .titleText{text-anchor:middle;font-size:18px;fill:#333}.mermaid g.classGroup text{fill:#999;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:10px}.mermaid g.classGroup rect{fill:#eee;stroke:#999}.mermaid g.classGroup line{stroke:#999;stroke-width:1}.mermaid .classLabel .box{stroke:none;stroke-width:0;fill:#eee;opacity:.5}.mermaid .classLabel .label{fill:#999;font-size:10px}.mermaid .relation{stroke:#999;stroke-width:1;fill:none}.mermaid #compositionEnd,.mermaid #compositionStart{fill:#999;stroke:#999;stroke-width:1}.mermaid #aggregationEnd,.mermaid #aggregationStart{fill:#eee;stroke:#999;stroke-width:1}.mermaid #dependencyEnd,.mermaid #dependencyStart,.mermaid #extensionEnd,.mermaid #extensionStart{fill:#999;stroke:#999;stroke-width:1}.mermaid .branch-label,.mermaid .commit-id,.mermaid .commit-msg{fill:#d3d3d3;color:#d3d3d3}.app--dark .mermaid .label{color:#323d47}.app--dark .mermaid .node circle,.app--dark .mermaid .node ellipse,.app--dark .mermaid .node polygon,.app--dark .mermaid .node rect{fill:#bdd5ea;stroke:purple;stroke-width:1px}.app--dark .mermaid .node.clickable{cursor:pointer}.app--dark .mermaid .arrowheadPath{fill:#d3d3d3}.app--dark .mermaid .edgePath .path{stroke:#d3d3d3;stroke-width:1.5px}.app--dark .mermaid .edgeLabel{background-color:#e8e8e8}.app--dark .mermaid .cluster rect{fill:#6d6d65!important;stroke:hsla(0,0%,100%,.25)!important;stroke-width:1px!important}.app--dark .mermaid .cluster text{fill:#f9fffe}.app--dark .mermaid div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:trebuchet ms,verdana,arial;font-size:12px;background:#6d6d65;border:1px solid hsla(0,0%,100%,.25);border-radius:2px;pointer-events:none;z-index:100}.app--dark .mermaid .actor{stroke:#81b1db;fill:#bdd5ea}.app--dark .mermaid text.actor{fill:#000;stroke:none}.app--dark .mermaid .actor-line{stroke:#d3d3d3}.app--dark .mermaid .messageLine0{marker-end:"url(#arrowhead)"}.app--dark .mermaid .messageLine0,.app--dark .mermaid .messageLine1{stroke-width:1.5;stroke-dasharray:"2 2";stroke:#d3d3d3}.app--dark .mermaid #arrowhead{fill:#d3d3d3}.app--dark .mermaid #crosshead path{fill:#d3d3d3!important;stroke:#d3d3d3!important}.app--dark .mermaid .messageText{fill:#d3d3d3;stroke:none}.app--dark .mermaid .labelBox{stroke:#81b1db;fill:#bdd5ea}.app--dark .mermaid .labelText,.app--dark .mermaid .loopText{fill:#d3d3d3;stroke:none}.app--dark .mermaid .loopLine{stroke-width:2;stroke-dasharray:"2 2";marker-end:"url(#arrowhead)";stroke:#81b1db}.app--dark .mermaid .note{stroke:hsla(0,0%,100%,.25);fill:#fff5ad}.app--dark .mermaid .noteText{fill:#000;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:14px}.app--dark .mermaid .section{stroke:none;opacity:.2}.app--dark .mermaid .section0{fill:hsla(0,0%,100%,.3)}.app--dark .mermaid .section2{fill:#eae8b9}.app--dark .mermaid .section1,.app--dark .mermaid .section3{fill:#fff;opacity:.2}.app--dark .mermaid .sectionTitle0,.app--dark .mermaid .sectionTitle1,.app--dark .mermaid .sectionTitle2,.app--dark .mermaid .sectionTitle3{fill:#f9fffe}.app--dark .mermaid .sectionTitle{text-anchor:start;font-size:11px}.app--dark .mermaid .grid .tick{stroke:#d3d3d3;opacity:.3;shape-rendering:crispEdges}.app--dark .mermaid .grid path{stroke-width:0}.app--dark .mermaid .today{fill:none;stroke:#db5757;stroke-width:2px}.app--dark .mermaid .task{stroke-width:2}.app--dark .mermaid .taskText{text-anchor:middle;font-size:11px}.app--dark .mermaid .taskTextOutsideRight{fill:#323d47;text-anchor:start;font-size:11px}.app--dark .mermaid .taskTextOutsideLeft{fill:#323d47;text-anchor:end;font-size:11px}.app--dark .mermaid .taskText0,.app--dark .mermaid .taskText1,.app--dark .mermaid .taskText2,.app--dark .mermaid .taskText3{fill:#323d47}.app--dark .mermaid .task0,.app--dark .mermaid .task1,.app--dark .mermaid .task2,.app--dark .mermaid .task3{fill:#bdd5ea;stroke:hsla(0,0%,100%,.5)}.app--dark .mermaid .taskTextOutside0,.app--dark .mermaid .taskTextOutside1,.app--dark .mermaid .taskTextOutside2,.app--dark .mermaid .taskTextOutside3{fill:#d3d3d3}.app--dark .mermaid .active0,.app--dark .mermaid .active1,.app--dark .mermaid .active2,.app--dark .mermaid .active3{fill:#81b1db;stroke:hsla(0,0%,100%,.5)}.app--dark .mermaid .activeText0,.app--dark .mermaid .activeText1,.app--dark .mermaid .activeText2,.app--dark .mermaid .activeText3{fill:#323d47!important}.app--dark .mermaid .done0,.app--dark .mermaid .done1,.app--dark .mermaid .done2,.app--dark .mermaid .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.app--dark .mermaid .doneText0,.app--dark .mermaid .doneText1,.app--dark .mermaid .doneText2,.app--dark .mermaid .doneText3{fill:#323d47!important}.app--dark .mermaid .crit0,.app--dark .mermaid .crit1,.app--dark .mermaid .crit2,.app--dark .mermaid .crit3{stroke:#e83737;fill:#e83737;stroke-width:2}.app--dark .mermaid .activeCrit0,.app--dark .mermaid .activeCrit1,.app--dark .mermaid .activeCrit2,.app--dark .mermaid .activeCrit3{stroke:#e83737;fill:#81b1db;stroke-width:2}.app--dark .mermaid .doneCrit0,.app--dark .mermaid .doneCrit1,.app--dark .mermaid .doneCrit2,.app--dark .mermaid .doneCrit3{stroke:#e83737;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.app--dark .mermaid .activeCritText0,.app--dark .mermaid .activeCritText1,.app--dark .mermaid .activeCritText2,.app--dark .mermaid .activeCritText3,.app--dark .mermaid .doneCritText0,.app--dark .mermaid .doneCritText1,.app--dark .mermaid .doneCritText2,.app--dark .mermaid .doneCritText3{fill:#323d47!important}.app--dark .mermaid .titleText{text-anchor:middle;font-size:18px;fill:#323d47}.app--dark .mermaid g.classGroup text{fill:purple;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:10px}.app--dark .mermaid g.classGroup rect{fill:#bdd5ea;stroke:purple}.app--dark .mermaid g.classGroup line{stroke:purple;stroke-width:1}.app--dark .mermaid .classLabel .box{stroke:none;stroke-width:0;fill:#bdd5ea;opacity:.5}.app--dark .mermaid .classLabel .label{fill:purple;font-size:10px}.app--dark .mermaid .relation{stroke:purple;stroke-width:1;fill:none}.app--dark .mermaid #compositionEnd,.app--dark .mermaid #compositionStart{fill:purple;stroke:purple;stroke-width:1}.app--dark .mermaid #aggregationEnd,.app--dark .mermaid #aggregationStart{fill:#bdd5ea;stroke:purple;stroke-width:1}.app--dark .mermaid #dependencyEnd,.app--dark .mermaid #dependencyStart,.app--dark .mermaid #extensionEnd,.app--dark .mermaid #extensionStart{fill:purple;stroke:purple;stroke-width:1}.app--dark .mermaid .branch-label,.app--dark .mermaid .commit-id,.app--dark .mermaid .commit-msg{fill:#d3d3d3;color:#d3d3d3}/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}main{display:block}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}input{overflow:visible}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;display:table;max-width:100%;padding:0;color:inherit;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}details{display:block}summary{display:list-item}menu{display:block}canvas{display:inline-block}[hidden],template{display:none}body,html{color:rgba(0,0,0,.75);font-size:16px;font-family:Lato,Helvetica Neue,Helvetica,sans-serif;font-variant-ligatures:common-ligatures;line-height:1.67;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app--dark .layout__panel--editor,.app--dark .layout__panel--preview{color:hsla(0,0%,100%,.75)}blockquote,dl,ol,p,pre,ul{margin:1.2em 0}h1,h2,h3,h4,h5,h6{margin:1.8em 0;line-height:1.33}h1:after,h2:after{content:"";display:block;position:relative;top:.33em;border-bottom:1px solid hsla(0,0%,50%,.33)}ol ol,ol ul,ul ol,ul ul{margin:0}dt{font-weight:700}a{color:#0c93e4;text-decoration:underline;text-decoration-skip:ink}a:focus,a:hover{text-decoration:none}code,pre,samp{font-family:Roboto Mono,Lucida Sans Typewriter,Lucida Console,monaco,Courrier,monospace;font-size:.85em}code *,pre *,samp *{font-size:inherit}blockquote{color:rgba(0,0,0,.5);padding-left:1.5em;border-left:5px solid rgba(0,0,0,.1)}.app--dark .layout__panel--editor blockquote,.app--dark .layout__panel--preview blockquote{color:hsla(0,0%,100%,.4);border-left-color:hsla(0,0%,100%,.1)}code{background-color:rgba(0,0,0,.05);border-radius:3px;padding:2px 4px}hr{border:0;border-top:1px solid hsla(0,0%,50%,.33);margin:2em 0}pre>code{background-color:rgba(0,0,0,.05);display:block;padding:.5em;-webkit-text-size-adjust:none;overflow-x:auto;white-space:pre}.toc ul{list-style-type:none;padding-left:20px}table{background-color:transparent;border-collapse:collapse;border-spacing:0}td,th{border-right:1px solid #dcdcdc;padding:8px 12px}td:last-child,th:last-child{border-right:0}td{border-top:1px solid #dcdcdc}mark{background-color:#f8f840}kbd{font-family:Lato,Helvetica Neue,Helvetica,sans-serif;background-color:#fff;border:1px solid rgba(63,63,63,.25);border-radius:3px;box-shadow:0 1px 0 rgba(63,63,63,.25);color:#333;display:inline-block;font-size:.8em;margin:0 .1em;padding:.1em .6em;white-space:nowrap}abbr[title]{border-bottom:1px dotted #777;cursor:help}img{max-width:100%}.task-list-item{list-style-type:none}.task-list-item-checkbox{margin:0 .2em 0 -1.3em}.footnote{font-size:.8em;position:relative;top:-.25em;vertical-align:top}.page-break-after{page-break-after:always}.abc-notation-block{overflow-x:auto!important}.stackedit__html{margin-bottom:180px;margin-left:auto;margin-right:auto;padding-left:30px;padding-right:30px;max-width:750px}.stackedit__toc ul{padding:0}.stackedit__toc ul a{margin:.5rem 0;padding:.5rem 1rem}.stackedit__toc ul ul{color:#888;font-size:.9em}.stackedit__toc ul ul a{margin:0;padding:.1rem 1rem}.stackedit__toc li{display:block}.stackedit__toc a{display:block;color:inherit;text-decoration:none}.stackedit__toc a:active,.stackedit__toc a:focus,.stackedit__toc a:hover{background-color:rgba(0,0,0,.075);border-radius:3px}.stackedit__left{position:fixed;display:none;width:250px;height:100%;top:0;left:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:none}@media (min-width:1060px){.stackedit__left{display:block}}.stackedit__right{position:absolute;right:0;top:0;left:0}@media (min-width:1060px){.stackedit__right{left:250px}}.stackedit--pdf blockquote{border-left-color:#ececec}.stackedit--pdf .stackedit__html{padding-left:0;padding-right:0;max-width:none}
</style>
</head>
<body class="stackedit">
<div class="stackedit__html"><h1 id="bill-hamilton">Bill Hamilton</h1>
<h5 id="contact">Contact</h5>
<p><a href="mailto:beiller@gmail.com">beiller@gmail.com</a><br>
647.389.1872<br>
<a href="https://www.linkedin.com/in/bill-hamilton-42b53325/">https://www.linkedin.com/in/bill-hamilton-42b53325/</a></p>
<h2 id="summary">SUMMARY</h2>
<h3 id="technical-leader-full-stack-engineer-ecommerce-focused">Technical Leader, Full Stack Engineer, Seasoned Developer</h3>
<p>20 years of experience. Cloud cost optimizer, machine learning master using Keras and SciPy, open source contributor, and passionate about technology.</p>
<h2 id="development">DEVELOPMENT</h2>
<ul>
<li>Procedural, Object Oriented, and Functional programming languages</li>
<li>Over 20 languages and counting (Top 5: <em>Python, JavaScript, Java, Go, C</em>)</li>
<li>Frameworks such as React, Angular, Keras, Django, Wordpress</li>
<li>PCI Compliance, CASL, Secure Code Review Certified</li>
</ul>
<h2 id="cloud-applications">CLOUD APPLICATIONS</h2>
<ul>
<li>Event driven architecture (Apache Kafka, RabbitMQ, Amazon SQS, S3, Azure Blob Storage)</li>
<li>Microservice APIs using REST based architecture</li>
<li>Cloud (Amazon IaaS, Google Cloud IaaS, Azure PaaS/IaaS, Heroku PaaS)</li>
<li>CI/CD with Jenkins, Git, Bitbucket Pipelines, and Selenium</li>
<li>Docker, Webhook based deployments, Kubernetes and Terraform orchestration</li>
</ul>
<h2 id="monolithic-applications">MONOLITHIC APPLICATIONS</h2>
<ul>
<li>Websphere Commerce, Sterling, MQ, AIX, Oracle, Spring</li>
</ul>
<h2 id="experience">EXPERIENCE</h2>
<h3 id="lcbo">LCBO</h3>
<h4 id="senior-application-developer">Senior Application Developer</h4>
<h5 id="march-2017---present">March 2017 - Present</h5>
<p>Development team lead at LCBO coordinating cloud APIs with beautiful customer focused interfaces, mentoring internal, external, on-shore and off-shore development teams.</p>
<ul>
<li>Leading e-commerce backend and frontend development team of 4 using Java/JSP and Javascript</li>
<li>Performing code reviews, mentoring development teams, approval of source code changes based on pull request workflows</li>
<li>Leading University of Waterloo co-op teams of 4 using React, Angular, and Ionic with node js backends and TypeScript to build lightweight B2B applications</li>
<li>Lead engineer for LCBO public APIs to query Inventory, B2C Order Placement and B2B Integrations with autoscaling back-ends requiring sub-second response times</li>
<li>Launched cutting edge projects like Foodora courier delivery (B2B Integrations)</li>
<li>Architect and implement cloud based continuous integration pipelines including automated security scans, unit tests, and smoke tests using selenium scripts running in Docker containers</li>
<li>Continuous Deploy of applications to cloud PaaS providers such as Microsoft Azure, Google Cloud Platform, and Amazon Web Services</li>
<li>Integration of cloud technologies with legacy infratructure (Migration to git, Containerization)</li>
</ul>
<h4 id="senior-programmer-analyst">Senior Programmer Analyst</h4>
<h5 id="march-2011---march-2017-6-years-1-month">March 2011 - March 2017 (6 years 1 month)</h5>
<ul>
<li>Lead Developr of of LCBO Mobile App (2016 Android / IOS)</li>
<li>Java, J2EE development</li>
<li>SQL Mastery in Oracle PL/SQL, Teradata, DB2, Postgres, MySQL</li>
<li>Informatica, Sales forcasting, Demand chain and supply chain applications, chemical lab software and equipment support</li>
<li>Mentoring team members</li>
<li>Mobile B2B applications for tracking products and inventory management</li>
</ul>
<h3 id="citydirect-dot-info">CityDirect dot info</h3>
<h4 id="senior-application-developer-1">Senior Application Developer</h4>
<h5 id="september-2007---march-2011-3-years-7-months">September 2007 - March 2011 (3 years 7 months)</h5>
<ul>
<li>Cloud based telephony systems, advanced CRM data engineering to enable marketing teams</li>
<li>MySQL and Postgres Distributed Data Architecture (replication, clustering)</li>
<li>Lead Application Developer using PHP and Python</li>
<li>Networks (advanced routing and load balancing)</li>
<li>Web crawling, CRM applications, user interface design and optimization, application development and life cycles</li>
<li>Writing great documentation</li>
</ul>
<h3 id="honda-of-america-mfg.-inc.">Honda of America Mfg., Inc.</h3>
<h4 id="operations-help-desk">Operations Help Desk</h4>
<h5 id="may-2005---september-2005-5-months">May 2005 - September 2005 (5 months)</h5>
<ul>
<li>Supporting AIX assembly line systems</li>
<li>Troubleshooting various PC problems remotely</li>
<li>Help desk operations</li>
</ul>
<h3 id="bell-canada">Bell Canada</h3>
<h4 id="sap-administrator">SAP Administrator</h4>
<h5 id="june-2004---september-2004-4-months">June 2004 - September 2004 (4 months)</h5>
<ul>
<li>SAP Data cleanup and administration</li>
</ul>
<h2 id="education">EDUCATION</h2>
<ul>
<li>Certificate in Project Management, University of Toronto, Toronto ON (2014)</li>
<li>Honours Bachelor of Computer Science, Laurentian University, Sudbury ON (2008)</li>
<li>Computer Programmer Diploma, Georgian College, Barrie ON (2005)</li>
</ul>
<h2 id="certifications">CERTIFICATIONS</h2>
<ul>
<li>ITIL Foundation (AXELOS March 2019)</li>
<li>Software Development Security (Cybrary Sep 2018)</li>
<li>Secure Coding (Cybrary Sep 2017)</li>
<li>Cisco Certified Network Associate, CompTIA A+, Informatica PowerCenter, Teradata Physical Database Design, First Aid</li>
</ul>
<h2 id="additional-projects">ADDITIONAL PROJECTS</h2>
<ul>
<li>Containerizing PyTorch machine learning facial reconstruction application <a href="https://github.com/beiller/3DDFA">https://github.com/beiller/3DDFA</a></li>
<li>Ammo.js - A WASM compiled port of Bullet physics library to Javascript contributor <a href="https://github.com/beiller/ammo.js">https://github.com/beiller/ammo.js</a></li>
<li>C++ port of liquibooks to Python, an order matching engine <a href="https://github.com/beiller/python-liquibook">https://github.com/beiller/python-liquibook</a></li>
<li>Sparechange dot io alternative monetization platform</li>
</ul>
</div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment