From 9eedb1e5eb54ecfc792e6c052ec682011fe171f7 Mon Sep 17 00:00:00 2001 From: "Timothy Rule (VM/EMT3)" Date: Tue, 12 Nov 2024 11:39:42 +0100 Subject: [PATCH] Doc update. Signed-off-by: Timothy Rule (VM/EMT3) --- README.md | 2 +- doc/Makefile | 41 +- doc/content/apis/_index.md | 7 - doc/content/apis/examples/_index.md | 7 - doc/content/apis/network.md | 128 --- doc/content/apis/network/_index.md | 7 + .../apis/{examples => network}/functions.md | 9 +- doc/content/apis/network/network.md | 130 +++ .../architecture/fsil-network-arch.png | Bin 52618 -> 0 bytes doc/content/docs/arch/.keep | 0 .../{user/model/network => arch}/From_CAN.png | Bin .../{user/model/network => arch}/To_CAN.png | Bin .../docs/arch}/dse-network-dataflow.png | Bin .../arch}/dse-network-deployment-modelc.png | Bin doc/content/docs/devel/.keep | 0 doc/content/docs/user/model/_index.md | 159 ---- doc/content/docs/user/network/index.md | 117 +++ doc/content/models/fsil_network.md | 20 - doc/static/dse.network/dse-network-arch.png | Bin 71942 -> 0 bytes doc/static/tutorial.png | Bin 0 -> 35788 bytes doc/yed/dse-network-arch.graphml | 4 +- doc/yed/tutorial.graphml | 835 ++++++++---------- .../examples/stub/functions/function.h | 8 + dse/network/network.h | 14 +- 24 files changed, 708 insertions(+), 780 deletions(-) delete mode 100644 doc/content/apis/_index.md delete mode 100644 doc/content/apis/examples/_index.md delete mode 100644 doc/content/apis/network.md create mode 100644 doc/content/apis/network/_index.md rename doc/content/apis/{examples => network}/functions.md (94%) create mode 100644 doc/content/apis/network/network.md delete mode 100644 doc/content/architecture/fsil-network-arch.png create mode 100644 doc/content/docs/arch/.keep rename doc/content/docs/{user/model/network => arch}/From_CAN.png (100%) rename doc/content/docs/{user/model/network => arch}/To_CAN.png (100%) rename doc/{static/dse.network => content/docs/arch}/dse-network-dataflow.png (100%) rename doc/{static/dse.network => content/docs/arch}/dse-network-deployment-modelc.png (100%) create mode 100644 doc/content/docs/devel/.keep delete mode 100644 doc/content/docs/user/model/_index.md create mode 100644 doc/content/docs/user/network/index.md delete mode 100644 doc/content/models/fsil_network.md delete mode 100644 doc/static/dse.network/dse-network-arch.png create mode 100644 doc/static/tutorial.png diff --git a/README.md b/README.md index 2648b0f..6eda7fd 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ The resultant Functional Simulation (FSIL) may be used to validate complex funct The following diagram shows how Network Functions and a Virtual ECU may be connected using the Network Model to form a typical FSIL simulation. -![network-introduction](doc/static/network-introduction.png) +![network-introduction](doc/static/tutorial.png) The Network Model is implemented with the [Model C Library](https://github.com/boschglobal/dse.modelc) and uses the diff --git a/doc/Makefile b/doc/Makefile index 954f7ea..19a547e 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,4 +1,4 @@ -# Copyright 2023 Robert Bosch GmbH +# Copyright 2024 Robert Bosch GmbH # # SPDX-License-Identifier: Apache-2.0 @@ -8,17 +8,46 @@ DSE_CDOCGEN_IMAGE ?= dse-cdocgen:latest DSE_PLANTUML_IMAGE ?= dse-plantuml:latest +############### +## Document Modules + +# File "_index.md" +define _INDEX_MD_FILE = +--- +title: "DSE Network API Reference" +linkTitle: "Network" +weight: 800 +--- + +## DSE Network API Reference +endef +export _INDEX_MD_FILE +DOC_OUTPUT_index := doc/content/apis/network/_index.md + +# Module "network" +DOC_INPUT_network := dse/network/network.h +DOC_CDIR_network := dse/network/network.c,dse/network/schedule.c,dse/network/parser.c,dse/network/loader.c,dse/network/engine.c,dse/network/encoder.c, +DOC_OUTPUT_network := doc/content/apis/network/network.md +DOC_LINKTITLE_network := Network +DOC_TITLE_network := "Network API Reference" + # Module "function" DOC_INPUT_function := dse/network/examples/stub/functions/function.h -DOC_OUTPUT_function := doc/content/apis/examples/functions.md +DOC_CDIR_function := dse/network/examples/stub/functions/counters.c,dse/network/examples/stub/functions/crc.c,dse/network/examples/stub/functions/function.c +DOC_OUTPUT_function := doc/content/apis/network/functions.md DOC_LINKTITLE_function := Functions -DOC_TITLE_function := "Network Function Examples" +DOC_TITLE_function := "Example Network Function API Reference" # Targets -DOC_C_MODULES := function +DOC_C_MODULES := network function + +.PHONY: index +index: + @cd ..; mkdir -p $$(dirname $(DOC_OUTPUT_index)) + @cd ..; echo "$$_INDEX_MD_FILE" > $(DOC_OUTPUT_index) .PHONY: $(DOC_C_MODULES) $(DOC_C_MODULES): @@ -29,7 +58,7 @@ $(DOC_C_MODULES): $(DSE_CDOCGEN_IMAGE) \ --input $(DOC_INPUT_$@) \ --output $(DOC_OUTPUT_$@) \ - --cdir $$(dirname $(DOC_INPUT_$@)) \ + --cdir $(DOC_CDIR_$@) \ --title $(DOC_TITLE_$@) \ --linktitle $(DOC_LINKTITLE_$@) @cd ../$$(dirname $(DOC_OUTPUT_$@)); docker run -it --rm \ @@ -39,4 +68,4 @@ $(DOC_C_MODULES): -tpng $$(basename $(DOC_OUTPUT_$@)) .PHONY: generate -generate: $(DOC_C_MODULES) +generate: index $(DOC_C_MODULES) diff --git a/doc/content/apis/_index.md b/doc/content/apis/_index.md deleted file mode 100644 index ecf289d..0000000 --- a/doc/content/apis/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Network Model API Reference" -linkTitle: "Network Model" -weight: 90 ---- - -## Network Model API Reference diff --git a/doc/content/apis/examples/_index.md b/doc/content/apis/examples/_index.md deleted file mode 100644 index 9a82196..0000000 --- a/doc/content/apis/examples/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Network Model Examples" -linkTitle: "Examples" -weight: 90 ---- - -## Network Model Examples diff --git a/doc/content/apis/network.md b/doc/content/apis/network.md deleted file mode 100644 index 7eb357d..0000000 --- a/doc/content/apis/network.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Network Module -linkTitle: Network ---- -## Typedefs - -### InstanceData - -```c -typedef struct InstanceData { - int position; -} -``` - -## Functions - -### model_init - - -Increment an 8-bit counter in the message packet. - -> Note: in the encode path, changes to the counter are not reflected in -the corresponding signal. Subsequent calls to `network_message_recalculate` -may overwrite the modified counter. - - -#### Parameters - -message (NetworkMessage) -: The message that this function will modify. - -data (void**) -: Pointer reference for instance data. - - -#### Returns - -0 -: Counter incremented. - -ENOMEM -: Instance data could not be established. - -EPROTO -: A required annotation was not located. - - -#### Annotations - -position -: The position of the counter in the message packet. - -### model_step - - -Calculate a CRC based on the message packet. The CRC is written into the -specified position in the message packet. - -The CRC algorithm is a simple summation of all bytes in the message packet. - -> Note: in the encode path (TX), changes to the counter are not reflected in -the corresponding signal. - - -#### Parameters - -message (NetworkMessage) -: The message Returns that this function will modify. - -data (void**) -: Pointer reference for instance data. - - -#### Returns - -0 -: CRC generated. - -ENOMEM -: Instance data could not be established. - -EPROTO -: A required annotation was not located. - - -#### Annotations - -position -: The position of the CRC in the message packet. - -### model_exit - - -Validate the CRC of a message packet. The CRC is included in the message packet. - -> Note: in the decode path (RX), bad messages (function returns EBADMSG) will -not change corresponding signals. - - -#### Annotations - -position -: The position of the CRC in the message packet. - -#### Parameters - -message (NetworkMessage) -: The message that this function will modify. - -data (void**) -: Pointer reference for instance data. - - -#### Returns - -0 -: The CRC passed validation. - -EBADMSG -: The CRC failed validation. The message will not be decoded. - -ENOMEM -: Instance data could not be established. - -EPROTO -: A required annotation was not located. - - diff --git a/doc/content/apis/network/_index.md b/doc/content/apis/network/_index.md new file mode 100644 index 0000000..2bdb8e3 --- /dev/null +++ b/doc/content/apis/network/_index.md @@ -0,0 +1,7 @@ +--- +title: "DSE Network API Reference" +linkTitle: "Network" +weight: 800 +--- + +## DSE Network API Reference diff --git a/doc/content/apis/examples/functions.md b/doc/content/apis/network/functions.md similarity index 94% rename from doc/content/apis/examples/functions.md rename to doc/content/apis/network/functions.md index f3b01a6..e390b82 100644 --- a/doc/content/apis/examples/functions.md +++ b/doc/content/apis/network/functions.md @@ -1,7 +1,14 @@ --- -title: Network Function Examples +title: Example Network Function API Reference linkTitle: Functions --- +## Example Network Functions + + +Example implementation of Network Functions. + + + ## Typedefs ### InstanceData diff --git a/doc/content/apis/network/network.md b/doc/content/apis/network/network.md new file mode 100644 index 0000000..2162364 --- /dev/null +++ b/doc/content/apis/network/network.md @@ -0,0 +1,130 @@ +--- +title: Network API Reference +linkTitle: Network +--- +## Network Model + + +The Network Model runs a Communication Stack which represents the connection +between Physical Signals and Network Messages. + + + + +## Typedefs + +### MarshalItem + +```c +typedef struct MarshalItem { + NetworkSignal* signal; + NetworkMessage* message; + size_t signal_vector_index; +} +``` + +### Network + +```c +typedef struct Network { + const char* name; + int* doc; + NetworkMessage* messages; + const char* message_lib_path; + const char* function_lib_path; + void* message_lib_handle; + void* function_lib_handle; + MarshalItem* marshal_list; + size_t signal_count; + const char** signal_name; + double* signal_vector; + NetworkScheduleItem* schedule_list; + uint32_t tick; + uint32_t bus_id; + uint32_t node_id; + uint32_t interface_id; +} +``` + +### NetworkFunction + +```c +typedef struct NetworkFunction { + char* name; + int* annotations; + void* data; + NetworkFunctionFunc function; +} +``` + +### NetworkMessage + +```c +typedef struct NetworkMessage { + const char* name; + uint32_t frame_id; + uint8_t frame_type; + NetworkSignal* signals; + const char* container; + uint32_t mux_id; + NetworkSignal* mux_signal; + void* buffer; + size_t buffer_len; + uint8_t cycle_time_ms; + void* payload; + uint8_t payload_len; + uint32_t buffer_checksum; + bool needs_tx; + PackFunc pack_func; + UnpackFunc unpack_func; + bool update_signals; + NetworkFunction* encode_functions; + NetworkFunction* decode_functions; +} +``` + +### NetworkScheduleItem + +```c +typedef struct NetworkScheduleItem { + NetworkMessage* message; + uint32_t alarm; +} +``` + +### NetworkSignal + +```c +typedef struct NetworkSignal { + const char* name; + char* signal_name; + const char* member_type; + unsigned int buffer_offset; + double init_value; + bool internal; + double value; + bool mux_signal; + MarshalItem* mux_mi; + EncodeFuncInt8 encode_func_int8; + EncodeFuncInt16 encode_func_int16; + EncodeFuncInt32 encode_func_int32; + EncodeFuncInt64 encode_func_int64; + EncodeFuncFloat encode_func_float; + EncodeFuncDouble encode_func_double; + DecodeFuncInt8 decode_func_int8; + DecodeFuncInt16 decode_func_int16; + DecodeFuncInt32 decode_func_int32; + DecodeFuncInt64 decode_func_int64; + DecodeFuncFloat decode_func_float; + DecodeFuncDouble decode_func_double; + RangeFuncInt8 range_func_int8; + RangeFuncInt16 range_func_int16; + RangeFuncInt32 range_func_int32; + RangeFuncInt64 range_func_int64; + RangeFuncFloat range_func_float; + RangeFuncDouble range_func_double; +} +``` + +## Functions + diff --git a/doc/content/architecture/fsil-network-arch.png b/doc/content/architecture/fsil-network-arch.png deleted file mode 100644 index 7c926475acfd7bc90025d8dbd3c5462679c6bb88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52618 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�=a#|^SRc=>vpE6sFK0=SES#;^nFr^3u(s^#aQ z&Ob8V9MbvZsu-|!Z7#oV{+1hK=2!J}-gi9zG5|=Y}%voT! z#Gq!Z6vA)2%oNmE6~lqX_;IFa3TCwE$|uUZz*a)VJ+OAc>Z$W z%e9KbsYrXb&*vamVoP*4pSOht2F2II#~~@PMJMp&5ozq@s)dO#zPZK4f1 z$=7w_sjHDCSj;h4!q&JjXkpU#AKmL?hkcD+-5x)WPJ-&3Ov)tFQBgy{urFL?KzQ$k zHK`>VcR_FsW^d#4tYdkLSM_AuZGs=&%4p9YX_4IWXr@1Tcz=FYMrYxiPyOoRS_$$q zBAga=wAy|Rc8d*4Zzr|1pi@!jqUSQn6mtVC_D9v5`W1V|)Og?&_~Kw|_%P*8qfKWL zt8_QL7RdgE&8YdZmLGbiw|6ZO147ceAHvgW<+?qkT zO<&E)(+3T5vu&lub*XnwsuGgxwPV0GtsN1Dub~chgp(aD9Q!|RUVZ!<$A+yFGFx_S;^iD30VJ zkJ2)aTtd`_AI!2~YM6iSWF})Waw9bED97WuN1g`NY$3 z)M}VP%Jd4g|DK)oW;hyozLgz*zM`R>+f>$e2ruSGLL&FpELB5g>un7gK6JzjP>k^iY51>@zPfx zxE^09f7OCgj{$j1HWfbfEy9u|Z+zC&Vq!)-@w>&6<3shqL&`f%%-=#o`S)72D`qRxzw^2>o=iJS2G`@5u>GzH62e|G znHd>3BqU4@<^BT7gy1(J-s9IT-Nv(c1^ys8IK8{Yw(N{~X`|Zn%QWrRc2v}#FX-Be zw5Lb}UT!3%HBvi%kg@&(&+-kuZgSuY#s8Ee|7UlfYe8AJq8MaUi z04NNXe&!$^*%x@39^_h2wY9T2!y`a+@TfCu`dED5YH{3zRp^Qk|9%zyh4hCo6?Kn0 z_tw)-#K!I41vA)-Izr7(h=|31{rU6Kz`$U`U`G8th!6>_sgItqzC*oO9p_N8UGbAJ8tx&>CW5u6FO|M#*z05B{o#*V>POV=0t`^M&kec zp`c%!pN~yWP6iB%REop&=kdu&lReg;ckj+sKyFfpvh>|lkVBqV$)Sw9!ejy>SGRL@4vsSjZ zZ{Kdetdt{=EG?-SF!P-~L+Ac(gN_OJ3!( z=fcXG4k``$>S!IO-?3_2!<&P4u}5oozY|vvkEsABOd}v~aVJ)I?9|tgc|EARcGvdy zHXwJqCR>F7KdU{o-gMG^Aef_4W0gn6ml1L#9bhO--8= z7@c#cp`1(WgOHFA`^H#EG*t76oD913kSP5I4`XA&<91S;d=dRxApIr;Fe`fTtpW9#OiVEU2k?-bH? z_%P07YF206X}Ur|fSg%Oe~>K?C2DeWakyO{QF#%BS^DDWeE%CNt^i@TdO+POZs;pS zq~2I7m_Mi6R`)_ow!WgPq?)OMp>=9x#KYF}VqKhls$p5kHpu-4X^>txJ8tg$&``n_ ztF)DRnjx-kz1bejl9Y;SXqCKi1Ei!k`1q8KCEXT37^1vzMTXOrR$(#PB0m!n5ap(iWDU=W`kV-T;FK#eMK1&W31x$kGZe2ih zfvvv2eqv%G9Ldz+T*zqe@9sNMkXmQ+$|_8Q%tnWAOQuNMp!%WP+@Hek$_|gU5gCDp zqeZ>%jXW4@J)fe|1lNc2*0%U02Q?&*-sj0&#M6?JrCyBJCzcVOrpMSAcMbS#JLJ%~ z&$+!bbew84HXe34%Li7SV!n;9YQRO7V+9%+5n&1#6(g&7d6WvIo0bmmE|EV&iJ_%NoO%1bZ~6sZJDt)D;ds4!NSSv@Ei&e1w2TXv_v~5zAYTgpDgzJov8zyALAsGDrbI&V^qVj1tuLe=F-hAE^ zZ&{N99FC4Urf|W`VAupI`gleL9iDSTZj#N|Zk|Vv2=b}A+Rep9WIH%_!X|d9O0a6D z6v9-!OkJnqyU=V?#&hsFR(*9I=5TCdhO&~-bZ{7MD6J$vuy|UOr(_(H_;730wTsLd z><|;FQDya2e*x7{s(d#6^jDj_RzY?ekLGU@e9c&8Rab#z*6k2)YwO>YR^897=-UcK zs=Vi0j|#)UetzD%dg8^TmLtc=k_mb|&StY1`*Gj}&W|{VM`dX{FV&VBc*_++D5_nRCK+PsPiUFy?N!^;8&Woj4@InNi84R`y@s43aR7M8 zWl`$cR!P&|XdXhv^36M&?(AQ%_36^p8aS%LUNxHw*1iLSDA2}TR1Cm_>^BL@v z=EGXk&$2SXrrB#@0-Cp!+1tcUt&G6Q2E2&t}ZGqO!mi3 zL*PcE`((RqUo_F3CRG50vBY(S9duE9)(BvQ=r0wiaKctMj#Prx!;|lN=BkW3vP@TY zn4;1oM~_`II|%HP-IT}o!#)eA-(B8E4X$SYN2*oLis@K_|H^Kc2BZl{jY9)x=`CUg zR)6^x_$n}FuHG+ih?Eo@8N31jQ1Z-ISmaBTlpQpsCP_WzI<6D`sTZ?-ERd#@@E>;CDkhQ#pAt6K8w2fui-!U67HCf zO6=^;kX?O@49;n!B!xU()g}1U} z+iqZ8iG$TA2J07$ZMVC>+%_4!vso17_KG*hLs7~%5<3E=4oGHb6YE<{nB8MEbHu_1|1&r;?UuXx&qWvtxjj`N;^MpC z?tSTU7=Lkn>!9_ze&;9G_3)`+1n!pVX_X6@Zt(7(_u}zBQ9@8X6?y_TR zUIXARZQ`Oh`1H1p^tNj8t0r&oXo())_vV)F+Bb?i#%EHnuwa*$`Hq(-Lv9nuW}-Z+ zL*tgC9$b|Aiv1k7u9D1Y(p*T%A-~SGN+ZhrvOKR`EnYo0B9g^X%+Y-#ZBF z1MA|6k`}g>HL2WB(3&q54o12T|7E*;M~0(Dfq;b5_VKw z##o0HF!C#iZb+Pva5IxUxtyMWxUwcD+ivBvUms~~wf@65_K1BZXT_-67%l-QY7Q*k z@d?@lF!0P^c@yk$r{AiBQB?NV{QRq557UZY#>`uL( zCQEJSdUjz`Dfi#8NV}^k`ZzgdUbJ{zQZ`K??lhsU=6!_ojl6^#CqBh=ZBIXdC<>qk zj)?CG&}zJEZZuK(EGL=6y}X z4_WR{Q|>N9j|W?((}bOaLnB@R(8Cc+-@bhVrKQlYF#A$K`e#O59sqpo<|h_Oud&I= z!PG1B7B)6Ewzj-_j508M5*^Ie8gKRu8{yGcqPY%?PlwyfS}e6IQZ+lC87kU=9RM2_ z;w`kpP+92GHSPFiKis76R?5_a7Rg(;G^bsDetCnN&pec>7Fy!pm^T15h{_w~5G2?2 zu?F`QgmZ=j$g~Iojs2;utu0Czj~~CF~m=ETm)=Nmd+*8t@Lsc1;)N4@S)g7d;?(n4lQx zt*8jUb)dYBxDzRH?fGNnskOG-yi`L{_wV1&I!+OHzXau`pnwUsa9d9ZZ?66D)vF&l zKIT5ivKX+1gsY-)FW(~z_gFAaH_!8Swu4$D!d84KGP(q$y=V>PmzP$_?Q&1TwG20kXFzXMaDP>7i3G!D0qd!1nUF zK~UN}LWegE%b-bzX|4NE(gQus&1Y85a{LDBh^$Mg(*7(U7tP#h@eN-&lm3mHpW%M} z!RofSEc6Ceo)-&p28)>rYHkif`3qsPC&=ReM3)VCUSGdQKyd<4AdqFfz-G7rsljuA zLVo{d2dOG3sva*ed%BXcLhNqW&tj*2=&&|`iR((4`&#@qnZRNz?)6*c`wZ{ zLt|rcF|q3--!Q*^X<^9?O&i>Rk5<%X2Ldsd!S1FiS5W;0$<}h3Y5U>HMjr>@R1}+S zd&`H@q?g=J&glA5!*sSJ39kC}>7As^p3u6&LqlC&zBIIZt(qv3yW&sTt&&;$XM0;! zN$GY8cWzG39AKp9cRDVdI|si^gEj4EdD_|V`SWMKp;_a(D#^HQ%VyCFfIvq{e4Z4FQ2^^?y~1GUthBNHIzkkLH*Ze z`nMtL2Nt2DIe2o-JYXthdF)uNjn2kkjiRf`Q@*@hr;z3hG+t3%ovup{d-JBw0*f~P z_=(3Aem&cEojJ)F_$6^g^{`oLxn0r|C* zhzJ#!ljct?5QQOQ{ioSs}h;ija6DOr6&UJm3D5|S(H&44_OB!=1@{1%2NrK5iSkm-s*FiHS&7w#Pn zMYXSl=~Layq$jcBobsEN&qFKDzJFUK2-#KO>1RWDaGOLY^0U*#|W5G zqBb5y0rRDRP2mVMd!|z>r2RJ53OQLmqj^FtooVCji@1d-S?n{t=Cg?w6dUgy`s{za z@VuOo#jXT6cb>1`zCj?6))@wEQ{ZXvn|lW{C#F03UjtK%eH?w-BbZ%QL2lV?S2xBf zCB*_2RU_12x50Qb$T4NJF*mIIt&{*%OUi}}`2ND~!NNrApH?y>6;Ocj3c5hx&fwn6 zVaONzt@ZaD#$Ey~;_chFK|qj_k^+(vI!5oE)k0MgNvO8q1->WoPU{S_gvTN~7Nk}{B@r4JD3`CEO2+cgP#@hYPsvFI ze~zho=VE4NHX{USfV)yG3^w_n6cq4e)5D;-7>+?NRP)G4t-UAD>Dn~EE>V$d7B=e@ zNN)SauOC(unSjCl)~wr%C9E9SeIihLp4Ouk*1DXT?{xk(4uu~O1d$2`-Nl^x8Pu#k zI<&pNZs9pnVr1b7EP?N>knVA!O`7LsC->mMKy{e6rY3;}oAcWby2=o5NxoJ-4i#o!3)Rn8ct@p1d6siVA7z>Q4sgn556{r?9Xv_(Z*{ z&5IW=fE2D?D>paSrZ0__QEmumtd0&30oAa#K2f70tF&+Iv0P{O#hQ(_Qdk_BQrN~0zJg?;AKWAA}nwU z2~&ZrPqg~({`ob4NXj9(!Yp20f{46!n;qc(2-;%pRUqZbkwG`OcY_R5AT06{94Tc9 zs6AWT5Mag6GB9cWbqI$fa{7XZ=)}W~%wTJqawq7_C-ZWS2i#e^=JZx^Np& zOjz3F#KaI+q&L1S?(S&087R*;Q)@hAbAJNDaJAjAvcpFc_FNB*gjEw*~-oz}HOW2zb z9>fDtwszxz!|g#0+|UM)4#m^L`giU*Pag)-n|5?}58lKAY|`cA*Z(Y*7PeRQj>g{H zoUL?uSNJRkH7tN}R)`?$?lvX6Aa;?^|(f6RXI_cv_wst$QtF$>WPmZqUV)b+hF=RoWfvX~YRFnA0t>tqy)qzwlOjb_wElj|> zRlG|{+@R)TWnQzejSzy;30iIq#p7_XjYoUEqBB4=g9haEmp8j` zZdD;SUJ1`zF3eA(nzXdETrXs#y5qL^10Xe9Dm-l3Q^A2%PrTt(uyX4PvE}Iv z2n2k-r$<_PI43{9yJ9{q=>5=a+2L1y0%S1{Lkew47pY!1>eo11Wz#1#nM_dODNBdf zI*f}{h&xX|j75PE%uy>0YE-3&_V#uYV`ICdRLGowJ?asIO?i~|G!I3{JlQVz@1h>Q z*~LXTVzd+yKiU2L8t|_`IC<}gXmI^ZKXZe9^-hGd_#R1XOx*P42QH2nlExYi?7*mM z;6HShpqvu(9IyaRPR_6WxoJ3;Yy!)n9~~8S>GI{ibm{Wd)%c)%6-%_-N}d0S-=1o9 zO3q-@BDEopr@w2F!faH<1fYXj}^Js6U~6ubWU2UJwFt~XgU?C##)9=o!D zz4X=CDir=F>kx>QjG|6%?(UM_J0)qOsJCy=_OGr;NuMJKezD@;Pv9Wh)N}$Tz`u>t zAw*vQ+L*QY4rq`>lee8xy&ePx=Icr>{3lOT{2H;sJ;1||IR(t($@APdcY#28NQ3jQ z9N?d8whb)q-;vo-4>VM;f;`7I# z6RT5v*FCVPiUW!|mLOhiU|=A?hpz7KQ@gLhq`eCYV))S#QA4~1RDOhHfS~m@4fuc4 zLsoV??}CHF`uH0B1LAJ~1=7gJrl)GxRA5~?Z)s>_ON{+7!&3G`MLQW4CVh~CFR$=m znn)tXi|+G7FG4fkzP0EY(tM_W{WJk+-fd024FJ0?2WV;dIzhmUmyAZkO<-{X(nCs9 zs%y**#l|kbkIn-)0cApI_cRGO1xW=(?xaF;=p^$x zlfjO}jr9gG$BUAF%Sj)0(dZ|XEpH7WC^k2Ab!yVi{>lLh?Q#`h+X##sVOKy&N>sR? zJfT)N9+r!SudoEYpTVxM$~^|47+{>!d>QEFfnFHTa>Zw+X2GJIEtxNWb?QRN3<7uM z+qhckCBT?nt3o)tNMF0=)yNRg@xkH=z=|!*@83^cpDl~~zi=Ygnr)=PIcn%L?`w{4 z6<;ABXth2*9ifeo#GNo7K!oX))ij-SHWnnfh4wse1qg+}MSzEXgkI4`bAJ7*GwnG8 znZ@hpuRrwU3i&Dmg#sW>$aEOzfD8#_IEjeM$|~!7`wCZ?j(*%-I|_0h2LpgA@p1;9 zu6;nKxwEtIa%4b2z*4mr5YIn`BW3;k`jdLONg^lt-WpOA#{jJea9Q*@068i?^xS;z z#Grc^o^aAatpVQ$Tay6Lh=79UnK)rX>Sh8(Gsv@$x9Oihefl(;1jwpgXEL5V5EBbY zvbM5{1%Qh14|rEpB#{!q~OOYp`H0k%?;2$AS*EmQZX+g+GaqJfX(I+hL<*Z z04Y2e92^`y9W%%(?Z*TPNNV5ZvQBF%i;5SRH~umQZ-WDktSDeVM4>YvknW2R`i17Z zVlm~_Nd$!|%-tPg1{A8;ZE$_sQfsia-Pq3(S}?q0TR^kJF2Dm;-g<$kkd#(4uMDN~ zw*|Kv$Q?yRbO>fZH29VU*uu6l+Fsg*AP3G6Kl|s?4eT=)AT}ngD+?(ZgHhgP;or)HV5KF#DiQf zl$LIy8ZTNc5NVU-=H}+)3`{1E4LUVpFap&GP&ss%sOAL;fE?P@)fM&mv#joXCGB;f zd3=g^`FNh=v650}2sO9g?k|#GShUYAD45N{2%^06gfZw+vi+Em`Z75=IWuGSPzOl< z^EJ|eem>AJt`|vlafx2cVZ3r4^u$FW)@PdhL3Fif9vqC8AWxvesQ)u^zMvnAKp28W zu7eJ}T2T15#eu#B9zMPzx7sKBxjrrVXO%EkR8&-mwf|V2*P(28y$Zz-kB*9?NLh;-Sq7r!N(HPYT5jJygcF?OQ7 zi-g==6LK*(4(Byoq&FN}3eKRxgP81ePnY>`Q2_u_$UE(BFJ>w#?QpTM$TQltleLbs zQpA8p2PUUV;{}YgK>nR!n2jAsJYx@Pbk*RIXQB{hjXsIVSN>zdib5&uGe=ELO^1_9 zcdy-$xg5qmafnkc`mKQ;LgJkhvp|anvcooufYvyeN z$ULpw~dj_s;Nv;9U>_g8A4*S3y_Ztka{wj?PY_>W*s@9v}x2{r)z_%gVT}qD_`G z_Trkv1bp9hd5HI$uOaBUfr?7y1Wi52D-05EZfpBFx#L2p!*{%;8DXdDGx>Cpgj1Kj zC(Rys*X(Q#a%K#f7Y?fXFaeP47=6$=P$zm^3qs(tFPO$Z-MPa&t_D$;jvMF3Vj{`a zQmH@vNmt;AUS~(NG065(;@UGLN(o70xE@-q-icW6BKVsUzbP}Y=6zxW^9zN1L8hPU zG%rd$sgq7s@8NmuN@yo&Vg4kPaj73{WlcN=TPf|e+H|Cjt{zG;psuXhR z-)G*$n)i#P`*^-eBI^0Ugf+I2PQ4W-MLhyWlqd5R%a(z{=3iW$ylQbuKOVGe2}J z^RhSlqxQn>>G@-G2HIpCo|F5oud^N#&yGIjllO>053nlTBYLOO$=7_c!2bvMg&dIV zyh)O;_d#wx)%P%$(-8hoQg%0ygu;T*H3B68<)ni57z~v%F*F~zluVCS-(|Fn9p}MJ zgt=U6ZmfjN|EhER=f2N=VAA3YHYf6`E09hzh=9)=SVDXm%0d*^cpPwYSGry*c8L;$ zT>=VDuM-8m|Hi=n^AN$twPmOBQ90_c0IXu?zGHV!gNbtH4eb5}u)e=#RS)x6!l+H-d{Z*%%bf9HgCB|wn8KwgSb@}&1u&Q z1#GaotgDwTd-mZSg>u@WD@7ry!g)_AV5ql%;?ZsK1@hJvQJ3N0bY43n!IweWd%POh z%-uH?6+NZed$8cIzQgbW$D@$;*+2SE-3jOr=Z#3Q_5O+E%z z2T6mTMlcoXs!$zQ73FIW0uYQDo9x(U1(?QHt+r|-WwsF>O87wJ!i?bboJ*(2DhsZw zEE%!BL+Vv(4-0DxXZ6gnZ8{@kr>NAb<%O$=HCT}((joNE$juP;`_(X@z64=%2_Ov6 z6Ya&1H8s!!x=GXVgq@}JaRXclxvAY;abxz551%g$m<)njP!0v;>#KXIkH!P-4klt< zt0NOW`}ZKHCt@I?Q2#Q$WUmvexiQjvIXQfJfZHxZ*pI^6z_MIu2hAZZG7CR{{#;)# zuO)8$-YUseWf+D~$!t;q(qnK6FcJia3q^S~xc?zPTp2AF{=PRfPpDr3HTY-*g8B*s zeQ$}712Qs!zWYNU!Hk!BB!H-|ms3zM7;4}X4StW^>iN8uSO`HwzHR|+0)Gto>5Vie zF=;M$${nQ41f@&$$7lT3@zORnqmnOZ@m}QFN|p1117DlJ{AfHPk=|4swC-hLmbP7< zf9EDPA0gS8YPw`$?c`)TUILpr2CW))k=i>H3Vrfqtdhq-%5Kq4XeyE5i!9s8z^qr} zt?PWsVu5VkvD7S~?wQtV??W~E;vMw18lky|%i$Gj`kB4`WX;1E(8&k*@($;wquOor zl#~?plm{Qv)6MEeVhwZ|{E=f4MURjOe@rr@|05Rk`>g-SlmQYrlB*0ftgPjCpZ%qv z6Oxm|eis0y6wt4mrp8%Ae7NQS5()R^=jP@cUHs*{ySpzc9p~xRBngx@JO9Vb4*ln4 zRQ$DWt7BR%6JulW%etMT*U6%#2_Be2*__~Z18Ug5l`rlu3{W`g)Q zbATMa(%dr|-LLXw9{oq*Xf~2}Oc7<$Z>9^_9{t*2;ikh%hcD*lMQZc!NU3vB)v~r! zFe|SLfd~^?C_U$J#$#fupsq2HK@ggou6xgQe5~XKjFn~!iVLWQZ(WD>8E|7m&tM0C zUm)|hNmpBUhwM8QzDJPb3l?w0xwN93Pnz4mL&6n%J{`Da8v1VE=I0$>+=y;jHp~Bh zB@$JGH4yD=a=$(+wT2qEs4-wQVOwF}#!i}*sHYvj5viC6FgCtV-A!^RLp5-TN#B{K zTcgfLf6dBHOtb~na81++4f<2#;(}e=!VS43mvDS2x9U;bnHss84 z2eiE@hjyRCn z7xz4${_F`F??XaD2xvb42EQ=q^Xc+Ano5_kYE#Agp=R24ru0=Zza^`e<6u}ZGz!$8 zSf0Cxu|Y~k%FWD-9S3(jE4+k6>a)z$X=?@b$^WH+H27m<%tu`;`2uv7wrskVPV^*L z)tM&;$KBpH{(co&PG=5HLto4I;G_6J@F5)(4avOQK` z%q;F6m%P+olH@!!pSvSclfr0;E*5En=zB0+YC|yc0GMk(QliC&G?WB6FyQ4qR+iVJ zj1ESeR-%k>A(OdmoS?!ItG~6m`JCA4FrzT091;@8lPknu*Ad*&*ECZEnq@jbxy9c! zs6$f$D(e3y?}G+mRcl_odXW3*X`V>51Plv;XEvcZwdnt*uX~43+3JzyvQaAL{%Tp{ zQ>a^?>&|Fj;j^jjBiDMAXp^q9g9tlcF#-A*#g8?<{JXg-V{EL*-J~YIa2}nYCx6-4 zI##QAwP%*#nz_|eKIF$hVK89{U4v+MwdrWR0}R%qkik0A6I;I!Bl!a~YgV2yF`04Z zo1L8<_9(Oq9k_|57dDO2=iuOIwF9udrE)v;qs{dD@bF9UNv}wLrg`Vl=q2r zU14EilDdY^6B!Uk2?4tZVZVPSZ-zKa!fo`$8uN_XCV42YAd3Fw+(ZkxPq6_yxejq+ zrknYdGUR%@aLbiz51%SPS?@Vz8T#RmBFk=0#kGB`^R7qHaJv6V2|;je3MBXC@ZM>$ zTW>sywM6Ip|AE$HgxrV!5kqc61WfKZXPz!9##9SBI?zq1|02ylMn_j!v|b`12?nC( zil=NV#y{hAx<{s+z2&vsI~H0(sB%py=h+u;XXoZv_-#uWSI8dw-n0d-IS*xR&P^97xa_Otb$jp<E z%>e7s1NJ-sG%6~~y9xK85v)TtfN zx!artot^eQDDGYOE0hcixbJAkOBZ1V@1O6k{HIaPhmS(+zjT&%6DouCY}f`kGQtwH z&9qGI{&)`Ij=pR^I58vfK`)$serahBykz8_?Z9*JVk00*r=s8O;D}Vz0@*Mi=RwhH zWMl-qZXlW@+dfj8A4@{cvITO(or2Byu2!_SP=fLth;5Wp3sCw* zcu9+GSbh)a(BSl#Y4j~`+%MX_`2)N!2n633UFQgZ4&cxz%zsK1dG)0G{u>1iI$zc> zrkUmGKo^8uf_rOqqDDnWqH4m3A>C!QY!hD-T4_ly3kwJULgHz?ORnMCSOtewIKqGd zkOY?W`1&_8+-pl{*V4QDRzDL;!Q$wNb^d>BeR({T?HBiyR-$BUv6PaXO7<&o$H+M z`JV6jHoPhGWnY-=wNi((-6;nt@GWzx=;;ko&lA%LxQu+ORO5e`kR;<|xl6$s$MWQe zGBr{B_)ub5dbMSo2&?@{^#~l(8s{q|cE`p2{G#8ftIP}8tl37N5?vn|@CwvFO*9I) zbt+i>38Bu0HJTb^__{r7qgA5^E-q_X$=;SWHa1V5^ub{&U^CDw}BCSf@V- zGNpVlh8H&KKChaDeI^3nhTBE^$j0;jB}DB62ni9+QNZxVJR3UOpB!vpu!C z!#oqCb&9;eHOq#owzwFy;@IqJwW2oT9QI#|p!vR-lkknxfEEyq#7a}u%|D8@>7;v( zJMFA>gN=rK?xI=sbxV8HHyHXyjHfHO9hZ~xeKySZ9Yhx8q#r3Cs#B&p4B0JJY^FU2 zb2ou+lme$6ZMC4ju;ynV*Nmb>)w)X(MH2dsKD5*fgdorfV@SG}%06z6wo+SrppM!) z#`>u002p;Xr1|wHvAppy6^b&Vgiy&CSj?~q(77G?aPj9=eA#g3QyzR_^1)JQu7c8R zz%rGwnP+14R(9hfNxoRqNO1*f9-#xV2T+EXJNy?+ac3nQ={`v;qTU++`SUgaUL<`- z@4l$5{ais@JhtzS&fxLPXTuVO&I4?;Va!>vtS`3rGFvh!DTz3_)2G!MLD$IC_Nc~l z&?RC`y1r3P4EA1^TpGvY|Nm7nfB(**k+87v9p@X2pD;aTQ_T~05>IhV_f40i=25`2 z27KyViGbQmhsK|e(lac_=jZQd0j#^_kNq$_Fu(=kS?s>HuP&HfwGjo~po=zAv@|q9 z=4B7k?*bY2Igm%dTcz9}Cx&=Ty(1q4!AF_|Qr<0JXT{gF0m#yY$p$gP!-2#=h<2cE z%t^pE)YaYneMZLb{L7$9qVc#<0^;_{@<6kpPgR+}f*YNNTma7QrTp|eg_vQsB*Q%W z7pxw`o$jGc5hCKOpJWlPI;JOr85fDoI`S!#;Mf8Bz381%u1ZgR93K7vx`)fD>a$T01wQ`g`}Yz*ixI*3-yePx;Bi#x{|lG@ zy#P@Hg^1MubNK`P4GL9~&hhqYrfhEN5 zzyHZt{4;zaQuLGgpXrcBs?x*yJwVjqa>VH(zMg{&$3Ne91~3Tn0}ow65(nf3Ls61{ zAN#!w&_*q`7+nIgL<}jwIzqfdm z5EvK;qIuO~+=YIO}{b7)+W3LBgsXdSMdZTh} zv+Ck&@*2^%;;Vx!=A1K?Yd()1@T;yr=)Zl>?cr-vk&y z4=r&D|2tu@oc>)r@G?HF6DHhtR_iwo_U%pI}%e}wVUyrunzoVx&bkD3) zjh?7wC?$1hog9*2kd?arFv`$rlG$h-#eXUi)%B11Q_RF<=1?T5O|2r628{&s4LB)v# za8_x|{&z6+(FX%1JNU3jMuT|!e+T-{??hXPUzr2S3|!@}fSa%UCE}%>7`@X3=WJ@QmVcCf=KRL3EOEB{*Ke?+GKM=vI) zvs$Up4zx5sR8(Zyop$;R1ruEnTgSGHMh}Mmq|#*}zDLY!5lwJk6F)4qekMAC&+apG zjxh(M38hzUa8=G?UaFU&rh}F{t?t=gpCEA|WM>lA`fT!ls7g;tZ-)v1k6y%CVSVd~ zjm`J;;1jM7u_nSob2TPN3X=gOTY9fWf-Fdg@?!N#c2yK;^Oz!JG<^@ z%p*%wHc49!M_#D89}hirG! zG;`AZvZ)Ou1vuOE|Kju~_@dS4h+L_w)qTN=_3NRm1eNg{~A>cRusx^v!tzYCA!Ohcre z7wP*oq@6)oG7xD32z+54kzwzFO$o(<|_pLT-CC-mx+%E1BLZ>1_h)M z>C0*dz80AF!cn}@;-d?IC%$Nr^AyjI0Vdv4c0<|i$D zpU$+0 zG^|vxUX8YUR(7UkA=T7rY7R|bt|>8wS6Hu$Z8&U){-UJ?4@{_fA-2L;SuS~PWIm>& ztoSKbCvdOkXo!j3ujmD1ZI2XCQ87_0c@kzRLN!UNbX?6JRCAyJMC-dgTRKsVs$EQM zt?wV(g*5r% zwl5$K3Uq1WT!w)ub5X3Y$=k=&5nWt&<9~ibXsMVdu)vk|USD?~(qo*2RqZ+;i@sA%tlBw&< zUxk5)-YkGpJ$yu&WyzVujbvXv8T`(xjg2f(xDr_+u|1n?(w0|Ln;L?)5_zL=PTV^p zaH}Jid^v{6+laUP{yVYVHoKU-iB6E>ntTRJ_R_uDuFSlRmzRnt&WT}fVQ`BBZ)Nuf zuNG|`@#8@{tqFUowZ-V2L5=aWGMImhyPVe0&~WFwhHdPZktmNSP|quS`a}BdFCzBq ztk6bzRQiR+a&(^?K8KbJ1JrJNRt;;)&is4Q5&9=O>tvcMVP=Wu-4jospsdjw2;yWz$amTu{pZ z?pwR9Knvm5A8+v@FY!NOjtk%TL>H$9&69rQL>xnce6H#b%vC-)&~gGdzA#!Vh2ES2jMCuV4QD>(Fcc$LdK;!VJnt zy)1i~#(Uluy%vK)s_7E0_GihPSJ*TNb3P2IR!#Lrt;l&SM@h)4-BM+nVdo+WKZ8gC z_>mp){2|vs!jjFZhfO!pW@lpw<`&3ytbfk3&%F~uGGjbeXPwt+Kxg!Q%Sozh*;wWW zCGYcfKtf~U*RQI|mSD5UYf9Ah@4s5(^@~1m6UN?roYOsK0}Z2UG+44PUrvdP0ff!mVl8 za8MfVwY5SSqZTgyKlAJ*qbhc^@=kJRMtvBTGWp(PWRYIkEY`1$*C1qS%3>rf6D#J~ zyu!oel-}}Q>wELAX*F_=5Vx(;>m^k7DE-T`DP|~p{_6koGW)n$$*;a*QS9eS@hie- zybGeuo?B?SdF6sM^Gbv-EBCcFv`PHO>skcVadQIL?Y12kDIh)qD!3gg^O z_g2Ys?#y}@r!(w)>W+4vnvwBwGs)D6?uO#eq|tAHo}43=h0kQ>BohggdI~R9xr;G2V z6yhX*nWu0Gs5GP-j4?A`j39F%i&@@3xx#cS3eQPzXm-};dSHy&d}E`X$cr&?t<#sIPNZ-Li(a~!u+ev!kf}Wj(f8$d-#R+9xh}qM_1@A*QV-7u zq&i+>$SY*^C2-LmMLKAn_@DKWiZQfMcbA_1vuL>Q#VugsXxZ7EXdUOgOD|@9BzfS& z$NZdY96V*{XnG-ULjT|&NkVVzlM>55>8iyM^mg3Y@41@kLKh#toITCOxnh}*XI2or zO2?eGs9B&FUFX;F?DkgvgT{CK9rdd&9(uC@LF(m%wR%@^DS-T61*m_NJ5uG8OR;h#KfXB#6b)wI{6kmtFvxb;)9P5hlYl&gA1=;oue%U8fqwan*>&0Bo%#riD9W9Zp ze`?1@Jr>2Ir!=nS-6bC^>V%tt7BOfHzkI!$k2rnd7Mrl}+u1x2%noY$k5%!dT^H0l z)AFr(mx?m$;h!N(q`3lacU*=2qtWiM{AjQJk0lP{&Y;Bi@$GT)T?N8vEK+i?m}~7i z+o+Z7gp!JnNI};5I(q)Qgx=f+FRH;ecfqydJ@G%Qk`4 z%0b(4H|(fM>H>TfUWWz-zTwPNR#vuVT)UI<+f8E3-FCFjFi(rSa-ISS+E8-Foi9aaF8=asMVR^d`;%7m)_S0VJeV_Y z$LRjYL=+CV?Y81xwJ^qNwrib5X4x;fAGRuF-0JPGAw{`n@wJpX=LuLDh;Il#CP*gU zYz(Ex^?du5s~gf%-(D9PfhiV45$qn}g1aPV2lXFdU%z?R_5O>f++c95M+aX0UO$l1}=m@2;_{Qw50dW#`a=8)MUG?&h|pZof|~jGcRO|!z&@I2R?r+xBeGY6p$Hx zpavaaeD`%ifs;76!5hnMycX$TY^Y%?g??ouRZo)evNSipM?<3L2JRU6XNl3#nP?4U zNeL%n{J#~B|9Nr*X6e$u=&Txu~sHg#^GVK?d*(%c;3q1os2JC}^DDVbcYglacCiU) za=ubQ)%Nu3HFQVQ_v+%dH0sQ1ua2WH8l4H%ZK-IL!SbuK!PTU&mkDgnEO!bc&pig( zq|>6<|MSNaGu>Gr zW(flEkir46d&`lU&3D3%8&VvX!Ja@|w8ctLT*Hbv2p`4UBBYF)4DoWF#9t^d_`>0X zv_v%Rl6w!Gd;2#1F3BkvyOFeCR}Rf{Qf3(1KO>SkgK~ZbUrtp8zA#X5@f5%FAgcp^ z4@4<8=YKy0HwsR(CWcH3JO$CEg6Q$!D{5fZkjIJtfNJ|~xXKw+lt`4|!NU^&!BhAh zCVm9eZSceD@P(@gS%0)*6K<-rhq)(E=!yN~+9umUm zj_Jegb*dh5Zge+R^jdQ z$hki5mr>I5=8yxJ2A| zW8;#G`wJFvaWCNhU}kU;EQ%nH9-4mS;05?fP+q*Kh(f}J)kNsYNv`qn{ee7l!!Lag zk8Ld0fc`wm`;?TQU&F6_a6urOgN`81Q2=!$%fs#IQ#J}esff6^>A5+@!fWPs=RP+5 zEJ&QkwzZMj=lW{ z;G>HE0R4KuGLk@1<*SHK_V!3*YJ$6|=~W89M{g1mJfO(NMK4-fIxOAP_3E{2TN@j{ z_X|}IoggPCKXvNmfBx)}nR$g9Jt@f*P#1tCII)H-mX|JAlu?mi4oLQKDUo%}7|h2z zkO9?!1v-A`Fyd4IsKx;ww+oke_4K{QPhUYj=J)TE$ZDwP5{t2X2zMh5c$r2f3{`D> zeCk3STdQ-A7NFq@)k(y4Hfb3d`I%|PFqubh`Ut>(JafjkS&jTxDaf*yG`9wUs}TNH zyU^gI6>OPzatL23;AeGwAq83j=EwExRwxID)^AX)wk^P@*o#tAQ_DUKrLrB$EQTe( zAa_ujmo6?Ye)#X*ZZk78!wqkwR6l~E-A^NhvbN27rZeAo^vglOh35D@rn%k*L32tc z2lk`doNU4xOMHTYkR&+_{RJwW=V(JgO?#RF{CLoNA1g?dDo2eq9HpnDcIcmWOywAq0?xY4ZEiOU3$U9y|d3IP(U8ix@Yr>w25X}NTM107*pb^40a z=|b%y#?TiM(iM7D1X>;gwCfTcy7v6^^}V@Kmeuh7^C+ZW5Qxsy*)0gyW4Lr9Vq*N$ zQ;msjeQX@zTMz7!wrMkUUk*lJ4c6t&7y(3X}y z9O`fMCN54+`~1EM*S&kqM4{nV3nu_!2bps*h&B|B4h3}59VQ`J((~}TEGa1|Cgusd zY-b=8((pj8*hoGCcpZqUKQAic-E0E%)1J+VX{}FRr@9W7b=yb^RPA!)BFCic4|LU4 znSpJkTOR@?&Gh6tqHHJUSLGY_i>C9(R^`DmgS@;IWbq?kT^ABM7a-kSkO(k$(~nN6 zuI_HAnH`*q1ir*;lEYv}5eNl8&{tf0f48Rio*+<_NK0J0Q1s-9Y2dJ5yY{86Eo2c> z2RRFN8{eXV(q~Jg;0g6x*|aFk3*)-1E26`h@>C(GC9TeGREv_((QMh%tx!42~8xzAX;#^$iimbDjAvxxhVNiL8 zbgH8xb>$g}&B5V`K)CY~6fn z!hiVUS5^~CJ=U)VzoOqv!fxTPUyQ2DG>#MhaJ^>l+49=`&RQh;JLN}Vdd)csl6*aWYzRHqg^oJRGUmgxT=5F~W# z_@?I#0Zio?)VxI}?;oPcl*&1HE>thx$o)MVbI6c@tRdYxl>S4JGLUCpu~(<3Keo5G zKUv*6FtnD@v^rO>UqR3hzW=sMk#PDAa=hx~KH{xN8J$x5yG>oo*;&~Tf8f~O!Oxr% z>bz^wk=fZ<871-X_Pqn&3gJ5v;(;{zyzWrvXkJ;nYd`iJzm-;Z`!+U&X8q=MSxViW za`xG5qIxaVn?VINa>)vGXP}yzjFi-9vVO@P+On)c6PjOh4>YDIDZaPJ%vgs{br?=l z1LTV9D*m!EQ){8-Dz>|08b;qKvU!i9xcJ?S(=BVA5K99l&xcB^4_t37=S3%E{2aSs zG*i+L8d_}bhr=}k>yv08S7flV*fgP!4{?0)0%a+X+YuULR#?qE0^5jJ3)}XIIwTUK zc3qZ%W*ts~Uvm&dhya8O*};U(%;jGi1z{(mB1;O9<3pI&?Qato4*#>5P9u5SQvN}$8;29ZLy>DK*0-)769AQvq+xn#cG&1Yw!fwe2EAoAbd)=W06rBV0AW&aeK8wQrbz2YYmEn4mp`f&IAW@-lu*5v^-MhFV zUP%6SB#8saG@DP%um8RD8I&0{^@KE5Q5nQa;FK6`s)KVA4p%q>R{M{@TKj8M0;_NC z?6^o_73J>VKlR7?EDE$_!Mw#jG~*TG!JKJSG_X4OriiRWGfT9Ykk3d*clX|GZ~82k zUraqSoUqHYy^@?~sap6QPjN;SvcG@-et8L|4yyg3C6KwPX^QHhg9%E3-aIXl_A-B4$rbv>~CHD1(tVhZ*Q-q#T9-2??99; zo3R!#do`!3f>U{o;`tpbx;lxO20yY0V=q$ZAf>GVIedV#>)cmoL5Bgl@_ktU%^>M5 z#>>0dts+^la!u}@NEhc5_h=4H=(D7KHXmNY*hXLmYOc>_rYjRblFv&I;z1nNdw$@C zgcocmAXt_b7dI?PiF7GmNvsK-w*|so)W-6pVqo>NQnzo(lA!Fe=k4tc!UM|C|HbUc z(W4*lqUeM1C&$u&`RI~6_Vej)Y&9w@_XcD*cjh7wA3kiagJAOj z8TSUL@Ouz{2%#qAy(3f^n~-pkLKfNQy)ylPo*YEJ`#rt9;4-aY3v#WDbaVk%NNx{0 zLd!tPD|c^W$?;<^6rxpA;IGl3%skT%az0FAuDl)6*kbLttG3xtMrRBYa7-%!E!z7aCL+gZ{CO=!^MxOv6Y>W4Fzvt!M)!&bTT(EijJ1K_K zkV;fOJKdzjKkl8QL9OL79$`m3;Qb4%KDazt02z+#xOBQCH7JD`We@F zv9bQbwG2Ueo5)LDA^`JX>83Hn-R;>V_f0t3%M*Fr!i?kgz)4ST5E2IO8m#=nqb zqS+Fo9Lysc2L{lP=m89zs8*s?w+;JxVSXMmLQ^v{@_lsxuXAYTve}kGLp3PpUs+nZ z@%1pM7%Cel`*=kJ1RUof1xq5LvP`~N?()d~A~|gBb60_4ebq2srK~B@sU9>Jf-9jU z;%X`{3v%kl&6`6NcF9_{-mieX2}=jW!~(5L9VS~rLRuj1Ptuz=_MkS^o2SiZY+U6u z0}=>D29?h_4@c%SM*!6GReM9VTy60rf*8z!1yG4TNsXfHycJ%E#C*&dwAIW!$ zNus6{lUUoQ5rXGIro%Jv`|>Hfv>PQiMI~YrPf6UkLD_#8v32+ha!ROw%mlAIMqsIR zJw&Czhq!GhH$K7Gs=+=8OY$+FH8hZX$15Q*^5aK%W>2A^el@=R8k2-)TvXJZgvUWJ z&Z(&ykWT{rxr_Xkrr_6`nXQ6i%V>>Tq#3T>XSBV&P%}>p;KtGp;I0BkMzkQHn2U=G zHY|%a>w~HXyu7?II_Y=GqrVh6R8O`+k?cl4tDC#~vQHQsH-Vsaqv47i-6|nPhSdkc zIqfUu0Pn9)_qm;mCi|dii?u&!#}jp4gWX~cu&{)yZE+$oa?jhl($hhs)#_UREzpi` z1MAlc{UPV%0r4=KI5%7|Ob_l%M&{J-t|eTrh0a?b^D~|* z6QCf2jlOBobyZ*(^muh!p(aJTxLu|FEnk2GG{qX6fcNC(>A4ZQ;j_Oh=rs!2AIKTW z&2tb<1gN6RQ=>A6`2_`e9~(QIr~)o{m;06}@| z_V`QS=ywSdQ)2y}KT8R5eS^I`IDESW*YdO1U8wi#*QZb(t5Dz87;t)0ZK7QC;U{09 zgh#EN2jRVwWMqILcH{ehLevDdZ0qQK6fY8VjMQ9~T}KDqf5<~4E(F_Uuzt+F`el|h zZb?-UUdt2mb=ttpTrK4!WMIO>!@=A1rlR_KFoIBa z1#xJq24HG}Pm!#)NfYI}4L0Z4w`*K9>enFBL9m?!3VwzcI2s%*)eyy6`_pi0z2P6J zM%lrj9L8&(u8;LJHQiZ$60-~>?xm8!fq@TqDp7JRlne~D_G8jpE+F+~)tgJB2q$nc z8cns*3umfs+S|A16(^kEtqy>>VECxn!MFM1U+##`&l30eggiJUr&Yj zr21KiaF~LpuexyIoaQk^3JrwYx0k1YX{A;Snr3g-MF~9;o$FxVWBkVi*zfY zyoyNoKsLbsJ$m%W^{;ydU-D(vDl$@fe~ywe zwchv7sg_$~$Z1no|YgyqV2)3hu z#s{K7??@7y_0rFPvdH;B$Hw=@)eO|sP5DH1tg8A74c@dX-|8jU!Bsta8j*7L)wt~? zqJKF=%N~?Wk~KaT;StXXi=dgGym@oRaJU6_P>C&G#A@LVRDd;df&)Gym-h4!I2s4o`R#;^ z%*=2qh&;IX__~LO6DEX!n31)1T~c!N$Bzg7`H5>BH*a>~aN;0`p^_mqBT7naCjA%j zS2zkVsX)!CxnD?tUk!&F0l9`ZfXkVs7j?0QGk@M5I)EOLJpru<53&V_%mxschZfXy z^z@#<1ckwYV`2eX7l6W=Uu&)Uju0j#C7srBb93YN{!T1WVrK4PD1&a>8fk<}8X#?S zG`$sG;bBSX5M~i(0<1ofo9_4T-aV%2po3x%C?AI{3mqI(gAoXk=XF6I-V_x!%`h|g>jn}8o8~DmdelCPAG0#{^-t^9!9CcHcDM#NxS-r;>FDlxbFmVD`94{#4bhu* zkz9P+uC9v6g{uVOa!uj7u_8hEqfZ;OU6m?pr2NQ5M&>MP1-8c1Sl|``vYv|eaCMCu z-^+OazId0N&MHfUSh)nDxZm~*up{uc^vo>z-})I#d}SH^c}+70bDDb+&r3Tf*2JK3 zCW6NS)p42HpY+ zkjwtF>o+hLnSD*Y&sbt#I2Ku9;zwVTPU=g_Ngx}l`62!Ur>e^w!aHN|8Iwq828TRV zbjc*8qI2d-#hVo$;LG9*iQP!%kKP9Zz!e)$QsR;;*_jko#X2i_mfkDlN-yZ&NdI~)M(XN{$4g9{8|OUHbhZLX`@f z)Gic>MXKOLJrlRma8dm@AlrLmS!4bd7dgkKY3;05C^5<%qoE8KuW?w;v z$SYAs8@pi`GCJ-g@%mQ+>-C!<3kv4?<37a&mp>Bk6M+WO+l`aM;0DOaofwLEMoo;r z#>PG?gxWGzl(!=gO0x2Iq%^9kQ^UrM9yJ-dhlqAlIIDX_gv&A%`9DBJnprTT#?YiQa754`NSx&`Dp*?1MH^zVs3r^s88$VD5*e|?*gxQ z9XN#@hwRSI4uJk};5NwD#d*(sRdjjA7#fryaqABpQ%K~6vwTm!rF3%$Oy9c!45e#?XyXSLtSFY^9&41fZd}Gqb~Td|?i$<7 zOgz$~MrkeDj5J)3c%7pAv|mb-p*jjjVNy!UR)xrp}lT>QC<{C1|oZWCEi%#&;POLmug zSxYY!^wm`5Xuc3x$iKM6?cy{}Cy{2}U3Iel;q(1qdE-^b$qYvD zMiCqp{;QS?L84xG0^(HuiSt!xGPli$wvI8i$CXN>NIve$rnWOE)gMjbt>!;`Mr`k% zz0WaU(HcXDZ>YXG*~MKh?-lZR?uqHUt?l1K#)C?+U791Q7GbyscG2WQ5~ zy8c4pCI+cdjNt&rtf4b(!}3EEN1>~;*L;et6SG0HaX!~&a*M-q0olVujtLHJ?EU{@Qyt1~^{HqF{ zz0RMlRWl!S0JsD?6^(XH70)TR)WRrb?M!N*!{%pH zXh$h*TiPS-jy3I!7u!W;r{u9^7Oq|S3z(cp= zRzZe(Gs>POyLRgJ1X;!2B6ao2g?dMQP6e^4N30|DTDAdx+=Rt4tHNS=737@|z&xvr zHmq1%3Lj^T9|`1YG7P~Nt^`vR?Y>Vo;M+|Yng2)|65p$-6`k2%#TkfZlFVzl7Mi>* zxJKA5*bW{4brh*hC&Scicn2%^N;;%kq|Y|<>4H6~mTEn(nznYh{QTUMf)qjJPf5Z& zTc+EUwiKTyUE{v!2>zyYbM>C6H{pvG!h8U&Hy_w--tz(6Hkd zvM3f;VrcTtz46l*%uyU}6`7;==^VijhSx<)e?o%0uXGVr{C1#GA4VK#8EMD{|eJpM9(96X_cgV5wfmsB_zP#phk+R&ZL{$lE zzqdgjBc35!4X`u?iGJHI3|F-G5s7|iMauO;h60Phzy-4D+|9{6m8dnO_Q7*r>@AQ* z#s~0ZGSy9|X3r?(Vbv^g@%?$6uh5M+NWQH{976Vg9U3EM-L_~lPRUj{Enkn%LO)B3 z9iZsNlf~VlTK^*%Y&2>BF@@gpnN0PeU^edKIoT+8I^e zLpB0A0tJy0>jg>7+L3fQ4te>`Rz^jIa(D_jkYxZw90G`A7jAb3m3Vf2=Y!9&wGR)r zEWaEQ7ilf)jIBk7=!=rII9mUNFGS;w)_8?D-8wUj3_mw95Qz4=9&c=H`@mzc^M-AD z<&=skJEaHOZvmatiWe=W`6Vhu0;+kEUR4&gM~Awg8Br*!jr0GsrgOfrk+$m z{q0_8(I(s(jA10aZ7LM}P}>mV(L-sgHpxteV*G~jcPPIr%T668Oper+|5h4f8MIv{ zc@J+HfS!|L<3y^w9hKjjbo6o{bLDO_Bti0GIBY9llCl%*Q6O)4%84EoV6@zk!BZZt zawDJadURLzO^o=1fWn(J3Rn*(OT!#j3GWK>CPNFf+c*6J_o93pgC!ZVKO2Kfk(Q-7 z7>~vUm(|CD=6bYS>ysqdql?T8l2e}zv6|BlVwLVHlLZHqh(^b zm~34Adndk-8x>o!*5NIxm^yrV_(~z`7`~qdS-;O4>&lpVU93`H0Pih1KDoI#mut0P zh4MT8a>Q?38s4Qp2f?gT`r$*oZ3+a5``3)>xZ*Q}BrWuNVU$}z29@@<33}1(aeA2aFG9_ z(ZOme-(+NU*k_$SzHdx6h`x2~8iCaiebi=v?pv~Hlg;kiHU-|)>OXyqu`4?5L%P#@ zFHi%~)k9mMuK<@>3WCZ|Pj`8(ywBDE&dzsdg+Wzmc=!WARDh|?L`4NHq0~Wa2cllD zb%G(N*>a$?Ef?TbimC>K`i_DEDKX#7S&nWtp774gn&8jND2LGR=q7fQB+B!%uogC5 z=rt~}Vr{^~!mxf_qjXIgwU5lw!Y0zK0M7F}2!fSKW&-exH9YT^0MBjGIa~(vKJM=B zMMkxN^xgyv8h-m!7aM{CeKsmOKFlfQAl|n1leF z2I!i=bcJfe)UFMq(jX{sAXOKrISeihuNji=^s5@{!3_fDJJqb&3B32W)B)b&9|k6t3U_ebliNqvIwKUYgY{XzB zntAlbY~YuBA_C$0ICU(%)*Fwsrzc-Vgm~0@@8)XcECX9m0cc05u0Z0RoY)2}Mq+&e z(5x)`@`a)J43L?V{o{*^M2Up1U8o0P6mgQX)m513OeL8Foum2DdgB~)*m*vGJox%l zg#ZssK;{VKSFSc0sY^~>JF#wy_*C8_$j0db+F}MxK+Dfzr1g}nJ-{`06(kYy3-?gj7jr4q*j~q!h zMAPybBw*t){UzVmRfk;|?%!7$cK(p++|UnZ-_P4VxLSGe#V?3an>%(z*LhLiH!lfU zr$(B8${}NBhZC4Ur)f4P6atYey@*qwZ9Jq#C`d_LTUsc!UP68g`hHD+QK+vyfBt-M zf-1H(l2v8;sfW9Jml}0y=0v#>mX_TC^b;XwL!s7*YQ%nilT%Zi-bzb@cgk&l;|t40 z&;LB_+jfS=sCt2Jmln1DgX78X9jTHlvGIHNtIA63g}1yO+{Peee@Thr-1VO$oD%yxj$_56o`1+OfbCDSK8Cz7 zb(Ruaa5W&b7?w~OwI_IDofA*Wt(npK{pla+fORRd5gIQ27|N_Ba$4PRpI_aW9Y#i# zEl!`W<4`QM?AFRea~i6s26`TKT@3G5buq$%w)CsK9E~D%bMvWBpFS zRFb-~+iOft?7#Lfb0?X6hVBukr=ydynDn3NJKw?T8i>ihD7?vx)1&s=2FWy)B(c=tzRf>V77noQ{SrjI-|0Go4hUdf zZ;#{|OabybFq-wYDCL9_B+?ZJ(;(NUB;ooS$^w4^#zj3^Zj*pVQ4_07z^WY^YEEo6 ze?MDzQ&1)N`=510?c%udHt+HZx28pe-BV9r$=yf0=6oG;J)wo^iDk?L^(^JguTWe& z?Fd+egO-hni8OMH+$0jXDQY&4ct&;F9X8FBMy(~T0zOBL!L_yq!$NL>HwS|k9B(F5yGMrz#7ZvT13Ai73o@d5exRtn^DAcyQUUD~DT zfBMfmlHRlH?N{EFvJftZR}4(7zPuF=$%LDjIi0@DjlsYKt~pbkCUC z7X+RcLy<&2Cehp6sQ|P4z}?>b!MylR zdoTILR#E)cvbo2ct)%)u4dlNo`3JGj}ckma9U5+ zKzpbv;QP7qi1KljR=f@==DH+q|{t*fvl8a#gfaXe$6~mdy zf`RnOeaZ8{aisQHtX-#uI-9Y^{3!x7K?8MSfHqw~QVN#7x(UcP!Rg-$gbP=a4QP}A z{n22V6|4xw-ofT{4Hs|ou57-qPJSSql1ptB%R^95zrY`^=?=9|-@8;^8bL-!p}!l- zgbvfw#F8q(K0W4;-pW?1$Jqew2O~YV8z2iR%g7O}_=uYj%+Q31P1{cY@I8U~mVA&} zj2X}+egXpoh$8vAwP?HCzjZvYr1p2@o@DEWv3#$Y*=Ejho-OLrmt7sdBcVL8#vPdO z#LM+zrepo;8~(<;#%AO888HWj5|7huq)rbmt( zk)uQPHSfaFKe3x1Cd!~zr%9wR>~tG6WGW|#7Lt>hQ(K_Q4SKXbM`T4|Tt)_5Zd#w$jW=Q!k$qjEucHQcC zB2YOJg9nSEP!P|vN|aiJ?AyOZA@<^MToS-vf=Z5QRPyYSLmT*eMbNYg{7RrJKYF3e zfop{^{zwYonVe&W_dn-Sv1c1Txwzu)#IDYTdTFd9wY9NDjQGBl@h5t%?g`&)n<`)bB9JAi zYg9QbqNv8A+gD#54^EPPK`lmEK2&+swylulq=nm$pqY?)?QTA72<#R!`vL12S8(^2up%CJ2xFqCcv83tPT25#8Ova1w8$ z6RQWzm>nQp2ERFW&Yfv}hCldjwA-c{=G$3J;%f~m-gB6lJ!jokA1ls^*{{3Uw6)^Q zKF@28UXOS}n*CZtMmh`k^gEE%#Sq-<6w z-QOvUu%`N>kM#KE;MP%Q=DKj4JKAJ{%jv>od_rtk9x+OqYTSNdj$)kTm|V6PeB4#b z%G=h@PAn0-Zs88avtPb^fpSu%f_Rlg;VGyB9S~?@=*t9&EBbwCn!tPnsr_&vMLWG! z?jqCOG<4BLJ)s!9|AU+C9onvowVk~hJ%j;6jpD{e^l_vxCzgE5(pEhjc7-bKsRd%oPoK{d~9(B;a~IstZH*5s;S zLDl@&kK=-7IK5J4f(pS=QH1WhaHDizqy)cKCA#`lI3{QBwqhm=wKzNHJ4Yo+9+tZT zPbLYvew?NsB!s6bTJ<`|8_kxCtvCjcu$b2Ob7)U7h4vN@lG7dnR@dZu_V zIWqmJE|$F>HvWar`=yE0O%S6sdWJE~c;O*`H=5n`Gh`)%PxH(R$UL&-=lKNdm46bZx{ zJn#E?|MAwjXZBuu?R8zNzQ5n9Ml`@{*YhX%L_*O7HrUmv1&Nbvk>odp{iw*lyP&E8 zK+nX677^?-EjiIv9%tx+vy@ruJHLKd3s=B}hi+6<9f8k{w>N& zy1a<)#3;Rh9&Ia|ves6c@)G^|#T%{XKTd4bUmAW$nd7plZSYYdPq)&c3d$dvdIOf! zLg1Z`&^4|M7Y_%heh__Jnyt6JX)pssm>Qm>4$aJHGPs!u-1*RL!*9v|k`n zaU05R4nU5)-SvE{{eFC!q2!)a;}H>r23KLLgt+NIXDxO=@h$ilc-`Qcv|lviS40VK zR^<-0i82N`AIB$8sf+}sdV4C0qbF1swiQp-x;Whx_IFo^`sFK4 zt8<^ig0R{?@xHj;zItyTdVg8l$91u4*4v`%o)srw)7%v82zEuWkc_E!>Yz7y1O3e{ zMEEy!%?Tsu!n0mZex;ZQv^lV%QWdPODG{k;1NZj#ie{!(Iyvl_}j4|bYBF18* zg=rli_AG}<80%8 z1U!3g0G?D6;kqg5>EY4eja9^%Sv@iZPS%CmQA&k?KaRW(wrLWYnpq1>ULfAyBO)f2 zkXi{_?i0cZij;(z_S`yXS# z&uRpK4u0K ze0O)Zxzvu5*Y%s{=6_^-LuFkd0FtY#XTajiR|*s~G)Q%@>pnoX>}ody)?G0MPo~{3 z@9pa_Du>vgj)Nu0;(IZG9_JPBkYRjH1gx>)FxYHVRy9km`id0f>Q)aC$cndaKv9HcgjF{}=Zfm=W_CvVN| z=uv%w6?!q$YM(z8dipe@MR(@U-kzdT>vD=2?rJ^T7cj#jxV$>Hpah(;Zg9U#m%ydq2W`GwP5I;qO3W9oEqnf&elfnDwHw2-+*?!%dR2SYh z*2uwMI~LRhWc`pfuLB&M1-uzV@3U<1t61Tq!6Gk#ch2igiiN%7e8_#y*<0IqgA|oW zZwqI^M0xTrkFem^Gb>&?mplH_SOJpIb)iVOc}5F>KX@fdYH2@!T2Z08Ye|O*W4>UX zSZ1o-qW;}?&W5dmiTrxKS0)f2k* zT+?tNqaU~M$=LNVO^nz5&%%X=8$0stK7{QiH8#2-rWF4E1`$mHJzPIVV*k}l>kpiy zB+AHxD9I6Xl0aho+W3(E6eVoE?LoBlz%Ktu;$`Zxw6gHm|CJW*9~Ssb87Vi2kJjaz6iW3LpSxL(WSA&DCTr^8{xV;M7xKD$vFwVpHEG z4a{zB*BU&T9~JCNf_o5OaAIW8AISaUMSN?GC$v-NSDui}-FzWlM{$40>IfXNtgOph zVq>c@{GUyJ`2>p9qvL?*nuQvf2*3!8dve$e&srRSjr>@N9Tq;>e{JO7$HEXTn*Th} zt|7vi$BfA!1xDx0(%%`r_Dp&2tqkNMXP{QYa2-LkC zGx-cxC{|q0W0F>+eicED*w~H~pa1&89Pt*#ZyR+9J7%r8eHH>_9&D1m-^T@bE$ zNv!>AeCZuY-F!@ES!3>eeuO|D4uUrXJ`my>Q%AZo_O+ul`*{7^x!~zMl`m`gi%td~ z)0la57|Jj^i8WV5xI*g-%p%QDp>}ataZeS|XJ4Kz$}BEc`&_FqvyW+yvtXZium#PI_%_7^^e@c@DdM z-}u8|QuB*iV(v$(?YxqL6|h}5?sw<;dG|at85P@DlZqGB+7-UWYFHRVS-SGJL<+C2 zm(~P8AK`=jd5HHmdE2#TN`ox9eYhLVHu7v3nFUJLeHU;8mg}dKZK+F(a`sE5DNBSY z7}Aa1=iKlASj*F4W9`vx$Wk1-`DiB3cPgBCZS>2R$`+qKBY9l}AdB_Qv?*Jn8TKR) ziV+{!SewQQz7AO57VjYEDB)?E=wI>gI^-p>k52m3c?!~$3VPWeX5;f)I&N+lQ6E4; z2xKY`(6qXIX^(cZoBiX)>A8++^Hq$al#0jIw4t1yHFi%%#*^L+h@tVA2~-aqzkbs9 zA;R?96tZ~I`TcKLZNH&n{k-k5Rm^1W5afuoBIPA$!kmbL877lW=QFE%ObVty;JJPRCHpuaH zzFWt!aZ-(@?z?UVx6uYg`Y6f{o?diiD}DIo2P+aQ=2${pD|6#+agQ%XC?zpP zCcCK|d%${B^a{1nRYJ>-_fH8p55!O{p~tN=4f*ZC{G8nOsplstT~jaE+Xz;r4SS)Q z`D`jX((#oOfC5>GLB$fI9?N{s%W?A4(E6uYvnVz16-9Yjg?JfO+s^Kznoo1WpJUlh z7H-I>R=a3}l0AnkdA!m+>6Mmxf2+_9l~bQf>fLF%yY;$y!^|cnM)`S)YfKN0f5?#C zMHcX^`?o8i^+Xp2F%u)j2Jh#Sze-oM?JMK!_mu7f)_^3)*K|08Kv2jB)Ssla{K;dA zak{vF<*g9--9Hqyl;rY7Q)VHV*i!tqf%rj?bQbXb-9Z88ZVM+J0CnA7f0I3SX%0L- zh+tW!FoFDdh>C6;aUnKN{b7Z(5QZh8@0LBzMZ3AhU@(nSpn{s-NYyHus(EYHQ!9R3 zg$uQMJ;clE`oA+~2>c63>7;-Gq#O!HUW* zB zFcP7(=Bx8N-l#zU$Gz-iA*%9w7e)-rVpswk+g36nR15n>fh<}E99sxH9Rf0du? zHg_Eg2S8Z-9!TIXyxf?)N_3`dpG8IDj=m&w)32r2S{f?#srf74^x@_|4gP0_lx5L(#*yF=2F7a z(>T75>UFJpq`C)iyX1Zb4QCZn44&SS>WJ4y5}2p4fRiA>8=Y63SdLtD+Xxfx5U@fU z26xzgdZ}B`Z#qUwcx1s;+CZ95DsPc=Z&^2XK?oWFVub^XcXf)w%-Pb{HhDj&9eMv& zn&Z61`CXb%UEbTxyg2Kkd(bgG$3A8j^&F7CI!-bhih}0xj*fjRow;%Q(vC1;F zizY+!uOh&W&z;_cg_fx@n%$+=G}DnEPP}X*!yFvHW5t9>vb%#Kc*dGZ?SnW?APsv8 z5qMX@$EM~iE(}5e+eChIIbmP@XdSGp%5U>DRC z@h{@QAN^nyTVKWD$HNBU({_^)q7UVtm$V6v^Ltc-4it1c-T#wsy6-T3aE#%d{C}r6 zO~5D0;hBTpG@Ud*mMBV)%0bl<2@?7pzo(jVwhtBW+>FSM@f2>HrlMzr=i@Hnz%PFIIWRMz6*V|I=oT9&d_hwV(B@wQp6;K3D3a-3Nu&T`jAyBor%>{P3g8 zL7#PAD;Vr43ul@>m3=~D;(L`EqykR{bj$}ca^G{Rnm^P!0Zi%Q$P(JPmUBI7Y}n&0 zU-QNWmVz8&kC!7=B*I=z-sop#vm1-y&#V4FLXY3^JGeyY2x!E&qZEWLQqVFL;GhA; z3~_SOy*+ITWSw9}*9!UgJ}j)EL7Xf(j1~PicRm9x6bdQ)qaBMK`bQz$S-(i9snb#RhTQ% z;N}7g>gXTZ&mh{umU0M(>F;3nxQLHa5DHdTSKx1X*W){NcbvgE6qe{(>oJ1(vKJVt z-UD=a`ukvtkMj%)Y*OA3kL23agsPi&C)M1&^xW(&CdTdq)nd`SB?{!vz0j~QW8!Ks zQv-T|O2#X!z)q;Osp)+j&6Ept>Mo!R?qg>q87V+j%qx(vGMcWmwkf_qM3fV(*O55r zo7^=q1x_6Y?r&^put#ljA#S23XO^;c|$i6tQz~+-}hQ-%Re6j2V;|n48}KcYS+{ zkc_@cSU}9{Rhh&-So;V7s6|DEv%Gv5DI{MRTY%r=U@;WyY6R?rz-r4Zuo;j8G|T2h z)f(7!2e>cROu_ITifevBflEAC;ll#IPg_srJTdo0o4NZ5HX{b*Wfdj7g$Kb+Dg&E~ zT&0wcjRSxv9BfDdBl&kBaQle4lGydziAkljHy{biBu{VPEdPL|Q>!y?M4hW-+~5EU zIlT7;1fU07NQ0{`o6|sNeFhdM7K{x_rg5(*8K?-rj<2pib-Zjrf-;+%0yB7*r|XY%r4y5CaTOQ6rIVSb4?jHW2mz@nI(`uxc0toXa7_5Wp<|B8ohuP-**k?>Bm=F%DR1<36dc7wDFsj%~57e&OJgS0}8+bzPyiJvy$q}-I< zU6)U;YWv{exA@y);Baw7v4Y-3jVom8w?U$W8Wq3ln-=!IuN_nA9VuW5L_N+2Dsr-> zFMiFKf+uls>X^__t~4zLgu0&}g&}DCs1sna0k8S66zUT99L!Qu!B*f(lB*RHx&{?PkY1O;Yr8ENL4ptA zj&!1J^T{*I{A?)p(_o8hV8;0#qQxNaj}E?zHo_yZ*Ne+}&5pz@v`~yo3$bH#o{cG= z{h(jIMd>=fhSPY>IgQNj=(n0qXWg6fgSyOe_iyaM5HNR@gN)81hu~30E@#&G*Pe1U z(=G>MZ;vGyWl@GDK8QoZ$A^M}givx%Yo>$*gS+Y0d26WNn7xBx0&R9JM7UlP*bahW zNYP>93Go@G&yibOD;QIQX=cr6zM8=$7iX?x)?igLoZp%d?G<#?nR`ObKHlRfxNpN@ z#Z0f7KWJKD;0jE#Y!O3$@qhriE`yqxujHJKV^=xH__=>@oRXPZ)O8DL=!KVs}_n+ z-;a(MNxb-4wenpkKUAv@BmZ_i;$L>hz5?7l)-_=t2yJfuiB-Md6%cybvAIbD%P@5DU4%Y2$*Y_!1O@DR8D};SAvrAMdf>F$OrM=7Djho^X z1H*qlcha_=GPRRG9mfsO7&U-+sY)9V$F?W|CQgTLDMH%aM z7sf*Hc27uTl1Fh$>`BggjjtW8P_C%L%IREdiAfEq#l~vgaYADq2gg{NjnX_UXpKJvi&&rAU>>k5?(jm|N^ogx(RuduN6695^6SUIWMOLs7zL1pd8xFU0V(hs^z?&# z9j)0~Szq(k**6a|R){b_tad>RmS(k9`Okg}R7$&)&lQqmc^?g!IK&neud`}*5zjTjf=jnrrzs&LQ^d1N|O>LAB^%|UCE+b(nRBm`nx_LV8AF}L4>bZBS z4+sz$?-zgY^}JE)&ir;WFaGr55}N23c?*UyHQal0X1(6DmkcfM#Nh=5ceEZN5OoI6 zmYImj-(~%j^%jPE?b^cP;&h#BxMCXE?Pmh|YZf$8wQ}+2&u8*Liq;!W!Hq(pSd^T) z%Psknytih7-1iqCKv;mE1%I@QF*wnYS5B{^uTNP~k<5M#a6Y_p={h<(^Mk;Yf)qG6 z+uyh|z6%gI%THR#hqtQFz+tVo7|{!0Azt@eriNtWNcx+*H*VaRAS@IkPp3Z($TugD zVc?pYVD;XODeZIxUc50BpI(J`4}OD?BrQoU4>umYctxtnZ#(oERm7OKx!|;la?J#T zM{jz7m=T*B)Foc!!|uG2wWPMRsPhtGEc#4KJ?II|V~REsy>(08V^5#Zr{*th1Q=6p z2cY!Q1)YOpg}AwuMN*$9hXDEK&70%(UNw$-piyTY048*7ey%Mlu$BQ%FKIf+D{cmW z@0+8gE{xYX&E8Qnn*gaUt~+B3G3>Q~Blzshd;a(9z~ zc_Bk`yqTq=K9!{sSBtO+8f?8C-gmQ7sAa1;OLt^(RYaC870x`Vrj#LTgH)l zr_6_SgKa)r-|p;IoUN@Np3h9D`b+6B6VMRO6BBXvd{-0Ek{h$^(Xi|?*?FcYd_F8@ zT(lC#!kM?imRC|ImK0Kw7=JY@oZ{Vz=SS!phI?P!17wo2@|eQHm}NK5F-MWy+)tVw z5k114>Dv(#+qw7si6Dv3(uP1ozrB9kw!y4I>L&s3!lDtI-zr`$1_+|Utb<{^C1KyE zdF%31319G`3u>p)>7{q4HwQn|x0Hy=^nF|m5JuYHMYGOqP>KtmB@fjzRmajJdh|89 zG-kkygjE;-nK7820J2n_%Qbl#D>^T$1LQamDX#jQ@Y2&iNAz}dsNz=HVB!xR$$QIo z9uBjkI}cl=8|w#}d`#;-KvCAQxfBQgvg+wsqRHP>Wl z@Y^$oK8OC5?Dj-P@f~p!kxM&H}@zC zxql#Zgj+@3f4+7l^=jjqYTiF>>uo^P7V;zB8~PX^eEnuWnk<#}ow7YgoMrn_n`v*3 zP7@cNp6x@+6e#C_eL7*H5=?u+vGg}dJR2e|$}4P03%8k>nc1fF4anl;q@*EQS|yIj zV_eOxtzpA}#aRMp8(zFBqHwe#(+AG&DHV3{?UkOZ%s-qI`UDj-|Vf zbgTQ0PED^?ra9Gvr@HtC&~v)77W-POGvmm;fufS_(T9OT9S(xV({a9sWsaMF92OGi zZa{zb+J+6B=6P0<-Y#|CIL_hGfR`WaCI0DC){Z?EL9bdU?+umgbfv`gakFg;>hA;WYXtK~^VSuUGXddnHo||HlSn^9|#7(Hp4QPFbVE~v$ zt@)POP2>o8O9fPgZVY5AXIKZ9hls~nQF0soD5}o}hB7u64<*_SglAqlFvrYk7LPwn zZ?VsnewKAY*El)aE%fS`e#paTKB@HO$~m9YFegI&Y~*2Jf9XpG#3f%P9wEE+VBZ$pJ;>of>6B&f`UtL>L}`rtE6PQM>oW) zKh3#6?EJ8D-`Ne~QCEgpR?Z6vex65y*5pU@B%Z4}bhd}#L06FTGhjyA*}V+XuX+u5 zqq+I{>@nrsI_0LLB?g^2D=l^uk}Ti_3!c$O4|Ot24u3I_3-H>NnT@;MN_b6Z7F}X7Xr$Ez!<Ai92F&+-N{pK{PM>sp z=C&u|3X`LcFgp`>YM8}Ot~C6<#C{t(I9$T0%`{IamVT+TFQ( ze_%ZU$9qOOa%WOZm3KCUN>WA~p!LIMP4j(IhJuU^I$M$7&5W`{2F%aDGBnx7LY~6O z6+EChPmbp&=|)(b(mrEyghz9CuTEL(Z#8LpjGgv0JZ`1^R_7>?KjFGDZPD5`7~fwN zAS_QxO?`awz~RSXUVAf8SLo{fQ$DyTJwovoh9yOFvA^afX;(Rti&W&}K1Yn$nx^|N zFH6^zW@ujHsTz{`QBIlS-b`Xdkv0r-W_Kvzi*odkjqnbg%53+D)#2VjuWD7$`7*vO z@W#V0!o2|{=_-;+?kRFJvpO4iR2T0k6N&~JhzXlg(b79aM2}oohd^(wrwr2@zWE%M zP$MWx*UJ`TGV+U@5E|#6{HICYsVxczBJammVR-u)4YKJdKvMkusg)W<&ZgP)%^hB8&UMNoO1p!!8QxnOw%U2Q0w*$`&+EQRox}?1`p8pHahbLMj!ItW zSP_sSt1VK3UE#lr*3sTcP8vmP2qPo6fgAB7KtKbf#U1pw2FIF64}={H!a@I&^w6+h zzca< zW%*;jDdDYKVNp@QIMck~_BtOz!6)#?*I>BgVSos{t37`{d@ZZk!Zj|^o&(|K_<^@N zQN+pIe91WGXx7@pI_Z(NN9TTOQevjPe(aKcl)JtmvBZLd37I(D5(h~zW)GH_d^g^P zx;gw&V-Zw6S+Y^Fru)(wY3G7JG9ono~$w;ZelvIahede=lyiJ)AL=!)t^F5 z2BYY=nL)#6xL;EpWmtiAd|^E>lgdwgVnIc4?>^#9Dbk+S1pHLqkKvMrIV^kuv3I%N z&0!dFgI)oatpT#6WKp;&7HF6J1zhcCP{VtgsG|+|lTOGT=J`-2L@^Iy?}y=#R!}Dq z8V6~ZXW7-sxAd`#p1PQe2o0JM^e2C#fsV0u zZhvWj@Hu~+qMKW_qBg}1Xd`Wa@M{HRuLLZC3$baKV1KGxMZS@cKBn#Z*0E;6k(;_P z)e%Gl`K12!K&g-f6%7pyRzo*t^&B4~tzyPaek4Jcyn+G=cVdFG0%d%-K|IwyIRyVr`3weA$4SUe#(C)d&rI7T!lQJ7Uar`p;xtYPHJz?jFV`s#xg)wny=*F{ zxyo|$EL@=i33#l7H=#fGn|vZ_N*V}D;(sLO!RtBnr>o4W?Ohw6fbli~P5@lcL|3cl zhO66Gt)BkJPS5(j?|Q6W`XwsNTcp?3GA>6mUX$%Na%8nyLPyMS{C%CfdejlRc4ryx zHlnhTLBWSO)#F#Q7e_8+)~_jF-zTPSnWFT0oqYtQ@M&JML37V&qL^a_LE1^b^Nzk)Dps#BUYjy7#H*->l)u8|_Ck#Ke- zK`dT)?;MxuMnV=`wh57|ik~w)m-EhhY9GRxlM_8qum3C9mfq*7wR8GiHDf$K1eQ8xg8-V*{m*muiD0;Dh)E%kDqV8V%}EKdhyZWSEkT z^gA{A0efVWKHF;@6OIlO8Idp_UPzW_nwM2NlyGZUc;gc*UC03zIzWE>%rEvqfricG zsro}C0TEgx8pofF7LB&&%9?7)qMb7=txgzob#Dm(P2`0k{!q~IyLMlcn^!}g7e!Qk zg|j_);h+h8|2;9eRqnHXaMoG1gYVo}g%S2u*(4TE(M1?G(%wgSfVFx}UNB+F)pB;B z5xy^*s>#G>Zc3frnzhoBUT6`tqDb(d+QoLT+)a@X@~n_a`NM6rn_1V(ChphPOKTgz z68LFZg!>bfsbL)&57*>BEBB}LQ~DfU3(5LBV&@5<(t6JFa&GA|5w5VK>tNiklSn6m zxnExfY4vaG-$tf2c=@Viq$8j0R~IMm-q;;hVpfJ-X^4?pf-obx2rD{qp2guqU0;SH zDISi`OMnI$0OICnUE|a=c_S@LQ0~R|ZfXNO0^IY`aqC?S+YvZ30Gqk*gEBPI;yit(Qi1+mxdVcRVTGwR!yW)8o7Yqx7gG##7Dv2+H~@NIY^GL2kd;!BbV z#Hf$gL)NH~_7U9$UK6l+ zmG7n) zkKsPWqzw$dcVpK;*rq^eS;`0JjFXxSGo_q1A9?|;Otx$!-y@GsDCzs)%c zd~dXKaos(hDzy(+O5DkWo%$I}T0?8$wIOcGXBxfGJ2NuG%y;8=la?PrOcN-)V~2-6 zN0)FZ^-zn}KCzGGxm%xFTH~4DY4s%LY+(VpI6F%u{G$PRGu`H}@~QMtL%-w9e?s>& zH7Wv9n)FWu)SgaGb2r=d4^9{u$>6JMNx{Q4Rp)~kQ$f(KJ3&BX|98+<<`-)=8EANQ z!(L}wp|L^hj15{ZXZ59!`ZRP2=#3kYKRohyi{F!uzcfU>%SEt@ga?2PD|AaS6@m2V ze@7{sK3u`}arD%xV``AAO{$J?9C*W+EcAl>ANs(A$+(4Vp@C=zcLvZ{zim1~zb+nl z{S&p(>}Z2Y@dsM}iCQ|_e@E@aKT(_J))7l6=`mWWKDg}uUr{?I1>>g9Gur6n8B(nK z+(FV&NQtxl6cP89{Wu{)xXgNcX2$(XB@&HZWSB7E@H9cJ4et|s5te>-q&M?yFMK;e zr%yDljIiGvb=gFfLEUX&{4dq z%e{(SL4!F>*02ZXbsN$bWSJ22{+UaC{3M}8sqIp!LaobRo%9Z0S@X%Xm0fvPS<#u( z8euy(_$o!~q}J2?^YqChV}&+;PMgtPBHT*r?VpFGC`5q+Az9upcFVVzW#X$ti_lP(S>w)GX~Y^m*!j{UE+rE}`xj!;+4&KJ zC=Uh?zAM;FaAh}*ECBw|_1TYd`&S!(=tZJ08c=}nvrQdE7+$S*&Y16Z^M-u6@@`D< zZ+~n@4f55p=o%1g)a$bzFR_W8KLFjYW}^e){I4uc>q{!PCllLfnI40F5eMWR@W;;E5m=y$9C?PWaeN1wO_OLcxDxul*~aRuul3L}aO^q}1>YFUUFb>xW{UBSHMn3WATu-b@5kw2 zA5`1W!wgs)2EawJho=1bb7#YFB8nPZ>t|MJ!#Z+q`mmYy*qc18ym%yaM+($ zs^0@2lq5?e HUcdW4dO01H diff --git a/doc/content/docs/arch/.keep b/doc/content/docs/arch/.keep new file mode 100644 index 0000000..e69de29 diff --git a/doc/content/docs/user/model/network/From_CAN.png b/doc/content/docs/arch/From_CAN.png similarity index 100% rename from doc/content/docs/user/model/network/From_CAN.png rename to doc/content/docs/arch/From_CAN.png diff --git a/doc/content/docs/user/model/network/To_CAN.png b/doc/content/docs/arch/To_CAN.png similarity index 100% rename from doc/content/docs/user/model/network/To_CAN.png rename to doc/content/docs/arch/To_CAN.png diff --git a/doc/static/dse.network/dse-network-dataflow.png b/doc/content/docs/arch/dse-network-dataflow.png similarity index 100% rename from doc/static/dse.network/dse-network-dataflow.png rename to doc/content/docs/arch/dse-network-dataflow.png diff --git a/doc/static/dse.network/dse-network-deployment-modelc.png b/doc/content/docs/arch/dse-network-deployment-modelc.png similarity index 100% rename from doc/static/dse.network/dse-network-deployment-modelc.png rename to doc/content/docs/arch/dse-network-deployment-modelc.png diff --git a/doc/content/docs/devel/.keep b/doc/content/docs/devel/.keep new file mode 100644 index 0000000..e69de29 diff --git a/doc/content/docs/user/model/_index.md b/doc/content/docs/user/model/_index.md deleted file mode 100644 index d0bb617..0000000 --- a/doc/content/docs/user/model/_index.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: "FSIL Network Model" -linkTitle: "Network Model" -weight: 70 ---- - -## Toolchains - -### Set the latest Docker Images that are available on ghcr.io to build the Network Model: - -```bash -$ export GCC_BUILDER_IMAGE=ghcr.io/boschglobal/dse-gcc-builder:main -$ export GCC_TESTER_IMAGE=ghcr.io/boschglobal/dse-python-builder:main -``` - -## Build - -### Build DSE Operational Tools with Local Build Environment: - -```bash -# Environment setup. -$ export AR_USER= -$ export AR_TOKEN= -$ export DSE_DOCKER_REPO=artifactory.boschdevcloud.com/lab000141-emthacks-docker-local -$ export DSE_PYPI_REPO=artifactory.boschdevcloud.com/artifactory/api/pypi/lab000141-emthacks-pypi-local/simple -$ export PIP_EXTRA_INDEX_URL=https://$AR_USER:$AR_TOKEN@$DSE_PYPI_REPO -$ docker login -u $AR_USER -p $AR_TOKEN $DSE_DOCKER_REPO - -# Python package. -$ pip install dse.opstools -$ pip list | grep opstools -dse.opstools 0.1.81 - -# Build. -$ git clone https://github.boschdevcloud.com/bios-emthacks/dse.opstools.git -$ cd dse.opstools -$ make -$ make install -``` - -### Build Network with Local Build Environment: -```bash -# Get the repo. -$ git clone https://github.com/boschglobal/dse.network.git -$ cd dse.network -``` - -## Generate header files - -### Install cantools in Local Build Environment: -```bash -$ python3 -m pip install cantools -``` - -### Use the generate_c_source command to generate header files from the DBC file: - -```bash -$ python -m cantools generate_c_source /path/to/stub.dbc - -Successfully generated ./stub.h and ./stub.c. -``` - -The generated code will contain message structures, encode and decode functions(signal functions), pack and unpack functions(message functions) and frame annotations. -The maximum signal size is 64 bits. - -## Configure the YAML -### 1. Use the cantools parser to generate the YAML from generated header: - -Provide the sample CAN DBC and generated header file which can be found in dse/network/examples/stub, as input. This will generate a Message Library and a Function Library. The Message Library has message and signal related functions and the Function Library has PDU level functions such as CRC and alive counter. -These libraries can then be configured as part of simulation. - -```bash -# Generate the Network configuration (network.yaml). -$ dse.codegen cantools-network \ - --input stub.h \ - --output network.yaml \ - --dbc stub.dbc \ - --message_lib examples/stub/lib/message.so \ - --function_lib examples/stub/lib/function.so \ - --node_id 2 \ - --interface_id 3 \ - --bus_id 4 - -input: stub.h -output: network.yaml -Labels: {} -conversion finished -``` -### 2. Patch functions into the YAML - -```bash -# For example, create a patcher YAML, patch.yaml to patch the functions into the YAML: - ---- -- message: function_example - functions: - encode: - - function: counter_inc_uint8 - annotations: - position: 1 - - function: crc_generate - annotations: - position: 0 - decode: - - function: crc_validate - annotations: - position: 0 - -# Patch the functions: -$ dse.codegen patch --input /path/to/input/network.yaml --output network.yaml --patcher patch.yaml - -Patching Completed -``` - - -## Build the Network model - - -### Check that all Sandbox files are generated after building the Network model: - -```bash -# Generated in dse.network\tests\cmocka\build\_out\examples\stub\data: - -0 build/_out/examples/stub/data/model.yaml -8.0K build/_out/examples/stub/data/network.yaml -4.0K build/_out/examples/stub/data/simulation.yaml -28K build/_out/examples/stub/lib/function.so -28K build/_out/examples/stub/lib/function__ut.so -64K build/_out/examples/stub/lib/message.so -``` - -## Verify the working of the Network model - -### Check if the Network model starts by adjusting the LOG level to LOG_SIMBUS in tests: - -```bash -# Logger is set in tests\cmocka\network\__test__.c - -uint8_t __log_level__ = LOG_QUIET; /* LOG_ERROR LOG_INFO LOG_DEBUG LOG_TRACE */ -``` -Check that all the network signals are loaded correctly. - - -```bash -# Refer to the logger level given below and set for appropriate logging information: - -typedef enum LoggerLevel { - LOG_TRACE = 0, - LOG_DEBUG, - LOG_SIMBUS, /* Log SimBus messages. */ - LOG_INFO, - LOG_NOTICE, /* Application level messages (always printed). */ - LOG_QUIET, /* Only prints errors, used in unit tests. */ - LOG_ERROR, /* May print errno, if set.*/ - LOG_FATAL, /* Will print errno and then call exit().*/ -} LoggerLevel; -``` - -Set the logging level to LOG_DEBUG to see information on message parsing, signal encoding, and decoding. diff --git a/doc/content/docs/user/network/index.md b/doc/content/docs/user/network/index.md new file mode 100644 index 0000000..64277b8 --- /dev/null +++ b/doc/content/docs/user/network/index.md @@ -0,0 +1,117 @@ +--- +title: "Network - Network Model" +linkTitle: "Network" +weight: 800 +tags: +- Network +- Model +github_repo: "https://github.com/boschglobal/dse.network" +github_subdir: "doc" +--- + +## Synposis + +Network Model of a Communication Stack representing the connection between Physical Signals and Network Messages. + +```bash +# Build a network model. +$ cd path/to/simulation; +$ task generate \ + DBCFILE=networks/can_1/can_1.dbc \ + SIGNAL=can_1 \ + MIMETYPE="application/x-automotive-bus; interface=stream; type=frame; bus=can; schema=fbs; bus_id=1; node_id=1; interface_id=0" +$ cd - + +# Run the simulation. +$ simer path/to/simulation -stepsize 0.0005 -endtime 0.04 +``` + + +## Simulation Setup + +### Structure + +#### Network Example Simulation + +```text +# Example Source Code: +L- dse/network/examples/brake-by-wire + L- simulation.yaml Stack definitions. + L- model.yaml Model definitions. + L- brake/ Brake model source code. + L- driver/ Driver model source code. + L- network/ + L- brake/brake.dbc Brake network definition. + L- vehicle/vehicle.dbc Vehicle network definition. + L- pedal/ Pedal model source code. + L- safety/ Safety model source code. + L- CMakeLists.txt Build script. + +# Packaged Simulation: +L- dse/network/build/_out/examples/brake-by-wire <== simulation path + L- simulation.yaml Simulation definition. + L- models + L- brake Brake model. + L- driver Driver model. + L- network + L- data/model.yaml Network model definition (common to all networks). + L- lib/network.so Network model library (common to all networks). + L- pedal Pedal model. + L- safety Safety model. + L- networks + L- brake + L- brake.dbc Brake network definition. + L- model.yaml Model definition. + L- network.yaml Network definition. + L- signalgroup.yaml Signal definitions. + L- message.so Network network library. + L- vehicle + L- vehicle.dbc Vehicle network definition. + L- model.yaml Model definition. + L- network.yaml Network definition. + L- signalgroup.yaml Signal definitions. + L- message.so Vehicle network library. +``` + +The above example represent the following simulation: + + +## Network Setup + +### CAN DBC Conversion + +> DOC: Provide description of network Taskfile workflows. + + +### Network Functions + +> DOC: Provide description of network functions. + + +### Network Codec + +> DOC: Provide description of network codec configuration. + + +## Network Operation + +### Network Tracing + +Network messages can be traced by setting environment variables for a specific model. + +```bash +# Trace for the MIMEtype: +# application/x-automotive-bus; interface=stream; type=frame; bus=can; schema=fbs; bus_id=1; node_id=2; interface_id=3 +# bus=CAN +# bus_id=1 + +# Trace individual frames: +$ simer path/to/simulation \ + -env network_inst:NCODEC_TRACE_CAN_1=0x3ea,0x3eb \ + -stepsize 0.0005 -endtime 0.04 + +# Trace all frames: +$ simer path/to/simulation \ + -env network_inst:NCODEC_TRACE_CAN_1=* \ + -stepsize 0.0005 -endtime 0.04 +``` diff --git a/doc/content/models/fsil_network.md b/doc/content/models/fsil_network.md deleted file mode 100644 index e60513e..0000000 --- a/doc/content/models/fsil_network.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "FSIL Network Model" -linkTitle: "Network Model" -draft: false -tags: -- Models -- Examples -- ModelC -github_repo: "https://github.boschdevcloud.com/bios-emthacks/dse.network" -github_subdir: "doc/content/models" -path_base_for_github_subdir: "content/docs/models/" ---- - -## Overview - -{{< figure src="/fsil.network/overview.png" caption="Network Model" >}} - - -## Configuration - diff --git a/doc/static/dse.network/dse-network-arch.png b/doc/static/dse.network/dse-network-arch.png deleted file mode 100644 index a1b205cef6a03ceea94e5fadb583825173ff09fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71942 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 literal 0 HcmV?d00001 diff --git a/doc/yed/dse-network-arch.graphml b/doc/yed/dse-network-arch.graphml index 688e7b3..cd33869 100644 --- a/doc/yed/dse-network-arch.graphml +++ b/doc/yed/dse-network-arch.graphml @@ -1,6 +1,6 @@ - + @@ -110,7 +110,7 @@ - FSIL Project + Project diff --git a/doc/yed/tutorial.graphml b/doc/yed/tutorial.graphml index 23f48cd..ae2a0dd 100644 --- a/doc/yed/tutorial.graphml +++ b/doc/yed/tutorial.graphml @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + @@ -50,13 +50,7 @@ - CAN [vehicle] - - - - - - + CAN [vehicle] @@ -75,17 +69,11 @@ - + - - Vehicle -Network - - - - - - + + Vehicle +Network Model @@ -95,15 +83,9 @@ Network - - Brake -Model - - - - - - + + Brake +Model @@ -113,15 +95,9 @@ Model - - Safety -Model - - - - - - + + Safety +Model @@ -129,17 +105,11 @@ Model - + - - Brake -Network - - - - - - + + Brake +Network Model @@ -149,15 +119,9 @@ Network - - Pedal -Model - - - - - - + + Pedal +Model @@ -167,15 +131,9 @@ Model - - Driver -Model - - - - - - + + Driver +Model @@ -183,17 +141,11 @@ Model - + - - Vehicle -Network - - - - - - + + Vehicle +Network Model @@ -212,19 +164,12 @@ Network - CAN [brake] - - - - - - + CAN [brake] - @@ -238,19 +183,12 @@ Network - [ physical ] - - - - - - + [ physical ] - @@ -264,26 +202,13 @@ Network - [ model ] - - - - - - - [BrakePedalFault] - - - - - - + [ model ] + [BrakePedalFault] - @@ -297,27 +222,14 @@ Network - [ hmi ] - - - - - - - [BrakePedalPos] -[BrakePedalForce] - - - - - - + [ hmi ] + [BrakePedalPos] +[BrakePedalForce] - @@ -331,44 +243,24 @@ Network - [ vehicle ] - - - - - - + [ vehicle ] - - [BrakePedal] - - - - - - - [ wire ] - - - - - - + [BrakePedal] + [ wire ] - @@ -382,19 +274,12 @@ Network - [ vehicle ] - - - - - - + [ vehicle ] - @@ -413,7 +298,6 @@ Network - @@ -432,7 +316,6 @@ Network - @@ -451,13 +334,12 @@ Network - - + @@ -527,84 +409,51 @@ Network - - [BrakePedalPos] - - - - - - - + [BrakePedalPos] - - [BrakeForce] - - - - - - - + [BrakeForce] - - [BrakePedalPos_AC] - - - - - - - + [BrakePedalPos_AC] - - [CheckEngineSet] -[CheckEngineClear] - - - - - - - + [CheckEngineSet] +[CheckEngineClear] - @@ -615,7 +464,6 @@ Network - @@ -626,7 +474,6 @@ Network - @@ -637,7 +484,6 @@ Network - @@ -648,27 +494,18 @@ Network - - [CheckEngineSet] -[CheckEngineClear] - - - - - - - + [CheckEngineSet] +[CheckEngineClear] - @@ -679,7 +516,6 @@ Network - @@ -690,7 +526,6 @@ Network - @@ -704,7 +539,6 @@ Network - @@ -718,7 +552,6 @@ Network - @@ -729,7 +562,6 @@ Network - @@ -742,240 +574,349 @@ Network - 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 -AABJRU5ErkJggg== - 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 +IYQQafw/kcuRgh3S6REAAAAASUVORK5CYII= + iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAUkklEQVR4Xu3d4XksN3KF4eMM1hnM +ZqDNAMpgncGEoBCQgUJgBlYGRgibgZmBNwPbt5riiqoiUQMMetgz873Pc/5IqMIlGoPb3SQlCQAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAsLD9+3IK/NzhfRmsPvi58eC4PsFSIwLbR6Ru78vbY5nq9N3PXsQLPj9A1rqc35dNofU3/t7j -D5F6yxSsH9/D3u6KYK0/VqWGfOOZ2/0vXr/E9igZYBCslcRq8xii3Sb8DSW3x/kxDAXB6nw5ZQ7V -+PteA39Hje1hrgvB6nS5Zzx4P+an7jP+nprb4+aMC8HqazlmWi+7iUO/FoJV4uwSBKvhOavN4/fc -M/1NS22P2yO6IFgNLrc0/5OzXGdVLQSr9KekIFgz5q3mnk3sM55VtRSscbnazRGsdpbDzHVwLBSr -t4a2x3jm+M3ujmD1PW9V+v239PeMUf7VLk/PhlT+Pr7I9Utf+b1zrvgef+6lQlBbC+gYrb/b7SHv -QVjaudIZYKtnvM60oJNgHSsOWVsN1t2cFrQfrCGVm2DvKVgfE/F/s3tCm8HaVY5V68H6mCsULWgs -WJuU/6LQNQQr5+1MIFiZXDINoVoMVo4Qm4SHRoJ1SPMnqIdK7yPyGt8eQ7s57/HV0BCWD9bcoeD3 -j6tpNVgfoZkbrcGuCssG6zQzVofK72NOsOYOfcf3+4vdFcFaJljbFP9U8MdY9RKs0Zwr+C+GhgjW -MsG6ZIxVT8Gae6ZlAh7BqhysXcp/Q3VPwRrn7v7pLAv6CFZ07ur/PQiwp2ClNO/TUXNZCFalYG2C -c1fjz+wXfh85gzVnaHiy2yJYdYI1ZB4K9hys6NDwbliIYNUJVuR6pK88E77HYM0ZGg52XQSrbLD2 -wYNz38j7KBGs6NDQ0xwQrMLBOgUPzLTyYI1B/neK3fYDTdg+DpDSy7VisCJnEsMTBCsF57IMC2km -VpFnrbf6WJaUYp8O3tPXnwvfe7CG5NNCOrRrPFbRYEXmry6NDW1LBmsTGBb6tBCxKhSsyLPaD08U -rOiw0DwWYlUgWFPnr6YMB9cSrMjv97VgLBKreyexigZraoxvFWLSWrAOgWGheSzEqkCwpr7GyxMG -KzKP9eIQQqzyHujbVP4j+zUEKzKP5ekNVLHvNFZvwTCXnHBfU7B+n/j7fRUYYpX5QN8HXmP3pMGa -+kRSt+ggVpkP9CHwGtsnDdY5uRaLRgwriFXkQD8KVrHXECzEqoFgbSrEZOprnBsM1ptgkdsxU6zO -nb7/oUJMIs+V2k98jakXv0a+ANWQELFaWCQmUyfd94XXaeTpoJEJ8amT7r4VGrHKLBKTqWc/m+C6 -/WoYI8PBa2Bd/ZZ8SshCsXoTqz9ErsM6Bl4nci/m+DPbQtvyFHgPU8/iXIdFM7E6rWR9bCq99/OM -dT18Eto5X3r6S2A9uTUHsWrA1KHxJfAahwzr/fVx1jJ3KB8Zqu0CwTo75Fg6VscVrpupj2K+B8/k -WnlEz6nS/vMPhx0Rp0w7+rDS9RMZrm0DrzM0EKsxtpEH6/2Wyg87IUus7mndXyoQGa5FhztLn2VF -zpDHs8N/Jddg0eCZw7PF6uOAjKyXWnHMtXzlS18/+5unzl/5hJBJXsSq+JnPLvha57TMUDD690aG -gyeHIF89W8gVq8MTrbdIRC4zXu9SOVbRbbkNDAfNXyFWDc5jRSffP1wrxWrOWXJkf3KFO2JVQeT6 -psvM1zynNs+s5pxdGQ7yl7G6iNVs0eDvZr7usUCsrjPP/ubE1Nd7IVYVbFP8CvSl5tF+Fqoc2zE6 -RPbFE4hVRdF5pVx3AGwfQ6rbxO13fcxVbTLtV7fgenB1O2JV0X7GutwV2MbDI2AvjyjdHtv9/Pj3 -faZI5TjTM9leyO6xoXtecsVqZ3f4k+jV6K8F4lHbnPm0wa7T1mn/mhaxyj9/E/ka+5YMKf4kiDHW -3+w6glVi+cqD4ewj8ya+exx1zHlsjbkrwRKrBW3T/E/repq3mxMrnwwKVrGbX8Xq685pmZuNa89Z -zYnV+LO/2lUES6yWl+Ohe68NzxXmuGD1ZDcRLLFqa25nbU9qnfs8+O+Hghu7iGC18Awk/ueQ1vEf -xybl+3o3nwoKllg17CXjdlniyxn2KX71+s/mrdwvKFhi1bhbynsdXI07DLaZY7vWLyIRLLFanU3m -aNW49GGfed862Q0EK/djRcSqj2j1FiyxEiyxeuJo9RSsk2hMW4YFg3VNfdwQLVZ9RauHYN3NWf3X -koW/pvXfG0YdLysOlkcPCRYrFL1ivOVgudhYsFixyNMOWg3W2fSCYLF+Le5XkWDtbUrBQrAES7AE -C8ESLMESLAQLwUKwBEuwBAvBEizBEiwEC8FCsARLsAQLwRIswQLBEizBQrAES7AEC8ESLMECwRIs -wUKwBEuwBAvBEizBAsESLMFCsARLsAQLwRIswQLBEizBQrAES7AEC8ESrJLBek3Tv3z1s+UuWAiW -YJUM1tJfAQ+CJViChWAJlmAJFoIlWIIFgiVYgoVgCZZgCRaCJViCBYIlWIKFYAmWYAkWgiVYggWC -JViChWAJVqfBci8hgiVY3QTrtPIdC8ESLMESLARLsAQLBEuwBAvBEizBEiwES7AECwRLsAQLwRIs -wRIsBEuwBAvBEizBEiwES7AES7AQLMESLARLsARLsBAswRIswUKwBEuwECzBEizBQrAES7AEC8ES -LMFCsARLsAQLwRIswRIsBAvBQrAES7AEC8ESLMESLAQLwUKwBKu3jTtlGRbcsW6Pjdj6gmAJlh2r -m8WZoGAJlh1LtBAsBEu0BEuwePpgiZZgCZZgdbfcbGrBEizBEi0EC8EqGK2NzS5YgiVYooVgIVii -JViCxTMHa1xeRUuwBEuwRAvBQrAKLff3ZWdXECzBat8u9XEz82fL4TEfJVqCJVh0YSNagiVYiBaC -BQ0dKKIlWIKFaNkGggW1o2WHFSzoJlp2WsGCai6iJViCRU9eREuwBAvRQrCg8WgNVqVggWgJlmDB -D86iJViChWghWFDIKVO0jlalYIFoCZZggWgJlmDRs2OmaJ2sSsGCGgbREizBoieRnXrty1WwQLQE -S7BAtARLsBAtwRIsEC3BEiwQLcESLJ7STrAEC0RLsAQLCkbrLliCBaIlWIIFoiVYgsWz2z5JtAQL -VhSt08qXIbBehgqvUWNbbe3iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAufwHgkT/4n33ZBIAAAAASUVORK5CYII= +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA3Kz9S3T+7xN9/5Oz/IYA35x9p +T5Cz9nfS2yH1jx/5v98zquqP2t90mz83cDeq/viAPGp+/ZG/aB/W9xf9+ZD6mFFVscf711D+NQp4 +UlXxw/FIsQ/6Hore7tz+qTjnx4yqij189jyAgUOrih+IR8nqw8oOibO+vpv6LKOqYo+vYl/fyYqA +Z1EVPwiPkKp17KCqP/KqOE+WUVWxRxbedeFpVMUPwD3HHtHOWuP9/VT22NfLqKrY49LYnd9JwAOr +ihv/nmMHzAo/aezR76uMqoo9RlMFPKiquOHvNSveWdldlfW55q7qY0ZVxR4zscPWDl3goVTFzX6P +sQ/otd85W3VX9TGjqmKPa7LiEAcOoypu8nuL3Q1dezdRtO6u6mNGVcUe16YJeBBVcYPfW+zXWa5x +7Yv1XkZVxR4rYneO/y7gzlXFzX1PufaRpyr2XJlRVbHHqtih/DcBd+ys+Ht3q/Oq+OHJ8rH+q9hh +NfveyupeFOddnVFVscfK2KH1swB8qSp+cLLszQ47P+ceGVUVe+wR7rSAL1TFD0yWPdk7Kz/fXhlV +FXvsEbvT4p0W8Imq+IHJspez9nvB/llGVcUee8VexP+bAPxJVfywZNmD/ejDLQ8ry6iq2GPPNHFo +AX9SFT8oWVazl+yrfyj0koyqij32zqpfZwIeQlX8kGRZ7TfFOUYzc+CNqoo9ssz8uXx4CQ/8rip+ +QLKsZD9Y6vuPxB4jz7rN11EVe2Sxl+ftk38+klfxaAhsquIHJMsq1z4Kvh9Wpn7y77OMqoo9srwf +NO2TfzeSswBMfQhXqYq9L40dVh9/7ad+MibLqKrYI8vHO6NrHn3t6/2rgCdXFT8cWVY4af67gv6w +MlVxXJZRVbFHFv8o9/Lh343GDjzfD3gqVfGDkWWF2buNzw4rUxXHZhlVFXtk+eyAmf3aLbyAx1Or +ih+KLNeyn7nyPS/Nr/pcVRybZVRV7JHlswPL3t39t+LYS8JdFp5aVfxQZLlWVex5SewF/Ve/UF0V +x2cZVRV7ZPnqcLnmu6O8y8LTqoofiCzXsANn5t2V1RR9rSrWZBlVFXtk+erAMrOPhlXAk6qKH4gs +1zgr9rskXz0KvquKNVlGVcUeWXoH1uyjoR3evb7Aw6qKH4gs12iK/bL0HgXfVcW6LKOqYo8s2cEy ++2h4FvCEquKHIcusotjrklhdpirWZRlVFXtkyQ4sM/NoaIf4Jb2Bh1IVPwxZZlXFXlnsg3mJqlib +ZVRV7JHlkkOl/Mj/KtZm4b+ZhcM46e0Dsnea4gchy6yZO4mzFV6gKtZmGVUVe2S55MAyM++yzlYI +fLeT5v5b67fKjJnvDtr47N3Vu6pYn2VUVeyR5dID66xYm6UK+Gb2Q5WvipvzSJlRFPtksTuyS1XF ++iyjqmKPLJceWHYwjz4W8t1CfKt7OKwsM35R7JPls1/B+UpVrM8yqir2yDJyoMw8FvIeC9/iXg4r +y4zR91cjj4OmKvbIMqoq9sgycmBVxfosP1shcEt2WI2+3/nOzHhV7NPLpd8dfFcVe2QZVRV7ZBk5 +sOyOcvSxsFohcCv3dlhZZvgeWV7eyi5WFXtkGVUVe2QZObBm3mO9bJXADdzjYWUZdVLskeWsMVWx +R5ZRVbFHlpEDy4y+x7JH7dE5gGFF93lYWUbZwex7ZBl54W6qYo8so6pijyyjh8l/KfbopWl8DmBI +0f0eVpZRRbFHFjvkRlTFHllGVcUeWUYPkxfFHr3wKzrYVdF9H1aWUWfFHllOGlMVe2QZVRV7ZBk9 +TH5V7NELP4uF3Zx1/4eVZdTMz2CdrHBAVeyRZVRV7JFl9DCpij164cDCLs56jMPKMmrmwBr5GSxT +FXtkGZ1j9O7HMnqYVMUeWUbnALrsA7visLIPzD06K34tWUYPE3tJ73tkKVY4wL4j53v08qrxw2T0 +UOQOC0s9+2FlZg6T0ZfuRbFHlpE1tQN09EcOZl6Ivyj26eVV43MAn+KwelMUv6YsVjPCDhTf45Jc +ejCO3vlY2lY55j8V+/QycygCwcx7m89y74eVsUPBf11ZbP1GvSr2yWI1J/XNXsuqcaN3cU0cWLjS +7Ab3qXoMM3c/1QoHzdwFveesyA7a0fdWH/NXjbF14ldzcFMcVp8bfTS2g2LUzLsyn1e93bWM/nl9 +Zh7V7IAcPbAe4Q4c32TVYTXzOHR0TfHr7MUOjFF2h/Kq2Os7UjVuZv/8x1YJDKqKm2kmZz2mmce1 +kxUOOiv2uXXssJ35D+uNvnC3jD52AksOK9vkZz2umce12cedV8Vet8zMHbLdHf6PYq9ebM+MPnbi +yc3cOfg8+mFlZl68zzwWmpnDcVXs3ZV9raPszzz6/qqJAwsDXhQ30Wie4bB696r49WexF9EzVvxF +Mhq7lrN/3pnHwWqFQMb+Bn1R3ECjsQ1uf7M+i5lD5Letco7V+n575ZpredL446CF91dIcVjNm31U +O2leU+y3OtfeJb8o9sxij548DqKLw+p69rX79chyzV2WmbmzuzTXXsuT5u6uqoAOO6xWPGJcu8Hv +3YvimlyS2XdD735R7Hltmq67+zOzh+nPVgx8hsNqnZPiulySV60xe0B8TNOa6zj7iGx7kcdBfIrD +ar2muD6XxO6SVjjp7ZHK3gP5Ob6KXb+mt3dVtieuZT1G5v8Yfrodn+Kw2kdRXKNLc+2joWfX+Ky3 +A+xFb4eSHSR23e1uzP55+X3cSrN3evZn4+5qB7axyp1n1WG1+kP2CF4V1+qSWN3qw+PW7E7Rf12X +5izsoiku9rOFw+prs+9vLHaXca/OmvtOqeVVc7+jiAs0xQV/przq+u8gPbqmuG6Xxmrvjf3lNXtY +WXh3tSPbUH7BnyWv4rC6xElx7UbSdD+Krjus7PUE7652ZJvJL/ozxB5XTsKlZl8+f1zvo7/TsndW +1xxWVvs3YVdNceEfPRxW4+yweVVcy5FY/VHfFV7zgv09VdhdU1z4Rw6H1Tw7bPx6zsQOh6Owr2nF +d5mtx9HvIB9CU1z8R809PJYc3TXfNfyY7/6Lw/bBtY+A73kV3xW8maZ4AR4xHFbrvCiu72zs3dit +Fc3/9LqPHXj8vuANNcWL8GjhsFpv1QfeYh96u3Pb20lrD1vLkR5vn0JTvAiPFA6rfdiarjy0mvZX +FOe9JlW4uaZ4IR4lTRxWe1p5aDXtryjOO5sqfIumeDEeIU0cVrew6tBq2l9RnHcmVU+uDea8Va1h +/T5ejCw2vtxBOKxuZ8WhZftqb0Vx3pHYuzbeWSkuTJa6Va3RFPv3YuOBz7wo7pdLc4t9VRTnvTS3 ++sbAXfCLk6VuVWs0xf692HjgK3YH4vfMJbnFviqK816S7/6ZscPxC5SlblVrNMX+vdh4oOcnjf9A +5i32VVGcN4v9nBivFxy/SFnqVrVGU+zfi40HMkfcV0Vx3ixWA8cvUpa6Va3RFPv3YuOBzBH3VVGc +N4vVwPGLlKVuVWs0xf692Hggc8R9VRTnzWI1cPwiZalb1RpNsX8vNh7IHHFfFcV5s1gNHL9IWepW +tUZT7N+LjQcyR9xXRXHeLFYDxy9SlrpVrdEU+/di44HMEfdVUZw3i9XA8YuUpW5VazTF/r3YeCBz +xH1VFOfNYjVw/CJlqVvVGk2xfy82HsgccV8VxXmzWA0cv0hZ6la1RlPs34uNBzJH3FdFcd4sVgPH +L1KWulWt0RT792LjgcwR91VRnDeL1cDxi5SlblVrNMX+vdh4IHPEfVUU581iNXD8ImWpW9UaTbF/ +LzYeyBxxXxXFebNYDRy/SFnqVrVGU+zfi40HMkfcV0Vx3ixWA8cvUpa6Va3RFPv3YuOBzBH3VVGc +N4vVwPGLlKVuVWs0xf692Hggc8R9VRTnzWI1cPwiZalb1RpNsX8vNh7IHHFfFcV5s1gNHL9IWepW +tUZT7N+LjQcyR9xXRXHeLFYDxy9SlrpVrdEU+/di44HMEfdVUZw3i9XA8YuUpW5VazTF/r3YeCBz +xH1VFOfNYjVw/CJlqVvVGk2xfy82HsgccV8VxXmzWA0cv0hZ6la1RlPs34uNBzJH3FdFcd4sVgPH +L1KWV71d4BU54v/dBPfP9onfO73cYl8VxXmzWA0cv0hHThOQs33i904vt9hXRXHeLFYDxy/SkdME +5Gyf+L3Tyy32VVGcN4vVwPGLdOQ0ATnbJ37v9HKLfVUU581iNXD8Ih05TUDO9onfO73cYl8VxXmz +WA0cv0hHThOQs33i904vt9hXRXHeLFYDxy/SkdME5Gyf+L3Tyy32VVGcN4vVwPGLdOQ0ATnbJ37v +9HKLfVUU581iNXD8Ih05TUDO9onfO73cYl8VxXmzWA0cv0hHThOQs33i904vt9hXRXHeLFYDxy/S +kdME5Gyf+L3Tyy32VVGcN4vVwPGLdOQ0ATnbJ37v9HKLfVUU581iNXD8ImV51dsFXhF+lxB7sH3i +904vt9hXRXHeLFYDxy9SlrpVrdEU+/di44HMEfdVUZw3i9XA8YuUpW5VazTF/r3YeCBzxH1VFOfN +YjVw/CJlqVvVGk2xfy82HsgccV8VxXmzWA0cv0hZ6la1RlPs34uNBzJH3FdFcd4sVgPHL1KWulWt +0RT792LjgcwR91VRnDeL1cDxi5SlblVrNMX+vdh4IHPEfVUU581iNXD8ImWpW9UaTbF/LzYeyBxx +XxXFebNYDRy/SFnqVrVGU+zfi40HMkfcV0Vx3ixWA8cvUpa6Va3RFPv3YuOBzBH3VVGcN4vVwPGL +lKVuVWs0xf692Hggc8R9VRTnzWI1cPwiZalb1RpNsX8vNh7IHHFfFcV5s1gNHL9IWepWtUZT7N+L +jQcyR9xXRXHeLFYDxy9SlrpVrdEU+/di44HMEfdVUZw3i9XA8YuUpW5VazTF/r3YeCBzxH1VFOfN +YjVw/CJlqVvVGk2xfy82HsgccV8VxXmzWA0cv0hZ6la1RlPs34uNBzJH3FdFcd4sVgPHL1KWulWt +0RT792LjgcwR91VRnDeL1cDxi5SlblVrNMX+vdh4IHPEfVUU581iNXD8ImWpW9UaTbF/LzYeyBxx +XxXFebNYDRy/SFnqVrVGU+zfi40HMkfcV0Vx3ixWA8cvUpa6Va3RFPv3YuOBzBH3VVGcN4vVwPGL +lKVuVWs0xf692Hggc8R9VRTnzWI1cPwiZalb1RpNsX8vNh7IHHFfFcV5s1gNHL9IWepWtUZT7N+L +jQcyR9xXRXHeLFYDxy7WSM5b1RrW7+MFyvIPvV3Eowffa3Rf2fi9FcV5s1gNDsQ2ir9Ij5AmfCdb +f39NernF9SqK82axGhyIbRR/kR4lTfgutvb+evRyi2tVFOfNYjU4ENso/iI9UprwHWzd/bXo5RbX +qSjOm8VqcCC2UfxFerQ04dZszf116OUW16gozpvFanAgtlH8RXrE2DcLcDtN8Rr0YuP3VhTnzWI1 +OBDbKP4iPWo4tG6nKa5/LzZ+b0Vx3ixWgwOxjeIv0iPHDq2/CHtrimvfi43fW1GcN4vV4EBso/iL +9Ojh0NpfU1z3Xmz83orivFmsBgdiG8VfpGcIh9a+muKa92Lj91YU581iNTgQ2yj+Ij1LXsWhtZem +uN692Pi9FcV5s1gNDsQ2ir9Iz5RXcWjtoSmudS82fm9Fcd4sVoMDsY3iL9Kz5Z8/8pOwUlNc515s +/N6K4rxZrAYHYh/Ucsf5u97eR/mNNhoOrbWa4hr3YuP3VhTnzWI1wFL2SMehdSxNcX17sfF7K4rz +ZrEaYDkOrWNpimvbi43fW1GcN4vVALuxje833Wg4tK7XFNe1Fxu/t6I4bxarAXZlm99vvNFwaF2n +Ka5pLzZ+b0Vx3ixWA+zOPgB+843GDq0izGiK69mLjd9bUZw3i9UAN2EfAr8BZ1KEUU1xHXux8Xsr +ivNmsRrgZn5T3IQzKcKIpriGvdj4vRXFebNYDXBTL4obcSZFuFRTXL9ebPzeiuK8WawGuLkXxc04 +kyJcoimuXS82fm9Fcd4sVgN8ixfFDTmTs5BpiuvWi43fW1GcN4vVAN/mRXFTzuQs9DTFNevFxu+t +KM6bxWqAb/Wr4sacyVn4SlNcr15s/N6K4rxZrAb4dhxa+2qKa9WLjd9bUZw3i9UAh1AVN+hMfhG8 +prhOvdj4vRXFebNYDXAYVXGTzoRD68+a4hr1YuP3VhTnzWI1wKFUxY06Ew6tPzTF9enFxu+tKM6b +xWqAw7HDxm/WmVTBNMW16cXG760ozpvFaoBDOitu2JlUoSmuSy82fm9Fcd4sVgMcVlHctM+epnFW +4/v0MjPHqKI4bxarAQ6tKG7cZ07TOKvxfXqZmWNUUZw3i9UAh1cUN++zpmmc1fg+vczMMaoozpvF +aoC7UBQ38DOmaZzV+D69zMwxqijOm8VqgLtRFDfxs6VpnNX4Pr3MzDGqKM6bxWqAu1IUN/IzpWmc +1fg+vczMMaoozpvFaoC7Y/9DCr+ZnyVN46zG9+llZo5RRXHeLFYD3KVnPbSaxlmN79PLzByjiuK8 +WawGuFt2aNn/Tcdv7EdO0zir8X16mZljVFGcN4vVAHft2Q6tpnFW4/v0MjPHqKI4bxarAe7eMx1a +TeOsxvfpZWaOUUVx3ixWAzyEk57j0GoaZzW+Ty8zc4wqivNmsRrgYZz09svOj5yzxp0V+/Ry1v5O +ivNmOQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACL +/D+CRP/iMIGkLgAAAABJRU5ErkJggg== diff --git a/dse/network/examples/stub/functions/function.h b/dse/network/examples/stub/functions/function.h index 28de812..21c12a4 100644 --- a/dse/network/examples/stub/functions/function.h +++ b/dse/network/examples/stub/functions/function.h @@ -9,6 +9,14 @@ #include +/** +Example Network Functions +========================= + +Example implementation of Network Functions. +*/ + + typedef struct InstanceData { uint8_t position; // Annotation: position } InstanceData; diff --git a/dse/network/network.h b/dse/network/network.h index 5380e6f..1e23188 100644 --- a/dse/network/network.h +++ b/dse/network/network.h @@ -16,12 +16,22 @@ #include +/** +Network Model +============= + +The Network Model runs a Communication Stack which represents the connection +between Physical Signals and Network Messages. + +*/ + + /* Forward declarations. */ typedef struct NetworkMessage NetworkMessage; typedef struct NetworkFunction NetworkFunction; typedef struct MarshalItem MarshalItem; -/** +/* Message Library --------------- Definition of interface for Network messages which are loaded from @@ -54,7 +64,7 @@ typedef int (*PackFunc)(uint8_t*, const void*, size_t); typedef int (*UnpackFunc)(void*, const uint8_t*, size_t); -/** +/* Function Library ---------------- Definition of interface for Functions (applied to the encode/decode message