From a0854b838ab8201b4c6a0ce9cc76d4c3b3dc3053 Mon Sep 17 00:00:00 2001 From: bravecobra <391353+bravecobra@users.noreply.github.com> Date: Sun, 13 Nov 2022 08:00:33 +0100 Subject: [PATCH] Feature/update docs (#116) * updated readme * Updated docs --- README.md | 71 +++++- .../docker-desktop-kubernetes-settings.png | Bin 27573 -> 27798 bytes docs/images/docker-desktop-settings.png | Bin 42718 -> 47919 bytes docs/images/rancher-desktop-settings.png | Bin 0 -> 16029 bytes docs/index.md | 50 ++-- docs/installation-terraform.md | 44 +++- docs/introduction.md | 20 -- docs/preparation.md | 226 ++++++++++++++++++ docs/preparation/cli.md | 58 ----- docs/preparation/docker-desktop.md | 13 - docs/preparation/k3d.md | 53 ---- docs/preparation/kind.md | 68 ------ docs/preparation/minikube.md | 28 --- docs/preparation/test-ingress-controller.md | 25 -- docs/release-notes.md | 0 mkdocs.yml | 15 +- requirements.txt | 9 + .../test-traefik-ingress/001-rbac.yaml | 132 ---------- .../test-traefik-ingress/002-deployment.yaml | 86 ------- .../003-ingressroute.yaml | 45 ---- .../test-traefik-ingress/004-test-deploy.yaml | 64 ----- .../005-testdeploy-route.yaml | 33 --- 22 files changed, 367 insertions(+), 673 deletions(-) create mode 100644 docs/images/rancher-desktop-settings.png delete mode 100644 docs/introduction.md create mode 100644 docs/preparation.md delete mode 100644 docs/preparation/cli.md delete mode 100644 docs/preparation/docker-desktop.md delete mode 100644 docs/preparation/k3d.md delete mode 100644 docs/preparation/kind.md delete mode 100644 docs/preparation/minikube.md delete mode 100644 docs/preparation/test-ingress-controller.md delete mode 100644 docs/release-notes.md create mode 100644 requirements.txt delete mode 100644 src/clusters/test-traefik-ingress/001-rbac.yaml delete mode 100644 src/clusters/test-traefik-ingress/002-deployment.yaml delete mode 100644 src/clusters/test-traefik-ingress/003-ingressroute.yaml delete mode 100644 src/clusters/test-traefik-ingress/004-test-deploy.yaml delete mode 100644 src/clusters/test-traefik-ingress/005-testdeploy-route.yaml diff --git a/README.md b/README.md index 88b8e215..a4c85fd2 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,66 @@ ## Description -This repository contains a kubernetes dev infrastructure, providing: - -- Logging -- Metrics -- Tracing -- Service discovery -- Elastic stack -- Secret management +This repository contains a `kubernetes` dev infrastructure, providing both crosscutting concerns as well as Saas infrastructure. All this is provided through `terraform` deploying `helm` charts and custom configuration. + +| Category | Service | Description | +| :-------------- | ----------------------- | ------------------------ | +| Networking | traefik | Reverse Proxy | +| Networking | linkerd | Service Mesh | +| Networking | cert-manager | Certificates | +| Monitoring | seq | Logging | +| Monitoring | loki | Logging | +| Monitoring | jaeger | Tracing | +| Monitoring | tempo | Tracing | +| Monitoring | prometheus | Metrics | +| Monitoring | metrics-server | Metrics | +| Monitoring | opentelemetry-collector | Ingestion | +| Saas Cloud | localstack | AWS emulator | +| Saas Config | etcd | Key-Value service | +| Saas Config | vault | Secrets management | +| Saas Database | mongodb | Document database | +| Saas Database | mariadb | Relational database | +| Saas Database | mysql | Relational database | +| Saas Database | oracle | Relational database | +| Saas Database | postgres | Relational database | +| Saas Database | sqlserver | Relational database | +| Saas Deployment | fluxcd | GitOps | +| Saas Deployment | argocd | GitOps | +| Saas Messaging | rabbitmq | Message Broker | +| Saas Search | elasticsearch | Search Engine | +| Saas Auth | identityserver | IDP | +| Saas Auth | keycloak | IDP | +| Saas Storage | minio | S3 compatible storage | +| Saas Storage | azurite | Azure compatible storage | + +## Deploy + +### Quick Start + +- Install Tooling + - Install Docker: [Docker desktop](https://www.docker.com/products/docker-desktop/) or [Rancher desktop](https://rancherdesktop.io/) + - Install [Lens](https://k8slens.dev/) (K8S GUI) + - Install tooling [prerequisites](./docs/preparation.md) +- Create a local `k8s` cluster + - Edit your `hosts`: add domain names + - Check the docker network subnet range (adjust in main.tf -> variable) so there is no overlap with an existing one. + - Generate mkcert as admin + - Run generate certificates.ps1 + - Creation local cluster + - cluster k3d: terraform init + apply + - cluster kind: terraform init + apply +- Deploy + - edit `terraform.tfvars` + - deploy services: terraform init + apply + +### Documentation + +The docs are available at [Github Pages](https://bravecobra.github.io/k8s-dev-infrastructure/) + +#### Build the docs locally + +```shell +pip install --user -f requirements.txt +mkdocs build +mkdocs serve +``` diff --git a/docs/images/docker-desktop-kubernetes-settings.png b/docs/images/docker-desktop-kubernetes-settings.png index b74ed67f164c9102bf4395dc12e8c0dafc2f90b9..79c56d8fb6f5bf79ca4a223e5bb54db1822d5b39 100644 GIT binary patch literal 27798 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 LJy$GwW)}Qk>9Qw1 literal 27573 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%0D{4 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 a^8Kj$2%DrRd)!f5chrv9WPI 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⪚Ex%0htBr4P zo&rh7GTOSeje2TaQ6TaO*K?_noQn5b^%t7B0K@;xZ5fx?8_nn&7|5L&bT}Ifzp|Vs z>oX?p;`H%Y^cs-g@%4>!^s}1r4^fcmC7M=fWgOJ8iA>US3-^A)>eneU3zM690@Vwy zc{;)x#Zr)My@%d!f=3zpAvM75ue@D%_-`9Z5JLbVdAZ&mlC$F!+4w^%I5{&*w$GAv zh?BZZ%9-MF1cTivJAa-Hc>mpK4n(^{Z?N$+3^KrQ1JItioI<~Ed3qt7{^B`g(@hrN z%PP@x+2oz<8QF)rR`mi1O6_1af!Zs6vAeI`A|S;Uf=@j*!C_r$WqfLif{OHA+O8|K zPqRC=-+>-I(E~L=$DkjN>A5EwYg5CyLE{;aD5GcV&l`{(g;(!+qvV$wAud3NLTU@N z9fc6<<=D(H9xscB=w#8%g`qyEpa@m^g12GZWZ;6wdUM$~jGP^+L)kL~@cdHioGDSP z?S9O2x$YfU{P}8`nAjo==uM(&_WL_Zi{ZF}vm_Gt@6dX}^*o_>5D((l&sYY+sLsU3 zn4h-2>x|CHcI2U5yJlGddu0=vp->CKh8tRE_f90ehjyb6oPNngAN0bi7>bSjC*K( z{xf#4%jN%Uumebz0{-&<)qKc*dFs}|$41tRRpWppZiIk57*Cl`6>7tfwB4_M50ZR+eEvLmjPTTPMoz=LiIkkitXJgyc)P;B0CJ*?SYkjP zB3$Y^?b*)k{X_lL4mJfBSEk}@pj%5-vl;G#JlB2U5vV1Gry;+%Zfxaqobbu4tOb5M zIzcuK{o*1I7j8_wR%P=|@(@Dp*P%w9p>MIWg>(+kuY)oT>KB>c1xGOn^hK{hNBV?@ zl1GvDgQ^6;{J-Z}LAfa>qt|3h@!KCTog*OU>YH()x%78@_+7^}fqqpDNw1sHnqK=& z)0H+?9cjj{S6UVfEid_^k3XD)1h^tbNq)1he)L*B9>m6!dn= z**{3Dhgo7Cr4`kdb@)qUi6F`OD1hcN>scSbC9E^Jm>P_=kfw87xxwtNkwz(t_HgYRvSe<*Q8!?kLdXmL&$)N zy7r&+&I7M!PN-ehOl)1bYbKr<4&A>UMu@!WMN2_M38JO3}sX{JdyQ`A6Dvs>gK@UW|S*rk_?X-K{=43LNfpy!-N@&1hMINwFytAR$% z&FH$gM_u#xVE(3Wf68YG9U2sP>KS~a&F&W1dF|@byjw7Gne(PqnzsI_wgQ7DJ1ZQ^ zN*yw+(tTs#Bk6a4Bi^BFOV&G*)nmG5EZVhUgg%5&PD9qao)~rFWj8=0XyMu#kwSQy z2PF)zq25BfC#*h~U&t_(4DnMXAXGeUWz*`@UKZ91*H;ayF~vDR zV1th!XIa%WrU{EVHkQ`ANxL)j{_~MT%F18#*NS6m+gq|d`sR8g;#q5Z!EIl9PCc*^ zs)-z3Ib%uTRc&5ex9-lFPJVhqfR9@45Ay7XVwC{$y7R4)-g4EWUMMMdbxZ#v*g0C) zhfduZX^XUKk63V(ODa3F@yl>w)B_cyLmDc?4s$Ynbm8j%BpDE_3uUb^_Nj=O*~HHx zl&yZcNfE2`Q0KPlM~@)z*ZkUc0Y^q{s(Mws=YWK?W~ zfdn-Dy3EgC=b|Y0mfT1Z<=-?|yqhYw{@?Hq^fSor194Ro+JGhZ2<-OG(t6&!xb$Vy z`aO4bYrGZJgkT}vBv5*w4F5D2p}b+tE({SgieDI7nf@l}=$+N?qc@q+`=c+|95mQG zWQQ&rp9wrVQ8G@db;&ac`I=(J91a+Hxd}uUN~B2xY2V;bs(l37CFq~glHi`wkgnH< zKc687Lv;22o*v`9(0$kj+8*X2xiMC$DRC1v&?`FwJG6?_Cv@#+o|T`={KGS@IM=w8 z`pkA%ORtjrvagv=aW4Eu<9B3k#QX%+HmQQCtH+gL-GnkK;7lHYli`!rd!O(v2QN$@ zHW!1Rmp3nSi4G4hc~~k}l7k-3pJZlitqjdK?AbsIMX97Fa=iH&qd!BY+*oY2p?Wew zVk=3Ft$vg2w@UwUoi*b7Gj?$Kkdq2~3(d^R^5#Kzt_~PG?`{%dxl|^oLJ1li7s zfas@|#d=?hv{b7R7Wv$3fsiw2OK41tc>jnja>}5p-*US@msYccz^SP%70e^ceOwY zzjfBLNDLXLw%EbBwkN!VZ$0>^oST$R2*^OtT_4xnN_zS;J~dCdL>73o?+EegLjTgg3OpFC@iB=x zKe#buJ#&S|JYTN%p-&sP(C6VJd0x*SaaF?Es&({LS7QdQ)TPo{a1cPlh@bk0R@Z)r zq$p#$ZPDJR_voG+;Jtb_@=Un@hvTx+UtG_(o&r?3jwFWb&7H=G!CaxjgXM3;7}Wx9 zqmA2RtzKR0$CP!ea}tGEo2rVXa*fs(yKT)5?gsz2s^mt;>DUfYhh<8h)#PvYX5`H> zU~+)1x2UY#jiHBf^zCT|C~{pfyw19~P4!{mltYT71!RPcGdm3M(?#lR4==vO>OLsz z%sA6F#}F_`#!4!4Ui>6#$bEETDKD;6P)0iD#`xqMe-Vi@!};LZmPY0)YE?{py$#Qu zEwp5nm1ANSEVLH_XxmoLL?7qcHpYZxP55|ZB4J)-1x$L?L%-B>;?`;TmVI!ikv~PB zbjBYKEyblSCY*(MKw9yh8*0q#_2Amo5-{=QZVBBl-GD08ArYzBK6vzq&kmM$WkqXo zx_p5RczBdF^;v~!IY#r%V9Cq2hLTgdWF#S1-Bu0hw<_`nrlZ^I4^pbx(421+lZ^pT zld9P*F15I6Tf_QU9W^Zdrj}D8(}Kt}v{ut@kOXm^SR$v^5JNRVsSnIi85%kZV&zAX-yJ zy%4;#IF>4T=MkzA3yF{UK%c#lxie<*&l#h|<{)%UZFfhV{p7I~)J*r6K9v$T zN>>F@Wj2vO4{9WM7Z}aFg>J`X7C`M{J~-L+CEjv!(nt3J7d;{YNOXJtx^R4VQ`KHP z)VqTp9XX0CQvyNwP$<3Ag`*f+GT6!UDD|M|4^;H~i1bJ*wOWlRHP zGCMB>V7(`yg+FkCqLDq!12#IXo>_~hoCTYGS3Z)D)50ewSP9mlSOJ`<+gj%7yAvRp z3qI6fZrvof*nceFWhn_s)|{7DNsA4pH4Fxk~*Ah*Uol{EL;m>FE z;-YB8MTRDnd@#ME3tOz4@EjZChnna1z_ThTiC!~piu?@NFPVog%C2pUOU`uK*Hi8Y zXDxr2S|QPdy=H1dL|-zquU^_-S`; z_X(2W7QU^uZPgz)ydLErC8?-)d%S z@gG?e4~A#)h)i!~7)j!AX7)4CZ!lL&OJe)B?>IoP+5eYDb0q!CR6$+b+yfLsNUs)^ zQ{=8$M5uW6T*4Wq2ngq|w6}uoo3(!J70xJF9ky}X7X<{oo?SWVUS;mLpp2WXM==AO z{u+EpP0%V^eqZo<<#TI9hN2U=Y-O(K$w_8)($HXj={Icss{}MlY>3vG-x@pak|~kA z@8!eVo7PH6&g=+3#f`hqGO}KEC_N;dORTgr2vM|h9FwUD-!M;6K=c_X2s!PX(mKSG z>eV;>&ShZ2?W8sxSnZ>nZ1-5DivMb(+`Rq zO2a9Mrk<73q2N@(>tXwl=9zAFiuY6Um@^KvYQl&Ug^!?ME-m$JET0Pcc3J6us@H&U zN|kR+Mv^uaf5D_#LI(&#P24}WeVBPP4}#d)@XGJ8LR`I=ppKpyW`vcGrHEEu&;1+F z0N?06i;(+xAl#-p;bJPbs$B?v_`AXF!-`S^R@zPzm)bW6OBj{34R2p_VaP`&j_H-_ z)^XkXvIapM2+zC|&^bOSBtN3s2qY(UU3<$i@*lA9^>Z_jYu)4+-HFpWk8*qh-5M&9 zmF45oQG3rm_%chec~@ij<7q}706S{^v@+Wh-M*HZ)#5@Hq+bjdL?m6%Gd+=T`md?o(r@*r~L5jHzE0) zThs*o13n@`A)cAZ_1#07xKYRASG63w;0#Tw&<5QUBMiy+-PU}mw2o^xN|qg(XCqRE zQai`XGHJeCFy1NX#WLr+a3(2zT>t07GsLnVegza{KeQ$5blbSHjy`S|J^k|C0A_V8 zr7Y{a!S|O8bdqYT@AcCC3oGgAeMh>}RWrJsCoiE*mL`p^Ie(bRrQFosg3m-VhDXyK zCBeT}BXZ`z<$_L!1J9kyFtTH73T2nt6YlHT?|bQI%yI@QQtkSoV~v=(8P4t$g+bm; zx(|6P0U1RQl6*G`hvx!bk`t2fK3?}w;dn_s4+*s~p%lv;x+~d`l*RJ()M-wPq<bU7Rk^vn(ehDV093BxSe;YCTzBa1*mr@mHMq(}su}xPPg@o5{CI0qWHY)WaY9q? zrFU@OMYgmB6S&lamazx=>2uNNOJ3j|)DDv$DEyRv2z|96qAKprYcAE2{7pnmh~T?X z?94d^hww2&Lo>|~_&c(Oj|C|8e96_&rE^8ZqIxmbwO{J^3`XBY?vtIamXpUq5w_^L zoqv1ple-J0gsho0bBjRV%X7B(*jbb@5aqJDZ~REQucZPJ`EuDkRHQo{^?BvqOk(Jhf`nv-T_sNMjv1t1 z(*pWSA?8j;SIk@yglOCPw80j>fv!)J92NPdC@5}b`s}P}DQv)b#8=e9w%xMhDnIw| zFXvgti~`5mv4q%?zq~o2#;|-IH|FCtRezAN9Mj$jc}4lR#&>o1cw=LAXvcki@b#LO zn-}d(v!5Ec0CA+({0_?zH5qp(UcuczFdFNd?{C#6J?NX1O3RcRQPMk_^wybD!m;lc&wjPH4(rQ^^2oL|o{{nYloZUAwOyBegWeBUNtVEAby1E=dx`}>Vw@6uV@ z?|L+xyk_3dJa0)!BLn|tY|k|kURkUAR?an)DM;*!XUZ|1BmiY$-|oQoM?V!vTsxdS zK(I_lMsc`6kY?2ipT)ES8u969ZbqRqanc4z9KSesmB+aP=Ach3+~kd01E={D|E-Yy z!N>3V|6m9D|Anml-=5g$N<=4*;_#P=mR)Z50sL?B!>+J!Km!&@C+p@nEbOSXr5;Bg zzdhSUvlTd+`}?!t5jk0xDU_O=6r{Cra1Awu zGK%@gQt@+`LWq)x;z`UQFL1>7WQ5OgA25md?1S}w-(Z!oKH1y}60`?Bi6a87qftLl`H@20PvGHM5 ztnTr{8qvIO{2mo5!X9pAmxnyg0)VS2FnQ9Tq>wJKXk&S&j9|?hgI;Tb-BZPI1nWzh^^Jzo?f;5m=;uarD3AzZT{rmKVq+k_OAZa z6$m~iQSG+wvu6wnMEWks=-}I}g}%En_JAZ8*)mF_dBxVz5LbWSk5olqv6pXhr%A*7 zEqUh1V7zd;++h*Om*ql}nET#Mz&PeCucM>7@Z;kD=+pnYc;UZ7UyRMPmj5aDsEuc; zP5)lJv$rvQ_Vbq2%xpC{_|<#UFBfa`-4aUUWEzQT-SbjBY0}TC7|X7kUl6660M}W0F+U9#+yl1I0ism(R&B@m>*LWS_~4#l{V#tSo*xRAi~EbUIfC zq)~4>7!vxx+m(Ob4+kyfl4|B+9^qWP3*E02`0*w27CeLgPOf&VE^#-uz1W=EZ=O8b z$QI~VT2#Mw(XZGsx1;>PCU1x}-#jf^sRGCvm#z`?M_R@a4Ih&0E!7OSbv_2WE$Y<~ zU0Qv8ow+k+mfPH0_9$bXUTdrrWPjyuO#R)4dUlID$c{Y%c?T2YMjN-*{Wb`wXJ<`g zm3l8o92$f${LY+jZHyN#3`?~mF685|t>wbLk1NwE)4=^04U&pF*)%I)v*nRiEj7Tt zxC%m`sT92Q(QZRbc#b`fippQXM*nPz+{PvviJw|`bLjQ0PAlna@Jgbz-qLV;VwXp% zS3bibO!zrzTa2WNX5Cm%erMwLTYdlApnI>6BR|#D@IwM0bJKJV!;h+6<&OHIikG=(xO0=T(5O23|;bRmMz2LH7+U(!0@5~ zU*ln=W@BlRUzW#hm*onwWe6}b320P2=^ofStkF^VD7HgQ#y6}hlRBKu7)mF8jWQBE zMxI9UecTPZquIEe$vzTk_T0n1Xh76zt3k;k ze)HY0DjRcKvyojY@QM*hTXL8a|Fc8rxf#tq8B>2iQSXBHryR|Ok;w7P0><~45}mFu z2mJXbWHLQt#MEbk8j16l>_QAnwmbi>8u+3^xCV`6jg4YDV^A?V&$(&55?3^xgQhHU zyOil?xwDCWPJy$zZ4<|;fX-mMcF-=*8*PSzN(C_kuWbr!wHSLW)#q<{+wX2-JT8}X zOsIyirJMACWJMw7CRq{qwRVY#DDT;AH%Qza(s-Xb$izzMJB&qt$%iP1u2vTjURnLnHQ7iIff8dlEDeP`X5 zo_nlS^Y?#H_3&Y6S>4vTmF4=B6=D|twT75~!s*sVKk2YLJyt%HX7W%u{Q6uJ^^9Z5 zZ-4RYXPN)qFLcZP{jPRr@Bh)8IB>itqvsT;V_ejPClIr$>PSr%vsAY4zi(Ng-Y3F; zM1a>bxJ&aYt^Dv`J@dn%KcJ#~1dW}3uW1|zKk9FCl?P!DkCHe|NA~GZ{^qpw@_5fN z_fc5;2d7>1e_Zw&tQuRLyLM-C4Ez^``|8E(=I0!Mg)jMz|}Tzj@RF zNM0eLmw!+kvVQ-gva)OQVzN^0_<7{umBNdFhIc7Lt7cej>H~KQ0Af&eH8wu^&o)%@ z*vq$2JR$I7l3@!q>ekK?bY*UxwqPgbBM%x~O65<>r;+dK*88Rz*Qq62lJ{y1P=KD zc;#qU3y{La-7RczLfyl=H;dn!xT%YO_s_b(3u}A`S24Gk-gOkstK@`jP3tgacP_92 z8Vl-LG~ST6;kZ#!dznXOLfBnil?W z=(y?LW{7@&h1`hj0lcmcYx{08SO1f;XP>R8Q}5gC*aq4RQLt{qtihF0V>GHqayj-{ zkA`h(=2k`zyLD^tGsd*V?G#y%WUL0p!uC(b{Sup=`nh%O3V1JstmMB|EE6F%Tf#vs z4KW?BO$_(d55j?2M#nqoQ!63S2n}W-QRF|;XoEOBi!?2iU9KLPWX}lrYHIj2HJgEf zmoOAq;WP~*XV4p190)DdZtjx-8ErcD!?#RwmHjeVmEB)qcCfw-OlnDd&b+_@VpzT- zK#P*%Hi0QHL5A;~t&vMGKdbnHng7j_$>e1)Z!z@D!X4rWwW%!mjydk!Y>LcN%cVvWZ)i_oJxUUoBx5DBJXD z*tbp8+2Q$BGPM&gy1!4G5bh_cB%%S2K zn#56k`z=B?v&C;PXqff>q1gyzW&Y&K_}7AOb)r=sATEdKqtkDR7!er%N#Iq^&fQ(mQN1-{Bq$rtqLWtfxEn*5mO<;LUz) zsHP_7!3Y2YzSW(@+#CqvaCP4KjQu<2ViucxnBwoIH{h47J<-M33yxqXMUmJ1z{Dpj zWLaX=Y(mnH+Q#X&?tZwP1`K1IjMntD;V#AxVEGx9F}@{qcx-Zz7?K=*PFxD@RU6Z& zf}Hca*d9b0VF^(h`FB0X?LrnFg0yVKv_Q4SVhQY_H?1zbk^lqf1#qHiD_F-6yH$P9 zt>h@l*|i{NFOoDgGn!1EjBTN&g$O8m2sCA=Cpm;g?Ia;J7%4~mo7O$tDTagT;EN)H=HrnNM1pR$mw zJrpf0V!nZSnmVBqwzYj^jzTI4^@fn97w;uAtFbC8PIM`=?S)oL>E%dbDC;9)c_ri( zEW)XO4e2s)b`a(+fUO$nBhh-1K<4_)=1~~TBQS&7e|8JuxdX1+QTyJVye<&WPyvik`n%wsnGvA_lK66oA^rmk=9Y{Y-OHRpfxXPbRm zEpKi6Y=#SF#wqG#qXmoDACv1JN>s0q^Ejf)5Iui7+4AB?l_Zm8gnZ!4BzNx&2C!Do0=9GXpau)xgKQs&Cgv*6 zwDLWB1b*b#W!L`P2Gvt3`JkW6!)H=9a++Q2b7?(tlrXne=9N?nj<<3jd6>1w8qg@c zgK3qU-UAn>ElO?cj1}F7tmfUU+|$+d=sj`9fDT$GNzXhcP?`e!sh^YSeQ=MpY12+^ z8=O)cuNY+N3?K4(=`HtP199#nW#?I@BJdTFsj>Vq3~qkUEk-nX%;t3 zobiJV%Zvkv!(E*hWX8h|`THu*5K3y#tj4^oZaXiYt$IN2(CGK>l+17QH66isvcY4k zF@T2Ozm-H#0+$jQs-!SqzDO2p{&`G!Gxt^V2^MmUWc^UcTd#Si9 zbb9|qi_Gwa;wROdD96m==I&09FIsPLPs3suuBYzd3gI+s?}uj%o*qe6bUFkZ9fgEY zJ-xK+lYpaDM`C-jl)^#opvelV?0I@YEUSR=kZiwipsDwE($6D)GbhN%Gl6zbGRPvi z8OilFW^~K*m^yr-RUSqZLPA;9haF4iu6No@Z@Gi zPaOfHYNemyr2174+oEt4$LnW?m-wz$=1!AK1E_5s0JHC4KD-m0SgOf?Te|}cIt*=o zp8lNNKM82t_+q~0aMq}z^TKBJXaL3urlHgqX6aT;J-aMME{r&r{;1l7?`nH)+NQO2^eoF|%~vi!I_vb2arM=T zd+^H_5msUXt|m9caMlV>ZU9muZ88jpzJC+~Xv+>Us#boe4sr6uiMzy|s1jw7Z$h_x zdve%&9<67BBF(&Ke=8iV8nQL#vB~i@iaG3^lxF{dIvth^L%1Nfz?ur$%(>RcWl=rv zZ0O3&kltz4j7j-OxzOa~!X}Nqd&+Re03#7PI)zV_j7tyZ+ zf+5Bksv(?T6udt#vms+hsUVTbmT!6#%cdpPUg_HzJq@Z;zj{Xxv_KbYA20q&SKxrQ z-a>T?W4rEZ!p9E03TWB;(-XDTQmpQ0H&*&2Cs_alKx{M?YB%I4<$9H z!pM%-39=-C_|Aw&Ma=r3>^4Wii!@n*j*@d5dj^gCWYAro^>&RGzHXD$T>l}56a{GD9^2c&XEaCn(oW-Wer_P2wEGi;QQ zWhK|0apbrcP5zM+gROyaP%f!nJRzL(#oLOD1#A3ZG*zuudL>4BGMI0yd*Bi!3+61Q z6;>AMMVRvQ-Q^u<3%cxgP|=?}?nsXh0F1knp|Nw%UoNl=Uwa% zr9(wbSFoJ(qf3tiBbd=QKKS9vDKHrN1tBq}(>W5kOp_dQec6(_tIQuNyF$zzYt-eI z>x|3wiTjDR8V>Jr^PVq0j2^H)%xftV8jfalYC_w1OlqzD02l#tDK#1bp(Kzc}`N) zE*1AFy{45PsecUHdm*U_a$qxzE(9t&;}sN3^%?5M#bK$9J#;Fvhb7ZjGZX2!16t~Q2!eN?!KA)b;O=r1z_ZIj&@3JxO0r4 zFA(=s?%hx#Xmkj_1M92^QpQK2p}2{F;GXJMg~77}$jE`NT_O!9A&+PaI(-PUbUKBW zgtGR!IoDL^mM;bE7ud)SZQi`~Oh{QN`001Gcv&@W3DJKn-@Jqz$38TDI6U%hM=Pa^ zmSUzDRRj<;t0GoZo*br3x>0Q9$Ud&W(tHd2I|m{a2WX}nSzB8R65V)(^_ce$6=Rlu zBa(Z1R=C#{c;x2?*<-Ts0DG3y#u9jXxlIWaVJI;}JaPO;aYRA4V%z42Rjn@AL0 z54+jh*02l{n~KY@JTC~R+<_<4sAvJ{gWq`9Ds1C-+sA;jEbCmuX#?bS;dZ;A1 zuX&!>7LV(j)b=Eo(P*ir6L6mDL7d zXBySa5GBXRxtjJ5pIw-U%@}F@>+ga_^YLrktkv$V-%pc4zyAhjq<7MwM&u{%ovI%U zI0~W|Jm7%0(Go@Aw8}z~KlY7y@2v3&;ak(CLT;0AOVw!?sW3{|c{W=+mm_5DgK{EN zs4nUGVM6;HCS5dMzb7tIx~1??weYk^WN4vhVg1l~V?rHK3SPHyqV)ZLqzY4wQ_N1u zZ9d_D#f$$0FQ5Dy2l4+}`{Vyn7v&#xgxE}nZ%-zbzXvw(&1xyx9A7JE0v%u;`3Yrp z0B(V6b}dxj{vrc}*O;hJ+A%|(Q;wTArrUrdF^i_e^f_i3@PUOc@mT|ejV{;DfNrWhZ}fR9KNt3>Sbfu@8v3NGxn`)4$@@N$?qkMR zoektHKZOXAO@YK_=WZZKTISH?Pxh*727=s|0rXtA;ao9j?4I`1xt_MGk8=1nv;bc_ z2!JsI^3&s2cP&1!r=KIMn*T$WL zb9Hk>1f#>2=gX&A#2cm$RpaQhCQcjL8G&GOw#wHg zXsJ2O2KI>;PhZ`A0g(cX&+qeFSgE>}q&ms2AhoOi`tF0+ph&bY!5w;Gf8@1~d@M$C z9@Dbuh(rgU8_-(A-G%s08yh=x4xdDW70BpEPM~*Sqh33$c8i>7_~$Q{wX`*I7n|&R zT`muG_dC;A^nswM{j{)pURo|JLQcXW*EYH?YiyoUZjA@xwg2`%8%zZ;kL+dX(9f%i za;7+@lfPuzae(w9$Xz%OY*Cx?aH(#pSrk(r+BRmx=mCV96x$#$O4hyLCZ<)ccBLD! zN{$`-Nb03QJsMZ)qrcr!SsBZ9(T1k>7~#AD1@FAq@1+WqLLltE&KscP<4ZketT^@s zOPRa<_!Tn5wkk^Q#C;CM-BNNLu2hKDAM+IBb-sr5y(yrHxlXxgoI$Qb{{ardm(sR+ zEAbCKR}uF!gT`F&1HmqU(cZRYL$&VDh~{U-H7gFdieOYicz;3tn)-gycE{W9v*8EV zc_*UHve2G#4$fNO^NpcVSE5>MfBv%lwtuK>4N!_UOPyG$fRa@~JB}p^IUjRE!{CB6 zXEX;RUYlBBAtKk7+7H1;9SaJiz^=5jQi}3>j)A(m7S$-X7Qxn4&W>fPuBkm1qjb!GIgNXY>a!oIjzRea=_gq+( z|Ji-;|J4{-{0WVROc9@{axb9v-d-cb5F=B{EWksLm22vs9<}vg#T@o-mCx6YQI=e{o z!@RAk{GO#lpy-J1o`5+Fs@y=1IQcP`SLw4Kq@7VlSwTEH^VcnDVfk%`MswkVd5_P% zMX7sod(?F|gJL9dc+XqLt=38g&Hm;-+-9tVNSwcb;J#+SmV1Bu_uIhIgBY1j&0#qZ zYxgYet~>DwWF2^95lcCkglv%hLe8btN_vb^)S|b$dK#CX_fk^=Y>A$Le#|>hlAjGK%kJEy3?K1dbwa#(ESQiYc!N3O zGIbbcFC`V~)o?jL4J+$!Vt_o3gZ(IpXQ5l9_}Pdt`PG<{i!Zo&jcu7~GJ1 z5MXv^dVf*J=4oA(wkcq2cry--=JMGkRJy8b@3hM@8E@!T@}@LZ-H1!RVLgKON0~zJ z!ntO{QR)T9?(1#Xbc_$=#REh+Q}Mj@NwMt5%F@e(?pVg>uN8c0BO<6Cd2g<5b-6q} z0n0Q%B1~?-!jFR+4Y+fjM%u}5@gEae+eMAmM^@J35KkTNXorP3QuiFzPAbd&Z6{$T zkP8+jD5WldAWk_?!#fow(?sg)FXdGl_10&Q%B(nM!)11P+TGV!{CR}v-#{>^l5c)b9PvcKFY*9~9}#a)*jcCK*_EsduCob(T4}hk9wb zd4v4Xd~)N@C%}w|k8>2+Co%OQ~NI8>$xgx@Fd^)DU zI`Kh=(CO({AJq<$c{%f<1{jJP9*ut+`IiXPEU+4^X4mQ^H`p@Q6xO39%Our}hyO;JO6)~R`AVp9=_@!GQh-~Ok1*pF4Fr^`}6nAsxI@&&uRTPEV6B<6h|xv zHRbmdgnaV$TWdT(85hZM$=@k5Gy5Y4NhX*&!_%KaA)cV@Dm@3WC9Q+WOU!jLy=^(d zJnesxim!`CW&leegfWtKn6m-e7F?SfZVS!02MOFlI%nm3+f5GlG9 z7I85IfX;D7%_|5Q-Zid)C3Pqoq&cY&WkUY^oEW>Xt)BA~@8c;BOj-(MezeoY*UV%% z&H9{Hs|4QciEo)(t9uo^{c+m#^##uItID$lpN95XaZhE_E-!k<*6I8)77dKzvRb;f z>f25}7sG?KwiumWsjSOYVTWz9Is@t?`Eq`EHOZl)5z0PQy z`c`{SZMnMKXt8F9Nh+PH8iVpD7I$Bb?}3>9>i~&rwh6nk{bT?bCLG>WP#S8JGk%Fy zx~-09)(FDgJP)WX0_9dJ+Gb|{5TleDby|_HWZ8l|?H&8u+tW7wwE_9n=2Egh8M=FW zeIRyHK#=wae7rI6Xzr)(V|7mEUSj7ym2`a-EwkCrtV{ekuHAZ_CreJK0Bc%onBk}m z1bf9f`*QDCceOOrUp%H}1eSaD>${#0)6YD%)AU%|DxB76_$(g|n&|#bvd^K=@&T2j zKw0obp2rZEoavEcLaX0y#bTCzyV&bp`xz_wt~!3^sr{?o^rwIdZTkC)d~pvHgk@BV z9xWM+I>lD;0K}s<4fwIUe+#p+JfIVnw${Rdw7HCU-*YE}WZmH=nRw1%TA$1g%lm4Nh_wxH8nk{R#R9xZA#K9iONqguQK<)=M!- z7(q)EFMcsldvm7S#3!iIO~_fT9=X(s2W!f4DGjeQWq{R z6aP3g8t)$K1|B4lt1Sx>*x<=Ajx%sOXHfzJpOn*Sjy>doaF}&Sx>rT-gs$S%tpcOz z2B!~HogODM?O6KuZ`oEoF;)F$J4o8K1EryXwA6rZHOI=8PNqxjiG~Zvh%(lG5Qm`J z9|`6ELH)BXzz)sYN&$PrcPqG`99_-Pcq;t^>qgmdjvs^T17pD^Lg{EwZvdpI6nT#a0P-INBQN zIi=7t%ZXV7>QJ<9V3`$T;+7%>{nW2-QPVbh+H8d_{FStr64u}8J7LUN{i~pg&k(~e zcp3Rc62H6x)0A-(YJf5RwbVqwfZ=Re)k^62TLXf_qKBVPk23_o9z>8$vO;lUv;Mtv zuosaLfyIJ@)_B1rh|&hNtbB?0S{%7Ut%}%sBm2PGHj470$hppWU8}p=P{Iant&3X< z4l-o=FNL2otKm;&oj=k2UJt!Ux>noxS766YJs*v6xLZ@H{O#!y?lWv&Cw_B2%mN>t z1w-ZTFt0PV%s0NX|J4#xeG2)vf5qy5ocS~0@tlZ>eaFtUkm|<+Ipxe30wTH|MIZm? z|IKyn?SD89d_zM>Y_5Bx@rOWMgxI=Lgl|fJ{Qz&(h>d%(+uuE+XCeCcU-Wn&6hl`V zp8zJL;*fIKqZ+eezGHJ?>8io~7eI6>Yhw5HTzOS38Tp3FfmR?`mRE_$N}N9A^O);u zRN!HrxEJrFE6Am}|Ght?h4KEk);)gB^RD;aWwsU7k%x^cIEMXB`JVkgS1Pv**=@CR z9xj`gwAs2eYg)5@cg}lEtJwvp3@z+KtE~s%>aPo)a%mS4Qg=h(ZC7XWj-Q@}??`X5 zO}K6czX5kkD~|%!x}vB%;rUGm6Q{7-Uk6gInPg|Qh_!Du1@_mO*~r#byn?(+LF)sE z;4^A&wo=SWwT=($^79XFlah-!3%mV`(-RAVmCIA*m~Ux2_zT-Aw!qY#RLxr}m`k>u zyrGnulU*+$$x1izn<-b@C0fam7JSS39L}9L2~a=rG6xI4cuuLc>_`t?k18_R2rkLu zJxIB^F+Wt`Hd6b@am2c$oADf`KY`vY#P@l>#wWe0u=i-(t&0mkI$RI2Q@x9;w-MY? z7r;nf!qokACEKHMB&EW;Q<`biM4g{vQqIQ|tnQb+${%{*xmzOP0;G^5)a(K!HE{vo? z6OWrI_}6%Rc4VA(kUCKV0Mxr;@(Ls346^}uYDCao2OuTD&pc>h9H{JhF=_100_BAO~2%vLjObaB5S|I>`L;npY>HqNS1<6qdt8s}o{Rtz^ zskXigaJ7?MpSQ8whgpj{JPy%7rC2^lRd*$r8)MKmfuE$mv z05OmS9Ip`3sk#!(jbo5OMjOVP-<5jgOLiQk-|Z#G-kM9{KlPjFUjG2ExOutXwTm*x%Zd zAmZ1;^td3;u!$;pwV51=*x#L^|0ZaH2XL$55Y3j8R^k4q?%bnkaP;6MLzJE4a zBI2FiP7nuMw0V@StLjTFOqfDx^lFl%?86>WEqH=P(=1gvC-{`e_5D@q2Mw zDfg@b?CAbW2hj4}`r`DCQ<>07Qd)CYKP&riKgW7x%+8OyjD&T?^~H$ZL@6FzD0((q z+v$nNVS>k#qag!d_>+iADsE!2YyVYCk0BGleqvRMjk{EgE1s=jtf}m4W^Imb1pqk6 zR`eJTs@chyKv~JPSz8-Go9q&~VAv6-F43tTrTc=#M=H2Q|AmLx_biiMPu7!0&JJ1i zaUO-uN=2I;`hDRwMg(ZC&)jxkG;n=z#FxX@;}U;Ge6mB7<;m}MC|RizNlpi#BUO3j z`ZhXr8yM*ZekK-9UzwZ;Ai!&EFUp3|FXfxtOJ-i72P=`jEOz^I1oJC1Mnvcgl&Y{j ze%fR?hC@t6yYfD`7&=6Zs(mNo19;c6owcKxYGwC^m_ zpAOIFt8Il7wcP1x!84O;atFgLCEbTMa#Ow@IC!^FGh~ncmlHdC1!8QY#%=&t zkd5_;rChXgoAhJe#uwkKd|(Mf99qtG1=>|Pbp~~6|3Su<1Rstiw!SPp#8=`PQ@`}c zYBUA!l;E2fzk$-7=JzCQ6gJQFg!-|4?A2UUwPhSd>=)I?TOeE~iBz7m+n-SUhhn`L z?a6?0|8td{W>^`tw3FToa`gI1oSz}w$6@@95iYymNp`*ZnXVq}Xv5mdqFdQG2aFlC z*}Ry5-B@>zZliimc#V9Jj$RAR$F%Li@p}AXw3Q^fIVhpBT_QRx9J-HKN*g(fQk^G~ zi^sQ^r(0MkiIw9JLlQ_2-k_Uqf~gHk*>DEAP|E$gQtjzHhWmu(Awxh#um1Qu%su?@ z)Wpn+B>DbQjyLuZ;hcc1HImmaM=Ac(-}v$q+Io_=Io|! zR8nTJO?L$IqV=QXDW{1`k#1MT2>~fu}kf-(4;F+{6G10Ug&EfIl zS)mN~*P;lGC3dy3+lPg%{bZ9J=Dy9R{%|FsXo~jU zNnM8zuC6Bvo>~}Jg4R2WrFB*y2wwJg9l}QyT+u_i`4-ezuiYJU{4y`N4Vk5H6quM? z@?2jR(WrT$<>q}G&2pWbND(OckzaHYh8AF^sa0tt$auiAZv`0oQ#)ckv`wy#xU6CL zY~;xg3Dk9wlSr2H33vY}#}FL2x2bgLc zbxj8NaKU=77`J9`)~ho(=Ez1YgCgG7B7OW5m3W*q5^-0j1{6modBVF*zC9UVf4v<4 zivNtP&b8k~miHSAUBQ77%`o|)`J~UXUGh}Y9-=lmL6#UD_IkrxwI>#xiYm8P5d9s5 zZ9zC(X{k|L-g@$5ToI^Re>{{C-+WjNEBK(fJEO>Z&?`ZleyHaCXv#v!F>olfL_Z6W zrK07Z^A^q+3>6x>O)IPYvWc}Wm_|J2>p+6c-A>V zvb92Md>>iD&Y#W6XTRf`oBBq{OzE#D^8y>3rM)Qcv^sxmAxQ-kX{6e};6-lm;8OGG z+1cM|l8=_aucHGg2;At_4uTRTRx=M$e?xA8o}ChbUvaf zwJu_1tXuMs{^JNKIW-;yoey=AZ8ICVTIl+n%WZF`Oe0M;FmL^mT!0p%^UW8+mR<%v zRdvOymohzpLyOP0kMOo~1y^axiEnn)&L0u`0>FV(`w8mugF-D7K?efLchGxC&}l%n zXnyJ(4QS=R7x1d{zC^IyMyB6xmX2Qvv{rDdp7MG*mx!X3Plv#945w>N+tZx1W!j%N zDN*K@R#(DD?g~1Q#y0J8#v~CH=C521$!J$pRuHj}-W&;%rVXqp<_CK=j%Mo+&+oPv z7?gX0f_R%T!F4{l{F(j8-E2qOE-AuR#mZM*wUwZYD$>sZ1m=wR-xzS2N%9FJM-p_Xv- zb{I0OVY6>H!e(80djr1^+^02%0!QZ%NX=CHo&B(6-E4C>qJ;~-@T1nZ&@WqJw|!Bo zC+^!b%~jTp29V7&Esm;l;rvCQN*JbL>H1n5_4VnAxDq{%ExxS6k2W}5Lr34meNSNx zwa>+yRz5#%KGvd)s=nF6?q4BNNpZ%%z=J$YJOsl{k-i&vyEK8?by+b~%kY~=rno_X zdPKJ?8Ri-fTDOVYfk$d`Z*x>J122br_|=Ws7^U+{AsXx@gmSYE`FL6XvPz{tm5jRQ zL+2#*ZtQh_zPOVKW)yUJSlRW3+2mt{p7FBO2>lZ_oD)^(DGg{Td}lAjP#x3RADC_c2__B)c$1JGKe z`GKkmk)HIHh1#o8@4`k_Jwka)51VvtVQi`7E$q$$vT6Dx$i@~zGp|yi80AwwG>72# z-4@*(*SARq<1HiU4!gO9aXYr0@f(@7f-{MmKZ{(s1x@Q2z)#MwH^zsog3Hv$a7rOO}Kx z$UqTZ(DkbK5v6ChupH}EZRBUPLOC`6;i1UnK+8Q%<^5a1$^u56uH&Um(?R!g{iD|| zbIvCYRIOid(|9&Su>UTR$rAT&U4fIJv)57!CB(sQN{>0f+*8QtwaG*_dOGp2kDc%t z4f8w`a;MTFcW7^|xY|lqL9z)ke~K@lvt-whZTZlBD%%+ijoqtBY|m%;@ZQ9%XSJJa zR@6x#Cw-Pb&?#rAAgA1Zd451}tEBLa?31UWGw?lw`|TeTe(yB5;&AV1*6AUz5gsra zlv*zgw>ajDmH)J-3u1mhLsb1?4h`E0rgk7hQ~077Ar!Z)XSY5kyWR4=I^P&!`W*Ls zi;Lp9oL?oCZc+X5QQV{m2_$%V`+-w0>H`p-%6k0(SIY9@v>0g%TWOA%8GbT+EOYO?nSA8SFrhI6@i`c^Z2FP?||L+M$|iqE3Jr&o^A^JQ5HGY zlX(BejlOphVO+#?yd0-Zy<*ipJG*)iLbgOpZ9phFIB_cBvHt47tV)Hr}!JyKV_ z*-JX5sSng7@k@VlPEd6}S1N6`wtBCZ_j+oaYi$+xj!}*7N2urtpl&bigu?E%3bzI~ zxqfcGBjEF*=FhDA@K@}(Qp0?2iOh!=&m++ENNn@`9oWh!i&;Tfy`*aiWZ@EBSljo5 zo^hU3aL~<+#4g#@{Ua-enIrE{33Gy-MI+VbxcB2e1`DNA9Ty(W#iT9p@nS5i;=?Vf zw|+Pk&X9uS~>!)7=GQm4p|$jmQUtu>T-NQo1ZBe_4lUg5XcG3JxR-h z)sK$8AxpRZ9By7+(H!tQ<)r5(lsB3M5%i}wysPwipWE`Q15(pWu!HNIcf4TWQUGty zO2+nLh@KfFiW`z8U2lC!b;7X-$#Haifg;hcOQCXa@x}yz8H?T;c7>nkv>u!hd&{v-Tk`B}pmuS@6lv}_!T6jZw& zY?8&-x84I?)@Kpd_uz3+Zu&=$1g;a8>Wy+=8}LW43OR%x%rt?VoT>{pcHrkYrQF%w zCi$&8P2M9xT#GL3rjt=sL8^@!4Vgw$X$lq&(eCU?P{x?2X$J9#h(j%wIws`Y@|@4I zscPbgFbnJRnmp)Z2b{GNTBjReYdd>?)4Hr@VU|Pih*Y6uS85;3if!Eh@p!iv`nD*`>c0^UH zwqJ433UXNMnyD{-qiGzVv2qFJy|+oEPKJNmu3Z{))cYd*yw`d3LeY4w4x?0$6lc#E zJXy?o!>h+0f0lt1yo#*tOXmI60{2C9`A|l(zSW~`_XKpRsN}6u`%K6uY4StBcK-9u_lgNYK zz+Yg4B8<|`gIQ7(9vv%a->RWsByI;e#2;#Z!<=OyanvJd_YA`60OYPz=Dhw3&Ogtv zOMgsCW_pH%u_q@UPMp+#k$gv4Xy@R*3r!K}zEsy?*@niI}rUplo~* zBJz(Ljs2Ekx0vyz@00D#x|_l45yRA>PJ za??lD<&F+*$*T z45j;7A89!zQaxK7g`5#U^f{uIK>1auP(yz<2EV6|E`2K`or zb7ql5RUbR_2n_0&?^{{0P%`z`@*bEMqf1mI^UP3yuRe7yHYqr91U$W-!s=|8IR z+rbMle*@=XHFgOHPrlsx3q|jfGQ0va{XMra%Xbw|hKfDMI3I{eC3(L7k`4@dxv03& z3T+_DbUR4P_n=VjDd}~q+%k;F*w4NE1*)SwG|L1xomWgrX&;+?$%yMNj?wgcH@thK zO3aR}!{FAq{Nm+hFsFppd)(fqz$J|)P1RA^+Jk)es-7<_TGEIla3SYF_r&d<5^zEs z^c<^5&RO=afu;u0qyZw07zRe3Z9+U$5SGwi3Bh(`;G^5gs*2mBgtScKNU|9o#k(M7 z2?3DMhl8t$LMdH{Ar+}9;*U_*kX|^M@YY7JfMV|H)<=s#W5KD>!do0`Ta6PQty5@f z1~0#W@lY$u;1Ry;R)&u^n>B03v_1E*Gc{*-G)Ah)LW7(HV-sJgs@xa8S_%9W4%^q8 zp+0?cKMK4CzG0OZ*!K!-IoNXlwOZ~n!>(ZvbyIahV>1b)rGjpd#e*MUQ{L0~>0E=C z0lyq6u{765O04lr|u}sOfvsz>@D#*`{|;4rqsJ-l)lA~(1itphd!2jcdHty<%8Ga^YF0t zL@h##5_lQS)4Vgy78YDvhl3}7%_yhyaqJi%NXPXYna{wTf3AaESmu@wW+Fv4j?Je< z*ch=6r$tn<$?r*Bm&sJ7!3*J!4}j)#UE-pQ%5VT_e2NbJ`8 z#M1J(tuYLJs)tiHuD+*rbNMC}y_@k<;tfbKFI61t-`l>0w4zVFhG~^wH+cnS&+gef z3)6CvB3T%&J_O8~DKT3RHy;%G3DeV^M})1RUrzt3L^0?By)iexFpW`?iz7fDe!8-$ zk>=kjdn;8)9UeUMtNfn}L;JRH0pVR@#!v6crEAQqC`;YG?V;WxtvJ(mNtydb0|qto zhj)(9ad1woLh>4n;K-l7J$_}C!^iK%eVDfY*Az-8O#rZ3$OG-_YBg0waguslPnT6B$Sb$;LyLDS#v*0J z+Je7so6Y>4uAh?`|k&P1B6H8~ogz{52Aw6ukHnzxg5?g8LiE$D7l^E3>?BBOa!8_pD%h=~nl; zj`E)%x-aj$$*@}C5>v6ZWtkSMe9tNH2C33CN@nKv{j|Sx60-GOZupoaB~<=)PU()B zE?r<}ZEq*0vbcz-DH^NN(L;#8z}kGq1?ZF-%J6ATjI*H{6V@V*iXHd`!qvo~+0aCu znKL?#NIaRCkwmUncvUK8BtL8Z8q=+APqJ5{;4%Hy9x*Oqv5iu_^WxX-zmA2_Vgi1g zxSUrYE|p2PESW^lNZ5r-x<|9Mb9C&+ViVG;`0;tT)m#wYIbU*`5*jV)$L0ibP)2y| zn02pnmgs6lRzc92PWi+W9p4LhPJff*^f%2^(qYM!nhmo~v0n2VbgOJQ;6+#e7^=vE zj);AA;3d31J?+^gNE+on()n4NN@Ix!_jX~%Y<#KmzoG`yE(kO2-{&i*Z9sU+a$Vp9Ed&N`>)d)tz8C;0bi57jgQq2Z^hQ)JS%7mr`(%2yn;?AXSn zSAfSe;?aNrk$^kFt3!Aa<$iM%acelNywwPoa6I`7s01A@E&V;btmJeCSN`fm4*1vf zON3L_fRP;O@)i$pv!9F{H00oF(%>S$hJcXJ@UZMgwyg>V`QC)m1>BoN^*$flvHb?q zFT#q~a#g~mdF|qeGGH)m!b?3Lo^|Q;T^<)*hjr4g^7*vEpEbn>yZCdYQG1Jkt-sTB zp5=^(P9qGW=cJ5HNH{)y6paor?}?Q+Gkc5`_O_}zUwd1)?Bbg?DkzV#&TGr*TiMe} z*SN)WVvHMrXzH|uJ#+|ff`VyYkAsUA!&#R#*v$;94x`ttFrQ0&hBNr)w>wQVSU2vm zXB8%u=>q7fkew0u5uIzh6SAG81y^fdQ>ae6QQ;bXZ^78JK7xo^y@1xL5jxS&dHYSK zeKR{u*9*k$tV~b5E^GuCom!sG49*91AGsEKUvAI5e=FvTrw$1@eS1#&p+} zn^(g{YH^$eKJ@HufLy9M#*8HthQ;?iakMvh?fIi6Q&=A-NfX%hW|I1YQowOtwe{%w z&8hkPHR1uju`WNlaOHY`b4q;jlP3VPH;zVDRu<|ebxZoKtQm9H$?2%gAmq4PxXcfG zdWXftYzhFBk6+?2l8jn7y1^>b${V{QJp&;Wao!^M<67>B5U`L*k!gQ| zWM0b;V2!O8=|<`TGDvdEDYxo7u561KRwqW0N8e>i_G`IGM|*D%`~mjm_NL(g=gAW{ z@AG;d)4?OxFVI>#wSZhc$1am;ya#H!F9_016;JbPP-~R%@~1Xy;W)X2v0xFsCR{4S z3B%hQ1UbglacAaqj;YOr(#I0^whU=Qh~LKhjXisT0b{O?Z5m6nOh!WtZnI6A`ql9B zUQOu3bNfKGpY_{LZE8#|gSZd1-6PaX5&NS~ny^pZ@MJ}Tz+So8<&{vnV`!u}vD4@3 zsS%pC@<9F1t>6|^V-JYL;^3A#*E99VZnXl+lO9D=a+gy>d&IEaO-R<&PU~7seVlAf z_39Q4c!_Pc`MJ0}Vrg>MZOPdA=QXJh5P85rQVs_$)A@@#QrXVWh{RQq8Mhrvi$Nw8 zuhzf=!l!{bB8wj9^jQx#TqMZ5dT$T)7t8VRt#^VwixT8_DF&J?2;mzTSN-aZU27K) z5{5ffv^8WQ%s$u>&v~ihsa@37%~w!iJxSWEufLbBxONfYSApo(x!{k#w6y^V3gLFm zyr+=_`O^i$&j#5NJPO~H>j*>cupD%u3LwMJvxl25-h<&T zGv8X*T9?Hm#98H6N*44lxvk-&R|HyhU)Wp2K+X54zK?z>@Z zvk0YqkprSxL8eCVGIxc!^(v#6IWpJVI!s=T~^~GgR&?s_3SCwcdwcNeL3U&q3Z>1djKI7^GuKPAW3bju+R17 z-GT_G{=LKfxwKk`p}AB0SUc*NaZ0bBhsdYQ@UWFPy$>&wc(>2%PpQVE-O$OvO{WKC z)oCfU1XnK^!JQeW@Lb!AH%c-!vvs2$nG=30E1k0~dtNpa(qz~zo*^kLsW3tTQ=;&? z$OlnJhV1*1_fSHREuD~qSWu?bXy@xn<0I%fY0be>>`D$P*x#Y|o(A+VnNxAxW_$t> zr|n)Byxu7sqBQII(Hx~G z1~JTsEg*g)>hx|DrWoG0I_(FJd*L8Ho$)@fyCO}MB8l4vONmdx1{WH6$O`XRs)=az zEFRuHNS{HjGqjO>5y>IEF-S%u;_{B}XzbLsc}@bonvS}lJkJS)(=h(buB=nXjB)d+ z_V6WBF5#SS$p(fBMr`Ly54GYY9r(34WWKTU#?`;sx}Hg!Tg$3obx=R1MH(Hi0k21m z(1aPW*OGZzCTupJ>I6~T>@9OtyM){Et+(hYX>hb4Qp6Jo=3-^(zT%rKb##CDg1mc9 zO)i9u%`$kx#tVXPG>M4q!+skdlHrhtznn}uxt9Krr%A_@)h(?s67*09yLgzxb?H~2 zm80#A@^!Nlu$>NBq-(uqt%hXs*b?lFz54Lc4d0|1y=D4XD^sZ+BS0kkH8Tu?H4$zyNleYjM6FH)7^a1%k<|Gu&Uk~q!Cd$QpWL^E(^U&0!pl;OpEEiXn%V7wiFMF^% z&I07bp@>s*!@N3VrA$Q)5T@q|jO*EVxan?0${dZ(tRYJm!1z-?g8c7ZzHM}xbVg`R zArLx!ptmJ((aIxZqkq(<(<}-MRc}egqjJMIQG1Rt=wmkCkrd@L^ z)IdqNd5&dhzt_d1yK1u@j_lV8d4;|obK(tWhL)1!IT;DY)Y|*2&Bko~XWJ#81LF{x+Y7@jM zrN*d{!sJL9KAtP(zt*TrNbdi<{)*6a{~M2aolyOl6aCx!2b>n(vGC-Xl}Mf%B#-hG z^IuFTDoF%TQXrs5BKLJ#i+~8^-ApTb_1Y5Au-ajqCf%b$Vjm&G;Efq8d8KW`#d>j7PICelO`Qig97@I?X6bK0N@M8LN)~t z^_B}|w2m250@9COsLsD|o%+7X1WHLVbx!$r>>(d;SnmQciP10R&(rb8#1RMN zk4xX$(%vV4erhyo32y?$xO;6i%(&KvQ^|XWDbD-8iQROFA39w}4&IGp`d8$p$o*9# z1yOKc3tm=*VB*MzjTT3X#Nw3i-j@&5lD?#T#4L;xHXmbL_oiTy<*kG>ITGQdkkx$5 z2n58 zBVciDzi%=VPQZHPrw9)3%g#1~xB%E?V@J5p;AQvqq*LpTZhv%l+e+ z6s3D3GcU@V*FwtAl?HFC^PBGvpT*%t^&0Y(l_{N-1se-5M>3SEiR@qF>OQyxynkXf zV(|GmPAtxAKZFhi2WrY#)ygQn;fxF_H;ZjnbGs7xlVjhJdFEE~ba?%XfbWS&0Lq>_ zlhnk-1I4oR@&eKX^{)-TE20A4c%shNAFGelqdpyVnG(wC?kaB({$OeDNiOB>m9zZ2 z4p(urKcrByj8d-vvU=@k7>bTZ9a(4I>-+(Cu;sz)g@2sz^+D$whstx22ZY_tgCdj5 zOxH;3PbDwZj_zC#+^#xs{N}!3wjKtOV|t%i2=9==xxXiua$)HL+q5k`_j%U3;-TcR zA;L4SlN0T41mVF=K?%2Ii^?2Q$wXy}dh68_W zkQR9OJg08mLZ;m45E3d*&{uP*II{1L)k8!v_;OH@7iE& z(zIcre7>ng<%_fsh6n_PWy^jZ>1I?<^L)=xxlv>Q86HLBY+<@6@(eQ%%H3KiahrvB{_bTg45>q1$sR-SY6Y8@i!~b5N8^kD{vh zwKXTm*dKWkl<`JHC*-GVBY8a{{s!5GG>Le27wDhkGnN;!YBG$t%jS zvWhu-atZGW%Kf%A<@+n1@iY%)=`)=?9Mo_;8Ld5Wo8%qFZb9Lr`EANOyIQ?{mG9 zb?m?e6}Mf@EX&LpI7GHsleF0A?a(jsbEEGd?lDM?6U$Kou$_QcvIk!=$*ti{HWJ9U zpjwLu3V+}OEcg2y*20o6Z2?ZCVgzG|~0i+q!QsPG`SlPFHO| z`~aW4wHLmdls1ForMGyUyqz>r%@lhQK?OJee9k4qN|1DCNj-aIa0vW%?C;8yNS6)v z3om+a1mZAjy%7EaZB$#)!5Ce$n_NFlk3{L|_rO8$hi8{5^n>=wQ%Y|o(A^T9x=?yk z<4X>kP{?V02t8VnG<7jsR4vX_NB09Ja=j3R*$6+)W?AlQmI34iSq%Dcn`z1|~r>5iu#-^uFy36cunb5n|?e4Ipbk9OVeF4Dg} zbPSeBo!NqP)Us}Xhk7WDPq=A&u5yms$y%$)uf1whwfd4k7~h@6Icl`y z0NmKYU*7+?HOy+-JdV1{W-UiZQ+TjCVq%{h(LZKfZl7NOg37qh$``hEYH~rFa_(1L0NIf8}E?ZVdimiXscIO#uJ! zVkEE00gpV)V?u`j9q^Z}kz)u&dE|K>nVx5+|Gylv_t%sv`*7_-X``1nPqyoeUYUM4 zlh(MuJhv^hE2;+(KHosZZRJfr+Y1T)-SPuM$=ehP~h~Jtnj{1(tP0*T`zZy|k^-Tg*zXfM}x5BxZB!>`PfM9RzL_^XP?S zcpqQ>{#gX*?vuINds4UpVYGZq`I^-1kfkf0I{iw*A9A^{9L9^%cj-}6rcK+$Jhk_?oH zvovcNRXLJ)yAtd%QHczHOlc`z8C$S!R4&%2O$nvcdlW zeGSWtUSHGbj8uP0W6Zr;q73+IB`40@hJw=NQs`bDpydz5_$}wI-H6@@xWwT92)^Aw z3J@SMb}k)dN=+-sF1qdRn6<9y>mB)1jwDl0E_6?qpxE(IGu*FJ9QvDx$^`pwkHrf? z!d?`Kp8{TeI z?7m$+B=rN-FTqr>oEfEPYs)|Ef+go1Rx@QzeSsxQn!I&C3%cj%lfB5M8f!0cYQL9s z^g({%+;i?2p;MYST4spS-hc=JvDKX;}?Uog&6aZYb#gV|?Mt;_jnIr#{{`H(ixf3L`Do^Rmmv z#-Ii+>z4-oy}l1$ekOZ>dZQk+@U`*Pwg~r(c(V4cbw=e7^1d)C30RmP8NJGFIxLH7 z&|jaDQG-2>uZxywfe$h>_~8udSYI`n-|y&CX8yt8gV9eim|eoHCcL`S*Mi*-Y>-j1 zLvIf9(ohVyTFn>UbU!~W(!EL+dR!mlrT zk~fiII4cUOj+fmcwlo4I3bADxd==TBKE@L~vz zGP+emXU%ue;BfBx$3yqbikriMZ>Hi;yilpZ!Ux0VpL{=(!0}j%o1~HC?O&EFc!7aS zb-#q;NqrsO_kHS-I?MFB_GjbLUT~&&tW!=+SIryO{j#MM{5?kd4y}PpCuF?Qsm5K# ziT=~4!it777FY*W=cV9)*o#S6rTXv%x>1I}5@K*-$hdLwI@X>%VbAzV;&|ZCqx}={&6rwHfCDj=~X|Ap_yL8ta^F}pOF&_eyqpM9>n-qR@*R2y{5KxfePti=2g-*|i z#>Z!T4kgB@DgHF?D(f)M_>~n@qfI%})acc<1iK>ye_6s<@6`=AR2|&OD5r;U!U%nw z5BZUUdRaEp6EDu^CiH{-%|(4ID=yR0{zRkZKFj~nNJ;d^A)T7Yk~GuIb}{xhg1|91-j_xo0*d*Y)@O4rQ)XW&{JIAu z(?dV5=T4{u)j@kMHP8;lyAenhkuj=G z)cH1yzv8LbMb7*U4@18je=o{AHYOgI0K*n<4>u+BcNxNLuy~0b{I$iErTk=1=l&uh zn#@dDrvIcq%U*C+qs|D3zDX1BltC%;5__7zrx#=nU9cd?r+lt&E_TV?fQ-EAY*+)rLf|;m>Qc3weovit;_M464T3K{*}01I5`C6xxe z$feweM58+DtTh$Y@))@~IsuG|4nn$=U@&#apo&pKYSxl>QB#Ej7Xd+V2z=@3Vf2^1 z_NKeWI8fB)wB-BuzbTD!O?Br9f-`Gk;8pGT{_g?-T>G}op0zb)PjY0?(Ok0!hlADi z!55f}BEN7888$$odY)CsWr&TV{pfG0koulPBO%MJGX6hDq=m<%XZy~wVV`IsH1x;! zJ#{)up0mF7#!uW#K2qBGO7<{du@lwPa`4X7k+W`~xKc8{AFFO$(I_LW&l zA7n4M|L!dMtrVbWXPOpfPPJV;gp&F*)!oBg!X`M#W>?m+e8cwxG8`87N+nq&oH4v< zOK&iKGbbaKVRnE**>l3f8^~s`zA)+V zY|JdlS}BS@-k<>b`rT(9vlbzL%*;fdwetCEnJ5p=F9G|lk+5mOkCqO%pk+{4QH!u~m>LS4DysV5&l>wHd1{d6aL)HPII^25sgt zH011RB&}y$slhvJf1Lwnom+Lb@d9K`32pFOjXHf)TN$@gYVzPYHjx@DW1Ey70@P@!L6Dktq-XFNW?P$vnq2)`k z?{b(d8=}IGL)TCFQ*{;~(Z|ugeMC2ZCzri(|3^Uc>abj@jr7A{vTz2CGcaa8Yfpx$axU#g=9OWs;7K5luF z3X5c($RKS}C`X;IfVU9zu47g@<{elVO@HMAd9)o@GNTUbSl$-ityY&<%C1l=_50G- zJD}mq$ptqJ&^^J^JexxwKS4r9Bz~wsL+m3d@$-u`%OdW@Z00Ti*BE5A#TnZXU!uy; z<{XCZI{I(-48t-aW2Kf>R~S1tJ0GerdAscY z%Hz@B-WWlVWiLl&hwZo4)GWy;^Dj|mJ*vNADlH)6c{zzc|sT6znBvLQR z3aIpm>~xl&V*@NUK<0O%hkiL_mz1v!ruB!A!?kCg4H#a3VURWOKov>DRK7r!u zp3X{edY6#nx@Kdm6)sj_rB7aREKXLPRlu0?LOvg4CxQ)!&9beldDT>n8{z7+S6%!i ze#C6IzdnvilyKp%-nqB(%Du2y{Z%_S-XcM^5La~i8m=f_d3EakV}Rpevbw_4E6;!| zN@$8SW5Q-s@sa}A{{!mD#D7R-=p|9Jm16p#C~zzAv|4<8_v2enOTzQ)Pi-k%cXg=y z;Tx=U4#&^U!W!XbT#DZtCXy9>$QTsAw5Cb`)Mjg4**_fEoIyv?8cGWewQ3!HN>$)w zuDDt0kDY&5`WRiScPBx+=VIGY*UMjV`;C%h{;G^&ZSiR z5~Xr~1NF=cwN8nRz=sw6Wg1m#Yg z^ffEL|5Jp%(XV`e0Dn%N4wY{mXpzKl(RQmvulT;E6BGaNis-Bk_Q~I2$)6eT9dWYf zxW>oEGoFfa!%#GjURmzcne3=s*M^UnDe|dii0WiUPTqsw$LL3W?;TZl7=~%zXtp&a3fb_S5+yi_n!vZqv%vuNajvUcVYcQzfQ$qxfjcepZgQ zF6~_9adb--DLw(r^?_W^q)#G-+*0W2(;hXZ9|bp!V+p~FdwaT-rmVIQ3|AVyk7#&8 zg?{MI=x8FkB!}~*25?1$MX9il1t~#G&%@gjD%tG*$i{A;nSB`<=sM7}eJ~wQs}!Mf z;7Q)s30ROfchX``;ZjrlqHK}IwU}=73+ls~J;L6718hhm{Hc(OuANC#Xg>)sM^)iMx-WM2e*k-jIupI3xK!e&=YsA}T z{X=H&8yq1b-LcBA_0;lO?ENH*u9w3UTasfXYl~h5UhozvzF=}mlVYX(Vte3APu zUZ|EFgX*#!Z}4?SJPO=`33W{=L*hAx9bV=Wby>kgYkBi?x}vW--I*&(Q7IH&pV~Dd zE(@CCj@nb8jHUS9g}x-=h3Rv;6CWbql_ng?n5&`oKs-G5qbS6e6^)uz{QGKnI+No0 zf1&`v!Q5((9$K1aLXjDVKb&MrUw0mMa*KronFu31av3hY83yXhJ7Z5M?bA}jpZd^9 zID5AT@8^Ex{OY8*eea`N;TmEiX7D1NQn-Cv#3-tZaNJgjf{*A8hTRz3is1PtY)TrJ zNFksU*F1ZL+=Da(|&ka@e@oP%tDTu_b5m+%cOApS(WNFxUrEX8`_cw3GZFDx8 z?LsyRQC%2=c(G%mI=`e+eVbqH@Rq~XF$S7OwuoZ>9N~E2Ha*R4N1g>b%w1ixSHObh zn7dgR?`pkj6l(I;XsEMACcbcAdt`dNCmqq#!7CA71lC3q4=&2I?uj*YZ=K z(vK4~=_z#t*OlE7C?T%RejE%`U-Zsc<|%m=SNNatb?Werzs$bXeYe@dHD{^pv>3LO z5ln}4#1OJn_1ueL4sZ-VdHlTG96!^)o4xo^6$>h9mh*X9moy~r_) zX(2UJx}n!vd2j3Jb)f~&L_>C?5t;d~zUI8Pa+J1ljSiZgqLtkY3PMv(v2rB)s%VsPk@Vl}*%Q~d3<+=T+g`r^qn)?r&_qcVDKnTW&=K#BlsG7#hwOWKG5UUp z7RaIbLsy>REHc*G#4CZNwJhKjmDF_xw~uVndn!l=4M}tf^H!5WrT@HpDXr?+Wd4`h zhU!7k0f{(I0#ADpl4CbyxXtx;V~g93fs39MXx*)93a-tzg`v1@y5l0Yo>I*AAr2FP zQ=o58LhBUl;ln9_JMIVu|7RM<%O__AP+YKfm~KWgq}?ZmSDuq+jwMRr!U?-_OEx+D zise8*2Z90_9i#KcRgv@c#Kyu_9xti-6F7mQB?L6x*f#TVed>yBcfql1`bH^pCC&q; zGG-#-&pt8cKUED^EASqUSeB85`%Bf)2!1a0tN{wQuQ`}IsM)wOGcIm0m{8?Qw4n7N zUwTq-y@dpzGyfQo9n4oN6!e_xw{5=25kK86u~4Z`awtD?PtjZO>t^$xjO$nE^%t(h z)Y61Dp#d@b$;+*xpaL{%3)q@KW>O|7&$c}4Aftx)@oQfPsXr~G5f^XDK6>hc-nYGH zh{I(9#+?y;@h?OdX8JX3N^ zX4;BiC06Z-KUvyR`Zd(4QtPWCaMeUri5NjI8GQfA+nG=(MY!F3JPs`pQh8pnM&|W> ztpO*X+$yhViZ*!L*eZq}ctcxlgjev=@!f3zL9WZHM;r+RVCjCVFAK+l%(6~qu5dDC`^4us1-^GdlY4c^T;#Y>k9CCVjaYgnTMa& zWBwJ|=wSQ)o1&6~&RF_9`;X=u<9{fT_20ss|6h`7|H+v7Y52Qu7GCX@7&y^>5BLXY z7VbQ%uWuGkH*UJIGp96m0+5xrH)j>5w*Pz^`I+kxzBZpB*UMvg5myVm3~QdiI&*&K zS!e;yWWn3^C9mc0J>g;)o{|Z%+lsJC-dEsUqZ0I|r(u!vnGgy|>P|6FYo^Oxi7Cq$ z(ccH_m+aKVDT{3hJgtdxJEqvMX+s`;=&+w)4G3TK4yjgAr>EN}Le5oN*CJ6p{aI6b zdKs1vtKI8mhh=73SnU1mnQW&uMiap8IQCM7=)mP3Lpw3J@(ZNw?J7XJ#J{_-P990@Zm`4w(kt4DYCzk26|; z;zOqmE-kO1SrPIAW_-G8tc5>5~Q z)XfBHH}MN`ao{&exeoKxLUkew4(~3eFj7p<{q(ElKPk#4zy|d9QT4p7oRS`G99T2i z;5cfz^wH+^T(w?WzTx-5j`<}sN!ckuH7ZJ@k?wVj#DFsOe2=gU$Kjafcar!9MeIux z8#3q1615{1L;6OM^GUXZ-A;(D>4lx*@sE!By&FD-7ha!ERhc}a{700NErp)P1oI(1g}6-(b>);deP@+PfIGnQdi3T+1Apjksa#ZWFJ4^ z+SgNtPgP;rAT`XS{^;b?j9BZU63d1Aqqp<|YJwDo&0v9ZV=puny~rxRTr~Y^y{WJP z+%n&-QlmyY>Gh)CD%vtGuW8v|Dwng0w?a;%ubZK|>KwUzez%OwxLN@=cXPa!A6RU! zr(rr17%$cnO5D5f`0i#ynM~hdQO9YS6)yvixn2!!P$<2N$!c0{>st#JyxCg9g3+Yc zL5t@%7%w4PqR7Zh(Hgl(nYjmfFdZ2DaublI$uQz&U!E|&b&yZrF@dTY@ z)F4JVkI=t@Ku=mc>?Q1CZz~LcZE$C_7p9yOiioc~(I@;}^%KBBv22<;ET`q%QeD_d!y7Ede++m#d~BknN7 zN#SQDaicyY;LEXz0ZyVBQ-IMcM>oNCA;t+i)M`V){Q3t^46D)K*hZNbi~tTFDI$t% zimmzZQT?eIyr}R)i}4cV*t5X-|A$-HDEkk$pk{dU!(O7E5j8D7EXUTTRvfj-p>;l_ zaLYH~m!BwA-J$60`bT3EkNJA?A;hh|=JH?uW$BTB!R=YX4Z-D$s+`r@hNUq-b|iOP zG{9}&7oF`ax`*g&s{@J6MdRQ_W9_^~Hhj4Cj!E5?TAtA1K-ww5M|O7L^L&E|8ObyelKGqYNDbOsR93tnJzKeyz;8O3AJk1(EXQC2D+_EZixE(oXvwcQCCe_hjqWf*`aCmxUJ0p6kJT zT@k95WZ9u#Ug8#hdjEpd=4;DmGdg{2c>hP$jO;M$X!h}4&s4}`QT8bC1}Es!fvs}I zFsufd9q|;-AAcSXpMLZUWm$`D2SI=vk#a3Zq=PfH2R-+|yar}Wl$(%qCkt0kOr8oK zD1Qgv?tJ{+d!*8_tEvC?rntu8$wcf!jlAH|I)THdFLI0%6Tjc%Ye`ut<{KWzY3Anl zp?{dfz-zvk^`5*+taOi1>V2c5(l5z_%13UR?^&kZdpn~V$-ktz*Y*aZNMak((-)PG zo-C*@C^J1%=1g5KxBiSyXZz{3#9XeKOGW!L|HVDr-QS?bL5fXpI%`syIUg?Ut5NASD-B|kO7lXhD_JEp?4XLS1X){!<*dZ2SC zdHKjj&}1jylQZ1`kJdgd(I9%pv)CGN<=CD$>s8^MKAt?v&S@lgW4v6xRr~0(d$AjkZ z$5N)V3|&s27IOJ+U$0mk;Bdu{J_m#KPK?~9Ur_YvR+ZjZKUK8=r;X3~xXIG#V6F#& zio2(k<-$<`PzBGn0sDrzf>(r&wjRED!K|AYPe6}!hkW7h?w1=QsEKCp|>lHvYRq^k7Q z0xxKnzoV}Es9-<2+>;=rEM#IIN&84fRo5m@EbBt5()s>y1j?GlXEjjrI4X4_4v%eg zgd92(HUBt^R216_D@0#5G@kE{ z$g-Z%6|QNfon`y!q_9vgTgxsEw`0GzuVbE~zBDAgbeyEb|6p!ka@~aI;FM~%fcjEN zaOvf#&NR$?axumOqFab%>L^k3M>4Sz)UTe7tmlx}0U z_w#tHnlG%oj@G=%r%BRQybYc5v6-vszqO*sD(O){HV{Kbh;Uti14Ax9C>-kA^-&=p=O63HqM}wL4#-h~&YofO7GRMjW`ex3o{@-j!Zq%&!F#yxEBZnPYVPJ zK?4DT?)1L@`#ERNnK>`^v(L%POeT}bm0WABuY7*`4BL_dh6#2z0{~keF4-cRS9SBL z`RJ^SwP!S&-6ucduRrq4WFq6fck;Tva&tKNahaP58;896{VuKD`i-DTpcjxfKyG@h)`t)u!X#DDZ%?zgRmTg2)qbftKckwrCh7WMQCL&YtJEO*1^E*#ym4%-CJ7&tO#g5chf zPHNnc9Ev{%Se~NhT=P@5Z`b`5i@U7wxqtTQ2n;Kt9R)Kr$rgYKF#sg>VzT{*i)4J9Fv6xrSrsE5Ij-m2tai7En zVF8(x%e9t6U`uEYuWGL718*2GjB+J{q!D`g^9^8ZbJ;dw`r20Fxz{Q5A96yK zrVJt0?JG)Tw~zVXw)LTuAe|YlSF6zm0oL1p3+?%N7?raF|7bd%$)5F7^O}GCg%9Yv zFR?k+6W@QMy_kwOreXFMr-4|y6Z<#hyZK*{;Qtn)#Vz@c`IlZ&HMg{3IVB|evxJS{ zI^?IoHx%b)H_pNfSd5YY8$b11*8@RFIYWJm2)j8QQ#bJYz1sTtO!E_Ry7amyi-}B- z_isi#XrV|9&AxxgzMhip8i)t#CN$@Ib+L{3ogV*)QNgxleNw*E}9fJKQ zV^>=MRr>)l*YD=e%S5;PfquLLhRbrln8P$;g?hssO?6l2wxtiWi`Enx`JlcJ6 z^wGUmqJ%@HuOR}R6;)3#g`BPqocR3T+*3P_FSYX)96~2R;c9 z0s5qmFZEXV8*r=$mtM|U_1nsom5&Y{#lHQoSYdD+@q2PP)5tWsq1_W$r^*LcQPKAow>O(}A+twc7IWYWI2wWvdE=UC zRY<@ok1a){nyJ;AnVH>RP~X8fzor^Px7^M*4TZ#=GnJhYo^xc-nkK@`;V7>tL$7LA z?#zctTeMH$pob`h#mv!)0_15+a=Eir^Tpy6R}T7AQhlafr_lrQOj)ImCtfn1j%gww zmIN9g02_P;yP>u@0Hk%yF(7VHjcSckS@6PHXvsEo@y)4s)=;teXoQx(TlH(2V$iok z#eqswhh?{UVxH+CT!?CxZ_=l z_^{`i9|78QmcFHExit_}ygXoRC^JuU+}ZW*WXH?3+}(NG+<~U43YJjJl^fQ%t(N&} ztejd&nBgq5o+uO1Ow0>gLQhsk724%e`EO}BFB^8R#`4Vi`WLUhtqzPh_GHytPPkf& zC51MDa)kVg-t7x*tjA?-ahRP1AhW$MW)_KB8p9_8^xl4B9%mi#lI3! zZp*%{7vfEzLO@E$ZTs(|M7${v;qyTI^5s^wlyrnpA5&+*BzDTpo+)${NntYr-gXIt z3qk6tdIIpX{P(C-j6iem(g%?b7Y0N$56BL;8KHGcK!4lEM`g8in+>j|t_Lrq;BXW0 z@?m@}9cb?^FCM#R?h1V|Guc?q#d#w%yIpiMxpUanu&ae3GNejg-nbVZUvWPRM{oL^ zh~}Vgh9<3|4+m?yDzXlRQrC1hCg?21CehFoz@?H}y`vw@Wo71kr6^nR^l%F-&}qNW zpnjsL&Nt(5dmy=&!{yRPllobCtUG;FW^2S@>7z*Ii4CXs`Mv`}0KT}fq31Oi;J&YT z4$eC8yPBMeuTz;4o@Lk~xiSbiy-q)C9rE82MMpl1qRYo?=~yEW}2RhS`P* zozs=`P$Zmb_QPxTbSdcNCUVQogK!KTeY$J4o}s}_CQ*F=-@dV2i=A>Z8dc%eIPtFn zH>z$TQ`}PNnnky2T^hiR99eYkqW&OnscDCaT7SCO6H`{6$v%Tu|X$E0gl-NHl}lrHc82CzI|D+oy7uEXEAW% zYQ8N1QDY;yDz$Yza=3L<%DDk5=kk{%WVR*eF7h^$VUyTGgVRorQGHpWjfLK{(O z$Q{oG9n-GaU#7(Vhk=&pgMg||8!T0Q>2==c>%~Iz^xa&vi^a#hyUHF!3iPNo9$S&$ zPhiB~ip>dTRHr{?g@0huXo!5sfwQr0)v)Rsc-P_w&?jKrSO@4o6>nH4Yc-70qb|LN z2^h~Hx`-%bw!%Gz!HBZYChCRt`8~X9Q>l{)Ro_U$qv zh-joij*+j8=GuQXgrmrDxLI5n-*}W>?rO7-&Qn=65+1pso{(6^1&LC}jgZA$ z6Ca4fozX7h=S_7^+T1?`w0dK(ZO*-%%Q5;ROFehU_LI+4ZZb#WbD)XQBolVw z>JO7U$ClTOIFDSn%u%{Wxy7RU_APL6Zt$ZqptNbSr*sZuN6D%xExvSR8{v``^KL{L zc(p3ieOx~WM74A#l-%SDSZ1M)h{De;Uk9~0kCf0?+ZrP+t#3P@j74tz z=->iu2jH8C8nO)3S_x%eiHX{zO>M->I!RX`OsWVSMAJj*_wHg%Hm0zIk0LlYaxsw+ z9@>tiW)?Wn&S^-urPdpGzhEPu{J?#q68!EL7X%Y!g0>}G39&Tma#HFY&@ljl!856yj=qVKx* z_bjB^+ALV>*duDA&oozAag^G{6&3V!!cjXhLi!&_O(eliW_H9$UI7s9Pb08;C2d(r zVNq?Uyrmb2hBWKM8)Y(m1Iw*yVcc#zIJhG+>BA2Cj{QdQtd^f{CG3|o zsINIbD_3a9#V7$xRv=U{qOTEta1^dC#)v~&*rNWyl=x|F&so*piy1W>G(x6(=pl-Dhm@M+X{=n)L3`#Onh;oMOEl7;QP`&$4_y!Qij zYU!OvQY_a&RFgERC1|!Vpcx{V>ezT#!MTL)@%)Ll38@ld7V5f{e{&Q;=XR(6>DozK z63gaN=F^#7a&PxeuP_ib*7|4)WbrfLNd8ElOA`4w2@mYMpR3o*ri_yV8@=i}H?)?V zDK3!_v`Ct7e!ukdCJYy}J#j*9z2#z-3H~}+BzCm%vIaCW4Kyg6^&n{HlDm%(-?O^X z&F8=oHHGW;1^4V`flty7uhDq|#qx24tz8F&tIb5Sg_UMm_~YH@OFYxPeR(Mj?X%pE zAv%WDIo>8h6DZAYdzy!1wKPgg_ny3PA-l53^irJl|GHXt$hkcv?O9jVJleh{*oyDD z^bGTN3*_FseRzGYI8R{-S}jlfoXsanDor_l^-}2ymV3KH zL1~OxxMSsyDTT8LoXu3ZaD`?`jY9Itk!08d3ajrAwY;bj#g9_k{_2tJZ2Z+Tba5i7%+maJ%h5#M8zISVDbHsAM zJkj@hFTniO`+-1GQatMeN?k!y8#knWj?t4u_QS_^At|8Bl6z$Ys1DqKf!;A!hCp)8 z<_Wl{SfISp){u#mm1w6_)+RzYk?`q>u4sB}?AXsMK@^Dj5KDMuKm6B{g$kOwq8M9`=e7`z3u#Y5ri^>nR0po!{pUv_{4@lv9;)FxA2~Q)!j_^6Y+) zqx`yQjdJ#)v>V#u3tmwHzg9Q2$9pzeb>3#E*<3b?Zk9Wb=6(C&K^;rdJxg*ScXbd` zePaIQu)#Z2v}#wLrny{`_r|VvUEHP+wtr1tsy^pgtL7KU>Ta1?YmrGZbb6SeBpVF& zN;k~wmZIIxIDm{`O;OMs2detfg1gQFytDz&V-pIXLAc z_K^@Lw7BZdd-o@tV7@~aT>PZ9iOGE@O}VG}7h-DASGP1lW25_LjUCMM6U+H>-zJwT zRlRO_R;>^C7j-MQFE2@_=j0K^B!%0b!+putuv@ZL*3`;jx4(5Cv^@tDZ&b`(n%bE) zhlp+Mu0xX#DCIn2cmk?JR`!ESn;-W6rzz@Di~mn6^#8pC8bl9cUZc9L2q>MsEmak| zE2~!T`aHNl)r;S29Qef6rF!SU44)Zu^xPH4#ezPe7(UIw<+8(8R1XTQyH>X7#8CVm za}r=u<|yX*@)cJKcJ2)`ZYOzQ1nO~w4Iv)U&nA=aGKzn65BuHs-C`W~y$x z@BKOp3(5-YAKC{y8{W2nt(M692O({LP>{ybH_uLUaZw$Q1nBkwRL*N z?6*n8C6h`HB8R5|r+sCHY&(TTC4lov+U&6966YzCY_1|F)%T(?j57S1dkuKUq{GWS ziE5uC)?d2bV+t{8a?YxEt@dQ-a~!K#A+}?IoUIc9Q$ncEM|tAIWJ`rcdFC65*qf1h zCqS6cdO1fsyNS!+T*GugTFnNqn zf#!y!9AhkJXR!M?zq(&PKDoVDgJ7bQ@s)U0rkf(ByPOVjM zGe>R4g`wU;b<;M5Q2zmO`Z@-C4u`hj!`i^{U1bhT3YM3Pma}dp`0S_S{lNh-xsc_~ zL%*OaDGLJ9_hI+k8Wy}ck6$a1A3D4V z_vf0w7Bz+C6SvB!#|S+=4uH?W{40fB-`*YuHSUxDY4dvooHOz=vgYnp9Kzcu+nTZq|xg=AjvNCe7v7+-~AejaZZ=V-8o+2aVGv3j>lvr}1?mVQD} zxPb7B2uWH-UUm6#6quprM#^jQe=q&cG`^nFH`5AQ@|o^2p$0FZ29sT+#x91#icx9h zwd~bg##^q$ZwM}%l-2Z`5o7Ff8%F#(bD!vq)P=ETc~SYF9n94;2a|I2fO8A4UO-3M zsdvkVZh0c8*}P`b7W2)yC|eGQC+t7>yjA_&1=xSw0tNjls?ep0i}B>+d}5G=Gu(mO zai>eGu9LSVCq6i$JKB!JLX@X-Kj2{bjV*l9F6T;X7t+M?6iW6dY(W_zyxs8dLT-XPIqKR^(t&ak|F?=Fju+h1tNb&5mw`3tD`%J)kTKQqC z6`c?8p@EYzt`?H56Jf4DeW6FZWsjDMUuSc`m$F)g+gaE3wi9v|hka>0ZIQq_7zImq z6Zo1CV`sL9k03dE9yPjDuFMol+;^;xK52C+3?I{U`FPtQ)%Q;bacqw6-+sMj&jrE% z(O&)k|8XR0bOo{G^W4eHQNq+u^%wsx5L1sZYy+x0ZC%{k|5AD|O{Axg=jSo^!~#(PpVA!C3vvN5*wTcL*XwH$ zEtCX2v8#*Wu=fR_Rs5K+5=mIFk$_KYc7=?gQ|3P~)ZOeV+bFS!+crHC>85c47+LcEYN z#%20qCChTC;X=4SYKq@aFb4>z9MTX0w)~Rz{LS`JT^}(rI?xodZ_kL{@M(V7+I|+o z@b@C3to1pt;$rS%cD5T1L2dI6e3%^$;kTUIx~oH~dee`?QD zpmz-kGW_cS_;l3>Wg0qc3=9%Unh?B;(b*Yayf|mZO5R*>r%| zkxJS?mAZIu0o*qkb)aTjN=a~a?a`n!*Mbvr*0<1Yi8}~>d@mMSa5> z@LRK1iF_JeY`ah>Zy+e~{P&V?(2*-&yyUmPp?dS`$>zMKPZZWgkw`VQp~xSUW4cF8 z_Xd2nFqNFh4nI|?*&xnIu@@t0C?BrTj5+>q`<-tqeCQ3?o9zsN3#j-V=l-v+k|Z*V zxWxcTXlKnWOh$>$zgokKZWNOeQrk&)9-6hF%RCIU9b4YFxGM+B1w0o|2~)1MtXTbq zV{Dd(3dYTDx^|(SfN%E^XZ9+-+uoprhwJluGLRVy2?=hSz9tDg<7m*dUWBJc!-v5^ zi`u&ZaTk}Kf);%6t-nYDJmBbO@1>|VH|EO>4=z+Rg4M;}ZEgnsB2M4tkm*Uby>{Sg zFm8inE8{ZCX)l?~ zpH8t*A#;^r8apP)Lzm(uo-6fabb#Q?sanfl4u?Gtv44aP&<{SOzZ{_Fn*Mxg-KfZA za7OSW-*J+Q|G&~EB>(nJc*@{>kM;!?PW<`zh+m0rgEQ=gm`thGMY|E&q;#Vm0$cyH zxxp3_L%6`pK;$}z+c$7dbP#)CY*w>N`?pJFbE<^j@#iMsVj}nI_nG;NY?+>C4%hhR ziO)9%ri;>~`0%Hm>gG=a2lV+1!72HdioP!hHuzXzpY6jM&39q{R3DWc1L#5dHt*gH9RbZ=ugzxMoSnF7sSBM%wIot+hWj0i1HBwt9Lf!%i{UFpSV^} zos+f*|2+MCk6S`;O~-k}piMSu`yI)B&{D8t27oL=DfhE79zuIv4r_fjoP0c> znl@~z^fzCaX5i1*S|0la{6GZ0`s!b>{caYm!&jSq%3lOHYo)aomsJ8YA^rP zJbLYO3io~=sKqaS-ZI$!rT10vm#;vv+KsUIg^LySX{CdVvk*)U9~P{r&;9lXy+EC| za}So`b=~sB=neT*2q7z53c%)ZqqB~>Y(mYaK3YdWJi#6yCLJ~+U$m24rV_a_s_LJU zc~BC+_Sw18MTzoxrDGr8Eaq+sG&s6Ym%H<)NVri@yamLzDPr~^ALk1=U6~%n1+F$L zQr?B&GLfp;@&Klx0{LBn&o%p2jjaFI=)!8S<3G`b1>^_o8c$y;b0(gEEp^C&v-D2K z)0dR4ss_{vw9hvJ^+N!}u&=_F9WQ<#M=1HveuLN6Hw*@@y&eY%;*BVrKMkbJsQ5g1 z{EC{I>Z_9Gb?hJ|L_Ixn(_Fz~`N%Np(w;QHftMDo$uM8CKhy-`o%>xAQzO#;7TCf= zs#&U-2tVY`l5d|Hq8BwVlcu&UC50o)voHDRGxav&YXiLA;&CbdbNSq$8>#D7PmZFb z&JNSr?=Y@!Hi*0x$ZRY8JwtP!NT)k4Y@&&y(9eVcDiX_IFd;}@xAQ#Neuzm7Sz9~$ z+cCURjB3O6;6H?i9zkN-Y^AI1?u#}{` z*OiRBDD&DsJe=Nsce=FgOt?(&cTuNgRg2lDyw>k(_lbCi%$3>#X(uIf!A^KFdLXf- zjLctgXaY=rrF&2D*b7Sal^V{>ihfV%^XCHy`;j7K__=uH+AC%$+ z{9L=m+Pit+M()DSiSyf~GF>InBg-3symPB>Zl|J~5``t)jtMk(uu^3X^(V7hv$bd3 zuYK(2beu9esNSPj#6cphG3hGrDH6fViMlyMlYOCPD_=vmd38js867~cGa9An7${Hi zh5ByMxZ*EM)c%t!*eMYM!%&_Tz$-V$z2?U*nQe%UE-!JmdO#za-N7yf z^+Yk{?dhdCH{Eripb2f4yY?8BI=T^?EN94Hlk0*83LN$MLyi6T1q@!8#U!<1V$+s? z*B0OUJku09*FNUz!&~AnCR`woxHZ7Lryk}Hn+5Wa5+{83oorW(z5s}aeoRIEv$OO~ z&RfHdi}jz!6O;N=B5_JpN`<={6Ns*Pqgm})jJ=#QF*Mk$!QgxGn*YY-Wx}lpzDif- z{mjd;5zM8Q>jeD#7YEO{+sQR1+w=E1If&SQ%MAaosV63L*wUa8%BOT%_p}hk!&98n zz;eoz&6dCT@&Ks@LXlPn6FN(AqHn_9RJ)CbU5z@=(ozn6ZrKO3ww)7zlhwR0{s<_Q z3ta{@LP{L;KAg_K9-xDJ}(DFQ@-;MpyDHPCB$0^PLM6N3;%mC z#cW408D&pAEZ1Y{Rfg^4@)WY3B$3z78%B-N*ccvF1Uaow2n^7_Iz0KQkqF+zG|(2} zIag7SvC8GDUQ2Yw5~OkHV;gIll6I6w_s&L=u`qs0R3kJ^tdd^z+Y4;#7^LUX>VY$9QPNjXY;jZ%PN0J~nunvR5QjE4sLACBv#Wc4)`>dr2W1tL2DbNTY zxw@~E3!2-UOecRip<85!1L0|D8jiEZx1!@=FA?QC!l>40;~W8dQGdAFClzlDh_t8t zS<6V)^Xj2a!3)8WhVQB}J65lIt5p~t#qsOto4GM zuh~5@gX^%yZYa(w;QadH`$Vgoq#Dq}`Jxw!PRLos<0;s$BC8x&4 z1WbBLWgmMNQh#!C_zyBhGZY3c z^#lZ;-3uVFa|0Eh3YSpyt>YONk1W2ATTYI#u{4$1;l+9A;{Z`wIu(5>Or_&ysGlx& z-aVS?V31qAR$#ubH>hyiFtX(YG&ZH%e$3HH*e-CJwaM?0lTFCn3|~QnPd0Qw%|pl! zHP5#AcRf!N{Qy>57N#~VDekblfD@awP@V}zNe;W?+Gxc-ecV-=r0%m-cd1s&<4dLU zwxYx_UrbGsBE~8g5x>ov>$#XEX_-N(2j4j%pH53ng@GWlDl||9k9^6C*L);do3^W5 zorN$^OW&pWS}e6-t|bV=8gBug)38$C<$k`960Q~)NA>hPd!n?|k`g7{QA5+$Uy~KM z84=}Mu%asPlPo5*1NvKXI0YdX=*_i^M{FD8o32L^L{1o}_6yCx$ZLXf!RF1mhjE3a zO*(EJ==g;2jqq60sR|V+B)a?52K^PPSSB*(D6GW^a>j9Ja0(tR}&%L`%T?vA$9>ii`eKt zU$Uy9Fk@f6-@!)3&tMf`Is+|ABT;<-Wk<-62Zj1RnW38{K#l4X+2 zB9FzxIW(qw63|+R6zp7tAqk1U2-RUu1F!l!*Zth^_W0+^7_@f#)G~7G#->k=WGi6a z%>b1AQFbW7hAe)Yf4j`;1rcgag=X4ACo}*9uR^5Tt=`W3acPac7&X&JPJg#jy_(Wr z+q|^U7N;CaaSpXu)FOejAV0hc@kKetUw(`dwL8L~?>$=+hr$WiPSMdX7}DCX(Zjik z%!HQ#p0s?~9DHhk2;&X2hxAgCh%hU$Ez1IY$v;ta1;hu&C-NrMpv`BXU*XDOju6B~ zcX<3H`&C;BpE%W=MhRx&v|CtENh|8|3vUTmY%IS(UNOI1C)L8VRW|Sj1QVy)o5-eP z_i8~$`UP2=t9b4~(=q|!;T^4)_ptWE8gYv9SGV?tIO&4Oy4mph6%lub@|z#0hw&R~ zcR!j?oVY!!3>)@PuqVV@{Mif?#JR^%ZD35v!ghmf#TB_$`y(|9co@FkAOO4fY1a`x3wOa zi2dumYXC`%?IE^LP+MCL=J4$5+9wWn<&g`B#($YT+j#ktm;XVldp~gCM*e|>*SL2= zM{pPNuo%2%rC{3IOQ#QO+ioj)boXzr-Oi(@5Xd-!VCn^IF_r|$x}oI*EhfK=L_^g5vuv-sG^hg9jJm&<35#llozCCE3`9GKAaNG z-%+K&rQGupiOCT^>*fZ0#}7z#{Y6&zr?>K&+}rUQu4ZiZ723veINS*7ELycgOj3FH zR}JX{4i0!2zxyZW9JzBP`4@eQvMSC#91QQlUpA?}zi%HP-c$gC^9_s9W&7^``4i=H z`9W$ElozUY>zhw(jbYS;UKXqep@@3m^oNXjb=?S5QKk8?l+UB)i!$E;WC5&`XSI=m zQR`9yy{Rpw1*_H)Jaqt)4LN6r`nk{+4if(Gw4r(r62(1VJAP)uqBs)JOBE0%#0G;% zp#&EKg`YLso;0t6EIW=xeiAoRj46lR2ASQyyC$E{+;)(Lxstg?)f&c_K;=z@Y>7?R zUTrUi4H{c-j9hi+t2x;{v7-^CXile0ig$GtZg0ox_6L|9UZu)yz}q*nmt*&!!Kv&- z3?G(PC(WC@Blx^!xBGLh;yo^h#}Rcanx zPA|i$K%;0uSxPp`*%WCz9J1Lf>dTxwK6g-i;IRs?)p4_HSeDaI{ZG&urVF?VhFU-o z>9--r=mc_gTo&x$80>^87N4+NNZk+()TuV?gNFc;GoGt3DFqa^!5BgtcT zkKtIoEny)?za`me!x)l3HOxV31T-7`d!)9w=kV|Xk=u_P41gdZLH-3**E$#3Nph)hR!$I@rcXo=h0<+u@u^r{l`BSd8yE?>@bDSo9g;Ykvu+hErfUs zxW!1S6(p#8xGADLFJmJjhU&ZPSbTxMc8wEY;ZJ#K-rMh<_8dyweKCP0Zch=2ZE10} z{z)@Xb$0N4KnjLU-7o(!x+Q!o#H=U&+xD@iw(N@K3hb(2^I;r`pG?gAO&`sQ^C%~i z>X=`Xvu9%X zpR&M*E$1Tl5h2b`J&<%2;*H=>%KX59v4%fKV9+6vcDITT@#5L8w>l; z?ykuF&nq7jVK`oYACDP2{vB}j|2@d}f5&i$lPuB5Z7uA=lgFG0G4$hC;Fi+=dzJa* zxU0oaI}Hx1js=>p>hjRkKcF@V5MT|T8m!u|kLwVd4IgdJ z{MpDh9XnWN&+lC?iIL(+;!D`q*1Luv``h*PAV{-xMCkf~I7a|I#qqIgxQ5zLaMoK$ z)Atbw^MvvCw>&+<`-P8|X_p_4G14Wk@7z_$)l;4hx%#ROH-sO17-C)XD5hq;-o;x9-56TReH-@6?CqrZ-!h}G31`fwdbYArK5Lf)*#mPAoj ztm-ZGpTc*Pp3Q308H7$8X8#DPwa>t7ofHO_Z#Pn{*I??{bi$TPrvALv5;;-48@%YR zuXLOZzK-v>W%&7iJ_CDMIHk~}gD3hbbVR0f_ODXz*@yDQET9}yx(*;76|5DXr!pBP zk`1m}a=4u&Lp`Dy#MKpx+RY>K3EDWca z7yqQytAj6})a>=$#V~gANDA+fsyF(1?Zj`~#R1j*7S4qN55h3G7s%7UFsqG`k-PV@ zG!E=j1BFnFBcm!Bo)CyqeaP40>thiPSj)plzb$TwqiT0+6~@75VdRv*($_0>c@p?_P#=ynSxUEQt?Krp0nG2rf;ut!OM|IM&xVj!a z?aQJ1zTiFu*3;P1e)riv%^MTSrWKRuZQ3LRnc9Li-lY6u9<0GucB9uz4g+aRu`t%9 zwRQ&g&F7XxhT=E{p$x&ETvM~ImyCz3HFp%3QJJI_mZbLe+&+r zJOv5qO@5g9;$*mJo6$|7a)5D26^-4gaKk;mpoe9zjurTc!)3;w@Z>r9aVMhYWhp-*F~inL1^e!6Lxsrh>7oV4guC*UE%Ky2U(_gfVCoc z%1GG-jU8XE0Qg-C+_p1{3s7+nCRyB`dQ>dbkTnifYQ)T^ykI=Wb8j5%eky6tHpB9) zz=*$&FoM_$v)g!Cx`&-~ zT~^R93?>fOSI-4i1#X$0mWd!yznI@|L+&zaKFwVa%ZZiUy$>ITv!4!j^D8B#6I^gL zh#kJM#f%BTKq}-Q@feuUWhwq0)$EkWzlbIbk)-1Zd>Lx4;6o@luF@AQzR|0Vmm&G- z7iI<~VpX9*0|V2>%Ft*N9qf+?t=3?nDb0EEl~thh5nZ$rs`2DU+`r=cP(y`@<9BnXm6Q?KL(5JYRG=^pF{y&%WJBA#FKF8|P6qoiZ2NU3Qc@Lp!ZLc#4 zB4pgGiRN8a!$)F7Sb@;F9uqB{YAJfhOL3u9je>5LEd4u`|EJPE5AFQF%86eso;tDh zM>*8Rm2$ouSdR~+0|RDJ0eARY+v`Wo$O__7^$FQlV^hTVs+;ORPDfz#y-ePMpVtXA zv$Wg_A=O^!-nSnsSHQJW3qkqo79AIF8B(USW^qVE)9~~+8uv5J>87LKl9Y0K1P_KA07@8V@4^eOJSF}fvy}$yF|C-Ycfm@CO$n6n%6C0a za>qwI1{Wu!n=5HiWg+$rREm~__9d$F$TtPc>Qs^rnr325pW7xR`3jd22YP%i|1HeP_?Q58r65d!kl0GcNsf|ebSWHM zLN*Gw)jg=~6f&J^4F0;i;r=_*SkeirK?iG3L-WsL#+G{B5Bf;OZ?gI4=yM_~g8P&L z%sH*W@A;y$!w9=u@Cm1^N`e3C+?*PPmt--E4)Y96Y-4E3pLHZBwT=lHd-6ZLg&6-L zckBo~#O4Jw@Y+1q0VH}jePel5wDn#cQ!PUY2D@h5)k>o@qZHa51i#hlBLH4lKh zgi`qvSI&~WFf|2W<##`gc$y1M$)w=a$nwG-*<5W`SiG!*#b~wK}dE#&0Um zwsoa0X|zSY8u26k)Rq>v+xErmU*-|sk5`MwcQIxC>-TvA?M3HrnIC9WW|URFBg^^H z>VRu$S)A3STr?!t#Rl>DT4G?cb@}{bg}|*s(DvEN*BIk3gc=IpkTC0A1cq)DiJ1IW z$wr4CtsfP6llzZh5m$lpSFmS977v-;TY4syjU@KJBXSP|@($}q=&cxnnaLmz)yTZ8 zsvqQ>o+)eneJ!JgOy|8%vO-s;s9&hO+1{+Tr)_cZUX zF24x~Dr3q%Jm5ob;S*q8+rLGH`iq|!-D51kb-3BLJgm1I`Qg!DGldz{NkZ~~_0PW} zCrD7H61Pv@{C$oDMf+bs+5gtyR{c9O97&AkUQMfY@9p1K+22yy0;rPJ%nZlhok5EU z!kYi&y%|OtKE|}u3KTHZd5q|bTgP$|^zfBC@QUr~Abz_JCkaCloFHHLJ2-;SQ+^5( zCd)dx8tN-hxO33j`ET7V#a(KQ-^p8n}CGsh6^U`M4px+SNT6 z;NnNIxaDK%13u(y6CJVSypwzE#^-w{^T`v29mj&94L*{vVRnllCRT2X99EDHNG_6B zfP^rcx`FTB=&%nU1(K)zX&7Ve~~zQqU^VxhVd~5Buwt7 zSORXn2xI=tbpt-CYYE@EU-v|Ov%u3O z7gI8Q=AO;kU@ZJ>w z&|H=(Hv-!#2ODnmzvaF1q>qNm2HjIXnS?DdBud?fBu+ohg{aJ!55b{9W+`@W%O*K)63#>MX#bt{Rv26|84fp0t*~pVn9>S$yIout-$IzYCUss6^j(ZC zZ}!4QnmX%kiT=4V@Dj6TgoupU(2$<^T|1As1KCM85brBS<+ot5r1~Og@#irfE&J}A zG$gD7P=;nV{!~{*C!7$}3JZGC#o8JE?O5|5r(ODrZDJoRc7Szz zq1asa$p@Bd|1&Waew0aid(7ty5y;=Oi@qE}HFnHiqJXGN4x_?i4asX3O`xrAJLBZ8lYkryI;FuT}$T-UL=yS=^?L zDiS#C2o+763~u?iL+KFw$2{A;NFJA|HYd*NE&r3$%#mnI%!aDLKYVAp97@M)%^e@hfFcAd z<{oe(+(0WB2Ec6BiD63D=#SP4ljcT$c-=wYmS_nfm1mFEE96G2B-BTrmg5Risos9* z0c7HPHXmit|dX3f4iiU9-YsI?27h;g{RSy}=FQayfCl5JMp3=&Zv<%9a zqS!Cyywqvym~dQ#*&LKxidWQ8#9S_f@vR5=K>mxP5P;@rWqwsD%4vXQ@}sX|*jLXs z6El_a@FQJcx6QfOdCMwRseov9N*auKO+sWlBH@9Bs(oEtPGcFDLTWx5744`C*_$JO zIm(V-N3g=><|AND&DaRCZ1bfbz6olR_4Sp%&v`Xm9I-cY%vqP!2tpW#p@ot?H{Vk| z5t|g<`zoMTwcJhP!rrHoLqh(7ySnNEq0Np+WcAj*30F~*DO|u?o8cb&3B8TeSBn2rJbh)i$;pD8)9L;aJLF{QJU4{Tz0*BFjgGC=WabO72WRt4Mg z)xzYGgBQFXvB;%In(qrkclC$1i-<{o~kP4)$R$3G(6wgNj%jg z!B(Og!)Q(`w%OuIkzf@0qqsfM0?@H`O2AmYdf|}2_aIfP^9SWJhtT1XeARK!S3gz= z`%nBAMFIj;{F7R%G4pzEPky3A$^X>uH51u&+*GAcfdp5cl6?Lmd{T4Cb|KM?CLMM$ z$=hZtiCw}92nS|)erL)SZW0qc&s?TE_?UAKoh@)5V?o6hsW-9ne{PEKzj@_to$JL6 z>Qo6t-3iE)8$847pGp{=h(!T4oOs};0IS5yTPcP~%43SlcLvc@ldZ;A-xBeRqdMmPY|LX=;MGOn zvG9xz2ZddEBRaglH33??CLLAI%qFuritSizwO`bH5NjYrdmbAB?chu6iB`A zYiXl%XN}Zc)5RWgxI#q;c>qu7fT+Ka5y5R!$$9%Y34%kr4|#EDi!orQRKifkrmWHt zr7R>Dn{whaa`$l8@rqC1vpbW*bC1+oozP4(*(V9Yrt?q+^JC@44)FjYTWx<@?Mu1t z2D*3C!U-o{C}BH_jNlbNV)~NJxJKg;urm>0RlU>pRADfx$AAh6NRb@Np9^isdfJIF z3xc}?FBZ(YD4$DCCVx&wz%QKk7*bK!&%>o-`C!|{J@>>fRsnuz zPq}wPVIM_$p^_*9oZ$E__MN3mF)ZFuDDC5vX`1(E%G-2t(^VCinIDW!z&WV#5ewTp ziwa@-0b)~qpfiFqNzmiQoDBqGmduq*y&1}07JYfOviL@a_65@3Ed>1?CCgg*1n-OB z^b2URINyFy8sDp$a{AqVYp`dfiXegU?%GThWlI&->!n9F48=X3s2+cKS;4ipu1SY~ zo=qkz85QYV@9LbB-RGY5r#%~ynWnkp#KNOO4jyMRGL_=0W5c-G(j5?NAalPIo+JsO zsSOAPtnm3Qj2li?bsYNQJh8a-wgves(2w^JdB381cCP17f>e&3hi3ev4-#3e;iDnq#+e=FW~wuRX=yE;2T++nu;b3Vz!pneMHj_ zd3I|A1CMAQLau&M>POytt-@{f?M5>E7`d5Kb77=XRtNhgJGFP>9`!`HJuWo6#Y9ssT?a3{c7!GqvtYU!*Nxa8Emu*vjAq-f zI*+OU0K~Xai%GDmtgA+=6(BkrHHJ8>i|_eGt&;7a-*VsWp!xQdH>3)`W|e7bjty)S zG#%q*q0!cMh&B8W>XxZOOV4JJ>=G?pt3YkC4pn=^DoU2Tn8O(GR9>!}xa315xax^3 zMgB~6>U04m1Djt-RmJcxE{iLrUftrPvLBo0Le>8XAK}~h-+6PgTDn;oB5Gw0-w?3qkv z&ra4()>`*{UB4@ejAHXtw`jb-t~KceR546aKLNq~urgmyJL`;7A5%5BYrMpLIvSQ% zibclxO`}Q@2WPbGbj86B$A{4G%k_7=Dp~Ref#xRCY5v&T&PCFUX`FECwfS?}Q_u*Z zacHlDmewn`){~{i_*_6wv5dg!nXr8;9N z$HnSBp{m(HWj$@wq0sxVn_!Pc{({r2YK|N#8oN!OxlR z*sJKCmc@H%;L{~p^MVmXgZ|{a-R|p~IlKZAD6wjhFb2^vA7k)ngdCLY7#m;7qTN=T zJ-kmAn)_|`6f)!iBcnRtneiO`rN>6N_{v~Luy-2uy3%mPy7Of@Z#&y(%Jj9vrh8s} z{%zL8h5~&)%eV8;JLqYC6T2zi7>At)Rk48+k*ohp!I8$VPSL51?@O57GZ5DgLQx zL#h7Ji2Y}jX8)P9>`R55409dGJ=*B5@K&C}p9h5&| zfscNl=$f?wQ8*-#r6;a~|5Mw*QS_)Yo=|IRTX`4n_|TM-zUgNf0~{7B!?z6VW0j9b z5st?BHb4U^dpw}{vIL)idEI!VH6Gx>MDx0Y`m(I&Yx)tNjPq1u>HpjC;lp~Z{x*Xo zv6O`RiTO{~gyZ3C(UoTAegtD?4Rm{9K13^YsnE(wHb1z;QmG}FgU9BJ;@pIVc||)T zD806bMql>{AuaymZ7V7<1bI7(LNp!kBMLYiPokCZIC@48EU^#n7E>%fL%xB+{pzBJt?pW4A=F=e-^kn6LX1B#i;8Q5p{X(b>W}?^4M7<`zt^Q zk*QL=n&vpiD3dc=k>)k&*OPuxPAaVWEcrB;VFlM>)S*%ra+gjwE`oIGve@{Ow7HBZ zd>aXBWiXCCMj&dOy7iE3N8X-+%ETM*5`wNk9c2P}C?{DanYT5L9ER+K&Oa~+sgbH6 zhe40rX_X>DHc@?d{EfH{VXyt`+%_P=V~GWLE%cOCGgk7OK`bLlPQp^U;o}D|cO>&C z>_G{d_hpP17eK!Ph-85rp)twW{yT%iC!@{nVU-kIVFP+*h zl45THPxm$Q5S2+tJluW4viv)w!NHSP1MuTBF;aApsw#EmIgrYY8fw{Z#(-0 z74)89V@bA+RWDd7)w!M%_*Fk#{qjE}4Q0wk@ZeIrpAmUrE#c%1pwvQB*r|w!%UgCN zg|!l=XsS%yZ~!SwH*UZ*PRCzNnFfOwgfv_AJA$57``>?ZkBbw8XX{0oKo{I(D5tQs zXsPtfDDP?A-d)RASH%KjZ-B}XpZm^UAZ|wd2oq2rtdwoSojvU>>PmFNQfkb$YbE2f zNoj&Mpur4IY&Ho~jb5)qR7FVD!W+{^fBOY(4X4xz92joJ?Zi-uN}F7~OC*PUNi(U4Fekwv#s=B&?8Loh64gyaRQh|EAAym1C*8!sMZJNs>cgse3(+^O3>I-d zv}>$gX8p^!q#UN+J?k%~$Kcd`*_7DGcL6bTzkKt$8^=6CYxG8xhZ-U;#>REgNKGN{ zny5aLEx8fg#B>Tf?8NCmo?Cy{v0B}5rYD}af-Pn62ratvKe`oZ8uY(^DZ(FPiNeLl zqbrqsvS5X?|HLhf>M59Y8wsAabKYt%Kf%Ot`|l+Nm#?QKFfP?oD+aL8+(!at56?9_ zjBRUfvO@-r+9K0JtsgPX37tp^;9WA%7hn<~O_Gq^L2b;xg&8E|NZc)2d>aLJnmf^w zjNiznj?k&gDJwC7-;n(6Qy{-G!7Z{;+fLy(N-~+Uq??@t27{x7^qGP7{Hn{{m1mg^Arr6gnhrRwmGE*F^P4pdx&HlI z6j#8BjC+~=nThjl7WG{+524vzb>^^tgX$6c{teZ0O|QhvQoZ~7s&=N7LBTA6W~fJ( zB_6nE8tnD2K!8=?ej+QRl-&$ICpCtsar;g=oLh9Xqu;RVpgre$@`Ga_pzHw|5qQ{i zl;j>@1QI*`{XkuVfu%q>Pxx9J@e^wxA^csbpwiG{XDy!bYg zm!7wX7@5e)Z9pkL6P+CN>sz9(g3ja~@8PHsd}l*hSa_=G4xoayUFFhc$cb_PTW7u1 z_^-+O)vH+{JX0R|HIY>&lm&j6?0ABF*nB!7gS5a%?QSvt0Bny+_;On8D&qkKX;1^) zp6~oktILVgu!;sr@cl<|?gG6)YjhnJCzB8$BKU}WJ`6;7$&qJLkt+=B6CSS0h^c@f zQ%)+Kenb6zQJ2orfjfB%kvE?mZdi&H0f??ss&4!o2b~=W_HBX+_~#+%YnH#(ARE!F z1>C;3fAp80>1k5~F*Hr6Kr(&O!=s5E}e;CrIWvE?NFcH8Uu zJOFdJH$5$nVZK)WTc1G^#ndW|%DW@a3{Ql0+1<5R!vx6vzc$><9J#4vUM2!i`g6*# zevk&fQ4Z9Zl0@_Mia?6*ipf*%?EH3hHnvU`71=4(KCdhs_@$$^Ld)s7WoP^4V1{Bv zHhT0opI`mJWl;TeHqfHw6hrx3`Ek>sd63v7F;|`^J}^!Er4adVVGkWafA2+;S4TK2 z`@RaQ&sJAmhKY2Q!$*adhJF6!)H(*gB8i3e(T@MBW3;G&KmG!~rikhmirb2f|A3hbv@p#!C%eAabbI_p#cTXic@eL%Uq1#C}nSw*pLtaB)Q)Q>86qw zXVpLN0A*XXQ@h-6czc5SMS*fdXGQfO4q!W%O#EIEU`r82!(T&!yr@~6?*Gzdd9R6Tu8*_)xh z@j_g?kdLu0=Ydjwrt>8KZif4Ov=!iaLv||qw_u0*qiBESLnpKdr~c4^%mYHdQ-)g! zude&NIqLSYsA;*n!l1YU=ph=gk}q;ucAV0voN(u-cd05m=7WoH+WO0oqED})MqTfM z;cmmX|Ja5jEY$BGp?I8ur$)(ryUIwWQ!7%pFu1!>CIq^>n8PwK5iGiawI@uTIL71ywg{*x6OyAFUkH;>`$zp?gz)Ix5nSkJ5;-V^W( z&>%^z9M<5{dQ)6+|7MDCKDuRy6|aQx4)pBwjkm@`%+}yX z)^-E@O21c%pu)PhsBM^9zsIPm;YaxpOW#r#={ro%JPz*w-D^Ud7VybzjjIkrN@7w5 zhVB8*c3eCjrbOEg9JQhTq{frj@yhBndihsA3R!V}TZ~`*R7=zFHVsEpfXG#cHi z$c$wWLyhrI*7+{mJJ`eV3MTJ(8-B8se4qXO&AE8S3pkTyhp@!pAwWe>h*-f6I#+6u zo~M5O4zP?B(ry{Uboa{G?sLjR`*ko`BTkU1aBmW7ByI#ry>oOdIBbf*Gi}vZ=)$deR-IC*|Tr1h`p0=TQZ|-6G?4mKP#5k~ zbLc?2`$IZ3hcfGiA<({GeZkN2D-WVAh-iaetNLk`RcF?=n+{ItL(7ucON}>Ce#^DD zK80)wr1_iBKTfzi%M&r+xuXi187^%ACU0HrAuw_hymh ztUNuj7uGT9DKZBywlDJoYHno71jXa0vjZnN8iIX8`hAI_Tpwb>uBT_(U)ZrPJ+~c3 z)eCxG{~T8wVnm2pSaWZP#J^B~+2>ql~l%ML!XMO>K>dp{+c0 zeeCBbVcUe5?Ry0}?uxqk%b89Dp9Cd^>0G{eOO4+-QQ_e1@U+@`b5Hgp^4_hDvPovx z|xpQ|b3jm}auTi)-aZ@%HcH7@=M?>Lb#yp z!(H*zXzlT;>aJ)OYf?UDWzRqknlM50YwXYfbzQZS0w)u8B-wWMVHFKs;)ASN@lgrK zDU8~KgwbwDF-$ZFVV5wW`?gvEPvJIWbFv1H^dvoIuGzCSj+@!S`TLk8qk>M(q=mv( zWD6|)D@teqo+Br8^3s$sL7DGerVVkzE6#U%zj_)z)XcJqk6f9R)vzDI+~i;>+%Ss(8+@g}1Y=Ei6T12P_uLHI#!W4rSRXP9xRZ=pSd{J=-{@ zVHGDTnPE%P=r~qLZT|b86aHNd&w=9%x3m~9KMOMF7>w>@^tW`ZtK0waFt&anX!KM*J2MW(|=ea=1#kd(ryvVvOlRq4Y%Afce6( zX(W6J`EcvJzk#^aZIB$J(|w0o%}Ro3?>@UotDg`iRlJ_Xy))kW+-7+*{-3SXkk2)y zJ(d2EQBGfIF~rLgx)bn>*h!~ig-dO7wye(w;S$M1E_Ac9*JDdQ(mFNvV`ZhPTT8}P+D);rrR{rnx2Y?;z~GggR&MAthxHT$%-h=a~*MYQl}h<6X?Tm@x^VqFR3f z_I{cdM16g;p96!%M3FqyWJ-zF$Yp{gh0R72=c68`X0;ZxMZxDu56X@YoIrsNJW2Ir zMVEf@4=3G}Ok0lP_jK%Et;U*hc1QfcHSaz>ZT{VW$$)?TS zvNB^9#*wAQNedf+NPkj33``%2*60dpa~{C;b&2nBdkk}=i5D6sQ&lMBEu9;y3|4dV|_ba!DtGl&fy~^kSkyDXLibEeE2C#rC3Rn+m0DJ0_c!Yv1sl(yQ!N z5K?GN?g@-~G*?)X^m%tPJ2qkKXgjm(C0VCUs#{B9s$|4!=gLt&_z=z_)M-fl;@INX zaN^Bog>rgQEs@L^o7XZ#nA4}8!(S!sge0-#BLY$!eY$)(R}1I;URpZ?_9#c1N>%HE zhe*U>w5ax5%V)xsrTtsO3}}WK!5Vff^Q6g-FvVw@wsUN^pOnuJlM{3zJf?^gW$k9_ z0@ubYT3y~_N~d9^ynQMzr<5%Hrk3kfS~3#ly$8&X_kbqb%2gw;1|QJD&Xr2rrPl2; z3Ig?gOZWh0d@h?zhfVrr08l7)WhCJI*0b4V*}+qz7zScJAA1ltGZY$236H-7f3zH9NySTj#L%iYKP$Wby~ zj+%XA`ob=xDgUSe3>5vI+T_c2oI)>pQexm4nU>F-NP&P<*-dSroQ@jQ%G{X^$7~c` z7yWzre1J3dlZ|G6Jh__M?b_$%Z>AA`5l3ZNAx&t`vp;X*2RE^S7rUBiz+4;4EVf!Tb-XcV4S0q& zpDUcWj^z>Z468F?J&HB4ZdCKuKhT`WpZ?iUaU8A6n27bAlsIiB8 zmWS&Vkkb^S5W{N=;PMjwBlpHGKB5;u8?=B76i?Cb6#4$~^oYGzVIBR_5(C&gys%$6 zB^m|rhPqviMOie&Q;2*F-_&uiQ)fj)g#G*R>g|A&X_-6uq{PxUMa{SQ&eEBv4 if;g)Gs|OFw3qq}RRhQ)4x@VWy_*hL(wNlyP<$nPozQJz* diff --git a/docs/images/rancher-desktop-settings.png b/docs/images/rancher-desktop-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..540804b86f6d0be8231582c8f5a85d27d72986f5 GIT binary patch literal 16029 zcmd73cT|&G+vk5P0xC_#PO||jQlz&K6)RopAyh>=A@l$tAR=%qh)1M%={3|)10o7X zDWSInA{_!GKnMXsl8NV;_bKzfGxN-E{bsHCBP;v9SN7h?&fZt~T;KbZk--DLqvwwT z0KoU?;ay_@IIzWjMIGj1--*%my~Tbz;A{Ng4p81Jyv)8hvEAK|}j;?L(LBnlA5p2cGU*CyL9~YF{{{ zRscau=PUEL^rz?SGOcuR?#x!gR4cMqOH%T?nxv#xRZ#25#KLN4HMY%Pi%y$t#lRnH zw>$3%)RIRYt9_f_OKoj@IJ>rzC{V%}hj(@wiqexq*C!l{lY=wTQzPQkw+9&mZv~d0 zlKDacny~4Vi~1mfkV4nK5uM&_*>R<(JoyvFuq7*#q);+}+^}uU_wBY7qb5k1?-H)S z1cB!Yua0a*F-JzsRoDyK@yVMc3jk-^5BmYYrRTS}feQ!!YTDl_sAo}1EVgFtFdnv4 zx}dyyZmfa2-KgyccY#0vcwcfLT#Fq3?K+1J>GBau+nOoz@gJ}6 zXfq5{q)@B$?va#5{L=4yc=EU!Op`!YK2ek@)ybH!B%{EHn4>ce2R@&>!BE>`h9Y+- zXidkLk>v9z$1wlL14f&@bxjSM3DQ0&Zg@NiJOERMM)g`zV~T?Xr5tX%w9++{%AQoc z-V9dsX?&rz(eMs0tF(_qXM1cn5rrCS2R$5U@;1c$gMdNoRyZ?ZE6-grNERIOJt+7| z!|q0FsLz1c({E`zyPNjoZ_PsQ)Dg2XM0|T1b;?wh;lnCS=v(2p&lUz8;lz;w(Z>%) zSfUoLKc3M}0A7$hzO7H*p$K}HL?OyM+h!|XOp*_loG|%dDlDT;ZzO=3+TuOTR~*pO zm`=^!gf&xFAm#4XmZQAi=Shn-P61Cbx%Vl5D5a!(rZ1iteDnIn(QuX)m0GPm80Fse0}+N-l~tHB9BC1{q<+1SCD=F39CI(%_!^;UAOsngU+c$M#aY~mT$me>QC{W5W5 zk-zJ8j=MZ1G#cw2y?rvop8p@p1HTdt>p+8J1*VEzAA7PYx`BMJam5V z?j!mL3@>yYoa)b?>S&Y9EQ$)_W!M{zTvieGUZJ`p^Hkd9R`60t=g;aAauVQALNktG z%Tqf-pu7l^7KeP43Uu9rx2h+dRT$-(?z-JmMYk0nH>U1UAuzD75p(-=4bG!aQG-w( zHWw;VdNgrPI}?kFkFB?6;ZqQC{1qQsWBoF{eFj3wwoVq^TXd1&hE*oUcb9qKLdrlQ zK4zHZt!EcHW8v8iHWU^0kV6di$b(hgWPOF+@s#E}R~VowdL8shvsOPF-fD+y}b=u!7B>GH>jjj6EwyuI{E z;?S|O2X#H`YI}&*<8GCy5icIRm~tUJ zMMV5w^iSiWA7OnAx4vgq@(g-=O2T6vhOsnmP3B_tisR5x3ZhV|#=t2tGg7DV9?k8w z>#)T6j}aaUp-0(%C)jOND3!V1^yrJ^*jc{9beXhcW%9 z0shwPz);ein-T$bm-F!5`NY39Kh5z2w+_vnT&gVdzb+#qBBzI0;8Mb4EDbyGFLIU* zL3`80Q^kAlSyQLr=Qlv=iQbIeG}+>{Fz_cj3panByl@ck%0KrwD-$uUX9IG62R4-*g4#h!CJA;W zoZ_J1!2a{Ku_MqKho&uz{>>uKTIDeR%F`j;&8#_iQ!?Ay2W^J&GiHJyjn7hoDlONV z?iXz{3*th97%wO;@f?8tTb+XXBYBQfgt)Lx=0gn5&)2)?G)(0HYd{nfh$y?>Od+Yb z%pR|MOD#yszQ;ZsslkMMPQkmzwYYw>+6@ZrTL~>tH!y1Q z9hS^vk9G`L8O}r(WpC<)?FOZ8m0EQKQy0_SV#pNU9_E(F#LnO--db}1oE_+sG@Ot- zZZf$^b>C`t@NBq(S{{F=^oo`qT(&@%QmzoV6P4NNiIU2h2Y|;4*Tb1~LjKEi%3O{# zB!p`0kD;|Ldy?_=GiEE!ty?&dTUmPcZrKCH?Bd6%XizSi72061@1E|&T08F_lx_N{ zwZ%6YU2apl9I%y7Ke4#JXn;16#~X}!))JabEs!l%i%gpA9&XRLR>s>Gfldh;9a_!| z)6lIe3wvnQI$78nx+sIJT{tg2rCyQwxw@%4yp4d*B{KrhE$g*>jVxaUD!oh^va^9& z`kqT8^(W+wx@$e6$uL5+tRe+G$-=h!4cg)- zSm&zuInV6tvyg@@M2RRy3ro^YhTLlZ1Ii$*c*h--RNoUSupYD9?Qxzwba`wF?B8@G zd=)Ji@{UKVxtJx1s(PE+U<*Uj{@~`{nGFXsTUfL(Khy!>52dQpdoa7<5>(4+ zvEW9P72QnR+>wZZQjPP}x;VT~cqAW0T~dFs)&gEMyK>Vepz98U+9ZghL~ST26+no= zHMknr=s#uyJom+P{iqF|SLQzFq;6^V41U^;qte&W-9`b9wNBrZm%n4KK?zo#{V{QI z*ww`DV)K|?T&QAUlb9)8MN~y0VL4&<_NzAkVXlH{R}XVls|0P%<^3y{AA^=|kL| z$}e#yZe|Bl9VtON&hBk|;_4NR<`&X>uSG-mf49x++{$tt@q4-EXt}PWd%~pO zgSw1!ZiAP1G-nA4mSK|>x1pJFPgD6NY@)b<-!r}(-tt{^Y14`GimfYD>&df6G55Xw z^Dyr;?zNz2^)j38D!neEwxGiko5tPS#lT6k^Y(+LzFnPq1Lgg7T&s)j#G~lc;l&_* zYyd5H6?=rbkKa#LwzaK1035T7Jic@uW%-6xkh1X5in!>;JOkPC>XfO4dG`M>v? zH9WH0gX7+KsP0a@Gf_8$!>kLdNTL^Y5U6((xuJD7Dyt$5{#r+w%4;a@JVQB zJ@D1(8<}LgIsxGK(t}6*X46kWn3J6~)G+fEd?w7K-PyCRhZaB_{}AbhYcNdDtX3lO z&bezCjN^y*`VEx}mw&K5$4DMzrzkIYeL1c%cvpLZGUPV=EL2Bpe8&~C1q}mtg|-Y6 zup>4DX|hF>PNABgPwT9sGM)GBq$%5!L2;~0*P4F{EBQ2IeXg^{4d>vNnz~|e5a@V) z3E`0Z_Y~xdYc|{YrX61bfV)8WFCTd9AI-Oj*}7J^>;d5OZ%U*zxR1b1cGjY%S96NAG{iu&N+d@t>{M6Z%phnd7?Dmd zz?tjx7$$wLS*-2}uv*~e+&>}x+rSc*r_}nx_JvQbk3Ow}S0?VeB4RUCP!5LhLePF_ zabL_z&thP3MF3TF4PusuMx4M&CAZ$yF9{G=XEZ<&I#P;Ki4o@k=R*fYI7>R*L1dHE z1UI*guAZsg)itN4+iE!ec|XANjhru|XES{87jK z8k?RO7v_qJ&dl$f%yVqC&W~&XJMOmhEk`DI;cG-1HA5Q#fb0B|EbjEz@=Y?TlI3xa zXQI0?&Z1TxHYFxB@X}kw*O@$)557-d>m`t%*%9_uQ;QZZTU^J)wYHA7mSh#zbE@^P9lt%tPP(O@_Z(yD?fcCy$)9X~J9}6DQVo%;!QqQP6L_ zeKXfIn#Hc53P>*2mxYOHX-gg-A53i{{BXZvEWe*!f0NTm4Sys!c^0r&oSV7>pYK9P zo+@W=#SFb`79Hr3UFqW%$^wuJuQr2bPG?S4Z8%0<_iyqE9H4ey8(opG5lT~+t%Q>I z>~L=&(i`s{w6z3LjDPGs8s$m7IH}YVz{s8du+4@k{eSpo!9o3(ddfzI(T7xhvnLk# zHP0+nf?ko2+SN%ZHM#q8Y;We?SL)PYDULty*%59iIr$PbTI*;?p0E$IMfiJ_RU%nm z(a?r!Sb^Hvo8+nG1p#x;_3|^e@xRH`=c_4Iq)O?=l_SvN=E0I2zU|{M*lYYW&oK4fYyYPPIf&Vn1R%WNURWq@cd81OWImF74oCQ+U)7BJR%ZW&fR< z(ktB2&=}j&s)qKL)~?Cp<^^zRlGi@n!BDJ`2BW3iJ%YD&Pb-@eB~yAIK`{t=&{2&; z2LZX?g%2WQMbWfe{&e^@7umYz2=U$Ixr85voN#9I=B*is9qMa_h-mQv;Huv^cO$$E z)|mRFzCzdw3cJqwAcydcy&WVy(_P*`^*lC1Dpk5=^p21@i~O9PwI`P)p7AY|Jx59v zuixN|%^4zZ;*S;KMN+)T8U8!Cr|3Ggp3JCZdNdj|1GNl!Pj?YG=JzL$==&$*Cz{rF zl(YO=AC$T3l1R_(D^i~yq5&vgY6~_1d;mCm&yur|rAM5LHo3y1-Z>m4qpwi5E%{<# zpSQYY?OKLUPu-C&o9O`z2DxBg*Cl)*r2TjupVd=4c^uD70@chG>&s%mUEhtq(Ym5~ zp+be@T4r{~?L8n+1*ingY16MEP#bS)zqXFT3!yGvtgV$+ZRp--Al5fAP5-;Z=bIy5 z4(EWgNHwYtHvmLN{*{s5ubt!nt>Gh{MPVUK+*z~r{GzOM=9YPDYRVL@f*Xr7> zR)ZmKS=BCm&gTj|(tam}g%)(t3}bq5n1)A^RlvEXQk%|l9>Dn$+sbvKyA_UXng)n8 z$pC4u*hWg&$_d*MqwspNBzpu@$d?HlTIA*}p)MV%dsuF;|B%MlAVQx~YsNC8yP2R| zhNmL??=Qh1Tgmiu_&Dz|qz3g}7%Th5gxH1a?9tLZAd3nzAq7O1+Y4sZS1?=)-#G6t z9sDzVz2eTOp_fAELBUO$|JP=$cW37yf$vkrx0==_FHe5HyGO#`-CP-P94!~EdsxYeCZS=Vza-#x878=lalslJg5K`SkVDe6JoC)%842<{1FjIDq0)s1uI52sKy znOK}{g@8E`o|NP)b*!z`WB_fvEpqE1`!B1J>YAFj73V#*a9PlV&hPq%ROhJ8laAKi z%iw2vKRs4k?!XV_?KOV*s%c1Ul=w>K!y2w1{Bh`MMVW>ZX&6a3zjwijRi~HKRVv6& zdCS)V3r$K)de5tsc!ZqGQ0^i%e91hc1*)W7^f#;bCpFs&_Uv%MtHS!QD$_YmDSQq> zbJ=SRa+$}#B0h2BN8nQg;R=s2cWuoicx3VdhVS`Fwr3s*a>nS}?T_6{*(tAUx^`KB z!VvnP@s0E1$*U;+nvY#l9z3*rL8qPy-Jdq!`btYaU68tX^CES;uW?vn&R}(zd0>7% zf;f@dy!tiP4hF$ES*m1oqe+a@Zh?d!_r;NZLG-r}*v{uK+s_1|&6C{INAxND z_l*T^-R}TrriZ+*hO9Y>#m;X{zbyr4TIP)&s&k!|On_|}91yM>?1Bw&z-_Zh_K0>< z`R5Af!r#51?n_Bh=TNqT&jjZPm<@U43QSfcQXUbt+Te!JQd2!!;pn6yRW>V|@>#b3 zYt~(nB%@D9Ha_?U9*(abtZYkQM+s!BS2D_EwTi{C1a9>wY9TF0^2C{HJGt{c$I@)q zb*M~bw_vd!t3IHgymzy5vL-iNV$Tqj|129kvC!ddWzaJ7`tAdHD~SLUa@riK7fX_p z{@%BFWKgjyBbEHn(^XVO8uuiR$KPtt(2X(ip$>6QWvnH>FvRKAHu<5}Xl8#4?{zv> zrGK^SD<)RLF4Z%Ew!Qqd?LdLFgth8v*-?)BVi^2QV%6F_vmYjU-V3xVz8EuFBFRG8 z22l(>b%M8BNZ`FyQ7?>5Klv;KzdH za?^1W)i|Nb75@IN$s`x-qty90eqdnBo)$O=y-EjlnIMWrO;c~JVYG(2kcCKvC#f|p zlZmb=yW^>TnAJvvl0pq3p{{xD!dXHTfuj|%@Or0qLmSz$-W&)E7`-VIYX1bXH?IIQ z?um?b%h@g6SiXi?K5*sO(pmp;uDvylcfm9#?6np zL!+ZB0vbZY)|Lg*7|$Sfu_pco8&oznHtI}FWlP3=QOTFoP&cctdaT5;kbIgZC_R98 zv#~jUC@jY_RV?_>Ot+)Nn2JkyvH$>7B~sP4K2$9)w5Ah}L%k-%50{!MQMTpKO$0M))+jhnM)F-4?i{cl_o9O73(; z@O#VPmrrs7w@5xmx4gzdk3DJ5-!yv1PlxC-tmDMqGc7?PQ+MpQ zTeG$$ec60@0kODXcl2Nsv zn;n&xM;u@^ipufbgshgz;0v5-7uoKWp{0P+G3IhdK9{8@)f)pA&p;T z4c@iv&5J~sbh3cTB-o1$Wm3;1(Y@yK)h@ujOC%EH&JhH88x zPR|*WlnykmKxh}T818v{=VYEiFAV=W9eC{*+eP`8lNQ}kc9N5`BR0qJ7m7^Y^vs>6 zd1d#;JMGJyaSE{ON+fQwOLHwE9}r7@|6cAYJf(1^80uLtk!kR?v{41IQqwKF@g>BK z;pfk_LjG9%;ZDOnGsEtUMd~FIvm^x~;Py``Bc^|7#QuT~KqU`onf7VR3t} zXJdYC_BF#fL?dhRJNhoQ7Uc9r)qtv*D)lRgFZ#AWCRq$wm z18vlBB1vN-UZ1|M3BW)tvpMtS?h7_ zT516iE$d`jJiO<_b1C#AOt`ZYS6h{BXUolyM;DKA-s9urW0aMZd7k_eoPp*7a$^4l zjQtZM`*)h3e}x!64T<#cabZJUsOD?}W|x~vqcs%)@6$hhx|EI_(ePsiExPRQ)HN0L z-_2s@0YXd4-FEv_-C#0eDi5CSo6r#><>Slt#4yY-YLpOY(i*hvk0F1d-BllYVCqAL zqzB$`2>A{4qSKK7dcJf?T;_^qGsvx$E*KoTU33BmQCUaaZ12fle6VPdLM}k`Ty0%k zs+9H>T3BqMdwdc8{QDT;7~Se=n8_+k_v8HOC3bzQ`pBDNvl!y)ikV%=ShfVcc`+o~ zh2|u!wQB2JT=xJw)@t&@U{E2Ygw5}^CRaU7n~_z&B%d=vs|= z)7x%u#?8bAumb35^qO?F#NzYq?aNdKhAcINQwYIG zD6=?TL1Bj>v?=8*x4a>!fS_tmeBOkAnUymOGF)1$pXQ97Hfu3W?5rCvF&O4QT)FV$ z9MST`jW|f&*_XRAY|L5g#Q4&kAn<*S{s`4j^{BBEiH?^pmcIz9&6y~3Z)tCEf~*HA z>}vr)fn7qlsEJ|6VwJwGSGucOIsW){`UD^!o_l)jb)7I@b$9;mZA9xGm5Jx-_*qDH z#6}l=8fs?)3VGDz#Ax}d{+DeQOnML-lw*^cSPXIv%d_NxE}?kLIE~Ra3k{@Y1Zq7d z!}Vu;oh}xTB{3<~o{i6${?MFVSpCF@eG#WUBmfw+-r&I8bu__uJrOa%1{5t%4Ec_o zDe)+Gy{7d?rnzmswTIQ`248L|w29rZF98({&VA0RlYXzOx#glN-9@EvG0xa*p|n?);B28KMNt&FF0@GFe81xmTg?od5anQgu1Di8`2h9M0oSP}@4Mn~c&KWv zI23GROy0$R?1q`+tP!@LjdZ@kfH7JXXvFuAO~zciODOv%@Bg^i7n9s|l6*YfCvh61**A$9$2{rqSvDoDWc?cZqMr&9^sb@@z*NzRKTXj5}-ACa| zJ_wGa9cQ9Z&j)!Bc*ekf0az4m3fuPG$@WB@!ge}8q_bx${54z1j4g?sN=$Wu5~CY{ z&t9LHxDQr5Y)Qe%lLtkvKD_zu=uXZ3(nQ;nx3Vwxc{}-ts0xZG59)?~ve%L9yFyB6 zJU4j{w&Unvm8z&T6z(HeS>`U^`aPDG++Js3@PxdY^eFm4b$Z99qJ;;bT6WkkEy%;m z(JO+@cFZP@w=$W1dmJ15F-48$SUFtRs@CClS)su=5n~*4T0M4Re!qa2Zan3fbe=h2 zW`B}_V%0)WEqf_Kx)p=W4Ka(RN(G+qcM7lJ&TT(9ByOyko%ehSLDaaL#ZR1;Ao(rX z=^tw}9jL^WsyCb0nKd2J{?o;hu4?VL*?fqV!Cw$Tvq}3T$$hZMBMH~X{3?0+N@ODv zS}?vFpgMSL>GzWe+UK420Abm$5yqSG+ZR=m@yoqhQWqQ>{NUg%(MAQEbfLxN6DqDo z=VaV79qmj&xYn(~s#B4HQ14>(-4UPU8|HDElxXhjP{zASqd|c?7MdhVgy2}{%`XTu7t(TeQXYhP-lhx<&*P{EXiW~#T2GO5g zKb$8z2Pat_QooeX&Yifh$K-A|mWwxpq;m)@n6N4Yz=z7r9w5;kb`?cJ5MtIB2kZ1vT-b;+e5Y!JG*wLF9wB~NFDiHbo%9gpJ8buV{7yiH<@Te z|Dk57sq(p1OLNIo#U;u4N|4of65CGx3PBxi`ui7nIOvRLo#Mu28)RdJ5fdTYq*|21 zkS+mb|1#0ABA$Qnj$wnMw72%T)+^wjw*XZ>kN26&Pdtw={eFSPf1gR+b5 zr-`0Cc|C%zlC&YqLHRPY@`tDHk0QrKJ#F=xGLLb}R9gda%3-2bX2VMumAL=wo+tc&*^#?b{tM@<38Ct_w&%ICF8rU>Ew8HHyLT^mr7Tp13%Kn3w|Iq}DXBVV zQu#5=j#N)x;C?SNe~gfDm0kby>IIX984G!%RHA!pP9DGg-BsA{4C%_&Yuk0=KYRiw zCTz=6Ln0tTqW#snD6hdZqyVwX5Umq$H%vke7mw+ST4x5}L*vau~v zuOUIRKZS(CTi|QYpv_lOv5^(lY^3r&T{9l9|7WUPSocfKY;Lx^D>3>OTspwY$9etTD4tRm0NZQ4Hgca(90mzt*DB$~nYn3Nm5W7EceR zrv-a)0Jk#cM3*F9%BFhUabNUdtUUaJ*SS7?rer%|exR4U;);rA*swrf%2?+zx9)^F z)Zf!|X<(@fHr8GHt*JiWpo^MhyMAy|_(n*{@Jni*G z)Fzo9zg_*{MA=>&Z$k$355#P&O9RjLobM_C%o&QRf8)&dwCZ=g!vNcPEqBm;*1*ivGmp-g~Xdl}?Z)nlm5~f}Ftkq&=Ri4kEx$8;}*>!;Q3lnWTZP)5S zVvfwau9`)QO>653#u8zxyJwnPk)3O{ysa5)-kC{t7KQ{_8~9|rlRf}!!mMF51@=7S z357?f>2`e{a05)eQ<-b>gio_ZC;kR<`8z5F4X;{(tmHb?bw5uX8H?Z?{KCkZ^sMMM z3*Kr}x0#DvIXpg4KVG1n$%}?Y8S1dqaUB)$hhZA9?cwrj{QH%0@$PB;kPKFG{e3Y& z4)Xdsfpvxfi~K+Hhpe*}(aX>Eqx{(sS;d+ey>zl4#TSM#Oc z=&%W7l90gaV|VYO*KbA(yY$cLjJj2?5<#A&$C4OW8gt8YuxAQ>LX=pOH`*f>UOt?R z!~#b-*yWlpQ6Xh1i{-=FEsiPk`R}f=o!qMJf<^qqHmw+i<J^8(Db;|sy99-?!S^e1PyMk@h3KzK)zfPU$_6CsvT@k8+UDH z)80YLC>^tOdqR5%;oH3KaQSJopcSKF?v9sHQBk4xiXd8-U6Vz!dOr(eC9}%vP7q`; zWIfkd-JEB(!)m*Fj_!_wZN|dd*m}2{B~7f7Y)8!Qw0|6WUUmf&-5G|R^FKokBi{?d zFQRHW0S1vT*l32n% z9JvX09za~_fj3i0WLB~er_qi}c8-1RD0bcI^?yhs%t?Kl_LBoajnKTI{g`@c{}oUPe{VofamPKXAJZC;(O{2L+~SdASj`Zix4 z35_bE4i1mkwc%*t^tmvDNP@!^g6#7bx3hBWhf4_sEiFj5L1X=%TD<0Aa>#Z-wau9q zZ2WUcg!FwEnE^h3y{M@zVI0SHVyw@ViaXbO zdyG&p(HDM8&uXMLi6d6cfieIFA};may#MmfB=v^uU%aMakIifHG&L)nbYjm(?8ZyG zO`NLW1`}7>Fk> z3y~+*ID;&(>Y%fkwk6IZDg~ed@D*6*2r+qQF)jO>NdT{{(&3N2<~{hVL`0~kDTlq^ zsc~D<-v~|XKl9}9|Cd3{wT7IZV+jp>6kh^T`N{tfi~Ox>%?=%aKhMxppN3g|dVA|Z zTjgT6Ycj{5lJwLQRHo{of0k$cJLu_F*5x}-C#nifzkTzc7+8_WBeH8UZ*+$z);di1 zlv@!ofRA#<{~0+1!gPIBJd728UK4~q2L-+{Yf^p<4U(ywdDP|UBgjjriz{uQB+&{09@VoQRs`oqG$ zw0L8Bzk{dnUww|-Lq_6@vQtalsl3t|RobZwcB||TZoiaOPQkB)s<&N6i?7#8mwL?t zUVF!v&Qco9M~lbzp{UI1UT?`v?O14;$?$Zodd(#yAfN(n6IKnxq2dGh%}2O@Dc?KC zMw;{m%0IZKlYJNK5dJQhn)(oS;c35PZ<&Z!HJnxsz z2oNcWBYdiiI<4MO^BeX6?K%j-)NpB_w`HCdu3f)AUy`2eR=EaZ)@ndVr9OX^e4?;%7sPK_P$RO$cgxU8^4gcy!n;cO^xf4!y| zWr6fuvUZgy!ygwT<5UgBnJfqw>P6zFm&gzssWm^goDS)xVJ!qc!(Ovr#hAuHR$RD3@<%Iq2y~|AB=Z*P_{cs=79y07CPLu*pigL`9-&0@x&l9jg%g z;w=6B-ne#M0(YzQNd7o*QuLt6AIC{WwzWU>hi+1NuNL9t5e32W{9A1LSGS@_RQ@9T zYgLXPKvS)Yxh2_AVh1uEJt+lnoF$Z^P|16j5yYu&l0RLro z|66zK6E*JJ$k2SiL7TC`yYVVpO)9J`CNoq;3G<)8J>cb(9r^BsL;Lc4B3uKp4MS^2Q$Q3io!B)u=1t7Ub2 z)RK%O<_tp+|FI%sVtqHdh7cqEv2daHRHN49^ zL5kc|Q8o&)c|-g$`LHE0bM~=F9ZJ#~r9s*+d=Xa5Ah->2P3CfYCNJazR~2j6sq(5C z#iJcxwZaQ;ndF-05O^7VJZkr9^3KMoSIA~cuwd!-=gXCZoKp*eFUXQ77l00~gCfuU z_V0agQzbbAZC2mb>8oqMV z5`xrC9GZEBnE+=+B8+Shaf#_W8!Kilqc>JM6cQkp#N5PascWh8XOPWbQypovy$RQe zR>>}oR}6s$xzf zFuzvHTNT?GCZa$w)*+(1r`)GTr4>ps0zoT!iri8!)rcvd_QFkopWU~4*k3_QX^rig zNSuBW(*8|vZAQu+M%lW;%Wr!|KA+p eZO{NqfKR_#z~XK?ll@3J@aUew-SRv3Fa8_d*+Sm{ literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 01c08095..6b6077f2 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,24 +2,36 @@ ## Description -This repository contains a kubernetes dev infrastructure, providing both crosscutting concerns as well as Saas infrastructure. All this is provided through terraform deploying helm charts and custom configuration. +This repository contains a `kubernetes` dev infrastructure, providing both crosscutting concerns as well as Saas infrastructure. All this is provided through `terraform` deploying `helm` charts and custom configuration. -### Cross-cutting concerns +## Components -- Certificates (cert-manager) -- Reverse proxy (traefik) -- Logging (seq/fluent or loki/promtail) -- Metrics (prometheus) -- Tracing (jaeger) -- Service Mesh (linkerd) -- Dashboards (grafana) - -### Saas - -- Elastic stack (elasticsearch, kibana) -- Secret management (vault) -- Identity Provider (IdentityServer4 or Keycloak) -- Configuration management/KV (etcd) -- ArgoCD (CI/CD) -- Storage (Minio/Azurite) -- Messaging (RabbitMQ) +| Category | Service | Description | +| :-------------- | ----------------------- | ------------------------ | +| Networking | traefik | Reverse Proxy | +| Networking | linkerd | Service Mesh | +| Networking | cert-manager | Certificates | +| Monitoring | seq | Logging | +| Monitoring | loki | Logging | +| Monitoring | jaeger | Tracing | +| Monitoring | tempo | Tracing | +| Monitoring | prometheus | Metrics | +| Monitoring | metrics-server | Metrics | +| Monitoring | opentelemetry-collector | Ingestion | +| Saas Cloud | localstack | AWS emulator | +| Saas Config | etcd | Key-Value service | +| Saas Config | vault | Secrets management | +| Saas Database | mongodb | Document database | +| Saas Database | mariadb | Relational database | +| Saas Database | mysql | Relational database | +| Saas Database | oracle | Relational database | +| Saas Database | postgres | Relational database | +| Saas Database | sqlserver | Relational database | +| Saas Deployment | fluxcd | GitOps | +| Saas Deployment | argocd | GitOps | +| Saas Messaging | rabbitmq | Message Broker | +| Saas Search | elasticsearch | Search Engine | +| Saas Auth | identityserver | IDP | +| Saas Auth | keycloak | IDP | +| Saas Storage | minio | S3 compatible storage | +| Saas Storage | azurite | Azure compatible storage | diff --git a/docs/installation-terraform.md b/docs/installation-terraform.md index 0621823f..ae679dd4 100644 --- a/docs/installation-terraform.md +++ b/docs/installation-terraform.md @@ -3,7 +3,9 @@ ## Prerequisites -Check you have all the [cli tools](./preparation/cli.md) installed and that you can connect to a running cluster. +Check you've done all the [preparation](./preparation.md) and that you can connect to a running cluster. You should have all the required CLI tools and a running local cluster (using either `k3d`, `kind`, `docker desktop`, `rancher desktop` or `minikube`). + +To check: ```bash kubectl cluster-info --context @@ -23,10 +25,8 @@ On Windows, open `C:\Windows\system32\drivers\etc\hosts` in an editor as `Admini On Linux edit your `/etc/hosts` file as root. ```text - 127.0.0.1 k8s.local infrastructure.k8s.local traefik.infrastructure.k8s.local traefik.k8s.local -127.0.0.1 jaeger.infrastructure.k8s.local prometheus.infrastructure.k8s.local seq.infrastructure.k8s.local -127.0.0.1 grafana.infrastructure.k8s.local +127.0.0.1 jaeger.infrastructure.k8s.local prometheus.infrastructure.k8s.local seq.infrastructure.k8s.local grafana.infrastructure.k8s.local 127.0.0.1 consul.infrastructure.k8s.local vault.infrastructure.k8s.local 127.0.0.1 es.infrastructure.k8s.local kibana.infrastructure.k8s.local 127.0.0.1 login.k8s.local admin.login.k8s.local api.login.k8s.local @@ -37,30 +37,58 @@ On Linux edit your `/etc/hosts` file as root. 127.0.0.1 keycloak.k8s.local auth.k8s.local 127.0.0.1 etcd.infrastructure.k8s.local 127.0.0.1 minio.infrastructure.k8s.local console.minio.infrastructure.k8s.local +127.0.0.1 azurite.infrastructure.k8s.local 127.0.0.1 rabbitmq.infrastructure.k8s.local 127.0.0.1 localstack.infrastructure.k8s.local 127.0.0.1 flux.infrastructure.k8s.local +127.0.0.1 kafka.infrastructure.k8s.local +127.0.0.1 mysql.infrastructure.k8s.local +127.0.0.1 mariadb.infrastructure.k8s.local +127.0.0.1 postgres.infrastructure.k8s.local +127.0.0.1 mssql.infrastructure.k8s.local +127.0.0.1 oracle.infrastructure.k8s.local +127.0.0.1 mongo.infrastructure.k8s.local +127.0.0.1 oracle.infrastructure.k8s.local ``` -## Installer +## Generate a root certificate + +=== "Windows" + + ```bash + cd src/terraform + ./generate-certificate.ps1 + ``` === "Linux/WSL" Next run the installer in a Linux/WSL shell: ```bash - helm repo update cd src/terraform ./generate-certificate.sh + ``` + +## Installer + +Edit the `terraform.tfvars` as you see fit. + +=== "Windows" + + ```bash + cd src/terraform + helm repo update terraform init terraform apply -auto-approve ``` -=== "Windows" +=== "Linux/WSL" + + Next run the installer in a Linux/WSL shell: ```bash cd src/terraform - ./generate-certificate.ps1 + helm repo update terraform init terraform apply -auto-approve ``` diff --git a/docs/introduction.md b/docs/introduction.md deleted file mode 100644 index 16402ba2..00000000 --- a/docs/introduction.md +++ /dev/null @@ -1,20 +0,0 @@ -# Introduction - -Using proven opensource software projects, this repo builds a coherent dev environment that offers similar services that the big cloud providers also offer: - -| Capability | Type | This repo | AWS | Azure | Google | -| --------------- | ---- | --------------------------- | ---------------------- | ---------------------- | ------ | -| Logging | Core | loki/promtail or seq/fluent | CloudWatch | AppInsights | | -| Tracing | Core | jaeger | X-Ray | AppInsights | | -| Metrics | Core | prometheus + metrics-server | CloudWatch | AppInsights | | -| Dashboards | Core | grafana | CloudWatch | AppInsights | | -| Service Mesh | Core | linkerd | AppMesh | Open Service Mesh | | -| Ingress | Core | traefik | CloudFront/API Gateway | Azure FrontDoor | | -| Certificates | Core | cert-manager | Certificate Manager | Management Certificate | | -| Secrets | Saas | vault | SSM | Azure Vault | | -| Storage | Saas | minio / azurite | S3 | Azure Storage | | -| Config | Saas | etcd | Parameter Store | App Config | | -| Appl Deployment | Saas | argocd | / | / | | -| Search | Saas | elasticsearch | Opensearch Service | Elastic | | -| Auth | Saas | keycloak/identityserver4 | IAM | IAM | | -| Messaging | Saas | rabbitmq | SNS/SQS | | | diff --git a/docs/preparation.md b/docs/preparation.md new file mode 100644 index 00000000..f3a1bf96 --- /dev/null +++ b/docs/preparation.md @@ -0,0 +1,226 @@ + +# Preparation + +## Installing commandline tools + +Install/download the CLIs. + +=== "Windows" + + ```powershell + choco install kind + choco install k3d + choco install base64 + choco install mkcert + choco install kubernetes-cli + choco install kubernetes-helm + choco install linkerd2 + choco install argocd-cli + choco install flux + choco install terraform + ``` + +=== "Linux" + + ```bash + sudo apt-get update + sudo apt-get install -y apt-transport-https ca-certificates curl wget libnss3-tools cl-base64 + + # kind (if needed) (https://kind.sigs.k8s.io/docs/user/quick-start/#installing-from-release-binaries) + curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64 + chmod +x ./kind + mv ./kind /usr/local/bin/kind + + # mkcert (if needed) (https://github.com/FiloSottile/mkcert#linux) + curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64" + chmod +x mkcert-v*-linux-amd64 + sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert + + # kubctl (https://helm.sh/docs/intro/install/#from-apt-debianubuntu) + sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg + echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list + sudo apt-get update + sudo apt-get install -y kubectl + + # helm (https://helm.sh/docs/intro/install/#from-apt-debianubuntu) + curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null + sudo apt-get install apt-transport-https --yes + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list + sudo apt-get update + sudo apt-get install helm + + # argocd (if needed) (https://argo-cd.readthedocs.io/en/stable/cli_installation/#download-latest-version) + curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 + sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd + rm argocd-linux-amd64 + + # flux (https://fluxcd.io/flux/installation/#install-the-flux-cli) + curl -s https://fluxcd.io/install.sh | sudo bash + + #linkerd (https://linkerd.io/2.12/getting-started/#step-1-install-the-cli) + curl -sL https://run.linkerd.io/install | sh + export PATH=$PATH:~/.linkerd2/bin + + #k3d (if needed) (https://k3d.io/v5.4.6/#install-script) + wget -q -O - https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash + + # terraform (https://developer.hashicorp.com/terraform/downloads) + wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg + echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list + sudo apt update && sudo apt install terraform + ``` + +## Docker environment + +### Docker Desktop + +!!!Warning + To use `Docker Desktop` commercially you'll need a [commercial license](https://www.docker.com/pricing/). + +Run the installer from [Docker Desktop](https://www.docker.com/products/docker-desktop/). +To add WSL2 support to your k8s cluster of `Docker Desktop`, read the details in the [official blog](https://kubernetes.io/blog/2020/05/21/wsl-docker-kubernetes-on-the-windows-desktop/) + +After installation, make sure you enable `WSL2` in the settings + +![enable wsl2](./images/docker-desktop-settings.png) + +### Rancher Desktop + +Just run the installer from [Rancher Desktop](https://rancherdesktop.io/). + +## Local K8S cluster installation + +### K3D (preferred) + +Edit `./src/clusters/k3d/terraform.tfvars` to your needs. By default it will create a 3-node cluster on a custom `Docker` network. Then run to create the cluster, run: + +```shell +cd ./src/clusters/k3d +terraform init +terraform apply --auto-approve +``` + +!!! Note + When using `WSL2` (Windows Subsystem for Linux), you need to copy the context configuration to your `.kubeconfig` file on the `WSL2` home directory or the other way round, depending on which shell you use to run the `terraform` code. + + ```powershell + cp /mnt/c/users/$(whoami)/.kube/config ~/.kube/config + ``` + + or + + ```powershell + cp ~/.kube/config /mnt/c/users/$(whoami)/.kube/config + ``` + +The cluster creation automatically add configuration to your `kubectl` contexts connect to so you can connect to the new cluster + +```powershell +kubectl cluster-info --context k3d-devinfra +``` + +To delete the cluster again, just run + +```shell +terraform destroy --auto-approve +``` + +### KinD + +#### Creating a cluster with `terraform` + +Edit `terraform.tfvars` to your needs. Then run `terraform apply` to create the cluster. + +```shell +cd ./src/clusters/kind +terraform init +terraform apply --auto-approve +``` + +Verify with + +```hell +kubectl cluster-info --context kind-devinfra +``` + +#### Creating a 3-node k8s-cluster manually + +An example of running a multi-node cluster on docker can be done with `kind`. There are some restrictions with Windows. The provided config `./src/clusters/kind/config-devinfra.yaml` provides a 3-node cluster. There is also a `traefik` ingress test setup to verify your networking configuration. + +To fire up the cluster, run the following: + +```powershell +kind create cluster --name=devinfra --config ./src/clusters/kind/config-devinfra.yaml +``` + +We specifically expose ports 80, 443 and 8100 to this cluster on ip `127.0.0.1`. Think carefully what ports to expose. `kind` has no update strategy to change this afterwards. + +![kind cluster creation](./images/kind-cluster-creation.png) + +The cluster creation automatically add configuration to connect to the new cluster + +```powershell +kubectl cluster-info --context kind-devinfra +``` + +To delete the cluster again + +```powershell +kind delete cluster --name devinfra +``` + +When using WSL (Windows Subsystem for Linux), you need to copy the context configuration to your .kubeconfig file on the WSL home directory. + +```powershell +cp /mnt/c/users/$(whoami)/.kube/config ~/.kube/config +``` + +### Docker Desktop K8s + +!!!Warning + `Docker Desktop` creates a single-node `k8s` cluster. +Enable `kubernetes` in the settings: + +![enable k8s](./images/docker-desktop-kubernetes-settings.png) + +### Rancher Desktop K8S + +!!!Warning + `Rancher Desktop` creates a single-node `k8s` cluster. + +If you want to use the kubernetes version of Rancher Desktop itself, just check the checkbox in the settings, but leave the `Traefik` checkbox empty as we will deploy our own version: + +![enable k8s](./images/rancher-desktop-settings.png) + +### Minikube + +!!!Warning + `Minikube` creates a single-node `k8s` cluster. + +Basically there are 2 options, which look fairly the same. Either, + +- run `minikube ` op windows with the `docker` driver and thus WSL2 and make it accessible in your WSL2 distro. +- run `minikube` on WSL2 directly following the [official blog](https://kubernetes.io/blog/2020/05/21/wsl-docker-kubernetes-on-the-windows-desktop/) + +#### On Windows + +> **Warning** +> `minikube` only provide a 1-node cluster + +Fire up your cluster + +```shell +minikube start +``` + +![minikube windows](./images/minikube-windows.png) + +The cluster creation automatically add configuration to connect to the new cluster + +```powershell +kubectl cluster-info --context minikube +``` + +#### On WSL2 + +To run `minikube` from WSL2, try this [blog post](https://hellokube.dev/posts/configure-minikube-ingress-on-wsl2/) or this [blog post](https://matheja.me/2020/04/08/getting-started-with-minikube-on-wsl2.html) diff --git a/docs/preparation/cli.md b/docs/preparation/cli.md deleted file mode 100644 index d118a005..00000000 --- a/docs/preparation/cli.md +++ /dev/null @@ -1,58 +0,0 @@ -# Installing commandline tools - -Install/download the CLIs. - -=== "Windows" - - ```powershell - choco install kind - choco install base64 - choco install mkcert - choco install kubernetes-cli - choco install kubernetes-helm - choco install linkerd2 - choco install k3d - choco install argocd-cli - choco install terraform - ``` - -=== "Linux" - - ```bash - sudo apt-get update - sudo apt-get install -y apt-transport-https ca-certificates curl wget libnss3-tools cl-base64 - - # kind (if needed) - curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.15.0/kind-linux-amd64 - chmod +x ./kind - mv ./kind /usr/local/bin/kind - - # mkcert (if needed) - wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64 - sudo mv mkcert-v1.4.4-linux-amd64 /usr/local/bin/mkcert - sudo chmod +x /usr/local/bin/mkcert - - # kubctl - sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg - echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list - sudo apt-get update - sudo apt-get install -y kubectl - - # helm - curl https://baltocdn.com/helm/signing.asc | sudo apt-key add - - sudo apt-get install apt-transport-https --yes - echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list - sudo apt-get update - sudo apt-get install helm - - # argocd (if needed) - sudo curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 - sudo chmod +x /usr/local/bin/argocd - - #linkerd - curl -sL https://run.linkerd.io/install | sh - export PATH=$PATH:~/.linkerd2/bin - - #k3d (if needed) - wget -q -O - https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash - ``` diff --git a/docs/preparation/docker-desktop.md b/docs/preparation/docker-desktop.md deleted file mode 100644 index 440b09d5..00000000 --- a/docs/preparation/docker-desktop.md +++ /dev/null @@ -1,13 +0,0 @@ -# Docker desktop - -To add WSL2 support to your k8s cluster of `Docker Desktop`, read the details in the [official blog](https://kubernetes.io/blog/2020/05/21/wsl-docker-kubernetes-on-the-windows-desktop/) - -After installation, make sure you enable `WSL2` in the settings - -![enable wsl2](../images/docker-desktop-settings.png) - -and you enable `kubernetes` of course: - -![enable k8s](../images/docker-desktop-kubernetes-settings.png) - -`Docker Desktop` creates a single-node cluster. diff --git a/docs/preparation/k3d.md b/docs/preparation/k3d.md deleted file mode 100644 index 54d2ef3d..00000000 --- a/docs/preparation/k3d.md +++ /dev/null @@ -1,53 +0,0 @@ - -# K3D - -## K3D installation - -### K3D CLI installation - -=== "Windows" - - ```Powershell - choco install k3d - ``` - -=== "Linux" - - ```bash - wget -q -O - https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash - ``` - -### Creating a cluster with terraform - -Edit `terraform.tfvars` to your needs. By default it will create a 3-node cluster on a custom `Docker` network. Then run to create the cluster, run: - -```shell -cd ./src/clusters/k3d -terraform init -terraform apply --auto-approve -``` - -!!! Note - When using `WSL2` (Windows Subsystem for Linux), you need to copy the context configuration to your `.kubeconfig` file on the `WSL2` home directory or the other way round, depending on which shell you use to run the terraform code. - - ```powershell - cp /mnt/c/users/$(whoami)/.kube/config ~/.kube/config - ``` - - or - - ```powershell - cp ~/.kube/config /mnt/c/users/$(whoami)/.kube/config - ``` - -The cluster creation automatically add configuration to your `kubectl` contexts connect to so you can connect to the new cluster - -```powershell -kubectl cluster-info --context k3d-devinfra -``` - -To delete the cluster again, just run - -```shell -terraform destroy --auto-approve -``` diff --git a/docs/preparation/kind.md b/docs/preparation/kind.md deleted file mode 100644 index d7042566..00000000 --- a/docs/preparation/kind.md +++ /dev/null @@ -1,68 +0,0 @@ - -# KinD - -## KinD installation - -Following the [quick-start](https://kind.sigs.k8s.io/docs/user/quick-start/), installing `kind` is fairly straightforward. - -=== "Windows" - - ```Powershell - choco install kind - ``` - -=== "Linux" - - ```bash - curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64 - chmod +x ./kind - mv ./kind /some-dir-in-your-PATH/kind - ``` - -### Creating a cluster with `terraform` - -Edit `terraform.tfvars` to your needs. Then run `terraform apply` to create the cluster. - -```shell -cd ./src/clusters/kind -terraform init -terraform apply --auto-approve -``` - -Verify with - -```hell -kubectl cluster-info --context kind-devinfra -``` - -### Creating a 3-node k8s-cluster - -An example of running a multi-node cluster on docker can be done with `kind`. There are some restrictions with Windows. The provided config `./src/clusters/kind/config-devinfra.yaml` provides a 3-node cluster. There is also a `traefik` ingress test setup to verify your networking configuration. - -To fire up the cluster, run the following: - -```powershell -kind create cluster --name=devinfra --config ./src/clusters/kind/config-devinfra.yaml -``` - -We specifically expose ports 80, 443 and 8100 to this cluster on ip `127.0.0.1`. Think carefully what ports to expose. `kind` has no update strategy to change this afterwards. - -![kind cluster creation](../images/kind-cluster-creation.png) - -The cluster creation automatically add configuration to connect to the new cluster - -```powershell -kubectl cluster-info --context kind-devinfra -``` - -To delete the cluster again - -```powershell -kind delete cluster --name devinfra -``` - -When using WSL (Windows Subsystem for Linux), you need to copy the context configuration to your .kubeconfig file on the WSL home directory. - -```powershell -cp /mnt/c/users/$(whoami)/.kube/config ~/.kube/config -``` diff --git a/docs/preparation/minikube.md b/docs/preparation/minikube.md deleted file mode 100644 index c00129a1..00000000 --- a/docs/preparation/minikube.md +++ /dev/null @@ -1,28 +0,0 @@ -# Minikube - -Basically there are 2 options, which look fairly the same. Either, - -- run `minikube ` op windows with the `docker` driver and thus WSL2 and make it accessible in your WSL2 distro. -- run `minikube` on WSL2 directly following the [official blog](https://kubernetes.io/blog/2020/05/21/wsl-docker-kubernetes-on-the-windows-desktop/) - -## On Windows - -- Installing `minikube` is easy enough. - -```Powershell -choco install minikube -``` - -Next fire up your cluster - -![minikube windows](../images/minikube-windows.png) - -The cluster creation automatically add configuration to connect to the new cluster - -```powershell -kubectl cluster-info --context minikube -``` - -## On WSL2 - -To run `minikube` from WSL2, try this [blog post](https://hellokube.dev/posts/configure-minikube-ingress-on-wsl2/) or this [blog post](https://matheja.me/2020/04/08/getting-started-with-minikube-on-wsl2.html) diff --git a/docs/preparation/test-ingress-controller.md b/docs/preparation/test-ingress-controller.md deleted file mode 100644 index 4557cec8..00000000 --- a/docs/preparation/test-ingress-controller.md +++ /dev/null @@ -1,25 +0,0 @@ -# Testing an ingress controller on the cluster - -To test we can have a working ingress, we can deploy `traefik`: - -First we fetch the ip of the master node: - -```powershell -kubectl get nodes -o wide -``` - -Grab the IP of the node and adapt the `externalIps` entry in `003-ingressroute.yaml`. - -Next we apply the traefik installation - -```powershell -kubectl apply -f ./test-traefik-ingress/ -``` - -You should now be able to surf to the `traefik` admin dashboard on [http://localhost:8100] - -Make sure you delete this test ingress before proceeding - -```powershell -kubectl delete -f ./test-traefik-ingress/ -``` diff --git a/docs/release-notes.md b/docs/release-notes.md deleted file mode 100644 index e69de29b..00000000 diff --git a/mkdocs.yml b/mkdocs.yml index 00b8d298..ae6c0c6e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,21 +5,10 @@ theme: - content.tabs.link nav: - Home: 'index.md' - - Introduction: 'introduction.md' - - Installing: - - Preparation: - - CLI: './preparation/cli.md' - - K8s cluster: - - Docker desktop: './preparation/docker-desktop.md' - - Minikube: './preparation/minikube.md' - - Kind: './preparation/kind.md' - - K3D: './preparation/k3d.md' - - Testing Ingress: './preparation/test-ingress-controller.md' - - Install: - - Terraform: './installation-terraform.md' + - Preparation: './preparation.md' + - Install: './installation-terraform.md' - About: - 'License': 'license.md' - - 'Release Notes': 'release-notes.md' dev_addr: '0.0.0.0:8080' markdown_extensions: diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..fe548b89 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,9 @@ +mkdocs +mkdocs-material +mkdocs-exclude +markdown-include +mkdocs-awesome-pages-plugin +mkdocs-material-extensions +mkdocs-minify-plugin +mkdocs-git-authors-plugin +mkdocs-git-revision-date-plugin \ No newline at end of file diff --git a/src/clusters/test-traefik-ingress/001-rbac.yaml b/src/clusters/test-traefik-ingress/001-rbac.yaml deleted file mode 100644 index cf4ba007..00000000 --- a/src/clusters/test-traefik-ingress/001-rbac.yaml +++ /dev/null @@ -1,132 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: ingressroutes.traefik.containo.us - -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: IngressRoute - plural: ingressroutes - singular: ingressroute - scope: Namespaced - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: ingressroutetcps.traefik.containo.us - -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: IngressRouteTCP - plural: ingressroutetcps - singular: ingressroutetcp - scope: Namespaced - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: middlewares.traefik.containo.us - -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: Middleware - plural: middlewares - singular: middleware - scope: Namespaced - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: tlsoptions.traefik.containo.us - -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: TLSOption - plural: tlsoptions - singular: tlsoption - scope: Namespaced - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: traefikservices.traefik.containo.us - -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: TraefikService - plural: traefikservices - singular: traefikservice - scope: Namespaced - - ---- -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1beta1 -metadata: - name: traefik-ingress-controller -rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - resources: - - ingresses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - middlewares - - ingressroutes - - traefikservices - - ingressroutetcps - - tlsoptions - verbs: - - get - - list - - watch - ---- -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1beta1 -metadata: - name: traefik-ingress-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: traefik-ingress-controller -subjects: - - kind: ServiceAccount - name: traefik - namespace: kube-system \ No newline at end of file diff --git a/src/clusters/test-traefik-ingress/002-deployment.yaml b/src/clusters/test-traefik-ingress/002-deployment.yaml deleted file mode 100644 index a4a21f5c..00000000 --- a/src/clusters/test-traefik-ingress/002-deployment.yaml +++ /dev/null @@ -1,86 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: traefik - release: traefik - name: traefik - namespace: kube-system - -spec: - replicas: 1 - selector: - matchLabels: - app: traefik - release: traefik - template: - metadata: - labels: - app: traefik - release: traefik - spec: - containers: - - args: - - --api.insecure - - --accesslog - - --global.checknewversion=true - - --entryPoints.traefik.address=:8100 - - --entryPoints.web.address=:80 - - --entryPoints.websecure.address=:443 - - --certificatesresolvers.default.acme.tlschallenge - # Please note that this is the staging Let's Encrypt server configuration. - # Once you get things working, you should remove that following line. - - --certificatesresolvers.default.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory - - --certificatesresolvers.default.acme.email={YOUR-E-MAIL} - - --certificatesresolvers.default.acme.storage=acme.json - - --api.dashboard=true - - --ping=true - - --providers.kubernetescrd - # Use log level= INFO or DEBUG - - --log.level=INFO - image: traefik:2.1.4 - imagePullPolicy: IfNotPresent - livenessProbe: - failureThreshold: 3 - httpGet: - path: /ping - port: 8100 - scheme: HTTP - initialDelaySeconds: 10 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 2 - name: traefik - ports: - - containerPort: 8100 - name: admin - protocol: TCP - - containerPort: 80 - name: web - protocol: TCP - - containerPort: 443 - name: websecure - protocol: TCP - readinessProbe: - failureThreshold: 1 - httpGet: - path: /ping - port: 8100 - scheme: HTTP - initialDelaySeconds: 10 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 2 - resources: - limits: - memory: "128Mi" - cpu: "500m" - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - dnsPolicy: ClusterFirst - restartPolicy: Always - schedulerName: default-scheduler - securityContext: {} - serviceAccount: traefik - serviceAccountName: traefik - terminationGracePeriodSeconds: 60 \ No newline at end of file diff --git a/src/clusters/test-traefik-ingress/003-ingressroute.yaml b/src/clusters/test-traefik-ingress/003-ingressroute.yaml deleted file mode 100644 index 6c489998..00000000 --- a/src/clusters/test-traefik-ingress/003-ingressroute.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# ServiceAccount ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: traefik - namespace: kube-system - -# Service ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: traefik - release: traefik - name: traefik - namespace: kube-system -spec: - externalIPs: - - 172.18.0.2 - externalTrafficPolicy: Cluster - ports: - - name: web - nodePort: 31909 - port: 80 - protocol: TCP - targetPort: 80 - - name: websecure - nodePort: 30584 - port: 443 - protocol: TCP - targetPort: 443 - - name: admin - nodePort: 32316 - port: 8100 - protocol: TCP - targetPort: 8100 - selector: - app: traefik - release: traefik - sessionAffinity: None - type: LoadBalancer -status: - loadBalancer: {} \ No newline at end of file diff --git a/src/clusters/test-traefik-ingress/004-test-deploy.yaml b/src/clusters/test-traefik-ingress/004-test-deploy.yaml deleted file mode 100644 index c04fc92e..00000000 --- a/src/clusters/test-traefik-ingress/004-test-deploy.yaml +++ /dev/null @@ -1,64 +0,0 @@ -kind: Pod -apiVersion: v1 -metadata: - name: foo-app - labels: - app: foo -spec: - containers: - - name: foo-app - image: hashicorp/http-echo:0.2.3 - args: - - "-text=foo" ---- -kind: Service -apiVersion: v1 -metadata: - name: foo-service -spec: - selector: - app: foo - ports: - # Default port used by the image - - port: 5678 ---- -kind: Pod -apiVersion: v1 -metadata: - name: bar-app - labels: - app: bar -spec: - containers: - - name: bar-app - image: hashicorp/http-echo:0.2.3 - args: - - "-text=bar" ---- -kind: Service -apiVersion: v1 -metadata: - name: bar-service -spec: - selector: - app: bar - ports: - # Default port used by the image - - port: 5678 ---- -apiVersion: networking.k8s.io/v1beta1 -kind: Ingress -metadata: - name: example-ingress -spec: - rules: - - http: - paths: - - path: /foo - backend: - serviceName: foo-service - servicePort: 5678 - - path: /bar - backend: - serviceName: bar-service - servicePort: 5678 \ No newline at end of file diff --git a/src/clusters/test-traefik-ingress/005-testdeploy-route.yaml b/src/clusters/test-traefik-ingress/005-testdeploy-route.yaml deleted file mode 100644 index 53d79bad..00000000 --- a/src/clusters/test-traefik-ingress/005-testdeploy-route.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: "testdeploy-foo-ingressroute" - namespace: default -spec: - entryPoints: - - web - routes: - - match: PathPrefix(`/foo`) - kind: Rule - namespace: infrastructure - services: - - name: foo-service - port: 5678 - path: / ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: "testdeploy-bar-ingressroute" - namespace: default -spec: - entryPoints: - - web - routes: - - match: PathPrefix(`/bar`) - kind: Rule - namespace: infrastructure - services: - - name: bar-service - port: 5678 - path: /