From 4103ce448d64d729122b87cc622b35f8b6bce7cb Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Thu, 21 Jun 2007 18:01:23 +0000 Subject: [PATCH] New Project Model Build System docs update: 1. What's new in CDT Build System 2. Tool-chain Migration guide --- .../migration_guides/4.0/migrat1.gif | Bin 0 -> 43358 bytes .../4.0/migration_guide_40.html | 250 ++++ .../whats_new/4.0/whats_1.gif | Bin 0 -> 30735 bytes .../whats_new/4.0/whats_new_CBS_40.html | 1172 +++++++++++++++++ doc/org.eclipse.cdt.doc.isv/topics_Guide.xml | 2 + 5 files changed, 1424 insertions(+) create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migrat1.gif create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_1.gif create mode 100644 doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_new_CBS_40.html diff --git a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migrat1.gif b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migrat1.gif new file mode 100644 index 0000000000000000000000000000000000000000..f40bdcd7157c16a2040140881835a320774d3941 GIT binary patch literal 43358 zcmXV$cQhQ%_xHEi)vdlllGS^SE?6yk^b);C^j@N5u@=el5mpJ3NZ61>XO#re2_dU@ z(TNg5f(Yx$_jjJxdEYzt%$)gW&OLMPoin=ncNCRe=|HBSNC1GF%mo4f0RJ<{KePL1 z;Qt^08~&~T`QJ1EAof4^zdb4c3jo3ZN=i6@68;Z_FdU%-=T?FXo5Q7j|4%W9e;BxP zBZRqy&AFA_xs_tLHUA06ZGaR0hqSw}rmwI8M%nQd!IpQkwGZY zAg0nF=AZ8~h#4`!6d7RJ%tLW@|8S47bI04c7ukij*~Jvu#Z=m1+T49{?x8X6q5pi5 zduZGLX~g~CJZ{7tH|6WD>H7~{QK%9;)J{0mS1B|U9~wgljUk4{jD+HdG49+kzQQs8 z0~Zs6kHL(@V5VYl_!t}^23Hw_Ym34E(^O2+NKDZZMiYS1L}1L}7;|onJ2%GH922U9 z2{p&ya5y_*T#OwK?~B6|aQHS{(Fm?+3s-r7w}a#Dr18E8yst1mR2mIzN zb37i7{~vAmA_Bf>1Yb0TFWSNr+VGWA_{uFjajM9UyC}xI2;*CXvm>}u65J64UnN4Q zFdu+K8HM|6{7HZ=`MNv@cY+4+rmSo9Y`G=^Hui zn_B8yIvBy(jo{5k2$~}VyAeX@2+@6{4Kvb)ADLPjnK~HRI-SB(P7ySxrlyuE4VH+$ zOKtyDwA6=N8Yx;@8d>_s*1^_D=++2kYpQ5#inuk^x3xsv`o}@vL7Uyd!NF-;=;?^> z=}64!2<~*s{d6kybP031RCKyjdAfx=-6EcD^_?CNPEXrTPy0?!Pp_tmu1*P*WI%74 zZ&~F_bP|9`grzu$y9-0hY2c@aTJ3zoE~x2|`n04U$EFU7QmkDY$YvDx!Rgg`=wi6c zx_X3|H@ga@Ltk)lSP1mI6uVh>(Gu!yRxFfu&9T7pzR4TiLXqntc)_p5B5__UEtBrU zcnN1Ft9N6ieedo6OMEWk0vOKW)KTWzJtUw3{-P%fXIALO2oMYeHFdQhnsi4o8r~NB zS?4(yCGLB1)>&nm2LC=sq#2cP{Gb_3Przk*I~Ji*RxOn+y{A9iX}MEMi?4D^MAc96 zKh7qaR@ty~68t7MNQ3mRrgB81yr(+#lM;t-he>Z0Dy37$&4yQz8g`ca?&?ajk^h zInR$X_l*T#v2r*+{mV}^CovbSK<&Hc-*qFqSGHx*XR0)pC-&2;v$?1ut}+^Koxy3x z`yXep^ZtcG$8&+gby!NjD#tr|xgH~_l-$>7kM-pSY`bYBx-FAvWO}^8)G~9JL_@j4 zA^=J~A&nO;*nHbA-6Mnl&5+cPU!sxFB}V3p5Tcc&!>)$>naD^sM677C%OGEAvq}h! zCNrv8KJ8)DhtOyvbTOU2)%plCEX^Ij=w7vcLy$JBMza)_hP3(^!*B<|=vRy4;>I%R zp26Q&ww(jS;49E4{!Dw;qg@E1$fytN<~g-kLoZJ)gb5(}3d3l5cDT#v4tTovVdou< zHfwj+`@ou|A2b#1OA@q|ef^*q?Us(L-QYTw?7jVtrE4p`gO>S4enY~78aiL31f_$R z^zw};TKJ~-{D&2`{Ip4*moDl_5@27<*yk#TT85p6Uw(D+9f*e1&>YZ6*6O1!{Oe4s zIk8=q0Pc{kb~V5HN`T}m?GXl*!kS)&uQZrXZG9hl$UTea1sDeR@}2Jazm0!=o8e!d z>@(_F{_H~N(LTS`FtGZ?w_;FvsH)4$u<#6_dhr26V}sdz}HwbeUa zs75l|aIeX?H3rRaO&$rzN)qKzoeh*}^c}(l z$*7yD!K8+S@~sb27@`Yk?cmUBLSJHJ&+I8bpd{D_miX$7j>{Q@WY2kpL1Q(zHCk)?UHW zy|oo;N&U!WxNKM=WV^rW&n19T{1Aobq!@-7J|#5Q*V|o!w_&V{4psJer5ng z%>X!V-x)efV4=J@EX?6nEJa;TD(vRjfo8!cX!E5KSp24>-UGDQQyVByi)cjZI}BUY z(0guxPlMeuW_XlTCN715J4hMaEHX{-qY!Rgc&OPV@YA;BwkCY%8brU5)hA5dzWwOQd6 zF1y!0@qr>5)cnZ^xOc~U-Wo&vOqMm1$a|ZY*SIS~=sX)}`@|YwAH!rXfR@~S*4N1X zm49fGXsZS#p7wRPa3H!F#~xc1lToGH4&N;V^J|<(#~S$-c8uKZ)M@!}j{IVYun-X} z9|@m(n3Zssp-gT5LotQRnFd1$HP-br66C2@tN^=1K`G=e-JO}FEl6u7iGFiUa2p1= zZI`?Tf7ud=fS~k`+ZPIIi6Mu>+RG~YJ@^CEw_}D#h?*v569Qedd4kR;NXEV8x=#VZ` zrky)QhS@bLiB`!uXkUJ}tGzZY2IdYEAJ~tO6Wki^4G)dYcn=HwI90rgcTBk>TTHdT zr4vYBmKe}b0=(Q(FgYK4bhqIR)v&eR%foTO3ys&ji{F+0hL7gll_L=3T$DZ*!yYx> zvL8L&6gxO8Yn9=zS-AG0*kHHJP)C9)n*aUB=zGToT@XFh&J$6}F0=1A>A}eTo8_?!Y-{!#?@fOixtMRYOo%lOR>4e8i7W23Z~e?8sApJ!vId7 z{Jm&`cAP5i{#lcNYrG#UO5j7gRIcSF&^To#SnIce1Id9iR}Nm4f02;P+yqJ^r_E%jfX6E)oPsxiF=9fLh)v%vf-P`k8 zN@^ccE*sSlz-2+(KU8DSQXLgEVX;BKnw(opJO^&E$^HycAb}6f;?k~D z0$DwRFmR*n5ml%J6x;ZlHmDVB_*^CZ=Z_=y_3EAAbo7AZVbXHsufR2$KiiIEv`glP zGn;3A2^1k_>8_NZ*Hhm8Qpk5t;#o>>PNA^OC_;MD{Eu#M+IH&oDtgb`mK^o~6`?zt zA1OdGrZM6uFgF0$$pTUXcol6q{alOr#RC#Y0X+_#d6%8c%R+ce!4fFopAxi$AXru^ zkRb=m-VC9_138v8c>oX=DJVA*bkwaTi3FKP8uA<_-oVEg7Kih|t?!qq|KSB|=|-P3 zt6y!PB@aPbFt7m<;I8o@i5=aFeu=2vEtI#w-QyNXx3> zOucj~iBC_In*_3AS4SQK1HrgiD=*PTF*#4mLtYTG6!az{@y{Aq!j|F|93%?|dPso{ zQ(Rv0fg1QQJW^1~4%*knwA9lKYc6z`H57A)nW*LXgML~U7nRmbcq=NH=}qQT2l&V7 zBXhXhkNb3?hr&aL0H=+pwM~#-jhlU+Asj`9+7f}nETA?)amBZOZtTFOP5(E1{-W!k zC3&!92bcp6g%f~ohag@6L<~g{ROTlx1u|{4zsj+m|Lt67?uG17v-xhlZ7WfcXWii) zg3q(QBB-wgCg&yHH+Y~Q?JF3GInArG@ru$-&Wg;B zx5-acio$V3CzVAeHic!hM8pewhetmP{{wocaQ})zF4`-*C?z6z%bG(P3Lb>1rns3r3ui@Oo%ib7 z9%;*k>_XW~4M2lsV~LaEXspZp1c*us8qo-RWof}E1r&w`r>jt2ile2#nqi+=Ja()(Iua&(mMhc_Aj$}5B96v6yQ_sim^fiBc< zV%S0UE#|K#!X06enW{$DA{}^EJp~5zVkTKx&x$R3Zd`Kq%fm%uAzO|1%&oGB&hzMp3)ZF-Bo zZximjMUJTxRJWf6iK`gVr$!V$&hRY@e?}e2W{a8srS6+oFJ7pxrI*YLZ|I=J`lK`{ zdneuC0~N40$Wvl943n)4iRQjUyBMOi3eiEdK@JhFGg$B9O$4>Pee^cmN3g)v-is~2 z{^jTT5Sx0-GTg5LwQnpC`)F4cjOP1xjl%o-G~MT56MIpx_O);sd!pe-qJ1IJ zmNVShw?Ubf$hX(XSCJ&^M>G>{G~Mlz;vykgQaN20W)~H9i0$iq+|jpaiOny(G0`s7QD5i<_Tm zEl?0`Bt)kp6HcI=rWTnSr1_Bfl8LHBGc&Vlfnn&7B25}iuXoQ>Ub#K3L=6t6GK3=0 zUrxKD&$kPuYXBak0VaStHyliTC`rHIp%epjH3c7C145<$_e{4+Vi5iHN&VStSQG@| zVo&(<@75@lyXVD>)c4i}K5OdTm@i^3EwQvKSYiS7K8$!K5~J?hUHG^&-zQ12^=-63 zZ#zfVLmMKEahI-PnYj_s$?rFTdH~#D$ni&Fmh6l;t9~SZ>6+E^w z9IVwR;pt-|*jt;^DlFEG6j9rdWGg z?aFtz=2eh1s^kR*c+(X6uV3IShlsza&U|d~d9V^rpi`{@)AxexO{;D`pbI$^{^0VG zqva`s6)gi1%n(k;*jw4qO3PLQbVQO|{UOzf0Q(aVGDzK(0_1X%4im^e^Z>p+eJ4W^ zL1_wws5r}_wBbRTmU)nCP(XmR@Fi;6A7*ruOv-64^psC&`tNas+oeKuuBxGp1v4dX zZ+tTP1dYGlQ9AoN1qMoOBa}86J3XuS4X;HziR_VBU&)+?yoMQXRc0tCaud`SdOG zQ1UUsj+g1OrixbNj(2ULK<%g*Ii4mG97Oly3zEp%V@ivM$rMI$&%R@MccT zU7h!^i0Z42MOOmgE$sOq){=^ZKH-J(pd;B`D5Q(a5@{hfJF*pXfGnoaqgxs~A;989 zTI!}Ds#%7~zou=sIVOYP^FBidr}5-N-PW)l6vbIIt&8f*`BLJCAj({A34sv4Fcbmu z+BavrLK*5om*E-#p$16i6-hZfkh(Nw+^G1pwE(8?dGE)Xk#AsSct86kw$@?M&xwdp zr-&?LT>Y4H|9&KWRd~jhM!?{*&)>%( z@0K4|HIB7M&x}M(z1W{0S)L2n#|iJxj_f_A-yf)24x{>!*_Z#7{z0vpTGqL%$ohX2;1)iKPFk7Nq_;N?gds_vO);9}V zrTbeqsUA5W3J-S7X6zrUOPWz^2}}Wi4|4R+yh_+n&=QLyD&}(RVdAnaWoQ#HyvFfW zsZ9K}qLOa#k~>5$(;~7&OEn^xVSWLC0x(z|d8?_JZ=v3_*nmv-)@JS2?n%V?8Tj&B zMOz=%!)(UJ#5_-=F?lG5II-wW8$Uv@XP;;oEH|0K>Y8rehFionb_4%e>-@YwrtT&3 zJJ!mOvz${ek0@+K;BIN)?%LY<8;@PIiFQsTmiWjkOy}>5uVPu>bd&DLf2mx@*msmtG~IAAQ`36m8@qwM`zXMUN6>BV?2R`i3m>Wi8D8d^guAD zVEYLuDwCitT!zvOI^o$6IZqB;(xn(Zi78okYKx4}TC)N?<^FXRVhBq2?53TDPA3AFX3-nBLf{$4q4$eG~b5uW-03!`y)&?$0sudG(T)OA{lvEbY*3w$v{R$%(m zUpRI(ym06KwA_qx8w15o!D@Q*S8P4EOrz=XS9ua1wVzB8T4DsPnaS#`xwfpeDoddg z(@FWQ)uOVt+aahER`o{4IPI;r=^h2+vhpqkJ4-gOQktn~u;OiNLFzjho?~tdzk`vl zXhTCmIkcM1qKk)96V;_h`|@H$6mht-lHl`>@lDywKCaMb8mPBWj-oM#zH0>)W?mdl zxuaxH4$tL=`Zo^P+O#AtH$5Ixq#cTn0*UTGK1HD6S|Ay;Eek|COYv8day)_;3WqC& zk@VRwHE>$@y)|%*LYHV9haaE|+=kdT1jy+4teBzf;lD@@D%V+4`Pe8}#_kGF=8Wk? z@}H29u@r7lr<}N{dtU#MSW`U{6j$ebYUyNWJ)Uh?aXbIFJ!Rv@`Wio$rrbL;=UN+X z!yVSdFTWUE<|t3)lWm$hclR>R`jziwWv;W+I33S7&p49&tGjXDO*0vplc%O3;!D5p zc@feP4$gVu)}+if|7II!9dkC%pa%ot5c_PQ-}Y|46ba^VKRRBBfjvUjhGCGL>WaH5 zzc0I~WBA)@TpOim3DQZR>^4Kj=dXCVsn_sArJWQfKu*}&H`kQpYx@dZL+s^)8-rlHUK#y}GbFN#ufZr?h?6pbrJC3Sb!peUV9$m!?>mkXLjfPFkE(H9V}9+$Zh{<0<|lWUH$M=`VgN}^+?6qFai&3FgVjj%I? zDbhcnb%eX$?61jTgKN@0jHYrq*GT0(t4hC94%VS;8Q`;gMe~GZjVA|{EF$)b`aNe7 zQ?n@r5^s*TqV!#n{9-w91AYWBw?-Dkjv_}J-rZ!%a46@Od|xxDQ*e~~ zwSiyuDaWvl+W51NVP3MqRE8E_q4_T`UJ{RlM|5&Si@IeuBqF1S{FY>%4MEBja~>E= z-wn+>*aPw8Wg1x|jy)UJPDD&o8Ca1+inIUl-*mo5vfQkDwJ9rvysy+Ju~(m0PHQML59Y<`rUq4dIrTSkaAGj>0Ge5MT+A zQm+2xB;}>xyogsU`W2&DzCCFio*ymd8lwb-sysMi9%LKjk22VJcR#ju*pZ7E?e(>- zz1bTDU@ez|6S3U1s>mL@c@dj`g;JG!F^J<$4S7mxMvm5}ch`Aq$6AE60_ze>bSwiv zgDTuwRgMtXMu5rs0byl&r5&6PI844G7eG9iG`s7vz7$@5G zB4<8LO*IDa@A=z5v0rGkrmfo8cfM~pzwp?)s_e^Nkn{Y#NoZ4J_2n)i$i7p`(zUs) zqRPJV2=JbWARM`)n${GoMZ^XP_nWZd)=U#iB3P#uXdIZ@kTP$V&gH842lz4PYD zNxOfzc-T+T4Rb#1B%8fpV!)-n*gKE2f$^?-Eak9bIYs zrlnc9JJ>UPy$=4CZ{K}I$<@5d>R78omaOu4>)3Edx(dz~x>?U4>0sv`G|=?eev&$EmfNHL10waD+cjx zeTHi!{2STVa^l~$Z01Oqfcob{t=@Md=SZb&;qU(XJy5GZ9|>UtfESFu14-xOz)ZOu zDwLIVl7o18YXr^V-LqXNxGdZ3%*r-_Hc63{Ne#NvUNi>@Zt3Q(rI60`)~1pz|)d%f1zjjUoNu~ zXl^gNUrSN!>10n9UHAq|Ics&#`;lt1u*%*a)hE{;oDq5Z+f{CpAsan9qCxAr^v|e& zM--CVw6GzW68%MPDJ%Y$&UFRJ<}cyxp)XDsw$x$DUmfeRf^prO0hs~rr@tDf z7k@l2H zmH)*ZCg1!MKh(tlhN*q)_jve9NbNY}K=o^QX7Y;7w{xt?xsu0dy7!FJpXL;Om5Ay; z9alZ`s{@G@R46pF)YYm_e56c3aNPN{`tIssxBA{nN*v##?V;+{L1y)z^(~W}*&b+C z)*1@efkXi~cJy!KdVSNjN|SBAAx8ueLp%goBSnL_rZaF2=U9E=`R=U;}XaNLx zCkBlJKa3{?fpMsEz~># zs6zuZmGVu zxE(IkarBo;4y^W`H(LOv83WMNN0`oJYvS81|Y^HjQJOg$O0g`b2o6<$iE2|a>Qrs$l$LH0lx@N1s{o=p!egFCNXcuk00Q54E*aKSlW4Bf zLfH0TTC@-l0$rq1Zz`*6+L|nRp(zRJ4)f3z4byc+XeBeNs}(0d5>j$pfXOVR1RR26 z$bgUSG=0IvAGU6FjM{%H@`YVre$oa2ux`V!J!ud=W||76&u#$jp0tQdK>x_nGS=t2#66afo1xUk->%&V8#tUB(^E`|_OkrU&>Y=Fms6%j^;+LSm>b1-R z@y*bDp#e8O=8*~wy@`anSPhvp18+>u0j?siIhh(z&#c&0z})3y+xeRY6Hf`br_z%{ zIRqR~o$L8J&5Xq|!(Oa^9nMxE`!z?iq_mWb^cW_`b)?**9L%$Y_2BM`Fg?z4H`rcl zicR_ybv!^b{FVN?T2+Oj4-)q9EGdB*7C)dX6FrhM!1En%8my?XTcHTGt&gnlO8G_N z8b-~2X-Z^Hv2;m}ok7JG_fLhUeaDl&%fA0^d3&o=hd++Vd5*`enLQa-jYnuG;7k*Y#@Y=P`~1dLH!Pxu z%yG=5&4$|r?xVTeJhC~XYE~0E{Mlj`5H~%jnI2Y2zfiIT>vQ-{B5TChYRs5UVezjC zYvuS|e#`uzu|AIp%MA;YLyU$g#>5ojuuNgPoNV_z+sOs%BqZuMIazl!S@%KpnEBJy zMUy$9MNHXJ+uy*-b4uqo#-t-zM03g`XUb^U(#7BGw8S)dzPISsl(G1vZ*xm;J;_UM zT7D8@vYdR2U|n7JI`Yygia52+)h3{7mXdUrV3`&{CXDuEbaZwSYj6z#Rw2f;T&jj+17b804#mvnvtqUE~3U4X*fo=2U=1jOCZZ(`~6m#2t zW=|<>vVJSX5c;KOU#F=~Z1=QkhbvK)s#mMp4bWhGwrAXbr`;W%&9t)jmz#YzY;#Cs zV@$MFrJMioyh}q5>jUp2KA&l)P%v$?0qog(Sj~fs$6v?YuKC?O*kEt^1!6?;2|)XC zfZ&iwGof*PA#T!AsdPS+8Ow~k#Tqq^9>S1W2L^zO38Tr1uKCSzPfYwV3a;g&aoK%! z+LL|8DoXH_&zEXTm+h3T3r)SV<&&0)w-@H)sI>evdTAh&I!(W{6_k)@F=W%^#Qc+8 zRaeu6>wXH*sIO7(i;-Z>a4=du*<_*eqmhutP}0cBrQ^_siHz%<*{~g(|JVqf0_f~Z z3@>2Im@4r23t`v!=(qFM?K@#$Kp$%pH*~l2svKe=3zQedRt^@%-c3 zZwIvtdC>Nq=nBBKODAJAD-_Vh`s)~(1@jzEuK*-LP)2Fr)3yDBWT4&} z99~qUGz%BsFh!QU4qswd;uWVnQzqj>cE=hevdwO@)B&b#i-moj@eZDa<-h}-rq`6(nVu{ zUz=8`GB64?;Xt*YZ1UM{xj;oT7>QO7Px4`Dn%&UjknQp)MYm&kdJ$nBj{V^6G6-9T{Y;w)SK( zw4>SPXifl({2p7e1V-;}Y&~7@z3vUNr}xR@^hvE>4(@Y^liRBB+<6qf6XCs~*6PQ- z*JdHml%KI(rsk5!Y#21Yu9ww$e|>Ky*EQ4^q#b+R-g}X|bns==7PzQ+^F?8hZ{jqS zVJ5R%Cz;APXjzYE+r4Nj4Gh>$z7CIjprDu#f6GtO1?@5LW$H(Z{mfD%v%y1_iE+{U ztDdtOcN|2foU10V1KM72f6ozSbxb_!IubB)YmeF#DDz9ZWod*v4E(%mMf&q5=Zgnz zQDWU{-|vlpR=fbIva308H1l%neLleH-82(y8VfsM$}3>za{bshMLZzbYrWOly7|84 z3TGtw=dkE-M3BrlFPh0F1t<2ipzy(BycjY->)O;o@1wY=q8j_yG1{!|5Clhc%0=^QxvlIYu6`gde7!WVe9#Aidr zL%%w6Z=fAz@@Q9sYaiBl1H$O6fy_AGu+W}}yAy7jAbzV$+)Gm*rg=-g5%n)w*iy_Q zjnBBy)S13FE_Z%;3_R*ivn^az`mchz{753O#lCpXRW1V1WK$B+e#LT(Wp*k{pX+S< z_NGroC!$F_L= z%OD@cIV*Me+Xt7C{<{i%bko`&g-!Y-Ex|<1PWYD7hJD~1O4<$l_#`?#u*DO0_}`Uk z(Lt2-w<*`f-q0Bn544#_v-IGTlVpb3V*crrgVtwdf7Ieo&jZI^ynGls-S(d0RD>@& ziyh{RfL-IX8dkNq{d+nr;Jhr*!G1Y9wEF!0&5q})5#)tl$5O043M-K~`d-}X{CZ4^ zdQb!GqKXD$Uqj&o$A(g-gt&>_Rb_iZpA7jjWw4bv;+gT#xgJQ)SlI?4fO{8?}JG6~jlMQDeVi)J2WU8+>gP!J) zWc$C3Da2QH->&Cudmg8lsj!-Oy9Ja(X2z(`9ZG_9qYicLGcvM!^W4o*J(-E`FzGm?+EI%SA2uAC_ZQvv`JjF!^}$Sw>u zyNuuVA$LzIlc0Hp_fMWa+%<)ez3rd81DQO!b`!Zl4j<#!;01oOUkO9LlJ^U^%Br4s z6hicm_P!qrl8QA`n8bY=%Jp+$bXBF_SvC#*&C3j|-rjW>Nz`o$*(dM(7M-ba>lX=2 z3)*OYqd%q*qVEhUC2}&h^ViOFec%CE z_2TSkYrHz}N{xJRetLXxaHWn0QY#`8PJs$}(c#h7$Rs-DGbD!5K#@C{)h_B)Lh##q zgvPe(8Fwo8V?~}c{(`92apAL@D?UOW&UkRrgNnTAED}-U4rGO?X5Rl)&(C->`6Yxh zGc>M6^JVFaw3I$vC)n_1n;9ta=U6dqb3C>7Y2nXvd^qcr;rv)h;F;%?VyTbUyB2{$ ze*;^a+<-wP!RO(9TlexKc3K2q281YXB{uw45_)x8gwiwneQ!&dL$dPu_LJ@2T1Bk3_gait-Di=HV)etyfB$_N^;vy|brGTVeIDZNek0f>{H(HR#en)p^J-R1 zRm=C>j}jmD-pxz29t`eEwEdh?sc!qT`thLca%Wfa(-k$B6uA>H&Phpp!Nwv|80^WD z5%}*Pajn@iE<5p=>hIXEUCpEi!HS=3U_@-rI$hT<#(y;7XB-S)_%C= zBd$ps{6zWZ!uDV|RfJW^e#JW{WD*rpX53h1IFswzRPIsNgTDJ*!z%qbI1Q^&2h-0R zj2=w>^XElOqw0csrZS5Hw)M($h_Iz-_*N`)u+01HUmAehmkP^Bd)kxdoNo4t{_69z zKMfb(Ozc}pe595CqL}@`PDUrx@Oawf+VIh!d`e-|lf2`_|Gp)>Z~qWL`SJ2aUrKkG z+w?-;W!7*$ePboIBrC%`rNL8GE(3l{e`~!#k}~@6_Rv0g_WRpv zts#_r0I)INS;Rv25)XP`BF`Yez@ObeY%RD2cVmt?d)d0AJWYG)GG=q74!Eu*6ZlNb zecF5``vV1Fn!kh!;64A)L7>TFK{M(OGd^W1MXL2VEOO@w*Y`KMh>3M$!Khu`%}txU zZHk&?i3!6Arj(AtV!s$d7u9E9#g zcCGUHO8Whn-ETDY<-OInjY1JI=9AmUDu8C7;%5Y)3qpc`yfqPm006L{nBKT!hfNR; z0D@eZ6hJ6|AiSRwn3>!<>XpEX?6~>&DFqZjMgs$+7&t_0It-;yfEyo^`9w35HJ3Df zM0-}*w1f>_Iq;YYG+5KkYUvc=>#jE{0>MZqn%WizRQA@D5g}phX(6JN%y$@jxdE&_ zy{YB(y(FIL0egT2VyA{8xK0XSYK21FL%fl@P-KntALc9uBS2A13wRMwSA zZDst5mc=i|WS%J|#F|k2&?-?J)#XxHH&cAVf)$W@Mqw<~@$87#Z33^yX?Vj7z`&Uj zEmJGYtS=>I%zhDCOXA__|us_S-w%5^xBjinP`aKKFkK zSoTzreK*Wp-a+>a&{2wv=({U$mz?`-+g@?e6zC6P747ndNv1KU+LC`klx;hyWNNeh zNB6QfWrc0KshCV^c*`KAq>}jEu6fNhO;Hb6hD#}%a zy3jZ^?ib2dxF7`zlBxG9^V*(pQt40|)S5TetvWc}vv^kf0WSTZ+{{htuNm-qIXK(6 znAaa#3|>V%EfkbmU1mEYMt@)^3iEhFAMlv@iH_CvymCMf0`(<=vin(qRN4jKU#lUR z>C#<3u1S<9arU#ZG~0ZEQ5l7mZJ!wzo6ZU+Rk8lziS$$7*!7DEZoq3M)O%$F036T> zSRRpuhuvE@%nAk_Sh?7d_j|d58$K*-GMyC((XsE*Ds)#0^a*rj+cC`wXBfdz@hYOM z+>zKW#-(r{YMvayVX%2NVKP3g(0PjK@dr?S6y8IXpmHqxvh94*qt{HxpDlWIDO}M{ zMP7OdeQYbr1XrB2VoZB-S_5oq{wy9F{C=U{{2T|n56=yx00n0f3C086KSQ?1j(h7O z?xn64Rb-D}eBv6R>vM_SO7uVLrM(IgR@)89akuueSrPoI$x>4QrbCHG-gA{{|L-Ml zo_v*nfa{um1DOo|&K7M%%6+i}5TtYL{x0}vxEt@1k#|dqJ(CcO{qK!UNxxyeUHA)e zSA1vrJ?#=K#*s{6XQqFBkz9H%FgJh^1iebL_td0+*4%@99JlAe$vHb15mEoFZSTGz z=iGRPJh47~-{1M;{1iEY*j?!#_@r=t`NnC>uwy_-NzCGRuci<4;s;UVoJ%M13hj%P z2hrbRzWpAFto47j1?j#w_GZsCc-z{SBK;YvjcqZVJsz26(z=@c`m9$xz8e=ByLO}h zuwVK{NP1H1I*)?VXOpTUe0}ShP~@LM*QKMUL#>;#pZ*L5-w1vF_4bz9H>Cj^R$pP0 zrg16=_ozXU`D>-^mGJo^(mlR#X$wa`YZ&_!W5w^c&T+d|UzMjj$>G(Js(T*nF|+*v zC&c${`wt$GRp!>>Pg?4){|JlxxUl;ovenm7LOz%i|HTfuVZ~Uvp%nhoaR0@#g{qae z4{xvk>8_OO4wwRkw61~I!z^^$k6(Oa$f6N+q;kFSvti_-O1=7g@~bV58Vi4I8W=QN z-+t2gX$&Z>9pfZQK54&FO?tBsHa>suU{^KcdEtSyCQ*Csse7xmZX%7kV|Zt-ZEv zJTIF;E&XD2fmNc7VSEwE_1Nqx;i=*_KrHG|P1-SGi(Jv$=y3g`-A36I0E4O$mN0%d;3}m3c`| z$6+=NNDnZ6Orm3u_ziaCNC(``N%7W9UZI@xLmpU~(NJ4Z7}GDIxPi~PwE}pxH%`);n2WW`>>%=&W)}UllcXNzeGAIw+89GJ0;J7WH9SCXE1tSxn6GOX zQ4|3rzBBDuqTI;*dC>%61HQ?MVV^Wj$^kS_56bSHCp2Q+M{&}vDz|B7S{!1ju;}IX zmI2_=<-eF1>(2y;N*uaa-&{tegdXx2GFK<_}$QEj-AEgM;%p3#@?DyO3bc4+42u^E-FUX zDbWIAV|Ty*D+Mg>q)%~nQZX*E`1q$rFdE;Vn=bXnb8e5r1}E>6$)#>c3%AcXDG@?< z;Z`9`<`3U^A%< z9d)EOas<|=EW(*@QYEp`qKCxbu(#bNuT0OPrptZ!{f5mLsgej09y)}Pa%!!!!yLCW zp1BTTu6J*UQK@HQ+M-KktVc*7Er4g1PJpV1iYsrZ$b%f~h;{Ht00U5=)J5{Gqp_+? z4X-iO9X0|TS;~s0u}YSKi~{;glj3l|QpbAvHQlJ;ZB8pRXGa!K!uZp7Nm5){;^8}H z54s-j%IhOvRa`;+lj^^AN z370~<0=0Qye4w{?VY#-p_tpVvwqElJQN@r2&AHUeSZL)vuBo7_+B*3{cYtzKsnCAY zN;@8xQ7!$QE*w5`d-57JhsR0*%?IPHFUaqFv zw|&6s%h=_S^Qb*zkC9CN@uLd5h5R)~V(I~a@#I3B^(W4FL16ywXtFD5^u%v_7%4C! zOkG9SM|*u`=jG}5{*uMj&X&h}N{dIa_cn7#ztY7=PL_58sIdD^_-(z-mc7Z$f}hcY z-DZ#9aNK;kg3J3|mCvVVqsm6PbMLoP^=~i9lYr`z2+7kyBWSc;4B9ih^~bKkje|F| zX{rY^YLdTY7Tsq}feC@z(dLH>)u)>Wr#q5YKdP@zBmq~|0GJezp$5n<1q!Vmp*6EP z*IUgn2Kb0S;|L@P+&KJE$x>Se4HVBI>o2jee(69MQT``InO8$uC`I+MhPq7Z19G|i zH|>j#8rp6oU4IbW*BZJlDf)w&{pG&T9oY#G4$>y+Uf-zvpGN4x8D zyLv}jHotg339DEgMOk+1x*zdZHyAX@8h&cfcMj_>%DQfcage+aS5z2u`~d8rNa(fA_r$bG(WZOh*}u~5gP9>=5!%dHjdb-6nZzn%XQ363Cb z)*kEZ-+#j4-x$z+5-=1IxFsJ5YYL=M2x4doW>;`@ z4C^XruMfga{ zKWu7>Y6{UF2>1PXYAo8QHK7py?H8Sroa2_l!@@z|Y=!8*O>xZ431td#yip0FX9MUSdcm>19zm5mjjIt`F z*M^;Vd#D&f@HKvmH=fJ)faf`$1NmU^ETHpwTFEs;2+vF)`JE5?k>hEXzqew0HRJI0 zqvyGzSK*BBd7x*ypl`aScRHtkx~GRasE@j+i#q3gxrT%}S+}>Dw>nv)IXe??lgyw^ zx~WiCV=@d9^^iNc{?NPxEdqIy^Xx(7I+q)Di)TR-G=Z}>!6l4Xb6*8H z|9XqNc(&{Hupz^i5BO51DYb7qj%x!+f_JcQd6j4Rx-WaXzq`7}JG;v}qW1%;WB7)L z^|L>_8#q(GyLy@Pc!+NviMvM@WKPpoPGql!+?r4_{%!FnTGOs*$M=J`FGa|+hE(H*emB9%@AzwLgAjxoD6#K^EM?pDR&k zpEfd(Bn_rj&m%j;AOqLh_1p}3&vSgE_qlmHJ&q%L)HnLnKRwm&xz$TO*KfVoN4=t_ z#Jw~3zjt*OB!v<3Ots(snn0rb`sj7t>UZue_Md|_d!sq!Iq|>VruYaA)?wRqlgn?ohqZyg0?SV&v#`>R%&b!#bITa(W!R3u=QKJi9Z+ zP5MJ6O5B3Z4-}~Cz`rO^h-;^gpt?Zf`X%g_C7~Nlfsl#2 zlqJiie(kDh%F_PiR=+?^vUKd%Bw@%b;+h~-=SG{shgkykb3^f#IEMYST)N~YB1LTp zwPne9OP#`!!i@GSifm#QP5s2J=ohpkvOrlbjqA7R5=dkTt98}#HKDCb?NSz1=hRJ3 zrCEdp%1MxdA{HldYtvNnD^zN*fP6 z+3praxCn!0antd(w%h8iW6ynCDfeVL+KCgWPW-@v1 zIZaqpoc?`b3~fRv8N=K-t~gEdJ19VPkh1MOIS@+7s)U+2NT!Z#>L?Ifl)B_8z!FNv zv5~as2N^f)%i^cTkkLkqpWrgFiK3F5h&WB$z%G!V#BoEV#{hfmv4x(RN<1Ht@y#b~ z0wFG?gj51?p$K{M=q?I15oV>k{IW%yoNO|Yp|yykOr4+F5yp+*0{gNz{Mxz1BAON= z>#{pjV@)B@^z1XwKlubyGd}|@bkICei!7`1#G&n??I4XT#+8msNQXd*3MsPbH0dZA zH)6`~tqAwaA{nK8;~(i6+LPm)ge)QUhe8Fjnj>-uC>AwM1Wzd9|5OleuP^UB+3pn|WsKtni@nwbkuF zg2}@0;x)|MK!hRb7F$S)OIf6f`t?kd-~^d6Y9EcX>&RXe2-aEMOK-hgZ!KF_>#$>x zq=A}7>mq@ujVp^xNV17X+8DdY?S&?*_a}k|D%`@uDpS$ml7UsI>5~C3Y2bSPOM+2W zCAS68H^D5@;|By zempd$JRDOCq)_s<+m5?ceCF1mhgoOSa_)KO>ao9Gd+N2|#8joX08#l@d{iHz2afS6UaNXdz8|KMKn<&A_9gX1zY|LLWYGBSs5l; zI2;#Bv~$0TMP@guahaj;gvQqhDvgIyqfy@2vNq0fjn;dV5yt^5b&St{BRN%MG%}S` zRj_^xDG)>K1|`SUOI~o?40e>lDoAx_SYd;e9^q3ETOE*qgwvvJ=oS+4#0V=tNrre* z(vD2f4=vUi&_&#Emka@pT8h&WdI$m`zH}s0=}L?nI222$08=K&NYlQg^el-eu8boY zRd`tUmE>LQE(W<0LEzX-9)jsiy}{v4c7q))5QR5{bc(dJ@i7Up4oxvC4YbrD9R^3P4&QZ4(B%##LkRxDH!s2WPiSaN>hp?4vmDQET;02T3&>*3fkxLV>wMLK>tqDH5D!_=dmNR|zFG4|HQy>DRok+(Pny^SD^V1RM zXn{iusq682BOc!f24H8wXN6o86OCx2f&Ulpxn#V^ZYkNXSG8iv#uHMR>En^TKtvBfZj5mjFfo7cj%@vmudGhJ=yAb@lu8?83U-L_F{GTISO z0K-$R@QKH7V*3$#1?Zrb2t+Ark&WT7(;p0qaEqs zgBY1Mk>X$Y3J1sBa4jjE9_a4g3}Va(>7|9kjo4yp-An#Bss*GeuG%AxWTYoORBlIZ z2`8J0h9}GJ)pbFjqDN{CY*vGyvY63~>^1vW%@{r~f8qP=XK&eY@io(l|NEHW@G!LE zl`pjME9yHHy2LOw_qoxXZgsEw+&+v$iz|mpsFUO0ciYWTgm% zVRR#$#q)P&@Mb#DTmE*@r5#>nm)y^SwlT@|o@~808{2=6`OtA3`Bg=JGxVN!K`A&Pl!kW5+zuoMR<=V!2 zw|9Mqv|(n~-0}I{)3slIa{km{n^11FKOM!}cm3y||8m^F;61D;5M*p~5g@f2%O)^KqZi4hlH@sxz&>*CHqZe{F%?-`*n8sB3)^2j#w=o)YB zJP_;DOl>;|CyxXI9GMZ=?(FuMu{~}hk94>OMwWe1JMJ|_N^QTq8j1x*20m< zCIi>J@zx@R$Oa}ij0|Z0ZQvm3*3{9==&@?}hat10>)ONV>~SJ-1K2LIA~7-|DN-Ug zavVF->Evx5LFw(G@+Y~= z`6P}}S= z*OD?RukyOO5(GujECo_5ztSyvZ>HdK;^Y!7=@QB8axV2UFZmMe;L^up1wFbF`5rDO zSFQF8b30HC)ef^U4f8Q+4>4;mERQSU6mA27GBY((>2@tF%MSJ0GAw&cFoo?Nl@clA z@hiddG)MC+JMJ^>?k$}R17}LJdM=H zs`Bm(G}f-{(!di}2nR=XbWnxtN~_dRpYlH4v`K5THVO2~UK2j%lt?eGH-$4j!~U{u zs1!uilTI5|DoYblvot4Lb4dl%Lo1azM-whnl`2;iEn8I}Uv;LYR94HwO{axL{W9Tr zv`@j(NGCHVJ4u1arcSRiR;rAXoRLtOwLLjbRQHrqN03iJ6-#^1QAM-&eic)p)l!F* zN68M!GO3fS^+_KUTGP~2_j6b45=IlWLEkk*NwrHSG%#hQJO1-F>N7D{bWLfrM0NF4 zQ4d#XZ8tCQ$7mE#dGghowPDi+Q!n*V9d#+E(lUY7P^A=0+p}W5HB)snW5Z5U+on*% zlatV9VlR~%!BsaIwOi??R@D_|=QUAH6)R;{GNaT{gUz0BDp#kHK8cb({y5V;0F!7l zjz=|)R(SPj(NP5-R!|)_YHy`KQ`1QwHLC9J0{L`DN0wx96I_9`T#GeI;j>Q}mXpfW zWGNK{3HDrz^lfRDJkr!{Y1T>Owr)o?Q~lFd(?)EDc4^~v9D7e#dv<0I_0{@xRl~!*6bU(0IMK_b6_Hm__;~@8B7u9yX_9u(C zZ@u+rhgMHB7kM8RY{?a6=W}qswl+UjHxo5i)zw$mHB#LcmsS=2WT!TID;IE2mvC*g zdYuZ}x%GO-m3}F;fH(LjmsNpL*kOe?h1G^(HFkwr7;~3bVIdZNt#fm6 zb9gNkyTDd)-!y?6_Jd(~8XHbi<@a&-SAb)9iA$J?ff8YzScTnJd2`r&G3kCCRAdV{ zgDsZTf>(*lR*Sp#c@=hun|0x$IE~d9d(C)_GZTyz_J^++grCuK#h88(7>=3PjN4d8 z#qK@bIFJQdNBek?WB7|TR*!KPZC?$D4H=Jb7lm(>e>eWtHu)oqb}eh$#v}(u?SfNZ zo0lGc*F_rrli*A+Ia>`7RYOLcvdNtjLC)!Dn{0xBa)D#7jzx@k%>8mPZ&^|`1b_k30^+_}Y;HjShV7DtTIq1eZ!2RUQL35unx}6S`r^)S)q1gaG_C=F0pJ<{ zOa+Tjxs&H6uX)+-a0mcuBEs%j9c}>t(o2qyY@9dqrAs%h8QXvVc!TK!02E|E0N|9~ zJQJaWWd%62}{*v97F=2ab)|*G<8KsarygeB#wE??jji>F~ zo`6PiyK$c7xz}VxI|j$R34ChRV!bKWo`aKFs5{Ae4FC)TxHa{i!3LrC+sI7&iT4?; z%eufFwx+{%U;w~Mx4b@KshSlv3JDF$wL4F!OX*hv+3ioHTKfF3&&Lc1d_ z!Jeo&GsoL#%UjihI8Z4$ZT<)<))NJ(=P!4 zpwbNnAhg>d;gKiH++5ZKAb-ju5ZEIV06-wBTs>~#R9uxnnx`{#^RDfN^-8LZH;{c!u{QU%U zpaP!a5>x;H27shY$stwVyk&#Omy12bqu~dE0GJHor`s+*KAEq(QY>92DnJKV+*=sk z7MMQ5cUqX+dc*I$>(#im$u2!E!o($7yKaQ$^Me6w!RFn->?34!IGaYVJD$Y(twqNp z2p|h`T)QGh^F5yAZCN~YfB@wCtNq@*1!4f6f?B5gkHmet?V|~({^LC%=y^mO@?AU# zz!tpxltQ~WY`*P5{ucc4YSJ3zarpHAULB6tM!!1bt64qbsUPAVv=#lu#bE$=tUtV& z0Zt&E3Z3~w#s0`39H9pw<6{N3z2(&p{ghr&7~o{d!^2CAB*T?|qvy`KyDRSdgRaGa z{{cc+1s%5l^b^ORf-rTN4gyFft{nhPngHBNc7j1NVE`fmAm%Ypzf9u#X=~T7ow}7Q zTe@@^@ukd|GuzRWi8H6pojiN`{0THDPL=8;0wBt>oi=qIGudnh(V?b@w=xoFB93E8 zi~tB!$kLCifD18MCC#gTcjRA`tQ5LCZEJLl4V5c=&!M zb?8XB5QaVhN*(1m>LuYHzmGq^exm(^kw2N%bBJ|kl4amYSJZPh6}46}?uFOR zIMO91j(AL2CX{e5X&4+*`h5r@h(sCXVN&qX)FD$9GRK`bSuj9gOffE~Qj7(fB#t%@ z`Ii^~!mOCsTu*g}5{1l})LxJwF3Dt*FR4V`K^H!CA#_A42$hs7c~=yDi9HouQBYPW zVTqBMSrbkvI>~06jFIS5g>tIMU5)LD3EwRaRB#D-)76OKoh)&OWovSWR+5wZn)dVOYfZZ-ivR(`i6^MOK1+Nj$r>jNnXL1Me8L* z2d4|BWTjR(@4gaGOmW5LK4mbH&IQ-4#piAtvBx5hOme+GjVLg)5>{hm!7jf{o;d6l z>@3VSyF4Gw?4opY&p!VQbkIT%O?1&lAB{Ar5mqB%Kh8ot9nw-yO?A~)Uyc5C)-D#8?`w`ZG5w%8C`%hcM@wq0`Fc3UhasdVE_>bG&jyEof?1Acem zhD+?H-v6R}6i;u5d09T!N-hpM;!sYxzLrm3VdjT_4m!SD%IRg|A={04=b^98y2T?Z zIaJCzEnML(ha4ivA%l2AQSY8)vim2R?7q7vylaw4?-c#6Jo3J4@;mR$^IrTdnH-P2 zCx=k9ee)D0?|t~ic6GY6{+~dD{3)|Tm)eehyaFa_=!22kU|kySOh1CFo!WLp&NS$$00J& zhD7{f5`bt$IIeMteC#3?^9aa43UZ5qB;+9dXvjn+@dyx$+rVNaJI7sS5Jxb=41RDz zAjE(QK=c6%JxPNgT#|)B4B-b!2?QVbUd{-qRGchqXH4n&!db3#2B?IoCvhp$pAr+OL>;P8g^JXmDz&IdW$IFo`qZXE)u~jS zs!?g+NhC=Lqtx{0M|sNAR0aWrG$3I)XXw+IrZugz9AOJwV1yu?wS}sbYgt1ogN}+d zg+S=&T9pb@paxd0fQ9N{*-BW!8g{WsJ#0)B+gQf_7B;d;C1#m|a>1Ms$R?UVAq{4r z(h+u)rXM|mDwRM28koQY_+`Qpe_YxVJ4X zagS@<?rtk;z9CQ!p>DGC(P_IBZW4&3}YsvCA%lnOQerG=4n)f&7Ah&s1 z%Shw==05NF&gp)4ozvXzfIUKt#IXsw7WW7;Xh9HYFhVf& zL*pc@0vTK(2I9h(nMwe{55%AhmobA1E%<>Vicv6YBq9ktpaLB<|8Kv>l*D-7``q=; z^Vjn|_H~!N4;pErqR@FL{u9FU489kb)G5@6XD&TpNl2 z0ug?oau6%^-mIso62c&T)AA70{Xj(6>(Gxgf-|im7BMs3fBa*@AJx>HKU$G#|NPf~ z|MKTQ{@?3d4z~`|;t56I17OyFa-~T{P<|!_1f!4xdiP~F1q7YY55)im@kR){a7K#I z52Ek|L@)=5Kn5q52>lQWRB(BTKnK4hP>9uL6BvUZH-msygJlM1IVgiVNP|3RgFbjm z0_GE$RcBi=2ri`r9U*)#M^i^|MzK&2|9}tW@D1D048~v#$M6eUU<5_bPW{jcQ}6>c zfOtBzU^XxXIgkYYHh=^_Fa1Y%Gyhj2$?uonHm3@$(h{V)bt#gNQE z95m1epZ=FbuuW57v+ZW6%$GGzV+J459!|NuUIyWojX}Smm~oo7QtqrIIn3 zl7$6S_jY*CWhDiuO3^4*0T%?McnC9q1XPd&=y!4Bpbf>K4c9<;{ZM&f&<|yReq)dW zif|2KfKNO{2#ZHTl@|mfkOU_<2XU2A;Ixopuw96Ec7Fwvwda<3H+!u|dvIxcHs^Oj z0VhOPAL2ksdX@yi7c&L0QHE6m%}@{aAP)av59;_2{D2RP;Cxbm1VIo4;_wMSFau}w zOV_XrQ&4^_z<_hm0sge{V)fv##hWGcYMc|&(@qX_ngQTox9YDfahHxw|<~Sil9IP zFK|X&&<~ho5_W(HeQ1buFiY)F2UVaA)-VNYXKOq}1?O1=T;KvOP)_j{3jL4+NI(NW zAcrAzp66s+v{Y2fHkYpVmJCXl4Z5HadQ(7QLD-fQ(cybW0GPsOfVU+}#-I=SU=Q}7 z3cer-lmH3Fa0ihf32d+hwg@w1FhadJ4$I(ihk$}yKnCLg3Wm@RPB2fvH3NM(0|Ge) z7fA*%Frze}cz)K0BR~bqPz+GHi2Wc3U@!;$P<=x-ST{ILWcH;nhJy_|y-eumwQyd@^8*47hkmfCRiS4#S`g zy>JbPu$5Ne14;@6O3)8nAO<1O4|TwsauA@Okd)WZ50u!4IN$;oXbAl9fCzaFqu>gN zP**%Poe(OQ`3igb8kc%^sh;$3p7>J5l}hWEN~A~!IM8lKfPRJ74~3BaaohTuUl2lC zN&`kPA7GG5c~xCq=cg}_1Q6K|KyZ2*+h9o0Q9*Eea^O=u!3F) zp|=Ng6qRk^afFt11Vd5PQ?13v0OEF=bG2n0OkXa)C@Vkez6$+$A-xcAy$D!ET;Y7-dcPawx$KZ$~%RRkm8 zqp7&9<;0M$Sq3t|1>#T!O0bph>09U|kj$V%EkFf0N}krhdA9zR1YsZpR&Wj4U`{B6 z1dW?pIXkoXy06K5yf!O@Jwb#O)JWTANn>CaV;}=FAOiRHQAU6RkN^**01xvpwec_y z<;xD2&;&kE0`_QrFQ7wJFq$L#1^w^|F^~k;fV*QL22|jY%%E|EaCrT|fxT&(hF}8= zNeEP64c}^rhmZnLDF)(61HHHmRxkxXibAQDTr5eQ(CNV)48qMdd1`e859f{jlw7WM z12C!y^Rxwci+B%vabReO#UPOFPzIz}2EB*~MX*A@1_b>%3Up8eTkr`VX#}EhfphQ$ zhL8wiU<5y)#Js@7bASkQnzDqYy~w+~ILogz>&42;Nd7ykjdC^}C%i&EPykf$0$h*- zI6zalWCTiJ2C*;?@c<9*AP-VYzJ2h9Y6}EAU@$yG1)-n}blRU{V2dSDo<=YQjI0gi zbPMG1nsX2X#6X-*;2-@!2PL7bpfqVdkcU5Yfc|uNl-ZM$ zHhv$4Y)_U-4aa0;2&eZ|iGwB59<^^kmC_y!RV^LTFTGYP&2KX;(`rT25{=VGRaOkx z4(k9NeoBTEhg3NYWH+f+NNr&~d2EThYd%l|B&}&v7F&kvQ^-cr9PE-PU2bJnRH5`( zUVT+v{ZwEbSYjefWB}?BOLSuzOL2v_ecx*MmZmdX3 z5Ozmn^;+V6bSPz7;(bS`_T4E3Lii-#^!-BN?ceP!+^2+IANJlq)ZgGeWFcf;2;SfF zt>7gD-wPh$5N_Z}DSleL@_hd{41U2AKqv+=Qj6!bijK}s- zOm>rM&SZJ6<_(8cdoIy=-sge-=YW3Zg-+;ne&}*&=YsC%gx=_k&gT{;>1!U+l78rr zKIxeL=##GKnjYyQ-~)TQ7QwLzJ2$7Zci!l(7U_ph=!b??mDuMThUS+p z>8{>zoo?y9Ug?e=>zIz{s_yG|uIirt=fqCz$Ik4(p6SrO>1wX%SMn3j%X>EQ34^9y zM}2@C2JVd=PM-7wIY4rsqLBB-cSxU=5_x4st+BXJiF;ANFY9^<_`^abNd| zzw~h5^=^OoazFQxKlXO7_>(XBh;R9jpZSw7^htr;8v-$#tTm%g`lWCBr;qwU(;X6G z3#sq=uMhjN{xADB)4a)|*FBLl71H{%&-=aa`@df_1i}=30{q2q{KwDxwXa#H>NwG1 z9aNJ+$S?iVPyLD0Aq`Re*{}WE|1-*OZF#9#RAL#}&;8|Z{@Fhy5kdav&;ITI`}Eur z*uEiK(hloCGzQ}S`LF*+QziAk|NjpV{R9pqSkT}>gb5WcWY|z)J9QByPNWD?T{{2( zEK=lX5n?8X2gMB(HL91JpueB2p~|w$P6NPCO+1t&A7#tFJ}&O^iq$a zKTrJlQrxV2_x^DMw{6=mV8CYOlbQ?wLIJ#K0ubE0y}{hg<@-dNeExm>@}GZZJN=?W z`&I(R9&z|7kRN>b*@quS1Tsk*0(3B`H(O2+Km~yUsXzeP01JeHTg0h=0S0zT<^&4~ zc<-^~ggLJt-%bFa3BcSC?n4g462Qg^XcVY|;qoiatDFK9@<=2l+mAG)r1Q_Tm)ibG zNRO+cG9(yE-WD+$h znM9IPREgpwPjtw$Jp#hqji5^$>t_JNE@2=UafBfti(6iV(U#fS3cKfs)Z7GI3DsSy>mWX{U**VT`N-49N~nlXfiRSj_j-(S~RNw85!rj0|(pa(@3- zv&6BvaVPOkEFut#TMP*jt2mvFh>(k8 zyoy>dLq;?j#E1X+pvi2QMmUynB3Fzf4%es_l%+*e7_1`)9reaOqH&F8yQ5Q3!@D_+ zgD8O%84(%DMIng&pT zJndMG0qg2a2>>}D3r=q8htwe34~GHZDdK=wKd5z32;LR1V)No&zqLe{h@%hLiN|cU zV-I}bV;}IKha(nsf&q|ILrrkr-;xywVf}MOcOs|29u}5Bpa{5+F^LLj6kOC=M768! z8Z#v+E_7DHX0X6V?s)5uZ}=k~skmf60%5CyR3FY6MM=!%8cT!V%ypE-LZrV5A-b1hcLa*(8Ezs8UZ;8onbHVkD*Ss{*Zbd!e%S*z|lTkYiZ3SxKP`Du+}#EysPRwGrQZ( zS>?F%>c&V@$HC?vTT!0L?yx-@ycopEq2cYZOy8TeNCY=54QVWBk_6HHaCJk}!xC=7 zd)oT$n7k(m$j8vtA>v4dESm9)s3s&M1z|v%65gAz8YBx00MdDq)Ty>(W z(i9Sndg$XG?qJ6@vH^@#Q_2bhyNMD&RpFzF z3Q!d=R2D|xI$o`(O`ZTMa*$pCpfMQ1!W_)sL~B%d~?feEh>63c80H z;G+%#jM%L&ii{ijbqfs%?>7+o%Vf_pOaaW8O&k}1EwsS^jZrlj?O;F?Zo+^pP*z00 z0oq@@iV}`tPVNY`eZ%=J^iMQ(HdcBLD_JT0ID7) zV!8UW7KdB4ckBKahM+ilh=+Pmg?P}qdk8Fgzz1@G1C>Y*&C>=4=oRb&Jskiaz(})! zK(2w=7sIHp%uADh(E(;T0djGce&{k{`Xw~6K&^T`MQgxXfscc0x;dM)8q5!C!#i6O zh&16lkw}G`kpy_S2MUV^y732ph=h?q2^%|}gGm+`LkSprj1MuPq_K+JfEMP;1nfcx z0N@ydxiP640FywjM|3-Z*c^pPIw6|7Inf7Kb^hF(DW15wXXxoZ4`nUx~mM>6-x<6T{F3@DV+&8UQ&wp@log zBe}tFvkq~Hgg4j&G^m6-Fa|uh15_xug~%_ObO_cfreuJ?K%zmCM3OthKN$MAYNE7y z!<%|T2zxuEf{=>K3b}(&hfd@qr~64pG0Ewmqour$Okg^MP=^tLN}dunt4xxY%f0v^ z%CdB}b6QIzX+=vxHn+@=k(^8BxVwjAN4uO4pWI6Z%1cl4kC61s%qTa){7Z4^w^{?W z{=?J{vTV%dz{<4PJ;)rAwyaF$sKbYoOU&$yy6nu!fJ?M_H_+6KzAVkqL^rflH_k-O zMwv6ZbIl>by`UOQ*-W3uyiLgnN+pU--JFWc{LQnV&A8M*;q0I}I?mxV8JMdf*iug9 zjEEkCPO%V8OYu$WRHHb|PO-qtp;Alk#LY$vPpyzlz9P@^3{Lb6ieghtY%|XFJfh@` zPxd6vsiV*Ol!)oX&z{iCp<+z_luygRPV}@+9JI{<1iWI|NWSeN+A1Qtmuaqo7PTHB2}C z(4mUZGwsqjRh%QuQg!&XIW@;YJxeYET98@}$PCL!cA05gu_0p(^)N7;p|jsZC67L(m{5371lL9S6JHDDZN*IomOYk*x&TkkWC$3jUSnvSCQRWo4wD9MOkKL&XRRmp^es& z%~dFEFr3v*nw?pO{Z5D7*#T`?Af4E>h}zpE*q3cqs})!cUDl@c*kjdFt>sp#McQ>_ zTcEAewN=@kJqog|P@N@Hm|aX=^HgGu*jl>?L)FuVHPfO^%>JiklAl#ld1c&B{S0w! z+WkCQlHFFXl}(NX-1n?oqqtiM1>2<^s$gYWtR>xS&DY|*T-R*eBE{H%)!NBDTZ84= zrBGee%v*e|+=lgB1_j;IwOYed9)}&qBBAwc}9a@JvS}Tl{TIfNij69oN_mUAj$N-P7Kpo!_~I{vjCsih=rH18(2Pg^sU)VE%MB z9>!1m&6E*7Ol%>wl%?SQy$BNE$G=5_?hGRF5V>+H=JCWK8a4P4;9?{$x=OWl{!Z zQy%40E@f0+WmRtFRDNYvhGkcdWm=wPQYH<{p(KfrWnQl3Ubf|54rX5-W?&{}VJ>E5 zK4wtP;gqS3KYHdGf@U_7W@?URYo6w7u4Zih-ezs?=4}3EZU$#>4rg*6XLGjZjX(<` z@ru$YXK{XKcaGx!sko1p2mo@=_U zYrDSdZ=u~Lev4$tf_=#tzy@sV%4Pn`!E3`lY{X7%rq=6k(E-U3hjp+9YY>NXSebTE z0qVe}EVh%B$l`YR3vA{Xydh|^!3lzH=i`9r8p0-yzKM_F?29n%X-;i6$_b7JY1{q} zf@|WSMhcvGjV^I*q}c3Au8pr~>(-9#L*?j?0c77M=!*btj@E1l746-gYT333XO0Lv z`6J2M;@!RoiTnz;j)+`_Q0}G;*?uCb7H>zC?U6WdOa^JwCb)LaZPNau>!yw8UT?5| zYVL;a+urEf2I)gpZ8Q1``nHqUhUl4Q?r${kL-nTRE{gC5X!|Dc)1K1IyPGF*Why6@NC2|6l6Sb?G`Q2 zA~@a{zmMRjB#-gc2yW9JYaA!?24_y%c$n;1fm?aqE}Kqqg@XvPp}YXx^i zBd>BWMicz5@X>y+Ly7TAE^!+7?{v;&l+LpXmI%ilIDu#ZVrT~miS5g2g7FguH`wBx zEWNkb@eCJg?uNg={)hpZC}r34l)!M{*6{=PK1V!rfi`ZO$OKEqWJ|sUUU6+g2V+(* zXv;8eRnKlsCT+{Pahs4x(Sq_!sD>}+jphEv=GF*;6zFH?apPX}cJPGbX7!5@_gf!s zN0f92Q3p@3F;j*JZO{gC-^K&~nAy0Tm3r(rzX{r~WKK@>Q&;ybFY@JvpaOd_!M57!!t- zkqG^wn!_)aqXd1N=j^7>@xCAO*1qIMKW!fWY=H)S8&8R3Ao|-s`1HmIkbr6$7l-k) zZvof|-{v0mQ{Y9qrnw6DLj>10BgE_7m4mn}ACy0GyC0>;wP?S=yOwCk{Xphy;Z7 z+t^PX12-i8PiRxel7X;f6$lW}A?_A{gPJM`sNhDNx{&}tszW-UNyLmN1h70owOu~| zx7q;+Q~@MRiVRY!Yr+6)mYD+kX;UkJK_HC)+#o#>QCkHD1ONzQ%9NylmdQR6pxW=& z37{(aWda~>v5LPZHg^0NQeBp{1lkhK7&b3N9Soi}$r!Wj)u0gpWV)(1vbqyG4klxu zN!`O_M8%B-aPpuw!cD{xzzcHYt-i_oozUAa_wL^9Isn-CaVSX?raCRbPR6JSiK)DB|+BqosnfykDTV8-brmH;X| zB+UL;bVbBeG7-k-8vvz^RY4%Np%z?t!EJRH0Gix&Ru;k_7>G&(%{Y*aH{zHhju7$o z6puRYIFL~N6cb86qO{NgLVEESQy^Grl}v#p1tQD&dICvFlS4k86eg!$K{Q#QuT`K4nErm+=|G?+S`my91=dazA6guk zPFRXlkxB@I#gk4Ih@-=V!svk0LmK@Eq|!^%=p)lN@>tL(J+zPr2tXjzk3%6(+fN`m z05E{J5yItFWZFE$9RWdSfo~QC@g^z2Gl2<~pteXhQxhi;8VCWmWI}Kjc+W?yPW;XY z5nvmM-Hr}fFqIOf3ko32ErtdH@vI@crSDLZi8Fv3=-Cn(k05VkmoNqb{uYy3ENYWc zXDo^n2v0{VexAb{spLjcuIkj*&B7$slY=p7lL-SkiIar@U7Z(UuotBlbZUUA6WU5P zKctdZ5(yWP0GeE~A~D26PQWGBtH#uH8a+7~hHm_73yU&7G^RxwO_p9xr1s-K%_GyN zt|I`v5lAh_!Cyzz5gEWyBn!05i2BAcnRavvF8BdUAY!*7uApr_letSw(&M{ZgbQFI zn@(6%;yl_sBqv}J&FWUdFHQWaQnn-5`oMCD*jn?dCEdI6QI|lin#WF!Cl{_gKzhXenyt9-)G0t1pA%IT)b`w9|fGIR>JAn%7 zcnL2QWm*COfF}whsufK}1v((umev!IK!^?iDzJ?TWYnDeXd-{pvPpD`V#t+b!g+83 zi!gHHAVAhlBff(c7}HY}--WCyTqIRH@S+2-IS>FAB!Df(0hUO{CQOK%mgxi%nVi`I zZC=6KL+Tj1iySW#YrAEEFyfUhM$&G0j81d}WgB(eiCw&@T?Oa}x&iqvIi1U1ArVP1Cb#PNGGdn!T^f4$V{k3H6Prj=_UhD!1QQ0MqEiB z4S6`<6)ifKuwX{oaX>f{pqE*wz#^^H4uFknRx^a(hq(T@qJA_hZ58;DADQS<#eE2g zD!JeZ{M3(7^neFhtD} z>Z)?QfrtoI@+Sb;LL+#y$&^-?mQ4wOf9_+7I&?q)9!=&q;vi-`U!#e4*>z<%Q%9#X z(is@BOD#mfAjoFoy+{rfMp7aaj2>drND3q_a@vS3Juv`cJfsN~NQMAB(IXUoXix*l zLP-8J6BZ@ZK}Z9n4IO(41hy}G0wAq6XQJ3Th4zD&NGn%qRK#&4LoE@>=(RrhOvj07 zMZ8f9U?-CW0%{^A2z{eL)ZvD-f)8gI(Zow!Nd87v-jaVa`QA{$Ck%LYk4IizoKZ`b z)?jJmmtDcqdI&3}_Hx7)TZ|O#T6riMq0OZ-{bNj@hP04v4Iw+&sg{iBKpl8%u5=u3 zU>w!33J3)_$012wShSh$U4$KZK_oK5^Yo({ z01yD3HWC(fh;bp`%09M5Oehu=7>}5F5E0`bw85n&goZ_#2yW&20aBg# zt2W08wYMCm4q~dqZ;WQEfL*%8BT7;rO}G?SvNjn^8CFjx2+pc{6jo8Q%!YqJq<4s6aiNcf|13kIK-pFCQNr04}jz|1f=VR$rYPl1y99<*(aJ zQ?JvWwh^D|K&ec4WfPRTw^w3>TYj9(HVtAyq#jVvD=x( z&c;}ri6;#L7kFjgSl65sY%Vw{D%?SO~nEt82aj=UY@yIw3 zOG~L$*C1fx91TX8N_2VE&0s`q{YVIr;PLd9;wfI-#7*}Y#8mN5{Ylb6m|y=fA6sFP z`dteet>8o4pJAy+oJB;&Ad_H>m|+!>>@g8o6d2P4VT~CJR|H1Zd6kV7OI2)B>=26q z@(8?8iwPzg0m6nB!i#B@n>tiOXT*f0T+r|lUt|%;(ZI#MAd^bGgb=Eh{=t>VgiwJH z2eE8P^dX`9G*jv@A6F5GgH6gz0boXuq5Ig25N?zIAr1HaiTga^0uG;Bcoi|w5E0o( zMV(+OVG;3R-Tr~S&qTP>BSIn;c~aKhAzN{UdWGRD#*+{RV;1sRCr$_V*&qtSgnzM)}_ z1Rn`v{v;F{pg~HBq+rzwp5I#}8dGFW_9dSrx}Ql(A|J9M3cg|%77^s78!&2v%M|NV#pO2lb4pjvW`{sCi#3}QRTQNg7T@vy zB%}w9U0dcOSNS66giw0YpkywfL1Gb~rOy7nB))A^Px+KunPg|WMTU~(T>g|)rk{vn zl~mqdlk6c}l_(4zrz$d9TTZBiUXgn3ASfbDESjQBQ0NHy;AD;++Q?wW=pzy7;!8$whuV^pCuL_i>?cw<*2btAyy)viVmo4wiFJ^s3meveKO6r zb(`iz1PE%MgQ@A0%BjaCO^(#*lZxQ*-Kmb`DHXERoLW&4wUllOs-G6)p!O-#{HcK@ zO*gXNqT-00HmaRgs?t!R9;u>lg`u5F>ZV%Jrw;1U)aj)j>Z#_)eTr&c`qut|73!g` z-=wbUr7{|!)+(c}DynuHCBCYu&grcZs_gkHqT*>W4r{0SYOFF5ufA%r(rK<*>a6B! zsY0u+T5FHsXF5h_wYrqD+9|1i>aDKdu^#KSwj*5iDz{Q0uy(3|mFtr_E4u;-uY&8l zj%snTYP2qEv&t&2eyh0xY!a=buG%XSdF!aoYq%!rxI$~e2CTD2>c5&RyE<&J3Yes# zYrA4<#%`>`^6J6js=b0Nyn?I5KJ3ZDl)5@9!SbudLTtREtGp8H$*yb6CQZe5Yoc1L zyQ=KDy6ns*Ys;2wq!#SRCT!69E5gz&z^W>&_N=2eD$)|`$Lj3HF8;0T1?rtX?ZtvB zw_vTca_rCst;gDI(F!f1O0Cr@?bSXko2u#7+9k%?rG0K{Z+Y$9vTfe#?cR1R-S%ye zJZ;wA?SQGQ-R7t52`t}&ErG$U;yUi*LT=Dr?&flC=X&nvg6`K2 zZ0M41>6-58qHgL&Zpx}|>$>ji!fx!!Zqv$c?b`0`;%@Hht=sBu@A~fV0&noDBIXKj z@fz>(B5&yuZ}Kv4^E&VIKJ1V1F7#4w^;+-svTE&N@Ah(U_a-mxdT;oO@A&5K^pfxS zqHp?gF8Hc%`?~M@I_~nq@BGql{i3S$vZMX#@BZ@dOWkGW{`PMG3$XXH?*JR{0n@Mf zBJct;aQ7B)14D2GTd({|a0OfN@#60VYw!jOFY9vf2ZM0zK5z(=a0!>L0-JCOtFYvb z@Cv)|3-c`n!|)8#aP%rs{?>2~>+s@g?+*L$4~wo01Mv_O@zbDi5hF1Xw{Q|O@em7f z6GO2MXK)l#F%Wxj6=U%XFL4%gu?Zh>7lW||Z*drtu?0VI8KW@-PjMQvu^Inw8^dt} zk8vE+@&0~s9pmx)&T$^|vHG5I9|Q9Fu5lm}a{FF!AtSQ*?r|bBGWFhZBSZ4{GHxVO zGWPy)C1Y~%4ss@QG6uhKCxfykPjV=ea_~NKDWfv}>Mn9Bv$FE`a4W;ID&KG{({k&= zl)V_6r6AfaCj&40axVk(FAH-p6Z0?|b1@_HF)MR2GxIV#b2CHpGfQ(cQ}Z-ib2Vf0 zHEVM=bMrQPb2o$YH;Z#Pld~^3O-x1Sat7o&t8+WE^EvKQz^FRA@Km+tZ3v@vf^g$bRLL>A-D|ACIw1e@kdOl)tQuIVybVXzIMQe0MbM!`g zbVq~qM~iewlk`ZNbV;N1Nvm{9v-C>4bW6kZOUraj)AUT+BI9yf*4Fe++cZ!6bWa2I zPYZQW6ZKFVbx|YrQ7d&)dvp;w&CQ}K?nwT%=27)L9^_P8HCA7BRd01xbG253^;e6v zSCe&Dn{`;1HCmtbSg&*W^R-?B_FsSXQetjS zdu{A_?fThlVtb&i+O1+cHe)YkWG{AQQ}$&?tYv35W<&O7dv<4oc4L3GXovP>kG5%- z_G6RwYNIx5t9EO{_G`vnAO_G#C4Z^z{5?rg&LE6JMd zaWnVN{^@h~DRd|Iayxf)TlaLYZFOUJb4#~!XLol~H+X;db$d5=lXrNZ_jqr&c9%DM zqxX7?w|T>Ndds(+zB0Gz2z|S^dj7X}eD8OCzjuG@w|^7(fE)OHBe;Mkcz`oFe>XUQ zJ9vac_=Nv=g%|jOuWkOkGS6Z-gB8FjSo4H_jr&SxsWsYk~?{kk5IN6?2{{b zkz09{V|kKmIgw{Mmv1?edwH0H`IsMhnK!wta@B_WY?qVynX|c>Q~8&}`IXDLo7Z`q zi}{?txt-^Eot`qC_c@-oxuEO$odf!yA9|q&dZP0=qVGAOOZQT$`Oq5rqcb|BWBR3Q zx}|e^rF;6KcRHwlx_nRF{-h&!s5|_AIg3IY4Q#$-n)b!0}uowG;C*MyIyRGNx4~F5QYI~}3dysg0 z;!;Yt?+8vhXGwm0?Gm7*;9wqBJG9%&k9Ot4o{p5iEYt{LjVNlgw|jOwP943H4hYh} z3;e(ne8C(1!6SUaEBwGO(!c-S!b5z-OZ>zy{AorORy;+Da9; z&l@|&-Uc&%{oBKR^a)ZO#(mv)eYt7FZRF(CBSg8;eYpYt!wLT14}Rbi{^1*b;urqn zBYxRTA==zVjilG)Q-0-J{^etS=4<}t3+81Qj(wVXbI)Z#5@MiQyReJCknB{LisWo6 zsO!Ui>&yP@&wlLF{_Wpw(6l}7*M9Hw{_op<@caI=zy4uRqE7Vv<}3g5Gk^1AzN4(D zQO(4|;dkw#SZavsye~VYh(~%wY`yC`>R)E$BjVrp;`!@e`Xk}`qd)trfBVD#`^&%k z(?8@TL+<_wKK;kP{?GsZ`+xrfM89_J1QHxr5aB_A3AHs5*H4_dcIp81D>x8iMvWUe zcJ%lWWJr$vl2wc-QCt&<>a;za_);BAnK5b3v{@79O`SP;+MF0um=1B;`l&N|6lqKV z0DdMlD$yxYh5g2jvncLqJE%vuBJIkxDOjgpvyKg0HYr(kYLoU;VG*uKxpV2(-59f- zHXS-F+V%SvutuXrlL<9CQJjFj8y6aE{Md11$de^krhM75L9HbPu6@YYCDy2;NtZT# z8Z~Lr?UJb!9kuDwvrMY`pGtR5zCcLmh)Y`#LGrGDfh`Na^qK-P};?fMnqEsZP zM2xbNt1u3uTPP;-1bXPA5F696u?`pW5U+s>dx$2Ae(X@L5JfZy$A^e2F-Y=4)KQ{> zT#BwFoW$WPKh&J;3Z;Rxd5Wc#R$9wU@UVgkLYN|wZ=xZ)EV3QhQhP9>i9C@5u0w=j z5SL8?%o8!-EX)u?u@XfK(MC^`(XJZbleDOaR6Odc8d)6iLv7GwaiAdSit)(5{-A75 zMTi{B5l0&dm2|McNYX*8t;Rz#QiBE~5w72+gz}|O39?bUEZ3BXOZwLG)K?2*F+0M*h%C2E>F|!)KDVuwDH0!B2*Y+g%y^eY71f@g6b;?9c5I}dBdZyUgfxa zQKanpB5JWLn#dvxH*OggvCgg}QJpN3*|F5Q3R6kCEU;y<2~U^oOhmZI>lop_@DjCO zjfPa!s9R;dabST37DlgOi!7=Mg-~oFnS=i1x2}@dM3&?E$a^S|6P6O7fo5VphkyYtme7Sv`4KKt2W2aCjRC!D66k~d%edgZ=%QM&Cl z4N{(y1QI3-Hv7VHO1K;vmTC_0&Lb$p;Fn@ zgWAag;J8}!Se;~Wgs{@lTk=>sZJ6qI%g*RKsU0@}5UL$v0ug2)OEoSNqcKmiwDPEm`zubIlazJas=*eZ*1V8Nns+>lzG2j_-+{6pim`+U>dX-{#GjzT!wen=k{ zXPH545vH2o3$6W*NbMga^0OG4RMMkQ(dZ=^6B(+WW|xl%iFfw`onNjp5S($UWA&*| zT#iJu!96fAK9kahv?Vl>5WqD#s}5EUf|M1y3Gdhvo9TI} zR@7O+LM);T77W2a7Gc3S4zm^Vp|5=SielYr(>M>kWJJlhgi9)wF){hAAHsNC7Ivl$ zHxLY4{ZQcVZUjJ%{4Y9?BcnyKaF}ESLSVNDW6kp7261Gf34zE&5__kK)lH3aaxI8xuOcT^`*d;ZAtH1cHX|;oid`O}W=GnqOD@S;`WK8wOA*RiQ)}56c1rBmw{eXrd&-P=^3&*}K#MAQRdU1^|d*3-vGw zPN{RKT7FWeAC@Lu>lud>tO1v5tbiC+A;>j|z(f{85vIvRLE#Xq=M5L`f!M2igKPc$6vHODGeDS|aV`|=A>+JVQN zL2Pv46o(st7e+S-QYGnJV8H-7q7d$7p&wZc&Ct_?aX@a5n#ja{Efom9s*#H#a!DZE z5Kg^{>N{LB5=8H^qPu!585RXF9V0?9ZTL438hfzcVt3U4BrAHVX-95#`jR)vuL3$a zfdC=`fP;x+0GZGoyyPbU6`bG%D#%1_R}x~_4AX7;k)CO&c@nA!!wUdAga$kTmuq+- zx-X4Tb*X&aY{G|x40h3yG!ckfL}?)YLV?R-A>z0Dsxu=r+bBPERa*E$G-zvRoU=nB%&C6Jcp`kvr;?ykl9R>+weqQw zFa~e}t!V5awH=c!1V9i07_uJ#(8N$x_u2ud?p?Y4>U^{oyy!V~PDN&2KbGMMfL@~? zL#Pg~2jPjTJfvIHwQ`l~R?O`7NS>)eT$hEV$%h%mzjIy7E%4g}O?WD2`NRqthgIl~ zFpj}Cs#Ho4_PB%iHZ-}52zgifFpRKdjwg~;f*%TN9j? zMU3s~OE&1aQwjU;7J5iNFD$;br33XE`Z2m_Y6yM#`IR3dXP4#6=eG}B$w zs{-#R8Ez1W-!?iFi(VLw_9m$7_---}{{+OT&5J2-$y2(YfB+}Z#4J;73#|y?VAdHx zrSG4Ou(J2&I zct)M_L*}to9rBYp;Qs4eAf_q~mYey`SAL2Xqp3vdeZjJF4-r>|s=k~b`y517hkc*v z_^_sp%(8y)c7_*K)#`Ze2@MQM2GQi%@K?sgCXe%P@T+uK3_ARq~{bc*I2P?natK{h;tvvs|$TY6~7h^$SH#{ey572N~7$chYsFX_{g!RF`m)_p^clkiD$GDD}yp8NunZNVobPXO?-?djqCOL zk%bmA#P$Q3NJA!Ak}hA8A7K#!?}jF~BrlRd7(Oc*{4y{Fb1-9SFay&t50fwp^Dq;0 zF%h#dBU3RG(=jQtF&`&&AX76plQBDUF)fob9g{N^Q!*dZGGS&iYbM^9La02GG+z@o zV^cO~lQwHJFvZ~()FavWLK_6rHf$3(X|p$fGdN$fH%`;J=60%%dv24w4ATmWo0(U+|E?P7s!sH`bG^$h-MO$t? zI5Ildqb`5cLxU7Zhg3+paNS(0If|4>hmd{SGQBF_F=CT4$mHw1ZozzeJ zRR2`T{u+cRVlW9Y;!ywMMsc)F8nq*6G*MY+b>2jM;xQlp^hV3^F0=Fux0G2J6(r^{ zNY6u5T@-%g)J#{@R7*7@L^V@YHB{ZhQIU-Xe*;qi^;UDWC0S8nJS9av1OI|`73(xk z?==60l}tlPSm*R=a!3G=DSCAELqpU$wKPL%5;3a9$1s&xiFH@glncdBMq3q5%hW@U z6<5J^xLC3z4Fy-hDVS;%-I5+R#$abCs$j4AdmRbHoyQ)lwZwv;yD<5st$ zE^AasleI%V0!XFvPa!tQfK6%AHdaLi19q%zdTy_hmc2vn?V5ya3Z8o^%RXTc>T$dDGskUs7c2v{WNdXpV)iz^m zwnq!)ZH*Of@3ca$wPoWnnVz;tt(9i46>O_iUe&Tr`}A!2RAP5lT;Y~+3->tc)^X!i zZj*L$rPgRUG5}>(L$KCux0X7+R&)z?aCJyyVRBU!_i`Ura(nhxS9Wz{_jQX_*IHM0 zl{Gr4M?=vvZfAB=p|f;LLnpMBPK%B!fYx@C_jV~aZGpZ2H>v)0C4-ht ze)leecS}1Gb7?eD##MR8cY0^{9?2JdH#U0bHhsyr9S1PP-nL7+mUOu{Ef-c~^Ceyy zw|&dkf7!Hu1Ncf|w|4(Gb|Y>n!f`E{7h~y{X6@Hz-K1h`)gvp!fCU(X6)b}{I6o|x zgOztQMu{fQ#FdauNf_8@^HF;v5Q4!rOt}Vk@TGu1_<~ng4BHilX}EWbqXBcchIbfY z31TV!Bxii1WAD~bR#-1v7;FnA$ZA!8rB{c4_;Q~(Bgarns90B3xQ9)0inka}JS8{# zp#soDO8S;)nOKe2cq}xna7~hK1a^MCH+R={W9|O9j-~iYb!~hE7bblekU`jsNs@bK zxQ63cO_O4H*QY2{O_^$9Q5O|dQ}j^h7VKyudr7hiNm7Dw7>hsoibGi=M;Vk!S(L}n z#F&sdqtp5IxX%{iXwd7kSTpXFJd(b?rFwVl~Ho!$AI+c+(_!l2_Bq5b)v+nG#)=~%F) zU+vldB6^|aG2$MYoUi6hFq)$o8ezBjpuxQYr2F}xk42j|+N4qXq*I!uSNam|5uh8I zBaDK1$b%?o=|y`YCz{blzqd_lB3OWWlOb7HetIXWO`3Z`Cze{No7yLUnW!^)s9(^R zo7t#Y*{7qHO`^G~ds=f<8LVHq3SD(^f!U6yS|g8Ir=gi#+d7#YwNb05L!&dUg9Uu= z4XH;an2ous`P#3K`8k@FC;WLRj3xvz5kV7Mu@{@M8{4rT8?qx?vL~CeE8DU!8?!T8 Qvp1WwH@k9TA|L<&JLS71C;$Ke literal 0 HcmV?d00001 diff --git a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html new file mode 100644 index 00000000000..7795ae1cc36 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/migration_guides/4.0/migration_guide_40.html @@ -0,0 +1,250 @@ + + + + + + + + Managed Build System Extensibility Document + + + + + + + + + + + + + + +
Migrating your + tool-chain integration to CDT 4.0
+ This document describes steps needed to be + done to migrate the existing tool-chain integrations to the CDT 4.0
+ + + + + + + + + + + + + + + + + + + +
Authors
Mikhail + Sennikovsky
Revision Date
06/21/07 - Version 4.0
Change History
4.0 - Document Creation
+
+ +
Table of Contents
+
+ + +
+

