From 25b4a17e40d269a4f45f21a9394af14355634279 Mon Sep 17 00:00:00 2001 From: Kocmonavtik <61938582+Kocmonavtik@users.noreply.github.com> Date: Tue, 22 Aug 2023 13:09:20 +0300 Subject: [PATCH] =?UTF-8?q?ref=20#91040=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=20=D1=81=20=D0=BF=D1=80=D0=B8=D0=B7=D0=BD=D0=B0=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=20"=D0=9F=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D0=B0=D0=BD"=20(?= =?UTF-8?q?#303)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 + .../classes/general/CustomerBuilder.php | 9 + .../classes/general/Model/Customer.php | 14 + .../classes/general/RCrmActions.php | 8 +- .../classes/general/config/objects.xml | 1 + .../classes/general/config/retailcrm.json | 7 +- .../classes/general/events/RetailCrmEvent.php | 66 +++++ .../general/history/RetailCrmHistory_v5.php | 54 +++- .../general/services/RetailCrmService.php | 24 ++ .../classes/general/user/RetailCrmUser.php | 19 +- intaro.retailcrm/description.ru | 2 +- .../templates/.default/lang/ru/template.php | 1 + .../templates/.default/template.php | 13 + .../.default_subscribe/.parameters.php | 10 + .../images/sec-unlocked.png | Bin 0 -> 574 bytes .../.default_subscribe/images/sec.png | Bin 0 -> 566 bytes .../lang/en/.parameters.php | 3 + .../.default_subscribe/lang/en/template.php | 64 ++++ .../lang/ru/.parameters.php | 3 + .../.default_subscribe/lang/ru/template.php | 64 ++++ .../templates/.default_subscribe/style.css | 5 + .../.default_subscribe/style.min.css | 1 + .../templates/.default_subscribe/template.php | 279 ++++++++++++++++++ .../templates/.default/account.php | 90 ++++++ .../.default/images/sec-unlocked.png | Bin 0 -> 574 bytes .../main.profile/.default/images/sec.png | Bin 0 -> 566 bytes .../.default/lang/en/template.php | 18 ++ .../.default/lang/ru/template.php | 18 ++ .../bitrix/main.profile/.default/script.js | 33 +++ .../main.profile/.default/script.map.js | 1 + .../main.profile/.default/script.min.js | 2 + .../bitrix/main.profile/.default/style.css | 14 + .../main.profile/.default/style.min.css | 1 + .../bitrix/main.profile/.default/template.php | 163 ++++++++++ .../templates/.default/images/wt_black.png | Bin 0 -> 8862 bytes .../templates/.default/images/wt_blue.png | Bin 0 -> 28678 bytes .../templates/.default/images/wt_green.png | Bin 0 -> 26562 bytes .../templates/.default/images/wt_red.png | Bin 0 -> 43271 bytes .../templates/.default/images/wt_yellow.png | Bin 0 -> 33409 bytes .../templates/.default/index.php | 133 +++++++++ .../templates/.default/lang/en/account.php | 6 + .../templates/.default/lang/en/index.php | 13 + .../.default/lang/en/order_cancel.php | 5 + .../.default/lang/en/order_detail.php | 5 + .../templates/.default/lang/en/order_list.php | 4 + .../templates/.default/lang/en/orders.php | 4 + .../templates/.default/lang/en/private.php | 5 + .../templates/.default/lang/en/profile.php | 5 + .../.default/lang/en/profile_detail.php | 5 + .../.default/lang/en/profile_list.php | 5 + .../templates/.default/lang/en/subscribe.php | 6 + .../templates/.default/lang/en/template.php | 13 + .../templates/.default/lang/ru/account.php | 5 + .../templates/.default/lang/ru/index.php | 14 + .../.default/lang/ru/order_cancel.php | 4 + .../.default/lang/ru/order_detail.php | 4 + .../templates/.default/lang/ru/order_list.php | 3 + .../templates/.default/lang/ru/orders.php | 3 + .../templates/.default/lang/ru/private.php | 5 + .../templates/.default/lang/ru/profile.php | 4 + .../.default/lang/ru/profile_detail.php | 4 + .../.default/lang/ru/profile_list.php | 4 + .../templates/.default/lang/ru/subscribe.php | 5 + .../templates/.default/lang/ru/template.php | 14 + .../templates/.default/order_cancel.php | 40 +++ .../templates/.default/order_detail.php | 56 ++++ .../templates/.default/orders.php | 62 ++++ .../templates/.default/private.php | 119 ++++++++ .../templates/.default/profile.php | 42 +++ .../templates/.default/profile_detail.php | 35 +++ .../templates/.default/style.css | 49 +++ .../templates/.default/style.min.css | 1 + .../templates/.default/subscribe.php | 31 ++ .../templates/.default/template.php | 132 +++++++++ .../install/export/sub-register/index.php | 21 ++ intaro.retailcrm/install/index.php | 15 +- intaro.retailcrm/install/version.php | 4 +- .../general/services/RetailCrmService.php | 4 + intaro.retailcrm/lang/en/install/index.php | 1 + .../general/services/RetailCrmService.php | 4 + intaro.retailcrm/lang/ru/install/index.php | 1 + .../apiclient/traits/customerstrait.php | 15 + .../component/builder/api/customerbuilder.php | 2 +- intaro.retailcrm/lib/component/constants.php | 1 - .../lib/component/handlers/eventshandlers.php | 47 --- ...yinstallertrait.php => installertrait.php} | 102 ++++--- intaro.retailcrm/lib/model/bitrix/user.php | 28 ++ intaro.retailcrm/updater.php | 101 +++++++ 88 files changed, 2064 insertions(+), 117 deletions(-) create mode 100644 intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/.parameters.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/images/sec-unlocked.png create mode 100644 intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/images/sec.png create mode 100644 intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/en/.parameters.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/en/template.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/ru/.parameters.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/ru/template.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/style.css create mode 100644 intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/style.min.css create mode 100644 intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/template.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/account.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/images/sec-unlocked.png create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/images/sec.png create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/lang/en/template.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/lang/ru/template.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/script.js create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/script.map.js create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/script.min.js create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/style.css create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/style.min.css create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/template.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/images/wt_black.png create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/images/wt_blue.png create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/images/wt_green.png create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/images/wt_red.png create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/images/wt_yellow.png create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/index.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/account.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/index.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_cancel.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_detail.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_list.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/orders.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/private.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile_detail.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile_list.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/subscribe.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/template.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/account.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/index.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/order_cancel.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/order_detail.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/order_list.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/orders.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/private.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/profile.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/profile_detail.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/profile_list.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/subscribe.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/template.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/order_cancel.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/order_detail.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/orders.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/private.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/profile.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/profile_detail.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/style.css create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/style.min.css create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/subscribe.php create mode 100644 intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/template.php create mode 100644 intaro.retailcrm/install/export/sub-register/index.php create mode 100644 intaro.retailcrm/lang/en/classes/general/services/RetailCrmService.php create mode 100644 intaro.retailcrm/lang/ru/classes/general/services/RetailCrmService.php rename intaro.retailcrm/lib/component/installer/{loyaltyinstallertrait.php => installertrait.php} (75%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 323f2d44..1c5cfe0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 2023-08-22 v.6.4.0 +- Добавлена функция подписки на рекламно-информационные рассылки + ## 2023-07-25 v.6.3.20 - Исправлена ошибка некорректного вывода информации о программе лояльности в личном кабинете клиента diff --git a/intaro.retailcrm/classes/general/CustomerBuilder.php b/intaro.retailcrm/classes/general/CustomerBuilder.php index 5f4ce2e4..3f4b5d38 100644 --- a/intaro.retailcrm/classes/general/CustomerBuilder.php +++ b/intaro.retailcrm/classes/general/CustomerBuilder.php @@ -200,6 +200,15 @@ class CustomerBuilder extends AbstractBuilder implements RetailcrmBuilderInterfa if (isset($this->dataCrm['address'])) { $this->buildAddress(); } + + // клиент считается подписанным при значении равном null + if (array_key_exists('emailMarketingUnsubscribedAt', $this->dataCrm)) { + if (empty($this->dataCrm['emailMarketingUnsubscribedAt'])) { + $this->customer->setSubscribe('Y'); + } else { + $this->customer->setSubscribe('N'); + } + } } public function buildPassword() diff --git a/intaro.retailcrm/classes/general/Model/Customer.php b/intaro.retailcrm/classes/general/Model/Customer.php index 76ac73b9..9cfec5be 100644 --- a/intaro.retailcrm/classes/general/Model/Customer.php +++ b/intaro.retailcrm/classes/general/Model/Customer.php @@ -47,6 +47,9 @@ class Customer extends BaseModel /**@var string $PERSONAL_GENDER */ protected $PERSONAL_GENDER; + /**@var string $UF_SUBSCRIBE_USER_EMAIL */ + protected $UF_SUBSCRIBE_USER_EMAIL; + /** * @param string $EMAIL * @return $this @@ -200,4 +203,15 @@ class Customer extends BaseModel return $this; } + + /** + * @param string $UF_SUBSCRIBE_USER_EMAIL + * @return $this + */ + public function setSubscribe($UF_SUBSCRIBE_USER_EMAIL) + { + $this->UF_SUBSCRIBE_USER_EMAIL = $UF_SUBSCRIBE_USER_EMAIL; + + return $this; + } } diff --git a/intaro.retailcrm/classes/general/RCrmActions.php b/intaro.retailcrm/classes/general/RCrmActions.php index 11c7050f..8b45346a 100644 --- a/intaro.retailcrm/classes/general/RCrmActions.php +++ b/intaro.retailcrm/classes/general/RCrmActions.php @@ -237,12 +237,12 @@ class RCrmActions RetailCrmHistory::orderHistory(); self::uploadOrdersAgent(); } catch (\Throwable $exception) { - RCrmActions::eventLog( - 'RCrmActions', - 'orderAgent', + Logger::getInstance()->write( + 'Fail orderAgent:' . PHP_EOL . $exception->getMessage() . PHP_EOL . 'File: ' . $exception->getFile() . PHP_EOL . - 'Line: ' . $exception->getLine() . PHP_EOL + 'Line: ' . $exception->getLine() . PHP_EOL, + 'orderAgent' ); } diff --git a/intaro.retailcrm/classes/general/config/objects.xml b/intaro.retailcrm/classes/general/config/objects.xml index 82210e9a..4b4ac958 100644 --- a/intaro.retailcrm/classes/general/config/objects.xml +++ b/intaro.retailcrm/classes/general/config/objects.xml @@ -15,6 +15,7 @@ cumulativeDiscount personalDiscount discountCardNumber + emailMarketingUnsubscribedAt index countryIso diff --git a/intaro.retailcrm/classes/general/config/retailcrm.json b/intaro.retailcrm/classes/general/config/retailcrm.json index a0708826..af57234e 100644 --- a/intaro.retailcrm/classes/general/config/retailcrm.json +++ b/intaro.retailcrm/classes/general/config/retailcrm.json @@ -81,12 +81,7 @@ "default": false }, "subscribed": { - "type": "bool", - "default": false - }, - "subscribed": { - "type": "bool", - "default": false + "type": "string" }, "commentary": { "type": "string" diff --git a/intaro.retailcrm/classes/general/events/RetailCrmEvent.php b/intaro.retailcrm/classes/general/events/RetailCrmEvent.php index a3d10bb7..87b24255 100644 --- a/intaro.retailcrm/classes/general/events/RetailCrmEvent.php +++ b/intaro.retailcrm/classes/general/events/RetailCrmEvent.php @@ -1,6 +1,10 @@ 0) { + $user = UserRepository::getById($arFields['USER_ID']); + + if (isset($_POST['REGISTER']['PERSONAL_PHONE'])) { + $phone = htmlspecialchars($_POST['REGISTER']['PERSONAL_PHONE']); + + if ($user !== null) { + $user->setPersonalPhone($phone); + $user->save(); + } + + $arFields['PERSONAL_PHONE'] = $phone; + } + + /* @var CustomerService $customerService */ + $customerService = ServiceLocator::get(CustomerService::class); + $customer = $customerService->createModel($arFields['USER_ID']); + + $customerService->createOrUpdateCustomer($customer); + + RetailCrmService::writeLogsSubscribe($arFields); + + //Если пользователь выразил желание зарегистрироваться в ПЛ и согласился со всеми правилами + if ((int) $arFields['UF_REG_IN_PL_INTARO'] === 1 + && (int) $arFields['UF_AGREE_PL_INTARO'] === 1 + && (int) $arFields['UF_PD_PROC_PL_INTARO'] === 1 + ) { + $phone = $arFields['PERSONAL_PHONE'] ?? ''; + $card = $arFields['UF_CARD_NUM_INTARO'] ?? ''; + $customerId = (string) $arFields['USER_ID']; + + /** @var LoyaltyAccountService $service */ + $service = ServiceLocator::get(LoyaltyAccountService::class); + $createResponse = $service->createLoyaltyAccount($phone, $card, $customerId); + + $service->activateLpUserInBitrix($createResponse, $arFields['USER_ID']); + } + } + } + + /** + * @param $arFields + * + * @return void + * @throws InvalidArgumentException + */ + public static function OnAfterUserAdd($arFields) + { + RetailCrmService::writeLogsSubscribe($arFields); + } + /** * @return bool */ diff --git a/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php b/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php index f779679a..3fe712e9 100644 --- a/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php +++ b/intaro.retailcrm/classes/general/history/RetailCrmHistory_v5.php @@ -155,9 +155,8 @@ class RetailCrmHistory if ($registerNewUser === true) { $customerBuilder->buildPassword(); - $registeredUserID = $newUser->Add( - $customerBuilder->getCustomer()->getObjectToArray() - ); + + $registeredUserID = $newUser->Add(self::getDataUser($customerBuilder)); if ($registeredUserID === false) { RCrmActions::eventLog( @@ -198,7 +197,9 @@ class RetailCrmHistory ); } - $u = $newUser->Update($customer['externalId'], $customerBuilder->getCustomer()->getObjectToArray()); + $customerArray = $customerBuilder->getCustomer()->getObjectToArray(); + $u = $newUser->Update($customer['externalId'], self::convertBooleanFields($customerArray)); + if (!$u) { RCrmActions::eventLog( 'RetailCrmHistory::customerHistory', @@ -457,9 +458,13 @@ class RetailCrmHistory $corporateCustomerBuilder->setCorporateContact($userData); $newUser = new CUser(); - $registeredUserID = $newUser->Add( - $corporateCustomerBuilder->getCustomer()->getObjectToArray() - ); + $customerArray = $corporateCustomerBuilder->getCustomer()->getObjectToArray(); + + if (!array_key_exists('UF_SUBSCRIBE_USER_EMAIL', $customerArray)) { + $customerArray['UF_SUBSCRIBE_USER_EMAIL'] = 'Y'; + } + + $registeredUserID = $newUser->Add(self::convertBooleanFields($customerArray)); if ($registeredUserID === false) { RCrmActions::eventLog( @@ -921,9 +926,8 @@ class RetailCrmHistory } if ($registerNewUser === true) { - $registeredUserID = $newUser->Add( - $customerBuilder->getCustomer()->getObjectToArray() - ); + $registeredUserID = $newUser->Add(self::getDataUser($customerBuilder)); + if ($registeredUserID === false) { RCrmActions::eventLog( 'RetailCrmHistory::orderHistory', @@ -2088,4 +2092,34 @@ class RetailCrmHistory ); } } + + /** + * @param array $array + * @return array + */ + public static function convertBooleanFields($array) + { + foreach ($array as $key => $value) { + if ($value === 'N') { + $array[$key] = false; + } + } + + return $array; + } + + /** + * @param $customerBuilder + * @return array + */ + private static function getDataUser($customerBuilder) + { + $customerArray = $customerBuilder->getCustomer()->getObjectToArray(); + + if (!array_key_exists('UF_SUBSCRIBE_USER_EMAIL', $customerArray)) { + $customerArray['UF_SUBSCRIBE_USER_EMAIL'] = 'Y'; + } + + return self::convertBooleanFields($customerArray); + } } diff --git a/intaro.retailcrm/classes/general/services/RetailCrmService.php b/intaro.retailcrm/classes/general/services/RetailCrmService.php index d889cffa..58081426 100644 --- a/intaro.retailcrm/classes/general/services/RetailCrmService.php +++ b/intaro.retailcrm/classes/general/services/RetailCrmService.php @@ -154,4 +154,28 @@ class RetailCrmService return $result; } + + /** + * @param array $arFields + * @return void + */ + public static function writeLogsSubscribe(array $arFields): void + { + if (array_key_exists('UF_SUBSCRIBE_USER_EMAIL', $arFields)) { + $actionSub = GetMessage('SUBSCRIBED_USER'); + $fileSub = 'subscribe'; + + if (empty($arFields['UF_SUBSCRIBE_USER_EMAIL'])) { + $actionSub = GetMessage('UNSUBSCRIBED_USER'); + $fileSub = 'unSubscribe'; + } + + $id = $arFields['ID'] ?? $arFields['USER_ID']; + + Logger::getInstance()->write( + $actionSub . ' (' . $id . ')', + $fileSub + ); + } + } } diff --git a/intaro.retailcrm/classes/general/user/RetailCrmUser.php b/intaro.retailcrm/classes/general/user/RetailCrmUser.php index 61019bdf..2572e228 100644 --- a/intaro.retailcrm/classes/general/user/RetailCrmUser.php +++ b/intaro.retailcrm/classes/general/user/RetailCrmUser.php @@ -27,7 +27,6 @@ class RetailCrmUser $customer = self::getSimpleCustomer($arFields); $customer['createdAt'] = new \DateTime($arFields['DATE_REGISTER']); - $customer['subscribed'] = false; $customer['contragent'] = ['contragentType' => $contragentType]; if ($send && isset($_COOKIE['_rc']) && $_COOKIE['_rc'] != '') { @@ -49,6 +48,10 @@ class RetailCrmUser $normalizer = new RestNormalizer(); $customer = $normalizer->normalize($customer, 'customers'); + if (empty($arFields['UF_SUBSCRIBE_USER_EMAIL'])) { + $customer['subscribed'] = false; + } + Logger::getInstance()->write($customer, 'customerSend'); if ( @@ -90,6 +93,7 @@ class RetailCrmUser if ($found) { $normalizer = new RestNormalizer(); $customer = $normalizer->normalize($customer, 'customers'); + $customer = self::getBooleanFields($customer, $arFields); if (function_exists('retailCrmBeforeCustomerSend')) { $newResCustomer = retailCrmBeforeCustomerSend($customer); @@ -133,4 +137,17 @@ class RetailCrmUser return $customer; } + + private static function getBooleanFields($customer, $arFields) + { + if (isset($arFields['UF_SUBSCRIBE_USER_EMAIL'])) { + if ($arFields['UF_SUBSCRIBE_USER_EMAIL'] === "1") { + $customer['subscribed'] = true; + } else { + $customer['subscribed'] = false; + } + } + + return $customer; + } } diff --git a/intaro.retailcrm/description.ru b/intaro.retailcrm/description.ru index 38d0a104..58155e93 100644 --- a/intaro.retailcrm/description.ru +++ b/intaro.retailcrm/description.ru @@ -1 +1 @@ -- Исправлена ошибка некорректного вывода информации о программе лояльности в личном кабинете клиента \ No newline at end of file +- Добавлена функция подписки на рекламно-информационные рассылки diff --git a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default/lang/ru/template.php b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default/lang/ru/template.php index 69faad47..fb2bdee2 100644 --- a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default/lang/ru/template.php +++ b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default/lang/ru/template.php @@ -81,3 +81,4 @@ $MESS["SEC"] = "сек."; $MESS["RESEND_SMS"] = "Отправить смс повторно"; $MESS["RESEND_POSSIBLE"] = "Повторная отправка смс возможна через"; $MESS["LOYALTY_CONNECTION_ERROR"] = "Возникли проблемы с подключением к удаленному серверу. Попробуйте перезагрузить страницу."; +$MESS["SUBSCRIBE_EMAIL"] = "Согласен на рекламно-информационные рассылки"; diff --git a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default/template.php b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default/template.php index 4ae8931c..7f0a9e74 100644 --- a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default/template.php +++ b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default/template.php @@ -540,6 +540,19 @@ if ($arResult["LOYALTY_CONNECTION_ERROR"] === true) { :* + + + + +
+
+ +
+
+ + array( + "NAME" => GetMessage("USER_PROPERTY_NAME"), + "TYPE" => "STRING", + "DEFAULT" => "", + ), +); +?> \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/images/sec-unlocked.png b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/images/sec-unlocked.png new file mode 100644 index 0000000000000000000000000000000000000000..b3ea2911db5830041a5b011015476bef2b3ec59c GIT binary patch literal 574 zcmV-E0>S->P)b*LXMW?!?8ST2_XUDxB%ZfY^C zs86%n=qqIS6f`M72Tb0AM=Le}!dBC1NTpK1{2ZL1c_PfmJsPoxZn$0n&$7X?F#^q| z{RFe~EEEa{tzVZVL{ z=GL>l$0}x0b|%ZpZ1#G+YPZ|{M*Bwx@-KA1n7?E7JN?g8+8+T100jG{cTipj*Z=?k M07*qoM6N<$g4>V?0RR91 literal 0 HcmV?d00001 diff --git a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/images/sec.png b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/images/sec.png new file mode 100644 index 0000000000000000000000000000000000000000..b9249a0814c9774b2a95e05bd8e3f0d4af9963fe GIT binary patch literal 566 zcmV-60?GY}P)mKoG{qQApy8NG_a0 zaZ&^?fS{sD!y{0jLvR#15PvEV_yzJN32j7i4LwNLLBA*Op}3a+xJ3vDOLaDpVl= zPtRtU$&V0DBMg>h0YV^Awh(`DpVRhsf&!6nCC+$(ahB$s@1tX8WqDDNQf9;>I8E;1 z{63g5K93^D^3SCozQgAFYDY*phXU06V3_j>Y8Anwa9rEn?#RdXCkDa>ZqS;Ar zF04|i6kOLWWwTiymW~4s?o^DUJlFM;DYw__fngZGG)*h}PlbU(E|zivIP9zdOOz~>9T0$&oJ=M`Rn=ewS^=CmC|86VgMjK5{p4J8U^Mg;SY8ezz)vXVxyKfmIqrmKsQhVox6`aFiOIhBxVV%!kV7h?R$ZbryJAk+?KXiWn76SO<%I!?eE_@%x zS<32txb1SiUN6*YwPTu}F7R1&4(lmaeDh0wc0C9%08ui{RJArbz5oCK07*qoM6N<$ Ef)_6Jr~m)} literal 0 HcmV?d00001 diff --git a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/en/.parameters.php b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/en/.parameters.php new file mode 100644 index 00000000..c09d49d4 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/en/.parameters.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/en/template.php b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/en/template.php new file mode 100644 index 00000000..106d0274 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/en/template.php @@ -0,0 +1,64 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/ru/.parameters.php b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/ru/.parameters.php new file mode 100644 index 00000000..2c713dfe --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/ru/.parameters.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/ru/template.php b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/ru/template.php new file mode 100644 index 00000000..29d3a541 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/lang/ru/template.php @@ -0,0 +1,64 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/style.css b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/style.css new file mode 100644 index 00000000..d2fd8983 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/style.css @@ -0,0 +1,5 @@ +div.bx-auth-reg input.bx-auth-input {vertical-align:middle;} +div.bx-auth-reg span.bx-auth-secure {background-color:#FFFAE3; border:1px solid #DEDBC8; padding:2px; display:inline-block; vertical-align:middle;} +div.bx-auth-reg div.bx-auth-secure-icon {background-image:url(images/sec.png); background-repeat:no-repeat; background-position:center; width:19px; height:18px;} +div.bx-auth-reg div.bx-auth-secure-unlock {background-image:url(images/sec-unlocked.png);} + diff --git a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/style.min.css b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/style.min.css new file mode 100644 index 00000000..a3a5be34 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/style.min.css @@ -0,0 +1 @@ +div.bx-auth-reg input.bx-auth-input{vertical-align:middle}div.bx-auth-reg span.bx-auth-secure{background-color:#fffae3;border:1px solid #dedbc8;padding:2px;display:inline-block;vertical-align:middle}div.bx-auth-reg div.bx-auth-secure-icon{background-image:url(images/sec.png);background-repeat:no-repeat;background-position:center;width:19px;height:18px}div.bx-auth-reg div.bx-auth-secure-unlock{background-image:url(images/sec-unlocked.png)} \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/template.php b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/template.php new file mode 100644 index 00000000..667c1936 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/main.register/templates/.default_subscribe/template.php @@ -0,0 +1,279 @@ + +
+ +IsAuthorized()):?> + +

+ + + $error) + if (intval($key) == 0 && $key !== 0) + $arResult["ERRORS"][$key] = str_replace("#FIELD_NAME#", """.GetMessage("REGISTER_FIELD_".$key).""", $error); + + ShowError(implode("
", $arResult["ERRORS"])); + +elseif($arResult["USE_EMAIL_CONFIRMATION"] === "Y"): +?> +

+ + + + +
+ ''): +?> + " /> + +" /> + + + + + + + + + + + + + +
*" autocomplete="off" />
" />
+
+ + + + + +
+ + + +
+ ''): +?> + " /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $arUserField):?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
* + +
+ +
:*" autocomplete="off" class="bx-auth-input" /> + + " style="display:none"> +
+
+ + + +" autocomplete="off" />
" />IncludeComponent( + 'bitrix:main.calendar', + '', + array( + 'SHOW_INPUT' => 'N', + 'FORM_NAME' => 'regform', + 'INPUT_NAME' => 'REGISTER[PERSONAL_BIRTHDAY]', + 'SHOW_TIME' => 'N' + ), + null, + array("HIDE_ICONS"=>"Y") + ); + ?>
'' ? $arParams["USER_PROPERTY_NAME"] : GetMessage("USER_TYPE_EDIT_TAB")?>
:* + IncludeComponent( + "bitrix:system.field.edit", + $arUserField["USER_TYPE"]["USER_TYPE_ID"], + array("bVarsFromForm" => $arResult["bVarsFromForm"], "arUserField" => $arUserField, "form_name" => "regform"), null, array("HIDE_ICONS"=>"Y"));?>
+ " /> + " width="180" height="40" alt="CAPTCHA" /> +
:*
+ +
" />
+
+ +

