From 644e21c04fcd02d2d9b557c18a931e72e641e0e5 Mon Sep 17 00:00:00 2001 From: Yuri Blankenstein Date: Thu, 6 Nov 2025 13:24:40 +0100 Subject: [PATCH 1/2] [#15] Updated developer documentation --- .../adoc/_section_reconstructor.adoc | 6 ++++-- .../nl.esi.pps.doc.developer/adoc/index.adoc | 13 ++++++------- .../images/install-pde.png | Bin 32268 -> 39290 bytes .../ui/handlers/ReconstructHandler.java | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/plugins/nl.esi.pps.doc.developer/adoc/_section_reconstructor.adoc b/plugins/nl.esi.pps.doc.developer/adoc/_section_reconstructor.adoc index 160cb32..46ff294 100644 --- a/plugins/nl.esi.pps.doc.developer/adoc/_section_reconstructor.adoc +++ b/plugins/nl.esi.pps.doc.developer/adoc/_section_reconstructor.adoc @@ -16,15 +16,17 @@ include::_initCommon.adoc[] The TMSC textual syntax allows you to create small example traces, to explore the PPS features. The textual syntax is not developed for large traces as it will suffer from scalability issues. Besides that, it is assumed that when using PPS in another domain, traces in another format are already available. -In both cases it is advised to write your own _reconstructor_ that converts these trace directly into a <> instance. +In both cases it is advised to write your own _reconstructor_ that converts these trace directly into a <> instance. This section gives an example on how to create such a custom reconstructor. The custom TMSC reconstructor example is included in the PPS distribution, in the `examples` directory. The example can be easily imported into your development environment by using the menu:File[Import...] menu and then choose to import menu:General[Existing Projects into Workspace] from the tree. -Now continue the wizard and select all the projects from the `examples` directory to be imported. +Now continue the wizard and select all the projects from the `examples` directory to be imported. TIP: For more information on creating custom EMF resources or using extension points, please read the Eclipse and EMF documentation. +TIP: To run PPS with the custom TMSC reconstructor example, please use the context menu on the `nl.esi.pps.tmsc.reconstruct.ui` project and select menu:Run As[Eclipse Application]. + First choose a syntax for your trace (e.g., `tmsctrace` in our example) and register it by means of the `org.eclipse.emf.ecore.extension_parser` extension point in the <> of your plugin. [[plugin-xml-nl.esi.pps.tmsc.reconstruct]] diff --git a/plugins/nl.esi.pps.doc.developer/adoc/index.adoc b/plugins/nl.esi.pps.doc.developer/adoc/index.adoc index ed836c8..940acd0 100644 --- a/plugins/nl.esi.pps.doc.developer/adoc/index.adoc +++ b/plugins/nl.esi.pps.doc.developer/adoc/index.adoc @@ -38,18 +38,17 @@ This section describes how to convert your PPS to an Eclipse PDE to customize PP . First extract the PPS distribution, choose a PPS version (i.e., windows or linux), extract it and start it, e.g. `pps.exe`. . Now use the menu:Help[Install New Software...] menu to install the `Eclipse Plugin Development Tools` from the Eclipse 2024-09 (i.e., 4.33) update site: https://download.eclipse.org/eclipse/updates/4.33/[] + + -image::{imgsdir}/install-pde.png[width=869,height=705] +image::{imgsdir}/install-pde.png[width=869,height=638] . Continue the wizard using the btn:[Next] button and finally the btn:[Finish] button. When asked, choose to restart the Eclipse IDE. . (The next steps are optional, yet advised) Install the PPS sources by again using the menu:Help[Install New Software...] menu. - Now choose to add an update site by clicking the btn:[Add..] button. -. In the `Add Repository` dialog, choose to add an archived update site by clicking the btn:[Archive...] button. - Navigate to the directory where the PPS distribution is extracted and select the `nl.esi.pps.product-____.zip` archive. - Finally click the btn:[Add] button in the dialog to add the repository. -. Now select the `PPS` category in the wizard and continue the wizard using the btn:[Next] button and finally the btn:[Finish] button. + Now select the `PPS` category from the PPS (e.g., v0.30.0) update site: https://tno.github.io/PPS/update-site/v0.30.0/[] + + Please make sure to select the right update site version for your installation. + You can see your installed PPS version from the menu:Help[About PPS vX.X] menu. +. Continue the wizard using the btn:[Next] button and finally the btn:[Finish] button. When asked, choose to restart the Eclipse IDE. - + Your environment is now ready for extending PPS, e.g., <> or <>. TIP: To start a PPS including your extensions, simply select one of your projects in the project/package explorer view and use its context menu (i.e., right mouse click) to menu:Run As[Eclipse Application]. diff --git a/plugins/nl.esi.pps.doc.developer/images/install-pde.png b/plugins/nl.esi.pps.doc.developer/images/install-pde.png index e80a55151b6500d57e514ae11cd0986859de21c1..160726dd6fe7ea12cd4ece821dcd6e89954248c1 100644 GIT binary patch literal 39290 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

5mtZS&;R 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 literal 32268 zcmbTe2Ut^G(=Ln^Q2`%O5fD(S0ulkKp{Pjj9R&hXr1uh%08vyB5fBg%A|N&NUIY>% zAiYU1p-685q=XU(IUC;RdB69&{{Nis{C_Ucy?59vvu4fQbI+{V3DMS6qP@s`k&23n zRz>-#E)~@o8!D>Pbr((pSB%z@l!5E6}?c?k0T^1dw`qH0S;+Oq0bg**-lIhqlLNwIVOC&54Znj># z_d&hl%RRnm-Rt*wxF6lq<#_6Fheqc#O$Z0g6|M`nsjh$@efp_sNzHNPpmv?*)%*SA z#t3%vf?)FqgcUiU;~bmZkz8{Gn4^H=b>=VkZpsXZ-O}ox7k_y+MuHv?KK%{|nEdTa zu)lzlXDy+?zb#K7XQ`+j-Pq&+PD%tmF@mL}x{_qT4H;p&vr2ibV|RUg zd`A6&zseJ_Sx~Td9VwZMw@s?@UWr`=2K_Nw?glwblOv^#*Ff1X^bZamwIlaI6e8|u zh_Y->&Lto0;vvp%ZolZxP*E9ct+iT*#=iZ!Mi?peY359PXH){*PM)NY<+ct(ksF{R zGLEwATDw0lcVJ8D@Hr<-TI2)^=o=xloD-cvQR>7WnQ+{(fE?COi@Cc(qb^bCDa{l; z0pU!a`ARnkW_JPsylPG_bR`}%$Q?FJ9$+UAM!EwA`}#zrq@={f#l^&Uf_rQ4XXatP zu%2xNlwtAixg<>IXYUk8LuyM5;{l08I6B0nH%v`Uy?*^VJ3IU6sE0S1uiXl;q0Zda zw{rNRuQ9UUXsm~ABvZDKM@C4Zk*E%mJcJ}iQ1*IfBFrh+NfeT_R7+XLB_L-bIgJV- zSL^2Vzz|I8dxb*p65}q(YY_qRRw!)fMVy$JvJ>Jq|{eCT&FO5O2}=c8lP1Xlv1$Znapxf&!|XQ#jy_K zkd(EDWHR}0vF=jJ)ir*l?C5Livt{Makre>rD_QE-jk^E*sz-Id>D_-B@v-66)YNo; zW%8Yk>H3pLq16coYf;7MJrxxOmL3?e&jOZQ!vDl_m)Eu~}2C zB>a5Z`ktZh>Xr2`&Ta&s-CwKoYfJM5OPK}tj{W|Jlqf=}@n=s6m=i9dQtW6^QEpqE zVN$_#@+RDCVGYC1;B5T$d!Nh${Gj;#7m>#j6tQ)7c6U!Cu_S-^`LvW6*5R|QQMub$ zM(jKhb1<>0sw#e@W+obHxqh!rOxg$S=vGmR3_7{D#0j=w_YCh??A%;@8oyHavfh%i z=u8u8_D1A*Uazk6-k>h6YztC|W;_VuzSreL*KsncVX84l$MEzEor_yzA!~IZ1+O>4k2ZE{iw7rqVv~9@*CLw=B25xG ziL9LB_~61yT60I%>RxHzD*NA-Ruo%W^1{kN*Ej);NZZ{ePN2=n4@5yek;e;W$P>p% z2}W*tGu~+CwN>TzUX}O|gmYI#V;3a79kP1W$Hx zv7^3H(-g|NL7Yoij2E*O*^$4V#IQL6f;WQp?_T%;=*=F zh=n6JI*1cm1wKfxj09NEJo@?d;Sc8&yLD$3P!v;Va;8RngQZ?vv^t=<51z0M%BGx5 zYW;LNP3TT{&v<`W&5LEe;_l~aflk7601TIhqvdhu@#zBzg-?%rxtdG2LuRy zFgsVUJlFVpwL&>6RI%jGr&aO5mO1JNxI{xjrtrHLUh1^o2`iV*Zt>`$#rbZ|L&vus zIpX_yZ>01#h2w>eEAQi$SKq~!Z;JhWuNnLLNZv)L1N z4=G=J(wqLUi{@wqT76>W1t0K^9yFQ2n_RrZ$Lv^Z`?+Anlx<>CM1fc0cYQ48W)qj( zgL98n(Cq7vxctvGX7*`mhFr^7v;+^Gf%~NObKR-Q{AB+7^mD(@lGm0rW*eojw`AVk z*I(!j?dJ{aTrvyfmY-SB$h!exxt<{CX!2+>A_vL<*j3`^^eizV7NnPRM`mqRktST; zO5}}{#4;i4P1-(nxD?ojR=tcEF76#R;lxrq_RzPscD=tmDLSqu!kmz22-z;NNMBuj zTFn|Ag-N&ZKuyxU!-_eLjHu%#R6c)^?9~!yeX4l<2D)EN$Q%DqJ+R+A$FNQZJHA+}xjNz1 zKcd57WlMSLxohW-_{3Pa0%u2Qj3n!mV>E>Tep#wkPkr(BJd6u0J6-!_IU z;l+f{yGo6UGmj&}NUMq<(Htlfn40G~utqr;3AeSElg&moTBZc4O?xHpO-t3`zr@yu zP1A8+UoSv>(p?Tt2{@q{4`x)=uijHJFj}Fjo?gsqNy61$ty$)qVxOq%OYimy(X>%(+{8~@x_loQb0jZojE(^7>vtue)5 ze6!tu6T&6{^I$*7+xqivdA8AdP>AN<)th?Y)9@_zAN4+P_Y!fT2hXhdo@5TrWPp=d z7Ye&q`QTr`D836m9p`M#0OJ!{L6mM%}eF;o9SXHMaOXh$6H zlaY^RCC_M#r-_dSfhLyaJh8hC?Pf}HtJ1!;SUy+}7i*l~TUxma{)D8@w;cxtVRt&Z zty+D`BrcfDvuI$l$*(uA+}J*!s)Qv{+v?Xp?#aeZy-Xh$ZC<_n*!{taQSR@hfHK}v{5`ir)XaiGUbiHS z6d_J4iS|qJ_JprhBT_IdY*Tl}xAi2{EepNa5KUx61oIvQ8Cc)Cg<@kXHIEYH7icq% zPeHhqU|liAp0m%}f1zo~$)+ok0mWOt_QUDBD(-(`q<(2qjZTn4ui!HaD%By5NtjV- z_YC`KkD0v;6RVS0V`EVdV3&;iGTKe;cl6-`u5mF~VM|7Eo?0mLtwJJW&3WEY_&~Qg zW>nZWrIr$%yUY$^lOC$2s6PbNB24ER>qd5J<72zBo4T@tc3M&S49m0%G@&PB$NYE; zgfQ*}6>9=Z(&t&;XWAYqKYw~OSgse5_Cxcd7{Q7K59yO|BfC8@YiY?owtja zF-s##*JtO}I2omOlI?TBb90T*i1xvLjboB;JaUK`9+8`nd@vy+F#?vp_gMQ$N?Yiq zw+iHybTi|A++^e7pGFcLv7x$qVv+nucQ<8g^+2<7^(eh@UV-(-375!ymCOi)DlnEN?fVhWg5?$TW|ba-K&!onnmbQaVerBw;3$0J z*c-@W(FfWfYuQ7~T2m0Hbi81b$W9sOgTw!`Z{by~9IewdVYtwfXR* zScYUjX)#f0VIkp%Vp0#JdgP>pECT#0{l#_2oC=`ZIY_i!?~C2vPve}xoVr$JtY!anv=}?rtqLb&NkED;vAi;2Bqe zbXz9w%E6abtw30Br)|mHR?`!%(Iy$}g!^VuLr44^{s5qOMUJ;yOo zw&2!&v9XglMGrC^_a>Nn;%)u?*>`sRe@)h)anQ<95MsH@=?`B&e~FO zMEBUD3}AaRxiY*UC~M8|y%##EXV5kwmiR$dv;64e`$1rA=wNw;&-&1pG(VFT^&x`T_bKz zQ_H`J;{tW5cSg{6K_@YI_?pWMFLXr?gV-82ZD`%^mSsDdnkVPyn>qWF;}YOn<|~rk z180A(-M;O^M$X%6LGy94Nlym+HpNrh;&+nl$31h1WUT~lf#t%dxkY>PkwG@Cp+pqh z_hz_-9(Fl9m-e|$n`BYP{=n(beDtgOA&5Wsy8OFA)7Aq*Y+2wsFBR3L8WB0Up26{* zqsXl|mgij%`=eRQz7c-$6;wBL_tx49O)VSiY~xbv{!~F#c)RD-8!Vb*Sogg(VuR;Z zCX`lpqV(WVnmLf#vVHHFKrF*|gX5|-f$+ZbY@tUB%+1LrHR=Ax^Z*ceH`yMKs4idg zS^<2#M%K`kzZOwq-y9r<51)h|4CjkSh#k5xZKig8DEIc!@)6JWnX>h3dPLC{oj3n@ z+A+6R^+PM9c!bOR=Htovscy4 z*Xv%(vNFBFNJvT#4M_~aT?(ceYQ)3Gus#-Rq?D>42G9GpYd(|T4@&cub`uZFu((|U zZS=MAnvke#14D`2_tqo_N)8xQK9FP-Vy+Q!&$jEQS%O#MBtSW3H-j3r|0nr8paB8X zy8iOx8<&ijN4w0N!MT+pM%Ip1V{WDSGYmv>54Hw@*eNehbaKG-j0lf;8~AgR=8J2F z=*DA;j6p9p4ozJf#_YQN^tOIm$qoCIXYc2~Np|*K@7p_6 zEnW9gc(qk=1;@cX8{rTcS3g~|yo2any-4{}BCc)lTjDqurxJOr!WTNGo5^BhmC=gm zO{23^KXQb?a&pz=H+{(vSIqFQfFpSD#Avsf9)5qNQ#_$SOq`vtHa0#|e6Uqd#>M0EN2*!^ybtXc_PV3tjA#7T<}i^&N|h|37c$w=<@P2Q5-Y_;ul?z9C>eCnwD z;!Lw;NlG)7BahEaC{nH0nH%Mr@I89U`#>}Y=XFD9ReB4&rtK7Ej7?}qiAm&*KF(4R zP}|DF|Ea~yB6!GT36z2iCI|dI(lTarhVgg1)R1z#IqTHt~e7Wqoj$eoiX+}K=B6fp!Ub_BezzQTVIYw1RU6w#J^gsoPiZvg-n{4b?<%4 z{~#kQX!D&f;5He>(>uS7Z{3$Km|*#$o4j(ZV5s!hqrNir2=jSm^fTxc-?YlR5`+ki z4o-Qm;Dpq!vNwW8w{V|2Xvj(1M2P}n=lZfFz!WHMeI$juEGfDs01J2O2{nEqZu3A$e_*GChZ=PsWcKY6FD=^J zQ6uppFwfZ?fTt9f#>tYlNyOL!ehnETW`tlnPo0iyjqKj~=_^+cvbM%JdJ)Ye5#yiQrGOL5uXLQd|@510%^Bv${y zCpKHX&=I4^DD;V?xb07vU)y}R+o0FBt8_qrG#qW-_|`7s{!TNs?!q>{S2d9oMJ)!bBW8oer%$_yD^K;wi`!>Xwq~;*(yF6x5BZ)#1(FRDwxp@PX~p-|t51>vmV-epS`JMj`8Pwe!J|{Q8>Q_Jk6ep14y~r~Yc8f$h zhgG*8sJ4c(*DUAnd|)oKL%U#M7Kx`?+~^#Vmq$2X*-#Y;m4>yq$-G&BxtTU6>=1hw#Wv-7iX%RwV{dNb-8f~$Ae zStpE!kiXwJ28Xjry6utusiA}soJIvb9Twl~gTSAhSb8k<-(%BjM)K-o+>7*dpQVWSqo>k|7dCbsxnOz~_? zwS7b4L%k1?`_qR?yz@J&RanP`pGVmIV7g=}KPSrTh8ix=+Qe?fY-9V7W@VX~qcd(| z&|Od0%GOBU2xvQo*!+#u>cixygiQt=(apalK^$IVof29VQ zcu&tX5YB&=lwVLhRpXD{in>;4njlBqIE;Mb>0L9wL--2zvp8&tY*&h4m+|sif6ZC5 z!wTR16}bz7kkgCjboEwZVk>gz{HyFe?d3baQhgf4=A9G@>9uONF7VG^bC1B#; z-qM*lMQW;J36mFRrY;nx9d}~Oc1?D&<2{yAASE6TwRO?z>Y$UQjK0?D@=2BySj9HQQVul4NN@iOw^$&J0%>V94WKW~rmIQ>$|4L89-ho#MG_ZiXQ#5Dj6 zkpCduf4fD_1*?mkOT;QAA&F+Y5!Y7d{ZEZz^0T6+S-Pbuc-w$O6#EfjwY#9qtZERp z{~Vp(gbI5@o1YezKNGe(qhY2OX67dYY+P8hc1|P#nUtuf?Mok0*Ld+RUD8qGx+a^P zu*vRGV)d>o(s#Qn9|dhzoPUX)x6PdA;pGVq0xAP6cCPDrxDnr}(aydh*QB28jl=xR zZrLigH4tSdCRDuOYmJxv&}*%UFq1;-%&5beAD24L&vz=6YIKh!VP!-`z=xYA zN&!bGdO2yKfX%(t+_<&N+nt^2o!y#h5DZvINJt`m(~@GLWV;Il)=NgNU#sCW(T-P{ zSi0Dc_R z3Pk^vQdXF2<={u?>e&8zoZi&T%*?!z$4Y^Ge0CpBI#m14k(%QQ{r#|0V-?t7Hb1|u zs&*r^tzr`oI;i<&aI-6Y*f`s*M5bGbtjt)M2g2Y79yLhcOjq9u*F7If%j%(AA?jow zL^`vfD61l*70)2jrzc_+wI800-R@*}Ian=-sD_{C;kA94xu&i$!N$VEa+4qg>{S(( zXRMAANu>xncGxVtIRzi)`mkIqT#GK^qZVCwieBHISV~+DAMA`;aZp_J0YeK5sbJNPx5Eey1!j7%2+UU29 z6T|ucX`ejuUPVr99;HMe4x~s2q#8tUHKM7S)Kr6LLXese)R}NyN{FAWNN#sln zWnEm1LP;9l3|q%-giiXoZKr9mpq?irj3%IJ5)$CdC{jYg0m|fjLIU-3eDEkZ2wbfQ zD2Y1Amh0ZXz?WgS(T*mxgf>E*xD(;yMPKfH`C;X@sQB)L0|27GdVc+ya4RiONy$&C ztvXWFBWsk3PGWkzW)!!=R_==zluvvg^qGMlgs~(J6+#Cm2|0!9Ij)QLPHT=Xtaj_S z)|OdU*uV0eOp*sW4pqzrDNeE`V`QYnL>@fs83*@{i1tqi{Tda!9a*g6ETa)N9u~#w z>Mb_5{M|b@t+v+8wRiD5thDqf=Q=VhRkrQ6vmF9d ztc`GTWOs37(Kd$~)-*)X0Sc;4|Bfgtg_hO0Vrq~WS38GC*ed0d3W>~^9OP?4)l6WT zYFJ;T60fZi?@Prd+o0x5B}H_wqHT~8I#}uD`C#rH4O->BOO;DUb=eS=w`Zb+JH_sc zk{fc6Zu+OEJAN;gk)qe3z&4SwS*ESoadlatDIUz=f~plMpqR}J&#rE?f=e{iCzuky z%Lo^U5ofLs_#mtaU4Irk-dnc`jr4b$-eMb&gY_KR2OLe`lskdo@_0j>2wYGL(vO^A zjdRv5NgL;qSYGW~+)IosepVi~ayC14*7>C9m?JKVfI7&`Hr@v|SsyV^93#)88z{zL zK&Dp@kBgpv@6Y}pIxhZqTe|<_EjITT8ePv&6&($uzb&x(5;Q_en!k;prk~Bg+}WsJ z5!3Y{POoE`gU(jA9PbeqHAOO(Mlv!!1(v`fj1%;d6D0T^z=9vlN{|jki0Ku;abJms zW4?r8zTe)Q_A^_R5u$e*)#pd{;{$JTc=ivDOx(@x@dP#?zhPR{Hnb8D^&b+ky|FGY z>dc=KTbK^%1BVNAM??i)R#;lS(czzMxHm@^r@Isr=f0e7DUK^!v{Z$pepX=2mx=;$ zhE_k!lbCIEnr%E66UkUPFs4`9SwWm2vvlJVhl_ht(>$bb8%LjY-etDIkv+)O9XxC{ z8wBk-_m07EHQQ`MbU|k|Ivp05+vh!Y{4rsJ@(_&HQ;^lvFnqu6^@Pblf-J?FSW6};wpw%Ur_REozfOlR4pxdgT6 zF9rGP;X}M4J`M(2^$2?kV9b__=Bjm#rr$<$ogWs2Hrb`^QI{fHSoJ)49mG+Snu(HM+i+LzmG^&~N|G@-B;3p0xWPbZNuGM z%53$7aO3hh8J(Gzm(dj(MuPs4L-s~_36I+^(8GB3JcG`R&2Z(prA3L@=8Z6d6`Zbm z_wOiZCK!ioXP9S;+b%yEx97*GU|x!ej-gsFN5vw0TTT-o*)a!m_nOBF650q^@q{l$ zA~pe485|NYw+<7JVLlm?yBQrOAv10IdX-V0`+8MPPsI5I3_HKsWKD&{)p6Jp!1J~Zrrpnk_GjHowVK+-z)dD&j`9x{NBX6q)_#J z-B5Zb_JT-pnSe#nLd%K3+u_Kb{3V2t)iTLrllZ-*RSib z79U_rmta`z7c!auu41j5vZ5hCs~DeZ!81TNZ=g|A@W+?N27|llxMH-cJv-N5IHd1R zI5#xF#qxoWb*k95UMtmMe(f{+Pw$34)7-)6vgI zxF1B729z4j(2cHdjX}Jc&r9-sdJWe?^6MvKbRy%oHJ8twk8$uyw6Celc5MIJS(f*$ zqw}wLZM|q;>ko@%&!_u)VAjnLg%V52&;15xY4M) zpuiB8dOzAvJ+^10X&db$Sl<7D>xO%%*B&_Y$Z7_KWvG~(f%oSZ4dgI|`bUbM&3_@om#MeE)|MC=YqUktcK z>Torr8c$;ugP+FOn^x1jQUBzs3y%9bb`hbM3TSVd@$Lah>}g;kS-M>2Xf95W-_%up%qMuL>Vg966j#@X{@t48WTErV?i)e+Ukl}Vs7pO`eU<~OjHmN%>AZsCE62W? zhUtj*LJ-$+6WXBp9zkT%&$l5;PyQsB4XV7G%x)T0Y1lV=>@ojQ^k5pTe3=H$!K+d5 zbF-lTV`#TI>FPt#+KP&gyrxb^{n4aV3v_>*Sry@+*{TN4*O&70VmAu&NT&3-*i|K4 z8nib$#+6~~No}BoQ72|-SU!L4X8i-C`OyPSryMN%`KzR`bnWJ!EPLKTf&3O&)K>0j zudP?uHy-J7ZdQ`E<@{bYHu8n@az{>InSQdQpns;OcU7^EopsXPdq(8V0*V_uE!GsUvj$V&(VtZ3c*d(m|Ygbw><;Yl*`> z5zw;oqQ6yH8*&0CuV3@xb6MwSi@1b!ecA2Wt7dvuwWIe!Md+ zDlrM#+N?gy&&9RUQz(+ST$RgLpYeK!dZi{#84oR8Pw%)ThaK;haP_qblmN z-iUl;^h@)=%wBkH6v;qTddYY?2S+4B&WJ)jaVNvWI zYh>0DJ`n*Qv!1yOfu>JqrmQP6S_{PMH3|+?yMhKDMOiu+UsFq9BoC*37vQ9>Cq(ZP z?Zg#IbgmBo3c5;W9rtP;utCKl!$xeDDtl-L$6Bn@-g|7NcD;u1M8CZOEB!UA!Ywi! zUu|5mg%1D9^Yw9}W|l~%#>#GtwiHMZI~=;#`(Boh&y`6qCn4@L#lw;^?}#Nc6mcIS zjP@0e>iNBcFXc%uWXH`X>F;nlWBtbpIMw1AqqCnjGBdd8=jd=uW<~bKf0Sr_#-Cjc z(;27oB-ayHiqL|1f5vh-t~7P_hyF{G>z32$s5>KfQwf;wqxriSW1^?vzQQ}#RQ(2z zL)Ls%HE7zb`gIutqG1;`z2PTrf28~MoF@>|t1qq=Rts;Y(&lH3RL3}z=M@eN&<@G& z_dso?x&~U!oN{P~$-4(rxduDqv&;Ek>Dlsb1LCdPIt0pKI1HpgqmF`|gZIPX$;Er% zpt*aTpaNR{d&d;v#($!~%1Fe9UYI zB{nU^Hm3szt&RyLwpiIM++E`PGmTjHZ$~)(ninJ|_jx>}dGm$zymSf|f3qu--^@!S>`xZ!wdAKU*uB*4 zD#_B|x8{H7G-I-W;aB7hHm8fxYo0V~!+Kg7)J-Mzrc0KRL;m!#zR5r*-K@fkv{>i! zLi~2iXJ3Y+j}SlmK-;B%g z-F)K%->RE8L(F&F_IQ%#QxmSDI?JNN`c)2#HFvJ~OP9RuR{?rOnT=vFS%J?vva`im z$%Wd87lHwI2QyxlPMeR>1zK`FDENiR;sA({oOdu%f3EyCK%G;Y3!$sloZeTFdC@XY z*^kR`MQaAUpo=Vffv*-6D(}-T8$Qn|4elTQ)_yngu>Q*;byHb#`-GZ`FYh;-u5z zmabfxymE3}@Hd9qkp6oehzI~`)`zn9GH}$5AfXYVD?1nE3aWgDvw5KM)6siY@)^Nd zuD^uN=tCbo)CF272ZNXA6&PoPIV?7{72V%@HGRh$cMGy$bJ z%qoyIE#Ar$T|5~O-h2=`($)@GIhA8n7?^D{RZsCG&6aBkr8}<1+&%~EIq4Ek|Mcl> z^Taj!pA)a`1>o-w-{q8;LmeX)80%*ekiwU z43NhEjzV3&1G@1Da`siuZII>tJD>tjz~8biZgLD>-JF(E`sa;jTfjKKAKUF@`T|a< zeSKCTk9*|~Xw=-bWDOAAV(AlOaqK6?p<`?jUj(K!EbKH_7~UZfOe~(@rbB909pa6qnG~k zib4Xk@ao!9_mJHq0dc|8?Kb7J3M|*pR19&-w}g)H#WIQyIKyv$d=H4O9C_qt;CiL{ zy|U@goMJuzT0^9GMh!WH+pYkv-Zs|=m*Wc3uz$95PMbZ-jcGf3Nag~uraPP)?t&J8U+)|pV|u!G!iJx#!oq>vYHsNpw3Yl zmg{yKg}~Olh1gE5@~6OK%FG_?{J5UWjCgvkxk$v%KP>$04J%-h_>21YLDgq7J)S?z zipj`(U{t*~thYP9`}@uAzLJ^yGqg4ziqTsSdqV*su-kV1mZ~#?vS2(FL;HhScXQw2 zjMXO=JqQh!QQf~E3s*FkYhct^8UWiDmObLm`+)fpd^y_=(*G>q*CJ0HqVK+uZ8fij zFAv;I^{-N`^;K!_{|ui~r91ViJac=?0H<7yypXi1x`?yj%lUbPT;3kiS_->W?jNc0 zs_`}mZb{Q|>0^%lm+-xS)CLrv4$Ep(+bgh(N_-O6USUPxrsW^zm+-N_2JD|_K&nhl zm|uXX^0=A0jkZRaFeGks8Zx80TF_!a%LP+?1*AyY!0PsU7vD5}?QXC_K zI#+hM=(FwL2sY$yyc6o7|7b6=p!W`AXHHa)fSvk`9Uc9;4*Fp6>FSZW4V5vmB&l#Y zqZ`Y`V-Dy*#r}E7)0^R{2=B16*Nq&<0t+bH^ZkZ#-CIs7did;jrYbuN4Jsol`C2u^ z^_TF10@Wiy{+<1c*B(K(pE7)Dx4TE9r8CZREA!eOObC8AP2!1^RmWYUuTp%+58=cD z4(dn)>zUzwaD6Dy7(JTZqh6A{rgh_cc2uywg@6trWVhAFuBLAguhe8Bewlo(iiB{IM9$rFP<=8S;>y&jHQ=U;$N; zS4*g|T1#knKq%;)42Jao>Vkj+lO6+(^Pe|TS!fj3af>rOIW80dB`(Jgw1QQwpLAh= zg=6or9TNlNd?&Y7jiB^-1?yZ(2nNJ%0#p&Td00$6q5+pYor7X@&Mh-*Q9^m5T?(CgAEH>XU|BCEY zI82~mRzgf?QbFGiy$$tdN6W@SO`b8HrZN^5`##G9`1HAJ9ig6{o)reqUt{(XWl&&5 zMGFt@NKCqfxVxU1eao7-xy0z8I3Mbv7fe0rm-dFmUz&>wwabl+$d~qU9gX|?u8Ei0 zB)nf6+@E-RzT{EjOe*$!>Iy;kl<7&%XCu@y68NlXZ zFdgQSnswV`k>i7d;jLf|$mbxzh*kz>J~n|v8nYVs2Den{hpbSVj{_zPfx?<*76$FU zcYr5Rtly})2m>(tXawf&a=gpK0yMK)SPR53Y8d+>bj&68HGiKbW@s`{F z*Fl6V^v7(YQZhKJ-AY&f%?JG;IzylqlvQd_w>O;iIs6r}_iA)=L{OqO-2&8he9vI1*0YF!klg0flqr? zr>GoJ|5n0;`R6ZRc!e|P732ikT=M2ou9W^+1wgF@?3DP{(B4nu!4!KOaPVtR2y(I5 z{&7a|gXX(}#(QD63Ew@ILVwc!yVkPB3!MuA74f4>qF9=An}hUhlj<&3_1MNL`4`?!r|c8!vI#;!Q@+JN>WjqO z-F&Lp8hEg?8trwLsb~9Ved_zU#^wp%lw$HwiHf`rRQ3SvnHIO8C|>Lcpu#*1-XTcMd(eU_r1 zKs-w$j%}i)FXX$)Bx&^A_BnV)AmCZLNK-OjaSkD4xil_;k*a8C`0qfe{Q&e~WMpI& zU#Vt|@!Kz1{SYN^w@SM=CFEmk(OpZ}Mo)gXx!tf|N=HYJyTS&`IlWSxrP*pAAuyH2{lD=>;F~g}gW<-z_COwCo`&P~ z#NkQx@;E=kie?C&t7iS^4`>2Tim<_NyaBbW4T%%7VVg1|Y@{O>Gq$v-w+uhu73uL_ zVie$@RWX2QSboy(;kvSI@4}W0w0-8}Yxu+-1~7tCCdJ0QIN*0}-c`4oJ7bzqa?;l% z5rDp*vJvKKOBU*Q6 z`FXuzA4&E>nj!4^42K_Y5=ET(HXAI3HJ8a_w-9_diGZD!r_W=MUo<>`7NETU1ZPP= z12maetz@tU7q_M|lYwPxG;!0Bv0 z47%U0nMpS=cz*rzc{R92U#445i&O&*NBg}hY2^3ZUn?|g5nk0%zduI?{)tl6;0_(= z<I%x{i*Vs@8xUoH`zmez~DNL>}1sGCq-?)L0~D3Ct?r>Vj? ztbhPJ%mR8?L3w^0SG#N}UM}04V=dgk$&eVqnEw6;U6`bgz zv`ww@9|>mom412Cb5s^G|CYo8a;>zq6kq8Y*W$asX@kFRa2q6BP29gkivsn##s(4A zhWB_&^AWZtE9rM?%>7?>qdUg|D2r>}layDZQEWY&iuiE(fr{d4X2;Cih77(hS^ckm zUer4)I(5s%()ByEr0kC7GLxDBX!JfOFHP{7sa`MIB zZubM&r`m|TFDC_G;vNA$5RZed&o&wz8+pKf&3f|p3BN=5mQhlGd0g{P&UZA|dkUs2MQ~(wUYGUrY7}wplGwg`6-W_K@YBbTJ z6gz5X`7C!tb+G58;6i>5aGj@NZOi+n<+*h? zr)_m#-pMxo`&lD~k4Cv7GCfmu9BO_zHQ%}d*2ofRT%Y$ouZDB3;^FxZhkA`eUm-mA zO)N|}U!abg=A_76!pw*`>VA0_|T$gATTlp+5=D0)%}DlhpP zb^niVe)|CH37~8}aS{b~bmRZQ@hlfeS$?mjC=0!_zsF>5iL=CBHGys1gYr5~7KD#9 z&n`hjB=`41o2?O>G11l1isai*&_BDs&;;y-lH4C&C*6B6W#1{u+5V?%iZaGT?sMB) zO z8mYH^8%Ph%{<8!hFu1!yLR!|qmkQwaceIXKGGUFhksN=Fv;KR@JI82JI{%+Z0rsVU;@S!`1iQ83X#0RH(Ej?up3XT4hjJk z5!U>6v=$UW-C?FtfDbx1Of;>fn2gIG^V8yQ^9tpka#h5xjp&^5I(-@8eEV`bkE|KP z>=PuD#}9BMoU>03_~M8U|5(zu|Nm(7GZ4r}ZZcWuT3%t-lec`Tecen^LToXPGXDig zk_1}*@s1ec(KM$?fY)}f+A-m(M6OS?h87-YFyu|>q?|i;e~&m{C{3;vj0ia|s_?G- zAM(YhdP2VXoiA38R~_19y{`NC0_pJ#c=Utnztqzx{X*wjODM9E_%1kLKhG%wTcP4J zNuDyt5VzUeD`u$8KaCf<4(n~rB1&Yo$>V_Wz7yeXv3h~-auzI8U@kA;xzr_wZv>*u z#_339rdS?oCHYKn+IYwCQ`g2TWfMoJ&htk#X<02ElolgTw0;A4uMZP^Q+?@NH z>_l70M!6kFNUFc{&wt+n)TMwP)EJGxedYSdG2k6|v)GiJ>V6u7i1KQmsUGQRj9n)t%#d330N=euvX^*`pR z61o{JQOMELm$H^W@r{4dSAz*gN}DB}6WHK5MHOoKZ#}%?fEB}WlXD@7pcB$EzFXS; zFRvo(H~fnv2v{+<$T`10r|+#C1PC1oP(1inScXa zHd7y3SFZ6QPY!l_7U;fU_7**96}+v3Kqzy0iqM|L_>;W5;*H->y`YE?U)TM9V^%U7v0iz(tyd%706#<-Ler zrJbj>?QO1i=`?v2g&F?CMH0xVtT3D}1;?8GsCPV1rH}frCH=pIkr^4nD#O^Nv$37$ zdK9mSA5$WZSI3lSPEC_V|D|RO$Zjv1nzNpte;}LXQt}g8`Y*a7Jl@t1@|j}nmMc(P z?nayqs~7BZV!Z^4G@Fxu%9&s?G*`MTm+r*o#s%&7eX3x|Shmu8d+z8q)eqtSP~k~7 z+H@MWQ7jIzbE1?VXH$vYM@wUib5)UQz)7L=Fn(CZD;J>*P}3%4uOpxEPqrms-&fn| z{CgW(EQ_iNO&wQjo3GP`CZnAG2RWFpi)(gB*CJe4Ybw7vvUb>DnXU8ML7FZ;06nTw zz{l0RId+lBnOkeB^H$e1&@VSNNX{T2t5<9c8#mE??R(&A`$I*uNUHB^bfrTAWdd9a-JH+$&_kje9 z=a~WupT-pyv#~+qe3#2aUSR{wlQ+lD53Zm9A_S}B{q<$=k2Y*O$%_R0PVl|(u`IB%ZfZw!5M0b(*>|UzV!ku3 zE-2-295R;DSM0E5rK@emEc1}plegY4X0hR&E}}@!9U}*lg%1*U zxEvl$03Px)p9CrRY}l!)a@v*NI`&hs6GsWmV;SvG0K!Eqh)2 zRx8^NZ4x~Y3kW!lv)w8`!I2$-G7yt?E!CNJlh0}kNmC`|5w*OTcqEY;Xa}c_uJLmd zyDNJe$w-&<_PZ|36({9bv+TrEay0F3Rl1|rp2~J|foV2bSX%vl`Dci-zIft;=~(jI zPsVvajzA!x4yqb^im7H4gQd05kml&LW4g&wV;W!~&1uC@LwglgmM&Bx3aVb#{>g}J zfPY0`_XF?-WtEltR4AFQg0}N6jRT86t3S>4W-cwls0CTxqn!kste_ZpQ z8|dG|+do`KiaNAl@*MHYudL#w8cVZ*M`U$!BfLF|cuF^9hMzyOSF!XpEIqFliVaY0${yK5P{PVz!0zJ)dnym)P@T?gxx{cQRXf6&sJWXit721ezB7WJ_Ia zo-TB%USPe+;r!D44=_OMR0O@uaM)1D!V&3~VBnB&5lmzh#2(5G?*@g5d}w&`XwYb+ zpvS3i7jmq36_la=Cv8dJKURquI?TJ^${cu)qb?4bVtDldD{F4k&H*HgFlH4^x}ma! zrN3T^w6y~!b9&nS-;;nnE&`kIkz3CV(0z`yvWN@>GKuaBFF3TwEwB_C`6flnVqgoj z9YY})-Ynf2e6NLxm zeh0v2QR`2#`MVLR0!2H05!}@i?KwyN(C3*E$H(j(`b(b5@SSj8sTMLT^19s=G*^u@ zgCqe}O_fYT$`8HQ?l~yF_+VZ$v154UedZt`Q816pi{`@Bpq{==fCEas0-~wCRBFEM z_~whi`0sIi;4csTU(5l*Y3V3PprdvxeP_GoQ=l9InG%817uG9C;-z*hN-S);zvy;z z19F2p{YHGEYJFON4fwL9uublRKtVu_*6)kz1~NV@I(od)q5N%QTPS!mD+RFke~Zg& z6r+x)_s@CEn4M^zL?qHFToz0XcCQ)AQ_My2x=ZM|dRbs=3OUpwuW3u43?`bp|@69YplD zC2C>l3sGbPWp-{qVa!#8eE)`T78P%KhBTcKqlT#>RxuD9`d*3=z!dTou~qUS>7_Dw;6V9&JeU!@>W+jzSIj!B0zrZySL6Rc-&x&d3&y{5t|vatJ`XU8)aimL^F~ zGl_WFP#Y;q`+>h690QnB7;3*$>I#4*AvMQ`7*0-JHcj1}A+{d_PYKMz=3ST_7+7cF z9ZMB;;XO<4^{8nu{n>5p<55!0dw#vKJ}&Rd~->E(kU3^Ik{b;9Hvph4YQt z**VJ6GR1LI?o_)+th9ViSF;ffAh6>4X~qNa_+pyn0q$w95yN|} z3LxwA%8|po(S#LTY^H+1ZcrhX9bvhLp#?UId%BJ$td&RV;$}3VlQs%Q9(dqpx9{?y z+v_9`ROnI{vM^IP0F4U$zF(@tzi(!!FwNdK!n9c#xkq)TF#VYa@n|>UowOJC;RvQP z*?0wLp8aL8m6JE2YOmSm>jSkFMDcoi8{?cdTlY~EgzDM)F?ALjN!7$jaPs8f+*8M^ zW(GR-GYDL*Jg%#|5J_`kFvW%BAtNV&k zbh&BHUqPDI`{(fh<0DUYDU|=!5$Hx}22JjG@T*hfn5*fE{)1P62g|>Fuo^@da^Y8q zw6QuoHk{7~OluZJL#b!v#h%V#ZFffcDX`(wsv^E+hC-6{;kvEu9R5yX;nh=)usBi1xFXpycwJU&I-Qv# z2=vR(Q}*|kvpz0HiAwZ|@J*@jPojgrsGYr(n=V|@wV>w+wPGUNuVqQ;FgAXX?59$k zm-Du`HWhJr1@yA{a_#*yh!LiV%Tn&>)FpejeZI^O^6{N|oR2;kJ{`B=z`b5b_Qck_ zCy=wT4&38Y)8#$>2kSc^2eBCPU@*Q$6wPjoYofaEXj6X)btgfkPda5IQAi*~=_e2O z4}gNGWH3pi3uxYhaZvUOS3Sg))r0*-SIy_Yh)g{u zhXx2I|Nc&0Ok!a0-TCys677)?AFUes-Avk|Mp^6B@22eH^joJ)aM84psZuxgu>Y(D zD53)3niNx0K9Caw%a-FOv-}&|L#&g~Q*qxiGm;X%pAfIFw39*(m9 z%yAia3%|t8EfPb~X}`gSo1veuJg3VO2(P6LubmGMZ)9=w4 zDt+VUtNz^&`2k8Us2!&N+mD`UK9G(H2hv~w9v(Hs|E}5Wzg_zDZ={RJSSEd=ZzQ#9r+a`EQLWfU7-TXBX zLEr`pFx_gj(p+H3s1|4c9kbYJnX)9H+sRxRg84fo1UQo+7c$339kJ4G=jtx%UnE`V zs-c>ZO1pce{^F?-N?RCwfwc*IF+<_v*RS18|79-lUreqLuq_Xm1fUawr`a58GaZzH zN7WGwyAT*O?1dcDg{*AfPb-&R%-4#Wr`c0}pGUcw_x|`BD9?5u7eirukUUs8%1mDx zb7xC5LWA(`~6aUF_2J*5eLVYuDeqwE{9Ad1Oy;e;i!wl{Ke-0G@=@En7 zL8Nq{sCqw*e*OI8eIu@HY{pd6PNlUYN^{4V(|%~=p%U~&uokX8*4g(axcof0>_LXk zT-8G=-nXtXJDpvRNP2`eQ;E{Xl854@HSvY)jmDQunH=55bV)-21gNLC5?Z+fcR1eT zgOc|rM|patRY(+utgw)E+MGt14u(sp4oJ_%SW)`1mRHR~X!jjumn#nkB~#gRZw8;L zhiy*kHQvCP&KI z`w!!kC9roYZOvVgkp}V?RY|niw(j8{R}aRbjXs~quAE;WlH7Q!xV|z#YlIX~SoO}R zf2mX@;Ux2v%PqX#sg8v?cLFU1-GM)vw&f6cVANdZh z97QTnM-(~69t&nTO8z)n zm9O2CnR_WkiK6M)o!12zI(M$ptF$0Wj3#+(UIm3V^bPXgb@0U93nV>=>WYP|n>AT_ zFsfu>3#l4!I)3ACu31c$7iUCf=a1R~+Op zfsTaZX+6>Q1X~xTY^Yg7S|f2wrOFn5lqAa#OEQ{|tr=C46$=HSj}uKvUl6PHH4P_z zQwmdAR`M6m;8CmfeS~yQ;-Q$~4Gt5tP6qEQI;Uxlq5qz-{_v>^josd0X7m)^tl_|2ndxb2_HFF_lSk`fXgfv?UfP{ z7VlxA+?qi0>9d~mWZ6PjCTa_{WmpKIOlb5mah=iA8yR&yb+-Bf%7y ztGTdNC$`VHE80i=3Al<$)Er&JJtw5U>plTaf4!!SFx7movoeP@9CJ&3ZBkTPTR5+O>a(DHW^QR>0*aqWG5lBSt)++yeGDBI12~F7U#oP;py+c$XmO= zl&591>nk8X-XdU=>1s}U8r{wMd3UML#7v?af=?3Ow0B4yU^&9C@xpgy`=&d8Zc@;> z`l8bd{4DB^CBCE$D-4HZfHo!e+3^b%?UoEJ9J^erGb@Gj&llvi)h3`RTx0nlaK{{n zW=g)7i2WlxnxI+G)|V+KH67#{RV35(z`` z7W}?=@|lFyh;bod)0iM1V_{ts0Ui-t7Xz0H#|9-N-QO=de8eyKY!q$!t@&&c2}LI zWet9*QLiIXuwLAX(D@H+263vj*@ujJYV(*&*8=xtHyAcwe2J!!OnsN`0Q6eVA7H>@ zs}|>`ZM!CmxUsG7UN59s%@aOOEnJYv%lB*pNpWHiD{`Q{CM7myl@_hWeK$=t~LVg{o%t ze$!g(65Nv0%odcgeqaIX!@04hM#t7;nHbAqkTy$s%WV6UNnV967*CGouwK~40pL~! z+F@kYk3cX9X7D@^Y%m=1S_Yr-8qJ^Mp_gN;iR6PVF>?DSgx&^ZR_CSE&Vc0Q064k) zq4H*R+ci*z8P}ap=yvAU--#E?=awfCjPx zY)l-PBkUGri}{=j}q@IQ>}KrRk8; z6w5N2_f+>juYc@7Hnt(Eu7hMG0FPQ1zxr-ly`?0@R8r*o=^pIH1YU-#F0Vjok)eKm zgJ+ah>ul$zaQdjRRemaeCM&M6Cp@HnTy{I#?T2eV{-%aPYv7W;oP{%Q!n)x)X1U~! z%#DT9ed-X+QBX)w8(k7vtoOWBuaUh;-Sgdn1moOywv00O*KJ~lUi%gXCKH8vsYX>K z%NkXE93=8zl|jN_`+ZQk$9$zBvQ}9~NyFrg)oqdn%LPGcNt)2HVx!o^H!WXM-%HdZ z)wyQF9CpbcK9Vpvh9r9_zcS|1Plt?R(i2rNu*!&zTkeH+G{LJE$5jK6Iyi-8qbyD{>8rOGaP%xG%+Q@kJ2oA zEp#gD^31!}qqiq-@U#T_3&9IWD{RpM;)4l_Elxw%VfNq^c^yxH3|{Xis?16P4EPFYi3i z<}`}y`)ovV6c|>#KcYu&#N<_gQ(DB6fG2z!@kmdU>4k&M(H*z!AW#|{@KJ9UFUBeW zm5$AG)HW%HI%R=^9tPiQ>S+y-Sz>7#u~j}f-#ET8h3E-@B9nP=1!6dO1PH=~yoCv* z-?b&mZPep|IsLmqAu%29qbE)!DQEZzLRQ;4kss4fKB!W)q_(UM$!52xNwv9K9njngt9^?~ z>F!3P%!nLt%&U9rg;|Q}VZ&xhDtT}7RYD(+04v?A*Xw{O;uR5^Z9J2yd&ixF_d06`jPME1DmU`e8 z%m-|4bZWo=y$VjPjv-jW$1d6Ex`TT9ImloRiA3hx5rBMHg&vowjR&6XE^f+RO9?^w z1$n6SY%t?5Zyzps%|{NIOug&xyWXH1be45zoXCmt_CmoM5xy6tOIu>m14XWUtC(q| zyQ{iy)matwv(#vzVfpv9t?g5%u2WV{QtrME>Jhq{V_w^r%*XpwtCPsg0Ou*C=0M+d zG;!~H{+)|)6T~>VVh2A)A+-Xb?a&DH4-=tQQa9aIseByXcpmKqHS@lECMkwnP?!B; zv>0t|zvRNUAGioH_#$pIczVq@c=?Am3eYK%X)4G#DM;eyehp-32moamd2X0r$yo=O z5MXy`>izM#9nR`hUS>0bMlkCLCTT=I%i9(J$j?h_(orcpvH}B?2IdAc6$53Y-|^hj zixW37I!mj{l-DS)d^)T(*$h?%tqircqlg4~+MliYKXL#-ao^g82lPuODzqQ@H4M85 zfQhA&@9(%8k2W6fhNjfL zS&kNHa~S8CGvK1du+2n;I^B*$Tn}}qwk9{f3TL>P4M!ZzGFPLEk?Iz;I5!U`q+@vu zlgmg+JvLi8t=Ea}bM`EkE0bbXc~jph-FT7|UfE|%FiKQqB#L0RxYELzuwl7Oa4*?X zGK+Oj;u~G1|G}n$FHz9CBJlt7@u$}9*yTH>=OVfeTkF9rN@@nd& zSjQi;(1_2~ykU7^UDfq?R_$O+rsw8zM}2*dmnfl*F75FveofQj>)C6KKr?(cPhMvI zcPr7&FGs(s7(sxV2x1|5<1_g;tgazbL_L8N>ya~Z9A~r$v+Kwdom!X85<@Mq#ZXEf zy2ST*%Mpfgbm++f=K=!4A2}*!EZqfOy+}7)Dhsl4VFprL(|~LX5#G(+z%Hj>ZW>th zaZ%l0lHu&pAxS>MBJ96Y7S-pRn*8NiyPx&!QyAuPYnc7Fe#kd1+xTm1WQ<(jLY|6m zP=o}nViI(><<7nh#l}ylTsv~<3E#V;>H;b2Xzhqu zP4|c%uBNsy<*>sZS;CH)GKBL~_vcmTsj1bDIDamQQY7_<+cwt{v`k4ks0x`4u4IX| z$h)%DE5tGAM+RCan|dIQ7WGYEZX}9^jVu)+nc6pivU9gIaVUVEt>;r05*8!-E_cY#6T*lQeu2U943-@hz!WP5KWp7AIBT0wpRB^9YpI=6Ki~4W_8iP z5GMZmWR6mfu>GEUUo*vof_gfHgod+hus>u~I7(sIJlS$u>#W^TY0yn$oUDp!_hKYpi;#@Mimw2Aj$RtRJ&jI@J=1?k zx|i=3I8s`a@|Dm0Do9O>HXIL`(@!7r*|$F;dq4*oM6ZnWe+Xn?Q*(o}9Ow0%)7fk@ z(h(2OYk`JV@)85O7noD)pP+JfQE^{U!Cm*rcgN}1hYfOiIv*)7vo90)OyV$(YKz^!b6YfP(4ZXNC%J&WznXfw zo8~}mSsi6tGewy!q!bz6`^eIuKPA;)F`Tpq|FpbIa^5_z>1ZX$<)v|INQL{N^pwK% zwF(8-Z?f{KP5jgh=VdO(I2CuyxU@1jqbGfywMKObN_!9`@lzGouHYUe-J&+8@2=CR z)9-!_yAC3K3|=2C7VG(@Sr7CZnYMYlhsf`nY2mTyOK9ficb(WQu{ESjGLD}5@lv;9 z#)pc~XL2U=#vyr`T0Z2Ii;-1q`EwdRJ}EzW=d^v@Ou{2}KV_w5=``l3z7@>#oA)x^ zve=%!CP->BZQyZom#^EhOC)NKIC=R+t_&?u4yOpB9J*qP1UL`4&u(jN(d4G~Rzw-x zCq(({qi0PSIYZ^wCZZfiy@PSk#_3(}Q5y#yJg(C&AO?IA(Doq!gOVtsISdm@Wf(Zt(x9X3~lk@(3^d~av#<5M+Rf>KyT2a_OMnW92oG` zB|T&kT~|0ya(>s)PI|9qr`Pvi7^M)ztRJjz&Ar@tQ$rHT@xH6WPGyho_54}#R}oI3 z>7KxMiSKHOYPMP{Xw5;_n3&fr7uASKH7lpcRD{1dV6cMQNQs;-Os}yB61i zdM6_boplFXcth--z#ZY}$!$ByHkYL_O^CRk1=IOQ4vR4!|6WlQ^%6F^AEH@_A~JC- z4x-d%86lPyXMCkNiK1GGccf=u?hG7gNKs>s*ksc?zN2)|A5oC>osWL<8jHF3DTi_z zP_oi$6q)*+^K(zu@O;O8z~(aJp@BYy1mn3~R366LNbp*n&}dZgD(;SSZ0ZCZMIkv< zq_8}Tubxpj2RZ8?l_q8+?zn5cQqim_f*-Y;u&K6|3UiJLQqIKV%n=ZOHI>$~Hz*6Y z)HypDj&5O(Ud@%AUPdHE^c6@ZGoKLa+zOphQ6QBKkLucJH&aO>;*8=LP!f4j`&~+{ z_62()_UDEPb`7KlONzvVT)dvH3z(^#j@47Afoen2jk;UpC|v*LCpMrkK9I+t)qFC!bF(CxmMIy07(h7+a4Nt84mT-7K>hxl<@NG3mqBRYka! zw>Z>?R#6l!y~mOzBy_e5_rc=mT{ruNhQ(%JOxU~rQqz%>9HCM}R<))rcu3zB04$-n zS{oC_FFZWou3oPpbH~01sy>pui1|G{)(G#R?QQD5#{D9`p=iQ8eLxD-t$~+pOo$$% z->#$!_rCb{pWedwZyVgd*a-RecL4rv*!lmT<=z=M}gx1A1Fz13+$S!D@n}Js+*kENuB%m!b#gRz4OgLqw^pAp~dSQ7H3|W zKq}_UZLYCE3Nx{Q)%QS)5emdL-wN7rIzK#LC;KU*vtF^P0MV7giSeC#x0G7+-Mwihc6=+r*OC|o@MhEilqN=~-*5HO zW95%54wX;%#V%V5>&Zi6a&+7&&_s>&L`G*s?wv8s#oB~7-v%9S z^;wNc#oA44Qjo0&1e%04!$kX$)6N>nRa>*29`5`}NlA^=R1|k35*LlmbKd7a3UFDU zILqca)2Muc1!Dh;(=Cwds;cLz=ch?}Y>`w2(Z^yDpAMEcmI)$9!OCTaYa|F=+dUF) z16|Rmqt%V7b1x!nP;NDWAvx9@-&a6np0c>!xSY>7=0PoO82h{AETsaeSG=@X{7|kR!>TCI1s5#L8q3S$v z^3m}@?Z+Qu9|kAK?P@pJtxvwTz^d#ufYzNv*_iu}R7aC^`5H9XGHu z^K*`z;L^6D>)_r^Hx}EWi;eS_$H+L)45*_qX zN5*dX!zS_U^7~lcr?PBUN|GJ#uX`#UCN;xDEEt9G9MqWu#QS+n=`3=Eta_Q(C1p^r zguyn`TOZlz-LWWhc#+ws^@zc_a2;w@;{H^It^b#FDSCG-`ye^MF~)5Ej1e` za91_lBcAQSq%$vl;3HwgYwKXB){=@>cOl5t*6|zGgZIiI8*S-RaW78-cE3R;Z>he! zmo~!hWA%YyFoDo$BCk#FlpUBllJea#dJGyeCdQ)$> z=*dJbI&wPne6O@4Yu)+tL?sVWYq89gWSFV5A)W2;0iYBKbYc$3A57sIv#-`EVC25% ziy9M;Bv1RB1=dql-R!2B=n}p~lu>eoZ&~u$3rcS4`scasu-SB82 zjT@y9_+*Vv*0)lh9Aq1oHaY2+V19KP6}VA~Qb57&0N0qHwr6*lRBT+pYUw7oty$=F_KvMpkzXvK^hO0Nb>+u5`d zJEa>7TnrFN$>lbsu?fFtjq0{#)4(jmYWU{ug{p{dtE>1r(G*IdtqbXz$Y@@uD$&9i zFE{S|ae_*t)M2(cbmz{kK6B5QkNlKCy@nT&MN{lhPH9C#LK|{>VE_AI!v3R!E=!&7 zjG5R@$8IwusyVJ#K;gicI!UpOnz$Pb+-5(qw$C)JTNU6M-(~h$2Rg9Pbz9 zvhC%_JRGQ|xVq8j{g9cSW`Wl-$IYIT^x43s?_$uo;{5a9UH+13?pW+@QpJa=4*5I>K?aiHBpq&}nFAWYli0a$ujlr|9so(Z-OCx lsOIl)IoA-HJlp Date: Thu, 6 Nov 2025 13:50:24 +0100 Subject: [PATCH 2/2] [#15] Distribute developer documentation and examples --- README.md | 2 +- .../.project | 17 +++++ .../org.eclipse.core.resources.prefs | 2 + .../build.properties | 11 +++ .../feature.xml | 39 ++++++++++ .../adoc/_section_reconstructor.adoc | 12 ++-- .../nl.esi.pps.doc.developer/adoc/index.adoc | 11 +-- plugins/nl.esi.pps.doc.developer/assembly.xml | 24 +++++++ plugins/nl.esi.pps.doc.developer/pom.xml | 71 +++++++++++++++++++ products/nl.esi.pps.product/category.xml | 14 ++-- products/nl.esi.pps.product/eclipse.product | 2 +- releng/launches/Check License Headers.launch | 22 ++++++ releng/launches/PPS Product.launch | 4 +- releng/launches/Update License Headers.launch | 22 ++++++ releng/nl.esi.pps.website/pom.xml | 27 +++++++ 15 files changed, 264 insertions(+), 16 deletions(-) create mode 100644 features/nl.esi.pps.tmsc.reconstruct.feature/.project create mode 100644 features/nl.esi.pps.tmsc.reconstruct.feature/.settings/org.eclipse.core.resources.prefs create mode 100644 features/nl.esi.pps.tmsc.reconstruct.feature/build.properties create mode 100644 features/nl.esi.pps.tmsc.reconstruct.feature/feature.xml create mode 100644 plugins/nl.esi.pps.doc.developer/assembly.xml create mode 100644 releng/launches/Check License Headers.launch create mode 100644 releng/launches/Update License Headers.launch diff --git a/README.md b/README.md index 866f217..11d6875 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ To get up-and-running and to learn more about PPS, please read its documentation > [!NOTE] > Contributions are always welcome! -> Before starting PPS development, please read the [PPS Developer Guide](plugins/nl.esi.pps.doc.developer/adoc/index.adoc). +> Before starting PPS development, please read the [PPS Developer Guide](https://tno.github.io/PPS/develpperguide/). Follow these instructions to set up a PPS development environment. diff --git a/features/nl.esi.pps.tmsc.reconstruct.feature/.project b/features/nl.esi.pps.tmsc.reconstruct.feature/.project new file mode 100644 index 0000000..bf8cde1 --- /dev/null +++ b/features/nl.esi.pps.tmsc.reconstruct.feature/.project @@ -0,0 +1,17 @@ + + + nl.esi.pps.tmsc.reconstruct.feature + + + + + + org.eclipse.pde.FeatureBuilder + + + + + + org.eclipse.pde.FeatureNature + + diff --git a/features/nl.esi.pps.tmsc.reconstruct.feature/.settings/org.eclipse.core.resources.prefs b/features/nl.esi.pps.tmsc.reconstruct.feature/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/features/nl.esi.pps.tmsc.reconstruct.feature/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/features/nl.esi.pps.tmsc.reconstruct.feature/build.properties b/features/nl.esi.pps.tmsc.reconstruct.feature/build.properties new file mode 100644 index 0000000..09b9d21 --- /dev/null +++ b/features/nl.esi.pps.tmsc.reconstruct.feature/build.properties @@ -0,0 +1,11 @@ +# +# Copyright (c) 2018-2025 TNO and Contributors to the GitHub community +# +# This program and the accompanying materials are made available +# under the terms of the MIT License which is available at +# https://opensource.org/licenses/MIT +# +# SPDX-License-Identifier: MIT +# + +bin.includes = feature.xml diff --git a/features/nl.esi.pps.tmsc.reconstruct.feature/feature.xml b/features/nl.esi.pps.tmsc.reconstruct.feature/feature.xml new file mode 100644 index 0000000..518480d --- /dev/null +++ b/features/nl.esi.pps.tmsc.reconstruct.feature/feature.xml @@ -0,0 +1,39 @@ + + + + + + [Enter Feature Description here.] + + + + [Enter Copyright Description here.] + + + + [Enter License Description here.] + + + + + + + diff --git a/plugins/nl.esi.pps.doc.developer/adoc/_section_reconstructor.adoc b/plugins/nl.esi.pps.doc.developer/adoc/_section_reconstructor.adoc index 46ff294..036990e 100644 --- a/plugins/nl.esi.pps.doc.developer/adoc/_section_reconstructor.adoc +++ b/plugins/nl.esi.pps.doc.developer/adoc/_section_reconstructor.adoc @@ -19,13 +19,17 @@ Besides that, it is assumed that when using PPS in another domain, traces in ano In both cases it is advised to write your own _reconstructor_ that converts these trace directly into a <> instance. This section gives an example on how to create such a custom reconstructor. -The custom TMSC reconstructor example is included in the PPS distribution, in the `examples` directory. -The example can be easily imported into your development environment by using the menu:File[Import...] menu and then choose to import menu:General[Existing Projects into Workspace] from the tree. -Now continue the wizard and select all the projects from the `examples` directory to be imported. +The custom TMSC reconstructor example is included in the PPS distribution. +The example can be easily imported into your development environment by: + +. Use the menu:File[Import...] menu and then choose to import menu:Plug-in Development[Plug-ins and Fragments] from the tree. +. On the next wizard page, select the `Projects with source folders` in the `Import As` section. +. On the next wizard page filter the available plug-ins and fragments by `nl.esi.pps.tmsc.reconstruct` and click the btn:[Add All ->] button. +- Now btn:[Finish] the wizard to import the projects. TIP: For more information on creating custom EMF resources or using extension points, please read the Eclipse and EMF documentation. -TIP: To run PPS with the custom TMSC reconstructor example, please use the context menu on the `nl.esi.pps.tmsc.reconstruct.ui` project and select menu:Run As[Eclipse Application]. +TIP: You can test the example by creating a `*.tmsctrace` file in a project within the Eclipse runtime instance and then use its menu:Reconstruct TMSC[] context menu to create a TMSC for the trace. First choose a syntax for your trace (e.g., `tmsctrace` in our example) and register it by means of the `org.eclipse.emf.ecore.extension_parser` extension point in the <> of your plugin. diff --git a/plugins/nl.esi.pps.doc.developer/adoc/index.adoc b/plugins/nl.esi.pps.doc.developer/adoc/index.adoc index 940acd0..ec3297f 100644 --- a/plugins/nl.esi.pps.doc.developer/adoc/index.adoc +++ b/plugins/nl.esi.pps.doc.developer/adoc/index.adoc @@ -42,17 +42,18 @@ image::{imgsdir}/install-pde.png[width=869,height=638] . Continue the wizard using the btn:[Next] button and finally the btn:[Finish] button. When asked, choose to restart the Eclipse IDE. -. (The next steps are optional, yet advised) Install the PPS sources by again using the menu:Help[Install New Software...] menu. - Now select the `PPS` category from the PPS (e.g., v0.30.0) update site: https://tno.github.io/PPS/update-site/v0.30.0/[] + - Please make sure to select the right update site version for your installation. - You can see your installed PPS version from the menu:Help[About PPS vX.X] menu. +. After restart install the PPS sources by using the menu:Help[Install New Software...] menu. + Select the `PPS` category from the PPS (e.g., v0.30.0) update site: https://tno.github.io/PPS/update-site/v0.30.0/[] + ++ +IMPORTANT: Please make sure to select the right update site version for your installation. +You can see your installed PPS version from the menu:Help[About PPS vX.X] menu. . Continue the wizard using the btn:[Next] button and finally the btn:[Finish] button. When asked, choose to restart the Eclipse IDE. Your environment is now ready for extending PPS, e.g., <> or <>. TIP: To start a PPS including your extensions, simply select one of your projects in the project/package explorer view and use its context menu (i.e., right mouse click) to menu:Run As[Eclipse Application]. -A new Eclipse instance will be executed containing all PPS features including your own features. +A new Eclipse instance (i.e. an Eclipse runtime instance) will be executed containing all PPS features including your own features. <<< diff --git a/plugins/nl.esi.pps.doc.developer/assembly.xml b/plugins/nl.esi.pps.doc.developer/assembly.xml new file mode 100644 index 0000000..65ba4fd --- /dev/null +++ b/plugins/nl.esi.pps.doc.developer/assembly.xml @@ -0,0 +1,24 @@ + + + website + + zip + + false + + + ${project.build.directory}/website + + + + \ No newline at end of file diff --git a/plugins/nl.esi.pps.doc.developer/pom.xml b/plugins/nl.esi.pps.doc.developer/pom.xml index 416a669..7bba4a3 100644 --- a/plugins/nl.esi.pps.doc.developer/pom.xml +++ b/plugins/nl.esi.pps.doc.developer/pom.xml @@ -22,6 +22,7 @@ nl.esi.pps.doc.developer eclipse-plugin + PPS Developer Guide @@ -128,6 +129,58 @@ + + + + generate-website + prepare-package + + process-asciidoc + + + ${project.build.directory}/website + html5 + + + images + + true + left + + + + + + ${basedir}/images + images + + + + + + + + generate-pdf + prepare-package + + process-asciidoc + + + index.adoc + ${project.build.directory}/website/pps-developer-guide.pdf + pdf + + + ${basedir}/images + + + + + + + + + @@ -176,6 +229,24 @@ + + + maven-assembly-plugin + + + package-website + package + + single + + + + ${basedir}/assembly.xml + + + + + \ No newline at end of file diff --git a/products/nl.esi.pps.product/category.xml b/products/nl.esi.pps.product/category.xml index 1231205..13d6db2 100644 --- a/products/nl.esi.pps.product/category.xml +++ b/products/nl.esi.pps.product/category.xml @@ -35,6 +35,12 @@ + + + + + + @@ -43,8 +49,8 @@ The Platform Performance Suite, by ESI (TNO) - - - - + + + + diff --git a/products/nl.esi.pps.product/eclipse.product b/products/nl.esi.pps.product/eclipse.product index 1c6014f..d16e54c 100644 --- a/products/nl.esi.pps.product/eclipse.product +++ b/products/nl.esi.pps.product/eclipse.product @@ -27,7 +27,7 @@ --launcher.defaultAction openFile --launcher.appendVmargs - -Dosgi.requiredJavaVersion=11 + -Dosgi.requiredJavaVersion=21 -Declipse.p2.unsignedPolicy=allow -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 diff --git a/releng/launches/Check License Headers.launch b/releng/launches/Check License Headers.launch new file mode 100644 index 0000000..73d197a --- /dev/null +++ b/releng/launches/Check License Headers.launch @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/releng/launches/PPS Product.launch b/releng/launches/PPS Product.launch index 7e3860d..2885c5d 100644 --- a/releng/launches/PPS Product.launch +++ b/releng/launches/PPS Product.launch @@ -17,15 +17,17 @@ + + - + diff --git a/releng/launches/Update License Headers.launch b/releng/launches/Update License Headers.launch new file mode 100644 index 0000000..f4cca5a --- /dev/null +++ b/releng/launches/Update License Headers.launch @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/releng/nl.esi.pps.website/pom.xml b/releng/nl.esi.pps.website/pom.xml index 26c5714..bffc99c 100644 --- a/releng/nl.esi.pps.website/pom.xml +++ b/releng/nl.esi.pps.website/pom.xml @@ -38,6 +38,14 @@ zip + + ${project.groupId} + nl.esi.pps.doc.developer + ${project.version} + website + zip + + ${project.groupId} nl.esi.pps.product @@ -100,6 +108,25 @@ ${project.build.directory}/website/userguide + + unpack-developer-guide + prepare-package + + unpack + + + + + ${project.groupId} + nl.esi.pps.doc.developer + ${project.version} + website + zip + + + ${project.build.directory}/website/developerguide + + unpack-update-site prepare-package