1 Scope of the document

+

The document describes steps needed to be done to migrate the existing +tool-chain integrations to the CDT 4.0.

+

The documents outlines the main steps +needed for migration without focusing on details of the new Build System +functionality. For more detail on the new functionality presented in the CDT 4.0 +please refer to the "What's New in the CDT Build System" document.

+

2 Migration Steps

+
    +
  1. +

    The Build System now supports + the per-folder settings. The new interface + org.eclipse.cdt.managedbuilder.core.IFolderInfo is presented to represent + the folder-specific settings. Thus the implementers of the following + interfaces should now expect to receive the IFolderInfo in addition to the + IFileInfo (IResourceConfiguration) and IConfiguration as the "IBuildObject + configuration" argument:

    +
      +
    • +

      + org.eclipse.cdt.managedbuilder.core.IOptionApplicability

    • +
    • +

      + org.eclipse.cdt.managedbuilder.core.IManagedOptionValueHandler

    • +
    • +

      + org.eclipse.cdt.managedbuilder.makegen.IManagedDependencyGenerator2

      +
    • +
    +
  2. +
  3. +

    The new New Project wizard now + operates with tool-chains allowing to select the tool-chain(s) to be used on + project creation. Also the "Tool-chain editor" functionality now allows to + modify/change the tool-chain of the already created project. Thus it is + required that all toolChain/tool/builder build definitions representing + different tool-chain/tool/builder must have different names as well as + toolChain/tool/builder build definitions representing one and the same + tool-chain/tool/builder must have identical names.

    +

        + Example: to illustrate the above requirement here is how this is handled + in the gnu tool-chain definitions:

    +

        + The gnu plug-in contains the gcc linker tool on Linux is defined as

    +

         + <tool
    +        natureFilter="cnature"
    +        name="%ToolName.linker.gnu.c"
    +        outputFlag="-o"
    +        command="gcc"
    +        id="cdt.managedbuild.tool.gnu.c.linker"

    +

            + ...

    +

        +

    +

        + At the same time the gnu tool-chain definitions refers to the gcc linker by + defining a new tool as a super-class of the "cdt.managedbuild.tool.gnu.c.linker" + tool

    +

         <tool
    +    id="cdt.managedbuild.tool.gnu.c.linker.base"
    +    superClass="cdt.managedbuild.tool.gnu.c.linker">

    +

    ...

    +

    Both tool definitions listed + above are actually treated as two different tools by the Build System, while + both of them refer to one and  the same "gcc" executable. To make the + build system aware that both tool definitions refer to one and the same tool/executable + it is required that both tool definitions specify one and the same name. In + the above sample the tool of id="cdt.managedbuild.tool.gnu.c.linker.base" + does not specify any name thus making the name to be inherited from the + super-class tool, so both tools have the same name.

    +

    On the other hand the cygwin + gcc linker is defined as

    +

     <tool
    + id="cdt.managedbuild.tool.gnu.c.linker.cygwin"
    + name="%ToolName.linker.cygwin.gnu.c"
    + superClass="cdt.managedbuild.tool.gnu.c.linker">
    + ...

    +

    although the tool definitions + is defined as a super-class of the linux gcc linker, it refers to the + different tool(executable) than the Linux linker definition. The cygwin + linker definition specifies the name="%ToolName.linker.cygwin.gnu.c" that + differs from the one defined by the Linux gcc linker.

  4. +
  5. +

    The CDT Build System now + support the Custom + Configuration Builds. For Managed builds (makefiles +are generated automatically) this functionality works only in case the buildfile +generator implements the +org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator2. This +interface extends the old IManagedBuilderMakefileGenerator by defining a new +initialize() method which accepts IConfiguration and IBuilder rather than +IManagedBuildInfo thus removing an assumption that only active configuration can +be used for building.

    +

    The default GnuMakefileGenerator +supplied with the CDT now implements this interface, so in case the builder is +using this default implementation, no changes are needed.

    +
  6. +
  7. +

    There are some modifications + in Eclipse Platform's org.eclipse.core.runtime.Path class behavior that + might affect some of the current MBS integrations, namely

    +

    The changes are related to the + way the dot ("./") prefix are treated by the path constructors, i.e. with + Eclipse 3.2.x the Path(String) constructor and also Path.from*String() + methods generate the “./some/path” path given a “./some/path” string
    +
    + With Eclipse 3.3 the above generate “some/path” for the same string (note + the “./” stripped)
    +
    + Historically the Managed Build System contains some logic that behaves + differently depending on whether the “./” is prefixed or not, e.g. + org.eclipse.cdt.managedbuilder.core.IManagedOutputNameProvider is expected + to return a one-segment path to force the path to be prepended by the build + output [sub]directory path, so returning “./foo.o” and “foo.o” would have + different meaning and behavior, i.e. the “./foo.o” would force the foo.o to + be located in the root output directory, while “foo.o” would result in + putting the foo.o in the output_dir/source/relative/directory/foo.o
    +
    + There was some code in MBS relying on the 3.2 Path behavior, e.g. something + like path = Path.fromOSString(“./” + name + extension); Stripping the “./” + in eclipse 3.3 resulted in incorrect output calculation for the case the + tool wanted to force the output to be located in the build output root + directory for.
    +
    + If your tool-chain needs to specify the "./" prefix to the paths, they could + do it by using the following construction

    +

    path = new Path(“./”).append(fileName);

    +

    instead of

    +

    path = new Path("./" + + fileName);

  8. +
  9. +

    Integrating with the new New + Project Wizard

    +

    If no modifications are made + the old-style project types should be presented as separate entries in the + "Project Types" list of the wizard. In case a tool-integrator is willing to + use general project type entries, he/she should refer to the New Project + Wizard description for detail.

  10. +
