<?xml-stylesheet href="/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0"><channel><title>gwenn le bihan's blog</title><description>articles about web dev, art, and more random stuff</description><link>https://en.gwen.works/</link><language>en-us</language><item><title>On Applying Repeated Operators to the Empty Set</title><link>https://en.gwen.works/blog/on-applying-repeated-operators-to-the-empty-set/</link><guid isPermaLink="true">https://en.gwen.works/blog/on-applying-repeated-operators-to-the-empty-set/</guid><description>&lt;p&gt;This is a sort of “theorem” that I made up in my mind has been itching me since my years in higher math education.&lt;/p&gt;
&lt;h2 id="context"&gt;Context&lt;/h2&gt;
&lt;p&gt;Let &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;E&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; a set and &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;o \in E^2 \to E&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5782em;vertical-align:-0.0391em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;∈&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.8141em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.8141em;"&gt;&lt;span style="top:-3.063em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;→&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, such that &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;(E, o)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; forms a &lt;a href="https://en.wikipedia.org/wiki/Monoid"&gt;monoid&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We then define &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal O&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; as the &lt;em&gt;repeated variant&lt;/em&gt; of the binary operator &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;o&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;:&lt;/p&gt;
&lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML" display="block"&gt;&lt;semantics&gt;&lt;mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mi mathvariant="double-struck"&gt;N&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;/mrow&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;/mrow&gt;&lt;mo&gt;↦&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/msub&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mo&gt;…&lt;/mo&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{align*}
\mathcal O : E^\mathbb N &amp;#x26;\to E \\
 (a_n)_n &amp;#x26;\mapsto a_0\ o\ a_1\ o\ a_2\ o\ \ldots\ o\ a_n
