From a749f114a1595a6d5ed28280a9a4ea7a7c9b080e Mon Sep 17 00:00:00 2001 From: Reinhold Kainhofer <reinhold@kainhofer.com> Date: Wed, 9 Jan 2013 19:57:05 +0100 Subject: [PATCH] Version 1.6: Implement customizing the customer numbers, too. This needs at least VirtueMart 2.0.15b, because before that the trigger did not allow changing the user data... --- Makefile | 6 +- .../plg_vmshopper_ordernumber_Logo.larger.png | Bin 0 -> 8073 bytes images/plg_vmshopper_ordernumber_Logo.png | Bin 0 -> 1431 bytes .../de-DE.plg_vmshopper_ordernumber.sys.ini | 16 ++++- language/de-DE/index.html | 1 + .../en-GB.plg_vmshopper_ordernumber.sys.ini | 17 ++++- language/en-GB/index.html | 1 + language/index.html | 1 + ordernumber.php | 67 +++++++++++------- ordernumber.xml | 30 +++++--- releases/plg_vmshopper_ordernumber_v1.6.zip | Bin 0 -> 9366 bytes 11 files changed, 96 insertions(+), 43 deletions(-) create mode 100644 images/plg_vmshopper_ordernumber_Logo.larger.png create mode 100644 images/plg_vmshopper_ordernumber_Logo.png rename de-DE.plg_vmshopper_ordernumber.sys.ini => language/de-DE/de-DE.plg_vmshopper_ordernumber.sys.ini (79%) create mode 100644 language/de-DE/index.html rename en-GB.plg_vmshopper_ordernumber.sys.ini => language/en-GB/en-GB.plg_vmshopper_ordernumber.sys.ini (78%) create mode 100644 language/en-GB/index.html create mode 100644 language/index.html create mode 100644 releases/plg_vmshopper_ordernumber_v1.6.zip diff --git a/Makefile b/Makefile index bf3e333..16832eb 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,17 @@ BASE=ordernumber PLUGINTYPE=vmshopper -VERSION=1.5 +VERSION=1.6 PLUGINFILES=$(BASE).php $(BASE).xml index.html # TRANSDIR=../../../administrator/language/ # TRANSLATIONS=$(call wildcard,$(TRANSDIR)/*/*.plg_$(PLUGINTYPE)_$(BASE).sys.ini) -TRANSLATIONS=$(call wildcard,*.plg_$(PLUGINTYPE)_$(BASE).sys.ini) +TRANSLATIONS=$(call wildcard,language/*/*.plg_$(PLUGINTYPE)_$(BASE).sys.ini) language/index.html $(call wildcard,language/**/index.html) ZIPFILE=plg_$(PLUGINTYPE)_$(BASE)_v$(VERSION).zip zip: $(PLUGINFILES) $(TRANSLATIONS) @echo "Packing all files into distribution file $(ZIPFILE):" @zip -r $(ZIPFILE) $(PLUGINFILES) - @zip -r --junk-paths $(ZIPFILE) $(TRANSLATIONS) + @zip -r $(ZIPFILE) $(TRANSLATIONS) clean: rm -f $(ZIPFILE) diff --git a/images/plg_vmshopper_ordernumber_Logo.larger.png b/images/plg_vmshopper_ordernumber_Logo.larger.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e15d0cf41ff033274a7c1e4a22fe747afd4bd8 GIT binary patch literal 8073 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 literal 0 HcmV?d00001 diff --git a/images/plg_vmshopper_ordernumber_Logo.png b/images/plg_vmshopper_ordernumber_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..df429e69f02c252f414442d36448b4243215e413 GIT binary patch literal 1431 zcmeAS@N?(olHy`uVBq!ia0y~yV2ER2U`Xd+V_;zDT>h1tfq^y7)5S5QV$R#S_qBh= z%N(Eo<HwR2+%YHerqnw~dL{;{IP2{!aC9kjP7~C7(iP)%YUwQPr%9Zyc{^^ja)%c^ zbkE)`k>r+Ub$|8webS%ro%_A_ZRx%0`R<z4@8>Lkd-GPsmsckedkj5{{Peyu8)$8+ zP)hmea^g|vgrmZW-Re!Nf6SgO?c?KfAZzQQty@LAySq79m>3!o3_4Dp^fWOuJCwCG zsjN)Q-{0Tx_x=0#6F1+SbS~u9@)BD)n`~po@Q-}$%x~YmE!Y`z<L=$olPQNzo#J9R z@UmplqD4&X?Cb?QV>I;j+b_TDdBe-rJY(j}#`Dj;t%5V}=U;z(aI;ym0WS*^W7^gz z$>bhhKE6$>SFb)%E7#xN+uQ4!$IrvF;q~k6u;AdyCCe`DOZi-JJ&nuv{l|v|5=W07 zWoX#F+j_>?XD4b^RaJNF+t+tTPFmVIG*mPkq4ub}y!_(Di<ub&I9LJ#0t9xxe}8{} zMP+5@optNiKR*|8YkH2{`&&K>cl|hi+<nfxc}W==91I5@Y0RH9N5*&N%`@_*v+eBd zH}2ZiwR5NCljqNw8M?Z=1-V+4*8eK7;F)}KiDodbShwn@y|>?n&7GXLqx*Y>&5av3 z4xBi_aq845rR&<-+8=-X=;-R=VmR>nwYHYFwrT1r$0wT>Kdf49X>Wi0%NLVl$B)-f zi3$&IpF3A}&z?OBB3utYd@xw~J#6WjoVM4Z`}geOS%1Cz+_`fzUgvF>-n(~iL_|cx z*)-;4o~>KAMnpwjnlkh3lMNN~yC!W>j^!0Zj@^l0?d)dOaBaGGT>X@~b9eBy?*8yo z%MS_I#c9sxa{f`Vv_^~P>0{SVf7?EOTzSf0wC%&km1q1VZRQ_IPfuU7etrMXntk%$ zbMx{xZQW}6?a!Yxc6N3%F278Pj*hm!R{LMqMKd@ve$neaKWDaibC;Kv9(?`v-;Q@> zyB~i4y>Y{ahSR4{OUTDZL`ZDDmbCH69<8ZHQ@^S1IyZZM=8}GOr(IGg$x!Ka?VkJZ z+wbPNdwX-wnl<Y|fyIXp9}axpa@pzH?~2`b`(C}udh_<}!KXzBbIg+K>gGMqT+Xgr zU;Fan@%{VuZE9;{TW9;yVXDgS_IWin$vpo4{x|O5cP}n3zV!Q2>#|2*pFCc^Y}tdd z-3KKO|N3Qh{a#6eg#7+(+u9~i7A`3-Pp+)AeEM^b#IfVd4taTcZtm_EuU%VaWgjYW z=(zjmuU}g)T?+EGR~AkATT@eCZ{OF~_u=Qy&h6XHbMo^SFJG?y)V_WCn(rUKfBzm4 z8F}#NQP!@mt_yeX_C9==_~hwR)tY@TU4B(4Em^JTB<A0uGmj(E1{6^xuODAMv$wk> ztv9dM=KY=B1?kr^3QtY3v%9$OeMebZZ{G9A!f$`~Wu#wwQ3ezA4f|0s@!7q}uHWtK z?%CPSiCmm5|NpjK;OV}`=aVCr{H)ko{C?4&u*K2x>&xERPTYT9<kE3rMYM$B`0nx4 zXV<T${cHR3F;L^|`qgK9+P{3{{8!X7FWx^??foqug)=oa-NyUpX&pbm+f10lSYAHA z&Nj4fetE8%z_H`UXUAWkrD?RPEBw>P{|~-?Jn;YX>+RdO&oa^#^M2wT((>WsMVIsI zSDzI*Xs6axV;7fM7n{3GPT~7Uug|ZujHgbpyZ68&+!+xNDIZ-V4ju2VXxpP$vu8s3 ziR{8tRi8fYx6RYydHlG(`c8<%vE%>0?O16rr(ZmE+Pwg~xFyC<cppD@wRXNIU>A4f mzhpLty#6D}Pgwl=QGTKHg+QsR{gn(13=E#GelF{r5}E*kR^(Oy literal 0 HcmV?d00001 diff --git a/de-DE.plg_vmshopper_ordernumber.sys.ini b/language/de-DE/de-DE.plg_vmshopper_ordernumber.sys.ini similarity index 79% rename from de-DE.plg_vmshopper_ordernumber.sys.ini rename to language/de-DE/de-DE.plg_vmshopper_ordernumber.sys.ini index 91a4e55..7ef7f7a 100644 --- a/de-DE.plg_vmshopper_ordernumber.sys.ini +++ b/language/de-DE/de-DE.plg_vmshopper_ordernumber.sys.ini @@ -2,11 +2,11 @@ ; Copyright (C) 2012 Reinhold Kainhofer. All rights reserved. ; License http://www.gnu.org/licenses/gpl.html GNU/GPL ; Note : All ini files need to be saved as UTF-8 - No BOM -VMSHOPPER_ORDERNUMBER = "VM2 - Plugin zur Anpassung von Auftrags- und Rechnungsnummern" -VMSHOPPER_ORDERNUMBER_DESC = "Dieses Plugin erlaubt es Ihnen, das Format von Auftrags- und Rechnungsnummern in VirtueMart 2 anzupassen.<br/><br/> +VMSHOPPER_ORDERNUMBER = "VM2 - Plugin zur Anpassung von Auftrags-, Rechnungs- und Kundennummern" +VMSHOPPER_ORDERNUMBER_DESC = "Dieses Plugin erlaubt es Ihnen, das Format von Auftrags-, Rechnungs- und Kundennummern in VirtueMart 2 anzupassen.<br/><br/> <div style='font-weight: normal'> <p style='font-weight: normal'> - Das Format der Auftrags- und Rechnungsnummern ist ein einfacher Text, wobei <tt>#</tt> die laufende Nummer anzeigt und <tt>[variable]</tt> als Variable interpretiert und durch deren Wert ersetzt wird. Aktuell sind folgende Variablen möglich (Groß-/Kleinschreibung ist egal):<table border=1> + Das Format der Auftrags-, Rechnungs- und Kundennummern ist ein einfacher Text, wobei <tt>#</tt> die laufende Nummer anzeigt und <tt>[variable]</tt> als Variable interpretiert und durch deren Wert ersetzt wird. Aktuell sind folgende Variablen möglich (Groß-/Kleinschreibung ist egal):<table border=1> <tr><td>year</td><td>Aktuelles Jahr (4 Ziffern)</td></tr> <tr><td>year2</td><td>Aktuelles Jahr (2 Ziffern)</td></tr> <tr><td>month</td><td>Aktuelles Monat (2 Ziffern); mit führenden Nullen wenn nötig</td></tr> @@ -69,3 +69,13 @@ PLG_ORDERNUMBER_INVOICENR_COUNTER = "Zähler" PLG_ORDERNUMBER_INVOICENR_COUNTER_DESC = "Wählen Sie aus, ob der Zähler global oder pro Formatwert laufen soll. Z.B. beginnt bei einem Format '[year]-#' und einem Zähler pro Formatwert der Zähler jedes Jahr bei 1." PLG_ORDERNUMBER_INVOICENR_PADDING = "Mindestziffern für den Zähler" PLG_ORDERNUMBER_INVOICENR_PADDING_DESC = "Wählen Sie hier die Mindestzahl von Ziffern, die der Zähler anzeigt. Ist der Wert des Zählers kleiner, werden entsprechend viele führende Nullen vorangestellt." + +PLG_ORDERNUMBER_CUSTOMERNR = "<b>Kundennummern</b>" +PLG_ORDERNUMBER_CUSTOMERNR_CUSTOMIZE = "Kundennummern anpassen" +PLG_ORDERNUMBER_CUSTOMERNR_CUSTOMIZE_DESC = "Hier ankreuzen, wenn Sie Ihre Kundennummern anpassen möchten und nicht die Standardeinstellung benutzen möchten." +PLG_ORDERNUMBER_CUSTOMERNR_FMT = "Format der Kundennummern" +PLG_ORDERNUMBER_CUSTOMERNR_FMT_DESC = "Hier können Sie Ihr eigenes Format für Kundennummern angeben." +PLG_ORDERNUMBER_CUSTOMERNR_COUNTER = "Zähler" +PLG_ORDERNUMBER_CUSTOMERNR_COUNTER_DESC = "Wählen Sie aus, ob der Zähler global oder pro Formatwert laufen soll. Z.B. beginnt bei einem Format '[year]-#' und einem Zähler pro Formatwert der Zähler jedes Jahr bei 1." +PLG_ORDERNUMBER_CUSTOMERNR_PADDING = "Mindestziffern für den Zähler" +PLG_ORDERNUMBER_CUSTOMERNR_PADDING_DESC = "Wählen Sie hier die Mindestzahl von Ziffern, die der Zähler anzeigt. Ist der Wert des Zählers kleiner, werden entsprechend viele führende Nullen vorangestellt." diff --git a/language/de-DE/index.html b/language/de-DE/index.html new file mode 100644 index 0000000..2efb97f --- /dev/null +++ b/language/de-DE/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><title></title> diff --git a/en-GB.plg_vmshopper_ordernumber.sys.ini b/language/en-GB/en-GB.plg_vmshopper_ordernumber.sys.ini similarity index 78% rename from en-GB.plg_vmshopper_ordernumber.sys.ini rename to language/en-GB/en-GB.plg_vmshopper_ordernumber.sys.ini index 3c29102..dc80c77 100644 --- a/en-GB.plg_vmshopper_ordernumber.sys.ini +++ b/language/en-GB/en-GB.plg_vmshopper_ordernumber.sys.ini @@ -2,11 +2,11 @@ ; Copyright (C) 2012 Reinhold Kainhofer. All rights reserved. ; License http://www.gnu.org/licenses/gpl.html GNU/GPL ; Note : All ini files need to be saved as UTF-8 - No BOM -VMSHOPPER_ORDERNUMBER = "VM2 - Custom Order and Invoice Number plugin" -VMSHOPPER_ORDERNUMBER_DESC = "This plugin is used to create custom order and invoice numbers for Virtuemart 2<br/><br/> +VMSHOPPER_ORDERNUMBER = "VM2 - Custom Order, Invoice and Customer Number plugin" +VMSHOPPER_ORDERNUMBER_DESC = "This plugin is used to create custom order, invoice and customer numbers for Virtuemart 2<br/><br/> <div style='font-weight: normal'> <p style='font-weight: normal'> - The format of the order and invoice numbers is a free-form text string, where <tt>#</tt> indicates the running counter and <tt>[variable]</tt> is understood as a variable and replaced by its current value. Currently, the following variables are available (case-insensitive):<table border=1> + The format of the numbers is a free-form text string, where <tt>#</tt> indicates the running counter and <tt>[variable]</tt> is understood as a variable and replaced by its current value. Currently, the following variables are available (case-insensitive):<table border=1> <tr><td>year</td><td>Current year (4 digits)</td></tr> <tr><td>year2</td><td>Current year (2 digits)</td></tr> <tr><td>month</td><td>Current month (2 digits); leading zeros if necessary</td></tr> @@ -69,3 +69,14 @@ PLG_ORDERNUMBER_INVOICENR_COUNTER = "Counter" PLG_ORDERNUMBER_INVOICENR_COUNTER_DESC = "Choose whether you want one global counter or per-format value counters. E.g. with a format of '[year]-#' and the latter option checked, the invoice count will be within the year only." PLG_ORDERNUMBER_INVOICENR_PADDING = "Minimum digits for the counter" PLG_ORDERNUMBER_INVOICENR_PADDING_DESC = "Select the minimum number of digits that the counter shall display. The value of the counter will be left-padded with 0 to have this minimum number of digits. If the counter is already larger than this number, no padding will occur" + +PLG_ORDERNUMBER_CUSTOMERNR = "<b>Customer numbers</b>" +PLG_ORDERNUMBER_CUSTOMERNR_CUSTOMIZE = "Customize customer numbers" +PLG_ORDERNUMBER_CUSTOMERNR_CUSTOMIZE_DESC = "Check here if you want customized customer number formats rather than the default." +PLG_ORDERNUMBER_CUSTOMERNR_FMT = "Format of the customer numbers" +PLG_ORDERNUMBER_CUSTOMERNR_FMT_DESC = "Here you can customize the customer number" +PLG_ORDERNUMBER_CUSTOMERNR_COUNTER = "Counter" +PLG_ORDERNUMBER_CUSTOMERNR_COUNTER_DESC = "Choose whether you want one global counter or per-format value counters. E.g. with a format of '[year]-#' and the latter option checked, the customer count will be within the year only." +PLG_ORDERNUMBER_CUSTOMERNR_PADDING = "Minimum digits for the counter" +PLG_ORDERNUMBER_CUSTOMERNR_PADDING_DESC = "Select the minimum number of digits that the counter shall display. The value of the counter will be left-padded with 0 to have this minimum number of digits. If the counter is already larger than this number, no padding will occur" + diff --git a/language/en-GB/index.html b/language/en-GB/index.html new file mode 100644 index 0000000..2efb97f --- /dev/null +++ b/language/en-GB/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><title></title> diff --git a/language/index.html b/language/index.html new file mode 100644 index 0000000..2efb97f --- /dev/null +++ b/language/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><title></title> diff --git a/ordernumber.php b/ordernumber.php index 7a36fb6..975959a 100644 --- a/ordernumber.php +++ b/ordernumber.php @@ -14,10 +14,12 @@ if (!class_exists('vmShopperPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmshopper The only way to pass a local variable to a callback for preg_replace_callback is to create a class instance... */ class ReplacementCallback { - private $orderDetails; + private $details; + private $nrtype; - function __construct($orderDetails) { - $this->orderDetails = $orderDetails; + function __construct($nrtype, $details) { + $this->details = $details; + $this->nrtype = $nrtype; } /* Return a random "string" of the given length taken from the given alphabet */ @@ -57,19 +59,19 @@ class ReplacementCallback { case "alphanum": $alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; break; } return self::randomString ($alphabet, $len); - case "vendorid": return ($this->orderDetails->virtuemart_vendor_id); - case "userid": return ($this->orderDetails->virtuemart_user_id); - case "ipaddress": return ($this->orderDetails->ip_address); + case "vendorid": return ($this->details->virtuemart_vendor_id); + case "userid": return ($this->details->virtuemart_user_id); + case "ipaddress": return ($this->details->ip_address); // Only for Invoice: - case "ordernumber": return ($this->orderDetails->order_number); - case "orderid": return ($this->orderDetails->virtuemart_order_id); - case "lastname": return ($this->orderDetails->last_name); - case "firstname": return ($this->orderDetails->first_name); - case "company": return ($this->orderDetails->company); - case "city": return ($this->orderDetails->city); - case "zip": return ($this->orderDetails->zip); - case "orderstatus": return ($this->orderDetails->order_status); + case "ordernumber": return ($this->details->order_number); + case "orderid": return ($this->details->virtuemart_order_id); + case "lastname": return ($this->details->last_name); + case "firstname": return ($this->details->first_name); + case "company": return ($this->details->company); + case "city": return ($this->details->city); + case "zip": return ($this->details->zip); + case "orderstatus": return ($this->details->order_status); } // No variable type matched, so don't replace, return the original string return $match[0]; @@ -104,8 +106,8 @@ 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 */ - - function replace_fields ($fmt, $orderDetails) { + /* Type 0 means order number, type 1 means invoice number, type 2 means customer number */ + 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! $patterns = array ( @@ -114,23 +116,23 @@ class plgVmShopperOrdernumber extends vmShopperPlugin { ); // // TODO: in php 5.3 and 5.4 we can easier pass $orderDetails to the callback // function my_callback ($match) { -// return self::replacementCallback ($match, $orderDetails); +// return self::replacementCallback ($match, $details); // }; // return preg_replace_callback ($patterns, -// function ($match) use ($orderDetails) { -// return self::replacementCallback ($match, $orderDetails); +// function ($match) use ($details) { +// return self::replacementCallback ($match, $details); // }, $fmt); /* php 5.2 does not allow lambda functions and there is no other way to pass a local variable to the callback than a class instance! */ - $callback = new ReplacementCallback ($orderDetails); + $callback = new ReplacementCallback ($nrtype, $details); return preg_replace_callback ($patterns, array($callback, 'replace'), $fmt); } - /* Type 0 means order number, type 1 means invoice number */ - function format_number ($fmt, $orderDetails, $nrtype = 0, $global = 1, $padding = 1) { + /* Type 0 means order number, type 1 means invoice number, type 2 means customer number */ + function format_number ($fmt, $details, $nrtype = 0, $global = 1, $padding = 1) { // First, replace all variables: - $nr = $this->replace_fields ($fmt, $orderDetails); + $nr = $this->replace_fields ($fmt, $nrtype, $details); // Look up the current counter $db = JFactory::getDBO(); @@ -169,7 +171,7 @@ class plgVmShopperOrdernumber extends vmShopperPlugin { } // Is order password customization enabled? if ($this->params->get('customize_order_password')) { - $fmt = $this->params->get ('order_password_format', "#"); + $fmt = $this->params->get ('order_password_format', "[randomHex8]"); $passwd = $this->replace_fields ($fmt, $orderDetails); $orderDetails->order_pass = $passwd; } @@ -190,7 +192,24 @@ class plgVmShopperOrdernumber extends vmShopperPlugin { $padding = $this->params->get ('invoice_number_padding', 1); $invoicenr = $this->format_number ($fmt, (object)$orderDetails, $nrtype, $global, $padding); $data['invoice_number'] = $invoicenr; + return $data; } } } + + // Customizing the customer numbers requires VM >= 2.0.15b, earlier versions + // left out the & and thus didn't allow changing the user data + function plgVmOnUserStore(&$data) { + // Is order number customization enabled? + if ($this->params->get('customize_customer_number') && isset($data['customer_number_bycore']) && $data['customer_number_bycore']==1) { + $nrtype=2; /*customer-nr*/ + $fmt = $this->params->get ('customer_number_format', "#"); + $global = $this->params->get ('customer_number_global', 1); + $padding = $this->params->get ('customer_number_padding', 1); + $customernr = $this->format_number ($fmt, (object)$data, $nrtype, $global, $padding); + $data['customer_number'] = $customernr; + return $data; + } + } + } diff --git a/ordernumber.xml b/ordernumber.xml index 519ec37..bec61da 100644 --- a/ordernumber.xml +++ b/ordernumber.xml @@ -1,25 +1,23 @@ <?xml version="1.0" encoding="UTF-8" ?> -<install version="1.5" type="plugin" group="vmshopper" method="upgrade"> +<install version="1.6" type="plugin" group="vmshopper" method="upgrade"> <name>VMSHOPPER_ORDERNUMBER</name> - <creationDate>2012-11-13</creationDate> + <creationDate>2013-01-09</creationDate> <author>Reinhold Kainhofer</author> <authorEmail>reinhold@kainhofer.com</authorEmail> <authorUrl>http://www.kainhofer.com/</authorUrl> - <copyright>Copyright (C) 2012 Reinhold Kainhofer. All rights reserved.</copyright> + <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.5.0</version> - <releaseDate>2012-12-16</releaseDate> + <version>1.6.0</version> + <releaseDate>2013-01-09</releaseDate> <releaseType>Minor update</releaseType> - <downloadUrl>http://www.kainhofer.com/virtuemart-2-extensions/</downloadUrl> + <downloadUrl>http://www.kainhofer.com/virtuemart-2-extensions/vm2-ordernumber-plugin.html</downloadUrl> <description>VMSHOPPER_ORDERNUMBER_DESC</description> - <languages> - <language tag="en-GB">en-GB.plg_vmshopper_ordernumber.sys.ini</language> - <language tag="de-DE">de-DE.plg_vmshopper_ordernumber.sys.ini</language> - </languages> <files> <filename plugin="ordernumber">ordernumber.php</filename> + <filename>index.html</filename> + <folder>language</folder> </files> <config> <fields name="params"> @@ -55,6 +53,18 @@ <option value="1">PLG_ORDERNUMBER_COUNTER_GLOBAL</option> <option value="0">PLG_ORDERNUMBER_COUNTER_PERFORMAT</option> </field> + + <field name="customer_options" type="spacer" label="PLG_ORDERNUMBER_CUSTOMERNR" /> + <field name="customize_customer_number" type="radio" default="0" label="PLG_ORDERNUMBER_CUSTOMERNR_CUSTOMIZE" description="PLG_ORDERNUMBER_CUSTOMERNR_CUSTOMIZE_DESC"> + <option value="1">PLG_ORDERNUMBER_YES</option> + <option value="0">PLG_ORDERNUMBER_NO</option> + </field> + <field name="customer_number_format" type="text" default="#" label="PLG_ORDERNUMBER_CUSTOMERNR_FMT" description="PLG_ORDERNUMBER_CUSTOMERNR_FMT_DESC"/> + <field name="customer_number_padding" type="integer" default="5" label="PLG_ORDERNUMBER_CUSTOMERNR_PADDING" description="PLG_ORDERNUMBER_CUSTOMERNR_PADDING_DESC" first="1" last="10" step="1" /> + <field name="customer_number_global" type="radio" default="1" label="PLG_ORDERNUMBER_CUSTOMERNR_COUNTER" description="PLG_ORDERNUMBER_CUSTOMERNR_COUNTER_DESC"> + <option value="1">PLG_ORDERNUMBER_COUNTER_GLOBAL</option> + <option value="0">PLG_ORDERNUMBER_COUNTER_PERFORMAT</option> + </field> </fieldset> </fields> </config> diff --git a/releases/plg_vmshopper_ordernumber_v1.6.zip b/releases/plg_vmshopper_ordernumber_v1.6.zip new file mode 100644 index 0000000000000000000000000000000000000000..7dce92a88a8f4c09fd7838ca76a572f1cbd6a365 GIT binary patch literal 9366 zcmWIWW@Zs#U|`^2P+hF)WEjr7Gn0pbVTJ|+13!ZdLw-?8YEfQkZc=KIUO`4dXb2|* zv)GZh0U%sj!Og(P@`9Ox0Zi<b$}YbZ_Nn^Z$@&=qW|L%i*v#*?O<B^{D;y-PUbl4Z z=~Ln*j905%`K?R*|NTC9r&?7-al`K0y7ECfXMfu|*H_4%X+GW`6&>9#e^Bg?#D<f+ zvkP}@Ic)LpxK7VPX7z<f4<|nAtK?{$d?tr~Sslmw+WVz9gkPA<_kI#B=eF&=V{Jm| z!LPcXpU2nbD%Do}d&F8&cFX#<_3qnqWna80v%X(iUS8kYI^Q8yX|u{a<%_|2)y4NW zK2UdyUuKizuwvfdiph4_el_8XeE%c}-r8Kr^J|}@kJW})M;9jRZ!Oh=?b{D`U%Sok zzJ0er|KkO>v+mx#YnmQ+>C53rZ${U(kq>g-o0ZS{e4|v({?@H5+qy45CLUeB?YM5N z@%``h@7`y#Ex7PyW6rwfvV`^;p~Lr54lU+Lk~hgXG{f~yvfe)Pvxg4`-ZwdT;JDNc z!HPPbGlhSw^Gr=^{(SnVT+Q`sa_8YiC!WN=(da9Ad(C$CZ^r|N`49b>mAD|#PW^;W z{r|-Gf96(J=G0m2s<4)rr}&Wh7ki;nr*f=Y--Vv(OPsU0`2w>Z&P-!}XW=u$y-6iQ zx_xJI_d%17YKB(EN`Gf;XRx2Q`1ku8O<TAEEDHW`7C)HQY9?(RlhJM9ak}uBgq!ac z%LA5nA8peE52UEZR2?*O5sYy>k)C#fx!rfi%)J{~#T_ezio}YYl)W3@x*C2~+jBFA zsnW~Nb}CEEyQ9A~d+WJNQWEY9HSRi^oMwIT^rd9|9&twTZ;PI<w7t+Oyv0jKZE{4o zLvK&V#GvK=w)1XZ{HFbtt130jQo^&{!D!o;Z`r40ZOcwQR{0Wee?sN7_fEX28}>%> z{#j}8`^>(lau#=HA1&^<$@|ZcS1|8qpXI?hy_Gs|oI@@qZM2PCrKUNbb61rutNYst zS%JoF{sB=UjQe#Qd-tR%GF{2qss1F)Br^ZG>Z+g2f=l(!&lB~~zLLgov?@F=XHv#5 zKj)%*dD4qz?yf(*exXT_t&ViT%Edh#B1cj`ro@GCKc4t0Bunh~l&K4u_GI;cy5(AK zX6K^CmFn8g`OM~u*qqj_d1}*LCoa8SxALi{=t66bxR$szjb*j^^TZc^owb|oMpC!Y zimhxV@6;0|zujfKQMR1NHlF$HoddduH<jMH87K7FXv<zUt4A}Ygh^UOG3!3wb4_>O zV*Y26Pr0wj{ZnOlSfP`%%f;YJv5&8_{i2+Ni8Z{rt2}n|9#|eS?@z-ap6uvZDL?&V zm-$Ks?OuHS=JveZI;$rvXKi1VSDI*WG>=h**-*&xu7K+A1M_YcvToOTXehYR@Lk>S zKfCMe{x1qU`@F~c%1#&7@6H#G8r5{O-`TuDD?wA7X-$xaaFS`Em2$GGb=SWQ9(5)6 zq8bx>j{aNb^iH+c^8coJOw#@v^6fkN4nLmJo*FdiKu+HOy2m@_$=C2Lw%ED%_og4o z@6Y~o{Qu$Y?t{PQ_w}`_%iGPHH#a_}?$F8Sj&CMq)%{lveSSXcqr$4DDbsh<w-(Ah zxx0RKe@LDCotb63f7Y>T^R71fYM8ELzomGolm51sZ^O4IeJL&cVye0&Gy3WggYR-a zT?yBPHZi9~D*E+EXWVRD+0c`t;b}i(pSnqMV7qL^c00cfceU*7ct6dPcw$~46tIkC z^|WvYn~-A9yt%I|mL0v~V17YKAlT%l7gw<Lp6M+OHyxO-cQUl!;S~`%B2{92ucLeY zYQg^-nt3aJlr{g&tnxN<?J?QIa{BVgrJ`)-E}ZXucqKaJ`erGCp9w$bi7ht{R(|SY z%QTr|I@g=xBA!^;gDD^Hd$OCRXtixDG2)+dGj-RMIXZ`heoU8`tk-num@{w6VTFGp zuL6z!$<7v2v$vafYqQgN&WH|ehwaf4_reW|%nmsw#Op~c(diTJnPxF(^+}(f*Vgsu z#mU^dvoYgBdg2MOXT0$)GsDwt?9^v$?sw<%G3R=`iRJU&%{TaeHf)nTK5-ZKo+*8j zE=gRP{5u?t%06wj`Lw%4bzg|e)4rO|(>(90uJrd>aO<g|hW(1O`?)8pbQP`_xY#;- zVe9JYD=ZXjB{H=)J#CFLbV_76E`GU5@N3eK>}^Y*{%^adUGwZ{)$ZH_M?d6zD7#_b z@bIK1kA7cY!uv;mj>zzQ_y2wT@57zfGz2Fz%@+9@)p%plH7l7lTO=OLI&$#O%rlWI z%IDdehY6_FJvwT+aJtW@1wR8kVkb!^r%LA>R9{zg`SBg5qPVoDY(2u3$4{;Z=iYSm z<Nh0V2aX-g>#;nb@x}0X;os>lH6QXTU;H?uwbS>>tIl%43lX}LzWT<yw#H5WT3gW2 zr?YN#(Rn4yB^#$rZ(>`bJvHKmpweoGkVTiT&z;DzzQpNRL%?#DH%q6zD9sWLQ=Gg^ zwMg9g6W@+Goy=^mt4d;=ukF}Y70MI)b<^UwQx4|?jDJ0iy%h52>#r+Ivo?LyXxL{h zR(<$Wp3|%)X+c`Cf~^;)cF1P3_N|LtFu(B9L%$=lS-YM;sTVJ=dwBOizfyE;XhFi} zIZsb9?_ccq;D)(P`DMj8{~}Kb11Y(^I_wMQw5+|qZqw8iJHOt#u)b_te9wo|`HQDr z6Y%zaCiCftz+;^asXoU(Pv}0;vzTjD`2SzICRJ)LJkI`d-MV?|o4j|{OE+k$2|s$q zTT)bT$u+;(s_HG*Y`grr)qU{?B2$8U7yGR2Zm<kUpM5EGwS#3hOZmn<flu|hEpNo6 zt$w-nk=fFM;*Fn$xI*@cg$A>%?oX|Hc9LyP$E41Ao!+yT%<H}xI%mHd>q54D$5J%? zHqF@n((}@%%6BHaswS(v4}4Qp>7*;8&YigR+npKTHUAylGu8Xi<fQrM8>%Dp-fQW1 zi+(?FbyMB`^(l`}OPDzXKbW=AWcG%nb@%?+iu#8YZIw=8_1By|)y_n4?yIyud$-l! z7u;R2D5;Z~>0ju&_I8sw=9^B-tlF#7x6_oZ^KxSdpBBIF-lGiJ2PeM2?;zyyU47x3 z{*ct8{w$j6**$aa$tSgcIqbT<JNfj%*}{8G<QFODbK3rTvmi8ck_z`i@r&t#J>mxz zb8>s6C%OH;Z>DayseGZNH{-L`Wd{y?FVT|gp1E=Tynu|UKZ1Kh)x@L})Yoj@CY{iJ z#L!QLqrkjFJU}9fVJSzh+|(QOZtHGE{$H`bp6`0o15=rK^JEThz2=kdZ}>E5ZEn`} z4=-c?Z{febQ}NZV<))=`a(SM%FJr4d+|1*$Y5%*c0$!}gUq`K-9egJv%k*vPLBZSW zmE`JuHgLcAdcL(W@{gI4v)6%(4~kALKGMlOZxweehlXp#+VuGOTYK|%%P3pad^Qk^ zT<666_@d{AYZa>sA|9(U{f(M@G1@kjdvjck#SQEC>$g6Mv^TEgzhD)VvgPRg#K-G5 zZ45hQD>3h@|M^4%8~aG@J?m8RMULi7aW#5S^!~-7`Zn*@AcxGG8roMH&R&v^`f3#2 zBNlW}<M^fYk6BB#o_vd%s$6dNw@WE+p%GJ#pvax5M{7gM=BzyX=6UNabJJN>1?GLr zcYW)Z{UvLl-Q;^gY3)L%%L1jV11?`bbAMvg)UV511($BUS`oEev~+c--rD9Q{Q%Z` z|C%{>y>KpB@^zQUnM<cF78!=?t=l#2QK50Y%%xN9u}__TwJzVPs<3_Uh6;}5PJ4A8 zTdGNjSKfNr)_U-R@5`S3IXd5iCob?<S`v5u>*C*?8aKGKJ}sE`+WRW6(fhSE(<fch z-JLA@wRzQM8N-l0*X7EL?qB99X^;PJ^nN)@_}}{V#lcs6--#Mr+q>5;e=fU(pHI`? zDZf@-4O=g|b4##$=-wBeGfV&fpA&3+d)FG_m_lu#W*swiyVM&jj&fTk1$@vA{eFj0 z@Hod(*{J82?uthwJ-cX{lJhHK<r9~zDg6__h14gxFPjyvow;aD_RQQPhq*2-Iyyt` zfwkK~Z}uBE<Zk!%3i~eKdHK)2FUBFZ8<u&$TC{x17srMxGbAdln>>#xo{F$YJ*2_G z`}&c^G@%!J?VsN8TNH6YuHwl?riLd0+azAx@ZwSnzF4yK>HDp>R%|?G;PBts&F^a5 zdR_TYu1@{luKV{cIo)06v^F8!>+4_3Se`SymTNt7_3o%<z4j`9_2w+=9+#Y4&hRTD zKlUz-`F`~5jUW2nyB@ivK3=7=$V}<lOc~LPm$4Hzc(338Z)cHO-kD$bL-$=;YqUE4 z!xznWZ!K27JSC*cQM_lyf`(fj4)>Uw757<{uKw^YpkjH4=*PX9+fM&6WBqR17^}9` zZqxhjS4K;D6Jz}o<>fA?ys#HOeRbZ%#ywBsoT7w}{@if1{vR`<$1-uYrjvBl5e9Y^ z28MbO%pOZcZcZqu$8u@g+W-(o>#^L8h|YgxAyGST;xqe*d(&sOt6a!(+r4^1B%4OC z@6L|XYtmM8?L5MgJ=bEBY{vKN>x&CL8YW%%w$i5cM~%4r{5kqvf4?4Fp3uBgK_}zj zvYQPI?B35N9mqcT^UbLrvQ6vHwSPC`Y;oDr@|UTxhNqCb&E%5@L*wyCk!=r-iD!$o z&2WB@yfZD2+il_TiQNlNv0ORNH=%#-{N|V6FIL={t>ZR1FW+bm|Guwk+orBb-JyEi zV^vYC%Esc08F5m*%P#&nyv>VSQo?nWM7i1wmTb4!56nl!wa?^gM{6-w+bLanDEVuB zz3HtOqj>ivGlFi+2~O8d{joeXcYE|^k+hdPB$jMHaLC<n&(;#FUtBeBYM8Rj#ohL( z7Tnmtd8_Lci#Ee?rq8@(zFS}0gio6@NtKU9&+G~7#FIPHQ@sy;a>|OC#apa<HSl|T z@oM{hH)C!|EeK9!f4!pERC?Re|7ojbf_qr(EZQIaH7Z%Q<ROp80gDc&@U_n$q^L6Q z&XEpiyEA!B9>;XSZ-Ud0wKmEx$%@{pwx+i}(coQ@oXbDkXKt$wr!3wUdgjl=y?X6O zCrvg8J6HHqch}xbcUJL&$`4%uI-8DtmfjfU7`20y`>ezA565|~FU-x{;q_6kztrQw zqxLn=nUca?G?|Or7ai!Husq^SUW#wz(REX9G>LvZWt;ShOCUXzU+d8c@eLc|4kXN6 z_->-Y>Dmi?GZs#Is~d4>;srkir!776tGnJA<{td$yWb_R%C_;qs#E)VT2kzO^6Ou+ zl3W=n`Bb&V@xdd}t`#{4-9nGLrrXW!WxM|W%cB*4a<U%?JIW|4XIkF1yP+Vpa@(v6 zH_v}xZN61^S!;;0`(uOS1tm(ZIt;GSdoO!M#;lR}KJiM5*H;(O9WqBf9)A;5t}B1N z*<s!Lp8Hxq_e!0~GFm-BbNN&$jju9F=5k)UGKD<e9Bn%BJ1^{;MPB*t>xb*k+8LMJ z(q_;;)Vgj`jK*2c&cjcxRYrf**zNv>HA?Pm`{sK~)=dij!d<#%^Ot<L`?t*Xr)}|D ze&>6ZiR6~_ts?8@{_vdTta2o*uy&bl@9oPk@83<|F=<`-zsO~(*|#s*{W){_PwUZ} z?q(_LpIZG~Ip@pVg2K~*4~+g>*Zrsoca7P4|4oDS?v)wSS)`Z6b)5@2|MkQ37rQQ7 z7q594bzU~7^6D)qE1{2WZP7DNUpDe)zunonZSl&eWYwIrE4N*L!~N{mx~jb=%NpwE z-rTl*;d8(3O*YwQw=@5_J)=N<rQh4fZ?3=lQfdGDto8bDG5xo$uFVZP?sTui`|ZWb zTg&EsTh8Qsl`WL*ddZ5vZrZx9isz=iuDp_X;Ps3v|K|DazH)h9^p$ko*;YIi+;*i; z)*aZiVL|@0`I?{fg||(u^$NNEAE`V!Q&8x*EKI0VhJk@Wo`HdZi$R7VGcP5zLNB8P zT9jPqULKIX<!u03QL;I(<YPHsCr?4>35}CyH*VHEsdLhE>*kB?7h)I?<<)|jnob>8 z8(6g285q)K7#PeLWEgT1^U_Nb(^K_RQgvNiA*5bGPI`P<ZgEC_K|yL!Jn|q+ab>Yy zW?m+^Sku}3Hoy(jEq5cM^QAn+>gIX;<aa;UywSzE=aa!}1|hcFiAj1!+cv+>5D_i8 z82kF2R!AtX@V_(r&g7rCyzgiK+m)-H-AnM<!*4v1r*>tr{r#O2`U~!BIobwB9m(-p zs9dYn?Q18N<It#HINytPu?D9^{qJYWSB}2eo#MDcG2EU}W3RpLLEcmwk%|2CJ9kP1 zMK(l<G}<nA2y%To;}@%QeQ(arMFLs2R@!3flRXt5csia~Ah9!il|;`XrxlMm*4-*U zy87MLh1uM`56^5$opW%4YY5}=E9|-p{2c|SFt{AN`*!Jf?FtWu=X0;!Hvhi%-g3X~ z)rFte7GK`6BlG^&bNYD;nB0%$@$b53G($}&tHx!DR|P}z!G+U!wyHFK`jl~B;mMDf z$_WKqgzPokuOA8dv{+YYpQ&C|sq(Ue7ivr=JEyu#+Q(LNiO2G3<%huM-ipbK;+4ea zGJN-W)v~SQN&wTL<(+}^KRNBx?+*R_@f+`r`qcTojxXN}u9e|uy?(D{)`dBY=1q$q zA3b={_;}sVr5i7Z8>iOSic00m9QZMT$7#u)rS>d|c)mX=KONhU-02|Ix$rE5l== z)U9c^B-&?XoW3UW*Gg^D#5$Myaub!Hg86n%=QFh2CuO-URsJY!$<e!Q%3<-(0>QIh zt!(3*Y`5%{@-D&8UWPW-B7q66=YJG-%&%jaF<bG;x+N9A`osUoEELTW@H+KNEp|;V zW2fJ_Q@2)K5NC6p8vJ_0rfF9<eOrBBbK;71`T0RJXRz&`7~u4d*=B<xQ~UfK%C0I= z>Uz0L^=zGGlMN2@yqfkv;+X2EegR|N!^{6K%2lh9XgIMWp{bGO-xuf23eipe`|>{= z7ZCobb;o&P&Mv;HTPYG7B)sHp$`4<@@<-Eid1T)_&c_8&Rl12Paz`Z>dA#XOI-%&i zQ}fM{6&t2CL^qwQSoCt)?Wk`*4|-`^3EVl~!B%ThC3hxV=w0`YgG|d#o2;vQ+L8Nb z9(R>Tn@ZP|qs!M$k&!AnwL#A}w#u<D+%MR&Bdj-6c>&|w;JTn2s-J}aCdW5cO!={1 z>C3FFH9@~mm6je44Hf=XXT%{oP3lW_-ru`Qx_*42@7^)Iofc|!K~;b9u7@3mmt0#E z=&`}`t+v>EW~s#)S?gqVr}FIW<CoLee1GSx?-SS``F{Rz@Aq-WLJ8%vmK?KZv!2Xa zwz{xt)19yHSJu@05{_Qla`R%T8)skK`Hhy#BLtRN&oJ42<a=RPaIxLlb>YSR8s9=$ z=g*bW>b7fX?6}hL!E0sKo;$|^PhZ>ibI*ix9O>TY;=>P`UD-C*O?;`ktgTGtJwwyS z%|B-wn(vKEZY(-m$Nt$z|LpSFX^+)^#0xLA>=fU+qgQxB<%UPrC(g<`&B@+g^4VMM z`j5NZl@_~qbr@Q7f2)1o!=LQ)<gkR%-Urtv{xZ-DHk)Pql545pyDG0kFAVa`j@bH^ zZ1PAd&t86`IIB71(ahgHiSsVK;Hk2>^z7mM$`#Ka>ha$#z2<8DX6EZpE4q^HSVAUB zT%Xcbab(efiMEGl86Md<DQk{iVbhVF*G~ObNwQLE?4A+Ldqr{zXTn>#u)gWj79aoV zWhzium=h?ioV9mS`)A{K-WpD#_Ith`D?GV5Y}eegdI86;UVjv#C$yy|rC0ZnS>VyV z&)?2|_x0+jbD!6D&x@?AQ+A*I{+8_LRlQS<CvUm8GyDFd?^jEo?<tG5+|}hW-$k+} zjlJ;xt~YnKWNmMI%X)aB?B8D>zNBZcou4T3a*xTuO8ejiySL3w*lE9B^>b2)-nZ3~ zmx5R2f8BjAclp(t9R^=kw{rYuDxZDB?#pM}kHVX~&n;eZ^2(dmZLwbrR?nItyur66 z(r?4!2d$C}G3AC&Ig4liW@+x|G(G)h-|ElYvkvjG>PK&%y12(Sf8)1z3%0n0&hhN` zx8IRDZKdW8hFJk;%RQn)%-3$dTR6QgQ%d6eQpfs#AMRX_*J-`nsiMWdD8F~kQvZa> z{4M(@dcDlz@^T4el;e8NTB5yZdbUCJnwi{>W@a9bKYQ)l?(gqzupQrf`rHN4m;aaj z%h_yf<6pjWVRW|1thd_9A*ZiME=_M<`8q63qw<=q=47AmEoyCQi__lta+)m;*mdP; ztb0t5ee5;v3nAy$>6^S|e96h$pH^n9E1heum9#cw$Hv(=PqrH_-r;w~yyGU5q1dG* zt=ZdJeLTvu_uiX+OllFYpPJJv-G(xgn-%jWzGM1g^_Tl&j;qbz3Ag0_*(X|E6>Q8D zInD5Ol9=_$@ZM_9P2q31ylA^)ZEd_%Y}x*kb5h#3-Q4%y<hA(cs=apBd7ba(<d`0K zePuV(oP$Z{CGw|!dc_#`Vu$48Qr&sV^_4xwZ|+3xo4#kKKjVFif96^bxo_94>d4>l z^Yrw>_RUKl<~*JLMAsu;V69W_*YFpz7Uz>Ts9)Hey2t9&bdx(RKY!JGy-};PJaIku zPS=N2`*+MA&wj2~?$MY09;|Tx$!BrrpZ}4n=GxhsPTPA|1RiE%V5pKttC~~ublsiw z!6cDY^SW(s1J-ZDXePXkh|ZU?6sgNw@~3_A7exib3k&StENgIST#~Vq)1&P6s#Rxt z64#u&v009P%Aa4h-(q&CJA7MsDNpW1&)d(k^M6}@W|Z5Vn&Glg$gX<Ph3R}#mzvGz zP78i8(SD&(%Yp8+p7^+$hBl6Alg`Gl?sSt|@aNq!9_Ld#v~Ae`Df~+GN)>!HkNsH; z$E3E9b1Q?de35N=s>m9?^1-%{C>^n*lKovy=e*+fh)zpu3@@4b{$TC<g(dbcGIq@i z5Xs}!dCary%woj?FWCSlH4&#KnTD1R2KzSGF>`Z1NZwyv`SFHq?JIt^wGY4l+i+9r zo7^t>Xy+A&rcS%<rP6;?&q2%lq2DHF)h|6lLb5Tk4u9_D^h!yUz1b8J-{2o85r1*o zlm#qhXZ()5xglk3ojUzhjh2dy(MqLP!YdcV%sdfv_D@V)!_U<gIeZJFs<u?wipE58 zuQILUj`5gZaea03LGI)C_DJpyDgM&QWXSq-T~5D~zzi=h-M#!>|3W&{B<G7JJPh(& zxG3ap?$Vb18WRuah?tlN7(J3X->9p!F2F>0x!s>qKNV%+{yOg!0sb<kO;Q5KI#@0V zx4B(9plqg9w27rnF4a9KXx)bi;un>oPVK2W-Sp5(be_7{tbDGfh6-OJ^)tpZEN8b| zNqUiElhSoI^WU~bXU-joSXPx>5)`;8EYL64v-3!|)ic#ZwkpA*_XiV=_XOG9(^oud zmim(+^Jis{yzbL?6J}jCy~Y0^@KHwO{1qY@Yc$zfeGgAK@w6_cU8g*t@NMXfbsc4* zOT;hAFZgrMsDESmT=u%ntB;8MTlUAQ;t~5lK8ufQ546wWJLvmoPg>_a*QHBqUo^aw z=oh)Wb#A2H-!{dqtmS179zDJMP{nP^huOETiN3nNuZYL#&-{n{XYCICmksRmu#zt* zSaH@MQpJwRGH$Qoo|Yy_Hi7fv^B;ff{AbfR-MfC$^^dOuT7N!cnYL4d<H9nv+Y+C% zUOx-mF7-U+8^8Kz^EamFizCbY(q?v6>Yd&tzJq1;5l)-*DZ!m#s+^ir&#>KAopj?P z@2hLmnFL<1WO%>k{^#TOIkw9v-agw?zizEIpL(2~=AzhG7x}Y>9_MoxCv2>fe9Xu% z>yp9W@i^hIaGJu~#?b!hmkvqoa*F;f^?JsKW{>Dx{%PI2<0J&)bgyq|`+X;R);xt= zsYlyX_QYQP{VmtWu={-Kcf+}UL3g;>3LYBWHZ}KNxKZx-->%O*@9JESet7$A=LK0I zEx$jZ->z^k2;X*veJAH<o4G%PdgWIvF89e(oHg~jgV}|gmi1FF{`ebXvh3P|4^MsO zsEef-#NTQ*4(!Qv?^==Z^w7s_t_(kiJ|DG7=OhDtK70^!W0eqlu%5|;>q9`pL9?2Z zU&4Rw6uRQGSu#=kJ%{vUhHy64oI|DB_DAyscRQr+*m*;kJ;g15q0@n>B~g3hq-E<; znAzKcGUt_^4!e2CEVR75V&|pb<=5`$M?ZVC@$u}Bk9K{_R}A%HapmnPQO!A(ZJ`<y z$7A(fTKLfOYaaX@^D`^9?!Ni@_1<|myl=j+|8nfd|9zMLN4yVN|IXG>@t)k2FA99> z<$n{m+g)3r9J0XVu=}O9>~fE)+RKjbpGw-#_FQRn^Muq3iOIL*o^c-ie(Z3@o%h@J zZ!vkBwMpc)!0`#`%Atpse&aV-%yzA5X-9(N2F6Xn8R^W{g1pcDn)p;Mc3)V#MccB( zOUYk!{=?eqvf=CBnH^h@yuNqIvqM)``~O<>Yuc^(o4wyP*e-9n(c|{*Mw-5S+~sKk z5myRLj31@H5}I@9jD_Dbjzd41w!Y(j85hwKRv6a8df3b5n%m*m>#J&hrtRHpc6QRV zQ_80nuojABX9q6dptj+li$+gHPd@L-q{%ZpJrYu@&uKJQZNB;LZuZSx7QcT_oL|<u z>qv&gZ&y`SiJ6n!t}HH_llX_l_@kVNp`-ipz}FvUcy*qO)H#w_63H_6XwqEOb(7|K zvwnRM63O^1`b)s#<K@4+8@!+0lH4F5_b8_2o7w`ogSKmCof9h6P1jz2tar<#V#Zlh z&wXgyzoF3Up7hP;Um0K0i<LJp3$<}?x!QQ5Pjeps8<9sGpC&U~AGK58BK%BZ-mJ&_ zZq)sJmYI{?BEHyqch0-DW-;sS&+UtU^8ME0yVY;DORv?ro>yCAoiMrQ)r80!YG(=s z)Mum#|ChPE=EwW3=QNpQG8g)ucph5h!*|c}Uv}EVkT;({eegPQJ>`+?l>fzr+Pr(V zx~<;$Rq}_!m-R3BTK|9h{zTc)&x0Xa=G;k!Z1Wqlnf!zwolx1p`l~6a&y#ug^ZK(k z6FlqUlp=&bo6bxSe`Y_E>mMVcH=8$0(`gw}Z&?_*H;dM7UccpSfX7yh`jEJ8b3U3y zlE@Z8y3J_TZQSxUfSp|H3h-G6ZUpF~S+|88>lm5jm~kz<kYE4-Mg|6kEsY=+@(2KU z83rq483x)YM1VKKP|UGWWJ5RcFrcjM0FRWiGB97lY_lL6ia9`nY$%f;1Ilm-D+4oV zxCD<QF$YAD%}WwwAbWU(m4O*FJc7q=%oZQA-G3#J?1n@-m?WnC$I8GAYX9M}8#C)5 z+ijqLWH)kBV`X3lWh6WXV`dd(gJ&WejG1v*8JIyC2aoZXSp(U44n-t)gF_1?qp&hC agE9(+@vLm1B+kLW!NAGPz)-FT;sF34GTt!& literal 0 HcmV?d00001 -- GitLab