+ + \ No newline at end of file diff --git a/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_1.gif b/doc/org.eclipse.cdt.doc.isv/guide/cdt_build_system/whats_new/4.0/whats_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..53a07e6b748db4a6c4b90cdaf0d3ac5456c14c24 GIT binary patch literal 30735 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 + + + + + + + Managed Build System Extensibility Document + + + + + + + + + + + + + + +
What's New in CDT + Build System 4.0
+ This document outlines the new features presented + in the new + CDT build system in CDT 4.0
+ + + + + + + + + + + + + + + + + + + +
Authors
Mikhail + Sennikovsky
Revision Date
06/21/07 - Version 4.0
Change History
4.0 - Document Creation
+
+ +
Table of Contents
+ +

 

+

1 Scope of the document

+

The document highlights the new features that were introduced in +the New CDT Build System 4.0 from the ISV point of view. The document mostly +focuses on the API details rather than on UI ones.

+

The document should be useful for ISVs willing to migrate or integrate their +tool-chains to the CDT 4.0 and should serve as as a valuable addition to the the +Migration Guide +document, although despite of the +Migration Guide +it mostly focuses on highlighting feature details rather than on the migration +problems. Please also refer to the +Migration Guide +document for additional detail on migration to the 4.0

+

 

+

2 New features