\end{align*}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:3.0552em;vertical-align:-1.2776em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mtable"&gt;&lt;span class="col-align-r"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.7776em;"&gt;&lt;span style="top:-3.8824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;:&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.8952em;"&gt;&lt;span style="top:-3.113em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathbb mtight"&gt;N&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-2.3824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.1514em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose"&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.1514em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.2776em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="col-align-l"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.7776em;"&gt;&lt;span style="top:-3.8824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;→&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-2.3824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;↦&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3011em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3011em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3011em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="minner"&gt;…&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.1514em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.2776em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;using an infix notation for &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;o&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, defined as you would expect: &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi&gt;B&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;A\ o\ B = o(A, B)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05017em;"&gt;B&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05017em;"&gt;B&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;This is why we need &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;(E, o)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; to be a monoid, instead of a unital magma: we need the operator to be associative, so that the repeated application of the operator is well-defined.&lt;/p&gt;
&lt;p&gt;Note how repeated operators have their argument in a sequence space instead of a set. This is because:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;we need to &lt;em&gt;iterate&lt;/em&gt; over the elements, which requires a well-defined order on the elements (otherwise, we would need &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;o&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; to be commutative and therefore &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;(E, o)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; to be a group instead of just a monoid)&lt;/li&gt;
&lt;li&gt;We also want to be able to represent repeated operations on duplicates, which sets cannot represent.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="theorem"&gt;Theorem&lt;/h2&gt;
&lt;p&gt;For any repeated operator &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal O&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;:&lt;/p&gt;
&lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML" display="block"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;unit&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal O(()) = \operatorname{unit} E&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="mopen"&gt;((&lt;/span&gt;&lt;span class="mclose"&gt;))&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mord mathrm"&gt;unit&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;where &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;unit&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\operatorname{unit} E&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mord mathrm"&gt;unit&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is the unit element of the monoid &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;(E, o)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;h2 id="application-to--and"&gt;Application to ∀ and ∃&lt;/h2&gt;
&lt;p&gt;This looks really abstract right now, but consider the two statements that we (at least in France) are told to be “self-evident”:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For any proposition &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.08222em;"&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;∀&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi mathvariant="script"&gt;P&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\forall e \in \emptyset,\ \mathcal P(e)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.7335em;vertical-align:-0.0391em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∀&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;∈&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∅&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.08222em;"&gt;P&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is true&lt;/li&gt;
&lt;li&gt;For any proposition &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.08222em;"&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;∃&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi mathvariant="script"&gt;P&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\exists e \in \emptyset,\ \mathcal P(e)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.7335em;vertical-align:-0.0391em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∃&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;∈&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∅&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.08222em;"&gt;P&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is false&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;∀&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\forall&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6944em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∀&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (resp. &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;∃&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\exists&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6944em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∃&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;) are just syntactic sugar for the repeated variants of the logical and &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\land&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∧&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (resp. logical or &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\lor&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∨&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;) operators. So, in fact, the two statements are equivalent to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For any proposition &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.08222em;"&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;⋀&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mi mathvariant="script"&gt;P&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\bigwedge_{e \in \emptyset} \mathcal P(e)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1.0886em;vertical-align:-0.3386em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mop op-symbol small-op" style="position:relative;top:0em;"&gt;⋀&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.2253em;"&gt;&lt;span style="top:-2.4003em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;e&lt;/span&gt;&lt;span class="mrel mtight"&gt;∈&lt;/span&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3386em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.08222em;"&gt;P&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is true&lt;/li&gt;
&lt;li&gt;For any proposition &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;P&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal P&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.08222em;"&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;⋁&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mi mathvariant="script"&gt;P&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\bigvee_{e \in \emptyset} \mathcal P(e)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1.0886em;vertical-align:-0.3386em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mop op-symbol small-op" style="position:relative;top:0em;"&gt;⋁&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.2253em;"&gt;&lt;span style="top:-2.4003em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;e&lt;/span&gt;&lt;span class="mrel mtight"&gt;∈&lt;/span&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3386em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.08222em;"&gt;P&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is false&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, we can prove these statements with the preceding theorem:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;⋀&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\bigwedge&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mop op-symbol small-op" style="position:relative;top:0em;"&gt;⋀&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is the repeated variant of &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\land&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∧&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;{&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊤&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊥&lt;/mi&gt;&lt;mo stretchy="false"&gt;}&lt;/mo&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;(\{\top, \bot\}, \land)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;({&lt;/span&gt;&lt;span class="mord"&gt;⊤&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊥&lt;/span&gt;&lt;span class="mclose"&gt;}&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∧&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is a monoid:
&lt;ul&gt;
&lt;li&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\land&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∧&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is a binary operation on &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;{&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊤&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊥&lt;/mi&gt;&lt;mo stretchy="false"&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\{\top, \bot\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;{&lt;/span&gt;&lt;span class="mord"&gt;⊤&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊥&lt;/span&gt;&lt;span class="mclose"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\land&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∧&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is associative: &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;a \land (b \land c) = (a \land b) \land c&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;∧&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal"&gt;b&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;∧&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;c&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;∧&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;b&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;∧&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;c&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\land&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∧&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; has a unit element &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;⊤&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\top&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6944em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊤&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (as &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊤&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;a \land \top = a&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;∧&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6944em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊤&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; for any &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;a&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;) and &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;⊤&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mo stretchy="false"&gt;{&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊤&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊥&lt;/mi&gt;&lt;mo stretchy="false"&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\top \in \{\top, \bot\}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.7335em;vertical-align:-0.0391em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊤&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;∈&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;{&lt;/span&gt;&lt;span class="mord"&gt;⊤&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊥&lt;/span&gt;&lt;span class="mclose"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;unit&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mo stretchy="false"&gt;{&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊤&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊥&lt;/mi&gt;&lt;mo stretchy="false"&gt;}&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊤&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\operatorname{unit} \{\top, \bot\} = \top&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mord mathrm"&gt;unit&lt;/span&gt;&lt;/span&gt;&lt;span class="mopen"&gt;{&lt;/span&gt;&lt;span class="mord"&gt;⊤&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊥&lt;/span&gt;&lt;span class="mclose"&gt;}&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6944em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊤&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Therefore, &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;⋀&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊤&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\bigwedge(()) = \top&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mop op-symbol small-op" style="position:relative;top:0em;"&gt;⋀&lt;/span&gt;&lt;span class="mopen"&gt;((&lt;/span&gt;&lt;span class="mclose"&gt;))&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6944em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊤&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;h2 id="adapting-conventional-set-notation"&gt;Adapting conventional set notation&lt;/h2&gt;
&lt;p&gt;You’ll have noticed how the previous statement is kind of akwardly written: we say &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;…&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal O(()) = \ldots&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="mopen"&gt;((&lt;/span&gt;&lt;span class="mclose"&gt;))&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.123em;"&gt;&lt;/span&gt;&lt;span class="minner"&gt;…&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; instead of the much more usual notations, &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;…&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal O_{a \in \emptyset} a = \ldots&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.9024em;vertical-align:-0.2191em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3448em;"&gt;&lt;span style="top:-2.5198em;margin-left:-0.0278em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;a&lt;/span&gt;&lt;span class="mrel mtight"&gt;∈&lt;/span&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.2191em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.123em;"&gt;&lt;/span&gt;&lt;span class="minner"&gt;…&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; or &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;…&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal O_{\emptyset} = \ldots&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.9024em;vertical-align:-0.2191em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3448em;"&gt;&lt;span style="top:-2.5198em;margin-left:-0.0278em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.2191em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.123em;"&gt;&lt;/span&gt;&lt;span class="minner"&gt;…&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;This is because we decided to model the repeated operators as functions over sequences, instead of sets.&lt;/p&gt;
&lt;p&gt;But, as long as the set is ordered, we can trivially adapt the notation:&lt;/p&gt;
&lt;p&gt;Let &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;(E, \geq)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;≥&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; an ordered set and &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;o&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; a binary operator such that &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;(E, o)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; forms a monoid.&lt;/p&gt;
&lt;p&gt;We define the set-to-sequence function &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;seq&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\operatorname{seq}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.625em;vertical-align:-0.1944em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mord mathrm"&gt;seq&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; as:&lt;/p&gt;
&lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML" display="block"&gt;&lt;semantics&gt;&lt;mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;seq&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mi mathvariant="script"&gt;P&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;/mrow&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mi mathvariant="double-struck"&gt;N&lt;/mi&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;/mrow&gt;&lt;mo&gt;↦&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;{&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy="false"&gt;}&lt;/mo&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;/mrow&gt;&lt;mo&gt;↦&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;{&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy="false"&gt;}&lt;/mo&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;/mrow&gt;&lt;mo&gt;↦&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;seq&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;{&lt;/mo&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;∣&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo&gt;&amp;#x3C;&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy="false"&gt;}&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;⊔&lt;/mo&gt;&lt;mo stretchy="false"&gt;{&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy="false"&gt;}&lt;/mo&gt;&lt;mo&gt;⊔&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;seq&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;{&lt;/mo&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;∣&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo&gt;≥&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mo stretchy="false"&gt;}&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{align*}
\operatorname{seq} : \mathcal P(E) &amp;#x26;\to E^\mathbb N \\
\emptyset &amp;#x26;\mapsto () \\
\{a\} &amp;#x26;\mapsto (a) \\
\{a\} \cup A &amp;#x26;\mapsto \operatorname{seq}(\{ e \in A | e \lt a \}) \sqcup \{a\} \sqcup \operatorname{seq}(\{ e \in A | e \geq a \})
\end{align*}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:6.0552em;vertical-align:-2.7776em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mtable"&gt;&lt;span class="col-align-r"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:3.2776em;"&gt;&lt;span style="top:-5.3824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mop"&gt;&lt;span class="mord mathrm"&gt;seq&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;:&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.08222em;"&gt;P&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-3.8824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-2.3824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mopen"&gt;{&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="mclose"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-0.8824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mopen"&gt;{&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="mclose"&gt;}&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;∪&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:2.7776em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="col-align-l"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:3.2776em;"&gt;&lt;span style="top:-5.3824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;→&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.8952em;"&gt;&lt;span style="top:-3.113em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathbb mtight"&gt;N&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-3.8824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;↦&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-2.3824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;↦&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-0.8824em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;↦&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mord mathrm"&gt;seq&lt;/span&gt;&lt;/span&gt;&lt;span class="mopen"&gt;({&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;∈&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mord"&gt;∣&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;&amp;#x3C;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="mclose"&gt;})&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⊔&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;{&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="mclose"&gt;}&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⊔&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mord mathrm"&gt;seq&lt;/span&gt;&lt;/span&gt;&lt;span class="mopen"&gt;({&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;∈&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mord"&gt;∣&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;≥&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="mclose"&gt;})&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:2.7776em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;You’ll notice that &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;seq&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\operatorname{seq}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.625em;vertical-align:-0.1944em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mord mathrm"&gt;seq&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is basically a &lt;a href="https://en.wikipedia.org/wiki/Quicksort"&gt;quicksort&lt;/a&gt; algorithm.&lt;/p&gt;
&lt;p&gt;The interesting thing to note though, is that the function is &lt;em&gt;not&lt;/em&gt; bijective, as converting a sequence back to a set would require dropping duplicates. But most usages of repeated operators don’t operate on duplicate elements anyways.&lt;/p&gt;
&lt;p&gt;With that said, we can overload the notation of &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal O&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; to accept sets:&lt;/p&gt;
&lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML" display="block"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;∀&lt;/mi&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi mathvariant="script"&gt;P&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mspace width="1em"&gt;&lt;/mspace&gt;&lt;msub&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;:&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;seq&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\forall P \in \mathcal P(E), \quad \mathcal O_P := \mathcal O(\operatorname{seq}(P))&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.7335em;vertical-align:-0.0391em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∀&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.13889em;"&gt;P&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;∈&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.08222em;"&gt;P&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:1em;"&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3283em;"&gt;&lt;span style="top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight" style="margin-right:0.13889em;"&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;:=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mord mathrm"&gt;seq&lt;/span&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.13889em;"&gt;P&lt;/span&gt;&lt;span class="mclose"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;Then, we can finally state:&lt;/p&gt;
&lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML" display="block"&gt;&lt;semantics&gt;&lt;mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;munder&gt;&lt;mo&gt;⋀&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/munder&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊤&lt;/mi&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;munder&gt;&lt;mo&gt;⋁&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/munder&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊥&lt;/mi&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{align*}
\bigwedge_\emptyset &amp;#x26;= \top \\
\bigvee_\emptyset &amp;#x26;= \bot
\end{align*}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:5.4598em;vertical-align:-2.4799em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mtable"&gt;&lt;span class="col-align-r"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:2.9799em;"&gt;&lt;span style="top:-4.9799em;"&gt;&lt;span class="pstrut" style="height:3.05em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mop op-limits"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.05em;"&gt;&lt;span style="top:-1.809em;margin-left:0em;"&gt;&lt;span class="pstrut" style="height:3.05em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-3.05em;"&gt;&lt;span class="pstrut" style="height:3.05em;"&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="mop op-symbol large-op"&gt;⋀&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.3799em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-2.25em;"&gt;&lt;span class="pstrut" style="height:3.05em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mop op-limits"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.05em;"&gt;&lt;span style="top:-1.809em;margin-left:0em;"&gt;&lt;span class="pstrut" style="height:3.05em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-3.05em;"&gt;&lt;span class="pstrut" style="height:3.05em;"&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="mop op-symbol large-op"&gt;⋁&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.3799em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:2.4799em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="col-align-l"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:2.9799em;"&gt;&lt;span style="top:-4.9799em;"&gt;&lt;span class="pstrut" style="height:3.05em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊤&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-2.25em;"&gt;&lt;span class="pstrut" style="height:3.05em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊥&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:2.4799em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;h2 id="proof"&gt;Proof&lt;/h2&gt;
&lt;p&gt;The proof is actually reaaaally trivial, that’s why I put “theorem” in quotes in the introduction. It’s more of a way to have fun with (excessive?) formalization of simple things haha&lt;/p&gt;
&lt;p&gt;Anyway, here is the proof.&lt;/p&gt;
&lt;p&gt;Let &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;E&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; a set and &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mo&gt;→&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;o \in E^2 \to E&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5782em;vertical-align:-0.0391em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;∈&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.8141em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.8141em;"&gt;&lt;span style="top:-3.063em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;→&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; such that &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;(E, o)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is a monoid. Let &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal O&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; be the repeated variant of &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;o&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; and &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;e&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; the unit element of &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;(E, o)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.1667em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proof by contradiction.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Assume that &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo mathvariant="normal"&gt;≠&lt;/mo&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal O(()) \neq e&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="mopen"&gt;((&lt;/span&gt;&lt;span class="mclose"&gt;))&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;&lt;span class="mrel"&gt;&lt;span class="mord vbox"&gt;&lt;span class="thinbox"&gt;&lt;span class="rlap"&gt;&lt;span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"&gt;&lt;/span&gt;&lt;span class="inner"&gt;&lt;span class="mord"&gt;&lt;span class="mrel"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="fix"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Then:&lt;/p&gt;
&lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML" display="block"&gt;&lt;semantics&gt;&lt;mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;⊔&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel="0" displaystyle="true"&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;annotation encoding="application/x-tex"&gt;\begin{align*}
    \mathcal O((a_1)) &amp;#x26;= \mathcal O((a_1) \sqcup ()) \\
                      &amp;#x26;= a_1\ o\ \mathcal O(()) \\
\end{align*}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:3em;vertical-align:-1.25em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mtable"&gt;&lt;span class="col-align-r"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.75em;"&gt;&lt;span style="top:-3.91em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="mopen"&gt;((&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3011em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-2.41em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.25em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="col-align-l"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.75em;"&gt;&lt;span style="top:-3.91em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="mopen"&gt;((&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3011em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⊔&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2222em;"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mclose"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="top:-2.41em;"&gt;&lt;span class="pstrut" style="height:3em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3011em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="mopen"&gt;((&lt;/span&gt;&lt;span class="mclose"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:1.25em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;But we also have, by definition: &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mtext&gt; &lt;/mtext&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal O((a_1)) = a_1 = a_1\ o\ e&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="mopen"&gt;((&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3011em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose"&gt;))&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5806em;vertical-align:-0.15em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3011em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5806em;vertical-align:-0.15em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;a&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3011em;"&gt;&lt;span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.15em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord mathnormal"&gt;o&lt;/span&gt;&lt;span class="mspace"&gt; &lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;We thus have &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;e = \mathcal O(())&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="mopen"&gt;((&lt;/span&gt;&lt;span class="mclose"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, which is a contradiction.&lt;/p&gt;
&lt;p&gt;So, &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="script"&gt;O&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathcal O(()) = e&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1em;vertical-align:-0.25em;"&gt;&lt;/span&gt;&lt;span class="mord mathcal" style="margin-right:0.02778em;"&gt;O&lt;/span&gt;&lt;span class="mopen"&gt;((&lt;/span&gt;&lt;span class="mclose"&gt;))&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;e&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;h2 id="applications"&gt;Applications&lt;/h2&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Operation&lt;/th&gt;&lt;th&gt;Application&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;+&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6667em;vertical-align:-0.0833em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;∑&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\sum_\emptyset = 0&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1.0886em;vertical-align:-0.3386em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mop op-symbol small-op" style="position:relative;top:0em;"&gt;∑&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.2253em;"&gt;&lt;span style="top:-2.4003em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3386em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6444em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\cdot&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4445em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⋅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;∏&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\prod_\emptyset = 1&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1.0886em;vertical-align:-0.3386em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mop op-symbol small-op" style="position:relative;top:0em;"&gt;∏&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.2253em;"&gt;&lt;span style="top:-2.4003em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3386em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6444em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\max&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;max&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;/mrow&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∞&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\max_\emptyset = -\infty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6497em;vertical-align:-0.2191em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mop"&gt;max&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3448em;"&gt;&lt;span style="top:-2.5198em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.2191em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6667em;vertical-align:-0.0833em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;−&lt;/span&gt;&lt;span class="mord"&gt;∞&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\min&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6679em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;min&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mrow&gt;&lt;mi&gt;min&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;/mrow&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∞&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\min_\emptyset = \infty&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.887em;vertical-align:-0.2191em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mop"&gt;min&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3448em;"&gt;&lt;span style="top:-2.5198em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.2191em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.4306em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∞&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∧&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\land&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∧&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;∀&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊤&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\forall \emptyset = \top&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.8056em;vertical-align:-0.0556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∀∅&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6944em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊤&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∨&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\lor&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∨&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;∃&lt;/mi&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;⊥&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\exists \emptyset = \bot&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.8056em;vertical-align:-0.0556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∃∅&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6944em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;⊥&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∪&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\cup&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∪&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;⋃&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\bigcup_\emptyset = \emptyset&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1.0886em;vertical-align:-0.3386em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mop op-symbol small-op" style="position:relative;top:0em;"&gt;⋃&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.2253em;"&gt;&lt;span style="top:-2.4003em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3386em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.8056em;vertical-align:-0.0556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo&gt;∩&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\cap&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.5556em;"&gt;&lt;/span&gt;&lt;span class="mord"&gt;∩&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mo&gt;⋂&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;∅&lt;/mi&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="double-struck"&gt;U&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\bigcap_\emptyset = \mathbb U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:1.0886em;vertical-align:-0.3386em;"&gt;&lt;/span&gt;&lt;span class="mop"&gt;&lt;span class="mop op-symbol small-op" style="position:relative;top:0em;"&gt;⋂&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.2253em;"&gt;&lt;span style="top:-2.4003em;margin-left:0em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;∅&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.3386em;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6889em;"&gt;&lt;/span&gt;&lt;span class="mord mathbb"&gt;U&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;where &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant="double-struck"&gt;U&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\mathbb U&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6889em;"&gt;&lt;/span&gt;&lt;span class="mord mathbb"&gt;U&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is the universe set&lt;/p&gt;</description><pubDate>Wed, 15 May 2024 00:00:00 GMT</pubDate></item><item><title>Making an LSP server in Go</title><link>https://en.gwen.works/blog/making-an-lsp-server-in-go/</link><guid isPermaLink="true">https://en.gwen.works/blog/making-an-lsp-server-in-go/</guid><description>&lt;p&gt;Resources and documentation about implementing an LSP server in Go are surprisingly sparse, so I decided to write my (first!) blog entry about it, after having to go through the source code of some random dependent on &lt;a href="https://pkg.go.dev/go.lsp.dev/protocol"&gt;go.lsp.dev/protocol&lt;/a&gt; to figure out how to implement a simple LSP server.&lt;/p&gt;
&lt;h2 id="the-pieces"&gt;The pieces&lt;/h2&gt;
&lt;p&gt;We’ll be using the &lt;a href="https://go.lsp.dev"&gt;go.lsp.dev&lt;/a&gt; collection of modules to implement our LSP server. These modules include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pkg.go.dev/go.lsp.dev/protocol"&gt;go.lsp.dev/protocol&lt;/a&gt;: A bunch of structs that represent the LSP protocol.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pkg.go.dev/go.lsp.dev/jsonrpc2"&gt;go.lsp.dev/jsonrpc2&lt;/a&gt;: A JSON-RPC 2.0 implementation. The LSP protocol uses JSON-RPC 2.0 for communication.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-boilerplate"&gt;The boilerplate&lt;/h2&gt;
&lt;p&gt;You’ll most likely want to split up your code into &lt;em&gt;at least&lt;/em&gt; two files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;server.go&lt;/code&gt;: Logic (and honestly, mostly boilerplate) for starting the LSP server&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cmd/main.go&lt;/code&gt;: The entrypoint for launching your server with a binary. In the simplest of cases, you might not even need this. If you don’t, put every file in the &lt;code&gt;main&lt;/code&gt; package, and just call &lt;code&gt;StartServer&lt;/code&gt; (see just below) from a &lt;code&gt;main&lt;/code&gt; function in &lt;code&gt;server.go&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;handlers.go&lt;/code&gt;: The actual LSP handlers, you’ll define all the functions that you want to implement there! things like &lt;code&gt;Definition&lt;/code&gt; to implement the “Go to definition” feature, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="servergo"&gt;&lt;code&gt;server.go&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Mostly boilerplate:&lt;/p&gt;
&lt;pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="go"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;package&lt;/span&gt;&lt;span style="color:#B392F0"&gt; yourlsp&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;import&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;context&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;io&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;os&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;path/filepath&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;go.lsp.dev/jsonrpc2&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;go.lsp.dev/protocol&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;go.uber.org/multierr&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;go.uber.org/zap&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#6A737D"&gt;// StartServer starts the language server.&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#6A737D"&gt;// It reads from stdin and writes to stdout.&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;func&lt;/span&gt;&lt;span style="color:#B392F0"&gt; StartServer&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(&lt;/span&gt;&lt;span style="color:#FFAB70"&gt;logger&lt;/span&gt;&lt;span style="color:#F97583"&gt; *&lt;/span&gt;&lt;span style="color:#B392F0"&gt;zap&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Logger&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	conn &lt;/span&gt;&lt;span style="color:#F97583"&gt;:=&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; jsonrpc2.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;NewConn&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(jsonrpc2.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;NewStream&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(&lt;/span&gt;&lt;span style="color:#F97583"&gt;&amp;#x26;&lt;/span&gt;&lt;span style="color:#B392F0"&gt;readWriteCloser&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		reader: os.Stdin,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		writer: os.Stdout,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	}))&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	handler, ctx, err &lt;/span&gt;&lt;span style="color:#F97583"&gt;:=&lt;/span&gt;&lt;span style="color:#B392F0"&gt; NewHandler&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		context.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Background&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		protocol.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;ServerDispatcher&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(conn, logger),&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		logger,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;	if&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; err &lt;/span&gt;&lt;span style="color:#F97583"&gt;!=&lt;/span&gt;&lt;span style="color:#79B8FF"&gt; nil&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		logger.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Sugar&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;().&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Fatalf&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"while initializing handler: &lt;/span&gt;&lt;span style="color:#79B8FF"&gt;%w&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, err)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	conn.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Go&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(ctx, protocol.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;ServerHandler&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		handler, jsonrpc2.MethodNotFoundHandler,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	))&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;	&amp;#x3C;-&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;conn.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Done&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;type&lt;/span&gt;&lt;span style="color:#B392F0"&gt; readWriteCloser&lt;/span&gt;&lt;span style="color:#F97583"&gt; struct&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	reader &lt;/span&gt;&lt;span style="color:#B392F0"&gt;io&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;ReadCloser&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	writer &lt;/span&gt;&lt;span style="color:#B392F0"&gt;io&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;WriteCloser&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;func&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; (&lt;/span&gt;&lt;span style="color:#FFAB70"&gt;r &lt;/span&gt;&lt;span style="color:#F97583"&gt;*&lt;/span&gt;&lt;span style="color:#B392F0"&gt;readWriteCloser&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) &lt;/span&gt;&lt;span style="color:#B392F0"&gt;Read&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(&lt;/span&gt;&lt;span style="color:#FFAB70"&gt;b&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; []&lt;/span&gt;&lt;span style="color:#F97583"&gt;byte&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) (&lt;/span&gt;&lt;span style="color:#F97583"&gt;int&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#F97583"&gt;error&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	n, err &lt;/span&gt;&lt;span style="color:#F97583"&gt;:=&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; r.reader.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Read&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(b)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;	return&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; n, err&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;func&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; (&lt;/span&gt;&lt;span style="color:#FFAB70"&gt;r &lt;/span&gt;&lt;span style="color:#F97583"&gt;*&lt;/span&gt;&lt;span style="color:#B392F0"&gt;readWriteCloser&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) &lt;/span&gt;&lt;span style="color:#B392F0"&gt;Write&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(&lt;/span&gt;&lt;span style="color:#FFAB70"&gt;b&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; []&lt;/span&gt;&lt;span style="color:#F97583"&gt;byte&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) (&lt;/span&gt;&lt;span style="color:#F97583"&gt;int&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#F97583"&gt;error&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;	return&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; r.writer.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Write&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(b)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;func&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; (&lt;/span&gt;&lt;span style="color:#FFAB70"&gt;r &lt;/span&gt;&lt;span style="color:#F97583"&gt;*&lt;/span&gt;&lt;span style="color:#B392F0"&gt;readWriteCloser&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) &lt;/span&gt;&lt;span style="color:#B392F0"&gt;Close&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;() &lt;/span&gt;&lt;span style="color:#F97583"&gt;error&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;	return&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; multierr.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Append&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(r.reader.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Close&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(), r.writer.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Close&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="cmdmaingo"&gt;&lt;code&gt;cmd/main.go&lt;/code&gt;&lt;/h3&gt;
&lt;pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="go"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;package&lt;/span&gt;&lt;span style="color:#B392F0"&gt; main&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;import&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;go.uber.org/zap&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;yourlsp&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;func&lt;/span&gt;&lt;span style="color:#B392F0"&gt; main&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	logger, _ &lt;/span&gt;&lt;span style="color:#F97583"&gt;:=&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; zap.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;NewDevelopmentConfig&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;().&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Build&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#6A737D"&gt;	// Start the server&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	yourlsp.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;StartServer&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(logger)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="handlersgo"&gt;&lt;code&gt;handlers.go&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;That’s were we get to the interesting stuff.&lt;/p&gt;
&lt;p&gt;You first define your own &lt;code&gt;Handler&lt;/code&gt; struct that just embeds the &lt;code&gt;protocol.Server&lt;/code&gt; struct, so that you can implement all the methods.&lt;/p&gt;
&lt;pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="go"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;package&lt;/span&gt;&lt;span style="color:#B392F0"&gt; yourlsp&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;import&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;context&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;go.lsp.dev/protocol&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;go.lsp.dev/uri&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#9ECBFF"&gt;	"&lt;/span&gt;&lt;span style="color:#B392F0"&gt;go.uber.org/zap&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;var&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; log &lt;/span&gt;&lt;span style="color:#F97583"&gt;*&lt;/span&gt;&lt;span style="color:#B392F0"&gt;zap&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Logger&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;type&lt;/span&gt;&lt;span style="color:#B392F0"&gt; Handler&lt;/span&gt;&lt;span style="color:#F97583"&gt; struct&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#B392F0"&gt;	protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Server&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;func&lt;/span&gt;&lt;span style="color:#B392F0"&gt; NewHandler&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(&lt;/span&gt;&lt;span style="color:#FFAB70"&gt;ctx&lt;/span&gt;&lt;span style="color:#B392F0"&gt; context&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Context&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#FFAB70"&gt;server&lt;/span&gt;&lt;span style="color:#B392F0"&gt; protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Server&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#FFAB70"&gt;logger&lt;/span&gt;&lt;span style="color:#F97583"&gt; *&lt;/span&gt;&lt;span style="color:#B392F0"&gt;zap&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Logger&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) (&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Handler&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#B392F0"&gt;context&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Context&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#F97583"&gt;error&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	log &lt;/span&gt;&lt;span style="color:#F97583"&gt;=&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; logger&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#6A737D"&gt;	// Do initialization logic here, including&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#6A737D"&gt;	// stuff like setting state variables&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#6A737D"&gt;	// by returning a new context with&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#6A737D"&gt;	// context.WithValue(context, ...)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#6A737D"&gt;	// instead of just context&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;	return&lt;/span&gt;&lt;span style="color:#B392F0"&gt; Handler&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;{Server: server}, context, &lt;/span&gt;&lt;span style="color:#79B8FF"&gt;nil&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="implementing-stuff"&gt;Implementing stuff&lt;/h2&gt;
&lt;p&gt;Actually implementing functionnality for your LSP consists in defining a method on
your handler struct that has a particular name, as defined in the
&lt;a href="https://pkg.go.dev/go.lsp.dev/protocol#Server"&gt;&lt;code&gt;protocol.Server&lt;/code&gt; interface&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="telling-the-clients-what-feature-we-support-the-initialize-method"&gt;Telling the clients what feature we support: the &lt;code&gt;Initialize&lt;/code&gt; method&lt;/h3&gt;
&lt;p&gt;All LSP servers must implement the &lt;code&gt;Initialize&lt;/code&gt; method, that
returns information on the LSP server, and most importantly, the features it supports.&lt;/p&gt;
&lt;p&gt;The signature of the &lt;code&gt;Initialize&lt;/code&gt; method is:&lt;/p&gt;
&lt;pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="go"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#B392F0"&gt;Initialize&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(ctx context.Context, params &lt;/span&gt;&lt;span style="color:#F97583"&gt;*&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;InitializeParams) (result &lt;/span&gt;&lt;span style="color:#F97583"&gt;*&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;InitializeResult, err &lt;/span&gt;&lt;span style="color:#F97583"&gt;error&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Autocomplete and hover (features of Go’s LSP server, how meta!)
will help you a lot when implementing this:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_="{&amp;#x22;inferSize&amp;#x22;:true,&amp;#x22;src&amp;#x22;:&amp;#x22;data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4QCuRXhpZgAASUkqAAgAAAAHABIBAwABAAAAAQAAABoBBQABAAAAYgAAABsBBQABAAAAagAAACgBAwABAAAAAgAAADEBAgANAAAAcgAAADIBAgAUAAAAgAAAAGmHBAABAAAAlAAAAAAAAAAsAQAAAQAAACwBAAABAAAAR0lNUCAyLjEwLjM2AAAyMDI0OjA0OjI1IDEzOjU4OjAzAAEAAaADAAEAAAABAAAAAAAAAP/hDM9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDQuNC4wLUV4aXYyIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDplOTE1YWY0ZC1lOGM5LTQ1MDAtOGMyMi0yYmQwNjBhZWI4ZWUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MGU4MjM5NDAtMjhhMS00ZGU5LThmMzktNjY4MDAwOWZmYzQ0IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YTBhMzAwMWYtYWI5My00OTgzLTlhZjMtZWFkZjE0ODk3NzI1IiBkYzpGb3JtYXQ9ImltYWdlL2pwZWciIEdJTVA6QVBJPSIyLjAiIEdJTVA6UGxhdGZvcm09IkxpbnV4IiBHSU1QOlRpbWVTdGFtcD0iMTcxNDA0NjI4NDc4NDkyNiIgR0lNUDpWZXJzaW9uPSIyLjEwLjM2IiB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNDowNDoyNVQxMzo1ODowMyswMjowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjQ6MDQ6MjVUMTM6NTg6MDMrMDI6MDAiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6Y2hhbmdlZD0iLyIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NjFhZTcxNC03YWE3LTRkZWQtYWE1Ny0xZWJiNzUyOWVhYWQiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoTGludXgpIiBzdEV2dDp3aGVuPSIyMDI0LTA0LTI1VDEzOjU4OjA0KzAyOjAwIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+ICsElDQ19QUk9GSUxFAAEBAAACoGxjbXMEQAAAbW50clJHQiBYWVogB+gABAAZAAsANwAXYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1sY21zAAAAAAAAAAAAAAAAAAAAAAAAAAAA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LGzrFo0yUx3apbVENOcTPiTtXPSNOw9Kw+Rr4YoDBpGryjirLUJYw04Sw/M8sWdyW8YS2RsSRjCpzFeoUiUlUjKAv4AL1S+3ST7Yxu6wAfm6y/xvXz93SK56y/8AfrXyJTzhmqZINlazjLm68B3MnGGPs2p17BrjjviywiXwXOS6LLVDNWvgttCTEjZvhqTLl6gkTKVRGBlhnvDylUph5eoWPkoFq1y89e1dIKybKgqqeUqjNG6GUR5aqV5Zut27ZJww8vV2Ey1QQ5ZquK1K27ZIFqZbgMhulj8qO9Ur5SHj3y1VhEKO0qv+t+VF6p9Zx3QevMkRRly9Jf43KETWa4ygMv8A361IXK4bFOyCvYr3LcgUrYiGrWvE3mOYNx7M7u04cnssmvVcZLixg7IyQd5RvlILL4vHlqlt1LMiRicGSjjrRRSDbs46uE550OYdDJQkZExlrdSqOCyPHlbLUsWUQjUiTw1vvbYK8LNK5PHW2A1G5CqfuGybDMLK0e47/HdzTp9lanQ7F4VQsUY6n+r+VF6p9X/ozXgyQrQzzHYlK+iettdNslpJMz79HWjra62utH6HK1eITxssYrV487SbR1ufljLe45ORtHRzxrRCVrENHWjppO5JT2z0daOtHWjrR1o60daOtHWjrR1o60daOtHWjrR1o6nUjOUYbI6SWjrR1o60daOtHWjrR1o60daOtHWjrR1o60daOtHWjrR1o60daOtHWjrR1o60daP+4F6pdTs7hoyaJKTbmD/+sieuP+PRv8/qyJhiLYm++QP77xFSyPCLmqGg9rGNWHCFkfje1GaVbUhLVDtVZ47BWhIt1rbQHMoREBTHbBTKFseOLDhI0IE/Ic03XIRck1yEXIRchFyEXIRcpFyzXJNchFyEXIRchFyEXIRchFyEXIRchFGRIxeZHXIRchFykXIRchFERI2uQilIko7ist5lvMtxtd5lvMt5lvMt5lvMuUu7eVSC8zbyreVbyrkMt5VvKt5VvKt5lvMt5VvKt5lvKt5U8ZuXcVbircVbircVbircVbircVbircVbircVbircVbircVbircVbircVbireVbyreVbyreVbyreVbyreVbyreVbyqeWeE6dru20daOtHX9Vo60daOtHWjrR+o/sO2ynfEwmvB4O+BtsZMQl3ooPK4GBYWwkICUzEpEkUP7whYCbljyv7R2O6gDmr2syH+zayBKBS5E8LlSVp8lUNKlUfKWa8J2LdZshmLNY75o++WTtziEtomVBGQbssuVgzyVisq3cafg7P+xhft8kPtMZywJWnMpRHMANWUCGC87V6qcpRMYBadOYiUZwC+ObdD95bjIgMfUlST+0uLIyDRgGdms1oVjHMcxsYM53oM9qvhhhaOHE0PGtIMsEIiliB73x43YmPjIvjW5QY15ObGisPWr9u34Oz/sYX7fIP7fiH9oshLJKtkpd1asm7omU7aJc8EJh5WEy1rc0+W1DXtktUA5JmoeXhJHyR5yhlmnOGUHM4r4zKvkdlWGZ1l5iGgC84vwL1xO4IRgX5B/b8Q/tPRKKAqxiGt1zdybH2pKxhTTjVq2iyJQNMmPxTgaqO6CrXx9wFWnjSVzVcFGD1q0g2RY48S1MdOrbjRuOKxirFuVfGyE/4Mfv+Qf8AiK/VPJPl6jFQLgbLAsjssj3AVVGTTZFLEApWhwrRk04oNgdhTnEUY2ByP9b9CTiKD2xNVjJpxR7Iq0YEiSLki0/rI/8AclkN8hZDUz2WayPJBmLuIM3eC5e/DoDLRK8bgpQhZGVWbzBa1eFSh3gd8bYpE1darV1q61Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1Wq1QPd8dkvBWoSkSkB61jCtZtEy9WEqtSBTRsCfkd7ZFXnZtzDM9x6+OJWuwtGJcaxa2ZOxIoTWrPe4iEy27Vo3HlP+5+mrkWlYLctTv8A6jPKs9m7ZnfYNiyIt6yakNz2HzZ2BYqSsXCwtHldYtl5XjyJVt2rLWgWZxzt8kK2V74hB1eSV/G2zFufUT2RlHHjBVjM9qp3OTHXIOpYqk76vVk1ypTZsSbHT8VkqzcMxkYNqD1MXf8A7ijUn3OOrRZv3vlg+W+Gv7fjdtzVxxCL9uanA9nT4NPgm2prBgVmAYVljGBWaZRDWxbGWxlDaSOxlxstI7obSRaYpG2Mg2a1iXGtjKwUdUOxlDYSGxlsZbGWxbVtW1bVtW1bVtW1bVtW1bVtW1bVtW1XrlfG1f1h+q44rP8A6c/X8sxm9i2LYti2LYti2ILaG+Tdsg2ROW2TLXLWOD/4ydzJnnSIexySy9gQbWatDllrxqUSZosYWM1bDKxmbQivmLHJayN+xi62/g6addP2svbRctcHFuyt4TSsyNEgMlZaBoynGWOMU1qtsqYXIHI5sgMtadTu5WgzPKrv2ZaqXa9GueWPnCdbFSJOtGxKZMDdbuLwSWJ1q4Z2b37WwCNgef8A/iwk7/6O/QF3B51vgH7/AJIIGGpVyww9QcCY6uVExdUqJi6xZlw1I0i46sZWqAbjGwdKwh4EM748IKV/xNXuo0ARADHV60/3T+4+KrWZjFAMD1g2WLQq2HsY+FmfCPSFCtCbVQtIdGsFjVx2YQAOClRrTRa4zPVx1eq7DhEbji8B1hBGWmA43x9WQ5Uq8lGEYv8AgB+75OCTLiIuIi4primuIi4iLimuKa4primuOa4yLjIuMi4prjmuMi4yLjIuOajGcovEjLiIuIi4iKO+aFyFXGRcZEw5s+1bVtW1aLatq2ratqm+luFjuhgY1a3aF3OTjm7MQxtWjnBrHL1MyU5xXrTY4+Ss2MbkonbDntWObytg0CHkS1Us27BQ5K2WFbISvSq2J1sTHJ2a84ZG1ZQ9+z8CP3fgReuf368MeOAYj+a0QVcpWAyAWiGdmdSwZw4+KnKlI5S052xAoinItCdGA6DMTtC1ZtTnH/xzQr2KVaQLdKu1VqFUgJUKoRwpDrsKjFDLSGTydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqLydReTqKqcdgnycbLYy2MtjLYy2MuNlsZbGXGy42XGy2MtjLYy2MtjLYy42WxlsZCi3HKLfA/x/rB/+sSjGgj0W7auIPaTxEmKLHQjTkCPYWcdKsxaQ+4NVgC9Oi8rb4ycUGiKMSY54RnjpwEWlMSPS1sTxf8Ax8ZPcUfFP8F+j/8AV+LRaftheuX2+t/j/WH+sKyOUp2BjHXKF6r5pptKxrTiWv2B7wyvYsAViVYtg1ysQ1q9Awz5WTsY7TrkvClGxehYqyt1okDkRVmPfYkfwf6O/wBT8CL1y6v9ucjTGaUp9H+O0EdgkoU5SEOnI92NSi461IkePFSK1fG8tQlC28AYw0B9kUDQx0apxUAwsPiqtmVanG61bGuf/wAVxiegV4Axkhiq40ysioga22Mx8HDjYmYGNkXxtReNqLxtReNqLxtReMqLxlReMqLxlReMqLxlReMqLxlReNqLxtReNqLxtReNqLxtReNqLxlReMqLxlReMqLxlReMqLxlReMqLxlReMqLxtRVQDAT8CL1S+gcZxgAbsbo/wBviL7YzhjhVqsSWcrCRKuaG8j2P+Zq9OTXIDNboV6THFTgLHYyhvII2osbbnttWrDQyYAz55VCtjLOMl43J148cxGHXvC7PGZKPJDtJvdx1WMfwA/d8Wq1Wq3Lcy3MtzLcy3MtzLcy1ZarVa/CL1S6/ZRPCcmI0pdH+3xE91myGuwLQrTWLYKqiEEyxHGLwsiKTXrOcRst7NKViEDqc2HAFsFrqc467TnEcPwI/d+AZC9UvohumqcZDN0f4yM3NRkYAuHdlc3p2uTcj3+4lxNJoZiFm3485z030M0bY9Y5Kb6tGNixYltywSk5t04Y0orMalwPai7uVOFmBBYrMx7mDEsEu44MjF/fj934BkL1S+B/jn7j4utYIEUARsU69xdnXZQxVaB51xzI1CtF3qid41Aji9YUovj6shkpVyiJjqpitUBAvah2zGOYyigcbVhRFYpgtKePqlZ6oXNCER/gB+78AyF6pdXbVnrwkq8OEvR/jnLW3Cz3Iwc9e3mTjFdbL2wDI9i5lBZk5bYMhbek2btcRMjYDO3kLVKMsrZ4btjlsgs3i2BZCxIlTJEskr2J06U8jaonhk7RmDycf4Ifu/AMheuX0MOLQGGAur/HP3FxZGQKEAkNTHYK+IimrRazDGxEcdMYqkcTFgnxo7E5YppQfG6wq48VSQq8RGHixjsBx4wGhh4xj4iLoePjH8IP3fgReuX0TIQSrzk8+j/HN/74MjLJKtkp91aPZ72GchwTycImnkxQED9QAM/mhxHZzEh0yZThJLKTJTuZSNSUMwzWaxiyvDvbTWM3xitZiUKRrliUg5jUZsyIKfJDZQsv5LzseV8wOAq1nuP3o/d+BF65ddVwf2RDlGfyy/pYsUSjiOsYhbILPeth7IADq2a1g+MsyXgivCGGIwbOOnYTVrJjloWu0ywrLRfGlkDgNDIdlZKUVW3kCWcdM7GoEvl7PZcvY6wWT455ZV69qWQJiLRwxxE+3b96P3fgX/UfA9TO96fo7/0Y5OQJpTJ8pPdPIbpCyDOa1f7c0MhXmOdoIyPYE0RX6x3jerTifK1gVCZQLQBZieMslUg48lXJZa0GRoZGMhByoyO1wDjhYEVWb0AtcyAKA+6BytbA5f34vd+BF6pfbqKDxVeDwH8pPdCUMeOtWYli4btsn2xA12bgt2Ik2wx5trVXnWu1ZlRzhsgsvYanYxzwsCBOIgAlzl3tKzjJeNyVZowkMo618XZ4vJf3ItTn3uOqtH8AP3fgReqXXXRmtDd4HgX5ie6xZFXYFodpjWBVotJpNOcRxTEjKTyaLckeMJY2BOAUiluV68+oDwsKMoyl+EH7vwDoXql9E/7gaz6n6N8ZPdRkYAYj3ZWzt8taJDZfZ7Iq5LJLlS0SBIVxzpYsIfGVyysUqu62UPcZB61WRLgCzcmOMQ9rlkKjYaVQ4omm4B8IvwQ/d+AdC9Uvp1WvRvv8R32EPTpWSCkAMD9tZjOFQrlHTPPjqOXUCFGqB2BSaEa1CI49vBDeuNNMEZNGqxta+o6tAKiCjAce1G3ONc41zjXONc41zjXONc41zjXONc41zjXONc41zjXONc41zjXONc41zjXONc41zDXMNcw1zDXMNcw1zDXMNcw1zDXMNc40F9xPwDoXql1dtW4IyVf/AI2ekfv8jxaUYxaLdIjjB1OESRaLM0BxFH6BU64GnUAQfSVMBCKFKuKfR4tLrsju2Mz9NrMzNtZSHGb9IihCXHHenZpN+OdC9cvo4o7BhgJ+kfv/ACGSF65fbpJ9IjuSZq5HefSP3/kMkL1S+3SUd0e1eTCC8JdG+/8AIXQvVL7dHfRhWXm4C80Fom+/8hdC9Uus2eUK4eOdVptDo38idC9Uvt1jZHJDPAr9G/kToXql9uhPWKcIqtNjT/kovXL7fxP/xAA1EQABAwIEBAUEAQMEAwAAAAABAAIRAwQSFCFSECAxQRMwQFBgIjJRYUIFMzQjcYGRQ3CQ/9oACAEDAQE/AfkcfLJ9kHwaFCj2QfBR8sHy2fbHUntExwiURHONeQBZik5/htOqleKMJceyxtwYwsQiU6qxhglPqFhAjqj+13jgNeYc/dShr6Aa6BA8TpxHVDUoe1ftPdiqsTAWAf7lAkiR1VbHi/1OqPRdeVnU8nQIPpm5e38hU2No4T+U00qlOoxqa+i2gWKq+nVptATao8JjvwVcVGeKzEnGnUufp7KgxprS52qiEOTsV2Q5ux4jQ8e4R6c3cJ3QI8D1CPVDQghdFOnB3TgV0Kb1Q4HROEtK6n2YBO1Q1WI8OqKKjhHCOBX6X7WFBoQb2hFsdlA/CgcD6qOY+SNPaYR0QXVAod12UaImQnHQcJUqV+OB4OMNWOse6/1RTL8Sd4oa36uqx1NG4kNBB9vlT7KbcZYV8X/HPKIXZTzHXiLemFgbhwp1NrhhKFFjYjso+KlxIjmp0g8EkxCZbNeMWJeCwU9TqhR/JRt2TBcqlAM+0zwnjOkqCtOy/ClDVBDpK7TwJgrugZU8DxaPq1U+zypUqfZWvwtLfyqdZrG4XNlNqtiHNlZgRq1GticHR0RrTOihRwlRpCJK07L8KEF0Q6Qu3AiSu6GnE8ZUfDKdBmCFVADobyjrHOdF3R5IU6TyjrzfrmOi/S7oan2OFCj17KsMwyqhaRpyjrPMUV3R5Y5Rpzd55jqu8qdUNDPsx9QTCFxTPdU7ilUdhaUyo41izt6OPVx72/VpAVL7g2n/AMqgJmoeqp/5J88orsV+/fJU+qGnFtLDUNTnjyD8Fj0g9C77TCkP/vJuJjgAIB+A9PTx6LqIT7dzowuVOkKZk/AY5D6IejOglCqahIaYVKv9XhnX98J+Bn0Q9H2hVqbxENleE57w+p/0oHwQ8o5e6POPLPkm41ikJKbWxOh3VT7+OTseXunaAI8ndd45hyP6BFfhd+TuAj2R68h4u+1EiidDEpjQ9wcwdFChQoUKFHvIUcDyRzRzQo4DTkOvNHOeR7qbfuQe132/ARqY4Hr5PePVni77SmzS1GsoNPjN1lA/AB18qEdSjqu6j1B4nonW1KoZeEBhEN6L/b48VKlSpUqVPI4kDRYg7+8ml7Hgdj5k8kqeEqVPpJUqVKnllD2w+XVqMpt+tVH0tIqwFTq2zDOOVmaA/ks5QH8kb2gP5LO2+5C9oblnbfcs7Q3LOW+5Z223LO229G9t9yztvuQvaHZyztvuRvbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7lnbfcs7b7kL2huTKjaurfaz5f8AWdaQaE63FCC/6lUtvoNQaR2VJjMAqP7p1mex6ptkW0vEevCb4WJqfalmpcnUW+I1s6FOoNbWDMUhG3xVCBoAhZu/kYQtmta1rhqU+0wDFiRtCBMp1u4akqpQ+sBidZxBxLJmTronswmAVChQoUKFChQoUKFChQoUKFChQoUKFChQoUKFChRw/oX+L5cewHy/63pSaVTrMcTrCNZtNhp0x17qi9uDw6nZC8+kAaQnVR4fh6pnhsohpKzFJ0z3T69MYS09E59I1A5OrUQXCeqfd0zonXstAYnuFRoaU6swyfyqtw2tSaz8J1akCCmXLWSAqlzjxT3UR09i1X9C/wAX2s+W+myoIeEaFv8A+NkplGhiwOZBWUobUbOhtWUoT9qydDasnb7FkqG1ZK32rJW2xZO32rJW+1ZO32LJW+1ZW32JtnQH8VlKG1ZO32rJ0NqyVDaslQ2rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZK32rJW+1ZOhtTKTaQhvT2s+W/7SpFKBMSmNaXhzB0U/DJUqVPJPlnzHvYOqFRj/sPxUeUfLJgFDEwj8rA41Rqo+KDyj5cSn27HuxOTW4BDVp2+KDyj5Z+0kIuxf3Roml7HADp8VHlHy+ohPt3O0aYCZRFMydSh8UHpYhmNCqahgGEyqcWB3xUelmWYFVY8QIlCmXuDn/9cD8oCNeTFMSm1sToOnA/KHfaifBP0mJTGhzg5g0HA/KAnvpt6ptRr/t4H4zKnzj9hTZp/soMPjDVFH46fMdQY8y5RhEN808khdp490dOIM8Br8iLGkyQv0hSY0yGqSpK68e8rvP/AKsHyiFChRwjhCj/AODp+Gf/xAA3EQABAwEGBAUDAwEJAAAAAAABAAIRAxASEyExUhQgMEEEQFBRYCIyYQUzQiMkNHBxgJCRscH/2gAIAQIBAT8B/wBZsfLJ+YQeY5WRaeTBeGXzoirkmFBvXStE1j3C8AgMp6Ry5Nbe02Hq9rTy9l2ldkckcjFkIDkPohJQKlOQ1WhC90CpsPZXfqlGyATCunDYnuNSU7EbUY4q5UxRKax7HORYb72hMa/DcAv6jaX+arTcIAyRjtznNa/+LvYMkMnNhDUI5tiw5hZ2tycFoLBpCNgzvBDWzVdihoE/RFHUInNN7rsu0KMk7ROEld12TSnZWu0TlHow1sGfJqp5JWaK/Nmfkhbn0dDPkD6W7Ndwic0PuTRmU3uveyLOxQyQsfIGS+sIudICdeOSBLih8VvfVHJNo1QOaGU8+lhEiFdAR7JzGuiVEGfjjRKDVd91dV1EIKLJ72SoXvZ3R1KjNCwBH7ZREItzhEeyAmwJ2mSIRy+F62jJAxqpHdXkTbKmLNFkVK97O8o6lTmhlYCj9sImSFOco/hAxYDnaTPwr8rxn6n4riTnELwdR9Wg19TXlPvzBartK7co1XbkOnRi0ZrtKJylOyErvHoUqfP914j9PbU8QahZK8HT8RQMPMjlOYjmGqGS7Qoy5PcIL2RGUIr2R0sNnZAZEL8WZar35OyIlsJ2YhHWfXcgJKDwUHXtFdy60o29ugfIT6/VzYQmujMBN0lfx6xQQ6+vp8KPNj82Xsutrohl5DT4SfIgZrDI/a1TrpYc8/gM+lMrsbJc1PrF4jshlyz60fOnq94RptpxIlVKQi+3/i2FChR8YjqflU6jYJJhF7WtuNtlSpUqfik2T26wowJqZJ1K6283MWwoUKOU+qlOGS9uUL+LkBLlKGiNsWHULvZobHZQjrYO6ahoio7o5rsguxKGhUZc7Mys6naYTnENh5zU2SpUqVKn1godCeaVKnklTaO/kmMe7RGmWfcPgJyErseaEUFGiHZBQjyzbKlSpU2z1Bm4IxVy0hE/0jlAR+AHSOaYzUolDJTlCDoCGSlHqzySpU9CCm16jBDU43zL0Pgs+RPJFsKFdV1XVChRytA7q7H7SeWFhnVZWQoUKFdUfDzzSpQ6bQ8/am3hJNOVUFd2QZAQ8NX9lw9bauGq+y4WttXD1dq4ar7Lh621YFUfxWFV2rBrbFg1dqwKu1cPV2o+Hqj+KwKu1YFXasCrtWBV2rAq7VgVdqwKu1YFXasCrtWBV2rAq7VgVdqwKu1YFXasCrtWBV2rAq7VgVdqwKu1YFXasCrtWBV2rAq7VgVdqwKu1YFXasCrtWBV2rAq7VgVdqwKu1YFXasCrtWBV2rAq7VgVdq4ertT2OYYd6W3p/pf7hKFc+IksN1U/E/UGHOe6q1H4lxiHjPcJ3iZq4TP+kXObWuu0TPEtqmLsJlR1x7o0TatR1K9dhMrkU2lwklHxjezUfEucTc0ATPGAmLq4ppdAGqHiWvgNVKvDC5643Ulq4tsfbmmPvCYslSpUqVKlSpUqVKlSpUqVKlSpUqVKlSpUqVKlTZ+rf3jpyp8+3p/pX7hCd4d7IbdvQmUHPcKj+3ZVabxUvsR8HnORTaZbUvp4quq3gMkyi9t2OyZRq/WHZSgKzWXYTaNa63SWpnhXtMlU/B3TNTNU2Fji73TKL2kToDKp0TSqF/uhRqmRl7p3hn1Myqfhy26tVChR56Fov1Y/wBoj0sa9NtR1P7VfrDOo+Eale7fa+QuIq7lxFbcuIrbka9XcseruRr1ezlj1Ny4iqP5LiKu5cTV3LiKu5cTW3LiK25Y9XcuIq7lxNbcuIrH+S4ivuWPX3LHr7lxFbcuIr7lj19yx6+5Y9fcuIrblxFbcuIrblxFbcuIrblxFbcuIrblxFbcuIr7lj19yx6+5Y9fcsevuWPX3LHr7lj19yx6+5cRW3LiK25cRW3LiK25cRW3LiK25cRW3LiK25cTW3Jz3VDLvSx026oA1cyJhPebsPOaFk+uwo6UWwoUKFCjqDqMpvOiNIs+74qekOmMyE+H5KYpkIafFD0h1GV6lMENReXmXLX4oekOnElBlz9pOuuaZ16kKFCiw/BD0h0ymV2NmRKfWL23QIClSpUqVKlSpUqVKlSpU/BT0h04lGi2mASJVSiIvjKyFChQoUWwo+KDp3uypPbnJhOeA0tagp5p+LjplYP0/XknU4bebmPj46Y1X7uomETDYec/j46jGPdojTLPu8ifjIEuRIqIuGE4AKZ8gfjTar2CApJMnyJ91+VB5jaM0eYKfjIcRkDYXuIglRzfj/C2FH+w9Pxs+QNg+Gf/xABHEAACAQIDAwcICAUEAgEFAQABAgMAEQQSIRMxMiJBUWFxkeEQFCM0QoGSwQUgMFBScqGxM0Bgk9EkYvDxFUOCRFNzosLS/9oACAEBAAY/Av5dOz6j9lJoql04koi9+Uf3/qZOyvf9Q5R1b6OS9j0kn+pk7K9/lY9AriIZluM66fpTpn2gA1Nuf+pk7PqEHnrWXULlUhd1WupH+1bf1MnZ9QnoonKDpfkvc0UdcrAX0N/6mTs+ow6RSkR5CiW1PFTvs9kCN3X/AFMnZ9WynXfuplB1Xf8AU2YPK7NO/wCoLDMx0Ap4weWlsw7fJEyvdZWyppvP/B5ZS7G0Rs9lJt5VUjRva6/IYVzbQc2Q+RpWVo1W98w6KL2LWF7LvNBt1+Y0kbHlvu0NRplY5vaA0Hb5WsOSNL9NNI5sii5P1myG+Vsp7fI0khyou8+RdqxBbcFUsf0pXQhlOoI8kiKbtGbN1aX8jOxsqi5NBhuOo+0eMHlpbMO3ytI98q9AvSSIbowuDSmYsAd1kZv2pWF7HXUWqOPZuc9+UBovbUiBrsnFUkeRxktyiOSeymdtw6BehNHd0IuLDU0j5WTML5X0I8mSVmDWzGyM1h7hQINwfqEgZj0XoMNx/mU7K9/le2+1KIWztk1DHQGpAwtoNQb+U1i8pdmO0GrE85p8rB1yxg2/PTx2C4cSLmXm4f8AqvQ/w71Ce0fpX0pOV9NEiFG/DofJgJNrJIm2fLDYW3Pu0vWIVJIfSYN8yxX4uhrnU76aKOMR4cxxNKFFgRn1PdX02MHkMNtNmbjgrBvtYThcr8qZSyZtOsddYaOa2JQYY2LKR7WmhqFRzOoF/JjFEiklALA9tYNwAgeAlz07qxkMeV8pcqo16bVKF2YitbdpmrCjPHs8p5T6rfo7a+jpXbkq1mbo5JrCM7ori+pOtrV/61eP4maoyZUE92LoEOf3m9S2vf2su+19axwwaK6hb2TVc1ubrqP/AMbk2wk9Dshpn5/031Dst1tb7789+u9P5/bJsl2N+03t17qxGb17bR7C/Fl5O7q31twgExx5XPbW2Y3FfSMMKLHjvS5Ai8rLzViW20LQbG0iYeMj58VY3ztNpjl5UmcXI/D+nzq+GyDDobejGlJLO2ziaEqHO696nZ0MchgXzQEWN9eHrvWKxGRfOFxkY2ltRwf5rGAJGmJYjY8nXg5vfegzzQ6QnbokbA9ec3rGR4hC8xi9Esg/9fs0PNsgCAGTIOe1Ajca/wBYEt5tyc45781B52jjxMcUVtrcyHnOXWsdMVDsJVKv0chTpWfPFHI+1DoAc+42zG/ZVlvDcFC0Y1tsQf31qVIRCwyLeXD3CntHTREfF1VgB9IZMmST+LqL8msMuITOowxsHHNn0/SsUHv5yFTzW/F7vfUxkSNJ3yGM5dSdb2qDY+v+k2/TuPF77VL5pfzvzf0uS+brv11jBgcvmuzW2Tdn1v8AKobODso1D/7TakzyqmaSMi53gOL1O7KkyjBhkbfztrX0VJLLGuIycpmOtilYjOkaTuVMXJ1NxravpIQtGZGi4IzqzDNf31kjkhIkh4YQRrfnud9bOd0yxjLKH3DXnrDK5glawjXaahG6+ysBGk0HmSxsA8q5kLXHQd++tjFiFynCIrO8Rva7c1/3o8uKOSCWNRnvtMotrv0G/mrFTlM0q4g2Yb+amIeJWlhfOiXzA9Dm++sVGp83QrOCyDcAy1OsKw5RlO0w98h91DtP7/zKdn2meNg6/iU1mdgi9LG1WbyCPMM5Fwt9frh7cobur64U7zu8gX2j5CRz/wAiQdx8m2t6TLlv1fXSUjlpcA9v8tlO6rDd/Mp2fZfTM2GjSKWLhZV3cgGpcM+JaW8IcOVW6nUdFL6QpZrchVF+Xboo+mLsvKzOqnN7rWrLA0gKxmQiONT35uavo3EZQJJImuR2CsPyrq8TixUaWtz76xBTFPLBAhZ1ZVtm5l3ViGmEjQvhWYmRUABtzWN7dtTSYLDNgxdISllvmzb7XtuphaYWkHLIj2mW2vVvrCptmkDbQPmTKbi2+vorEScqbbsue2trPWbzh1XYg5Aq237t3kdugXp5Dny7ItmcLYG2lqzjEXZslrqNLmootuSZHttMouBaoYtvblurOFGtq5bZnW3K3eSS4tZQO3+jE7K9/wBafCFLqtirDm05/LLZXO1FnzSsb/rTEqblclwxBtUkCodk+9Gdm/c1sCr7O97bVte3WlDoxyjLfaNe3QddaijKHLFwWc3FCdg+0HOJWH6XppFV8zEk+lYg36r2qRRFyXXJqxOnQOin2kebOoVtd9t1bPZm2bPfOc1+m++kjCMoQ3BV2Ddeu+kw2z9EhuozG49++oy6XKCw5RGnQemtp/ty1amsnELak7vlWUjk6VlcXHbSZEtkvalF7KDcjp8m0Dc1rW/oxOz6jHoFHV8xS4BUfpRV2e++zgD9qZgLM3EenyN2fUjVEzs5tq1qVWjVXtmIeS1Js1BhaMNq1OcnDKI9/Tb/ADTHYcgFlvn6KQPGEzpnWzX/AOb6zg213ioEjjEs0jZDmYoBoT0dVQomGBmd2jKmSwUr12qy4TNIse1kUyWyj57jUaRRo2HeLPq9jvGu6rbD/T7XY7XPrm7K2hw2XCm5EmfXTpFLG8Rw22i2kbhs2ndv1FRvI2d9QW6danlhlMLxoXuADfTrrDwIvncroXLyvk3W6B119HTKrLHK4vaS1tNx01rYrGjQbPNq+u/fu/SihDBdjcWk5J1/DXmxRELZsuWUMwt0jmqfO+3kSR0BawvbsoMiZ5QzC0sv+4+1b5VFJJFFG0rlUzT2Sw581qibz0YGMxvc3QgsGtvNQ7RY9psRI+0lEZ9w562McSMOTxS5W15wvPUTbPjnMPFusTr+lY+Mvt2jeyZ7L7INtB10suKVV0vmDXv7rUDblNqf6BTs+oR01rLuXKpAtas7vmNraC3lbs+pE97ZCTb3VtI5MjZcput6R45MjBcpOW96OWQCMyCQrl6Lf4p478RY37TUJzfw48m7fu/xQF7WN916wow8oGSUvnK3tySN16hfa5nR3kY5eItTPFPsc8eye6Zrj/OpqFsPPsTHHsuUmbk1fb/6cy7bZZNc3bWy85zYYAgR5LHXpNRtJPthFHs4xky2Gn+KePbB01yDJbLrf30+HWZULrlZ2S+nfUEskod40ZNFte5HX1VhYY8UirAc3Kivc69dJNHiBE+TI/o7315uihifOECWy5Nlra/TesO3nKlIL5V2VjY9JvWI2eIGSQllVo75SffrU2GOLT0hJziK1rm59qoTt4xLCeQVh5NrWta9Azy7Q7MpfLl573raLigsjIEkYxXvbnGulC842N1OUx8oW6GpLYgbBZjME2fKub6Xv19FTTCb0UurRZee1t/urIZ88I4FyWtr01lZbW/oFOz6hPRRYqMoF+S96Oi6c6tfymnAdkCnQVG7aMRr5D2fUVvNrYZiQJc2unOR0VIwl0jXO3JO7p66d85UJq2dGU9WhFRSLeSNpNmTY3U2vutevOIXG+wZ0Yj32rDJswY5WyZs2oNid3urD4cEDOCTdW17DuqXC5XDJbXI1v2rFRZlCxW9kg++9MRLoq5yWUjk9Ou+n2bHkcQZSp7jQZdQaRJC2ZtQFQt+1LeW+Zc/JQtyenShG0vKNuYkC+65qXDZXDIbA5GsdOyjGsnKF/ZIGm/Xnp2E1lRcxLKRp01NLhvStHvR7p+4qOS1s6hrVHBDCJZGUvynyi1KJyYny5ili2XttWyaTl6X5JsL7taQhuN9mNPa/wCCiFl3AnhNjbfY8/uqSWImXKuYLlK5ui16c4yLzfLaxU5w1+jSkYOzZyQAsbE6b9LVG7S8l9VyqTTRObLkVxIASDf9qTD3XKULWKtc9h3ViIGjCbMAhg17g3/xWMLG6QnQLG2b36a+6tuFdbLmIyH9NNfdUWIxDry9PRq2pvzDfSy7QlWbKLISb9m+jLHZg7gBiOoVD+Qfeydn1GHSKA2eTKmXU76LsmzGW1vKa2hi2lx00wYl42OlvZ8h7PqearAAFzenLCxGttKnkkhmCjCMjNJMH1792lSTbAwnIiZdoMzWa5seajL5rJycQJgryhmIyZd96njGGZpsQ7NkDLyLnn1rCTLh22kUucwllvuI37uesJIuDkdYrliGXnHbUrpBtYpgnLDABLb/AN6xd8K6RzRbPaF10tm6+umEuDkZlhKemxNwx6BroKmLrKsVhkSeQO1+fXuoFhlPRWGMUBnOxfkggc69NRbQCww4Qm/Pcm1YuNIc8eJZG2uYcm1t/dUzCDaRTZfSZgMthUOFaLZrCJBtswOe4IH70cOcNsmVFsWccog/tWMleLYbZAioSCdL66dtIrwFJI1C5Sw5VhSA4HzpbX0YBkagZYpcSzwqjFMRkFxe+bXXf11ieTZWyZdehakc2821kT87WB/510sb4eTPHEyB3xF1Jtbkrf8AxSQKAZlRND0i3+K9XaJQ6nIsgDsOfUHTmrD5sLIWMkrKplDMQQOe9RjZSSAq90hmyZWLX111qSLza5lwywXzjkEXFz381YdlwrvFGrIZAy89uvqp3EWeKVVGcMOTa/8AmsU0mEeJJbEMWXmHUaEL4U3hSws45fZ41AjYaRWglLlRKFLA5txB66Q+aS5toXsuJ9IOu5PzoNiD6VZNbm+nXUP5B97J2V7/AC67qNienhNZVJzDXVSKljv6NR/z9/I3ZW+uKuKjyuauKuKuKuL9K3+TO7ZU6herxk6aG62rNI1h2VGVJcPuKrW+ilm0HFbSms18psaPEtjblDfW+gXa1zYWW/7VmR7ru3VvrfTLZhb2iNDSoW5Tbhat9b631vrfW+t9b631vrfW+t9b631vrfW+ibm56DQUHQVxfpXF+lcX6VxVvrfXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFW+t9cVcVcVcVcVcVcX8wnZQ7fLIBvymoxG7PyPSAm9qaY75NfdU3Unb/wBdnh5G7KHlPZ9fCiRwi583K6hWZlAhmkLXkNgdLC9YMBnMYXUBilrnmpMzPwcnOxYkk0Zt2fFWU9Fv+qxCZvSFzyOq1SsirtuUWCjUC+gqJRJpdVkYezffrUaqmSJ5bqBpoF1qFcMyJlLvYi4GtrUJWnYZuSzLpvNzUqNypRZYl/CPxVPh7WTaCVz1WGnfWNyn012bL0W0p2wl5HENs666ne36VIEYKGK3yXI06+c07SyMys1nzXO/mpVXRQLCkjJ5T8I+8TZVte3F4VwL8XhXAvxeFcC/F4VwL8XhXAvxeFcC/F4VwL8XhXAvxeFcK/F4Vwr8XhXAvxeFcC/F4VwL8XhXAvxeFcC/F4VwL8XhXAvxeFcC/F4VwL8XhXAvxeFAZV0/3eFcC/F4VwL8XhXAvxeFcC/F4VwL8XhXAvxeFPNZTmFrZt27/FcC/F4URkX4vCty/F4VuXv8K3L3+FXsvf4VuXv8K3L3+Fbl7/Cty9/hW5e/wrcvf4Vaw769nv8ACllKqXXcc1ez3+Fez317Pf4V7PxV7Pf4V7Pf4V7PxV7PxV7Pf4V7Pf4V7Pf4V7PxV7Pf4V7Pf4V7Pf4UJCFzAWHK8K9nv8K9nv8ACvZ7/CvZ7/CvZ7/CvZ7/AAr2e/wr2e/wr2e/wr2e/wAK9nv8K9nv8K3L3+Fbl7/Cty9/hW5e/wAK3L3+Fbl7/Cty9/hW5e/wrcvf4VuXv8K3L3+Fbl7/AArcvf4VuXv8K3L3+Fbl7/Cty9/hW5e/wrcvf4VuXv8ACty9/hW5e/woqU3G2+m9kit9b631vrfXFXFXFXFXF5T+Zv3rEF2ASI/hNxUjjM2QXIykUspJUHTVTvpTnPKNhZTeogjIzSfifLSrI2SQ2uu+3vrZl+Vu3ad9ZFa7bt1Yj0hVVORQANNN9HObsrst+w/zozHLc2rZ35dr2pfyn5UkmOWUrKLxxILof8++oMibHDSsU2LNm9km/VupJdrMjbSNPRyldC4B/emw0AzCJQ3pFklZib6XHzqKARrecBoi3MPav/znrGZ5VMQYcnKfw82tYDEbWWTaxEyB3LX5Gbn7KO2WNnaISR5LjnAsfiFR7bYnNKiAoDuJ6KmWMRZYi3GDqAqH/wDqtj6MSrmzMIncGxsNBup3QRxiPDLOySKb3N9N/VT2lTZbFGyFT0t176HnD4hZGkbI2a8TjWw6tKayptoklaQHmy7vlRWURPIyIyZQQLlsuup6aO32ZPMY76+77kl/Mal932p/M371jR5uy7ZeSSR0dtS23NDkB69agvAymJuESWJ0tzVCwjKDMzNmfMage2i3uejSpMqO97ZbSWA7RenGxurvmzZhpSK8b2Ric5l5PuFYiLMFEbE2PMtSy/8A3JGN+kX0/nWRFVi3J5W61NHfaJv2p4vfS9h+VRCDEbONGzBXXNl0tp31tGLTS/jkN/8AqgjXtmVtOo3+VGQTTQlhlbZNbNRmZn2l1Ktfgt0VtxJIhNsyKeS1umkDSyzrGmRFkIsBu5hTq0kst02YztwjqpkfETSEkNnY6gjdbmqTPLK7SZszMRfUAdH+2i6TTROSxLIw1ud26phmf0sQhNzzC/8AmkcSyxlVCnIeIDdetptpXykukbtyQf3rGvOFR8UMrbI7ha1XYtwBNOo3v2015ZJS2t5D9yS/mNS+77U/mb9/ulew/KiYJEgjHtGxe3ZzVHCW85ickLiFW2tr26Du5qjw+HyBypctILgDT/NATRPtFTPLs9RGKdDFMcpIzgC2m/n66y7KVU2hiEptlLD335qxvnBS2HbiRbaZQ3zqQjDzLII9oqOByh07623m8kchXRbLc6c2tYOQiSd5lGUKozNpfdzUmzhmlLKWsoGljY3uad8K0OxXDrP6RTrfN16bqyiCZiMudlGi3A/zWz2clixRZLclmG8fpWHyKxMwLDTdbfesRNNtORKVyFBmHQunbU+fDyLlZVSO3LYn30noZjIzmPZWGYNa/T0UHysl/ZcWI+4r7NO6nCqFFhu9/wBqfzH9/ulew/KsJE2EXFLCbK621W3Pf3VHLiGUbPVY49w0tvqOeDIXClCshIFtP8VLleNzPEIpWbS2/Ud9TBXj5QktfrVR8qKuFSBcU8ut855R5qxq3QYfFDf7Q5OX5VJmgwsJMezzQLyjWzZYCyKFTlHXt0rBi0BmwugGc5XFrdGlCRmU8h81vxM+aoziY4ptnh0iGl9Re/71iZGIyyFSPcAKjRmj83ilaUG/KN82lv8A5ViZbhgf4Sn2b6n9axCuIEzyiZSrk6gg23dVSSSLBcyK6xliymwI1066wx2cEOzkZykI04be/wC5H/KPn9qfzH96yR4mGRvwq4J8hj2vKzZNFNs3RfyApICCSBzXtvpjG2YKxQ9vkG2mjivuzsBesykMp5x5Gkc2RRcmjOW9EFz5rc1Bl1BF/I+zbNkYo2nPWZmCjpNNCG9Iq5iOr7JnY2VRcmvOM3ocufNbmoMuoOo8maWVIh0u1qDIwdTuKmsmYZ9+W+v2C9h+VZMOpxDjfY2Ue+lhlVoZ21C7wew0sOuYoX/531E5lEe04Q7WNOdoLIeVrurZbZdr+DNr3U+WZZCgzFUYE1Z0kw902gM1rFe+mdZ0KLvYNoKUpMrhuGzXvSZWRy0mTWQDt/6otLKF0zBc2p7KVDMqu2oQnld1bMToX/CH1rfW+t9b/uR+wfP7SWTfkUtUTObuRckVBBCM/wBIZhlyjlKc2+9Oj4jYsJrBGkPKj6ltb33pXjllu2PyHlnUZjSz+cS+vmDIW5OXsr6LnnmkC7WVS+c6am1WmxEseGOLlWSRW1FuEX6KwEMmInSN9tZlbKzqOE19EtaOeXZy/wAfcawuD85lRNk8hELZRfNSjbzed+c5Hw/siP8A656xUTTS3wMUl3zHlE8P6VImInmQeaK0SqTaQ21v00E8483sI9jmkKqRbXS3KrGyvPK2SdkWPNybdlT3xWRUxbjKzlMw6AwpHtKvA2rcq1+esXLBiZRssGrI6ScW/f00A2IEBtGYs0hVW6dLcqoX2+VLG8IkKM/YRRXbean0ZhEkhXt0sc1fScqYmfaxyusaq+mljRxqM6QzTqOIjIgHvtrz19Hw+esUkeXlwSE8m2gvasAkmJlw8DZw5RrHdpX0fFLiZ0VkkOZWylwDpekG3m8786yPh/ZEfZ2c9YjDGWX/AEaSu0mbivwUyYjETL/o1MSqdJDbW/TSxjEDD2jj2OeQqp6dLcqjG8rYjMzfw5D6MW51+dYiTFBOVGow7zJmj6xWGOJdsDhWV7NhgUub6V9GzYt5EkeCw5RF2voDWF9PNJOxfzmJ+FB2c3117D8qw0W2kwjaJIOY6bx4VDJFAY40bOZZeJ+SR28/PUZO0CbFtUcrrcdFOkmHkdpMKI05BNjytD0bxUMeXNFNkaVugp/nTurJJ5xmGIaTSNcm82Oa3zr+DaQLJbTXW9MzNJNJ5vkVGA0vzCw6qQpDmyuhZFFyVBqbFRQvmXEbWOMrYkZQp076w8BWSSTMjHIhbc4LbvfWLY4eSTbYcCP0RJvytOreKdJPOOVIjDZxAruHtEad9Ts8dm84dgSOvf8Az3/juX5xsPON3Jy58n7/AGT9g+f2ljqK2a6IpIUdAv8AzEEzE5or29/8ivYflQMr2vuG8n3VeN81t45xQ20qxX/G1qiu38Q2Xr+pmVgwPOp8uXMM2+16DKcyncRz0YhIplGpQHUeQrFPHIw3hHB8rSyHKi7z5AynMp1BB3/y74jEybKFBdmte1eefR8ySvN9GCOKRLOoPnGbX3A1HgxlkWbE4jLdcrRwqmaP/wDr7F/yj5/au3QWP61gMZMqbMxTSIsd72tWJ9GEBg2iyCNwB1XO+uTFDtUwTS5lDdPbWJTFRQsDhhOAt7W6DX0uHKSQRwgiMg/h7afYRwiPDQozq17m4vYViniSLYYdUY5r5rNUTRICjcchUtkHYKxbJs32WHWZSAbEmsU6pCYcPkzA3zHMKxTqkRw2HlVSDfOQbf5oyZI/NhiPNyPbvuvWMnUxRJHmQFb5tGpNqVMltcg0/m1/KflUEy7LEyYiwLubMrWvY1h3222xCk7TILKq5T87b6hkSSJZlVhll3FdL19FzR3gDOF2atybW3Vis2LeKdXQQxrJa62Xm5+eln20pY4xoyC5y5bnS1QBpH2eKiY6zZjzc1uT7qYxzPtrk2MhNrP+lYtFlZRfDgZW4bvrWGgilkZJHY8ucrzbs2+kyzQl9i3Kb0otn6dKiVZNmsWEjKkz7IDTfu1rDs5GZsM2vScy1h5BO5lfFSRspkJFrtzc24Vh58iRJDE5Vg3KbQ9WlLMMTNmkWMOzPfeRc9VYnJNI8eGkSTlPm0tyhfsrE4gyyKzZpUyuQQPZ/SlhMzxx7Ev6NrXN6QRyiPZYaPKWxGzC8neRbWsY7TyjZyrlVXOXgUnT+WKNuNO+AlighbXZShzbsyqdKgxs2IgkWMMMsQfnUj2lHT9i/wCUfP7VvzN+9bRIAG15zz1IixnZuMpXObW6uiiWj12ex3+z0Vyor+j2W88PRTO0fKdMjanUUheAEooUancOnpqfNH/GAD677bqCyqWA6GI/alzwA2TZixtpU88qLIGK7MZjpYc4rEYidRIWkDJqdNBvFecbIbW+a/X026aeEJ6J75l7d9K6Jy1TZhixPJ/m1/KflWdkOfpVst+21BI0CL0KKAliSW27Ot6Bkw0UmUWGZAdKW7uIxb0S2ym1AbNeLNu5+ms64eJXvfMEF6kYRIDJxHLxUQmHiQGx5KAbt1ZZUWVOhhcUMqKpAsLDcKS8ER2eiXTh7KUyRo5Q3XOu40WSMbQknaFeVqb76yBAE3ZRurIVBS1sttKMaRIkZ3oFsKVJII5EXhVlBApYzhojGvCmQWFR3gjOz4boOT2UxCgFtTbn+4X/ACj5/amzi1/w1xr8PjXGvw+Nca/D41xr8PjXGvw+Nca/D41xr8PjXGPh8a41+HxrjX4fGuNfh8a41+HxrjX4fGuNfh8a4l+HxrjX4fGuNfh8a41+HxrjX4fGuNfh8aBzLr/t8aHKXX/b41xr8PjXGvw+Nca/D40/KQKvPbxonkheY5d9cS/D41xr8PjWrC3UPs8vQl/+d1Rvj0lKyi6RIt0N+bTf76w+VNhhpGKbFmzeyT7t1RwmWVE2LN6OQrrdaCrZ2SO5Jidi516N26pBCsQjjKhhJe50B92+sSudihiR7FiQDdv8VlbZsrIzLlR9LdZ4vdXncuwytEHG8WOnfWPyuqSQjjEbJcW6DqDWJ2phlcIWIyEKR0b/AJ1HBhhGG2W0Jk1HZTywiJETDLiMrqSTe+l79VYko+J842ibNUz5LZV3+z01IfQ7BJmjtrmsOeoXyxf6iMvCADobaA02xChNiGu2vKNYRYkjR3fZDflGp6+qniZlMrTsM2zZwAFXcBrz1hVjVI2lWQttEOmUgbtKXaAB7ahTp9xP+UfP7iXspe36mS3JPNXJv72J+2V5GVAVIuxtUQw/0lFHGjZgjkNbS2mvXW0OLjll/G8oJ8KWQfSOxdVK+jkXd/wUNnj9gMoQiOYcoddGUY/Z5iC6pMLNahiPPVRrZSFkWzDr76jI+kSVjUoimVbKvRS4U4tMiqFB2gvpu/apw+O223XK+eVaeB/pRiH3ttUva1rbqS/0mc6grtBKlyDzVKoxUarJCIbbQaAX/wA1IVxUd5CCbyD8IHyp8uKj5Tl9ZBzmkZcaGCCyI0oyoOqpY4cYse0cuWEi3BoQ/wDkswVsyEyJdD1Vf/yPpc5fa7VM2u/q5qhfzxWaNCl2lBve3+K9Zh+MV6zD8Yr1mH4xXrMPxivWYfjFesw/GK9Zh+MV6zD8Yr1mH4xXrMPxivWYfjFesw/GK9Zh+MV6zD8Yr1mH4xXrMPxivWYfjFesw/GK9Zh+MV6zD8Yr1mH4xXrMPxivWYfjFesw/GK9Zh+MV6zD8Yr1mH4xXrMPxivWYfjFesw/GK9Zh+MV6zD8Yr1mH4xXrMP9wVIY3WRbDVTfp+4k7KH8nAP91DbRtNIeYaL389PKBsHQXMJN9P3FNLNnNnCgK1ubspgJEVS+VM5tm/5ejPNmPKy2R1uK2gyls9r3NxputUh2iPszZgvN+lYWPMiLIg5QJIP6VstqjJm33PTz1iEGSFIjqWY2GtPnljjCkLck63F6RZhIZGmMXIbda3+azGaMXzZQx1NqL50zBQxS/KANTZiBsiB29lQxR5eVGDmBNu3WoisyHMrMz35ItT+kjyKufPfS17UVzButTp9xz/n+4k7P5SDn5W73ViJBiWwxlBup5jfmtTxwqxzizSSb+ndTQzFxdwwKLfmPXXFNCAxIEXOOutnrm2he9GItLtM2bhFv3rF6NaYgjTdrWGMRcvELWZbX1J6azhpQrEltBWJsZNnPrfLqpvfppgqsBmUrfoC2pxC7x5pXc620Nqgj1zRg3771I6httJEIzfh5v8VBHYqw/iHp5h+lQMu0bLHsmBUDSx139dIkbSgBWUvaxFzfTWp7tLJnQKGk7b/ck/5/uJOz6pUxDRb8lr0UdcptfQ3+2VJEWSyk2YXophsHFiGG85BlHvpYJsFFDOdy5AQ3YaF/o3aKbcqNEtcm1tTRL4WOFgLsjqt1Hu7K2VsLnNrLybmtjs8MZR/67LmqL/QCLarmjaSJbN3U5jTDuF4soBtTytgFhRVzAzIqgiopp4sLBnF9ctu/nqFkgwz7Vgq5sov2dNLh5Y4EdhfUDSkw4wuHOYFjw5h7qMIjw+2G9LC9StGmHm2alyqBWNqIkwS4bk5xtUUXHuppVTDGNdC+lhSbOOB84JWwGtRlIMM+d8guVHPY++jtYYAwUsFyi5oRbPDCU+wVXNWyCYUyfhst69Vh/tivVof7Yr1aH+2K9Wh/tivVof7Yr1aH+2K9Wh/tivVof7Yr1aH+2K9Wh/tivVof7Yr1aH+2K9Wh/tivVofgFerQ/wBsV6tD/bFerQ/2xXq0P9sV6tD/AGxXq0PwCvVofgFerQ/AK9Wh/tivVof7Yr1aH+2K9Wh/tivVof7Yr1aH+2K9Wh/tivVof7Yr1aH+2KkEaLGLDRRbp+4k7K9/1JGt6Rjz/pTvstkCO8/bL+U/KsLEZZMG2iSg7jpvHdzdNQvDh2jjjbOZZeJ+SR28/PShQWO1jNgP94qAREZsRfDv05Trf3WPfX0jho4XaR5Y8pVeSOSvPzWrJIMTmGIaTSJcm8m+a3R11g4EilSSGBgxkQrY5CvP21NnTEORhymSaFVW/Ru13VF6IoMq5ljQk37BX0QuxlXY3DZ4yLcitmYZWfzosAkZawE1/wBqwmK2UrpkcELGS2uW2nurDHYz8kMCRExGtueoI9g4lTEvI0pXk25XP7xWDUROGGHkBAXUXWnZ3kxEpiCBWA0FxzAVHIkOZVlV3VF1IFPi4IH2i4gyRxWsxUix0/WsPhwkkrBozeOMtuYFjp76x7HDyucRANl6InWx06vfUiyeccrECRdnEuXmsc1vnUzPFZvOHcFh17/uB/yj5/cSdle/6lhe/QVIplBuV3/bL+U/KhtWtfcN5PYKJifNbQ9IpdtMkObdna1685RULsP4o5x20xAsX1J6adEdWdOJQd31LswFzbXp8gW4zHcOmkhLekcEqLeQsxsoFyTzUdjMktt+Q38qmQ5QzBRpzmmdiAq6k9H3E/5R8/uJOyvf9SWVbZjyVvUoK9Fze/2yH/aflUMy7PESYiyl3NmVrXt4Vh5NttcQCRJsxZUXKd/vtvqO9v40W/8AOKkCzyouYKAkhAHo2b9xWJxHnMm3TZZV2htqi83XWI3AnDpYdOr0Z/OLFsO7t/qSSTbmW3J16KmEeIla+dPSS7uVH3bzrRjaYhDNELJiC7C515W+pY3llyQ4yNQTK2gOTnv10sWHlf0cTPfznIO/UmvoyeWV1z4ZixEpUexWGIkOV0e65+Sd3NUEu3dpJMTJG8Rbk5eVze4VA22lcz4aTPnctfk0+KIXDEQCNTE9zvGu6o0WebZzTKpZpNQOo00xleXD4edojdr3Qj/NYZpJnE4kjLcsje4uOvfX0lmlkUQwAqqtYHQ7+mnYSBMs4QXxFtNNMlueppmnmuuIcAZ+Ta9rW+4H/KPn9xJ2V7/5NOw/Ks7Jyt/JYressahF6BS7aCObLuzre1C0EYtuso6LU0uyUuSCCRw2AGndSSMitInCxGoqQiBLyaPpxUfRrrcbunf+woKkMaLfNlVQNempAY1O01bTipEbDxsqcAKjk0I2gjKDcuXQVtHw8TyfjK60ZREglO98utKuyTKosBl3CsjKCnQaKSKHQ7wa2QjXYj2LaUNtDHNbdnW9qUPhoXCiyhkGgrbbFNr+PLrRyqFubm33A/5R8/uJOyvf5bVOUCxi2QHdRQpGDlvdBb7YL0Jeo3x6S5ZRdIkW6Hq0+dYfKmww0jFNizZvZJ927dWHE8s0cOzc+iLb7r+GhHlvLHEGYPG7Fj0abqWM5o4REHGSYqdTvtb9KChLxbYxZRE999r5t1Pi5Vh2IV2yrcHSpWyKzZMwOydFBuBbXfv5qlhbZPMGjCsAQvK6RfqqGN9ltZGPLWN2FgPwjWoWyLDmzZpHiYjQ6ac19+tPeSfOcKjRjClyuY5uj3b6kT0IWLJmzDU3AJqNyI/N5JmiWwOYWvr+lQR5VzZW23UQcunvrFNkj23nGTk3ClmI139dYgSsryGREWysVGhPDv5qhRURZHlMed42AsFvcA60Nrl2nPk3fcb/AJR8/uJOyvf9TLbk1yRv6Tf7ZenKflUQw+I2ccbZgrrmy6W0762hLTTfjc1mflejaPLzEG3+KBGInU5AjFW4x10Z7nOUCe6tossqrmL7INybmvN9WjII166aJp55FIAGdtwqViWDPl1Hs5d1qT/UT7RGzCbMMw/S1RquJxCFb8oPcm/Terx3Ho1it1C/+alkF7ykE91qEmeTKGMixX5IJ3n9TWJlS4efiPR2VKrYieQSHNyraN07uqnzTzPIzB9ppcEdGlQkySSNGxbM5ve4t9yP+UfP7iTsr3+XoqU7QsEXnA30wZm3Xsy2+2A6FNEwSrBGBfMbF7dnNUcBbzmN7hZ1FtbX7Du5qjgw5iW8Ze8i35wOnrpXaKRjkzybMXCc3yNGNYpZctgzotwt6zkPbamLdzitY5Yha95ALcObp6KdnhmjsucKyi7C9tNeusU6YeQTQi5je2nQd+6sLtV81SQsDtiBaw7aSYGynEZNpEAwy58o3nn6RUg2MsuzXO+QDkj/AIKmR4nESyKolA0FwLX95rEwyZCqBWTILaG+/ur6QMrOscFmsyjQW5rb6e2HlSRQrZZANQWtzGppI8PJtYmAaNwLj9awyxRiBpc19uua1uw1CGhaSaTaaQ7jlax31cxzFQod2C8APTT6NmWUQ5ee5/7qaJi6qsYIUqLdt6iOyePDmNpM8i7wLbqlaSGaIxqGKOBcjvprwyQkc0g/nX/KPn9xJ2UO36joTfNe5ou75ja2gt9sp6VNYSJsIuKWEizi2q2571HJiGVRHqkUe4aW3++o54Fja0ZQiRrc4PR1U8cTRPtoRHIzX033I+KpNgYjFKVJz3utgB791GJdlstuZsxJB1vpa3XQRnS1rG3/AOHJUibHCQuVC5ohqdfCsdZgBiIgg6jr/moJJxENmW5KXOlqMEQiN5zLdmI/9mYc1SmMHaYmHZuiRFxfXn0tvrEpdQZZEca9AX//ADTzJszFIqhrnUWvu76xm2WIQ4hMhyOSw0PVUhcnREXM8Rj3Pf5VjgGUbdVC35iOmsO2MjgZULXQa83XWHdAqRRxumUdZX/FYoRGPZ4pAjlibr2dO+kxOYCELcp/vAIB7jTyFIdiybL+Ic1r791RwSbJUihaIMCSW3WJFuqp02OFw7PYDY9vT/PP+UfP7iMf/jPpF8umZILg9mtJF/4/HQZvbmhyqPf9TJs14b8fhTKyBcvQ1/tk7D8qKYaM4hhvI0Ue/wDxSwTJsJ23Le4bsNJEIZZnZS1o7bveaifaool4Q5sTSxvKiu25WbU1faJa+Xi56yx4iKRuhXBp2XERFU4jn4afEbVHjT8DA69FRtF/qtocqiAhr299LoUci+zfRq1xUI0vrIKeDaqsqtlyswBbQHTvoxCVDKN6BtaxTmORPNycyta+69WkRsNyM/pbAZe29NIJozGu9swsKXJKjh+Gzb6jymN875P4gHPY26eymaWVQQpbJmGZrdFCLbR7X8GblVshNGZfwBtfuB/yj5/cSdlDt+o7MOWxrlcZ1b7ZOw/KsNFtpMI+iSrzHTePDpqGSHDtHGjZjLLxyckjt5+eopTFK67Fl9HGW1uvRUyS4Z3ebDZY7JmytdtOreKxCzYZ52lZMrCPMNwG/to4fYTF/OmkuIzlykk76ULCUdky3y2/+nI/enIXElhEEyyQhBxDTQa19KqkfHCoXTedaUthcSFDaMqEMpt0b6w8uvnWdo0EmjFG0F//ANT7qskLNGrKAQOYRN86aI4eTbSvC6vk0FgnPzWsagjMDrLHiXkeXJoRyuf3ivpWLZSEzAshC6H0YG/3VI7vJiJWiCZWA0FxpoKidIc4WVWcItyQKfFQQvnXEGSOPLYlSMu79awuHCSyspQ3SMtuYE1j74eVziIBsiIienuqRHGIF8QJBs41y20sc1vnU7PHyvOHcXHXv+4H/KPn9xJ2UO3y3reRpflKRXJO7q+2TsPyobVh1DeT7qvG4a28c4q80ixDddzagQbjpq7sEHX5GUMCy7xfd21e9gOes9xlte4pJEN0YXBoSmNTKNA9tRQSWeKJzqFdwD9RsjZsjZD20VBBK7wDu+5X/KPn9xJ2UO36mIk33BUdlNaTajKOV9sn5T8qw8qiLEyYjQu5sym17GsO+322IUnabMWVVyn5231BtLZdg+XN2resRscQ8EUGFEkAjYgHi169wrGtJJIpiaNVjDWG5Tu76Eu0C/6hk5WI5gSMuS3RU+I2TqcTE8is1rMQbrb/AONPbFyytJBmK7b9eqo0EznNGpb0pzDT9K+iUed1Eo5bh7M3J6ajR55sgjlsVkIzWksDpv0qwSOVpsDFmeQ2tfPru1qdTiJhsdmFyvYcI5qgl28hklxMkTxZjbLyub3Clgd3vhAyyEniN7Lf3C9YtFmk0xATMXJZVJUbz21PFFK5zzRqzPLY8J9qsNDJOcpncejnLG2S9i3bQTO0lvac3P3G/wCUfP7iXsr3/wAmjHQWOvdQd7Zt91fLfurKhjQdAtQEoikG/l2NIXWF8nDcA2oPIkEjjczAVtckO1Pt2F6TWPkcO7k0xjEUebfksL0ybODI+rLYWajGIsOIzqVCrY0MuzWwy6dHRXI2a6BeT0dFMwKBm3npozARCU6FwBm76c+j5fFu5VNkhw6ZhY2VRcUyCOAI3EoAsaQIIlCcIFuT2V/EXvrjXvr+IvfXGvfXGvfXGvfXGvfXGvfXGvfXGvfXGvfXGvfXGvfX8Re+uNe+uNe+v4i99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99ca99MRqLD5/cSdle/y2qZo1CC2QW07aIEeyGXcf5AqRcHmoAAADmHlbKoXMbmw3nyFWUMp3g1YDSgqKEUbgo+qwjgjjDcWVQL0sbQxtGvCpUWHl2jQxtJ+IqL+TMkEaN0qgv5dRfn18uawzbr0TYXO89PltbToqw08illDFd1xu8rMqgFt5A31nyjPa2a2vksRf7wTsr3/Uy25Nckd5v/Uydle/ymr5i/o81ittaKFs+l72t/Uy9le/ylemgHfMAuUWFqzM2drW3f1MvZXv8t6GZMoK5hY3rNa2v9TL2V7/ACkDfalIi2dlsdRyqOZCmpOv9TL2V7/qHlc19RRynUdIt/Uy9le/ytz6UpL7VRHyhbhovmUta2VTuH9TJ2V7/wClP//EACsQAQACAgECBAYDAQEBAAAAAAEAESExQVFhEHGh8DCBkbHB8SBA0VDhYP/aAAgBAQABPyHwPE+Kfx9J+00eZ95UqWQNI/tFHYlBSa3bncyqqdvOX/ev4Fy/4GZXx34RD9D9pqeT7+KCU0jGBRTZ4O3SDgGR/KP/AMDcv+jfhfx9w3PSftNTyePW1GHjSHHmPm5h0MRQFW1j/jnxj4L4X8O5fw7+IeHM9J+01PM+/iOpCmFHIKBlWd51LxrcH+p/458Y+C/1z4dSpXjzPSftNTzPv4gzoXARrQXlJxAc9or6f33+dfHPhv8ASFSpXxL/AI8z0n7TU8z7+Pe0IMlI0UsVrjExMGNhuznHn/KpUqVKleFSpUqVKlSpUqVKlSpUqVKiSpUqVK/tVKlSpUqVKlSpUqVKlSpX9fmek/aanmffxWlrR1l+NjZF+mYVFqp0v+DJabHLI2cJfjvrcmrlrnGLxw8/C9YDWwXjWNvp4kTg2fLzQ4rmDYMqWp6i30eCiPajPqlQzOjYRNcq6QavpQvyJgJqvkIyw0cT86ricqX0D1ceD7zGwFKW2N0S4d1a6CGw/gzlLsTgbPCoOrpuvp4GN4NADbQcd4JEzRJ4VhwGnJH2J4Wgk3MBcQ+zE6nwTPjZbBUayr7PgzFALb39DMrzVWqxjxVpZzpg1uYS2C5V5OZ57s1XVxfEvzEBWrLJoClj29XNcy+CtWxfQz9I8eWQfIaZpXlP5onErNWNliWqAYdwGwLEyJ/ClG9q5oPLLl/1+Z6T9pqeT7y5cCDY/tHDNm4cKvLmHNVrknOdS/AUs04w1DswU2FUbl33eVnWRxtkjEVvtcY3WVV18r48p2tu7wB15foTHTUSC7SazRgh5Rk+bH4ClTgDYmF6JmFLuCJXmvtEcUENK6qA1wLpGF1k4fOBAjlHWEso1AvOwLcPV7TiEz9AyhaD+Qoo7frKo41dM2BN06RQdLrpcMai68gGgkGP5T0qc/PETaFqgbr1goq9xoX/AIevlBlQgluzE9kerwnC4fyuXt9zSCpGvk+cN6jlQxX21lFnv7/u5cxvejvg/SzFnE5388z1fncFvhnKws6VxOkbpNL+TUE+jgO+FVdXeFCtEhpGR2y1zDZ8oYLzXXcL6CHQWvNI5A+uOAeRdSigVGwhB4G0S/cDKItw05GdaRySjKRY9jmBirlKkce977w60aEN198ecUOysY5s23uq36vWCcoAM0IqBm7w6bhth05oC3f1mTh113SbLOBR2mBIwCG2jnodYZjpbC3CX64hlUduK6TMBuU4Ty5lomLmNnzwqUfD2l057Xl6wugrZOjpze4B5Jl9J9hOZPPbGvzbzupaEwXyV3rKJIFD4DY95btCzFCjyJUECNDgf7ME+Swoq3pazNL0dcMOt2/WCDcgTHZWeFyo6qiHdkXViMzOHtQFpXxjqKm+ilsbhbVnzQf+kbApmtmUhWO6ISEUN5ocKcvNCOq9ZjAenbTDAX5+0iFeDwaZf69loRg4Lcd2B4wRPnldJzXUmyaVPK1TPs/r8z0n7TQ8z7/w58F8Nxlwkn3QEfnER/V1B03KKWb3WfPwVU8QrHLU3Ok9PHcUlipPDmE+7MP1KJQcRIxtco3Klo+QAfZ4Y73fPiVXjx8MdaKYFAMBxKUO43lddJbrLv8AjbDKy0Uv7HhXhUqVK/hXhXhUrwqVKlRXlewahGFDAS001/Yf0P2jweZ9/gGpZ8yoxxjirzD9QLGKUFKwbH5xGG3qwFWMDhwRzaktmXT5DIXgzMYxzkvCl0Os7m35z5S2r6ZZp/kCTWm15zxM9S8ELBC4Muekp84iSreUX6IDua/PTuWKXdkspGw3iA3SnyYwQFTvaA0JbqriUQuDHAeh9IoBmeAv3Kc987hENLXp1ohqKqA5DA3Xn2jtLAsqA64zqIMU9ZIU1XHSWNPKANdlEonDEyb3U0OsbmETstz4XL8C/wDDr+Vy5cvxr+x6T9pqeTxvwvJ1iegium19XgwG9Vmba0VfSs3tQZlNZ3X1sLEre4sHjLPlZXyhpe95K7sn5zBc0r17syHZudOpB7F3adpxhsCNYpSsGK4hNoGqtldn0jlrKK57scPKo8uQIUV6Ox53ChfIha25VjcpVEvIei7c5iqRWQr1y6nmPDKctdg4YMMsz5wHa7gIjDiEHGrFAuC3DyqAboUD2bPtArgbKQj2TJDz3NXe/OImxQnyZhqJSgN7ti7+Uf8A4v0n7TV5n38UD2iRC0JMrfJ+ZggZpDqQF+i+Qr8S56p9oa8SUvkomFvT0iu2qshaYazqGumyNKZ1vOrm/HmK2WvYlfjHOWSXVax6zrSWGYw4KcJezUjkavNXKfnRguN2+iW+aXcRyWfKUWKaMpKGmz2JU33jjoXyW4vPWPAEnyocdW1v5QnEBJacqcX2WLZENrThoCyskS26wA0ZxjiBZlYQTTRxASHQbux+k1MruANKwWrvkhsPWjwvf833nVOFKDa0w27txDdAC5aV8vnLyLM7ZRdPxHSsr3QMTRauSdSHyxnEG2eAE1Acm3FYixLq6C7wxli67kKIFsgoBwMAevDNBMX0Dw+nvFMCx0GwfqKfnCK3NGba0B6w+rgef71/yf7vpP2mrzPvHwFHQplQuVrEtWd7xE5MfhHrHw9Y+0IPh2SobtH5hQrYzcu+2czNl6CjH0cS2VUXbXK/sm1OkasfzNz7q9Tb25iBF1Fo6a+cfYWMB3KLLQlh64Tlc4r5y7voNhaTJXIzKrM4C+GslON58ou8JPKDz1ZevnCSokFDhbmr4CX3yNkXbLbh08plxKzF1k31do7Amc0I0Api98uPcDtVfVCxICrPbXGdQW4FgJy5d3XcChjzMoU6uN1LcSq3NnIe/oxKDo4FldHbExlQLVkfNacVGk/YAvI/36Qmk3gK0gVqqxKg9w71cxnudoaV5Sq05irroyhD16geitwOK4RnQ2z7OIdRIgl3tmzfTiZFrc2I54+I+J/Qv4FSpX9S/wCHpP2jw8z7+Is6Czp2TF5JxEWpwZ8pd+GPlsLTBi1B/wAlBD035/gaEL19mjhV1mS7UT8qzDuXK5bAEDjALb0igpzHc90wY7y26IIFumgs53zALdbH0UZ+aGpirmhioyw2MsbAGQc7cAxu6ZYJqoj3dqFJjZKQ7MA2xQprVx0eiwYcNA1FspWMo5VR9FW4OrJlhi+adBx9pWs4nSAFF92VT+TcZOWh9cy5PmWh0EVTsz6EAMdZk7kogBuw6vOQxrGZ37UXVlxo2jHBDo25gyZN6F6ggd3EdIAij4GVKLvmW5RBvaFsquLfSN4cimOxCvqRDGCyCtYBYtFkybKw8QIsvapaPbmnoRYrvMbXbBQaVAsDvHJmCEbuihgyvMEBJbAENNzOS71NocOUAuCuzMqzNKDKvB7nImF9NNx2PWmxUbbQKUyx06yxwhUVsqZFdInmwVayYZ7z0j/A/tXLly5cuXLly5cv4npP2mh5n38WN2hKKmtwzx08uYzFZcmd9PH07Ai6pgGb5zLMgmKAEJ9t+fC4S3CiKItUZu02cMIbL0xHBaugBvUGFciBYFaw1bMLG4f5F3kw71HUwN2wWQfSLHUEK9e7m5yg2TqUWdRr0I5IMhy44EKk4CJzEG004haNPVwLG1lbxxiVQP7wdC0dzLKKZvdRKHNW9bI9sTKWgJnPkuE1JKBUWi3146xeylQgobHLrgmUGsBhAM9bZxKtNGQI0VeVba8opt4cwyZH/iMtsWsAuxagGUAezC0+o3AMF5F0go8qhpbYPKwj7nMpYEb0D6CmSpXCsVZFX5UlNEBsNqr845zoDe8KmXUaYfcmtoNsVyzHgWiTFqUpr5ahsT0KQNkyYO0wPTBvPTei3EtDvkXTbLt01BcFM2sGS2XPzNmzzYKzpDtW9WseldpKyz1YvK0jZsw85V6yAIRixhaoubHtr+Vy5cuXLly5cuXLly5fx34B8P0n7TQ8n38UI4cpmTQ0yHbGflG1YYY35hEpwIUZx817MGOs1MPNQM1W86j+jPZIntHHnPeJ7xPaJ56DvflATbctFxGVX5GY/eFQiHuJZN9PRur2Agj11YV3ehPdINog4b3wPviCXpj5ofzFmrDTw5O09wjjxUO18gvE2xW1KTFJuXf+J7ZMNRGgeU9oFU39ZW/KYtam3H0mP/M9wPBv6c90J7BPbJ7hPdJlvbynuE9ontE908H7RFCGywvjrHpsKD+EZnvE9sntk94nvE94nvE94nvE94nvE94nvE94nvE94nvE9ontk98nvE94nvE94nvE94nvEP4PwD4foP2mvkeJM2gPpBlg7K0r6czl1/4kV9gL4a5+buyvg9enoIz5z0z8+J4EIwKpKoyV6pHDBMXgGmc1dc4hhU2QjggpKz8ow7XRkUXfT1iaAYJaOau61+c2XNhoAv5yuHu0Rs+QYmHPNIBkPs7XLVvM9QdLT1gMlZPTaWcXzNxuLNrVfsHeC0lNjdA4cbbe0xAiHTgfMPSF+Gai6gvTVwPEuwUyPY2+Uzsr3yBdTcSDpLg4fgY7waqIL0Ert3YHNb+K/FuXLly5cuXLly/C5cuXLly5cuV4CcEQVZpqP3OP3uP3OP3OP3OP3OP3OP2OP2+D/wB/H7HH7PH7PH7PH7PH7PH7PH7PH7PH7vF7+gXeCDq3vH7nH7nH7PH7vD/7eLiqhceh9T26T9nikDZW0Vq9dH7HH7HAD2QN4/Y4/Y4P/Rx+xx+xx+5xSHei2dNdu87MwF6qz9q7sp4Mq+Pr/wCTs/Xj2V/k7J+eHoze+v8AIdH63+TsfXjsfXjtzdv63+TtfXjs/XjszJouS2B3Hb+vHb+vHb+vHb+vHb+vHb+vHb+vHb+vHb+vHb+vHb+vHb+vD/7uP3uP3uP3uP3uP3uP3uP3uP3uP3vwLftcftcftcftcftcftcftcftcftcftcftcZtKL2IqgW6SeT+U9sntkr9c9sntE9ontE9ontHj89+TEjkLoBC82Z+Vy90vrs62XXeXBXgN7AS35EStgwoSbKq7JuAwqIdX5laiDnMAbwgqYbrizoujheSWq2oFgpunTE6weJDbrnyjgFQirsDHGv6z4ngeCKYArq3RBUCi08HEPsOYo7I1vlhjKry9oR0dLIw6a7Y1ntDQZEBaAHuzH45kwOSrRm24Q3aBiyTeziq+iHnJ6y7FsTecZ7XGjSPSisZU3w6xwpkgC7o85MeUYsHS6DkuTzjPyOxRtju1nsQd4qdKSWtuqxF/pTzb0rfhlAR5ZU6PK3XTGJgjeGgqvVewbNwvpijWc5cqvK5bIkChUyKENzEu9jgFcpfv4VKlSpUqVKlSpUqMqVKlSpUqVKleNSpUqVKlSpU9q6z1XxXnP8ARKs3qDxCKn0ex1f6JS5pRiuqVjfXMMZMI1lCrt+sDRc8rbCUa+nVtmw35wrPVcBCx5sqUuKGdVNvfobYmQEarAb8rWBuXpAKU+QfGf4VK/keB4ZaKjMranPlN7LFcnVdXZ6Y4mXvsxw6m9korGqWG4Y7gweXA8okAAXezHysQZIRCocXjG3JW5igo8uEx5tvrbGuvI00cL9ekbQS4EWqjjFsIOkgWeQoHIN5cEqGzF6aVTPbzuXXr5CrVNCooZ84i5y0HXMRyW211G3nPLKVzEl6xh3dVuUBZaKkc6tt2sOFS4enKb3moxtatqrA00QikXrXnBVAAH0/s18P2rrPVfl8X3DrgYrwf6r4ni+L4H8sPdZgo17V7lwPdvymqSkIFZ5jP0Qt3vwBAAJl+yChw1xyy1vWHVuIY1YUxCuWAS+Hwm4ImORcSzQVbA3ja6+yWhoFu26CyxpllCLlFDeUrzSUFHRI2OVYd4V9I+U1dDI4gsV5enVdNOllXgMFsheb+QgAi/TmaM3y44mFk7Sz3HDR5zObUCZAC6Ohdxx4r3QX2dXca81OgYG6dV3UEL/eAPj1KlSpUqV8VEmXanMtYCo1z8Afx996oa+CfFqJKlfxqVEleB/H27rASVoFBlH7FmJbzW+RVlbwugmX+8glWIOTs5g6tuO0zIM4eGtTCmC54jji8CDMVQGDCqXN3qWPwt3fXSvNubOnNl2rijt6yhhHDAYVaY4B85WJFVcitzXyf8bao5ewdjUzWo+F7izWH0lTjybDKfSULPdbi1KK5XxqE+93kom/GLffFRSwRNVnjjr9I6uTYlRIeVYmfvWiqjxlq3Goa/4fuPX4S/HD2ucE/wDiLA+GdoG67GtFRxuXHpPJKqDnE0SiKUdmfDN91fLVsH5YDYYEuPdtUBbKs11Zwu63qP5hD1PDuEYFHZ6x6LtW0X5yxsSryaM64fgLiEtbJUugyxU+5HG7qIJTs6ngOVcAA/WE0i7QYQooosh1r4FHusxeYQL5j/Et7RDYFTRN0b9HtLA1Q8UIRTwtjN8osp0HXPdPTZBK8K8WPqirv2kg7XAorAXAFsRyb6zRgS3zHiDWEWLuVW/lH0QVyt1S9p80W1DQCvYLywqSQDEMLcw4mu8XO4luqdx9Z3Ev1l+sv1Zfqy/Vl+rL9WX6sv1Zfqy/Vl+rL9WX6sv1Zfqy/Vl+rL9WX6sv1Zfqy/Vl+rLdWW6sv1Zfqy/Vl+rL9WX6sv1Zfqy/Vjv2efiGALCDzRcGC0NQq5a4gnsJ59twKuEdBCzpWVf1IQHX1im13vPWXS1bydKijYUpNBfF69NSvcRID5kQjkQpULO8twt2eJrNDnEReQEdLR0MwpWnYc9zVeaHlFH3XLreay+krGsWT0WWvlBU92a5NLLNmXEL1Pjrg/cxr6KDIVmCcR4ozgXbnr8rgbqzBQstFebiQION5NmXEG1D5J6MvaWh0BwiCKErsy4hmyzQ4BXdxH4gSrSLYZS2DpGMaLIgKMKnWpd0IdKOSd+ZgwYirfur5zeksnNc4VoMbaaBZGzeaF+hAZquxd/Tb6weSlotGhi4pSoTkrAgNK6oghC64K6Wl3MXKAJ176TId40JZ0NWh3KU5lVlBzsV8yqrfgfx9+6w/wC/bTE7vEyhnq6xuYLTiWfN0iJRh2m1RAP6ggXI70tjQIQGsjL7bSsmAeclzOEKyzUorgg4lepmku6KgsA5H0g69z0lVRuukoaEox4rJeX0gGeln0yhrl3hHhrYnIKy6lSsBqSUMroKydEPyuWd2AfLmX/cq5Xj5P60vfkmvP4PtfX4gEATCPMED2pBAeNcV8q/j5z3meeu8q/DU1/M8EwzSEuaaU3KSpUqVKlSvBUqV/Gg+64KBZzL7DLFISq0J0RyeTEEJUUF7ZnfHYKKl48mV7zuQu5gJpJYHrmXTuMejHSurq66QEE4qsECSYZS6pv5w603IURPpKdWHc+savSQFo+UQLzUoPDkgOE8aYUlZWVlZWVlZWVlZWVlZWVlZWVgLLIqjrRMrDF7SyxqdbT5WQG2wTThVA3biFi5WU7yneU7yneU7yneexO/iDcq0KYzspkbYVUWlvL5R/EfrRcS1NiRpWwQgoMI593cWMzxsa239IqmkE5aBw79e0+2SfpTjrcQqNjYF1urjiwaHAwuX5w0DzGEvnWI4ya0mDhuuXco4aYF0zVkHLVMm9vI3xEEYF4y94x5zCbGoLytfAL8FSvBU1/Bly5cGX8Ie55gfLFxSxC7CnGKgkiGPFQ16i4ZF5nU9bGjP3h1WUZatDCWcxLaEJaxr1b9pdIVXhttdOLmMGOqcGgHT7EotWCQ0qC9WYT/ADWbCp0xVxwOAfwawtMLU77iCXUZWQxfaFsUBSrMFuG+neNW9gGjhY1FYOXDdqgkRyWOskYpTnfBFoF5Vwu9qXWJsXYKd2nIJaeajLVf5CjyBrVsU4wr8YbNh01mHRXupbZoN9ekYljEApOCNv8A5/WB2yREvzxz5RM74Aff9S133AJN7pblQgZYvVcxURb/AJ+49fiDc9h3SgvtMwGwC1UFoXbQuBfoiNgns383ruGJUbcW96Mss2ILHVIPTmWjEKh0AvTvcpBpU0V8zHymj0Z91FwYLFaYdGH7xaxekEcA585rO4dQuAux6zObc416TzQHtqRUdvVFfFpaWusvXwNeNy5cuWTExH+ASofwT+PsHWCp1rVeiX84OD4KnpBIWgK9y4xqs6gca1HE9yhcs4vg0kowERK87+bvOCujW6684OGqr35uscMCFoq00cOoufG6/wBBmxYob6EIrlKDDg6PlLZKAHvFxWNODcRhrNTCJcLTpUTpljyHSpbWKiTrYTyIxOGBK1GAbaN5JWOYklwDRQ0YYIqJLRtVW9cB9P69fC956/EVeIUxbEFNW31n7JH7JH7RH7ZH7JH7JH7ZH7dH7RFv+iP3iP3CP3CP3CP2+P2mP2OP3OP3OP3uK59Bq0OD65H7HH7HH7HDZ3CrvNbjHGzSq/kvUP8A08fucEF/RS/eVlJSUlZSVlZXvK94oDS282HHBLqazkVeSCDZ4zTa9Mai4qfwIhac7dw7j1qUKvFYZesHkp9tbnoOhhylW4CUHWkpMxxBUxiA3uKO0KC7wHfLjyzMhHMqL4Q7jMwFL5IXDM1uHXUCWiwBSbznOuZe5eogdQK76lXqvqKVBwym+8qIKELETK6vtXzhsXPIC2Tm+1TBhOVsqG9AZO5kigj2i3rWWli4vIlzXi9TGYxxrXSJdU3ec5Ok4I7MB5p/hcuXLly5cuXLly5cuXLly5f8rly5fj7T1+INnhX8WVKj8T0f7T3Xl/Bd81dt3ud9Sv8AQZXg/Dw3pPNJRnzY5yN1VRUxljJMVbr6aF15CoM64c9Iux6JSWIs67SzbeXJTmV8oSXpS88BhIHizTQVD6kWCIWgpGL6d8SoJm18beeEJ31FSkHFViZKXuuqzgCuhuC2A2N0sVWOl94CmBjGgV3zj72gDWD8gw2Xd82x+UWpZxVsHy5uXOaRM6XjFUTHwGagt0K5d3uEURgAYAGsMOJTXKWWJVveE9lfmeyvzPZX5nsr8z2V+Z7K/M9lfmeyvzPZX5nsr8z2V+Z7K/M9lfmeyvzPZX5nsr8z2V+Z7K/M9lfmeyvzPZX5nsr8z2V+Z7K/M9lfmeyvzPZX5nsr8z2V+Z7K/M9lfmeyvzPZX5nsj8wQ4GmL8nxKvE7M7frO36zt+s7frO36zs+s7frO36zs+s7PrOzO36zt+s7frO36zt+s7frOz6zt+s7frNK4/aCtWbP6bUnfPyjIwoXW9OS7FTFZm/iFnmG5g9glsm8rpLqoNk8JoeiGGCgFRzTl8pTEq7tgqVxdzETlrd+t0+koREObCLmw4qpSAVGoHRhvyjiKFhrBdW57TaoIg6FUOEmCmT6qyqm8xl4wRLaPFcRKIBVgqUrufWYISrfPX0FygpyJLDeIrWpzrYACC9X6TYEHOu8hi99ppR9Yv+H6Z9vh3g78D+dfArxrw9F+01eZ4H8ag+GMrYX6keV0dpAqvm3HsIKZFlDhk7sqkahoHI6xIX24MQAuHG+8K7e4T1D/ACZh3TmVVXn84uUrnAWblsfVWRkbZzqcpflF5ALzzmyZiKKg40bfWfhzLO8zET1ZMAw9mDAqPdawzCsyegKybu2/vjL4ampZvgSmjfIgCMs9HrAoFkViw8nWDCq9Fwcun8qlSpXw6lSpX8alSpUqV4+gfb4h8N/g/wA/RftNTzIeFrUC8XiDFH7GGjeYREweB9PHT4ZaDQRkz94gtkAG719C3tBhOuMGWgz6PaZtsboUGA7T6zbZpZEvJDbTKAac7AJRzdmohARon0bgFXqBDeLNYzmF81W9m9NQnTLS2sihxuBLi2L1quBMh+gELltsdNxJFcbglDebbx5MbsWtFFV1o5+kcoHhRfJBSOrKC2VxzG22rtJyb6k09FXG266QZCXHUNp9SJ9zIl4HUdDLHtArXluL3qKMjZ6QjcaUrq7xPcH4nuz8T3Z+J7s/E90fieyPxPZH4nsj8T2R+J7I/E9kfieyPxPZH4nur8T3R+J7s/E92fie7PxPdH4nur8T2V+J7K/E9kfiezPxPZn4nsz8T2Z+J7M/E9mfiezPxPdH4iJytMXyx8Q+Ex/nfiT0n7TU8kPGksY0sdB6THIAimxzjz+Me29Yuu1kVDu8TL/6IiwP1bem+kyEbk4HfQv5QKogDwl8iB06C+9T05MzAEPqaltqVVZZqoTfTOpAaXnh0mIhAlYaAVjhuIAwipYGi1/yFAg27dzk68wXNMjZDgx0Xvia2ugWy2xtuXmAzxSmAkzm/wAifHVuqv8AIgsHFml73OajWKEAevSGygIykMGWr12gFSoqF2l5r2lztjInijXL6whjtD6ZBWYt+aAWxMhgpFhVVy+sJIXPnYB8v5H9r3Hr8NSVlZTrO5O5O5O5O5O5O5O9KykpLly5cuXLg3PSftNTyQlRaW8dC5jNrekfMnFiTp8a916wrilrVdjK+UIoFRSJ0RyPZmfdYr96l95hgHaEXj7iEXVS5UBfyAiBcwC+c41MIkq/nDQkCurTQfV8FQIFVyCrxvk+sogWENhviuZ5QNjWoBzOkR0afTx2tQRyUGIINlTgG2cdpWfivwD4fuPX/gt56TNTyQ8RSVdwwMfeDOGmGZznUPDX4bmdFz3jJJxqlic2FPCtQtwPg6B2+YvEv61XwJmc4mbUDs584KkLdTuTOmy8S/m5TFtUoa3jZ26Fj5HeWbBkGgAi3gdd9JhfC/UL0AJXrNnH8LRvI1alcQjkMXBTVtUGcMYu2rTLho5vrXaBgmA6DByrncuBEQQMTiUPf+wWVzXqJsFart1jlLhNbWaVr1j2mHCob5S0OeeIttGOgaXqlQfOP4gjMuWcARTxEsqT7SKOqqz6TPj9Rq9EUd7titFqWFdFXr3qP87ly/F+AfD9x6/8FvPSZqeSHien8Nfh+z9ZJvL2bh3pL2/WDyzQ0E5xDEzVdX5EKHBeAr8KkL5YG4gYYMIvcL+iLDKSUDYdjF5dDY5Ker0IXREBA9HWEjFSmsAz1wE2ibEeS9RRX25U6hx8pqHGG4ayzEOURc89zdRjRSYQ6FThV1WIc0aHY/KDTQrH6Ym3OL+Vcurmi7RjEt5TgYSecEFgVatdvxL+CfD9x6/8FtPSftNTyQ8AZZHCMoFrqU7r74lyhHe2nx1+GxPKHzf/ACXyAPbZYiytcY9pRnz5Rhta7ZSW83K1kS9uXeMxLpqF10nF0GXl1D9roVZkMnFWl5TwCg7e+a9YqQ8MOdN23daxAYnV5gn5zLhlkAWUX2LVuczCWkESN8i2quu8wuMM3BwNG3qi5bK5TLi3WUE8UFq3KRoq3hhyQlY6RN02694zgvgOlMubfIYfFwmojcU7sxJk8YrEC+QfWXyo59G0dlXxuPHnuLd8/wDD9x6/8FtPTftNTyQZcuKTZWJ1vcZVrwtF6+F/EAHrqfnGKGadyZLONG+IE78ZPLgPKCDaJW7T9sS0fKCN1atl7KZbRoK4or9cx6u4k3lwXtWrqOcyI8pa/vAssQtSIFB022zZH2gpKsN55l2Ay8IlJwFcVKkRCKytwP4gLFCti9HzyiqIidFDD5H3gxZ4DPUFX8ysxEKpCtDs+fmy8+4LcENHNjt2ldmeaTaMAaekfP8Adk0Q4qqdFSv7J8L3Hr/wj+ljweTxbShV16Stvt9PHBHjWlEt7x4PxHn5ep/kyNMWHq4Hu35SpF+lZUfMZ+iZEQ160MCoq7uuW1LaYvReCASldTpQ5twjgdzhVDS7E66xB4+x18gu+Lyx4waw7hhrc40RwkbKrpw32mMVs6WDJTMRUrdjacArZuP1N/UybtOrUEPD/N9t30StS1c0VW42W65YlUzUeXm0ltS5pjVXThox5MtQVDMUINuleSx7xUXAL0f3jsUAEc0CjDucCVg6mbfDgGF5a4Baqkzqg+UTYCZeUSG/khqNh7L8hq83pL1LVikVaEpXk63HNiQoF2XilPz/AEz4XuPX/hPTftNPI+/jhK5qup5YbBweFLjmOvhnKaXqQOolcgijrx1MRngOQRWXLC0EJcsx3sFK/wDUMeUtK1VN7Ya1uIrkqVi0BwHJKM9bkl8xtfEruMu3VlWOrflKKESLQKrRR0Z85kbS7qDb9EF121CxDZnNyxHRphhYe9PTvHUbCeMK7wWneA6wLoFb75eka9PTHl7N06RLafAAWGLvr9Yh4Dj7B4VvG2oOhY8A/RFQRKSjQ0y3fSU0ns9go6Z+koZ4kpEUBw6jUrIJ1H1AH0Jnb2TaHDnnVxFWroIaFXUCx5zta8WVofSvnNC/6VfzuXLlz3Hr/wAJ8pDx8rYZsdOlWc2ly4gqLQiWiTKJPJhNgMv+Al+HHw/a+sA4tSbff/2YzMStSG0N+j2g8ZoSEHR1NSn0BN7CnmamfYfIZepbyKpx59oBXBR9XkM0vHynmzj5y2dKW02pnfaNipbQBbmhiuWJQsUKAabOmvqSmNZMiuu9Snx1gDcF2n+plCWZX5blFthLKNylMiRq/KVstVgR0+sw1SO67uoewhUTUq067IjqmBs/UBnDMLcpoBlg71M0BVTJTyi4v2XTeLvEqsf0z+b/AB9h6/8ABOofoY/oPvDwuF5gtXxx6Qfz/nePHxJldfoJja3iZTfqRbh7vzH5umtRMyJZMwNMadwCv26C3TqzOMdoLvhcIZ2hQXLzKlyNGgGpTvruUdUsVOT0455lUvWhaoAaVvJHkGuYFRoeXUoWn5vwHfWq3xLTV1Aga3XZF80GUp/wPNlVYIVFpeswsukpiG4Jq2Yv8ht6q7qlOb0lQHLeYgDpznE3cD8UGDLVjUs/pNElfDmj0hZFDJurQ1eXvCPPFHsMHGQ5zW5gQoKYUjsVWTLGoMUJ3NtQ+X9t/j7z1/4Jj+h+018j7y5cbC0ZwXGhZFwA8yXgl7Ch9ZcuD8P2vrFcC9wo7bPyiU6qDZ0TZ5MCNrQIvpmEkUsDhJToXK6IPylf/Q8r5KcYjFAFq4Ikixy1lVd4ldbq1WOoIabBq6D82HTIQDuDPJK6zic/5LbUXDVHZmdUS2eaVnvD+tXwjx956/8ABaxfQx48j7y4ZlxtC1C8DH+sNj1TQKy4wS5cWfhm/Y5ioIbBVJC7CnGK1EWBE8JLXqFluL4hV9RjVTNA1rchwwU4iTRhiKL0bUfKIw1wQuqMV0xm/rB8UXSLaXbmtTIbzpXmubyxjFRGbdnt4N2WoNI98guDvn8S2phV13sQdQ8Zs4AuT0l6ojTkehvvcsaQFUanGhr+u42Btk1jqzfNAQRa5CVZVCl/i8aFK3S0PrFk3oSK0i7d6qOlx1p83np/VPje49f+C1nof2mp5Pv4EWXDo8Fx4/DFBhbdYog3sr5ls7frBxjqkQEbtAAPUuf4wZj0g3wBOnTMV0gU5E84GAp9MrHTGI/Py9YdYHySledU5iEzohutaiZ2q2BX4u0RNPUGOsOC2Z2MGg+2IPm8kCDMG73oVnriUMJO/gNcTQv9fQs5+czKfVGR9HOp+szH+JP1ufrk/XZ+mz9Hn6/P0+fp8F/zwX/LP0+fpc/T5+nz9bn6fP0+fps/TZ+vz9Hn6vP1efq8/V5+rz9Xn6vP1efq8/V5+rz9HgNyksef2/4OsX0M1PJ9/EGRY7JgRGuxgiQhWrLe8MfDT8RLhAhUowwe7UBQHi2LWdHcerg8BpZQ7GAwA0BgmKpFIHylSpR0lWVNIqRnnrcW2orlNUcbleBUYbHrefh25bH1V4OYWVVQUvJplHSc3zAHnTTmulwFyzgZ83gllOoAkBKAYgAADAHHg9GLdiu3hUQD1kCu/WZeS7I6XOZWAOj/AM/WemzU8n3/AIAI5LE63v7xBZaUqL18dP8A9FpPTftNXk+/jcyrB3EbRbVMMGCzMx/9HeUkd+Gn/wCi0npf2mvyffxJ7QSFwfBhD8+0dYQLhQeOv/6LWel/aavJ9/EGWgubBztHHFd5t3MU9moF+A4f/Raz0v7TU8n38VFpoHoxM7/eLHftzBFhLYbtvia8Nv8A6LWel/aavJ9/FQM4OZgmidhj30gGmxEXr47f/L3LJZ1lnWWdZZ1lnWWdZZ1lnWWdY7J6X9pr8n38bYS1sTOTVo6MfuaI+WJHgb/+OuOfGpX8H+F+B4suE9F+01+T7wfElw8DZ/8AGf/aAAwDAQACAAMAAAAQbf7/AP8AtNtte/ttiX//AP8A/wD/AP8A/wD/AP8A/wD/APTbbz//AP8A/wD/AH//AP8Avp//APxzshkm++/+/a22n/32+KVf/wD/AP8A/wD/AP8A/wD/AP8A/wDttt5//wC3/wD+/wD/AN/v/wD+w2stpG333+/V209Sbe/FZ/8A/wD/AP8A/wD/AP8A/wD/AP8A9ttttf8A/wB//wD9/wDv/wC/2w2yhJlmyP8At/3/AP8A/n/6+F7/AP8A/wD/AP8A/wD/AP8A/wD/AP8A7bbbX/8A9/8A/wDf/wD/APvtsIBIAID8tB//AP8A/wAtv/8Av8P/AL3/AP8A/wD/AP8A/wD/AP8A/wD8229n/wD7f/8A/f8A/wD/AP8A20gAAEkgFtnbbbbS3/8A/wD55f3zbZZbbaTaYTZbe22f/wBvv9v/AP8A3v8A82/gTJNtpP8A/wD/AP8A/wD/AP8A3/8A/ot+y5/vN6IYGjKLpE2LEDL72ny2x3MfnzHoEwnyml//AP8A/wD/AP8A/wD/AL/22OzpJZxCg9EhsRyIW4k3+TDMEFansfeDQ2I0+gtMsP8A/wD/AP8A/wD/AP8A9/8AfrrntY6ijdf8XOVDYBnY+7tOno17WjgMGoRYgx//ANEv/wD/AP8A/wD/AP8A/wA//wDv0we/zrBn9Ml1rIdvv/3/AP8A+/8A/wD/AHba7+/dvy427Lb/AP8A/wD/AP8A/wD/APvbfPfad4M9YeQjNUQ/8n3/AOP/AP8A/wD/AP8A/wD/AP8A/wD7X/8A/sNJL/8A/wD/AP8A/wD/AP39vntaxRWj6xh0Rbjb1/ECHof/AP8A3/8A/wD/AP8A/wD/AP73/wD/AKbb/wD/AP8A/wD/AP8A/wD/APu9tta/+G2FAeoTQM1qaCJSf/8APf8A8uv/AP8A/wD/AP3v/wD/AH//AP8A/wD/AP8A/wD/APv/ALPb7G+ltoUwac11JjLm/arLbL6rSzbX/wD/AP8A/wD/AP8A/wD/AP8Ak0N2++f/AP8A/wD7rf7NpR6E2tPfkMplqkPIn37Eybe37z2222222MSSSSADzLbbX/8A/wD/APLY/mQHCyDpsFp9kV/ibJZrfbf6eyW/bbbbbbbaySSSwQ7TbbX/AP8A/wD6jYQ8EKi2IzyZ4ftrb8N//wD/AP8A/wCkkkks22222238gAG7IN13/nbbbbTW9SbYFlr/AHEYhPGlvHn1gkkkkkEkkkmkySSSV9vrbb/tRpz5Ottttt/9SabYSQJe4mfc7vW5L/bbbbbZttttt9bbbbeJ/wDf/wDePUmF0q2222+53oCe4JKu5e6pxIbbbQ222222+/8A/wD/AH222228P/8Av/8A56qfO/jbbbbfUG/XIYkm/wC/3EfXbSac+222222//wD/APbbbbbbd/8A/wDv/wALqfv/AM2kk229Mnbq+IB//V2YqzCUmZOySSSSSSSSSSZCSW22f/8A/wDb8O/v8bZ4tlpfAFpuP+Gk35uxpfbSZ7tSSSSSSSSSSSS/SSAAGf8A/wD/AP8AIJ+0uNT6BawXi6hCV/VP+fdMrSX22ff/APvbbbbbbbbZv7tJJJ//AP8A/wDwxG3eZztRUnSxaAWkLWhsu+Zd5bvbJtvf/wC22222222wxS//APn/AP8A/wD+Fsl9XcDYRsOWln7zk9+G3MSv/wD9/t9vvmgkkkkkkkkm30kklpf/AP8A/wDh+qc4UgtsAJHkHlvrMjQ/WnvJt/vvt/8ALbbbbbbbbbba/bbbLv8A/wD/AP8Aai+e3xpIEgvxZJFhgj3e2ZkOd5F0AqIQd/8A/wD/AP8A/wD/APwSd/8A7z//AP8A/wDmKKbJKAAAJJaWn1v/AP8A/wD/AOE6mgNRjJH+QAAAAAAAAAAAAAADO/8A/wD/AP8AVtJFFIJJIFMtabbd/wD/AP8A++frzO+HUQJZL777777777777774f/8A/wD/AOUJJIolJJEogqDbad//AP8A/wCmhDa5QWDdtlgAAAAAAAAAAAAABmf/AP8A/wD5FpJJIJJIAAMFPW7T/wD/AP8A+du2/PIzuCOtOW2SSSTW23/zTTSQ/wD/AP8A/wDwSSSQaQCC0gYDmv2//wD/AP8AlSuJ/wCyT37b+UkmSSSwkkkgSSSSU/8A/wD/APa7/wD/APt8WkCjiT2ntf8A/wD/AP74kHdfp/fL/s//APbbbf8A/wD/ALbbbbe//wD/AP8A/wD/AP8A/wD/AP8A/wD/ANiRn/mf/wD/AP8A8uir7p7bvftf/wD/AH/23/8A/wD7bbbbd/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD9iRm3mf8A/wD/APhBE2ld5Z9tvNf/AP8A+33/AP8A/wC22223f/8A/wD/AP8A/wD/AP8A/wD/AP8A/wDYkZp5n/8A/wD/AJu0/QNtYwBP2/8A/wD/AL//AP8A/wDbbbbbd/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AMllJOf/AP8A/wD8jcpDt7PWbFls/wD/AP8A/wD/AP8A/wD22223f/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD8CsrJ/wD/AP8A/wD1+YA7y/c8hIJR/wD/AP8A/wD/AP8A/wBtttt7/wD/AP8A/wD/AP8A/wD/AP8A/wD/APykEIb7/wD/AP8A/nE/HVekW301ix//AP8A/wD/AP8A77bb/wD6P/8A/wD/AP8A/wD/AP8A/wD/AP8A/wDF8CeyP/8A/wD/ANwrp1ENptpNtrn/AP8A/wD/AP8A/wDbbbf7d/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD8/wC3eWf/AP8A/wD+jf5aoNtJtS2U/wD/AP8A/wD/AP8A7bbbfb5//wD/AP8A/wD/AP8A/wD/AP8A/wD/AOfhvaL/AP8A/wD/AJsTceNppNN3/wD/AP8A/wD/AP8A/wC+222++2f/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/ufz/pv/AP8A/wD9fX5eJJJtJlu//wD7/wD7/wC/bbbbfbd//wD/AP8A/wD/AP8A/wD/AP8A/wD/AOt//uX/AP8A/wD/AIQ0TfpNN/xzG2CIMCYZOff/AP8A/wD/APf/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/rfb/e3/AP8A/wD5PbbdtJpJfnp6n/Kvb7/7/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AM9/pvt//wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/APy/+w23/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8Ay3+8D1//AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/C2ySf8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8Awltm8/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/APwttun3/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wDsv6Sb/wDiW2Tdv/8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP2mGSwGgfPIFWS3TeX/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP/EACoRAAMAAQMEAQQCAwEBAAAAAAABESEQMWEgMEFRoUBQYHGBkbHB4fDR/9oACAEDAQE/EPon2tvsC6mvsCV0JT6p9psv16651X6lOaE79Iuil7SVjeSfZ30sX0yV6AlO1CfUYZJm/YF2H0sX02z6CE+7rqpeqfT7O5SlKUv3elKUpR/XJxaE79mfQlhzcrOAmnhbiZolkY0aHhUmYulMuC4utBObF3Ugkfmi2qW7JmuqMV2l/Iq5z25EF/sESVZUbSVms8m4lQWsPFErmi2Z6ekuxsmxKshh6aE7pwbD3NhvMKXTCJhsWVdcoIaGsUTqpgp5g0JURtBqLcbyNzcePs1aw8GVOKbcwfDifwRGPm5DeNh4NpjXkPSDwZU9CeBabjE2uxsPEpqnd3gXE93C6HhZwMwaX8lOrTrjPBS03b52E6mnkt4+CgyRvEf+Stxi6JaeBPIf4Ixz7JC4Z4S0WVHprDT4GsoyH7Fg3Fv/ALEscjdgx73Vbv7HkvYyyeFdBvfsYQozS9iyr2JRJG1PY1lMYTixf6jSjdSMCJNPwv8AIpD0hefsxt3dbDNst39lPJvWx4IaKmKXOiaEoOiCFcrYaihK/opSpCDbSS/jcQpARsR/wU3T+iHhCUrUTfBux0PR7QtZYN3p8NexujyQmlyn6E5rCaFicExD0Y8m+4lITSm+5YN0edB7iZLueTYX2JKiCBhZNMg77PgEv7CwGAKOHul70Kk36NibLlPYmYZGoUGtxMNuEN/xgJUy8i7xm3LL/sd0K0XSiz9RSlKXvJzUTv2J7mwlIrc9v/fwLKExvRIp4KHgQ04THkn66E8p+hOIwDyPZpeRw3HnfI2VWDxPIBcCEQhBKD0W3QoT7KnBO/Yt4J3ihqsS6IJAiWLcQ68ahFTkEElbS43EbeFokeCTckS52HC+zGjYyarczU9kVpCQ2ZJcsau3guDeRqNIRAlgoaEkrwiOpDxJ+xrDYnGxFL0Eyonfsqc+xgttEN+RO6MhYCs8idUc/wDomz6WrgcSZUov0WfxYfBCnkLwZHgzMmxcbDpU8HgGDUbGa3oaVtDRNCwS9MSP7DVRPwN1pmQLuFpsSUjyiupiVJei4aHmjZ5HQlO4iaP7xBEJgktnka9jo/ZknsWkNy4b9D2b9DUMGC7BI0e0TR4JmwHs2JVwQlmCVkLomKJbeTFlPg8XowJ+xPIS2CYhO3S6Lof1UEEDU1SIQhCD+hsEoqxOjGLxHj3pwUIWj2a9nhr2NTJE3DVply3oi7cDhTkezQnHRYLux6F0b5G8PJbCwnyeJ0YEvRAW5pEmjELoZCEIQhCEIQhCE724Wl6n250IRsezcMVDXBc2A3nRS1jxpCENjfolGoPCGzzBxpSl6XknfhB0QhCEFo6ZMmTJkyZMmTJkyZ0pSlKUpS9DVJH2H20PVWk5ZKoX2XoU60Zz+Blh9dDQl0MpS6WGw2Dyng3a4Dz1eGjwlpS99dp/WD3H1XuXVKnkKphJP2RSEUe/jqauidFE/BPbgraUG35QhiJ0wn0T7sIQhCEJpOmlKUvRZl6wmiDwUv0GzuPR6PcxcmUYkYe0H/f4X+TNjYh7l0mkJrCEH9kQ+5uNVOilG6QhO6ldCU6IQnVB46GkxvJMSSdhviYkksEHvrTfsP7Ih9xZMMIS13arV9zZ0TRazqfQycx+3IGS1056fobjghRa3sP7Je6t9Xpu1ur7mzopuIpS9T6G63sNNpdqwJ/4lsmPn/g6YGp1LWl1hPuC30oy4b9G7SEODIt6PQSC8np9D3NmrwLYeINZ0hNGivsk1ao1NfYx4C3Iqow4KUTpSlEyl0nTCEIQhCEIQhCEIQhCEIQhNIQhCEIQndyaE1RbM3SP8Y1UhrTyl7G4j9N/yJieWJmLVbMWxDVcJ7nhLXcywJp7aTAmFeWKszweQ3l+xay+AzJp6Y2Qndd2uLQSbeQbcSbLfljttigaC6Ak1n1z6qUpS93Bo4GzRuJhrRrRMp+ieCWUarJokJ5M7kJqQSqJJbaIWFweaTNGsiRNEGhoS13arOGLImPe4tr4fjYTKbiGylLqilL10ukIQhCEIQhCEIQhNFkhSl6lt3FuJAJ1r9jRkehuOa3VOtpeB7k8DivAlXCid6YQhBdVKXSl13atCSaqbz4/gbevJcRIotKXrvRfq0xvs+O4txoj9CwNU9DVdJoym5k3fIqs+BnvFhnoSnSuhdT030fRu1axBdzlyJlf+cjSCRCffFuUpSlLpCdyl1pSlKUZJXUsooooburo02G7NjeNxW1OaiXgaKUbL0JjZ+gno3NFFej9NFKUpSlKUpSlKUpSl0fofofpopSl0JR7zuLf6ddiI+3UYJ4o1CkOyGJTCWkj8AJrA0qyMPYkeNqeWBedRq8T1IIbqcMYWA9SnpTgnHOOcc45xzjnHOOcc45xzjnHOOcc45xzjnHOOcc45xzjnHOOcc45xzjnHOOcc44zshefV3Fv9Ouxs7dvm7HKLrwqTZ4K6r/ZnW1gsmM2zZuN2ZbbmIp1+aJk45lk3hO+/wDIuvIEsj3DtGrheOR1RulT2UFXeTX8ou2W7XpMWt5JfK/18i1hk0vJFsPPH/0foLz/AMEZQvdK9/Jfv5L9/Jfv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5K9/JXv5MPI2092NZfvt0T6e9jZ23wNjMm6UkpU49zZv8f9HVolksDWyaN63X+h92e5sdgandv+jRSsJsOXT9J80Txub2fAmDRfRBZNpL0PQpH6H0PGfkUSeCX9EJtPc5aJHXFNhaw4+DYDczbYeBIzPpmeTPJnkzyZ5M8meTPJnkzyZ5M8meTPJnkzyZ5M8meTPJnkzyZ5M8meTPJnkzyZ5M8meTPhP+iN4f9CtK3vX9kXXs7efJIYbg3ngfRQE9KqMOwPKmC86mOQJOyl8TB02HqUruol+Aq1qNViFGqzjnBG/xOGcM4JwDgHAOAcA4BwDgHAOAcA4BwDgHAOAcA4BwDgHAOAcA4BwDgHAOAcA4Al4SE0xvraXqXXs7fgbmCOj5Q0HNzflmWR9S6IPSdcIQhCEIQhCEIQhCEIQhCEIQhNPHbpUVFRUVFRUVFRUVFRV0hSl0J3Vdezt+MCr1/Q1bov8AY1BInQnqy6XRF0ovwLdquvZ23ML0WCjZ+XsJvde8YgnRtpCE0ukITSG3QvwLdquvZ20C/wCHmDX7Hs4BrpulKUul63+AbtV17O3a8AJluraCmo72vyIetLpdLotbpB/ge7W9VNnbSTG8jxZIWECxD6JpNJrgxrZ+Cbui9LHt23lPc+EN0YUV1r3NsD6XrdIQhCG2tNyDX1t8fYd3SilLo9u28JvaPVWT3WDBUl/5n/hJsbim+r0hCdU0hNX9+ThehD6Ht22iYrIopa6Yr5N2lLpDbvv8AWt6Xt26qCUpnk84G/Ezf2ZrZu6FpOzSlKUv39aWFL1PbtpVnYwaVe5TJvj1pu6F23+C3SlLqJ0o33BcmkmPz4LV0/MWEhq6buhdtk/C04LPcLaCIiwTswUSSUQ1RqaTsbCl0eTKwKtE2Y2va/skN0TwImy8Euw5KssVh59DeYvG5uPwJN7Ik12Ho8I2+9JwbvcrKysr76cq2vMVFhRsSmT9pJMlsy3keEeSv2PO5EsGRJJkWSvYTa2fRvv91X5jlgbF+VAlHdCWo1PyJdilH+RLrudX+RLqhNX+GRkZGRkZGRkZGRkZGRkZGRkZGRkZHoutiIP8ZXS9YPpuq/Dn/8QAKxEAAwABAgYCAQQDAQEAAAAAAAERIRAxIDBBUWGRUHFAYIGh0bHB4fDx/9oACAECAQE/EPxHxoWfnHoh8dhS8FKUvMhOO8hCxpS/L0ut5EpCGxSm5B3mrkMhCE4Fq/mHyqUpdHqtGb6wnIvNeqLCroP5icqcF4Fo0R6rSE5d5D1RKPCj0vy85T46UpWQnDCEIQhCEITkTWiY8Yb/ADU5O/DCE/GZeKEIQmuw1PYeCN9NEq2ixV6CSauiDWV5GVmra2GkXGMFUKFXliwCMc3Gwwt8iW7PYeMzA9ngVlZ2Os4XijTX2dp10XQhO7H0NQFlUwSfBnpuJ06XSEEh+DrBuIzYSokHgTzBqOCVvg7jYruECiYmZTB10Zikx4L+G9FxUur03GmndjtdSmMLkJ0LuNbF3IIdFwYpvIwOumjRNuOu9k+5mrsamxtRqS6Da6N/4HJ2fSbHWs0sUeSf/RYTyt22Ev7GXISWcCbBNhrN16j3Xk3k9kNuGtw3h36/ZsZBKMHXfQiX3uloTubJowF2I3TVqfv/AAdbuyRTuPE7NC3KVO8X+REnnYWGr3GskujFH9BQU1FTjEjijmbou0VZKnRbR94QWPchOMyzr6n+USTcNzaOgbP8N6Liel0elExuQ3e5I0PkJ7+BqfgtmlG4hhB5qWibRTx0N2XRsDVbyM9zCZE3I2PweC3V8DV3FUbKa0bomWzbS92tGk9Ey6JYAnDc22FEXoXuNjY8m2xM3SidWRtmZcQhKbGxe43RfhvRcT1urcErPIkNLoSu7lEg+SGpPdCxq+gsLwHiCppdxImTsZP2ErYlR3X0CakKd4M2XJ1IBMR9dZpYX8alKUvBCcdLpNKXSaT8N6LifBWwNDRYOhPqSQSURob9w7+R5FiPtp0a7jWRZCQqwTVRubsWXSJmoWZKUuj4+v5UITkwhCEJ+JOGl1+jAoug3dxD0pCxrZg+gQSdXCBkzzFmtbIaJILLhCWeuw3VT3HEm7EfUTiruPEdh7HgybQnU32KpsaaEhDI5VZNCGy8EZk4Ni+4UkoJU/Mfwz4Prg2VFQ9GC2uQukqFDEPceUWMz3FRpbMSWF0E6bIjPTYdpt7lTXkV9SYdglZ3OoZGxKJruRTQiYWnRb+R7Qa14MQ22DfLGZCSkY3iFH5kJ8K+KlMJ+A9DMwhLUdZ/sWRDEYJ9hBbImnVCVtCya7CQXdo9JhvsJkiWkdKNS0lnkaIyDWkLioa3fRDUaXcisTKW5MtaZGu2hBW6sTMHgGp+LOZRQmUpRfhPib0mBDimH0TGvtPx4EklgT0pkC0W016pjRmJT8iBxB0QhnTuGD/YTn0KonR0emzbsJQ9VsDEx1E8Poe43Wn2FkwlUje43GdaLDb7nYQOwQmQN38aEJy1wL8J6t0ERW8CkpcU9Oo84EhsXAha4GCwLLgnRrcJ4THgpcjKdRrjRMo3xJjb4YhUN38qchaX8Z6+iCKwkhXHW8jyHqhi4KJl0yHrybmxKMbqa7iWIN16V7ESaSNmxZyPfhW6dBZz8PCEITiFyaUpSlKUpSl1bhc02TIo6jgulLwUWTZDuSUds20LbVE4UTgsE8p1FjBSlKUpSlKUpSlKUpSlKUpSlKUpSl5c1exOFcL524lNuFcK4EWS7GTShZv9Fy6RdovoaSwtVpCEJrCEGvhLy3o9tF4LwvmUoxODdINwui4VwUuz7Cmg2paOCqN0FaR6NwTLyj+FXKmmxiFw3gfMej1Ru0ReFcKygSNYxl8E/wDHwFqJyINfCLmPYQhcKesHzYQhsNXRCG3AuFYa7DcBKTcc8t664CD08uClLqyfBrmPY2QunkW1OxNzuJYpDrBqDpCIj6k6kJlLuQmKS7H0dLr1FltaE8GT7hprc8lUp1nVneDzonwz+TNMDqAb50yEXoJQhCCE0Wj0hPzIQhCc3BMpKHu/Yh2O53GiN/oRQXgyTfYdNHoS6jda7GQ0JtjUZeRLO4oxokba6jyyXUTJ99MvoYV9kLoJE+4YXYJEfvlsYfUbH0NQQuCE0SS20ZMPsNdDdFsYJItEFI70QQVFQ3daX5HYxs5FXX2EiEIQRhWtzEiE0lC3XHXtyOieBh1uWk6mH2EoJweeKYaKPOi4Poat7vuFpQZPn3sxqBKfWhbLgm16i7hVYJWkKq7uCJpu7a9CNqsXQxcwmiwXQ8lMCeAJ0bmilKUpdFwKhMx7SdOoiKo770RJ4/CpSlKUpSlKUpSlKUpSlKXSlKUpS857MycbqCKU3LZJ0EaOjUmKAdBD5zqZydBq7wPWDXBYINlE+AJ0mi4FSoZc37D0UqNn4T+AvNewlgSmiZRIN3SlHkSnDS8O7gVEhNCyhDIIJIIIQhBhpt4hStzUs3+RoZLnaIeWBJMggknQ4IQa0xxMhDJkyZMmTJkyZMmTJkyZMmTJCEIQyZMmdEh4fMexS6whsUvIfFu4EyrUatcvArZkW5M1GxLmHSDnX6Znywnbv6YmdU+mSxXpjR1+mZ4nf7P+htxseeJyqYfenkia9/pnUB5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5Am5Ten/AEQA0/OOY9uOarjZCcDXITN5aqhVQfJkSvn7XTYYt5OjrL9PZ5UXgZRyWG9u08ruXUq0q507/f7E9q27o+s6T7H5TSLaJp/z5FDdbYWR1Gm0mE+nmdRoVmnj+2dAIEkq8XwugmlRt3ptHMjHlIPK3t61T0xCdm8XG1/0JRgtE4svsv5FO4fSZQjf6bxFfGwkkGbKZZJW8jk/akbB9oq7L0R2XojsvRHZeiOy9Edl6I7L0R2XojsvRHZeiOy9Edl6I7L0R2XojsvRHZeiOy9Edl6I7L0R2XojsvRHZeiOy9Edl6I7L0R2XojsvRHZeiOy9Edl6I7L0R2Xoi7L0LPRCy/HLgaaLihORNZrBrjbM5edUwIZ0ffHaDcUux9Tf92LkG406+7Xh9hudVUd6Pvtn6x9mKVIl6HxXBrf/gjWL57jrQSPd726TwYJPpv/AD/z+Tb6eTfE/b0zFp2vfq2n/oStSwS36q5G2Snl4S/0L+Gx5O/4+yU01UV775jE7kla3dne3WSjaSqzLU8dcCOElHWl9QWdc9kEEEREREREREREREREREREREREREREREREREREREREQNij9iXMfLXKmrHpCc6UNtGxKWL9uilDuZF129neb2/7ErKb+f7GnW3t/wBj7j2xtKiPO9i2DezyvZF1MN/Udlhs3b+f7H33/v3G1ShKxQ9sx5Jbr9nm+xp6/Z5Ps832eb7PN9nl+zyzyzyzyzyzyzyzyfZ5vs832eb7PN9nm+zzfZ5vs832eX7PLPLPLPLPLPLPLEjF+3/Zc9fnmPlPmTRj0Wj038uWtHzQhgrZJbdvQziQ2LAb50IQfFkyZMmTJnl5MmTJkyZ068uDYojIyMjIyMjIyMojI+MCMk0Yx69BkFzy2uo7b6vMMkmfeCdhIht+C/z18Ds0Yx6UTGI38tIBXvJRdCU+38iqJrCEIQhCEIQhCEIQa/PXwOzRjHqhiN/LseDLFRd6Qm8m+KlKUpSlKUpUVFQ3+evgdmjGPVDEb+WokP3K+rfQZxkniISi4JpKQhCcIQT4NfA7NGQa1RBI3cto01uKGuanIkABFBiB8Tzd+DXwOzR6QaEtUbuXiTW5REZRTh0/7/wSq4gIpDWhiEIQhGQhGQg/zb8C9JrCEJpu5bZJdCdImylJv+5kxvUaLRS6pwXcNl4LpS6UpSjz+Yy1T4FkINce7l9goS5PfoLOlEy/gPR/mr4F6shCEIQ3cuWtEnUIY8D2Itui2RsktVouXYVFRUNl/OXwL1hCEIPBTdy3h1DhtsvzC8kj98C0XxxfAvkNCQlnlpS30FUykl0FIZT7ZGS1Wi5i/BL4F8iaLlrwPbtxqG1ode5NFouOzczRuCZUwOgT1tpUW7Dc2G40mN1E9mxYeTNBGt9VnXJ5G1/AXwL5S/EvE87leqdsJPyeSuLX2xItlpEJJbaPKjJV2EWjzvrsT5R8pfqJ8SEDU0X6ifEmUb0X6ifG9V+onyl+onyl+jqVcNKioqKioqKu5UVFRUVaPkNzQnf0dCcL1Wu7RC5u79HP/8QAKxABAQACAQIFAwQDAQEAAAAAAREAITFBURBhcZHwIDCBobHB8UDR4VBg/9oACAEBAAE/EPDh48PoSeCfXw+gz5nsz5Ps8RoZSJei7Yk18w43aB6xTW9YizL+WNzx4vP+Y8fUMwb90Zg3/BLPBt4jMEeCeeTz8RmDfAfoTxH1BPoFc+E9GCfM08XY6BEG++bEGyXsJXo6TE6BsRXa7DePPg8/5i7+sZg37ozLr7KT6Rb9QzBv2Bn0A3wXxcnlkyZMCeIzwCDPiezPnO+PghYI28ULv2zWbkDOtlMNIFaYhLY06uoGaevPPbnfg8/5jz9jh97l9nl9wM8Q39QeIzwLft8PA4Z8T2Z892eIyVvpJHJME7CMFdSAupj8ZAoze1W1mfv4PP8AmPP2OH3uX2eX+GMwb48PtBfoATwOGfE9mfP9njzClzsFwQaK8HSAU/kw3sQQqU2xHXHi7J0yGPpl/wAnl9QXwBPvcvsLMW+HL7/qz1Z6sJ6+IE+0M8A36DhnxPZnz/Z4sSg0Xgon+spCblxbbuNYjjFL1usOxNnqfpS+J6voE8/8MAADZ4PV9ACH0T7hz9hL9QPVkPXPV4PV9Ier/FDn6DhnxPZnz/Z4mkEKrQHL+2XUMGvHUUAr0uFnaM5inlnXr+cu8A9ccZoJ9AItOwrkS8GTb03N5pBGjjgeOhTlq8ACrgViI3CWVAoHj+c6LzNTvmiKx8zY27lh+WWck6bJnXi+mM1R6mNDtgvAu0wrhEtsOub+XlP19MOkqTQhRnShp76zW9ZR+0zS7SwxjdzWKoItnOBdTLajQKqBROSYLAg1gWDVXoX2wEJmSeUnc7Y6TUsOCyYsTFM9dNqS+o4O6ZQN8nJ2xAzV4kc/3jgr66bDQ4HV9c3C7NGVYbdHBvCPQdjH8Z2nXjPh55Jzxgm0Q9MBUkeHD3G49Sj3y6vPo25zQA2XoFcoxInc4fTDTqi2G2AUqgUqYvVaKwoj1ImSKdTo9PXIUMUIgbN7VKbnfKa8+N85pWXTDEw26F1z0zRy0UoUY78AXjKd/wDmG86c77Zyw5+ds7a8t/PlOcE+d5/zGQcr0Oc+cmdB6PXNiDlE9TI3oLxgbk35fOflzTo8Xj9PXy9cR/lep5Grk4Mem/rjCMQTT1yZKUnYBNxQF5eLgRnbKwJSAx4S4GuNpVGy21QRqOGyGlFhs4aPRfOdPJTPDWV2icIpgga1/AVhq0cBxMU4oA6DB0kQcDQWA1dLMTqXFlTXf58/WMzxpnA8J3I4VhgQGN0NiJyJvETplnb3w6XVwu5KSe245QSaCOFH+Gc/QcM+J7Mc+bp4hLKGTnlmkLM2zVt9hlVMEpebSrt/Hnpwty2oCrJo6Ho+kceIGKw4El6rK8td5OxIeyE/C088iyI1ukBBGnCGm0s7u/UWcP1wVdQQ5rQ/Mf8AmV6bVlBY9W3cI51iAwkfx3mX7UllKA9IXm44xpVZCgIGbEWmw1lkAoAJQWwfmuB3AbwFDoleDRxlPhpNTANNyvQCyJgG7xNARIncBOmXq7AyBV2Ojt3zveHLqR6dPLG/NsMLO6auHjS2gnnmU76Lg4n9NaovQ1DpMJJBhI1KVc/PZuHPuGTsnuym9AznGUtrEDRfjt1yDSmeRLmK15+uQq9BrPfmjT1OOJL4IVBFaKAyMJjr0YAGN3rkeJm5cmMSAy687OzDXKMkhzbXtXtyQbA2RfK/ELcC5iBvd1zOmtbkxOsgm2yfUPT6mDIebQYC1y4dcTUpUOK0KToqC6tMdnAHm09pYDVpckKA0humgHHc6rjvWuBsRBNgKLunI4qf/G8bSCCHWdZMruH85AOOC2kusg+ECSObAKcNetwE7XbrBQBBAbspj1/u6Quf0do8NawF/VRoYlSb1yXpkAW+3C4NyKFEKGjJzKmlHhnTKjWCLqZNcZE01xjCBc0MkmC5E7MRKUTcUdhVY6MaQyKjZ6LVijwrQgJkGToh9u9zAqtbcCPhEE2Aa3koxkMbACqpz00bdBS75wkDxV01okcgJp83AKWqiIg7BtcnSTKRECyCHeHksnCZTWLnVoKpGlDlmTokhL6BV1z3nUmK5UnUYPzXTATCKQrYR0avWl3cjCSqsLpY4mbwpFIEdNj2MWKpgxQVpSCDiMcNa78kFt1N3XzuKSiJDRYVvQaNqLcFKLzR9AAoFNYiK0pNCmSKkZKcZv8AuUJ0DAr0vXzwYAEuvXUFXyIbcAlFgFHLeCutTeMqm8MDNmnU1TuQQGj5jekCNWi3GrFchEiRq76jYmsF5J40GmtLTi1rGyrmFuuKelIQTnGGECoCgQGBo0o6wnNOfdMvaYdn8v5/wznwN+Bwz4nsz4vs8f36PbOK1gBO2bMu8CFeOvPGHo6fPb69nyyAqa5N6+f9xZJiWzGDTER89Y0owMpYF4V16+uHNnAijoQIj5kf0cWEuje2a9PbeMrcyHYF1LNhN5pVdv4uXfRXXYd2T/vOsAutnyPyzE5hLwbX5v8A1kKTh7df99f0xnUHM354pZBp2PA4FsXTnECScDibqFOePPNuwN3cbMhWReaT87/fLDQ1tCGAXW+vGsKTeFIuwyXI7B6dPlx1kNXHXeCDnbDABHk1tNvzeD4usqL3CwfMLoxKSPz586Hkfd/H8ZwHbOvfJoO3GQEATtCeWdbx6f8Afm3Hc8vbBjrUk68Yazj+8u71Wvvcgcdnt1y/8uduw303hrjR188GhUEM08zthCgAA0AcYTVZ5wC0XqeZfPN9/YYrk778ZDej2MSj54tfnGc88ZuFTo4DLGrVKTSVxj2/B/GNO9nb9f4yOq2YjyPQ4xoi6xL7Jxwcft+2PKdbiXq++Rtr/r5r2yal12d38Z1cb51zkbtvr19c9XT56/nJv9fn6/OeHbp1/wB41padnI92/PbHRDR27fNc41dz0P447++pmnDO2evAleSFFspueWDkLB0MOQDyU/Z/wznwNeFiZ8J6M+XdH09PTI3fgijdex5c4aVhZ6GTZuEir3yUQdquExQNzSjLi9qKQn0xNOpTA1fpmbNxPAUwG2Ae6oIDAXBaizajxwiPkGXrxzhlK02+U2VjTRlwKVpzfxSZlOy1VxYEGYMbkB1vfuZeM3wsxrUkhsUMaVrjJbWlNtbIWZXSn1LLOQmVDIzKCQNACGGjmJ0Y38mgG1rG4t5YOjKC765Dc+zkjOl98MfuVIhls6Ls2LMOIr3xpAKBEKTnNDLRxSgG1g8B64bFXCcBgiNFhGcbx6Br4LKQWcFDX6GFbdG7pXzxugUW1T9Sk3xcWPd64T0z056Mo/8AhBfAkya8Vn0glwNf4g5+h5z5nsz5zv4LMYywrr1wSBrseTNTL1AVp5qj1vGsOOJ5friM4U+jC0APGQkOaAEQIMzcU9gQCyq0jvnAScoSKrsN1aje+d5LgTkoBR6U5JrQZRD12SQd2u0bnGVVOkBRGNw0pRNTs5a5Ls2AStwh5YeL1c0YaXr2djFgu68sm/bpHYgPVf7yrDqh6dHpiQVWLr9246dcMxJjUqrSFbctuuc7S1wKOd1OhnGIv0EAjotvImrzy+gkONj+OmDASonlP9898hfFis25ycQwLbRmCXsIfxhg2MChBQJtiP5wJAo7B51VUvK7uSYtuDEQ1oEGRuDSEDgiH6/OMSKsaoII3avMdGfoOfLed/F5PH4ZHtj5b38/bJFOpydTOGf5YzBuJcSfQl/yTnxWZa58z2YL8bTFmLcIIRp4oLv2xcu1xEd+cvAbiZEXfjGA5e+94oERDaAL3gD8eDf522DbAuBHNO3RBtPBw465ptfLAFltIQ1OOMBKN19lg9KDQzkzfbWu0z0t5u9W9C1HhN2k4kGlRGpvKvndpEvkQc3fbNDAQAQIaLO/bpzknOOHab+noTesBjL2aVqFCjDs1zHluJ/CESEB4BYsE7SgyAsmgRq5Q6WIwGAJp5OrfS8MMyz72eAgDKOKG0jHBX8q6AZesxMn1BCFqEGhwGaMNJ5hHKNoDrTiNJ6QBiP0AmgW24/BoyDQgKUUoPcx2COYwqAS6JoIDTTGvjtpA6DVOcAhwV1prnSSyqVHAxwTgUCxWILrZ1WZeYydbsUhGdgHngiSIFtuMKaWhRzmxhEPDLYQbMOuluV4iVXKD4JC7wpvAHPU+UsbDph8xf1lM8rs68N6q8w4NR9CBRSTnSYRIIzgACaAEa5ZjBJXdNOl85P26fYC4k/xiYk+jl/kHPgsxbhnzPZnwXZnLwqrbLskcOOpuIC2qJjrGVsamWrKq98Va4tc+E7sVE69vE9bDDitpJtd8YGDEUFBNwFbab2OVMCtKqhQBUYm3WE1XP7CEwGPIr6YXXM3auXc153OlmFo1jR51dTp35tbJkXeiKGikRLg0Pl1coGEBoPOsUBIjTUQCmiHQA4HRcaLPArkRvjWDZGbC87QZ2Bvaw6WJKw9n1mb1erHZXPgpQiko0W9QWCKpAr4s6A09TlV3Paq2as8aBrHwDwO7KSjaycbuXoLPrE0gRK7WkmOyRIRChiJYXS3cyB6iUiwmrrZOjWFSu2riK7cHVxrDFLUBUI8V0A7qZRxZw5MFBGA5cuQuhLtmKpMig9cTVW6IprU1RDJpre3cg8ZeNgEZBVSrxVABOYxFjbQeGFHoR5aBKitYrEID+8sSkY1tk5cFxHmrCZjhIidXXEZ7aEl2GWICci7ykp4JNSMOjfHl9H5L5uOtujz1ihzxzreIl1xgne4tcNz1D3z8TOXgtzh/glv1Jf8YGvAt8DPmezJfD0xb4XEUocwLhpldEu0Qp/OHCYHJfVICJ6dce2nk8+Cq+Uytalhp0p1v+sPqsASooP5AcWfF98FnPHgc8w75GufWJ8Sxg27KA3HLsgyeYPZ0tnfE2iwMqECIQ10Vww80xxOxpaDq4v1f1KrrgDQkXtiqNNmAS8tliYRNWlVESKIsCDrLucFljaA1RbGnu3EQaYgu/leHesE0GIsBcRdpbPKgoE1FYIFGIRjvWRCvOlEvDhgb/44lMbSyXBdSXCpFojVVZHMwJ/L3pKTtoWmGs5T84Fi6L0EomQWlRByEd5aR7YBqVN47T5g2FZcfx+OGLbWqyNd8CW0vCeLCy8wwlLZQ6jdHiHqlw9NuIXJRIljR3lW8vvZmzhFA7x1ZFREfYbKoAJxIyORKhIgLtoL0yWk9ITOwdkC7wP5CUdBBaIlNkvSzHb9zTPRQHOUTLlKyZDSgB0xwpjOxmpwdAPYFTc1tWEEA5DbTHgcpJQG0vly51gDIYsdFBLQlAJu4Not12TEp1SE3RsptBLNmrLsptRSbygEIqaqsAqOk30xdhlAcIFERpBHnJ1fA5y+jh/nAs+wAG/aM+Z7M+P7PE3hE3ZsT/WbWy4ikhWjffCut4ejbxUKu6TZM4K673vm+pMUbs36YFiQmym2HhOBdY7xIAYg1vBIHS9cR6dcNdT/AH5oc5Pc98StHfSft+3tjB3LbaYnYhByPGcoMOQs7TAhoQGVTWpNWkcWDt4zuBgqaqNoSUA6hdABUJyIwrbFecFVhKXAB2o6EvDrHl4TzTZlTXUdy6tF9iZHScgWuhnOMqeYoDpJOJ7hhU3IdA4Sc1kHCmgCoMrRTR0RtdXHMmLFvtTTgNC70eUBLDn0OTe+8CSOYAWAzyxzYBPgxHBCXh2xha5sk2W0QQaVJm8zw6rsmmgbUXDXgAaq/QfIKd2C1Y0Y6sBToVOjeb4w+IBACjB3rcwe/TjqFSkecO2BuP8ABAbHfAx1zQyX6d48dIcFmHvWAXQnbo5QFfbSx8U8NTEJyAYDjIDTR9XUjC9KOQxpghB85IbTYWYYWKUVzh5B6C9XypC0zqjoCm7Wsq22bkl4pdiCIOQRWU4kk5kIXoOQ6LztxQCEIeWyYAzonRyhS8aeN9sv4I2uTWKRSe5MQD2XetSBNF4uO+cRpimqAVA3tceJJKugCAsHUXebUUdgeXEbw+2R7ZHs+2cYOv8AuRkZGRkZGRkZGRkZGRkZGDfG/Ll+XL8uX5cvy5fly/L9Q4+vh9oxT5umK+m/o/14v0AKngDa4ylf0vd9c77se5KnFWJucMl4wu6FMBLVU0w7Q3bJOCR6mKo5P2sR9AdTKOX5NyLyfxyu15Pvg8h6HPP+3LeTrrinIrmhw4XRqo/OHNFxTX7ZGoO3SYACunA5M2wXgUGSI7DnD9IZVHAgq8QHrrD1qWExazpSvVD0RL2O549u37ZPy0XIjYqkrqF7svGzjjqPPR2d+m8VZ5ocTqIrpvpxm0vPpPtxPxgbIzF1AQaTQ6YVZRaNFIAI0iG+mAtWp0D55Iop3PJ/Hli/IukGsBqxvWqeebeNjrC7BIEdz3xVTziHT9MbKm9+a4cAcagn9Y17e3/DCX6tYq8PQZXyX4ayfE+gyzeVoouPD+Oj3yvk42Lj3C5Y/vFen2Yk6/SwlJnZGRk2OsX9vT2xKBGuQMtrjboa/j+8j+3X9DYAcAcdMfAPJYBDmuP9BnlvZnlPZgP/ABzvX+GdqfxwX/jnznPnOfOc+c585z5znznPnOfOc+c585z5znznAzq/HPlOH9HnwHPgOfAc+A58Bz4DnwHOH0cMOPr4faM+d7M+Z7+KtBgFrUxppJ4KNNFYA1rjHHRdJwNelCs6rihaqfIYweB6RtcDEnSeTny3ZxT0WIvJ74x6PfF5vm+eDU/3l+XOGayJiImCaqK1m3qdZYuLEWUVDKA6hjX+boTRNHbZnnk5hAnE2fAqE68To4CrseBZPXXjGAhqVaX1Ai7d31zWf6ndUFOCt71lGOYIxPAm1vg4626CYoN3YML1K3c3s3yWEWolODebhBDftiUWCEDz7gGt8icFuGh5dMwCsaYgW/XZnZd8evbLCAUgZPes8myGBbCjRSXZqQzSOhIXsqIHoYhDTN3DEPSAoXQtoCcI4dNJUoABVrozjZ+Nru0hBOUx1zrDfU98/J75rue+a7nvmu575rue+a7nvmu575rue+a7nvmu575F5PfNdz3zXc9813PfNdz3zXc9813PfNdz3zXc989vfAU1mznKdcjvkd8jvkd8jvkd8jvkd8jvkd8jLkYaZGRkZGRkZGE9cSDjq4MRo4ClnGDcJgX4wEsBq+gECBAQFwCN6eR5rIPTb7IwYMGDBgwYE3CdOEUWEuByEHoHwNE8oC3C60j6Bvvld03MzWCBCUiSq0gqBEN+2B2NGN/x1aUmAQQCbwNvClToGA7Sv7sPBJkjwg+ED8CJGBFKEKDXj6Lm2bWHM6cYPzRokFhxqMFKVjgcdK7r+zz/AN1iJUyRsuOvt/XGz1td7Xx+OmHIHBfh3zJrPxp+P7818v1K+2v6Y73o6v5MiRD1z0OvH6/6wbRT5fqxQ1rIBr9DhiPAHTfjePgj6/n+c2Nbvq9+z9f2wc3E7/rdHycYf614dCpkGDBpWG+YYef/AOMLlw4cOHDhw4cOAESZMmTJkyZk/teAjGDfaRIkSJEiRIkSFargCUZgHkhM0eG+/tlDVO8Zr7/TgP8Azz5zgv8Azz5jnzHPmOfMc+Y+Dozl91ziKZyDIki9SMETG3Bw7CuDRE0QivDiiOStoEC63noPZc7PTNc/DqCDkEATI47EUqDuE1MLNOkiwiFeKl1xghB7pjViFoFHfGP94QLIUoR0K68sSHUmQYQrXB9Ry4tuCSap6icOO2QyZMmTJkyZMec989898efq/BjznLPfPfOGGs4YcY4cbYmlOCui8sOUMLaeYqqJ7VELtjLMaW+XQXyxN/n+hGTRlbl7pSNXQLg+ESsCAoyLZVBGMiT9vgHFQOrjejKyvqik9BgguhBgxKc1WhFN0QWOpwOUhBziJCKqr0ArMI94qon6CPnJizAKV0QShosGGAoGiY2JSjV1QkY+oKtUBBC04SaanUQ/l0ewtAThw07goGXBhC7HjNtvF9sFAdS1J7jqUQYQLWhpcsVwy5ydjAQhuCvn7w6Jg5dShCCapDnDp8delaUbd1RGHWep656s9WerPVnqz1Z6s9WerPVnqz1YPB6s9WerPVnqz1Z6s9WerJgZ6s9WerPVnqz1Z6s9WPLfTNZQ8k78b6/8mBD6BmDfqSiJR6YnrUE3fz/z+mDp5A5oYC5T8dcaxdcAbInMOaTN2T9nQZQ0UcrMtVVCLVlQDhicvOOmIsis6t77DlfjTMoWhQKUGzjIbz3DyapEACMNmLRKzWxZbRiIBydSX5uSw7t5HpwusCCkB5I/k53Xmtz9PspcSePLxC+IkxMS4k8OGSvOCauBMP8Aq6UkqWB4S8Utyvh5cvi17Q1MgUhScBvz/j+uMJDNJBRgQIDUhrN0OmsnkJEdQg9biRLiBE2+oCdTtzh/nRjzZah2qnLRgqJERdegHJVBXiBZqFOISlBkCIUM3DpXa2CljkMvdy2KxuhGJAEU2d2iBq6CwMNpdr0MAN8VBaQRI0hXkgW4nyYShBVI3trjuSTkBgKsujWa7j0tjU7CdOxJrvibCYI4E6gwAF0ZANYqXD1ez5AjLlYI0KIHSqQeNcYerI/QAAg7C9bkmu3lPupcSfZC+AJ9n93jP9xJ15852x0+kZg36UomCPd8xiWrQdgyR8zjnWCkd+ucN5Ro9c7Xfnl3Xa9y/vn6vn+mQ7XU388sS278351w6vdv20uJPDl4imJPDljx4cvDhgYc+MFvbjyxVqG+/vzLiG+fQXUkTaE0xRZBYVECqbWWEWttKvc1Mot2AtOssJZuimK1rEEzGRmJoPKIZaXbBmQxDGtdUUApqTWKTV2pqitCGIPQZSWTECDwRFRJ44pm/EkMKmnXSbnOPA+WUp4YK8DQKuVBIgMwGcELZq4Ug8sxCJmG1BXkmU0XG/WDjDRIqBvI+GrQaRWRFAqBcAKTUAzh0U03acC5ZLLViKqaJCruY142ZHlRMhSABrrCSQYbvVDQQUJuVzekg14UT1DSKJEUR+8n2AAT7jA2qpXdcZ1nFC8kOujOn18PrXzzjxjz9XD7iXwbM9WerAnilx8DZ4AmcMDf0KM+TmJjkgLbI1TSNQYIoNeGMCFzkJeFBxAY0xWtgi1onQ7zgFzxguQxNuauGZBfT3MHBOwdSXjBJnE0HDQBa9EblA4GFDg1J1IdydUbYyoHJihBCO/wwkRATtetwSUiVdIBrYhuXabAHU3ca1eYUbhOs074ptxpKGSoRu2l52YTaLN53URJypt0noOvJoMwcQaUJY0rgsmCAQ31E04I64eOjiIV68IVLywnr/sYSUZWCGmZHTjRnCjloKOGtmR2Xnw/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4c/Dn4cnrk9cnrn4c/Dn4c/Dn4c/Dn4c/D9oCM8Uuu+ShZt2zXLj0zYmTmIdY2Miy8+XfHg6+DAAs3WnW7MM3Q74FAcuKAxUPA9HhuUcyOlOoWPU0986zriwHllonRXnfbCsBtBdx7eZnQ3bJN4E2AqEEhVgOjfYc7V2gdoacuL5ZELwjkBGfnJuP7XHjwYRUdgWRvh74ZMCOaYFa2oBzs1m1gEtKTzHRbrfOS8bs48+MEZs358/P0z+30xI4Czv6OcXufPnphthz75BeriYvx3zaaukKkKsBYb8snXH4wNF43JfzrJ8dhlARnPCc7yevMxLY0GdhRkPRgH7icnniWYhAFiFuDC8b3NUadNeZ4nH0aPb0vh0x+XqrupNNdnIKNE+yIkg6Jo6N5zoppK85tUcDofTI1UXTUhW261lWPqQQU3YFR3sxLJplzFu3Qm5N+mTVTjYrpXRLxbZj4mKDkExE0Q6axu7pNnmTP0Ze/IenqJ067T9x373Z6se6VJNOsnF3NJUApGB110zkIOTgcrfxg8vsyNt92k36OBvVF68e+fstu/fP7lkp7NwE2n1zzXvn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pn9pi/+7P7bAf8AZn9pn9pn9pn9pn9pn9pn9pn9piNVXrYH2wH8bJPD7YaJZDIyaC7hh4aycWhGrdXFLNfRAGiFRhBKBsNaATGinoVerBm0yKfaFDh6a4yqmdaFsPJxJScAYUnsNVeap1rRDgcflpAvVzY3ZU31uCceNQDdhgbmC2TdgACo6dFDpZhcU1bQTqAAKVbzznS/OY5lII3pOqYokKw66VB2FJT54fauESyjUIMFJvELAmGhw2kC6B4HNwrbjMYxWhw63lXSNxBst6rU3CBDFZEsSjvRThd3ecREsOcxWIImjnHptdYxFiDQemnO8MlqrNJp0bF0Jh+Ow+hA7hoqR0Yb2SJQZDaAQ9lNj5D0StNTvzwrYUbTsH/c73jeHKgKactrBHXbSM7G8adAADlbrrl2akbF5qgK6cq8l6UFBtUNcJ0q4xQA/Et0LURJy4XEbXcJ3SAetjxhOdFtSw5B0EUm8vFfB6U2KWJXBWyzOnCG9AnKUy7dwhjRASD7jWW9/wA84PpNLmn2+G81UoGKEdbYvXEGMwnAOhBbOokTRu44BSYqaI0FDfFmVQULUYWqsbz0mApY+2AbNyJ1OTNMlAUKQILFNwAAyOzy4UM1wT1/TBbf+ZyyFQVVdOsfNSK2GUlWLw4LWlAi+wGQgqLrgLR/hYoCoVuwd8OliwxSBNkp6N61whkXEsW8wM1FYxSUTSRk30g6cMxH4MphvN9nN9nN9nN9nw13/wATzMXe0IPQubj1pK3om0fNPxfouXLly+Hg+2MUUKgeRO2ErCTuQPYAvlhqGidofOuOzkDmzgO3lxm2y2ylfx5/OmFg9Z89fnfF3zrXPz8fnOC8dF495824FvR7Xc6Y89F6zWIpHnoD88fvhwvU5V3eq8vONI83h6H8f33zoOzianpzrGh7et49fT9u2SkkSczpljri8Q365pd7739PbK+fu522knHl+2efX5+fLLp2+lxyzV7aw9U/OBwaemBEHfNXInQNSb5uCamQI8J8+erjTadz+PbItvz5c8jrXV6cZxmvTpkjz63r6994RI8EvX3+c4+Y9sX1VPXLcI1kn0F7ddXQfpiCmEOQQivkCuRnQq8lGE3wE7d2L+dI6hRueffNEyaj4YhARKoa53m1a3fPXyfneYNNi9TX5+eeIFQiep6XL+CiyMgc7E11G5zKz9PPj+cU1RTi7fnfjn0zqcboPrDe0L3fPBviRU4RNI6iY7/YtYAWBpEdTvlAKnk9Pz+PPAZNehG0VI6zh2LxOHz9M7pfhg6hpiMGBep0/Zytxtt/P8H8YRZcU6VBpEiPZz1PfPUyrrkurk+bnr56+evnr56+evnr56+evnr56+evnr56+evnr56+SBstCgoFQpwL5YspJaHwnoSIrCXGvucAI4MJ93LOXLiHKnpnm+7PN92eb7s833Z5vuzzfdgnLKbwPt8Hrgixc5IuHnhSbBASORANxFSauXu9GAkQR9HSgmL6RHQLADO4bENZLLMft6tF0s/0jCgwEwamNm1JhPd6fOIoBzucHfh7ezIDZU7Y/t+2ZVDFo0SZ1jFxCFC6oMdpc0MLmGRII8DtpwztPsLtoRdN9DWX4ejqMX8lFnXBlBnJlCTo4eW/LNOyLDc0IOnL3bvwg5z1YHq5OOCfAtJiSbyHfFHv9A0cZHYwb0nhs8Hkx5zt47jj/sYFxEOQIWxCapvnALN3T6+S6x1KAXA4jsLTSF05ptEweb0FUUwYYh40FxXTUMQEBrKhhtxcZ7VAoZfCCHkOZrJ/K90mYJUj03rhp0WnHy9lAVd1xQugBEp3toOnVE1ixjEG7qmpKqSwAhxprHSn0olzWtZqzJzleIAjAGTZwDjG6nIej5dJi9taGVQAggITcctq3fjUQXg99jIHLCE6WwPw0GUHFiyxKC4NCjPIJGcouCAhpGtkZcZr/wAlqYIU280TNdlmnEOBEc4a3g1xJmoW1JEZVKXD9cW/4glDVAiQKIEUVpFERxf3Um6qXHFCUsWKvVDTkgyOkmIiSCcfZEE+3weuEYQRsPz65tWQx4jKFeAnli3VDVVZI32YGtqdY1Sfh6HOC0Dg9EKGb68vC4RiRnqgI7IIp0TOFEgIpECCTw3cEBXRgwQ4NdF3bhG0QriRHSPZuBdkDwGoQhyNI7G5Wa20goaAu+yZKmJTCNqFApGt9lUM6a9G7pDrbu8SiONxbsWlV066YsLnUFO9Nm84u/8AbhOozXfKHXI75HfI74g6552NPOTuwF05DvkO+avOEmnEHXATnId8Z3wB64F5xl5xTvlO5lO5jOm7Z3n+zAdEvJlm6sU6ooaphopggV2R3d+uI7VQ9p0LHz8+uCGSnbIFSCsNcuEb9QqJoyNCAQBwYF6gKkPOq9W+cNsKapubFWIvn54wmghJtHKGtHnBMnOoqBXYuR2bwooXcjhgl8+xiLnl+ihZQu5xcJRukhboOMJ3TH2EWPcBp0bN5VjCzHABhYOgB0wyTayW1q1EeMg2pJDq+CeXpkoIhreAo3rTJ1FUXAGsTTRi3/J6WrrNaZLXFZwaOoml2P0wOWQIkKOqCvQHAH+MMR7bzQl155G2zyMCfY0X7gxu4dOMpNZFEWbzzgXiQJ0HwksI9wyb/AmxHrZEUe15X7MD/ZyavChTzH18IQnx9CAAAALgOpwKpSzFnFS8XH8sPAgQejgHCnmFIucAWXyxMOQL8lRlOx64oPCAASO5SnornTpnquA989XFe+Bd8U6uA9/fF+/vnn+7PP8AdhoefT1f2frhBSYPTF9SJ0WEXEr7oSARQEFirQTNDrrTIC0OqNuaWa8n8NQ03qkLgj+ypshCGFom5rA8xLlURCmkA1rnKBiGJRCIFjx5iw+9NbU1hEyGwFXDPZIRRSgTSRoZgE4qmOhYgIgdzLljogGdpPLANVi0RZPZBjJEtvCUF7iRluQjSIYrs4jWqKnS0KAdDtghno2+1azLuIdF04WE1uBJkURoL0jCLvaTREmCK3dDxjP/AELxiwFuaVTdKVduOvKVcRCdmWdIjU3kApbKeKzPQ+2eh9s9D7Z6H2z0PtnofbPQ+2eh9s9D7Z6H2z0PtnofbPQ+2eh9s9D7Z6H2z0PtnofbwDfoWZ6H2z0PtnofbPQ+2XywLhnD+r9x/XYFvgCeAeeTzwb8Qbx+p5+lnP8A0sVc6D98d/BLyDj3SAtNl2N7d4uooFBhxBjCMmcPtonUiUuiDq63kkAkuqqAEFDUhrK6lIg7hAHqIetwS6UGdE3bFJJrrmwYtSQcgb7Y3hSAFcAlpYzcAtyW87rEGrHgTltzqCNOUyhDdURGUYUxn8bvEKWcmFtzW4gk0FCQ4Zd4EwhcLdlMVYOzarh39snhjuERAMNbJiHq1XXa3g1zaa8viLAJOqXa9NZSPtWjiER2YHbGIOthEKMgC0BLMQezEhHWgABGBG84a1EOnQFVoERHXDt/VwjpumnilJxh3JqdYampbAFAkl+kduP/AME2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bGYm7zSKklSWJrzPuAYuHTgP/AG586wP/ALZ86z51nzrFf+2J/wDbPnWK/wDb/eK/9v8AefGv+8+dZ86z51nzrGvP3YP1+7/eea93+8837sAb+9if1i9mR/Ru/J/rLfALiT6LnD6/bRkNxpFXrvqV1irFDQrVHQSOhHestKLi6UlgOorNi8ZMxEYnBgv4286xgOGJAgANDVCvrgOC4oCp1K8QYXQlGooeUpSPWkvMmPVa5a8GBF7lxHM2OhmgdQQ1stykWFiyVJQAVDzy4NAkxQTmkBRzxjEm5ABeOAizncxQ9wCmyXNOE0HGDfTGooBeNQbpXWMjF5Q4Im9BUBTeOXAJIr5DYoOKH4yODIfiIo0axoNXCBahbDQkNQlO8Ng6OChyTsSGiFxmdIkUSiOujwlz3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3z3989/fPf3y+c/Ob/AG9+cYYNNPhw+pL4kmPH1An0PmezPhu+GcPoS+AktKdPL7Z2ALtol4v9dMd8BWUENOBAgm3nEXeIBOAoYu3QbM2FAQ6A6F69ycdl/YQzUiQ6Y8tZt4zgiHjHbUuv3yGgcuJY6QrdO+nLMtAXkAwZ0P8AuIXYgQlJyJ0870x25eWVQxgdlSmjNmLmIoQUynDmzWN1MIU5SnaCh35w/wB8SnseQ4uI93N6wEAc2eROQwiURaPHiA0mupmMhATZYm0V6qKrxlY9OFmDvAjcdMVRVuhgIUSSOXeWm2QLLChggC7Xe5nThh+f7yYaOH2y+T7Zz0fbK7Ptn5e2V2fbPy9snr7ZPX2yevtk9fbJ6+2T19snr7ZPX2yevtk9fbK7Ptn5e2V2fbPy9snr7ZPX2yevtk9fbK7Ptn5e2V2fbPy9srs+2fl7ZHs+2R3p9vul8MOfs8fS5fUFz5nsz47vgpgTEUImihegsZiHDMrvVGTEemEpaI1KbYjTjfid2vp9uNvneBANnRZleMR37HfWkSpw3jbhuMAsqOYnoN47CUhgoKzsBCN8wsVSqRKEXYgg7usFIvGDSNsBCEb549CjHA5/FNvf84SIbK4KqQtAMHs4Y9wQCNhVRnfjertSsZBUgoEQg7JvBVtquVAAN7NJvWF3YFmiCgHhVoNYDobwAIQF1RU6RiKcmitE0HY0VcrDzSN6jk67wzNSCaIXaxlepuJjL0ESAJkBBoTg2Y6IKKMo4CXl3MV/BaGkpuPpUyNymcbNG29YE04bbAg9AxTRzzDBbULEJSPbrflruVBVCSdKO9OntHtj/vfoVKlS72aF+xrVq1atWrUnnv8Av/QqVKl3vDX6nh49/wBP60GDBgwYNDLQ6+J2l1ioKAFgF8vucMOftOHh3xZi3wWeAb4cMF+DpnznfOPgc638/vDSLfQNhvEH5cYNf4QR2Mp1NdcZ08Ob7Y287NzCEFlCizUorF5AjBiNqjIAL3UVE0buboeQapokEXSVosCoFvgKO+F8+nGnfDVUeyOQ5JW4EJIwUZlYCCpCIAESSNToTblDkZDv+gAxEpUB3qOOLS+DlZqFZSuzJsyuSJhMqRq67YXlhDPuMO3QXbNA6/xxRHZ0AMqc4h9B/fdbw1FiZVXq1dCu0xVdbgHBRH1JYEoiQTbou8KZtgX7XBtCwdsAC2RqhW2EGw0xelhQFLKVsHIYYKl4VUp2poZeGzAaAyoABoqAA9UmEVbgFyvqoBogcGAWcNqMg7ek6Osenp9wsxb9Zx9tfbxO9gPX9M8/9M+Iz4DPgM+Az4DPgM+Az4DFv+MVOf0zzsh1xL1ye+PbvGungJ6ZOFpnzPZh+J1wQ8BMzNuR7G38YcapZXhRA7dcPQsC6kp+mS7PBbfbhHVQL1x23cUj6BBXQXeSIeIUcYcLQPljpa+AY5HpT2dwwgIzACwOQaNkmEvqKCTS6p+EO2FXFbNWS2tuY6vUwHk7dP068/N4inPbX44c2XT6NfNayexwIjzChJtuMFLo1yfPfD7kREAhIg2Ts7mdOlIi1TsOU5zmx+D16z4azXP8YKq7AG8bBTNm01a15ej2xk3JrXSdvn85vlqheNec15ZVmL2NQBlXl0c6MJKlSEqLwAdchDtQIt2PHrz/ANwUUbd3pjr6TTg36uX2OH/mMeT0z5/tnwvfOB4Wfj9MS1Als3ZnCFe4GIGzAT7pRa1/GbGPOcn4+2pDUzYQXRwO3fu6wPLJVgVxZA9ItcojstPDVXWPVAAwaBIA7ix1DVg9NXZyXw7JQAdkbgLtrmjfYWAQQ7ero5bklXYS8rrW8RyRh4jy4S6i8siIj616M4Ii9YzVrrLEJrFKzYTK+gipO5AdBsR1roHYGiZHDac3AzgyZGCYbl6tmBfyMkLrXeAsTcDDPLrCgWcMG+iumBWHXAUMauwaXOsmTJ+UcRAIV23OSWGQYFDzkgnDFQ9RlO1tuVB25xIx95BAQNdZEOmQzoi9gQrprQzqzb5OWCQaygtBRNUMAF1FV4ObAIAAGdH1DPoA3w5fY4f+Yx5PTPn+2fC984Hg14dxQ1cADrZ4Nf8AMm+BeFPLz9e/84cdfV6485yfj7fmg5+mED8taSdsAb7ujnCXR6G6Dzr+MoytjrwIKXZO3rh+gACKAQJr0hQmJkyJhX7Aaq8vS5DnASnmbNuAaeQ6Edo9cabMgJTetyD3Bka1kSEAIBBHchgRPvCGhdaDfQMbI9/BhJ+HbGiOurWsi5aLzju1qPoiCogEjgn6QyCRJRA1f95sacvAhTYonCajkTAExkkI9px07GaGqzPWng9Oe3lg2UEQA3gTkuBTBHukuhlhZ2O2SeIB7uXRvphQWAegADKEJBwrUYiVUO67Xri37PTBngW/Y4f+Yx5vTPg+zPhe+cDwFMHyAjnLiQivOnFheld8gAssIQhW80R3h1793HnOT8fbnQHGjRHflPTr16OBDi3nhMrDRQbtyHVyAIoEdSWCOJibj6pGyBjyQ7S6PyZyYeQatNgXFAwgfRok7JILdphwhrUOaWco4HkjgbMuU9yE3Yi8rrJECuthY21IdYMtm5qA1DbYCIa5wmXa+kLoXIYR5TGpjL1GQI6iE2bYCJ0F1lEEAIJPOAslo9A56jU8Q25Vxb0GrgmkIDbiV83gJFqOBb77ABNExaiiIDIAS3Lg614xaBbNsYLikPCthAimxFR3Yjmgd1IDkUjGxZWVG/c6fbGYN/8ALYqerHfk6Y58XeaePAU7KdnBmjTrFNPmrgnAClRUBTrbo1gwx2x0ftlMUHdNH73AEHHYhFwBIgJECIYoJzPyEit0IPW5rmxBAVJzoE431jlTjB8o2uyX7i85ZQLQRjxaXW/jGlQw1FADGgVKzCXI0KCFA7zW+N4MI6gWkS0EIdcSDzHlJVKdhGGsCIEAVIKT0CdTdViPCA0IduxBAwhrISziUKPF2s3c4G1hcCFDdQhC87cLKxI7vTWAoLgONd+wbwIqbVcil7YfwJim9sCgG6YG1jQocGbBFDWjWj1m2DoABpECDOcdt4EzrOuXV9s+Pl/i8P8Ay2PU9cQ6n+kyj/C4Ny6wJSCBl8xaY0nm7Cmwg7je4YOQm3oiFyeSXHnOWcH7dJA2q9z/AE/dgVDixFA6gibxNM1LdNAeRVNrLCOVVhvOpR0zuu+JghAotPFDTAKrMMi08AtQ1bUAuNpeJuXZ3HvnfGNsTMBpFZUJ12OWYZeAh6gLZTURrJZfK6ZbJWNNE7sa5hbuJWRHCuuyZLFBl1oHUaCkOmBMyvPJXc9ALCvOGACglRO4gqAaTrKyoJApUjpDumsNhoCIggJ3USdBLMO6rNO8AxGaw1pnkIlZiAsuk0yXybUgQLe9j56ucAZikVEGle5bBKQl6K1EAgigBswCogjs+HdaOzNTD27KOsFfEgcgblFB4RtgVgdArrstA98EiybAmjqGrTw69ABSGnixNhg0v+Fw+1HPvg/8FeT1zb5emG/I0xMGYJCfrgiaMYVLZvjXti0GqEDVStVm8Z6Yqwbfbm2wJOz/AM5CRlsPaNlaiinTB5yk+O6gsKQldLvKC8UhOLTczXm1uAayRrAgeW4OpxIuF6DzKWcKvJMqBMHIhNmk8kaMpVTCleEU1BSi6dYazFruPcA0NpdMeKi4UkBxLxeesZLA699BWxoQQ3hQu7rXolR2K64gBMZgA0XZPOGoqVvG01YaTOU3ttxeX/UJEDDtVgON4FAKjIKSj+LEDwG0zddFHJAwFKIrLUmxIcLC8zDAC65xRlRYDRveExi5qlSJEntdN6gS2B0wCiAYNVx0IU1QG6JO1d6euHmlAYdEVE8B3ck5LtiAjq8i5yVj9YllJGE499WgkiM44S8581r/AAAvgCfSs+kHT/8ABF6eucg35Wmo0qPUTB5TvGTS2LIa2odctfAwlQBYL0r0xv1mQbAThd+2BfkrFXg7kj+ccLcefr9v8Xil/BiPjQOdJpR6AuoXCaUeGXRgHRND0ZEaoUMR29lKcUFLY3oQUbIdnIYUR6WEav4N4mr1m3RbZCI+rHtCSY5aF87q9euLBM5qpHptThxgRfE0ZtaLOKLTyqoN2TgUGOg2kMAQKFW6tQxSjoWjhkwJDqajqU36eeGIBTAHaABxyCauFKZQT5VLHftglJkMwqhGVNrZzhsaSQig4Uoo6dzEJwwxFlYlOe5c0xh74QsJBShTvlktd5sU7cchJzDJkvkIUOKdDz7ZoM6UiLzaUbx1y7EK8tHngRJ0zqDhnH+8q87eP8Lh9fLxC4k/8Jr0O+Q6HZ9DH+Twzh/PfBmP8tHzzxqlT0Rojew93GQAqDd2z0NH4x58Lw8/tin1SHjrhL7O4EhqXFvUC0sjvwyAjWdRQCbXBteXm4A4OMEOc5lvnJxkYtQ7nDNyocsswrq51FuFmhkjpLESU1JxgxfIA3Ysgh9EHLjhvIJURl9NCtbcVNuTDdwA113D1URMTTd+BqykoeR6IOl3gCmCJbsrEbT6gOiUlUOgcuV8TLBpSIJg8k3gl0FiX0VkCpNhGHclvxjBN46uNZF+Nfq1wou8C8Y5FDoIqW2AWAzK35IBCmwrEHR1cnDrvS9N0plEOpk2jC7YQ1nQ8EWaqGt64WhiANgbRixcmFBzuq09nP0O3+GE+vl4BcCYlwz/AMFVwM6F/Wx9f+thoa8AsE2KLXYCvXLrifNJ0eXuYykgwk8MBR7mvPWOdsoh9sfy0wbrPyEkhT0Lxm5VHDkVgu+A9MscnlvoUF/XDZuqEAiTTqcYxJAHJXW1m30/gZqiFlBL5/PbeND8GWEAbWwPTjUrDisEAqr0PX85zNE1agaWm9Xyxb9s8qoEE/M69cuJS1Y2GhdA9XDumERUELLQTqJyZDlEmnCa3875XyPGnfpziLpp6A8+k64PRDjqwtLLKa88HXRAbFIHVCl5DWOzsZZd+nrMiE0a2T+sOI8ZOvWcz52z9v8ACC/ZJcSZw/8AEIqD1yZT+sz8d+2w1NYoyAbOev5xqEIF26nr5nHbEMZhZENQ6r39c6unljihPnH2wFLQkdmESTV3UVsZOLucutOt/U0usUSgA5GHgqWtQ5P0l9cReKiJWxzFptI0yC2kg+aLWIyAkKGoiqNEPUK2aaaYwrpFoAk7NMkeAXrtDzhwVdDSJ2DvRSpgO6AAQNybyla58hR5Nra9fA79l6SlKEG2ja25qPhX32xmsvArvHGRbVGdrr7ACqA7xCtqZsF84SDzWHyBN3ymuUXqHcFAePavKlQi8W4K76OfvTAO2SSkEDVPrHHAW4FtQc2uKRAqhAYEp3DatX/E4faS4E/8Rjx+ufD9mfO9mdsUM2w5jo5w2J31IT/XXG0qlvSL8ucS3849uU+HR+2JIWpASgXpZzkw4VYwSy8Q3uI4Zhe+2RXbA158f98hoY2Ci+fPnlYYHZpstunlMBlJBxUCKAqhevm4tiDNOiM2TU4TWJaQBtAietdJSmjE/bQK7yju6887zu3u0HSiu9mafmbANppQ5Re2cuBPuBjtQMa0dsHNJdvb5TQEhWGIO40iwKm1gN9jJtfE9k8noy/prDOTWwj2qJu6yca2YiRDa7cbe+RDIoudEQey4dPeRpBQTc2Yo5Tenm/9M5mnntfrkGIPmH85wU7x1v1w0UzzD164nP8Aed+uOuJ+l584j8r9cGnNv4XLOmPL/Zi35vK98QI55f7PkcS73b/piXxv1y/HyPPN03c64PfI+hWf7sS/mL+c5uKz8nrnwT165J35s0frgHyP1wX5H6584/nPnH8584/nPnH8584/nPnH8584/nPnH8584/nPnH8584/nPjH8480HMkKTXkPf/wAHj9cvo/rM+d7M7ZN4Zo8QonpgkPSDrkv6XpHvpivdIoIp79ZwYt64xbj+Hk/bSkdnZwKoN23GwcHIOkR0jg8gGACABwTXgAcGRnGUpBY6AV3o7ZBJNdsVeICdIiOkTWBM8BADgDpMJ2cAfsDQbyOxryxCSE9MCIAPTEIgR5HrjtSqqb4g6nnvht5KsInIgQQ1XvkWwvfDWEVwVY4RlpCbzgDobDCRrUIrzpW6++Ta980R2dnDAY0ENQvUQj5YEQAdpnV1OXq4BCCibCp1IK683GpgCRAgrqgBvoYl5313gIArkTTkueAAOwdsOWcGA7BkxMlSyQipNMUp0XBjTm2+eAOhhCfHBACgqgFegYAEgKFFUXKVWcVcq1d8XNiTGNKbGOcAdDR92r/4PH658T2M+d7M7eFOOfLBSgq9x2fOuuOMmhCdBTA7Y+Hzej/9Fw+uD5PRgrfGPFNgEdHHX8zFphAzeOUOy8c4/ulhQkIhQeHdvLLhn8O2TPm9H/6L93PhezPgOzHwZlHqTQk64Uah5IC8iwdMBS2kKqEF21r17ZfA7PnD/wDRfv58L2Y9fxjxsYqQFYdvPECiPknggR/LCjDHe7KdE44yDtnqyOz5P/ov38+F7M+d7M7eHnTqIEHDgaUZDAStdUZNS+IHHJ3HA4eHH/8ARfv58L2YK3xjxYrAKl1O/wCmCVgwBlKlNlf0ZOLoFFlQDPPOOk8u3hw//GTJke2SeE+imU7mR3M84988p755T3zynvnlPfPKe+eU988p755T3zynvgaUd9HPhezFPgaeLCKDm+2cYu8P0UWRC1Elcc5fskYLqFOXv2xUxLhh/wDjBvi2YEfoE1MTEmOOLfB58C3OHjyx0mbieYYZ537LDv7j+jKlngF4Y4oMJpMatKebipf/AI5f/9k=&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}"&gt;&lt;/p&gt;
&lt;p&gt;You’ll notice that most of the &lt;em&gt;capabilities&lt;/em&gt; receive an &lt;code&gt;interface{}&lt;/code&gt;, that’s not very helpful.&lt;/p&gt;
&lt;p&gt;This usually means that you can either pass &lt;code&gt;true&lt;/code&gt; to say that you support the feature fully, or a struct of options for more intricate support information.&lt;/p&gt;
&lt;p&gt;Check with &lt;a href="https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#serverCapabilities"&gt;the spec&lt;/a&gt; to be sure.&lt;/p&gt;
&lt;h4 id="example"&gt;Example&lt;/h4&gt;
&lt;p&gt;Here’s an example method implementation that signals support for the Go to Definition feature:&lt;/p&gt;
&lt;pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="go"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;func&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; (&lt;/span&gt;&lt;span style="color:#FFAB70"&gt;h &lt;/span&gt;&lt;span style="color:#B392F0"&gt;Handler&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) &lt;/span&gt;&lt;span style="color:#B392F0"&gt;Initialize&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(&lt;/span&gt;&lt;span style="color:#FFAB70"&gt;ctx&lt;/span&gt;&lt;span style="color:#B392F0"&gt; context&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Context&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#FFAB70"&gt;params&lt;/span&gt;&lt;span style="color:#F97583"&gt; *&lt;/span&gt;&lt;span style="color:#B392F0"&gt;protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;InitializeParams&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) (&lt;/span&gt;&lt;span style="color:#F97583"&gt;*&lt;/span&gt;&lt;span style="color:#B392F0"&gt;protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;InitializeResult&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#F97583"&gt;error&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;	return&lt;/span&gt;&lt;span style="color:#F97583"&gt; &amp;#x26;&lt;/span&gt;&lt;span style="color:#B392F0"&gt;protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;InitializeResult&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		Capabilities: &lt;/span&gt;&lt;span style="color:#B392F0"&gt;protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;ServerCapabilities&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;			DefinitionProvider: &lt;/span&gt;&lt;span style="color:#79B8FF"&gt;true&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#6A737D"&gt;// &amp;#x3C;-- right there&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		},&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		ServerInfo: &lt;/span&gt;&lt;span style="color:#F97583"&gt;&amp;#x26;&lt;/span&gt;&lt;span style="color:#B392F0"&gt;protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;ServerInfo&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;			Name:    &lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"yourls"&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;			Version: &lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"0.1.0"&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		},&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	}, &lt;/span&gt;&lt;span style="color:#79B8FF"&gt;nil&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="implementing-a-feature-the-definition-example"&gt;Implementing a feature: the &lt;code&gt;Definition&lt;/code&gt; example&lt;/h3&gt;
&lt;p&gt;As with &lt;code&gt;Initialize&lt;/code&gt;, hovering over the types of the parameters will help you greatly.&lt;/p&gt;
&lt;pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="go"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#6A737D"&gt;// IMPORTANT: You _can't_ take a pointer to your handler struct as the receiver,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#6A737D"&gt;// your handler will no longer implement protocol.Server if you do that.&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;func&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; (&lt;/span&gt;&lt;span style="color:#FFAB70"&gt;h &lt;/span&gt;&lt;span style="color:#B392F0"&gt;Handler&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) &lt;/span&gt;&lt;span style="color:#B392F0"&gt;Definition&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(&lt;/span&gt;&lt;span style="color:#FFAB70"&gt;ctx&lt;/span&gt;&lt;span style="color:#B392F0"&gt; context&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Context&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#FFAB70"&gt;params&lt;/span&gt;&lt;span style="color:#F97583"&gt; *&lt;/span&gt;&lt;span style="color:#B392F0"&gt;protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;DefinitionParams&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) ([]&lt;/span&gt;&lt;span style="color:#B392F0"&gt;protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Location&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#F97583"&gt;error&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#6A737D"&gt;	// ... do your processing ...&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;	return&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; []&lt;/span&gt;&lt;span style="color:#B392F0"&gt;protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Location&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;			URI: uri.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;File&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(&lt;/span&gt;&lt;span style="color:#F97583"&gt;...&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;			Range: &lt;/span&gt;&lt;span style="color:#B392F0"&gt;protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Range&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;				Start: &lt;/span&gt;&lt;span style="color:#B392F0"&gt;protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Position&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;					Line:      &lt;/span&gt;&lt;span style="color:#79B8FF"&gt;0&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;					Character: &lt;/span&gt;&lt;span style="color:#79B8FF"&gt;0&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;				},&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;				End: &lt;/span&gt;&lt;span style="color:#B392F0"&gt;protocol&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;Position&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;					Line:      &lt;/span&gt;&lt;span style="color:#79B8FF"&gt;0&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;					Character: &lt;/span&gt;&lt;span style="color:#79B8FF"&gt;0&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;				},&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;			},&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		},&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	}, &lt;/span&gt;&lt;span style="color:#79B8FF"&gt;nil&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="using-in-ides--editors"&gt;Using in IDEs &amp;#x26; editors&lt;/h2&gt;
&lt;h3 id="neovim"&gt;Neovim&lt;/h3&gt;
&lt;p&gt;You can put the following in your &lt;code&gt;init.lua&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="lua"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;vim.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;api&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#79B8FF"&gt;nvim_create_autocmd&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;({&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;'BufEnter'&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;, &lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;'BufWinEnter'&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;}, {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;	pattern &lt;/span&gt;&lt;span style="color:#F97583"&gt;=&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; { &lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"glob pattern of the files you want your LSP to be used on" &lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;},&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#B392F0"&gt;	callback&lt;/span&gt;&lt;span style="color:#F97583"&gt; =&lt;/span&gt;&lt;span style="color:#F97583"&gt; function&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;(event)&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		vim.&lt;/span&gt;&lt;span style="color:#B392F0"&gt;lsp&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;.&lt;/span&gt;&lt;span style="color:#79B8FF"&gt;start&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;			name &lt;/span&gt;&lt;span style="color:#F97583"&gt;=&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt; "My language"&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;			cmd &lt;/span&gt;&lt;span style="color:#F97583"&gt;=&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt; {&lt;/span&gt;&lt;span style="color:#9ECBFF"&gt;"mylsp"&lt;/span&gt;&lt;span style="color:#E1E4E8"&gt;},&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#F97583"&gt;	end&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span style="color:#E1E4E8"&gt;})&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="visual-studio-code"&gt;Visual Studio Code&lt;/h3&gt;
&lt;p&gt;VSCode requires writing an entire extension to use an LSP server…&lt;/p&gt;
&lt;p&gt;If you want something quick ‘n’ dirty, you can use some generic
LSP client extension (for example, &lt;a href="https://marketplace.visualstudio.com/items?itemName=llllvvuu.llllvvuu-glspc"&gt;llllvvuu’s Generic LSP Client&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;But to do a proper extension that you can distribute to your user’s,
you’ll want to follow &lt;a href="https://code.visualstudio.com/api/language-extensions/language-server-extension-guide"&gt;the vscode docs on LSP extension development&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The guide assumes that you’ll develop the LSP server in NodeJS too, but you can easily &lt;code&gt;rm -rf&lt;/code&gt; the hell out of the &lt;code&gt;server/&lt;/code&gt; directory from their template repository.&lt;/p&gt;
&lt;p&gt;I’m using the following architecture for &lt;a href="https://ortfo.org"&gt;ortfo&lt;/a&gt;’s LSP server:&lt;/p&gt;
&lt;pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="plaintext"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span&gt;handler.go&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span&gt;server.go&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span&gt;cmd/&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span&gt;	main.go&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span&gt;vscode/&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span&gt;	package.json # contains values from both client's package.json and the root package.json&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span&gt;	src/ # from client/&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span&gt;	tsconfig.json&lt;/span&gt;&lt;/span&gt;
&lt;span class="line"&gt;&lt;span&gt;	...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(curious? see &lt;a href="https://github.com/ortfo/languageserver"&gt;the repository at ortfo/languageserver&lt;/a&gt;)&lt;/p&gt;</description><pubDate>Thu, 25 Apr 2024 00:00:00 GMT</pubDate></item></channel></rss>