From ec887112adb2796efb55d3693536cd83d890c19d Mon Sep 17 00:00:00 2001 From: Filip Znachor Date: Mon, 19 Jun 2023 16:03:44 +0200 Subject: [PATCH] =?UTF-8?q?P=C5=99id=C3=A1n=C3=AD=209.,=2010.=20a=2012.=20?= =?UTF-8?q?ot=C3=A1zky=20ke=20zkou=C5=A1ce=20z=20DMA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KMA DMA/Otázky ke zkoušce/09. Svazy.md | 65 ++++++++++++++++++ .../Otázky ke zkoušce/10. Booleovy algebry.md | 36 ++++++++++ .../12. Booleovské funkce.md | 55 +++++++++++++++ .../_assets/distributivni_svaz.png | Bin 0 -> 19404 bytes 4 files changed, 156 insertions(+) create mode 100644 KMA DMA/Otázky ke zkoušce/09. Svazy.md create mode 100644 KMA DMA/Otázky ke zkoušce/10. Booleovy algebry.md create mode 100644 KMA DMA/Otázky ke zkoušce/12. Booleovské funkce.md create mode 100644 KMA DMA/Otázky ke zkoušce/_assets/distributivni_svaz.png diff --git a/KMA DMA/Otázky ke zkoušce/09. Svazy.md b/KMA DMA/Otázky ke zkoušce/09. Svazy.md new file mode 100644 index 0000000..710f72c --- /dev/null +++ b/KMA DMA/Otázky ke zkoušce/09. Svazy.md @@ -0,0 +1,65 @@ +# Svazy + +Svaz je **uspořádaná množiny** $(X, \leq)$, ve které existuje **supremum** i **infimum** pro **libovolnou dvojici prvků**. + +Pro libovolné dva prvky $a, b$ svazu $(X, \leq)$ platí +- $a \leq b$ právě když $a \vee b = b$ právě když $a \wedge b = a$. + +## Princip duality + +Když v libovolném pravdivém tvrzení prohodíme průsek a spojení (a uspořádání nahradíme inverzním), dostaneme opět pravdivé tvrzení. + +## Operace + +**Supremum** +- značíme $x \vee y$ +- největší dolní závora obou prvků +- spojení (sjednocení) dvou množin + +**Infimum** +- značíme $x \wedge y$ +- nejmenší horní závora obou prvků +- průnik dvou množin + +Mejmě svaz $X$ a $x, y, z \in X$. Potom platí: + +| supremum | infimum | vlastnost | +| --------------------------------------- | ----------------------------------------------- | -------------- | +| $x \vee x = x$ | $x \wedge x = x$ | idempotentnost | +| $x \vee y = y \vee x$ | $x \wedge y = y \wedge x$ | komutativita | +| $x \vee (y \vee z) = (x \vee y) \vee z$ | $x \wedge (y \wedge z) = (x \wedge y) \wedge z$ | asociativita | +| $x \vee (y \wedge x) = x$ | $x \wedge (y \vee x) = x$ | absorbce | + +## Distributivní svaz + +**Definice** +- Řekneme, že svaz $(X, \leq)$ je distributivní, jestliže $\forall \, x, y, z \in X$ je $x \wedge (y \vee z) = (x \vee y) \wedge (x \vee z)$. + +**Birkhoffovo kritérium distributivity** +- Svaz $(X, \leq)$ je distributivní právě když neobsahuje jako podsvaz $X_{1}$ ani $X_{2}$. + +![[_assets/distributivni_svaz.png]] + +## Podsvaz + +Nechť $(X, \leq)$ je svaz a $Y \subset X$. Řekneme, že POSET $(Y, \leq)$ je podsvazem svazu $(X, \leq)$, jestliže operace spojení a průseku v $Y$ jsou zúženími operací spojení a průseku v $X$. + +## Konečný svaz + +Je-li $(X, \leq)$ konečný svaz (tj. $|X|$ je konečný), potom v $X$ existuje nejmenší i největší prvek. +- **největší prvek** značen jako **1** +- **nejmenší prvek** značen jako **0** + +Jestliže ve svazu $X$ existují prvky 1 a 0, potom $\forall \, x \in X$ je $x \vee 0 = x$ a $x \wedge 1 = x$. + +## Komplementární svaz + +Nechť $(X, \leq)$ je svaz s prvky 0 a 1, nechť $x \in X$. Prvek $\overline x$, pro který platí $x \vee \overline x = 1$ a $x \wedge \overline x = 0$, se nazývá **doplněk** (**komplement**) prvku $x$. Svaz s prvky 0 a 1, v němž $\forall \, x \in X : \exists \, \overline x$, se nazývá **komplementární svaz**. + +V **distributivním komplementárním svazu** má každý prvek **práve jeden doplněk**. Takový svaz nazveme Booleovou algebrou. + +## De Morganovy zákony + +Nechť $(X, \leq)$ je distributivní komplementární svaz, $x, y \in X$. Potom platí: +- $\overline{x \vee y} = \overline x \wedge \overline y$, +- $\overline{x \wedge y} = \overline x \vee \overline y$. \ No newline at end of file diff --git a/KMA DMA/Otázky ke zkoušce/10. Booleovy algebry.md b/KMA DMA/Otázky ke zkoušce/10. Booleovy algebry.md new file mode 100644 index 0000000..012ddcd --- /dev/null +++ b/KMA DMA/Otázky ke zkoušce/10. Booleovy algebry.md @@ -0,0 +1,36 @@ +# Booleova algebra + +**Distributivní komplementární svaz** se nazývá **Booleův svaz** nebo **Booleova algebra**. + +Operace spojení $\wedge$ se značí symbolem $+$, operace průsek symbolem $\cdot$. + +## Booleovský kalkulus + +Nechť $X$ je Booleova algebra, $a, b, c \in X$. Potom platí: + +| | spojení | průsek | vlastnost | +| --- | ---------------------------------------------- | ----------------------------------------------- | ------------------- | +| S1 | $a+a=a$ | $a\cdot a=a$ | idempotentnost | +| S2 | $a+b=b+a$ | $a\cdot b=b\cdot a$ | komutativita | +| S3 | $a+(b+c)=(a+b)+c$ | $a\cdot (b\cdot c) = (a\cdot b)\cdot c$ | asociativita | +| S4 | $a+(a\cdot b) = a$ | $a\cdot(a+b)=a$ | absorbce | +| D | $a\cdot(b+c)=(a\cdot b)+(a\cdot c)$ | $a+(b\cdot c)=(a+b)\cdot(a+c)$ | distributivita | +| N1 | $a+0=a$ | $a\cdot1=a$ | neutrální prvky | +| N2 | $a+1=1$ | $a\cdot0=0$ | neutrální prvky | +| K1 | $\overline 0 = 1$ | $\overline 1 = 0$ | komplementy | +| K2 | $a + \overline a = 1$ | $a \cdot \overline a = 0$ | komplementarita | +| K3 | $\overline{(\overline a)} = a$ | | involutornost | +| K4 | $\overline{a+b}=\overline a \cdot \overline b$ | $\overline{a\cdot b}=\overline a + \overline b$ | De Morganovy zákony | + +## Atom + +Nechť $X$ je Booleova algebra. Nenulový prvek $a \in X$ takový, že pro každý prvek $x \in X, x\neq a$ platí $x \wedge a = 0$ nebo $x \wedge a = a$, se nazývá atom algebry $X$. + +Atomy existují v každé Booleově algebře. Existovat nemusí pouze v nekonečných Booleových algebrách. + +Nechť $X$ je Booleova algebra, $x \in X$. Potom existují prvky $y, z \in X$ takové, že $y\neq x, z\neq x,y \vee z = x$ právě tehdy, když $x$ není ani nulový prvek ani atom $X$. + +Nechť $X$ je konečná Booleova algebra a $x \in X$ je libovolný nenulový prvek, potom platí, že +- $x = a_{1} \vee a_{2} \vee \dots \vee a_{k}$, + +kde $a_{1}, \dots, a_{k}$ jsou všechny atomy $X$, pro které $a_{i} \leq x, i =1, \dots, k$. \ No newline at end of file diff --git a/KMA DMA/Otázky ke zkoušce/12. Booleovské funkce.md b/KMA DMA/Otázky ke zkoušce/12. Booleovské funkce.md new file mode 100644 index 0000000..4ae69dc --- /dev/null +++ b/KMA DMA/Otázky ke zkoušce/12. Booleovské funkce.md @@ -0,0 +1,55 @@ +# Booleovské funkce + +**Definice** +- Booleovská funkce n proměnných je libovolná funkce $f: B^n_{2} \to B_{2}$. + +Může jí být například Booleovská funkce dvou proměnných $+$ nebo $\cdot$. + +Množina $F_{n}$ všech booleovských funkcí n proměnných s uspořádáním $\leq$ daným předpisem $f \leq g$, pokud pro každé $x \in B^n_{2}$ platí $f(x) \leq g(x)$, je Booleova alebra. + +Základní booleovské funkce je možné kombinovat do složitějších funkcí. + +## Pravdivostní tabulky + +Zapisují se do tabulky, kde je jeden řádek pro každou kombinaci hodnot proměnných. + +| $x$ | $y$ | $x+y$ | $x\cdot y$ | +| --- | --- | ----- | ---------- | +| 0 | 0 | 0 | 0 | +| 0 | 1 | 1 | 0 | +| 1 | 0 | 1 | 0 | +| 1 | 1 | 1 | 1 | + +| $x$ | $\overline x$ | +| --- | ------------- | +| 0 | 1 | +| 1 | 0 | + +## Booleovské polynomy + +**Booleův polynom** v proměnných $x_{1}, x_{2}, \dots, x_{n}$ je každá Booleova funkce, v proměnných $x_{1}, x_{2}, \dots, x_{n}$, která vznikne podle následujících pravidel: +1) konstanty 0 a 1, každá proměnná $x_{i}, (i=1,\dots,n)$ je Booleův polynom, +2) jsou-li $a, b$ Booleovy polynomy, potom i funkce $\overline a, a \vee b$ a $a \wedge b$ jsou Booleovy polynomy. + +Dva Booleovy polynomy jsou si **rovny**, pokud definují tutéž Booleovu funkci. + +### Klauzule + +Polynomy ve tvaru $y_{1} \vee y_{2} \vee \dots \vee y_{n}$, resp. $y_{1} \wedge y_{2} \wedge \dots y_{n}$, kde $y_{i} = x_{i}$ nebo $y_{i} = \overline{x_{i}}$ se nazývají **spojová**, resp. **průseková klauzule v proměnných** $x_{1}, \dots, x_{n}$. Pro každé $i=1,\dots,n$ nazveme $y_{i}$ **literálem** proměnné $x_{i}$. + +- $x_{1} \vee x_{2} \vee \overline{x_{3}} \vee x_{4} \vee \overline{x_{5}}$ - spojová klauzule +- $\overline{x_{1}} \wedge x_{2} \wedge x_{3} \wedge x_{4} \wedge \overline{x_{5}}$ - průseková klauzule +- $x_{1} \vee \overline{x_{2}} \wedge x_{3}$ - ani spojová, ani průseková klauzule + +### Formy + +O Booleově polynomu, který je **spojením průsekových**, resp. **průsekem spojových** klauzulí říkáme, že je zapsán v **disjunktivní (spojové)** resp. **konjunktivní (průsekové)** **normální formě**. +- značíme **DNF**, resp. **KNF** + +Jestliže navíc každá klauzule obsahuje literály všech proměnných, potom tyto formy nazýváme úplnými formami. +- značíme **ÚDNF**, resp. **ÚKNF** + +Každou nekonstantní Booleovu funkci n proměnných lze vyjádřit Booleovým polynomem n proměnných v **úplné disjunktivní i konjunktivní normální formě**. +- konstantní Booleova funkce + - 0 ... konjunktivní (kontradikce) + - 1 ... disjunktivní (tautologie) \ No newline at end of file diff --git a/KMA DMA/Otázky ke zkoušce/_assets/distributivni_svaz.png b/KMA DMA/Otázky ke zkoušce/_assets/distributivni_svaz.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c57dddefa24249857687a94bdc35603500308a GIT binary patch literal 19404 zcmcJ1i9eKW_^)L!7#W$E5R)XkAr+D>W6K^w$eOJ}$i9~}vP71YrLiw%FIhs8glr+Z zED6b;HO@8f@0>s2d_L#+yzg6YGV?t5bKlqX-L840r=!Niz`;O4LBXV@53+jZtA8U6ck53lK-Vl6h6X9L4l*tP*F1UdGR~V*GJ1?q_InW@1vcr z%HIcQUYi0#mM?kvufDzRH@H}E=}p}I{QJG###a#pFMT7++pqe0KXN!f`d#$9t=Qr4 zz{k>Kw*Nd6Z-QO=#Oy*Mzr)v2ho5p=?=t)e1br188i}yc$6sNj2vx+P^P^6pk=gVV zUJ?kZP!sO|{`cdWq6G@RnMAi>gG5l3$?36Q#-Sr;Lu;^9p^75R-&)8o;hQNI0WZ)_ z{r~Gn@8{4s9*rakAgRJ|(lOzO1pRNl%1XFS&h$AJL=(QFE_1THkUBq#MIYmv&W@lQ zl?cOS3NSpCL{RzOX)KRd=OYOaNs)48UbtY!Z!L#`#^JRpXauU+B&h|Dl5aj4H^+bR z;zbDwi8E)^3Jl->9d=3J*PfC-vM?nZaxisxckXMNQaG*GpV6J@3**)9)3iR1FXQ6o zn(ZXV8iEf;-+46r`#UmL>n#&AE&a7u`J7Ynpx968m^oimGxsIGjn!5j_G8CH&8zWz zd^5j?Dl&q03!F(Cc>cMhz>*!;YOiJDqFb}w} z+hQYd>N+}K<4<1^5)zu4n)=Y(Y$RmV5cH3Wi|b2!dlRJ|%Vk_wr~px9dJ-N^{kb^gD+6*y22GF<743AC zdgD4V{`Kn-g1*(L;sJfpfoE@DpX+F~wdAwmH@B}_Sfr(=AAG&I{1_`?v%T`;_3PKz zh$bXA!az5~J*#itC*8r+xTyc;&70*SBd@MsD2${Ma14@wU>l zlX|hgB@Ach;7}p5_v0bY-#=p`FRqFZd6m%r=jZR`OgZE@+ zX7={>zH((yuGG@vu{Abk8r59sG8ltHW(J!k&HASEX+&77$InQ|@M&DR!VoH@uh=9M zVa?SlYFU?pi%b;0=I87CL;Af#SNih%y*qHz_`K?LlT95tX=#%J!=&V7Rs^NF8J|YE zNUh)I!ikIb+_)Z+1hk0vVg1tQlnR{h-d)>V9Bh4je0qAC+PwMhJ9A8ngzYCq3v=CK z3-)%q^0N+K@u*YCFdP!@c(frn*vP0qlI4_i4E39eoR<5FsRE6O$xoh?xeSU$t4=R3 zGvEDNWp-OhDKsrDO^d&x@^L5a;--Ei35!OfIXP?nxBiruOGc|^4K8Z)UwwGwgmH=G zSfP<{JfF2PC&GYEt}BY#QppE{muz(D*Bk;OdBPz zb!eMvE{ywR1@8SF8XDqi6~r)HxNzajnKNNHxJgrKwE9>`WP6rcY^B-lJe@QQ15MYu zl=kB0uFK$S?KIhbu1A!2?60(sWS7Cx%lT^7*4Fy_`ce+!e?Oy#M~-S1APR|!+GF{p zq%hU7vv+-O-puWB+*n&P5K6r0{U=~+%v&QKgP`==UuZ1MFw9KkQP-aHm1TSDR`K)a&&|aSC&QWd|NRpc zbvoPV=LL0ZXJ^N@H70Onl9EU=D0pgZlF;Vp;=;+vdC_mfaU1(kap9ArR9KxZs#){O zl_u2$9P*hKKatdA6{pU}ry+!4xN>C}RcgsY(_Y@z)@EvIDiD#dW{fOo$!L+U@%F>li}t&TMjOYO0sZAe5i$W}kkBZVtCt{bJPa!-Z1`*sSXB z%RTb>;G1(5T(@6+Iu40yRgym%Go37EFr6r$ zizE9Wb5Yb-nFwS0k7LJx_{lhnV6U! zhzjE3@+e*f3lKlxQHVb=+?UJ@45)&V;xX;+BDbHa=WxHi!`d2iN^kMpb~=4gAC$*9 zzMbvW=_;4O+`PQtgPl2ek3WBIi`}S^cA7#cC^U3;qfvyLUFr3%6Y@|PCuu4wzoFHy zQa0ne&BN@6pb&|eSL>ngQ_~%>v$q#DEx(`Zgnt-nZz9gD`*z@!X~apZxeh-ouUL^V z90Mbxt&NSOq~!VA!!y&UCr&G+cgo1UhKV-C2gma*DVr7Q{&f zgd%@3I;>U`I~m)QoxHYqJF?a5MGo@h8cJXk)g@m@aoQ@hNq5G04kyN%cR5(tDO zws*c(qF&ypW*jnXdK=E!(W6J9E5Vyv25uU4OG62{eXzfi5wNCVWrb636@)Wc>C^}B zbFJ8?%9${dZl8zx+jkPM+h~6t}vO*(Hii?ZO%O5m_(`jgESk&I5;b0@^ zukRnRI$?|bIW<*&YpDFl3E5)Pil2X%MlzG1=ZI5LIo(2rQFsRt2rckup{o~t*Je^u zQs(>eYOAaDFf_Y?;RnwqgF|KS-MbeP6O+_FD{Nd`?Z5RpF(t4oy6TrrmD#Jo#cL&& zY0sbU{o9&=BHA{)CL6@!l{>7MVB}s2~7O z-UsgaZTwm#Z)h$Vs0;1O4TthE(|j7FUk%k4lthJ1RID6_;NeJ~J=y|S{>cm3z>iT9WA_>}^MGLh?+mhXf9?LK7Y5xeoe z4!Yc=<*j1j5Je8=m}!%w(@0)n;l;d+AgZ#(KV!A<{=IE&^E#%ijd$#t30+_z3iOB*8*qGa#=uD-W4Tv;i# zZTPU#&?KpUaTB&h!Wmt8pOwi{>*lHH>ABA5b5m2iiSogltVGh%aMehSm+;C7g@A3e z&{RY3n%C;viJ>rFp(Z)NEL+dF_a#$Y*ft|Wf~QRI zf}v5r1kEzV*bpysb0h4BMn^|=<#%S1Zv;Ie67PC>(cFG@I3PyLuitOe6*FqBLm4eO6dE$hH zu`wGb=LmquXIjRsot}#WuV@(Aevj9W^z~K5^sUJqLdA;aya20;lawrnvZsk+Cw01=0593z0|^0zj#*?l|)1mCW-g!lZBdoUfW%>oH+t1OicPRy)y27FBo|_xR&`0sM493*HH!g#B)_-;)!)}dMOI*72 z&%RFIBYXCH3s);N-)*OTWwvfLS8=VE>Z;-)|nYO4imt3XO{3NWnc= zt6+OKC@(!wTA^+(g;mSAcQMdy5s`v1)j0BKQV>0-Ug~{r$(9@xl}K zZv<*hc%NX79lJeLej0en`Sb8&Rq5i09}jl(OhTS&U z(RUSIiv#ek*REYFv8esq$`ky%FE5rL_vYv$m8_oP8x85x)v))<%gg7kq_}8Q3Rt{& z@`Qzx(;vuAf6+BMTG{~xM!K16D{?ow!U_7GUS4D6_EF|yH!5y+{@dHS-tm{Jmv?76 zR>8)`hE3e^MRGFx@#F6R{IQ%;4O#7A(+|t+3s6*S?9I6nt!nG(xe-ps%yHu}KcQkv zKShf_W_srC4wUJ^*A_*Ci%`$u0frV_*IjPve10J`_CtGnk$h`7vo@wBK0Y3{2+)e4 zjUF{9cF3?sLE1R>k9Lx<=K}VY-onkR>PtyTK$riI{&a4g&Hqd>a5*SQJ`4vX_2{Gf z_NMqP*8WWaQS5azhin{X^DyF ztQteem87!Lu&Ce6OrX8{ceFGdIAh~CK!SiTZg2ZUtFCjM0j?>P>Nmh{gB^fP`RkYC zwQGa!)1Qv9u_@PL*Lc5u`=*tGZ~F9!Utaz_Y#vykKZ7MVf`Z(?Zoz^;PgUayl)BlGvcFH>{d{N6K!ZbT-`(KCFO5_> zRX`W|@Zke+s-(n3Q}R{LynpUTrTRb;UA-rjRUokr|^Qqd$wC8eeaCQf2h6yVI^f~#lt>AO6I zfUesX&Y`JCX9bAPQmJs49H@xnXK#+ydNX%41;(%{7qjZ^JWEdx+TC!1b|4?PtDa-P z)k@IU($)2Lb91|UxA3-b3ijtO-Bxw_(~0eF@pwt8Gf0GzK;jpu>Cj93|Nb6={+oI4 zcn5W$#w@2e@)!0<(rtD1&(N+b&6ajI7uVO;ieIf>@#t?cD5xwfblzO(kL6LI-Mq_| zp*i>aHy0qsc=X@`$V`{FbFmv{CYbg$=ROmJLpz4QEQpcU4we|Aya&|5(DJgmQ zP;F_NfN1;rRaN3~rn;UYbIpYH87NV4DCn7^!#=~@TMZ)fLNWd@*&NOIm%c%qR5v`*@_^2fu}B!m(k1**gE zrKNKmOzq|3z1?}Ml-HW@kHf>8%kA66ENUtpdq`nnR5Oos-?j90cuF7<4t91>=^Y## z)KpcWrXQ&kFDpLvm?ZE>C2YDnHnt0%D@ZEm?~DQ@p_cWyu7_8zP!vi`)yjp}$uTG} zC{WQy^fl8w#D)D2MhA$U{a(1{$8Wt}b0fOb$)Jywq6>Eqz0M{T{dq(0R^- z8~{5xcVOT|Gv3>K3mO+T`V$mKP898xD+niAvUc>ezP{e#49;R}UeOa6oh z_wQ%t-^Jt*h^77<0;3|phFzMk`=+Gy#Gv#st3rRsO@T0VY!`t)hXv$J$> z2JY_*bG81E{d^^)S_=H`ZT`4&W|cOH4?wqsWF^98Q7uPld1bU+Ec z5wv3upxe$ayQDE6Wl6X(IU0fA-=O-E(RCt~KY+;F{p95|18qLkqD?gfZa&jmsDI5Pf|6$+Om14FK zK`KLa0N`z4V2}i~wam6PVkySh#KdQ9rtQfowey+UCyAu`dVrft;viAM`OM73Ui$W}YvbFHN-S`aI}Dth&w(5LkUsJ^On`WV^Zetvo!~;o z7WYv{sWrKherL`bzmu7^wRZn5Md3aJqeCdAoOOut_2~ZKSTpcmfS6hQzPMNfwz0Ul zD_ktBl2D?iSn`F*iXQXDo>G6FFdW~}M_T;rtE)TP)3H}HHEnEdy=2pXmc?_OQ2%!l zNtKOO=Q~Oyf!-jX`BE>A&*`h!cAoYzNBVEP{yJf?%CC&K=KJPA?Sa?d+g&X2l0AV> z7ZJ6f?(_7L*shj9U9WW1hjlbJe*xN4&I3R0MtPUc)N{f6tF5rNK{&Ne;zX=zL4k#y z19f2;S~TobvsZ6sAAEfNT1-_RvvKMs_9h^8=+<|f=Uq1GT33NJLL-8|8AiGd=P*?2 z%wyG41pUhqsAtgi95Mpm*tQ;t(;AC+yjzoEjSX*VTn~Uv@!F!6%v^4Erosy(C)dW1 z@&$nft~R4^8;j^cpoS)FQ3`{e&=U-3hS8P-`~gC*+Futv1>cpom#YGi9z%_ zhK#FXBVcu57YWPD2ernWpgY2q=~UAq736f6Na170 zLjemzn=`9+v$nTCT^V&UZkL*OsornX3{W62t%QUGQOS~J`))(evNk)C6VR-UjScAH z@L%ZYlarIG>nz~|yIxm-S%G|Psi&uBWJDu}>e>~{e0VFC`x3d>CMUmjpH{^)&D@wc zK~+G#cwF_!-{iaR0zSu`?90{O+vwAU_qiTXL870x!S6Uve~N~)G4jsCL0vu4*M)h% zP+a^Ns?|MO_3GPkU2W|&Xs)o|;UM|L?w<2MRba?agWUYpV+&7`{FBx0r&6Adk1q2? z5-56(EcUcy_DK*)3=eENQY4CuU+t3LFg_l1O^*w4&xvBj1%|3wt68z~U)tJaJb%SK zeE85@?84z@&TdrbQBMz#EP=w9W}v?Apx?)wxHw+#e=WzLesWA#|7mjaAn>TKporWW zlI&*u`L2sL)P%E9HfX)`!i8JkSLX9FxMe-_-)$8;*4128!l@^7}2*-Jf70HSb) zJbreN)$@+yXU$)j>!Hp$dclT+Q~T2RiAUtY)vWYsY2OJfE`~sTy zQ^y#}-ner4AO(rL4TpOTy}i9)SZTe~tJ@s7F8NFgLoh_Mpe}d#YwKgsEJatHQchjq zYPH4=Y*z?!EdTRSvZLWvii4sYIQO;ds(}F-(|__s##`@<(m~?gwb2(AfD4DKT%uSJ zVK|ZYq@*PNGiS(hCG3u)k7mdZx+`OAb2ClSo~ZoNN69y&ZyH$P!}s!@v!6D@_QOcM z@tH@IfV+d96MqyzlneBj`|oROX=HFhF9y#3B{)YXPg-9I_^{zUq2T{# zG;42*k%0j)!DxN`nYs&Pt{jGYqTXmjeVGf5U?E7HI(14=u+32ld;*Y10jPn?;H+E3&(7xreXfi5L}I3~u{gO{BuRilfXHiAIIa+^ zoGF^8!b|zp;E@WINV;kbRxw;B@ik+F?I!9U?o^h?R=07?U+y6JBd@>4ECooVzq0sO zH;z3IKu>ehCv>i9RW(aOR(80(UHJ5ALdoEBtz5ttL&L*i^KbSOn$tOz&|hE3^yOS( zr&Cj_s()2c`~2$jftWk554V2CEqdQ!B&`f4bIJL1_w}vsEjO@dJk@TH=4vey@dt6E z=`yYNQqNe^kcLy%T~GJFOe@}ZmSkbeOikH@H(3Q;)Kk{(+W@?x`WVXsSpC^ECp;E} z9ssTHZjYRguiyLbbNfkD>)Z!r!@bp|QoTG%5& zoA8;Qs-02fTI+Gg)YpZDUp{}{Uhh&kd-iNoW1eaPPq)v34Og=}mxAB#Us(_5rBeo- zT%x9{l~2x@{u!^|Lp1}F$@~>e0EL`v7k!H5nE*fPkqR#|3_5`pze|5%e-vj6GR*MW zwcySEYj9rVxWPf+Ucen+rf5%)jF(+E>Pm?_aTFE@KF& zX3*^Sn06b~>H*L8Jusi_>C&y58L&}F4K zB)HBXd1p0=O_|9D%hjd8c>(TkggKWge#N z9g076c&@JAauZto3;L9+%@IuPZEe2G^;;?^L9rl_L`{Oq{!T}Ucf^qc$LUYk{3Ak} zI}VtV?AzPh6?SG4fQ2uCikx`OQi3BIkOe<~4CjTfZEXb-;@PWgq7gO%#9pcBNU9YI zfY1vI&iD_;%KD&#pb2oRVcpJE>|*9f28O%t?vy%ysAeGNYWjxIs=|M9;C+*Go#Jt5 z1ZA1hiltoFVSjN)XQ!x;kTUw?*w`hg$Z-BUJ8%En-L$v2|IDbO18Q%EqP^)m%;_0v z!b+ryN|OSr8R#NloQ^qm#LMh#JLta9TVK9>DftW~(sJ^0M8LnzL9(3uLD50tBg07~ zIJ{Z&heqH2PZpr2rpBz~s`D-M(KCEU?>BldtY5gT;{$%=)hn0t`k?+#g5dWIKuTBo zB^Cr(1TVM05^mz(r8!-n5sAY_Y%(#Qp$~g`Ji;F2WSu-))1=(v&$OVr)1Kh>0XI;ASGa%>y zHU!@WJg4S$xfDv2kcvAz3lhytJy_Y4G1GwfrL+?a9)(0c)nYg(FdG{6Uzr5NA*DU2 zbNOpWhn(A_qKSzK;I$@(UPq~(o*obv!BCDC37DR@F~kUBp6`rHT~l*lXwo_-E2yfz zDPmzD_~S`_Vi8a>J+5gQO2d12)b#8ujV9iW>k#ToQDGr;@skN{P$sWly}BN@R(WR( zcDbQgGGkrHI`0E3gU42$eotrjw*I)>)9~POkbL%7bs8ucz;+W8?5_gibTtl%AwWH; zk37LpZ1zC8=dCx-(^+k^6Av;CUc^lyPVzP;{+^uF+uMGA!Bvwl{+gxl1Cqex6AHmQ zsAizLJ*kq1CvnRM8M2+%IdR3W^aLDL?A)H7acBL&swpFsfHjGjmd3~Q2JAB{>|5cn z0Kkj%1VT=LNGt~zKX@a!e$```qX&%t)LejE-oL;9SYBS9nK3jqr9a39YPP>0LJwBB zV;+-@XQSyYDUK4$`oex^|IGy>;3*rw^wV^AK4}zon1DLsvpWIpHNT+ev=0lLWq=n#)9cSzB8h7@Lt%qD~$s z-l`D@qYL}XNK(FWkp${$QGZp}Qu|x+FiYg;=cI- zXhS}$Q>CT&%snX%Z9sg`!x2i8(toB}qTofCn(=V@K(o45V8|4&`D0;$gOzoC#I+$1 zDm9=0C?&yAyFgF5Ry)J2gpQeZc6NrXcj4Y|6OSh}+e`%gKY#vM9qm|egIzAgu{`>& z511a{z6@!1UIm4T_I8)X5K1s*ygfY;r|xyMKD>WFgfisk1TrixF%cZVbKn8NRh}A1 z-eC^KA$gPA!SVh*Kfi+)=RAWn4^!88^fcZu75s{DXfzoM9(tyxLsc%KHsb*@HU#dy0a(AW5#a7c zUCF7J1qxs@o=7_IGn;&;iU!G8&p+BarN^-@VCOD$IKY${x?7=7k4|Qqyty?5?!krI z!%|R%l+bW>i#{hc;%UQAg69gA1ccuBHoM-%O<+mH*jTy*iVUNp>K=5}kDrIxJGh%9 zb$6^rxwj|nn*Gi0~}2A<%k_4f{w1iM{;?>M)KLg zKsA1^WNB$hX`Hhe4`zCe&#H}z%Keg(<#peiN(Yzi?Pu9<1i0^R%!4pa0;5r`%NEN& zU>eX?E<(^J348^2Wq*4Ww-dpq@jYqWnbLk0uN;E=3?@Lb_zi9@t~#F{-gnB@c&r;L zp?y|b3CFvZoJ;%px@&!6T$~#yA9u!T%0!C#ouN6A4KYxPp%0uZU(qJ8pF%3f&wxw@ z$N8fB)JNd`dD_ou z>%_Wtttj?16WYKW;28r>2!1C(IOX&ij={k5apmwN1&CJuG&%x16JIcqi4=doWv+CP zkp_B%ov;e05CjsZiTD4)Xc%vq4OvO+Xb3zhaZv)8b-RZ|Ag`C(kFXv`$oPQW1aiXB zN7<{Q&vQvpp~H#le5_}5IyyQY6N$?DmGFJVOZC6IXnbBD3PwGc^Nm(LYy0UjDEH*{ z4kZID_KmGAs5)Ij*zOOC4X(qL^9%h&Kso(jhjzYgZ%9YivF%$`wKE%VmS(uTPw>6L z#nlQ*QK@r(A#_;r>u);7$GKbZ2!wxRjg1V3;I%wH*3}iurx7##RMS3uBP2jRl_+*T ztH<#TtUCPE=_^Tme0=vGJ`8`OA-<^{>M`lMnQ6Kuh#{_!zuX?Fd?+tA7YmMgh;Y*` z6{!Vr_>@}A$4{R?ZBDQ^jpuvyCgRu{Z^#B;X<%igNRkq!1f<0VJ7iPo@t4`D{u9 zSD`GFD2cLV8NC0DKQF4uxCkB?7^2sN5<#*6@Bj->$@8b(e>+@ctl?mMe=LP*Zf^U{ z$1{P8MMXudM~`yL2VmLR2ce0%=}+Dt7zk$T#f4mtA_=&RTnkn1gPLdCo+Ju>6F5fD zth#DKUoU+x^ZA(5Hg9uQGv_Xx7abiP&hxk2+}-IJ8U1~S8NO$WcS+JX&=RE~l>lxz z+)pNvgI__>5}|k56^~8bt9j8r{R8+?bsWB6N4~>DzhbM#|ar3WS<4B=}=AWU&$eLIE2!FGO*E3l+xK%`}QOd ze?OA#eWTj*RnK}oGx)5iq%`6oj}riW5?t#N^LNU9QtjoaW~pMfv%2(7jUK#J=4P|A zvw&p%>VrT_f)Y$cozU2SZtI~;wzY(=FNNh~aG+I|fU^{bl9^u?y_1p_KdW{hySU}! zn3y9+j#xGX)obye(pW1{W$k=&69)@AbFFQIZgR>O=D);OtaTTQsyvUk@XY$BRV`|@;4Oe@IL6}pvPQNQRX{c#jo@&a=W zPRiQqswoKjJi+@tBHSU9p@5ZvQv)?r*q)>g4i5G}clGuvrHc90%R?mK^OI8SG?!g%eMLeaGYjzzFvB7vBde>W-&s)2r7Sn(O`;%ZO5tR zLwZzmwn0Hfg~znIBa5f(3GF_RwPBt9fjaBZkwQ7lbV^i!vOwmzBUs0)tE*5PVEqA- z(9zryzhg@z<@e14=-~KbPE!MNee0DZ5f+3sxP=xqo|N?>95efIY^bhvC@A|2MI{16 z1|%}B&CZK%Rz=^iz)-I1LeSy;Pxndrke7fmPz6RF6emD9ZOB=3~*Vp+%rlPXa6JQ&t3)HXazxSgJcp3*To<5xeIlDV|01k(!FZZol zvbI0_&Y1VLBjc?1@P?DUQ6giqh>n()6c!~aC;|*Zt8W9^7YhqZ4`47j0q<&R!VuX> zgTYz8+fkH_QmXpjMn?Q$=|J;}hNl}HT~$$WRRF^_=-D{-czPScI>2M(5BJwYLMXa3 zho{PwQW-O+he7g{yL8FI+}u#;*k>rNIftySjjK@(U4eL8KX-eXFk8tS-px;&oCSlg zE$eGwiP=0Fz~ahK2qvE*xF9HO1m{j^SBXK#+@bF+H$$Rv$z;09`b_H$RAyk_xpAlY zi8hv&;}E+E;k^TKmqmfn=lLR=$48jasq7PmX%S z`TcJ=LO-e(sPH~{0fHy^`;|{;n7)GZ2EKoPCaY!5R{s7Bx zwGI}WCZwm|5u@-OaBY{HoR)ci)8nW_GrsZSEy-u(pN6716YP+zh}%>`--kUk@a@~o z&!2E1QviF&l@Zn*TH#VN_pDuxgTs@%g0Uw>cvrBRZP}T9-@!)_Jsl7ZiLD;T8RdFS?jPq+o^RmrGb7jbaP_^+9w>Jn5d|;bQ9^9bHV~1&-Jxr zmd9A9fP)G$C*;!bczo$!r&op2$JW9kNj@{5Sy0VkVPUxtVg(TjvO;9-9)j4aSv>(J z`Wj{F67G>9afpW}<%lWLwAnWy6L($jfSs;574#1=vr5Ow#?UA>Q3%Ko4!o^yMrA*P zs@~|$j||JonkIAU_;^Xz@j9RsG1DA<7@B@AfbHZT6%_>u1N4RyYuP97W<8>Gl0b&7 z0C#{#75d2pLl8{Ve4y-puKQZ;d~SMuxj_2C5fc?p!z})>C;Cg3KSTTm*vVoLI7*4VMLig^Rj5x}s z1)SgH+4$^(Du(Fms(L$Hq@-DKi>SJ2d~0JmP-$ZYo3whbkOENCj#D zjMg#rr}S&n{IltErb+)my)!O0S^dQ63dsaYsSN7F+fA?O&vu%yQ->VM5h#Q+4W&^- zSC<^uFfJlk1}RKI0fW~|PD%p5WprYKXIt2^_o8y~eds8UNZ<2xd90j~VQx@$0E4@_ zx`NpzuZ6xJ5)!h#y$z>lczBpdk`CJ6)_#7TpsM<*wRLZMI{=UlAPO1yjS^$IZOw@JVAtI2^}r6y&PA2gvwX`=hrkB7nk<+x;8r-(2!L4N)($OZ!ZXJTfi>%8gG!02{EiY0`7 z78*`dQxlwF+GOeu-z!lA`BMJ1SX@Gz01+q(gh{{#`uz3lc#W5fsw(YT_9M43ak`-+ zha9}pfk&`Q@2EToidJ=Tx zKi!rK!e+9vexM71qsBs5wePy;m|B@%L^H$);6I98{5{YY1B3XXZ-J``QM$BKkY0g{ zV{0yjJj?f3Y;WoI&Q5`$P@2xe>1xZ83CNy7Iz3l67MwX17o7)Ot{z3Q$*y}mK z{w8HpjiJnbA!KMo}7IRpBXgc68X88V5{0^INb| zLciZ#D1t3yWN5g*Y4}q{Lp7@mc1zWuB_lJluCA_w=^G81F`Ot^IwnR&$9Q-SVWR~D zVSy#F9?OLUIa~sS%U;0{gU7#JuX@Xp!9^N!UMc$c0vL$!THv-r((W@n2CGcMEs2Av z;Ybp)1__x{uxch?XMuTX_KNM+>cQV9jB=h+6FbKnTltX6km*uUQ2|f~*}fkzAF&o~ zx!a;xj6(l~J}nIz2~fx!JpqpMX^r4XB>ttqGQYO8JmAxai$}TQ)SIdPUeDwOQMABaysE|I#M-OURu?B`V)(?-2JSPcwC_PM^xD-cA zH)=NdN77%1^Y3};3#BT&t6N*k0J33I16%Fm8`72}eSrI%q?4UK4ZcXeHc7R-P8^f3&k4koUEe36H-THTpa zc0ZN>hCB{{7cz*4r0}X7bHb`iA5|cxit-Mkbh@If3~=@ixFBaGB|%;{O*+RsRvox# zyxY710=#<8(G}Sw+fLt)@V9`89ewoC{3zAd)i}2BA*QftA4Nq)keWd`KG`&9Gvni~aeH-vl0Ub^6tj{r@kTra%M=^+aT%F={bZ1P(r6*Na`z(Ab0H+tW7i2pqw}hoR z4L`;uh3@E_7iR^(mx~Mb_yyR{BX3=U!Agem&VByYcStTPsyx9Vlk68wpPZC;dH~@r z1z2CmB|zTu0Fv1cpVTzuJQ!)YiAS9!JF~vNz7UrYla;L@k$C0gxc29}=(e;_>zZBZ zk`K6A%0}x(Wjua<9~n7w`ZQo$TP$q{rO%e4+4)BA*7Z8&mu?;&oDf;g$bdRK0#?4j z6Lm-nJvsBTVfTeL*(Z~Zxd@jD3=Qhz4iuK~+owm(501I?w8(W`#nAjUh5LihkIdbf zNOHd38k`Z0+6JxqdrPCP4H~n(9BFsb&aIT;}WF5cT*JOh4`e&q*C z)=kP|uZo{g{i;#!BZrA#0t*y1BV+xTFQ>WM=}C%{_e)}RW4TKLq+MdtUWtBIi(qz( z?B^x&=2Hp^36YT};NjyD^MfT5phu03j)nw=PfM%66%Y~GpH03YCnpDC4Enm`P~>j} z|MN05H1zS2cC@vdXLPPH8B;q&}NfvRA*Zo zJpqkgcu<42sYdiEcin|3;V?LQSxEDLN&z)roLJhM4JGt!GEMxq~()FDP&y+`AH>+%(N=AeJaJ zo3BMAhUH(Fl5=rzjkQi`T)qE75&bcB&w7AvaqOJ5j7$}TG+|)sdzlsYJsk4S?O}C+ zFTGUCIBg7CWp!mGMaKJ%=Wjp2fs1IKoZ-YRhlWf|N-N?m9n+rA|DZn?uJ6@4H zKqT2O-MW2Qxh9T02YX17uXzkX*@}mmI2c?=y-Bth(qU$1-Eh)Z3F8x!pxB`D4+al! zIXJw9D2{`}9ON}pb0H=yF3#>7wAz~k8Lr06=UA$pix9fv$Crj_P+b!;5+DvZR)P7& z2VCNK>P-{l90OR{gdRtyCoqRq8>py{>5$dZ)U5HF=FrgRh+g{cZtLGLz?sx`8MjGE z&@V86luCEsT$kO?*)^`berJNpN4FP^arDz?zB@~~o$F_H>Byp>SO&3Mq}_Pli>tNZ zsSsw*^?X@ad?N}5LT_aHQWCI92X~j#b>+wO4b6DbSn(B1SpB(xnKeSxrP1L`WLR^) z#U;48eFgRy5=nrB{7?!GK0+y5A>h~IBICs(Wt`W^NFO;Dx@1IiaJb!;YkP|;Ln~-$ejm&nJl0Pj@l`~Oc}=ms1!Bd z!c>(ps1OClfkp9y>$FT9aO`WrpCgiH?#hsrLL`+FZHUszs_RFag=!sWf-DciqoNqG zAHIXv-OWiOD}amJZFJ|tCO5mAYil#%sUI)1%I_f|mTZ(f6U#1B$Gzsrew$g;u{rscr9@Uh?|&!NJ}# z9MA)Z6vL!PLK}iz|5DjPEPZy>yk`y6>KibX3WrBZ8-}1N;NUt}adTPF(<3s%Ek53M@R@{Pah$ZxKf6$c}zqA280u zz50*XNuE3jT;V0iGLU2fCJmg=*&4P3WxoMLZ?3-)fv_1l3)0ktd;Y-+4+C?M&`UXY zUAOq!bc$B)$B!Q&N(c#zk>+M<02GG9?>y$9uiUtC16v-hcyMfzQ691};Fp>vE%oIw z>wP?gRDU@9K{g+@SyAP!St`03LpP)U#J{C=fioEIg5Vg;e} zK14`Q!wjpWWIW6R9F-6jE-Ec`>&{ei+oeDl@F>2sxN}FWYaOg)h%1r=fX1NjP?}+B z8y6q-L+~uZxMXmm*1KzbTpo`{fApmfllEG83b9ZS13cNtN3U|9_S^}G5W!>BvW2<5 zeZYVzYWljxVtGt_8S8R4^zGlCQ&6lOcg9x0}}<4H;ER8BQ8 z>Hb9hspe_zzMp?s8^vM3{k0XZt`Y?W<4yAC0$9|7u-=S+Z2#bvm`R!#ZICto4WuRL zF~~%jc1wxEU}BPl zxl-5ta|V}~w2CgrQ}hI$``0d~+@;h7*mm5MOlODIj=KWiOb zgDsdnM|2&?$(lO1JtT2>ZU`?n2WYY}Fff_oyre^rlC-AdC*no-i{@{bgwU+`6=evrT2W;4(ew*zu9hbBN2aq-# z2GwYl&@fR>oRau~{1?AzhiMAGtv^gL z5+fhTpU4x9MzTt+Z3`Gb*DK=ZIDprTiEwS4!tB}Sc< zaJna-sLTErw=gv~=K|}(prBE5$E80k@tZ^)a)1;i69e(6>FR|A@Mf<$K<=5JA9{%q z`aUp-vnW6hx7(BF$W!`2(*2?6fEIfbn|o*dI8_-plom#!b;^ei%3(OiRQY?qQ=+4p zO!#jug9}X(fWd*sj~`FK>@zST;N-@V_yL;eid-;6 zZs4zjOAB^+|Gnc;B=RQ#aBv7Ew24{PNxP2AK~PlN7C;wTZ}c(lvune@dr&PPf-E1f zjlX!&AF>xespMuJi9*V!0rDYGej#E3PypmY^{gIgS=kT$8yGmBr;xnFDIh?Q&tMlZ znOs;9B2JM{l&$SmBO|Y=kB{=Wzrnz77;lb&1{x8Gysmi{nLSUTWf6u0?;|xX4iDKQ zI5wbJgB)jB?e_Aoq>{cN`hIb7G4yO-IBqZ;M6k1)0d0hpl@&5*G~zFv$b-k^DIdT} zSv@`gbijEQF)hyqOn^) zQX9ze$Oly0wZ+4H42nbQGeia8-K4Z(Zq%S;kh1?9mA?*zHe9R^WHg+sc44yvN1Bs9vd!a@o+t2S zaPS(Y1xQ}^E2ey_dQ07SyQK%TPCr)j;iV_4-Lr~|e}jtv)|4$a_udCv4UIN%8{t!4 zfJwn;o4`1ZOG!N&78^-&T;dLa1h@t2k~tdW6Kxp3gu@R}pIA9}hNAuj7#RqFGy&u| zmU?rdlwVTF+(tE%)ets0)hV?<$cSe8Jx z5oQv2c|Y{@xQ|x5XX+%vXE5-&a|HtjHA(shgcve^9rE@>61Zu}$?VcUfj@$|K_0gC z@Sx^DB0?+C_hD&@JnIHhQ|5D_$o1>JrVro?FsA5b(v zuY`u_C!xfjKYxWFg6i4D&rp1JQkw zfKcKW=mQ{k!@v~;oQ`D&-E?q(aEnLpzelWRf?%a!WD5QgU?*LLf1cnoh0`)Ar;Aj= z)j`w_KILE>RN4o`ZC9rs1!g~s&K~NGu$%AUDYk|4Cp%!m0K`zRA%dV%!il1#rTx1& z*flUPFzUoj<+K{&L%-JWz{4twz79Qk0cYu8sU)RMod?l)K)#uoQ8$V*$PBg8XA_daM!jE&oy=>YP!Ofvc9QtN`WAcn#g(t=Cr