+

The CDT 4.0 introduces a lot of +Build System functionality updates. The list of the new features is given below:

+
    +
  1. +

    + Standard and + Managed Build system incorporation

  2. +
  3. +

    + New New Project Wizard

  4. +
  5. +

    + Multi-configuration support for Makefile projects.

  6. +
  7. +

    + Tool-chain + support for Makefile Projects

  8. +
  9. +

    + Per-folder + settings

  10. +
  11. +

    + Internal + Builder

  12. +
  13. +

    + Customized + Configuration Builds

  14. +
  15. +

    + Make target + build for Managed Build projects

  16. +
  17. +

    + Tool-chain + modification

  18. +
  19. +

    + Build + Properties

  20. +
+

2.1 Standard and Managed +Build System incorporation

+

In CDT 4.0 Standard and Managed Build Systems are incorporated into one CDT +Build System. This allows all Standard Make features to be used for the Managed +Build Projects and vice a versa and also provides one common API and UI +interface for the build settings.

+

The CDT Build System is created based upon the Managed Build System +functionality (org.eclipse.cdt.managedbuilder.core and +org.eclipse.cdt.managedbuilder.ui plug-ins). So all the API that were used for +the Managed Build Projects in the CDT 3.x becomes valid for the Makefile +Projects in the 4.0, i.e

