From 1ab12dd5a9d6951e396bb4c9f4cc0cc732ea4510 Mon Sep 17 00:00:00 2001 From: Kian Date: Mon, 8 Jul 2024 15:39:00 -0700 Subject: [PATCH 01/11] add livekit docs --- apps/livekit/pyproject.toml | 1 - docs/images/livekit_keys.png | Bin 0 -> 35163 bytes docs/mint.json | 1 + docs/open-source/livekit-webrtc.mdx | 44 ++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 docs/images/livekit_keys.png create mode 100644 docs/open-source/livekit-webrtc.mdx diff --git a/apps/livekit/pyproject.toml b/apps/livekit/pyproject.toml index ab8f3bac4..c9203a7cc 100644 --- a/apps/livekit/pyproject.toml +++ b/apps/livekit/pyproject.toml @@ -4,7 +4,6 @@ version = "0.1.0" description = "" authors = ["Your Name "] readme = "README.md" -package-mode = false [tool.poetry.dependencies] python = "^3.11" diff --git a/docs/images/livekit_keys.png b/docs/images/livekit_keys.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba28f27354d5ae86adbed8fd580d2054f6f2398 GIT binary patch literal 35163 zcmeFZbyQSe+&(&lbVvvztphSh4c#Ff(jp*T0@5(RAT1>=CDJVzl+xWD(%lWx-S>=N z{k`wH_s{#+UF))D*36u9_Bs3P{W+g__VW;;sw|6-LxBSVf$-(!q|`wmR1^>h#TN?$ z*uuS3;s<=7IIGJ_fC~GmHh~`|=GyYFm6SkFf$vx#lwd0mI`R{DVe{`fnOqzE#YtnL3VaGH#asn zE;f573w90x0ReUxCp#x6D{us>v%4MK7{O}i4EgUQ|IQ<2?riF0#N4@iGvt-VKqVDy?afCQGdSf`_UE4s4Mvp zbdueysX%le1^L=XuidrZAhcvgeN6Y~rP_eiiIs17QZN+yUu*Fo-*8_%oSnZX6Tf*( z2g&drtx)*aCEj;WFK`rZPVN{MIQnd{Y{c|~~3)eW3ieQ%|uLP%Nj*EEv#?y7Mb+wbSCxA zk0rTn*c`Ffct5ej^E+s{)arrw5@qn9Jj|IQ`ZIL*{ott2QO@1(5`FH}I3CmLu}Y_; zB?)Asj*Iz#DQw4PM=1tse0$K`AKqOy+NkBEvH!*i8p(mH|Luc90%#btNa35r3(CrY zq00^9x<67GC3=W5nwe)U{pV)3@KMrG_nS$@ACawJoIB0NJhAe?K3a)d{TWa6fsi%u z!Jm%gSD+*Ce&H5gn8<%}{gn50MOH>!Gk=rf&lLN;mGwOXA&iNPO6Z>p^=fDyLLeDW zN8k~EOhdd5vOtcmzAqtm?*m~kYzL-t(Yn~ujkQl-`ro)Eq4|2-q#1R$$~C#Z1|~J3{k^a z%RluA?bR0UTA>jmM-fVnx(J<*x@Afh+pWVW)1Q0AfvPO9N~&ufulc)Xul{EXfsjoh zr;|-l-KkT@yyub9_Hf>So-sV*8k@@Nc(8o#?e^q)x{qB4wVU1rxi$kS3Q;~edh-_) zJdi!Q5eNav(58FSh9$>5Q&_W`!~qh$Io7Dz$O^M@ZF7rZaPb$PF1IakUhik)+N-}R zyg3>WbAgz42mUvQW!R*nSQGGJr2?%YgTng=?0$iDs;jekpKtn5X;pqy=Azmksa~g( zY|Utd!m2Xji@%;eAp#~=su8#&C;rQ`4rliSaixW)Q_YP$<9fr&VmEN>Um1RC=Un~# zEw`83MM==?C7{blm*JO1w6N)$W97S#;Na9IRRM*82E^_>t%q_#l+uJJm4$Y=lVQdZ zHWz?-xVM-VUv7P)#Kn`1q_Rr)JPZ-JIUYXkp!KP=cAc_foObGAO(jQZF) zTV19PSjX;!^MJ^DVF4-KdCA3EvhH}HzHJ20Sn9qYG z_?OY`^^uB&eErFo?&<0DotIWpSij&li}iecT?Ck;na2Cvc-pRJN6+1^{^E5ctf1h(sbeL|cY%QJ1wKAj!A)^rOAIoJAR!~k za!BT}ehqkRCmfvB+Ob#G0t`+|A&i2n7o%E+lLsBNds*5RsV-~k;oC(G-meXWUKk8= zyG<2{7xL+2;8m_e`^V+`J{GoT$DIGz{*S}(V&_-Ti8Y$53E}>eA z%TnyiTGC3aycr~eq4NBAcXpb0#z8WH&4A?aozr@e{e1oDh=z*!VSvfr$d_0T(FZN} zAZSg??~GK9;c5ioxr5oVHSh#|R~-u$2fLAcwenvQxaNmjY~RmiXRu`6CwO)b@Brgj zP@+nD&^|>ZOJ$79URx~m*#{YHR0+_pH`0F;!#7s;xj((A#z%bo|PcoaNBl?n~x#ySj#m%=BaJ9tk+FRo-lf(I`QDI=#+j z6Ld1lvoN07^H;9!m4EuiIk7K|5uL6bJN! zeC(4+zIjg#CMpGr+=v>{IL{-n!PR0gZIIYbc9dxM_3Li*rknm3Sj~FE!w)hY@D47p z1{R0T?4J0f{NOl?j4`yUTD93J8!wk8*B@arlv%eIUn z)&PmQd|7)?;Cd-La-MQ!e2KhgNX69!ni(;&=HBI4<2cs7i~w5zh*+3yIDFd9~NU;fgKA*tQ+1NMuS z#`ic1Ja5ofk~?6^WT-*JXJ!HE{)|+^bn@?Tt?DnD{F) zr{V?RlS3{~&<3ru8;)4TH2AS(BvTw_Iv%&=y8?7>;&Idwxp%vHa3FssoKZNCt$98A8tImcXVzll#5)40mv8$s`p; zA#Ly}U^}>B@A;l;cA0WVmdo-t9Uh&sf!C;IYHwvEPK5s@7if zkaybVXYUoL88LhcbS{F*KUXQ4w`5R#{!a|O?>7ZeC58Adm7MPeQQA3lr>mXkCK$Y7 zOmUESopv6^UhgoVxrB|_t2>*Kn=@^a?ho~%hr2fb0i^w#MIxKg17UVL6B;V{WSoU- zAgi#Yw687E4K8lRVSe#ST<+DJhPXDnW>T#vd#^%71t+6*7>~*a zKT7m*_+_F$AwH&qvJ|Sa|>mT6A~aTNjhB&1EXW2LZDldv&`Cdh^0PQJmu1+`*`3qUjwo z667ae^3t}*aOV)q5sCYH%jsnn>1|H8UqEp*X};V|az;%QPMwc}`BhM_ga;i~qGc&? ziL=$?g=LoIt|DSiHNe6=_eEtYM${E2eM9esu_T2TK9CDN0<6_7&xlI&E-I6>qVhxI zB4+x2aX^gy#SO{*oW3|IsBqcBxL80(*&ow&32glS<*vZ|4X4j^mO1mE54_*fG?|+9Sl-v-fq0UIE%vWVKhw3ZD{~&F_1tet z9KD4$5{jNT%C43}oz~(xXtXPXOrBlr$7FCDXHsb3hJSo`ax_6Tuz2)cWS)CLc=#R| z?Y8RL^QhBuZeS-{yrl#3&>V+ZLYT%C%JhaA{h@lB;uHG)(rXivy zL^vI?iaFo1VC5QoGH8;6u!XY;Q^egX!o}rC_d3-{x3xv)t{KYrEvp-|#!5AX5)vl4 z@}`duCdpODrP_7bex~tQAKgX8sN9@TCSN*VXP-_Ez0S~qLwuiSZNN|wyHwIWazqRv zSD#!^S>CqrH!2MXVQ5SDo7x#X48A8FEp~gp+@IP2#JVbtT7js_AK0NsKzMOxK2UoJ z6%c-ahDlIrH(T9jj(*=z)ct!Xk?*&3SxTK{5IMLJbpXqr%Z#Fp+2%0zHG1*+{cP-P zoa}duj4$;ZrL|qjG_*a*5D_U8|mt2nEq? zOTcgtrD`&u9D2ZSxkQS$WgU=F-}-og6%bSG**0UP4R3gom2@jAc&&HhFJ$CrBE+5GO|glKJIk3aRe48ow!ae~?QbM4w# zU3u4F4zQ=g=^idriiR{8nf{E>`;}Af+4qsXYG&X#+7q*BuJPZQmtTIv+4X#;AEfQ3 zWi7mix;t?^-!XAMj`_NOy~dx76-ZJ&xx#9aJC2E68$vkLr8xpv$hw zG$tA{b+#HEk);nc+Q~gj=)yocXuoPDEs}jEPq^~6@5>o{Wo9r%U(rwO;SlkMvhoxS#XMb;__g?_{M4%effeI@~WaozQA2VAiJS8e7u zpns0MnrbK9wlC0{e9Xn8s>}TewGmAf3(Z$Jp*P8Q3ibD}aeq?6xY6@sew9B-24Dwj zsD0Dy7JcNpgGsCtO%y!#@dpG_Et)5M+1@m0DWZ4#ZQ0=In(kf&7Y_Z zlsu16!6?#RI;z+u>M#GR{G>8|1K0qx=BcLN-=d9<52*c}mUC2rDoY8#*HZbYX^{Deg}`49p8P(7;?P_vwef8&+h1 ze%YmvD*UaQyCZ=HKfb9yko&vA2|@><<5Om!{px2lA-IFMo6nzo0RV3R!Q zb?Kw9{%#yh<@DYbNdC&($aE*Zek**l+#c~0$Vd7fl(SK312xA^igSO7mZ8_^>%OGb zAKXAbINimVZo^zynFZ8-vb+}kDeufqIw4WqqC$NMkZ+Gi>qHZ{Ic5s0x1L^|j2rGC zE9upkcL7ZB$wQ_NY{nELYC(8$G(>jlqpqEm&`xPAKCP&5xgJo3m^EES**Ff~BC8dT z?Scx0wQLii-^Knedvmjg7fEkeHXhT?0L6Cr4=J(LG?kjCPDEQ~hZ=dxWfV7Y`x}GV zJE6>loup}z*Fc2&QB;4~O$|ZAWvet=^Yogwn*5Qw19<4u1%JXRTAypR{iR_mAZIc- zZA2rSut@iMebmR7?y^1B7b$vaS#y2ZgRF^|5lNGedn$8Hu;U zIzK8`rF1M@++OXamgsexcjr-w-Ch5@0ejZ-SCyiIYfJJ=^OXRXxBdrJf zozA)$T0nhnFV@-IFCT~o8WhF=w?U7FQAuf2?6)0@^U$7S>8l#VS7l#DmOWg&#q?wn z%W|f&gyYZ_sO%#~ZWNdc%;vqX3bsk*dL8moQLLWOF$n9#jYI+R!a11TxBSGH22F#PpY*|LKspqmwEy) zGe+t_^(>Clo>Q7LCz>MdzM-O}Bj!McU!bERF6wJp3*V~*|;gFxwHI96eAh^*ypYj(=Z54)LbIAJ)Rze_r1+)u? z7RW&Ks2uOWDEA578&ksYjIH^CKvQDIvH}68na(!v&1}()vS^ctG6n2Wk$vrf3|RPQdK@k4dAWjx4F7H{P>fYw z_DQLhNXk~Mr+G{PCX6i12T}yL^0QMMFMyJ&#?*GYyiAf%WW)|=zg~8L(q)}36JgW& z;Zb41iaJ3$-)F2kBbL3&<;cRD<#1fP5|Z^P#2ha1y46)>}1SbztEly09%x9TkHpzgb#e;XbH^puCgC9 z@UR_cUwl?~cYB4e!t~>ODXgYG`j}%yZ41bN(}dRV20M0u{HC3h`3AZZaYbc!ji0}t z^(f~AFo5dPd|hqzy*SgllQCy6QkhR@G%L-+(o`1-BYQ+PE%-`o&w!NFHvkE2N$yO$L z(g42ayLD#Q`-pDTP%;od8KT#LdOY@w?_tnWgn74xp`p>5A1pJLu2$qib0MQ|w7 zu^rg|@fHOQ%{0IZZ!!P;3bJ{7y2z1M*l_z+5_`~KqT~Ef;@a`7VUIQ+Gmh#+iCUE$ zEZM6gD}uWcBI@h0n`B++Xtj7FypiGW=@f~3gAp|3GOoYwZ7TdIVD+{`wHELfDa}u) zFRNAaal8FEI=tFNad0E+XNl4TwE-McPqzU;+fp5)7JE;=vo?250HuxoNYx?UQIq$p zh7R{bDcZ0>d=k7p0DCd}9AqUKM@w_OJR_DW(hi+S zNC?cMMwRO~5ni{LgfzcNvBqjXwoKF@J711-c+BDG}1AeQ&tEJniKg zsEihKZ>NxH8dURW0vR>YgwnItS8`tQXX&0Vx*IJTKqtY`X@^aIq?h>bsUwEEVBW)>=-OiP5tviAO4_ zPcJ!TLLHv4)`Gu}TaA9zd;+~8GnaI1iMGCfDNvZHlBts2Kks#>Z_!u<02J#z&%BIR z9PqCk-^qp?jXb(S_*-7BMDg~D1UJPp4_H!I-J}uX3SC<9tMeXCm6*!9Q7p%CHU})T z+&@Ws?&CGYo9-GP7i`%eOJk)`%C|+S3_IO`IeXo4%r+hPVu|A*O#UZ_#FxR4tWs4`c-G2f%}lmcp!qUY!)Cw-&u)p}&7%#r z!t>ymoS(8Vf{!|{AMzc_9JG9>ZtaxdmkoZd`<%ERKi^?{Ny5B@{vFZz_0d4b)AZ77 z2iwwAXS{4Cn-(g`rUSDOK7&f~>~E#mm~J!O;P)&m^iMrfcMftZJ z;now697US^D5qFKQ*?U2d&1QG*@o=eX7wl+rZy#HbsnR%gc0|aBpiO;U96|u(Y7gg zLPLMucVL9v9d_X+aK2h5%5z{4Ev%zo#E@F#VkEC-e5jPU!SNdQcq6X%Bt$(t^1bJE z<&K&tf~3}gx*H>mtn1~ILw`li(pJYlj>p(SB(y%|=bn{%fT|$rU=#$$ zP(ZnYAOPT|b72W-hLbt2I`t0pU2Xqd?FjBMSG2(Pz$2S*QsD>9FZj@gX?hB?B%70D${fUzc=I<~xTfPT4-Jk7{)IL%6A=_~Fr{5Nx|A zGt0s<31KU-bxPW8o)RYnTYY5S>|vp3Op{I3X#a%-Vd zTR6*cfzfJRc~p9e!ZX8I=D8xo_NDl19zMg9rXMcKcZfR=Xl1yMM)g!gWwgF~EO>{E z-D{`mj%%yGOIhH~8JD1$Gu>A~nb*n8kG*X1U>+n7yv^%0N!i+&T7;%8M;V z#o&DuWorC1ut-(=^Rnc+B{J<$m5i*Z_`JkzZ_aL!P^N1$FMYQbm77<_+ncoMJ-8)M zItF^bJM2do$=Vr|E0rLd6dm$jKyz*8gN?Zf4ee@gSgM z-z)Mz4nymD%^e?3|J>e0a}v<=0~I{pbsa!@YEZP9PP*)NOY1Dl({} zau$5{(w9qJ3apgPU*od9Rtv57&$%(qj~=kuM)~AwJj!nym`A-4upe_#4adIOGc3Oj zFm|5oNS3J6!0a7h#110Sz>EvIiasTd2b@zGRB?*qTVvvzh5FDMi=(;*ox3Jf9=)CK z9wEBAM13`P5k#Ce6R@*5l(R=JQB4#Dl83Dt62}6_6`7ipw)Em&Y1nHW7A0E0=G<9T za^Giv4ssWfaO^u|(ca=2|< zftszA%ez(UG(MfSjy>vC+{a(#%4-80Ifsl!cJJXtM8etf3?C|x$kv}PTzLL&gIp`E$dhQefVb$Z6d0uBERk9_P{EKEmGWmTh5E5orTA0}CY&!Ny z)$XcF=OtD#i@F>;sMm!Z>$!SA4%n<8F=3wc)sglWF}4}bUI{VHZ8+}Y;(_q|Y|b9L zGd@o-CXL|R<+J_p!$Og9cWR3!Y`KdAk1K6rK{QN3^Rf;WX>;ZV=B-XwsR=cpy#4IW zWWi?3R$KVu^x>zG4Qqc~{KwOMl9>Hjf(=IR1>|M?wL8?tDN`+6>^|GLWA~(e)@ycH z6m?frmka1&^lDx=+0SXyiSK7-6+L{RFK-&K)Bwv8}*){}rt5o2yV_3aak!QQ;C3}+Ylr!qaow_wQKX@MF9m`nDUnN)0`;j$LV$`%8 zzSQ4w&?-Gp`f_6yuV^)?RFnmevLao@OSWhrPhYwS-$#p)&{){Tg?9OKjxb7HOP31z<*jre8k& zqY~sGVX7}%>aYLdRt^9xMH-oFLi~3PI|j*Np%`uJ2tB9awLevi`Bqr{^oXG<2R0db zMB_TN*r#cLh`K_S8FLJKQKP5j_szfArTrX5nKxK}(0iev57n)AXEQ@gaoa|^jX`S5 zDL-QE?XJfcI;ziCwQ&rVY>{A18=jald*TgVn0n`{`h_<%sh7`QdSzSFGe5gtzQ%Rusk_vV_;i&inTCV39g5VuyYc7q4lVc$ zVej^+j9N!97kdH`xb9jFIsE7d5vMP6>^yep`@7y0P{aBu&!fJbc1n9Vt?1%#lIIv1 zIUnD)X_Uyv3r=dpR!Py#2#s*zX;_F`CoAdDE8n8oMR$EuqM< zYC?M)lLlvjAG^Z=N9ZHTph^{@Bh5O1bWzD(lSy|@K}wvUHRm&1=i#P>VIbDyws_%` zK7c!Z@I|G0ze`cnR8g=tgh?4#?PfjGc~KwJM&6O;u`A%Fq&HD%>PbE5^YWy)g}`}_ z^=zIZn8A>R-e+aF$939vT~w(z7%ow+T~v!oR$iNsqGFx~ACl+ISPIj=wYChez362% zQY^=F%=3jkpsw)RsaF+_BaCUaH@~(5e^h z5W4G1CqMK87T&9)%07(gSfrY>*X~QK)qq-6>WIY*sj{Ez?QO?#KJw)FP{hXhHY>6d zGViNGQm^OMh=N&JL=^KR{b!`Lis*v;!Pog$a~ z&!=czl3GP-eO0ax4tbx9{y-Zu3Top74B*k1NT zOrf7WDOy>>4IjKzs!4F%)JQ;5Kf)r5GKtef$9yy$kw`3n9L~iz#Mw zBpgF%w=(;Rg+9Hr7JwsDd!jMIo7V|fgIs!2=*J#pH`JZYO`FFj`(gMVt~ggiNdzqg zHSFM|=$-kP}y47fLbYF#V!?jmpFO<8V`Qzp)Ca@{X zA9^{?g6!Rr`a?{C?-s?qH?`HKerJEL{nfr9XQ=_7vo5UqEF^t!B$jt44AN1L+p5 zTKQf!LH5+oM$4=^2eD?#M|%KRZL-ES+o};i$j~lwc8P=zM6tsTg74Gr`0fep>&zw? zyzR2|fCUn!oUi$l&h`Mdc^deO(ddPmA=G=`@UUv3lAZYS*edFnd;}$k9kQQu3(@u2SU%S6E(d4= zLa9!Rf#g#FNThdV<`81G+~I!tSo1FdVSP!4`_%=W)=`H~R}s{Sd!*VL0yV{xaTXZK8Oc zT7}JWlRnCcw(x$}^Zmv4aS}BGtaPo{q!B07=D4`Ru$fO)(90a*=AbCv!78rmphq*X zCzXRlc5?(DnC5 zR%b3Pok-y_jr_8Vm-H3dF6B_8_XyY>wXz&myIZ(b{M0d69z|M!yGYdYyV)7l$=qn7y0q&}rtu$NvH)9sC? zpf6`|D2}=0>QR>=3o|?SYZf+Ak%+k(LID-Y&(9z)s@(=E(H`9K@3B4?q@JnMHi6T? zpF(6K;kzD%xd-|VP4{lqEASg4Xx8Fmp{O!dP(wi;imZxLPkIDh?R^5pk3>pvN?eeO7Ys8ViDEm;wg}U2BO47}(>c zou#ZC=iLdaj?n_nVj_|W*DEG3Cw^rtCh1-B)ACK{T=u!L58v)@I2jJ#z7MV^E_&3k zDK^1*?*XF&V-Z3acKShY==m1m^3eNJ`=(aZdqc;hI2rU)-&?XvU)Y zo;{8PxbmEGwnJ-{bu|aym{h%@lxS@i7UOvnXazHjAhy84uHfWzDd&~y2%wBCb)*COk3M#*u~TqvQCDOfiM;(Pg-8h|v+H8fC31l?;I zTTJ%8KkYJa#`~6^(v4Pjh?lZsUvLT*qyWv#Ge6sMn%{wap0@Rc1)I0)}aIJ3;`O2|D)kDW3t zn;&ooC@fvsCL_TAIU1~^=L8H!h;|BH$Po*wPZTQ$aywf|!UYjV4qfUm_i{7(hR2ra zHt1vRHsr$&fVp*!yctnln)jNr9kLwN6uV!#)sgEJD{01xikhJ0N?*IlCi zXmWe-TC+$mpQHN|s)2TnTC$e-XPDO38xSLkIn0YShVbN@Qg1qnkMon2gY&=A>J(G= zt-NeL1w~EMW=C|KINo|r@g{gA3I?*;e*8iZz}j&0!q=YG(TW3X%8HGvy~*b+&-Fzt zJS^Qx4nqOUi^E@?tV}CGW2%leA!Z4|*AVt?$C0@r=-fsM+W()81Kn18CDd+)J z#hc`Pc-%^Sn z{-@NR$(7Ke&@kjH>}K^6t?saDtF(q>j0Y>f9wuMmNrr2Vgs(t#;g|SmX;)!aew#S# z7jreG_)`!AOfqtd<&9zEuow#^;)_OphIug2oOQIlL38D#$~I<}@kMF`B8M3zvDHrSMbm#)VtC*&=zli&3m~o&5M5j#Jf!kWd>+QO|N)+u0st(V?Ns9cc2%4xTTvrp#7jdZ82>(8b2U_Z76uZb#nYqA$ zunB@>J~_s;e+){`X9Gd|!*Du1F!qxjH}5 z5kv1}3$s+9BQ{?{XGx4iDYQhkv1=DzD^uRI>n|6LmY-r}Ja?FMCgf02>Oj(Ew+z14 zJ%u6^s*ZyZ#MiMe?hS}jM|?ohRm(%$f|8pn{$sVIfdIwAEnIw3Llfm6Y9WP$F``4& zdH-$rg@iGZ@|XS-K-~8uegwc6Qco2o|8esrNInp$T4sf+{F9gj0Av~BFHm!hzZ-Cr zkSw2&r=tI$6Cxy*l9Lsu^lt+<5=(jV_52@}^8a_@|MMeZskedEa-PI(WrC#dD5dao z2>(7^Pqd)19{Zk%6m6`fx*432bJ02yUo!)Wjm6A7^wh;=FfNe71><}$YR`Nw7uevtSuan(95zv3E6%Sn5H{84i zLp7RtBw!IenKg*Bk@;IW`pWJV zZ$`VB>H*owczY!E_L2=C0|7WRI_0gziW2~+mBLBG?~oyKu@aleT?5}Vse60EiATBu z5D&@#mC!K2)}}o3@WsZS3=1TC)yY=9k@XzbP4EriXEad@0iqe( zKA!PXfFdR6kAmj!bh-{P`((b^=ZQv%*{yTMmkF|3%pfIiKXiCK)fuzYi4P+XL0yqZaFejsu zUd|qV1F)Ds2L96*#G$f(yj4ak_DDXFZ;a`S*;;pJU6)bKh(Z2rD|>WLfE%XS+_8~1 z$O_R9V4d^3N3QqlCQZbnd=`K$?9zRph&V2V!5)BCXN6ST*a8z|$30VKt>v*C!S}nM zV(#!6lINp*!L>w~M+kdb2$WcmI|S<1kH#fHQRC`E4JeCxbTsGw8`L+6;t>=ml{Fmb zs{LRPz>6y>C>wiax0@0T=dXx-XR<!Ra1qMW5FPR@K8bR zbA3<_$V#RG?#HIyv4JDWEkNtS$#%U0lK|l~Z<-NLgHX*KsNtEZP4q!?s6!T%`pM$A zS*wk@Fq78z3I`*{gm~;@q95jg+Z!L#wHE=@WhzRH-_HLF3<~d&{c{i>ClVY9e?Dl1j5AtEM>75>jp`P1Nt?NBw8ayCN=;opsdLsQ@6qU zX2zs`Ls;a%Dg0h=PRqNRN|>luL)(JUGwL~z-p+NTLMc_iH`~p@?BIi7)xvK@_0=&6 z+2u#s$A7Jl#t#t2sh%TH!J|Llq-AR_)01p2OPg4^M!`8XK9(ZnF zck=SA0^r?M3;5_=X3IvoS`&NnH|WC$rBjKTEYo1ukvPmdi3;Kekmn*P03Wcwk{@^i zcYgG+eS>4mJbNYZ^j={zA(_f0Bg6ITbtKzYfTfPP19&7?178vq;lYP;qP69Jd8i;i z3finCY@^n>a$8*s^o)F+%%~-t2w%@{rbyWmpfRZF(T*R0gR-63dv~&H-RbwQ_8Q!x z2$rI;0v{ZwNKO=%Prb2&@3k0#W`MyfZ>O+6m$d824igS39+aUpmzj=79a$hG({Ke! zB6oIAPL}H9D9lUK@Y^m%6}D>tpD0UHNhkcnLl;NiV*4{tLrCW1RSTB3Rc`!@>Dx@^ zREytgON)l*&qdf=`#A>svOQ~dtG@x#J&Q;d+<7dd(xL`dd8RX|k_5(OS@5{KIopZT zPbNfKkK;Lq|ti#?>#~U}9ascg>Upo*arH;Bi;9o#;s`O4- zE|g%ia^kxLEhRbXD5Pa=n%5K&!cTj0?%=W}V!>H@G}i1RJL z*yFmDn0&ikz@?)9PYm%`)f=7SML1&J`@{e{A$E`h_W%(9Q{E@eSU4c2moMj!Dg3sx z{9NlA;7qDdmEjv~BGt#@5APd&FmRO-e>f5r`X8s54wXk41j%S0M;}2j#r+qTkVnP? z$yz=!uRi@BA~YZzQUNlp&GAfyf6X+JYfcIi@aTU`XHg*2$~6pr>i3W7tmNyq+=AKAnC1=J zkGlOpJYvuVgpQmYTTA`M!PKt-)?iVX&NmYGH$di+3M>?#0_nmuU}0t|A}4W3*D+S@ zviscf(TpsEb$MLEGp60b zR=I#mykQ3U_rCy;YSZ5UMI4UN2#{5iLvDf0s{&BGT6k-@ zBKwWpk**GKsNJi?~hfy7^_%IvYrB%(=T@7zR2Q%;-0q80IvHt zK!Yd+Sd*h5OvT6$OY+G?I026=bgCs!- zU@{YH$@Ze-OsCu91KvO=l?noKmnbCbnHRBdlq}%<8Mgx9fC>dJE)EOuSq-%UF-eyx z4Om$1K3_WoWSgty!8C943+hg%+OLm*MTFl#9t2OVZm|54`|$_hfjgK!1OGl@8jwPo zoXvUIxBtQ#xC8RYQ{b{M1ywHO(A?Gla=Yn%7>?B*QYZ`rg~@lgY?id%=b5-?J?srq z{{1J(MAYVO_;}Mmve%--b1rZkNNzAu(yVY)Im>O8Ra&0#kLO-g|gy^?_P#vyXr3|8-p#>jNabE{awuNz6Y4Jo*%GjcYp0Fi=4c0Q{jkr0v1Ni5R1kk z%$bUYij%1d3F+MsruiLOes0+@qde9MEt z^6luKT*W*=f9#=ODQ*bXhzqK&T~%(4?9ySE2-3q$Gp2hIyHziAyqO{KMSY#KcCXFv zStGR1jRh_arvjLt-?lv;27*w`2lV)H8V3@818RqUP)4>O@EoK%<(gWKWTvx&!HBo}qegqF$~ifuJr zUZ4*=`n)b%FZj+{ETfn(@scW!;vziHj{=O-e{lND<~8>zF^&U^yUOP1G*D5zCu_}{ z;_~F#P$ig?>K2$0$}jj_m>x`uwVDy$OaAjyVDU=&ARN$e>wyQ1OWMeO0){kmqt;-N z;us_}AclwE?W=eJhziO8xeCAedy^n8bJNnu7$aIqsJ!RfG@;NB*GLkqe1i73mj%B8 zS%>THDey>621-8C5R+qbOhZ;Vz``lz4t9l@ix;3{sM_8G*q7mhoJNfxEsXF?RhX~Q zIUu(bkc_talUC6n7ErE$e5NHsU`K;bk)EZ_S2?PWFD0J;VZ7^GhfceF(d z3>j>?kXW8CVr%wbWO1k&u zmx9{E?m`ymBSB8Rr0|(KBJmC>MpJJ@BMMlbN-xlHfzr{_nPy4-!aBJ zrc-;~=s%qn+^(n774oNdULEJhlB(dpuGHKM2y~is?i4O*Zw^Gs8~c7Pc#P*Y4zweD zBlAnmJu-&!DI(dp;y}6IpV#V!dDsA|8S7&6Q1@_#rA9gD&d+IGdM5LMg6m?>xbq|D za8T-%;Y`}$zme&DWIyC3E;5T%Z$;NzHY>T=RH)zeHggD=iY`)BX zSFmroFpSLRu7KfIl)DeSBym8p=QE4 z(i=#y=`Gr_?`yjthMZizp|UGVl4&G@Yq4kKpqHx zPB zb)L>w#1|FML`y&6?q_Y*CGw}*TYi3%o!ixuMsOzmp_;1Jx;^vJWg^zi$T$2;mTk(D zPMvi7(|J4^P59UdlI2TsV?OrIlP8y$!;dQ&xl7w*Lj*BQY$8K1`2AEV+bI{PX5b~0 zhVY66+HG9M-O?yCwlnR@81!~cQM1K2Z9Spt6Awtc`^6VSL?q8v^Pu{>MkH)nGm$Io z^qY8d1L3sem0tvAu`I~*?xBJ$vsqnvWnt>tEgB)|Cwnzm=0Wn{e1e3bb#^(&NDNDj3a7d($`CY%(66pXV^c-${&RS@+%6EoPg`O@%l zc7@wZ3N?~7f;*)=b)5uZRfIUWO+3Gib$0O`aW^x>bQFCi4mX7jjg(&yOlywK)Ag-3 z#Mz#W&HwfyWJ5)E9OdINdtS?>66FnpXXKq|*CRAmbqHr?>1P$5a_s@Y$+eT*=H6be z>_QA4x!@e0=*H}Fv~yFQ9mMEdt?HBGmbJSQU@=mWT7>L(!f(}NIa4d#3W_4rH zG)(R%HFxW+ggw07n3t2+USs|(2fwwYN$aF947VEJxh>;(Q1k0G zH1167rc{yLVb&`#!vbur{@!8lb{ejaj1C3NTAb6AQr1%+TH@yu+09cLoBKBQmEZ{} zB@;Y-m6t!*l)7E1JjQVt9~H<74KM&aedD3PA1?Ls_Hd$iy+sW>Xe1_qLYO_X0~JUE zCG=)fSjSS6Ez;cq)^uCxF&sA7w&VA@vwRVcNIx(XDSu;pWgc>GA;gB)vGUXczBWk< zpZ4tVbX0iTmYBT5Bme9ZJjEoXj)9gl7MHmgFZY=E5-pRRyOM9qhWmhiuHl>W_5CpX zyw4aUX#u7_CL2CX?@SjmkrHrik$7NQB-6Yt#8RPcN?BeW+Z`4f$+v8#?YpC5u;XoD zs2-ABrpv*Edg_d9Oh*Qz9q}j_k<+V6KIp+gt#^A8f*u8N&0b&4;k|QxLJ`n^yL}~* zb{KszP=i`FK+-4!QD5I;kiw{^+xgEDs82jpLhurKUmgY1 zm$bE}^NGy`%*oaKu#g_TFFj{wS1RzTUs5@D(gwe##)g(nWVBqLz^X4Y`5a_3ll){!vzz~YkAS8Gh2t>wcNkVg))y?#nU*7h*O46DnlLjr`bOiu`?&VW-f1?h zeOGR1YebKE%mIt>xe=k zYWXz~h4>X6C%t-qm8!~Xb1XU?!%o}&Hcs4(48mx&c&NFuVxT7D7UJxW>5p|?IwVQyVz-^DS zjT?D1zqs{v+kF#J9~V>DmPmFBF*hG#TN{I}qn7dG%4?Vzjl$&9zduKAu>mcr|2QV+ z_fWFmsOEONLX1|6G_#p+Kn=a9kuBZ+?1jeGH(Nm_MjH`q@P7T&-ebGek`7t1b;)`| z%ZNW&tlYwuy6^0@LeZbs)*`QNZiE<3-A43#y*5wju`))T4)Y1Ng&Txmv(;uUASU&j zm!tTjD_CCDS|s?f1+!kyt#XQ)uKL#G?c|;IGiONno`EK*H=mkV?rIF>W=0Hl_*`L? zwG$Jv56HBolA_y3YS#)z54X5*O1njuT?d>5b=oBYMB#YUXou>^Cy}3mA$5gN0gRU*7rT+N{hUb$BYr+pV~2ySYW2 zQXnnfF%lwQezTxPnF)|vTQ09Bwxo4+(SjFcP!lcSDX1_fVC!i^2`bJ4EVV+1*OwhSr z$(l`YONZ)|P|D`Xhur(Sm8GjVk2oVIRJ2pL%$~mr$?okrZBKruPr76PJSD_1c$Sh5 zy6!97MU#pntBpm4F9Oz%NxPl-FA&5m1K=V(QnVxt{QqdUKeqw)bNI1NSN|{Vb`k>+ zmuvlJH^klloexMw`Aday2Ppq#yrfX~7-KgV3{KlgY3n+o0>;_odi>OmWXbu%Z8i5<&>wY*LO~MgqeR?(mdbBmt1%Z#8=whs_9YE4t=g15!2?6S{ z4ppY^fLQ!$0X3)P99R!zW`ys9(wT2>q|w(qIV)a6dm48jKhjJN@yr7Dmqjsm#F1~5i-)WA(b z`Y9UD)J467ZEfZs-YM)BUg<%5!%d8~85oK2Cw zVq{;uYZMQpxRRrQ$(aj!V>)>SsKr$Knz`2kJ||8PkC&^xT79$gpawqXgE<{CLY{o; z86v;b@w4R`O7+ZuAK;4)WWxmR;%k}iB7=&_LTX2(b?g)B+X`n8GfMSzS~7u{U9LKWhj}fdNyk?lGWyU0l}!p2$No(`|(zn#s{J3#blq#YP52pFQw< zjG8!J!7j5JoB`u^ygWPPTfQP6R9pfc5C~&pg4gGOuAX$0I#3SeK^)zvIf{u3of(m= zVq~^wn*3kOgG9sr)8{JSWVQl`<-VFJjtsV)7|5~}h>xaJ{7H|*4}Qqr(vTj!+1+di zzzqTpk$TfYi~S2w0SriM2plcb17mS-XQCJ#6y26`T3M*FE~9^lecBBGWyfSAm+(XI z{s8~Nhj$$7@dHj8N*(A%JP1#0|MUBN0CDU{+@}WSA-B`d#e?tJ3^5&dQKP|3g6v$t zcYN){@~sI(L9d&FlDE$X$DR9QkdI==bN~5eaU?ZqI-nH)FmdJ&N1FQTaV+`e#z?fB z{zvw_@NsQ&SF-x94#D3&oFGsLCWiTlV;eI})#x7+vwxgVBNPK3P4{51(fGgP{2LAA z8Jp8QtWZgCn}|sN_VLUUfeqj2O2zo^ejWks*MmPe%x@wF7YG3DOC>*V=KL9?puuhU zfBFX5&Vvv1T5duTJ_ct+FK_s}3$Pmy4gBf|2MtqzlX#9xaUa^=9z~i05FBE-D}VB3myi z0D|}-W&pf^ZvhHz4?y$T*jJnN`~B_!7_y4)OBWvYJDEd2|MRH?VGC$WO^@jH*Er-) zfU#9?u(5Od?M-M0066+Da%6}hhZ-)yO5IUQF>()E2`1JkWllC4Y6lJy*P~!Nd=9+) zDj=&6`N1LsK2dYdnKf4nIni~Vczt~54t*D}31c0i^V<2UgNOpD}H4hzo znr6S;eFEem6M!xdd2}Blb|Cgg;7J>X;qwpgiomi=pbTZCVMkGl6UE ztz`T^+W*)p9Yz61-TXVJCJisg^bGBFuN0&@qp5M}0Jr0u=SE`k6C*n?yA;B_NAw`o z&8MRB2>ZIV0u4-B;E!_z7UICKXh7Fk075>e0k9JP_|aHJNjrn(We8e&Ho-@-*5B5k z0NSa_wxr>=iO;S)qyov1QK&rxE}dEzY)-+vTA9GOri@JC|g=&6S-?7EQOk%o zz(*`4`tNEy0=P6;qReMzr>++13(aMOZf@7&{HAOoV$LnUYS2k)hX=Tk@rK)DVF_;ONj*=j!;rQK`+77uD1 z$vrfTs5|Pl*C0+oTCFsonlL7+A|z``z+JMAfDODN6Jx*l zo9EqQ}n4{ z0bz=Uls>8_VDxI<93?(7S^JGP2{Ho*k-*v`Cg5F>nA1ysm+v^*u70<}A^HN?>bjoN zIc%%%>=pr>zY4sIbze{ynKiluy?lYs&}6!w5j^_a2*+^^j~eT&m03i4NqkpGIBk1t zLOt(0!1J!ue8KcoClI?^#Ah~zdI7c@d_%COER^S1K)X8gsvJ_vz2T0?&=!11MztRa zGtQo+Rf+q6g&?fQF@fx_s(JcLyv_P04lGY>0-(%~h|IrX=B)O_i7;O>*PXKE6=^+sTQI#8q7?PC0RHrMqS=eL7aj74Yki%2Z+ z796U*{KvmM@JtN}AL$J7VTx%k9EMiyJiMelqI2j82o*Mz$u71CEoEK?`4pnC{+w+{ zI!C1f4+(+!fc(+Icn{^4i@Bl+(BR-Xg<^EJN1nAQy+F>IC8*J#}kF7KbbQb?0TyUQ5Z{*K}?=a^xV8+ z?E^^2VZkyA=+jk&b*k3YZvihsn@q;iD$1NeDxmTwUwA6Uk!H+lv|z{#R_yG6J^KZf zub5rMJ#&>Mz=S$;`TJ83BNt6H3+ach|X)L_6h=mrN|yy^Q_Jj7LD|0V(etaRh`Y>2rx#_ozzd#7y~XDnr>-hYzs8g80- z*D#X=F8;Ezhhf(u_#2^Y7(Xd5jEdqCl%R!*s6I2jU77rb?Ix)3&_)2tC5Y|Mv8hZB z=J2Rk(_|?w&M%+0mfD<~Xe+etc$yaazzG*f@o~{eE6U6W&5_ehXURH3R422nd)Sgc z;NZX%>IOSW@2NRm6CVSnd%k#ywy9y~CyKwec_3|`$8{zW%}OLzvBz@4e7}6_*$iS; zaQqqLG1n~|3T`lDVCg2bt$}f?N=!H~HW}FE*%e>#BnD~G{9}jsQxWz;dpGp(2hW8z z@p*3_A3K5qDZd@d^*5Fon~tJG%^aE_yVV>;z{!%!fS| zIsbUp7RCU%M|Lp<3jY?SS)j2H1s)|bR+yI$&MlKC4|S!#9ezmZQ54>-7c2IpF%I9gZ zk;!fNuA{LtZ@JZM7~lsGEw{_I6Pes^E4+kkq`6rbXvb2TUmxOeYPFTh?Btgs#S4-# zI4#%*UhEb!`eOVJs+j@8+e0LRY`h&)^X=}-6J!)L%inJ8AslV@&ekZ7QArr`PTRiCe|17O8Tw*F zi#AW8u>Ff4$w#bB_hHMyt$~dB0{jLVU1e@c;@={c#NF&Dbd=1%{hhF|1l5!9hxG0B zx*-Y9wkOAbisE}h?Z?QGl|!r#MRt1BQzEU)7>9ALoWC3O=ohQG+-+)sN+2nF;@R-K zCJLS2Nb|w0i#$lrU3TCFhVH}2=5zmMCD4=*Xd;!^M@do>WK~B01qguiKpFsoo{R(x zL0-R5>B|71DlMiRm77B=A|Rc7nXS|suqpUQt@H-c;uCo?-yC|;4k1CK{MiRLm4y;i zSzy-3-BdeIAS`NwLhJ0`--SVo2|z^=s3zZUP>M1L4Rgn3^S!B6hyp3D-H~XkAZYjB ze-{<$HX}cuwkJ^ih2LCu-4y7T2{}b5jHhL-3o)H}=fG7nmUUO-`ZnW`w=a z7w%)}?cTs|kjjgRSA^>Ze$xQYocgFV;s%dX29Lz_X3+U&fUXeyRv)A*_V46-<=aK`Hw7vY7?HB2o6+APcc(+}TZ!528SWd)Po%c0+X1HVCY`v0fk|1bs5(%o`@bf$qq1QKgN?wbNOL-{I$ z13+EWVXDKTnP~@kBT_j4m4D;{h~QN~11jj6o&kxIgknI>D+!(AQR{onZAdY9ctz0^ zwcJV@{bW?|DP(k(MB>-EtF2s)~7Z3peNFJI3P@O zj;IBuwC*4Qg{y3XGOOS6>J`33Dadui_eCcm9ko5^Xm$q{6XQT=V8*ugP(!%=<>4PI z=S{spQ~ z(ke&|ll<4G83cs4QXuiQJQ-5u{_;NaWq0ktF+kIRv2JU6ocH0cM|?}>+SIP6IZlW- z68rPR1?t$E?OUdxOFVS}aswvT5c&qd>Nw$~1O*nUKzF717uafsZJ3!sr9~HbR&8N~ z{aP&;W>Eohf44#`btG|J4h1Cg>w{sN10D9+Yq8;I$Q~KpIj! z2ar)mG3L(7m>+nn9YpBP@}=Mkf7RR!TDmYbzDG1cdi(_m>yTh|1#?H*(+%%ffE0sq z-zfM_2sjI-;=vDqNejuVh?(f4H0OCjSog#1;5)Ci6f&_=_^hK1uVZb6Bi}rFcjuod zqU8_arp*x-;FX-{8?2BbAQOI#+^HRBqK`B3QTLMykb}Nd_zj&2Vhq<4@7)NBrKsA3LsPVOOj9!VqsaCr(1pN5L292^!fD9#&dc-_rWQVE%X zey+2Y$Y>7{qmN}0D;ZEZ2Y=dmG2dKyKW_d*zcVRSCa9f@i$GgK6+mge$#;t4pJ0a^ zv&p>|ZQ1`1F_$5JrnQT6=HI$2(@7H^(}_w>f1bP}r?GMnFQm`Z)#LLwD+4P`myySL zzHQtPu0)zwviDh~3Y$<-cjy=Y&Ej)FeeRjr{0f>Ms;w>rW%@mdo^yFJu` z*_%J%g2JV$`bVn27h+jKy!C=Tbh-)HWKh6<$D)gOv+CkO02T|p^IysUl27EN2l4Fx z*s(*5vN8y`naw2sMeGpp2QD9!6J`Itw|h(=`qh~M~NbX+%b7dV?u%OLD)y*t2rGKpB5xxPBCkJ>yNY4U^Mu9eRX zpDbiYzD^%@gJVQ=uJ*I8IlpgdKABD)mn!kyv=uxVc<(S`VFaMd9?7fSn6n?hmiJ#2 zyJnQzjg{{W_+Pp9`!M46zIJ*>|_SXU@BU>Qw+ck#cetZ7GlT^4V#>N8>}VjkWG=SWAArSQc!uDX!g( zax?VqQ z_Mm|8%n@gu$PJb_?9HM})))aqcS_?>{HXg;V>!JXxBqF+xyj069yp(?96)x-qLXuY zeP5a`mbiPWn=UuOO?@nXH?$t@>s8n3dd(AO>2LWRe@#xCTx3~-9$OgTkKLh?7jrHh zOc#QwWf)$|dxMof| z1fOQCA6mifZe;-DpvKAl%wtXv=G|pseisY0$=p73*tk`LM?l5@Yjq9Sc8#z8CeGXm z-YfCHhxm^H`{uXSUnUlgw|rJa1x3n1%hCNh2fH&Z zY(vkfb(2Tadr8#^1HN0XeIG)_H_WXjtCVZiAuB^k^$m>q?w{*Zf_Lcj%>W z{QR7tuIsuy5}?|Ch1Q34&veov-A_iKr&t0ph}({3UOJt2$rxu8xZR0X8-duiMAmd7 ze|kFLZz6H{LG$*^%EMgP5AH6>>(c>8pJo?Tn9yi-H>3?RYNz%iS1%JH$s8|#e4F&s|C>nc= zw}#aAjCdP>PgQ}>X^&|%i|Ftj{beY9?c}P_DCBhf~w}REgN8jV1?d(R+G7 z)8I4CpZD1VgM94Yj;$rn4Hg2(JJY5Q3SJjw01UihJbjxR)zdJL4L z<<_WqgT?&76mbhStf^BPyZV4r+uq8f9z-qpepfXag0EXk?5F0`t)IoJ3r*`sbaqZ`-Jv(=>qleKs5&ZFtG zgZGjR^x7SbAoC#`%du|7J$=4@l<0wXWht?Cn#z|S#4SC)^`gX^|9dk4=8fDz@1hGx z6c6l`hRQ+nK;rrIaU-y0)>||31|Hi9(94%m`zIZ~^G)1m4&;(1&?!oIALO+FT~obx zSmNIxi^L=at(~++#`p~rh5*kWZ^o~2J?&(fIu7Z54jQ(7w_hWHMgQD_kl>QCa~V}5 zkXD#P?T!3mxF5#k0#+8Tq0CAfxddiov}P{vICrz652c5gYlGu_B2s^hg;%HO^xzr? ziyedI$|f(hLZ8$X*cSy9cAL>9N~yqkHW_x5#4CvBIdmW|ac zqw6IK?8!@+c@sX{VJTRK-Oa%y?vrR|L$#cIPEGnnUdnj@~KGOKxXq`GQhPURGQuAF$ubzT>GF+^)lq418 z)?;zGwJnN~8U@#^xHL{PfVCrrLn`8to91vGSE+~-2x34KE6%XEl&C-YQgRoxQCO`I zwV^NggXs3la?@Gn!=ogF$l2`5LL64g!enYox{hCcv%;tb^|r5X7n!`avXe%dH;I0* z{36nDGWUBdwIH778e@9Gl9gjhEs=orpOBo9pc;d6Z4+4$A@QL4+G#3B&{Wa4@?LD| z&f#YiNyV($gFla&>h^I|H5%lWz7NIw5vJU!MMEy!<|8{`JTuBVAMKR*Z6+JDEGy*S zgN~|E`o=k$cYFD#uiKUIfS1OgBKgl(GzZybb!d(1NpK(U<lPQ1T-RO4F7C%5H@(V~r_r1j_{WAVbF#6X5`2~<#u46i4UApv)*I1{yO{I`(fBWnzR(5xL3x2=W3;X7 zV3LP7!)TEe4Z~cXtJ@_wa?PGdJU?`cei!3aEn+<_?d8QAo!!V%9qN=yu|;}(n=mHc zF~2g(@FAJ+ZOQ>e$+Mhv4-z^hj>;-X3TfET9b=@5E}sOl!%|F@cv|Zyr0DY|=Nt62 zkVA*dqoZSaa_KPBsY`_!H_jf9)amWR+X4e!N$9r-PyQrd5hdcO(BwLH(8qr~|IpTn z88W(40jfg*nLNS8nHi{x1jX@15V6*mvwciytDocIMLlE@Ls@A7bl#{H&{k_mr#wKRguRZPhtw9Q_>05L9=X$rx z^LIWw`hH4{caVFk)pQq=E!3spONu1&og|p0hSOqLxHw^YnRDzYtNGmw38&t$s#C@e zw&8UayH4IHGr{P-j>!$7wGF^PsmCe~>E>+Y(GTKZdh}+(!gUB#M-aKH#oH{)8cVP7m)1{| z-EZeUH|H9&I?-G5&)0U!i0o_Ut7jDN$a^fekvQAb&^qjFNgN1>E&3N-T|6zUaNE@Z zo@0b7E^H@EQ7rcZ%g3;4)6xm^r{pIffjbrIi}4vyVVt=)kBie6AcVQzug{pB`1oE4 z#>v~;8;KMaWSmYy)a2a`ET5e!&c{U3OpuFQ9)tARn72Dh=bi?9c?X|S9b=?Qs` zwSJ}<0w!tUW^(-};BJlf(c^ToHXYU{M&lM3lfQRY=LJGTV*T9pfw?N5_Jv z$@jRsB8R>TJ6+SIpFWfbE*TQQ^gcA8d+=q>g4u;B$#SgbiZO@R`6_ICnCz^x*qE~F z=fLtRuD^aHlPw78_I5H)tQ}$3#@zmU*Jsk2_-P+#=ySthUs-oXfgB-iLtldZ~bN1adCxg;v zI1EFLXupzp#PS*>8}>>8whZg|M9pO{(SAQ`h>{thterRMHwsv`ga_?W-BN%Npm!Ta zN)Z`o_)c2ezhq%vM%?w)Zz3wP9F&tJe>_!8M}*qUk1)_%e{A0!#AeCu93A%)?~|$I zVU&3biGaPiR>xc&0aNjn2|CxvD&q=03gHh_Mg22f#W12=;SFXgDng_QBHcGN9bSQ0 z%2?7n2OMtSoJTPpxN%_wEZieqnHWpnZ>#MRxbj%+ZVGz)AkQw(q_tr$qSiNeW}#Qq z_d`e~eHBwFC8;T@YC#KL?jFlSJ(`jixV2RuG=J#qVz)e}5$o~(jD8^J#KZckLqEn! zCyl@J@}S;f!n#Kfmf;npqI>?zD3hJ8I>JLj{riGV5PZH7LX5M>9$K9^@S8>4@u1I=;f zZ7*gIg;fsvvFqD>8~NxIezzz=EgIiU}SkqSwQ9Syxp^+5nkh_GLe}$vCn8OH9_By5T6c zwz9gHb7$_fX5=+q(M70fD@yaMdePo^D#ib&5|4Co7{+A7|tNa8Nlu+Z=P`6W59 zF0gHHEQ5&EIum1W?A|$yL+a%6UK0o{=Mss$koQX8jH{xlk%T4PW4N3Op2p}Z3$@Tm z!@b=6<#!?S-H7;zJ&hkvxwVji4YQ!s0sHdvixDr$fhCSuohGyFcp};byd2Y`OH^d1 z^zB$9JCS($k&(AEv89o#s)os<@0l3~jBQy0REvY)ij+y02ZO4*$a5HK#;t-wzV0p7 zL$@2FxDPYnrYBPl0`JS|46EJf@8oQM|~D++}dxD(DRSBec7;% zlCf!Z-mtaqAvRBlbGhhxr#tbnV9xY+wj%OsW`UJk=T9{G}m;7w?9Q}^P6!VE(N+qD(5ygdOKs~G;jJHpKX!D8deyX;X?07<-UC2 zexoZ-No5WHWO3G>Dwmb;%h-ba-Cd`5mBr+GLWK6NrJH@+utH|s%hz*4Fb|DL*`57X zPiLb;yd4L7Z-<6{_=wO`hdiB?8Z+V|@nTsl6v58f{_owE^@?ULcu)O^e%@8mCnm)? zOC0>%6ZewunX6gm6@qWut%%gK@cy7bFIMBuZ**0pgJIFQ!K<-sD?z5|Y5WmPI1}$Z z=7Ar`+e%Ui2KGEZJ72C9*Lp3-_{t{n_EMAodMZ1xsTw9VbN~K+=rnfC2D?BfRz$g+ zmBsBCI$Gy}Y>&}B^$YF02P7YyBv5V2#XbhLSeKHYg^!-(B1c}pG%bggqZo2(|5I9?k68i&gZn_Rl?uI1m?XIHFUyARXM$X zkf|ba$o7Ac-7YVT>wA>8Kh_VD9b7s1`s`N}E>2e+`38^rDO))8g<3%q4h{enWzOc*;}(&dMG!h@yI zGHPitK1gQa@QAEb=k)-R5J$gK62-_pDqH*XPtp8kC7l3#xJ$p*Y$tvqW~iY1#a;P(|`xPb43F7S}5<@ei) zD~5OpN)OS8?-)CJoL}O%Sj~hWF%J`T={jz_PPQ);I{hWBE;4?pN09}zlSpWvmF1*$ z4#Tr-Q@@@jIWHS8cOesxPS6s1qf$}cG977sa7+G2#5<%js(FKhAroo=%ZG2R$1l45 z2wtkPl*`vJ8Xq|Xk9wG?|8&U?aGcU_K5$gTi0d9Gv$mv4OEhQjyFf?`x-PwVIq>wB z)Dzs)tMw*dF;EtIQ}WV@QtKT&97~NZQ?GN7KqN`Gi8n>m8c%8H0xn5d@>DLmKnj*X^ZjAvm6dcX|J`*8loL2Y zU5|U4?9v&@3Rm$$DcAiEzjXBMj^`H)Nu$5PKy7|1Ao^*Ig*CWq6ZlSxAC@|dWD@;? zyNY6xznHdfzK@q5X;OjNl!-xp%k;P~xK#Ztij!8LVvSwyoJW^DEUN^|vfNNE!Vjxa zKl|fkP9T4W0cv(;^{Kw|I)YoGk&m*9IWnD9I&#Iz3D!NOJr9P;7g(evzy(P zfKl#mnBr2&kJm9_O8p#7tUXxA^-Its*CQaWVjTT+KxqGQdQ{8~GrKsztwQ*?83Wm3 z-;PA!kSNS{+3-Zmn*-z8@`LPNE`!XIQj$3J|& zVVnFwHI?+{C)KD2Iv>5lA2FhQXBg(ltO}-@VMyo|2t@hQ}V?Qxz?J~j) zuvTN(!5Ka_FCn*@)*VCp&US+L-1di;v)0oFBRyOwfL-)_OE(F+New$2h%Itn}t;LM%nMh_}bZy;@ zIvn?qDIq{o-k0eL;zH+a3)myS!Ox`_c;Lvv?(J=BxfUkIwlOU|_@{H{TD^O9oViBkr$@ajFH+MumU= y&;JM;ZQ1~mPOfhlL`na1RlkvtV87jO&-B}c3qgdHs4^1xM_FD&u2{w_=zjskRH(rK literal 0 HcmV?d00001 diff --git a/docs/mint.json b/docs/mint.json index 36e5f60e5..6d661923a 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -65,6 +65,7 @@ "open-source/python-quickstart", "open-source/react-quickstart", "open-source/telephony", + "open-source/livekit-webrtc", "open-source/turn-based-conversation" ] }, diff --git a/docs/open-source/livekit-webrtc.mdx b/docs/open-source/livekit-webrtc.mdx new file mode 100644 index 000000000..a5ab8dc6b --- /dev/null +++ b/docs/open-source/livekit-webrtc.mdx @@ -0,0 +1,44 @@ +--- +title: "Working with WebRTC" +description: "Use LiveKit to connect Vocode Agents to WebRTC" +--- + +# Overview + +[WebRTC](https://webrtc.org/) is an alternative to websockets for real-time P2P communication. Vocode Agents are compatible with both WebRTC and websockets, enabling developers to pick +the stack best suited for their application. + +To connect Vocode agents to WebRTC, Vocode uses [LiveKit](https://livekit.io/)–an open source platform for building on WebRTC. For a background on how LiveKit +works, please see their [documentation](https://docs.livekit.io/home/get-started/intro-to-livekit/). + +In this guide, we'll be walking through how to connect a Vocode Agent to the [LiveKit Agents Playground](https://agents-playground.livekit.io/). + +# Walkthrough: hooking up a Vocode Agent to a LiveKit Room + +## Setting up your LiveKit Server + +First, you'll want to set up a LiveKit Server for your Agent. For simplicity, we are using LiveKit's hosted offering–but it can also be self hosted. + +In our LiveKit dashboard, we first generate our websocket URL, API key, and Secret Key. + +![Setup](/images/livekit_keys.png) + +## Deploying your Vocode agent to a LiveKit Room + +Once you have your LiveKit Server credentials, we can hook it up to Vocode via the `LiveKitConversation` abstraction. Using the starter code in +[vocode-core/apps/livekit/app.py](https://github.com/vocodedev/vocode-core/blob/main/apps/livekit/app.py), you can quickly deploy a Vocode Agent to +a LiveKit Room. + +Fill in your credentials: + +```python + +LIVEKIT_SERVER_URL=wss://vocode-agent-b5oqfgl9.livekit.cloud +LIVEKIT_API_KEY="KEY" +LIVEKIT_API_SECRET="SECRET" +``` + +Followed by +`poetry run python app.py dev` + +And now you can connect to the [Agents Playground](https://agents-playground.livekit.io/) to interact with your agent. From e187a3a0b9f7f791850e16d3f169b9871bf00bff Mon Sep 17 00:00:00 2001 From: Kian Date: Mon, 8 Jul 2024 15:51:09 -0700 Subject: [PATCH 02/11] update image --- docs/images/livekit_keys.png | Bin 35163 -> 38926 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/livekit_keys.png b/docs/images/livekit_keys.png index 4ba28f27354d5ae86adbed8fd580d2054f6f2398..d22eae27b45522c5071bd20f83d026ec2f1a92fe 100644 GIT binary patch literal 38926 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 literal 35163 zcmeFZbyQSe+&(&lbVvvztphSh4c#Ff(jp*T0@5(RAT1>=CDJVzl+xWD(%lWx-S>=N z{k`wH_s{#+UF))D*36u9_Bs3P{W+g__VW;;sw|6-LxBSVf$-(!q|`wmR1^>h#TN?$ z*uuS3;s<=7IIGJ_fC~GmHh~`|=GyYFm6SkFf$vx#lwd0mI`R{DVe{`fnOqzE#YtnL3VaGH#asn zE;f573w90x0ReUxCp#x6D{us>v%4MK7{O}i4EgUQ|IQ<2?riF0#N4@iGvt-VKqVDy?afCQGdSf`_UE4s4Mvp zbdueysX%le1^L=XuidrZAhcvgeN6Y~rP_eiiIs17QZN+yUu*Fo-*8_%oSnZX6Tf*( z2g&drtx)*aCEj;WFK`rZPVN{MIQnd{Y{c|~~3)eW3ieQ%|uLP%Nj*EEv#?y7Mb+wbSCxA zk0rTn*c`Ffct5ej^E+s{)arrw5@qn9Jj|IQ`ZIL*{ott2QO@1(5`FH}I3CmLu}Y_; zB?)Asj*Iz#DQw4PM=1tse0$K`AKqOy+NkBEvH!*i8p(mH|Luc90%#btNa35r3(CrY zq00^9x<67GC3=W5nwe)U{pV)3@KMrG_nS$@ACawJoIB0NJhAe?K3a)d{TWa6fsi%u z!Jm%gSD+*Ce&H5gn8<%}{gn50MOH>!Gk=rf&lLN;mGwOXA&iNPO6Z>p^=fDyLLeDW zN8k~EOhdd5vOtcmzAqtm?*m~kYzL-t(Yn~ujkQl-`ro)Eq4|2-q#1R$$~C#Z1|~J3{k^a z%RluA?bR0UTA>jmM-fVnx(J<*x@Afh+pWVW)1Q0AfvPO9N~&ufulc)Xul{EXfsjoh zr;|-l-KkT@yyub9_Hf>So-sV*8k@@Nc(8o#?e^q)x{qB4wVU1rxi$kS3Q;~edh-_) zJdi!Q5eNav(58FSh9$>5Q&_W`!~qh$Io7Dz$O^M@ZF7rZaPb$PF1IakUhik)+N-}R zyg3>WbAgz42mUvQW!R*nSQGGJr2?%YgTng=?0$iDs;jekpKtn5X;pqy=Azmksa~g( zY|Utd!m2Xji@%;eAp#~=su8#&C;rQ`4rliSaixW)Q_YP$<9fr&VmEN>Um1RC=Un~# zEw`83MM==?C7{blm*JO1w6N)$W97S#;Na9IRRM*82E^_>t%q_#l+uJJm4$Y=lVQdZ zHWz?-xVM-VUv7P)#Kn`1q_Rr)JPZ-JIUYXkp!KP=cAc_foObGAO(jQZF) zTV19PSjX;!^MJ^DVF4-KdCA3EvhH}HzHJ20Sn9qYG z_?OY`^^uB&eErFo?&<0DotIWpSij&li}iecT?Ck;na2Cvc-pRJN6+1^{^E5ctf1h(sbeL|cY%QJ1wKAj!A)^rOAIoJAR!~k za!BT}ehqkRCmfvB+Ob#G0t`+|A&i2n7o%E+lLsBNds*5RsV-~k;oC(G-meXWUKk8= zyG<2{7xL+2;8m_e`^V+`J{GoT$DIGz{*S}(V&_-Ti8Y$53E}>eA z%TnyiTGC3aycr~eq4NBAcXpb0#z8WH&4A?aozr@e{e1oDh=z*!VSvfr$d_0T(FZN} zAZSg??~GK9;c5ioxr5oVHSh#|R~-u$2fLAcwenvQxaNmjY~RmiXRu`6CwO)b@Brgj zP@+nD&^|>ZOJ$79URx~m*#{YHR0+_pH`0F;!#7s;xj((A#z%bo|PcoaNBl?n~x#ySj#m%=BaJ9tk+FRo-lf(I`QDI=#+j z6Ld1lvoN07^H;9!m4EuiIk7K|5uL6bJN! zeC(4+zIjg#CMpGr+=v>{IL{-n!PR0gZIIYbc9dxM_3Li*rknm3Sj~FE!w)hY@D47p z1{R0T?4J0f{NOl?j4`yUTD93J8!wk8*B@arlv%eIUn z)&PmQd|7)?;Cd-La-MQ!e2KhgNX69!ni(;&=HBI4<2cs7i~w5zh*+3yIDFd9~NU;fgKA*tQ+1NMuS z#`ic1Ja5ofk~?6^WT-*JXJ!HE{)|+^bn@?Tt?DnD{F) zr{V?RlS3{~&<3ru8;)4TH2AS(BvTw_Iv%&=y8?7>;&Idwxp%vHa3FssoKZNCt$98A8tImcXVzll#5)40mv8$s`p; zA#Ly}U^}>B@A;l;cA0WVmdo-t9Uh&sf!C;IYHwvEPK5s@7if zkaybVXYUoL88LhcbS{F*KUXQ4w`5R#{!a|O?>7ZeC58Adm7MPeQQA3lr>mXkCK$Y7 zOmUESopv6^UhgoVxrB|_t2>*Kn=@^a?ho~%hr2fb0i^w#MIxKg17UVL6B;V{WSoU- zAgi#Yw687E4K8lRVSe#ST<+DJhPXDnW>T#vd#^%71t+6*7>~*a zKT7m*_+_F$AwH&qvJ|Sa|>mT6A~aTNjhB&1EXW2LZDldv&`Cdh^0PQJmu1+`*`3qUjwo z667ae^3t}*aOV)q5sCYH%jsnn>1|H8UqEp*X};V|az;%QPMwc}`BhM_ga;i~qGc&? ziL=$?g=LoIt|DSiHNe6=_eEtYM${E2eM9esu_T2TK9CDN0<6_7&xlI&E-I6>qVhxI zB4+x2aX^gy#SO{*oW3|IsBqcBxL80(*&ow&32glS<*vZ|4X4j^mO1mE54_*fG?|+9Sl-v-fq0UIE%vWVKhw3ZD{~&F_1tet z9KD4$5{jNT%C43}oz~(xXtXPXOrBlr$7FCDXHsb3hJSo`ax_6Tuz2)cWS)CLc=#R| z?Y8RL^QhBuZeS-{yrl#3&>V+ZLYT%C%JhaA{h@lB;uHG)(rXivy zL^vI?iaFo1VC5QoGH8;6u!XY;Q^egX!o}rC_d3-{x3xv)t{KYrEvp-|#!5AX5)vl4 z@}`duCdpODrP_7bex~tQAKgX8sN9@TCSN*VXP-_Ez0S~qLwuiSZNN|wyHwIWazqRv zSD#!^S>CqrH!2MXVQ5SDo7x#X48A8FEp~gp+@IP2#JVbtT7js_AK0NsKzMOxK2UoJ z6%c-ahDlIrH(T9jj(*=z)ct!Xk?*&3SxTK{5IMLJbpXqr%Z#Fp+2%0zHG1*+{cP-P zoa}duj4$;ZrL|qjG_*a*5D_U8|mt2nEq? zOTcgtrD`&u9D2ZSxkQS$WgU=F-}-og6%bSG**0UP4R3gom2@jAc&&HhFJ$CrBE+5GO|glKJIk3aRe48ow!ae~?QbM4w# zU3u4F4zQ=g=^idriiR{8nf{E>`;}Af+4qsXYG&X#+7q*BuJPZQmtTIv+4X#;AEfQ3 zWi7mix;t?^-!XAMj`_NOy~dx76-ZJ&xx#9aJC2E68$vkLr8xpv$hw zG$tA{b+#HEk);nc+Q~gj=)yocXuoPDEs}jEPq^~6@5>o{Wo9r%U(rwO;SlkMvhoxS#XMb;__g?_{M4%effeI@~WaozQA2VAiJS8e7u zpns0MnrbK9wlC0{e9Xn8s>}TewGmAf3(Z$Jp*P8Q3ibD}aeq?6xY6@sew9B-24Dwj zsD0Dy7JcNpgGsCtO%y!#@dpG_Et)5M+1@m0DWZ4#ZQ0=In(kf&7Y_Z zlsu16!6?#RI;z+u>M#GR{G>8|1K0qx=BcLN-=d9<52*c}mUC2rDoY8#*HZbYX^{Deg}`49p8P(7;?P_vwef8&+h1 ze%YmvD*UaQyCZ=HKfb9yko&vA2|@><<5Om!{px2lA-IFMo6nzo0RV3R!Q zb?Kw9{%#yh<@DYbNdC&($aE*Zek**l+#c~0$Vd7fl(SK312xA^igSO7mZ8_^>%OGb zAKXAbINimVZo^zynFZ8-vb+}kDeufqIw4WqqC$NMkZ+Gi>qHZ{Ic5s0x1L^|j2rGC zE9upkcL7ZB$wQ_NY{nELYC(8$G(>jlqpqEm&`xPAKCP&5xgJo3m^EES**Ff~BC8dT z?Scx0wQLii-^Knedvmjg7fEkeHXhT?0L6Cr4=J(LG?kjCPDEQ~hZ=dxWfV7Y`x}GV zJE6>loup}z*Fc2&QB;4~O$|ZAWvet=^Yogwn*5Qw19<4u1%JXRTAypR{iR_mAZIc- zZA2rSut@iMebmR7?y^1B7b$vaS#y2ZgRF^|5lNGedn$8Hu;U zIzK8`rF1M@++OXamgsexcjr-w-Ch5@0ejZ-SCyiIYfJJ=^OXRXxBdrJf zozA)$T0nhnFV@-IFCT~o8WhF=w?U7FQAuf2?6)0@^U$7S>8l#VS7l#DmOWg&#q?wn z%W|f&gyYZ_sO%#~ZWNdc%;vqX3bsk*dL8moQLLWOF$n9#jYI+R!a11TxBSGH22F#PpY*|LKspqmwEy) zGe+t_^(>Clo>Q7LCz>MdzM-O}Bj!McU!bERF6wJp3*V~*|;gFxwHI96eAh^*ypYj(=Z54)LbIAJ)Rze_r1+)u? z7RW&Ks2uOWDEA578&ksYjIH^CKvQDIvH}68na(!v&1}()vS^ctG6n2Wk$vrf3|RPQdK@k4dAWjx4F7H{P>fYw z_DQLhNXk~Mr+G{PCX6i12T}yL^0QMMFMyJ&#?*GYyiAf%WW)|=zg~8L(q)}36JgW& z;Zb41iaJ3$-)F2kBbL3&<;cRD<#1fP5|Z^P#2ha1y46)>}1SbztEly09%x9TkHpzgb#e;XbH^puCgC9 z@UR_cUwl?~cYB4e!t~>ODXgYG`j}%yZ41bN(}dRV20M0u{HC3h`3AZZaYbc!ji0}t z^(f~AFo5dPd|hqzy*SgllQCy6QkhR@G%L-+(o`1-BYQ+PE%-`o&w!NFHvkE2N$yO$L z(g42ayLD#Q`-pDTP%;od8KT#LdOY@w?_tnWgn74xp`p>5A1pJLu2$qib0MQ|w7 zu^rg|@fHOQ%{0IZZ!!P;3bJ{7y2z1M*l_z+5_`~KqT~Ef;@a`7VUIQ+Gmh#+iCUE$ zEZM6gD}uWcBI@h0n`B++Xtj7FypiGW=@f~3gAp|3GOoYwZ7TdIVD+{`wHELfDa}u) zFRNAaal8FEI=tFNad0E+XNl4TwE-McPqzU;+fp5)7JE;=vo?250HuxoNYx?UQIq$p zh7R{bDcZ0>d=k7p0DCd}9AqUKM@w_OJR_DW(hi+S zNC?cMMwRO~5ni{LgfzcNvBqjXwoKF@J711-c+BDG}1AeQ&tEJniKg zsEihKZ>NxH8dURW0vR>YgwnItS8`tQXX&0Vx*IJTKqtY`X@^aIq?h>bsUwEEVBW)>=-OiP5tviAO4_ zPcJ!TLLHv4)`Gu}TaA9zd;+~8GnaI1iMGCfDNvZHlBts2Kks#>Z_!u<02J#z&%BIR z9PqCk-^qp?jXb(S_*-7BMDg~D1UJPp4_H!I-J}uX3SC<9tMeXCm6*!9Q7p%CHU})T z+&@Ws?&CGYo9-GP7i`%eOJk)`%C|+S3_IO`IeXo4%r+hPVu|A*O#UZ_#FxR4tWs4`c-G2f%}lmcp!qUY!)Cw-&u)p}&7%#r z!t>ymoS(8Vf{!|{AMzc_9JG9>ZtaxdmkoZd`<%ERKi^?{Ny5B@{vFZz_0d4b)AZ77 z2iwwAXS{4Cn-(g`rUSDOK7&f~>~E#mm~J!O;P)&m^iMrfcMftZJ z;now697US^D5qFKQ*?U2d&1QG*@o=eX7wl+rZy#HbsnR%gc0|aBpiO;U96|u(Y7gg zLPLMucVL9v9d_X+aK2h5%5z{4Ev%zo#E@F#VkEC-e5jPU!SNdQcq6X%Bt$(t^1bJE z<&K&tf~3}gx*H>mtn1~ILw`li(pJYlj>p(SB(y%|=bn{%fT|$rU=#$$ zP(ZnYAOPT|b72W-hLbt2I`t0pU2Xqd?FjBMSG2(Pz$2S*QsD>9FZj@gX?hB?B%70D${fUzc=I<~xTfPT4-Jk7{)IL%6A=_~Fr{5Nx|A zGt0s<31KU-bxPW8o)RYnTYY5S>|vp3Op{I3X#a%-Vd zTR6*cfzfJRc~p9e!ZX8I=D8xo_NDl19zMg9rXMcKcZfR=Xl1yMM)g!gWwgF~EO>{E z-D{`mj%%yGOIhH~8JD1$Gu>A~nb*n8kG*X1U>+n7yv^%0N!i+&T7;%8M;V z#o&DuWorC1ut-(=^Rnc+B{J<$m5i*Z_`JkzZ_aL!P^N1$FMYQbm77<_+ncoMJ-8)M zItF^bJM2do$=Vr|E0rLd6dm$jKyz*8gN?Zf4ee@gSgM z-z)Mz4nymD%^e?3|J>e0a}v<=0~I{pbsa!@YEZP9PP*)NOY1Dl({} zau$5{(w9qJ3apgPU*od9Rtv57&$%(qj~=kuM)~AwJj!nym`A-4upe_#4adIOGc3Oj zFm|5oNS3J6!0a7h#110Sz>EvIiasTd2b@zGRB?*qTVvvzh5FDMi=(;*ox3Jf9=)CK z9wEBAM13`P5k#Ce6R@*5l(R=JQB4#Dl83Dt62}6_6`7ipw)Em&Y1nHW7A0E0=G<9T za^Giv4ssWfaO^u|(ca=2|< zftszA%ez(UG(MfSjy>vC+{a(#%4-80Ifsl!cJJXtM8etf3?C|x$kv}PTzLL&gIp`E$dhQefVb$Z6d0uBERk9_P{EKEmGWmTh5E5orTA0}CY&!Ny z)$XcF=OtD#i@F>;sMm!Z>$!SA4%n<8F=3wc)sglWF}4}bUI{VHZ8+}Y;(_q|Y|b9L zGd@o-CXL|R<+J_p!$Og9cWR3!Y`KdAk1K6rK{QN3^Rf;WX>;ZV=B-XwsR=cpy#4IW zWWi?3R$KVu^x>zG4Qqc~{KwOMl9>Hjf(=IR1>|M?wL8?tDN`+6>^|GLWA~(e)@ycH z6m?frmka1&^lDx=+0SXyiSK7-6+L{RFK-&K)Bwv8}*){}rt5o2yV_3aak!QQ;C3}+Ylr!qaow_wQKX@MF9m`nDUnN)0`;j$LV$`%8 zzSQ4w&?-Gp`f_6yuV^)?RFnmevLao@OSWhrPhYwS-$#p)&{){Tg?9OKjxb7HOP31z<*jre8k& zqY~sGVX7}%>aYLdRt^9xMH-oFLi~3PI|j*Np%`uJ2tB9awLevi`Bqr{^oXG<2R0db zMB_TN*r#cLh`K_S8FLJKQKP5j_szfArTrX5nKxK}(0iev57n)AXEQ@gaoa|^jX`S5 zDL-QE?XJfcI;ziCwQ&rVY>{A18=jald*TgVn0n`{`h_<%sh7`QdSzSFGe5gtzQ%Rusk_vV_;i&inTCV39g5VuyYc7q4lVc$ zVej^+j9N!97kdH`xb9jFIsE7d5vMP6>^yep`@7y0P{aBu&!fJbc1n9Vt?1%#lIIv1 zIUnD)X_Uyv3r=dpR!Py#2#s*zX;_F`CoAdDE8n8oMR$EuqM< zYC?M)lLlvjAG^Z=N9ZHTph^{@Bh5O1bWzD(lSy|@K}wvUHRm&1=i#P>VIbDyws_%` zK7c!Z@I|G0ze`cnR8g=tgh?4#?PfjGc~KwJM&6O;u`A%Fq&HD%>PbE5^YWy)g}`}_ z^=zIZn8A>R-e+aF$939vT~w(z7%ow+T~v!oR$iNsqGFx~ACl+ISPIj=wYChez362% zQY^=F%=3jkpsw)RsaF+_BaCUaH@~(5e^h z5W4G1CqMK87T&9)%07(gSfrY>*X~QK)qq-6>WIY*sj{Ez?QO?#KJw)FP{hXhHY>6d zGViNGQm^OMh=N&JL=^KR{b!`Lis*v;!Pog$a~ z&!=czl3GP-eO0ax4tbx9{y-Zu3Top74B*k1NT zOrf7WDOy>>4IjKzs!4F%)JQ;5Kf)r5GKtef$9yy$kw`3n9L~iz#Mw zBpgF%w=(;Rg+9Hr7JwsDd!jMIo7V|fgIs!2=*J#pH`JZYO`FFj`(gMVt~ggiNdzqg zHSFM|=$-kP}y47fLbYF#V!?jmpFO<8V`Qzp)Ca@{X zA9^{?g6!Rr`a?{C?-s?qH?`HKerJEL{nfr9XQ=_7vo5UqEF^t!B$jt44AN1L+p5 zTKQf!LH5+oM$4=^2eD?#M|%KRZL-ES+o};i$j~lwc8P=zM6tsTg74Gr`0fep>&zw? zyzR2|fCUn!oUi$l&h`Mdc^deO(ddPmA=G=`@UUv3lAZYS*edFnd;}$k9kQQu3(@u2SU%S6E(d4= zLa9!Rf#g#FNThdV<`81G+~I!tSo1FdVSP!4`_%=W)=`H~R}s{Sd!*VL0yV{xaTXZK8Oc zT7}JWlRnCcw(x$}^Zmv4aS}BGtaPo{q!B07=D4`Ru$fO)(90a*=AbCv!78rmphq*X zCzXRlc5?(DnC5 zR%b3Pok-y_jr_8Vm-H3dF6B_8_XyY>wXz&myIZ(b{M0d69z|M!yGYdYyV)7l$=qn7y0q&}rtu$NvH)9sC? zpf6`|D2}=0>QR>=3o|?SYZf+Ak%+k(LID-Y&(9z)s@(=E(H`9K@3B4?q@JnMHi6T? zpF(6K;kzD%xd-|VP4{lqEASg4Xx8Fmp{O!dP(wi;imZxLPkIDh?R^5pk3>pvN?eeO7Ys8ViDEm;wg}U2BO47}(>c zou#ZC=iLdaj?n_nVj_|W*DEG3Cw^rtCh1-B)ACK{T=u!L58v)@I2jJ#z7MV^E_&3k zDK^1*?*XF&V-Z3acKShY==m1m^3eNJ`=(aZdqc;hI2rU)-&?XvU)Y zo;{8PxbmEGwnJ-{bu|aym{h%@lxS@i7UOvnXazHjAhy84uHfWzDd&~y2%wBCb)*COk3M#*u~TqvQCDOfiM;(Pg-8h|v+H8fC31l?;I zTTJ%8KkYJa#`~6^(v4Pjh?lZsUvLT*qyWv#Ge6sMn%{wap0@Rc1)I0)}aIJ3;`O2|D)kDW3t zn;&ooC@fvsCL_TAIU1~^=L8H!h;|BH$Po*wPZTQ$aywf|!UYjV4qfUm_i{7(hR2ra zHt1vRHsr$&fVp*!yctnln)jNr9kLwN6uV!#)sgEJD{01xikhJ0N?*IlCi zXmWe-TC+$mpQHN|s)2TnTC$e-XPDO38xSLkIn0YShVbN@Qg1qnkMon2gY&=A>J(G= zt-NeL1w~EMW=C|KINo|r@g{gA3I?*;e*8iZz}j&0!q=YG(TW3X%8HGvy~*b+&-Fzt zJS^Qx4nqOUi^E@?tV}CGW2%leA!Z4|*AVt?$C0@r=-fsM+W()81Kn18CDd+)J z#hc`Pc-%^Sn z{-@NR$(7Ke&@kjH>}K^6t?saDtF(q>j0Y>f9wuMmNrr2Vgs(t#;g|SmX;)!aew#S# z7jreG_)`!AOfqtd<&9zEuow#^;)_OphIug2oOQIlL38D#$~I<}@kMF`B8M3zvDHrSMbm#)VtC*&=zli&3m~o&5M5j#Jf!kWd>+QO|N)+u0st(V?Ns9cc2%4xTTvrp#7jdZ82>(8b2U_Z76uZb#nYqA$ zunB@>J~_s;e+){`X9Gd|!*Du1F!qxjH}5 z5kv1}3$s+9BQ{?{XGx4iDYQhkv1=DzD^uRI>n|6LmY-r}Ja?FMCgf02>Oj(Ew+z14 zJ%u6^s*ZyZ#MiMe?hS}jM|?ohRm(%$f|8pn{$sVIfdIwAEnIw3Llfm6Y9WP$F``4& zdH-$rg@iGZ@|XS-K-~8uegwc6Qco2o|8esrNInp$T4sf+{F9gj0Av~BFHm!hzZ-Cr zkSw2&r=tI$6Cxy*l9Lsu^lt+<5=(jV_52@}^8a_@|MMeZskedEa-PI(WrC#dD5dao z2>(7^Pqd)19{Zk%6m6`fx*432bJ02yUo!)Wjm6A7^wh;=FfNe71><}$YR`Nw7uevtSuan(95zv3E6%Sn5H{84i zLp7RtBw!IenKg*Bk@;IW`pWJV zZ$`VB>H*owczY!E_L2=C0|7WRI_0gziW2~+mBLBG?~oyKu@aleT?5}Vse60EiATBu z5D&@#mC!K2)}}o3@WsZS3=1TC)yY=9k@XzbP4EriXEad@0iqe( zKA!PXfFdR6kAmj!bh-{P`((b^=ZQv%*{yTMmkF|3%pfIiKXiCK)fuzYi4P+XL0yqZaFejsu zUd|qV1F)Ds2L96*#G$f(yj4ak_DDXFZ;a`S*;;pJU6)bKh(Z2rD|>WLfE%XS+_8~1 z$O_R9V4d^3N3QqlCQZbnd=`K$?9zRph&V2V!5)BCXN6ST*a8z|$30VKt>v*C!S}nM zV(#!6lINp*!L>w~M+kdb2$WcmI|S<1kH#fHQRC`E4JeCxbTsGw8`L+6;t>=ml{Fmb zs{LRPz>6y>C>wiax0@0T=dXx-XR<!Ra1qMW5FPR@K8bR zbA3<_$V#RG?#HIyv4JDWEkNtS$#%U0lK|l~Z<-NLgHX*KsNtEZP4q!?s6!T%`pM$A zS*wk@Fq78z3I`*{gm~;@q95jg+Z!L#wHE=@WhzRH-_HLF3<~d&{c{i>ClVY9e?Dl1j5AtEM>75>jp`P1Nt?NBw8ayCN=;opsdLsQ@6qU zX2zs`Ls;a%Dg0h=PRqNRN|>luL)(JUGwL~z-p+NTLMc_iH`~p@?BIi7)xvK@_0=&6 z+2u#s$A7Jl#t#t2sh%TH!J|Llq-AR_)01p2OPg4^M!`8XK9(ZnF zck=SA0^r?M3;5_=X3IvoS`&NnH|WC$rBjKTEYo1ukvPmdi3;Kekmn*P03Wcwk{@^i zcYgG+eS>4mJbNYZ^j={zA(_f0Bg6ITbtKzYfTfPP19&7?178vq;lYP;qP69Jd8i;i z3finCY@^n>a$8*s^o)F+%%~-t2w%@{rbyWmpfRZF(T*R0gR-63dv~&H-RbwQ_8Q!x z2$rI;0v{ZwNKO=%Prb2&@3k0#W`MyfZ>O+6m$d824igS39+aUpmzj=79a$hG({Ke! zB6oIAPL}H9D9lUK@Y^m%6}D>tpD0UHNhkcnLl;NiV*4{tLrCW1RSTB3Rc`!@>Dx@^ zREytgON)l*&qdf=`#A>svOQ~dtG@x#J&Q;d+<7dd(xL`dd8RX|k_5(OS@5{KIopZT zPbNfKkK;Lq|ti#?>#~U}9ascg>Upo*arH;Bi;9o#;s`O4- zE|g%ia^kxLEhRbXD5Pa=n%5K&!cTj0?%=W}V!>H@G}i1RJL z*yFmDn0&ikz@?)9PYm%`)f=7SML1&J`@{e{A$E`h_W%(9Q{E@eSU4c2moMj!Dg3sx z{9NlA;7qDdmEjv~BGt#@5APd&FmRO-e>f5r`X8s54wXk41j%S0M;}2j#r+qTkVnP? z$yz=!uRi@BA~YZzQUNlp&GAfyf6X+JYfcIi@aTU`XHg*2$~6pr>i3W7tmNyq+=AKAnC1=J zkGlOpJYvuVgpQmYTTA`M!PKt-)?iVX&NmYGH$di+3M>?#0_nmuU}0t|A}4W3*D+S@ zviscf(TpsEb$MLEGp60b zR=I#mykQ3U_rCy;YSZ5UMI4UN2#{5iLvDf0s{&BGT6k-@ zBKwWpk**GKsNJi?~hfy7^_%IvYrB%(=T@7zR2Q%;-0q80IvHt zK!Yd+Sd*h5OvT6$OY+G?I026=bgCs!- zU@{YH$@Ze-OsCu91KvO=l?noKmnbCbnHRBdlq}%<8Mgx9fC>dJE)EOuSq-%UF-eyx z4Om$1K3_WoWSgty!8C943+hg%+OLm*MTFl#9t2OVZm|54`|$_hfjgK!1OGl@8jwPo zoXvUIxBtQ#xC8RYQ{b{M1ywHO(A?Gla=Yn%7>?B*QYZ`rg~@lgY?id%=b5-?J?srq z{{1J(MAYVO_;}Mmve%--b1rZkNNzAu(yVY)Im>O8Ra&0#kLO-g|gy^?_P#vyXr3|8-p#>jNabE{awuNz6Y4Jo*%GjcYp0Fi=4c0Q{jkr0v1Ni5R1kk z%$bUYij%1d3F+MsruiLOes0+@qde9MEt z^6luKT*W*=f9#=ODQ*bXhzqK&T~%(4?9ySE2-3q$Gp2hIyHziAyqO{KMSY#KcCXFv zStGR1jRh_arvjLt-?lv;27*w`2lV)H8V3@818RqUP)4>O@EoK%<(gWKWTvx&!HBo}qegqF$~ifuJr zUZ4*=`n)b%FZj+{ETfn(@scW!;vziHj{=O-e{lND<~8>zF^&U^yUOP1G*D5zCu_}{ z;_~F#P$ig?>K2$0$}jj_m>x`uwVDy$OaAjyVDU=&ARN$e>wyQ1OWMeO0){kmqt;-N z;us_}AclwE?W=eJhziO8xeCAedy^n8bJNnu7$aIqsJ!RfG@;NB*GLkqe1i73mj%B8 zS%>THDey>621-8C5R+qbOhZ;Vz``lz4t9l@ix;3{sM_8G*q7mhoJNfxEsXF?RhX~Q zIUu(bkc_talUC6n7ErE$e5NHsU`K;bk)EZ_S2?PWFD0J;VZ7^GhfceF(d z3>j>?kXW8CVr%wbWO1k&u zmx9{E?m`ymBSB8Rr0|(KBJmC>MpJJ@BMMlbN-xlHfzr{_nPy4-!aBJ zrc-;~=s%qn+^(n774oNdULEJhlB(dpuGHKM2y~is?i4O*Zw^Gs8~c7Pc#P*Y4zweD zBlAnmJu-&!DI(dp;y}6IpV#V!dDsA|8S7&6Q1@_#rA9gD&d+IGdM5LMg6m?>xbq|D za8T-%;Y`}$zme&DWIyC3E;5T%Z$;NzHY>T=RH)zeHggD=iY`)BX zSFmroFpSLRu7KfIl)DeSBym8p=QE4 z(i=#y=`Gr_?`yjthMZizp|UGVl4&G@Yq4kKpqHx zPB zb)L>w#1|FML`y&6?q_Y*CGw}*TYi3%o!ixuMsOzmp_;1Jx;^vJWg^zi$T$2;mTk(D zPMvi7(|J4^P59UdlI2TsV?OrIlP8y$!;dQ&xl7w*Lj*BQY$8K1`2AEV+bI{PX5b~0 zhVY66+HG9M-O?yCwlnR@81!~cQM1K2Z9Spt6Awtc`^6VSL?q8v^Pu{>MkH)nGm$Io z^qY8d1L3sem0tvAu`I~*?xBJ$vsqnvWnt>tEgB)|Cwnzm=0Wn{e1e3bb#^(&NDNDj3a7d($`CY%(66pXV^c-${&RS@+%6EoPg`O@%l zc7@wZ3N?~7f;*)=b)5uZRfIUWO+3Gib$0O`aW^x>bQFCi4mX7jjg(&yOlywK)Ag-3 z#Mz#W&HwfyWJ5)E9OdINdtS?>66FnpXXKq|*CRAmbqHr?>1P$5a_s@Y$+eT*=H6be z>_QA4x!@e0=*H}Fv~yFQ9mMEdt?HBGmbJSQU@=mWT7>L(!f(}NIa4d#3W_4rH zG)(R%HFxW+ggw07n3t2+USs|(2fwwYN$aF947VEJxh>;(Q1k0G zH1167rc{yLVb&`#!vbur{@!8lb{ejaj1C3NTAb6AQr1%+TH@yu+09cLoBKBQmEZ{} zB@;Y-m6t!*l)7E1JjQVt9~H<74KM&aedD3PA1?Ls_Hd$iy+sW>Xe1_qLYO_X0~JUE zCG=)fSjSS6Ez;cq)^uCxF&sA7w&VA@vwRVcNIx(XDSu;pWgc>GA;gB)vGUXczBWk< zpZ4tVbX0iTmYBT5Bme9ZJjEoXj)9gl7MHmgFZY=E5-pRRyOM9qhWmhiuHl>W_5CpX zyw4aUX#u7_CL2CX?@SjmkrHrik$7NQB-6Yt#8RPcN?BeW+Z`4f$+v8#?YpC5u;XoD zs2-ABrpv*Edg_d9Oh*Qz9q}j_k<+V6KIp+gt#^A8f*u8N&0b&4;k|QxLJ`n^yL}~* zb{KszP=i`FK+-4!QD5I;kiw{^+xgEDs82jpLhurKUmgY1 zm$bE}^NGy`%*oaKu#g_TFFj{wS1RzTUs5@D(gwe##)g(nWVBqLz^X4Y`5a_3ll){!vzz~YkAS8Gh2t>wcNkVg))y?#nU*7h*O46DnlLjr`bOiu`?&VW-f1?h zeOGR1YebKE%mIt>xe=k zYWXz~h4>X6C%t-qm8!~Xb1XU?!%o}&Hcs4(48mx&c&NFuVxT7D7UJxW>5p|?IwVQyVz-^DS zjT?D1zqs{v+kF#J9~V>DmPmFBF*hG#TN{I}qn7dG%4?Vzjl$&9zduKAu>mcr|2QV+ z_fWFmsOEONLX1|6G_#p+Kn=a9kuBZ+?1jeGH(Nm_MjH`q@P7T&-ebGek`7t1b;)`| z%ZNW&tlYwuy6^0@LeZbs)*`QNZiE<3-A43#y*5wju`))T4)Y1Ng&Txmv(;uUASU&j zm!tTjD_CCDS|s?f1+!kyt#XQ)uKL#G?c|;IGiONno`EK*H=mkV?rIF>W=0Hl_*`L? zwG$Jv56HBolA_y3YS#)z54X5*O1njuT?d>5b=oBYMB#YUXou>^Cy}3mA$5gN0gRU*7rT+N{hUb$BYr+pV~2ySYW2 zQXnnfF%lwQezTxPnF)|vTQ09Bwxo4+(SjFcP!lcSDX1_fVC!i^2`bJ4EVV+1*OwhSr z$(l`YONZ)|P|D`Xhur(Sm8GjVk2oVIRJ2pL%$~mr$?okrZBKruPr76PJSD_1c$Sh5 zy6!97MU#pntBpm4F9Oz%NxPl-FA&5m1K=V(QnVxt{QqdUKeqw)bNI1NSN|{Vb`k>+ zmuvlJH^klloexMw`Aday2Ppq#yrfX~7-KgV3{KlgY3n+o0>;_odi>OmWXbu%Z8i5<&>wY*LO~MgqeR?(mdbBmt1%Z#8=whs_9YE4t=g15!2?6S{ z4ppY^fLQ!$0X3)P99R!zW`ys9(wT2>q|w(qIV)a6dm48jKhjJN@yr7Dmqjsm#F1~5i-)WA(b z`Y9UD)J467ZEfZs-YM)BUg<%5!%d8~85oK2Cw zVq{;uYZMQpxRRrQ$(aj!V>)>SsKr$Knz`2kJ||8PkC&^xT79$gpawqXgE<{CLY{o; z86v;b@w4R`O7+ZuAK;4)WWxmR;%k}iB7=&_LTX2(b?g)B+X`n8GfMSzS~7u{U9LKWhj}fdNyk?lGWyU0l}!p2$No(`|(zn#s{J3#blq#YP52pFQw< zjG8!J!7j5JoB`u^ygWPPTfQP6R9pfc5C~&pg4gGOuAX$0I#3SeK^)zvIf{u3of(m= zVq~^wn*3kOgG9sr)8{JSWVQl`<-VFJjtsV)7|5~}h>xaJ{7H|*4}Qqr(vTj!+1+di zzzqTpk$TfYi~S2w0SriM2plcb17mS-XQCJ#6y26`T3M*FE~9^lecBBGWyfSAm+(XI z{s8~Nhj$$7@dHj8N*(A%JP1#0|MUBN0CDU{+@}WSA-B`d#e?tJ3^5&dQKP|3g6v$t zcYN){@~sI(L9d&FlDE$X$DR9QkdI==bN~5eaU?ZqI-nH)FmdJ&N1FQTaV+`e#z?fB z{zvw_@NsQ&SF-x94#D3&oFGsLCWiTlV;eI})#x7+vwxgVBNPK3P4{51(fGgP{2LAA z8Jp8QtWZgCn}|sN_VLUUfeqj2O2zo^ejWks*MmPe%x@wF7YG3DOC>*V=KL9?puuhU zfBFX5&Vvv1T5duTJ_ct+FK_s}3$Pmy4gBf|2MtqzlX#9xaUa^=9z~i05FBE-D}VB3myi z0D|}-W&pf^ZvhHz4?y$T*jJnN`~B_!7_y4)OBWvYJDEd2|MRH?VGC$WO^@jH*Er-) zfU#9?u(5Od?M-M0066+Da%6}hhZ-)yO5IUQF>()E2`1JkWllC4Y6lJy*P~!Nd=9+) zDj=&6`N1LsK2dYdnKf4nIni~Vczt~54t*D}31c0i^V<2UgNOpD}H4hzo znr6S;eFEem6M!xdd2}Blb|Cgg;7J>X;qwpgiomi=pbTZCVMkGl6UE ztz`T^+W*)p9Yz61-TXVJCJisg^bGBFuN0&@qp5M}0Jr0u=SE`k6C*n?yA;B_NAw`o z&8MRB2>ZIV0u4-B;E!_z7UICKXh7Fk075>e0k9JP_|aHJNjrn(We8e&Ho-@-*5B5k z0NSa_wxr>=iO;S)qyov1QK&rxE}dEzY)-+vTA9GOri@JC|g=&6S-?7EQOk%o zz(*`4`tNEy0=P6;qReMzr>++13(aMOZf@7&{HAOoV$LnUYS2k)hX=Tk@rK)DVF_;ONj*=j!;rQK`+77uD1 z$vrfTs5|Pl*C0+oTCFsonlL7+A|z``z+JMAfDODN6Jx*l zo9EqQ}n4{ z0bz=Uls>8_VDxI<93?(7S^JGP2{Ho*k-*v`Cg5F>nA1ysm+v^*u70<}A^HN?>bjoN zIc%%%>=pr>zY4sIbze{ynKiluy?lYs&}6!w5j^_a2*+^^j~eT&m03i4NqkpGIBk1t zLOt(0!1J!ue8KcoClI?^#Ah~zdI7c@d_%COER^S1K)X8gsvJ_vz2T0?&=!11MztRa zGtQo+Rf+q6g&?fQF@fx_s(JcLyv_P04lGY>0-(%~h|IrX=B)O_i7;O>*PXKE6=^+sTQI#8q7?PC0RHrMqS=eL7aj74Yki%2Z+ z796U*{KvmM@JtN}AL$J7VTx%k9EMiyJiMelqI2j82o*Mz$u71CEoEK?`4pnC{+w+{ zI!C1f4+(+!fc(+Icn{^4i@Bl+(BR-Xg<^EJN1nAQy+F>IC8*J#}kF7KbbQb?0TyUQ5Z{*K}?=a^xV8+ z?E^^2VZkyA=+jk&b*k3YZvihsn@q;iD$1NeDxmTwUwA6Uk!H+lv|z{#R_yG6J^KZf zub5rMJ#&>Mz=S$;`TJ83BNt6H3+ach|X)L_6h=mrN|yy^Q_Jj7LD|0V(etaRh`Y>2rx#_ozzd#7y~XDnr>-hYzs8g80- z*D#X=F8;Ezhhf(u_#2^Y7(Xd5jEdqCl%R!*s6I2jU77rb?Ix)3&_)2tC5Y|Mv8hZB z=J2Rk(_|?w&M%+0mfD<~Xe+etc$yaazzG*f@o~{eE6U6W&5_ehXURH3R422nd)Sgc z;NZX%>IOSW@2NRm6CVSnd%k#ywy9y~CyKwec_3|`$8{zW%}OLzvBz@4e7}6_*$iS; zaQqqLG1n~|3T`lDVCg2bt$}f?N=!H~HW}FE*%e>#BnD~G{9}jsQxWz;dpGp(2hW8z z@p*3_A3K5qDZd@d^*5Fon~tJG%^aE_yVV>;z{!%!fS| zIsbUp7RCU%M|Lp<3jY?SS)j2H1s)|bR+yI$&MlKC4|S!#9ezmZQ54>-7c2IpF%I9gZ zk;!fNuA{LtZ@JZM7~lsGEw{_I6Pes^E4+kkq`6rbXvb2TUmxOeYPFTh?Btgs#S4-# zI4#%*UhEb!`eOVJs+j@8+e0LRY`h&)^X=}-6J!)L%inJ8AslV@&ekZ7QArr`PTRiCe|17O8Tw*F zi#AW8u>Ff4$w#bB_hHMyt$~dB0{jLVU1e@c;@={c#NF&Dbd=1%{hhF|1l5!9hxG0B zx*-Y9wkOAbisE}h?Z?QGl|!r#MRt1BQzEU)7>9ALoWC3O=ohQG+-+)sN+2nF;@R-K zCJLS2Nb|w0i#$lrU3TCFhVH}2=5zmMCD4=*Xd;!^M@do>WK~B01qguiKpFsoo{R(x zL0-R5>B|71DlMiRm77B=A|Rc7nXS|suqpUQt@H-c;uCo?-yC|;4k1CK{MiRLm4y;i zSzy-3-BdeIAS`NwLhJ0`--SVo2|z^=s3zZUP>M1L4Rgn3^S!B6hyp3D-H~XkAZYjB ze-{<$HX}cuwkJ^ih2LCu-4y7T2{}b5jHhL-3o)H}=fG7nmUUO-`ZnW`w=a z7w%)}?cTs|kjjgRSA^>Ze$xQYocgFV;s%dX29Lz_X3+U&fUXeyRv)A*_V46-<=aK`Hw7vY7?HB2o6+APcc(+}TZ!528SWd)Po%c0+X1HVCY`v0fk|1bs5(%o`@bf$qq1QKgN?wbNOL-{I$ z13+EWVXDKTnP~@kBT_j4m4D;{h~QN~11jj6o&kxIgknI>D+!(AQR{onZAdY9ctz0^ zwcJV@{bW?|DP(k(MB>-EtF2s)~7Z3peNFJI3P@O zj;IBuwC*4Qg{y3XGOOS6>J`33Dadui_eCcm9ko5^Xm$q{6XQT=V8*ugP(!%=<>4PI z=S{spQ~ z(ke&|ll<4G83cs4QXuiQJQ-5u{_;NaWq0ktF+kIRv2JU6ocH0cM|?}>+SIP6IZlW- z68rPR1?t$E?OUdxOFVS}aswvT5c&qd>Nw$~1O*nUKzF717uafsZJ3!sr9~HbR&8N~ z{aP&;W>Eohf44#`btG|J4h1Cg>w{sN10D9+Yq8;I$Q~KpIj! z2ar)mG3L(7m>+nn9YpBP@}=Mkf7RR!TDmYbzDG1cdi(_m>yTh|1#?H*(+%%ffE0sq z-zfM_2sjI-;=vDqNejuVh?(f4H0OCjSog#1;5)Ci6f&_=_^hK1uVZb6Bi}rFcjuod zqU8_arp*x-;FX-{8?2BbAQOI#+^HRBqK`B3QTLMykb}Nd_zj&2Vhq<4@7)NBrKsA3LsPVOOj9!VqsaCr(1pN5L292^!fD9#&dc-_rWQVE%X zey+2Y$Y>7{qmN}0D;ZEZ2Y=dmG2dKyKW_d*zcVRSCa9f@i$GgK6+mge$#;t4pJ0a^ zv&p>|ZQ1`1F_$5JrnQT6=HI$2(@7H^(}_w>f1bP}r?GMnFQm`Z)#LLwD+4P`myySL zzHQtPu0)zwviDh~3Y$<-cjy=Y&Ej)FeeRjr{0f>Ms;w>rW%@mdo^yFJu` z*_%J%g2JV$`bVn27h+jKy!C=Tbh-)HWKh6<$D)gOv+CkO02T|p^IysUl27EN2l4Fx z*s(*5vN8y`naw2sMeGpp2QD9!6J`Itw|h(=`qh~M~NbX+%b7dV?u%OLD)y*t2rGKpB5xxPBCkJ>yNY4U^Mu9eRX zpDbiYzD^%@gJVQ=uJ*I8IlpgdKABD)mn!kyv=uxVc<(S`VFaMd9?7fSn6n?hmiJ#2 zyJnQzjg{{W_+Pp9`!M46zIJ*>|_SXU@BU>Qw+ck#cetZ7GlT^4V#>N8>}VjkWG=SWAArSQc!uDX!g( zax?VqQ z_Mm|8%n@gu$PJb_?9HM})))aqcS_?>{HXg;V>!JXxBqF+xyj069yp(?96)x-qLXuY zeP5a`mbiPWn=UuOO?@nXH?$t@>s8n3dd(AO>2LWRe@#xCTx3~-9$OgTkKLh?7jrHh zOc#QwWf)$|dxMof| z1fOQCA6mifZe;-DpvKAl%wtXv=G|pseisY0$=p73*tk`LM?l5@Yjq9Sc8#z8CeGXm z-YfCHhxm^H`{uXSUnUlgw|rJa1x3n1%hCNh2fH&Z zY(vkfb(2Tadr8#^1HN0XeIG)_H_WXjtCVZiAuB^k^$m>q?w{*Zf_Lcj%>W z{QR7tuIsuy5}?|Ch1Q34&veov-A_iKr&t0ph}({3UOJt2$rxu8xZR0X8-duiMAmd7 ze|kFLZz6H{LG$*^%EMgP5AH6>>(c>8pJo?Tn9yi-H>3?RYNz%iS1%JH$s8|#e4F&s|C>nc= zw}#aAjCdP>PgQ}>X^&|%i|Ftj{beY9?c}P_DCBhf~w}REgN8jV1?d(R+G7 z)8I4CpZD1VgM94Yj;$rn4Hg2(JJY5Q3SJjw01UihJbjxR)zdJL4L z<<_WqgT?&76mbhStf^BPyZV4r+uq8f9z-qpepfXag0EXk?5F0`t)IoJ3r*`sbaqZ`-Jv(=>qleKs5&ZFtG zgZGjR^x7SbAoC#`%du|7J$=4@l<0wXWht?Cn#z|S#4SC)^`gX^|9dk4=8fDz@1hGx z6c6l`hRQ+nK;rrIaU-y0)>||31|Hi9(94%m`zIZ~^G)1m4&;(1&?!oIALO+FT~obx zSmNIxi^L=at(~++#`p~rh5*kWZ^o~2J?&(fIu7Z54jQ(7w_hWHMgQD_kl>QCa~V}5 zkXD#P?T!3mxF5#k0#+8Tq0CAfxddiov}P{vICrz652c5gYlGu_B2s^hg;%HO^xzr? ziyedI$|f(hLZ8$X*cSy9cAL>9N~yqkHW_x5#4CvBIdmW|ac zqw6IK?8!@+c@sX{VJTRK-Oa%y?vrR|L$#cIPEGnnUdnj@~KGOKxXq`GQhPURGQuAF$ubzT>GF+^)lq418 z)?;zGwJnN~8U@#^xHL{PfVCrrLn`8to91vGSE+~-2x34KE6%XEl&C-YQgRoxQCO`I zwV^NggXs3la?@Gn!=ogF$l2`5LL64g!enYox{hCcv%;tb^|r5X7n!`avXe%dH;I0* z{36nDGWUBdwIH778e@9Gl9gjhEs=orpOBo9pc;d6Z4+4$A@QL4+G#3B&{Wa4@?LD| z&f#YiNyV($gFla&>h^I|H5%lWz7NIw5vJU!MMEy!<|8{`JTuBVAMKR*Z6+JDEGy*S zgN~|E`o=k$cYFD#uiKUIfS1OgBKgl(GzZybb!d(1NpK(U<lPQ1T-RO4F7C%5H@(V~r_r1j_{WAVbF#6X5`2~<#u46i4UApv)*I1{yO{I`(fBWnzR(5xL3x2=W3;X7 zV3LP7!)TEe4Z~cXtJ@_wa?PGdJU?`cei!3aEn+<_?d8QAo!!V%9qN=yu|;}(n=mHc zF~2g(@FAJ+ZOQ>e$+Mhv4-z^hj>;-X3TfET9b=@5E}sOl!%|F@cv|Zyr0DY|=Nt62 zkVA*dqoZSaa_KPBsY`_!H_jf9)amWR+X4e!N$9r-PyQrd5hdcO(BwLH(8qr~|IpTn z88W(40jfg*nLNS8nHi{x1jX@15V6*mvwciytDocIMLlE@Ls@A7bl#{H&{k_mr#wKRguRZPhtw9Q_>05L9=X$rx z^LIWw`hH4{caVFk)pQq=E!3spONu1&og|p0hSOqLxHw^YnRDzYtNGmw38&t$s#C@e zw&8UayH4IHGr{P-j>!$7wGF^PsmCe~>E>+Y(GTKZdh}+(!gUB#M-aKH#oH{)8cVP7m)1{| z-EZeUH|H9&I?-G5&)0U!i0o_Ut7jDN$a^fekvQAb&^qjFNgN1>E&3N-T|6zUaNE@Z zo@0b7E^H@EQ7rcZ%g3;4)6xm^r{pIffjbrIi}4vyVVt=)kBie6AcVQzug{pB`1oE4 z#>v~;8;KMaWSmYy)a2a`ET5e!&c{U3OpuFQ9)tARn72Dh=bi?9c?X|S9b=?Qs` zwSJ}<0w!tUW^(-};BJlf(c^ToHXYU{M&lM3lfQRY=LJGTV*T9pfw?N5_Jv z$@jRsB8R>TJ6+SIpFWfbE*TQQ^gcA8d+=q>g4u;B$#SgbiZO@R`6_ICnCz^x*qE~F z=fLtRuD^aHlPw78_I5H)tQ}$3#@zmU*Jsk2_-P+#=ySthUs-oXfgB-iLtldZ~bN1adCxg;v zI1EFLXupzp#PS*>8}>>8whZg|M9pO{(SAQ`h>{thterRMHwsv`ga_?W-BN%Npm!Ta zN)Z`o_)c2ezhq%vM%?w)Zz3wP9F&tJe>_!8M}*qUk1)_%e{A0!#AeCu93A%)?~|$I zVU&3biGaPiR>xc&0aNjn2|CxvD&q=03gHh_Mg22f#W12=;SFXgDng_QBHcGN9bSQ0 z%2?7n2OMtSoJTPpxN%_wEZieqnHWpnZ>#MRxbj%+ZVGz)AkQw(q_tr$qSiNeW}#Qq z_d`e~eHBwFC8;T@YC#KL?jFlSJ(`jixV2RuG=J#qVz)e}5$o~(jD8^J#KZckLqEn! zCyl@J@}S;f!n#Kfmf;npqI>?zD3hJ8I>JLj{riGV5PZH7LX5M>9$K9^@S8>4@u1I=;f zZ7*gIg;fsvvFqD>8~NxIezzz=EgIiU}SkqSwQ9Syxp^+5nkh_GLe}$vCn8OH9_By5T6c zwz9gHb7$_fX5=+q(M70fD@yaMdePo^D#ib&5|4Co7{+A7|tNa8Nlu+Z=P`6W59 zF0gHHEQ5&EIum1W?A|$yL+a%6UK0o{=Mss$koQX8jH{xlk%T4PW4N3Op2p}Z3$@Tm z!@b=6<#!?S-H7;zJ&hkvxwVji4YQ!s0sHdvixDr$fhCSuohGyFcp};byd2Y`OH^d1 z^zB$9JCS($k&(AEv89o#s)os<@0l3~jBQy0REvY)ij+y02ZO4*$a5HK#;t-wzV0p7 zL$@2FxDPYnrYBPl0`JS|46EJf@8oQM|~D++}dxD(DRSBec7;% zlCf!Z-mtaqAvRBlbGhhxr#tbnV9xY+wj%OsW`UJk=T9{G}m;7w?9Q}^P6!VE(N+qD(5ygdOKs~G;jJHpKX!D8deyX;X?07<-UC2 zexoZ-No5WHWO3G>Dwmb;%h-ba-Cd`5mBr+GLWK6NrJH@+utH|s%hz*4Fb|DL*`57X zPiLb;yd4L7Z-<6{_=wO`hdiB?8Z+V|@nTsl6v58f{_owE^@?ULcu)O^e%@8mCnm)? zOC0>%6ZewunX6gm6@qWut%%gK@cy7bFIMBuZ**0pgJIFQ!K<-sD?z5|Y5WmPI1}$Z z=7Ar`+e%Ui2KGEZJ72C9*Lp3-_{t{n_EMAodMZ1xsTw9VbN~K+=rnfC2D?BfRz$g+ zmBsBCI$Gy}Y>&}B^$YF02P7YyBv5V2#XbhLSeKHYg^!-(B1c}pG%bggqZo2(|5I9?k68i&gZn_Rl?uI1m?XIHFUyARXM$X zkf|ba$o7Ac-7YVT>wA>8Kh_VD9b7s1`s`N}E>2e+`38^rDO))8g<3%q4h{enWzOc*;}(&dMG!h@yI zGHPitK1gQa@QAEb=k)-R5J$gK62-_pDqH*XPtp8kC7l3#xJ$p*Y$tvqW~iY1#a;P(|`xPb43F7S}5<@ei) zD~5OpN)OS8?-)CJoL}O%Sj~hWF%J`T={jz_PPQ);I{hWBE;4?pN09}zlSpWvmF1*$ z4#Tr-Q@@@jIWHS8cOesxPS6s1qf$}cG977sa7+G2#5<%js(FKhAroo=%ZG2R$1l45 z2wtkPl*`vJ8Xq|Xk9wG?|8&U?aGcU_K5$gTi0d9Gv$mv4OEhQjyFf?`x-PwVIq>wB z)Dzs)tMw*dF;EtIQ}WV@QtKT&97~NZQ?GN7KqN`Gi8n>m8c%8H0xn5d@>DLmKnj*X^ZjAvm6dcX|J`*8loL2Y zU5|U4?9v&@3Rm$$DcAiEzjXBMj^`H)Nu$5PKy7|1Ao^*Ig*CWq6ZlSxAC@|dWD@;? zyNY6xznHdfzK@q5X;OjNl!-xp%k;P~xK#Ztij!8LVvSwyoJW^DEUN^|vfNNE!Vjxa zKl|fkP9T4W0cv(;^{Kw|I)YoGk&m*9IWnD9I&#Iz3D!NOJr9P;7g(evzy(P zfKl#mnBr2&kJm9_O8p#7tUXxA^-Its*CQaWVjTT+KxqGQdQ{8~GrKsztwQ*?83Wm3 z-;PA!kSNS{+3-Zmn*-z8@`LPNE`!XIQj$3J|& zVVnFwHI?+{C)KD2Iv>5lA2FhQXBg(ltO}-@VMyo|2t@hQ}V?Qxz?J~j) zuvTN(!5Ka_FCn*@)*VCp&US+L-1di;v)0oFBRyOwfL-)_OE(F+New$2h%Itn}t;LM%nMh_}bZy;@ zIvn?qDIq{o-k0eL;zH+a3)myS!Ox`_c;Lvv?(J=BxfUkIwlOU|_@{H{TD^O9oViBkr$@ajFH+MumU= y&;JM;ZQ1~mPOfhlL`na1RlkvtV87jO&-B}c3qgdHs4^1xM_FD&u2{w_=zjskRH(rK From c35099b9e55711b4f88296df981a0d335e275fed Mon Sep 17 00:00:00 2001 From: Kian Date: Mon, 8 Jul 2024 15:54:11 -0700 Subject: [PATCH 03/11] finishing touch --- docs/open-source/livekit-webrtc.mdx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/open-source/livekit-webrtc.mdx b/docs/open-source/livekit-webrtc.mdx index a5ab8dc6b..7835a08de 100644 --- a/docs/open-source/livekit-webrtc.mdx +++ b/docs/open-source/livekit-webrtc.mdx @@ -26,8 +26,8 @@ In our LiveKit dashboard, we first generate our websocket URL, API key, and Secr ## Deploying your Vocode agent to a LiveKit Room Once you have your LiveKit Server credentials, we can hook it up to Vocode via the `LiveKitConversation` abstraction. Using the starter code in -[vocode-core/apps/livekit/app.py](https://github.com/vocodedev/vocode-core/blob/main/apps/livekit/app.py), you can quickly deploy a Vocode Agent to -a LiveKit Room. +[vocode-core/apps/livekit/app.py](https://github.com/vocodedev/vocode-core/blob/main/apps/livekit/app.py), you can quickly deploy a Vocode Agent to accept +new job requests. Fill in your credentials: @@ -41,4 +41,5 @@ LIVEKIT_API_SECRET="SECRET" Followed by `poetry run python app.py dev` -And now you can connect to the [Agents Playground](https://agents-playground.livekit.io/) to interact with your agent. +And now you can connect to the [Agents Playground](https://agents-playground.livekit.io/) to interact with your agent. With LiveKit, you can connect Vocode +agents to any web application and leverage their [React Component](https://docs.livekit.io/reference/components/react/) library. From ebad17cc896b0a80b79b04a54aaeab60f03b7cb6 Mon Sep 17 00:00:00 2001 From: Kian Date: Mon, 8 Jul 2024 15:54:59 -0700 Subject: [PATCH 04/11] undo pyproject change --- apps/livekit/pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/livekit/pyproject.toml b/apps/livekit/pyproject.toml index c9203a7cc..ab8f3bac4 100644 --- a/apps/livekit/pyproject.toml +++ b/apps/livekit/pyproject.toml @@ -4,6 +4,7 @@ version = "0.1.0" description = "" authors = ["Your Name "] readme = "README.md" +package-mode = false [tool.poetry.dependencies] python = "^3.11" From 9eac7f3d83bac3c15977c85b776f314669678075 Mon Sep 17 00:00:00 2001 From: Kian Hooshmand Date: Mon, 8 Jul 2024 16:26:09 -0700 Subject: [PATCH 05/11] Update docs/open-source/livekit-webrtc.mdx Co-authored-by: Ajay Raj --- docs/open-source/livekit-webrtc.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/open-source/livekit-webrtc.mdx b/docs/open-source/livekit-webrtc.mdx index 7835a08de..99e986693 100644 --- a/docs/open-source/livekit-webrtc.mdx +++ b/docs/open-source/livekit-webrtc.mdx @@ -31,7 +31,7 @@ new job requests. Fill in your credentials: -```python +```bash LIVEKIT_SERVER_URL=wss://vocode-agent-b5oqfgl9.livekit.cloud LIVEKIT_API_KEY="KEY" From 5dc8fcebea78bca2f57ca59f8b2519c4aa2eddb6 Mon Sep 17 00:00:00 2001 From: Kian Hooshmand Date: Mon, 8 Jul 2024 16:26:14 -0700 Subject: [PATCH 06/11] Update docs/open-source/livekit-webrtc.mdx Co-authored-by: Ajay Raj --- docs/open-source/livekit-webrtc.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/open-source/livekit-webrtc.mdx b/docs/open-source/livekit-webrtc.mdx index 99e986693..483f7aaa2 100644 --- a/docs/open-source/livekit-webrtc.mdx +++ b/docs/open-source/livekit-webrtc.mdx @@ -17,7 +17,7 @@ In this guide, we'll be walking through how to connect a Vocode Agent to the [Li ## Setting up your LiveKit Server -First, you'll want to set up a LiveKit Server for your Agent. For simplicity, we are using LiveKit's hosted offering–but it can also be self hosted. +First, you'll want to set up a LiveKit Server for your Agent. For simplicity, we are using LiveKit's hosted offering–but it can also be self hosted, since LiveKit is open source! In our LiveKit dashboard, we first generate our websocket URL, API key, and Secret Key. From 761e5b77ee591db280b47e28c77ef54a808a2fed Mon Sep 17 00:00:00 2001 From: Kian Date: Mon, 8 Jul 2024 16:39:29 -0700 Subject: [PATCH 07/11] add .env example --- apps/livekit/.env.example | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 apps/livekit/.env.example diff --git a/apps/livekit/.env.example b/apps/livekit/.env.example new file mode 100644 index 000000000..fe31a9d9b --- /dev/null +++ b/apps/livekit/.env.example @@ -0,0 +1,6 @@ +LIVEKIT_API_KEY=your_livekit_api_key +LIVEKIT_API_SECRET=your_livekit_api_secret +LIVEKIT_WS_URL=your_livekit_ws_url +OPENAI_API_KEY=your_openai_api_key +DEEPGRAM_API_KEY=your_deepgram_api_key +ELEVENLABS_API_KEY=your_elevenlabs_api_key \ No newline at end of file From 6490d4ab92afc3cff7c61135ac4ed0cf1ca70a57 Mon Sep 17 00:00:00 2001 From: Ajay Raj Date: Mon, 8 Jul 2024 16:39:55 -0700 Subject: [PATCH 08/11] Update docs/open-source/livekit-webrtc.mdx --- docs/open-source/livekit-webrtc.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/open-source/livekit-webrtc.mdx b/docs/open-source/livekit-webrtc.mdx index 483f7aaa2..044a1f3f7 100644 --- a/docs/open-source/livekit-webrtc.mdx +++ b/docs/open-source/livekit-webrtc.mdx @@ -29,7 +29,7 @@ Once you have your LiveKit Server credentials, we can hook it up to Vocode via t [vocode-core/apps/livekit/app.py](https://github.com/vocodedev/vocode-core/blob/main/apps/livekit/app.py), you can quickly deploy a Vocode Agent to accept new job requests. -Fill in your credentials: +Fill in your credentials in `.env`: ```bash From c08f4783fef3d86c5447fae034ebc886708f0c9b Mon Sep 17 00:00:00 2001 From: Ajay Raj Date: Mon, 8 Jul 2024 16:41:00 -0700 Subject: [PATCH 09/11] Update docs/open-source/livekit-webrtc.mdx --- docs/open-source/livekit-webrtc.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/open-source/livekit-webrtc.mdx b/docs/open-source/livekit-webrtc.mdx index 044a1f3f7..a47fb85ab 100644 --- a/docs/open-source/livekit-webrtc.mdx +++ b/docs/open-source/livekit-webrtc.mdx @@ -1,5 +1,5 @@ --- -title: "Working with WebRTC" +title: "Using WebRTC with LiveKit" description: "Use LiveKit to connect Vocode Agents to WebRTC" --- From 14e8f5cbf031a904a0e14e8e403587562556e380 Mon Sep 17 00:00:00 2001 From: Ajay Raj Date: Mon, 8 Jul 2024 16:41:33 -0700 Subject: [PATCH 10/11] Update docs/open-source/livekit-webrtc.mdx --- docs/open-source/livekit-webrtc.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/open-source/livekit-webrtc.mdx b/docs/open-source/livekit-webrtc.mdx index a47fb85ab..124198aaf 100644 --- a/docs/open-source/livekit-webrtc.mdx +++ b/docs/open-source/livekit-webrtc.mdx @@ -33,7 +33,7 @@ Fill in your credentials in `.env`: ```bash -LIVEKIT_SERVER_URL=wss://vocode-agent-b5oqfgl9.livekit.cloud +LIVEKIT_SERVER_URL=wss://your-livekit-ws-url.livekit.cloud LIVEKIT_API_KEY="KEY" LIVEKIT_API_SECRET="SECRET" ``` From 5ae9113c3cd17c6bdaa71d5817314288fe59fdc1 Mon Sep 17 00:00:00 2001 From: Kian Date: Mon, 8 Jul 2024 16:43:34 -0700 Subject: [PATCH 11/11] title change --- docs/open-source/livekit-webrtc.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/open-source/livekit-webrtc.mdx b/docs/open-source/livekit-webrtc.mdx index 124198aaf..d2409300f 100644 --- a/docs/open-source/livekit-webrtc.mdx +++ b/docs/open-source/livekit-webrtc.mdx @@ -1,6 +1,6 @@ --- title: "Using WebRTC with LiveKit" -description: "Use LiveKit to connect Vocode Agents to WebRTC" +description: "Deploy your Vocode Agents using WebRTC" --- # Overview