From e9a0a8ca5debe14be5cb37d7ead498b957a676f7 Mon Sep 17 00:00:00 2001 From: Reinhold Kainhofer <reinhold@kainhofer.com> Date: Fri, 11 Jan 2013 19:57:42 +0100 Subject: [PATCH] V1.6.1: Fix issues with updated/moved language files (need to remove old files from global language dir) Created and install ordernumber.script.php to run code on plugin update; Also removes the mysql table upon deinstallation. --- Makefile | 4 +- ordernumber.php | 4 +- ordernumber.script.php | 77 ++++++++++++++++++ ordernumber.xml | 6 +- releases/plg_vmshopper_ordernumber_v1.6.1.zip | Bin 0 -> 10293 bytes 5 files changed, 85 insertions(+), 6 deletions(-) create mode 100644 ordernumber.script.php create mode 100644 releases/plg_vmshopper_ordernumber_v1.6.1.zip diff --git a/Makefile b/Makefile index 16832eb..38addfd 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ BASE=ordernumber PLUGINTYPE=vmshopper -VERSION=1.6 +VERSION=1.6.1 -PLUGINFILES=$(BASE).php $(BASE).xml index.html +PLUGINFILES=$(BASE).php $(BASE).script.php $(BASE).xml index.html # TRANSDIR=../../../administrator/language/ # TRANSLATIONS=$(call wildcard,$(TRANSDIR)/*/*.plg_$(PLUGINTYPE)_$(BASE).sys.ini) TRANSLATIONS=$(call wildcard,language/*/*.plg_$(PLUGINTYPE)_$(BASE).sys.ini) language/index.html $(call wildcard,language/**/index.html) diff --git a/ordernumber.php b/ordernumber.php index 975959a..ea08c77 100644 --- a/ordernumber.php +++ b/ordernumber.php @@ -106,7 +106,7 @@ class plgVmShopperOrdernumber extends vmShopperPlugin { function plgVmOnUpdateOrderBEShopper($_orderID) {} /* Replace the format variables, match[1] is the variable name, match[2] and match[3] are only used for random fields */ - /* Type 0 means order number, type 1 means invoice number, type 2 means customer number */ + /* Type 0 means order number, type 1 means invoice number, type 2 means customer number, 3 means order password */ function replace_fields ($fmt, $nrtype, $details) { // Match variables for the form random[type][count] and everything else. // This makes it possible to handle "random" just like any other type! @@ -172,7 +172,7 @@ class plgVmShopperOrdernumber extends vmShopperPlugin { // Is order password customization enabled? if ($this->params->get('customize_order_password')) { $fmt = $this->params->get ('order_password_format', "[randomHex8]"); - $passwd = $this->replace_fields ($fmt, $orderDetails); + $passwd = $this->replace_fields ($fmt, 3, $orderDetails); $orderDetails->order_pass = $passwd; } } diff --git a/ordernumber.script.php b/ordernumber.script.php new file mode 100644 index 0000000..d7146b7 --- /dev/null +++ b/ordernumber.script.php @@ -0,0 +1,77 @@ +<?php +defined('_JEXEC') or die('Restricted access'); + +class plgVmShopperOrdernumberInstallerScript +{ + /** + * Constructor + * + * @param JAdapterInstance $adapter The object responsible for running this script + */ +// public function __constructor(JAdapterInstance $adapter); + + /** + * Called before any type of action + * + * @param string $route Which action is happening (install|uninstall|discover_install) + * @param JAdapterInstance $adapter The object responsible for running this script + * + * @return boolean True on success + */ +// public function preflight($route, JAdapterInstance $adapter); + + /** + * Called after any type of action + * + * @param string $route Which action is happening (install|uninstall|discover_install) + * @param JAdapterInstance $adapter The object responsible for running this script + * + * @return boolean True on success + */ +// public function postflight($route, JAdapterInstance $adapter); + + /** + * Called on installation + * + * @param JAdapterInstance $adapter The object responsible for running this script + * + * @return boolean True on success + */ + public function install(JAdapterInstance $adapter) + { + // enabling plugin + $db =& JFactory::getDBO(); + $db->setQuery('update #__extensions set enabled = 1 where type = "plugin" and element = "ordernumber" and folder = "vmshopper"'); + $db->query(); + + return True; + } + + /** + * Called on update + * + * @param JAdapterInstance $adapter The object responsible for running this script + * + * @return boolean True on success + */ + public function update(JAdapterInstance $adapter) + { + jimport( 'joomla.filesystem.file' ); + JFile::delete( JPATH_ROOT . DS . "administrator" . DS . "language" . DS . "en-GB" . DS . "en-GB.plg_vmshopper_ordernumber.sys.ini"); + JFile::delete( JPATH_ROOT . DS . "administrator" . DS . "language" . DS . "de-DE" . DS . "de-DE.plg_vmshopper_ordernumber.sys.ini"); + return true; + } + + /** + * Called on uninstallation + * + * @param JAdapterInstance $adapter The object responsible for running this script + */ + public function uninstall(JAdapterInstance $adapter) + { + // Remove plugin table + $db =& JFactory::getDBO(); + $db->setQuery('DROP TABLE `#__virtuemart_shopper_plg_ordernumber`;'); + $db->query(); + } +} \ No newline at end of file diff --git a/ordernumber.xml b/ordernumber.xml index bec61da..ca874ed 100644 --- a/ordernumber.xml +++ b/ordernumber.xml @@ -7,7 +7,7 @@ <authorUrl>http://www.kainhofer.com/</authorUrl> <copyright>Copyright (C) 2012-2013 Reinhold Kainhofer. All rights reserved.</copyright> <license>http://www.gnu.org/licenses/gpl-3.0.html GNU/GPLv3</license> - <version>1.6.0</version> + <version>1.6.1</version> <releaseDate>2013-01-09</releaseDate> <releaseType>Minor update</releaseType> <downloadUrl>http://www.kainhofer.com/virtuemart-2-extensions/vm2-ordernumber-plugin.html</downloadUrl> @@ -16,9 +16,11 @@ <files> <filename plugin="ordernumber">ordernumber.php</filename> - <filename>index.html</filename> + <filename>ordernumber.script.php</filename> + <filename>index.html</filename> <folder>language</folder> </files> + <scriptfile>ordernumber.script.php</scriptfile> <config> <fields name="params"> <fieldset name="basic"> diff --git a/releases/plg_vmshopper_ordernumber_v1.6.1.zip b/releases/plg_vmshopper_ordernumber_v1.6.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..90a116731b6c1a6873eb4ce9e559eccacd81dfc0 GIT binary patch literal 10293 zcmWIWW@Zs#U|`^2P?)dn^izHJfqgs-4569~4Ezi-4EaSVsYQ9Exk;%-dIcE;p&^_M z%+(1W0zkO5f}4Sn<pnbX1DMz=m05l(>|6D@ll40m`lwh+@T{}u)%1*&R$pS~x3{!# z<sS$BfVH|&Z!TE=d|&*&+TTftX}59iU&Vu$?tZWSXrA9x`QeLacJ}L+!Z(`onay^l z8uNvhNvQv6X*Dc)V6vsc!sm`5zhc3pnQsqX;eWXI{cgT$wz<#dx$JwKnDSfh3VWD% z%zdN!Uq7d-U25MuU4P-`%lB^HyLtEB8;A7mw|}nMz56$}&L5UnLNirA%5=^vygmDO zAM1VNUj|PTnVr7AxqbUfWbvcjLb;FFyD!W;n|y(vC+Sk-TP`J`8ynT{bX)9^joWsw z&SKx~)=C-nyJ4^Y{o7~xdD1fZb5UFxS!bEjtGDmGJm>hj&tFbn3w!-?@^XJ2yREi) zFK7MS_doc*gE2$vGWpZbtTNimPN*Bc@mI6yQuyZBtkx5G#P->v>dQ7#GT(iLd1}@) z$~Hbfen95<{^w!AhmWtHXSZ?r0{ht(I$b{hPWC<Wxc=_W=biE_Hh&b(te0eydYasH z=F4~aZ~FIUhO0koe|&m-^FvD^yCwAk>XR%kr9R;}Tj6T8W!nRerDF3k%O1=-+)}CH z(X_2_hV?cHAK`qV#m35)`YX9VJht5Rf1a+#YKB(k<MR#J-$i6>-gvlm8%OgNne?8- zD=xE{V;%_KFBW6<2|Kh@T*q1DplC}?TANM5jh5LrrK1Z3ThtZP4b@FHiQI@2G0s0U z`>fi8<xegfdmeZiS2N+#kA4Stwr{e6E23@Ewh8amvi)|bLa-oFziQqs=2#2I)khMI zI!jrvoam6yEd90ec(L`Zy0vkR>(6MhE58)*I5zEGo!`#I$In&FX_0#+ZFK%q?23gv z+ss!t+KZ;mzgd2VxxIRG1)t&Wqw&iW59!`FRG+cgu)npoLn}&Wo4WT^m8Zpy;p>+_ zSRosvn|161r&qVqgLc&w6R+#IG(_osZ@JT@_WJD}C)53ki@rQO+Rc>Ndh3m&+t*vY zzCynDGd<4T&P|@O_;=+`!zpg7+EbbJN~Z`mHto=vccwcl(I#k~*V&}`n~XvluD=b8 z+x_C+v33vFg==0I9GugBt7-FwYiFNq(%AIn*7>bAE0s#v4|ZSZHodU!{n5`#TjGkZ zGeqYEvTeQAaPF^)&f$Hx8E(IuvhaEKf|=4gQX{tcS>N_fifh|;-N9XE@+B>2_v{6! zbFS|?TK=WE((Px{*7kZX2Mamw*?NLJf0=?WU+CAAj!=nro~?B$kNJb<RCW6W28VA= zQ;Yn!T<@|P@5;LuXTJ&F9y=}c#N{UC(CxbnW+ZKAnA9lIIVZ1UQf<chH#?f5r+t{w zaYLef|DE5j?#J(66Z+ZmIbW$>;K9EEB^!C}KVtl@vxY0;R4c=3kxMNRzH`o<h&b7| z$X;iX{M_wf2@=U0_phB$?U{Vee(mxD$AsV9?qBrygT=GNnNw5@X5Zd_-)h}+cKO2^ ze(&Dd>;Aj(|J{QP^<Tc-een1DarMKO`R(V-jgN`@+cEk4;v1@0|NQe`b#DIEM}Z-% zn)-$RxgOh`+C4v9e&wIO9ma3VKL6zklL||Hm3%IuF5|gZYh2Fd+w0#SdGY$ui)^oq z%iC6UCcd+sC30|`Y6|<AO-^$p%r9(W4rY|R88GQz!moLkdR%489^CzDaj<Olj~^x{ zs*@(%Kj7&wQ)o?89OK7`v#L8wS3RB~7R-Ftq1(adVv4q=&)W}<LQHAQyfNxbGDYSA z0Rq_<-c~5<?OW&e=P;kygNL_yzb${MdsD>l(gz_OfA#5M5*E((=54|G6JyV3IXr28 zS{*g#oKNo*;jbJ%N-<g+&Yv_aDP@^_v|e5I%7m2?$1a_;DM$-{8C1NB$NRzjB%fUz zUef%g6L_0{6t8eU`J+51YQ~=*6<O!GY}FGK*D>79ORR`Lc;Y4pdn5DCgbAB0{0yQV z6|7S;ej2^oXjesHO7ZbUj`Ld;qi1Zd5loGn`SC|n!nt~ju!LQK64O;@yq|l#?gaam zvle|<VjnCmIinyH>`{4uchbhm^Pf(<KUMqVQYFpuC$qQvywdZm4Pv^w&d=eeWA4A$ z87hH2)vX<RcX)JT_PQKpe0k6#dZMoWl`cUpW{Z6@#CleUACBLwtNY*jOWb2){cE># znf2PAH*Y`uPm#x8KcS+shUfQm@#W7FDhjUIzvS27;?_As<i?T}*SU^N+j8w;!qTG* z*H!qQoliOEw0HCN^fd}Te~xq)JL%7S;`n*tgk37e$4;5uXp-M~%D2Cm`$Xl;snQ01 zPh`{=$LXFBJN|!TZ9{MKU5Vm`z!%AVkALZR{&;Zz<AskiLyKmgxElQ4Xu-xPmDlC9 zqM}u?*S;TAwA!>|-6`AdCliiE#c@eZSQnDC(7j^~Q(&iGe7T#_o=cpP%uaKKHcXFN zbbV!LM61uNX(wWNPFg=GQsa{lS$V0DH}dhVSD}U_S5Nm<X)@ck?}}FNnBG(UXU0d} z_cNAF@?P&ByUIwqpY_FM;f?+}?=_bsX4x%$Wf~|E+dX5_wTCY@vHp@*S9s^LCvriB zW8uS1(J#Lq=vRu4jV_q5dCpTUmi>#@J-D&mru?;H-1(xDk_J**dv(kg&Y80|e*Naq zl{>#4yRg1|TYTS#!|NAMyC!hj=b6c;3j&YzH>9pP_IW~gNAF^;RoD0bwUXK^P_iWL z@1k2bSC!d+pBrQ$I+>^NGn<vI&D$iA2CKHWT(jSq?hkP{e4w*w>iUIxf9h78vs{`T z-dH5Y`7Wt)_o;Z9q76HH!h>^<p7nb8Ea|zZ$ch@hRm(WS<S%|XGnqF+P*vDgc)FR7 zt@!5E7WKVcPP{d}Cxhk`7|y>Oy!7ekJ10xNhI!sweB<e-Em0OxVu!NcN*cWn{?l5i zEq*Nh=)d`l-#7H!3y+i0e%G@4>A%GIlWj8$a~hT%Fip-hOFSAQ`_EeIVb;;fqH%9| zA`b?iN?XeB>!QAA=Hvd0uWU2SSFDJ5w4q`D)YlIMdEfTFNovp1?@rF!>-ea|Vk+~Q zWbb^#15pKUes7<^a_O(9#&5OI$d6YYPo0!fUjE(vhUMRai*FxU6#uxpGH#ai#fjxD za<wHFR+%JDYQ50?Vl&4v?gtlJSeF<ZF5X)(TUh?)<qJJa89qA&Cp@UOQtUsfb2Hpu zV~f|HmB+M%xp^lDUyHoWyP^0|g}M;S4(TJ@8a&1gK`mzeUT^G`!r$(xzhl3nLE7;H zTi-c9{|9c_%Zyjfs9Sl>Y^(H-kFo#P@SE>^_-fg5)6zMWJWtz~vHd=Ln8#(){+Cw; zyjYLVj#@iA_)bQa>D$nQg16Tz%l)5_Ab#PsJa_Y!ALm@!rZg;WeAeUMDJ*UiD!xk~ zpzDL%dAofX(s#=&-3m0GC+cj9X=OXMcyhwpk0B2?9P?)RC8oZ3d(|Vcw7q`{cGO>t z&p!FNF71=tg3=`?GP>&z9h;w;ymm^pfzA8*u?G?=3U`H7#CqP-=(?%VopRvnzmKW^ zWv25kZMd{4Fl+_m?4{;gUa4-E&|T6L*tfL*(N(X|6K{8GxxdT(RpxrfBbDWblE#j$ zN1|80vB;i%^E%&F{VbEO56;Q>m%fd+{_-~=jAix$*C^-KWs0xD7A{*q^R)6-r`PAX zmA$f8f867@`gPdqm?-w6aSOQi{ACv|x!C@~<F&8mjHS~HU6R+uWR&V2eVq0$W64zh zeWzN#ob}K4cF3zv{OI7<S`~S$*vCNc)0WF;xtkw$U#hIX86me!$#J6B%Qy30yYmYN zZV(N5vQYQ>^i|R+_o9F5sV<E!JFfMrJ@mO%(u#`pwm*2n#AfV2^;`2`=zseccSKB| z-^<>qvFGvpeR5N6bq}m<zx6Ng<dJ@Z#WT38HJd}F*WEKI@?7D!zUtz7BliFQctV8l z?2-|QDRdV~*4?IMmwH3Uao)a30Uva){<<?$u$^nEY}E5pwgM4JOqWbka(+c@e^Qe* z#edqjkoq+DWwYY6GZ(GNo|${(aMh(nrZb;Ctae-IlYZ-l-0i;J&%VodUjDP|OKPa? zhGpKb79F1Q#j)Ya42gE@CeLGvry?v;4{31pzI)U%P3Xm5`^Pt87DZf;t9Y`Jso_b$ zHi;KEBDmCoFP5x*x_;NK6&sHkIMi>O7`*j*_G$O2PLI47Ka$?HC1?A}9PJxZ5B)7@ z6K5`VW(;3qHvOZ}*3wp+(r?d-;*_>+TcDlA_2=NBb-y2N%K6jJ8dtb@Q(>%7ptRs? zpFXZFU#dKAEWJMe`gG%-56q#Sm(DKP^2POKyo_r>DbxCDrJc8`AF~yRS(T^+*8dZA zbi4HMvP4a3Z_T=GpH-MnZ+lUuIsFHx-p$Q_tW?gueZ6{(#e~=YLqdJmPM8{6@lWOr z$8pbC%M~n%ed59*0n(f&*b@vshlMjwEtNgBOJt+cTeGDxGw&~(Q>}3S)RJrJcbrd# zE!(1a`<3RK$HBckf7653+%h)WKkbgUNA@J``My8S*E1rzL04vLJLUg4kw2Y@f#D@5 z1A`b^H>fzdD6^mh-Wv*t`VbHp^&tSQH}p32cHU(Nf!g!oJx;B2yVM?;E_JxQ#Gz%% zB)0>zcW*oXE$rL7P1C1w{CeNB*Dq+RiSBf+2`8G3=WR?sXK8F*_svOk)#RjOtjiJw ze2>W=Z+GNh(l#Yo;>?AJv%=k)8&n*Vo9^W;pFHJ^L_q4leO8)Ff>tcIa@CCyU0kQ! zlbYK3OXXtB&2!WFF63|6d-u;_Ga0Wcr`<=q?(Uj4ae7x~*hI^l{xdh_>P=KQAof|V zp|Vlov9XU%hDq0?k2_pWaBM1bDwx=;yMyuZ>EBnH&m~-lICWIjU!hoOV+>cvq7+{B zJ%Qzs(;^P@%9)-PNm_D=!$;?Uo=D<pk5yLRbDw0na;oHHzSIf)9q?gE#(hSnID?=q z4+V?XKMhx(7Iw;4>3pF3+Qr{L+*+%ZvBi(OA>x#fq-611jrk0ZXWiW4oxRjhyE5*^ zh2Z)k;n%ib(jtAI?!QxhTDSKvZ`F0J%1=3y&(t^a-4|Ziy6<6%`TC!#S2+wAM0zF( zXoT*X(;b?j-JAH{(5EkAua4N^#J;i;1K#Y9*ZSYsm}lI#ywYt@pp|M;+`ov!K3e6L zi>$^Q?+H7qKZxjYE%|$q=d)Z%?O8qE3a*Hx)<f6wcE)Y6n|5-NP3en0Ms=L!&96P| zObymmgu7{H=`QV$%adX_|5!eIFMI9(bMrrXdFDEEoLjQS>)QE>&a_0GuwF@r{Bqp~ zPdZ`_Cwkc~QZlf-H-CR$+U1urzYMGvdQV>}Dn92L|KiM->+Yxu?@YE_XRA>bCmXZ- z?d9vHQKe?PF8#A}d=>oY9rHrZ!gP~;Wxty<Zf(0+%{Tpr^6#h977E&LHcX4S7{2JP zc*5(=f4QTRO=im-uKEAqt%P4@>73$R*)X5m88;ht$%fA=*tPrTllU^d{Yc5YcD}Y# z^zle$J{AUs4<eYo{fgWiaBp8P@k0Ozqowb=5z+a#JS1w@U-@tFX<vzaj`N~*+ol$J zH(tm%>>3kQx|qZFLxNlO`3U1=k8jt@bIwahbC`L~J2ZKw<^8_}cHGZTJ4-b1CdmX} zGMW{3n4v>wWqap+qi377Kj$;o6yD!oZ19kYP4!JYn?S!{mSmv7?->#Y(oOoJj;TG# zmU8WoRB%c1-8)Ut-L6^AXo<RlJzt|@Q9aMH`|ghm^EXNO?%I2@!0yMj*%oD0%L}~Q z7EE}!D?s7<qKkV>q<uGkJh{<ZoQo$}vS+7o%gI@6azEJB__dG7M8{5T*emepKq}YY zulBv$rkPw3lU$Z!mfpBqOzBt7?b~m!Y0bQOOONrTP{x-N8}^Ikx!X7L&$Vw{^X!n1 z7gIZD^a9=Jxk;7@9m?Ar=c%qfSF8D)F;3}FprPXYBVwuh)~?&}*1fSZ({#<&35(zH zKQF7V*}SvF#9?<(bLrEVwab!UuYWadA%kNd-?IQ4edqK^QtudqPdUg`ezId<ZqD`Q zqAsV#7r(O7=9wLV95W5{eZDB9+%huF%Rj_D*@)jzsQr7#OiBLBPO`gS{QPSz%lA?B zaNwaikH18hRA25h(R)zzSd>p7yz@CbXSAc(j#QCJhIbB$Ye%{Ft$lbrX3B-gH&Sjh zDqc8VtrpRUY@H$P@aXu3>B0f*s}y!eOq}fM+c(c=8N<n&zF{}?)!Ui+n^i<t@=Q25 zLAv!f6B}piu67yy?~c|BoR)g(W>|@=TiWhkFq6ZV;eFr*qhscOFPUt9-pTkz>;35& z+)|JJUsUQ|ylllGkB^70Fvvw6v=Go;94K0Nai)Lz;)7rJ?>(ZW9?V;F>Ok^YkKl8s z*rg?o7_D9Q@ZIm<S7%$9T|Kk*;o`y<$re@*l@fb%qW5N|#>TAC;9hv)tjH(zm={kq z9A|Cs=h(FS_5`7g`;7muc=P^hLfGcbLNmW^nZ&$wj`9oD=m7QJPKP?D4x9IBseO;j zwpZJ}xqc>i;pP~|h{R*1Q@%JB^>K?Vb$>qf5&IW8HvI>mGVJDjRV$r2XJPz_<hM)f zjelL+S82F(tF`9$@Wm$=*seZWp!?T<n`P6S{M7a5rz|b3w)%UswoU70#q;w<+>z1K zzCBF$`z-z_y+6kz-n;bE$~jl&W)z-Q_?YoS*0yHP>a3Wp_ue#E?_B92KACrFeq#Ej z=T$$FOYXj$yYpJfn&*1kY_f9sWH(kQpI&?C^ktLNVz)bcw`B*L9{0L2D>_&Irudt! zv0tiYzh(GuwL5qHg6DbLnQXJ)ZfE{;`$mC!^xTujZ?3<4^Znm9=I?E86`N*>Z{Ox2 zYh0<Uwe|YB%SK<f*oj(&=mw+~__p5i-x9RQ?waSed2X^&d-^=yUN4DSI`7&YCHw4? zR~8<OzOYhxxlHGwR=YF*Z=d)-vmoc|{iQYkcoDVdnSw&cWnn^{G7Jn1@(c_NTnsV{ znRzLx6?z#Z&=TcB_ws;fdyE=$b70BGa=uQUg3uEhC(mx&ta(!Br03Sn7uzqyFd)od zFjLd1<7xwoHai1Dx(ow@8G{T%PGVkqX<~Y+eoCsYiz|fGE67QYFUu{?$S){JEs94T z$1JWa*2~Px1eb0)o8Jc9=Erc$-N@*CDNnJwc^*Ic-On{|baC$aWbm3ni0yV_lAh7F z&95^=L`yElzJ8|_63Q$5@65h4`6n*#``Q0?<*H}*5`6aX8&Bk^U0G~@f9Hh$g8N#I zwt-Pca=aEQ*J^e9+KJ^jG^!WQ_hMbF!6{My`<e2Uqc3)+IId6(w`bJYYp;8dH`PXD zBLDo(of1Kj4N)SEw#yxYT%XSP#p+z&o3nF~K$fkQwwU^4PsInGjwcpK><nKe(X+^D z#bb_jx5|&Mez$dDHn;D?Gn-Q99Gu`9!nphjyY2#iN5Lr!E(h<vUHV<S!h_-Y+-tYZ zzpuTw+;4kz;per*mv`*QyubCFe%=Bm_hWhdyRI3{P!r0kahc*(!H|4#;WVDDDvh5$ zW!zVI@*}2lLctaxdky#NM?yX=))m@ks#jI2yzJnG8q>+nsV<ZDvDIASv3y$jA@I4k zV)CMRC9$~--+f-SZ0ooZz;tMNXW;x#PCNCxLw|q##(Seab$+ko%lCq7W%yaI-)ot5 zVGg5t)8fZR4_-7rUiWk9#tY)csr9v@Qn@k*eoWwTTC!(p{R<l(m-$8-*|D|ZdXLn9 z^f3L(@R%rdYuYV|_E{OHugUziQkyif&ZWNGL?x(TzMa$g3@!IbS#C>}KMGrN^lqDS zSp2g<@T^xW+c+oNEqkTBOYpOop^ddjV1n!UAB7$B>sV&YR(!H<NyV@J@INvOMY9CF zPW@7gU6ae$>38nbtyLGq*<7avzuvHE+SN_pR^Qj0xME#?e$dPrZ2Kn$IK5-G*`UbO zK7WU@t4fr*UhYyoTW8s1gTp+prah22ruwO0z?k>&^8br+)v6>KPV7i%YGnEM#d)(r zbd&$S{13+kgnw$?ah{m7i?8Zdio^y9FL|5t!<Vo8(ezv%**A~#aY0m-Zla3ZQOQLf zZ+eqXC_3-dd~;;QhG`AaP3I~Wy<B!X>f6tQUfNaycg}aP)tXevoe39u*S+H))3Vbh z>*}6%<o=n*UFFfH(lzDi^0iZBq)JY0(DRM0a_kHD3%2YC>kU<2!1y+}F6f5pC*i-z z@r@NzeymseGAnCM(C<^FrN=`<g@4r<afnWn`jVaZ_pXwzA7ALZcMNZ*g<4%u)t|iU zVaMSm*A@kOZ18-mE%u&SYH>!^I$7PRJbU~2<uo?m-#P311olV1pFiCDeVnmSLb<FZ z$L!gxC$pBVF09&g=j;2GH8sD4qnEbayjbeS*%x<yqvi4lfo0Y+Om-jnUf2~}Y<G5D zcyYhRw@}vkbEUMp?OGZ;u5^6xTA8)y&auGL*S7uKGvORZy7#&G@PlSow#{`DU#c!^ zD^q#T(DZTh&)J6Nd*hNDi_X@ufA-NoyL@)qWAz{L!b>eX#kcP06`oMJ;gR);v$9Te zvbUFf_Ex+8<1Tll#qM1lh8Er5YM=M;C;L1(EMc_w!L^CM4D^D{W*NWaS}ORi%InYz zgFLe%w!S5sJd(<@m)|JPYR-5x^LJ0;yh|^5sw^%&dpN&x#q)=H{C7*Qxmv%O`TEm} zu4Frwkckr4r?gcZS#)5c?crI5M>bB%nxj|PbY$nXQ@>S`tdttNXGHT}k(|Pr@K!FY zZ~C;w$A5a63KSOR1WGGs?VZ&A+4!BehLfoMp6|yBPi_v|HTSGu!11fsABE@%ZK+A= z)qP|Zcy#acx3k}Uy?W~0=k?w5A}i~Z-DkhQCHr|*?^NT-Tkh@5zW?a^)zasC%3>{d zb-B!Uk*rB$FTB6&&7Cb-+uPo<9$qN>_t%Fn=^1S2CyKn>V{)+4K6t_IZL<@0+OJpr zoD`z>ZMEd3;8powci+ohezj(Y!I#yo9KV^$XWy{<^4a#I@aFDwi<g|d@}_lL>=%R8 zvt|fy@NJ3o+pzdSt0Y5Ax#3gJ;@Q7hnmam8Pruo>`ZM>eLwv0I(c7mk?y=3^`0d?- zEpDN6Jp29acVtdmskwt;R>0YEkLVEdwVUr2POr<9k~qKAvHstOJJ;iNS}%91Xz?$~ z@13*MKVdR|%l?U8FSEG3Tml*8xSq3?XfK+cZBV^tCikP6naAVLUi-HD`@0)#$M>E- zcR}>!|7HJjHXGacm+xE{oozDft#)$A=_`^;)0<bm4olOhyk@I8+2?zUTASM9v^Tz- zW{U%MU3nVo9us6AdyV@-$hmd;CT|&Ea<cZPl^N?w=bCFJtqs|+arVuV?S_kY_?<ED zxXENFc4<j#_O@0ZkMiuj_og3{TEy$8=JZOpq0HoF#k`5{n7&y3<^GuCYV&u(ExCX8 ziB?wy8#6^tGkl#SW_>cex0-WP_}eWn+U{6e8!r`Gw*Taul=f{m_q{iHE&jP`ubp*X z=es#MrUzbM+08WPVA6Ss{HdQ_F~+^vA^Esecb;;6WsmWjJ5l?l@7d|kc;Dimxz<DO z+jXlt@;CfEJ-x7f^U{YoPp3c8^@tZ(>s0$S{DrK=`J@f%7dEHvu{t%~<W9@aU-e#Z z)aooxT+hAJ^&!>%9rMStpX-%-^d-LsE8KtbS={;Of269pcDAO|_TCkNhuIhys-)4X z=F~i0cPD)?No3W$ZrfXIRrA}3=zJ+lk-EGkf7%y+QB*Lzu)yxkvIdvNB^f(8J<4vc zT6Lx;am~3Ko8|bY{P|`3EoO(h!?%T(^5jnRy!|XY|F`95M!DUo87>Qj?5Y=Cn9etK zso8w)wBQF5?H3xg9OzE#iI1ykXyceR>1+(^PB*y)f8H(QaXz&}+lKw0!mmWHRKZvC z*q_C4Olk``w=($37ulAlimc%)A8ZSW(h)l<+27@K&MR(@=(M!P@RF(T57xe4SYrPo zW7oU@kvv|V$2`l<ELJS=k_})|6LD&iX=wRiuy1o6GdJgh<o(r^A8*LkzT#(F`|$g} z4L7B}$?cMlc3yF4>a^QlD*Z?G9JI_I`fYMn{n8^OBpV~^@aJAmuas2Tn@u6{4gP@= z@fW8}S-?_u#_!0R8&cNRsncK8XsOs3tyFp?ymCRz%o9Op|HQ;K{9J93!?!T1YD<-^ zXiOycD$_dd7?1fC*H<?m<UW3HkL2!<;xC;{hOAH5<@7rV%<%Hk-OJzgFQh|Fa=vK7 z!ywOvi$dP!E^XPbG4XJYh>3}S(Ic7jjk-$f0!(z5+x;o^Q&AS~uk&6J;4fp^BqeaH zgXNNNo7<%W%4S+cn^@Z9Qr&}s)_s^Deo-mv)Sjx-O%JU^=c$X$%I9iosPHvXKVv+@ za(2s=q!&3hDP3nX|7}}z=G>8pWmU-~L4ljX0{wD5JCAf*JyT6&s}d}Fe=yN_PmtX` zeZ`|@sXrMqe^v&`>pp!qVb)dCTl^0KA7w<&Um=pQMw6}8_wa-hPwQgZb;<(@--gau z*HI?AMEs)sf<O0+`Zt!(Wv|=3`iRKCWq+(H9<l%9v-r67K>HlNgT8<Eq;=kNUAnaP zMZ-&pev!Ld=SJH7ZByLJT3+_x(bLNhRote0n0@P-=&S4dig=v<%zwy#*6z@M*}y&z zEBS(g6=w}1RqU87<MtZvX=##V6F4tE|M9oZe>RQNz3V4k|M)tf_2)B|X*)GIE-X{K zE%7<)^|Qe3QqNPq@vDC}e`9*SII_$yZDwbs-sxT9J6Kj9;j~Gg65JW4%BeZ^4BKth zNjE<7zPdJ@N#ONLhWBgke?ESnW4nyv?Xx}g>(*-XsmIxAE{ctHkw0tbaXxo(!p1tu z$Bg{4E*bnCj}s0HrzyN`4DFwO>5$Yer|92OuV;K{_K42qpVqxQPC_6~_xhH$-*=*C z%~QygdbCYtPweI2-*SBnyU(Y7H=OGibcdU*;GxlNQ*-Zy8|9Aw?fT5~uFm!7hqupm zUXT^i^7|9|?F#pT@NHMvcXEEVnfpViSANCfa-TfKSyQh&m|e(eSwHpSkH0Y{%dRc> z@YH9Hx>$-q{H<o=z@AL^t`!+i4}Hw$%J6gO^HH00PBPHv!v`@pRtd2O>zPcrJ_Ixz zG^;uJCH&V;p({R{B@?yZb4X8S2xnu>IaI1`e>6{Uw?pcVoi~KpQ{3_wIvto=616u@ zTDC5QnY}G2b6)A`u$za>Ld(l5c3%2je(jEa^s`4BAJ6{yXxF!V#ZWI6SKgiy)tpn= z7OF9EJXYVOg%3Ty=E2V~KeJ-%?whY)@11wU`{oP#FUNlT-*@?c#QTu-?`#bf@5xR1 zqQIwK{x@;E-L(bEAqz|nyI*R{F88Raz3lk@siggE&y_|uPe{Fxn0!m_8RyaO#|~%Q zdB1J{7L&JGn?zm<9G{S`9C~=^H-3Y~Y}cBWb|g4%VB8d(k<M%_$ot%{iBIKX_l31v zv@J`#l>9~KKdikj8@~RX*|7!5>wA|xJ9Krm|F1>Arrnyq+526C?eeA@J#OD_r0L7Y zU7jWoai!42_)+>Rp*e@nSol5TIP{}w>pSk3aS<(Hg<&nMhrL{`xgCDJzN+SD+TOip zXD3ZNrF?1uYoSPXcHr_2Y8wu^X!KO{<nx|PnmohPBO$f=oJMoi=9};CX5ZXp@%#70 z`DLxUj$}yuc2!lCm^sPq%Hpy)iGNs(Kgx+1I=UYZeEngDSLeA%og<kgkt}nMCe2k{ zH))<X>(>_{k&MrxzXU8kUjECw!TZ@Q$qfQ>k78QBsV$H@XuD?CIiXVBbnWHGdbdm} zW}G$k+=sUP8w$PdN#AV#mGLFLSa}1pP#gD_tBoi6H0SZZ5qZS%X)?3*Q9Jc5!p|h; z&3e4=M%~Y6nK{`l;)|_!=e%2M7PH>|+`jlH-)}9xTm5Fc^je+kd9^jx36pzXO^Cdq zcBW83eMXw_f0@f`e!Sm$PLoL{bD{5v=b=SDeD^H>Wv4w1dGq<x2d@*?Qy$4q`CnY9 z&AVr-+v<&9C4V@4S^t8s_5Zi;Pm~?~JQ$*7&Yfh)Hoq~O$xryv36%}3znYTzJehYt zuRm)u!Lu$-DMI+O>C6Q2XZAC>{xKqYvw5>Lot7c>mW7dfvuNGs^;_PO-)+uEvq%!z zB1pFx&AN@0SXY40I&dREAI-Wg<XFeZB*%<v?UDoo2rx1*Fl=cAv5-dqz$=+pAuE~C z#x(=H5r$&U1RxvA&dY$ZJPLVUfR%wc0CP?N*=)?=S7fu_@uQjz9*kvWV8${Ki)<+7 z;0v;$t|AO5Louuj%%GtdJOO|?*n(`{QV|BShhA72m_b7?c<jb(O(NUvAcJH#Btd~m zV%nCh49uXmB_6vmvn8_K#mY!_BPU~424+wu#bYpLHbge~4zj_RnUa-(8I&pU7>}9l okd60NL2@@Zv`{i3D+4nq6Ji+8$_C0loD7@{smu%vyHr3t0J#8(OaK4? literal 0 HcmV?d00001 -- GitLab