+

The +org.eclipse.cdt.managedbuilder.core.buildDefinitions extension point serves +as an entry-point for the tool integration into the Build System.

+

The +org.eclipse.cdt.managedbuilder.core.ManagedBuildManager class serves as an +entry-point for accessing/manipulating the Build Settings information.

+

From the API point of view there is no principal difference between +the Makefile and Managed Build Projects. From the Build System perspective the +difference between the "Makefile" and the "Managed" modes is that in case of the +Managed build the makefile generation is performed (or the Internal Builder is +used), while for the Makefile Build no makefile generation is done, so it is +expected that the makefile is supplied by the user. Switching between the +Managed and the Makefile modes is actually switching the Makefile generation +either on or off.

+

A toolChain, tool, builder definitions now have have the "supportsManagedBuild" +property to specify whether or not the managed build is supported for the given +object.

+

2.1.1 Build Definitions +Model schema

+

The figure below shows a UML model +of the schema elements.  It is simplified by leaving out the fact that the +configuration, toolChain, tool, targetPlatform, and builder definition elements +can be defined at the top level in a manifest file.

+

+

 

+

2.2 New New Project Wizard

+

The CDT 4.0 presents a new New Project Wizard. This section primarily +focusing and describing the ways a tool-integrator can influence on how his/her tool-chains and project types +are presented in the wizard on the first wizard page. Please refer to the "New +Project Wizard" user description for more detail on the New Project Wizard UI.

