From 39328bfd75d7ea330abff0a3ae5f279c03d3c9a3 Mon Sep 17 00:00:00 2001 From: Adrian Del Grosso <10929341+ad3154@users.noreply.github.com> Date: Sun, 28 May 2023 11:08:33 -0600 Subject: [PATCH] [Meta]: Update project name, URL, and sonar organization name Updated most references to Isobus++ to be AgIsoStack++ --- CMakeLists.txt | 5 ++-- CONTRIBUTING.md | 6 ++-- README.md | 6 ++-- docs/images/wideLogoTransparent.png | Bin 61614 -> 41530 bytes doxyfile | 2 +- examples/README.md | 4 +-- examples/diagnostic_protocol/main.cpp | 4 +-- examples/pgn_requests/README.md | 2 +- .../section_control_implement_sim.cpp | 2 +- .../isobus/isobus_task_controller_client.hpp | 2 +- library.json | 4 +-- sonar-project.properties | 2 +- sphinx/source/API Documentation.rst | 4 +-- sphinx/source/Concepts.rst | 4 +-- sphinx/source/FAQ.rst | 4 +-- sphinx/source/Installation.rst | 20 +++++++------- sphinx/source/Tutorials/Debug Logging.rst | 2 +- .../Tutorials/The ISOBUS Hello World.rst | 8 +++--- sphinx/source/Tutorials/Transport Layer.rst | 2 +- .../Tutorials/Virtual Terminal Basics.rst | 10 +++---- sphinx/source/index.rst | 4 +-- test/ddop_tests.cpp | 26 +++++++++--------- test/tc_client_tests.cpp | 2 +- 23 files changed, 63 insertions(+), 62 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f6bac415..132e4f62 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -173,7 +173,8 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/isobusConfig.cmake" set(CPACK_PACKAGE_CONTACT "delgrossoengineering@protonmail.com") set(CPACK_DEBIAN_FILENAME DEB-DEFAULT) -set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/ad3154/Isobus-plus-plus") -set(CPACK_PACKAGE_VENDOR "https://github.com/ad3154/Isobus-plus-plus") +set(CPACK_DEBIAN_PACKAGE_HOMEPAGE + "https://github.com/Open-Agriculture/AgIsoStack-plus-plus") +set(CPACK_PACKAGE_VENDOR "Open-Agriculture") set(CPACK_COMPONENTS_GROUPING ALL_COMPONENTS_IN_ONE) include(CPack) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d7455217..e45591e1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# Contributing to ISOBUS++ +# Contributing to AgIsoStack++ -We warmly welcome you to Isobus++! Contributing to our open source repository implementing the ISOBUS (ISO11783) standard in the agricultural industry can involve anything from adding new features, improving existing code, fixing bugs, or even just helping to test and document the project. We greatly appreciate any contributions you can make to help drive progress and innovation in this field. Thank you for your interest and support! +We warmly welcome you to AgIsoStack++! Contributing to our open source repository implementing the ISOBUS (ISO11783) standard in the agricultural industry can involve anything from adding new features, improving existing code, fixing bugs, or even just helping to test and document the project. We greatly appreciate any contributions you can make to help drive progress and innovation in this field. Thank you for your interest and support! We accept all public contributions that adhere to our code of conduct. Additionally, for PR's we require the pass of all automated pre-merge checks, and a manual code review by a repository maintainer to ensure that our high code quality and project standards are maintained. @@ -60,7 +60,7 @@ VS Code can be installed via the snap store, or by downloading it from [Microsof Clone the repo: ``` -git clone https://github.com/ad3154/Isobus-plus-plus.git +git clone https://github.com/Open-Agriculture/AgIsoStack-plus-plus.git ``` Then, open it in Code by clicking `File -> Open Folder`. diff --git a/README.md b/README.md index 5f25e17f..2d6d74c1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![ISOBUS++Logo](docs/images/wideLogoTransparent.png) +![AgIsoStack++Logo](docs/images/wideLogoTransparent.png) ![Features](docs/images/features.png) @@ -6,7 +6,7 @@ ## About This Library -Isobus++ is an MIT licensed hardware agnostic ISOBUS (ISO11783) and SAE J1939 CAN stack written in C++. +AgIsoStack++ (Formerly Isobus++) is an MIT licensed hardware agnostic ISOBUS (ISO11783) and SAE J1939 CAN stack written in C++. The library transparently supports the entire ISOBUS/J1939 transport layer, automatic address claiming, and many of the high level ISOBUS protocols, such as: @@ -38,7 +38,7 @@ A default CAN driver plug-in will be selected for you based on your OS, but when Or specify multiple using a semicolon separated list: `-DCAN_DRIVER=";"` -If your target hardware is not listed above, you can easily integrate your own hardware by [implementing a few simple functions](https://github.com/ad3154/ISO11783-CAN-Stack/tree/main/hardware_integration#writing-a-new-can-driver-for-the-stack). +If your target hardware is not listed above, you can easily integrate your own hardware by [implementing a few simple functions](https://github.com/Open-Agriculture/AgIsoStack-plus-plus/tree/main/hardware_integration#writing-a-new-can-driver-for-the-stack). ## Examples diff --git a/docs/images/wideLogoTransparent.png b/docs/images/wideLogoTransparent.png index e5d379e8dc2fb142590da747f5f70bb8335d371c..87032521b1ded1d77f87f78f70d54b302d325568 100644 GIT binary patch literal 41530 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 literal 61614 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 z