+ + + +

*

+ + +
\ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/account.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/account.php new file mode 100644 index 00000000..4458f217 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/account.php @@ -0,0 +1,90 @@ +IsAuthorized()) +{ + LocalRedirect($arResult['PATH_TO_AUTH_PAGE']); +} + +if ($arParams['SET_TITLE'] === 'Y') +{ + $APPLICATION->SetTitle(Loc::getMessage("SPS_TITLE_ACCOUNT")); +} + +if ($arParams["MAIN_CHAIN_NAME"] !== '') +{ + $APPLICATION->AddChainItem(htmlspecialcharsbx($arParams["MAIN_CHAIN_NAME"]), $arResult['SEF_FOLDER']); +} +$APPLICATION->AddChainItem(Loc::getMessage("SPS_CHAIN_ACCOUNT")); + +if ($arParams['SHOW_ACCOUNT_COMPONENT'] !== 'N') +{ + $APPLICATION->IncludeComponent( + "bitrix:sale.personal.account", + "bootstrap_v4", + [ + "SET_TITLE" => "N", + "AUTH_FORM_IN_TEMPLATE" => 'Y', + ], + $component + ); +} +if ($arParams['SHOW_ACCOUNT_PAY_COMPONENT'] !== 'N' && $USER->IsAuthorized()) +{ + ?> +
+
+ +
+
+ +
+
+ IncludeComponent( + "bitrix:sale.account.pay", + "bootstrap_v4", + Array( + "COMPONENT_TEMPLATE" => "bootstrap_v4", + "REFRESHED_COMPONENT_MODE" => "Y", + "ELIMINATED_PAY_SYSTEMS" => $arParams['ACCOUNT_PAYMENT_ELIMINATED_PAY_SYSTEMS'], + "PATH_TO_BASKET" => $arParams['PATH_TO_BASKET'], + "PATH_TO_PAYMENT" => $arParams['PATH_TO_PAYMENT'], + "PERSON_TYPE" => $arParams['ACCOUNT_PAYMENT_PERSON_TYPE'], + "REDIRECT_TO_CURRENT_PAGE" => "N", + "SELL_AMOUNT" => $arParams['ACCOUNT_PAYMENT_SELL_TOTAL'], + "SELL_CURRENCY" => $arParams['ACCOUNT_PAYMENT_SELL_CURRENCY'], + "SELL_SHOW_FIXED_VALUES" => $arParams['ACCOUNT_PAYMENT_SELL_SHOW_FIXED_VALUES'], + "SELL_SHOW_RESULT_SUM" => $arParams['ACCOUNT_PAYMENT_SELL_SHOW_RESULT_SUM'], + "SELL_TOTAL" => $arParams['ACCOUNT_PAYMENT_SELL_TOTAL'], + "SELL_USER_INPUT" => $arParams['ACCOUNT_PAYMENT_SELL_USER_INPUT'], + "SELL_VALUES_FROM_VAR" => "N", + "SELL_VAR_PRICE_VALUE" => "", + "SET_TITLE" => "N", + "CONTEXT_SITE_ID" => $arParams["CONTEXT_SITE_ID"], + "AUTH_FORM_IN_TEMPLATE" => 'Y', + ), + $component + ); + } + ?> +
+
diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/images/sec-unlocked.png b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/images/sec-unlocked.png new file mode 100644 index 0000000000000000000000000000000000000000..b3ea2911db5830041a5b011015476bef2b3ec59c GIT binary patch literal 574 zcmV-E0>S->P)b*LXMW?!?8ST2_XUDxB%ZfY^C zs86%n=qqIS6f`M72Tb0AM=Le}!dBC1NTpK1{2ZL1c_PfmJsPoxZn$0n&$7X?F#^q| z{RFe~EEEa{tzVZVL{ z=GL>l$0}x0b|%ZpZ1#G+YPZ|{M*Bwx@-KA1n7?E7JN?g8+8+T100jG{cTipj*Z=?k M07*qoM6N<$g4>V?0RR91 literal 0 HcmV?d00001 diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/images/sec.png b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/images/sec.png new file mode 100644 index 0000000000000000000000000000000000000000..b9249a0814c9774b2a95e05bd8e3f0d4af9963fe GIT binary patch literal 566 zcmV-60?GY}P)mKoG{qQApy8NG_a0 zaZ&^?fS{sD!y{0jLvR#15PvEV_yzJN32j7i4LwNLLBA*Op}3a+xJ3vDOLaDpVl= zPtRtU$&V0DBMg>h0YV^Awh(`DpVRhsf&!6nCC+$(ahB$s@1tX8WqDDNQf9;>I8E;1 z{63g5K93^D^3SCozQgAFYDY*phXU06V3_j>Y8Anwa9rEn?#RdXCkDa>ZqS;Ar zF04|i6kOLWWwTiymW~4s?o^DUJlFM;DYw__fngZGG)*h}PlbU(E|zivIP9zdOOz~>9T0$&oJ=M`Rn=ewS^=CmC|86VgMjK5{p4J8U^Mg;SY8ezz)vXVxyKfmIqrmKsQhVox6`aFiOIhBxVV%!kV7h?R$ZbryJAk+?KXiWn76SO<%I!?eE_@%x zS<32txb1SiUN6*YwPTu}F7R1&4(lmaeDh0wc0C9%08ui{RJArbz5oCK07*qoM6N<$ Ef)_6Jr~m)} literal 0 HcmV?d00001 diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/lang/en/template.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/lang/en/template.php new file mode 100644 index 00000000..6dd53d52 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/bitrix/main.profile/.default/lang/en/template.php @@ -0,0 +1,18 @@ + + +
+ +
+ + + " /> + " /> +
+
+ 0) + { + if ($arResult["arUser"]["TIMESTAMP_X"] <> '') + { + ?> +
+ + +
+ '') + { + ?> +
+ + +
+ +
+ +
+
+ +
+
+
+ + " /> +
+
+
+ +
+ +
+ " /> +
+
+ +
+ +
+ " /> +
+
+
+ +
+ " /> +
+
+
+ +
+ " /> +
+
+ +
+ +
+ +
+
+
+ +
+ + +
+
+ +
+
+
+
+ + /> + +
+
+
+
+
+ 0) ? Loc::getMessage("MAIN_SAVE") : Loc::getMessage("MAIN_ADD"))?>"> + "> +
+
+ +
+ +
+ IncludeComponent( + "bitrix:socserv.auth.split", + ".default", + [ + "SHOW_PROFILES" => "Y", + "ALLOW_DELETE" => "Y", + ], + false + ); + } + ?> +
+ +
+ +
\ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/images/wt_black.png b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/images/wt_black.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa0f31f7f03bd1143f3458ee27aa463b241c768 GIT binary patch literal 8862 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 N002ovPDHLkV1lUW!PWo( literal 0 HcmV?d00001 diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/images/wt_green.png b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/images/wt_green.png new file mode 100644 index 0000000000000000000000000000000000000000..8f95932ec3717d024c7ef9b618436fbcdd5b69ea GIT binary patch literal 26562 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‡QGI?-J!)kOWf@wCktPv2B0OQ3QltyU*& zXxh6N!`_fW7bVD+fgBKfKyq%9vD`KSQ4&Z5tX|iMl{W!1Y5!2HSv;GDQKJ%#sz}-V z7|`~wdR2)3cLJXv#EIHi}xb zj>+3Nbxs~VY$AQpIn1DB59Oo^0{m%3$|kOJ?7=Tee3|Iu`X50 zVIva;P@L{gK-kke9Z;RmiroURXsL>_9~fuu)W0Y~HYl#>E)W~{%1AONeI7p0em9XE zLtk*Ax`;`2^Zp7)$0x$Za$NcjO7t`uy;1k?$f&s^PNyq;(RQ3^Mz%96@PkD9Fb&3M z^5qq219qlyt4BN%8M}Gec2?Ty4IbA95>G?O-|gQ11P^}Yvb{KN+i3Diuc>#j8QW5ONo`yJ8Eq^t{OF+1-Al5I54)#U1N@rTZ9(|127+&4Now+Dj*To z8Y#jHDMxrx$zx^kR1?5DCsIF#LRnn$3&6~)8gl+qU}8X|ZwHQxQtxhVbUVNWssWA=M?bd=VBk>Q(y0Mr0u?Ytf1q*| zBo_RyNQ7FZ|AGdH4-VT>p4*6Ecz-unV{LW_(|=OhFT#pnwfN!kISxQ%7NUfaXXB^+ z_LDmQD!tfjYm96R;eud8{ceHm_IO~EC(1w7x`@$~h$a!Nop}gFX;9g4&mEQshi+>p ztr6W%dmJWTHhkPPU7?v5A`L_I#7C@jw{6Lf1y2WUWtiA#xW-Rnuu+G)UVH@ShZF?G z9mYoDLJMtTm>+#c?d%OS0mR7Q-+TQH1(aajj|idDJX1{{=u(T_*YG&U9q8v}6L8$y zB!8cZ``?%bln>1e9mqS5dyX^J*-WF*_|lvlg^E87){xcs>hGW4`SiM{nSoV-9hhJ? zN93UbX_guy|Ed3w`FzGED@XJEspbctZYsx>XDmKEu=8DTbq80k+gdE0@;{?Q@JRk1 z8RWeWvEoy3)BZE|t?(zZY+PkbG~`d?T<0T?4nt&!dJaNglYYuo2F^b_oa;8?z$$38PhQ!;VGCyeZ(`iE)_46X8VVd74 z7GJe6E?zORwd;Gn+NX^N{Lns6eIJzU_?lp=nfwcxe&=$F;~Sd3*Kf%94J3HJFxllc z9AN;kn`7`WF!&`By4xHsNEZN=vzTv&0mA17PmhE%u+j(ec3Dj54bZh*}-xg1!!j(`lX<_f~fTjxfLiZq}=g4q6MqE`gLX)wa9^WtJ<&3V3%6z#C(@s|92*Uc~5JATB*qrd$v;`>liU zzoymNBKPL(g&JPI?mZr^q#0=KiWUMzqMw*GCvS8^?ilShX3HlqEU zv3`lVby2O>Aygo^@Ng2%jnq<$)-E+YWGAU0jYm~o(vwx0pLD7?m%j{Y{~QZAJH$s$pOOa0YZty^ z_mJSa&i+s+$^2)sTH>v26bp~!wgh2_0uf~FfjK9Z7UN6GXW|sP{b$k4Ptm$ESmVe1II}NOhP`7VAGs zU1(#(pbE;p?~OsS`BM4evdy6A!|AMh9Tmu-ch71{+qFPt>?Ab zsqoXS+aVSrrdN`R(gzATx z5Uu3^-K|kEr8DXw823I(n=N)e#-z48RDP;_I6FxEO`|NnIzW>93yC?0p^X?g%sQ&! z{gO1OX3F75?csg|WnY%YPK6DMjZQ`3q9v;p0GrT+p=tnPE!5wN781G7W!d+8Dn=O} zjPr`lT$VYVVTVzwVcgZFP$fcU*^eBSJPE-t(cYxviA2j3_K33V0B|O9-ZpOHzhA}B zzA=%NwGk4}B=@W>l5bY*q2lpZNwUmX)}o(y_^m=_7VB zpHS>cgTF6YiyI`Iv*7RXAAZoCrGVfJiF-qav34DLHD_h9s3)UDk(Fe+{8C&|7s#7E z$n}1E*0j+~DnN%EfjB-1>x8oJW5DJ5oP+%k!56 zQPe{G3#KgZkEfMoOx`#QmMmdjZdNflDL!G#o2AHMh7&?!7D7uSjDJu+W^LP{bxj(J zi}2D6nnw^9Wl`OvSFCzUvU%tLnb%ULM?c+KSxPJ2t2wrhjDMCar$K^pzggQe)DW*X z0kT9KnGxVPHewtJ-3CQUzs9M1&|TR00&9n-ezO{a;p^Y20dAtoEpfT(;_e{^H2X9T zDPbiqqsmcU+PnuJUsND@MO_}S0s!KPXyO!`aqsx&;+g%6h9hIyl+Zd^i5Yhs`893z zNb7BobCzsB-Gp0*9r1u+{^Wg21S$Li-q_8my2L8|xZ|WtWU*8-dbCSMvW<7XlY@@> zb1eKDe^YA1jC3*b>1$TBd-g~k$e6ukVDLJtB#oHv!eY8p3*#HwZ>n!PV=7UiY=FY= z@=X!=>G01!xM!Zd@iXO}Z#}v_|FXS~hxUJj`2E4uKQw{AZOY(PyY=jv(UBdv^x#~T z?T@+wLn05`wi+S&QYQAWk&KSMDP2Vg$+a+_fFrAmJUN9K3Bp~6hz>r9*RDDJd@j<7 zOTa*h8KSEswqK&URZfbIB3_g7wx8)dnU~CbzeNxT|InVs1{G$3z$#rQX%8_2Pf%M#I_P&Iu-Lo%!=) zC~Z7d@v*g+ZmSK_n7_r|B`|@NH49C2ieEogzZ`)Y8PAuDKmB$YYbR3!4c$IIudp{w zw8`nkAc>OCb!e6BTkr+Lvos`W<*Sa<(CwD^(lafg}x=W2ykuc zDs@!Xem zDBgt4tIbJulYq1euXPlH-I?Xk|K@*ru5%OVq%|MB3s31 zF@UiD3s@(o*f^T4Uz@KGvXz$1;J;BQmkm_Q^%a&w4o-lUz1l|`o`uB);5_fjsy5IJ z#uxlAZL0no`w0Ssha6cdB|(zr#MN_8luEQ6_Hh+sTlV5w5gj^lHmG^PY(JpNYv=C) z5$fY*!*u`vAOJ~3K~%AaP3pO|j76P*czij{x{Fl_Gv&ANWt$fvCqR{;f-j0mYJ)%Q z$O7Z%7lnWQ+!4s==_moY^JUBcTR{h7?)wjB;C$_0#e=5hT}B=b$Bmi#e#EZfdojRU zusL4|C}C~MHqRyKsPu|2ZHL|_a#pK%I@+xG&sr7?LxJ_+?+5+TIcAgh@=&XovU@xW zMy=4%2kNSr*zhPzmZ5FBK0eZBznksX0xFRWBFb?6+@k}-ls$ZKN=Jt{8mzONj=&IZG^9i63iTy97-!B8XyROH)_P{E$+ql~{}W=wu8*BlPNUnBDe zMEUi$-o^?xD>|?~94ZTY!?^@e0k_T;n)`IdBh+~iSYj~P!gv^oC-@%Lj|52UG7P1S z=A8Rpo%v<`d$gq4-Dq391PXFxArhC-E3k$~!AT8|Y;9y?h)l-d6L1JUe--L~ zxCO#KXw#HTCddj6XYP4aWI0$i#rEy}v5t+olA%f&OVEg&X8H(~ZoVf9-$4#^Mjd$| zcO(a_~CwJx5W+!C%d;|)r+ryFoDOBW`nY(}} zIt0P7X;aCzBd?VlTmBPcC_-sTl5i&kpDhc}IqvRzx$x}XSr=L#M3ubvKoyu>(3{fK zo6U2o09Tw1%0--l4eFzwHoeW9q;^t&8W3qEaP5;;1eK1@4O=V#!JqaE;ab!p)JTw< zPG(IFF0(6JDSDGb6EvI~-o>&@20UX$^o zbx$-q3HobP?v6iFH$`@Z@8Mhf{J|kfP(MVqFBYXYes3LP^q`nFm}TqJ6VP|*d>l%l zE4EjwR%&PU3MBXnWl@!?=O&^8u+T$ygmLV5UvJkrll=Sr_xkr{{q6xOvY;?3X=V33 z{UGPnvPw1L(F!W$v2|E|c&dR%5}P}-BAu)WB6K-l7S)J{#2@u;-^#kw7bDYk+4I1W zIPShQBRnWLKWX#6et(~%5@jg^DrsSj)zyWItM#BrN>g;PhVwRbG0~_l8h4pnU=Ije9=c!kI?D;{<_%Ug(<6dd|RuIl2zA~fPA{s~+_er(Mz=AW# zfGxirZyulm@s&Qw5$xwI$;`P5MaCf`y=!}NPbBd`8U(pt>ID_>MBHcS*JroDYGq1b zO|dnSRYm#e9HDpbR~KSa_GPi2!}1$=0^!Mb8444D;e`mI*=e=W5PJ5B!>Hyk$8F8~Q_}buKh+&+SIUjq8|k1MY*oJC8%H@seu>lwm>A|{xO&kHm#&S{|(eTY-G%$LqsEn%;s zf^8-freqNz5z^^f1d-#-aknkEZ|k*p{WE(2g-TKtAEAOBFSS5(Mxf6^U|N`_45%1F z#RqR&6Zla!HfSD)(E=)|%QOsgRhvVEJ9o^g<-l6Q$?Ezo6SFiitW2cWT|w%5{>N!t5hC9 zv#fI*@u=kUN+VP(73O0vMH&HZB@%0O{YIw@ByLkr^i3uAPV!J?*Tfr1bTKwYMU-!p z4?ZVK8@60oSdP)T4i0(eEPjAxi7g)=AKL}f?Dfjvn_EatkQao=TQjq###2UGe*{7Q zg8n_#D1zQh85@)3oI?eD{aDpTeo9o!z?xyFb055LT73!@%JjFHNJ}Lgh2yKJ5)e0Kg3B9X=}cu9WB3g9oPc1x)09Thtie`aRH>9m+S1%&&>8&6wA&lq$UDp=Fuv+`(_!b2|CmHPl5OY6mlxnkr)c8pA^3L=XE&$twp3Ot~*H>|d6~sa&O8Vq}zJ(PUZq$AP_gId!Qs!J-&B zKxV3Rt*Hf(T2TbSA=1Fcu@>=RLGmc!d^!r*lJsCoYwaAqk#~hLE-h6`NFNFWWd zu{nO#*m$z?ED}`UBcgE@pSZ zF^KyX#OAi|WQ-G3*5chJW%4UNw!tnV{8%AyB98_)~=se{k|5((xhCW_u`JTXVnL zy7qowC%5DNs59O$(?{NT_1)&pFj+EGY4x_t%TeQTp)66pr;2c)#L*q7-`yr>p5Y`! zP)RH^`>p=GADNI?l*UM68~z_&q#~A7rrLuA2-UOfwxC=|4!_7Egq&L*&@JBWzy$=| zW+Mu>@6&Ua&gy`Z!bSWwr)9s2LPByFxJ5ClONUN%+-~Qv&`5JpEKP*VD!dP$F1LJZ zwQ?szkff=3hfLQ5R+x@XTY+lYK$M5w6XfnRbThx!gBJtL~6BSj{GA8#mlf1ta{<2DIHyQ zM566>{VOs*gvv(br%_$k2^Gu2-P`um1j5rTQM6uo1YbCNb3naOmY&5$jn~E<#9@yH ze=OLuCjriQEza#l9~^S(l57C@3mR+^QTT+t>}_hM@$pbXDY~~MMibx^(LIgb#}=rx z`Q>4GXR7>sV|9yKB^-YcDkG~}KKu&K8MeR>R5#JJg_yUcdtDxw${;T!)e#hMv#e1FqEutrNITXP(m+8j3wRy<<3cp2HEF9 z#*>NMjJ{x)*;3UZYQ-911LYX{;4U|vU0aJ z`X|A`0&un(5RWb{aOYCXD8d9U*(u)*+iR6|T?L%TV`t=5?g}23IZHiQ-w~N`>3M1r z5{DRf3SRAr-M0)XsCA*{qbMpTPX#2^7WjaiwsmaT{D!y!g97sNw)zlMPN$Q1SXL*u zE5j-uL_;YyRvJkOuDJd!5x{U>4<}r2N6NiU%gf>aw#2r!3n#}pUF(Exp%+EAoFwSe+-iG{QDlBkT@8J2u zdM~IeO%zZhYj@klj%q))@c$CGM4(%?U(Rh=GcJhAKdW_+M#mK+s9<3Y#?kq)*2nNp zR(Y6KH;m}SEWnG<*%bHQZ*hNwSKLvcCM3APL1d&=yd_rcv)LRCY=Bs~V3h4-Oax2P zrUwF*PE59k(mDG(2g4eK$Wg?}lhZew&8~FYWP*jL^0s;_J?UTqibzl^?ds)3v@SI$ z@t9b3fBXs|Ny116*OE{{y`1zcHJHqwlyRU=QAvvkI%r_hbpye&$2Kd*pN&DP)=at7 z_4e1!DNv_Zz{mfEMVC&yKq#^*H=APn;rtedMh+F@TZgTTmBCc=lo?~=3{z`4am7C_ zCEBNkI=6Kcbt#QM7KpGEuABoZgXQt|9+e&%qW0t99tk`Zg5>}kW5J=R`8X`arF1}4 z)gB^~Kb-3d0tEJF>nw1!eSZg;0#n56pVg0|iMA#h70HWD4j58M%%fEkD*Q!xGTto> zkXo--RHg+ zN4en?O8}<@N+&2x!wwyFh48r4giGbMrGGvpoie{U339j`iZA#Fvwe2ZP9ebJP}wpn znk*~v^c5T05X??)ImFj;xg?am5PZ$fh6*cAmZE~pv&6E`UcE-BaC{E_tR@+umN^E` z)Po$=Bt}jR3wy|$ai6340hU0CE|_GeYXKHO1d{yUR;z!&iCckb)_MSq{%Z8xmh1L$ zFWM=Jx*TO-iRBKMDK3(~z+Y1L1WWpwwot&yo3}vFgYAr_$i`&BkPG+vhvQN*X9HTL z5?iQ<+?)uPf_-Z+vNc80OHi=|gk69o#n%o1aw^z;W4+$&oZI4HahR-DzhlRTxH8~C zMIXfXKhXqWROGak^=7;W@jUYBK9;1%msMH#F7=Xx)P3-1O)XQE28|513=-u|oHnf} zU9>5MY&Kbpin3~q-@v)&!*K<))L79Ca`WLfjzE_8tuxR6tZ1$4CbAjG6$tFN*xMU# zsHy49iJrDmE*yH|p~XbZ6Ph<10Ap_OryM78?*=#@8Z;Z-Yt>UZf-ma`qY%=NM zwAp|P9zys2-h&8v{37E{xu`6N=*cwFb`)ki`k;*{72BO^o5Ip6N5EjW?hs$1WOW0_ zK}X2>swu1vx&b~bNyk>;*lnE?SKudGlp#>Kj7q7ah7?Zl6?Ss4pmOqTw0ati;4fE> zpgD_24Ui46$d&*KKj84s-lggg;5t%J-;x7Md@-IoLy%OXZ~?kFcZB08kmdwW8j@BH zsBZS9d#?)aw5>>~IKVytjt}aUu>IQN5$pOFq4J}QxPnvvR?*E_cGEGw2DPWo+W`|SOds259=7_2tSG{M3rssuXH zPeUkVyibhE1^V^Y#jdVfjHq`@8p1fx}{$9iW~0h#JLWF8ey#a20FpXS^< zp~{s}q0TzRj^jB})#n_Io{zf`nBE`Uu>f)Se*3mILF+Os&Ne&YDJhs;(vbp0(YH{h z>wwzQ3H*kX3T_Yym2Esj)uV#f5#4_XA1rqqnVr(Ka_s8A=fhH-DihS_q8LF)o?a*% zT}r5eK6g7zuXVkDPY0-5Jj{3M6m)1&(m5G~03mjLa54oEo;_|3O7K%)>%8GS7Emg1 z=<)XEQHcT)fQqjskXscZERw{NC7_}{lQ^9m;0NT;SGgc6c=YZZ2%O;rcWii<=(m#S z82K7QIx$0?;WOaCL9E?|`11qlQewgvov;)|eZtT|K{+j3Xtq*qIlbqdkAhg)u0E1M z#4xQ*``O{Dx{z;@?FdG!@L+`A=HZx}J;s0vO=IBhZZO=@aRqie?p?}~!f%#JqeIsL z(?I=3g=C@#q40&a^aiBpW8>%nq5OglgZ4WpYX@Up2(>;TIJd>4G2{tQg+W2pVNyUehR3*ZrF?jQLlK0MIx1nj z4O^ttxKDF@0^bF8fFLa7^ zGtN+{$AAhPxZzu1v>J`kiOc<)a7-svQh4m;^$SP}ZUV|Z9C083#bHZb@(SqRwB2%N zG(;sx53FCZJv=cg=A=*&17xUPOevOJq|$r$wqwC*bsR37Rio;JFI9KvD^9v>q-7(a zBI$RXp$%Ur)2lc>tdOZIX<++RNMZ(_GVef*AYC{Pb1X3@0fUrKCZsH~thXvLLMP*M zvy}#!b&Q`C=e9nALdP4O-xJM?;CLoVJ=_B(cSgl`Q9e=7ido@4bx#jV0Qj&|Lg)U% zP;5_Jk4mHg{(Nr1*#}rYxiM*3eqol}_LHi-*S``_VAH&W%1m4qR%fLFr+EBiFpPu~ zy71ac&o~j%gI)-gT2Se5cUMCSK!bu@Hx{$;9iT)PO3zB;vqDQcv4k+)hFo2+Hoqy> z1gAk?*pOvI2V_3nB!FCYN zfqo>Yto8;rKMV_i@&uK^=H`2}QbI@MvAnyU$&LVmYv7?Sqr`1_k`SDlQfrI~Kc$?1 zTLCO}d#XdSbHgVcC|C_0bK)^2v85P^$eTSn?0fj87(6hTbTjrxp2h>LbUbhtw&-t?W$IVfF) z2~_BaNKhX6c-%1qMWe!kv{K%F%n|+! zJNYC(@BHy`%bmnqnZg{SQnU6w)kdk6D+m&|kCZbOv?A2Zv#rsV!gK)T@`aJ=OKZdE zaV7O3Zx`MU2Xcp2G&pIQ2a6is?^GPAfodx#psyh)U4zeq!D=+mnC65@=m*Z(sp-fF z*g;LvIFr8wSg2_aa^)9!Z!@g|s8GYKpv9#=XkOX9G!v7kk`74YvlC1W3wDkRe8EA5 z;r4!Oc%k{ze12BLX;>NZfE+9h9AlQ$g@<0LEcnz1pDJ1?oEFt!G8BO0Ao{?tY$2K1 zg)YW?BS$~AKr7fDg0j_?Z6#EJ^N&!mLm1n&MeHJzvIUeU79N&|rQQV;|+=#G) z%+&ROc?`in=^E_b1mA2iyNuEhAd3l)$0Yt#mE6?{GP4TE2;^AG7G0E@f(L7C3JtrT zRjgKicvLWTLCW4e3k+=$-Ph}1lH24!`6s0c z;j(T7kJE|w%)SN6F!ChXFh+a{z_TnQdv|{BW?x zlG0l-#|g79i^h=`g0BXSb}FfAWMJs%hYU3k$21s_lRmZ|5HZPYZVl%m-WJt^4LXXp>(*W9Nnt66KX97wJJB@15ds7Y_>-!kBU#AjWU-r~`9b zD4GBjax6aN@ng7}JYCW(7&(C`Efv9Fju-ZaX1-u^!4KE~y>nKRXNg;mCk~V!1k2me z=)eVpJv*#YbBpj!OZpx$3@tmiB_5?W#r6n?>AVZ9iapnINaG@aWl!ELrDYrgTd4KQ`}=RO zNk5gY{l{m;u>{FEnNKjyp%N`0p&W-Lr-kxvS$tG;4eRB{^5nJ46t&#v^c5fVhdRxv z#*WFhL|+yHjK=!?GM(@^j#OAE2x*m^(S(uPZNb%3yze1c=$~MMet1yc{$W^l0?CO? zka>*C;Aa;s&aUR8Rl>(-)P*1&X%$B05(|)X?%-W69u;4{It>(wtco4Ma)PAZ6Vatc z*{NZZfT73T2c`gm7y&xJ*4u)&gTJ|COu?c+0a);R+em(zXQ=q)0Z7$LYovUr)v$Du zNQR9%CqhLD5MtCecsS;%0&UhqX}qCO(xEui7|5<+1~){mVTN$Yr|!^Xg*QLj;uG@? zFkv0{g8+$C0=Z8Klz-l0SbmUm>oGB>yk2>L3KAj)Mj8lO)Vi!ys0@=x16eD83iLwr z0)+X3oQDtuC|VcGp~qs+Ar?F_Z6E<1J_DsvIrWMeOu!D-vyK@BE0^B^6>{T#{D`O` zZ24_sSeivtv~>>Ev}p?vhCxjXq7*ppo{2~J;Md-%dwO633J}^Lf#ourQ83ov#vUOX z5Mz`Wacjs^!Gpp5o|Nmy$L8~6BVqgv9hG5_GC=Z%B9wwc8h2fL#nNt5#hU;C2G2=E zK~$t?hfC1VK$HcQB3m6Po0Ko8UIxizX+kXaN8l(6BINYN_Q->x7M87fw*wpJBb4+B zDn-z&A4MVl?8laU6!#;C(|Qv?!N_DHKZ44e&$#7+vZva19A^m&3Kdo+(z(?4cd~8R zMo%~*mZ);Od8&YWQkV98o|aLW#;)Q~Sy-_KLR9Tb_T36fNr0qLNV?v9ZlqiGC)=U- zfXZ8*D(J_&m28<$TxIv7UK!@nW4-&QY9G1xxt>e&Kb~G++ zUC;@sgQdb|Gmvml@;Hyp=chp6J=%|rM4G7N#cvHWR3V?m*H6C0l?at|1siN6%ea$Z z9RC8~BB4p>1dY+jD}r(X?Yb={Y&ZV^6(AK=pBB!mJ96cbL*;NFl?o{dY<=PuP6CVD z8U9>G1z{p3O|{#_jbccL`uzS%8##vLHXHTn%tgik=;GoWa2rP^f@j3fUe& z<&(weH(6ywg`)^R@?2343#FB6y^{7s9>p%lNi6v#WdM5WBX@a&6v69V9zKlBrJbP% zWr-^1+~s=rMF;$?jalD#_}{OR3Pk9zBWnJ!nV*<2drpupwMho7{#Wf=l$JVWN7{CcR-5* z1P;rIb8WdkCx-)){tb-T%dqR!o&JRt|d<{5`Kl%Mq?Y2pPj zDbTq)@2=rK=p)i8!Oj2q&@2mA-YCLyLR6kvW}1Dd2InmJxGm{d!|+JMBZSK-S3ULe zHoHxbD_dx)Je>zQ8no3|D?!^0LuK9Q@J)&KnO>*#^ zfz|05#1P=bL(iF}ncTD6G}~qhSx{r1H9`A2)nsZaS#W@SDj)9M2@KC82u>}Mj2 z#}de4X-;N_N=D!M?>z{wuoy8p)HhMFjQ873sg-Ni#d-&@v2;mqU`1r^y_e z5gV^#Y&|wVV^MIPA+jhS;1+>me1WEK`icUiS%00T1x-ry;Ojs^f__*u*RNbRc;3r> zmO=*`^pR`M?#irRa@(Lj(Qte?n_8(L>fYK6B1~UsSBiin6DI(Uq9W_sN^K*pA;2xSXOi?;WAQ$h9T?q zw|-}=zd<`i?5KyOsWDYRf*zrA_Rn9*FqQ6!vxr5K*z8ePi8^R*Q?-86p!^KtgP^SV zz%Y->+tHh5LIpN$xj71hF94j25Esf5bEpFeE$Yibxx3I4;U2lQHbcR7$LIr}^C`E57!UCv3kU2l?$y?=2 zb5;MT@u~YHTCL&9&N!p`uDPNt^ffom98}9-YU((i_6hB{0u}>0+}T|Mfn31}Du((( zcHIeD%z_B zgwBgZA;VLD6lRo~PY!DdFoYBK6r!qci5X+=a*u5(Y+d~N;rocNbny1@EsqKS7NG*W z!~e#^tDHt5>A~4q5iVWF*@2dm5jr+HYNv?ZU&p&p0vLn5!CPONd+#8_LLt)c9*aQg0W|JVQd|H*S^kne1o@xZQJ&=Jw44kyWj49_s88^5fxSEL_SaE z$@5f1Wu7P{1xZ9WJU9>#5JYJyF%=LHP|SaKEDYGc8Q+rvfqxHNH*qaDRYwaqPh%Hz z5MeV%6LS)2dt*y;6?0=VZ|4bfJ`fOaDr+?@H!XQN9#cnqCgcCGVe+zf`iBMq;S=<7 zGB&j}cOx+|x3qTPC%f(HBO|dk<0sSPkO#;+iJDtkOZm8%tNJLYnfln8a+{F}3Xt%5 z@%$sOH+M58@v^sbaOLshC;Lxco`3KEG0jXy@}DMdw)|xOCnzm>B@$6b7jqI0CLp6J zfQ6lelbeZ!1IWqE$w0#TZ_EtfVrB&}0=RiN*mwY}B>#1h{qyExX2GK(Ch=ds{*Cy_ ztlZq3c$k?zJw2H`*_a$%ESXujxw)AEtjw&ejQ=bcUA-OLjJ+5gT*?2NLCoCM)WzD# z&Dzm{{IRLuWxy#JrXu4>*+=FBSQu8!_5rvEn1g8V;RIq`_Pm>at}x~Mri+WmJHm8=}y z99^v(ok&DQ|1)bOG@8~9W{#e&wEu~bm*L%U%YS3V98KNr%^lqS8*BD|vBLi=_CMrc@AS{J zn7NC!hq;-Ai=#cse=eKH`hSmw^MB?0FRa=B9t+q1ie>&64D)|%?*D7E|9k46g8t+6 zf28|w@IT@=clf7xmw(dMR9l<@0V(m6786$U+C1*rh^OpAqNJiLyuiCF0u4<1)C>oG zUwgCM781k>aM_zg;T1`xktqz%@UY0~QY=tdo#hvkI&79=3Vvt)KKXv{`?{_Be*5ME zL|VlOgB%gR&q2j$#|QF6d=x(lf*gK3cycE6 zk^X7^!P$p);rUln%Qo=yt;I0o`}{8Wu;PrySIIPJTxb|k_E34+N7%2h_%^Z8c~6~Qb~!6BwH`9oP>KM;wX$6*fs9@uSLlf z%4xN2LUw+QhCXbB!z`7Se@WMQgzTOk)?SMoQl1oYn_i{>s_^8bp|#DPf|MQLD1tTK z@}nPYBV*9a?@8+kU|seRzO80$mxXtC3dHHuO#H9yCi9J$!MytTC_k%P=Rg{80`u+Gl!o)6L z_T!Q4taYk_+>GC^m8P5|AHKauC9C6R0z~|KK9sp;iASKeUc@sq_8N$T#kWvc!Tx-P zy7A0Y&<^g4LMf_v75oUFLwysS9mB|U==O46@N)X8oJyqiiDHSzE0UED!eDj4Qc{GJ90i19)3D5VVX7 zlu>3hHU$lur3ChvW$y+=WlB#UC8nIGfcXC1Wk#IMQl4j|d73Qn412_iOQ`pILnJfI ziVnWY8(@i#Lpxbhh%(sKSO@dFtnU7zCsq;pC@?knYDiKHkfgUSQxBtNnr~PD%@7g5 z#1E4gvxXo0`I+{XZS3rJRFQl$1FH_1iBVvD^yARai`bfW$Xq~l(VLu<9oB;_F*YIM zvI;(lBrW=9^G*e&i4Soc7Rr#$&^jNxxYYO}PRXmJpvIO88WFIb#f1w3Qs3PzL`NZ! zg%ld3(l_)FMKnN3i3k`@{9#*vHe2E-JP%qjGFmS$!+`KZJ34_}EBQAPhk@kVhxOIh z-J#t{H-BwS%w^OflBjUYCerGi5A+1d@#xo(_;~9L;6NvqoVWQt+u4Z$Tw}^I9_$jQ zc3Oxxu?!U?q$z@p%Wh363`bPf!fZUqX|7RE6(CTKm*=!Ln5dwmti{Mzm`fO6&wMTv zj9BpaC&o2W#FYLZ@1Q%*!AD)b)s?LK9tF!`>x&l~+p~xx+E=s%#!3~5HCPQw=SB}H zJj`-kuy_wnQ6Dri|Jqc{Zb;$>e8~uYE(DVD;u+-D)P`2P8O_aP@zPmEy{`}J`kQh> z_jgrlLs046liRM~9yxDW{#t1tenXIGwnq>gEGGgtit{5Ha^Gqx%_iS9I$g31<7Jp-)*xH-(@Bz~$YdHV(@7gImAq%2eUUK}Z_KyS zv3x>cH2xmo_(8RF#FkT-I|cb2l^2VHEEyJ7xoF{&pjyGMvMx$ zx*z)-lCXu4IF#Ti>QgD)A>q_JD7jd#?>`8D*P^G4HO9CO8A+M}aPEN09p@_8ljT8NwypGiIJF?25VFr)YI?1Y1 zjrQ9^mY|n9I=v%5bxZCt23^SyP;>FSY=n}J;89;p4_J|L7)n%+s)Tv@V`)MSxsB^y zhc)e!QKm#2ax}wE00QotWj`{CAyrdOdSmc0L)Zu(F=n?qwcf97d|`-|l~0EG2R+>~ z29cuz>B=ahhi=}O$q+V9hH;VH&jCDADrUuulY(wBfZ7_gN75K(1*~_MG!9n&;-G9! zF1X$5t0f0==nB{LI7Ol_%*4#DHFH?sVFwgPX zk7ko;LU@Ry0U1F_+CsC1!*6UE*#t#LAXxot7zt#;MOG)V!q4pWW=X?IMoc)De3?>A zDNzGg5Cz-xP71-J%n(i9!0`05;+rxLp;sy~h(HO)g$rL__5&6&5FN0KXmL`6;${is zNUi8`W1iSWG!`iBQ-Z#&5*(^vIFxq8Mm{uPOn%DaX%}X6aI=oQg-LeTtHC^Hypzwx z7(Nqc!@TJ+NMOHrMq->pJF2ym8`BtM_+I<`k zzntNz_gyFr5@5qsWlF4^8^wdvNjW7$2^id~e$NY#V4XVmWkW<9mtD|E{2(GL+sbpS z;7$x?ahuLx>YV2|ic7%b@(S~unW^WfGCeAMl87B7>Rh+8EvR6=IoZ(YXHbLLQ1LwX zeb}xxKE!X!+mGWF22i2{EX2(P7Su`Vn8n2L3;4X@a?Xj|6FbXuP;$*;UfLLNr)7RR zyU_z4G)SN!hs^+6;aVGXN#LjVVB{0whdpv*Z&RKt1jnnG5xqNxCt(HF&BiiGrcgh1 zIABPjH@d;jWL`B2%@5gxSC+%Hr$?ynadv_EfiQ-4UB56 z8bx9eiyu?f(ikQ(q3ah{Z8y!=0FJp6IiN>O{yKz#L^A~E4nV39x!AIlgUFHXtnSn^ z-0jpq=b!Eq6ZY>*D?>=R<8U1+>SNmDZkVlKIw8IwSmWwEfloX{3gnroC-We?agS)L zDH08t2>X2QMO0KvSE}Wg!vy{+_zC|(Ch6?5Yxm&dsU3VGg{pf%-A>1FOy>4_&yFXM z@geX?u21_KpjC)MojO{{>TYY{$EESIuY2(*eC5?-hiicZw>2n-qe3 zHZ!asmXVSt0>}>=(O zuayD+alGm+C^5I!M^Bck_*PV~p~2F;0_*nrd@swarz%$$+>TWu6ZkmUhn zH7E2ng1e|Be)!pGtTmKcp~Wxq#1L-qm8Rvj80H$ptT|%oYf3;5;3BN{5 zn_Hj3Kz4MsWMNiU+Q`o>Xd`(Hd1)^>0|h)2kh+2$R~564Q3f|$p=2^yJpQmF@#{gX z_-Z352EwSy66yrMMhD0}I_gKYkeGy=u;&31V4Y>h0W-9qCWKwa+M!TVY7bYVj4mk8 zV+b+VU%YfVXWlAfr*zs`ij{CJ!_kxN7qgP|sXyz{$(AqYat2F`Q`qr1{`xYK-};iQ7tj>y3Ts!Pr9wN!v2mh`$9~*_3>V08J*j3zK>3$+ zS4ex;h#T+(oN>jr>F$&j4X5tKGnGafIX{APc#PM_0IV z$3C^_c*f-*Rp@4}d~y1A4zmh{K&PZG5)V z9sJ~4a&xh`12#A$T#T?gCX=T-$ws}nsNpD#N$KffTkh*g6RXFi`kyHSs7y3*0U!v04uFy zc5zt(edAJx!%@;^cB=Nf*|q9@9} z(1~uGC(jCAlc{QfHrtbHM2}$D-zGIWZdj@ylKS36*@5>WbVTg+JvNmq zp)Pq#LoK3ZZU_wna5Y4+W*^O35zg?2x_^~wCIjawB^ZY~sSK|F6NEJ-`=tXWp#6sy z6r?y?`NhHzIT8`~gp#lBl6<$;a~tW8$!m-05GoTnWQ7A;{zK+%x z2J>3Ayi{shL?A!%Ky{C#ead`}a6nxIhf+(qa0iJ=$U&0$P=-LPksH7)w4)p8zL@@` zg{cMV=Xb66 zaJ>N!T^U;_Cx|@LZ6t3Na&ob+(Dgm(1z8S*fC zDD$scnPbWpsOXX}F*Y~dR)1Gje?`8FP5}sga|{d0v_RsjGI_+)QXKaqC5Ev2HUBF! z9wQtbW`GE)M{Q4}FA-dhMqd_9_cMj=D}lBIT-A*ofX!_9cEl5Bk+UqTPkZCx%SAm9 zLhkZ}78);l)JWX0D#Y)wTlZap+^Xg5E;Wc(=$Ltw3SMf#$Qk|&=vnXSyD(ich&c#{ zO1QuG_q}=Wy(p7OwXJimiJ;I0Dp}b9GBDvD3p*%GO9FzV0F}i4fU>)O>B89Gy(+KN z(MmLKLWKXSkU)S-xlMf#yM!dhfx$9jt2?5=t%xXaA$9u4NXDfaKqrrrWqqtH2`r}P z;`+UO)M7S^uYJ(_y|oDH^<$E3b7}7Z7GqmC47}0^Z3Iy#B9aKfy*{X3)FKP{ zx?_bFEeH@F)@~(6OqfPAkViq^*zud_%Zg#9lRkS9$%yhgsC8g^KUs#g<`nK*JQj=rL14w ze&;#4NAZ!55RIAaSB?8+0QSBppj!`y`)8iUZMAdgG_U7M{WA@C+Y8Ze z1LQQox7#kgV#0^CG0uqJE;$s>h&^cAXfm*<%lr+}j4nK?_mN9~3*{)EpDjZ^K{YG^ z(@0PPX?Z|PoG+GX8oAUQ4YKGpO~+f$tX%^l*t)v@L45#t*7>E$Pxzl?|9wW9%9M@#h z%CqjQO>6^Y%>zFhR(DVfd>($AsO%u>VphY2DM9-26@bOHx+>XBZu&Pa`F^O95obV| zHC(F;msdIYW9XK~R&7dELuW*nQ0Zu!PWuY8y5sr^KkrPCGD0(o)gmK9O`x_APGlzr z+}|1qzghp>AR|W(63lr?hnW~Z!!b4j&xxz1w(|P0lIa6RD~TZ4jou;mRFV7;cyKPY zBxCR(UgM`d6@5XhXvt&aKQ`29sMS_fkbI5Mue2qk`}-Um zzd)tkz(C{l3WBJtQX^F!esQPTLBZJz!Mr+{uX`X`M~)!*-bAO|FI+B}py5!ktlov{ z;Wx9FR&wOvZ@CU}-bA+p7x#1qzVL6qpRqU@gtF+&TV%O1R@7#tkY>v-Y(WqYs|?5a z!l&GI<^F(a-t#ng2#_|4$f$86AO)vah(D^OU|rk}R`YoX5e`USRPUzCDCH!Dk!%}5>1wfd zm1VwCTDZZ)Y6J6X?DdBIbzxL7B7OoGJk3Z2i*ISnQ4De+);}c24{VCt&K~G;f8j_# z;vfNxU8N1P;K|#5!0+ml__r09?29n?G4Ee7g_~>h_kgi&Y!rn>1mDzNZg; zdmtvK$|~rTe@VJkr}Sx*dgNgfaZ{4b6x}`&Ku`-eATu&aJ*W?s*+!A{;xW3~1V-Nf zO3wQ*mto3KTmhCE0-bH9luF<#&-8G{bA@z63+se|mOF|;jyklcecRylBc<-Fzb$Ud zYRr3EhA`YQ7jQ{|*X{EwN~{Q8NC>>!l?u44KU(8pk&bGKiT)bp#wqPJlC~kwq?(tD zjfE|((9SbZIkg&y&Wv7mGW7*&GY#83l|x$m26OANP%m}klX9;MyDimjb$wH*ObyO) zm9ita3MoR@n=N9d;upAN`6M_7sfEWGS3+ThHl`8LP#xNk#>s)3Twd`5y^1Bokd4^? zfJ5?g8==kmc@A%HFbvFN^=5)LmsK8++TeQFR>S1$3`y79 z_0CG*KFhJsOft50j)u@9;e>ffF|ZjVD$~1WkzkyQmYKL2=i@9_2qMg zA)y59{uK6V%2Bib+V<(r#KaYgt)d-UWJIO-adUetTC=gT*{}0mDI1WnQ@%P?8fAfo za*e>f*2*Fz@Mi@|2*)Xj&&Jgp>KY7O-imV z9w-k`=Oka@!hKPo<;0kBJ2~!rO4=hgkNEF$28YKT8UR~|gv&;xic+N@b2y_28|03y zS=kq}Lj$sr4sNJrOY-wP6xJ5<65HP5(mQf|fcC7$#4D!P1ZTuRp^`*d`$01vVM^Jx zKKL*FV(HCdzb6+V3~o(2b(Rrj=47-yMa`d-zd=!yO6~_ZmV!E03LD$d{beT^t=BwI z`ua<6QeN;WxWp*qL3JAo@ai_oxIX5~^KWg%{`r6KyW@!2)$!jKy&3h4)@ZsTiRZL1 z9=qe!lF?!PV_}xQww}cp!EJl9IO{s#mS5&YkS;)D%ippgUHWT(c8n?72PzGmn@fNu z3an&JtIXq)z*~}(JL+4;=WRr#q>ZhPda#CC6OAgP&TwNCs00~TZu7a2jBTeMAU>tE7vV(;JlN%(#dy<6T3+LN#BV{1R_ghXjY24t^@}4yMa3sXs@VOQsuQOwbT~A zlehAK=!P?wc!i_viXzkhlbERV-#-sehO|v>@8s4p8mW5N%8dKOh8oB*b7_0;Xg&KJ)x=o!L=4zh7;ImzI=uXk}_XlFp zNw0M!8aLp5FR+!-oe2{?QaS(zO!4{P(;BOkZb`5DLMdmTRnh$EmGsa9yjCnl(j_&Z{?Vtk3siovw_cekpzV)tx!IXs3QO<~9?=^o!f&Zl7i( zkBrX-=elwESZVuSG|i(^ z>$TWvnGaNunMhfq(9<{y_5a+n8~!y^wXf-gALg!=&AVY%$lUXLh+Buz77VZ9E(>rJ zMhlG!Ae>ZphjE-j{zZZ}kB@*_*A5WQwZROB*MD!%CxgDpqv9hh2!>q?wCMiXQFHks1hLMrDIrA?vj}j6YWrVwu(I5VT(d z|4&F0;1dZ8xE8%SnAqU*+7a=pf;u#4{o^XDz}tkCm}H5*&J}oW*54bv_ohKnA*T_S zuUh+NRW;lOkU^u%LxURVJ!T_UJqabOI)(ytVfLvoQ)xhm4JJ4GUGK-Tq_^pW!y19n z?+#jm8jWIqBJo=F{)?qSwm3WE=6-Flr>~O;v|Ki%?#}uQff_tj+lWYy&K5~4xI|!q4-2j z1$ZZcDwBq-%ovoS1e<^*=~ee`ZaMuRa0@FF;$HYX%H~Aw8VIF_7nFqDm#VI|ic7+2 zz=;S5B-i%Baf&8~L3Xr%e>_1zhhzq-m;)~DS-K!An2{cZX$Mb-^grTs8z}@^(4zp$ zA>xgR^2Z=X4_YJ|K0dCTLG8qgHk$;CgYPgsSS`q*xUha9r|>#f>s223hal3mq*{Eu zcR$}Zi5IdE&0(VcpDqt{_(R(noO;n-VyLWw9|N)?ayC0=%};%S#NdRX$ElA8gxOrA z5f9NzF>5h{=qU(F?}y}A_X;zh%R6w0;nDd%07);V?DMU>r2|#M zn^RGUTLwX1^5h(N^2R=1yS~6J#$?>rM#8lZo=nMerJNpFs;SYG535h4_|UOuxZT-} z2u`xRTX7^BKC9HvploGcHvD6@5p@4-@KKS-7uabbCqk;9lcG>Gsm}pVoO!T=TIz9R zAtpzpe0YT?G*jpG#ssR-sXu}|o=feCk7vwD=7U35KyIEtDFac%*NRgQY zcuQ`&Ui&ZiBjYn$zjhLx|JtxG6pF$!N5(yfk7=FHV@$3%yhnuOf!FJ%UC*sCiNw^w zinBzeK|fdCY&*jUBVb@UEc-~VnYjnmv>kJSSv6rQnF49`Kah+4do=^Xr|pp5nIkWp zU$(aWi8dULe<*3MK_6vryMbrL)9@V|^Hlo2ZX%Hkn8LcbbzdavJHK^OZmHK0A!7GP zPs1KbCt!uo>LQ1r{i_332&Uax`sZl8@T-s4U9${+`FiIGyp}qu_$vqj68GIE#7(Q0 zh>o3%>}$U-w^SSYW-T-Zggj-vlX&fxC$mX!MmruI&oz^?q!p^-HxU@&Vg$^`DgKG_LrUi3;zH zI18tC-0nwzekRPQ#JLQbP<(=sjW?X|oRx==g(}TeLy-c{J}oMxYz9{m#l%O3nZyKq zrlL6P;(J{KjLPXdt}}85w{MDEosQDuh)VP33FB7srx6w+ct}NJVD$*TXn3?d3?1z| z8?kuQG(^tR^QW}C;aiCP!yA9 zaG-7LJ8;fEAY-t_JGSo4D9=Bib|V##Dr=ibIcw^^^RD|blz=BBzU4XUtL#3A@ zG?7OGevm}H_R>aTGuh};CRYB;NQ_nRi@>V&Yl)s?I5lRj*XL-cT|AGb8a7;NfL*Iv zZ@42`XDkE+!uly*Z!RR+M(|h}8$DTLA9rk<{xTSOaneA>W1Nd%_3hS$Z0QsAD+kzF zqQGHK3Y}m(BU&%0hz7PnW9KKfXq6BsG&9Rc&UVrfJ)TQHTF**iWu_Ti;#N`Kc2{)N zx*FXv`q>%(UFvw@e?v-qawtY!qUE@;627=Q|1%-XNXN2NJo;xlr2eh&bRoRL7VcO%j%g_tD>iNb0m7tf-wvyboYTg+&1qkt0{fSu>^E&}K@F_r zmJj8tGnz4sC#9{XnoE;y~~^;i^@ZbuxBUTM89b<&~AD^2Y$9{LX?kF*>zrN zS8?~-|KL}p(V(0c6~~hq?kukP_h-VzhtXx;q!-6lL!rlEz90>dB)Y39ZnBYG>H3_I zH&PvEp1ap-7bxJUPJl5QQAG(Lzaa+FW@m1Fv4EiBWn-E1xk}O|rfBp465I3sVDG?_ z4aYciEH-PR4uzjLJ_17sBBQX0Gmyc5azpc8?kjbWV~i-XK|-f;2c=a0c4d94hm}dF z8RM0uIzPVxGS>E{6oh&X%{ zV}kMi+u=fk@_+4S*pc=TFiYMFo_Wgi_&iH{n}F7lfi%^xr=)#JpYWIAg$^^n`P7mD z!sGt^%W+{EstZl}JTUwsu_R1LZu9)o>s)0%>ZGZIn?@vsh}IOcK*4IGF#A$wX%f&|ueHesM&J_H_2QRv zFl1AKdZ7Scjn`VK#R8-qm*Z!PywOffh`*d~XD3pTbg)T8=LSpR z=z=*L<^6G5jz7G?E>%W7wFRwTL{7jfI*{wD2xJWwZ?3K6uFOkpT#Aw`HO;VBE?dHR^WG3tr_4+YBv$>T+x#_ItJ)a{v zJkgLYdpM>Rg;#rH5Uha|vCufNpPS1tjYRxOHfoxn@Wn_;jZP#*>4Z!x5=GD+%K_Tu zRHov3mwgXPq)Sf@Hy*;Tq(n9ys6?nXLfAg<>Gf=-qv)2Ub}H~ zl%&8@ucbkGnN(m4ylLu=Yv*t>e^ycrMWM_bWX8HjHf{N{LfR}I!zicQeb<;3QtCEb zMDQcq1c0!O|4))QdbpfBnPg5_-1Sa-5Qs}J-Ea;xcI4I(Kqw-+U?ZGs)Xn+r2$>&% zMfE=mO^4~2@C2Tz77h^_VTI~Imor^g)wl{t#42#QVCe0jF4EI~ZDgSe^MAE5w0Jf1Egt^e zWRm`|tA1$K5j+d6HvO5SD!9iYu=t*NqalT*D2kL1&=Z*ek3pAJ!+^wlmRnbg(8J&Q z?gp{+Z;xUO)n!h58HWL#bz1baw=Sq`6n3rz{@%_JG&OcpB!qD%?e?xMJqOvrYWO|ReR4Rc+8XG@P-Cay>bHA6Z zAM!d6gK&F+9Ojee`FM(O6Stt?NPX=8660oax_x&46IM3UILxCo}TZ|TtaO^f&DK_ic9_nbi`#mqEw={@QFV+ zdQihb9FtRaC&UMs1S-hxZwh|_F#e}G6#ibtK-)yWO+gM%&F^euh+CSRcd z3G_8+YD!Y*#NEMK9a=UTJUg?VrnOX>>o2#|kAZS?JyIT3#m`8-xj-oz_Fhl*^+c9w zeM|!9kD!kAlu;$&B$DLWi!d9OcaT@Aq>vlqm4+6H8Q~xd>W8vT_k&@LP{i0z+42Q= z#nIde;)5MC&S7Pnl(RX5$2~bPg$RRO*PZ1Kjb5(-Fq$R2Ivq4$biN<8wfvk-#d|eT zZr`D7nBleb`hdh`?nZSng7_>H@f!(tjp@CpY6>ZC zlWsDRw$HZk``>E>Gz-e{lKkq6V1i@bAyI4x0y8JTJ^{(v9_2_7hfr@L86X1U&zr%C zv%&yjwBP1>2Rs4m>^jV7_$5rsbB0M5^1}*EtL3b#CzQ z*NcaST;16-kj7*fTk}mcYp$5KP5hCN%W0VWL?lFM!>1|HAggD==C=Hn5O}OG9CF_lzIQQvvAkoctGSx9^_JpMV_G+PFnjM zshhbcOsX+|fc-`ijHs9?B!6zqOldZ!D~ne>r-HcViYL^&5q9d5j{<5hDbNcAm=Or- zw<;N?Dp^C{3+P_z3}a$ma7iqJ*`ei$c>Yzzmw`=DE7U@qn1{gKA5>*nnPOAy;lqwn zuzw^kyO1D+v|Y}~2AyRQ3ca~h#?0eH^s}`M(&0xY2c5`MW~k}vk_Hb)?7WVV=V|qZ za+Pd{F6b}_CU0B+rGJmQ!rv7fv@}CdJ)vxyUD%Up?hjPJ&@e)BBiHKeOCKN6R!0Z; zn)e2VYu)&AMco;f*_QoOG9G~_E_Q)KuO{+69H+zrWbvGSsFDH?TjrL*s%|%pQViU* z%84Zh^n0|P4h9|mkz^C@>k!dC;ELAA;?%n;w`ZCyyz^w2z-bi$GWdht(5QJFX47FuLMH@cNZOqwb$Kha>P;Sqv3Tj z3{2N-rcTD87%>Y!_u2NPHH0GS`g*bRMlEG%jI_eE|}|nN09y=s4^M z-II2n^)&nkbh2z~aFr=(txrWraZ^@dF7j_d1RUoab52Vf5}M1&p`phvkNlMi)#YaE zQ8>Jxa3ycXq|V!&w7J~x^|!gj-KQV`QKWXIBc}u4m3Zh)>>UQ?EwMuJ?9<9}3*I^g zkrKyRigD(zuze?#O!Dbf@gHiCMi&MCpt4*l72||s7>rA8?T;QC>dJ9h@vcNE#8!kD zbanmOGkDT^gi(mqvQu9ewBBS{4gpCkJ!8aaD#{-Oyrpvj3S0OnFfS6Sn4Bw?%ER10 zhD`S7VL5j_UPZZE<2GJ6Po1}Yv)cq+D)saMI%+K~@De=+&d*8oxMdgqS4b&pJy{hj zD2lk-z1E9D_8G;${b9jy!)>rE;HFVBmzlzDWGO8H7T*Orq4PNxPs@exS;v-}*1}dW zM4~ja(3DP2!IsQLs|yNlpdyP9Oq!b20YFxq8LwtUheh00LSq`D2$az@PPPJaxoz<; zysDj~WWFaV8V+E-E12#()5OBrT0*+inAY=P4baZs#mBZ>3|_Z7&q_u*W(8qhz<}6g zmkLdwvwYl`ixFEKi?A;r`%T?xdW)T0L>@z7E2rqAppu5Mzj++7%>@JRWlY!UQtT3!xFXBM%+XeVeH#qyjT+>)Arvm-e4#NQ`*mt+Q;- z!CIkY2yqYLV9>eogc(bEIW11_=7);X`0E4}A(9u4^4fqo4*`yrc97Q}rQ-J ztZ>n|^?yPG1sXHCSxD=x{Yup(z^UQYWk*o2#bWo%JHs_UTyg|+8{2}%+qfDoyO|~e z(y>6EGQm0a@+>Si9GGGC-&P<8*%tm%J3($Rdy~F~D|#1fdVvAq0SC3A%8>J^{17K? zl29ohp7v4k>(ic-gob@5da-ki(g216Ogw1|1}bG`(;DmdC9;hmAaz#{>pb|W$ny1n_5tM8~5qmBNP@baoVbs_WJG31p1F^=-eReOU<-uPj zMzB<~GQX^cJLv_s?Q+!^8`Fn8 z?yvrxX2$Vz+-c z=r(WYCpjoGH0vU^>e?tfC|6YQL}X6hrHoa*itH*qVmzl8_ckc(XJtlMB{pZF9SC`loBF+j^%S zAlw6s`tJ)0V&Xa#-^B-*TCQ@0@vM7X+dMG@3b)QI-kKoj6f3#Yj2hEds~Fy;tIa4z zxsz^YnV?n}1hdKSjF9Q2QSyyYvPw1zhe(c<#zMFRZlFcBvZ1PYwr*Kwel-7ivay4y zSEWk~ylM0;&87t=mIME~^B@LOBbaLf3vGU;vRH6fyr!7-sWa99x{F z2}I-U;VrvD00Eq9X6rT96P*p zA%|{+Z^4&A)Tfp$nGg6ySd(~L-FDPTb(0C|W6JAtp{&j}?s$EfFVaOJiUBheEb`EN zfCjk=;FtcN=S;}Ltm~NhnL%9oBJ!E5`8fs=9@9H&VuTlstNItHZZ*QaY?#_|FIkxw z#Q32CnbS8yt6z1hwQJ_p%!fvfFp8HPiE8Q_TF-Quk!;rp^L#uUYW9zUzmKhBqeYJy z*^#=lf0YMnR86nq9t$}mSRBfO^3@|w@DM6kqiRSdB7V}3YeQ)~J=hF-?-@0ob@TrP z?;y;%x3&7o@jM1pbUGwmE0_?zrUs1=@v0VEx7zOtEMf$j(;`;bpE;=lJ|fW%@mRQP zGKRi-4GX(}+oiquMY`Do$eq6Bu!)THm;Iu$8;X7@Mih`IVh;vzG8~Svt&Goca2&OdJkn{so8|G zlVIlBa7q<@EI)D{k#%MjZTO~JHqI6*fVMqp(w*Xvy>ntLQADWn#|)fOZ>?&SnA_w1 z2`*E(*0zCguNEaJz*mt#=cm0)EyjAH0Wr^MJ1??Ak zoFKC2efe(08LTgkTUDMq^+?Tk#(l|zp%lbm8ypb^?eua3NcaSLu+ zKO+MAP9OkOfApv<)4v20m>A4`z`fM=#N|n1O09~zRkz0+g?0_q1WqR&JC!sMuxTvs zVcGmng~fr)EOTSSavyUuW{eXh=q46(>p;`$xy>N z=n~cB&I~Yg9C(4{F!p@XtFNo?RPsl3b7XU>Vly~1{yzXYK*qnReUt1$mNi&VPJc-) zCl(7+2azH?vEp;mrJffa!1H$sZGwbHv&L9qXsYBCr{q+%!EjTP1h&F3&{q{Fj{Yqj zr@xk{wW?Sb5lS;^QP1VuI!db&qy~;)V8Kf~^W$a#@>@byPd(?R&-+P<_ z64Ty0o*U%a3`cQJ_ypgiU4R5!^x)d*=C`=_vDvs|=d~j?J{LNsDd+xqP+2B50Nvkq z5Uu18s|sy4=W|MU=7(e{-o=@m+bsmn_LwI~TGUR`c+eRN4)oICpX?l!V)}#Xw$V2_ zXn@x+l9971JOMj3->Tr({a(&GM#v)v=!^t@j%5mS-B07l?tVB!9TRio?#cbsrG^Ty zAtCTL^{p#3BRrN<^0_VKiMiv+{cl@dzsps4--ggIlNQa$aG_4KTXwiB)cytN#H_7d zZ`E1U*5-vk2;u677oky}4R|Jv-MHY{?!f3U_tNcfuM}Jz;YJYlOa->h8V#b%Ylsv{ zl+{`DU1s;r3}clcLqGpz=b}#Xm?C4aX=x{H^)GY^-X>PRr00E~*6`Y=m*!YxPH{d5 zcL#I3aOmL$=dI1yI;?*~HPn&9!~C+FAIphjO#?1WHGP;5-i-nW&T!=LmvX$KJJ-YC zCihR7DPKT@Zx@*}Y<=d7uycsvPs`m7~Pxos;ob-0KlpzHDh2=RK z=)C0Ep2o29L!#qntJhfVQm2&Cu$C$s6KwqH*)b;w@n9GmOq&AyNZRKP>ID+gh_%(v z_a@Y?5l&wl&z5R1$A5Y*SXX$;ss%DWZWOl*N*(zL(*A@Z)YvgjxhbUq39nRIndzBD z%D4Cfu#P>1R(Mk={twg~G@OmgGKBZue%kDuvXW|OhjCgPzF5dZT#8fEr^8j)a{MNt z1^(}dZFlQIgM#qixkcX)W2LEgu&t=Lcc(lB#0L&QH*Y9Nb z+nJt<+QPsL$e;?0l|P8-BZI2b ztr8wlTL8cc$gP&O8$c$Z0+WbN~4wFRp$+U!q}2&UoYAJnK^Af z4TZ8WbjHj+MFHWd*c4ZdX{+MOk9e3Jfp1tiZyR!kGPWkbtm>>k~6jJ0j%?&B|(WkKn=O`8K*A+DsVI@s@g zO=A&>IK9Djg$^X(RoW@P>b~;(xsS=Zp33+@s%nKZha^}YSqKM3FNQR09&BiuH~Q6F z>IpS)Oc9>t;_&JH1D$6GIlikd>KVnKCNCjX+fiG_r(J=UZ!T2E3aa4E(){2vt)~5& z12q5K$E5HyR4JT+6^jQhWJe7F8PGy z>o2lJB?^xnPwg(>6^&t-A>D9Tju$V%9|o5P8UCtLc?7h}3)nJGz(UySc&h!5%}+(O zg+0vWtVK%Jx>iK|XNNztC)`$n!E9riwc~$P6KH%vqrykk z;yj5E7({7%Zh0+&_W<3jV_Exuvtu$;Gv3G)f#OeU4DO}zY4aSIpHa*Bib$Mtw7`D) zGHOK5g1JY(TE4Bw{2X>ehY)DgG4gOhL0=w&^%SBw&GN%bliC)kRm` zHb{dKv(*sc+-j=0f3^gth>mI=z`q?%c!byh9`1tzHfdOS7lH~LZ)cdDs&{P@eB;)1 zXvY2!T@`mh`-I=B?-e`sj2~pdNDtW^g&+vZ_1G!da5x{r{c~W0>C@Ld5SXvh6FnW+ zF%%e7JKh%2bdYc=#)Hum&}^+XbQME9R4*InRT0abnqFaOY;>B;TVZi36t|XELPZWB zMx`;m4Kv8W-)npxDj^S1DXka^8pM0XM-Qt6x)A~uKk31clhs^e7gb69J)ZA-(Pf~5h~j8|7x5>nWb5(L_rJ~e^mKEjaram({q z*n@3tGL4L5t?cWNU7Q1~Hwdn%v;GmjP`|sI6qiV9V-&I2PJX$b&<-Nfk!~9r&DvWi zV)b2kipA73V+|ErT<5BoT@^XNM)(G)%mmCQI1m1Un5Q;D>e|{VkEg>ClKrYh-(HXs zPn_}A>t)SOi}rqKeC(16w=)T(V)OiHn}A1Tz@V!FhguEoM#jXN+MbpIXs)mnJb5Z? zW`ow^7Mt|eDoItm^nZu}dVvY?enB)AE<27X^A&Ra>EZ)ypu>`w>Ov_)fDIO)$^%nZ z&=-^vC@d-kbtF744wH`7VBfN%4mH+ZawI?irq)&YW|XrP;?G6S^pW^D zlT0x1NpXVU@?tGKjTU8?KIo5JcZ-_1)@V7KzBxtQN9+P1z=KS9PP%O%+I6j6u5Zrq zSo|4q&R@Fq>98?qLeF%FMK zDh*tVYe|ZSh8pR%-hzQQgq?Q{rHU<0#Mvk%X9i5dbKbc)+qf}w|L9Y8Z!H^i2TSsO z7O8C)sYvkT@oV8FfJe!-wc(X(A32C~vr)lA5l^b(>2;Ui73mt_1GMxrtIT3E+5Pgg z%~Xc%<*7XmE(~-#f+ny0s_-N?>0W-2^R49jL2E$@R#&)wENhS|4?4e!fb2}dw; z0BNc=6dAkwwjv+jhjLKdJBCQ_08xeK%=3UJ%eT+mT~U->j5XpW);km{2_>6EUqsLa zr}$hOi{RY$_4P%*-(>}QDsx>%C9?iVyWh1HQT0ng)35ByUKU{;++X>)D|9NXD%hA} zMG4wgqZPbYoPmX)vLInDNdh1aMrq=f?FHch!LU&?2TZQBfTVZH**|YxS2ki0-PF=U zkw0sCkO}}2)}mgF*s2+Oi#)%vzsKxPLnT^(+1P@#e~+J(`1ubHDvaw0IN`kccr;k- zyhgZ#ap?m~+&MD-v5yqbU5NL2Om}{;Lc#$&VNL(Lcv;MFu#S-qwvPJE2oEO@_Kk4c zwz;EAU|r<-#C~wzts2R~LJRs=pP{A!uZbG`iG}fz<#dI-iS%4p?#EFw9(46A1Sf{_ zPMI}l&Q@19!?uU+f)r{|{~izpd2k)dd9TCNr}tTGc`WKWFTRl>PsZ?m32r41-8h1z zNq7d~vGy&A&dS0NFilAB1^>{(TFh@#g4D{dD+OJqx*vD0I-2{YIOU0XR70A@D$d(C zJ)k|pjFH1?7ND3TAcNrk!iattiBDuSTJp>QJg~*Sp?hC;=d(M@vfSF)>2HVW7lSrP zZ*5c@ly+Du82pw39ft;+Ov4y;LlIN`DETFTTgnS!$%}91HbiO#_K`#XhW)P{ zfwRe1RKlbS`0NFw?i#1~=!*uw?(C)O{T7+CqU?!m2cwrs(xrEyH&<6h$r$tKR~na2o52h8fjVr@GgSFs5fJpO<65C>!A=hZ+iYpUqBc z^UKS5qoExeJV&bn5444=5G{DKTD0l@^c@@N8>qcZE^yc25Svk{F^jUDQJ5sX+!GnV z_C4YV?CLc&biXn06zB%Jgv&z~nkp?ag8V-7K4PVW#Y$3Y+>4FZ7yS-tV$=!QjB)17w9-4ox>d zQP)<^-_-7~ZEic7wig?E8H&Rl%QYZc>;%fcl$yVFWD9pht|OLKh@7`KMplIi)DE;j zG{p6|wLFKDDAGfH+gbQL-8c2=((DShZ5RG zFr8A2Ya35SW;Zo%llYn5~z7pOa`DJE7&HCo8Q zOS5HUDM0I%3R=Ko*ISH4#gGqOojCckIuQWX@wXG$TSjmp)DzsMKE}?Im=oTUSLQH- z9~nEIEA|iP7*AG+@8|yj*bankUA^Q`i#5!h3UgI*oXD)OOTtr?T$;O{0r4bJZK0|! zd+i|y9}u2mx?5uqpYrXPgVCk$65C)YqON;ntKE^5)a(BIA6!m%Ct^ ztv%8r-PuAQ0?m-@SH+k?Qt!o_C?}_TCv=*q-h#u{MR%W#ObicD0@=xz2Wk08*`nnc zBc(}4+E+yj-pnqye0pO}%<(RQehbCk2b1Mu-65p-Cu=47Zw2?$$#h3^QDfpUGY zYqT{3j)U_PRqCo3pSrr++#W2~IwdRyMhk(QPRRfuL?Yq3FiWN+-- zWjE)EFE0oWMZy?E;&`NqS7cqRB$A;HnG_Wsh_FH6YxXa0 z*jHOSz?i#{aH)UxG*cm@>H$9lAs3;Fj{v(d3@a%wi%sK$TuiVY!A@W;l&xq0Z;j}1 zBVUW{#$r?KO5TJyF~Uf#M_I?n!C{I&0;{`>{{aioOq#*GJZrj3@{EmMtQ^~9gU98v zFK;J*3W4N!x=@yH_-|xVpsM?f4j9e|U^wn^W@y$9REw%#mQYN9nQH)e5Bxr*HM%GM zfK@q^wPLMug-GMN5{4vxs{*s@06B0kP!6=*6fgznUGmzwrv@>csSehIO_YaENy!c(jyina*dLzZprY-u46{9b+7>c*m8!}C2{=`A=l zq|2HPa)1d33|{yfrNsVY87JXBEyz7<>^SHqtHQdgxoC2Ryx9#4>6&%Cy0k=S^1R-2 zOAA&0XWsIpLob0W!DUr0l*uM+!!7El8z#3r)Dz=Ro_MUNI^5d1?Tu!*sXx@SC4wK! z5hN4>5BDIKG|e+g1*X{Nw(kLr5Uvg&;W2DVX1XE)`!tP|$h2~cVHj9)jC1tme=aC# zkY-1yGlUPhY+TSdj8a~dp8@hyZ_ZPttga;P=|>UJ8Z>>IBkI6pJ0>NsZan3X@@**0 zM6&aq3tMj^+E7d@uJSyS*j-U-xNTqif6KaHG(t6y08b3PJ9mC6y@}Wm9+w7)IF5ki zN@1LIbn19-(cM#M$h8_Rd=PVMPo#lDl{Ofki&WQ4oRev(`Um97H%#lxMRX^1DqwZ0 z)Vvm{kDQ+J8BeCD4V{#E$URVxtbu1lIB0PUmBd=;xPScTZNBo#@g57E_+h`9;}1P4 za}4zNHnnbRq3Zi}S@)-LWUfLii*DMTHY5Z~AjVN`QGVdpuU{zGAh2pTNH_Z27=bgck!~M&@f}Rbl`Rw; zOHtz(tj)`-h-qM&0BPR-_D-JB%}$|#aP~M^pZp508XRWFVNPkIhY95tK}p8Mz<$%Ye*0FFyx z(2J8pJ82%Fe|+ZUN)8y)teMQ`U^lur3kE_9;%mFkw06mExKOXqq7A{${Z;~?j%iV1 z&h|;DM=(Krc*1opi)EEwj37cBd{gqo9gm}H$8Beayt z-g!ervC~>RCA!Yz2EZDEL!5`UxpiI!<)@4f&xAVd+~-j*xJFk`Jl`&Amn3P64gKDB zZup$b3p;E#&dG5|I<-Ln8V(y>1AhqQm335mm*#(T{o!x~#H6q-wjN9hPnoqdukg{1 zvwU)V!{b@bSr}l(`MX8fDLYyf!ro zLaT^kXWda6TOOk%+b(3J7O9Gr1StEa!UUURQ!V*p;fgfXz)J_yB)XXAYE6HT z;e&v+ccC-qZMy;(%y@B@r3kXn=#U>M*1ZK=7XxeEm5$Wp=BdfAA>NHR`{LnVMCT2R zk#(Z%I@{v*X%#)^j+{i@L%;<8x)BX9z8;`L#$2Ma0f$+%SvhYlj1Gy zO+7L`^kQ*p0WV9B?|%E*4lL5IL@;h!;HN5e^TF>IPyEu97WMkE=&-;@Jc;=vSvj7$ zP2@XhK|@2++Wz(XH$o9HBBgX-ImU$^^R*9>8^2?Ip0%DLR&%G-=4VsDsL4d`XqVQ#Gu$Tg&N zok9+R2<0gMRUa4IVlyQbbQWPOzvZFlT%iYQlZ(Y&aay?_a*WjOS*WRtKu%4Q7Mq{a zNZu63OoTCJYW(4#-6U2;5Pvnu4Ar%I1sxqlF>K}<3a8RIlH}Nr0OfOL&6dW8#ki7Z zWR_Ryop7!D+5C^buY&HYGiv<@O{o$?^D9#zCo&F5BQqnCpHVRCt*rRwgo%zi_|V>^Cx+o z?}_v3aq3tS8gC7q-i*+o2f=`MkD0DoaGVYbGpG;+MpA*_DZ#$tK#>SVn9lzGMW^`~ zM~W%a5(+QQn4u7m5kRj__T_dxo!O{W$oERNXC6z)@*I0)fW6LfaICF88qUQ#vv^SSzBNlG)%2kv^{nxIDlAs(~iO4>b|hVzKeCe;lz`0?}&64FZ| zv# zTU^disDusgV=@V(a;KE56YYeUdu~`ctL0I{hnngAfrCf~i5dhK;-B{d9ux)It>ujj z{Se7dq7_<7Nt?&zKyfLtj~Jno;E;=!%8k%uDKjiEh0HuFLOK5%+2tjd94m^UTTMZ# zw?-+Q7kc8E_GM-zltM45n_XT~;8J-;=F7p^LCaYUtJV&Jf$%}J;z7oW52NTG3IAKDImKr=aHE!gpp)A*k|2(9~YXW?_B;1zC3aN~- znp$cTxHw7}!~l!@*zSt~i`I9jSxX(Sg+C zdBGaP#Cx%|N3lj*b>RdtQ0SjM5<|aMCk9}m#y@z+L@T6IXW=#CV4h9;^}V{RD}F9i^h>4sJCMt>?-MN!V^ChsLSoB zV~fK!dQ!yqET+X2U!SVET}G8nBD5@vd!;L``p|8^v)MxlUS>eN{`eW1MyYt_Ui{-w zwZfV4X*W?q;mCs6uA*uf%aqHN$C6l85nYpD(q}4U(*fx2zD-DaT<}7u%uN+rj7&9& z+7GBu`l{P@_+kfL`xk{M;7Jk{1C=cC)&(f}DvR_#`EpdBkn;!K)`o==^v$00 z@ESEX5t&YLwwyOd``_fh8UMqxvBcWsUIUW~J?V@4oE1Dm1R9PwRI_H!hdm%q{DcsK zWHBz3oD-X0>pz?C@zvU7=C&=lvk&3DW!Z?nbT{q;QH zxXpZ}awi+3xXFRaMzmnjJQ$lhY!l}jx-WC}2%cQD9^_XX2Y=AX>Kw(?;sp)-4dEGX z36LX4sdc$^{p5E^cFf$sraA-S2Cd9Ps zp0d~-GrLrJYw;=v-a5l^P$JsM9PO%AY50@ajds9=V!{9b#K%y^T-#N)Y!9Bn->}DW zG;YjpH~+{H%FnliOmkjyNQ#B$M%XlOvu&u9{%EbLS6oKGsNs9CJR>~pz0AO0P&n0o zrbgmzo1XAP!Nzg@>q@;wHs`UxXpz9iKKZJ>SMjY`k9&l1(0jTJMTURgj(@uT zJzQsHhc}DLXGtx-wvar{kM$89Il*!rcN)&8Xa~>d_@2py=h@zy6Cg58B9kN1MnGQ? z9a-N&G-Y9|k({LJ4NLK0n{)a|j7*B-R>kK+py=ml#Rq!jftxNjuz>G!P>#wvkMjyD z2}Womi7s3gD7#w~5}9c#t~Phu2sAUFdY}=L{LY{_>f|5v-QWR^+iu*2!vfH2ni@nY zU^USI&Ut07L?j=Hf0hPNTU<~Jk#pEb=X#LCWfSDOE5M}&%n_+7NLk8dHFW4a+Ljcv zkV8;}$Gwp=Rbe-I$WT5`I?Sb!^>AEZ6`YqMqEp*Y20Tz*Q4j|4JWY=+1uTNsW;#8} zNY4EzXzdKpO_j65p%iW8pch%q9iAp1)nXy9mZ(se&|6y9Q)bO`HWpsk^7F5_NdX^r zb>v#OZOdGv+a<)W$Qgn$JKGp{Xxp8h?TaDvvJhIgK^dFJJo!P6NEg5EFT?! zc~k9V#NkX9{x$k#1Dw8TH z{#+91JP0A^phC{^g3k#jRt^8_y1EMbcKnAtG%8?g)O{+W_$CesYP2n({$S3s+S}`5 zJK+R2CW)nq&@vncf++m&7Blr_585E>Yy{S@HFZ$mY+NuP>PV+OcLDaHXZg;$N^x58Jrh0Q0=17 z7pdl834qG!%a5e&h0(L`Q=sSG-Z4s!Xf-YorYH_;QnO|9? zmM}}K;$|TaF+GdgO4rnC(6<@@V4fc+ow<%kkd?c$)1`HCjq>Ud18@t{D3`>3r~&%| zB=De^9VX~szjrBOP*LVRT`ocp2XMHmf%Nj__mJ_f6x9t5C+!cV>b>itluKeNjzWnd zpr~hKFAmo{8thpSXG)Z+(OV<)ta!bJvz$d5ZJ|G*|2JVI) z-F~ybfB!zJoCPk=65@oAhqAOH;6a3UXs7};TI0iOxct;*ROszig+MMe*JAn$Tk0BWrfkN3d>6J+REy^=3{-~!_Ga>jlk4^;2@mG2>CksEVuW#4gm(M$ zuV045(;5cXuMr}eVU)qu76N%B(&5_Sv}=%Med2(8O*g^&_l(>YCi z3L(_KYdC7{n%&#QZ2wdA80f8OfeH+I*F8IQ@wypqw&H}+{n#DQ;?Uv06Ook@^!oC~ zTg?kC=x?#Iw_MKT`S}mb`SkFTdxJPr5#bKjj2?r#gX$peMDmF<2&wjcr@SEq$8O8d;0?7G_=jMZ)u3Y>IL_ z*7esRLJlRI0QqakyL-TABNCr_E*&Mox+8OpQ8Kyn!ZRg)EJDmFk@=0 zokZbC@*S9Q2}w3eR&??NYJtV#b7Ofj-EXzS-QuhWWET#gTTxNG7i`b?Eb+I?(dMPJ z=;jO|;X>?U{sSMF8ZLQte08Zq(R`^N-)CJB%|OA@>z_ZHt7OaLOj~|{M-DbF>|tVP z)dFaNy0yNwqzK#cK&6c4Q!9>TTamJ;Lr7x_G|fb@1_O zV6FH@8pc*s_rz(~Aici4L;KlkgCjwOKPCyw%o~)w;1X5H80Lbv?`ah<@FgrXRWhIj z`6#gv4#o4v1f6LnUqm(y^x})`IyEW*Iq>{WaTym+>{{HZ`~jh7TgJhhCoTBD#njGc z@PqnHcbuy&BO--HBQ4~Hs4zaoc&6+Vd@dDYQgs)eudl6$d@%QoRuueLBi+? zL3PAxTWX^;#O_)7acs}-3)HpY87Ja%UNQ||`@@F~AE@9i{0lUL{+TBBm9xWoDe`bxBpbo4vQslz z7xp1%dI7a@T?}44bwpVSpJ*YLC_;JXIKY2fmZZ}?e%|GXN1V}QzAjth-2qM@aKa`5 zgEVnopQWW<>Km~2a&Wu-4!w7ROem3_?kyV>uFQ7z4zHd(T4luwrJW4 zh_cf{COEj`5rYW_jNet1H4`BR-i^@<2GcVw_{=TZfHtPkG){Q0x}`64T{s{_O-z&3DiJXIS9P4M8XMIwLC#*o^cUN6GnxqsUz90|H* zm=~V1i_kTZw@B(Kc`L%GZEe(#4ALMEwCWOF7{y>Wo%lf*A{8nnPUP4nrwLD?bZw${ zLk?^nC4lyy>@-Ro8m174xr6R!FK%|);d8JFs%P(kaVGZMrpi!V~xNh3zm%RmO0SKupNPs!$dWVK8!teJUeQGx?;|=s14r*S}0c! zSx8`OA%w*Ud#0IXso+`DY?o|>XvY!+-Gtuo>`>+3iayfGYR`KWn&+oqQ ze6H_N`ovWS*|^jI+7O2g=78H%Y114i%fcQMBg$w;DhrF#?n>X_fBpMwU#NAlKpER2j<3}@GaM9c zFhu}HY3k$eZI6C_{W?B;Uu7!lQAFrD=BDz%=Wxqi+8xu$pE7_`OiGf0kY8gEYjgo% zDux`6tGTyO{fUv4Jca&r+@ZD@Z3&bW*^&DJZEBkf=o~>5L{SvWdEk^|)aQf%5$9xc zsnE!VP+1Bv(UW{mgdJ|^{`~*{#;w`^+;GmBOTy6Jxcp|hI%d~DyTCZN5$Ll}WKcwR zi1_04d8rnoqha~Ing#YFK2>|=SA%f3qoag)&>$`+ z(_zPX!+~?hOVM$o>#`o22vCJdE+8CpQ5oIuP1;c;%J0JdBuXln3V$W?hBMYJ=mYr<`Mzg0Aj8p{?{L(+Zkhx8+RGt zmphEaNrxi1a5hWW9POE&u-E!u9b@w1nh=TK9u84a46s3UC_&-%WRE5e*3B$&z3bPHn>QT4stPJP^CZ-L)DV~tyhGxm zp#$3*RE%BQlCGzfu3;w)-}Kg~f}!mY2Ch(`%=!V5LE#Z>%6NogV98-szPA0AcWcIm z1>)Qhwo%037Y2q?MZ$IE58M`xEH;>M<7<(*dsx`=+}SO*gKII;CMpSRWSZ`uW82?`?tW6ei%(CYy1cSAlnkSK`!zekeue=wH8o?ML~~pFdxe43Mlt zi$$6K;?;|>4G4x1n*B745C#o93vQc6h-xNJ*y(tt>a}) z)O8OGrU+*ibOP(^1lHudRqS7gisq`*ks-YChKLH@vc>RH6ehU%${(tcy_GfPe55F; zGL1ny^Iv4A@VDWo6`~a|hK{f`KmvPjE@Do50C|82t{qK@Hzo&iu`Rdrkk5!Q6qX8x zVJ<`elIyF0`0MKR2Mx}p;RU=nzmCTWCA98_TC$L$fU|i+w5|&XA~^Ya8;%lKxVk13 zLqc?bL7Yr4@oE}+vIN1+%GfD50P8vT&?Sy9vasovT5EiVC(qF6RKX^CrpHfWp|p1Y7Y*J_aBIF;f8g+h&_=r~`$ zmc>BUk?Dyv*f9VyL2zDQunPqZXhA#MGn^rI&JdlWyhvDMOAPXEwiEKmQ|4;|Udn{V zJWooKEOTfFi&PYx`F`?&ayuZ zvjQ@6(@;265w^=P1i7qJ4r)V$T&yUo*{&@^*ba{@5QRNnimcGfN0}8svgEaGZ=b*{ z%8-Az;=?(&&GuFd@Ic;A$qzNO^H5~Cqzhw?AEm)DvK&+JLT%;fU)o(?Z-P44$BdWa z1(M#ra?OFwoPzwUv$n^r-?*^eegMm(}t?O~dQ8VfQ2 zAR}0#OU58Y2R;s#+_|lgv|Y3u;(foCt&=82c*gP!lZp21YNcp+iw@PtcC|xKjRx@39`oY?8!^% zsjGqeYw~^@xGQBOMFa*r*u+_Ls=2PJG}3}>nH3><~@IX;G zM@6Vx+2VS=a^h9tk)CkSBZ`2|L=+{15jc))WEn6%~2t-qe z1Iu`+?Fzd7n`$cUNwBU70bB9nnUWJ*Vpd+Mt2?;myQ9we#2r?H^!b8lwVg@%`yIaYMZgAr%p&AH`PrI*N&M0t$^^B!xKFj7yEqr z0XiYwBqRrxAdyu6{CYTXHsu=KlO$I2Ydm!1z_sd%oleUg7(}qL9*Z3)!MI@@Y^dGy zlBjwJ$#UBkL|{ish4j<9raUW!4A&NU;#~^%^cyUx6h32s2${u`AI7uChd#%KXK%uK zw7{aGd6f%+uy zV8OBR6JQo+K|-{Pm&1Txw=9YaBT{y4c#vfhioDNyt2tt^!Khkq!x7!Vf zD+0!~<<#s>fuz~xV~8v;yyXOlS+t|-OIO77ZXl?s(JkS*G%R3=+zf@=meRg5r?ddo zn_|N$nk5))WM*x)WzB=Ih2q2EP4CU2ypf+S26GXh6PSh<&(@7S<<-4$K#m z6tN$XbPb0LM>xAAnY$-P$Q@9TL$?*GxidhV&RrI8YUbgO?3JNsTacuL-ptC^LQxeW z$w7h9Fm+Iz8eZkzn!4W^8N3~o3p7$N&EPGVO6Z(ei zfd(aWfe+9P@xX{q6{+L0qwy*^ZOnIsL@`YiYwuQz3 zlr9{K7+q4yAj$#mnFtA&m`mfr%dj1MgE40t`(w^6Echk}^n}6!Y30PS+pbP?#YT|h zXA*M=nHejHY?C{)Irh`glih8?qXS=QN^e@%MfQZ(D}$G8(Tpe#?a!L7Abgw))C-Wf z9iX-|eAZpUxS%?V3L`r^&5J^}%V83o$zr}_$Ew)8STHu(dmneTwP`LaXY4CBwaqaa z8MjQuO871fZjk#U3-#;aIdxEPVe|Byi)UQVqz;7$O$I+?6%*5)E8PUPt-+Ob%Gx?5 z+YrX+Qsr9G>RQa8T%sMo?Q@Bsf%> zW8Xb}$d^+uxKFPof7Jyu2K+!7FHZqUODt=1|Ni%%{ZX2%3q9Y2E@I+^#CS%sd7F~y zp}M@%adk165hi6bK3FOYR6J*)K-7eZ48UXLJmp-{HaYffLtq+lniuDk3A3zIoD1A> z2WRKkSB89Ybb7w*J#;IOgxKuXRV9;7NOagCx4In3DWqu5ejFkjmyb|q_*BN|F{M{h_e$$*t-nD%N-JN1!C$V z3}z%3NJ3H3>v(2f4*el*Y6KfEM8+^S5fKMNcc_UB(5pft>78aHuB>9rRnSZvyV5=O zled5W{`Iea{i{{MkZ2V!4<^;}!dQ~a1o_YoR-00!dUUd|E59$y9*D;yoz9nY_pn8~fp@L!saI zW<(hdtu@GIRXKmn*JU$tCT*mhRK$7c!fTI3eA@(HcRvUUk0;ep{u2C>eJ zacFeFCjn=R)I37uELST)8u2oysBlU{5t?2hoSRDlX-HR0nAQ-PA3=dGPZ1=~%7shJ zsyxJ3LB}Ov&(LL-k*d)!9^A@WLYY*_sV>R=OBYOj8pY31cOIV~{TZtzn(6?6fA#g1 z4YAoM57@3YD2H5yiWLJI?KtM?qt*wZKo>w*cprLKOh$8^KQtyA3TS}=I@QLK3PXVq zKyXGm?^nRL^tz6;peAQx2jeo~!5Avv7?A!x65 zrNV@9n-r4E)0DyOt{4dmS0T|`lQyCleG9F4e400rt}g0&V!erzirK9W>#a|^NT`ogL|86@$dYL`gX1&;y19eO-xx}r2aUZDBc@aZfd92opCLRWvSCh3vVI$>n>O``5m+$t_Wic z>rH>G>w~+MXhAq(Id=>z@46p>C^B}zPJc|49M;FflJ=YpLxq5fsfpMqP^{l&P!XX6 zqO7H8u}vEyYKzGARny97V}EYff%4vpP4IxYDVN)m^s`r9WQFLv<=cJ9=_XCk!P)}> z?kmF{&|{$<1m~+Ll!O6J=YKqG;AB|hLpoQ_$+F@&WP!%al7AQI9Hk81HT6A2vgW4K~v&Q5#HV%%r z`A7wH{u7iz%~{5V11$j4sF6z*rI7=Pico0j!9(F4{}343vK*>uDa~a-iHv!YB;C=5 z>agChJ0?|{0?*5!pVJVbT_4yC^Yng?vBzPf-QgiWxPXbHO2Aa}l=koR$H+!M)`3Z7 zALk!O)*D1{XoXko51#cmwfJ?-SObocl5RN!hO%Dapaurh!+AdbK{DwGr0}m$T;FN{ zb030BDg#ncLM1<&r+y8HO=ezLPP`lDGKLz-Yh%+1D8Mvpt7uw&MNE}KG51$HyC`vR zn@(Z2qsJ6_sC`RGRW7|F6qhH32O6!~!?QyN(SHH-H6Q8#1J)y{lTg{%7(-G-kX>Z$ z2s!R>+HK;i@C6VWk=hA zi7bjHrDY&o^v1Qd0^dV9gbRJs1Ow&J1Kc{#SQZY^ee(enEW-ku> z5C>wAGsWU`%u7!ELiOVrnnEw*Q9@NPva&lwcY=^RdtTXdViZL39;Cc!E>r5_9F=QP zkYmw-M({}j21`7(QB9J%&HXop*guU)6JxrMsNgHCi>kRCo8bQVIGlw8l?e&gqts0ppC$H_1YwJxAnAM9X9LkPV!a??Va#hRVd0WHRy6Ic zT_6ckCO^nDoZ{D!y%thWWjS@Udz?(cnF!tK+};AaUW~;3)nr>_--<9D{6pbml);7< zA*UTvhygK!Y00bU4;W`UV#$hJkj>5;rs%0d>s>ab-VcSc1cxmMiA^2#bUop>lm)Oc zEDv^!bibD(j}nn>Pc>AwF)qG}tcN7KeK(E8;!d|)Ez8B%;o%{>@WlOlbU|+Sqp6W zUK-Qv&F|9atAB{8YKD~8&xRdF$137nF(;U`G6DVHRobXxiKiAGVZ+Izzal$=b}C*K zfn!#6sc|LC(p3uR@;TP`TMaC!<2MsRh6kWYw-lY`=oAuj30X4#N+81DIfv58$havD zR0UpmR#LS{YxMU)Sduqrj-x64^1V?l^vq2eA$4aMyVySFZw$e0+5=7yG_u^i=t6eEP3_Rp@2{u7+8o?tyNA?=2K6Eyj)*fJ6~EOJ)5&qXa7C znH4gCd3lCyQE@euQbR`uS{^QEF}t^esA>c?kt5s+A#wqLk**$?(KJj!7f}!8SX9z| zP{G>b8e~SsWX54%HQO6T#;5(L(uSxOV&=j~dPwV{8qdMESPtc(+qp{)w^ z&{DqoBh2#LBM@|+zPa&r4D(m8#FG3E2qes$IeDu9XD%W1J?}E_QK!Y8g>V-4!95X3FvKj&4!sVGX{`N z5z=R~?J14*AHA13X?jMjzy&~ljURNaB>P2aBWAuaaJ_u9A_gOUImCg8(Kt`;4cG5}4>G93J{hMIm94KMJ@-CPbOXc;+Fb#jc`&F)ZfxL$eopRYI<&C5y&J4Yb_{4M@~X=G$nuugS$0V zRgGOVHoDnWjO zKEdwRp~7HD-CHA;EyBLR$oBPl2n2M2Piy0zg2NJxYJhDI-o%hHSa6#^H_klcSx-#~ ztPNID5~!d;aezYHARog*?wmAyg2$M|nJ85c-{U5X)rdD7vA-sbVy63g6A*wDxx`Sn5 zr~zOhx{Eiuu>-FxLd-K!d0Ye&F3+T?PlY4q=@d4-0A|6*MHT({m0tt->#KCcKQ`ru(92iJtx2Bxo?6LngRI0vpl6p=28LL^{a9DkQD>){`6(FyP7 zC^jH`NDfRH-{W8xeDDn<`{`sr_37ph5IQMBN|8C5;#gjEZM-DSa)3PNl2bxmPwsXP zi`SFBx4+#T^kV}3HazX*5O4Wz69XL9WD}HSA+QN~wSFhuOw@A>I9`-N#HDbG!1tKT zsE{bfQ7E$nA#jYMOspo`oFg24`Sd2=7K0h*p&Ljrt}`olY%Y#XtmO zi`{LD8DYs7j>L+5Ai_uOGUH%Hoa|<%u0m`QJnf|BCg9Ku9(j~KjYsX%lx<^DQJt+o zzIWPgUr)rNpqfNO5h!V^4Ie+G0HW2}(mzZ51_ZqMvUTq+&(OlOfO$0j4031lqJ=*R zT`uz4-eH`Jm9e83W$+h7`Esl5$uSacuIA~et7p%sQG{TssLCCBC&XnuNF#T4O&fc9 z^}tn8w}ZvejaI;>5gO{43*eq-Z>*s#!n?+Cpq&f_AXa z1Rax>E?%$jD69*Mqh)T01Rxe`w{KCh-?gXChfS`qfs-OorTqMhxy$EcMXJFfS1 z>|8lQ9`iU)hx1WrK&{G7Q&Z)DUWTg0qPpEuu>s@t(4SypAyXWPW+nUvSsry%v0J80 zm>^j#mbRyVse}O3kWvr49u4Knk!jI2C6Q}j0%G$xz%p9F%gheE6!RNg?+z`9-J`5M(96=!(l+45KBD`)#t&}Z(mJdM46Re8 zD2=6B(;+jt=fSMK4q`Ji^+qXMR4ahQBE@=qs9`^>qnWJMdQ@R2T>;iUxGjT+E;q1x z>12BcuNbVQ_v68h6lzT#hbbsOzN z=wsYJi!yu3+H}&%pu|8nCjokr`@uFiU2}Y={=s(A_mEuiY0J`4g*%ym$9av|zo^uI z`c;>+8GE*-o^@*Uq?le8}G4c7LLS9Hu>ZKC;`_&P49V;~`SJ)rMHaIMTOGxe&}mWtBa%=!(b6Bq7{@2apN=(;g*+Q8`x#5%YjzR$=iL&X(=1*^pDm;&G_M9D=(n zeue-QBhQw@AAmE2;H0+$&Uhv|SZ{xA8SZsaZL6159j99%rrlClAeOKQKE3t!ecQkz zMo8mwNOI3d2PiQ;g+$Xy3)|()=)^d=3u$s(-!*O=tr3ZR^ZLXi_&kkw?+_lxH&gF~ zRUZI?biB=7cb7U;FOX61%{>R+Mdy#8Y~3OX&Y||XxkV;M+wr}i*5~yPdvFTv`NKtr z=emXJY-|th%h;G(A{8CjP~29Mg#-Q_A?O^x#x7F%8NMNfvk~;XpnZz9+Y^Au00fR$=e~k9P|hq(k`zmNhUh4u~Spw#vrF*j|gQ1~` zy)*JQuZTechqxcTAJ{6l>E@|L{ z%Y&j?bTi$_=XD;>Gk?^M74_Qo#sX((oGGRUGOp8W|TnGLX9iH6!~;<>AY!i;9Z8LgQxe4!_iyD zoDK)GAMvw6xM;I}q&VvPp^mt{F8A))Lzma^YXfLuXmv zN2AGe(K0k-)I)-F||2AH;hz9<|vOdp-?fves`dsme)R^JNcW& zmHj49VOic-Qz(+h&XEIzYj#5a=e!|xM}0*~&;;gIlV`g4BoDZvKXdO6)&syer=kKH5w=o)rdm8vZNc~8|V5sP`L#@f8x;O_m=DVYiu3HxE{4X(=W^_ zI`BjPpZ!7+L&j>3M`R7=;3QrR6bpRL(+F&!RuVXbO)$$eYU_*(NP6(#rtuVPv89VY zt8hd;=>3+vsYVG*!*sT2}u_cD0|76k24M%1RLrvSV$(mWJIc)xwV3EHISZl}zjvYqY1BbfFvg z!_&#rYkh?+TeXmd!=F#WNKf&+5#B-Vp?g&|;2J#w4he=S?;Ekys;L|*1IFYAwiy>6 zWCF#trvJ9 zq4Z>VpBxwcM!UvFcrPy{1+Qk~XZRc5*$lYlCAPM%@-Oa@tt-kNm}pxEJ#|@DTOI{b zJgD12bizPgL~0$vDcu0YxwH^E*!OM+YuIf`tYp?U*cgun$3l1-Nj0HVzgg)uWGamp zS8JWB93RMgDyCx${Q7SdPDyc7*s>DX+St$LZgsj9D>@3GIW|)eKe&nu0z_aeK)m5*Io4Hm`wH*2; z2OQTGJ#6EP4@4>VIx=3{x{=&h#&h&M12_L80~#eXQbFcGu|+ETHS69mH3(uG)bp$* z;4BAJi>&}nFzzM20UR_vJ%yd8CKQW-{WlqcM+Ghsf)khE14xTSUOShA)z)4wy@+kn zCc>LODF-c~IeeF=LO#$DL=aqiyZ^uEfcxG)+@0ImG8PjnP@&z zQ`CI+=oh?t9gmRCNmyvWF?S{n?`}EX^P783=S=k2uAFtj8Kyp?!)OVbjH5eEdVgoViCJ9%It6!MlBV+2e zxx_w6)|%2G_PQl)+YFfQ*3O@Dbpc4EL2Gzn_9{U{0jqgq*Q)f8Qp8O8ek*P^>M3*Py~C znov%>O}XZBIpwdNZHDX(c-Jx?P1cWhZxFp_1=|^a_cR$6MuXi4&q}LVBmiCZm znnpujm*?R1vA7i{Q9D|K-@|dyth|>;K@$PIf$Xtw_E>Z0il}E&PW;L?Od`bmwoL8N zSWb(z^&=q_b>)t^)#n9U&7-iGQNNNFb?DZQ5=c!GHP4u{QQ}&}go>Jw2Bl&P>#Jex z8v|bl8Peeu+qj;ACJZ7GhHcMT)JBg6s4Xfb5Tq_YG)96kC-Cr-_|qJ=tx`UvBjkDMvdJQDt0GRuctnE_U#OaHWpUiB9K+6yUzy}xCVL%i z8p5`=u#Tl7-O&P_f@V8OfrwOQCN#Jh8O+88BOVETx~prU0ByOdE@SpGh}B>K4o=(T zd}nV$pkldZA*$P3?P1TlCssz~4sS^E=Nh_DJfV}ON9*{&WOa0E+ZX*NEG2O+m$>jg zRAz7sv>oS>k_+ikxyosqT_JC9r^w;g*|glTTwl3Q?V&kT5oBo-i<7i1jyb?M_&pjA zoIrxFd=YFNP%JFgUYr9Dqt2uCi>zzJjJ|>UBj_-sc{Bd%!?8EcfF$j@Oe*asI%!E+ zn|aFyHmKFr&r|w2ZB7X&b}Rt5 zj88{RDD*eU_0UHXcnN{t76=TI0HfQj07kznh<*k;;+cY6TkrEm+h?VMX7p`&kw**I zkQmPPx)GRmSf^Mr`vp320WNNOS^&h?`>HPDRQ7_Pu6T2(Xa;cOAn&%k*i1DdrPMVI zVTj73-XBf9_mh?o!GjenE{6|N9Dy!1&S*1>36-hah%Rqp+d{j7;bpF|s$H zu>wBLs{95rKK&5fxqXN;Lpr3ukn39<8-W(P2Q6Ca)gHQ!(XnYJ6XPbv%lqfRt{}lp z)|&=Zx7hZPn1i?~M;s1p{9~Mksn*(tbzF)g+S;=+=qru}5Sf;S|`C$OlL7t@_KRI73YI-5OvXt!#2SIAo&`CR#l)9(0P3i$bw;7EVMnn^+l*h)y8#&S=5O?aGHj zCIq@hj##E@LYk1!J~x$294Y&79nZ|ucslB1Hz1I7A^|F&jOfg1 zcUUc*69a3MWtzhyMvqQrV3+UQ5n~GA>IS|sI7_&6oB8=5o#QC(OS!!a(A`Le&WZXA z?X)MNr|NPC^_ye|B9DgZWeG4`^atp~(PqqHx56fiQ%@WOBErgeoEb2d3rf~%HFze4 zKRa-p6juDVWiKMD;EE6`bGYrZ9X!I#tAdkk?AsD}x*D*sspBQoC5v@HPAaTM6i_P? z&8nO=1QnY<6@VLTvDczjT>AfJSEzHW+97tWwA0VAccZ@g7oZSF11n#2a5zJ|C&aVA zQ+Q+@`nw|)z&0ajL|?9a%!-s32it_A+Q?B?5g&6X%0lj^Q%|y3#$#@9L%I^yL5ZA8 z$Jd4-ubvW|eg0uRpNAti%SrM56Q575I(Hb7Nrhhx64s41$iAZ9$?OMq;ZTb5g79#M! z>yA-grV{033%5;@_o8_SXEu;=n!m~YbicSVC*ZwyZBCD#nUY$Km97fmzZpE>%%$*!v{3t zvhaPD0m^J+25W{fp|UjpGiFo4Yy8?dxi0<2%S2X{rAU%`kJw%Q+IF7bP$4b6@u$9W6#H_y3bWuQs`G(a-{{$?T2$Sxb0SIordhv!^e^5=x`^cHNA&tR3y8~-n+|YMaGoB zE1w!1*M`XrE=nK=BGf>XR6Nlp1sG;1PWWLM?@<_I;Z zH^$`T5c*SnlfOeI1U+#ZFKV6!;>mY@oBh0jp&2FYxNS(X)N-1bbCI73AM-*_nh8AX2%@3S;BTZnHi(d`6sds z@__Kc_*3xuK+tQJJUU;`Tx*dOpP1P;Ul>auqtB5E!DwS~-g0N5oD%Y0_(-3gW& zLJHI=xChC1c5RTpN_;Wq*Ie%F%Z557SEN8e%e31RP}ZT;YC@j9Z;}J5iZ*%Uvg@mV zK{FI?1NdEWT{$69o z0m0QdyOp~spd4EDx(;z-Z`f$aCosqKlc3Q~MGkOSE{(V>kg)j+8#AuTw}dG}r_|q> zP=@rnKGyRdzUa%;1rF7V;M)@p4)shWb5m50lG-{>K?hDV00P0+y0E^XmZQEhN8d6(8_F> zGzAiLKpMKYl8419*i_@urdg&_Kv4plO7l8eP`pfPC}xQM?p<%>j(W0e zhX(Qe)I`2PM|sb`)E&k9_Ur3Q2Y!6euw0Jk9eDSfQ3s@;N=+QpmneaKQ^Z30)pXr_ zhoauSn}akRjl&aUStp?IL%|1PMl&ya#^d~Z?dNsVznQafdL{*rDNC7*Jxhd+8;%c^ zfGih)1P%k?UPUQXJ26L@91hPIXrjsWJKx`r`t-Nm$Fbjn%V>}2nb8?@&rIm?IJmu2 zaq6R(k`A#fXy3P+yvnG+x7Ypzp$^OADQ=Iv+YyweG6q9QGu2`AuSg%4g^IM}NfOJj zTZXBW%>Re|e-f)yMYQi()8tzg~A>X~vb}QtNiYA?$eb69?D48#kaTw721j zj@CoOmMdPux32XqG7w}$ zBPorH+i2qnRu2tgh!;q`>A`Cb=|w__h*0pohR=Ht!leuS{kDUs$|3lvb#$ab<4?BV z)ivqEato-4(f|+jPj?v!6ah{BG)?z0b{}Ckq;2*3g3Q*pJJOG3FU)xEUFT^+zn))T zzn+=hGqO}3LY>~$aza-4I<8GMp86Ua1#RpB2cn?kTu)V;jC!(ae&7P0o&yHWxPN#? zy_V!`0{;k|T#p>=Z+o({Ure)MhxFs%Gk^hiBC`IcD#dN_HU3h(h%zU?vzmr>K)1{E zV(>y9b#KsMrVx}yR?9~o^=QiYf+^-Le+m9})GY3CY{Uh!r%~Cq2X^8Is3X?P7_#u_ zZ9I8cqu_^b!s_b{PpkeZ&HwYF}ntM=?R;I*ed&N zCq(WrMN-<>Q|h~RJU1hQ%1+;IdIHfqi`ATIc((3EQxp#T&~BcoRlX zXxGrkpY&$^bLlMo3vMrpe`gA{?K})py%0lC`#x_G93&Ggf`bPkOjm7-!XP-3t{yiBFz<{hc@7# zG>Kj4#+Ev{oX!@;1n+ci%I~nK|9?Oqf@tSf`bi3xJBhi{%x01)hUD$H;RhY_fardW zg}qv9_j6tXe`GJFA>#Js7-;eaQn`lnI-H2ffUR6KOPTM^^ z?R?MM_wi`^v?Cm1DRZYWau-b+A7n=FBJm^O+ldOoy|3THKOm(QlbJI`#kV1BU(mzN zh{TXuZXZXdf57X9yJXMn(KTJ!8x9@}&XQIQ(_N-wx7dVvM+(7vf#38hp-;XKWUJ z1`z8&TPHQ$C=pF?ZE`ml11IWS5Y#n~3n4-dapazugTq!KQu|?*rlR;y3E{i!=T&#?b9d(Gvi6A zjeM6wROVF`He`ANMEXkpR(T@UGU)tg6EIJceDV~RQvY_ zfgPh8S|&wKX<*Dx=#m7AD|b^;K_Px z!JRlW@bQPy9-n=Fu^LJ$u@+o0mPlE_&6Q|dA^6-GT~0#IGSHyOsjLoZkWnR5hX+q z!|>b@^XuyWe?O4esjJiuNAYpm2u|f$g9i!2_(VkF_nTjc9TtM}{+1f0F3X*_lMow&I=`4N-m@J%;n~TodM#3Ol z@~WIJisC|h71mL6Jglbc-C6cvgA%rK^HyNFHGDIwAN|3mREG8;K-ZVhNaV?Xxed zR$00ng}%Zg&9J<}RG`lqK3P9Rcl5pZ=<^9zEBfPCT5`9se7bn*P3Nvi!&C_n syz4)3QUdAsfBoY>{{4Uc`~L(O06_sIVLSiFO#lD@07*qoM6N<$f}V_OzyJUM literal 0 HcmV?d00001 diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/images/wt_yellow.png b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/images/wt_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..b48cc87ce7d97d22cca026475dc310056f3f5c49 GIT binary patch literal 33409 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 '') +{ + $APPLICATION->AddChainItem(htmlspecialcharsbx($arParams["MAIN_CHAIN_NAME"]), $arResult['SEF_FOLDER']); +} + +$this->addExternalCss("/bitrix/css/main/font-awesome.css"); +$theme = Bitrix\Main\Config\Option::get("main", "wizard_eshop_bootstrap_theme_id", "blue", SITE_ID); + +$availablePages = array(); + +if ($arParams['SHOW_ORDER_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arResult['PATH_TO_ORDERS'], + "name" => Loc::getMessage("SPS_ORDER_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_ACCOUNT_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arResult['PATH_TO_ACCOUNT'], + "name" => Loc::getMessage("SPS_ACCOUNT_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_PRIVATE_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arResult['PATH_TO_PRIVATE'], + "name" => Loc::getMessage("SPS_PERSONAL_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_ORDER_PAGE'] === 'Y') +{ + + $delimeter = ($arParams['SEF_MODE'] === 'Y') ? "?" : "&"; + $availablePages[] = array( + "path" => $arResult['PATH_TO_ORDERS'].$delimeter."filter_history=Y", + "name" => Loc::getMessage("SPS_ORDER_PAGE_HISTORY"), + "icon" => '' + ); +} + +if ($arParams['SHOW_PROFILE_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arResult['PATH_TO_PROFILE'], + "name" => Loc::getMessage("SPS_PROFILE_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_BASKET_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arParams['PATH_TO_BASKET'], + "name" => Loc::getMessage("SPS_BASKET_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_SUBSCRIBE_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arResult['PATH_TO_SUBSCRIBE'], + "name" => Loc::getMessage("SPS_SUBSCRIBE_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_CONTACT_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arParams['PATH_TO_CONTACT'], + "name" => Loc::getMessage("SPS_CONTACT_PAGE_NAME"), + "icon" => '' + ); +} + +$customPagesList = CUtil::JsObjectToPhp($arParams['~CUSTOM_PAGES']); +if ($customPagesList) +{ + foreach ($customPagesList as $page) + { + $availablePages[] = array( + "path" => $page[0], + "name" => $page[1], + "icon" => (mb_strlen($page[2])) ? '' : "" + ); + } +} + +if (empty($availablePages)) +{ + ShowError(Loc::getMessage("SPS_ERROR_NOT_CHOSEN_ELEMENT")); +} +else +{ + ?> +
+ + + +
+ diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/account.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/account.php new file mode 100644 index 00000000..34dfa144 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/account.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/index.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/index.php new file mode 100644 index 00000000..1b784447 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/index.php @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_cancel.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_cancel.php new file mode 100644 index 00000000..5292744c --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_cancel.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_detail.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_detail.php new file mode 100644 index 00000000..4463ec0a --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_detail.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_list.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_list.php new file mode 100644 index 00000000..b59ec203 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/order_list.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/orders.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/orders.php new file mode 100644 index 00000000..b59ec203 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/orders.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/private.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/private.php new file mode 100644 index 00000000..75e29d51 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/private.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile.php new file mode 100644 index 00000000..3fe62b56 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile_detail.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile_detail.php new file mode 100644 index 00000000..3fe62b56 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile_detail.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile_list.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile_list.php new file mode 100644 index 00000000..3fe62b56 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/profile_list.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/subscribe.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/subscribe.php new file mode 100644 index 00000000..a2bda0c1 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/subscribe.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/template.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/template.php new file mode 100644 index 00000000..1b784447 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/en/template.php @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/account.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/account.php new file mode 100644 index 00000000..21d4ba23 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/lang/ru/account.php @@ -0,0 +1,5 @@ +IsAuthorized()) +{ + LocalRedirect($arResult['PATH_TO_AUTH_PAGE']); +} + +if ($arParams["MAIN_CHAIN_NAME"] <> '') +{ + $APPLICATION->AddChainItem(htmlspecialcharsbx($arParams["MAIN_CHAIN_NAME"]), $arResult['SEF_FOLDER']); +} +$APPLICATION->AddChainItem(Loc::getMessage("SPS_CHAIN_ORDERS"), $arResult['PATH_TO_ORDERS']); +$APPLICATION->AddChainItem(Loc::getMessage("SPS_CHAIN_ORDER_DETAIL", array("#ID#" => $arResult["VARIABLES"]["ID"]))); +$APPLICATION->IncludeComponent( + "bitrix:sale.personal.order.cancel", + "bootstrap_v4", + array( + "PATH_TO_LIST" => $arResult["PATH_TO_ORDERS"], + "PATH_TO_DETAIL" => $arResult["PATH_TO_ORDER_DETAIL"], + "AUTH_FORM_IN_TEMPLATE" => 'Y', + "SET_TITLE" =>$arParams["SET_TITLE"], + "ID" => $arResult["VARIABLES"]["ID"], + "CONTEXT_SITE_ID" => $arParams["CONTEXT_SITE_ID"], + ), + $component +); +?> diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/order_detail.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/order_detail.php new file mode 100644 index 00000000..07e689ac --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/order_detail.php @@ -0,0 +1,56 @@ +IsAuthorized()) +{ + LocalRedirect($arResult['PATH_TO_AUTH_PAGE']); +} + +if ($arParams["MAIN_CHAIN_NAME"] <> '') +{ + $APPLICATION->AddChainItem(htmlspecialcharsbx($arParams["MAIN_CHAIN_NAME"]), $arResult['SEF_FOLDER']); +} +$APPLICATION->AddChainItem(Loc::getMessage("SPS_CHAIN_ORDERS"), $arResult['PATH_TO_ORDERS']); +$APPLICATION->AddChainItem(Loc::getMessage("SPS_CHAIN_ORDER_DETAIL", array("#ID#" => urldecode($arResult["VARIABLES"]["ID"])))); +$arDetParams = array( + "PATH_TO_LIST" => $arResult["PATH_TO_ORDERS"], + "PATH_TO_CANCEL" => $arResult["PATH_TO_ORDER_CANCEL"], + "PATH_TO_COPY" => $arResult["PATH_TO_ORDER_COPY"], + "PATH_TO_PAYMENT" => $arParams["PATH_TO_PAYMENT"], + "SET_TITLE" =>$arParams["SET_TITLE"], + "ID" => $arResult["VARIABLES"]["ID"], + "ACTIVE_DATE_FORMAT" => $arParams["ACTIVE_DATE_FORMAT"], + "ALLOW_INNER" => $arParams["ALLOW_INNER"], + "ONLY_INNER_FULL" => $arParams["ONLY_INNER_FULL"], + "CACHE_TYPE" => $arParams["CACHE_TYPE"], + "CACHE_TIME" => $arParams["CACHE_TIME"], + "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], + "RESTRICT_CHANGE_PAYSYSTEM" => $arParams["ORDER_RESTRICT_CHANGE_PAYSYSTEM"], + "REFRESH_PRICES" => $arParams["ORDER_REFRESH_PRICES"], + "DISALLOW_CANCEL" => $arParams["ORDER_DISALLOW_CANCEL"], + "HIDE_USER_INFO" => $arParams["ORDER_HIDE_USER_INFO"], + "AUTH_FORM_IN_TEMPLATE" => 'Y', + "CONTEXT_SITE_ID" => $arParams["CONTEXT_SITE_ID"], + "CUSTOM_SELECT_PROPS" => $arParams["CUSTOM_SELECT_PROPS"] + ); +foreach($arParams as $key => $val) +{ + if(mb_strpos($key, "PROP_") !== false) + $arDetParams[$key] = $val; +} + +$APPLICATION->IncludeComponent( + "bitrix:sale.personal.order.detail", + "bootstrap_v4", + $arDetParams, + $component +); +?> diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/orders.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/orders.php new file mode 100644 index 00000000..ba38cce6 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/orders.php @@ -0,0 +1,62 @@ +IsAuthorized()) +{ + LocalRedirect($arResult['PATH_TO_AUTH_PAGE']); +} + +if ($arParams["MAIN_CHAIN_NAME"] !== '') +{ + $APPLICATION->AddChainItem(htmlspecialcharsbx($arParams["MAIN_CHAIN_NAME"]), $arResult['SEF_FOLDER']); +} + +$APPLICATION->AddChainItem(Loc::getMessage("SPS_CHAIN_ORDERS"), $arResult['PATH_TO_ORDERS']); +$APPLICATION->IncludeComponent( + "bitrix:sale.personal.order.list", + "bootstrap_v4", + array( + "PATH_TO_DETAIL" => $arResult["PATH_TO_ORDER_DETAIL"], + "PATH_TO_CANCEL" => $arResult["PATH_TO_ORDER_CANCEL"], + "PATH_TO_CATALOG" => $arParams["PATH_TO_CATALOG"], + "PATH_TO_COPY" => $arResult["PATH_TO_ORDER_COPY"], + "PATH_TO_BASKET" => $arParams["PATH_TO_BASKET"], + "PATH_TO_PAYMENT" => $arParams["PATH_TO_PAYMENT"], + "SAVE_IN_SESSION" => $arParams["SAVE_IN_SESSION"], + "ORDERS_PER_PAGE" => $arParams["ORDERS_PER_PAGE"], + "SET_TITLE" =>$arParams["SET_TITLE"], + "ID" => $arResult["VARIABLES"]["ID"], + "NAV_TEMPLATE" => $arParams["NAV_TEMPLATE"], + "ACTIVE_DATE_FORMAT" => $arParams["ACTIVE_DATE_FORMAT"], + "HISTORIC_STATUSES" => $arParams["ORDER_HISTORIC_STATUSES"], + "ALLOW_INNER" => $arParams["ALLOW_INNER"], + "ONLY_INNER_FULL" => $arParams["ONLY_INNER_FULL"], + "CACHE_TYPE" => $arParams["CACHE_TYPE"], + "CACHE_TIME" => $arParams["CACHE_TIME"], + "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], + "DEFAULT_SORT" => $arParams["ORDER_DEFAULT_SORT"], + "DISALLOW_CANCEL" => $arParams["ORDER_DISALLOW_CANCEL"], + "RESTRICT_CHANGE_PAYSYSTEM" => $arParams["ORDER_RESTRICT_CHANGE_PAYSYSTEM"], + "REFRESH_PRICES" => $arParams["ORDER_REFRESH_PRICES"], + "CONTEXT_SITE_ID" => $arParams["CONTEXT_SITE_ID"], + "AUTH_FORM_IN_TEMPLATE" => 'Y', + ), + $component +); diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/private.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/private.php new file mode 100644 index 00000000..5baad315 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/private.php @@ -0,0 +1,119 @@ +AddChainItem(htmlspecialcharsbx($arParams["MAIN_CHAIN_NAME"]), $arResult['SEF_FOLDER']); +} +$APPLICATION->AddChainItem(Loc::getMessage("SPS_CHAIN_PRIVATE")); +if ($arParams['SET_TITLE'] == 'Y') +{ + $APPLICATION->SetTitle(Loc::getMessage("SPS_TITLE_PRIVATE")); +} + +if (!$USER->IsAuthorized() || $arResult['SHOW_LOGIN_FORM'] === 'Y') +{ + if ($arParams['USE_PRIVATE_PAGE_TO_AUTH'] !== 'Y') + { + ob_start(); + $APPLICATION->AuthForm('', false, false, 'N', false); + $authForm = ob_get_clean(); + } + else + { + if ($arResult['SHOW_FORGOT_PASSWORD_FORM'] === 'Y') + { + ob_start(); + $APPLICATION->IncludeComponent( + 'bitrix:main.auth.forgotpasswd', + '.default', + array( + 'AUTH_AUTH_URL' => $arResult['PATH_TO_PRIVATE'], +// 'AUTH_REGISTER_URL' => 'register.php', + ), + false + ); + $authForm = ob_get_clean(); + } + elseif($arResult['SHOW_CHANGE_PASSWORD_FORM'] === 'Y') + { + ob_start(); + $APPLICATION->IncludeComponent( + 'bitrix:main.auth.changepasswd', + '.default', + array( + 'AUTH_AUTH_URL' => $arResult['PATH_TO_PRIVATE'], +// 'AUTH_REGISTER_URL' => 'register.php', + ), + false + ); + $authForm = ob_get_clean(); + } + else + { + ob_start(); + $APPLICATION->IncludeComponent( + 'bitrix:main.auth.form', + '.default', + array( + 'AUTH_FORGOT_PASSWORD_URL' => $arResult['PATH_TO_PASSWORD_RESTORE'], +// 'AUTH_REGISTER_URL' => 'register.php', + 'AUTH_SUCCESS_URL' => $arResult['AUTH_SUCCESS_URL'], + 'DISABLE_SOCSERV_AUTH' => $arParams['DISABLE_SOCSERV_AUTH'], + ), + false + ); + $authForm = ob_get_clean(); + } + } + + ?> +
+ +
+
+
+ +
+ +
+
+ IncludeComponent( + "bitrix:main.profile", + "", + Array( + "SET_TITLE" =>$arParams["SET_TITLE"], + "AJAX_MODE" => $arParams['AJAX_MODE_PRIVATE'], + "SEND_INFO" => $arParams["SEND_INFO_PRIVATE"], + "CHECK_RIGHTS" => $arParams['CHECK_RIGHTS_PRIVATE'], + "EDITABLE_EXTERNAL_AUTH_ID" => $arParams['EDITABLE_EXTERNAL_AUTH_ID'], + "DISABLE_SOCSERV_AUTH" => $arParams['DISABLE_SOCSERV_AUTH'] + ), + $component + ); +} diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/profile.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/profile.php new file mode 100644 index 00000000..383537fa --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/profile.php @@ -0,0 +1,42 @@ +IsAuthorized()) +{ + LocalRedirect($arResult['PATH_TO_AUTH_PAGE']); +} + +if ($arParams["MAIN_CHAIN_NAME"] !== '') +{ + $APPLICATION->AddChainItem(htmlspecialcharsbx($arParams["MAIN_CHAIN_NAME"]), $arResult['SEF_FOLDER']); +} +$APPLICATION->AddChainItem(Loc::getMessage("SPS_CHAIN_PROFILE")); +$APPLICATION->IncludeComponent( + "bitrix:sale.personal.profile.list", + "bootstrap_v4", + [ + "PATH_TO_DETAIL" => $arResult['PATH_TO_PROFILE_DETAIL'], + "PATH_TO_DELETE" => $arResult['PATH_TO_PROFILE_DELETE'], + "PER_PAGE" => $arParams["PROFILES_PER_PAGE"], + "SET_TITLE" =>$arParams["SET_TITLE"], + "AUTH_FORM_IN_TEMPLATE" => 'Y', + ], + $component +); diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/profile_detail.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/profile_detail.php new file mode 100644 index 00000000..2abc0e7c --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/profile_detail.php @@ -0,0 +1,35 @@ +IsAuthorized()) +{ + LocalRedirect($arResult['PATH_TO_AUTH_PAGE']); +} + +if ($arParams["MAIN_CHAIN_NAME"] <> '') +{ + $APPLICATION->AddChainItem(htmlspecialcharsbx($arParams["MAIN_CHAIN_NAME"]), $arResult['SEF_FOLDER']); +} +$APPLICATION->AddChainItem(Loc::getMessage("SPS_CHAIN_PROFILE")); +$APPLICATION->IncludeComponent( + "bitrix:sale.personal.profile.detail", + "bootstrap_v4", + array( + "PATH_TO_LIST" => $arResult["PATH_TO_PROFILE"], + "PATH_TO_DETAIL" => $arResult["PATH_TO_PROFILE_DETAIL"], + "SET_TITLE" =>$arParams["SET_TITLE"], + "USE_AJAX_LOCATIONS" => $arParams['USE_AJAX_LOCATIONS_PROFILE'], + "COMPATIBLE_LOCATION_MODE" => $arParams['COMPATIBLE_LOCATION_MODE_PROFILE'], + "ID" => $arResult["VARIABLES"]["ID"], + "AUTH_FORM_IN_TEMPLATE" => 'Y', + ), + $component +); +?> diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/style.css b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/style.css new file mode 100644 index 00000000..3286c06b --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/style.css @@ -0,0 +1,49 @@ +.sale-personal-section-index-block { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin: 15px 0; + padding: 0; + height: 87%; + border-radius: 3px; + background-size: cover; + color: #fff; + text-align: center; + text-transform: uppercase; + opacity: .8; + transition: all 0.3s; + justify-content: space-around; + background-color: var(--theme-color-primary, #51cbce); +} + +@media (max-width: 992px) { + .sale-personal-section-index-block { + margin: 8px 0; + height: auto; + } +} + +.sale-personal-section-index-block:hover { opacity: 1; } + +.sale-personal-section-index-block-link, +.sale-personal-section-index-block-link:hover, +.sale-personal-section-index-block-link:active, +.sale-personal-section-index-block-link:focus, +.sale-personal-section-index-block-link:visited { + display: block; + padding: 25px 5px; + width: 100%; + color: #fff; + text-decoration: none; +} + +.sale-personal-section-index-block-link { color: #fff; } + +.sale-personal-section-index-block-ico { font-size: 64px; } + +.sale-personal-section-index-block-name { + color: #fff; + font-size: 15px; + margin: 0; + padding: 0; +} \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/style.min.css b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/style.min.css new file mode 100644 index 00000000..4f72b311 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/style.min.css @@ -0,0 +1 @@ +.sale-personal-section-index-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:15px 0;padding:0;height:87%;border-radius:3px;background-size:cover;color:#fff;text-align:center;text-transform:uppercase;opacity:.8;transition:all .3s;justify-content:space-around;background-color:var(--theme-color-primary,#51cbce)}@media(max-width:992px){.sale-personal-section-index-block{margin:8px 0;height:auto}}.sale-personal-section-index-block:hover{opacity:1}.sale-personal-section-index-block-link,.sale-personal-section-index-block-link:hover,.sale-personal-section-index-block-link:active,.sale-personal-section-index-block-link:focus,.sale-personal-section-index-block-link:visited{display:block;padding:25px 5px;width:100%;color:#fff;text-decoration:none}.sale-personal-section-index-block-link{color:#fff}.sale-personal-section-index-block-ico{font-size:64px}.sale-personal-section-index-block-name{color:#fff;font-size:15px;margin:0;padding:0} \ No newline at end of file diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/subscribe.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/subscribe.php new file mode 100644 index 00000000..b5051bec --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/subscribe.php @@ -0,0 +1,31 @@ +IsAuthorized()) +{ + LocalRedirect($arResult['PATH_TO_AUTH_PAGE']); +} + +if ($arParams["MAIN_CHAIN_NAME"] <> '') +{ + $APPLICATION->AddChainItem(htmlspecialcharsbx($arParams["MAIN_CHAIN_NAME"]), $arResult['SEF_FOLDER']); +} +$APPLICATION->AddChainItem(Loc::getMessage("SPS_CHAIN_SUBSCRIBE_NEW")); +$APPLICATION->IncludeComponent( + 'bitrix:catalog.product.subscribe.list', + "bootstrap_v4", + array( + 'SET_TITLE' => $arParams['SET_TITLE'], + 'DETAIL_URL' => $arParams['SUBSCRIBE_DETAIL_URL'] + ), + $component +); + diff --git a/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/template.php b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/template.php new file mode 100644 index 00000000..827667b9 --- /dev/null +++ b/intaro.retailcrm/install/export/local/components/intaro/sale.personal.section/templates/.default/template.php @@ -0,0 +1,132 @@ + '') +{ + $APPLICATION->AddChainItem(htmlspecialcharsbx($arParams["MAIN_CHAIN_NAME"]), $arResult['SEF_FOLDER']); +} + +$this->addExternalCss("/bitrix/css/main/font-awesome.css"); +$theme = Bitrix\Main\Config\Option::get("main", "wizard_eshop_bootstrap_theme_id", "blue", SITE_ID); + +$availablePages = array(); + +if ($arParams['SHOW_ORDER_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arResult['PATH_TO_ORDERS'], + "name" => Loc::getMessage("SPS_ORDER_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_ACCOUNT_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arResult['PATH_TO_ACCOUNT'], + "name" => Loc::getMessage("SPS_ACCOUNT_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_PRIVATE_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arResult['PATH_TO_PRIVATE'], + "name" => Loc::getMessage("SPS_PERSONAL_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_ORDER_PAGE'] === 'Y') +{ + + $delimeter = ($arParams['SEF_MODE'] === 'Y') ? "?" : "&"; + $availablePages[] = array( + "path" => $arResult['PATH_TO_ORDERS'].$delimeter."filter_history=Y", + "name" => Loc::getMessage("SPS_ORDER_PAGE_HISTORY"), + "icon" => '' + ); +} + +if ($arParams['SHOW_PROFILE_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arResult['PATH_TO_PROFILE'], + "name" => Loc::getMessage("SPS_PROFILE_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_BASKET_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arParams['PATH_TO_BASKET'], + "name" => Loc::getMessage("SPS_BASKET_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_SUBSCRIBE_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arResult['PATH_TO_SUBSCRIBE'], + "name" => Loc::getMessage("SPS_SUBSCRIBE_PAGE_NAME"), + "icon" => '' + ); +} + +if ($arParams['SHOW_CONTACT_PAGE'] === 'Y') +{ + $availablePages[] = array( + "path" => $arParams['PATH_TO_CONTACT'], + "name" => Loc::getMessage("SPS_CONTACT_PAGE_NAME"), + "icon" => '' + ); +} + +$customPagesList = CUtil::JsObjectToPhp($arParams['~CUSTOM_PAGES']); +if ($customPagesList) +{ + foreach ($customPagesList as $page) + { + $availablePages[] = array( + "path" => $page[0], + "name" => $page[1], + "icon" => (mb_strlen($page[2])) ? '' : "" + ); + } +} + +if (empty($availablePages)) +{ + ShowError(Loc::getMessage("SPS_ERROR_NOT_CHOSEN_ELEMENT")); +} +else +{ + ?> +
+ + + +
+ diff --git a/intaro.retailcrm/install/export/sub-register/index.php b/intaro.retailcrm/install/export/sub-register/index.php new file mode 100644 index 00000000..82312725 --- /dev/null +++ b/intaro.retailcrm/install/export/sub-register/index.php @@ -0,0 +1,21 @@ +SetTitle('Регистрация'); +?> + +IncludeComponent( + 'bitrix:main.register', + 'default_subscribe', + [ + 'AUTH' => 'Y', + 'REQUIRED_FIELDS' => [], + 'SET_TITLE' => 'Y', + 'SHOW_FIELDS' => ['NAME'], + 'SUCCESS_PAGE' => '', + 'USER_PROPERTY' => [], + 'USER_PROPERTY_NAME' => '', + 'USE_BACKURL' => 'Y', + ] +); ?> + + diff --git a/intaro.retailcrm/install/index.php b/intaro.retailcrm/install/index.php index c43f1d34..5f962a4c 100644 --- a/intaro.retailcrm/install/index.php +++ b/intaro.retailcrm/install/index.php @@ -14,7 +14,7 @@ use Bitrix\Sale\Delivery\Services\Manager; use Bitrix\Sale\EventActions; use Bitrix\Sale\Internals\OrderTable; use Intaro\RetailCrm\Component\ConfigProvider; -use Intaro\RetailCrm\Component\Installer\LoyaltyInstallerTrait; +use Intaro\RetailCrm\Component\Installer\InstallerTrait; use Intaro\RetailCrm\Service\OrderLoyaltyDataService; use Intaro\RetailCrm\Vendor\Symfony\Component\Process\PhpExecutableFinder; use RetailCrm\ApiClient; @@ -29,11 +29,11 @@ if (class_exists('intaro_retailcrm')) { return false; } -include(__DIR__ . '/../lib/component/installer/loyaltyinstallertrait.php'); +include (__DIR__ . '/../lib/component/installer/installertrait.php'); class intaro_retailcrm extends CModule { - use LoyaltyInstallerTrait; + use InstallerTrait; public const V5 = 'v5'; public $MODULE_ID = 'intaro.retailcrm'; @@ -247,9 +247,9 @@ class intaro_retailcrm extends CModule include($this->INSTALL_PATH . '/../lib/component/apiclient/clientadapter.php'); $this->CopyFiles(); - $this->addLPUserFields(); - $this->addLPEvents(); + $this->addEvents(); $this->addAgreement(); + $this->addUserFields(); OrderLoyaltyDataService::createLoyaltyHlBlock(); @@ -1069,6 +1069,9 @@ class intaro_retailcrm extends CModule RegisterModuleDependences('sale', 'OnSaleOrderDeleted', $this->MODULE_ID, 'RetailCrmEvent', 'orderDelete'); RegisterModuleDependences('sale', 'OnSalePaymentEntitySaved', $this->MODULE_ID, 'RetailCrmEvent', 'paymentSave'); RegisterModuleDependences('sale', 'OnSalePaymentEntityDeleted', $this->MODULE_ID, 'RetailCrmEvent', 'paymentDelete'); + RegisterModuleDependences('main', 'OnAfterUserRegister', $this->MODULE_ID, 'RetailCrmEvent', 'OnAfterUserRegister'); + RegisterModuleDependences('main', 'OnAfterUserAdd', $this->MODULE_ID, 'RetailCrmEvent', 'OnAfterUserAdd'); + COption::SetOptionString($this->MODULE_ID, $this->CRM_CATALOG_BASE_PRICE, htmlspecialchars(trim($_POST['price-types']))); COption::SetOptionString($this->MODULE_ID, $this->CRM_INVENTORIES_UPLOAD, 'N'); @@ -1266,6 +1269,8 @@ class intaro_retailcrm extends CModule UnRegisterModuleDependences('main', 'OnBeforeProlog', $this->MODULE_ID, 'RetailCrmUa', 'add'); UnRegisterModuleDependences('sale', 'OnSalePaymentEntitySaved', $this->MODULE_ID, 'RetailCrmEvent', 'paymentSave'); UnRegisterModuleDependences('sale', 'OnSalePaymentEntityDeleted', $this->MODULE_ID, 'RetailCrmEvent', 'paymentDelete'); + UnRegisterModuleDependences('main', 'OnAfterUserRegister', $this->MODULE_ID, 'RetailCrmEvent', 'OnAfterUserRegister'); + UnRegisterModuleDependences('main', 'OnAfterUserAdd', $this->MODULE_ID, 'RetailCrmEvent', 'OnAfterUserAdd'); if ( CModule::IncludeModule('catalog') diff --git a/intaro.retailcrm/install/version.php b/intaro.retailcrm/install/version.php index b3fb9049..38bb6f73 100644 --- a/intaro.retailcrm/install/version.php +++ b/intaro.retailcrm/install/version.php @@ -1,6 +1,6 @@ '6.3.20', - 'VERSION_DATE' => '2023-07-25 13:00:00' + 'VERSION' => '6.4.0', + 'VERSION_DATE' => '2023-08-22 13:00:00' ]; diff --git a/intaro.retailcrm/lang/en/classes/general/services/RetailCrmService.php b/intaro.retailcrm/lang/en/classes/general/services/RetailCrmService.php new file mode 100644 index 00000000..607f8cda --- /dev/null +++ b/intaro.retailcrm/lang/en/classes/general/services/RetailCrmService.php @@ -0,0 +1,4 @@ +setBooleanParameters($serialized); $response = $this->client->customersCreate($serialized['customer'] ?? [], $request->site); return Deserializer::deserializeArray($response->getResponseBody(), CustomerChangeResponse::class); @@ -182,4 +183,18 @@ trait CustomersTrait return Deserializer::deserializeArray($response->getResponseBody(), HistoryResponse::class); } + + /** + * @param array $serializedRequest + * @return array + */ + private function setBooleanParameters($serializedRequest) + { + if (empty($serializedRequest['customer']['subscribed'])) + { + $serializedRequest['customer']['subscribed'] = false; + } + + return $serializedRequest; + } } diff --git a/intaro.retailcrm/lib/component/builder/api/customerbuilder.php b/intaro.retailcrm/lib/component/builder/api/customerbuilder.php index 0a1c9bbe..2f022fb0 100644 --- a/intaro.retailcrm/lib/component/builder/api/customerbuilder.php +++ b/intaro.retailcrm/lib/component/builder/api/customerbuilder.php @@ -162,7 +162,7 @@ class CustomerBuilder implements BuilderInterface $this->customer->externalId = $this->user->getId(); $this->customer->email = $this->user->getEmail(); $this->customer->createdAt = $this->user->getDateRegister(); - $this->customer->subscribed = false; + $this->customer->subscribed = !empty($this->user->getSubscribe()); } /** diff --git a/intaro.retailcrm/lib/component/constants.php b/intaro.retailcrm/lib/component/constants.php index 1f57c107..433ee2a2 100644 --- a/intaro.retailcrm/lib/component/constants.php +++ b/intaro.retailcrm/lib/component/constants.php @@ -101,7 +101,6 @@ class Constants public const LP_EVENTS = [ ['EVENT_NAME' => 'OnSaleOrderSaved', 'FROM_MODULE' => 'sale'], ['EVENT_NAME' => 'OnSaleComponentOrderResultPrepared', 'FROM_MODULE' => 'sale'], - ['EVENT_NAME' => 'OnAfterUserRegister', 'FROM_MODULE' => 'main'], ]; public const SITES_AVAILABLE = 'sites_available'; } diff --git a/intaro.retailcrm/lib/component/handlers/eventshandlers.php b/intaro.retailcrm/lib/component/handlers/eventshandlers.php index e12e05f1..053895c8 100644 --- a/intaro.retailcrm/lib/component/handlers/eventshandlers.php +++ b/intaro.retailcrm/lib/component/handlers/eventshandlers.php @@ -214,51 +214,4 @@ class EventsHandlers Logger::getInstance()->write(GetMessage('CAN_NOT_SAVE_ORDER') . $exception->getMessage(), 'uploadApiErrors'); } } - - /** - * Регистрирует пользователя в CRM системе после регистрации на сайте - * - * @param array $arFields - * @return mixed - * @throws \ReflectionException - */ - public static function OnAfterUserRegisterHandler(array $arFields): void - { - if (isset($arFields['USER_ID']) && $arFields['USER_ID'] > 0) { - $user = UserRepository::getById($arFields['USER_ID']); - - if (isset($_POST['REGISTER']['PERSONAL_PHONE'])) { - $phone = htmlspecialchars($_POST['REGISTER']['PERSONAL_PHONE']); - - if ($user !== null) { - $user->setPersonalPhone($phone); - $user->save(); - } - - $arFields['PERSONAL_PHONE'] = $phone; - } - - /* @var CustomerService $customerService */ - $customerService = ServiceLocator::get(CustomerService::class); - $customer = $customerService->createModel($arFields['USER_ID']); - - $customerService->createOrUpdateCustomer($customer); - - //Если пользователь выразил желание зарегистрироваться в ПЛ и согласился со всеми правилами - if ((int) $arFields['UF_REG_IN_PL_INTARO'] === 1 - && (int) $arFields['UF_AGREE_PL_INTARO'] === 1 - && (int) $arFields['UF_PD_PROC_PL_INTARO'] === 1 - ) { - $phone = $arFields['PERSONAL_PHONE'] ?? ''; - $card = $arFields['UF_CARD_NUM_INTARO'] ?? ''; - $customerId = (string) $arFields['USER_ID']; - - /** @var LoyaltyAccountService $service */ - $service = ServiceLocator::get(LoyaltyAccountService::class); - $createResponse = $service->createLoyaltyAccount($phone, $card, $customerId); - - $service->activateLpUserInBitrix($createResponse, $arFields['USER_ID']); - } - } - } } diff --git a/intaro.retailcrm/lib/component/installer/loyaltyinstallertrait.php b/intaro.retailcrm/lib/component/installer/installertrait.php similarity index 75% rename from intaro.retailcrm/lib/component/installer/loyaltyinstallertrait.php rename to intaro.retailcrm/lib/component/installer/installertrait.php index 10f27f35..c8d25f15 100644 --- a/intaro.retailcrm/lib/component/installer/loyaltyinstallertrait.php +++ b/intaro.retailcrm/lib/component/installer/installertrait.php @@ -1,16 +1,5 @@ - * @license MIT - * @link http://retailcrm.ru - * @see http://retailcrm.ru/docs - */ - namespace Intaro\RetailCrm\Component\Installer; use Bitrix\Main\ArgumentException; @@ -28,12 +17,12 @@ use RCrmActions; IncludeModuleLangFile(__FILE__); -trait LoyaltyInstallerTrait +trait InstallerTrait { /** - * create loyalty program events handlers + * Создание событий для программы лояльности */ - public function addLPEvents(): void + public function addEvents(): void { $eventManager = EventManager::getInstance(); @@ -69,7 +58,7 @@ trait LoyaltyInstallerTrait } /** - * CamelCase в имени является требованием Bitrix. Изменить на lowerCamelCase нельзя + * Перемещение модульных шаблонов в CMS */ public function CopyFiles(): void { @@ -83,37 +72,45 @@ trait LoyaltyInstallerTrait false ); - $lpTemplateNames = [ - 'sale.order.ajax', - 'sale.basket.basket', - 'main.register', + $templateNames = [ + 'default_loyalty' => [ + 0 => [ + 'name' => 'sale.order.ajax', + 'templateDirectory' => '.default' + ], + 1 => [ + 'name' => 'sale.basket.basket', + 'templateDirectory' => '.default' + ], + 2 => [ + 'name' => 'main.register', + 'templateDirectory' => '.default' + ], + ], + + 'default_subscribe' => [ + 0 => [ + 'name' => 'sale.personal.section', + 'templateDirectory' => '.default' + ], + 1 => [ + 'name' => 'main.register', + 'templateDirectory' => '.default_subscribe' + ] + ] ]; - foreach ($lpTemplateNames as $lpTemplateName){ - $lpTemplatePath = $_SERVER['DOCUMENT_ROOT'] - . '/local/templates/.default/components/bitrix/' . $lpTemplateName . '/default_loyalty'; - - if (!file_exists($lpTemplatePath)) { - $pathFrom = $_SERVER['DOCUMENT_ROOT'] - . '/bitrix/modules/intaro.retailcrm/install/export/local/components/intaro/' - . $lpTemplateName - . '/templates/.default'; - - CopyDirFiles( - $pathFrom, - $lpTemplatePath, - true, - true, - false - ); + foreach ($templateNames as $directory => $templates) { + foreach ($templates as $template) { + $this->copy($directory, $template); } } } /** - * Add USER fields for LP + * Добавление полей пользователя для ПЛ и подписки */ - public function addLPUserFields(): void + public function addUserFields(): void { $this->addCustomUserFields( [ @@ -154,6 +151,10 @@ trait LoyaltyInstallerTrait 'name' => 'UF_EXT_REG_PL_INTARO', 'title' => GetMessage('UF_EXT_REG_PL_INTARO_TITLE'), ], + [ + 'name' => 'UF_SUBSCRIBE_USER_EMAIL', + 'title' => GetMessage('UF_SUBSCRIBE_USER_EMAIL_TITLE') + ] ] ); } @@ -248,4 +249,27 @@ trait LoyaltyInstallerTrait ); } } -} + + private function copy($directory, $template): void + { + $templatePath = $_SERVER['DOCUMENT_ROOT'] + . '/local/templates/.default/components/bitrix/' . $template['name'] . '/'. $directory + ; + + if (!file_exists($templatePath)) { + $pathFrom = $_SERVER['DOCUMENT_ROOT'] + . '/bitrix/modules/intaro.retailcrm/install/export/local/components/intaro/' + . $template['name'] + . '/templates/' . $template['templateDirectory'] + ; + + CopyDirFiles( + $pathFrom, + $templatePath, + true, + true, + false + ); + } + } +} \ No newline at end of file diff --git a/intaro.retailcrm/lib/model/bitrix/user.php b/intaro.retailcrm/lib/model/bitrix/user.php index 757057c3..1fb2ae11 100644 --- a/intaro.retailcrm/lib/model/bitrix/user.php +++ b/intaro.retailcrm/lib/model/bitrix/user.php @@ -524,6 +524,14 @@ class User extends AbstractSerializableModel */ private $loyalty; + /** + * @var bool + * + * @Mapping\Type("boolean") + * @Mapping\SerializedName("UF_SUBSCRIBE_USER_EMAIL") + */ + private $subscribe; + /** * @return int */ @@ -1730,4 +1738,24 @@ class User extends AbstractSerializableModel { $this->loyalty = $loyalty; } + + /** + * @return bool + */ + public function getSubscribe() + { + return $this->subscribe; + } + + + /** + * @param bool $subscribe + * @return $this + */ + public function setSubscribe($subscribe) + { + $this->subscribe = $subscribe; + + return $this; + } } diff --git a/intaro.retailcrm/updater.php b/intaro.retailcrm/updater.php index c2783c69..60a990fb 100644 --- a/intaro.retailcrm/updater.php +++ b/intaro.retailcrm/updater.php @@ -1074,6 +1074,102 @@ class LoyaltyProgramUpdater } } +class UpdateSubscribe +{ + public function CopyFiles(): self + { + $pathFrom = $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/intaro.retailcrm/install'; + + CopyDirFiles( + $pathFrom . '/export', + $_SERVER['DOCUMENT_ROOT'], + true, + true, + false + ); + + $templateNames = [ + 'default_subscribe' => [ + 0 => [ + 'name' => 'sale.personal.section', + 'templateDirectory' => '.default' + ], + 1 => [ + 'name' => 'main.register', + 'templateDirectory' => '.default_subscribe' + ] + ] + ]; + + foreach ($templateNames as $directory => $templates) { + foreach ($templates as $template) { + $templatePath = $_SERVER['DOCUMENT_ROOT'] + . '/local/templates/.default/components/bitrix/' . $template['name'] . '/' . $directory + ; + + if (!file_exists($templatePath)) { + $pathFrom = $_SERVER['DOCUMENT_ROOT'] + . '/bitrix/modules/intaro.retailcrm/install/export/local/components/intaro/' + . $template['name'] + . '/templates/' . $template['templateDirectory'] + ; + + CopyDirFiles( + $pathFrom, + $templatePath, + true, + true, + false + ); + } + } + } + + return $this; + } + + public function addEvent(): self + { + $eventManager = EventManager::getInstance(); + + $eventManager->unRegisterEventHandler( + 'main', + 'OnAfterUserRegister', + 'intaro.retailcrm', + 'Intaro\RetailCrm\Component\Handlers\EventsHandlers', + 'OnAfterUserRegisterHandler' + ); + + RegisterModuleDependences('main', 'OnAfterUserRegister', 'intaro.retailcrm', 'RetailCrmEvent', 'OnAfterUserRegister'); + RegisterModuleDependences('main', 'OnAfterUserAdd', 'intaro.retailcrm', 'RetailCrmEvent', 'OnAfterUserAdd'); + + return $this; + } + + public function addCustomUserField(): self + { + $arProps = [ + 'ENTITY_ID' => 'USER', + 'FIELD_NAME' => 'UF_SUBSCRIBE_USER_EMAIL', + 'USER_TYPE_ID' => 'boolean', + 'MULTIPLE' => 'N', + 'MANDATORY' => 'N', + 'EDIT_FORM_LABEL' => ['ru' => 'Подписка на события'], + + ]; + + $props = array_merge($arProps, []); + $obUserField = new CUserTypeEntity(); + $dbRes = CUserTypeEntity::GetList([], ['FIELD_NAME' => 'UF_SUBSCRIBE_USER_EMAIL'])->fetch(); + + if (!$dbRes['ID']) { + $obUserField->Add($props); + } + + return $this; + } +} + /** * @throws \Bitrix\Main\ArgumentException * @throws \Bitrix\Main\ObjectPropertyException @@ -1093,6 +1189,11 @@ function update() UnRegisterModuleDependences("main", "OnBeforeProlog", 'intaro.retailcrm', "RetailCrmPricePrchase", "add"); UnRegisterModuleDependences("main", "OnBeforeProlog", 'intaro.retailcrm', "RetailCrmDc", "add"); UnRegisterModuleDependences("main", "OnBeforeProlog", 'intaro.retailcrm', "RetailCrmCc", "add"); + + (new UpdateSubscribe()) + ->CopyFiles() + ->addEvent() + ->addCustomUserField(); } try {