+

The first wizard page presents the wizard allows user to select a project +type and tool-chain(s) to be used with the project type.

+

 

+

+

Presenting project-types and tool-chains in the New Project Wizard

+

A tool-integrator has two options of presenting his project-types in the +wizard.

+
    +
  1. Define a new custom Project Type entry.
  2. +
  3. Use the general project type entries mechanism.
  4. +
+

NOTE:  The new New Project Wizard now + operates with tool-chains allowing to select the tool-chain(s) to be used on + project creation. Thus it is + required that all toolChain/tool/builder build definitions representing + different tool-chains/tools/builders must have different names as well as toolChain/tool/builder build definitions representing one and the same + tool-chain/tool/builder must have identical names.

+

    + Example: to illustrate the above requirement here is how this is handled + in the gnu tool-chain definitions:

+

    + The gnu plug-in contains the gcc linker tool on Linux is defined as

+

     + <tool
        natureFilter="cnature"
        name="%ToolName.linker.gnu.c"
        outputFlag="-o"
        command="gcc"
        id="cdt.managedbuild.tool.gnu.c.linker"

+

        + ...

+

    +

+

    + At the same time the gnu tool-chain definitions refers to the gcc linker by + defining a new tool as a super-class of the "cdt.managedbuild.tool.gnu.c.linker" + tool