5>A7Oq2uyY0PTKar@Ow^7TLRox5RODsAT@ukjz}rCH_Bh|-kq;qtBgU_?>;$eyW}2*n6ZQk{ zRv@y+iPx|Pb&tt4b?5kPLOwF%^U(RuU|9g68|F?chb;`Y!RTPl&fd6VY&>3ZKA*N! zjJK`fJU6=LxhD{!KYt$ONW6sCG z7oqW80Lw6Xd&q2q)?wYbVOyYs!Om`M+i1<%nWjgrMAnxO8By4cknJ+GQ}{fAokt=$ zca8Td<~~7eul~^Ln)=GDz0nIbjxpUZ%@jNs2e4bDV$tr%@WNpBC$|Jly{amUxcKJd7k8L9PbP0?eVMq}H z2XE@O)M_wQkqt#6LJkb; z5^7C)J?atSpoECj9~8fn>@b`IGQ2+5UC84nW*p)WUE4BY$X{A2 zz7gYeXqrJ(4c>QS+O%`oc;wMs>H}1#ijgW+L(ruXOdfj580en>$uA*G>si1vSA4k^WK>?iU{cMaGn4JR-4w%t`Ptd&u{vq%V_?x&@6fFuoE=u^X*M^MvK(qIhY$T-67Jn@eO)Y_p7~RdQsM_J&~}{ z9bV_P>0`OHxwd`Ug?tE12c{3cn!PN-VGVWWefO5R=q;YWfq2v0b>WbhHik)!xz2ko z;d9_0!~V>}VJpsb=b*+vB{32>JNr*TJpAoe-0;scSln3aoPI7dfEhzdImKz3algzN z1WJeq1R>Ez>lQdqG-Wd6hbqqJt-8JiiDB0ftzFLH7I5MZKX=EuJfo5p*^qY5k{tdJUe)!0G2^?{oX^ z{B7EKR5sQ6r;g!{;_2{?*!h%eIQowB_?M23Ij>7&ttgexO)a$(Q_dy{ zBynySGLfU*8Hmx_X}R;2NG4dB5Q+8J6Eb{?Jg47U-q|S)t{MhnHV_BmtNlp%9PXbH z*ka0)zak#JiA3_u)s~GF9E}C1ukk3*sz&tPmejJ#sHi%3t)Gb(o{#63Q!(q)RbG35 zMAgrUMX$nq7u>c3-x;&6EBe|&hTJveVGWjp36Yd3A=0$Rl_CWpJ6O;-GmW`3ds>>z zA~NlK{tNtfP$^w2$1uMowxM_ehvO7B@@l_yxM=!l<~7GYOdm_4_*%XqxipoB=ypXQyN8|eo5$1Bg~vz9;E;Zxxe;E_S4 z^r{@AyIe)qc`jJxpM_bqXU_8&7iPeg{us04aEggXuO`y^4|NHSXkTK{iztb{hy~Ly z#x=NfN%Uf3g{P7Fs0OnU#G-4zh1;zwR{J{fg4>AoJdu$-wjxpWbK=pFbu+Wr@fbf@ zkqpT+k-XfTel~DTyW6xE7KI8z)|?mGH`032Zc5dbN`};(TGqThd$XHeigDA&Hcv8S zMaO$I_Xpni1EHQWo}Xu7YnnWLOw%VrR+P;J#c zb0-_CfC{eQ!jho4;Jy{K?pEs(G655C`C+Sql7LIK{l@ldTZK$eYrmCRg#<`Klq%v{ z6|}A>u8;&l6h%>7*knuQKIiwxgiTR_+{xUT+|TPZBur+W``l+a%jcfwoIp6XdOhFC zqjvnL8v-&UK!BgYmIx8iKBPj44rL(@e_&$mQveLko<+#~3G_@K_xg2&XR(BEH%2Jz zdo)(NB7pKXP=VF%4C{M3t~~-H7vS0(FeZ$01jby)x-N}m0m3K>vrk543XbMtr5@oe zR2E{~zo1SgYA!_Vg+v`F%zhK$U9dM|i>vr zbthBn76M@kvI~G)5nqobz;L0v&qU)C`W-welDRgJ&Mx`gC&Bbs_{pr?F|HkNYd{WdU&F0l+0i- zH{&di=VzSFz8>%YeuKY3%2fBOI$lY{sqnzfcINRuL zHJM%8?r1o|zredA8e%vTlAjO}%afG}&YvT~pH%t1SM4e6JNPboPQ5OO5^1eaWt|9Z zn%j=CtyeeXmvLnxuDgB>>AO5%Auh@USbFK>kK z21*&_wL6xutm3`3!0)-V_hgJS3cpuP*>UT}*f3xrtBwaBo#b{5P+ZIU*e6k=H%o@;it; za3gDydCsGT>51+`GcxFafjv_cV)7o`Ivk4K4NAe;WT@htSVlLdQubz{r z(-FB5rqmQQ-zFJW#%>!DHTKE4USha^J9ZtAo6`+wpG3nr7qwR~srHN=CPTKy1{inBi%AmLmfR*@`th z9_a?yFE7Fw!H5P3kX(onB3br;r0A{c^H{x<1G}C@MSb%Pl?UtI!g2nLa1tU9LK0!=|_28!8Y$ts+~ba-Nl&b@raItmd(T~pkg_g4-J1~ou{B+_p&O(5NU+{g9610ZLj`~%^aEMEQ<;of`y>^BRt z|IMY@d;R2RqV8PaHqiI6(Se{PzycqR!+ekkPUtksYdcXaGD@OS-d`XlOm|+I6(;xPcYxH_(>`N@^Q+sXw_n>12k|kcLdKnWTlXXf$nb z-8LX?Nz?YYv*iVdc@@ zdj;WK&u&rZ1&K`<8z4c1h~+~y9&Z`L|K*S4uFBCo5{z(w0LegzsO;y%zV*e@m(68E zWRt^J%B1?rA39;V4q5ZA0{8Z&cmA=(a5MKaG$)@Z|HqWt*i)#2er>6EZ!HhZdy~RG z*MPaV=>q!$`(sS}4$#Ds!PcWz5wj6tIml;N_jA;I#^l=gozbmXyb5@#=@rA}z1w4* zgNW)r7_&Rj9<^y0aZqkan$`Tp5mB<{r~a;0osIB0m@mLCWAcJ65l!WF!@OB1&G~L^ z1JFQo!5A%Jz+MP@qp~lCebDA7Lff%%clIGDy_?kdY8~^s zwZ}zpJa!f@4@Wpbl}V{mT6G7U$3wi*kz$zR*ZZuvo=?IN@7gn#Lm?>%5#K3ScR${A zyo~u0f?QFp6dN4gOOJ!iuZHXLBAjFl<(1d-UNF)D0{EE_LH9|5D9$wqcVTrNh1p|3 zjs{LguwV`FPSY!fg6wlp{wE2Hv@K5+Yiius{3frD0lFCEBZMU=OPYRuN@Mg> zDnIzTRY|9bA8#NQ#`@Etti${7PUE`$QTE5u9i=;P0K$Py1gAH!c5h&Apf-{hvrCAE zBfJir5Qpabi13%ZQsx-toyyTvrs_E6=HjTOk9cG@i1L=7@7KU17JluCkhf$frE+ro z7dcTgh=y<}?;##VD=9q!DcL$PeH6>`N?9c0eMLEe{%YwTE@ig5yjpz&&jceLAb>9k z5!ojR`r01lR>XYYlDc!V$l0va^m!`kZU$~U17|a%5`N12@NUkcf9rQKByM{CvMwnTL2ph{WVi(jiS)?8}Y`b>IylBCtOJ zS}h#IY^&ZAB3mu60TNr7)xZSCf_Ce=;@ zrcv1U7|>kM^Fj9Xk#&AC!o?sERUi$_rno%==wG+{y~_^SkEnYsBEu=K?X;ymy^Ena zry%@|iM8+i;Ct)jUu5w+l-o9wKq^gykS5=hi}*Q_Y6CDI)mnsFFm)KM3-VC3AnsYT z5vXf=ZHvnfJrFmV4U&zLgW5w7)AJ|x>fXVCCO@i+cqUxRl?Z#pT|5~^bc`}0T*gDd z<5i>hI2FcFl>snCty{Pxi|u=Xow_(kaNf3*l6hi5TsKm43MP zWPV_g>dPP}qFjt}F@-tvLEb~`w;&gyECF4Lm=)L!y^)Mc;K-z2!Qz*Q3Rw&KF3P*0 z?_uQqrewAO{E7$OUkoe;9^d?4LBF=x#zPV9ha>$^8M4(J?-LAKioh@p<(d}MQy^W1@homAzzMfdZ249*>E+31B ziIPnlxwZLmlFMw;w z-8YLi9gk$v{Fj3PN)1$v;-PREr=l&M&*21w6T%UesPcHnc04}eD%K_2_!-0AUd0o7 zUG6e|dYMn~=(vkf_JJgFeAK^BulLMk=~rIHi8|~7{wL`I#0R^lG4ZQtixMK6P2~cauJV1H$kUj$*E8{BZ^@1!y^ban`aP3s&)@0qPW+&rpQ=S) z(Dxcd|JQ$Bt=))7>srAo@nG}5M)ehtS8;f4ySZ3=iu3QFeLIKFs&sUP-7s_%O9zAw zs5&v z7TY-CQW_B&fb}RFfb}A*1J*07Raj$$wQ5=87*@NMRU)j4!pcryJCDvOvu zXdHJL!*vOEv@et>7v@KJ*9cEfxt^!+`IA9Wx_EWU-oWytP&Jn2o~c(G|NJ%HE>Twc zx_`n~;0+;Sgxvz^*t$_w#DDW5lnWFlbX^+oSUhr{majOXK3FOX|zjeT(dm(M7Rkh z144Ybd~dAnL&!M>)nea9VTfsHbrB*4F9?x!h`xw5FQL4|Q`TwZhj1mPca_$rsYV7gaa0gdm(WKr=CIG>?QMbOA0+xWf&HxyoVT@%%X9~3rF|e715_9BV19(o z3g`KtJICU1Y<`5_isA7_%gmZ0zV)Aw>`d>7?%C}a;wV;z zOA|Bp2p!nfqofI1FF#I*h;;OYTOo1{2xKvy!knKP!I_lT6>RrU1^wD0(b2&5pi`PA z>jnz44<_o4{mGmos@D;c(+PE8o9i!L9`oKD)8xVV7>@iASK9#Rv>L6YyL@EkO;l%t zyg)_mOMbYOVI^d)?ZCbv*hgU>fxVh4o9uGmkAZ$(xBb$f@O))A=$dsmWfLJh! z*~IWf)VlAwHXfE`3t5&y~?hlpW_Ph?sL6~YdL2aV%7 zH9T5V#QT03uiOY(#K=x>oNb>+A8Zy$j(7c3=$KUESbZL`XIbM}#FEf1kct5SDvKx$ zmm&z~`a?Car&=y^;IjM(Gi{Vds&DYmQOl}g#w6mpm;a0Q>sB#i7iCAJ>W1Xc8I-88 z50`QTLL`~`{Nsd(YRC9jnDT@$nSqfS8f`t7_Bnx&d1!)Wf$D`k}kSNo}7#&8;NT7HDr z6dtZBO8gU*kfp5}4^_LH92Gr6!dllW)>)Iz>0a;W&ROLFbjCNvWTFnVSoV5BSfTKQaD|z=i}=6vG9M>l)qq;j^4o=P&o@Y zYfGeug2?$GV09CDk__`!fn&xt5g$(9vhV1H#-AnEAk_Nm)KijZ{RplPytHH7r)kB4b%7 zQR=7O%!**R0#p}M6CTeexQy~!(o2QofaCH?nS-IadQ{>nl&E;?Fs^Bz9QlG=hjpH% z@RsCqx<&j=B#U@h64;UvNW%cz=!VhUpBLd1f$Q-ZVWuz;7#J>NwpuEyi}@g!u>b*f zg%Cm8r{-g5eGIF!Fy{UgxuIoPTTOae1rNNx_-8*|Q{w^=lrk>M8H$pJa$L$yvvIZ) zAtJwr&@+_3+oFo$;ydY?>Cih0y&R#Z3kM5?nhf9oevk^nJ}CQ$aI!j}4unhjQiWO( zY8B>JkD@LZsn&_A>v=u*UakzS=V~>a?L)`!7?fkeWz058#nd7ew{#zjkmluiw7sD* zDM*1R4IUEL>B+P&+?J{4)*N`ZhKzT|!2+ZXs*8B$(lXwUT7HXgvj2=528b{qKf=sV z78Mo0O^#&M0Rs31A&g|D)Z=N@kyO-GZ1v8=6y*E{;V(&eH}g>b3-T-#^Pk@}D-MO) ziNHjLW%tB#I+#1-TIOZ1;r$>dN$Ww)HGBu$IXJ>>*D_QLIes*LEeyynrKMNsN>xzw@s!!k>>ck>JdcMyS?QQAi#DoIadDm4}(h?XoWxc z(j8x zcTir#x{smJc}!Wf+SB$Y)-41U0)Gc!*x^0VhD&huWQ-i2WD`Cem_d2%jF!0A;0On* zr5{3Hg}!RpD>h|;5Q#I^in0M=y(;U0jlc$!280HLMiHXc5*3K5U`^}*oKYSaP6$W1r={|Xq&Y~`OZp{Aszs#mOy}#~b2# zq1*@ui*lHO!xRp+up1^27`wi-Q4zjDS)s7Pz)BTXh-H;3t8rMZ%4$bgv)<*qcCfZ$ z3~PPRb-DZw+Szur9efu(r(VaxU^ZJ9rWNx9@WkLUF0z(Ee#=S8@{C>Lpr zi15!sH4GmdVb7^W+!fF3ID)4EB1c_Ch$P4(;@YNsP~Ko|QZ0V*_c0QShjSyi1ZX}? z>o|He_bM9a!sOf%riI#Zu^KLdEs67e0f*7yQue4SW@4}~0|eMULWqQtsJ|P4sTezv ziS_R{tEGy0ZvurB<{W`)AtGTQ(}$MG5~6k_x?v+j4><^<88m7GRvU3lKg9lu^19&w zT-s+i#@qq?fslEX#zrvCdenA6%xWCxF4WB=%Ah3h^2Z}Q#H9IgDJ3@iKGN2#<|u@t zF!WcYd%%4B%t}-~Q&=j7&#-)M;WI~B)~-FDPq->M5+eo(&|Fj(@hI?UxRlcrE)d~R zA327<&L2lc(ub|Ph?)`_fJ&fp&{%%u7|vJWVE=4lhK5T?t19N7fff%CV0(lJ_@59_oq_NK z9eX^&Jx_XTNR-#U4ZO{Wvu|SMlJgOJHkb>2bo1Q_$)k`3YQY5zO~+i6ruc>7O`qLl zRQ{2u1#z0{xtiF|sJlrp`qtL~J1Jfza>IA9H)$LzaLnrOI2tENp7ukXi2@%3A6w;P zF??c_PujKR(}45{5MT?cig^xrZg3fgTjf09G+$^8!`b-}zN;*1$`$1?8q!$jrQpnL zOB>)j-uqf zxhkCK69aE>IKtYhBBll!JV1aS5+Xixk984HkCk_EbPkj1UflAxI99`q5iK=MugfXO zITn$l!S(}s0|$ZlJ2Sjv+$7Bha}$|aRZN(>%Ik)Qj3dW&I1bBk2t8xAD8V@xK$VpO zix56kSZrZ&-_RYEk9!$I;(~6O7>m7rJc; zq-oX0$r@D_h+%>2@fz%HR?BwqpLKzUv%$BA+-hLaN3A!aN1#y0c4o_sJ4g2eT6(z$QXO588G`?F#F31GmOZB?;fpz8M{4GR#dK+>i#@tu`kHk>z(qY+LP;Y16aHytQywNMr+ z)T&Y!g8HeWSrUl500CMC)y2F9yp}(X-Bq{{VQ_*R+2O$N;$TpJi$_rdCY>%x;^1}h zO5LkvWiqX2HU1{8M7&!=R+5aY^6jM1DHwzwqH+|^1J7SHj_zrOUkm&?5&LDg4*Wl$ zG?D`&~c;VqDE+F6}*+$qN=R^pJx<&qD35fuktQIhFF-w<*Xz z1d&T9uPp(D!kqtQ!rWUZ%(;f4*)VB4q{y%Vnb_smQjqg!43DDrDaz|VU|7!KDA%G~ zoO~X&@oRSUCs12XMg7xWHX1JF2qTJmX!JeYR31+Q`yt2XaqxYkySpPlP*Do$d6-s>><@%z}?|e1_@lC!d@-sa&cZ> zDUVeb^Fc5h0RliM7FFOwsii!Q;W;1;F(W9CJ1oZc)-UjA23UfZj%9~){N8~-M z4n$-?5~(2n%%!jq!-2)&zbUl!ojb7%e|XDBua)??ODq= zfwXEq9HFZQ!>~i!tE!l4pn6DzGhDbB=+zPzHo^tK*kB3*1b`5jMqeH-5Y9z8ca!zC z?cdBfX!M-#sj&;eT)6pG)~t<^)nSvt)f4njn{!DhgV61|(mgA02W4 z*dDNOldm2d|vdYh8ca@flc1RiBP{cF9Gx-sIp-|ES>*w^d@8<3& zM~kFkn;N5 z0<{sq3rro&Twrc~gv%5P<9V%($_aRwGuaADjCUDE5Ayq5h0ExnN}7kV{nKPyuX}f3 ze_*lS`sGGB&`T4xLl?eGmN`*_@ngRV#?rPC|3(%09hF7A01V8FaE8Fm@w0D8>*#Vk zFgqCa0IeM%MAoO|oz>L1+dS!Q4M;OCZi}-9&ti1~lk5KDMPq~SqNm%)=?JHbc$zsr z888oFj<~#0Ihy)}^dP_2?xZ_8sAPj?1KB9O5$TAvTZj%xA<|>Bb*b-Qq#lt4SY3c+ zA(Lwt1!^KdoQ>ZHfd}&=3{v=QTue5k^h|S&Eu!^@ldm_ zt+|0Ol5L$vT@J*DgouczQKQQzUPkidno=_T*sTUQAV?q5d{j3@jD*X$9Hk&G7jZd) zfDj1~fDo$dNZHIsdJD+yt!6f@jkcVVs?$-K@ROB(c3i1TUMXi8!|R@`XI4b zfP|v5h-u+6=3p6x(9ct8ZOQhsy~(3k7LKq2JgX#es2`o}Ej|N%y;4i6EKEv$CG-NG z^`Rc^>ls<4e3E1~L|dPBtQP@1L)9oA$REp_I20*#_jskVH#rp z0zi4)-zn@f!C70%KKXJcsB8cxIrtWo7< zqrBSdJ6kjeN8sA7TXJYfst))UsJ@Nz4(Pi$=3OS%enEf$ z{xp0)2CmC57g^bTmCq9Z>oCZO`A%s3MYEemQ@Z19`)@^K_ZceVMF*_~U;#YQ8Z8@rcXYzt(8*}*) zeqoh!EF7~*tEVzlS!slq)bLW}^}OC97cK153zcILX)0&!_Su{$SOHR!ezKr%BIXUO zyoKw|Woq4$K+Fe7I^(yP+rtss(3C&PBd@+Icv$XLcn`cGL=Xl5zRb@vIKqLR<|;SI zncPeaIk_dYt10o%Lo|0I$9NgwY$5JPBppN4dbgnbTC)1IK#F^hiZQGmejmSEy_RP@ zv`^D=?`Dshk$e@5aDdi~5F)Em;684my!O7I{6zT&bASse>^m6r-V}1TU)svja`C#% zj8cKvzfsY=BL%tl($1{oJaITzVc(RmPp^EZ!i!>fvAQKlkiy>mz&RfDcreF-b|vM< zSXUwDHPpU_>Kxj%eS-;e8w0T(AQiCD<*p3JJ3>UEv!@QS!`td11s^WugsNh1%L98f za3^^wOP$rco2+Y6+H*88%QyWIPV%xnYvP}~D~fj&Jyh7oZ`FVD$9bA>C&2eG;VK&Q zBV4QSH_sYfPiF`SkpQh5A<&gc{D}U3()bJis{M9{zfq}GR+9h#AOJ~3K~z3}D#QEN zuyOs(D5Fwf4!4-3j`gtYu2iB8_fWC0t~sp~jOBnv!>@EBzY>Q~DsLuHRACmv?5bk^ z8(#vXPcKwX2001zB#_;kdO?ate}J+I;bqX5L0+Yz?(IN?2S`=?dko9-N|`3YAW!6z z$N2`PUdO_4Da#Pg%4?nm{v$-JaG8fPZ2puIRwwJ4G_fO6z92*{8b^2VG}q3zHP^>K zhe*~&)~!qPuDyMC;~?y$E`2-p6#0)7_NfBrdeHpjbrNOElL1$w%}!l@UI<-UK9VYy$%e{h6jyo|XNcrD477+zHC5g`I(I9vq$!$(HPg&ymTSCV{5 znvI6DfQJ*=iGs1Tjlu<9#zHy{b6ap-eGBaFiC?Vr2d4XBafHWu#vy&!jM7BP~-NuE6 zomI_qP>oPg|8#S@kypxj0v942n5vsaz*_i^WBJe2(Qz=IMjV{Ms?h1EoQlY0v7;|3 z&w^OsIjnsa%=1jH-72YFeL^~vdpCPHQMzO4p~C(~*k9o=1NTiWqAE}u0a^?tSR$SY zum-QYS9v|}J9xGDz1Ix^0wf zt!yDgTpQhS|5+Cy8evj><*rW|l0Tk{)#YLl?@HhK4XP|ac_vMH+VfE1!aiNVoDH1G zs;1J8DbIoES4~9ce~@+0F!AGrM1h=rHyNE9I4CL{h;Wc72a2JGM(ME0gE7K%<1%5& zXles>5g@7I#HTulz%vS0d1#ef0sJZ9Qp#|dm!epeXH#S)?H4ZP{HkJRB;w+^rI=?o}#X6Y@{xr~m;H zM~KucT~A@oDxhNvUUx3SLJV_=y6+>pjEWCF^WEr7p8qaAu*8voN8f zPH5-#Hsfi7ZFb8}eBlOjA_UF>mH zfMGe^aP?f^9FS96iLCh;ODs&^dleMo38GvHI39KM)WN09om$Kji5mC(GOkpm zw`XGn(U9e-lv$XA_&kJ2BPFw$g073REv>S8dTpzfy_S%sk;*0iB~{?s3| zP?&uo<#j);019#*qN4VaAN_k_-=UPxpY-E@&%P3sju`d=_QP@jtCsZKWCi-7n1^mf zfi${N%uhfRz(gxykcLx}K+C{Id=C#ptzSPkGe{q|&S z-^}`UA?Pz)mm#;-Er7HI85JtT@cbm+UsW~lFUFBAlT28g8f-vZ>gjhQ^wiL$SizO z!v;b@;`Iug6OAqU8a!_tCcmrh$K91vqPi^SVT|rbXeww7eWl_&fS{N%)}Bcgy6GDc zQbn5iGaiXQx2Ci0kb=K`*Yag18_#lKklD+O(R;)Dj-q23x>8a+K%WAF3o#$C(`TS- z?1#D{|Ha({Eyf}s5I(pOFfHIo-bUXmaDb6tPkBJtvQ7efo-jHX$8P^x06B-*4U)i5 z=t$2$6pmpkm)~W}Q3!`>`WUJ83aS!I;g3L$(vVlc@B zvPmoqb5-P?Hum~2aZS!ml7`z$k|K31@%@hiiY+8!8L#`6uFm!b&))y@T@Exg_>;-0Z5#Ox*%7;r)5k-1+KY?T=CcLs0^O$W-UI`SK_nA4 zr#!4d#Hd~wR^$mCpe8NY_*M7-t)A8<*fI~n%8EM$eJmjGm4TQr?cKIXj%30`G!M>x zt_svi6QALSLaDz}CmnD1*W+i*Jjv4xEAoBY!CpE+q|Z`_gZ&GDh>xO}7!`cHwvPXf zFHtk{z>}yd+3(nHVDcd$CPCy59JnYUq%U%%qYAP=kWQxlut~O7acyPnz+)Rkm1nd& zs%6V#kBt(6(pn)|bku?>S20yLFqL79;<0*}yKr(i5Nf(zF6XEbN(|?LdP+#;fKS39 z8h1DiDypoT`CHoXfO6r=st-PR_~!}b7%r55DIWWT zTg4+gx7il7?0_O0a!}*Ng)9vuI+KQFi4)ontC3A@2Eh2qQeL7$$p%z*ijdeYhyuhx z+FyZ?vU%;?TO(sNUCLt*mtwh{pgt;~i%12Jlzsj3i!TVqgn0_njh)Q`!atPgII|)N z=tm!?Vb&EE)^A<}B3EQp7VkJ>0;sAbe%CD~dV~m!9{ku^*X+`jpO@(DbwrU#J)@aj zF_EwPS%SgYw4vVmy{OvHdL$F!w#H(UGSzp*fblmx2^LT26VY(zn3^2rIH*~1!7mw) z%c5I!h+Rc^$XG-U?cEujG1Yu;8V09TZ2UYOA^9nG5W_ab-LVfvT{a@qNA3P!q@=nf zl~$=m4S8aecQoY_5&Q-5q|&-}oLa$bxl;)Ye7(uND(J&?ejc&NhOb!zwCz z!tRC|^g0~nc(R8-poD8o)V-B48>yqTzSLFcJ94Ys^-}29MshGV`@dy-6G|M`>D}y6 zEuv*K#>GzH9&DX4GxWw9Wy3X+>h8ryFFtM`l*TFQ)|?`GZNu5|+X7kp`uYkjJb)Oa zYi0CjDK2q^hpFy`n6l>dm~|)HSZI@^z1{ZW@8(@7@+u~g;4MlHA%e=gKQ4^SycU;{ z*;6bGP$PgCe5`$bO@L=-#L&q2LA?vl9SwaTZ6~P@HA2)<>vk7K5Y1kZ-l#q%r6dxM278N71{JC&=np|dto9lB zmybj_bdxD%AkxV(Sz?t$C_vz2$2%19v$aw4HfZ@sM5nBSjqZjR+dWz4yUm&FlK({; zq*H|rPlC82tBL8Ps3AG-3p72*{&LW3i|$p6*>j*@pNg4TZGat!UygMCM_)wO3o9Ou z#~-Ff73Ho{d`OUSl;W7J`2~!ySS^QRGLTR^enKLL`^gXcG;mGCe8JG;OZ|VV+*V%@ zLn&}+E8JL)bau9Z0K-m9>(;Y!^wI1{{!(Ml10Qbbt-g--)Y4IEeC}34QO%(_TC8nw zcNR{u39TF#Ly;xRV?a4VJqkR49^7}e2JAr89c~w{!TX?uq=z?of>`+*{>R9fX-Ui{5mGO;U{od(Ci=wK{x62q-CC+&BJHtKefF@H#<;TC+_9p}K7 zL%e~FyjU1Xwpq&XTJ`R0MCYHY)MR~h=L2;bFx08O8Be0@U)foD5U)tOO=CDQq3!eH zfV2mmZ}_!V2_qt*uh(r%a5pl>*$PJDeXfC3t4<67)zVpdyzk%h} zf$dXs3~IT3XzAJ{WnI;s{i1nh-bQ1+9L6B5;3(u}P)p?DEwLDNhPs*zE`0pqmIOP> zo;r%uh--9Jx+#kE7({^hN*~F*EwGn!7^HbAiZAY%15_{x2v1q6rjdHRH7kK9l3=3R zn86S7#a;kb_;U)jvU`Upz&6~=;vkRMp(rYjVF0O^nGCl;HyNCYM(|Y;j{4^kN{N*w z**Ff{%o0>*g)nj+uwq_&gzNgw|*T5a@UsRu@(yvIu{JUSCPd2yvty=HF<9aS?f z>lb+QBtg%n1h%~y2^ueCZo17X__s)8OBDnRw~>V%R3ur6WwOnD9`J<_Ty)&7M1(A_ z2PQXc*)_#C>g?*V3;|7C#!FF!7DMmu73KKFf9<)mh?AN zA3uYuC37Y6=SxSFy?v%*U`&eaMUc33R3AIcyw2`6t7x^IYmnN3bE(2V!d4~SbxL_O z&`kSGOj)ITt^X5Rgp~9hTWa7tzAUj;JJOsF&LE;aEmGteO1R;!iRf?zH( zi3^Dx0NWSCR&w6BZky&0xoSWHY)@TX9`YY0Oua~Q3CuWZ>Mw7rVAk4kE?79jRqo^= zrsm>KI-7-pB9aRO19}yB2B}jci^$=K>E8=-Sb*{VL7-TGl?YksPgFeZ08>Qp%x5{z zZDX;(#dRa5qdlYS+iSjAV0PNzz_Tpb;??C1o|$KTw*cWkv5DX zh^I7l0=ONhlKQlgY>&3{l0WIqKR7i8;F#G78}LALob%bh#vR5Kg<-}?-I9UP zFjtC`^Su%F#T5bd{`bQCnUV&1*s%=M=_$#=ZfG5Lv`02cx&G<0;cK+LzZxVxviJz> z3TRtQ#!Mig;=O~z>k$+Efi!8%4NNU}7A3*Ohe9}Ilqy(Kz-TlFM-bX67-KfBlQ$_A zQ~^c+GVqNbJf48(2n0#~A->muiet?twnrZG&E@tT8^*-H`)#pt^JQVJuIJD6bCJXdJmWD=c_9UyidX=7 z|MH9&UuFSNCGI5GmduMNYfB4OJC=Pm`_u8?_LERTUPqD_{iQL973x~qmOQg=KE1tX z{mloMLN0XT1SC{Ft&rAdPoJ6Alf}%myiVi|tRW+rl|YQ04#MGv1w6|H^YFC5n?P*-6Wyvb7D+WOLa7)+)2OBpshov!a@2< z9syYyxtE3OVW!{&w;dwYPHwk$aj+N+y4Ua%75WydGQX^fh)z+v7m*yZLTx}_+I(DKl zt_?|57HewTh>g8=47;Emfn$R=1{`t2fKadX4B37>8l%gS0VD@&802BWY7+5=x9A;$ z&nQK85sAWJ`#S#BJN6?CkMQQ)f!je;5(y~Uxs*H@&~(ysN5AM1MeiDg`=6?kbVTK=~KZ)Cc@| zN~-Q?1ah+AU`T|0Eh|()zcqiIMksd!i7>2yLsy|UJ5y18|?+s|7b=eY;Wa8sp?vx$2V|=#(_w-7jA{$ z5Tl8cuQbs0gdja!zLSALCZ-pri6mkl_~w$d;GrUF_D6ZKd^G<$JEjxE2@js*D5s=X zU@{6SzCETSQHNt_4hP7fb^Q44jlk**e)0EM^%r2Z(QQWewh;UZ+4EZV@ScZ!7# zrd+c#aqDf7k}!B)gntxo=l*$6O(s=dNZsRrQ|C?%yuhzke>F3u(`xnE`+dwu6I4Id zvMg;)x@Sgoi9WXdsc+Vk46Gv*zVcM)q$vgIHZ*uEGiE`-SJm_nsFHJQ23b9^XZ@He zo;c|>$Ei!w6sDB_iQdw|F4d#D>wRB#X zXXqlj`j)FA+d>Te+!~L_R1Y`%FOj3FN2JHVi&%(1dK?E^W-SW4N(K@Ff@OCW)UPV= zbK0^Mf!+pe`kDX6M-1lORYD-@4kFHkmFa{v0;wKDyask?{F|%z)TtFzzX(oW-~gM; zts^vWlguC3#hf(w4|(OV!KFBdBfq8YU`HC^@2{_rZv(~4P44&R4~Ohp23&(@RHmEj zD*XBA=+AcGIjH7d@XvWNIqpZ+JX!ILcZzR)+50S^P!W!G7_%RrEL$p!$uaQKm(8IS zq@VD2^+w03w9|pF#6wbv zzurTIia)b^4XCi#el8^wZ%q>nW3p~QTx9%&f4f%!e2iWjkB}*E|IyLKY7KYv`kO#p zS?vtlYSX&WQ~(bLmGHB_@B^4lPlF2s-6Xah%te z4WI-ql1hyTS_Wi4M+$*{jpA^T{brYrm7&WI`+QmFpJ6TNW_QZP{;2u>c7?k7@Z0uYja`=d%}<02z}U_OmA)H&Du#1r=d&}?b^MxNw7c=diPAEq%1r9^p~|JhJg z8N4vYdmke{Iu>giq7Ws{KCzomu~-Cr7(WWTfj!ESfoiI9N>>7otXmMRG| z1kY71tD2+Gt7tOXr?2CnwH%qBr;JUR+>X5Y3BI6@r+l7{Igj~{aeGq9jc(E6h*vb1 zzlkPviJoN5j>XmT7sz3Z{>|688@kPXjQRhSNM>gkyj>qVdA zVQjufK(R8tJper4O*|oFu&Mi$?X+SxHBTBl0ndY;ap6<-#tg?8l2HSSann)gsZXry z6TU_FJ9cPcV|glEdw!jBT0ZqRN4%-7hBwr1?Li;@=oy1x$#jyh~K{F*5(=G>Q^UAnANz2!MZ+Bq{ zFVEmQIIEYN?|F%|uPL*Pu_fd+E#AW3NPB<@^Mu{Im^fCddV{~H%T9W}fZZsI6ZSIy zeAwt|gKRT%Br&t#@L^z5qDa~{x;Y2Mvfi{sR2VHex`6KSlzX-Lm|zb6g_>PNw7=}s ze5BS#atUus+2(0Gak$;LdDz;};ZAX!p7{+CJ9;P7r0|cP>+IErDh?+zZ8AGnp>2DM zAxjUem+#sYp1U~R&Kxjm-UEZ1sD+ZUZ5|YZ2a2DBr-KMlo%B>V#EmxzM^`&f9Js3m z{}NSKjBlcyMsm0g+7YW?Op*~sm6cw;6KRdh^w+)*p~yYIh)z^3B6F^Bb|HYPg5iSD z6YQiUxWyKCWLlZ-(AdPWhwL3f2wV~X%j@9f&CjH>MpBvN3v-WWAd?P zS!1{SaJn6mxC>794{vbHqy&&@vTI9#sqk$WUgUNy&L8<>o{S=}oTNiI+%wMTYx9@T zNF1zr7u$#e4|s&$2w6ML%2I-yWL7z;M@$?M3_8)vSif`06{)56LK zCKNI17z{uwL;;i*t1}iEeGh-|_O~}z=fQ7cAoCgi(nVgR{bC~00Aa(1yzv(KIC>T} zT)+dG?}^B|UKXJ^d=|bRKCP5?AAz^2&G{$Fu7iEq7LH$bm6wc<%?xy#Hu|)JJ;;(6 z6MrUccT6-|4PtvaC}CFczQdy4P^PlMz?&RDa8@VG6r#Kk6+KiOi)~`q$M3||eWzVp znA3l*Yg=_%WR(mi%L$v~CFAS$);++QfzN zqa04!CaJ-Y(v9dl%ypy2eXti%?)@~m^FYm;w@;27w)kUA;eqgywbT`|$6Dg?nuFjz zY6BYF*q?j|8<&x6=-5@kIpjZG`0_K8Z8(qN& zw#F6#vFx%d+KdO&aVxR_6sgU0J(8MHuRxQY6k3>9j+*AW)m;BZZRg7nCu6_eOdoYN zu~)~BZXQnQkMsIqN!oCcj1{fYFlQ|hI67SKGYs5C1A9%7h~oSwugzdiCmM-%=@P8y zyQSv}uDM*G=xX2|uJ4|yv|CB4UG>Oklod$6{$nD|MyS510Cb-{%zkFL2zC~dQRI36 zg<8xba<&04T@+&WMDU{YZ9?#WS^%1NZUR=817WIG?Q@W5O8fF#iBK22G78mbV##P? z*KZ$gf`|l4cFJ$0Fy#IG0>((y#aq`!MZR|7#&fA})6R*c2YXpCNWY7HTw_;eV--9* zwJm%EvKpR?SZwbVEd8)1;5qAUfmw2W%zs$OF$%?zH|{K5zERty}$5`~1dX z(H?>$tU=**4}!^WvazY|2ufFoQ@RYaG!jddEnXbxXBGnI72L% ztvm-W@%0dLvwGGDzBp-V^uVG+Ml#=Jj^`GCzOCa2xh- z&`&kQB+q|57Q|z%-#drXhcJil-F--i6dNk%XI4T;WXduHy!7|_^zl;a+~0dud3(B1SH7 zBLTOxvPix{LF%3rGc1}T(N*G~f{6dQi2NGZ!bK*(izqM*-74ik@&s;K_0b?YD=6_K zrF~$6biiV2{OcaL82kihtAoZn#LHDrnQFY5 zUaHf32on4k^qgoW+A&i>>6BCM5G8g+q<6-Z{PMGd&&j1f0LPFu(*~P@1p8Y@6_naC zc}I8>t(id$mg677nU3*Pmgdm>7s}puI=B{Bzd^j`FTo@! zHP^v5@*aY|62FDKYQcF~0m0Q*Lg#L`}78#DN&epa8zjCjO(XP&-<)9xv?Ol zWj|~&^#*bLvZUA_i%aGo@qUurXa7;9JsdQT#zFaM4wu^J5KvOuI30)P!o5h)YMJH@{A1gtw*pb|AOtUE3ci(C%XK?)lZ95wx=S+(L9WK z=iqk!+-2?FR%Jt$mE^mk_XftYT=1|9&Unt^CVV@|QilFrYRIT3%7_I>ThLeiSKMr* z3Nu9SpP5Ld`@X(N;o|HmX+%fbwy4l?6DcO!e;}s(eV%7fYTqgGf8QJUm};}Ve24c- zh3b2F!ED3(t}or!j~}->O`doqMfptjD8irg|3Y=HSh~&P43E?zD{7aol~kgA zwvrUyJmt43;$K^kgg2#~fWLaQoxw{wvnyd9WQjmntJteq`KKlNx}Qbpkzsd308TAv z<`e@B#E0TXW3o-DtnCsm)<(apyF>lP(24%fSqPzCrM}rkBBO^R+F8JqTP=_VmGDCL zD42G&^40%HE!W5b#;*_Ur^6-&F6o#umjk%DO-WC6<*)Dt`aSV82?DA7ElRh+T$Cy; zoU2mrB=G)~b#ih;zVS455QX~s5nHM`W2)RC1^%Tl_H4DrrDNRR0+)2`Xe;#pvf;!gCP z(c?mz^lsuRB{WSZ6JcrbZ&CY7xF~{yLlq6(|2G(h?LD3l$yj9L3PY#BXUBQec`r{j zi52vKC($;VU4$CTG_8Nfy^8%mFZ`zb`}(a1dc_=GUeG{e5q>;#cQ-E!sKRa+psuyQ z_gA=)gB#~Ey;W93Sn}i#slf23q7RoMsz)=KB5!+aP{z-l8{yRIuiHW4L^NtC;_c&= z;Afo#N{M(0ILI$a=Qdz~lxZlpnX8(QjpG4OUjN$2Vfo7@amd(`IlfWU* z*E46tf%JAxZ-d2v1*;TL07I5J8!W5(lJ@Ys1n)6@)hS~rEPc2}iMo)KyC7AZtnP$F zX(3xFW(tZ6WBNKDGdNg4uQSBv1Y`-*Ob-Ggtlqu|iv~$?pxfFp;(xsaF}RDoLGbs( zozqMARn=nsCKgNhN!SYGnIRW9-lkARSI+ba@evikoE-tx#!-Bj24C{5U@g%o0*gI> zualuP=?%}GmsUrjQ(IblP(c_KBNM{xKrHM&D&5fISladXWA=A&o#5<`odehu8WE|L zgoKvD1jm{-o(uwZ8DEn1|HcwRR0z>0;x}FSw6;psqgrVIVtbVSfhMl6K&|%JDA$m7 z3CBPUn241w-BZ1>iho*?Qgk;)VLLcrCNNzhGRxvrGkdH^MXH?1NV^=C{GRcbPpvwz zDm#|oKcVl$cP0$7`5>g-J(U$9XIHc(vw#J?A%sBsuL&qnFVGkO(=%=3giHs$hBu}i zDGjep!D+y5m+BMGjO~i;9J-;P=c>z%G!472I|z?vnERTWg7yA9^#lDI zwA5nqkI8|Ej&3*>&1LpzOL1=Hqwg=J?VoRh6KFEu*{LH4z(~dFC`dJgSo3;(rtu-z z0{*{8fW3etrcEHf_4tn5W3H`OH2aF*%CFSa6JwaWQucO4QA@WEuo4d`UB8)W^CXKS zd(7U}l9}j2<7i?ijq3@~H&*y7r$T$QugM4p_#RKmq!6{z!h0tF)OQ*6mNqqI@%ej1 z=^A^-*`A@YIw&Gz84v~c!oQ0A-$h?wZ|^FqcgtX3VP(1KpFt*bA)KEof1oB?Oy83h z)ap0VOy<4W&Bdn!Ad4yR+_L|e0FdKNP2shIp@lHJ6q+G=lb)&*@xr`|_6fEtq9{3R zW^(1qo)w%W))|#+3B-(ExG&J}VV$`lHmmA=%b`zG!TE6x<89%{mFa9F~A{BL$ntJgVV=S&B| zqvuUm{F18^Uu+8sEJ0F;izQCOm0d}btFhyz)4eBU@gwfZ1R?VL`E9w>ud0+st@1)m zOcLp zZVorF_IMhtC}OPYcJd@_Wt|izMuniaf2s)IN403gkkKE)&KLWF*xb5$@zMkH8+i(8 zEKXdx+aL0*`aeG3Y~i=9@^4@*`t&-G79<0AA5S?KJjwlYvDN-w_LyNY_x%(V{$Q}K zmX0bYjQfj{1r<%Cv%So8n*}!Dgv;R^7xOHKcfy!|`Yl$D4SB?Yx>B!4{=28_|y4PCG-kHDFjz70fgEaN{X$vDgRx zv1T8NM-((4v^A0Xyd)ke8%so!q!)1Q1I|$(ux9d0RFt*a{nUkgASvrb6Sfu%-pMLt z5>v*?^gih~+CC0uABM*>YhvzTn6X2C|q2=*dsi#4Oy$9xZf=K zDiRu{(=Yc{D*P1d%_prpvgu(GHJ|FUqqH&%=7^B)k!8d=0^Nk;2%w7Veh82FF%9? zMj?#2aKn;p1RJ{LZ|Ce-tK+5P{M2StY~VKzeDk!I%ZL@*ciw5extTaA0VW@2P(O=C z=Av*1nshLie|WKxHANlPAO5h$6^OlP$kIt(^Y-~zeipy_ML0tPmM_5DF)G*u%^JTbtS^x3pF!Sk|N;t*s3t5m+BT ziDSQv+zPX9Riv{d26cLe!a}(OcVq&WLLrdRlOAhW>#ASZpA~lLx_pVS*ote=q8F*S z0EcFqBtV3M8%dj?!L-N73Rcqt5SVcPNqpHo{qru|{M@Ze+Y_U29L=J?guxuq zKs<=%il$@R9deF-)8)|T^4ZNuZ#WFFKD6HdR!qc6?3*G(u+u&95H zVy};uq|F5DOEK!@H?M<{XJ^9TX8h2Qj;trfEbNcfb+gLxA^nrEclMjh2$VVMr^y~n z%Fk#l)|)t1Dz4e5k=jBRWAfNF`(*eZ`zGC}8y1Kbt9RHvb9zM!ZrZBDwPJYs z^e?S5!0}fN`1FQO&L5`)vl4N{j70%Z@~P4J9Z1^Rf+vZDk2IXN{9L)*9gI`|IOm#V;&xf8IBC zeIE;A`SxJc74vjX!U~_~CgOS&gB{dc9I&$lp+O&_-Ty~c)1^(mF@_6KQbGpvw`4Kk{~-6rRRz{tDDeEx-y= z{aTRCIby2*ys?57Gv$H_Uwu1!YQqWm>qxqC56-oyW8m{vS7NruZiDLF1h|yg6r$*w zR6WgMa%>Yt&$#@=7WRCWsa~JPU(Wu7Lv=XhVZ8mj2t3ubuO0x~-Q;jRnFbcaVANQ| zfg+f=SL@GTT^Kr+ z@TTBpfkZ4yi0z+8#Ofej2ai*;VY@U zD#*P7cPL|w{J~o>ERhsv!{3DWrb4DNF}|)MR_66{kCj{DB&oQ5wKqb|$uUQRb?8t# zdnQN~MmP$-oYH5$rB~svAVMf1!I||CAv>uz>{gVLH5fk)8UBhjE2XzYf(y$Aw#ahE zTQ^QNb!)Jq0R5K{_v&AA*oKlOd+a$>C;v(fO`PW{M>9+r28pKvbk8}wq|U3>1+_Lr zZaLn8t^d^-9wDL}>_vvw*VsL?OUB_XO(iq5R9$R{mwa?JQBNpI!h#r^r`updmr>T6 zQ+vd!GGCZih3H4F-nCnFVKhiz&yO@)3l`9>DhgxCZgM)KQg51NeM>x{^I|XeAmH@u zE%f-$Dfd#BK&IvsUM17=m2C{Nkvw4H%u44cguKel2kT@?kFs$Rj@rxjmZm(v4qq~` zuRYAWQ5O<4=q{6*g6W-{r`AWkYv$M?Q;rl?A?`xK=9#Z$oK}a!dO&M*rK{-eK6F$Y z;P#e#=0AJ12lYBm`|66{DSzHRo#Np1Deou6wdIw#rt(dKnD!086@}>kc4_t3SCf+4 zh|ra+2%5k;x_VX+9@f(Jk!z2{dYLSa&@o?~`fRu1Ad%P)^zD_yYI+6Ey|EucLTscE zE}f2@x((ZNwc};I^%h{+Dhj~e|P+NW(zR0$x|1!SXC<$*MzjXB3G4P z+q%pFVbN+jl@8RQ9mNqTY*3Ai(l$mUT8kTK%a(WVAu;-cLSjVr%ekXR(oBclR7adJ z0=)Jt7&$WP3ZzGoP%7T&-wHn2_9$aV)~V+GVRqxC`BLj*BTIWo;e}@tyfMFOt#1rb zZdA@6RW=8m%;5v-%f~K4Zu?v;k-e;~yBEP3OP(w^ivQ$HHKhnAf?NIql8=lJ%i3{9C~g=vB!F$Epg z(gTd>YCQ8+Z6kwrWUXn-{#WNc2H4bi-(nP9aJ{Y19Go%0#m3!38u-_qb>&eE0uBW| zKsaXN>KYg^1>zbp<7C-ii9*`AY2 zJAfMp%GM&lSjQA(O?MS$OjJ*W)+n6D#S*qcb1XtZ{X*3U3gY><3G8i}Z1Ku{RUkvC zIi6@n8jAE3CR0g*(}d0k2SyB$rjwfD5aRZ&`0lf-0Gp5a^IselXXt0U*Q^|UQ4}?h zva-hy<2$DYq63s%c2D9bb|bu^{AVc4usME-)3MrVZsOd2qKxEZOWeq^Jsc;Z{8)ig zpfH{o^n~28GUr#RoQoc*0$}NK+%=(McgAMdGCLS2H0MX$m6tmE!pndbq)b$|ww*K| zxD7#C8nBHqv1Nh&PGD(^K8Ytgk#E&g(RbZ%YEkeXa}YCqXkZfYAs_3@-V zk1#U|2_vR1!SuwO*#z6c6*kwOa}zRi9~bW8CbBCD&~BDfa-}sjuOX3+HFvw2{jFmm zr`0bp43g$s1BgxLA3WVxGZkdy4KN^7X^wwm8!$OGQq~Ji1>dE!AqO7Qra+s2ED*ig z!S0ea-Rfwzv~czWxom@Q(kL_#()1+4FfOh3+S1qzxAbu<>6}hk=$N#hek9O5|56Cwm)8 z2dZD*$;WSZ?_>M;Eyd!_wXf5$*XMn$47cCe)N9{M6G8}6RrjTM6L5n1n_wV1miFw> z*~2EJy$Pc_wE-Q+fc^6a-P8$v+aVOJ>PIFcuG_VRJQY?6fGPG&PbGWlWoUTWi@~q` zowqH)C?zQktjG^oKZ~Er7E{mNa|#b%L-DmZIXr9@jN3y85bUMtDmS%Q`$Mdat9vH_ z)Z*}m+rn2rdh{^MAT~#D&tR}ST)BM;9XXBMdc^S}i=6Dj8)X1(7LO_)j1eJciZiY7 zx)>)oP&N%Z>C~Ao`1T5K(=a@a+oaA>NJM!n+X$+5V8Ez_a|X;9_IqYkB|9?X7tqv8 zg3u+!d1`|z*e^bjJFj!P_tRm;PY?TEJ+=r);5oeWm##hy&w(fl^jR9trS>16HM@zJ zZWw`&wZCS6zEv{(2FBG>>kFOGGqa;muRxM2W=(sne_BcaJ*a z2J5bc_d09Uy~t(Q|BAp7(bU_Nb;%$oazos}jUi9Gd}PAp>(F8|USH|G3mkPAxC zeBbfuM%6#Ly<9q<6{Sv6OQnGyI(4R<>D=-s>fZLi4H43YzVeEdI&>Yu2kzyDVtp zeC(deph{ELZo-YYIp+ifO{G_D$3rI`vf%e&$tbKoO6m3?(B|HWtv^-fBUjV;Y&O| zD?}5{wy>1Ezf?XbB+&vHjUhvG$13ZMj7ETjSDkgSAWpjl>?~Pa%QACk`&0p=@mYD% zZ5m&oq7r1of*i^k*FV8^KlnC26jJ$2Jr{_VC`|afIZQ)~SAKzlMN#zIqU^WDOr<2x z?X5{)E8#q=0WoVs*Y#3zE}yyYF-wRUf^(%#mH0_lSEoGqlXyR09+Mi`yPXQML7x+; zET^-~HW%;6T~rtc@KnCA?*J;p+(H4%Aw&=(F-ZqV#bcIa#ss0EV?2Y?zfFD&i(Ben zdT{~lM(5M1CaDg7`W~_!1V`(hr@`{>S&ts09Bi+=-f@hBL-Btrt&}8BE8j7NyHIGf zPg{(zzrGByN`RBk`a~T3uH4LvWAz6WQ12;YvWr;M+8ybG#ktPfry6hsWKK;e7GZEz zL9|3LH2va^M!3olfc6}3pl~a~OiN;&tG-GH*u)+JSr&3rK8Q1%AoVl1*)vD(f~e~f zjwN8%m)MCJV~w!*vZr|Bcm36ZG`1n7F+2u}3k2WWAk%Bqo+)Pb3kkQj>m0qY_b-N+ zgI-xP;Nt6+3(}$eNn$jUd*5$PSfQL}`6G8POvi0xT8h;Df#bYxd8lvCwHOt)VVa|& zU$29RdtW3beAty@Qy$YHvpTbnN}xyPW)BEYX#qRFOicLlM7hYdGBCi#ZA->KG8F-r z+D#f=^B0t22lRJ2mP3&G1TnKR%k64chjnyF*4Plu=7&e4+0}ClTp90|2s=j<#KW55 zqfv(oZ@FP>9Z^b5HiptdyW^))Q_CW$LH3=Oov4#VfHgu~eiR*P)2nb9g0$w~?~-;J zw`cAv>#AeHVT1+uGQ-TEJP5j>!=^Po^35-#<@^z8Z{o>Dn@8tSXfFEI+(Dr3svs>Z zAGkg5x|o^l(#PsXZlB-$Dqnp^7(VpzE8gP+ra-BDF(`TLI02uvwAbydXxug5ReP4w z8##d)l-=wVEVZs;pw!^%7-ErDQW((PG5Q>j^ff?mr08gg@&$v~ORFXYBTuGqA8Mlvo4<^uN*=8$9Y*AoX)d#x%GJvmh=%|*P+4eMjQ&F}da!#{2a^PFYsc!u_F_MgIM-k|i8;2{Hjz=Q}FH*wtghPlWej*GPPL{Bg z^utPvgWCU+I)@O!Y-PtV6?K>hWR&2e7pyGc_-)BmR!2n5hs>%m$*hp>P;*2WxTkR_ zCwh$Ly98q5zc4R=W@z>s|^qi5aEkN8*`0 zEnVx7#l%&b1YowN@`+Y}SEAF}$_|e1B&<1GTWD-~!0%<=gQyeIp=UOM-K{wI+f$Bu zR1N5{d}8x7k-n{JXnS1U8H5|geCafLZu6k8us+~nO<(E=paDdN#Lid0$@0X;A-rOh zJHd!>XG%#OaFq?9{o>qmqH?p~AiyZW0G zCB=aQIEbFan2fq?^iYL`6f!7e2NtIpAH6Iu_b^xFKma7uP6LMxmr}+D&Ny^_g;$oL z#`e7{{rS`Il(_#1baLH2{&dS`b?+t0he6TG0##vlqD?<|V0~t6TMbkNh54fJ#?*A! zdCsZNkOou2`zKSi(v9ibB#8nKQftQnoOk!cpeB-W{T>zN=N94PpljJsdH{|{VBH6} z^VJ6OY^l+9BQVzNFJ%$+b;WY|Uj3QVbEKkrQ$p3F^EXs(|?oF;!~fDGCMJ5t^oU`)`U$Iwn8Tp z?{=BJ?Sl&}6 zR%EYM6}(Ni)T;)Qck0bF+*Z(QihqYBykcnBuI+@yRQlfd^e7pC$@K6~_Qy|*5;H=K z?Fe$u(H&~NYNy2hANhuiW<#itw%JCS3fl_9_fzN+*FW>y31ho8dt;A?RYh~%-u|ed zuxcu;*HLfo#GNiXCwt^Ly;L=R@$FiP7(Ev)%yKID{;QuP<$G0)WigtVG$$};tAoC2 zItd*Bfl%1CmR)o5ohqJB`cHW}#rGZz(DVuZCLY9d<|{*Sal)l* zLQ+QkFK5-bY0q(Z2vP5}DUdO=kJ)`;RW^p`(CS8+%^^pYbVThbnkdUCOmX{a0aJ0G z7l9}4Ae!-~4<)U^I!Nge;!*yKbLg*mqReQ9dS)W}r^eA=wl-#`^UCl<;#`U%HK_RG zR=1x0{lr-|nds8!1@6^0$R(f5)2|b5x8_&hp{*r7SM&)1 z)qRnN_eXx4wTJNP!TS^T-0&1?`P{m+)9ZgdVwmKi^U6nYi#?JTP1P!_ZOugZur14& zs&C{GMnkam0#D zV&>vunQmRa$C)(_4j@?a)El0->sMRTcw@mEtXnQ~M{I~p$lrE$m2Gk?k|()AElV|Z z8XMXDd;!>zquY#~^EJWdXQZwZf%trWCdGK^pPCk225r1`kz{MzU2~UqqtHbESfA}= z!ckYNB74L33|*(xYuV?*0t=2b?SIshn;dJ49Y$GQDdYX+(A|_9wc4$dD0yZw?xPYj zt{A^zwEvW5+iQ|v>+dIQ!nmEpNQO4>Cty!RM#Im&$*XH#ve6Z zx{bjPD|?~LUsdoL-XDo>Y4-E9_>z{?IfDRXpB#--xtUR zraNW>mwmgO+Escj%kw+xYu7sAhO)LQ{Y{hBO0y%-q5T&V7$M(Q2pq6t)KIR2y}CB% zPB)uQ{?|VGcWH||1gv1a&vLw==b>QZhpH0r%}zv*r@(4ZVfN7LyzM!k-!k+Pbm2dh zu%F*{Q|{=Xc7&eUmT`qW<;D0OutwIKL!_7D7yQwP-%B*Ez74uQnUd?58WwjhJbe@FahRt(%$%~wIo;AThA@h9c%wqu?^9T zj5w%T;DLln4P*axj(=|xCw^T)*(EHqIX69RBkXCaNCR>N2xqwhmMRbSI8VxHdnr32q}c&GJhnv@{ z6t=we4^|>t%EtZGvZ>3?)JIHFPle>A{`uD>cuPr~*|XFOiox7_jaS7L+3Jpn1cfAU z3desreeH|~hkH8OI9)>l2^C!%{{(deSQL5IV5Ft^oJWmGS4#-<3UAv5sCo^$Y6#;_Ai_xOhBP@){B?+wq)fwa~f_QKl*hV zegC~6kR$Xw=mGQe+rE1c3rxrWXW)EO2qambySoQg-5*7neb)7=g5}g55H$zd7p2AjQrHS+S+B)T9=-#ySwrft_M6;n6EmjOXUELO->C+i z>y4zqGlMo<(;A<`z%>Ci!W!TGu!U3CB#Hp4lw`*4>Bm!lcHClXEa@eSl&jGJ#(~++ z)!5=u(OPcwdsPa<70b`EePaeXTfPp7*i+v4Kmz5?{!=yP3%C(5pxnoIAP#@(h7bHe zGLSDo+vcK}JcC6DGUU0hG=7@d9|I6wX6>XcW8PS$rdfs3M@b@r*|j|O+-|b6&*zAs^zCh)*v(~-LKw;lW$N0w+9NP`it zHr={BTq@snSKASsMD%|$w3!$au^P*Vdy7$_GL%;PZdITq*JkERGI;51I$?nmZnYWx zp5ylnV3(|aWHL`n8W2>YNgT5QG$U`p;7Cd6aaEds zrz>sIs=38RU^Px>BjW8jGEJ-pCgR4HSiL1Rw`D)B9tinp|9GMqwKj4tg(&iyj<6Tf zCRR0ZNUYJWG+=4sLSCg#t$yh=@RVg_8=It$DFYuC!Z@b)Uake^XBEebh8 zg=G)feqcwd4B=f?xwEIUIU796>f72r+Qjz{bSO5XJ2z(|6)W!S8Q^r<8O6By66-iX zn=*Dg%HEG)7@&PWryaFgI9-qZRUVm3L$gx=@IP1>OXRu4 zEvd2i41QfoS-3<0Y29r|aOieo>^V7}^t0aM1*iAmz5Ku$(rN$;fWCKmiYE`g>ySCz z0Cev3fopKkZ!x4Ng|YUaO`^O?SHe?=H^leTL4ErSo|)lMkZ)+r$@Yv%h9YvcfgF*l^Nf zN9?%26-AMDC>NJ%(UIsxlPrrDI{?$M z_T8?kQ3ewv>~@sOsz!hDjYv=A9p#d`6}9@jSbL~Ttuk3`Sf&o>;=?Pq3m$=m?cqwC zJLq1Q!1s^@c?$!uBFft}3uNUCyOCbbm?+XGW$J<>26WS*QJNjUECSK8j1P<01L%oi z#Dt=s0Ip+MVirdzgz_xcoOB?LGIHBhL@2LLdOK3YWOGVr9>Q?)x}*=?L$`!FJr!N1-)ug3 z;{bU*bB8Jc56n0NH)qF88%fB?>d9SQh2slS*be)f`pQ?$`Y#zD%~!W8U4=e+!e;oU zAsEhw;+?scjszzf-T+aTdM0847e3N;Dt2Wokoi&{yt`h%&Hs3rf$u+b4UOoU9EW1% zwnZxKzTwM{2q7X-)jKE&)y&YRsXRe8^0^A3r7XNWbl)t6#7mqMb%M#>^2ma}>5ELy zx@wrQwMBD`Bwt=p-Vt_#=ye7fcIla}a?6&&3|M^oYe_mU4JHB;SF4wOFX+nqG-~1gW^A4{G#*-cJ4_` z4Ylz+mEpLBUf}i|Sjk#oeSIdUG@KkBC#G^c0T-RN_ZAEp89(J|&Jy?Z{zrukHe;#% zQ!=$6fz|0z>eSwSc8HcOg>$;C12foMHjmBiI_5luGuuX<--L2&`zER%mxe%Rcm((9 zOsuKwix4Jd9n(+`p$6hx_=Zw z@$-#Vds7wS&v9T)TlPvd4pz}#T6=59*piy|7!+`zswA;|(mYKJt-n(fe*0)MYf*eA zM^?&7vPy=g>H1jfIYx_Jh>fgb_mtgkZ69C>VJA&jV*)=?G{w9Xm1!bko-sbtcKdfw;N9oeC`IGnjXu(be8Y zn5YLE)VU?TAW_Rhb~=~Q0BN+XuyE`=YqS#>TOv1Dny_@u{b6R`&9x(^T2MXm&Vp+_ zjbrWl>gcD)E6JEtI_i684do{r$i?&r?dw`QqrMS|j!LZ5)^GU@CGB=NcHqFhT)yyZ zK8<|5?B`y^&d|4+V-cy(*3@1=&4!P{78e$EYraK^h3^BA?TL7FBQmir%5nJG8QlW< zO2(9WN!ynomRn-*6^1nv?&z0$BHFEcvDfRP%9SP{(L6u z9nk7Y^Ll(yXFY!Z5e)0Eh&j(dUAt)5Jrv~2wthgd=9+V|E~-BM2ex}7?YSbE!9{$OL? z!-Segyza^rF-T1&P$^s8VNVGH4;wGSKl|yzn`<28uk$xYo$*v@2&SvJ&52z3(_R`z zNRl}o_6M={1~zGnIs7f?SXv=)zd$*cH%fQinO!Wi-hJ*ej@)>jSnOL>OF^frM^N^V zP)oBMp|(r1SAKgAcC9PY|3+a^ih#X7t;pPfw8gG0qs%Jf#BKd%+^}6Tk#1Xu{X2PF z>Y6e8W;2*KQ*FlQBAHA0kID>c901El+Ln{-B``2)$fJ#KG5-IO#hVR2&YFQ$h_+H- z)u+~QHgUm$oRk})E|S7gY!$fZQQv`SPY*T7TrxJQjjR4-k%;R2={=>YKMN``Fro(P zCpb2n7{<#d0BDm^7W`_*M`T|e!U1UKTVSGI;Y}w03Qk_XM)kr2Wj$Tg2Y8(gX`0$T zWj|))6qQeljOz4(kwBH%y2jK&JC;O;`z0JE=8kgah z!5Svxa9RBzOq_c|E_?N%`@&p7j6Nf+Y!k9kP2TEE4|CH>S2*`3ljfbHdMB+LJ-xw` zP0w9((iKacs|)?WX}0EN48#1ZSr%nxwUHLox?&4`=A~%lQCWHX;q&ox-Fu0JiR{^| zaCJ^r=>QuQRGY-GmE#&TR9*IC&qaJuBX-8Ey)V!s4m*y-dvMy?S;%MBx#M-Ua<7IM z_cogx7pZ}_%g(Z8ZOUJ!=DR?b3plW2#>OcTY095PvE=I7Z&g~IVP6gM3R@Sj^-Mw;fp;_F_qdEHZ1@)?11B~G>6_%8@em^#c z!?F>z#=Ka%qi*;Y1&N-lYA%mSe*Ekt58$u>ArstO*>Avl#Y3ly=yzBiKJ7LOHaNj_N07UoxRT zxH5=vjz^m6=+ISIrPsy$B4=+Bs1h~dC@siQxVE&i`98VkRWUsftj_KJKvkzI)yrP?Q>Besu+(v==6vm(jZmgvBL9IbI;9s_F_G4g+ecYEAVMneGvT z#N8O}W|g-akj2;;h$;7!PceVhOl{#xt3Oz~p4OSXtKgegUPTPZ7Uu5{iOp3Qme3s1 zCAVfw;n;oeP3T57x$bj53#ZhI&D|O1yd+%*NJg^yyIwI!l21|u_f={0xS@tRnk!(#6VGh_kk4=2V)r?N=8o2ml5NV{SJ z7Mg8)CCR30s8;yUb9oA-nz$X#Bv387MO5qJ*tW8E%xhp7q6*DKTs4?H?RrL;Ie8`^ z6e+Aosxl+WSVb~>)B`v@;|itDtb*AgKPiqVa7>*nxz1M*JI>mX=Ac&)6;O0~D?y4FE5DS;0)Vmu;mZnSCP6gtVx35e@vEj`p%(GQ z2nblv_>xYhUCmFjM|L}6%8Brd)ogiQlKP!}UlCnDTWYn2BurDshD^GWt>Hh~!L~4; zi$VEw{EL6`22K6=pdayV4|6L~9ltVkzaDsGoKQlf&l{AVIL0=4HMVii zkgAV%AJs;}n(-Ar6tw!~r5J&CfYZJ#BhbTxHf0I%zQZ%C+yT<+FAKflN}5!WGXkiP zW?YKT=ABKI2YRmfzjP%C&z{lKh4}oOpocSVnj`yJsa4CGeh*;O5)VCZ6+ENrZAr~+ z5@6-Js-GffEX-eav`aWJNM5quxRa0Cn#+}#9iGNE&bP7&{8P49=+=HuRePY{JGH)f zOM}U{?IyG9`L5kSrIhKp%6 z6Yb(MwXnhRK6=wq&8uu9K&9{sWc?E2LXuiQ9Y-%uq!m>g@wRRsDIyhUb3E1qTI;=R z=7sIXFbYIKEen$(y$$c8(ve zV=kg5ae3M+69U<_^=NO(asywUc&Wy2GnBBRhG@>%;qiZ^Kh7xRhIBLdn}#*{V;a>~ zd7bJ-M15Kp$vGhfl@J3%nRue06@+BwT~*e8b^G!xgwc0pJ9fIlvCYu^N}4xjPRc#s znf6BSfwhK~tk*a6b;R{4?zyc!TN}|g^BAZcCoYF<%TOBf*jA>Q z*TN(3D=oYeU;S8^LskhHyrlSch&h)s&?TD}bc5V6> z#h*EUt$ z_M42xj&!LaLb}-nFqOv#M3q;efh^&8cY4h+5TjTeeAe(mt0Hw?-1%`Ed^mICcR~zv z8+ayTwTWexyU@Kx;8p9d@<4qg|3Oz=HC{35WRR7wN5S(oqj_+s%giMeaKYxa;Au9e z{NIEFS%xxHIy9>pKSl;p5!M)1<_s62V(qRXnQHY}I6bFyE^~zy7$kP2VQLFw9;NmF z1v_&VyLI`sb~3vmG3pw~QcM$@&V1Y`;5aWtsGpGPR+oQ0kH+XMi1`V2Z+rvybt>+L zj-SJ5;c8GHf81GiWIR_CpTBRqe#`f*jOsW5b4`P<_%^;m$?k~Ol9O4eh27hs;F+m2 z`Yp}GyG>n#X_of(99%PL?EhUfyBYC9RHpxU`-(;#SsI+rLvV91#(#*6sQSs*HP+@p zQQ@b^Vqybd3f$w5oNI>cueFwO@)@wAzF+E4Sx1gL&{Ey-`AsIWc9%R>&7%252z0HX^;$}h-KK0)hg z&JR&qbKBUGeDEA)v~&}BYK&^hF-ol%4Wcul+H}%AB=#+`<`RNBmlG|}EL!-TEmAdG zzS3z;FALfeild&v?@~$qu8~T^o12X%zPqaR*1L@&Kh3KYHtjjC%<8N#4_O^a< zwPrBZ*;+|PUcG*YnfNP3`MV_=dP2x+gbMy7j7*k-195&t!!+?6aeU1onPE47LNgl> z+gjlc%inZQm!n9d_S77tv@d_RBT!;Ue(NlvnHKvrEY`be6ee`b1S@~a?xleP`zrDm z0&BR|mNY3i@ZlE1WN`&S-g;Ya)AeQ<<`(E0wg#g2n7YXHf9o|{zEbUm_6skoD!X9| zR*_W}NY?dnUc){5FBCvbO^~8u-7OmGQcxqxOLHV+moIJ=sSGh^fqeo0b&PzTG8Bl~!I6a)YK^)F)9 za0)W4vpyw5$vURkq&JV>9U&m#uBF9<)%NxA?!EbHA|ytXvwpT5Th)WO(UuT3Qpeyr z(hQ*%CnXvqT)icix)qxT#!?{P3H7ebUQ-M>6vgtaxFM9U;G>#Fm^01Ve2Gihm z(IUVGD_9*Nnj9x8Gr3bvc|&zyw7Z*>?6YxeC|Vil>r0kbGTM7ari-SHKGHbWp3$KC>m7Xr)MG_r?)kK z{2}}CGkGU$NyJp`b&VJXK(sgT^Iq_`vb+AC@a5l4i!AyZ z_?n*#Q~TdSCG5kCWUey#5JIW~4)MDZdGs~Qi zT5CL~x)B__Jmn@}L-DF7h(Z;kNMBtFytAm;CbZ!lF-yRT3Q0)|!L92=va)HWfx8MO z&|YUgT0bwZnZ3&p1MyC_6Uo~7T}&7H&EKsJgjGqWGW?y9`MPB?OpSkzyNZdnDEj}B zX{#WKhw@e2fC}J@DGf)Y=LR1<#xBxI8<+9b)9WQd;PZfrd2^}19H!DiZ`bal5=N=yUM1Lz+IEy38oQuX6=2hh>~ zpT7{X4i~1td@1k?j3>c}^hGQ7W3}8=B7j! zrw4YK%--xwT?`;-4^+nil$gF|b7B{L<=;WdNiA}wB5Z&2LaR-t`lO(bdRrRW7*!GA zQH?v^j!`6@9aWDthN4f~Zc)A|7DzRWx(xc9Q}X+?{&{0iP;;_*(yj8Lx7j(@rBf&f zO@nnj{;|?e2*pFwcrhb6&M-UC4d>JHFqL!yg*2wAs2Sb$(^lhef4u zr!bVOxc+6^zlXrz2=+qa?1sS&u+n@@`VNFLOdY4JujKF zJlpo{Ud3FGZ7D#;3?Xib5l*xHsLT`R%9|QoEzW$?@A^)paPJ85uWl$-T8}83nj&aN z5=efZ7d9Fz4VD1MJQr&AN;)rW<)~Ky^}mViQZuQt$hv*sP{3*Z(&YT;!QSz4@<^vJ zE_+>%a7uYNi^6Z?g6$LzRVfC)&h(TGhmjwKq5N!ovNvgYG@rfGo$SB4%vF=Jt)8ye zr?aghxQpm5v4AxUe;gjHH`aQ)nh}wZXSds*o@`t8h6`kNNH_u?W?=9lsLcg`=sCT1 z!RdI>i9BN`AmVyX5sDj=bypp>>?qC=oA?t)5mGdaf9}zEaHC~R>zki_-NcOo z3o4x6_|>kw2>(X#7&^p%eVM7XsB;lhU?iJjTVm92O9TR>5W@akzkS0NBR^`y7Dl@* z&6fLqoBMhB&C3oZs0ml1r++VQkp6MY}1LouvnU&&kiu zlVZd zPXVMA-SuOWWvJ!e2}T-vhag1+B1y=kNY=K|Xr&D6!l%G844XOiZ2O0FK?Z{5eqc?> zOu_DG5kpSZ9P#f~y*Hrv#Xrnb`$6&oGKrZb!_Ra$;h_0+SE!BsWu`^X*A8%ffg$Rw SdxsFfpR~AwSfz+j;Qs+?yuJqj diff --git a/doxyfile b/doxyfile index 0865c7d1..9af1595c 100644 --- a/doxyfile +++ b/doxyfile @@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = Isobus++ +PROJECT_NAME = AgIsoStack++ # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version diff --git a/examples/README.md b/examples/README.md index 4c4d6fa1..d30e6dfd 100644 --- a/examples/README.md +++ b/examples/README.md @@ -6,10 +6,10 @@ Then, use a call to `find_package()` to find this package. The same process can be used for all examples, however `diagnostic_protocol` is just shown as a reference. -First, build the Isobus-plus-plus CAN Stack. +First, build AgIsoStack-plus-plus. ``` # Build the library like normal -cd /path/to/root/directory/of/Isobus-plus-plus +cd /path/to/root/directory/of/AgIsoStack-plus-plus cmake -S . -B build cmake --build build # Install it locally in a directory called "install" diff --git a/examples/diagnostic_protocol/main.cpp b/examples/diagnostic_protocol/main.cpp index bf0a9888..4f3034f7 100644 --- a/examples/diagnostic_protocol/main.cpp +++ b/examples/diagnostic_protocol/main.cpp @@ -83,8 +83,8 @@ int main() { // Set a product identification string (in case someone requests it) diagnosticProtocol->set_product_identification_code("1234567890ABC"); - diagnosticProtocol->set_product_identification_brand("Del Grosso Engineering"); - diagnosticProtocol->set_product_identification_model("Isobus++ CAN Stack DP Example"); + diagnosticProtocol->set_product_identification_brand("Open-Agriculture"); + diagnosticProtocol->set_product_identification_model("AgIsoStack++ CAN Stack DP Example"); // Set a software ID string (This is what tells other ECUs what version your software is) diagnosticProtocol->set_software_id_field(0, "Diagnostic Protocol Example 1.0.0"); diff --git a/examples/pgn_requests/README.md b/examples/pgn_requests/README.md index e033d532..76656be9 100644 --- a/examples/pgn_requests/README.md +++ b/examples/pgn_requests/README.md @@ -8,7 +8,7 @@ For this example to work properly, you must have a valid, functional ISO 11783 C ## The Basics -This example will assume you have already learned the basics of the stack and ISOBUS communication, and won't go over the basic setup of your internal control function. If you need to brush up on those topics, check out the [transport layer example](https://github.com/ad3154/Isobus-plus-plus/tree/main/examples/transport_layer) first, or visit our [tutorial website](https://isobus-plus-plus.readthedocs.io/en/latest/index.html). +This example will assume you have already learned the basics of the stack and ISOBUS communication, and won't go over the basic setup of your internal control function. If you need to brush up on those topics, check out the [transport layer example](https://github.com/Open-Agriculture/AgIsoStack-plus-plus/tree/main/examples/transport_layer) first, or visit our [tutorial website](https://isobus-plus-plus.readthedocs.io/en/latest/index.html). ## PGN Requests diff --git a/examples/task_controller_client/section_control_implement_sim.cpp b/examples/task_controller_client/section_control_implement_sim.cpp index fa03fdd9..b2edc34b 100644 --- a/examples/task_controller_client/section_control_implement_sim.cpp +++ b/examples/task_controller_client/section_control_implement_sim.cpp @@ -82,7 +82,7 @@ bool SectionControlImplementSimulator::create_ddop(std::shared_ptradd_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", localizationData, std::vector(), clientName.get_full_name()); + retVal &= poolToPopulate->add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "A++1.0", localizationData, std::vector(), clientName.get_full_name()); retVal &= poolToPopulate->add_device_element("Sprayer", elementCounter++, 0, isobus::task_controller_object::DeviceElementObject::Type::Device, static_cast(ImplementDDOPObjectIDs::MainDeviceElement)); retVal &= poolToPopulate->add_device_process_data("Actual Work State", static_cast(isobus::DataDescriptionIndex::ActualWorkState), isobus::task_controller_object::Object::NULL_OBJECT_ID, static_cast(isobus::task_controller_object::DeviceProcessDataObject::PropertiesBit::MemberOfDefaultSet), static_cast(isobus::task_controller_object::DeviceProcessDataObject::AvailableTriggerMethods::OnChange), static_cast(ImplementDDOPObjectIDs::DeviceActualWorkState)); retVal &= poolToPopulate->add_device_process_data("Request Default PD", static_cast(ImplementDDOPObjectIDs::RequestDefaultProcessData), isobus::task_controller_object::Object::NULL_OBJECT_ID, 0, static_cast(isobus::task_controller_object::DeviceProcessDataObject::AvailableTriggerMethods::Total), static_cast(ImplementDDOPObjectIDs::RequestDefaultProcessData)); diff --git a/isobus/include/isobus/isobus/isobus_task_controller_client.hpp b/isobus/include/isobus/isobus/isobus_task_controller_client.hpp index f0178159..270b5114 100644 --- a/isobus/include/isobus/isobus/isobus_task_controller_client.hpp +++ b/isobus/include/isobus/isobus/isobus_task_controller_client.hpp @@ -544,7 +544,7 @@ namespace isobus /// @brief Enumerates the modes that the client may use when dealing with a DDOP enum class DDOPUploadType { - ProgramaticallyGenerated, ///< Using the isobus++ DeviceDescriptorObjectPool class + ProgramaticallyGenerated, ///< Using the AgIsoStack++ DeviceDescriptorObjectPool class UserProvidedBinaryPointer, ///< Using a raw pointer to a binary DDOP UserProvidedVector ///< Uses a vector of bytes that comprise a binary DDOP }; diff --git a/library.json b/library.json index ed3813a6..9f3d2860 100644 --- a/library.json +++ b/library.json @@ -1,11 +1,11 @@ { - "name": "Isobus++", + "name": "AgIsoStack++", "version": "1.0.0", "description": "The Free ISO11783 & J1939 CAN Stack", "keywords": "can, isobus, j1939, agritech, smart-farming, iso11783", "repository": { "type": "git", - "url": "https://github.com/ad3154/Isobus-plus-plus.git" + "url": "https://github.com/Open-Agriculture/AgIsoStack-plus-plus.git" }, "license": "MIT", "homepage": "https://isobusplusplus.com/", diff --git a/sonar-project.properties b/sonar-project.properties index 629f513a..c7630aa6 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,5 +1,5 @@ sonar.projectKey=ad3154_ISO11783-CAN-Stack -sonar.organization=isobus-plusplus +sonar.organization=open-agriculture # This is the name and version displayed in the SonarCloud UI. #sonar.projectVersion=1.0.0 diff --git a/sphinx/source/API Documentation.rst b/sphinx/source/API Documentation.rst index 38fd9948..c5d9bc92 100644 --- a/sphinx/source/API Documentation.rst +++ b/sphinx/source/API Documentation.rst @@ -23,11 +23,11 @@ Compiling the Doxygen locally You can also generate the Doxygen yourself and browse it locally. -From your project, change directory into the 'Isobus-plus-plus' folder. +From your project, change directory into the 'AgIsoStack-plus-plus' folder. .. code-block:: bash - cd Isobus-plus-plus + cd AgIsoStack-plus-plus Make sure you have Doxygen installed. diff --git a/sphinx/source/Concepts.rst b/sphinx/source/Concepts.rst index 9d8d2977..7a6ce02d 100644 --- a/sphinx/source/Concepts.rst +++ b/sphinx/source/Concepts.rst @@ -169,7 +169,7 @@ Here are the different transport layers this library provides, along with a shor * ISO11783 Adopts this protocol for a subset of standard GNSS messages * This protocol provides a means to stream up to 223 bytes of data, with the advantage that each frame retains the parameter group number and priority, where TP and ETP do not. -In general, the ISOBUS++ library will take care of choosing which protocol to use automatically. +In general, the AgIsoStack++ library will take care of choosing which protocol to use automatically. -Now that you understand these concepts, if you've done the other :doc:`tutorials `, check out the :doc:`Transport Layer Tutorial ` and `example `_. +Now that you understand these concepts, if you've done the other :doc:`tutorials `, check out the :doc:`Transport Layer Tutorial ` and `example `_. diff --git a/sphinx/source/FAQ.rst b/sphinx/source/FAQ.rst index 7485faa8..e760325f 100644 --- a/sphinx/source/FAQ.rst +++ b/sphinx/source/FAQ.rst @@ -24,7 +24,7 @@ If you are seeing something similar to this error: .. code-block:: text - /usr/bin/ld: Isobus-plus-plus/socket_can/libSocketCANInterface.so: undefined reference to `pthread_create' + /usr/bin/ld: AgIsoStack-plus-plus/socket_can/libSocketCANInterface.so: undefined reference to `pthread_create' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/isobus_hello_world.dir/build.make:86: isobus_hello_world] Error 1 make[1]: *** [CMakeFiles/Makefile2:285: CMakeFiles/isobus_hello_world.dir/all] Error 2 @@ -43,4 +43,4 @@ I have some other issue! ------------------------- Please submit an issue at the project's GitHub page: -https://github.com/ad3154/Isobus-plus-plus/issues +https://github.com/Open-Agriculture/AgIsoStack-plus-plus/issues diff --git a/sphinx/source/Installation.rst b/sphinx/source/Installation.rst index a92e0ba5..ffdb133e 100644 --- a/sphinx/source/Installation.rst +++ b/sphinx/source/Installation.rst @@ -10,7 +10,7 @@ Installation Supported Platforms -------------------- -We officially support building ISOBUS++ from source on the following platforms: +We officially support building AgIsoStack++ from source on the following platforms: * Ubuntu Linux (Non-WSL) * Raspberry Pi OS (Raspbian) * RHEL @@ -20,7 +20,7 @@ We officially support building ISOBUS++ from source on the following platforms: .. note:: - ISOBUS++ may also work on other platforms, and has been designed to accommodate different underlying hardware, but the ones listed above are the officially supported platforms. Additional platform support may be added if there is demand for it. + AgIsoStack++ may also work on other platforms, and has been designed to accommodate different underlying hardware, but the ones listed above are the officially supported platforms. Additional platform support may be added if there is demand for it. Using a supported platform will get you the best support for any issues you may encounter. @@ -37,17 +37,17 @@ First, lets prepare the dependencies we'll need to compile the CAN stack. These sudo apt install build-essential cmake git -Downloading ISOBUS++ ----------------------- +Downloading AgIsoStack++ +------------------------- In your project that you want to add the CAN stack to, add the CAN stack as a submodule. .. code-block:: bash - git submodule add https://github.com/ad3154/Isobus-plus-plus.git + git submodule add https://github.com/Open-Agriculture/AgIsoStack-plus-plus.git git submodule update --init --recursive -This will place the CAN stack in a folder within your project called 'Isobus-plus-plus'. +This will place the CAN stack in a folder within your project called 'AgIsoStack-plus-plus'. Building the CAN Stack ----------------------- @@ -57,14 +57,14 @@ There are a couple options for the next step. CMake: ^^^^^^ -If your project is already using CMake to build your project, or this is a new project, the suggested way to get the library compiling is to add the 'Isobus-plus-plus' folder we just created to your CMake as a subdirectory. +If your project is already using CMake to build your project, or this is a new project, the suggested way to get the library compiling is to add the 'AgIsoStack-plus-plus' folder we just created to your CMake as a subdirectory. .. code-block:: text set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) - add_subdirectory("Isobus-plus-plus") + add_subdirectory("AgIsoStack-plus-plus") ... @@ -75,6 +75,6 @@ Using CMake has a lot of advantages, such as if the library is updated with addi Non-CMake: ^^^^^^^^^^ -If you are not using CMake, just make sure to add all the files from the 'Isobus-plus-plus/isobus' folder, the 'Isobus-plus-plus/hardware_integration' folder, and the 'Isobus-plus-plus/utility' folder to your project so they all get compiled. +If you are not using CMake, just make sure to add all the files from the 'AgIsoStack-plus-plus/isobus' folder, the 'AgIsoStack-plus-plus/hardware_integration' folder, and the 'AgIsoStack-plus-plus/utility' folder to your project so they all get compiled. -You'll want to make sure the 'Isobus-plus-plus/isobus/include/isobus/isobus' folder is part of your include path as well as 'Isobus-plus-plus/utility/include/isobus/utility' and 'Isobus-plus-plus/hardware_integration/include/isobus/hardware_integration'. +You'll want to make sure the 'AgIsoStack-plus-plus/isobus/include/isobus/isobus' folder is part of your include path as well as 'AgIsoStack-plus-plus/utility/include/isobus/utility' and 'AgIsoStack-plus-plus/hardware_integration/include/isobus/hardware_integration'. diff --git a/sphinx/source/Tutorials/Debug Logging.rst b/sphinx/source/Tutorials/Debug Logging.rst index 495a87d5..841401b4 100644 --- a/sphinx/source/Tutorials/Debug Logging.rst +++ b/sphinx/source/Tutorials/Debug Logging.rst @@ -50,4 +50,4 @@ The logger must be static or otherwise not go out of scope, as the CAN stack sav That's all there is to it! Now, when you run your program you should see some logging messages are written to your console. -A full example of this is included with the `VT example program `_. +A full example of this is included with the `VT example program `_. diff --git a/sphinx/source/Tutorials/The ISOBUS Hello World.rst b/sphinx/source/Tutorials/The ISOBUS Hello World.rst index 02b0926f..4b78fb44 100644 --- a/sphinx/source/Tutorials/The ISOBUS Hello World.rst +++ b/sphinx/source/Tutorials/The ISOBUS Hello World.rst @@ -38,7 +38,7 @@ Let's set up a standard, empty C++ program in a file called "main.cpp", and incl The file `"can_network_manager.hpp" `_ is the header file for the main interface for the CAN stack. -The file `"socket_can_interface.hpp" `_ is a hardware tie-in for socket CAN. +The file `"socket_can_interface.hpp" `_ is a hardware tie-in for socket CAN. The file `"can_partnered_control_function.hpp" `_ Defines the interface for a *partnered control function*, which is another device you want to communicate with. @@ -412,12 +412,12 @@ This will send our 8 byte message of all zeros to the global address, using the Compiling The Program (Using CMake) ------------------------------------ -Assuming you followed the :doc:`installation instructions <../Installation>` the program we just wrote should be in a folder, and the library should be in a directory called Isobus-plus-plus, like this: +Assuming you followed the :doc:`installation instructions <../Installation>` the program we just wrote should be in a folder, and the library should be in a directory called AgIsoStack-plus-plus, like this: .. code-block:: bash ls - Isobus-plus-plus main.cpp + AgIsoStack-plus-plus main.cpp To get everything compiling into a program using CMake, let's add a CMakeLists.txt file. @@ -437,7 +437,7 @@ Add the following to a new file called CMakeLists.txt: set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) - add_subdirectory("Isobus-plus-plus") + add_subdirectory("AgIsoStack-plus-plus") add_executable(isobus_hello_world main.cpp) diff --git a/sphinx/source/Tutorials/Transport Layer.rst b/sphinx/source/Tutorials/Transport Layer.rst index 5a0a8297..6b49e505 100644 --- a/sphinx/source/Tutorials/Transport Layer.rst +++ b/sphinx/source/Tutorials/Transport Layer.rst @@ -73,6 +73,6 @@ You can do this by calling :code:`isobus::FastPacketProtocol::Protocol.register_ .. note:: - A full example of both sending and receiving can be found in the `examples folder `_ of this project. + A full example of both sending and receiving can be found in the `examples folder `_ of this project. That's it for this tutorial! Sending 100MB CAN messages has never been easier. diff --git a/sphinx/source/Tutorials/Virtual Terminal Basics.rst b/sphinx/source/Tutorials/Virtual Terminal Basics.rst index bc2942e0..1c9e3310 100644 --- a/sphinx/source/Tutorials/Virtual Terminal Basics.rst +++ b/sphinx/source/Tutorials/Virtual Terminal Basics.rst @@ -29,7 +29,7 @@ Let's start our program fresh, with a folder containing only the CAN stack. mkdir vt_example cd vt_example - git clone https://github.com/ad3154/Isobus-plus-plus.git + git clone https://github.com/Open-Agriculture/AgIsoStack-plus-plus.git Create the file `main.cpp` as shown below inside that folder with the requisite control functions. @@ -184,9 +184,9 @@ The `utility` folder in the CAN stack contains a helper function to read standar You can make one for yourself if you have access to an ISOBUS object pool designer tool of some kind, but for our purposes, one has been included in the examples folder for you called `VT3TestPool.iop`. -For this example, let's `download `_ that object pool (or grab it from the examples folder within the CAN stack), and place it in the same directory as your main.cpp file. +For this example, let's `download `_ that object pool (or grab it from the examples folder within the CAN stack), and place it in the same directory as your main.cpp file. -Let's also grab `this header file `_ and place it in the same folder. +Let's also grab `this header file `_ and place it in the same folder. This file is for convenience, and tells us what objects are inside the IOP file along with their object ID. Files like these are often created by VT object pool designer programs to give nice, human-readable names to your objects so that instead of referencing object 5001, we can instead reference it by the nicer name `acknowledgeAlarm_SoftKey` for example. @@ -562,7 +562,7 @@ We'll start off like we did in "ISOBUS Hello World". set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) - add_subdirectory("Isobus-plus-plus") + add_subdirectory("AgIsoStack-plus-plus") add_executable(vt_example main.cpp) @@ -600,4 +600,4 @@ Now you should be able to build and run the program! That's it for this Tutorial. You should be able to run it as long as you have a VT and a supported CAN driver, see the test pool be uploaded, and be able to interact with all buttons on screen! -If you would like to see more advanced VT tutorials or have other feedback, please visit our `GitHub page `_ and feel free to open a discussion! We're friendly, we promise. +If you would like to see more advanced VT tutorials or have other feedback, please visit our `GitHub page `_ and feel free to open a discussion! We're friendly, we promise. diff --git a/sphinx/source/index.rst b/sphinx/source/index.rst index 79fcf32b..b73d588c 100644 --- a/sphinx/source/index.rst +++ b/sphinx/source/index.rst @@ -20,7 +20,7 @@ Overview ========== -**ISOBUS++ is a free and open source library that provides easy and robust ISO 11783 and J1939 CAN communication functionality using C++** +**AgIsoStack++ is a free and open source library that provides easy and robust ISO 11783 and J1939 CAN communication functionality using C++** .. note:: @@ -39,6 +39,6 @@ Table of Contents: * :doc:`FAQ ` -`Visit us on GitHub `_ +`Visit us on GitHub `_ diff --git a/test/ddop_tests.cpp b/test/ddop_tests.cpp index 8892aa97..1acd13b2 100644 --- a/test/ddop_tests.cpp +++ b/test/ddop_tests.cpp @@ -66,7 +66,7 @@ TEST(DDOP_TESTS, CreateSprayerDDOP) // Make a test pool, don't care about our ISO NAME, Localization label, or extended structure label for this test // Set up device - EXPECT_EQ(true, testDDOP.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOP.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOP.add_device_element("Sprayer", static_cast(SprayerDDOPObjectIDs::MainDeviceElement), 0, task_controller_object::DeviceElementObject::Type::Device, static_cast(SprayerDDOPObjectIDs::MainDeviceElement))); EXPECT_EQ(true, testDDOP.add_device_process_data("Actual Work State", static_cast(DataDescriptionIndex::ActualWorkState), task_controller_object::Object::NULL_OBJECT_ID, static_cast(task_controller_object::DeviceProcessDataObject::PropertiesBit::MemberOfDefaultSet), static_cast(task_controller_object::DeviceProcessDataObject::AvailableTriggerMethods::OnChange), static_cast(SprayerDDOPObjectIDs::DeviceActualWorkState))); EXPECT_EQ(true, testDDOP.add_device_value_presentation("minutes", 0, 1.0f, 1, static_cast(SprayerDDOPObjectIDs::TimePresentation))); @@ -117,8 +117,8 @@ TEST(DDOP_TESTS, DDOPDetectDuplicateID) DeviceDescriptorObjectPool testDDOP; LanguageCommandInterface testLanguageInterface(nullptr, nullptr); - EXPECT_EQ(true, testDDOP.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); - EXPECT_EQ(false, testDDOP.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOP.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(false, testDDOP.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOP.add_device_value_presentation("m", 0, 0.001f, 0, static_cast(SprayerDDOPObjectIDs::LongWidthPresentation))); EXPECT_EQ(false, testDDOP.add_device_value_presentation("m", 0, 0.001f, 0, static_cast(SprayerDDOPObjectIDs::LongWidthPresentation))); @@ -211,11 +211,11 @@ TEST(DDOP_TESTS, DeviceElementDesignatorTests) LanguageCommandInterface testLanguageInterface(nullptr, nullptr); - EXPECT_EQ(true, testDDOPVersion3.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOPVersion3.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOPVersion3.add_device_element("Sprayer But like with a super long designator, just a really impractical one", static_cast(SprayerDDOPObjectIDs::MainDeviceElement), 0, task_controller_object::DeviceElementObject::Type::Device, static_cast(SprayerDDOPObjectIDs::MainDeviceElement))); - EXPECT_EQ(true, testDDOPVersion4.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOPVersion4.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOPVersion4.add_device_element("Sprayer But like with a super long designator, just a really impractical one", static_cast(SprayerDDOPObjectIDs::MainDeviceElement), 0, task_controller_object::DeviceElementObject::Type::Device, static_cast(SprayerDDOPObjectIDs::MainDeviceElement))); - EXPECT_EQ(true, testDDOPVersion4_2.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOPVersion4_2.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOPVersion4_2.add_device_element("Sprayer But like with a super long designator, just a really impractical one, it's really getting out of hand with this designator", static_cast(SprayerDDOPObjectIDs::MainDeviceElement), 0, task_controller_object::DeviceElementObject::Type::Device, static_cast(SprayerDDOPObjectIDs::MainDeviceElement))); auto tempPD = testDDOPVersion3.get_object_by_id(static_cast(SprayerDDOPObjectIDs::MainDeviceElement)); @@ -259,7 +259,7 @@ TEST(DDOP_TESTS, ProcessDataTests) DeviceDescriptorObjectPool testDDOPVersion4(4); LanguageCommandInterface testLanguageInterface(nullptr, nullptr); - EXPECT_EQ(true, testDDOPVersion3.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOPVersion3.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOPVersion3.add_device_element("Sprayer", static_cast(SprayerDDOPObjectIDs::MainDeviceElement), 0, task_controller_object::DeviceElementObject::Type::Device, static_cast(SprayerDDOPObjectIDs::MainDeviceElement))); EXPECT_EQ(true, testDDOPVersion3.add_device_process_data("This is a very long designator that should get truncated", static_cast(DataDescriptionIndex::ActualWorkState), task_controller_object::Object::NULL_OBJECT_ID, static_cast(task_controller_object::DeviceProcessDataObject::PropertiesBit::MemberOfDefaultSet), static_cast(task_controller_object::DeviceProcessDataObject::AvailableTriggerMethods::OnChange), static_cast(SprayerDDOPObjectIDs::DeviceActualWorkState))); @@ -268,7 +268,7 @@ TEST(DDOP_TESTS, ProcessDataTests) ASSERT_NE(nullptr, tempPD); EXPECT_EQ(32, tempPD->get_designator().size()); - EXPECT_EQ(true, testDDOPVersion4.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOPVersion4.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOPVersion4.add_device_element("Sprayer", static_cast(SprayerDDOPObjectIDs::MainDeviceElement), 0, task_controller_object::DeviceElementObject::Type::Device, static_cast(SprayerDDOPObjectIDs::MainDeviceElement))); EXPECT_EQ(true, testDDOPVersion4.add_device_process_data("This is an even longer designator that should get truncated ideally to 128 characters in length but in reality not very many TCs will support this kind of long designator", static_cast(DataDescriptionIndex::ActualWorkState), task_controller_object::Object::NULL_OBJECT_ID, static_cast(task_controller_object::DeviceProcessDataObject::PropertiesBit::MemberOfDefaultSet), static_cast(task_controller_object::DeviceProcessDataObject::AvailableTriggerMethods::OnChange), static_cast(SprayerDDOPObjectIDs::DeviceActualWorkState))); @@ -287,7 +287,7 @@ TEST(DDOP_TESTS, PropertyTests) DeviceDescriptorObjectPool testDDOPVersion4_2(4); LanguageCommandInterface testLanguageInterface(nullptr, nullptr); - EXPECT_EQ(true, testDDOPVersion3.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOPVersion3.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOPVersion3.add_device_element("Sprayer", 1, 0, isobus::task_controller_object::DeviceElementObject::Type::Device, static_cast(SprayerDDOPObjectIDs::MainDeviceElement))); EXPECT_EQ(true, testDDOPVersion3.add_device_process_data("Total Time", static_cast(isobus::DataDescriptionIndex::EffectiveTotalTime), static_cast(SprayerDDOPObjectIDs::TimePresentation), static_cast(isobus::task_controller_object::DeviceProcessDataObject::PropertiesBit::MemberOfDefaultSet) | static_cast(isobus::task_controller_object::DeviceProcessDataObject::PropertiesBit::Settable), static_cast(isobus::task_controller_object::DeviceProcessDataObject::AvailableTriggerMethods::Total), static_cast(SprayerDDOPObjectIDs::DeviceTotalTime))); EXPECT_EQ(true, testDDOPVersion3.add_device_element("Connector", 2, static_cast(SprayerDDOPObjectIDs::MainDeviceElement), isobus::task_controller_object::DeviceElementObject::Type::Connector, static_cast(SprayerDDOPObjectIDs::Connector))); @@ -302,7 +302,7 @@ TEST(DDOP_TESTS, PropertyTests) EXPECT_EQ(std::static_pointer_cast(tempProperty)->get_table_id(), "DPT"); EXPECT_EQ(std::static_pointer_cast(tempProperty)->get_device_value_presentation_object_id(), 65535); - EXPECT_EQ(true, testDDOPVersion4.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOPVersion4.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOPVersion4.add_device_element("Sprayer", 1, 0, isobus::task_controller_object::DeviceElementObject::Type::Device, static_cast(SprayerDDOPObjectIDs::MainDeviceElement))); EXPECT_EQ(true, testDDOPVersion4.add_device_process_data("Total Time", static_cast(isobus::DataDescriptionIndex::EffectiveTotalTime), static_cast(SprayerDDOPObjectIDs::TimePresentation), static_cast(isobus::task_controller_object::DeviceProcessDataObject::PropertiesBit::MemberOfDefaultSet) | static_cast(isobus::task_controller_object::DeviceProcessDataObject::PropertiesBit::Settable), static_cast(isobus::task_controller_object::DeviceProcessDataObject::AvailableTriggerMethods::Total), static_cast(SprayerDDOPObjectIDs::DeviceTotalTime))); EXPECT_EQ(true, testDDOPVersion4.add_device_element("Connector", 2, static_cast(SprayerDDOPObjectIDs::MainDeviceElement), isobus::task_controller_object::DeviceElementObject::Type::Connector, static_cast(SprayerDDOPObjectIDs::Connector))); @@ -314,7 +314,7 @@ TEST(DDOP_TESTS, PropertyTests) ASSERT_NE(nullptr, tempProperty); EXPECT_EQ(tempProperty->get_designator().size(), 43); - EXPECT_EQ(true, testDDOPVersion4_2.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOPVersion4_2.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOPVersion4_2.add_device_element("Sprayer", 1, 0, isobus::task_controller_object::DeviceElementObject::Type::Device, static_cast(SprayerDDOPObjectIDs::MainDeviceElement))); EXPECT_EQ(true, testDDOPVersion4_2.add_device_process_data("Total Time", static_cast(isobus::DataDescriptionIndex::EffectiveTotalTime), static_cast(SprayerDDOPObjectIDs::TimePresentation), static_cast(isobus::task_controller_object::DeviceProcessDataObject::PropertiesBit::MemberOfDefaultSet) | static_cast(isobus::task_controller_object::DeviceProcessDataObject::PropertiesBit::Settable), static_cast(isobus::task_controller_object::DeviceProcessDataObject::AvailableTriggerMethods::Total), static_cast(SprayerDDOPObjectIDs::DeviceTotalTime))); EXPECT_EQ(true, testDDOPVersion4_2.add_device_element("Connector", 2, static_cast(SprayerDDOPObjectIDs::MainDeviceElement), isobus::task_controller_object::DeviceElementObject::Type::Connector, static_cast(SprayerDDOPObjectIDs::Connector))); @@ -333,11 +333,11 @@ TEST(DDOP_TESTS, PresentationTests) DeviceDescriptorObjectPool testDDOPVersion4(4); LanguageCommandInterface testLanguageInterface(nullptr, nullptr); - EXPECT_EQ(true, testDDOPVersion3.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOPVersion3.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOPVersion3.add_device_value_presentation("mm", 0, 1.0f, 0, static_cast(SprayerDDOPObjectIDs::ShortWidthPresentation))); EXPECT_EQ(true, testDDOPVersion3.add_device_value_presentation("mm but like with an abnormally long designator to test if we handle it correctly", 0, 1.0f, 0, static_cast(SprayerDDOPObjectIDs::LongWidthPresentation))); - EXPECT_EQ(true, testDDOPVersion4.add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); + EXPECT_EQ(true, testDDOPVersion4.add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", testLanguageInterface.get_localization_raw_data(), std::vector(), 0)); EXPECT_EQ(true, testDDOPVersion4.add_device_value_presentation("mm but basically an outragious designator that makes no sense and should never be used. Ideally his is always 32 chars or less, but using a long string to test byte max.", 0, 1.0f, 0, static_cast(SprayerDDOPObjectIDs::ShortWidthPresentation))); EXPECT_EQ(true, testDDOPVersion4.add_device_value_presentation("mm but like with an abnormally long designator to test if we handle it correctly", 0, 1.0f, 0, static_cast(SprayerDDOPObjectIDs::LongWidthPresentation))); diff --git a/test/tc_client_tests.cpp b/test/tc_client_tests.cpp index eb28c99e..be797c61 100644 --- a/test/tc_client_tests.cpp +++ b/test/tc_client_tests.cpp @@ -806,7 +806,7 @@ TEST(TASK_CONTROLLER_CLIENT_TESTS, StateMachineTests) // Make a test pool, don't care about our ISO NAME, Localization label, or extended structure label for this test // Set up device interfaceUnderTest.test_wrapper_set_state(TaskControllerClient::StateMachineState::Disconnected); - ASSERT_EQ(true, testDDOP->add_device("Isobus++ UnitTest", "1.0.0", "123", "I++1.0", { 0x01 }, std::vector(), 0)); + ASSERT_EQ(true, testDDOP->add_device("AgIsoStack++ UnitTest", "1.0.0", "123", "I++1.0", { 0x01 }, std::vector(), 0)); interfaceUnderTest.configure(testDDOP, 6, 64, 32, false, false, false, false, false); // Now try it with a valid structure label