From 060f9f1b178e4105ee25cf57039c6bf318ff8d1c Mon Sep 17 00:00:00 2001 From: BerendF <berend.fuchs@web.de> Date: Tue, 18 Jun 2024 15:34:53 +0200 Subject: [PATCH] small improvements to frontend & training data --- .gitignore | 6 +- .rasa/cache/cache.db | Bin 73728 -> 106496 bytes actions/__pycache__/actions.cpython-310.pyc | Bin 9459 -> 9723 bytes actions/actions.py | 13 +- config.yml | 49 +++--- credentials.yml | 2 +- data/nlu.yml | 185 +++++++++++++++++++- data/rules.yml | 5 + data/stories.yml | 8 +- domain.yml | 21 +-- templates/about.html | 4 +- templates/contact.html | 8 +- templates/index.html | 2 +- 13 files changed, 249 insertions(+), 54 deletions(-) diff --git a/.gitignore b/.gitignore index 6ea8874..0a87ee3 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ -models/ \ No newline at end of file +models/ +.rasa/ +.rasa/cache/ +results/ +templates/typewriter.js diff --git a/.rasa/cache/cache.db b/.rasa/cache/cache.db index 6c78afb15a3efa4e113e851d0d9c78de7fd89607..8a139ba28bb29232cf18aed76318958f1f033ba7 100644 GIT binary patch delta 34128 zcmbWA37j5fmF}y){p*!Q0%7eS-9Ug)`w~<(B?zR$A|jii)=rviojpNq5_CiukXT?8 z1jV0<yC4d~s*D$PM#ptT9YDYZ715Ck%BtS~TUB3oCse+gJBUD%>N@pqXL-(Z&U@+C zYnOh#am~JsN+L<pzT1Z0P^l!hUG#~;gZl^X;CG~b2VWli>)<nkPY*sh`1s&|4gTlg z_XfW`_^*Ta4&HJ5oZXVaIkUI=JT`0VN&IuKtw-?B*KFO5f9|<u9sk^I%X!Iv9W-~K zI(V7PFZUVz>EIU!FXJZ{4Aus}AkE!2ak#R_aCKoNu+7LfBU|$=%?xzK@ElbS949bU z$JdouK8_!k`VOfsl#{QG57m$7SG~#VPY>@=;lHYbTgB`5=Jj6~+{)|M49dH2|4zR= zax}j!^#}>BVw<WFd48;fhOR`es;i+Dgo>qUzT<21AWycFCoUiU@^SKUll)>#dPHK# zUmbk^;L^bp2M-u{e&9y~pC5SdfH!c=z+U}-?*I4xPxQa5|84zxe}CU^`yS}Kp>KWP z>3v7^HF}@uy|;IJ??mruy@&S7JrDPMwdb0i@t!yK9N2!L{p0o*+n2Zf_UqcSTF<n; z+q$K-rFDMGYz;Pl-~2}N#^%Q6S<Ry-n>~%+G``ljzOk;cNP47kc%xeXMg6XNQeR$Q zP@hwKrS{X>ZM7?FQSI2;?CP`C|EPYtdRg_ts$Jc^@^s~!m5)_6SKd-Ny3&?^CEqW9 zNM0i^ln<4~T=AEf4lOi1LpMSrh+-phH78P{Aaoryj9kZ!nx4Eio$OmT4lP_Pe!$QI zU5zc@iR{o&oWN84$kBb*R9s!tG*f<E`jl#VN@N9=Ybi#cSPqjL>WZlwYGgQ(D*ZV* z;(fy-;!!;|bvN{N+jeahByh~Y3<J;deA_nT*psWt>F>KC`TK7VI#RkV{Q+OIH6v6N z#ZwL24ILx4ZO`{L%h#MBw&mT$Q^^xQ8#+w7F8u*l31UZc;y_c4kQZCNZ+doQYL=s@ zo-V&V>AT|8)6z$6&vdLHj@4K*6wh-J61YKxINgZ7Sb8~q%5rr#h(q6VZQYMG%~RM@ zTI}n(?%J*=zco4MibV^INOk?tQ9{QFO;^)m9@C;w^YvIYTw5MZ-^CY&p6y1q5*U1$ z8~I`2E57YmN)U#o93(eiaauN0yuyxREo2TAn-?3g?)Zih+lu2jmL<KEd}!<3gLO6V z9NXcay2r~+FVtPjH!UrQbuIE8>9ORGSDZ2_gllnVXtokZI=ev8nNUYD4b@i+PMxni z@|&}#97AOYs(~0rs`95oyyAob3*brr^*?&*XX#U6pa-6>TeE#O9JAxZp%R#iuG$=M z)r;l+#J=*Bx!JRp6CufSd{)pm^f1&dPt`4-O`^DgysvmFS^ftW`g7?I1fJ&GYUnB! zn@urYo7J-omkrCPc(;^nx$=~BF4+y97TIQ?`i5b%^9>#_)hIL!pI<w2E&0xs|B~(r z&D3<;iagbfErap<acEmCAnU68rW(rQsca(*tk{oD$Bzx$<3w<NOx^aZ&{rJ8mg|Xf z+1!IQaefTd)^&qLbQC{OgTM)$*!I2HigfAu<o>O5Pt#O(ovFqyTf)^NGcq)d??hGE zT5Q^}tfVqkM>W`Gns4yZKrEfc7Ua!7GE7gtC_THq-y2G9`R9q`D_iECtcE5Z#c2;c z#js+{aa}EpP=;>cvGYQCPw`?kH2lc*5NuioZ})jJG}%iLCpiv$`Jm+WR~?eP?y8Y= zhSZQl?i!Zm`m9nAaGW`oVxxPSr6`K@Q2NrqRo&QkID|2K9YxGngu0=*f$Q3#B|Vb7 z<FdKQvMmQE{#BW7P|;0+@97Bl4bL-Oons$3uI&XJCL@xMPF}inBwbL|HPJA(9_UWM zQS`jnbAr(JV$BK^!&anUCZFe%KX+CBxapaetysS8szzWbKAT=e2S#qJa!hUMPstCj zx+{A#8;W7YtPvK&W?^+ri8MWQBEz&@Q$8xW;_5R_@*G{Ye6)pS_-rl*Yo+^!>6&H~ ztD5w1It8kMP7Dl7jV!}cZC8sG&YI%smgbv*BcGN0<m%ItBesqt!|$Jy9s<RSLYqy= z8Hf!xa#3@_CYm}65k_dFC&i1CMb8d3q@QHVeaX<m^Tls+3gXC!{6O(c+j7w=jvcCj z>WF1wNb-@{Q)oJNt{Vw`6PdAQdq!j%ifW>S)Ij=savI-r@%vY$v!Q4q8zzcO=FZ@B zx?aTcp_xq2*Fr^++sU6U%eIArMz#Yj^feTcW%3`KUq4heTlWGKu-r=JtG;GNdg!W= zXV`4rz|!~>S2OI`^(;f4m-JjVl05wW;Z$WQs>Vi({fNEJ=7`)NR6R|PEldZySd)I* zQ(G#<(j#(xr1r+zfz=nQKdyeE`rfKnJ*M*K>a4+s2k#iXMjjm;AAIBBfdelN{O7<I z2i`Xj47`3|@BU}{zf*Zv|0nw|?LWWY>ff#JsoL$8xAi^P_tCyheQ)WToY&Xt{blVc z`N`h<dOy^=rt*p2g}sOMR(l@pxwB_m&$6BcJ#*Txv>%cWYv0<wq8+x6t^9j?-_~DR z->>w^UvGW3^`6#6^7XZU$d%SHty#@yn%|WkX@07CY4iN1*&J;AUS8YyM&rhcR{MEl zW8=)mk&Q<EiTXYD>*}lOrwV&5oRQRMqmDgCL(k~Csk)k}DtgF*Dj`l1ro@q#i-~nq zA8m$$xA>Q-`#!4Bi7;CRUR4|@a%#^}fjYJ(;xuAN1Itl0$MQm3(G66RXUU#;mx0CC zCedo4&CiFCf`u_ORY7a3o~7xEd|@im3B_s}=xbFq6=70LOO2ff3+M;2AzzSvm>Q}a zBGf+?-?3cJWi_$f_zze}M^1OI9id4y&v$M1qA!Lxsk?5-=Q?4m#6~QiCtik!p+#0? zd#dW90u?{T6$wm7Hw;D7oKQYfJY@%1>Db_7T>gO5skxe>DrR77Xf->K&qzPa$4vX! zjVQz!V!y^Fx=hiXRHvGgmb@?(so*o(VQhOSWmKNexy00Z7+gPaQM;##r%YEkMNEd_ zv6Zp$I)>9h{potl8MEb+(szkPv@ks$huk!676|pt@eXa%_ajC2#ZxFLj_yg3ibi&f zi0{XX)gv?`ev_j4t~_5nX88C_oMp{WQQLvTF}GZY*J_+7TUBK@RS-`{Lx-k@-S8}a zo|W-qotaP-!--?Yj54xS(=er9C#!KN7=Xih#4i-43-#|is*R@@I@nA8MBXd;IEwr9 z%NNwdS0rb=f-ZV66?NN+q56Dw?IGJHhLYWGs7+cfpR0yClNX?B*gQ(8d%6+^fr)Z3 z<q7c$Gj<GzLvH(+KYXn)j5QZ`EU<kG>#WHai>Dml@?77uh!*f4P%w^dv19O|G)_UR z%S+Rz*rS@MM98&`eSHO!fWxE*p{}CH@MYvBQs-Nf$1krZgC82^|3inShltM=UaJ?d zvN6u9Z5m$e<IY7)6DnCgFq!j#ky`eGONQk0lI8p|orZV(7{BDE^b^pK0VX37{)HOj zv)YVL)iuu%UT!4)JQ@1vaPq!wnQd|~r6H?_KVV^ze4X9zu=91spy_5T@1Okix)J_A zT>s}((!)Pt!mm%ip=aZed{HuZ?cC(-<ltodqo-t_=AJT?eCmc%6XipPCl79)lRR_7 z+~lp>Pf4Eq;DS`E<KL)Jj9K<9(+G*dI7^nQu^+{Ow`}P*$*CV4VFgE$i4SJB*(P|3 zI2by99QFwtiKl6~q2>`;seUZ)mwfPp!^z*TJ3P7Ox`Q(*n&~)fQal*jh%raZ3LdG( zKEhLTBe|Jez=zr4kbGLQ?{$ZdSjhIHi1p*tGFhIbIu@T}b1V(lbEFruLBDY*`F%2y zY)lS6*>adsUpTSCLC`RIR)A590uL|7Far5dF=ZC25QW4(j(D+Zxu(zpM4y&rD2A!Z z!^yQDST|y+w#xa80wMxjV61x>T8iVL|L~z4M?N@}|LEGGg|T=oei|W56q^`2!xcu= z&=gOx3=^*hg(j=%Qvs8N0keoe3^!0wmYfANmTzdfr3cbKlH0bOl01CuaB}sQxu=<~ zXPBOW*JP=j7gcBs-Hj|PrmM2y<-^jKy0(eACuqPgRna6$tXi>$e#VvK*hv2^o=WEZ za%fb#C;b6Cj`@yI!-cT|&KZuWI87dUml+7<ef~#J%}P#w?{y#8I(JfNRRgDlwXqEo zFG;}^uz6ICkci)wUnAaU#C)|EG9+Qg?U1ve_*gN`i%<nlAg3F}h|S2fjgS?K*oYxt zsOXv+D;B;Ieu->~c{fDpr~6`0ct-N4_qvlktwS;WPe_9g%bPIs+Xk04+`$FapAXI% zc%}ZW#(M^STG@Tz%gqBS7s_W1Tvb22@xy^711DB*Z^`v`ZF}?K#`6OQ_P^NwpS6kp zFZEy1AN3#CzhB>9E8p+?LG#4E&&fyiy{ECbestgBzWIH7_5QhjbML?RezNz{#^-9k zlAFEf_hKOa(7SteKl!8bgVGbt_g6mC^M{^q_T1b$wf@J-Wj*hxU()l|+HmdEiru3& zzuME+T-tuJ{XqL8)vMa;YxlL!XdlsTH1@3gr8QAKzB<-=qWX{4y{+wxY5FfQhayPE zo<*ACq8K=Smc`858U~8+6%8SeiN`cHAHg;{GsZ?mI!>dn5!q_CW8>{>*=EFVwqxPv zhbSBNnD4Mpi836VJcH0to+sXg2dUUmq}rB^tARkgJxjs%8X_b^;z8o6Nd@hybLcSn z1VY#nEGg>N<G`4>X`XyQ`eAYCxSnlc_W)wtz>b~JWlIwm+o-zS=IM$X#=_nS(`m6& zZI$>)RXN+ZDykx<fDx`G!3It!VMLVN_xzs8#Wx>$GLAPsrj63}J#>d1c^pC~z+b`q zW7x92D7KOjFeMt62sgk~e9ooqpp*D5E0EuiJa+SGsn;puVvLKhMk;~2i37ku9ZZsN zr_@;9TMP_K>v;xip+tN#UaG5Mx-|3#;UMv?{Kj<n%(jbmw`0vCJ|tX<Y!QH%hU?%H zDRN)>E|e9>h#gPH#8IZ|MZ~DMX#^bv5vW-?g|qlA!@`d-V^!s|Im<432R8`U3)sxf zd~5+1xBxW_QxEX$a6~XkXdK<c`-)7tDMTufnDZzAsv+!)aYDqOPr7E{#RUHBm}>eM znhix~3G@tYL3pb$$k4a>Km`~<PJL8^xLu7L(_@w*6p*H&uQha?kE+MFk{5_~0izI4 zSTXnt7LUlz!n6`f05mu_Ihyq1@T7PQbpgP_$3@r=_OYY0oDT1cMAQ;xewnJrZeVyW zN&?vykq+?~(Wa*0M&KPv&kK>v6QMS`2RI?d^-ytZ0^$wJ43(JhP5O&?N@)9tI9~B4 zgLKZ(TKEc}EUc|&X|_CDJO&aKX~cMhhJi&`<r*MIc+N4aps7xjX<bzzaO2%fBj^QT zXY7Rp-#9Xsk2?@ce@s6N98D~pVtJ;?iNFQZP~?*eK|1>^R;AyI$Cy2iGRl>6s7Dsg zJ8lHdE<eQa_RK6G6gX5w{AA+t$BwHjz7;AV$J4<Yx=t+pI{kbcFh>N1Zou3T9uiA{ zh${GkfNx<S{c^ZEiAeri#GwXD1q!P(Z2>k8=!7%wdy(|Gc$to8it({==r|&7O!V!r zJuMeC;K#NlJtm&Qx3xUBJ~)_#0@J)8ihK~LkeRarJIn%Qg}@jm-UpGG#6U)>WrG!A zdvR3ahzZFsCs2|Q_()(fz&nH`HoF%{huw)M?L_i^>5Kt#__%!m4j>-7uK`Lrb{u#n z+77%=UX;#-X#g`27^x^BFelJHk5{Xc?2j-6A(D?sU*>~dM3#+>B-})Uf%;iuJh-WD z<XD-1p=uTiQ)jcFO@VtDB48llwGrcz;B%&C4%ff{1jDP>HJhM`4UEk;Jxw@Je1d#1 z5+^IF1GePhGTCSsm3Qi1tlDCC^C}~bGB5~O4Gn4GRG^uNIxL;VL9Lotc31Z!IrUID zv*-#y4m=grMCsy<qn?>W8+R#I<VXxs$MeR~<q?br9y${vg0#p4A8-&FXR#w_6LCKt z5|{!9SQC(nM|7eYaj0`D<a5&*Lks93)?SO4DfY60ukVF;<g79}Sw3e*fN+`)7Qo*G zZ<q~Mi71kdz(PCx9J)bXCf*5x!aLbwu7cLYys?Eq5j91iwqU*TlGHKVHac|sJ)d6C zoP1omP<p6Rd9Z$GeVhE|+D~d<l2_E;S83FO+8c7<{FdsL>iJbm-~*MXgzHebX>fsX z90q<`-EH8ufh#K;2jYR_<bwzH?SHQSd;Op8-`am+ztg{G-yi$F)pv8>C4Fc29o^T{ z`|IAX^?tZ_P46hsK&9tV=@r0%Nr4WWB;VaL)P7mMR(h!YllGScLQucBeXKwT>Tha& zzxA2cWtB5q7q;xy9?d^Cztz0C`HtpWn~KN)RE}(XogBd0#%SZPMy39!{CMr9%Ks4) zVG|S(w42x(797}(&>h%ZU@ahgYLLa{3;AQmCF}vlWcE>OSX6+M5a7_T96gpz@iG($ zK{`8HGdN0yk6Ke4Y&fBH2omYZRwbR*`_CJi%=|Q8#U00kH*rP+2gi|JM1YPrg2E1B z`K;_4L&X&#y9Htj9*3Vwh+`tj0uI8P%R+RO<AKf5Ei@1ZEQQyEvcsYF38m#zYcEM7 z9ZzW6rhU_R(g?sRLxCxAYJl54qBKRQSOnk%hgp=3(!(KeqX5vFErQ3PqxB55foF@% zgZw7(odnf7Q2>4j{-&+Q*cKgxmy?K}igA^XO()62b0u0K01x%oxfUkLHAp{L9Am<L zLf8~BF?9hjbE@#K?GWRJbA_S>L&h5bf|FlYOBQ~5`1JIZXb;wb-^Tj^uygR<6`Wr2 ztvE_v7Tue+8iD`1K8^)1VNP%nz-CddF$dX|opf=&bnZ}c(k(~MA;%Eu;O0PRScZVT zVWAn*sYhQ~1ntXj8A-*9=K?kcb0JVS)O(0`fOP~P0Cd-+e~6D{OL!t+^}vaU%S}Lo zzypmBv3nrriu6J%{;3m(k~?o1N$$EC;J^<64G6saKywT{eEd!`h{0M70^(Se_f1~@ z*huo|EyK0?qtdC{CKj-!^+}NDFm%{`WaUWhxVQxXMr1S4JPvwzjrbhfW)XD`KPazB z<}PMdVugqb1B9R8$*a<j2IfKafYbV9s-i%cR%{)}PDqI88nT-`g~I^kK=g#xO59Js zrY1>p>$ZuSoV<AdFVn4#4#vL;@nZ?X#XiL#Tb2%TLH3M<fIKI8_-n(-<6oIO2Yrq6 zK~^Y=FgC0`h%y@v;}VEaOxBb7S4UE}Qe+c&r^xdF+kuUct6-B7ck@Fc|56d3N0Lea zSC~rdA4qV>dNWcHs@s8WtJ2@o2>~7!@hM)cVQ2)k7-O;=2JQ(kx@}0m6YIkk1ehZr zNUqqtce3cKr>29mtr*t^LrdPk1{(&_B{_ksNtREE6+`-4a((AfoEBnV7vPHoDmEEE zN)i4E4zxlVPd1X@eD&V!tqOseN%{o*$i)Z8Ysd7Fm;q_<VwR|u+<eE}IjHy$I|IN@ z{EKn|Ps1(25f_W@>eAE6H}9B8UkH#1kSx3h;lhNB#nQ2;c)vj;qC?UF_MOAYim!|$ z7u>milBvW`XK!PJi4ZyV>;h(jQ-R`Bq`!)31M32$<|}!?vNQ{opj&|shDq8IM^5g| zp3;<9>~{{bPu2n_hd@>{L)*s%)2u9577mR#4<cJ*smWt^e&ICYSTHh+Xjdo`upSI1 zU?pCs8>-l6=_T=cU`E?PHv(J6d@_>`$Uu5Zphdv5VHV;i5BzNC%q*p8l93@|vu!8F zxy22{TgSgPeF5%szU2P&wLnNVNG9%K$WBG6p;S31j;@g-u^s8p>5;wW+e7l^WX{cV zlLuZHsz~3t{l!lnE`Ry!3+C>jT0^QbU(@ER?mQCmfF{Y7<M&EdJay@ge}p4on&}_y z^@mG$pZQa!t8k(w#%3k={$a--!Y=_QNPj4JdUA*NncxAcefx7y?^dnuFP)z>|9o^$ z<(=|F@-pc`>HKZS?>9NN<-F#?g~!j9q#2%Kp`)mAuDc~Kh0Ac1VjU$u+MKUA^G$6Y z=}3YqeV#Q>Q?|Tz%ekqjW6tpfl%kQ4vQJ0-0~Rr@?0C}N0gJABz6h$i;e181$f=^B z#Wb|mY#Lv;VQj)qZu{Y(lW)t%=L#eQd^}+3fSH9^1rQ|6V(XcxlmE^5(1+ylrp9+p zK0Xju(*#@+r)r^x{lZT~C5Gq`d@RmpS?*=#_|k2oDf7VKZ8pGyS*=yX)Dvj!WcP0z z=D)Qwr?`*+Y}kI>X_T;wD+5*mtc9&a&z7YY3q=AfGNlhZF{`=CUAJW8_{Box?T0>l zlf1(=!-8w7mF~c&pPR7*`D$<i0KDX#e>r!D-E5;Jopd+<?Jqn200$OtKe_s^=k6dv zz}<$GOuS`QGWh(vcK9O_Ah_4bN1xy6CqN+e>{uN1!VDRlK;m6Ig5=g0cKQiWxBT=e zFYfdc7T>Gg{=kdJH6~kEN(5?+);D^h_LiPw+k-u`+s{_|<=^%-<Ok%B^j=%Ns8Mfh zXq?e_s`*^=`_0cZ-`#wB)9L?C|EKydZJYh)^*q#X^bhp?uJ0RtH}!3l9+&I#qTZ9` zxz%H;dsY6seM{xv<h7MgwEv@bMepO4ch&E%Ut3>UKc#+1?H|>Ds{Q<;o>ywO*RHND zt$x1e*1j{VKN88g-h(05d<A07c;Atv;|^*aTX|cSlIyvm{#g6`>I(z!Yel_x4+L3e zEKAb0X19LdIHEZyKDgr#N>cL08|Nlh-#DDS@y0i$iA^80icE0K41k#sKoa2DXjhC1 zsYb<?^=g(Mf91PF3sawhR8z>)n0nyl2)YO$M-;kDA}%iKPqu_sC9-#P5?UlZ1@xnN z;B2@+Sml^_7;mjN`N;MxS;-mI3Hezyn>4UTmIW#X&^L(${5^1}L&OUq0I-A@dF+OP z#q>cAY~Xc#u@F=2%dZtr`NU4xabN>L7G8l#wLvyW*XbrWYaq))nPb3xjqH?{Tz}R+ zsgD8B<bem_dysg>#yNqmamWHPfZ(g9mf>i8KG;0O7~CAJ7i0i%H*f*GcGXh@M|w_t z19+f@?`hy=3Fi<@iJUpfU4;Y{NPQsB7T<u2h*w~QadPO5**6fpISxOB-eE=+mqZO| z6pna+ldfB)JSQC?V7<U0B4TeQM34efupl5u09@~8=pn0uB_$#Ub~NzPeas-SHvh@L z_}UDL0|!!|AlcfnAQ~P{8((CGM7kan5z>y1yqge7#uSJU2nGk7xd59Yw~t?sPhyh& z^yGo$wqr+<y+5)tbwCIOgpVl@C4q<99z-eF9wbWuxCnfuXObhxLmahzxF+77Y<ZHz z%vVw)`}FZc$!9;3r-p8P4m<nf<Od(gwh1{|Elj6~Pau#ZB?q2C%HAU51tgXsf-bqi zNZ?8WR=`j6U~c&2_Sg&Xd%z8ibVMLZzT@Cck_7~gasf^NyhPAXqRfmkm(s<*7Zf{v zHos-y%;8i8nng|nmxASXrQantCL?LO6Bx(Ds@a4kI1&)?;OKz`fKP~EKJcU$Qn}z0 zFd2w2ND_*GC<fSsssQk!d+2iMug&DPn}!e1z7aN(4U>Z)02~Y)mYfg}8cAb33D=gM zMOh_Vt{s+dOkUnLlALf;mU4pp;79m49^@@(FM&tEukuBJtGI8TEBz`NyD4Kf5p|HZ zWY;UOTgX+C3Drs1fehhF<8Wq>6$xgzTLP`d^Mhx>l<A<YC=HUL7+UEU>E|+$<YZ&E zCUhGU>q7EHVNys&;I&!Oqi7*#N)v6{d_)?Wx}?R`7z!ETCK?3*h0uoyA;kj%MFeK2 zFNZ0D_a{y=M?>XfMXZ3+;@bd(v6;m&F0s7>N6{0ZACaUEWK04Y%!B+rZn3;lyi1&j z2yl)7B`_vQQvpcgDPUm9?T{+9<rS$&MUai~M?KfY!^c1aH!*IFNKynN8N}kI><yS8 z*kGI#TmWc)4*4&BmO~U}Nd`Pjh4BP2OKn8ZDoO3=;MlJ9w!j5F4l>w@AX^8J2e}47 zbwPwVs4xm#!O<c@jpR^#n2Xm9(2U;?l?j{zd<);2aFm2QzPTzrC7$}gkA{-TYn#dW zKRl=+eLQ*Srp_S(sJ4NZMT(p#(1A{Z`@-oL1F@70j3PfAYH+zYJ~oUv{wHu*5(@%6 zf`uc$EuBb^PS%1zl30$}By4s4fV3!48vh97bHr27D+pr2q$eT5!4E_g`T{BCyl}jL z^5wUP$4IBM#!yVj%LS-)hz`JCIQcr5CloO`4Z?|ZI0S(X_#to!whM|FiWsmcn0W^; zCrW}5L4HqDQ01%%yE{}T(dt+%)<DUS3<36d{3Z!Pl!Gl8R)SkeT*&&usmc-&Awi`Q z6K0d0<VyfY;DHgE$00wh#hQF#I!XwJ<PTun0ZpQa6^}<!3<V2Dpd=rcLi8dhfJq@w zL^8?<1lmA=%#H#`hshAjuTSR!s!rrZ{2nAD_`QJB8V~~PpU{W+Ys$x@Pw5W24Qz-2 z2-}6aGecG<K+~n>Lw3Yd9w{CmNzGA`h1czq<+)Eje<*qW#thcLKG_&mmKSTop~v7r z|3opO1b{M3xskp_41zC#x`zVe@bFjYV6TDF@UK<r|B9y)?;B|Hcc=gPL>eR|5h?fs zZW=~S&Asz4{c>MrvUP%Vf%L0-^X;umT4%Su1?Trk!5eNbZoBP0d*0u(wCBX01KQ8G zf7t$9W%p{-beem#Zf-o?_*UcQ*8a`EHh<Xr;pXQD_V52|{}1{<+y9>a#r<xIE`D43 zRo}<q4nN%Y&c1W{)V^N1Ex)B#mgn`Zksp*lCU363p}J4y*~!ZHDxdCMSh=kIp6V5? zKQ=CDoZb7i#?g&-{nz!c)jwQcTOX|-UawUytUXq{tCq-rs4cH8s2yB=rTS3y){5PH z_u#?e(*@w!I$_|;1OGfQHgH1g>M6Y@{v(@rk#zvshnI&!#)1Z<i|n`u3=pGe>GDJ} zde7YCsC(w5Mw6J?;|PQ1<M4_U2ik|w8VDY+i+qo~XY%OXr!R;F`9=UIAuu#-HDDYT zj)x#7V7W8qEnzEqK_nejQy}o{5tfw13Mot0T7`@Esr%-h498B7Iba-aoD_%n3^YNQ zX!yEpCr=(010k_v3JncxM?enL1Uu0Lj|8p&`yd1U+GNGu!zl}o=m+ZvST0Bd<n>kb zHOLErG<yYhiM)Gi<R{Jo{JQ&ylS_h{j1M^-P8LU#($5>omirDrnWKVQi$NdAv<aJv ziWh1JR1#o^GqZm>80I4as{!}Hy<<o?xg=?^`e-cJF7j^4tw)a}m;cN5)6&OLSIkXJ zd=8Zx#}o?(Z~%IY>T^6-9!Q^3QAjopBNm?k7Z(b!1uB<?!3M|o<iX^iyH+OG0=Qg# z*A0gRu(_a5X=EEL5;&Yr3ko&r7p>xJ(ktSX$-po1eeOx_{>t2B;oWnfd^~mUhD3e# zz>4&f<ox?ak}uvrlDh8@l9*VuF2EA@1piVf9wr|+4Y)Iwe%s1G{!2FuB{$uB#4sc# zEFS?en^PpdaLb`@Fk?bfLScC}6~Fw~9OOF(PLTFY<Qw)(u76}G`KSAjoCHr2nJSz( zB_dG_%n89xWB;));2t@d<(wHI7X`@DPlXJTog{>{*junfV>TgFJ&-G$L?}+|tCW|7 zNrxo^q0}Z_mQ?TGEA`ez+==G_hZhf<Xj32zVCv8um{VX0=@B7;r-;R&)?=L%fH+nV zj}%H0kP+r7mV@*=z@|wFIpjys;h102VnBy%U^wY)s@&*;$7^h3b&`A`csS=YO(a+X zH1<TIIXwa7I6cUB(2Ajop)xfWp9zeXaK>Wlf=qLlp%v24($9zWf|Dx{IU)`GZIcX< z{Wg3|!SxdP`P6V?5y9Yrz)2p0vl4Jc_!T4>vB;2Da+89W0RavVo`-?JVr(p?++%xE zM8caPUVrz#xsxye$Z9zX+~F`_VFl-eR2akohf^PE@<rmycq(u~Aq3L^nh|r12f<c? zX+iD@EByBKDQY8P{34)oksZOL>SO`1W~K=DK&VriBZi#F$;Ai7@tFiOgx^jo1#4sD z$3gX%{*bN`3I`7v&l~Rtugnr29iNGd7{jkO<g-(ez<8Wb$`Ro3M+!V070(76ikVk& zWHJJyAS=QpR0w+`_}UuzRPb+{ME__GtOA;u)*NtlA#xCb;ydtBIJyd33x&p)#gIYe z69<yl-+%ZBIR=Ax2rmMP22MKD7C{sd&MR~S$IJ-C$<WK3=x-%!?#aMp4`v{Y61FEU zi3i^RSA;ArZia@ZZV^f*_usQUGY!Ho#yRFw30eS}K|OIV$(G}ra(v}OlC$s4+&dfx z6(5sC5<F{|D7aH>K@!8z7ewYy*3xN$$BzC9O~}=N%_PJva{X)#z(yQ*N1i2~;^$Zr z-~m#tC@WI4xU7iJAl=B4+u2j3-~}!00M*2)B+&#$g?|mi2dzbeTX7&+f;G2Itdx^| z?jO!PSmGZ-G5i@A)S&eQl5AS0!i9u_F_Pchj}_ey7<2I4f&U&jx&IgacHe*Wjr30T z{H$k1`&;dy)~4o<noAlFG|s8tT0g1w(VAJkx_U^8ejY77xNYLSV4v%9Y_N>VAQp@C zJkcd7ar6Xgo_~=)*C7OO2B*L?X9(cau;-ihJd#_WNmJP1+8n2wUewXzRV@P$revi! zt7^|T)Op0RcH+Ht@78h(PsWyOD^h51O$UxFQRoD}U8Be%i7+9c<O|5JxiOqrwIT+a zTQm{@@~+OMMmU0kwB}%I(4Kg+;On|gvJ||9@RpQVSAVfkDjvO-VtNg2-NdHV>l1Iq zVUt@X@@0ga2xbE+gB8Z3fNczOTGWvc?Fn{78S1c;NNc`n&4c$r5HPijtMbv|1a~q5 zqlGB}Q8v=8aH~ib2UT^FOOKz`+NiCvR@>^z6v1AZ53h_PLkQTFxmY9;){8?#*+J-6 z<imr*Liz(`<yiVCfEJY>)S9S}PDLt|G9E_Pwd|uv7Nj1Km}DZH)!aN0Zdf0f>F}24 z!z&~A02jfwAfsxtumLGcGLcZz$PQv#*y2SZMTrFY{Lb)}<-;QYn@W|PR+KAaloshj zb}jLqIHypkRe?W}(S;WUy?$o0Lrr&zVk_YD=k48Et+*>UdaK6M(OsO6ZU-Y)V8bG6 zYoLsgHK5u9W)TSxTra^4bSUqkHm*n_Sqv7cGrIA7bOEN8@R#L^w1uwV3)(p0;7%UM zEtQ0%X1l`!g|Y}UjC5}<GuJM4##Son@RoKKub6W+MY;O_AD%hSwFM(}YIsZX;Q<0o z<!48W60}p8+%6!worb5*SJ9v_VqHb-&Bn&1<4ZSf?x?e|&ZL%j(GdUv9zFSN4hfbQ z<PNeFoC1}q2M2U<$MsX@o9aArsw9b$ZQq^MSYvPAxPC=)d~jH>CC){b5!3{etXoCX zjv^Ho!!!@*ksXz0$rc-9%Qwg4VQMR)TxJMzLY;;{7X(g2I@bt+`Ju708o)qh{PrT5 z&^QfOO=YfKN$|RSQ<j+vQ<;)fMzJfat|*cT+~mwS8bN1x5lkrZ<LKsi6z~dPlMsN| zN~BluTEO<YBcrdDg^9ok$kJa;d&33@4XYFN$<!A5xmc})9#~d$S11+A8QN4>;APtK zr4!?;I#RvPU{P`e-~{3(@g^0l#5g2AprqsQfiK`g6QRO$pfVDIDgZ0K83B&)vvD1# zy_zhe%l@(EiNKL4OJrHy&19sBn^Qe-QNEUC497A!d8d(*Mb_t0PNQ(HI%;llKD?PU z$x)(>SMemv>UUo)OGD?7&rS6}bHmu?l}pAl6a4mkcrmUk(G*CV2DVI0pqP~KksbkR zC04b{aPUHroUs`u_`=TW2^a>Kh2yA=a`HepA$5?~pb&#p4PR1%rWeTq$P{VRG)X>T zEnl~B{l;|pF387M7Bv%wbuB$Dl1W%ajpfwxou7|yCV%ymA_6P<#jcg0MY2pI`Tk3@ zo9o6`s%w@nNz{i%KJbIV1H!(S`p)Y8eeVgx25K4`+(CB$5gY7VUy~g9gX<@^?v_sg z44AIy&r~{W7um3>kFtkU75{O*0t*6X6of0^zgq|M2@vQ+jtMO)1ck~vEELHCZ-p$B zE^xGD)hb;zHYQun9huxZ&>3I}UR9RJD-sHepIrOY0Q>U+&fwN8DkRrvof`ICl&}}c z(hS)4Y2eYaE=Et;T0X$Oe1KX>RX|yeut+H25(;Q)fW7$uXHcF-3pr0^8SWxkqB1QF z0-8>=$r)d5pw<ta+}e{558ys4XV^tG12LB<{sbq6e+^j_bV76nV1@(1|0O?`d#*D! zD3%0|acX$&e0VdW`$dJ}eOU=}ku35pD1>x_8k^T|vez40wn1A{1MFUiQC19HBovez zUcl4<oB04|RC6pWEaxE4+qKSaN>*wib>e<^9s#H!!hq(cF@5RsC3@mra+trhk&A?0 zCVEVe2ohL7xGu$v6u?tsik;ShZAx-2MH2BIEF;-+{;bxzWgDC|E7!V-xAD+mYrV6M zCBPm%K)QBZ*h!`?bech2Ppm2o$#P8Kk_~HD3ZeeiS}qjAb63t{S>K2vp#)`?D_BFV z<;%SB#Y+P#lUdDW7T4WOm)(?gNZCmy%jwKZ>*dn8X9@WL>*5s`XWO-s$|PM~!aNO2 zXauj8>COX(gv&9tUFCdu&?PCJC6^l;iwr?qN&PR%Z$aQZcymyvyE9u}Ez6k)L<MUh zUC40B*ciC&x@>?_K0ti;u2o6^&s}?k6bZ%C6y?Yrk8Uy_;0*rs!a@SISyJ#>Bn#uD zB&){uZmm<-E;E-c8A~0WcTFu{cS<nbjJh^;D3VB484mi?=-!!+ZYDQ)w1^xG4?(2D z0D&NyQjJHxo!pB<Z7nnfz@#EsaAqKGh~;ZqYpij7{f6X$A00ONj(m9VRl25<VEn}J zIMB(IIFPWRFcH!-m0l$NAbCUjo{4h^1?SAe!!U_lJBxQoK0F|jsl4ODqQoO5dR<!r z70IH;kkJW5Y@M-WouO}7ovz;Ie0XJ~U>K!c8~qfCgrp`Mw$AW2<-?m<U^iM+VOLgS zJtb=<Moa;fW+mG$nAKciX&c=Y>(gL-V=l9-QlN}bR49_Z6n1vr!7I!a+L{fi%niBB zvf970zB`37v7!u<P1*=ok8MywVB14Ou;TT(P<XOk8RnGYbmc@93Z<n=W-Jz4_OkJd z%?Q0V{DF%a&gCL!@a2Kt{;=;p;)2f;7u-NxaD~VjOveSa@7Db4J=HTRpRF7xe^@?R zx_sNjDSY(SBl3?XY%8pD>y)`szzCh6>?LReB|so3Y%L#-Kj#EoX!>m7iD~mSo4<jf zC;&+<oW6dE?XO(JN(t|MZYoofL~&)BW86iGQ9xrP*;ESK(A%(eMEMCFYG59zgslJo z)81c4Cb%9y(An@?56_1Oi<t6IYTF`n5#X4JJ0l1mRJX$dk6d!RRIX57L<t@44E3CF z6R19?cMKj7iMeTYHDi1r4YbintqqE4{Tj~?vH>2J53r2DUsl6kG(f7D2$iP>cxXOA zN_#s6h>Hp<5X(9s6w1=zbY_0h#EQkyhIqx&Y=9&A0Luy*%j)_Ig_6UjhfgQK9L@(g zgS@e@kiEgYbZy>HB#YVwAbe2nrJHCf0KqRC-XZz$$WV4oM3xbG3q^{McG`P?ZD)AX ztdr9UX(wfL;GJX{^EGuI9RQM*WBat0EDaWGo0e|QJn4gTk!5wJWo<4BB@)o)IG(pw zS-H{}OD@_-#4sn9SynGqMhV_grs`6fF%Q_vK+P<e)m-fbOT!gr3OsKe%0)s@a05|w zOw}kQq$0}#GZzX0(Kh5>EFBp<+<RP4h-BpcQ8~09gUks#iSnUWi$t@*9JDZXVBM=% zsAIV9V59-+^q{G^?cN!otd-i1LbY@?RRV@&)dEs7&Z-rQ7rVJ@dtfROZ3?M3O-%11 zFJ0ENrbwhkUX)6V&RIO5GrH-94vPvqI^foK<!l$pqBOsQ=B-#BMHer=cv*HD_s<7d z#&{}gkW(a7c!$$@?XCOe0~B>wU=E^!d{JQud0CsAB3Y1#iI!9ER+(@%!Msl<Rsx3X zn~$%oE)woz*T#oMGAZ;1&YxPq+4=a0cCmh<k3le6*vFuZ(qANt1_73yTyw$R&Be<$ zE!ns(-=F*B!xMQ%L08*Vu^bIYKznxGd8SAtF{}bps<S`$?kwMQUyenEjXBDy1&U-r z@TNBy%ZHv>xtwZ`#o6|pm5<LWA({NI#s^uEjCN;ydv%s?x{7yEVHs~(Z?2i+>j1mB z6||;I>!a2$^UW2@wG5AVO)j*odrDcSpCXwwO3>0gY}0c#>Px~^$r&3&u4(I@xzI9} zXj$XRorF@dh`pfR1%n~b9vEG#R&HFM8^%34BQ5DMQ&u}uC{z%YGGEc#v~lCI)e~cx zHQqfJTE->S;aPR-Z@ZJw6sw1O2FE!aDHOg9&V;v_J=+NzKA2LCZiZ@fji4I!?$xuR zr`Eo(^=#|3<|i9}FQgiE!iJObuP!UJFKc%<^Q-mwhBIF?=D{q>Fyq#;rRz*HTr!@` z)SGgdWo7%tZ1`z1{7jh|7{GiT;E0?d0hZVk%a*S9$JVdUm*<V0ftED!DdW}`3KcC? zvgO(2`iobuG}4j!TTkrli4sO$8C8F#(COJF=uJV0<%_jdfwxZ2)Yu8BOi7{>18hl1 zsx-@i0!Ys;+A>guLmrh<Pf?3W(-`qx@b)O)AXQ1zTS6;REj%!TJw~9E$<*i39*MNs zlo~reA0F?7O$mw0jTS=a45$~Qz>MAxF#Kr-OwVbG$4F~Kgu=F`B@TcYw8o*P7DAsO zAx;N?Q?mFn;UzVVm4Q9(>RH0!xO{YFox}wtwp&?4p+pn@;WWT`Y(BafeIrH-8%IFl zN^8$jVlSyzhx!NrI!f#57XeYBP!<4Kx_ZsXUblMl#5l|jT!=U1!z=4uMbR)w9QDc` z&4r1mXuU!EBIu<oGo<F}B>Bw6(`Z&Z?E}6(AKnZa?xI2-ZdvI^;qa(UQ*za8jxXI1 zZivO%zi8|0a;atgGr;<~_8~76s<_EB|GH0W(-LplhRrLNX4>YM&NxdL&K!%bwJS3v zYV&pehIb%JYqEpC%pPBH@wl-e6FR>$%#zk0S?AAPH~uUXs?yslo!h3h$z8kB@<p8F zZFO^*fFWI*VwANJEs_az;-+vltx^nk$#|aKbW)L$RMxwMo-ti3es&V63ihb!8dShe z=^8s99i{kGw}O&r<{}r`9b`%zd@3Y4P$9i)L9n{l<rT^j4INUKu(5W@IE_EE(`a>u zSJF7AtgyI9Bo(l*;-`jZ=EIxO$!AevD<9IVU3(`M$)dc11Yc?t)$x__SiEFKW-E+* zfTC4dx2_*$wW)<dMODW1`sw)qo$2-|qk<Uws{Scub=`%sG&qN8u5sgPif9%?155!* zEgxSQyBs1ueOWMwut~xCXx0ZS5z9$s5?%12xXiFm9Q<^DLKvo5*VF>4`S@nEWgIQ+ z%UIS#v{05shu{=|U2Cjeye3?er~8zAe9URr7Gh=n=4Z;BvcCW()P8nCmZS6W&1llH zsIW^*SyT6!vH*LX`KmEbbX{~ZuWhlvdV{}i<*H1N&da5iwXqb<NWp}5*=4*)C<$*v z7s`89(_a>8-n!IN^tT?B%PcEKQ%f4h7s{lTKijCm2I#62@p!gTkIWactR$nX=lf1F zGxVMkHe9@PA$urKIJR+rcHzl2X_NGW8uw4ql;Ot%Uzl;{$#>|IKG}b6ztOr#^n_@= zhOQ7d_HF1pv+pRHr2ne-{?`2F$D7}#f!RCghPIY&XovS!n@Z0wdj6&718J-DgWG>= z|E%%r_LtjNwa1!&YM;<PpxM)UzV)Nl=Ue|IY7J-nb=#$fH`1DFQLsh@H(jZqE6}Ee zSjzFKSLYZK)T&X|8w$Tsw1TD-2<1<?41_Fze$mWM#Acx@uNL(kbmyfTmQBV1iZ=9Y zT3WH6A&+xUhG=7!wZfya&=sArDP)O_$p|||G6Z%hpdoz)*mhZcP85@Qq+O|~RpLu1 zTZMds3a9={)DpT`k3mX6@OwcXxvhk1CTh*dKoIPSU(kQRlGEBe@%!{Cq$)9l_exn1 z96Hee+m0sj)G1z-PZ8hGwE|Reg_PLPo{c&f+DXHlq@bPI;ER3v<aCrJUc7ul`mPfH zTRuL0YO=(U%{ru&`JVC{(hn<P{AB%2cf@R8^J>sm9=h|&7Dcc_-LpFK;oFCM<dL-M zs4Uwg&)t4%kDOh1P?imokGS)m9=RpYDalAnuWY}+SH3r`@hdCK$vTjh)eU4#L(3Td z($k_aH4?RqB<1bx@9mRMJfu72Tl%e7p5*R-9h#KhlP-G+;Z}MgeX67qAggvOBh+U- zPAOld6}P+nFMaZU>5`Rk45Ytp->qN%`eccjmNlW@&a6HsHMTb<8mBgf8&dt@`W^Lc z^=0*w>O-}cL~F>}6}6E2l=iJYmv*PQI=%Mkz}DLbUTAJc4RT#X^PA~~5&QK2-~R84 z_Bj0)^xMr=|L&uGPtyzX<DyQx`E+ZK#=Xst^=W;5y-)Ujz4!Xwb-kxI-_mk==l0fm z9&66)xvMAXS>Cgt@k_3ac)9&h`?mI#?YMnhdS%29xGv(|w@sW}6>4w$(1G%uX%!}& z5T@9*MdVuP(X<Zvk$)T7{_=tHp=oCUN{DEhismE|A%v%Bn*v_STPb`N4a5Abcf`!< zi=yHS>8bS1v&V<FpLCFXUAmE}y9Vp@C<et35ST8#K<RdX@^mQGFd})a*ckMZQK)1h z&{t@<iUOwh9yvG)gV`}O@sr=0K80c>e?#FO{a>iQr@;vrIvpn{q@{bKFE1DJ17I$i z;wt|3-yI}py=5T$)4rA)peP)n8wQL=I7N&M#}S{wi*jYp3t^7a0Fx#FHg!SNHo#&) z&1;mYP|2L$C_q1Zm>1|!N>f9+r|axOx~Ni4C~m{i<Ls&*Y>-Je(kPguVIJ8Z*c$L} zY5qk&e1cL(%`UK@-2kmDV40DqhJH=SEyET82n__uX{*`&6?Ez3E*ml;RASOH1yew$ z54eVgsD|aXh^!$6gT%puzfHGp+VTnFJCMyJb3?-vC@^Z)M1nRHd;oW45aWvm5-bWR z4itGhNl@PG=Jth(U=pa}LIK+OvJa>t<pK&?`4YxZsGOS@Kycs}ifL(v1`QF&2HVRT z0}){0T+GX<!itulNSS?^0RR=^Kl1V0uimGlo=eK%q-VB&WuK0EE+Mu{zu11rZ29^* zC7D5aX!~8W<s;^h5A2kW6;+Q(f7<@oZ27*-h?FoQ<;M1p>?@B>&fp^y(h=meBTiY> zVb+CW29vIkNGHpwA`V3VQy&s2T|Mr6eqVVh#<6R4jP#rB=k1@*emJAlq^QzF`qlO& ztkj*C?l0dgPfo|$g`sxd;-;jaLwZ6K#nR|+=c3qqL8?EOBGq>Yq`G-b<J!jD`epUm zwbiv&)vMgys_ZF$hU@G^Pe74Om?~T;=`c^j@vgV7OnJ$Wp4|C@<^oua14dd_0LQVu zV(rSs@wzMo>C~;Dx~3b$7W9QJyJ=@fp^72!BO*&GGE<?OLNC~4MiW^)&?#IgD{H5f zSl27UiiFaujFC(Qc2k8b(@mjAY5xD}rqE><4i(8lk&zdI8{2f1O<KG{5iA04YgV{& z%sFNC_@cpWx2ydMMS|rdm!7|OYsvaCW3z3q$d<8Fz*5#xIlT(0%S}i-iWGZ?ndH77 zB~J+JYZiMKug?;~o%$8bOV@@1u&le@tMqD_BDo@}^rlv^Q@=80yi|8lq49DETcI88 z@^+?I%hG}3@YeFPp)Ip@XU*ztn|8W%mf1o&wC;4-(~fsN6$zy}1u%YUfSoR#7{pFf z^3lSs<N@JSw?<J#vTy@zJMCh*Zfpr%wl?Mbp-z|1GAmxzcB)7wojAmO6&-w~)1?!- zYp0$1XkkBfxJ+G}R~5;k=LTv<5LVr#6I8uZNSfkfS({EtD)ZrV7;>~XBjr$hBW96I zc;FN_OpWjC995xPRHq-tXkkN)9U}6AfV@Z+<Te2xQET7_>(yl`*eM8#Z^>a5xa0*L zNv0c;Ott#jMW?SKnIhvw1z>0W&dSF}zyD6p^hJeD)4A!Q>m`9RWzn^PtfoSqLA2#d z?Zo<x;Km!+t!XjEnYq-oOLLbV>>S^&*QgZ=r7BO!PQ5wquUWi)-P%m(8M#o=dZSy@ zlCoRbiiASM#QjW1x+Gp5dFxj53$c`^=Sx}aDo=aLW$oB@5}G!}0Q;uf^VCu<%Et#J z*|}I^wD4w$GE}Hg7TrR%6v_=ZZCGusUz{Js(R_Tn?(vefc%gMr*K22sWTL(4$Tc;- zh57hqT)Q$_c<%}o$=xo@qaSvjww*y9hlX#dLX|dRcRX0XDe*=Ro7{R@KDx39rVK$V zl1Q-u#i&!GJ2f92#jl+U2No9II6!eh*L(g7Wf3x_JkyDIZ1W~-b)H8#B_AFaA$ASD zb`AYy$X}sIQ3^7>cyG>!$9+GYRy2zWd(o6#{#ztVbP33M4Y!;P>sJKJR&oBt={vbI zz>=u3474m13U*7<uA@j7<O7^>!_cC_D~8HiDo)9o%7NoG;Z$HLMDOT{)xN)87ls}l zP3^Ef>bG{{lbZ_*b8{xmZ4>XVi&&)7Ij0OHDY=1rnjDbEA|ka!FLu(c8fgMzku~FM zJa1yLl4;&f?;P%8>UxJl8IC?RH8X`mTsAXxzkc=7i=%Njr|V3$&M84+%3%2-p#r6G zGj$K}wRrJnH7BNbn&;3Yq_7)drx{_{g_Ao8rNM>Z8H+0zrZ!xsc@FlxbLGTn;hht- z#O>P4_0_WIY{5lT&_gK>RJ1W~eAD8*vY^vFrwqL->kL~clivRX2b}}e>7FyA2i~H> zCU`samn~>7TO<p}QQU<fw(9!DtGFyH$Z1HO{yE~(uWrC!*=4tdLa{uwa_$VU(?4g% z-9n2BFBhVBYuC=WMY1RoVz)3r*rLk<XPJ|enL8bH=&8~bc`Uo@v`{8@dT^;zXMCLw zIy2zQ(L(&P>?-p@SxAEJKm-3x@!FNE*Ba|Gjo)dZQ`YUU?3UIdnV_=*sqTz#Nk`+; zi!Z<RX_Ss0ufFz)nnTtizw5Q&s@Eb}bi}ar^Z?r0@-f4wRxkCOI~{a(dD~)s*<x9r z<U*NzWZqgP*h~_T9;%tpP7j^3%e;2ob~)?1Tqu+)4Atx;E~R_cx^-iDjL>PKQ+794 zS;DkPC}BxnL)Rp59@_{5EA0!=X`<to^r$Rr99<|=ba$Ng7dlOJIEJ03nWKeWGih1R vU6Wk4!S!`q7R!z3G&84nDIF2hD|&X6m7{{N?z6yoskV0YvZdh?;V=9@+0z!< delta 2949 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 diff --git a/actions/__pycache__/actions.cpython-310.pyc b/actions/__pycache__/actions.cpython-310.pyc index 6a970e47c782068588c21626a25b5b69dcb0b9da..7fd15b5cefdcd7caf6937f894dd120c252eb9803 100644 GIT binary patch delta 2013 zcmbVNYfM~K5WeRw``%^W?91}pf|n&!N~BQQNO=f^mO`LtN!u;uF58tYyPUmXB)eM0 zn6!yWaenxNU|4^()h0H?#DDs)e>Bm=Kd!Mc{%cHpgcu)9)S0u}r?Da2WWIZ5&YW|< znK@_f_VC@2%Cy~Xk?{Gzn4bH%?Pld~GIK+PE(QxaWouKXFxCbe;Q;(lvF)&;p8=&0 zC0mqWv9=Z}40~UT=M0;Mf|NJrjH)Rp@sp}qwY({nw0>!o<xQF~XIf>dbzaY3&`g`= zoJqA7<h)t62~V@|vgFuHOtt4MYGqJbmsAIioMPnK(5t$)8Iuyyge1J&xeD~~Z0J;7 z=#dHU14qRNR}EvV8U8fP#%39^zW2yD(4$PCWFrU(DJPw-%rgylSEZn|$qL9@W%G>7 zIkqM*$`g_z7xh|FOU3W#a0P0*RD7YR&t_6d?HasqY_vydJK8%Utwf=q_re{cA5Iy& zZ2T}<xr5*cEIK`oejM&Y*(P_d^p0uWZYi1)aV?fjr8V9PS54iX=g7YWp=ij?T*##2 ziWPn}wL2Yi$&?o7aW$qUv*+VkXfQ`CZRi(9$u`2c*{63in{0!GxtZ;!0y+-hlplq6 z5FCJlKLX#GS6J89i<Y05p&6}zb;93<{qU;ISapz8bK}C&g>!L!xQ%zyqC>E5<Dutq zsIX#1R*PpuM2gINX?pg4U?)f&LRfhQZkq!zV?PrdCRJ{&EiKWBB}JAjt<qCErr;O* zC+#CRQmp(azIZEv$lNg+jS?Iu7$X=bpcKKkl}|hAQ1VFv@%1V2IJ($5IOeF)Q)Ujq zqT_5i71OA9lBY<;v`EDs=R8y4lJlR)DVjM=Ksn)O2q+yqMo><~hprX_Rhx6T?TWGl zSlk234mm4kETY%N|HF90T`jmK;4^n$nQI0=GD{y4Tr+~}anH+ab?cTV&DwWDmR8f@ z=Vu9KAnALT%>k<#Hk>Cz0>-KanFjAwhkTDyqWO8aRW&7ey#*gNG{TU-t;}s1r{5qK z!EG720lN;*26`<<w9;PLdU!oB>bist!uU{w$iw%6_K~HWMOdw>T{CIsoRzM<>Ih4! zb5&ktc)eX^yZbS_XG5R2i8kOBZNLXTK_BFU)|fE*g)u<A;gQx5e4s0#QNEkpeH!d> zConL4PWJEte63W~Mu3HU0gsl}W>S6WtTq<s6LG$rTu7|QIJq}ekNLh5@<S{Xy_fSV zp(7oNWv9oysLN`+sORaW1r-X_{{JbI9PSl`x<Q3v9gqpPluLCHnO;LFmFi;o$Q$A3 zu*$yLntW<tcSq^-Jv|tjy}HL*I!cs}esH+!;Fapg6VKEa)g`K5i!*hwCR!$X8MpZI zKGDm9=*^l%_QzI3?d0xAUa#Bdrl!RQ38)8C$ATa0!WL>f9=scT2%PmNFqFCa!G}T_ z6rp@muk7?{^W+n*(R9POsLovsd9oC4cnt~sPPD`oB2Dp?`dkZiMvf|?@6mskQ~&1F gxj3~1PIr%AB%qA(HMkM!w$?eL&KhTvv&q}^FVb+chX4Qo delta 1687 zcmbVMO>7%g5Z-66e|F=a^<QkqZq`ZMgl$}tVoI?}D%Wij<%fheg#s;&)9ltVb)E3+ z0y4I#R1|TERA~+zLZs#b5*Gx%fVdQiBea0%#fOR;T!5lbQ2|nU^XyazBpSui`#f)F zX7_vFyqQ0zHYZ$5PNyue-?wAA^S_UL<hpAjeh|&`b}362s)b?!a^{4^cH&aG+<e=- zmyi^cVj;L8Zn`kf%GMFK%GcqhWo+vCn)RA>L#W$oHr*Z;=yb()&EB?kX~R^v>$2YU zmQb@F6|RuFR3k4F-BFWtXINMhbQiPS+)~ypaG`fUd}y5|3Ak@v1l68)wk(xGrD#w$ z`=AD&+Xm$Xvo=i({P3$S2`lzBr_{3NjmmtvxKyDdkdzL(lFZ+-mKQEA7Y$8@?<0P= zDyeW?8i=KsE5cT}pMfljCI=CT*CZ3!WG8l_fKA>*9>){A(<~y$7JU*S4TnQ<sLNII zMDw2fGhr-$a2)D>iuwMK21}PNo-^p^K01oAhv1--_GFl;k(OAl7|ZPwm?$bobKvp# z+{c)C0=Hufsw2>lLqJ?-!{fL$C1dRrGf!!eLOaWXS#xmJ^+{@iSy~sJWPfx7A&W4D zFpcmu!VJPJgO<5yl;92bBg#>H#6LWT)=6l((_|iga;p{;Ck-AY*HPdU+waF9uD~g- zz@4ZKzEE_s0Gj81`~~#Bh=7Hmrx8#RdIq5*#<VwK-HZEWXn2RMIy0-IkW>5MYp<$p z^8lK}>KOPh`%zyn=dDA|ccjC+#J-Tj4|3im&ifbNYvgh>?_VOR?U2T7g76Z;S&+Kl zA&aolJz+KQfev@N$3@CaxE%=w{;es76d)gbj#Ik=$D@PrV{l)GUWK{e#1Kxe!sr2c zA8v)R@a`^&h|m|F@l;t~+5XX2CAb_;k@GMahz_ocbq8-GPfcV^<gGc@gmqCjuM#5U zg*k!ye2{TGc0dcx(48E&-jgv^{cy7<;C3x8l`GE}bk3l!7D{>etEZnSp+>S>N~n<_ zG$MN}^dWM{(JYta1C)b=;Pq&tBS?dZ@!kVL8l8J~f!t`G*>!AZ_4=+i!&nB?%ofYj z>g2=fbxUm%{D#*n8yoJ>TVd3`dO&Z5)B7~`3c1@H?mM|NdLQ>cdLV<ZJdD7{TYEUP ztkhU6EVoA<cTg{eVBah3Leen^4Lr+^RvH-JI@)Igvx#kX5zVvr{Lhs=7eCHxbdO7L zJDzMy5LsnuzabBPWpSqk+G8dOncdSGA3I$bfK!v=;Go!r6z@94`chPpuCmD*gfDl; PyLy#jMOB8BA^*_dGEZxk diff --git a/actions/actions.py b/actions/actions.py index 3e219de..ecad199 100644 --- a/actions/actions.py +++ b/actions/actions.py @@ -14,7 +14,7 @@ class ActionRecommendCuisine(Action): tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: - cuisines = ["Italian", "Chinese", "Mexican", "Indian", "French", "Japanese", "Thai", "Spanish", "Greek", "Turkish", "Moroccan", "Brazilian", "American", "Korean", "Vietnamese", "Ethiopian", "Russian", "Argentinian", "Lebanese", "German"] + cuisines = ["Italian", "Chinese", "Mexican", "Indian", "French", "Japanese", "Thai", "Spanish", "Greek", "Turkish", "Moroccan", "American", "Korean", "Vietnamese", "Ethiopian", "Argentinian", "Lebanese", "German"] recommended_cuisine = random.choice(cuisines) dispatcher.utter_message(text=f"I recommend you try {recommended_cuisine} cuisine!") @@ -40,9 +40,12 @@ class ActionRecommendDish(Action): if response.status_code == 200: data = response.json() if data['results']: - dishes = random.sample(data['results'], 2) - dish_names = [dish['title'] for dish in dishes] - dispatcher.utter_message(text=f"How about trying: {dish_names[0]} or {dish_names[1]}?") + filtered_dishes = [dish for dish in data['results'] if len(dish['title'].split()) <= 3] + + if len(filtered_dishes) >= 2: + dishes = random.sample(filtered_dishes, 2) + dish_names = [dish['title'] for dish in dishes] + dispatcher.utter_message(text=f"How about trying: {dish_names[0]} or {dish_names[1]}?") else: dispatcher.utter_message(text=f"Sorry, I couldn't find any dishes for {cuisine} cuisine.") else: @@ -191,7 +194,7 @@ class ActionCostBreakdown(Action): if cost_response.status_code == 200: cost_data = cost_response.json() - cost_info = f"Total cost: {cost_data['totalCost']}, Cost per serving: {cost_data['costPerServing']}" + cost_info = f"Total cost: {str(round(cost_data['totalCost']/100.0, 2))} $, Cost per serving: {str(round(cost_data['totalCostPerServing']/100.0, 2))} $" dispatcher.utter_message(text=f"Here is the cost breakdown for {dish}: {cost_info}") else: dispatcher.utter_message(text="Sorry, I couldn't retrieve the cost breakdown at the moment.") diff --git a/config.yml b/config.yml index 8b004ca..c78895d 100644 --- a/config.yml +++ b/config.yml @@ -10,32 +10,35 @@ assistant_id: 20240528-105235-obliging-death # https://rasa.com/docs/rasa/nlu/components/ language: en -pipeline: null -# # No configuration for the NLU pipeline was provided. The following default pipeline was used to train your model. -# # If you'd like to customize it, uncomment and adjust the pipeline. -# # See https://rasa.com/docs/rasa/tuning-your-model for more information. -# - name: WhitespaceTokenizer -# - name: RegexFeaturizer -# - name: LexicalSyntacticFeaturizer -# - name: CountVectorsFeaturizer -# - name: CountVectorsFeaturizer -# analyzer: char_wb -# min_ngram: 1 -# max_ngram: 4 -# - name: DIETClassifier -# epochs: 100 -# constrain_similarities: true -# - name: EntitySynonymMapper -# - name: ResponseSelector -# epochs: 100 -# constrain_similarities: true -# - name: FallbackClassifier -# threshold: 0.3 -# ambiguity_threshold: 0.1 +pipeline: + # No configuration for the NLU pipeline was provided. The following default pipeline was used to train your model. + # If you'd like to customize it, uncomment and adjust the pipeline. + # See https://rasa.com/docs/rasa/tuning-your-model for more information. + - name: WhitespaceTokenizer + - name: RegexFeaturizer + use_lookup_tables: True + use_regexes: True + # - name: RegexEntityExtractor + # case_sensitive: False + - name: LexicalSyntacticFeaturizer + - name: CountVectorsFeaturizer + - name: CountVectorsFeaturizer + analyzer: char_wb + min_ngram: 1 + max_ngram: 4 + - name: DIETClassifier + epochs: 100 + constrain_similarities: true + - name: EntitySynonymMapper + - name: ResponseSelector + epochs: 100 + - name: FallbackClassifier + threshold: 0.3 + ambiguity_threshold: 0.1 # Configuration for Rasa Core. # https://rasa.com/docs/rasa/core/policies/ -policies: null +policies: # # No configuration for policies was provided. The following default policies were used to train your model. # # If you'd like to customize them, uncomment and adjust the policies. # # See https://rasa.com/docs/rasa/policies for more information. diff --git a/credentials.yml b/credentials.yml index edb4bdc..7fd50b6 100644 --- a/credentials.yml +++ b/credentials.yml @@ -34,6 +34,6 @@ rasa: - # rasa run -m models --enable-api --cors “*†--debug +# rasa run -m models --enable-api --cors “*†--debug diff --git a/data/nlu.yml b/data/nlu.yml index a8ee96e..6dab257 100644 --- a/data/nlu.yml +++ b/data/nlu.yml @@ -7,6 +7,44 @@ nlu: - Hey - Hi there - Hello there + - Hey there + - Good morning + - Good afternoon + - Good evening + - Hiya + - What's up? + - Greetings + - Howdy + - Yo + +- intent: insult + examples: | + - idiot + - fuck you + - moron + - go to hell + - jerk + - dumbass + - loser + - shut up + - worthless + - you suck + - fool + +- intent: ask_capability + examples: | + - What can you do? + - what are your capabilities? + - What are you able to do? + - Can you tell me your features? + - What skills do you have? + - What services do you offer? + - Can you list your functionalities? + - How can you assist me? + - What help can you provide? + - What kind of support do you give? + - What tasks can you perform? + - What can you assist with? - intent: ask_cuisine_recommendation examples: | @@ -14,6 +52,18 @@ nlu: - What cuisine should I cook today? - Suggest a cuisine for dinner - Recommend something + - Suggest something + - Can you suggest a type of cuisine? + - I need a cuisine recommendation + - What's a good cuisine to try? + - Which cuisine should I go for today? + - Help me choose a cuisine + - Any cuisine suggestions? + - Recommend a type of food + - What cuisine is good for dinner? + - What's a good cuisine for lunch? + - Can you suggest something to eat? + - intent: ask_dish_recommendation examples: | @@ -46,6 +96,14 @@ nlu: - Suggest a dish from [Thai](cuisine_type) cuisine - Suggest a dish from [Vietnamese](cuisine_type) cuisine - What are some [Southern](cuisine_type) dishes + - Suggest a dish from [Indian](cuisine_type) cuisine + - What should I cook from [Japanese](cuisine_type) cuisine? + - Recommend a dish from [Thai](cuisine_type) cuisine + - What's a traditional dish from [Mexican](cuisine_type) cuisine? + - Suggest a popular dish from [French](cuisine_type) cuisine + - What should I make from [Greek](cuisine_type) cuisine? + - Name a dish from [Spanish](cuisine_type) cuisine + - Suggest something from [Mediterranean](cuisine_type) cuisine - intent: ask_recipe_steps examples: | @@ -63,6 +121,16 @@ nlu: - What are the steps to make [Layered Greek Salad](dish_name)? - I want to cook [Beef Wellington](dish_name) - How to make [Eggs Benedict](dish_name)? + - Can you walk me through making [Pizza](dish_name)? + - What's the recipe for [Lasagna](dish_name)? + - How do I cook [Ramen](dish_name)? + - Give me the steps to make [Paella](dish_name) + - I need the recipe for [Tacos](dish_name) + - How do I prepare [Goulash](dish_name)? + - What are the instructions to make [Chili](dish_name)? + - Can you tell me how to cook [Biryani](dish_name)? + - What are the steps for [Enchiladas](dish_name)? + - How to make [Risotto](dish_name)? - intent: ask_nutrition_analysis examples: | @@ -70,6 +138,16 @@ nlu: - Can you give me the nutrition facts for [Sushi](dish_name)? - I need the nutrition information for [Pho](dish_name) - What are the calories in [Biryani](dish_name)? + - What's the calorie count for [Pizza](dish_name)? + - Can you tell me the nutritional content of [Sushi](dish_name)? + - I need the nutrition facts for [Pho](dish_name) + - What are the carbs in [Biryani](dish_name)? + - How many calories are in [Pad Thai](dish_name)? + - What's the fat content of [Burger](dish_name)? + - Can you provide the protein information for [Salad](dish_name)? + - What's the fiber content in [Soup](dish_name)? + - How many sugars are in [Pasta](dish_name)? + - Give me the nutrition breakdown for [Steak](dish_name) - intent: ask_cost_breakdown examples: | @@ -77,6 +155,17 @@ nlu: - Can you give me the cost analysis for [Sushi](dish_name)? - I need the cost information for [Pho](dish_name) - What are the costs for [Biryani](dish_name)? + - How much does this cost? + - How much will [Pizza](dish_name) cost to make? + - What's the price breakdown for [Sushi](dish_name)? + - Can you tell me the cost of making [Pho](dish_name)? + - What are the expenses for [Biryani](dish_name)? + - How much does it cost to cook [Pad Thai](dish_name)? + - What's the cost analysis for [Burger](dish_name)? + - How much will it be to prepare [Salad](dish_name)? + - Can you give me the cost details for [Soup](dish_name)? + - What's the price estimate for [Pasta](dish_name)? + - What's the financial breakdown for [Steak](dish_name)? - intent: ask_cooking_tips examples: | @@ -84,6 +173,18 @@ nlu: - Do you have any cooking tips for [Sushi](dish_name)? - I need some cooking tips for [Pho](dish_name) - What are the best tips for cooking [Biryani](dish_name)? + - Any Tips for [Pad Thai](dish_name)? + - Any advice for cooking [Pizza](dish_name)? + - Can you share cooking tips for [Sushi](dish_name)? + - I need some advice for making [Pho](dish_name) + - What are some tips for cooking [Biryani](dish_name)? + - Do you have any tricks for [Pad Thai](dish_name)? + - What's the best way to cook [Burger](dish_name)? + - Any special tips for preparing [Salad](dish_name)? + - How can I improve my [Soup](dish_name)? + - What are the best methods for making [Pasta](dish_name)? + - Do you have any suggestions for [Steak](dish_name)? + - intent: ask_related_recipes examples: | @@ -91,12 +192,35 @@ nlu: - Can you give me some recipes similar to [Sushi](dish_name)? - I need some related recipes for [Pho](dish_name) - What are some recipes similar to [Biryani](dish_name)? + - What are some similar recipes to this one? + - What other recipes are similar to [Pizza](dish_name)? + - Can you suggest some recipes like [Sushi](dish_name)? + - I need more recipes like [Pho](dish_name) + - What are some dishes similar to [Biryani](dish_name)? + - What other recipes are like [Pad Thai](dish_name)? + - Can you provide related recipes to [Burger](dish_name)? + - I want similar recipes to [Salad](dish_name) + - What dishes are related to [Soup](dish_name)? + - Suggest recipes that are like [Pasta](dish_name) + - What recipes are similar to [Steak](dish_name)? - intent: ask_show_picture examples: | - Can you show me pictures? - I want to see pictures of the dish - Show me pictures of [Pizza](dish_name) + - pics for [](dish_name) + - What does [](dish_name) look like? + - Can you show me a picture of [Pizza](dish_name)? + - I'd like to see a photo of [Sushi](dish_name) + - Show me an image of [Pho](dish_name) + - Do you have pictures of [Biryani](dish_name)? + - Can you display pictures of [Pad Thai](dish_name)? + - What does [Burger](dish_name) look like? + - Show me a picture of [Salad](dish_name) + - I want to see [Soup](dish_name) + - Can I see photos of [Pasta](dish_name)? + - Do you have images of [Steak](dish_name)? - intent: goodbye examples: | @@ -104,6 +228,16 @@ nlu: - Bye - See you later - Bye bye + - See you + - Take care + - Farewell + - Have a good day + - Catch you later + - Peace out + - Later + - Bye for now + - Talk to you later + - See you soon - intent: thanks examples: | @@ -111,6 +245,14 @@ nlu: - Thank you - Thanks a lot - I appreciate it + - I appreciate your help + - Much appreciated + - You're the best + - Thanks a million + - Thanks a bunch + - Many thanks + - I owe you one + - Grateful for your help - intent: affirm examples: | @@ -118,18 +260,59 @@ nlu: - Sure - Absolutely - Of course + - Definitely + - Without a doubt + - For sure + - Yup + - Totally + - Absolutely right + - I agree + - That's correct + - Sure thing + - Indeed - intent: deny examples: | - No - No thanks - Not really + - ew + - Ew + - Not at all + - No way + - Not interested + - Nah + - Nope + - Not happening + - I disagree + - Not for me + - No chance + - Certainly not - intent: smalltalk examples: | - How are you? + - How are you doing? - What are you doing? - Tell me something about yourself - - Do you have any hobbies? - How was your day? - What's your favorite food? + - Do you enjoy cooking? + - What's up? + - How's everything? + - How's it going? + - What's new? + - How's life? + - How are you feeling? + - What's the latest? + - What's going on? + - What have you been up to? + - Any plans for today? + +- lookup: dish_name + examples: | + - Salmon Quinoa Risotto + - Chipotle Chili + - Vegetable Minestrone Soup + - vegetable minestrone soup + - Italian Tuna Pasta diff --git a/data/rules.yml b/data/rules.yml index 0c6ada9..d1d2e01 100644 --- a/data/rules.yml +++ b/data/rules.yml @@ -1,4 +1,9 @@ version: "3.1" rules: +- rule: + steps: + - intent: insult + - action: utter_capability + diff --git a/data/stories.yml b/data/stories.yml index f4ccbce..18519c1 100644 --- a/data/stories.yml +++ b/data/stories.yml @@ -5,6 +5,12 @@ stories: - intent: greet - action: utter_greet +- story: capabilities + steps: + - intent: ask_capability + - action: utter_capability + - action: utter_capability + - story: recommend cuisine steps: - intent: ask_cuisine_recommendation @@ -21,7 +27,7 @@ stories: steps: - intent: ask_recipe_steps - slot_was_set: - - dish_name: "Green Curry" + - dish_name: "Pizza" - action: action_provide_recipe_steps - story: show picture diff --git a/domain.yml b/domain.yml index 339152f..fd602c4 100644 --- a/domain.yml +++ b/domain.yml @@ -15,6 +15,7 @@ intents: - affirm - deny - smalltalk + - ask_capability entities: - cuisine_type @@ -68,23 +69,13 @@ responses: - text: "Okay. I'm here if you have any other questions." - text: "Understood. If you need more help, just let me know." - utter_default: - - text: "I'm sorry, I didn't understand that. Can you please rephrase?" - utter_smalltalk: - text: "That sounds interesting! Tell me more." - text: "Oh, that's nice to hear!" - text: "Sounds good! What else do you have planned?" - utter_ask_cuisine_recommendation: - - text: "I recommend you try {cuisine_type} cuisine. Have you ever tried {dish_name}? It's delicious!" - - text: "How about {cuisine_type} cuisine? {dish_name} is an excellent dish you should try." - - text: "Why not try {cuisine_type} cuisine? Especially {dish_name}, which is highly recommended." - - utter_ask_dish_recommendation: - - text: "How about trying {dish_name1} or {dish_name2}?" - - text: "I suggest you try {dish_name1} or {dish_name2}." - - text: "Have you tried {dish_name1} or {dish_name2}? Both are very tasty." - - utter_show_picture: - - text: "Here are pictures of {dish_name}." + utter_capability: + - text: I can give you cuisine recommendations. + - text: I know some recipes if you need any guidance! + - text: I could tell you any info that you might need on recipes from Spooncular. + \ No newline at end of file diff --git a/templates/about.html b/templates/about.html index c8c5004..6a20763 100644 --- a/templates/about.html +++ b/templates/about.html @@ -51,8 +51,8 @@ </head> <body> <div id="content-container"> - <div id="header">About Rasa Chatbot</div> - <p>Welcome to the Rasa Chatbot! This bot is designed to assist you with various tasks and answer your questions. It uses natural language processing to understand and respond to your queries in real-time.</p> + <div id="header">About My Rasa Chatbot</div> + <p>Welcome to my Rasa Chatbot! This bot is designed to provide you with various recipes and suggest cuisines. It can give you detailed information on these recipes and can also give you cost breakdowns as well as show pictures of the recipes.</p> <div id="footer"> <a href="/">Home</a> <a href="/about">About</a> diff --git a/templates/contact.html b/templates/contact.html index c09c67e..e58f001 100644 --- a/templates/contact.html +++ b/templates/contact.html @@ -51,10 +51,10 @@ </head> <body> <div id="content-container"> - <div id="header">Contact Rasa Chatbot</div> - <p>If you have any questions or need further assistance, please feel free to reach out to us.</p> - <p>Email: support@rasabot.com</p> - <p>Phone: +1 234 567 890</p> + <div id="header">Recipe Chatbot based on RASA</div> + <p>Made By Berend Fuchs</p> + <p>Email: berend.fuchs@student.reutlingen-university.de</p> + <p>814080</p> <div id="footer"> <a href="/">Home</a> <a href="/about">About</a> diff --git a/templates/index.html b/templates/index.html index 66a90ff..be5328f 100644 --- a/templates/index.html +++ b/templates/index.html @@ -89,7 +89,7 @@ </style> </head><body> <div id="chat-container"> - <div id="header">Rasa Chatbot</div> + <div id="header">Chatbot</div> <div id="chat-box"></div> <div id="input-box"> <input type="text" id="user-input" placeholder="Type your message here..."> -- GitLab