+

     <tool
    id="cdt.managedbuild.tool.gnu.c.linker.base"
    superClass="cdt.managedbuild.tool.gnu.c.linker">

+

...

+

Both tool definitions listed + above are actually treated as two different tools by the Build System, while + both of them refer to one and  the same "gcc" executable. To make the + build system aware that both tool definitions refer to one and the same tool/executable + it is required that both tool definitions specify one and the same name. In + the above sample the tool of id="cdt.managedbuild.tool.gnu.c.linker.base" + does not specify any name thus making the name to be inherited from the + super-class tool, so both tools have the same name.

+

On the other hand the cygwin + gcc linker is defined as

+

 <tool
id="cdt.managedbuild.tool.gnu.c.linker.cygwin"
name="%ToolName.linker.cygwin.gnu.c"
superClass="cdt.managedbuild.tool.gnu.c.linker">
...

+

although the tool definitions + is defined as a super-class of the linux gcc linker, it refers to the + different tool(executable) than the Linux linker definition. The cygwin + linker definition specifies the name="%ToolName.linker.cygwin.gnu.c" that + differs from the one defined by the Linux gcc linker.

+

Defining new Project Type entries

+

In case a tool-integrator is willing his/her project type to be displayed as +separate entries with custom names, his project-type definition must specify a +"name" property, e.g.

+

TODO: insert a picture here

+

When the project type entry is selected in the wizard the "Toolchain:" +pane will display the list of tool-chains defined/associated with the project type

+

Using general project type entries

+

The "general project types" mechanism allows grouping multiple project +types/tool-chains under one project-type entry thus ensuring the compactness of +the project-type information and ensuring a common user experience across +different tool-chains and integrations. When the general project type entry is selected the +"ToolChains:" pane will list all tool-chains contributed from different project +types allowing user to select the tool-chain to be used with the given +project-type.

+

What are the general project type entries?

+

The general project type entries mechanism is made based upon the new Build +Properties mechanism introduces in the new CDT Build System. Each general project type +entry is a value of the "buildArtefactType" property which represents the build +artifact type. The New Project wizard searches for the tool-chains supporting +each of the defined build artifact types and displays them in the "ToolChains:" +pane for each of the build artifact type.

+

CDT pre-defines the following values of the build artifact type property:

+

"org.eclipse.cdt.build.core.buildArtefactType.exe" - to represent executable

+

"org.eclipse.cdt.build.core.buildArtefactType.staticLib" - to represent +static library

+

"org.eclipse.cdt.build.core.buildArtefactType.sharedLib" - to represent +shared library

+

ISVs can define their own custom build artifact values by contributing to the +org.eclipse.cdt.managedbuilder.core.buildProperties extension point.

+

See the "Build Properties" section for more detail on the Build Properties +mechanism.

+

Contributing to the general project type entries

+

The minimal steps needed to specify that the general project type entry should be used, a project-type +definition should specify the "buildArtefact" attribute and assign it to one of +the values of the buildArtefactType build property, e.g.

+

 <projectType
+    buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe"
+    id="cdt.managedbuild.target.gnu.exe">

+

   ...

+

TODO: insert a picture here

+

 

+

2.3 Multi-configuration support for makefile +projects

+

The new CDT Build System supports multiple configuration settings. This is +applicable for the Managed and Makefile projects now. As with the Managed +projects the org.eclipse.cdt.managedbuilder.core.IConfiguration interface serves +as a holder of the configuration settings.

+

 

+

2.4 Tool-chain support for makefile projects

+

The new CDT Build System provider the notion of the tool-chain/tool/builder +definitions. The tool-chain are used for the Makefile projects as +holders/profiles containing/grouping different settings applicable for the given +tool-chain thus allowing the project seyttings to be automatically configured +based upon the tool-chain being used. This includes adjusting error parser, +binary parser settings, scanner discovery profile settings, etc.

+

2.5 Per-folder settings

+

It is now possible to specify custom settings on the per-folder  level. +It is as well possible to exclude folders from build. A new interface folderInfo +schema element is presented. See the buildDefinitions model above for more +detail.

+

2.6 Internal Builder

+

It is now possible to use the Internal Builder in the tool-chain definitions. +The Internal Builder is treated as a regular builder by the Build System. To +associate the Internal Builder with the tool-chain the tool-chain should define +the builder specifying the Internal Builder as its super-class via a builder#superClass +attribute. The Internal Builder id is "org.eclipse.cdt.build.core.internal.builder". +E.g.

+

+ +    <builder

+

+ +        + +id="cdt.managedbuild.tool.gnu.builder.mingw.base"

+

+       + ...

+

+        + +superClass="org.eclipse.cdt.build.core.internal.builder"> + +<- setting the Internal Builder id as a super-class ID specifies that the +Internal Builder will be used

+

+ +    + +</builder>

+

        +...

+

2.7 Customized configuration builds

+

It is now possible to initiate the +project build that will use customized settings that differ from those of the +currently active configuration.

+

The following modes are supported:

+
    +
  1. +

    Building any number of project + build configurations with one build request

  2. +
  3. +

    Building any number of + configurations with builder settings customized

  4. +
+

This functionality can be used +programmatically via the +org.eclipse.cdt.managedbuilder.core.ManagedBuildManager.buildConfigurations(...) +methods.

+

It is also accessible in UI via the +"Build Configurations" -> "Build" project context menu.

+

 

+

NOTE: For Managed builds (makefiles +are generated automatically) this functionality works only in case the buildfile +generator implements the +org.eclipse.cdt.managedbuilder.makegen.IManagedBuilderMakefileGenerator2. This +interface extends the old IManagedBuilderMakefileGenerator by defining a new +initialize() method which accepts IConfiguration and IBuilder rather than +IManagedBuildInfo thus removing an assumption that only active configuration can +be used for building.

+

The default GnuMakefileGenerator +supplied with the CDT now implements this interface, so in case the builder is +using this default implementation, no changes are needed.

+

 

+

2.8 Make Target Build for Managed Build +Projects

+

As a result of combining the features +of old Managed and Standard Build systems, the make target build is now +available for Managed Projects also.

+

