From b29cd8e4c99674bb98044269d0ff4d020e75834f Mon Sep 17 00:00:00 2001 From: Peter Bastiani Date: Tue, 28 Mar 2023 12:20:27 +0200 Subject: [PATCH 01/12] AW-4929 Add agrirouter font --- fonts/FMIconFont/FMIconFont.svg | 132 ++++++++++++++++++++++++++++-- fonts/FMIconFont/FMIconFont.ttf | Bin 6676 -> 10628 bytes fonts/FMIconFont/FMIconFont.woff | Bin 4640 -> 7316 bytes fonts/FMIconFont/FMIconFont.woff2 | Bin 3884 -> 6272 bytes fonts/FMIconFont/style.css | 12 ++- 5 files changed, 138 insertions(+), 6 deletions(-) diff --git a/fonts/FMIconFont/FMIconFont.svg b/fonts/FMIconFont/FMIconFont.svg index 7d92793..1b9c09f 100644 --- a/fonts/FMIconFont/FMIconFont.svg +++ b/fonts/FMIconFont/FMIconFont.svg @@ -11,6 +11,7 @@ inkscape:export-ydpi="75" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" @@ -24,14 +25,14 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.5" - inkscape:cx="679" + inkscape:cx="193" inkscape:cy="500" inkscape:document-units="px" - inkscape:current-layer="layer14" + inkscape:current-layer="layer15" showgrid="false" showguides="true" inkscape:window-width="1920" - inkscape:window-height="1002" + inkscape:window-height="1122" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -72,6 +73,18 @@ + + + + + + + + + + + + @@ -443,10 +518,57 @@ image/svg+xml - + + + + + + + + f7kk5t1F`Y8W_|tubf-Ga^84IKmaXbKJxC>bEkLSQtKE-@=sWM^8EV6`+sZQ zfUxmj#r`+?#=*eB-`sWbj&SF{8m_>yVf^^O`qbu=txr8cyUY~U=QsAyaXPp03@xa$ zhH1D4+jxzpvGNQ0i17R%+<2TlwsDl%8^b(rIWMJdNPRi|`ipITIqEUvtZ|+n<=-@x zjU!N{u3BBz2}o62?HN|jSCe{vhSz7POPwy2MZVs_G?6M`aXuEEcBjj@%44BZNpP&o zVt(|wN27rPA1S*gBNe4aq&K}%DA!8ffID#YTzX`vSjvxh;iFEmHyTH4Z``(gQzaN# zBL3LJ6JaUUx#C=Z`EV+@bLK#4hWxE9xPYO-d{6lw*lHxgd5{A?jryXo3p zo?t?GZfI`Ix|x)1C8eEHR~~+B_oWX6!9=*Shq?3XH8quGqKE{sLu%4)ZYw?wZR(*z5 zWt5M~Jc^@XeXyzzMhdhEJkPZ-O{k+fTVSUdm26J)IfN0p2lwYDC`omQ^`6u=Usecd)GHpPQr ztRFBEA%MdgVVv!2hEs8+4Yx(GZ0l@aEjUnX0JeHmuPErUc?RCWS&ei>GpuM&%U(W` zeO;hcADIeFo`FM_G_X^&3*c6CJkHVrGF>BIt%#6@U~1gZ4vjP=o24bvWWcb|N*3n2 z*w4=e3~N!`Y}dQ2(cA%mwBA)YMfH~UX(R6C;~dDUm86b%qGmq;<|?vUnW5HLmzG(x z(_E%zXQ7E92JhT4<^3t{zx4Aq0ko}F;D-5z9wd6$>j{7=}X$nc45o1!4P$`q#QY0l8jHuRgbDZZq=`j&9tT0a4 zuyT?yE*!4#C#ioia6ATcD@Uc$SzDN#$nr+XFO*X@C(}+bb0jU9YlWe&d}wUT zOj?-cCJzctX>x{(NCccD?-A#mSq0C^`j+&Yv28H{8rSnoZVQ*lmUie1VOflU576Mk zB9u}vv6(4E%(={%m#_T@1WUnTM)!e8h}tPgn0r6*Z}tt(xzBk z9)~o7UD5&_NTi$%;466uQ``N0XvYEQUkjke9EyMhlY-o9@C2gL`Xtl=GF%*1HUO;l zj}7+vwsK3$H97oi@vp%$ZM9W`RtTOV?CG<5Q3=>gY3(uCt{_7&SeO@Xp#Ul6vg?|s zCUyetAyuxWyN<)ze|kU^d<_oXjNg!KxVRoC-l;e zM8HCy)X!iRoDAy_YnFOLhl>E5SXHnT2GVG5E4Y6710ese>+RXrpr<2d>w0_e&eG=2 z{My|==HF!}2d4+VC_YHEH#?lp?byL+`x4H)2qI>Eo$8C*$1z;gXRuuS{Cjt-)R#t% zesn&SSOqFv^^4DZW9{imKLaRG6FZOGe&$?n@yfTWrQD%MZeDzN=Pic{E9pIm*(uSj?mN0I5ZyBQ|4oW~O}#bZST9w8UEPjW~UsyOcxOQi>q6!xHvi05oF z%*SDY(Rd-7^`pSjSW7o^$RRhD+~z%IS)n_!Fr-t`bOR@nNV2S349QFP{f{Zj4LPpT z`6spw3D!vq&+|oryS}n=Nj|K#T!&eX0O?fI2$HcaYKW;8dUvdjtb2CzfR_9k-~M!9Ya4u(#io3|`0Fg-7@OeU{4E7g2# zxs_qWbZT(i4g;l}rGb$z*%Be93z9?>Gl!u#;ef7aKnZaQh!nn@A*+zS2xZF_R!=7} zE|daLp|YS9@R+1YmM|R$If@Gpj#vZ4LXe5#0!VZ&bIHlq`N~Z$ZCzDR=PXo6ge=gq za?sqe6`1LIp#v9jkK(2y8lr5eSkHv#a9Zogxn*%w4ssCxHd5X!YB>ToXrRCad9US| z4h+JdFcswMjDcuwGMI$ofTymNNMfxXn+?VpcWiO+U>F=6+D6g*e#xXIeA|9du-?)V zGTI$fS?RglAM`Rh`NSfS=Tf;Qf`Ay_(_k-r7$SIR$_gnN?(j96p(oJ2z|3q&)jDAG-4%!;DKB|J2 zD~HCozu%lI3k=)MhHhK~3TYM_x}nfb^=3DtwR}xM0ri5j^if#)^Aq0NsslQLSVrC|t&e$H~sYCb3 zFyhwWSbarjQ)Tast>Vy-nXT;Up}BFFm+fj(ziM@kP!I+v{+TPwpE^-Yr_;9Wrx)Hk zFEf6#+CZU|*{O+w8wEk+mKKjPWtA;^{3(+%<@8k}BVqGPH&;@rAcH9Vp@&p>-)+g= zqp1K)(ZHmgFaJYPhABqwo9|DhLdJWZWfsao_oZ{SbUFoD;jf>+H(J# zW4yU!;PSJkugD(XvGd-CKCDcp!p!#N!5M|HKXuAU?wcJ#(ZQR`_x;fM)O|~PEuIQP zRB#g0RWTA@zj#d8HVP04>5h+kD9vAd|D1A;kZmvjv!LSi;9ZSoZsi18i6HP&NQzfn zKYPn(r!ytf_X227(d$o7g@HXB_yOblOHr$tx$aJ1gek~j%sqSRLnUM5`TRt^W<1pY z0k5;dGG5*q>mTNSzBQIu|M!jm$dA?!7~2tnBy7;8jOVt-CjNKvy{)mt`rmHsDO?B_ zjcH`ow9zo;@NI6qQYc%C)6MC|T%)=1lfv!9HYVBdXbR~_2I>YXJ?bS%QiN(pc;}FZ zf)#B1O7X~;yn6M*$@O=8dyb6kzW3hK7(Z~?+<#&9;zeionG0txtUqx7=?fb_C=OA$ P@pr|N_s+i_)~Eg(FMb#w delta 492 zcmYLFOGq106g~INOg_y-#Rerc4gSa^(4i)nV4)2tIt5V_EPfy&V@ypU(IEz^xQIfr zblJXWH{H7HLMX+p8#i6KRMbKtn|7zg(w$y3;NtSmIrqNv?s@Mfs=XBu06#XMVBE4^ zjaK_lr-9&qRzoibhb+X<%>0;ncx>WnV$wJN9Uz{;WVUEK`k#j-=0{w^i}s3hea%h? zGKXieu=e_L+qnRgJ|Ixe=j?^h;oc$l&bU(fe6C`9hEqtSB?zW8Pj^ z&e|P6+m_fM#QagwUUe`f!rW&=v@hAk-0#mg2Cp2T8G0kXP*R@I6GkqvB|nNCIW9D5D6QWt z)6HmKbbZ<3=7ZrM@aSZY!i0tSVIdA>e$74O>P+_ zzljt~B+$bZm+olTZKljbPa-bOXoeu)M>~T$FHR67NFkLpa*>-nV*Tw@RxC98&;%>#=oni$F6n`M0xLeUea4)Wf;##yg#jSX84Nh?>?()+A zhj(YL*|~lz=f2PGhn+b&^hv@H4|N3v021J(ktYFg{`D-u@epQs2I;%)w{r3d005He z3#9y?SOCQ8TAVyD%H}K+V|49xgFm4a?de+i zm%xCFmk&%6)1?=5a&&cj`RNw~NPJO4t|LIvGxH-93N-@+8ZsW;K2qNWyloeVMg_>j zKwB?UkY4m}3*r|czc>^CULq7p9Q=oe>{-wv944)a0%(uJ_>@?IM2EDLIDy0f$K#}u zBpS(o$r#Td+Q0lDz2pJeGc(x$BhFk`zumH9=lC9B;<4Iz$~O zslDigV07X(zu|}zppdqIpZ;8LT{yrduQP~CWqFRK*NG4-ur>3kfs60q-Ss@Z#!#x9 zMNfB7MlLX#y>MHfD$Rj`g9?YDjSeZ`W?4}j=q4eM$GmDjx96n@MgpSv&B3vB(-gv@K zwRE_EIuJ{l1(u1$NdKS#-c!t0{IrGnLGIzsQBgi;S41GWV&+S#vl7LVM>gHI>&7Bs z4&HO2mKr63W1;b*TAR>+G^)&$Ek;_-h!78Y>PQ*r7H~Q53zhbw0Yg`3?6kU(``SQzaT*wv#<*>3CBBVwIK%Tv*!8c zbLqh>BIQ4fXjX5US3m*5bIBSFrqFi@*4ZwolhCK`ZTz{#7!V%Ae1s-WKG(e8I99Z5 zH9nsBkt+>RT4F#=ph$x(NHwM#S!k}lq3K`|%d&DF8*Y)s9j0Q$B2Q2H`q#{tv;v0tKJkxWMOz~l85U2CNFD%RwI4&SB^i5tLi`pm!x$1`#TESGP1@zV6jim= zR#^4I2H@1OH6vm8H7mFsBGm4$mBUm&l=PHfnKEF(G_}EJgm~N=142sL1KPBOJ3$dL z0&7bu29Lwt=Ri9P(F*_2oEV)^XFp5{$9D}F6E^rHJgUg7NyJ77OtAy;Zi}_xK;=;~ z>A8HEM<3x~6NS)kaol?G?VJvm4F&J^YIYhK2DlqJ8!>A`I!7SVNV`A929ug@fAxw% zvfmfc=-QF;W;4vAw_R@w8b+0SY*KKjh$GWMebS_FO=MjK+mbLFSHebRo3@3>^x%37 zyE6_wtY>xg0k#+_e+*L^D)lI?M6USD9B|4h4(dKNUgli-&N>p9>x&bntBQpzt0niM z^THRyz(_OprpN%)$ia61aA4!OlL%+&6KtSAt@|C^bfYTboG6@EK|rC*-yu#PF2IlM z^T@)-HHIrXC`|?G;_j9vBy?v51vBgh)X*?1K`_uj`)IlN-Av?6wJcV@8n}PT&`l{x zL;h~Uq-JqH-q>M^Q`cq0=Li)#lC|bdz?B`EEY3MoqF^Q#sg6I`Mngh$9%qt4-%te@ zDvPJMr9Xb8Ka&|uxPiU$&g#G2C{i}qJ6XC(h-_)jC`$IOXbwZ)5+mtipk#4nAU&RafY|TJ7DS%W0Ug6Qmfg&P!9U7Ks%HR8!jW z02vUh;`ZG-px#4dj71U~T+DdqU+uatVEs4OWuL-Mj@bJ>>1q8nr7V8}w`$t((ZFa= zemN?&Te_nWti5Du%M{!+UrjegBckp>Ovln=NQOa^O#QvjyNmN1P#`Hh1%Bi&XTY*W z7A~9hdGhNII4rx~7|SmX7lB$+ck9WQvEfB3c652}O4g2!x`uHRM@~{J+o9mt zAe&-|PH?g-Cg#6B0PK~)5)yO`1}8k2uT-Ei)}?wZ6j|fYCLaMl+74l-fQc>hhN`Xd6XfC60Zp~u-jBU zODh#@4wWw+=}ggHB_-TOHI8MOtEhb0HulV9sOQ07Bwi|AuFZ(~=?=cV674`U#U!V! zR_@cZ5?zn5vH#G6PeTwwBhLzQHngn(zT1ra0}k#+G*F8u3&{gL;Y5X!cNSrRvAj5x z`}FO_LDUy1AjHyimad7tv=In_bt7m7AC~yYZoqqBaWFb7>Ws5XBSqsM3eF#;StFe= zC|*T?5#jSip0=i1V|5?|ip55lC->O)4JtAIcxD^mh)KO-kKE>Wsw-iqsf7qYgpDPz z_D5F;Ma@))XOTPnCo4mLZ5OVQu6Dy~!DR`5ln%A5Kf_ax&R$QbxmkL8qavVWljpfa zj}O!jg#D?W$eoqte^mVW!5iETmRUQD@f#h+Y#V(%6(53+BGi2r z9K=J?2)x0)_Wh@=PrC4d36n=|;rL7Gtv?|`q-OY;f7=h>RCwxmWc}ai17@0I+~2n3 z>s?Q`v*zk)DM@fZ>iv>J)Y92p!y}3b_^e)$usl_NX949joJ8iTJq^iV6^s(TsECQ}rd!STW_2hODcE|6 z2XXK6=9hhfpb}+?+CsW+&1v`(6HU*7BEeN^Djm9@qxaLJKW)O@B-FRA4G~)Fb(wNr z{HrZcQSx`$=(r9;H6@I0WWcX1T++=g?GlO%&qKt=AdG~Iuv645F zqki$B?r$9Z1x=*+>#V+vH#kweqVTXAYZ>+RQ?f1jK3%ccuOKH{b zwN*P=;^4%Pvb+(bsBB4(|;GdW?We}CGH8Dw->If zzIp#`!E-|(ej24?Bd`Q#v)UdJCZ3L3fX%6HONRI`v5*%PKvD> zEqL`$3Fl1ztQr3vhA>HLVdLJ56!p&)G*&hn$MRsjo$PC_&O?C@&XB%H`j`a`z?IN^#=~gAgT%tR^ZKBhG6h zUBD=B>Jo-(2-Ye{k-Vu?Avhu@gEx8hWG#9hW=3aW{;WoybC5; zq;;!#DN|B^&>BNc{wsd%wLVA;8tvMylaRk{SIwz>UNEpy7Bnfpt&&P8d+t^bfzK6} zIC6>K`qDD`+E58 zy9$%W2cg3PfXY0_rD2Icnl#V4Fj5N&AOcGZsf3nA#qIS>U`g$<^|n9B1I9V?s}ECK z%2V|)5QK|Z(xQ>(h&v9A`L!#jI2^NpT32KmN$d)A#$|I4`Km(Q>`vM;xY(c$#*^ku z%OMP?wPN}bY0zTiY&)_>fb;&-$Wy4e!`AH2PqTLd2V1lGvttGw_P&EPlU|>fhfbXM z@F6I>38kNZ9s{`x;Cp*ThWRu_P}L@e^J?tVtCGiAU}GoLIvG3m541Wf7k+`WAbncx zx=o=$z!kgz@Pl2xnHYRxoY zTD3h^w+H|9!-+r)gS^mHiUpaqWm}lC=*_BBW4-P8Q?rhF;NA5k^!mpMVdzRj3dgXW zE3<%kq%7>W$cvk^Qv@0}a4@FOwBS{?pk2lfgp+~q)y1!M=m_)W#XuisX8Woh(pXiy z4X~-j?OY)pnlaln+HJv(=IL?iOE(U(qG$ec4rH%pTMkMo zp2N6|s5U6`WFu>{a1CuCnN{b#em(IVN5!^~5A--$Frz3lz<84i~ZZHtxMVS3j0$Sp4-gpUjDI;%dS!66V9BqSNGyq#X74Zvc@tiaw{?`@B9)z2S4z5 zWj=7+iruQ55uG{y!Clo9Sr-Zk}FZWSe!aJX$eM7`C=Dlrj-v>7Tl8yedoj6@>D#3wDHYxUt?vi<` zxM0v4SwOY{$INOxd$hJeafZ9kEA0#4)tDJ&+#9M~2=)4um&%$3BNc#5k}tofI#)PN zS4ql+{;XLJRuc%cUNOxwPcBs2bf+(ZBMF*e%~u6I`ok4Mfaf^a{oM`gV%&i6ESUHF zh@*QNFNmO;^WCv<29sbeG3{7@lIYaL`|gk4Nju_0I&}Ids?ysKM+4G&u4N}cx8RQ1 z22?^jD_s;lJuQ=20Y!?60_a)<Mp>B8ScU%+@lsI3#i3Lx3TOU8P2D~#U>`Z47kpDZ~2xdcfl-cg^f8ral!>C1eXibR<60$U8SV(wdoyTDaa`g!g6?9gXxt z1){gXBMTQ6pB_vr491|FU8Q3*cO`feg<(~X0Z02SA(u$m3STm1O7=TAVg2FR%y>6f~;i z?s^JH0H{_dW$`i9pSx2j9-pdKi(mWKd?T2J3U$j+MSau)HZEkn>z4-{@b8T=qWT2Q z!pm#<_tfv)f<19=#Nd5QXe=_(4@1olp^KN2eovc{UgN$9Us%PW731d4vDn|U+jZnm zwp5-cuO!cRgY4I87wDUd?v6OW3d=YNtCK2YWHJ%-+FNM82G4(T{pF(WofJ0B^z)Su9GEQGg8bd0b2X4&4(u z{WcAd&ZEll|HyxdA1AXz0q*L0(j7?_lH|kz7N4mw=7wXF``dnlDyK%V<+P&?O9U#p zIq-U+b-8g<>-%I$#<}oz%3aIDn`Vw3p*1Asw{zrnZz&RBDVi=D#*Ugjnv0J8OLXn{ zP4BI_O#0ny)6#j!!iWIzrK5hh+aazE8EIRP)=)VhgRh=*8h3gF}{ef1wm4^UJD86ixfRS~|mpt|c=^-b)4-jxZx zmbe~U;GEdun>~>1Gf^67cBA?2;lU!@j>aw-O>r2T(DnP&ocWj>vqb#rY`He5txu(j zOu@HB`Fn9?`_9Mf_If^eyE<~c%Z6drWh=>H>jjC(=)(qGVykHZrE_rX4e`Qax;_ZZ16AN!Q0BaLxBlMR!9{O)TB` z%OSAjge{w|cluDWRHwu!TxYC7|AYniT@HsvCpJt$C!UezLI-v@y|LXarIwf1u=D9r z%v!%e=5NzuFNrFiIbHXas^H~_0}aELynVFv|7L`bXT5pD?GdgCLfB$qDg~vF&f@-H zxhvB#&RFX-e5I5#qGU~`;F2m?L!UA)8Kri~fId*NSfeSzomz~u8k8&;RinjX*JuQA zjCnmQf}P}YwI2nin(oXysh~!pR4xswO3y(-<*CN+Z~UOm-P)7N&BdL8_?j__MHO%l z+V_`G(E)@p3XsImjmn}i^!TCWVHZG5BRdAV`+$kA(wW6LQj+~EbQ784)ckC%U*LY5yH?&5P=o$h2lSZ`q! zH&0W%Vc$~!92r*j_@(BoQu1d++hXOa)75Mu+h4f1eVF($M`p+QDAnCQ+3|DzTNC&g zMSs`=-Wk;XdL?L4^SpPm3#HLma8EFhYP-wq`6*TG>dnUU0(-w)4g5IZuOEWJW$Lf$ zyY?gl&^@hFji4S?wM3AxqntIvQmI)@V|qSN9gdQA0@+^V;gbs~Ou{u#lsp`w;XZnXp05`S$pGy9DWZhi+gA9Wvm zfWJy3v1&tVPY@l!rG!=}O$K0}u{qw}OQ2M#Z3sjC=KSJc-+;P+)F1mGAmFiUF47X*lA1m>M{}VSjnR>6LmyG%@`0R)s(B z&oN7XNF$fDvXh$6^H@E)FsWOh^@M7zUd!%Ka4w2k)-q$$*b%m`tVi{YiZ;4b5FNAb zad7&8W8wR`>|5Xpyr=ZUMej{fh0TXUA}L(yHTku>Y?sH2tLsXpck4b#yJ|I(o(Be` zyCI!;%q^Aa?|u!w^SBj@hLS2T-%A|(eIPX2>i~$>R@}W*AO6)h%%D(!=^m&->GVOs z7!ynaoogWGec=pvQ|%Le5qbFt$&O5 z*n zsZ{OJz`*8U;$mXj7;XtZwY?fm6?41!xvO!EeR*z9x5E4bxQVEmfZp&S^<=}U;-KX( zcDP~YraSj(cr(C~Y6r~@E8128-g`5Nhe@s^iPfg6)d2NOez`cX2! zta4i!T103p__gaN9;xMLYFl!ko1)5P<}8*q61PLOHgTesQFq2VQ*wq^RX4wyDsLO6 P4j-;AQ3JGCL;(K>E3i)w delta 4496 zcmXw+cQD-T*TxsoyJ%qvqK4=_qC_XU=wvrotM?M^OAwuio?SgrB1B(75WPf~5Cl*?+FgF|0e+uoq>snIF7mDyb4ZcX5`Ns?cJeXI97x6hPYpcV*9p_6Vw;S@No!4 z@=rH6AOa`17cd;dc`6DJh~Dog)9VoK2z3B~Xy|bn5uBvKy*0gXxFZ0?K{Xus*O;3` z=N2K{-7g5oaA6P_Ck_f*d_Ol&`+vCzoM-tb&P7%acW4lR5JrG12x$+2Kpa3Xt$BAZt~oA8ZKwD|SwKdE zB!svK9!|KqL5w)z;~W8qJRO4fh{i#j^+pC32URg90JW=;dZ$<6-NXBqK7q#rFnlY< zRZ$ZY2mGtY?EpUr>2DDd_kP3jCjT58e*QOb&uKK!L!w^732lQ${>=TgwFg7}bhxdZ z<)K4oOXpv!p~h*fCFSy+zt))kgAhLt#Fh2k%OC=y+V3v+Pef`T)2dX~_TDcxCD#rJ zTipNVuzEM&7v0*Hy%Dy!0lZjTIu7Z>Cs#VbP>5tn?W#YzJVm+wDg8Kmf75((>W3{x zrfSUk837TSEHCA-RWdc>@OK~Y$7aLdSE8#v5Vs*gb{q9PSTl48{&83v(}hq0!;6Wp zGgQk}!F|t|1QT*Ug< z=L(#T9T|!avX0X14>S^^$RjW!saj&g^`;qq(CH`vJEN~UQDODV!JHE!{fQTDRWp~_ zI-Fq%*dk_#(*JKFYL*-lccuovA8`>Ln6>PV`sp@<{@x^aH0pqQoKL8jJaN zmsEn4^lb8Zxq4%j`(l783VioSN5u!0HAKhuCcjZTlBhh(b~!API?e02x&lvgNBT(7pmg{gu>`JJMQtAb!0M~kqs@qB$G zJ`Jemj#G5UebR0eON2u$~RxhAUj$0RjWytEuu@n9BPJQqZGEr3;sXQ@%=xvS-Snez!Nqb4pAPz4^9!Xm(%az@p*5mEf`v)}xc?_Ji` z3|=N1w63uq+4O>z>iH~q)8~tH+9oZ>Tc2JwURjTn97Y>@Df-f}9c2k&fePKFqPMav z=P`YzIu8roXS_wJytGCz;b;D%N+YMb))cnfb^seT=U0n>H_uRF;@#y2>aMXa$y2Ww zzo3D=WEFrXvIZ(Zz!ptFF9?r7aDkU)>`Ebt{3(vgjzZCxqIi6H*tg{Q66*zjId)hk zeL3fc5=Ym3+pe)seZ(Lu4`xlGT7%|kq%)6LonkLTFUOi1{KpBgFe#C>aM?zt=X{`B zv5gBN$Z$P!WuF=*h=BzNm$0uQIW&Zh|Kg^{gjK!K6<9@|)^e4Sapsn_Odc z4gT}nQw3$7mXxk;Y*yJ-`;Cfj*U_iu91mPAI89>8g687siJ&k(6582?NHP$Gp^&~T z7eLp((z$-AoubdV1R<+LtHyLNj55VZWV%I}Ddu*%G+3G8$CmI=m0#-f#UBokbV+s@ zrjrFEfT5&L%s)wVy5f4&peL$uwLd+6bymf&lg>gxst>%{YKLjsL|%LJ-R8Q;$Z@-> z=v3V!*VVhOO{@LvbAMw;LgneUst_OGfPd?5p8=C?-k*es)oll=zFDI91?6$sVD($o z81bfBzSRKnFVetcji_(hZ;EO6cd1efDm6!8!0guk75I`Ol}h9F!NK%zMQohwozKyJ z(BXKQFQPS17wESK4S9ro1V}W!1#Fjg_b7d2mcmM7jWkL))#+ElP5&;x>dt8i0H&Sq zd639Zu{EF5^1NT2mxNf2YY5XGBF)}5Gb`CyQM0ah!Q$E0zu38;WWA@nS0FaAu_1d^ zKFw1PUm)vYg-uz#_moWdn1Kx2a>qC21Bc+G87JD;a@_<}{s;-NT1k!Gc#v@qt?tvBd zw?*I(bXm4Z4(1%V;Z>tkyeKY!a;jG~lbkCFHl^tPn#}j|5I%cKzVX7HI4)6-p+$OA zNN#~7hD32Z36D(aqh<>xGa!jLAr>(dYp5&mC1IuW`tOefEMHi6FvIF1aBDRBM9W#|ur(#hp&}Bu=q0^D=MuVoO3vT}o}yiepJU`ysWy$3EW>xkWVi zSTWY=E3&!avVy613rAX$ZZiai87rT8=6(m8wgzoz#FP4zO@xLT0<|Uu>i0j%%HpNJNKm_RGWnMM4kDjaDa9N^W(9=IZYrsf10rPQ{@Q@V19qj@sV>_SMbQ62qYc7vb2Nj+*|xnN^4B&tJ~oa=K0AsvsuZHeZ{+J6167nIqzM= zqx99J%UWc^533DkOnrApA8{u-OX2;r)TWR_n77qX$Cj{~Z)dwc7ENc(*q3da^$hPP z?$0@3^(t@|HbAeR0{zXQt*v=yzFdnJpAyFyNNyk@T@E0H%;Xa43wF<~^2Nm@l7?7P z7Dmp+<$&!LeX!11Z!o)ihW3}`q4j58QzaTNbLg5$R)(5v15b9JHJqXVbs;r-8=Fw> zqkiYOi(kHN$6wc-eanc%f;XVzIcy`B%AafrkEBLgSDO4*4{gVz*onl)I~=t`jPd6o)p`BuGOmo5fz9rG`Mb0;)S)uRIpU0; zFAQ|9cMvvhE)SV~LxTpyLb9>Qx zCpYya+e~ZJp}xvsU^x9NCeJ;(%d(l$1~=WiyCEAuh~nOCl7C9p@vo}7T-nzYrF_&% zpGVYvJe-_DOk2F%$s8`j#V5j%tr}Q;VrBJqC*89LmqQYrTI~{hfi6Y7pA>XA_eNH+ zEK!SfE+Gk^mhGG6{aM) z2gXhVflSA=*F*{@SL7SQVV5&YWe@kTRnNtC{qBBJ0uI(?IvSo?(WO+q2~EMG{2i`q zPPH+V7&cjIk&iPH!~(Z5A2jnb-E#IPG^fG6K3qe^k_olj1C82==-!VyqYW)xn_Q5I zuX;=m9~6AEv`JxN8YHwR2KXF;t(-W-OJA@8iGtwXmWc6qRpB?itucdfh^OyFl1Ysv z>QoKy+QhD^^l_o_pTsRQ8@t1ywean`zSYO35Q437M;@O9`KLCKEJYTZ2mZ9M03_Nn zF>cf{?f#P(N%pTD64vr3bip$O^JjxklND@4ub!u^zB1hpS$0k?toSNNMN2(XU|_Tc z>?92EQ`{r1wPoYy&YB&t*yHly;&gmPCgHPBT}cUbSFM#mk$|El2%#FdzFl z4K>8Y)aj+v?@Z?Oc#7L{Aj+r|5;Mtw)%>W8*+4pX=2FgINki{E=$vLr9y`hkUNe$7 z%&6kAShjVoxPB{|vwk1f^RlF(Cay?}u|}9SOi%kMS(}#VBT)Y|RDyd3S$fRM@ww9~ z*2_fL*g%%zgSf$r4i^6WzNDDH2u0ZQTf^jQR7I-ph^-DnfS?+j zqGsvaCiGpPLSSuZ;QjAE#;UXJAE9-(!4HbSD~-u>a3Yn@u76LQxw)x42rCjeB!6gI zoOffZD=U(X4g#lnL@Rj^>cd8xc<~I0OcP~KewrAu3r&nMz@rvL@aX~U2PlNhcDy& zXD;0_!#`w%1T9xF;Vy6NV+x6sL!PciHIW-KTz?@}J$EuW7Re#=fKm>}p`2FFnb0Ij zA@ib-((OBg9p4$KEyeYx*XKjHp)oa99Q{g}(fsaMC10XVjmZkd-c~X_z-YV~bp!As z1*D{IYW|3Ju94X+@}L8pnZnzGJ0$Vy{?e%BjezZ>4YK)eA-osn&+$@**WCKTE6*WA zEwRossZ-w~v+-8yazDd-oF)j@5#PLc3ne_2UPGb{4!;VWE?!_F^IUeRV3jh$2Kr1T zna0#+qbSk8?I^sz`(ZF(ZZGXaWT%l5Z`pM-o&S+!-<++iWqr~}&RLskl-VQI;J|$e ziD|-NEz`N3+l`_ogJLOdZR9;8>9T%OvFB7#E~!~ORZDePBv$cDqCwH$Z23}PcBSp4sHr2tXjAKdaI6enUNY9iVs=_FkvlL!5O?K1QYY}o;X$IAh8 z0L9BiTu^|B?}2bfcMvix^`U;ZGQE20ZNBJK8p7iIxVbC|b?&-|G~?zXEl>3<27%fV zF-s5vLi{l@%drOZLwSVFb<$9D5&;CFx7)`+GHq!z`dtjvX__`QaSG_PnE?R_MJ|J8 zwBV8HWhzoTSYSQ8oJ?UQ>&2Q_O4)!wV4G$>eA{WQ;>7bp=ZD)Cy!UrFo_RIO7Sm#O z^+c~b{t<)SSc}}Q;Mbqvy6loZ$e=)mIho8KYL{o;?@~YT*jLmXS%x7*djS9TisTXU zdhzO`*gE;M$A||K*0YeyslnJEw{&%M`+j4&>%>Bb&y%EXAfs=eHP$p2b}~@$ zDBPb`*Q{#}G@INZCiR`n6{yV5u%{UEAKOA?st-JRo})O|kiNzw@CcO_)>@527zcqi8wep$l&@NY?2CkW z>{645%?N)Z4vVV6J>3zK%pTFE&FtPChvp6lA=(2XUJfF}k%+Z{gt%1`Z~GRp7ftJL z_4M8KPo4jt)JpR@LEr%;pNJCYSHRU@M5(oBJ4q+DbCV0P9e4y_*x8C&ntqG_zX1WL z(8K?KM=PD-O0$3h4s4~w*MCp;p3Y`bfdncWi++@qyHWEZnDOOPzls5HotTxlkc;XDk_%6g;~%W!+`XwMAb0T+y{H2{DO z@YeG73o}_Cly6S~nMyS%nkexC3L(;D%+UZK19%azz>@>y834F2-2uM_Co0*LT~yo? z;nVmBO8USJ-LRE9|93(g!;jN!JgP%1Hql+hK;kM67)l`A`hPC#u3Yy2at|cr64;0l zU5~`QjLUEg)9GC{6HOH}mY5N;BTPFTY5k>hPPkOK*$mUqY32Nr zdp0PvEN8bwKGPx0Ur?Ak4bx%B9f|Xm>l6bUG)A!;fhVoo?#SKH7J8Y?TJ}n4UuVqSx=1)Jb2YScLKCWYmV}1oG?I@CxHvkUS|8V_e(hd=hf(S!{CI!$!1nE! z(%Y9mI=*tEmKR-{Bte#C-s~R8Y$&Hw>N%$Y9qN#dmsnhT*ptKRf%*07jS6Om+AcK@ zZ|~dl=!N{=$pA(1*xrP$2L&fc$8rJ$PwF`*v6Jn-9?l=Lwy=4=Te!T>gzZ@C;?al^ zUzN-bAKt!#nLU}m*dMG}+VP^9HREA)_pBr`Yl?z8Sy(*?`IH*If`D5IuHnp^!Q3-n zx!XB5&hHADA(~Fsk8PTw=Hp2(_Ja#0bD(PgIeOk-$$=W_MN{;J?-i+hdPnQiWL z5LSl{7|5Nr(;3DMTk);k*Sdvy^ikx_$*bn;ePwxf=|vNI@E{?uD3*Bf(zGb(3xy%? zuidd*W_rgkRVAT7F?n`!V8YCg&Xo^G%Mu{q7IX2X`--l8CJN7`v%8PYn(=&pOIw^N zze|D^v*jjK8Fg~-uIaQM)=bXE=k9JZHifFnPQv(qD=`&yfg&eoe4>0ka+lkO4w-vV zC+`>rj+S=rJi6TS;>EMAAfT?Q+qXBiZjN_`+mH)ODRfi7%hy*A+gBBa2!+QHlG0-s z++zTMjGl5)pipQGwrrUk*t3U-{7VdeR<|qa-{;17mLF7nWDc+^`Lz0EeoyhQUK()C z`^SE7Ak%@Fu|Z`3%L;BSb$J&YmH~$tH`mzLgivse-}McKf(_$7GsuX+Ef0dBZDdxf z^LU7tT!}Aym}&|5_?A7$r`&?jc#5?KJ$G{4()j`;>xg%h?QS;+xeceC?o(D8C=+L( z#Xcl9!LctjC>g&w?ZD<(HG+eK$}9cR2j&n<(8G;s(qO(YC^YdG!s%)x!~%6Z)mKjG ze?1x=yU2A@p%Vs_Bhz}*VcchZwG@OPk|boAB(%VwSt#5rz*lQEkK&Sb2RhPq@ zn`w>NHapZ_FK6k~{;adp|#We3g7GgrNV*d>t5(kzC411WkJ;lR+&E z3QJzzjTg1*S(=J0RdeCai>;(;scMzHHw8`H)nXMP4%2T;yDqi=uOsSca9rp9L`{Ra z{(I~EBJaO_qig`(b5#VDu4t3^z1Pv(=i8g(EvpHmXgCvH5r5wl8g$dFM)=7v16?z3K(11)p`gVcVu(?#VY-SXTTPCOZ5x^>+70%Z;-1(lUsh z|MiMXZDJbf*E?4t-P8gDB=@+T#rnK6$?wcNXL_-e3xj~tQG6Gyk79!wb1TgOjbhAZz3*go zO$=`lDb-Uv4u`(f{HO1^c?j|O$z{ooPUASNFI z`^wQhbE#@4)-ND7tpsi%ST&hp4yGs94jT<_7wT3@5p8RyNbg{m>S53Wf;%kxfODi6 z%WEWB`C|}3t5I0WAfOd~TsTAA5;{Zffo*ahjQM0gURj_x^9`v~4QS$-9&xA}iclM# zzm7D&;z0>oB&0k7j&@_9;c)*4wa7l9{glmtNv#A0C_N^~z79pwb1MQ4l&pD@TOZCj z3f)*+qm+a;cp_gE$$e&a-&k7|d@6H4Xa(rs&c!>AbbKO%qT7|nt93DDi$UP;6t!Y`=SJSy+-~0i0C$|PK7hL; z?^G$AgzSm^naoDRwoA!&V!+H;xR*=eCR^^zAAGQ06y3dwF`h8lzC_J>L$E#)Af zlkl3mhE0gU|4uL?T-A(s?`~FA?}=868Dm)9v8!t6-*AqrJ6i)`*tY8F+_|lEYdqQe z>|PQ_&`5ypbyZ{t-j&Q=!7d=~LhO-E0eM~uAe7f0OV~|!k)w}3($hmg?zVVV1!>IE z4fapvqk=3G$wK6z`A0atxE9}DNy>^}u-9UZEBR_kl01pfoc={p@kQ$cXIS-Qj$GOI_r{$ zn|%8l-+y2K=iNIFRD;p+mBHZKUl$K(9n0Pm1VyV;T$}p)$V7cnq1#2a1PAy5h;Ucv3j`yxv9P(ST?)VD)Iu&#sx} zDN>&GVcVJ^hZ^+r#6W<=kt~9UtpP0zI8O zx030<2M(ogJ}r3okw{BnRkfG-_=AWu8~OSMLwRsMU>@zcaovXxt+YL((T4R~eV%t=2u*=_0xXt&&iYm#che&z_BwcHx1wN(v6>dT-bVhYa+AN*0^22^>#^w2z1K2@g-jw*+1d5mV2ThB0U(+|q&zG;S-)<`}D=F#ko0#yNdk&t9dv-Tt{hkxG zuJPE|@q}j7YVO#&HKes{jPd%?ed&p6bwu(t_aFWMvYqvn;hy*J|O4XozW4Dv5LT*5^~4$Sh4PfaNG_;hIkNTS8!usEy^kng&ayThF-j>Z@5QwzDmU~F=vNfq8WNH!h7%q!jj~G zzRdPRT5M^kU&(TYmZ#MflQ(`nq9CEa(jt+4B^ZsGChd#;8X%y(D~7yqbqu1yzV(_X zU!y$p3)4(y7Fv)Y>><6r@Td3 z$D|_{+!1|uNM>*#=oG#^bErDp+}AZR`%L$zrYF`1Am-y=?R$DpSbjMUiBB+O-=5b5 zU;F~}TI%cpyWcPPZ~N1-@Ymz`*uoN}B@5&8aQw(0#40;v*=}c!j?wOkz6qg^|Kks3 zFPQfl^+snEDp<}c(AO*z<9*|@qwUs+USYSRFVo;sh-{@n7D~XPlS>H8una?uShjV% zc+ZbtJU*c!C|45&s|ZCy-)r#t{SiG%W$zct*91MGl)+q1R7B)IGXI26-uHN|pl7K9 z^V|`c6=$5-x6rFRzVLb(c0V3rX^Rqi;}P3etVpbeDenNXY8FH0F=R1N<9j7po4 zRi6IFwT^`?TNYribfg8lKaY~VkDa*ncJFH^(`Qtc6r&bdmStFKm8Gtv3oWAek3TQ@ z{?{GRR$d+MwS%Jf2|!HuxV2`|?RkJW`xR+vT9NmGGrJPXUF3NINt(AmBAWR3M*U}a zn)l=jKtP~nr@7@oyV#7FC!|6*U08b{nETU>$fpCKr@^EERcFrM_+F%|M12OLKH^v< zp{+>0V@&=>F(l-)H;T`^{R7xtOaVlUemUKCYhY#Gk2jgb^+_I1GSuv2G)O>`Id|jx zk*?w^&wxN^V-iK%FUNR|u8;S-rgQ6FQYSvME_qAt%DQ)hW^rA(!SsLg_h)r@JW%IM_X- zSnj!G%g@?`8HSaRu)A)QDpl~*il=v2qUHj`4lQ_OCvj6HeJ zy}pEH*D=7A`js!AF0fBeM~2JpjT>5rZJARDjEUZ=5073Hymnw(q?9(X${cQD1PLvn zJg3LzGvh-``1CM_mgjvLi?eu38f6uXD4@T!#kB9_^j2eDUO^ZmvRvGE{yvYRp?>+Q zA1|l%^)CF(C($~cG=YLb}GQBJzpWy>%sj23judcq#w zPSNO)MzaVb$UBI|ED3JWW^3F+6L$Cpd)=c{L=lU}S$1|CHIzwij+@hjN?eA-X4^7$ zCaIWA0|^A$vG(4p?qJzES)kNO{9iC=6f!bIgTX@CaF(zRYS-G?cCb->#vIF!E&(#J zf_>W7(8LkeNzj9~MxGcGvMJNp_=Q5p#@hXrXs}x681~4cRN^uSwGy`OW9rQIv*tYp z4jDo8XHfQV1%r%UPiCgYUrLN+(nykCvTqn#9%EUn*=VuNGwk7`IYZ-%Cw>AhBGgM2 zta((rkx3e5Y$7At_?wMcc2?_V=8)<^ihjLeuD39zOJCdE!J(qG(fVq*!V#LCdrP==Kh!WWblnq%FJGr5R@ zV0Tl#`%A*4CE6HwX0j<6*e-^1+lk5zij4pWSOkGk5SRd3lLpvL1wl|UR}iQj9^hv$ zsj40tcpq%{E&(Ym?TLIK;%aovv?9uKiQxmNUU%ss0_U6}pw!$HEuxADqqoEZY}v7V zIs(gUbfC07`Bh9-ncR}G8h4%f_w$czig-9_U;a4-edSI2U!XUi`*L)7vOA}I@XVo^ z%}={8kK88J*-Cp^)duGempH#&ZBHAvOqtf&j%Z(dZ$rRkPo229s=!xVw=I7n@sR(> z#+7H|;C}Od-8Xl}EhYCwd7^c?7_H{QTM7NMa%%W+@S7}Y$H|J#zD+oX^LvA0NnO?j z4?eLmIoiW16#SJ)3VREC&yI796h=`HEEcN+-}&YpNHT~^$#mjrkduw&)S{Xh7?{En)q=f|Hu zarmxjuV+O1@4s)an{mJXz+KgPMZ>OREvbS2NQ=O}^Y*vzil~B%t~Gr7viV@kcmEPx zbJ^GZ`_H$cRb6_TZ~Ubf3pU)`xkcmDh5Wa?_~3`TRojO)^=fA$VcqutpocK}8f}IS zu+ekq-~TV0{zRVu0GWPHABUY#PPfws|Nk4z^jrEh=7E)5OMe3jPWmZ*5{6-f`swY! zLNY=0g@jL&Ac|hSh7zP&9Ktf3ZBgp!+iKN&K7;0c|2U5#aU}|I$P=K68 zAr|Jd7~tV9lpcTEq+E{v*|iE8rD#;FECM>PWKk%GoGb+-y8{6=T52I9(2T=*| z(jK4z`e7_IhqVbMkTrdZF-qS>=dDKuI=caN+&_vwAl?|gBKh*iB)fKfEAVL%rb`#MEE(Lc}*d(gC7=B>$nwvW-{4vYT}u5raOvq69a{t zWWX?i&V}RSK+@koWqfS`H7HBq*dS*B0_-3oj8cY`$$u^FZwaUc$HzCioHJ7mYmIzk zqoS~CMakFEGnfe6{xNx!LZKPw9|KQondIYNUmAQ*V>2SN5sTU!UP{U zqN|parOD@Muyw~C=&72i%{BIR!g0;e4l6Pgv=nnH{hbwqg5Bd>X=(5!%(O;!g@1di zRVPY+GnsHV+M_K~1eTgqZA*a;8wI5-5PU#kXyZu;^hFNYjzilgikP^XQN#h=2=)y- zy;^3jwDO!l5}9%Yr7@dV!!B-S?(l7IxkWHje6YK`bMs~lMPpZXpLgNNaF*Al@AD9+ zHj-O)C|l)B2^va)24(PB_GGLxyw^kh^3L>sa`|GZlYLbc(7mg>cHDO+yDjP>mfyeA zH|}>dlwnJ`p@cM5(^Sfro)eb)>HSis>`J#=Dw`LXTP9U!Fi@b+%?|hP-@G0}@=*4a z+nre5@{~x%I{o%7NkJSjk>>{Yd*j^}jSa4sG^f(mYE&tuFx;B1zeOq2%WiI&f;b6( zhFjVJAtQ1ljr|9A`*b65tYF8y5R%H%%fY^+zoV~7)B{B^*ExRJ;64mWgEz}{7NqersAj7?u_PEF+Fbl!oqOg)ro+=gSv&mpMI|-zIRXIbW+G=7=oFAv~xC z2?q7tjBczyU(dyT_aQe$&xz$-MR7}i(P$s&r`NXT60ud9KON_};UgwUu&fSUqvt<_ zp)75kBhh2gp2!sMpDONYui1JB0K(|%?Ri~37O{p3l3NZXW1Vz&1tfhaz1h}aC2M24 z3=Qt@y*Z9YTEikUy;HYTP4ftKmi8@#^HYJLGQ? zA-1}8>p{5c*|R4roEy9>uV1grsWV>nH=(wqk-&2^x_DuH+g`oZLcp+lfRNx2jw|Vo zrnd}@1tZT9hTQIk4bh$*JBUMy0s|hD*Gm`mO$Od$>TdblVvl(ti_3S@Tl3$V@r0Y- zIP{I6gh{6G1QHwAl2eJ!^{%vk-{#84pw61qB}>?}*{M4MUQ|cDXbMCoEh%>c^TN;_ z=}sSCxe^N&QFaBqRz>cmF_qc^oaTduvr}UgoEO?swc-_%))TrdDqFE-`e9ibgGNAk zQv0mBq2%HU6ug&?9jYtIT(CJZvI9Fs$c3kvuTuIJgjj#b?tg@Y+ny(Hdfy?-x33vNrb*)UdX6I0HP->5c{c0)jc?*nXTqw> z0I#i1V91>b6M6xEjIOXH;j*<~>&6~vJEI-mM9~PBR~aNne}b{!AzSs%x32%c`QLdY z3Y5dF{C1!3op0RpG?oG92tlpUsvTYZ&xKf`-JW>M3GJ%@qw^*b%tZX&`=1uvt4Dp- zV*~v?+RGnY^eHGq2r`n)rn`IACo{;hPf|Pd!h)8ie|`0Tf9SaPnr9-%MXzW8GGw@R z%L0T4yZ5JS%e;hm37IqV+zVFB%_qz9NyGLR1RKdm9im=`ohz$b=GsGSMl3nxvB zH~7v!njtoHbUK+&K1|;{MbR@^*Xrx_rmhT(UG>q!L)&ZTf7&m;u_B$jc5G{|WjbM5 zMkiP#JLSHdmaAjqWz)XoxGQzGpMF@VZF{Pey7jq#6BS`<>liM`3m)V@dhF_J=D6a@ z^H~!LTFNHAo^x~mL&jVt$(^%0=$rE3iE^LE-*Zp2YcLG=reuFw*m6-9d+^6kkE{_! zde(Skf2}I1m)~Bf@m|{8zG&gCFOPltNyCgga;v%@oMvFJIEqAU$r(v2ZF&<{PtG-{ z8?EwxcK5`Z?B_>VX7+u_yjs;acddNkjjs-wzOLFgqX?CUy5}cu86Li0H>r4R1)!!f zfgk+wn6dm!op>B46D&V_2TSg#pF3f+xw8M?74VVGDXo1;U==BPbfryAofFz2XnQrJ z;D#4=e}M{emaKOHCEG4Iw)<8*6iRA0WFJj`Gu?A^w6n<8AA#56TDex?-G1@W$8Nv< zk(Dj2Qwu+jq4uC>esbTWZ|Ga(mopQ3mgls#G&O}ov6y4mPTYlu4^6|K!z10cXl`z_ zU>a(;JC`m^oY4|toGz2gRH#;`7hnIt`46GW+S8uq$nUq;rL=lxRq7IxjjI!`S8GOp zuTHlAcx_k77Fl_d5rbFaU>^`R@bRv$lDde^;wTh|;O8sqZ3e|(})?CVo0|M-lR z9Uhdygy@5SC^fr*8Z$qiwRSb{Vd#NHp@jj}9+iq=vUemMCdR!R*ikLLQcH@(jt*uO_+t;RLx6a4hU%O&L%HjmyIYlFTMVMsn@B3 z`IVVQw#KI;L)eqa+rO(?erF0LGjMBs2BBQ8_i3-Oj6nGgPKshTj^7M5v77axu%go!-gZv>&s6uCxYuR?4#5aMMAT<$|VHt+%v1Mu0efXy@ zpNOdlN}WW`%9BtRdL7<)AU&W|2ESCk&I^Q625V$md3xQWy-&KNqfc~y^8!odSZhzO zXxlV$G#*qA$KPl{{}bur%uGHg1+A{!Ji@4z33M8Aa+S}{^u`W{`owO0bNd6MS&2Cu z2TH2s^Sh_Ks=;%NQEAF6TTO4? zV2LkT5{Dy(3)9j6MW*C`e0=1#JDjgyW7?_`OY|CKS(ag`Q8LUe+9ztAfBtpwhu_v_ z85Qa@ry1nICjrsquxqfx?s$+)EN#@#vPS2Fn=w}K@J7drNXncG5iwcu{z}iLDK~$| zi$FjCQ)PDjLuTzX#9F=-fIwjrfnd$gW2g=Vfm}~h0#semJNABmhOJ4x2~kMD)Xu@| zQg51F_i;8!-0-G*^Bo_G{k0{4h*__gQg#kD*8X%QO5`L`i(`l@HlITRT*daW51N;` z&us!HFf>v0(pR!y1luRaY-_@;FRKfm-CDe)W^n6!zEthjG+pxe$PZg)I~=0xt(@#0 z_;rP=J_G;(Qt0b{bQ;Wt9J-VKGd>Ov(x2&*03gvX=o7FGTIq87(D)6MO24DuU@aKQ z4fJ=QV5OhYrvL!}0XF^ds%lPR-ERst15Y3cKOgANNvyyaSYsMb`q&w^UQc<38Q7*% zfZ2dc*Ny*+Yk|Uz)_XaU0ZNo<;wAvQjV&A;fe{21B##4s1mqwEDCEGl00RoRBfx?h z-eg%4HZ>d>B_QY>3=l{FF+iaissjx0FdSeZ86IRA@~1WnyPyq%upE{lx~Uk{W!F0Z z@eajD19U?e=EEvj0)B`9e1>=ua-z?X%!OevfCWro2CivGn{7)=p$l79Kr~^%0%cIi zHd(-|C4dTl2o^`?hYc2!*--OKaPZ+sG3vCGRhB(feq<;o0Tu%QlOY`MM`7Wz_y&-w zkHd?Z=PsGduE#?jfit=1L?B3zB7-c-P>u>zqKd&M%RI|t{@8MbFS2mave=@q^23fZ tRFlHXqRapNa7N~QLUWLF%#SSpc;h11sz6xbSh3;?t Date: Tue, 28 Mar 2023 13:26:37 +0200 Subject: [PATCH 02/12] Removed logging --- .../src/fm/services/auth-guard.service.ts | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/projects/common/src/fm/services/auth-guard.service.ts b/projects/common/src/fm/services/auth-guard.service.ts index 04bc822..46e77f7 100644 --- a/projects/common/src/fm/services/auth-guard.service.ts +++ b/projects/common/src/fm/services/auth-guard.service.ts @@ -24,44 +24,53 @@ export class AuthGuard implements CanActivate, CanLoad, CanActivateChild { constructor(private oauthService: OAuthService, private router: Router, private store: Store) { } canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree | Observable | Promise { - console.debug("AuthGuard->canActivate", route, state); + //console.debug("AuthGuard->canActivate", route, state); const url: string = state.url; return this.checkLogin(url, route); } canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree | Observable | Promise { - console.debug("AuthGuard->canActivateChild", childRoute, state); + //console.debug("AuthGuard->canActivateChild", childRoute, state); const url: string = state.url; return this.checkLogin(url, childRoute); } canLoad(route: Route, segments: UrlSegment[]): boolean | UrlTree | Observable | Promise { - console.debug("AuthGuard->canLoad", route, segments); + //console.debug("AuthGuard->canLoad", route, segments); return this.checkLogin(route.path, null); } checkLogin(url: string, route: ActivatedRouteSnapshot): boolean { - console.debug("AuthGuard->checkLogin", url, route); + //console.debug("AuthGuard->checkLogin", url, route); if (!this.oauthService.hasValidAccessToken()) { - console.debug("No valid token"); + //console.debug("No valid token"); this.oauthService.initCodeFlow(url); return false; } else { const requiredRoleClaim = route.data.role; if (!requiredRoleClaim) { return true; } const ownedClaims = this.oauthService.getIdentityClaims(); - if (!ownedClaims) { console.debug("No owned claims"); return false; } + if (!ownedClaims) { + //console.debug("No owned claims"); + return false; + } const ownedRoleClaims: string[] = ownedClaims['role']; - if (!ownedRoleClaims) { console.debug("No owned role claims"); return false; } + if (!ownedRoleClaims) { + // console.debug("No owned role claims"); + return false; + } if (Array.isArray(ownedRoleClaims)) { - if (ownedRoleClaims.findIndex(r => r === requiredRoleClaim) <= -1) { console.debug("No required role claim", ownedRoleClaims, requiredRoleClaim); return false; } + if (ownedRoleClaims.findIndex(r => r === requiredRoleClaim) <= -1) { + //console.debug("No required role claim", ownedRoleClaims, requiredRoleClaim); + return false; + } } else { if (ownedRoleClaims !== requiredRoleClaim) { console.debug("No required role claim", ownedRoleClaims, requiredRoleClaim); return false; } } - console.debug("Has required role claim", requiredRoleClaim); + //console.debug("Has required role claim", requiredRoleClaim); return true; } } From 2a31771ac6902feee974d75cf58f2c21be78f928 Mon Sep 17 00:00:00 2001 From: Peter Bastiani Date: Tue, 28 Mar 2023 13:38:35 +0200 Subject: [PATCH 03/12] v3.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7b22a9a..c1fead0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "farmmaps-lib-app", - "version": "3.0.2", + "version": "3.1.0", "scripts": { "ng": "ng", "start": "ng serve", From b8f8f2779403b3b3e5e53a4c8209f8c7642777f4 Mon Sep 17 00:00:00 2001 From: Peter Bastiani Date: Tue, 11 Apr 2023 11:33:11 +0200 Subject: [PATCH 04/12] Comment logging --- .../src/fm-map/components/map/map.component.ts | 16 ++++++++-------- .../src/fm/components/app/app.component.ts | 6 +++--- .../common/src/fm/effects/app-common.effects.ts | 8 ++++---- .../services/package-preload-strategy.service.ts | 2 +- src/app/app.module.ts | 4 ++-- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/projects/common-map/src/fm-map/components/map/map.component.ts b/projects/common-map/src/fm-map/components/map/map.component.ts index c550ec9..380be41 100644 --- a/projects/common-map/src/fm-map/components/map/map.component.ts +++ b/projects/common-map/src/fm-map/components/map/map.component.ts @@ -119,7 +119,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit { this.querySub = this.query$.pipe(skip(1), withLatestFrom(this.mapState$)).subscribe(([query,mapState]) =>{ if(query && query.querystate) { let newQueryState = tassign(mapReducers.initialQueryState); - console.debug(`Do Query`); + //console.debug(`Do Query`); const urlparts=[]; if (query.querystate.itemCode && query.querystate.itemCode != "") { if(query.querystate.itemType && query.querystate.itemType!= "") { @@ -242,7 +242,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit { ngOnInit() { this.initialized = false; - console.debug("Init"); + //console.debug("Init"); this.store.dispatch(new mapActions.Clear()); this.selectedFeatures$.next({x:0,y:0,features:[]}); this.selectedFeatures$.next(null); @@ -314,7 +314,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit { } ngAfterViewInit() { - console.debug("View init"); + //console.debug("View init"); this.noContent=true; this.route.children.forEach((entry) => { if(entry.outlet=="primary") { @@ -348,7 +348,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit { })).subscribe((action) => { if(action) { this.zone.run(() => { - console.debug("Url to state"); + //console.debug("Url to state"); this.store.dispatch(action); }); } @@ -367,7 +367,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit { } })).subscribe((newUrlState) =>{ if(newUrlState) { - console.debug(`State to url`); + //console.debug(`State to url`); this.replaceUrl(newUrlState.mapState,newUrlState.queryState,newUrlState.replaceUrl); } }); @@ -425,7 +425,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit { parts.push(mapState.baseLayerCode); parts.push( this.serializeService.serialize(queryState)); - console.debug("Replace url",parts); + //console.debug("Replace url",parts); this.router.navigate(parts, { replaceUrl: replace,relativeTo:this.route.parent }); } } @@ -434,7 +434,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit { handleOnMoveEnd(event) { if(this.initialized && this.viewEnabled) { this.zone.run(() =>{ - console.debug("Move end"); + //console.debug("Move end"); const map = event.map; const view = map.getView(); const rotation = view.getRotation(); @@ -443,7 +443,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit { const viewExtent = view.calculateExtent(this.map.instance.getSize()); const mapState: IMapState = { xCenter: center[0], yCenter: center[1], zoom: zoom, rotation: rotation, baseLayerCode: null }; const state = { mapState: mapState, viewExtent: viewExtent }; - console.debug("Center: ",center[0],center[1] ); + //console.debug("Center: ",center[0],center[1] ); const source = from([state]); source.pipe(withLatestFrom(this.selectedBaseLayer$)).subscribe(([state, baselayer]) => { if (mapState && baselayer) { // do not react on first move diff --git a/projects/common/src/fm/components/app/app.component.ts b/projects/common/src/fm/components/app/app.component.ts index 835c852..94b32b2 100644 --- a/projects/common/src/fm/components/app/app.component.ts +++ b/projects/common/src/fm/components/app/app.component.ts @@ -69,7 +69,7 @@ export class AppComponent implements OnInit, OnDestroy { getActionFromEvent(event: IEventMessage): Action { let action: Action = null; - console.debug(`${event.eventType} Event received`); + //console.debug(`${event.eventType} Event received`); switch (event.eventType) { case "ItemChanged": { action = new commonActions.ItemChangedEvent(event.itemCode, event.attributes); @@ -146,12 +146,12 @@ export class AppComponent implements OnInit, OnDestroy { private InstallAuthenticationEventHandler() { // auth event handler this.oauthService$.events.subscribe((event) => { - console.debug(event.type); + //console.debug(event.type); if (event.type == 'token_error' || event.type == 'silent_refresh_timeout' || event.type == 'logout') { const e = event as OAuthErrorEvent; const p = e.params as any; if (event.type == 'silent_refresh_timeout' || event.type == 'logout' || (p.error && p.error == 'login_required')) { - console.debug("Session expired"); + //console.debug("Session expired"); this.router.navigate(['loggedout'], { queryParams: { redirectTo: this.router.url } }); } } diff --git a/projects/common/src/fm/effects/app-common.effects.ts b/projects/common/src/fm/effects/app-common.effects.ts index 5a56289..0b13174 100644 --- a/projects/common/src/fm/effects/app-common.effects.ts +++ b/projects/common/src/fm/effects/app-common.effects.ts @@ -182,18 +182,18 @@ export class AppCommonEffects { ofType(appCommonActions.FAIL), map((action) => { const failAction = action as appCommonActions.Fail; - console.debug(failAction.payload) + //console.debug(failAction.payload) return null; })),{dispatch:false}); online$ = createEffect(() => this.actions$.pipe( ofType(appCommonActions.ONLINE), switchMap((action) => { - console.debug("Online: Check token"); + //console.debug("Online: Check token"); if(!this.oauthService$.hasValidAccessToken()) { - console.debug("No valid token, try to refresh"); + //console.debug("No valid token, try to refresh"); if(this.oauthService$.getRefreshToken() != null ) { - console.debug("We have a refresh token"); + //console.debug("We have a refresh token"); this.oauthService$.refreshToken(); } } diff --git a/projects/common/src/fm/services/package-preload-strategy.service.ts b/projects/common/src/fm/services/package-preload-strategy.service.ts index 3df617d..6031f09 100644 --- a/projects/common/src/fm/services/package-preload-strategy.service.ts +++ b/projects/common/src/fm/services/package-preload-strategy.service.ts @@ -21,7 +21,7 @@ export class PackagePreloadStrategy extends PreloadingStrategy { } if(route.data && route.data.package) { if(this.packageService$.hasPackage(route.data.package)) { - console.debug(`Load module for package ${route.data.package}`) + //console.debug(`Load module for package ${route.data.package}`) this.loading.add(route); return load() } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 3228a63..1f95162 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -52,8 +52,8 @@ export function provideBootstrapEffects(effects: Type[]) { // console.log all actions export function debug(reducer: ActionReducer): ActionReducer { return function(state, action) { - console.debug('-- State', state); - console.debug('-- Action', action); + //console.debug('-- State', state); + //console.debug('-- Action', action); return reducer(state, action); }; From 7c0634390975f9d106f3aeb8be5bbf53015d9473 Mon Sep 17 00:00:00 2001 From: Peter Bastiani Date: Fri, 21 Apr 2023 09:08:38 +0200 Subject: [PATCH 05/12] Aw4951 Non-fatal error if no viewer defined for itemtype --- package.json | 2 +- projects/common/src/fm/effects/app-common.effects.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c1fead0..aa0a803 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "farmmaps-lib-app", - "version": "3.1.0", + "version": "3.2.0", "scripts": { "ng": "ng", "start": "ng serve", diff --git a/projects/common/src/fm/effects/app-common.effects.ts b/projects/common/src/fm/effects/app-common.effects.ts index 0b13174..20f8923 100644 --- a/projects/common/src/fm/effects/app-common.effects.ts +++ b/projects/common/src/fm/effects/app-common.effects.ts @@ -170,7 +170,7 @@ export class AppCommonEffects { this.router$.navigate(['/map', query ]) }else if(viewer == 'edit_in_editor') { this.router$.navigate(['/editor', editor, 'item', a.item.code]) - } else { + } else if(viewer) { this.router$.navigate(['/viewer', viewer, 'item', a.item.code]) } return []; From 945d88839ff38cfba1fc3a28da0d6a8f5b472cd6 Mon Sep 17 00:00:00 2001 From: Peter Bastiani Date: Mon, 8 May 2023 09:12:37 +0200 Subject: [PATCH 06/12] AW-5036 404../api/v1/items/xxx:USER_SETTINGS (new environ) --- projects/common/src/fm/actions/app-common.actions.ts | 2 +- projects/common/src/fm/effects/app-common.effects.ts | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/projects/common/src/fm/actions/app-common.actions.ts b/projects/common/src/fm/actions/app-common.actions.ts index 82006f9..2c21045 100644 --- a/projects/common/src/fm/actions/app-common.actions.ts +++ b/projects/common/src/fm/actions/app-common.actions.ts @@ -126,7 +126,7 @@ export class InitUserSettingsRoot implements Action { export class InitUserSettingsRootSuccess implements Action { readonly type = INITUSERSETTINGSROOTSUCCESS; - constructor(public item: IItem ) { } + constructor(public item: IListItem ) { } } export class InitRoot implements Action { diff --git a/projects/common/src/fm/effects/app-common.effects.ts b/projects/common/src/fm/effects/app-common.effects.ts index 20f8923..36e91ef 100644 --- a/projects/common/src/fm/effects/app-common.effects.ts +++ b/projects/common/src/fm/effects/app-common.effects.ts @@ -85,9 +85,8 @@ export class AppCommonEffects { initUserSettingsRoot$ = createEffect(() => this.actions$.pipe( ofType(appCommonActions.INITUSERSETTINGSROOT), - withLatestFrom(this.store$.select(appCommonReducers.SelectGetUser)), - switchMap(([, user]) => { - return this.itemService$.getItem(user.code + ':USER_SETTINGS').pipe( + switchMap(_ => { + return this.folderService$.getFolder('my_settings').pipe( switchMap((item) => of(new appCommonActions.InitUserSettingsRootSuccess(item))), catchError(error => of(new appCommonActions.Fail(error))) ) From 1bc3983f55d7eb961e646bbf75ae0b96917d9b4e Mon Sep 17 00:00:00 2001 From: Mark van der Wal Date: Tue, 30 May 2023 21:16:20 +0200 Subject: [PATCH 07/12] AW-5071 refactor some parts --- .../common/src/fm/services/folder.service.ts | 27 ++++++++++--------- .../common/src/fm/services/item.service.ts | 10 ++++++- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/projects/common/src/fm/services/folder.service.ts b/projects/common/src/fm/services/folder.service.ts index f491509..3f7c07b 100644 --- a/projects/common/src/fm/services/folder.service.ts +++ b/projects/common/src/fm/services/folder.service.ts @@ -1,17 +1,17 @@ -import { Injectable } from '@angular/core'; -import { Observable , Observer } from 'rxjs'; -import {map} from 'rxjs/operators'; -import { IListItem } from '../models/list.item'; -import { IItem } from '../models/item'; -import { HttpClient } from "@angular/common/http"; -import { AppConfig } from "../shared/app.config"; +import {Injectable} from '@angular/core'; +import {Observable} from 'rxjs'; +import {IListItem} from '../models/list.item'; +import {IItem} from '../models/item'; +import {HttpClient} from '@angular/common/http'; +import {AppConfig} from '../shared/app.config'; +import {ItemService} from './item.service'; @Injectable({ providedIn: 'root', }) export class FolderService { - constructor(public httpClient: HttpClient, public appConfig: AppConfig) { + constructor(public httpClient: HttpClient, public appConfig: AppConfig, public itemService: ItemService) { } ApiEndpoint() { @@ -19,23 +19,24 @@ export class FolderService { } getFolder(code: string): Observable { - return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/folders/${code}`); + return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/folders/${code}`); } getMyRoots(): Observable { return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/folders/my_roots`); - } + } getFolderParents(code: string): Observable { - return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/folders/${code}/parents`); + return this.itemService.getBreadcrumbs(code); } getChildFolders(code: string): Observable { - return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/folders/${code}/listfolders`); + const folderItemTypes = "FOLDER,FTP_FOLDER"; + return this.itemService.getChildItemList(code, folderItemTypes); } getItems(code: string,skip:number, take:number): Observable { - return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/folders/${code}/list?skip=${skip}&take=${take}`); + return this.itemService.getChildItemList(code, null, null, 1, true, null, null, skip, take); } moveItem(itemCode: string, newParentCode: string): Observable { diff --git a/projects/common/src/fm/services/item.service.ts b/projects/common/src/fm/services/item.service.ts index 552b650..e0ef352 100644 --- a/projects/common/src/fm/services/item.service.ts +++ b/projects/common/src/fm/services/item.service.ts @@ -8,6 +8,7 @@ import { IItemTask } from '../models/itemTask'; import { HttpClient, HttpParams,HttpHeaders } from "@angular/common/http"; import { AppConfig } from "../shared/app.config"; import {ItemTypeService} from './itemtype.service'; +import {IListItem} from '../models/list.item'; @Injectable({ providedIn: 'root', @@ -84,7 +85,7 @@ export class ItemService { } getChildItemList(parentcode: string, itemType: string, dataFilter?: any, level = 1, deep = true, - startDate?: Date, endDate?: Date): Observable { + startDate?: Date, endDate?: Date, skip?: number, take?: number): Observable { let params = new HttpParams(); if(itemType != null) { params = params.append("it", itemType); @@ -96,6 +97,9 @@ export class ItemService { params = params.append("deep", deep.toString()); if (startDate) params = params.append("sDate", startDate.toISOString()); if (endDate) params = params.append("eDate", endDate.toISOString()); + + if(skip) params = params.append("skip", skip); + if(take) params = params.append("take", take); return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/items/${parentcode}/children`, { params: params }); } @@ -181,4 +185,8 @@ export class ItemService { return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/items/${itemCode}/value/layer/${layerIndex}?c=${x},${y}&crs=${crs}`); } + getBreadcrumbs(itemCode: string): Observable { + return this.httpClient.get(`${this.ApiEndpoint()}/api/v1/items/${itemCode}/breadcrumbs`); + } + } From 0865ca1a935f287f2482442752bbd09ebc617ad0 Mon Sep 17 00:00:00 2001 From: Mark van der Wal Date: Tue, 30 May 2023 21:16:53 +0200 Subject: [PATCH 08/12] upped version --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index aa0a803..7b3883c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "farmmaps-lib-app", - "version": "3.2.0", + "version": "3.2.1", "scripts": { "ng": "ng", "start": "ng serve", @@ -86,4 +86,4 @@ "ts-node": "^8.8.1", "typescript": "~4.6.4" } -} \ No newline at end of file +} From bc8c9f8bf91b9a3970c0711a762574154c9926c9 Mon Sep 17 00:00:00 2001 From: Peter Bastiani Date: Tue, 27 Jun 2023 15:56:17 +0200 Subject: [PATCH 09/12] no message --- Jenkinsfile.develop | 58 +++++++-------------------------------------- 1 file changed, 8 insertions(+), 50 deletions(-) diff --git a/Jenkinsfile.develop b/Jenkinsfile.develop index 39ad8b2..ae2847a 100644 --- a/Jenkinsfile.develop +++ b/Jenkinsfile.develop @@ -1,54 +1,12 @@ -pipeline { - agent any - environment { - PACKAGE_VERSION_PREFIX=sh(script: 'jq .version package.json |sed "s/\\"//g"', returnStdout: true).trim() - PACKAGE_VERSION="${PACKAGE_VERSION_PREFIX + '-prerelease.' + env.BUILD_NUMBER}" - } - stages { - stage('npm install'){ - steps { - sh '''rm -rf node_modules/ - npm install --legacy-peer-deps - cd projects/common - npm install --legacy-peer-deps - cd ../common-map - npm install --legacy-peer-deps - cd ../common-map3d - npm install --legacy-peer-deps - ''' - } - } - stage('build'){ - steps { - sh '''ng build common --configuration production - ng build common-map --configuration production - ng build common-map3d --configuration production''' - } - } - stage('npm publish'){ - steps { - sh '''cd dist/common - npm version ${PACKAGE_VERSION} - npm publish - cd ../common-map - npm version ${PACKAGE_VERSION} - npm publish - cd ../common-map3d - npm version ${PACKAGE_VERSION} - npm publish''' - } - } +@Library('farmmaps-shared-library') _ - } - post { - always { - emailext ( - body: '${DEFAULT_CONTENT}', - mimeType: 'text/html', - replyTo: '${DEFAULT_REPLYTO}', - subject: '${DEFAULT_SUBJECT}', - to: emailextrecipients([[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']]) - ) +pipeline { + agent any; + stages { + stage('FarmmapsLibBuildAll') { + steps { + stepFarmmapsLibBuildAll packageVersion: packageVersion; + } } } } \ No newline at end of file From fd71d1f38e4231c4975cbf5e43b9059eeaca117f Mon Sep 17 00:00:00 2001 From: Peter Bastiani Date: Tue, 27 Jun 2023 16:02:52 +0200 Subject: [PATCH 10/12] no message --- Jenkinsfile.develop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile.develop b/Jenkinsfile.develop index ae2847a..439d64d 100644 --- a/Jenkinsfile.develop +++ b/Jenkinsfile.develop @@ -5,7 +5,7 @@ pipeline { stages { stage('FarmmapsLibBuildAll') { steps { - stepFarmmapsLibBuildAll packageVersion: packageVersion; + stepFarmmapsLibBuildAll(); } } } From d7efeb8d599f4faa8cf7860a81ccc6f734b86f8d Mon Sep 17 00:00:00 2001 From: Peter Bastiani Date: Tue, 27 Jun 2023 16:27:18 +0200 Subject: [PATCH 11/12] fix build --- Jenkinsfile.develop | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Jenkinsfile.develop b/Jenkinsfile.develop index 439d64d..eb2fdf5 100644 --- a/Jenkinsfile.develop +++ b/Jenkinsfile.develop @@ -9,4 +9,12 @@ pipeline { } } } + post { + success { + postSuccess(); + } + always { + postAlways(); + } + } } \ No newline at end of file From ff50650c28aaf9e9962b79da0628aaa950a2f55a Mon Sep 17 00:00:00 2001 From: Peter Bastiani Date: Tue, 27 Jun 2023 16:30:49 +0200 Subject: [PATCH 12/12] fix jenkins --- Jenkinsfile.develop | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Jenkinsfile.develop b/Jenkinsfile.develop index eb2fdf5..3f03a79 100644 --- a/Jenkinsfile.develop +++ b/Jenkinsfile.develop @@ -2,6 +2,9 @@ pipeline { agent any; + options { + copyArtifactPermission projectNames: env.allProjectsArtifactPermission; + } stages { stage('FarmmapsLibBuildAll') { steps {