From 00ef2636ce50efe60b6110ce32d490d55e179cd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Sun, 21 Jun 2020 11:36:05 +0200 Subject: [PATCH] Update diagrams --- docs/application_chart.odg | Bin 146372 -> 147411 bytes docs/application_chart.svg | 860 +++++++++++++++++++++---------------- 2 files changed, 482 insertions(+), 378 deletions(-) diff --git a/docs/application_chart.odg b/docs/application_chart.odg index 7c2288a07c57d8be73d459ca01e5cb61e69ba3fe..b611cfca0fea4fa0b0d18fba56f76e69d10d3d5d 100644 GIT binary patch delta 16787 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 delta 15662 zcmZ9z1yCJLw>3QH;7)K2?gV#tf(Ca9!5uuo77yb62Y{7Xiu}6A^?twG&wi_LvSyZqn`VOf#O=Jf$y4w~K{q*QGCRPH9kHvueiMuV26@2F z;Jrb&FdGCR&^K5Vs@ zYZIdK+XOc&r^1*=7U`$Ov{k2-m$%@ZgjA=Q00rtek+|f&?~@SG4^345Fa8*e(QkaT5lhAr$gpx=Vx?|B$N{eFG&bH!`W{o@*i>%on zx#eJ7l~Aw3ye%KiK3D}-o&JsRn~g}$6du7ZWszWt_8SMD;^vf8U5~>b7xRcMGDtGX zZyPEe`Fb*)rPI3P6UwKz1u8M?l__yf#)2(6gw~`+xMhwo);Xp_!F%R|p90%;??P|G z-g{D47t~P|q$hBjEl%?LZnrWrFjhLQF(VQ+e^l$Wr#m7>U0HOOoYusLZ~48FifuQ` z+3CEtHH4xRI>4lKly;(O5FY>$FM*tBxLx;97A>;;l}eBamkoNU{V3B)6gEIhl5$x~ z7pF`V`wlbY+sJU0k31pyWSNX+ei)HmZ;1T@(WdOihH(`JiIDVE67ou~o)K8RD@DP%CF9p#N!>ow@GT@<>;Xzv#(gz+hrE8TVLAxZ7)(>% zAgPY1m;XK~UI9=0k!1NGvcoB+#n*IEF7s~cJ!_4r*G2XP*n0sls^G}uE_Rq;TbPW+ z%Cq*3(w8$v>K~)Y3lslIYnmf1LPMP6K2`+v8H7d!FJhnfvDHsc%eFRt zQW(Y}N*F4tMY)>}PprH=qN$;BlN#dt#j}&#CtP!B|Y*NltU(9QRN}9@y6+0@|at^HY3G^W5^QPMGWy|Nt z;zHp1ebkEo#9}sUj^N7_Ea9Y$Gdq9F=AH$z)hPJrETlCl;ffbnJDL6ULZs zQnkisc5F-E4_#dvd)|8xqIwvOc1<;4&FfH>A2%#fo>6Te*K=y0a=L4vH_bP)4a{DK zwJeFZeG<+bc~CQ-FRFl4@sP`$|6UxEr+7~Y_k$dr@LDnIUBlZ#RT!hRmgcb!ht}Lr zwdyCHHM6B&EiMZ0^jwl0ZE`yKHYvpf73#XId9==S%(Y-eBEK<*VdUd^ABy=fZ!Xj=h@4$4v zMhKJjL933oP$1iF^#dhcw#e@1RjlT+S^B2aoYGSI-ETtW8u4rTbmzt?jc!5W1+Z8& z0`N9EtOSjQ-rV$*n!aDCPCNq7^?}-RoA^4AvF}f@f8md&O^&K9UUpv90NhE~C7K(C zQ_8c_9n$Jw!}8i@N0=)*HEUDrqn)&p-ToJXp$0P1-Kwh3{2?xfpxSry2 zYefr%zyI&!)m2y*IspXn!IQIJ{>rV{c`LI2+ZE=WdlJI}H0#Nb@i&&X!>dQc^+iJ+ z_j!+Vi$ReS-8mtbPw(+W6T)H~anqdHW-mZ~t$kC(dv#4r6T6kl|iSzIa7#~gADla{Xs1^HlF7>rn&-^4uqc0uye zT}kB~7j&>F3^LT)vWGXF$k47ETv#oJI7k3?i9yf6iQa*){VPzv@2FQ`3_)xBH<106#R6ox4C} z$^If>iu%&JPK|$PO?C*N-|GKns=6R5oPR6!Rr!&#wE-Yo`=1K(rZij7p!UBUi!KnH z$bZ#6g396k$&!g)L2n_4pSK0#U%Ed0oSJhQyJlqqw|AVDF|O{O#x(fawXW5YKNf!_ zV2aShE2U$ixWc(|+i=ddzy+|>+TE9RhGSx7C~*O9aau0dSn&WagS(y}(tZ=7jPJ3u z-{JXFf@28BCgi);jidGsdLJS8oEfSe5x#rDu=ySg99JAf6h8=BH+i2mD?fVg)wGC0 zlJ&N0^B1@z=8$QJXv<}i`eXGGbEJ(ezaNob>!)Hm?pSLGo&1uNCy?!RCiNxl8K!!; zS0s{%*hRXWLBRwo?Rrv7x1FPe_0elY$hMdMQQO{kb@Z+kv@PgwDJTl%LpEO5tIgvX z=+88{CQ7X1w(lVBbCmBaMM#A`K1E?=J>G>yZ`)?E+6l&5>YJyf!v;*Gr){1dPsfvo z*Nm6)2>T+)@f1_XP8knb5EPAOhI%WSq~2O#Jh)Il);co<6F^7m#7SCz~Z$ z%*jyrv(Wq~Y*WedZ@PWP`IP1Ro8H6JN^0~d)dG>F-Ly$4HlP z^Nv0POfiutIGo;MBrE1vz)jrNsie2X8LzfMzA_%xY9*HO-u0nZ#`Uf(HFSE5$#Q~4 zQOPAc$!X_})oK_$D2PZ%^MEmeG-R|s5314C^sEqAV3V{uY}<@VW<_ro$>3mJh_fIp zRjwQ>LeB%aH}PU#ny?qa*$^H?Ki=XIJW#67JLmWoo1jK5U8KKbOeqy*nWce85Oa%*A+qkGX zXPI^n9)t}U-tZ+xx5DqaObd|3iS3DD`^J(AX!t|cx}k%tZA6C|XK_xn1$8?{mCv;3C54gR&Jy#~YOtt8?O0XMhV<)7c-(|JBAuke9q9D1|1zR!`; zJo_}U_dU*m{8U5D&ofJ9?mch6MP+aI89N|2dlIzvIE(Z53egED+v`z03|pxYut5%w zoX8F(4ZN%;r9YXmRE}^rR{F15B+h>EO$?@mNMwZn$XGL)ozyVQq#I#TGE7B$vo(|D z+GJpvDT}|LZ^6F5L91l4@+RWjVaQO*d#~N4IPQ@V75zTCW)r6bFDK<)0tWTFaeNBV zu;|0OU<(ob=(`GqgRo8PXGz_67>G!LJfud@gLG2KZ`cv|W06I;R$1WCgNLWmeQ6nD zNO0gN-AgFe5DP_BPgwG4Irun@IV!F%sALp<-O_MJ$$SAAso zOrJiUSftxx`uNY5l$8MVme~u3-w58!Ty(~~3PH2c*J6~$+?723w!#)8Qp!Da_}RJD zmTO@OQhu?mBEK@}wb-}}MkDla>sZ0E5X`rZdOyQ@BP((dD~7JC@mZE?3~GD!yM$~Q zaTczbxp+_vn?Xbd+-wW=TzVhPMH#{nMn}FOGR_w%vXn+!#eEE_Vf#oaOmQEVvW681 zt3$}p!1)z53eR7HVXO59{liC^Q!lYCm`praHu&cWOH!A~^pn|U#?a2I*UwT#Imowp zE;?=g7_{`G;W=`!3P}~GduzcV5}&)jSuXjSMJBf9pLE*wxw3G{_*}A7&`cQ3yY|;~ zVTHFH7H_L?@>&-K@#58pdDhQP(@PKw8Zvenq1)!_5@Ziqnn>1ghO@&7lOQI+w{Mtn z_aQ~eGC+87`YQHVp^SLkueUIb2*{A3#6cpCvDa{q$sgLxjx7lZRd=x_@&g}iuK_1& zv1tc=+o1rqI;8I9CGHGQCwi=J-HYGDbwtpmgS`Jd{aP7%d=4&LK*?Zm>C|zdz7L+j z6*7G%#IL7P((27l!kGPC)#-QDdQV5MQ&31mayXlb`HnAGj{@pguQiRO+W^^QDjiRa zeNBElVu7I>#-$zqO}g|`dg^_$3)HS7BmR@|!|ghYM^MXO6>AaA%s0j@nA0n|4gvl( z`PEAgifr?_Y$xel_r=2#ivoQo7Co;!LfIneW;LrHKfSQyc@%`<9>kqf(q_xx?~o#{ zQcvH4n{GE-8!gKdrnop%*Psw59|{gOjlKdYmNmGv-Rh43EmF7y#%mf3Nx@>xmeG%m)WtTVe+TsI-}J8h1VM{Cuv z*X;`3FEOc~!yH@w0=Sj|mW~TS8UK3D*=m&)i`en2qJph04!yPuvn6cwyoxBz@ZH5%S99 z6qKr)VC@gYv!6c`FJ{=U#tAXw20YJ$w)@e?-0al2gT`^V4GmN+_gXWO(vNsj`^rL; z7>jESGLPyl*j*^;-u(^^JH1d#1qlZPd43V9P-Y-E33GO}C{u=vw!g$FIN_=~T2YaC z$GR|c6Uo~VVlqr0vDM|8_1YWSuE>F~>{5pkEDx9CTX zvwW`#LV02_7cUm%y>IW)Lvy2`4iaWyWt}S1CHbczxkGJ5u z;aH8LZ4BuT5dD&}0gsZ#^+P~#^W6?M`!L++^L1OImQ?JR4^kr&w82YBGx@OCR%w(} zc_u1HYn+~Vp9Gv4PkO3d#$EFhRWW(H;_*y{_o5oYj;Cr;gSN%P1R3NJ?|ltJ(?(VO zPhGcJux6qkr@SZFhoX^XM9v`vnlw8YNDlGA_j@}+kn|mkzja?8;)Aa%6qLcmmYlcV zyQ-&&A3kAtEV8X)mGk|2tDDk>adzqroY4`3~)s=1I!kI8N^a)s`F;^EKUj z>nu01KV-bZXojtJN!9fFtqp7@vQj5~Dr{yj!WyR3&=C~DQ**y`mn0NX_L99{k`i8z zi*3SG2>iK67DEoQfHBSIQ)lnV!+!tEW7C)8SxEIR>hk$6A5rQ(i>^_qNo-%ATxx0K zGW*SNO00nbRhM^Vyt%$wWZsMvku?5yO>w^hXJb6_?;kaPFyQjX3@b{?Y?#bIH7q_E zoSgfe+A=G(ys;TS*}8qApV} z%{E6Et-@atdseMu)-Ub2{q;!1F2x;Juv9+}kH-3p`!b1qzOMtDlKBY|`Cq;c#A26S zf4PX@{58wz4T}BQhAxrI-1dhwMo!+qaPSPG1|J$z>M2N&gIuphs2)tuM6%NQ8gPF+ z{#zufvYEdYwP^X|Yf0IKSsB`eb~BaBPYzJDifWkhGIX<7i%HT|YU9tK3#rh?oEuHf z!d!bSDv#}aGS~|HiKG7-)}83b5-Z!OE!Az1$p3*q$^!>=f#hR>`1{;zB>G^k@-S}* zor-q+hi|mS)KsRe`fH_0iAK6k1nbSOZJ*GTjiz|Uvy}+tq7t36zi$lpV0l%<3^*Fu zWJb+B2Z_m*WMVB|Mo<*Jx7pWRxG(XN?OC5F(P7aF7WdRGndkk1lx@PUx;9~1;Z_>* z1WJg>CgHsyZGC@IOV|!cA?ayT4zYEDz~3z3XZME?dPU(cBW=Vwi`V)sz&>9Y95(r0 zetj3_bocsGZ(zx&)t9DT;p?Fe+nyfdMJqcSONgtZQyvjxa6|PtTxs&3#5XaqK zktCyNpD+CaiLsio=4^2cI(qI?)=qJVDtKBp3uI4{SCS1pAulA_4Fxu7R6yX!WB7I* z{NwvMnU@oj(5t-X$Oy}AnTahwtQ&K!hQ#q)SU5J^F%h(>WdbEGdLcd_?k1h zB=)am>Qpb9AIg>&`_fH53%2HWf7^3Wd)TZy-AjI5?I09mOAd>Id%Zg@X7}tFoD_ex z-CR?@9Y3);JJ1GU4nOiEwgzMDTA+uv_?1|;R8b9lv@KZe`?WTB700NQ28m-|Dcr~@ z)u+>yP15Sd^vmNt4%*(n8-p!y6833%XCq28VYEj6a|Lnd1W0#);C@ zV)m_ISEq%Qg$z4nfq%KFLwW~-n2(RhN=q=yV$o}(D(nph*h-d_B;>+Q_)w7WhkHsC zKEw4&c6_*H4-2AhrmFm%^J!~gqWboXw%2FigQsV9*p&0{#e~zJR&R*yOekfn_SLF; z^fc-{MuWn{zU%E7zh`Ais(s#a^lCEK#av`OANR&uEp0=lkJjLr{sfU|l>ADspH}D2 zQR_>alg2ciFD-RN&0cqt?^Gb=(((-6a`E?c2E4A!;D{yc=GWR)qlK*^sH9*R8!Q~O z4KCSP2MIM*2kn|UMXMf-*Q%yo=yV9~5e=4qIxK68B`b=olKSlqc5TgwLzUfpTQCjw zm&=Wc-^9+NHVVRbuS0x?Yb;U|ncnF$7u?J2|E{%7kfXBToT_{CUF5xl*Vlmn;dJ>k zJi8nEVdl@muN^EXftYl|cR^=_i zsnAWv>I%%hHNCu-N)IPC<>CxVsQv7i!*Y7G-QZw!^eZq$rJO4+lvZ|oH#*MZQ$T_? zof2p0sD8)CPjVEOe?yo|%ae77+84yj{`^&#D9unhR;&wF{wuKCo{xZ1k0<>_9@Zcn zSX)57;a7bMkC^=#vicFHy~}jNYiaSIh=;v-D=Fg1fFB{lvteCjm~rLHbRoK9&TX;d zZlTSoiJ~?7e7jBLBiXsy-=jm~VUDr7<+!MyH-dw&q#`o2e7+HeIvFdCCN5~Cbr#Ga zJJ_7Zp@n~tCp>F*>eKYN-fU52q{3G8Rq_+oT3)}J9@;EHAh{A~2xta>a}J8Qnk+0t zKI;GEg{8$>qo%2k8S+iyp4+AbZ&pR>{P0ljWt4v^DsbkJ`@|>5O!8o1x46*HFxuKa z#jdqGA06k5TUVh&O;iIa8X-jpcZ=i|p|{rN_C+Hxr3^y7dx#XIDf=9PZjp!fobQLR z(Lh&@gV(_z36UO#AhPGGF9p?58xlMY5NP0Qc5+;!U7?aDy|_;55mR6jYtMSPS*X?Y1t}G(coR$?#o9i4K=s;9p5F% z1@_$cweAKEUn`vqj>rps(|B>?Ze$N~lk>S2R$KR&Erw=%;_&Ho@0B8_)wOfCBemr- zc#~Wd(9J=8_Sl2_+omj2`0e&X|A1eEm-?2FLL+}R(vjKiZT$~AZpLGzi^0O}dv6Z` z{dYzW1yIVs^V?Ufe~$CCkGOIOZ~-8;`aj2c$jHe5s9?!{xL^v1q1%c8UcfKYX|q=D z(-Sp^{h1z~!xUi*Y>rUCxkslalGU4*SUTWYF|>dQ6u;73U+<0lQR$cG#Pns$&qZez ziY`N`fj4xzg3qudU!(|WW0^hOmR#dW$gqFg%P~twmpmqG%N&aTdzmb0svVpcRVRk_ zA1x|O9V6aS@P$&4K*U&ws(?HP6AqqAy(Pa1$6Mg*Q@PR5`v`E1R|G)uC*DQT?wCgX zaNmHkAiPkoXI%D-=1B)=;5%0nk7eXW&+dgs|J=e63Sn8h5}m9iQ#_k~s$@)`pS-Q+ zppIf7l~ccF5{f!4CXDKr^1F3CbT!XDC-S{Ito-WuL6`vI@c5D%MbvUE5ApgEbX;v{ z%*XCcn^Wz#vwl-Y-8P~Sr=$d*&u~6`x_Wz@^=9j+TNyD>C1`D1r51BXMMmaK2x8@T zZ{QViWw_+%#eVbE)Q`=iNUlq|>f+{S_VIpN7D*?{^x7&*XRc{L0C&I!lH}VrgjG3h zqX_xWVfg2exR~Ar=Qtv{cb@XfY$?~lYYl&*f|G1Gb{g*%-U?rED{{iqdirB=gxOvk zN5>nJW`jHWk>KI^v{}P85zsXAZoA1mfOMLkdK&fD)$r~hJO+;0(-WjGGMU3ssrA<- ze&KcMMPbq#@O}NU=>p(m^mW~qDnCujk7BXkNyPjhBEzCNp>f}lv1{Znh4>5&O|Xmd zRtb}@(NvVm#+9mAV{CliI@TmbI1^I1czK&7N!7TYwGtZ}(`_FNPccX=usR;G<~$0? z{&p{6;|+;ktY<~vD8!FERC+TjT#Wx|$V3Hu_)^=UBhK56zur4RLHEPKK3upZ{MRb5 zIFm~hWUy)~*9o!6=8_qsFph;t5RJ4-W?U8tW<`>glCuTk3L{vb`(0d2{BcKWBWNsd z`h{EI0})%H_6?Z?842#&*+^p|NOJk`-4(2Wx$U?avLhhjh8jPdJ!KIeNB{1vu1{pKoR*|p z4NO6ulJOcHb%d$#<=ryO>O-uA^45?D$T$(jIXQOSoTTA5nZPmp&9d92_pSfIO=Iq_ zE~xb7&Gh)5)Xouq_e%rcdFWyg z0=@-;LV%B@h)<6dPcPDp2v5!UIo%;f=qZm8v-(`67Op+eicP(c2RoyZBI`!H!-9Sz zBd+4<_DvKDCAv(DC++TzG4yl#1eA>+Y&50?iIeK!c=_2h@t~^VH`nka-_}j0PL1|JDE|4GDU%Y&i)Ym{9o+!e&zL?me zzb3Z9Vl}TbB}uReV}Zxd?6IQYR)V3e69)q#yELr}%}mH3bH2 zFwW$#_8l9XVZ#`?b%}-=5XM|@@Qn03H7n1a| zF?WwYE%1*An#$U1ZoN^kw>FN+(`KAh=b%?9LH(8XJG zwxE64AHzW{woY%?jL7qtUpo`aLnB`L8xt|FF+sqLu}-}=1%ZMNpg*4zTx#ul&@ zzW5<1f|J!_EJwUTe?B$$3*^#HL$126J9n1MR@%JbOS$ASxuH_M$xYF~5aKrQi;Xs5 zwr66E$NuW`{K9nr#A4m>ulld5Z}jFW=lTt~jti{owiO%|hoiRUUfxmiR2*zcRjyeV zZKWVRsa2R{ED+31w5fDAy%)yPRPdE)l9~mREOo_%w4x9yCPt);C@+F;q>oazX)e8N z`L+}li}ZCd~tVo_k;NP^Vr16eo0fe2s3i}u4G@R5s>Q~kcpIr zgqMLwl0(8$$ii33CtD?}SgWYhpkwjX(>mD4F4W&40%Fx><p`1z!k@OM z8<_7D0d)#W^oR=cj!5%MjJAy`c8cnBj;nBn)p~^GxyP4!r8PowTGg`GWV3!7xWHzTk4eF#kO+IGV_+~?d`d=odivMzr6F($*h!b#*met?ljYQCUB~mHv!rTZdKkCDjgmE!vN&zWCaC99?sn-Emb= z)l*vESKl@qIux2Z21!ksNhzH#{n69Wu-4GA*%8%ynml-%JbG2}bEb8$w`F)Sf8wm7 z@3d^SyRkWci#3$Yj1Dw&+*~0k-?FXk)H#z1M_1ebJOF~ ztCLG}v$M0)^BdF43v+ABtE;O$YnKblzXx{)r}n32k7idkHy~@LYa?6N>)TsXJ6E%t z_wxsTm-a5!j{a^OJf5$PT`dpX@2_laZEf!!Zy)UK9v+^ao^GF9@0~pzpIsiDKOO!# zI=#HUIX}9(y1Kf#`+NWQ=KlWS=KAI3#f!Pp8US!p6l5f|yjD&#F%rnMbq0lTGW!n4 zsFZb1uo6S2Iv^exc4HFA$34rmloV`adcBNiX|dXiSYOub10ZG!yop~^#JET~Z2TPP zO6SU0N|q($!dF|(sO&7!;0wkc1XEMN!>3$%1W&|Iyx&mE6d6nUaLAP zEj>IdeVFff^)>C#o#*rjG;{!UgP{lj8bAQB0?709kiBjiDd5#>lC0)~KZ6wTdVM<4 zST%>&=S5M25eBbi6y_)VfQRU`fK%c zn3flinwVz^qWl-Jdg!GA&6iEkn6yAlv9fW(W>_;l@NJk2#uNgq0Lrpj-sakMe)+@L zF5%q?g1UBNcw4os7d1;;=Z}91gyEG@9swXERVC&F`x_%&I6yY|fFuNQ-&)dQNJA1o z1RJb2@2)UM7f49(mO5O-a|H77gHJHvX&(V4OY&~iDY3X1Mxe|x#)(p>%S$MdVfcaY zQD+JR;jmjR7;x`~z14^Aqs}H&PVvws+M#9}0W*{>jP&K2F~LGqXcFp;08wO|+YlwD z5ppUH7e^9st66lUHD6Mu8wMb7Qvt%cg3(&*9PSoJMFcrG1>z4bkZ-Ixwtb%DfG`z& znS%k5JzRH7ROjO{6`oWLu2fEHql6H_V{J=-TuJWyG>~Q#@52?{2zAEtx*pLC`JRQr z3ttumggq`^0STK1go=jU*JzvO#=W}N8Ig?eHOZ)Rpd5x8c>)1}i6wjUlTGf)Cp6#f zZ`OlL*KXthBLIbH_HJiE(vWH3MeKX*fSa2@yuWssx7FmAM$Yt;(}%#E*fq7Gae?v8#=1c`5$t>rs@O11vjQ% zKTHyEd|9ah#I`PZM5m=E;Il(HawnLn2;*kfwV6^deX zRdB%TTvuz48Dm=S^Vh)R}wfUmRxWg=`DO zeU|$(AP>Ydp&BXS61?2;ZM-%ExElmb6cNqOMlE7hyt$ypZ&e4(S}&dFk%rZJ9+r%W zlyVItd8w5lQ2M`RdoBk$)$ce&cJM+ss-hsDSbsD^VFP1KwW%MXNLj%^ZD|NudUc!@FBr51aNM3T}Dq8J0RR4<=q_D6%Gk*j4430vEwng%*XmP?yQw6LQ z$9@mPrV5sLh`Fd_u?@uUqltcOj6lMkDt}6M`x~^+-RbIS0Y)SeJsyDzQh@#LfOr%- zR0+-{1)lNmx}Y66=)4+JL^X0G0^VvG&(L zBC4I#vD*(Fy7wU!rRK7PrDy;|#k#KaA<5_m z4~vCHfg4XwX(Kdls6-|$gXFgnA{6&??>hzXaoF21vkW|hg>JJlImB*bBrTmITXlvL zMkqe;o{V?n^^YKL24#aZlnDEA2H@gt$N?#rcK!}ET9!4*Dl-5pg5NB^0W;PAmfI=% zo|IZ4gfTIhJ?h3K z{$=HuB+$?|Z6nWXX0=i==<+N;$M*2LZ-pibn9Z2sZQjY6Y%C+e1x=FXhg1=fgjz75M>I|h0Al?`FtkW+89Yr zcAVr@_)34tA2P07C5Vx8-(h_vt!^j5M+w~Qpvf$XvS<%-x+jYniH>}icy+0$@$^fO zDFZQ50`@6J+f<@XK)YE1;|;CVv%Q4tAkBS;#p3AxEe0lmzH9Q|G1XIYGQaD&OXKe+ zg1C{0-J8I5B=z@^G8A-lFVSjyW{r6qwUZ;mOu<@2NPQ>oN5(GeAJOu2O)^GxdYC}mwTr#T>*ak5GRPkV>uS& zd6(St1md^axPJRO3~}(a-Mk?RcL2AQt`Vy?XYH1^FBE_D{~Ty(|~h=4Mm@uL@j9O?u0kY zS~apv(Bt#|_I1}#hFJ-ATqzQ-o-Q8|- zjQ4{UYjUzpKTC;uqi&ps4PgE$Cd=Z)pABKcEiAFJ@ADZhIR@1SjBeyaYllf>gQiHv z$w3s~M5JNP1nD2wdDDmd%3VWQ5r5s{8++lrW<5(6hFs?hA|tXs>-0;?)_B-KGF32Y zZe_+>*uS|N-p-t{x?l)8fuKYP&?3LWV_mHq5OeAF2VYrV>LL=Ni zd=rs_HM#5eJiH~s0hxw8;Z&Tm$e0)NV-^}#!ItmpdfM)iLYfejakmM$wROZat$F{E zTbP*IIzMu`i49$#>MigFWQ+(&qfQf4LxZ*n$jyljOO>~HC4e%|K#|Of^qR2~Bm7CV zAc?orh;yzeK!p>V3!qH}EyvbNbSd@)VtG|`Duv6n!9ZRW=^UdkRDZp%PNZ8JuARhO zQbd9`X!(PG%LGL&1Vb%c2@ac!$EdYQ28vyx5t2idvj<+mdQv;>f>>$>%3}8}@Z>yf z!Jq)xumhX&Cy1z)PEZdqXZz2g*>`M4`|fh>aw>ZjxD`yGznHDA@p$M=&q3W!ff$&* zW&#SIsc-TX;qFHM7-JUkblaiF74hVp0&AGHODUM3$dS`en9u~-x5>C2H1HJ<--V>Q z?U=V(-hiEy?pT5$BftO&fs`9DFh!?}+&ud+Q=@sAXGtG`4%jV%(uV1Ks^Nrq;YDV0 z+(`$#V-eFA0krPJ1)lC1MJ~6tj7ZtR&kVrD6aXw+L{UMFX(#!15w}&x4xlW2r32eYXzKcm1IT|ndmIs3&Un!#wlFJv zO^OmqUBuF35pyB8AkkZ(_$c+O8MBaj`CJVI1kEF2f>sthTZ1Be7 zdqnWZl;JM~B@0&A()bz*-}-6(03y5yV_*~8*gd>pUTURExEi4`TKys9dt|> zUBIDI$uL2SwJZtL~_M0`xzRYv{^v3GnX=nWba#a zM02>vN+__98+eK2J!GuSm1NyW0KbE>&MxEmrlYEIr_~i?;Fu52TOyMc^8VRJg1{Wl zX2u?l5%Or|>7cHdiI}sowCL$e(IounfgMtE z7dx*y_Y0p5pqK>#R4HolmSf!{Y-< zMQz*byY{i8x@JhDU^fUN@G{&!_<@)v5@d{BqC7*L}U)&EHY=In$7jr;2?kJkO>{80R9 z-Sl<#kzN?F`?vH5@|8Qsfem|H;O2hvdBhs>cv~6Jlc3?>JK6{*aO;`9ad(yNcl>mZ zL37jUS@ikCM#}H7 z#!>S-^RK6Kqlfow%O8qg9sDG~ucxuNB>a#X9B5-5w6&IG6Y zx%v-a!^dfJHl5G$?Na+;>EC0djdX$QbGUsu%x^VV5KPh6i4KRI(3x0T=Of$r@@cbgZ$DeS z-Fwu^{_rAHnt@&l9(w+mKlwUN@f2VF>(1Za;)nk>{E7~Sm#ful_LlY|U=C-fT7zqN z*V9G{ISY84`r!Pulk|-$iZUecMSdvZ>eQMiY_= z8IkwdiNp|~cUrxY6~g1y-2R$=`ncMDyXJOYhx>uNmS97$M@~-FL6FP!Zrw`EH)8H< z12;yD1MyvI;J%#Ht3xGz?^O;S<~TKi%VhB$Gt{3!2srn*$6UI8kq17;EdS5(m>%E) zT78A9L}zaARM#v{etr2br(v=f5114(>XgBOw|>ilJxt(`1xFxVPte09LPNQ3idlhda3VlEk4k5`8~g$G5) zSO?25{H@D4v&isnf2EcigEE#uwH7Iu5^}A3_K!1cATQsq?m=pSGMEEtb~zIwh;Mzm za7rhir=d(`(x654ZTh|O*BnBJLKUAOD}G|_(KLGmxr#8^RpLZx=|!&0f)Swdso}Hz zgh6>yFi-JY^xjRZX$=UxodmP7_hd9CKbpD2R)f0yiO@=|+0%ZZjbzq-w+|uXPX?pK z(SbZ<#2>l&o!~$UD8l0_=Rh@NKp?Z~o!JJJVc%1iLHpFZt5Qrm5!Yf8D3P{^orXRhsSP-%~;ba%qGkormbE^hoM zNwz}VVhKAGUav_?F8LV8Ys^o#IR1<$9=B|?s_%TQ1FY*2k~d&~*#8meGX*XPcR&E} z4gNp!#y%XlyK`?2um=KuxKYjB515f=2eii~N{_E8FA0JS%wlJ8P@*lsCE}{j4 z2NnSQ6THCxeta;K18qS>$xXsw7K(qUnX9c*B`^T^C;l&0IvFGamic$Q|M3s~za+7` z{~FI<1kCd9EXzf}q+nTuS*;N!w z3RbcGr-nE=%@*{Q<^N%*N#)89)e8f_Kk + + + + + + + + + + + @@ -58,7 +69,7 @@ - + @@ -105,387 +116,279 @@ + + + + + + + - - - - - - - - MQTT BROKER - - - - - - Ingress + + + + + + MQTT BROKER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ... + + + + Ingress - - - + + + + + + SQL - - - - - - SQL - - - - - - - - MQTTtoDB + + + + MQTTtoDB - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + ... - - - - - - - - - - - - - - - - - - - - ... + + + + Web App(REST API) - - - - - - - - - - - - - - - - - - - - ... + + + + + + + + + + + + + + + + + + + + ... - + - - - - Web App(REST API) + + + + MQTT - + - - - - - - - - - - - - - - - - - - - - ... + + + + + HTTP - + - - - - MQTT + + + + IoTHTTP - + - - - + + + + IoTMQTT - + - - - - - HTTP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IoT... - + - - - - IoTHTTP + + + + + HTTP - + - - - - IoTMQTT + + + + MQTT + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IoT... - - - - - - - - - HTTP - - - - - - - - MQTT - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -493,26 +396,21 @@ - - - - - - HTTP - - - - - - + + + + + + HTTP - - - - + + + + + UDP @@ -522,53 +420,259 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + IoTMQTT + + + + + + + + + HTTP + + + + + + + + MQTT WS + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web App(REST API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + WebSockets