Internally  it is actually +treated as a special case of the Custom configuration build (see the "Custom +configuration builds" section).

+

2.9 Tool-chain modification

+

The CDT Build System now allows +changing tool-chains used in the configurations for the already created +projects.

+

The following modifications are +supported

+

 

+ + + + + + + + + + + + + + + + + +
Modification typePossible levels of + modifications
Changing/substituting the entire tool-chain +
    +
  1. Project-wide
  2. +
  3. Per-folder
  4. +
+
Adding/removing tools to the tool-chain + currently used +
    +
  1. +

    Project-wide

  2. +
  3. +

    Per-folder

  4. +
  5. +

    Per-file

  6. +
+
Changing builder +
    +
  1. Project-wide
  2. +
+
+

 

+

To make the tool-chain modification +mechanism work properly a tool-integrator is responsible for providing an +information that would allow to preserve/adjust the necessary settings while +conversion. There are several mechanisms that could be used for these purposes.

+
    +
  1. +

    Specifying a tool-chain/tool + converter

  2. +
  3. +

    Specifying build properties + supported and enablement expressions for automatic settings adjustment. (See + the "Build Properties mechanism" section for detail on the Build Properties + mechanism)

  4. +
+

When the tool-chain modification is +performed the Build System checks whether there mechanism is performed in the +following

+
    +
  1. +

    In case there is an appropriate + converter defined that could be used for conversion, the converter is used + while modification

  2. +
  3. +

    Otherwise the Build properties + mechanism is used. In this case settings adjustment is performed based upon + adjustment expressions defined for the tool-chain/tools and the set of build + properties associated with the configuration. (See the "Build Properties + mechanism" section for detail on the Build Properties mechanism)

  4. +
+

NOTE:  In order to function properly +the tool-chain modification functionality requires that all toolChain/tool/builder build definitions representing + different tool-chains/tools/builders must have different names as well as toolChain/tool/builder build definitions representing one and the same + tool-chain/tool/builder must have identical names.

+

    + Example: to illustrate the above requirement here is how this is handled + in the gnu tool-chain definitions:

+

    + The gnu plug-in contains the gcc linker tool on Linux is defined as

+

     + <tool
        natureFilter="cnature"
        name="%ToolName.linker.gnu.c"
        outputFlag="-o"
        command="gcc"
        id="cdt.managedbuild.tool.gnu.c.linker"

+

        + ...

+

    +

+

    + At the same time the gnu tool-chain definitions refers to the gcc linker by + defining a new tool as a super-class of the "cdt.managedbuild.tool.gnu.c.linker" + tool

+

     <tool
    id="cdt.managedbuild.tool.gnu.c.linker.base"
    superClass="cdt.managedbuild.tool.gnu.c.linker">

+

...

+

Both tool definitions listed + above are actually treated as two different tools by the Build System, while + both of them refer to one and  the same "gcc" executable. To make the + build system aware that both tool definitions refer to one and the same tool/executable + it is required that both tool definitions specify one and the same name. In + the above sample the tool of id="cdt.managedbuild.tool.gnu.c.linker.base" + does not specify any name thus making the name to be inherited from the + super-class tool, so both tools have the same name.

+

On the other hand the cygwin + gcc linker is defined as

+

 <tool
id="cdt.managedbuild.tool.gnu.c.linker.cygwin"
name="%ToolName.linker.cygwin.gnu.c"
superClass="cdt.managedbuild.tool.gnu.c.linker">
...

+

although the tool definitions + is defined as a super-class of the linux gcc linker, it refers to the + different tool(executable) than the Linux linker definition. The cygwin + linker definition specifies the name="%ToolName.linker.cygwin.gnu.c" that + differs from the one defined by the Linux gcc linker.

+

 

+

2.10 Build Properties mechanism

+

+The Build Properties mechanism allows defining a set of properties along with +the possible property values for each property.

+

It is possible to +associate some set of properties with the configuration/project type.

+

The tool-chains and +tools in their turn are allowed to specify the set of supported properties and +their supported values for those properties.

+

 

+

Given these +capabilities the Build Properties mechanism is used to facilitate the following +functionality:

+
    +
  1. +

    The New Project + Wizard is now now creating the set of "general" project type entries based + upon the available values for the "org.eclipse.cdt.build.core.buildArtefactType" + build property and allows associating tool-chains with those project type + entries given the information on the build artefact type values supported by + the tool-chains and defined for the project types.

  2. +
  3. +

    With the + tool-chain modification functionality tool-chains, tools + and builders can use the build properties mechanism to adjust their settings + (e.g. option values for tools, etc. ) using enablement expressions + mechanism. This allows easy tool-chain/tool/builder switching without the + necessity to implement a converter. Having this mechanism it is possible to + define tools whose default option values will depend on the set build + properties associated with the configuration. Thus it is possible to have + one tool-chain definition whose values will be automatically adjusted + depending on whether the tool-chain is being used to create executable or + library, etc. or depending on whether the tool-chain is used in the + "release" or "debug" build, etc.

  4. +
  5. +

    It is now + possible to change the build artifact type of the already created project by + changing the value of the buildArtefactType property in case the tool-chain + supports that.

  6. +
+

Defining new +Build Properties and their values

+

 

+

Build Properties +are defined with the org.eclipse.cdt.managedbuilder.core.buildVariables +extension point. Please refer to the extension point description for the +detailed info on extension point schema.

+

 

+

+The Build Property definition consists of the property ID, a human-readable +property name and the set of values this property supports.

+

The property value +definition in its turn consist of the value id and a +human-readable value name.

+

 

+

+ +      + +<extension

+

+ +         + +id="baseProperties"

+

+ +         + +name="Base +Build Properties Definition"

+

+ +         + +point="org.eclipse.cdt.managedbuilder.core.buildProperties">

+

+ +      +<propertyType + + +id="org.eclipse.cdt.build.core.buildType" + + +name="%BuildProperty.type.name.buildType"/>

+

+      +<propertyType + + +id="org.eclipse.cdt.build.core.buildArtefactType" + + +name="%BuildProperty.type.name.buildArtefactType"/>

+

+ 

+

+ +      +<propertyValue +

+

+ +            +property="org.eclipse.cdt.build.core.buildType" +

+

+ +            +id="org.eclipse.cdt.build.core.buildType.debug" +

+

+ +            +name="%BuildProperty.value.name.debug"/>

+

+ +      +<propertyValue +

+

+ +            +property="org.eclipse.cdt.build.core.buildType" +

+

+ +            +id="org.eclipse.cdt.build.core.buildType.release" +

+

+ +            +name="%BuildProperty.value.name.release"/>

+

+ 

+

+ +      +<propertyValue +

+

+ +            +property="org.eclipse.cdt.build.core.buildArtefactType" +

+

+ +            +id="org.eclipse.cdt.build.core.buildArtefactType.exe" +

+

+ +            +name="%BuildProperty.type.name.executable"/>

+

+ +      +<propertyValue +

+

+ +            +property="org.eclipse.cdt.build.core.buildArtefactType" +

+

+ +            +id="org.eclipse.cdt.build.core.buildArtefactType.staticLib" +

+

+ +            +name="%BuildProperty.type.name.staticLibrary"/>

+

+     +<propertyValue +

+

+ +            +property="org.eclipse.cdt.build.core.buildArtefactType" +

+

+ +            +id="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" +

+

+ +            +name="%BuildProperty.type.name.sharedLibrary"/>

+

+ 

+

+      + +</extension>

+

 

+

+The values are defined separately from the property, so it is possible for the +property values set to be customized and extended by an ISV.

+

+

+The Build System will pre-define some common general build properties listed in +the table below and the set of values for each of those properties, but it will +be possible for the tool-integrators to define their own properties as well as +to add some new custom values to the already defined properties.

+

+
+Build System-predefined properties

+ + + + + + + + + + + + + + + + + + + + + +
+

+ Property id

+

+ Description

+

+ Pre-defined Values

+

+ + org.eclipse.cdt.build.core.buildArtefactType

+

+ Represents the type of the build artifact built by + this project-type, configuration

+

+ + org.eclipse.cdt.build.core.buildArtefactType.exe

+

+ (Executable)

+

 

+

+ + org.eclipse.cdt.build.core.buildArtefactType.sharedLib

+

+ (Shared Library)

+

 

+

+ + org.eclipse.cdt.build.core.buildArtefactType.staticLib

+

+ Static Library

+

+ + org.eclipse.cdt.build.core.buildType

+

+ Represents the build type for this configuration

+

+ + org.eclipse.cdt.build.core.buildType.debug

+

+ (Debug)

+

 

+

+ + org.eclipse.cdt.build.core.buildType.release

+

+ (Release)

+

+  

+

+  

+

+  

+

+

 

+

Automatic tool +settings adjustment with Build Properties

+

 

+

Tool-chain ant tool +definitions can specify enablement expressions to make their default settings be +automatically adjusted depending on the value of Build Properties, other +options, Strings, etc.

+

Below is the +snippet of the gcc compiler tool definition that specifies dynamic option value +adjustment depending on the "buildType" property value.

+

 

+

+ +  <option

+

+ +      + +name="%Option.Posix.DebugLevel"

+

+ +            + +...

+

+ +      + +valueType="enumerated">

+

+ +            ...

+

+ +      + +<enablement +

+

+ +           + +type="CONTAINER_ATTRIBUTE" +<- specifying that enablement is applicable for the option attribute

+

+ +           + +attribute="value" +<- attribute name the enablement is applicable to

+

+ +           + +value="gnu.c.debugging.level.none" +<- the value that is to be assigned to the attribute in case enablement +expression is true

+

+ +           + +extensionAdjustment="false"> +<- specifying that enablement is applicable for non-extension (project) elements

+

+ +           + +<checkBuildProperty +<- evaluates the build property value. treated as true if the property value +equals to the one defined in the value attribute

+

+ +                + +property="org.eclipse.cdt.build.core.buildType" +<- property id of the property to be checked

+

+ +                + +value="org.eclipse.cdt.build.core.buildType.release"/> +<- expected property value id

+

+ +      + +</enablement> +<- in +case the buildType property value is "release" debugging level is set to "none"

+

+ +      <enablement +

+

+ +           + +type="CONTAINER_ATTRIBUTE" +

+

+ +           + +attribute="value" +

+

+ +           + +value="gnu.c.debugging.level.max"

+

+ +           + +extensionAdjustment="false">

+

+ +           + +<checkBuildProperty +

+

+ +                + +property="org.eclipse.cdt.build.core.buildType"

+

+ +      +          +value="org.eclipse.cdt.build.core.buildType.debug"/>

+

+ +      +</enablement> +<- in +case the buildType property value is "debug" debugging level is set to "max"

+

+  </option>

+

 

+

For more +information on using enablement expressions please refer to the description of +the org.eclipse.cdt.managedbuilder.core.buildDefinitions extension-point.

+

 

+

Specifying the set of supported +build properties

+

 

+

The tool-chain modification and New +Project Wizard mechanisms need to know the set of build properties each +tool/tool-chain support for filtering incompatible tools/tool-chains.

+
    +
  1. +

    Specifying the set of supported + build properties for tools.

    +

    There are several options of how + the tool can specify the build properties supported

    +
      +
    • +

      A tool can specify a "supportedProperties" + element listing all properties and property values supported, e.g.

      +

      + +     <supportedProperties>

      +

      + +         + + <property + + + id="org.eclipse.cdt.build.core.buildType">

      +

      + +             + + <value + + + id="org.eclipse.cdt.build.core.buildType.debug"/>

      +

      + +             + <value + + + id="org.eclipse.cdt.build.core.buildType.release"/>

      +

      + +         </property>

      +

      +     </supportedProperties>

    • +
    • +

      In case the + "supportedProperties" element is not specified the supported properties + will be automatically calculated: all build properties referenced in the + tool's enablement expressions will be treated as supported

    • +
    +
  2. +
  3. +

    Specifying the set of supported + build properties for tool-chains.

    +
      +
    • +

      All build properties and + their values supported by the tool-chain's tools will be treated as + supported by the given tool-chain.

    • +
    • +

      A tool-chain may specify + additional supported properties and property value

      +
        +
      • +

        A tool-chain can specify + a "supportedProperties" element listing additional properties and + property values supported in the same way as for tool elements, e.g.

        +
      • +
      • +

        In case + the "supportedProperties" element is not specified but the + tool-chain contains enablement expressions, all build properties + referenced in the tool-chain's enablement expressions will be + treated as supported

      • +
      +
    • +
    +
  4. +
+

Assigning the set of build +properties for configurations/project-types

+

 

+

Once the tools/tool-chains has +specified the setting adjustment expressions it is possible to use one and the +same tools in different configurations and project types without a necessity to +override/specify any project-type/configuration-specific options, e.g. debug +level, optimization level, etc.

+

For this purpose it is possible to +assign the set of build properties and their values for project-types and +configurations

+

 

+

+ +      + +<projectType      +

+

+            + +buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" +<- the project-type level build properties will be applied for all +configurations. The buildArtefactType is a convenience attribute that allows to +specify the value for the "buildArtefactType" property.

+

+It is possible to specify +the "buildProperties" attribute for the project type and define the set of build +properties there in the same way as for configuration (see below)

+

+ +            .....>

+

+ +         + +<configuration

+

+                +...

+

+ +               + +buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" + +<- defines/assigns the set of build properties for the configuration in the form +of comma-separated list of <property_id>=<property_value_id> pairs

+

+               + +cleanCommand="rm +-rf">

+

+ +               + +<toolChain

+

+ +                        ...>

+

+                    +...

+

+ +                  + +<tool +<- note that we are not defining any configuration specific options here (debug +level, optimization level, etc.) Those option values will be automatically +adjusted based upon enablement/adjustment expressions defined for the tool's +options and the set of build properties and their values assigned for the +configuration

+

+ +                      + +id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug"

+

+ +                      + +superClass="cdt.managedbuild.tool.gnu.c.compiler.base">                          +

+

+ +              + </toolChain>

+

 

+

  

+ + \ No newline at end of file diff --git a/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml b/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml index 81b595bbd3b..d837e64919c 100644 --- a/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml +++ b/doc/org.eclipse.cdt.doc.isv/topics_Guide.xml @@ -7,4 +7,6 @@ + +