From d24bba305fb946ec508187bd6663253ba133bc68 Mon Sep 17 00:00:00 2001 From: miroman-afk <74014189+miroman-afk@users.noreply.github.com> Date: Wed, 14 Dec 2022 12:42:39 +0300 Subject: [PATCH] v.2.24 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. POSTBonus in/out 2. POSTPresale in/out 3. Переработана форма гостя --- commands/ClientGroup.php | 55 -- commands/Clients.php | 56 -- commands/{Bot.php => GETBot.php} | 2 +- .../{ClientFile.php => GETClientFile.php} | 2 +- commands/GETClientInfo.php | 58 ++ commands/GETClientLog.php | 51 ++ commands/GETClientOrderInfo.php | 34 + commands/GETClientOrders.php | 54 ++ commands/GETClients.php | 166 +++++ commands/GETDiscountItems.php | 7 +- commands/{Equipment.php => GETEquipment.php} | 2 +- .../{HelloWorld.php => GETHelloWorld.php} | 2 +- commands/{Import.php => GETImport.php} | 2 +- commands/GETOnlineStaff.php | 169 +++-- commands/GETOrder.php | 1 + commands/{OutOrders.php => GETOutOrders.php} | 2 +- commands/{TopDishes.php => GETTopDishes.php} | 2 +- ...hesNewYear.php => GETTopDishesNewYear.php} | 2 +- commands/POSTBonus.php | 34 + ...reateBarcode.php => POSTCreateBarcode.php} | 2 +- ...{CreateClient.php => POSTCreateClient.php} | 2 +- commands/{Fiscals.php => POSTFiscals.php} | 2 +- commands/POSTPresale.php | 33 + commands/{Printers.php => POSTPrinters.php} | 2 +- ...022_09_22_140748_update_core_interface.php | 4 +- ...9_003015_create_clients_presales_table.php | 32 + ...02_233015_create_clients_bonuses_table.php | 32 + database/seeders/AddStaffRights.php | 3 + database/seeders/AddUserRights.php | 3 + models/Client.php | 51 ++ models/ClientsActions.php | 11 + models/ClientsBonus.php | 60 ++ models/ClientsPresale.php | 60 ++ models/ExchangeOrders.php | 76 +- models/ShiftOnlineOrders.php | 76 +- models/Units.php | 29 +- web/controllers/clients.js | 647 +++++++++--------- web/controllers/loyalty.js | 340 +++++++++ web/menu_min.js | 7 + web/routes_min.js | 8 + web/views/clients/images/client.png | Bin 0 -> 149295 bytes web/views/clients/index.html | 532 ++++++++------ web/views/clients/order.html | 75 +- web/views/dashboard/dashboard.html | 17 +- web/views/loyalty/create.html | 32 + web/views/loyalty/edit.html | 234 +++++++ web/views/loyalty/index.html | 79 +++ web/views/loyalty/terms/selectclientitem.html | 65 ++ web/views/loyalty/terms/selectmenuitem.html | 82 +++ 49 files changed, 2525 insertions(+), 772 deletions(-) delete mode 100644 commands/ClientGroup.php delete mode 100644 commands/Clients.php rename commands/{Bot.php => GETBot.php} (95%) rename commands/{ClientFile.php => GETClientFile.php} (97%) create mode 100644 commands/GETClientInfo.php create mode 100644 commands/GETClientLog.php create mode 100644 commands/GETClientOrderInfo.php create mode 100644 commands/GETClientOrders.php create mode 100644 commands/GETClients.php rename commands/{Equipment.php => GETEquipment.php} (93%) rename commands/{HelloWorld.php => GETHelloWorld.php} (81%) rename commands/{Import.php => GETImport.php} (97%) rename commands/{OutOrders.php => GETOutOrders.php} (98%) rename commands/{TopDishes.php => GETTopDishes.php} (97%) rename commands/{TopDishesNewYear.php => GETTopDishesNewYear.php} (98%) create mode 100644 commands/POSTBonus.php rename commands/{CreateBarcode.php => POSTCreateBarcode.php} (94%) rename commands/{CreateClient.php => POSTCreateClient.php} (97%) rename commands/{Fiscals.php => POSTFiscals.php} (88%) create mode 100644 commands/POSTPresale.php rename commands/{Printers.php => POSTPrinters.php} (98%) create mode 100644 database/migrations/2022_11_29_003015_create_clients_presales_table.php create mode 100644 database/migrations/2022_12_02_233015_create_clients_bonuses_table.php create mode 100644 models/ClientsActions.php create mode 100644 models/ClientsBonus.php create mode 100644 models/ClientsPresale.php create mode 100644 web/controllers/loyalty.js create mode 100644 web/views/clients/images/client.png create mode 100644 web/views/loyalty/create.html create mode 100644 web/views/loyalty/edit.html create mode 100644 web/views/loyalty/index.html create mode 100644 web/views/loyalty/terms/selectclientitem.html create mode 100644 web/views/loyalty/terms/selectmenuitem.html diff --git a/commands/ClientGroup.php b/commands/ClientGroup.php deleted file mode 100644 index 2759143..0000000 --- a/commands/ClientGroup.php +++ /dev/null @@ -1,55 +0,0 @@ -count() == 0) { - $group = new ClientsGroup; - $group->code = '0'; - $group->name = 'Без группы'; - $group->save(); - } - $client_groups = ClientsGroup::orderBy('code')->get(); - foreach ($client_groups as $client_group) { - $out[] = array('id' => $client_group['id'], 'name' => $client_group['name']); - } - $terminal = Terminal::where('soft', '=', 1)->where('is_active', '=', 1)->where('work_code', '=', 1)->first(); - $dir = __DIR__ . "/../../../Exchange/" . $terminal['key'] . "/"; - if (!is_dir($dir)) { - mkdir($dir, 0755, 'w+'); - } - - $files = glob($dir . "*.*"); - if (count($files) > 0) { - usort($files, function ($a, $b) { - return filemtime($a) < filemtime($b); - }); - - foreach ($files as $plk2) { - $file_array[] = str_replace($dir, '', $plk2); - } - $filename = $file_array['0']; - $file = date("d.m.Y H:i:s", filemtime(__DIR__ . "/../../../Exchange/" . $terminal['key'] . "/" . $file_array['0'])); - } else { - $file_array = ''; - $filename = ''; - $file = ''; - } - return [ - 'status' => 'success', - 'groups' => $out, - 'terminalKey' => $terminal['key'], - 'files' => $files, - 'filename' => $filename, - 'filedate' => $file, - ]; - } -} \ No newline at end of file diff --git a/commands/Clients.php b/commands/Clients.php deleted file mode 100644 index ec40e32..0000000 --- a/commands/Clients.php +++ /dev/null @@ -1,56 +0,0 @@ -count() == 0) { - $group = new ClientsGroup([ - 'code' => '0', - 'name' => 'Без группы', - ]); - $group->save(); - } - $countPerPage = 25; - $offset = ($input['page'] - 1) * $countPerPage; - if ($input['group_id'] == 0) { - $group = ClientsGroup::where('code', '=', $input['group_id'])->first(); - } else { - $group = ClientsGroup::where('id', '=', $input['group_id'])->first(); - } - $clients = Client::where('group_id', '=', $group['code'])->skip($offset)->take($countPerPage)->get(); - $total = Client::where('group_id', '=', $group['code'])->count(); - if ($total == NULL) { - return [ - 'status' => 'success', - 'clients' => array(), - 'total' => 0, - 'size' => $countPerPage, - 'pages' => 1, - 'currentGroup' => $group['id'], - ]; - } else { - - foreach ($clients as $client) { - $phone = ClientsPhone::where('client_guid', '=', $client['user_code'])->first(); - $out[] = array('id' => $client['id'], 'name' => $client['name'], 'phone' => $phone['phone']); - } - return [ - 'status' => 'success', - 'clients' => $out, - 'total' => $total, - 'size' => $countPerPage, - 'pages' => ceil($total / $countPerPage), - 'currentGroup' => $group['id'], - ]; - } - } -} \ No newline at end of file diff --git a/commands/Bot.php b/commands/GETBot.php similarity index 95% rename from commands/Bot.php rename to commands/GETBot.php index 3cc7e79..d4b90a6 100644 --- a/commands/Bot.php +++ b/commands/GETBot.php @@ -10,7 +10,7 @@ use App\Component\Models\Tasks; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class Bot extends HRCCommand implements HRCCommandInterface +class GETBot extends HRCCommand implements HRCCommandInterface { protected $signature = 'getbot'; diff --git a/commands/ClientFile.php b/commands/GETClientFile.php similarity index 97% rename from commands/ClientFile.php rename to commands/GETClientFile.php index c74eb20..19ff6b4 100644 --- a/commands/ClientFile.php +++ b/commands/GETClientFile.php @@ -7,7 +7,7 @@ use App\Component\Models\Terminal; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class ClientFile extends HRCCommand implements HRCCommandInterface { +class GETClientFile extends HRCCommand implements HRCCommandInterface { protected $signature = 'getclientfile'; public function command($input, $output = null) { diff --git a/commands/GETClientInfo.php b/commands/GETClientInfo.php new file mode 100644 index 0000000..468fe27 --- /dev/null +++ b/commands/GETClientInfo.php @@ -0,0 +1,58 @@ +first(); + $client_guid = $client['user_code']; + $phone = Client::getPhone($client_guid); + $address = Client::getAddress($client_guid); + $email = Client::getEmail($client_guid); + $presale = ClientsPresale::getPresale($client_guid); + $bonus = ClientsBonus::getBonus($client_guid); + $orders_count_exchange = ExchangeOrders::where('client_code', $client_guid)->where('is_returned', 0)->where('is_deleted', 0)->count(); + $orders_count_current = ShiftOnlineOrders::where('client_code', $client_guid)->where('is_returned', 0)->where('is_deleted', 0)->count(); + $orders_sum_exchange = ExchangeOrders::where('client_code', $client_guid)->where('is_returned', 0)->where('is_deleted', 0)->sum('full_sum'); + $orders_sum_current = ShiftOnlineOrders::where('client_code', $client_guid)->where('is_returned', 0)->where('is_deleted', 0)->sum('full_sum'); + $orders_count = $orders_count_exchange + $orders_count_current; + $orders_sum = $orders_sum_exchange + $orders_sum_current; + $result = array( + 'id' => $client['id'], + 'name' => $client['name'], + 'info' => array( + 'phone' => $phone, + 'email' => $email, + 'address' => $address, + 'order_count' => $orders_count, + 'order_sum' => $orders_sum, + 'presale' => $presale, + 'bonus' => intval($bonus), + ) + ); + return [ + 'status' => 'success', + 'client' => $result, + ]; + } else { + return [ + 'status' => 'error', + 'more' => 'Проверьте введенные данные', + ]; + } + + } +} \ No newline at end of file diff --git a/commands/GETClientLog.php b/commands/GETClientLog.php new file mode 100644 index 0000000..c9981c2 --- /dev/null +++ b/commands/GETClientLog.php @@ -0,0 +1,51 @@ +first(); + $client_guid = $client['user_code']; + $logs = ClientsActions::where('user_id', $client_guid)->orderByDesc('created')->get(); + $info = []; + foreach ($logs as $log) { + $info[] = array( + 'action' => $log['action'], + 'value' => round($log['action_value'], 2), + 'who' => Staff::getName($log['who']), + 'time' => $log['created'], + 'type' => $log['action_type'] + ); + } + $result = array( + 'id' => $client['id'], + 'name' => $client['name'], + 'info' => $info + ); + return [ + 'status' => 'success', + 'client' => $result, + ]; + } else { + return [ + 'status' => 'error', + 'more' => 'Проверьте введенные данные', + ]; + } + + } +} \ No newline at end of file diff --git a/commands/GETClientOrderInfo.php b/commands/GETClientOrderInfo.php new file mode 100644 index 0000000..8f9f97a --- /dev/null +++ b/commands/GETClientOrderInfo.php @@ -0,0 +1,34 @@ +first(); + if ($shift['opened'] > $opened) { + $order = ExchangeOrders::where('opened', $opened)->where('closed', $closed)->where('code', $order_id)->first(); + $shift_id = $order['shift_id']; + $info = ExchangeOrders::getInfo($order_id, $shift_id); + } else { + $info = ShiftOnlineOrders::getInfo($order_id); + } + + return [ + 'status' => 'success', + 'info' => $info[0], + ]; + } +} \ No newline at end of file diff --git a/commands/GETClientOrders.php b/commands/GETClientOrders.php new file mode 100644 index 0000000..ad57d3d --- /dev/null +++ b/commands/GETClientOrders.php @@ -0,0 +1,54 @@ +first(); + $client_guid = $client['user_code']; + $exchange_orders = ExchangeOrders::where('client_code', $client_guid)->where('is_returned', 0)->where('is_deleted', 0)->orderByDesc('closed')->get(); + $online_orders = ShiftOnlineOrders::where('client_code', $client_guid)->where('is_returned', 0)->where('is_deleted', 0)->orderByDesc('closed')->get(); + $orders = []; + foreach ($online_orders as $online_order) { + $orders[] = array( + 'id' => $online_order['code'], + 'opened' => $online_order['opened'], + 'closed' => $online_order['closed'], + 'sum' => $online_order['order_sum'], + 'discount' => $online_order['sale_sum'], + 'shift_id' => 0 + ); + } + foreach ($exchange_orders as $exchange_order) { + $orders[] = array( + 'id' => $exchange_order['code'], + 'opened' => $exchange_order['opened'], + 'closed' => $exchange_order['closed'], + 'sum' => $exchange_order['order_sum'], + 'discount' => $exchange_order['sale_sum'], + 'shift_id' => $exchange_order['shift_id'] + ); + } + return [ + 'status' => 'success', + 'orders' => $orders, + ]; + } else { + return [ + 'status' => 'error', + 'more' => 'Проверьте введенные данные', + ]; + } + } +} \ No newline at end of file diff --git a/commands/GETClients.php b/commands/GETClients.php new file mode 100644 index 0000000..42d9c84 --- /dev/null +++ b/commands/GETClients.php @@ -0,0 +1,166 @@ +timezone('Europe/Minsk'); + $phones = ClientsPhone::where('updated_at', '>=', $last_update)->get(); + $addresses = ClientsAddress::where('updated_at', '>=', $last_update)->get(); + $barcodes = ClientsBarcode::where('updated_at', '>=', $last_update)->get(); + $emails = ClientsEmail::where('updated_at', '>=', $last_update)->get(); + $presales = ClientsPresale::where('updated_at', '>=', $last_update)->get(); + $bonuses = ClientsBonus::where('updated_at', '>=', $last_update)->get(); + $clients = Client::where('updated_at', '>=', $last_update)->get(); + $info = []; + foreach ($phones as $phone) { + $info[] = $phone['client_guid']; + } + foreach ($addresses as $address) { + $info[] = $address['client_guid']; + } + foreach ($barcodes as $barcode) { + $info[] = $barcode['client_guid']; + } + foreach ($emails as $email) { + $info[] = $email['client_guid']; + } + foreach ($presales as $presale) { + $info[] = $presale['client_guid']; + } + foreach ($bonuses as $bonus) { + $info[] = $bonus['client_guid']; + } + foreach ($clients as $client) { + $info[] = $client['user_code']; + } + $guides = array_values(array_unique($info)); + $email = $phone = $client = []; + foreach ($guides as $guid) { + $email_address = Client::getEmail($guid); + $phone_number = Client::getPhone($guid); + $client_info = Client::where('user_code', $guid)->first(); + $email[] = array( + 'email' => $email_address + ); + $phone[] = array( + 'phone' => $phone_number + ); + $badge[] = array( + 'name' => 'Test', + 'code' => 1 + ); + $bonus_dishes[] = array( + 'code' => '' + ); + if (ClientsBonus::getBonus($guid) > 0) { + $bonus_info[] = array( + 'amount' => ClientsBonus::getBonus($guid), + 'dishes' => $bonus_dishes + ); + } else { + $bonus_info[] = array( + 'amount' => ClientsBonus::getBonus($guid) + ); + } + + $group_info = ClientsGroup::where('code', $client_info['group_id'])->first(); + $client[] = array( + 'id' => $client_info['id'], + 'name' => $client_info['name'], + 'guid' => $guid, + 'presale' => ClientsPresale::getPresale($guid), + 'bonuses' => $bonus_info, + 'barcode' => Client::getBarcode($guid), + 'group_id' => $client_info['group_id'], + 'emails' => $email, + 'phones' => $phone, + 'badges' => $badge + ); + $groups[] = $group_info['code']; + $email = $phone = $badge = $bonus_dishes = $bonus_info = []; + } + $groups_guides = array_values(array_unique($groups)); + foreach ($groups_guides as $group) { + $group_info = ClientsGroup::where('code', $group)->first(); + $groups_info[] = array( + 'id' => $group_info['id'], + 'name' => $group_info['name'], + 'guid' => $group_info['code'], + ); + } + + return [ + 'status' => 'success', + 'clients' => $client, + 'groups' => $groups_info, + ]; + } + if (ClientsGroup::where('code', '0')->count() == 0) { + $group = new ClientsGroup([ + 'code' => '0', + 'name' => 'Без группы', + ]); + $group->save(); + } + $countPerPage = 25; + $offset = ($input['page'] - 1) * $countPerPage; + if ($input['group_id'] == 0) { + $group = ClientsGroup::where('code', '=', $input['group_id'])->first(); + } else { + $group = ClientsGroup::where('id', '=', $input['group_id'])->first(); + } + $clients = Client::where('group_id', '=', $group['code'])->skip($offset)->take($countPerPage)->get(); + $total = Client::where('group_id', '=', $group['code'])->count(); + if ($total == NULL) { + return [ + 'status' => 'success', + 'clients' => array(), + 'total' => 0, + 'size' => $countPerPage, + 'pages' => 1, + 'currentGroup' => $group['id'], + ]; + } else { + + foreach ($clients as $client) { + $phone = Client::getPhone($client['user_code']); + $email = Client::getEmail($client['user_code']); + $address = Client::getAddress($client['user_code']); + $out[] = array( + 'id' => $client['id'], + 'name' => $client['name'], + 'phone' => $phone, + 'email' => $email, + 'address' => $address, + ); + } + return [ + 'status' => 'success', + 'clients' => $out, + 'total' => $total, + 'size' => $countPerPage, + 'pages' => ceil($total / $countPerPage), + 'currentGroup' => $group['id'], + ]; + } + } +} \ No newline at end of file diff --git a/commands/GETDiscountItems.php b/commands/GETDiscountItems.php index 77a158d..26397ac 100644 --- a/commands/GETDiscountItems.php +++ b/commands/GETDiscountItems.php @@ -25,11 +25,8 @@ class GETDiscountItems extends HRCCommand implements HRCCommandInterface { } else { $discount = 0; } - $dish = Dishes::where('code', $item['dish_code'])->where('is_history', 0)->first(); - if (!isset($dish)) { - $dish = Dishes::where('legacy_code', $item['dish_code'])->where('is_history', 0)->first(); - } - $items[] = array('name' => $dish['name'], 'discount' => round($discount, 0), 'count' => $item['count'], 'sale_price' => $salePrice, 'sum' => round($realPrice, 2)); + $dish = Dishes::getName($item['menu_code']); + $items[] = array('name' => $dish, 'discount' => round($discount, 0), 'count' => $item['count'], 'sale_price' => $salePrice, 'sum' => round($realPrice, 2)); } return [ diff --git a/commands/Equipment.php b/commands/GETEquipment.php similarity index 93% rename from commands/Equipment.php rename to commands/GETEquipment.php index fc67277..78d312e 100644 --- a/commands/Equipment.php +++ b/commands/GETEquipment.php @@ -8,7 +8,7 @@ use App\Component\Models\Terminal; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class Equipment extends HRCCommand implements HRCCommandInterface { +class GETEquipment extends HRCCommand implements HRCCommandInterface { protected $signature = 'getequipment'; public function command($input, $output = null) { diff --git a/commands/HelloWorld.php b/commands/GETHelloWorld.php similarity index 81% rename from commands/HelloWorld.php rename to commands/GETHelloWorld.php index 4ab7d74..25838e5 100644 --- a/commands/HelloWorld.php +++ b/commands/GETHelloWorld.php @@ -6,7 +6,7 @@ use App\Component\Models\User; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class HelloWorld extends HRCCommand implements HRCCommandInterface { +class GETHelloWorld extends HRCCommand implements HRCCommandInterface { protected $signature = 'gethello'; public function command($input, $output = null) { diff --git a/commands/Import.php b/commands/GETImport.php similarity index 97% rename from commands/Import.php rename to commands/GETImport.php index 5593ee9..af98963 100644 --- a/commands/Import.php +++ b/commands/GETImport.php @@ -6,7 +6,7 @@ use App\Component\Models\Terminal; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class Import extends HRCCommand implements HRCCommandInterface { +class GETImport extends HRCCommand implements HRCCommandInterface { protected $signature = 'getimport'; public function command($input, $output = null) { diff --git a/commands/GETOnlineStaff.php b/commands/GETOnlineStaff.php index a5f03d5..a5dbe8f 100644 --- a/commands/GETOnlineStaff.php +++ b/commands/GETOnlineStaff.php @@ -9,93 +9,92 @@ use App\Component\Models\Staff; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class GETOnlineStaff extends HRCCommand implements HRCCommandInterface { - protected $signature = 'getonlinestaff'; +class GETOnlineStaff extends HRCCommand implements HRCCommandInterface +{ + protected $signature = 'getonlinestaff'; - public function command($input, $output = null) { - function staffName($data) { - $staff_name = Staff::where('code', $data)->where('is_history', 0)->first(); - if ($staff_name) { - $staff_name = $staff_name['name']; - } else { - $staff_name = Staff::where('code', $data)->where('is_history', 1)->first(); - if ($staff_name) { - $staff_name = $staff_name['name']; - } else { - $staff_name = 'Связанный персонал не найден'; - } - } - return $staff_name; - } - if ($input['method'] == 'dashboard') { - $staff_data = []; - $staffs = ShiftOnlineOrders::select('who_open') - ->where('is_deleted', 0) - ->where('is_returned', 0) - ->where('order_sum', '>', 0) - ->groupBy('who_open') - ->get(); - foreach ($staffs as $key => $staff) { - $count = ShiftOnlineOrders::where('who_open', $staff['who_open']) - ->where('is_deleted', 0) - ->where('is_returned', 0) - ->where('order_sum', '>', 0) - ->count(); - $name = staffName($staff['who_open']); - $code = $staff['who_open']; - $sum = ShiftOnlineOrders::where('who_open', $staff['who_open']) - ->where('is_deleted', 0) - ->where('is_returned', 0) - ->where('order_sum', '>', 0) - ->sum('order_sum'); - $staff_data[] = array('name' => $name, 'code' => $code + 0, 'orders_count' => $count + 0, 'orders_sum' => $sum + 0); - } + public function command($input, $output = null) + { + if ($input['method'] == 'dashboard') { + $staff_data = []; + $staffs = ShiftOnlineOrders::select('who_open') + ->where('is_deleted', 0) + ->where('is_returned', 0) + ->where('order_sum', '>', 0) + ->groupBy('who_open') + ->get(); + foreach ($staffs as $staff) { + $count = ShiftOnlineOrders::where('who_open', $staff['who_open']) + ->where('is_deleted', 0) + ->where('is_returned', 0) + ->where('order_sum', '>', 0) + ->count(); + $name = Staff::getName($staff['who_open']); + $code = $staff['who_open']; + $sum = ShiftOnlineOrders::where('who_open', $staff['who_open']) + ->where('is_deleted', 0) + ->where('is_returned', 0) + ->where('order_sum', '>', 0) + ->sum('order_sum'); + $staff_data[] = array( + 'name' => $name, + 'code' => $code + 0, + 'orders_count' => $count + 0, + 'orders_sum' => $sum + 0 + ); + } - return [ - 'status' => 'success', - 'staff' => $staff_data, - ]; - } - if ($input['method'] == 'items') { - if (isset($input['order'])) { - $orderId = $input['order'] + 0; - $items = []; - $order = ShiftOnlineOrders::where('code', $orderId)->first(); - $who_open = staffName($order['who_open']); - if ($order['who_close'] == 0) { - $who_close = '-'; - } else { - $who_close = staffName($order['who_close']); - } + return [ + 'status' => 'success', + 'staff' => $staff_data, + ]; + } + if ($input['method'] == 'items') { + if (isset($input['order'])) { + $orderId = $input['order'] + 0; + $items = []; + $order = ShiftOnlineOrders::where('code', $orderId)->first(); + $who_open = Staff::getName($order['who_open']); + if ($order['who_close'] == 0) { + $who_close = '-'; + } else { + $who_close = Staff::getName($order['who_close']); + } - $onlineItems = ShiftOnlineItems::where('order_code', $order['code'])->where('modificator_code', 0)->get(); - foreach ($onlineItems as $key => $item) { - $realPrice = $item['real_price'] * $item['count'] * $item['cof']; - $salePrice = $item['sale_price'] * $item['count']; - if ($realPrice > 0) { - $discount = $salePrice / $realPrice; - $discount = (1 - $discount) * 100; - } else { - $discount = 0; - } - $dish = Dishes::where('code', $item['dish_code'])->where('is_history', 0)->first(); - $items[] = array('name' => $dish['name'], 'discount' => round($discount, 0), 'count' => $item['count'], 'sale_price' => $salePrice, 'sum' => round($realPrice, 2)); - } - } else { - return [ - 'status' => 'success', - 'message' => 'Проверьте введенные данные', - ]; - } - return [ - 'status' => 'success', - 'who_open' => $who_open, - 'who_close' => $who_close, - 'title' => 'Подробнее о заказе №' . $order['code'], - 'total' => $order['order_sum'], - 'items' => $items, - ]; - } + $onlineItems = ShiftOnlineItems::where('order_code', $order['code'])->where('modificator_code', 0)->get(); + foreach ($onlineItems as $item) { + $realPrice = $item['real_price'] * $item['count'] * $item['cof']; + $salePrice = $item['sale_price'] * $item['count']; + if ($realPrice > 0) { + $discount = $salePrice / $realPrice; + $discount = (1 - $discount) * 100; + } else { + $discount = 0; + } + $dish_name = Dishes::getName($item['menu_code']); + $items[] = array( + 'name' => $dish_name, + 'discount' => round($discount, 0), + 'count' => $item['count'], + 'sale_price' => $salePrice, + 'sum' => round($realPrice, 2) + ); + } + } else { + return [ + 'status' => 'success', + 'message' => 'Проверьте введенные данные', + ]; + } + return [ + 'status' => 'success', + 'who_open' => $who_open, + 'who_close' => $who_close, + 'title' => 'Подробнее о заказе №' . $order['code'], + 'total' => $order['order_sum'], + 'items' => $items, + ]; + } - } + } } \ No newline at end of file diff --git a/commands/GETOrder.php b/commands/GETOrder.php index fa7490d..847e95f 100644 --- a/commands/GETOrder.php +++ b/commands/GETOrder.php @@ -6,6 +6,7 @@ use App\Component\Models\Client; use App\Component\Models\ClientsAddress; use App\Component\Models\ClientsPhone; use App\Component\Models\Dishes; +use App\Component\Models\Modifier; use App\Component\Models\OrderItems; use App\Component\Models\Orders; use App\Console\Commands\HRCCommand; diff --git a/commands/OutOrders.php b/commands/GETOutOrders.php similarity index 98% rename from commands/OutOrders.php rename to commands/GETOutOrders.php index 1936f5f..dd1cdb3 100644 --- a/commands/OutOrders.php +++ b/commands/GETOutOrders.php @@ -8,7 +8,7 @@ use App\Component\Models\Report; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class OutOrders extends HRCCommand implements HRCCommandInterface { +class GETOutOrders extends HRCCommand implements HRCCommandInterface { protected $signature = 'getoutorders'; public function command($input, $output = null) { diff --git a/commands/TopDishes.php b/commands/GETTopDishes.php similarity index 97% rename from commands/TopDishes.php rename to commands/GETTopDishes.php index 345ce24..edf4b7f 100644 --- a/commands/TopDishes.php +++ b/commands/GETTopDishes.php @@ -8,7 +8,7 @@ use App\Component\Models\Terminal; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class TopDishes extends HRCCommand implements HRCCommandInterface { +class GETTopDishes extends HRCCommand implements HRCCommandInterface { protected $signature = 'gettopdishes'; public function command($input, $output = null) { diff --git a/commands/TopDishesNewYear.php b/commands/GETTopDishesNewYear.php similarity index 98% rename from commands/TopDishesNewYear.php rename to commands/GETTopDishesNewYear.php index bcf9a2a..7d8331a 100644 --- a/commands/TopDishesNewYear.php +++ b/commands/GETTopDishesNewYear.php @@ -9,7 +9,7 @@ use App\Component\Models\Terminal; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class TopDishesNewYear extends HRCCommand implements HRCCommandInterface { +class GETTopDishesNewYear extends HRCCommand implements HRCCommandInterface { protected $signature = 'gettopdishesnewyear'; public function command($input, $output = null) { diff --git a/commands/POSTBonus.php b/commands/POSTBonus.php new file mode 100644 index 0000000..7b3b102 --- /dev/null +++ b/commands/POSTBonus.php @@ -0,0 +1,34 @@ + 0) { + $message = 'Начислено ' . $bonus_amount . ' бонусов'; + } else { + $message = 'Списано ' . abs($bonus_amount) . ' бонусов'; + } + $bonus_result = ClientsBonus::getBonus($client_guid); + return [ + 'status' => 'success', + 'message' => $message, + 'result' => $bonus_result + ]; + } +} \ No newline at end of file diff --git a/commands/CreateBarcode.php b/commands/POSTCreateBarcode.php similarity index 94% rename from commands/CreateBarcode.php rename to commands/POSTCreateBarcode.php index ed6f023..2188fe6 100644 --- a/commands/CreateBarcode.php +++ b/commands/POSTCreateBarcode.php @@ -8,7 +8,7 @@ use App\Component\Models\ClientsGroup; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class CreateBarcode extends HRCCommand implements HRCCommandInterface { +class POSTCreateBarcode extends HRCCommand implements HRCCommandInterface { protected $signature = 'postcreatebarcode'; public function command($input, $output = null) { diff --git a/commands/CreateClient.php b/commands/POSTCreateClient.php similarity index 97% rename from commands/CreateClient.php rename to commands/POSTCreateClient.php index 28238fe..f3c3332 100644 --- a/commands/CreateClient.php +++ b/commands/POSTCreateClient.php @@ -11,7 +11,7 @@ use App\Component\Models\ClientsPhone; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class CreateClient extends HRCCommand implements HRCCommandInterface { +class POSTCreateClient extends HRCCommand implements HRCCommandInterface { protected $signature = 'postcreateclient'; public function command($input, $output = null) { diff --git a/commands/Fiscals.php b/commands/POSTFiscals.php similarity index 88% rename from commands/Fiscals.php rename to commands/POSTFiscals.php index 9ae6f33..03847cc 100644 --- a/commands/Fiscals.php +++ b/commands/POSTFiscals.php @@ -6,7 +6,7 @@ use App\Component\Models\Terminal; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class Fiscals extends HRCCommand implements HRCCommandInterface { +class POSTFiscals extends HRCCommand implements HRCCommandInterface { protected $signature = 'postfiscals'; public function command($input, $output = null) { diff --git a/commands/POSTPresale.php b/commands/POSTPresale.php new file mode 100644 index 0000000..4ee1c4c --- /dev/null +++ b/commands/POSTPresale.php @@ -0,0 +1,33 @@ + 0) { + $message = 'Внесен аванс на сумму ' . $presale_amount . ' BYN'; + } else { + $message = 'Зачтен аванс на сумму ' . abs($presale_amount) . ' BYN'; + } + $presale_result = ClientsPresale::getPresale($client_guid); + return [ + 'status' => 'success', + 'message' => $message, + 'result' => $presale_result + ]; + } +} \ No newline at end of file diff --git a/commands/Printers.php b/commands/POSTPrinters.php similarity index 98% rename from commands/Printers.php rename to commands/POSTPrinters.php index 90173e0..1371071 100644 --- a/commands/Printers.php +++ b/commands/POSTPrinters.php @@ -9,7 +9,7 @@ use App\Component\Models\Terminal; use App\Console\Commands\HRCCommand; use App\Console\Commands\HRCCommandInterface; -class Printers extends HRCCommand implements HRCCommandInterface { +class POSTPrinters extends HRCCommand implements HRCCommandInterface { protected $signature = 'postprinters'; public function command($input, $output = null) { diff --git a/database/migrations/2022_09_22_140748_update_core_interface.php b/database/migrations/2022_09_22_140748_update_core_interface.php index 0ae9f4a..c17ae88 100644 --- a/database/migrations/2022_09_22_140748_update_core_interface.php +++ b/database/migrations/2022_09_22_140748_update_core_interface.php @@ -47,9 +47,9 @@ class UpdateCoreInterface extends Migration copy($indexUpd . $file, CORE_PATH . '/../../web/app/' . $file); } } - if (file_exists(CORE_PATH . '/../V1/forUpdate/')) { +/* if (file_exists(CORE_PATH . '/../V1/forUpdate/')) { deleteFolder(CORE_PATH . '/../V1/forUpdate/'); - } + }*/ } /** diff --git a/database/migrations/2022_11_29_003015_create_clients_presales_table.php b/database/migrations/2022_11_29_003015_create_clients_presales_table.php new file mode 100644 index 0000000..7a48836 --- /dev/null +++ b/database/migrations/2022_11_29_003015_create_clients_presales_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('client_guid'); + $table->decimal('value', $precision = 16, $scale = 2)->default(0); + $table->timestamps(); + }); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() { + Schema::dropIfExists('clients_presales'); + } +} diff --git a/database/migrations/2022_12_02_233015_create_clients_bonuses_table.php b/database/migrations/2022_12_02_233015_create_clients_bonuses_table.php new file mode 100644 index 0000000..be6b981 --- /dev/null +++ b/database/migrations/2022_12_02_233015_create_clients_bonuses_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('client_guid'); + $table->decimal('value', $precision = 16, $scale = 2)->default(0); + $table->timestamps(); + }); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() { + Schema::dropIfExists('clients_bonuses'); + } +} diff --git a/database/seeders/AddStaffRights.php b/database/seeders/AddStaffRights.php index 64ff500..cdb8aee 100644 --- a/database/seeders/AddStaffRights.php +++ b/database/seeders/AddStaffRights.php @@ -29,5 +29,8 @@ class AddStaffRights extends Seeder if (Right::where('code', 'eorders')->count() == 0) { Right::add('eorders', 'Онлайн заказы'); } + if (Right::where('code', 'loyalty')->count() == 0) { + Right::add('loyalty', 'Loyalty'); + } } } diff --git a/database/seeders/AddUserRights.php b/database/seeders/AddUserRights.php index 7abb312..dbb85ff 100644 --- a/database/seeders/AddUserRights.php +++ b/database/seeders/AddUserRights.php @@ -29,5 +29,8 @@ class AddUserRights extends Seeder if (StaffRights::where('code', 'RIGHT_61')->count() == 0) { StaffRights::add('RIGHT_61', 'Печать копии чека из журнала заказов'); } + if (StaffRights::where('code', 'RIGHT_62')->count() == 0) { + StaffRights::add('RIGHT_62', 'Отправка чека на email'); + } } } diff --git a/models/Client.php b/models/Client.php index 8524e74..dedfa28 100644 --- a/models/Client.php +++ b/models/Client.php @@ -13,4 +13,55 @@ class Client extends Model { public function clientPhone() { return $this->belongsTo('App\Component\Models\ClientsPhone', 'user_code', 'client_guid'); } + + public static function getPhone($guid) { + $phone = ClientsPhone::where('client_guid', $guid)->first(); + if (isset($phone)) { + $phone = $phone['phone']; + } else { + $phone = ''; + } + return $phone; + } + + public static function getEmail($guid) { + $email = ClientsEmail::where('client_guid', $guid)->first(); + if (isset($email)) { + $email = $email['email']; + } else { + $email = ''; + } + return $email; + } + + public static function getAddress($guid) { + $address = ClientsAddress::where('client_guid', $guid)->first(); + if (isset($address)) { + $address = $address['address']; + } else { + $address = ''; + } + return $address; + } + + public static function getBarcode($guid) { + $barcode = ClientsBarcode::where('client_guid', $guid)->first(); + if (isset($barcode)) { + $barcode = $barcode['value']; + } else { + $barcode = ''; + } + return $barcode; + } + + public static function getID($guid) { + $id = Client::where('client_guid', $guid)->first(); + if (isset($id)) { + $id = $id['id']; + } else { + $id = ''; + } + return $id; + } + } \ No newline at end of file diff --git a/models/ClientsActions.php b/models/ClientsActions.php new file mode 100644 index 0000000..694688a --- /dev/null +++ b/models/ClientsActions.php @@ -0,0 +1,11 @@ +first(); + if (isset($bonus)) { + $bonus = $bonus['value']; + } else { + $bonus = 0; + } + return $bonus; + } + + /** + * Save bonus value. + */ + public static function bonusReg($guid, $value) + { + $bonus_value = ClientsBonus::where('client_guid', $guid)->first(); + $bonus = ClientsBonus::updateOrCreate( + ['client_guid' => $guid], + ['value' => $bonus_value['value'] + $value] + ); + + return $bonus['value']; + } + + /** + * Bonus log. + */ + public static function bonusLog($guid, $value, $time, $staff_id) + { + if ($value > 0) { + $action_name = 'Зачиление бонусов'; + } else { + $action_name = 'Списание бонусов'; + } + $action = new ClientsActions(); + $action->action = $action_name; + $action->created = Carbon::createFromTimestampUTC($time)->timezone('Europe/Minsk'); + $action->user_id = $guid; + $action->action_value = abs($value); + $action->action_type = 1; + $action->who = $staff_id; + $action->save(); + } +} \ No newline at end of file diff --git a/models/ClientsPresale.php b/models/ClientsPresale.php new file mode 100644 index 0000000..3be97fe --- /dev/null +++ b/models/ClientsPresale.php @@ -0,0 +1,60 @@ +first(); + if (isset($presale)) { + $presale = $presale['value']; + } else { + $presale = 0; + } + return $presale; + } + + /** + * Save presale value. + */ + public static function presaleReg($guid, $value) + { + $presale_value = ClientsPresale::where('client_guid', $guid)->first(); + $presale = ClientsPresale::updateOrCreate( + ['client_guid' => $guid], + ['value' => $presale_value['value'] + $value] + ); + + return $presale['value']; + } + + /** + * Presale log. + */ + public static function presaleLog($guid, $value, $time, $staff_id) + { + if ($value > 0) { + $action_name = 'Внесение аванса'; + } else { + $action_name = 'Зачет аванса'; + } + $action = new ClientsActions(); + $action->action = $action_name; + $action->created = Carbon::createFromTimestampUTC($time)->timezone('Europe/Minsk'); + $action->user_id = $guid; + $action->action_value = abs($value); + $action->action_type = 2; + $action->who = $staff_id; + $action->save(); + } +} \ No newline at end of file diff --git a/models/ExchangeOrders.php b/models/ExchangeOrders.php index deb5ba3..4ecd58b 100644 --- a/models/ExchangeOrders.php +++ b/models/ExchangeOrders.php @@ -4,6 +4,78 @@ namespace App\Component\Models; use Illuminate\Database\Eloquent\Model; -class ExchangeOrders extends Model { - protected $table = 'exchange_orders'; +class ExchangeOrders extends Model +{ + protected $table = 'exchange_orders'; + + /** + * Get order info + */ + public static function getInfo($order_id, $shift_id) + { + $order = ExchangeOrders::where('code', $order_id)->where('shift_id', $shift_id)->first(); + $open_time = $order['opened']; + $close_time = $order['closed']; + $who_open = Staff::getName($order['who_open']); + $who_close = Staff::getName($order['who_close']); + $items = ExchangeItems::where('order_code', $order_id)->where('shift_id', $shift_id)->get(); + $order_status = ''; + if ($order['is_deleted'] > 0) { + $order_status = 'Удален'; + } elseif ($order['is_returned'] > 0) { + $order_status = 'Возвращен'; + } elseif ($order['is_waited'] > 0 && $order['is_closed'] < 1) { + $order_status = 'В ожидании'; + } else { + $order_status = 'Оплачен'; + } + $order_cash = $order['cash']; + $order_credit = $order['credit']; + $order_clearing = $order['clearing']; + $order_presale = $order['presale']; + $order_self = $order['self']; + $order_info = []; + $amount = $full_price = 0; + foreach ($items as $key => $item) { + $realPrice = $item['real_price'] * $item['count'] * $item['cof']; + $salePrice = $item['sale_price'] * $item['count']; + if ($realPrice > 0) { + $discount = $salePrice / $realPrice; + $discount = (1 - $discount) * 100; + } else { + $discount = 0; + } + $order_info[] = array( + 'id' => $key + 1, + 'name' => Dishes::getName($item['dish_code']), + 'count' => $item['count'], + 'price' => $item['real_price'], + 'sale_price' => $item['sale_price'], + 'cof' => $item['cof'], + 'unit' => Units::getName($item['units_id']), + 'amount' => round($item['sale_price'] * $item['count'], 2), + 'discount' => round($discount, 2) + ); + $amount += round($item['sale_price'] * $item['count'], 2); + $full_price += round($realPrice,2); + } + $order = []; + $order[] = array( + 'order_id' => $order_id, + 'opened' => $open_time, + 'closed' => $close_time, + 'who_open' => $who_open, + 'who_close' => $who_close, + 'order_status' => $order_status, + 'amount' => $amount, + 'full_price' => $full_price, + 'cash' => $order_cash, + 'credit' => $order_credit, + 'clearing' => $order_clearing, + 'self' => $order_self, + 'presale' => $order_presale, + 'items' => $order_info + ); + return $order; + } } \ No newline at end of file diff --git a/models/ShiftOnlineOrders.php b/models/ShiftOnlineOrders.php index 47885fa..88bdef2 100644 --- a/models/ShiftOnlineOrders.php +++ b/models/ShiftOnlineOrders.php @@ -4,6 +4,78 @@ namespace App\Component\Models; use Illuminate\Database\Eloquent\Model; -class ShiftOnlineOrders extends Model { - protected $table = 'shift_online_orders'; +class ShiftOnlineOrders extends Model +{ + protected $table = 'shift_online_orders'; + + /** + * Get order info + */ + public static function getInfo($order_id) + { + $order = ShiftOnlineOrders::where('code', $order_id)->first(); + $open_time = $order['opened']; + $close_time = $order['closed']; + $who_open = Staff::getName($order['who_open']); + $who_close = Staff::getName($order['who_close']); + $items = ShiftOnlineItems::where('order_code', $order_id)->get(); + $order_status = ''; + if ($order['is_deleted'] > 0) { + $order_status = 'Удален'; + } elseif ($order['is_returned'] > 0) { + $order_status = 'Возвращен'; + } elseif ($order['is_waited'] > 0 && $order['is_closed'] < 1) { + $order_status = 'В ожидании'; + } else { + $order_status = 'Оплачен'; + } + $order_cash = $order['cash']; + $order_credit = $order['credit']; + $order_clearing = $order['clearing']; + $order_presale = $order['presale']; + $order_self = $order['self']; + $order_info = []; + $amount = $full_price = 0; + foreach ($items as $key => $item) { + $realPrice = $item['real_price'] * $item['count'] * $item['cof']; + $salePrice = $item['sale_price'] * $item['count']; + if ($realPrice > 0) { + $discount = $salePrice / $realPrice; + $discount = (1 - $discount) * 100; + } else { + $discount = 0; + } + $order_info[] = array( + 'id' => $key + 1, + 'name' => Dishes::getName($item['dish_code']), + 'count' => $item['count'], + 'price' => $item['real_price'], + 'sale_price' => $item['sale_price'], + 'cof' => $item['cof'], + 'unit' => Units::getName($item['units_id']), + 'amount' => round($item['sale_price'] * $item['count'], 2), + 'discount' => round($discount, 2) + ); + $amount += round($item['sale_price'] * $item['count'], 2); + $full_price += round($realPrice,2); + } + $order = []; + $order[] = array( + 'order_id' => $order_id, + 'opened' => $open_time, + 'closed' => $close_time, + 'who_open' => $who_open, + 'who_close' => $who_close, + 'order_status' => $order_status, + 'amount' => $amount, + 'full_price' => $full_price, + 'cash' => $order_cash, + 'credit' => $order_credit, + 'clearing' => $order_clearing, + 'self' => $order_self, + 'presale' => $order_presale, + 'items' => $order_info + ); + return $order; + } } \ No newline at end of file diff --git a/models/Units.php b/models/Units.php index 5b9a606..f180147 100644 --- a/models/Units.php +++ b/models/Units.php @@ -4,12 +4,25 @@ namespace App\Component\Models; use Illuminate\Database\Eloquent\Model; -class Units extends Model { - protected $table = 'units'; - /** - * The attributes that aren't mass assignable. - * - * @var array - */ - protected $guarded = []; +class Units extends Model +{ + protected $table = 'units'; + /** + * The attributes that aren't mass assignable. + * + * @var array + */ + protected $guarded = []; + + public static function getName($data) + { + $unit_in_list = UnitsList::where('id', $data)->first(); + $unit_name = Units::where('id', $unit_in_list['unit_id'])->first(); + if ($unit_name) { + $unit_name = $unit_name['name']; + } else { + $unit_name = 'шт'; + } + return $unit_name; + } } \ No newline at end of file diff --git a/web/controllers/clients.js b/web/controllers/clients.js index d85b90d..2a44c12 100644 --- a/web/controllers/clients.js +++ b/web/controllers/clients.js @@ -1,353 +1,364 @@ -(function() { - 'use strict'; - angular - .module('app') - .controller('ClientsCtrl', ClientsCtrl); +(function () { + 'use strict'; + angular + .module('app') + .controller('ClientsCtrl', ClientsCtrl); - ClientsCtrl.$inject = ['$scope', 'smartRequest', 'Notification', '$rootScope', '$timeout']; - function ClientsCtrl($scope, smartRequest, Notification, $rootScope, $timeout) { - $scope.clients = []; - $scope.groups = []; - $scope.statuses = []; - $scope.filedate = ''; - $scope.currentGroupId = 0; - $scope.currentClientId = 0; + ClientsCtrl.$inject = ['$scope', 'smartRequest', 'Notification', '$rootScope', '$timeout']; - $scope.currentClient = {}; - - $scope.orders = []; - $scope.order = {}; + function ClientsCtrl($scope, smartRequest, Notification, $rootScope, $timeout) { + $scope.clients = []; + $scope.groups = []; + $scope.statuses = []; + $scope.filedate = ''; + $scope.currentGroupId = 0; + $scope.currentClientId = 0; - $scope.isCreateNewGroup = false; - $scope.newGroup = {}; - $scope.newBarcode = {}; + $scope.currentClient = {}; - $scope.isCreateNewClient = false; - $scope.newClient = {}; + $scope.orders = []; + $scope.order = {}; - $scope.search = { - query: '' - }; - - var promise = 0; + $scope.isCreateNewGroup = false; + $scope.newGroup = {}; + $scope.newBarcode = {}; - $scope.clientsSearch = function() { - - } + $scope.isCreateNewClient = false; + $scope.newClient = {}; - $scope.update = function() { - smartRequest.get('client/list?page=' + $scope.currentPage, function(data) { - $scope.clients = data.clients; - $scope.countOfPages = data.pages; - $scope.pages = $scope.makePages(); - }); - }; + $scope.search = { + query: '' + }; - $scope.getGroups = function() { - smartRequest.get('v1/clientgroup', function(data) { - $scope.groups = data.groups; - $scope.filedate = data.filedate; - $scope.openGroup({id: 0}); - }); - }; + var promise = 0; - - $scope.openGroup = function(group) { - if (typeof group === 'object') { - $scope.currentGroup = group.id; - } else { - $scope.currentGroup = group; - } - $scope.currentPage = 1; - smartRequest.get('v1/clients?group_id=' + $scope.currentGroup + '&page=' + $scope.currentPage, function(data) { - $scope.clients = data.clients; - $scope.pages = data.pages; - $scope.currentGroup = data.currentGroup; - $scope.total = data.total; - }); + $scope.clientsSearch = function () { - }; - - $scope.editGroup = function (group) { - $scope.contextElement = group; + } - $('#edit-group').modal('toggle'); - console.log(group); - }; + $scope.update = function () { + smartRequest.get('client/list?page=' + $scope.currentPage, function (data) { + $scope.clients = data.clients; + $scope.countOfPages = data.pages; + $scope.pages = $scope.makePages(); + }); + }; - $scope.updateGroup = function () { - $('#edit-group').modal('toggle'); + $scope.getGroups = function () { + smartRequest.get('v1/clientgroup', function (data) { + $scope.groups = data.groups; + $scope.filedate = data.filedate; + $scope.openGroup({id: 0}); + }); + }; - smartRequest.post('v1/clientgroup', { - id: $scope.contextElement.id, - name: $scope.contextElement.name, - task: 'update' - }, function (data) { - if (data.status == 'success') { - Notification.success(data.message); - } - if (data.error_message) { - Notification.error(data.error_message); - } - }); - }; - $scope.removeGroup = function () { - $('#group-confirm-delete').modal('toggle'); - $('#edit-group').modal('toggle'); + $scope.openGroup = function (group) { + if (typeof group === 'object') { + $scope.currentGroup = group.id; + } else { + $scope.currentGroup = group; + } + $scope.currentPage = 1; + smartRequest.get('v1/clients?group_id=' + $scope.currentGroup + '&page=' + $scope.currentPage, function (data) { + $scope.clients = data.clients; + $scope.pages = data.pages; + $scope.currentGroup = data.currentGroup; + $scope.total = data.total; + $scope.closeCard(); + $scope.orders = []; + $scope.currentClient = []; + $scope.clientLogs = []; + }); - smartRequest.post('v1/clientgroup', { - id: $scope.contextElement.id, - task: 'delete' - }, function (data) { - $scope.getGroups(); - if (data.message) { - Notification.success(data.message); - } - if (data.error_message) { - Notification.error(data.error_message); - } - }); - }; - - $scope.editClient = function (client, group) { - $scope.contextElement = client; - $scope.contextGroup = group; - $('#edit-client').modal('toggle'); - console.log(client); - console.log($scope.contextGroup); - }; + }; - $scope.updateClient = function (group) { - $('#edit-client').modal('toggle'); + $scope.editGroup = function (group) { + $scope.contextElement = group; - smartRequest.post('v1/client', { - id: $scope.contextElement.id, - name: $scope.contextElement.name, - group_id: group, - phone: $scope.contextElement.phone, - address: $scope.contextElement.address, - email: $scope.contextElement.email, - barcode: $scope.contextElement.barcode, - task: 'update' - }, function (data) { - if (data.status == 'success') { - Notification.success(data.message); - $scope.openGroup(group); - } - if (data.error_message) { - Notification.error(data.error_message); - } - }); - }; + $('#edit-group').modal('toggle'); + console.log(group); + }; - $scope.removeClient = function () { - $('#client-confirm-delete').modal('toggle'); - $('#edit-client').modal('toggle'); + $scope.updateGroup = function () { + $('#edit-group').modal('toggle'); - smartRequest.post('v1/client', { - id: $scope.contextElement.id, - task: 'delete' - }, function (data) { - $scope.getGroups(); - $scope.openGroup($scope.currentGroup); - if (data.message) { - Notification.success(data.message); - } - if (data.error_message) { - Notification.error(data.error_message); - } - }); - }; + smartRequest.post('v1/clientgroup', { + id: $scope.contextElement.id, + name: $scope.contextElement.name, + task: 'update' + }, function (data) { + if (data.status == 'success') { + Notification.success(data.message); + } + if (data.error_message) { + Notification.error(data.error_message); + } + }); + }; - $scope.pager = function(currentPage) { - smartRequest.get('v1/clients?group_id=' + $scope.currentGroup + '&page=' + $scope.currentPage, function(data) { - $scope.clients = data.clients; - $scope.pages = data.pages; - $scope.currentGroup = data.currentGroup; - $scope.total = data.total; - }); - }; + $scope.removeGroup = function () { + $('#group-confirm-delete').modal('toggle'); + $('#edit-group').modal('toggle'); - $scope.getClients = function() { - if ($scope.search.query.length === 0) { - $scope.openGroup({id: $scope.currentGroupId}); - } - else { - smartRequest.post('client/search', { - name: $scope.search.query - }, - function (data) { - $scope.clients = data.clients; - }); - } - }; + smartRequest.post('v1/clientgroup', { + id: $scope.contextElement.id, + task: 'delete' + }, function (data) { + $scope.getGroups(); + if (data.message) { + Notification.success(data.message); + } + if (data.error_message) { + Notification.error(data.error_message); + } + }); + }; - $scope.openFormCreateGroup = function() { - $scope.currentClientId = 0; - $scope.isCreateNewClient = false; - $scope.isCreateNewBarcode = false; - $scope.isCreateNewGroup = !$scope.isCreateNewGroup; - }; + $scope.editClient = function (client, group) { - $scope.openFormCreateClient = function() { - $scope.currentClientId = 0; - $scope.isCreateNewGroup = false; - $scope.isCreateNewBarcode = false; - $scope.isCreateNewClient = !$scope.isCreateNewClient; - }; + $scope.contextElement = client; + $scope.contextGroup = group; + $('#edit-client').modal('toggle'); + console.log(client); + console.log($scope.contextGroup); + }; - $scope.openFormCreateBarcode = function() { - $scope.currentClientId = 0; - $scope.isCreateNewGroup = false; - $scope.isCreateNewClient = false; - $scope.isCreateNewBarcode = !$scope.isCreateNewBarcode; - smartRequest.get('v1/clientgroup', function(data) { - $scope.groups = data.groups; - }); - }; + $scope.updateClient = function (group) { + $('#edit-client').modal('toggle'); - $scope.createGroup = function() { - smartRequest.post('client/group/create', { - name: $scope.newGroup.name - }, function (data) { - $scope.getGroups(); - $scope.closeCard(); - }); - }; + smartRequest.post('v1/client', { + id: $scope.contextElement.id, + name: $scope.contextElement.name, + group_id: group, + phone: $scope.contextElement.phone, + address: $scope.contextElement.address, + email: $scope.contextElement.email, + barcode: $scope.contextElement.barcode, + task: 'update' + }, function (data) { + if (data.status == 'success') { + Notification.success(data.message); + $scope.openGroup(group); + } + if (data.error_message) { + Notification.error(data.error_message); + } + }); + }; - $scope.createClient = function() { - smartRequest.post('v1/createclient/', { - name: $scope.newClient.name, - group_id: $scope.currentGroup, - phone: $scope.newClient.phone, - address: $scope.newClient.address, - email: $scope.newClient.email, - barcode: $scope.newClient.barcode, - is_special_price: $scope.newClient.special_price - }, function(data) { - $scope.pager($scope.currentGroup); - $scope.closeCard(); - }); - }; + $scope.removeClient = function () { + $('#client-confirm-delete').modal('toggle'); + $('#edit-client').modal('toggle'); - $scope.createBarcode = function() { - console.log($scope.newBarcode.group_id); - smartRequest.post('v1/createbarcode/', { - group_id: $scope.newBarcode.group_id, - start: $scope.newBarcode.start, - end: $scope.newBarcode.end, - }, function(data) { - $scope.getGroups(); - $scope.closeCard(); - }); - }; + smartRequest.post('v1/client', { + id: $scope.contextElement.id, + task: 'delete' + }, function (data) { + $scope.getGroups(); + $scope.openGroup($scope.currentGroup); + if (data.message) { + Notification.success(data.message); + } + if (data.error_message) { + Notification.error(data.error_message); + } + }); + }; - $scope.closeCard = function() { - $scope.isCreateNewGroup = false; - $scope.isCreateNewClient = false; - $scope.isCreateNewBarcode = false; - $scope.currentClientId = 0; - }; + $scope.pager = function (currentPage) { + smartRequest.get('v1/clients?group_id=' + $scope.currentGroup + '&page=' + $scope.currentPage, function (data) { + $scope.clients = data.clients; + $scope.pages = data.pages; + $scope.currentGroup = data.currentGroup; + $scope.total = data.total; + }); + }; - $scope.openClientInfo = function(client) { - $scope.currentClientId = client.id; - $scope.isCreateNewGroup = false; - $scope.isCreateNewClient = false; - $scope.isCreateNewBarcode = false; + $scope.getClients = function () { + if ($scope.search.query.length === 0) { + $scope.openGroup({id: $scope.currentGroupId}); + } else { + smartRequest.post('client/search', { + name: $scope.search.query + }, + function (data) { + $scope.clients = data.clients; + }); + } + }; - smartRequest.get('client/client/info?id=' + $scope.currentClientId, function(data) { - $scope.currentClient = data.client; + $scope.openFormCreateGroup = function () { + $scope.currentClientId = 0; + $scope.isCreateNewClient = false; + $scope.isCreateNewBarcode = false; + $scope.isCreateNewGroup = !$scope.isCreateNewGroup; + }; - smartRequest.get('client/orders?client_id=' + $scope.currentClient.id, function(data) { - $scope.orders = data.orders; - }); - }); - }; + $scope.openFormCreateClient = function () { + $scope.currentClientId = 0; + $scope.isCreateNewGroup = false; + $scope.isCreateNewBarcode = false; + $scope.isCreateNewClient = !$scope.isCreateNewClient; + }; - $scope.getItems = function(order) { - smartRequest.get('client/order?order_id=' + order.id, function(data) { - $scope.order = data; - $('#order').modal('toggle'); - }); - }; - - var mergeFiles = function (statuses) { - if (statuses == 4) { - smartRequest.get('v1/clientfile?complete=1', function(data) { - $scope.filedate = data.filedate; - $scope.filename = data.filename; - $scope.terminalkey = data.terminalKey; - $scope.downloadClientFile(); - $scope.statuses = []; - }); - } - }; - - $scope.createClientFile = function(count) { - smartRequest.get('v1/clientfile?th=1', function(data) { - if(data.status == 'success') { - $scope.statuses.push(data.status); - console.log($scope.statuses); - $scope.statusCount = $scope.statuses.length; - mergeFiles($scope.statusCount); - } - }); - smartRequest.get('v1/clientfile?th=2', function(data) { - if(data.status == 'success') { - $scope.statuses.push(data.status); - console.log($scope.statuses); - $scope.statusCount = $scope.statuses.length; - mergeFiles($scope.statusCount); - } - }); - smartRequest.get('v1/clientfile?th=3', function(data) { - if(data.status == 'success') { - $scope.statuses.push(data.status); - console.log($scope.statuses); - $scope.statusCount = $scope.statuses.length; - mergeFiles($scope.statusCount); - } - }); - smartRequest.get('v1/clientfile?th=4', function(data) { - if(data.status == 'success') { - $scope.statuses.push(data.status); - console.log($scope.statuses); - $scope.statusCount = $scope.statuses.length; - mergeFiles($scope.statusCount); - } - }); - }; - - - $scope.downloadClientFile = function() { - smartRequest.get('v1/clientgroup', function(data) { - window.open(window.location.protocol + '//' + window.location.hostname + '/Exchange/' + $scope.terminalkey +'/'+ $scope.filename); - }); - }; - - $scope.clientsSearch = function () { - if (promise) { - $timeout.cancel(promise); - } - promise = $timeout(function () { - if ($scope.search.query.length === 0) { - $scope.getGroups(); - } - else { - $scope.groups = []; - } + $scope.openFormCreateBarcode = function () { + $scope.currentClientId = 0; + $scope.isCreateNewGroup = false; + $scope.isCreateNewClient = false; + $scope.isCreateNewBarcode = !$scope.isCreateNewBarcode; + smartRequest.get('v1/clientgroup', function (data) { + $scope.groups = data.groups; + }); + }; - $scope.getClients(); - }, 300); - }; - - $scope.clearSearchInput = function () { - $scope.search.query = ''; - $scope.clientsSearch(); - }; + $scope.createGroup = function () { + smartRequest.post('client/group/create', { + name: $scope.newGroup.name + }, function (data) { + $scope.getGroups(); + $scope.closeCard(); + }); + }; - $scope.getGroups(); - } -} + $scope.createClient = function () { + smartRequest.post('v1/createclient/', { + name: $scope.newClient.name, + group_id: $scope.currentGroup, + phone: $scope.newClient.phone, + address: $scope.newClient.address, + email: $scope.newClient.email, + barcode: $scope.newClient.barcode, + is_special_price: $scope.newClient.special_price + }, function (data) { + $scope.pager($scope.currentGroup); + $scope.closeCard(); + }); + }; + + $scope.createBarcode = function () { + console.log($scope.newBarcode.group_id); + smartRequest.post('v1/createbarcode/', { + group_id: $scope.newBarcode.group_id, + start: $scope.newBarcode.start, + end: $scope.newBarcode.end, + }, function (data) { + $scope.getGroups(); + $scope.closeCard(); + }); + }; + + $scope.closeCard = function () { + $scope.isCreateNewGroup = false; + $scope.isCreateNewClient = false; + $scope.isCreateNewBarcode = false; + $scope.currentClientId = 0; + }; + + $scope.openClientInfo = function (client) { + $scope.currentClientId = client.id; + $scope.isCreateNewGroup = false; + $scope.isCreateNewClient = false; + $scope.isCreateNewBarcode = false; + $scope.orders = []; + $scope.currentClient = []; + $scope.clientLogs = []; + smartRequest.get('v1/clientinfo?id=' + $scope.currentClientId, function (data) { + $scope.currentClient = data.client; + smartRequest.get('v1/clientlog?id=' + $scope.currentClient.id, function (data) { + $scope.clientLogs = data.client.info; + }); + }); + }; + + $scope.getOrders = function (client_id) { + smartRequest.get('v1/clientorders?id=' + client_id, function (data) { + $scope.orders = data.orders; + }); + }; + + $scope.getItems = function (order_id, opened, closed) { + smartRequest.get('v1/clientorderinfo?order_id=' + order_id + '&opened=' + opened + '&closed=' + closed, function (data) { + $scope.order = data.info; + $('#order').modal('toggle'); + }); + }; + + var mergeFiles = function (statuses) { + if (statuses == 4) { + smartRequest.get('v1/clientfile?complete=1', function (data) { + $scope.filedate = data.filedate; + $scope.filename = data.filename; + $scope.terminalkey = data.terminalKey; + $scope.downloadClientFile(); + $scope.statuses = []; + }); + } + }; + + $scope.createClientFile = function (count) { + smartRequest.get('v1/clientfile?th=1', function (data) { + if (data.status == 'success') { + $scope.statuses.push(data.status); + console.log($scope.statuses); + $scope.statusCount = $scope.statuses.length; + mergeFiles($scope.statusCount); + } + }); + smartRequest.get('v1/clientfile?th=2', function (data) { + if (data.status == 'success') { + $scope.statuses.push(data.status); + console.log($scope.statuses); + $scope.statusCount = $scope.statuses.length; + mergeFiles($scope.statusCount); + } + }); + smartRequest.get('v1/clientfile?th=3', function (data) { + if (data.status == 'success') { + $scope.statuses.push(data.status); + console.log($scope.statuses); + $scope.statusCount = $scope.statuses.length; + mergeFiles($scope.statusCount); + } + }); + smartRequest.get('v1/clientfile?th=4', function (data) { + if (data.status == 'success') { + $scope.statuses.push(data.status); + console.log($scope.statuses); + $scope.statusCount = $scope.statuses.length; + mergeFiles($scope.statusCount); + } + }); + }; + + + $scope.downloadClientFile = function () { + smartRequest.get('v1/clientgroup', function (data) { + window.open(window.location.protocol + '//' + window.location.hostname + '/Exchange/' + $scope.terminalkey + '/' + $scope.filename); + }); + }; + + $scope.clientsSearch = function () { + if (promise) { + $timeout.cancel(promise); + } + promise = $timeout(function () { + if ($scope.search.query.length === 0) { + $scope.getGroups(); + } else { + $scope.groups = []; + } + + $scope.getClients(); + }, 300); + }; + + $scope.clearSearchInput = function () { + $scope.search.query = ''; + $scope.clientsSearch(); + }; + + $scope.getGroups(); + } + } )(); \ No newline at end of file diff --git a/web/controllers/loyalty.js b/web/controllers/loyalty.js new file mode 100644 index 0000000..c5b9b15 --- /dev/null +++ b/web/controllers/loyalty.js @@ -0,0 +1,340 @@ +(function() { + 'use strict'; + angular + .module('app') + .controller('LoyaltyCtrl', LoyaltyCtrl); + + LoyaltyCtrl.$inject = ['$scope', 'smartRequest', 'Notification']; + function LoyaltyCtrl($scope, smartRequest, Notification) { + $scope.discounts = []; + $scope.currentDiscount = {}; + $scope.terms = []; + $scope.defaultTerm = 0; + $scope.currentTerms = []; + + $scope.readonlyMode = false; + + $scope.selectedElement = { + type: '', + value: 0, + currentModal: '', + param: {}, + info: '', + subtype: '' + }; + + $scope.navigationStack = []; + + $scope.update = function() { + smartRequest.get('discount/list', function(data) { + for(var i = 0; i < data.discounts.length; i++) { + if(data.discounts[i].start_date === '0') { + data.discounts[i].start_date = ''; + } + + if(data.discounts[i].end_date === '0') { + data.discounts[i].end_date = ''; + } + + data.discounts[i].is_enable = data.discounts[i].is_enable === '1'; + data.discounts[i].is_check_all = data.discounts[i].is_check_all === '1'; + } + + $scope.discounts = data.discounts; + }); + }; + + $scope.delete = function() { + $('#edit-discount-confirm-delete').modal('toggle'); + $('#edit-discount').modal('toggle'); + + smartRequest.post('discount/delete', { + id: $scope.currentDiscount.id + }, function(data) { + $scope.update(); + }); + }; + + $scope.add = function() { + $scope.currentDiscount = {}; + $scope.currentDiscount.value_type = '0'; + + $('#new-discount').modal(); + }; + + $scope.create = function() { + $('#new-discount').modal('toggle'); + + smartRequest.post('discount/store', { + name: $scope.currentDiscount.name, + value_type: $scope.currentDiscount.value_type, + value: $scope.currentDiscount.value + }, function(data) { + $scope.update(); + }); + }; + + $scope.edit = function(discount) { + $scope.currentDiscount = discount; + $scope.currentDiscount.new_term_type = $scope.defaultTerm; + + $scope.updateTerms(); + + $('#edit-discount').modal(); + }; + + $scope.save = function() { + $('#edit-discount').modal('toggle'); + + smartRequest.post('discount/update', { + id: $scope.currentDiscount.id, + name: $scope.currentDiscount.name, + value_type: $scope.currentDiscount.value_type, + value: $scope.currentDiscount.value, + is_enable: $scope.currentDiscount.is_enable, + start_date: $scope.currentDiscount.start_date, + end_date: $scope.currentDiscount.end_date, + is_check_all: $scope.currentDiscount.is_check_all + }, function(data) { + for(var i = 0; i < $scope.currentTerms.length; i++) { + var params = []; + + for(var j = 0; j < $scope.currentTerms[i].params.length; j++) { + params.push({ + code: $scope.currentTerms[i].params[j].code, + value: $scope.currentTerms[i].params[j].value, + subtype: $scope.currentTerms[i].params[j].subtype + }); + } + + smartRequest.post('discount/term/update', { + id: $scope.currentTerms[i].id, + is_term: $scope.currentTerms[i].is_term === false, + value: JSON.stringify(params) + }); + } + + Notification.success('Скидка сохранена'); + + $scope.update(); + }); + }; + + $scope.updateTerms = function() { + smartRequest.get('discount/term/list?discount_code=' + $scope.currentDiscount.code, function(data) { + for(var i = 0; i < data.discount_terms.length; i++) { + data.discount_terms[i].is_term = data.discount_terms[i].is_term === '0'; + } + + $scope.currentTerms = data.discount_terms; + }); + }; + + $scope.addTerm = function() { + smartRequest.post('discount/term/store', { + discount_code: $scope.currentDiscount.code, + discount_type: $scope.currentDiscount.new_term_type + }, function(data) { + $scope.update(); + $scope.updateTerms(); + }); + }; + + $scope.askDeleteTerm = function(term) { + $scope.currentTerm = term; + + $('#edit-term-confirm-delete').modal(); + }; + + $scope.deleteTerm = function() { + $('#edit-term-confirm-delete').modal('toggle'); + + smartRequest.post('discount/term/delete', { + id: $scope.currentTerm.id + }, function(data) { + $scope.updateTerms(); + }); + }; + + /* MENU BLOCK */ + $scope.selectMenuItemParams = { + currentMenu: 0, + currentFolder: 0, + menus: [], + folders: [], + items: [] + }; + + $scope.selectedMenuElement = {}; + $scope.selectMenuNavigationStack = []; + + $scope.selectMenuItem = function() { + $scope.selectMenuItemParams = { + currentMenu: 0, + currentFolder: 0, + menus: [], + folders: [], + items: [] + }; + + smartRequest.get('menu/list', function (data) { + $scope.selectMenuItemParams.menus = data.menus; + }); + }; + + $scope.openMenuItem = function(menu) { + $scope.selectMenuItemParams.currentMenu = menu.id; + + $scope.selectMenuNavigationStack.push({ + type: 'menu', + value: menu + }); + + smartRequest.get('menu/folder/list?menu_id=' + $scope.selectMenuItemParams.currentMenu + '&parent_id=0', function (data) { + $scope.selectMenuItemParams.folders = data.folders; + }); + + smartRequest.get('menu/dish/list?menu_id=' + $scope.selectMenuItemParams.currentMenu + '&parent_id=0', function (data) { + $scope.selectMenuItemParams.items = data.dishes; + }); + }; + + $scope.openFolderItem = function(folder) { + $scope.selectMenuItemParams.currentFolder = folder.id; + + $scope.selectMenuNavigationStack.push({ + type: 'folder', + value: folder + }); + + smartRequest.get('menu/folder/list?menu_id=' + $scope.selectMenuItemParams.currentMenu + '&parent_id=' + $scope.selectMenuItemParams.currentFolder, function (data) { + $scope.selectMenuItemParams.folders = data.folders; + }); + + smartRequest.get('menu/dish/list?menu_id=' + $scope.selectMenuItemParams.currentMenu + '&parent_id=' + $scope.selectMenuItemParams.currentFolder, function (data) { + $scope.selectMenuItemParams.items = data.dishes; + }); + }; + + $scope.upMenuItem = function() { + if($scope.selectMenuNavigationStack.length > 1) { + $scope.selectMenuNavigationStack.pop(); + var page = $scope.selectMenuNavigationStack.pop(); + + if(page.type === 'menu') { + $scope.openMenuItem(page.value); + } + + if(page.type === 'folder') { + $scope.openFolderItem(page.value); + } + } + else { + $scope.selectMenuItem(); + } + }; + /* END MENU BLOCK */ + + /* CLIENT BLOCK */ + $scope.selectClientItemParams = { + clients: [], + groups: [], + isParent: true + }; + + $scope.selectClientItem = function() { + $scope.selectClientItemParams = { + clients: [], + groups: [], + isParent: true + }; + $scope.currentPage = 1; + $scope.pages = 1; + smartRequest.get('v1/clientgroup', function(data) { + $scope.selectClientItemParams.groups = data.groups; + }); + }; + + $scope.openGroup = function(group) { + $scope.selectClientItemParams.isParent = false; + $scope.currentGroup = group.id; + $scope.currentPage = 1; + $scope.selectClientItemParams.groups = []; + $scope.selectClientItemParams.clients = []; + + smartRequest.get('v1/clients?group_id=' + $scope.currentGroup + '&page=' + $scope.currentPage, function(data) { + $scope.selectClientItemParams.clients = data.clients; + $scope.pages = data.pages; + $scope.currentGroup = data.currentGroup; + }); + }; + + $scope.pager = function(currentPage) { + $scope.selectClientItemParams.isParent = false; + $scope.selectClientItemParams.groups = []; + $scope.selectClientItemParams.clients = []; + smartRequest.get('v1/clients?group_id=' + $scope.currentGroup + '&page=' + $scope.currentPage, function(data) { + $scope.selectClientItemParams.clients = data.clients; + $scope.pages = data.pages; + $scope.currentGroup = data.currentGroup; + }); + }; + + $scope.upGroup = function() { + $scope.selectClientItemParams = { + clients: [], + groups: [], + isParent: true + }; + + smartRequest.get('v1/clientgroup', function(data) { + $scope.selectClientItemParams.groups = data.groups; + }); + }; + /* END CLIENT BLOCK */ + + $scope.selectItem = function(value, type, info) { + $scope.selectedElement.value = value; + $scope.selectedElement.type = type; + $scope.selectedElement.info = info; + }; + + $scope.editTermParam = function(param) { + $scope.$eval(param.type[0].toLowerCase() + param.type.slice(1) + '()'); + + $scope.selectedElement = { + type: param.type, + value: param.value, + currentModal: '#edit-' + param.type.toLowerCase(), + param: param, + info: param.info, + subtype: param.subtype + }; + + $($scope.selectedElement.currentModal).modal(); + }; + + $scope.confirmSelect = function() { + $($scope.selectedElement.currentModal).modal('toggle'); + + $scope.selectedElement.param.value = $scope.selectedElement.value; + $scope.selectedElement.param.info = $scope.selectedElement.info; + $scope.selectedElement.param.subtype = $scope.selectedElement.type; + }; + + $scope.update(); + + smartRequest.get('discount/type/list', function(data) { + $scope.terms = data.discount_types; + $scope.defaultTerm = data.default.code; + }); + + smartRequest.get('menu/readonly', function (data) { + $scope.readonlyMode = data.readonly; + + if (data.readonly) { + Notification.error('Режим просмотра!'); + } + }); + } +})(); \ No newline at end of file diff --git a/web/menu_min.js b/web/menu_min.js index d3dba58..29ed179 100644 --- a/web/menu_min.js +++ b/web/menu_min.js @@ -20,6 +20,13 @@ item: [ icon: 'dashboard', order: 0 }, + { + name: 'Loyalty (dev)', + acl: 'loyalty', + url: 'app.loyalty', + icon: 'dashboard', + order: 0 + }, { name: 'Гости', acl: 'clients', diff --git a/web/routes_min.js b/web/routes_min.js index ba84f8d..7b367d5 100644 --- a/web/routes_min.js +++ b/web/routes_min.js @@ -30,6 +30,14 @@ controller: 'RoommapCtrl', resolve: ['scripts/controllers/roommap.js'] }, +{ + code: 'app.loyalty', + url: '/v1/loyalty', + templateUrl: '../views/loyalty/index.html', + data: { title : 'Loyalty' }, + controller: 'LoyaltyCtrl', + resolve: ['scripts/controllers/loyalty.js'] +}, { code: 'app.clients', url: '/clients', diff --git a/web/views/clients/images/client.png b/web/views/clients/images/client.png new file mode 100644 index 0000000000000000000000000000000000000000..f876b6010b97009bc8dd4a43f5794c9e510042a6 GIT binary patch literal 149295 zcmXtfcQ~Bi^Y-e!M@ZBV1c?$YI?0NN9v0C{bfSGkSv7*yTXZ6bVD;!_^%^ZiFRPbq zu=?uWXY>8Nu8YS%JI|as_uO;OoU;*H8p;%;_ent@5QWMs@EZ__0Qi>xL`(=g7}swx zz=Oo~)msk`NPrXji{o7&{{e&p0;zx%b-m|y7QI@MCzB=im*y^gG@4`HE7BN&6~R(7 zP_>*Im8UA?k4`hvED1iRsXd;te8I(?u7(^KdN;nqa)%d}Zw9K5LSSkNcMwSV5d=(( zeK%zZbEJ(wf>@T@+CfZ9Iik7PIXE~_8oEk2Y8`ic4mCqIn3g~($R&Ny@__Z=e{lt> zo~X~fq%@21@|&NHT!yE_O8LOzkMXN`i%5=o3kVp}vc&owR;!V(M>;nVntuu2P*iIZ_@qqt zI(;iUhtH!!zC;RKx*4G;_Dr0wT1rnQH)X$)D(!B;LBCENS<$k0odd6HZ|3W-<-j;? z!JKxWA`mrW^;DfU^3o-tj*UX=GNSmJ{bLR=UKRP<+gRKY96T+l1&oVT0r;-p`DS zMag4b$oux%ALc7KPv3{X#r313YCTLGVU}AM^ws^(1aUZW0dcW`zT$Rzvy}lh(d7Bg zFyZ3deN6C6y1d&z$zg#fCLc+<>sYo95u*;Jx9Y~fYe^C9gI2a8*QH0XwCERMva?sUmQ8Rv$~!*o_tnKDozu7`xLl;a_QDvggM3fMTgUeZC7o{ZI3M6=D9nfe`T z`!wc`-M(Kiz^IscpBym|q0CV`}QMY|?W6jtvwCWl}rGsO(0?z@xt3 z8jh_^^- zlsF4a=P3vW1*$V6|Lbju5%M>pX-PN4Z0ZFlx*rP2YsmizT!(tFR^b^L4QX(`-0l)= z%jFCoeXmJAbt4}EgTbVJ5@x4rX-}5K(!{mx=oC8J_2VJsb6{KNvKk_|fL&H^n%07-8Jwlf z28Ju+ZwOkh2Hmh3K|D_c1%(Gvy#{oDT-T`@HzjpHrS9Fe(!=NJ!T%B1(|n)j$r2cu@iU;DTH`i5Znm_7b*QL>C%n#Zjs>0q1UOpQ8BD7{h- zQ5Y$z?l@^^Pr7AXCi3JCF6S;i^d-cc9P{k>k55IwZshY)mAi&a_?97G^&t20gI<+I z3TZgVcXo3$E!c<%hMw<`-D8py6!75{?uc|UN0t=@9yRJGdfj?==dyWanY`CdJ}dJY zK65smCK58%1bHv9W4)$+9}8g54slA^b~)^_-m%hUopW=&v1j{bY$=ZIHX$M!y(mAp zSC`G(p!?xY%m)S+!bZ_K*@&dw@z)EQlP;OXB_(7>K6V+Mg}lb7<(81|lyF1U?$Tmp ziOJ1(Qkn@krXe+VSZxw&cZrB|PE~wvp;l)714gW7ZlMNZVoYNX!pBK`P2g6nODpU` zcs|tJ8&(k>+L@%~|FTDB(kc@vC}2=idf1GIx$MXMhEy2eotV4^c_95vFlG%}ZI}?Y ztKXbQK-PdA#Si}R>&4g8kwPL$=0`_JfBlMCf3LVW6>&A_O)jC?l(R)unaF@1&c|#M zvHPFFlZy6Pd#g%+W761%tS!2zQOw4P?CNj4x26^lJVJRvl^^4z5Ot)_i&>tVc`)Qw zO%Ymvn8K(XR}%46#6BJg)WUn%GkuUYBAT}D=Y=h+1VujjPY-Q8?jYO-;zQ)iJ*u+K zCUk86YYT9{9TcqaQg#9$gJNxHHP(q|9&f}wQM!y%Bk_}qPNJ4Yoa+Z zrMGhdb%1_DU%-lMnRUJrino0Pvl+hgjL7rlz6sWUKwz+Bb9~J;HFA z8ZGb8sm(U~ZF!-f+IJnVKIG^Jf~ML-w~SJ=WNcqlgOE>@0pEi9-P1~oUwXr-?aEcY z!A2fDZ0s+U%o~>2FA8NQqRNZ!s|MW*u`fMIQk4hl)&q5qw)9+cQ} zSzfHmnf0S9hzdexa(yN5K0Nuo?6=V3JbWixHwlsWT2v@DpXE?JMqSZ7;ia&#(NWCY zuq`PX5e}0G@}?0c4R&==tT{loX$fj+mn}*Z3H35^atP_Miw9BQ;?F)#eDvJ7w3PC2 zrNn~UZ}#2OsGb=m0oSODyyKC9X1~^p4wt}5{tCi#<3nHZ2S*s$vcrZ`5(`7TCeJRzf2;=BKpTec1~Kla*dL3?%SHeCK@ zLI>%Ug+cYD61s#AUffj^n(~qV30YNCF=R>8%VVjIp^z=DeYG}sVB$%MlGmElS3Ps9 zP?%8hMo+@LsUA6?%{ae*Xfvk{BYygz#iOXMrkv7!Hq|N3NAmId7sBI}*WzhQZMA)o zN#T?MX36`W`li-Tm#!s_mQ@9-I>0GAQxV+{86;lC% z{zb2~DxP*2Es3m%->$@UMzpBL14zMJ-ORy0O8X?>q)6YvPxDS|akS@JV#7Y8!+%}! zQ00ntUa^B4!uEG!)brle3)Q3x<%BRs)fkpRFp4_C`y+B3hHQq-IA2p3MdJZ>qgi*? zLQ|*m?~f=crulO}ddEuAwbL@OMvyZs>$OszzjU@NA$?F>xYKWn=*IlriYw;APrn1m zvAIMXqVOP~MyP(8bEXd%yzTkc);!C0+r`$})>+|W8kgdgcToJ>-$ZwjKO%9__zv25 zx|w185gdZyBAMX7gQ~e65rnl9PkV9937Jm5pyx0J(ZJ|AD=mmKNoZ`UAC(!CFugOa zoE@sRc+keKB`y7Uee2dc+@fUaMsM2WLpn*T#MmeQo1M5${7|8LufX7%Mqve@-I^n} zxw??59*wx{hp4_VmVOt1xs29)`xI)+)HM3&ot+_^m9cN&QA`rj!h}`4@>K~2H*f^1+Sl6P{)jExgjikDfX!(Ss@N|~<#i{>F$kNs) zF3ouzLLTq!jPU=)Rr-!7vBanz9gIgqGsZoREbzLjoBvrg?{w5EUCk{oU!kmb?Vb9P zs89Rp1OyIEQ~M>~ZxgQve?>=>^WCxO@JCY|Oe(7ujz8Z_naQp|ZHRx)JnlfA^WEj0 zdpeh5n$fz*>|2c#c^S{t(F)Vc`Gx%{qmC|@)&YSotT?0&AqHL_v;GnivN3({s{W)e z%XR0H&v3--X`v={cL+tLvY`rP?3!I*>bL73=Q0n4UcH7qRM~MzJ&dxjHRV8ko|C4G z@(q3!KQN;vN0j>g6qayMyl z4RpzXPMu=IBLh63Fi>_$m()oNJZDHkUfn>izRRCDRq`3Ps*0;qmAsrh5Qq$KdflXK zlEVt)rx|}1rb+uqtGSIz=w-L-tB4~012}8@B|pB%y?2LiKc`fD91hpaP}_{~6F7?R z-K%?XDk>P06f$L;OcGU8y@0loV2 zfSZ^|e{FlY<~~~rc&y#YMA3TlyK^n4p7KTdIG)Qfunhjw)5XNLdLBO@Pi=KE7^|=>%%20~c=s7A!Y)B^ za&7Z~b9zDkq=eqB0FJ*d|WE$SLYbJfLLU30yB=Z!RnH>t$&USpD z$b0I;-B&*n*c<~5b_msf=`Gu{l6d0}@2B+s>9E(m_M8fCgEdVyc}0!f!JuetRw?Jd@3x(l8KEm*V78kP{Ph73ViQBg zpWU|zF(+cefAy38n>{HyiwOLH<7GRaJV)M>etsDT%oA8`?+m+wL4Q{PuW?2z?Ykdw zHa}MU6YZ~{iz9*lC*a!Q!wx0t?m*>Wq_ z=AxdRGP`R;6#My^E1LJJLhzm4;y z@fY31M?=D;Mi- zisr(VO35E`4VA8tr% zu=;|lt_Qh?G90OpUNr%6$=JB2{nnBTkOI54#w`=j^jhA4xufv>S1)hK&>j0OV$#hxh); z8+bwGYyEF+gB8^zXlx`k!W6M$owR;iO~+@=WAkjc&d{T9N$|_fD4`%8Wm(FgnODTT z;1K>izs%|zdO7tK99z)W4=t&VtN^Lp358=w8H2?XgVaoLTq%n^D$>+!K5(aAqfOn; z_iFj^Dxh20?16vFusobb47`srt^@nNU#@B!-2`#z+MH}-B<@!k%cwjhs^gceYpdP< zTmq?WJ36~bWrG~W+_3yd^a`Jpp%DOsADY(g7P+Pk&j~Scz`;U#$dUEGH#X7dj`8Lr zvrx9mylYh(l&8(j$0{Hx5m$4Qe*g+%Aqe3F58rT(Op0*>bV~j@_eQ-6$TUkUKiWxuy1PpRh1StRuEi8#ldvrX5ID0 zqkN&&W&B30Ugj3vp)GyeEldMQ3>Ff)AV6sJES65E6EQ?5FGb(4`<~EOzt=FmC&|uC z*Eh*I?tVP{P=#=V2^G)H>Q=BY)%}8;eEKO?m&|3r9tAnInmgNR+uKjF)5+0oy5G`& zT46Z}q4HjjK7Gjv(l9=ZW|2IT%Wlx)k_L1{O8ZxU>*~^sbk#RDB!&;9Pc?%LPnHBt zy}eT%iZ7hiSG(XFhciuI5FZ;1p5N~SX{l028pHy-<}3_%oXTe>PbjWWbVV2$1YXdUcq$8Rr}3NQEg%fRzlGITiiW7?*0fW0dY=DP6^#cgP7v4 z^};=5m7xmNNiqtPI1^Ls^5|W3ZBgBwm0aFCDT~0S6>%OS`SCT_6SY2oSG!T5wVUSh||K4?7deq{?JG`bj#UDq!t}T%`?Ac%2`sfoN&QUKYUJcgX~2=)7jF)ftvlk!kbw z6UOJ?!&mUh{&zpBJN-6C z_h;p^+xpV1cjIms2L*|i<}HXm&~O9tE)qKeoim5?sa8#pCp>U$Ivdfh^%BhX4AQyH zE;6`au=~qpT#&!0Z~r=*Znqo*!t$^AT{r8pv>wo zF~>i&CYD52l?>c?5imPE;e9|oX{tl4F9rqY+4dUNG922-%mUU$lIcrg$Gh3m^!V1u zWT9UTA9oZKKkt4qDRiI=1~0ySLStY==S=;oyp>X0mCQ-*Hl8Ge=sr|*;czY3D#tnS z%32U{CrjA%s}%>($H+Y)Gzap?R1Q9e-r=G;wd-GLFG};1F4t|f6R|Lj{yP3fm)?7= zr`>h<0U)M|3MQf6oDS|W6sw5vsHE2hske@DbT?IEJ=Y8rvw@zMA#dq{?93qy5$519 z?Ar%#%%uv}^6YqT0^Sc)j4Ta{O0d!EuZ>3aYgOHKt0LdZ3WwddUX24#k?md4sz?85 z$}p)+uw9x6;xCglc-18#w)oVuy~uWsEnrtQ6`zOviUv&z5SwS`*J!}~FYv57^Wa9y zvhq*AQ*X@5xpw_4)7FWS-<(G&rVSJy!T79sKZ5zrIz{_805@Zs z-%v8_p%+qXkOXdfVKaS92>Ye81p{_`3png1w2!rzrpoQz{|g5`)dolJ)$U1GdC!vJZ%NQx%~OwSY`8b*~9#=`FX8BrahfvAq%TEpv>s3a@@ zjJ<5$JJhu)%M%4JEz*y%MeS3IzM!j~Q@nH03uA$8)};mYWc(}1*D8?EtuYaIXm&k z2R+HSwt}EIlALk6E2ol^q;Rt!va}Y)MtT3Jvu~FkSl(ZYc)%=y|N3=+;IQn&Cn;?? zcLtY;pDH2?c=H^@2)Y?*y0o!QX0*V=pI4t}i3Nv7t-Urd!xUBu1P(Sz$28YpyCt#u zcg8Z^#B1C^(!BzX1%+^czoCBn0d0e+a@mez=o_Q^TubUn+wJT_U+3O@f_s@lqJ{sV z#FGvQbph*k&lp?Djz4@!ZG)ydYFwHuL|?5OcbJvownGFFtXVSg7<^h9PcAG8d*aBa z$uEsCOODsOOz_CddlB)91r`{_#8tQNiIZ#FoBST0cJBrn)+WhNouYy1=?GPpER5#n z;rZVh(;F$z)DSZq2e!x9UZ&CK%$1djn*+6;1_D6R{l4+wrH<@{9W&1=&N7eYwR54d z?lZ-tvrO?!7NCcOl_cC3W<|{o1HuA^TthsM#-P->Q^^nMmfo8hAoQm>PJ6lkP@Mf$H#Fs;AlhF&?M?PF(EI0(97{lRqsa z0qjN^YOMp*CXNf+77S@HS#>)5&}MwMws2;}C1N;SBD?-?E7=^I*IXjkX=F#ptRw)8 zBnvGd*b!OJ0;>=<6P02SZT5n4ErD}yhssq z`rD$_?tgBSBe{8clDA>(Ny6Gy_^DF1(TpRz02S5<*Rdl@>Vs=%FQmS??TDQ3uuz_& z$ikRijV=*g@&*mRMi!thqu4}YVG02QNi3r*|D9~ubUfv(`RL2g&$1Ag-m;A~_8E!( zd*CuI&}xfsSAHwja+MF-(Tn7T^Y>iJNeBGkA=1A`630-Zo4?0hR1rAlRRT3#?;42O z0Xd+pOfDda54>S;czRgKqc<+$-ivT4&@<}}S#?=FOpNG21{Qe<>3qF02m zN7{3bTQIB~{gc!8QomCta9MDB_!JnQ|E}l_tReu#`d^VqpROqXw|bB?BlHOv&tVz2 z2yb{mqO7HZb@A`a9ngEfqloX*DF_kXm^JkMDyUB?2VB=Nr<2Tk0*jV9{LoJ533ujb zL=}$ie{S&u*HfDzOr!JGOM0LN`wfbYF+{AVxf0-gAF(*rd!s3=_i@o|oDwyVt82@H ztTMRWxdw9q&wTsNH@;V|t+yaPLs-*NGF6Bh})V_;rNFfb00nS)%o97Dr3qaS0=}sbn0V2>Uj$6eWQgxNHFvO5SQQ} zr5RiSVvuSpUJ@Z?oJ2EI&9=3_KD);9Be7s_LM$F0H0Qe z1#<(_JJFS~&<~ri6-tmmpta%}YIAdK{F!V9eINj}2@^kErLPnpnV=`zK3#vLqn*x| zzW^d#T#g$Q0TUO8NV<)2cnt5)ai8Y(cu7EHZYF!isMHyEHplOf@ZSJF7iIbcDt!%= z!hB9M_kAFA>v>xFA`@r1yC-T_47$6~fn7#SWH1k)Cy%8eN3t|jApHd&O`9IQXRl4% z^I-Q&Hwva(|0p)Iv|l9d*-tbt7dmy4X)TepjK4;>ItjF~6v3W1%X=mUD& zv6pG8JWt+Q+K}H{#o4ZZkLU{c-WDJmbD)EB8ulp9GW4H8u;W`D8iSmAQXKrF>d^hw z-dmZoz>x+88Ia^by6uoy^KNf`2cT;1*I>gehj6SwOfd&u9n1x|ohWGz-}qH|o@hqT zT+>Gu>1uPXKCqND1cC-;8}LD^*OhBbJPi6xM5^w|kkdT>;1(40x1woo#*ea(*@K)P zHv%Tdg$<%yC=*28wmFmkSE#LBx4~uFQ=~q2EUQD;_AY-p{dhTbty3AczU;oAcsyXi@mrnxWS1jw>C!zyNJ3KCR zD}QrcrMcKhe-vWyZ&ekRhZf%@@70!+0DloT5n1^7iKwiw?W!-Oj2alK-*J7i)2A4!)4QC$_ zl>TcWP%&U3cI0|MEPEqVzf?_=7kg%3_EdX7Q;ag=-0TnYg;E#!_>vR2i$%hQWdTsa z#EH<81QzDNsNtdZu?F{$X_j!q!Hz|^`1I*})g7@HVM0Jg9@G5u5Cj}*yEbM$wDkr( zJxQNkipn$^A^(vsn{RnfPCc8b8@Asdh+VhMIs}0;fnN(Yzuy;C9V06!9r&wZ3GY`4 zWLPEW&_IZ0>{1x31#Ehgr_)fpJjBYJcP3Ntq(c0?NAG zSq%9W?O~D_U{sp+T2&jTvIDy*+I@f&;-1zLL^g|(KMmB4$}tl<{#7X7(8tMv8UdD> z_uhFtpKLd}PBp(!?!)Z|)89Ht4*yxk4^Kd%%Jwy6>9A}7X36wL$J7FL;=a9k656;! z-y1d!jC+>!zpn6fdd6@!8k-8SVj*|O)L6e!+Mwf*|$P2Y0!|)kg&;XXs z^U77Dg|(Dw3$~3>sFuFjvdKv*HK@%g24@>^rg3d^s7lK^n4HFQu`wRFPh%1b&l0_S zaP;^3w2TGgf0|pR@;NJi#Q#AI90s49Xy53lK>NbBXcyxjZL?SD{?u6 z0o1NiZ8L9%ZjK{j3Z>R&=voHi_nGO$-6J}y9CW+`tea2a+*mzP#nQQMVF3>MjKTIi zG@dR0g&u@m){pD=MqChfzv2D=K*B^-7MRI+RC-QWrP?8RFn@hM* zya-=e8Bb`sla@WN6htg60vkIHLn7>XXO2s0y}g)$FD2majCuGW$_56*GndrDqWGBi8Kf4NEx)3}ya5`y zvGe9VFHVq5aontIWomek`g2&34pwqWC0p4F{*c&dt_Ls?H+-KvxJ?Uj`TPyvgYw=H z#;$Ilu?6~0Av9ue-Cg|gx_R`KI;{ut9Ljda2x1o5a)Yil z?6>W0?yrf4$v9D!K>SxajkS|_guOxPa@bhe^bbiG8B4qTSH{1$2 zK}NyWGw*Z7tVzhYA_ZRtzUKy1WWO=AD{V~Xt{Rwy61&vgg>MeAcMm|Wdmo!m%eg1b z3>;&rx0X4#KrZd@f7qByoP*=2i(6HD`n3Pqt$P5SI&a>oX9T^U8XN{oW={e}EQDa( zd6bHf4F?4cnuEet@#bG1)+dE-wHI_upBfvC-H?*37%XSzQT9M9sK=iBBUDV@Pe6aUZUlT$ zD_^wVoZA~0-}DnIQrD+2vlE6L-T9a5xX6;{eyznF+-{$3x)!*CCE8@X);osvi!+jN zti{-AoO#Jh0b>TuDD;)`tsD6Mn!bgcbj|nzF6>zl@_;FZ*_ZT$Z7;pDb<=IGT~ zCxWsW9Rf86wju(6=v?XhFT!2j1y5t;uSEmL@^9yxE$@$DRDAicr%psPU5$V)1vIiG z1d{V)y%YoI&P2T7@ahP)iZ$?=>`6^a8oi>yuBh5FULBk{{7L!lT)I`bH0arF6*Tt0 z$!*I_5+Z#g!?!2Ej1LSpNeF=ti;1(xtZ`WgoDEDMVjC#Tu?sN;`tC9ALZG-A3-Aoy z3qX-!Fu#9%q0{FpjAVSc;ZB+ml#ew4Ht~9~^II)fU?2Hl=x%wx_@7W)wD*2w$uX_R zQ*5GSViToC#UERrFjjrf0G+liYZhyAJSdcOPuKpv_JrKQyUBlP>`6ok7hjryJ&Q~s zuu#3(~zvt>sYDwh~B zM}?c1==`Yxd)jPn>h6}m*zO0m9dfxPs-sUl0sWM|vytw!MqrDUbC|5E-kf7PW!dd; z0QUJ6InYOmhh++8zGu&q*pcW}hwj|qy?)}dL^k$&_08M0*FD1L|Mut@heOf0yrIEZ zn?OUbuEig{&PBE3)fHgH3_jlc^ZQ;k-B@q>d*G5!P3}>@7hAexfc%GOY4is4=zGuY z%JJ7l zY2-HsEd z0~}N%=bihArmULZG@BI$`@+3i__*ohQia!7VbZ_K^ZYe>TsQp++ca>@*^M=M+QZBE z^?gEbf7I0s$$70TF3GBo>~rMlw~1z}p8})iDu6ep?8^eXGvgvg4F>9{dxBm>Tl^IBsu9} z*8r6H<`%R(ovJRub6r_i$isn)O~l&G5R#@}L!Vdn3M&MhhRO_X$RLu!F?_K6PyZuZ zFiSiJY5U_I-8+w<1T$p>H2WGoPvw%n-~U|NW5<=1ggei$ee?l42PD~S&0X^C$o|%o zCMftmq?|%zR(ot6NwM;Eqv0uIhsAis_MO@b!sXV@>3ia9A; zSwSgsGJTZq=a1;LG2Qs=+7jYxlhYqn@ai;211?j7#QrQtw*!Fm$*URz8Vhm=Ovc5L^ONl*edvj{K9 zI~uvy^^)y>7E*jG`0_l}V|okz(1Q9jna*d!zXJCv-9HmEeWLahX_<~H%4{?(%ml{u z;Nz{Ry{q)l^Ki|@_ZulTM3BMte~hiY#oY^|5iXb<*2reFbaI^!joN!g$Km@K)@E8L z!k{p*xJf{Xqm2=^m@<|I4&UD&icp=tSQV^&*=A%oi<|m==TH^v%>;oD8bN`pvpt4i z@yA7b;L01deZAxyNAV13wD153E(XIF$os)Gfj3rOJ4w3Z_tK3&V8&54R0;|%@m+h;O5t8PZCpTon&wI954mg|l-m)v%+He%Cd!zn-!O&2ol57<#n zcmLov*GK;+-*U8f@x5%fhtJoqppgJsLRUHXzpeIK17!S+u?{Erx>nW@H6r7`GLqHD9Vz6U0eSfpNPPh_opcddwp>W;tjv}5%VR|tqtzAm|`97+kd&xUJMhn$@R&@tv+`i8 z46WLP64r*&>Q-K#x) zEkO9Rx}t`G(e)EdN}ihlCe_H~(lTc3aXx7SSg{>#zWz0_EMV37V(`fm-e{Wti^_Hq zOqh`4jkCSFh{Yx`)6Z;M*<%b|cvQnZ2D45mPDE4ZW!4LY2_KWd^U2MI-AL(~p7iN0}f`$_A(Y$P-F zZg^n-M1!hpXsjT)WMy18rq<8pAL)%1t|Bnv#A><4IQALF^S|DBZE8}^)L)roTLlWP zc>^0wXPFpOMAvkFQXdjA@0@+JlRNMAw0DvDt~=3Zy|U9H2>Qrh{a;Elff4%jW6yO$ z+*I7-7}YYwS3Lx4`#6{%g-g$O%CvYUcp7l|s1l~-Qp+Lb)u4NFG zT!5L>y3%jITshFOlH=7UUMSl+y8vQnIo$RU){o!7Xul}Q;Bq8}>`N17M)Wkb$w8M5 z0tdRN%l}nQyQHE;vb1XPq$f7j=^`VuR<}&@jQP~seZ7$n@-&tsQ@;~&B;KHcXG1Mt z{CShQdRA16pZfjF|LyDC=V)PZKK%)9dj!Q$^bsop>OH<4_>d#nM`}Jc#otGeU7M(n zR3VRY&&|X<{O2pL(<^y2d;j7)TdYYj#0Y1NDehzT2FH|R%%aU_o33h9j$wRM&5c)<4oPz`(fb2>bv3WJL!D z3%_~qtRAA~ZD){!SmQZzVQQ|2W#&4xb8zNSM!9I@#lC`oaPXx(4;JNJk!HK&H3EG4 z{~sF8Zb)cq*`SeQh>dpO+yqSyf`Am~juYkciG#|Iz#)mG%?RgRjtj&s;C%Q@=p?oo-a_TqnDkt4XFImSH zSm&_`L&$vxCIyS|a3otlA6*a;+WCEn<|b}4F)izj^UMDZ^X5-gX|JiQc26fQg~cp! zV=4au%#+a6Kcl3A$`55mCURC^3}uu2i_$kE(_pRi|2g(x?uP*cTti^uvyuD~veAk& zU$`ab`?nq;aT_$fTk=F{^nXPIxE=LUP0N|rH+Tu@bAIU)wRba}MC6nMhZ_T*9FnJY zRs_V$+;d&Xw=(Ie#yDg^O4SELQ7$m7tJyGC5c%+)^Qi`N)z^ky|g zm>OtXN`*M)a9c%eW9ezUPFv)sXN|icxfI-YQY+q6n9lzB*N?-b#PBk?BQ7SNd@t9m zh#E2ZuTLPxAEiN)aM(8N(|yy|PzCIAO*)|M>_m)YTv}PgeLr8$mP*$PTO7`_XG+#A zEUZ$n3x%Oou+okLb-zWQYRu0HabWMOTza6*5O@AlI%;dEzNvpNu|z<$^z9gwyFj4zKGHVt^`w#G3`rEM zi0=IteB3k)t;a5jEXaAFWiGCmh?%(s^J=oohw3DPlo81;*g zI9k!}$#Xi6N>ot7BCm(hT;(vmvO@IuH=mG%DbFXN()v>BkUt$OPH{V_1u&AqKGU<6GVTzo%C z(td9L#e2D%mB!O1w|vXp0CtoyIHokl&gZkkCm4bi`9bFxoH*h0ys|j->GL z%y)U`ed4;I-N*-SykAK<331yQgWK6f@5U&?Ow(mDp8AN|c-RfCkL8yK^*Z6awMs|; z&9-xh-hIo&K|b~R(D~=GDt(0Nd}3hjLvt>bUm0M#m_fS;D^X?o8Zdon^lJmi6V6jg zc#yt{PT3<4;(6NSU=r$bv6rZ~(!eztHg$wA9pk{%bQFD-h)=}}L0pjWhsF*n&8=0% znh2mO*F-San+GET)?az8-d>rNk7{_PhR^P}l?|pq3BcepBrqU1XX3DzCN(0{nBza2 zOY-Nn-1>^lmFv$FPExYs4*&j~#n+l_JM+m`mpV!W>B+W9k+S%ZlYuL~0%T<@0OoyN z8(8+rsArY%RaRGIQS@XoZ3-mHyKo|sKAARSjnpuSFC(ANaE%Wf6iq@sXK0;oU&87n z=&fJI;$jm)M5B%Qjw~@KIYIa`>Z_OYothowtJdG>xnF%$-u2{E-ZxdqQ?FU#%8S`a z^Eujy$yaVB+eFUYx!1@$^sZIUaB&AbS@~NKI0C3V)z;gR<;dZ1ryP+q;1sgd61wM< zUGd_!=_UF07?VFL8v)uwMM>TVXdnIKin|9d|2nj2JM}X4Og<{0Y0>`%7Xm%4D?@4HDj);@%K$DP+(Sc@ z{Bny2nx0(;Y8QC#^bq-#Z2;cx#^ldFNVBuD;`nICDeb!_1O1&g_Wp1jTCZL*5J)h! zqx0TgouE?#$WJb4>fo4=4amW|pi@%$Em=MRB{6k&P$}`DA}rWbwo+BcY-a|_ ze@uR~oy^ZpE`L*fzp&}MPPzTOl8VIAYhF+d3&d1JJSQFmfdFn*{xI$>>7n-yIC(15 z<|_$TAr~awqHkme3lP)5f=T)Dfg=b!K%q%Y7;TO7IFI;UcIGO}Az6*w{)35A0%sHA z8u$;DmyU`W|NNqP|FdNt-81=bh(-Axm#r)Hr{1G*y;)8zk zt>;wai@wmEnF$7?EvBI5uADxhm3p5t$LIUm?);|jO@j;gm%6Js{17 zOt>6cqo%;OMoc0wNNaaVru82scw%&;OP9;?Y_fsD2>XdwtVG;%3JV*w&Ot`yEmOLh zII&4|SLbACc_sgipAR(>UMAdkJih@(75$lae}8yfGnHMhx3Xm%S>{eLQ(nwNc(NTX z3w4QVrC@7q9xW-CY#juf_2oH=y%J_SSST$@Iq3c&u|M(CYyYJ^7m}~8JrY<9J2@`? zn`Zf6M|;3=t;VQyp`tja1$RF2@n^Ddmh->ZqvCbksC0v|J!tn(-_Q-+tk_!Oj9Qsfdp)4G+-16elUH@v&nP!*39b|?4#TJuR|Azc= zZS16fwu?^>6q0_*`K8(+WBFv}Q403E6`mJbstDni zKPWsorZh5}wmP=_g$OzGPP(#%#tL0`{4w)PlrrsR*KL6mON)&GzSMJcMky7?d3=`S zOZvchd4r^|m!41Z1mSvG+A28!Ld=m>aE{j#{+W2 zxLTr)WG-D9(cb5Xsjg4To4};GuYvby&n|M}TA7lF}g^OE1lP@b~`92kzmXJ9B2{ndh0~{cGO8u)tKb`H1e9&oO4xcm>)J?5|B| z16NS^K?^YG=pl5!1{>q%Q%fg?fJ^&ZuXEIaS>u;PB%>0&VlPL91>a6AFs%%wB5RAg z*KY}!joH`-^C6x6KrrHBBJ&-E^z>OScY$)itqUR5oV8BmqM0ng=ER0~OzHeaZxDmG z@E*C3`a=^F|*Z85^vG{k}&c1SE=Uk0SmXY z4juSI!aI}ijb9^*ivY}e`E;Rib~q!U=f4#y5x&#zwC39O+u6N<9A*1Dy(x!8Hzrd~c z-{qLlg1GJ`uLT>0_2z-l}iG`@zao1V{ z^%rNG)#OBTJ_5T7Zplco$#NK{trWwQ=-)qah^3aPw9emg_8_mQ=YpmZPN_nGcBpr$ z*{%Lk7(ds(b2WLahfb(aEad*RsodtE3>nR{2oHSwJK6`W#|x+7Z_9bHy712yw%D zN*h(pSd>)}SzZ31G|nV0XZjDd>NUChDb*+Yjtq2cBlksAoT-M{(#es)Fp2Hy1#8-) zg`Jl!&*{B4T;`6CV%@Xn(3mBqS>S$Q_eS5|iCI4~Bd_^2@}?bAn&>9|EFn5j`h%WmYp~n9j|+>Ry22Dzrge-7WZ|Kk&4YmusRDX-M~u}6fiU|h@7g~Q zn61b`^NnEPO&-}*ULzUv&yLIsy+ev7$V;;doUXRQqiM6O_5 z7KPcXk;STBSMYt2X9rM>K8S|CB|`9Y{G_Sdjp1p5hD`VSrRD;h1YlxT#xf+Zn8~_u z0)n&sWRN|CqEX*Un)~B@-*G?wPaRf z);2diI9~7|S97uWwf>p=AJ^`~ah0=GfFy`dToe*16&prlPv@_`r#g=K&@-hZ<7@R^y>__!BG_7;uG^+Co;8dMREQrg_pg%-vMJy=` z?}(*Me3qbV!*!1A)Rx@001w9=nPt}!=U3B=ZFOf?{MBIxU+(Z=mNP5!c~XT((7(67 zKCVzy%j`Yu4K@tUOlb2!3?O&FID~0l>}^pTu4yV|!a%ca@#Xb+s1{g6*SUOvdc@ zwysCpgw9!71@wkZ0HLD9RhI|sg$A*_Aeb$J}b7HD?I291jF3n+)Gs&idV*YFc zGIN(lv6=@%Y~?q=?qT$V(S>)e z7jWAX@xS|pzVq4LkBB53Vg)UqrIdT9x`7#8Qf7o&ZArD0$&wVlY{$Y(2&T{fu5I6wN{ot7W8#*4KO4@!p5G0|}grurmG3uirqcEImp;6qoMI zkA0I{lk*YU?qj&yp{v|uAYO#W`HdH!-9hIKu}gmY{Mi}r-B02$T0dE-ASWsSN2YSE zO5?_GhERdwj;`3P=|(e`*Q~#_LL%7ZnY!6e$ktp6b{OFu@|w&&%Y~e}Qs}Qun=zmX zCMO~BAO?%IwWp3e-u-3LzUS?lpYzyO_tP3Wb973uFe1{q5G#Xhy!9Qp>}={eD-%az zlF)gpQA&T-5!(3Ayr@K5t!yoI$NGM8XBS_>Br+8mpL#69b|>S%Ev0FsOFfSs{W>Te zIley&lq3qB(rR4-XFH~PLJjK|wH!h&yBqdXu_&fsZ!a|cq$Tyda@lQr?M{m7eOrZp zZM-WevT{T#_c|q0cKZNTdiw!t89wTLwYt+7C8^RtnYTmH0 ze;8E=d!&+b&QUF+#o_%x#aezIhSwTc)JTTJBWB&|Av#{vd5`&7&;CtK;hyi*+gBu` z6roa6p2Xs{o)2%&PrRCbH{dD!p{)q%4FEo4*@UA&b9IJWrFnUJ!7KsmH}y-oKO8#h zc5*p{ldWe{XEV)*ZU@$k#9`XnFGQ5fxoGK`wl4`#I0M%60-C63g&equ=(uoL%529T z$6S%RM6wUeAY{7dOT`0QTk9|;UP`I(V;e=hz28%G)@^DUyh)jff!xTe{)g53Z76K0 z`Gq~$P(52_c7vM%gUHa$;q`e>OBF;~_22aS40zteky5HVTT|=#htf2i)wxmGm4j5Q zP7K$f-(_o1*mCw#!AJ_4 zD5PI#A!2s6;qk@Vcr%gM4xXB`b}`opGEV>Wmr0N7o$6G}yL z>%8L7$DJHP^9p&Ho@H}?dD(sLgML^V_?jsecQ!{B@M*SHb*ML!OuP$-d_7$u^jq-KPOvP3@K$X*CeTGfRGje*cp5j75#MVsPmEjNTaKSickHogY-sFn;W;^i22m z4tAzIchk@NEa(xQRLH;OVu9}$?@SETS)I<|zxF=cATuAV5kS()@aWF`y`a#tK_txhuQ>B2-W0wFmrUB zV+XVI-mh|FP2B%dxpEk{P3*jG_LdU%YTgYSe7tf~{rfFXlP@WUN%Tw(s`m*3BGhtI zXFS%fKeHWm8V z^*2Vo+~KLewBx}LY@9!}=#n|p1y^aR0L$y(bmO4coRWzP%Vn2T9$MAjbS$ouF2GV{ zA4=Tf(0(9IVc+;MQH#$X&_SG# z)AT_oqXmx=X-XPqXkq<7(*mXG9%kWgkF)^(;?-5T@!Ve-H`|Sg#hma*fX%_%a~~Y^ zthp%+O{*i@qjZc`MjS2r$ld4SL;1O0V?zC$NR4~Gzz@1AYDYxk;h_L^21<+j5--Hl z+AuBD+w(7{EZxOx*lz!51`(YziOVmA!tl_|dc}o5iV;6;S#Ux$v?KB%WDXyJ(C$T7 z08~u7z?63Kj`w_hNx3@eN#ix?Xb;Z&sU*4Ejr#7oo3*E-RAvw?RM2u}n)!Y)ksBOx z$*3@&6|5V>JWMC-qXi=v7|nnhhU@PGo%TNihdRR0|(Isru@K5Gk%qUA>#! zO7pwwH&BPY(h{SzVByClmw+^i2R&KomUAx5(zq4q!;t-!q~oy*h|s!9EvzM(@q;UM z8LQ>e!#>r|KSl6DY{T~^w4Dd6iwhlY$STX5bfLq#bWKMytUz!)07GnhzMOvS=(|%M z=ymh-Mx3True%=@1Q=YV1a~?n*GPaNshF7IUw3CY`w_e@f9$^|>uCM^LWkt-1t2fk z_FVaqag`yfM+X?@Ra$wTp;T2}kP^LXlr(!S|Al(A7<4j-ElOz;1vO1z-TRBqNpyTN ziWls4f$6%LWQxgMikf+yhL)@@&nCu~k#M?|1@8%6iuKCHJpNkY`;@kj1V!JEe2wY# z*?x?34}CPfi_5`%!a2I02nUrX=zVl6$}&Wk>md9<8>8t+8t4AaLNO-3QBZ=%Xq{QD zeOYASA5t5mAR=(7(+tX!ZlZV!v>v~J)+4oXGdkah1?FRU@fQ0Y!OY~SSi*aM`s_7? zXwgo?%LNHRu|nS9#v3!u{F+RI-ClOAo?pqyjgYL9Xb%9AV5Va8GMUCy7F^+rdwKo6|D zF2H`TVG8zB;-1M=Gtv}+P&OC&-vi`*QPdX!1Dce-Mw zTfHg%AeJgBk@h|jP7m-r<)=wvBuM@|%A7+e=41!k1>VCRj4L_wAv%q>cj2X7N^;FX zv=n)%oAvhP)41^PYA-!f=_GM<7Dh4S>dF@jWL_@_#k?iJCY!ZvLMcn~RT)%LZB z{obAKiOp2DHf~%HfNz}(oT=B3KcHWEsyj^AGmBrHbip^KK?pV`{ZxY!@~BEix7Z4( zLd+#xhtEjW>?uEs6=e54L|=%J1aISSD5Kg_LfGtZ85#(|dep>9Pzlc5_Ud7^e78EQ zLv(kiZjsGc&N9+ZV0gx_e0mOz_}YTou(aSg^I=-2gXC6qzNcaC(L}a(kx+|D6*UN? z`R~5OOAgMLx9qV4y9T!G6|0;Om#APh47LIp0_z#9r%{3=TxJStgb?N2>B8cPN9QxW zX2#1RrQh8$(&qhvrbrKEx8l@=KRWhG`|-u^YU8`?@fv}@Ki(#jBeb#xMUnX^ZJ!HV zUA%7;5*y}j*Cr>w-ls{V(6T1ouIUAlr60=J=sj(`zkpp&?qdV6Y7_HFJ|ac%zV$W=I2zAF z_{WmoRfQ=e2mlqdSbu8elD#a|&l`K)=Nn#0;Z&Vd0ExI%`{+?0I*ce2X#oi<3ZnGe zBc^TEkHu}vrNa`@txe~GY#?}w4|;7kCozu5i)%neOLe)fE8S{)f6>y-bY zUY>aC$gpR_qHxdhC9@{>118RJQ=P$+ zF`4U85I>4cw2vCeWbav7ka%y4c-hI)&#;dL8z|dk66M)4*V3lc6n}h(51< zWQ_XHD^`Udh$pCbr@YJ#BWI099`#*BoA*XVRUY?#bS;TGTEzY^)qLUOrquq3MlLq( z!&Y8A8$Soh}@DYn=d4U8Ol^gjyBhJa>EeVfGLR8 z03F{ezLDx1l-n>I(&5ZhETK=^0LRBm;!up!QuWuSb{B-8{Vx_z+p$FKN+c zG^3OFX2Bxn5+ASXR2__Ui!dx{{~Z;uj0f%gRu2Pdu2vF^z&=5W6&OcqwA;c0dyO>H z_ds?XvP=u0qx~xdaB z+szW!*t|{T$miPQM@9j0Ss0|kDExxw%6ifkBg=rw-2uM;sH`T;uE}Ou%-waZaq}~q zB*^%oRYL$%|I4f1)ufvKlg??fEKt8eJ2yFYjbL~*gRmPXguf>QjEv0XtS@!c%J*u- z4R8cWr9e+v$5$X)W)Ao!_&S{{B0WkR?ZSpaKTeGu5Hnhz28Di4VmY4(XgqvZj~Qh| zL=QM@km6pGZJtw?Ntr|Gdi~~@6j2MWa$BD@leaV!iw-yz=mMTjxQt416UD_-*!92a ztgJ`x#Q>>^!QT^l@^~rCqeX-6v3wUsrh@{|kM!>_|Q zp5FT~u-$kx>GgpP&MRO~1WPGzbxS&^oV)+v?^D<2MmjAf^1+|(Z>p3ILU*#8w|X%Z z#YS3Zv^^y;L}at^l6^>&H}pxm4Q1*v4Q7mRTIy!Gh(I~_`s3_?++pi5`)h=kmSK$#y^Ag&R=<B7^t28J-Tpb)FR93qXv4-<@@=B z&xc!n0dFL=(-Xk1@2qYDR6aN2{9DNHR(SnxJNbRAspJe|(j?a?lk+a+`zfKG3rKRJ zd(PWI?WASi zw{oL}&R#cQ&*vpj|7!|Vq>ZMj;M{idxEF?ID!kmlYhpd(@4|)cVJpk5&;_0105g(L z<&As)lg1@Jweq0E`~Kfm&@Jv6$1AOrZM^ zn5^h-==vy%N!NFf?-yd^X{)Os#>pG{8E1Q;o85E|WWP>4X5xY0TkD?>`EMA3lO2S0 zZ|8-#E8HA#HtrGnDM*0YFZb*rQm&Dpd!*$i5d*x&;!P2E&5X7af3nyQ*_w-rF`qNu zyS4?GGgG!=7bT8&k@3g0X64t702~t@#8_U-j$@;P-UAWunm5&S0|J5)g!i5MOn7WA zr2y%(YPh*vj@xCZ*dmJgLB}U-fD=#J^SHQpd;a;MEoM3sI;?-w)dW14A2TDS9Z&M| zKQaa_L;J6zcKrcYL@K9u`gWFQ`f;U{Oxxq6YLADO>oTqwV}JfjD63>b$CCm~Z2VTw zW{8RC!&nQ+fa)la@-tABa(>{v{bO89SFr&~2NB|7qfsL7$1EQ=rOmF776%87WgGC* z>UNMc zHZ_wcod?ygps6B#x_a!!s_A#?n5R##``>aYdVAcPUl zgz~ES!pT4Psn}!eTRhf^c5ClE8&PBZPTHsN;C_?*%l_Dd_QVq7KMPFWvcwD3H8muH z@0q7k32H9xn*PbQ zZ>zNn-|M5#c4+h_E%1dq;bjt~#@=<#GG1cQHU<5UQvw0<`%fpFx^eG8pr20`Iz`~d zSTXQ&iUPcWOW=7#otcvlx^NtJKY63#kRtvi#nO>cZ%rB2@y!*r9HunP`%(7~WhuDQ za`^y-9;J;OcpWT?8hD*6g5HtTfI*hr#j+nKF;p1I^c0+Uq%94{N`Uo%jaRk>Sb(yT zIx^q!PV6l@ro<~L)n%Xf9rHm(J(V{;LDdwz0dyUKnDO46{=6T)HI|6Xn9&}1#E6nv zP`8 zHCmf5f7|HU*;H$O{FmvaO{1v(exSe)XCR=v%V_%ow3+L3^Yp3jsCbB?5?`=dcGM?_ zT8L2@%Y!i&PQeX_Y&+U_deDcHi_Y>HEr;je^n2LC z0jBY&D1VJ*ZE3x-_{*y$87D#yI8>5Kjl^8m($}*buq@SL$s*HvJg`4pN-BT?NwdBE zPTYDqmF#sS%|?rg9NK#U1LOQgtiA#!CSjLRTUhTqdilZ$;dJ3pZZEz2!}TEa9tlIQ zUBF$W=Lw1P1tcWLbi80mht*EEm5jL3EZ_9vPmgi2LqaX|Hk1()7^pT>Rai#*e)u5_ z6?J0RZKGQ`j->GK$qj!=nNe7VFI#g2+u6~^8^@pDTTmh{#@fps^*_R1umcMaE|s6A zjiN3kaKpck=yo5)6_S|o&{BXjCRHX1lAdE_Gm?;V$S#q1x{-6Hiz1r~TOnIipcC;5 z0!8!rjy%=A77(*6H{YA4v`j9&W6}z&F$N2|dS_ zDg9*ceh|=fHI|4yZS&tUI|Lg8tFPFL5_f6eTkTq1Wb4ihWHrDBK>*k9J+*PNjaWCT zW}1ho-gL&FwCGO5!nH)m4<6k{^(N~-uP>7tnVajzW;gX)CXyNbx{_|54;^qCD&4MQk$Us}~kiJwbsEwo6e$pdi@^uIw z=Zetuiu1Fus3@`MaBZCw)O!=Ui1Q9_NknVmws?#k2!JEn&rrS<%b;rcAXz(IC6sk=$C*5fvRAlY%t)NH*SyB?on zzS5kwerxR;h08lag3>u59v-;oXFXy*ScAmnnI zXB`9oWwOeLytxPFOc>v#<`>zGzMR|wB8QDn$!Cj;gLQx3uZJ{rk16WS0&o)>NzIbW z+0xuXt7gX|HL^LTN{F}t;d3bbyAZ4K$MiielbtzF@(ou zt78~ZSUxbmz%OO8Vs8)mhAsm=!Hwiz8BtbLdi`Nw`J%{7Y@!So6aZ#vq6O6#8KZ*Nm($=7f~x!US(2HW>z9&_RDoDEiR zHz`R4>{Ty+p95pCq9E~s)qG3SCEpslggpi8t!=f;)9 zCL@W_Lyd#MrteKxJP_X*g4$N#0N7WHiZsTnPTiRGb1_57$e2=j(nB)(!~riU4WA() z481YJcs(<-Xu8!Q1E-ClFu77k%VRcud~fKgrXgVjQY>j4QH z&&w^^gpx}yXPkz#tc_pgPs7i11SnHei-+meZP|rTUaUR2e=|ch)$W8A5ko_Sk8L^q z7&w{d6|Ux5Ra$KwHt9RdDyGq9Tj)dELLT+AX&7A$ly($$VC<5}gTO+@YExak$#Zf2 z*>{gF)g?Ss!gGjrow$LK1*I|JK8o2>3k-oozNWMD)$;D!{B6;%!@K}fXvS4?d7czN zaO*Mx;3G9ZFqsuO)`CUbyturnwdm(W-O5>4ZWNlA9YoIAj7IsC>)YWAP)Hv#k=B0m zYEg3Aua7{8p658O&K(l-;!cyVKHnBj2D4hl%x}fKRSStDK1}72!i*C(pJWaVhZ=fR z2iflnK7j9uVkoU)BEb8JS*Qg=+861Q;XC_R*fmzWsCWLvaId5evsWh%>%;=Qh{WIA z&);N7QEW#3X=qYLq=)T%ynZ6xQb$^V2Ju;0P+NIUBt@C=slIMXUWM9C_xKNxNTlVu6{j755#o|%zVjqiR>i`svcV)Z58YIsTP6Ti1XRbED~jT_0%WxPf*bu?noN@iBESW-oy zg1+D`57i3{|Nf=t{F0;7N@8QwfQiX!O#cuWcta%pBzozzv%CNo&0XzU(Hhm;5M`qkUps*z1NDHnlGHEa)K^&}7BTWX*>mgog6T z{jNNQZ!+_u*sbicy4L!Q6n)YoChbltW{&Wb!5|%(C%(Z2{Ycr!2YF8D3xCpeh@>{o zQnf07`TCsUAkUWWLwuwK;c zOkiUp#0d)D%4n7|APuLvpgTuvnin(4C=dRf(?}}gLUvR0%EZ!Z_aTFK*L&tM4rGYb z?y!nViDKG-A?qGaU&~wPyPNrXd<4}8>EmO;a5dG76jJ3WoOP70?N5*h&b_9mC<~wq z0c9xljyfMoKv(KBQ&w2zQ+OpFPAL6VgU=YaUptJL41*TTH#}>uD;TvZdPt-Ha<3eQ zth@MhGf!~iwoW6=E$)%(24}7eiTPBS<{^&A+{B8-rT#ts{5~phR7!?@=L_fZDWn^1 zY{_sviFe}z_+T$)At*sTrvz3G+B-+zKbN|FQ)k?X;#eN(X5fzbM%5Iw2rLH8Xjgu# z+OpWZh?kp6t^Rv@XR6C=WV{qY5rZ5F(9xsLA5`hs>NhE8n7);wvsL9`-l&mb>HZl^t5F7v|nwzbp zNwXx^+55eI4o@q6cu)phMg_9JvXzM`RJF22dWeggKKX*ks-DwDOxiW9bZqFNTt8pK z$!YgRIR*T?bEtA~s6~}%5=BV6dFK1>hx@NUe!~7=K)Bl`WZj|9Ps(43C(onPCo*}tPXwVsmS73hs-J(fA#}amPI5h zcFtIr&iL|Rt6PbfiqDE~&CvHX2ukeH35DLfqfHlr0aMMKs2ACr^NM+16$S$5f%;0-=4T}~958hZ5 zNxldhI+%0B5w5Y$HLx|K`&fGW@ix%AOO4|&A06a*${G(u;9ew4eW~t9pg*^z{q0J* zB=CASu)&7@bBu)E$O8yv-{ClEi%nzMBH=lWa}5F zi-T8ya2@=0^cRMHt%aV!4fBdW^I2~vjyFMffR7^JTb24v{IHqFzf~UWF+5r8ARuCB z5>Tg%C`+$^r{SVmY?rUBX((IT`4dVLaY0<@&!rb3vg(9HfBfC-oj>Dx9M1T82*8x~$Y4ww||C=~nLS4cj}Tb8TtT+ZqWOZ+lD`>$Wk_2x-tiO^zx2by3}@p0)93h+}~ zlNoi)^NHqO=}4*V--K5oOk75O-)iHHPYdl!-r#`@{wc`xzV>s(4imlsw_n133z=W+ zyb}&XA5%`}B$DcNt}eJ({$qaOOfm0cs3#8d%+@@kIpKZ+QO4E}V&!NbI&J3uu92=S zkEyOq0(NpjUrW3Up+0SWMW-BDK$BKR=1+)T#bI!9_oopd*jTcyztmcd6sjGJd_7oU zI?zl>u#Y*LaQQ`)lyMCchc9S)Jm^!rgyzC9L6@$i+bsHCT0$Xfd0W`_P$Y4OYoC+WwNS8ZBDRg zScxQDKz^=n6}tNXxs$oka19|$f+?e4%z&$VbV}>h#ShQv=93!ka`n-R*>6l=%R`G3 zK4&C#x&JZhMVqcx1Va->ZJf1d-)*SnrbJnN`8DHH$xoRn%pbL!=5s#Yi6IKSc*Yuv zs8EGMgk91vHZN%!?CRI$!3w%~a~9|RFB5hYMHE_);qi^`76<4?9Bu%}7hd*6W3u{* z@;Kq03hnRu2g8f@jkWXrHH0GkXH3PfU!ajH z!%j`$^97RJRH)nMIyDV*m9c^iF`RlvY)s-i004OOy_5M~Q1-!L+3~3{=*gw7J*vgP zDroCl7nhGB=)^)zcY-LxA`gqXM^*o<9o6%4Z!aG2QMUH!eWZ>@6TqWLpl*MX&Tmh4 znBKHALnbedYzO14@{TGWWqw=B@Ke!s*yOHWJU##;?viS${-UCAN^CvQG+wsC-XFC4 zVoD%y$URz1M>Y#LEXE{oHe|B$#|WH9D6<`-Gz~bchtK?MO}S4XkLe?-`0)>9 zdQ%Ay*F%fL!jNe$Nso^N%*{6>ICTTWkZM$wL{?brK(o`qg!%2348zqYUv!_JL-zjV zXpMfVfFp2MZa#QB7PxA?e8U=_jYk2da|R0`GPWJJE_`vyclUv17&R}4`v!V4+OuEN z`Y^*e5Dh=w)W(a+%2d2Bct!1sShHp~vQ>ON<&l~s^!&uvpX*p#@TmUQ zw-!a|Vd|x7NrK4q6K?Z6h;jrrUEtP>_N@U8sUp-Y2?&J!Ya-RhW$x-u$#qY&G(z;Q zF;fDGmWP(K?HH&M7)(}M8NL+V;s&g=JUsO`v3{Gjbs?wGn1kIGQbl^s@QXs}g?R73 zEjtF(7-tH=U=EKNGruX;Kr@C`Qv##W+SY(Xugbyf!-!n8$U`8+*-qh%;Q{x8gmE{O zQyzZAu%VB-jA!C2L)I6o{UeeU@oLE$^jyO=EjPdV@^Uw(bwp8#zox@=J z%L@e0Q_=IlP;HSVoSZQ#IHz_+ymo-Kd2nM^0%L%ecx7 zMWwT|nu$@G2~y2y9Qmf7Jf4mG9a}Ftf)a9b{Z!og4-fu6?#7M*)+-q!$%YL3!_*NJJ4c1UwU?j z4>glq#p7Ve&@FSOIx#=i#EVX4J-Jb}?Yt*?@=n0k{0F--qrFg{77NqHJqzJ86JJD$ ztWKEb4;^LKv6hkQ9QO;=enCmXtwo9+V5*gUX^As_qtX?Uh)juGAEdEs?bJV6cDo`j zZM|hTayu7^3wv%K>9EZPsg?@J&dcG}*Oa)H_BaQ#efe-SV%~6y-CjIA0PxwAMx5E#-4IPmuk+4<4eVV@zbVRp zCvSA1sAyo>J4cO46demCj3|SSZ@1F}re>tu`T3ta8oFSnuU82Z@AtL&$PdHqg=S% zcZ1aodHpqg$@vA@Lg{-mN(__ud>hFAmpCk|uku_Lx+f{Wce1!j!QdDDs{D*P0suVY z&m7-kC>67#i*G8)%R(ru;PlD(;Nq$2@^VT`z5rZ7p^#8*II29YjQFoLA~ub&*1JMt z?~%omYf3Kegx0g%`ZG1PV|s}1&j#yZqOMz0mk;lwxFgrWJ#HyTl2Z3}A8gd6qkAx- zO;hde^g2s100)dXtixdcUy$CWv4jnUvUh^InJgA>Q$(VExres}cI&ZkT~MSj zC_7t;yPi-mcNAgpb1}MjD4uQ2x26Y6KX^X8#$fT{Re&o?7 z4~bq=ykHj2Di$fff__}h8<&B&LU$C@DVY+$7ve2!y*@{eOQ5WJhcG zp0`-*J0JGmPWtL|nigAe%p@srHMY3^+4z;XaU&^l-o_cvVtHZA@rGP*uF(t`9=|SD(l2tW-L>d7X_+F%HM{qVB|*&Ka&F_7+pxs2_lFz4-ZqRofh3MX?m56h znTbF-SYY;RcO1|_LlH&Zfs5%_xGOi2Kh)q^UkBQSrphX(pKvLuMV=5DTA2`hlaXYy zdXM!XbF1Q2Kx^w?|KynS{fmwI0STngq>5Q}l;z|KB0o2kL*RC0%C&*km*)jV!?=gR zFu3|~CYLwpUZXWJ8ig(r&ovF;W)+tI;4k!|JHIjbZPnpfE=AcyfuT;3#5SFOqaRIk zp#(k0f$-^Vux+OduN}{?<&VngA4eF>swj%+wI%g~3v_2>-Ac5KhkTan_qVfeyZ!k} z!*X)z#w)$U^7cYeS6*~y%nzWb=)8R*4+T?!wN?^vnkLs#>FYl{0pIIMmI4K6n2CO>IRfvSpCN*DnzoTF(GYb9LZWM_m zZX1sXfI<~IsT{RfxTN%(b&v9^kr?J_-uz=>f2{QR+glp91Ozl8qifR07H)#hO0drY zku}iqoQfCHR2YI6erhNv0}lcBW!&b?dokBk*G**{^oU=kgNHqsV3qt)M*`$oCk#Z$ zZzRfOr>y|I(>*id5OwRf^=J;wE2v;jj;b*w+f5$cHXpH&p7-Q&P=R0&lk ztIQNIx=T$}{Ms$1XbbCmyq@dB9gWIQg`?tphIkO=#OcG5vIGg9un)xkrUN9(IxO-% zfFUR7_-60KK%5W|dCjsu}s4#Q$L2IjQrgCObj=wd#u2-*3JMOA3}XHNifiX zrv5;L$^`7#&sA;q@M7%-0_+#s0e#&fNGux`Qj7zA?xuQ%xUhd=P!6gvf=lxzR=)F< z&l}UK%SR}e@v^i(JqN_st*a zz8NYvqu|h^0AO{nfWCu*{Hvtn2$TG{M+NczuQHyR`Kq_(g zVRuKuajJCad^>{kWO1orpxIuLzkNaICWPhzT2$tF7Rg7!jqx(Eu)M+JAHRf(wzUbq z*IdWvV}f(eUYE?>KnKgK%ZKgr#9gDMFFkWv&xa;o60%vhHtm0o?PFTp~iNaEE}nQMyzU$eluhi~dv2pN(gkU(6XQq3gJj0CoEG`?hT z$!wC?R?(gIueEYtBqLzHkVgfpu~hq8foAkQPOk_de0K41U)dJckIX%04`-0! z=X|}_DO)}Ie{HH7Ro6avy}tv4Q8)wn7~aNeCa#h~P`R+m2OQkZ1!lqBW!h|*d3T=I z{&2=2(*N+qu4;|^e(1Iz`9G%K!;$LujURp=dylMRgsf!C4k3rg%F33J zy+_#`gd;OPD6^=n%m`V>mW*WYJyQ1G&wcv-e$Vs#0q*m5k88YMuj{(z5yNi~?Onpd z-4Eryou#QYp9VDVKDLpy)zT3cZ`rC}CpWiY%~fJ-6zpCh?@wx1eCeWsi0y)M`C5d3 z7>p)!y2i;P5G5^RHRn>6E4R42DAi+RuO&cg7GGg)Etur_ztoK3OZ}^*@u-fATSC8| zDk7R&2#o?pk$p0K>0m|y&$Gm=%0MMWtr^#F=d{FXWrG9V5t zz^La*C7@YWUKhI6#SY=X0yl)GhoUx4IGhER@ih^o4=oZ?iqltGW8}UbNkm;sy>n~+ zO8?)VBo`2^*eAs+HeExt75PEK9tm|}rk@u%ec1sXQYMTx? zN58(v-yFvoxQXv}Z(m(oKe~7;yw0=~D$DMBfDj#0!*Wiv9}cfwC(2z(K9dSnfKi0l;X<8N!!5TF!&nnh$M+3-(}sV8WZ+C!Ybp8F3_ANl zO6J9Y>}nJS=qf)-7wLE-7u!QazVOVKEtj4MjcO^f8tb0};9a%eFFirz&5A(I&(%Ml z%>8|WBTgbLCKEe&1tUOXJf;o{=b-mQ+aH$e{XB`BqnR%Qo<%*H8+BIn8S@i2gL>{T zLqt;hE%8=`1^suX;!yT<+p<_NvOmT>Xkfoe-a7R!pK$%x=NzmCk92MDn8sBPd1l@D9 zS@)So8JNC#HybClH-h(3(9zrewe46MdSBfgc>b3FtiP*A&n_FZGTeJOB&HyL*p}v64UqK|FCsp@9b?)ZLczE-|;!>Y6aEJB{sA(xRItMR-eYUg|R9 z*(tBQl8AJg0=uudA@bR{feD&V;l!}R8cj{xbGOugFng@AouI1 zY{smea1d>c;2cfQO_zr7v7Omu6I>j)ba0*U16UOHE+lBF?RsGk19tfe4>oXKb@t_)x3kp^Q!ri3aWAksST+rTO0R z_6iq({fX&nH2&|8z;i1jJGw=_2#2-YGy-+F1#n7vz$r1bVYi^{6%7CBoZcmdw4B&q z+zb56er1-Q-I;$wE4g`)s&%{r8N9dFyg?Kf)EpxMMbeQ{4vM@?RKNLcAD6F(W`YUW z3)*i)N_+y(*}U$2n6Yb&Mn}SWfG^tmgRj?;m5j1~e~+W@Zo9)#h}_`$WxQba@dNVg zr5%$A#?7jQNJbKbs0s76(i`H0S9#rxmW)7v;eryA&$L+=poQ^1=BBy@&SGI$=LIuP z<%jW5$scb_Mkj<2&l_SF`Yv~7+i+lv5vbJ^$~UzPr>tqxqi%N^Y1q!z4<#zI_uIv- zsD=YKf2s9F)0wZ!Rh<=mB>XFFwlR!am<0gFzytk?s-G}u=dUoBgxgVfroj4xj(@eq zpt&QGR<$l{AudQI8O}8?@CYH=9E)nTOJ~^MBL953wP z97aisb$u4t|a zXLtyo9gq2Nqh(o=DiO8%8Wq>`nw;p=I%XnwOaak+d3F57%=XM)Tw(LBALF|m)8pb& zoIME#YF?7#D|R;jC$nvkq4r-K=o9dB!+W+?GYTv%GYT#B zTLg;YM3j9jp|z3jFZH zgjsiNU7A%VNT6|;X@8OU^66Z_Qj+1WKp#^r;P(c-bishsC*A@@jc9Cnu=dD^^~}{w z%q``2)6nr-Dh+E^HuyFp`dp;43=3iK!XUi8@{ zn40;E9Ai0eW6kG{&Dpc&j*Fi?$r!l#7E!^lpeVzZJ447)cx6}u zCagIiTGAPA<><}C-iW3@aIxXCG#spk_e+U)GZVB@47O8) z%P}uPPUXJF$(G*s-^UkEl9k!EPkR+51n(Vn(D|FbFq#@|nLNVJnK&cxer_EP_&ZIS8{;XmRcB<1@hi2+79R(PDd{on{uyXcq`jtHuA36{7r zp5R?hy0fpF0aLqC!3Sr+!c>{`WjNa>!~+9E>G}Zd3;y?neX?zW zCZ;?OWOI<4&)FDocKWS-y;zEphsrIxm2c%vY&&fPz$S$x1!@iE2q=RN&ZegJ3Kh?3 z8U^Zm|K0Jfv8O}&Pa1S#xR{4I$xg&7ipQyI^0ndo29*RuiA@qW7#%xPw`FAmGUo`=qP_4{E_iY0${ zY7M+>g-2P6-@72?m(@YRl|TvyV%?@8|2Q88P>e4U5q*mK-4Tf5;4-EJ+^HAw)B> zYF_y({pH zt2+wT;9qK(#ec|V0a&cI417qxABZE2dM(@6JpF39{f=`k4vMDt&3#{e9V+_y^|uB~ zi!lJGP~rPrCJ}pf|K~+yn?b6G z(A9;{PUCOOs#BC}qwI6&QH7cs0oKc5OXQ>jel@6OIwy_uiwl=U!^|xwzv3V*3LGhI zefX!(;H#65xv6oJ16sLe{%QiRl*MMLaf{@AHZHmj=u}keUfoPMW{blFX!djT01^S* z9?dy3@`6!fm=~Ks; zNkfy1#Ie~IpCI|9-vQyK{SW>fX48(bn*YvA4ln_tAdc-8#OmfXjqP4aHOh({pk~iF ze|$6JC8-}oPr1pvtMG=na`>7Cn)W+?>oOQq6A0UBIp3}^$PV~+-t}-Sb3N%q-=nVe zI}ZYJt^#{`7(M*=G1!P1-={Ib5kfe6Eq0b(nN@gz&Q+O%K0WMoRFWr?N7=g(a+KvOu0{aJe6DX_8Gi9uDReDOcjL8y*8_f!0zpREjL{EG+G_h%x9sZ?8DW6nQC?i zY=_Gp0o09uOY+h!`-XuvYo|rvk0#-xSMtqqE=ES?UPy%jMJPQ4zVbRysJxUe%yzheL--J8-S zagCIoW?c6opZV8Z%@H+PdS-FW#-(>QjqtlJt$Y>1dlNF3ycoV|BjV} zQY#hUN#p{37S3p3UuSMR4sq{U3WvPhJrbi>=af2hpr+TW}b?B1_`8W)c@iR zqipL|2hn214WwnwBk<~q#n%SlZC>28_ui9YbEFU`f~OJvKg4bF%P?1r^#`utWBtqU z1scyvr-`ddnvjB;>8egF^f*^gwKh`@qT)gART^+iznDXXmOvi=RbP#tfTARmVjbHeR$?vI2DN?k4booC^lp-~>4AK_-ux z=}Y=>mH`DepfH?a@A*h+H&;u>cgTn>*Uhl;+e%Va>Un6>ixymF-n35ReB{}{7xwsBW}G_BG#lo> z>(Qvym&G|q6^!4h_<1@Ritd$S&}t-*tOo9&5&JM9I){o<7Tdbr<}LYNo#ytZS+c)H z!qvSA<2-WRG*8cxq_o>ZRx9dLxl($rwYM$Wg``1zgKc~b44=02{suic<68*KVSoDu zt+Ea2(R5;RMXdpp_H#0a>a+Yb8SjxKDy0jslFkor2LAo<>D^p9Lg;3R`h|ia4^wh# zFFMhxCcl~$x51D_KfBm-(6JtuTK#m}jw5*Le zp}d>a@pP&Y-t=ABxiL+d!Js3mv^Opuo|K3M*us~aAaZ;ahrGK0ZlZXX;kb-CoV8d_ zxU!H=jZB)rvIzou2soSnqoO4-#Z()*;te0A_G)#xaU!{PrQz5imQg=8Vu~`$Z;$q?(`E!qGG;Xzup*7wTFk%bi0eBW8G!Q3%^|Rl~^``@W<|Ak_ zP4n{T5ON=_9up6;o14yHF6fz3y5RJY`)Q`?Kf7LR9``TBtJ@ByiC!bYzy)p|sjbBi zB!fQRi6&?_R(HPn(mzTG|1bGAQ*8x1B|RmThK6E$(`nM-*!7Q`oQovFf=429hYlN7 z6LsXW&tR-y!^^0g$h&`$#DZz^URt+Q?)HP~-P|ME{5#1Bwzsi>8D?VY^u2~+34F6T zC>0QuqWVt_3QC8|#vPUy;w_j$WN-6%C#Q1`@j$|9TeYs}BcgxOTk=+bkX|>3dI(*@3T? z?~mx)_w-#RnVTH~swGOzT@Z+_gx(xZHan%{A)cbYAHjRQw+6GYNUW`@!v>ka;4GK+ zA-$D$dMkY4)gUe9%Uik8cVZ6?TI}fmy^6^<24W-M?}*Xb@#pxjgPM$yVgm`6v!N=t zi+TX)!C1F9|LlLX>Q~Hyx7oP?84{Wye0+?{j5uEw+zv)<=o9mKu4t$jUeDz^ zu>5TqXRkXcK_tC7%>rj9dS0hvH_LkL57oXik8$kD$yd!Ql}E^xUrFFU(>|EAcVtku z^z*wx+4pourSd@aJDBLFT_630y0vbnM53SY|DRmwB^S7yV@H%|YO%-hmR&|kmzmtE zR+LZo#6##R7eDlffgw$8uhpH)$3GT^eE}feY6Oo(J8R)K%rGPcM1qJ-DuO?YeBmph zlqGKu@L>)6ATo^FSQd4LS8AgsD@BABf2o&{rY-OJ-h`&>&sIPEJ;~VCDDDyVeSiHk z$bcrfcF)+F#DWAPY)fyBhvS8f2XORk0bY7iH|Zm4=)+fh){H!{{a`0ZKlX_1-Cgm1 zaD-Dg+~Sl(&4Oq0dyc8IL$3UoHGJVJLo^Tz+7X*_Q>ASmn^C6uuIy$U0ZTp59a4=< zG9wGMUVk#WRQgH`BBH3b51)FZ-s-u5V};h0HyMQg_`o!w#`27m^EWDP?uRt!P9}f z+8ISq0jLZ;tB7)y;)q!^c&IysB=C6#Z2LeHT;76@$0*V<{r>-!530^AOXA|rC&Y4k zp9ves``rvsDNL3=*-V3n*LukkJsC+UJUA?BDt6kYCF?yNI~mop^S=CHQn)K^C5T^}mb)=;Dw( zB;Xdh3}H*IHGW_FW-4>V1=W&`iR$D36m@%|ztU{J>v^q}@N~qiB=s6jnc?jH879Yq(NGSI+QP&&VD5^SI|<%04MOD$`?WS^K_n!fk{rEoseq?9LWM#? z;<9nb^XqDUMq`c@qDb+h7EZ!gfP@qrVk6UmSS7APkRZrE6t!+)L1q zwzkJQ`CppvIKjxgcy}$X`lINJGF&7W(_l2kox_P*cU)UK;%LJv?mshzSQC*wMsbCeVff#g;^d7e{@N0fxHc)0swb_)#nU# zp7KuQirl0Tl@OLSNhkhSOV9Jin-&xx2Q-e?CM?n&V(!fTYCqI&w0*UFenB%;YJXyc zBz>y#Blwh;9IC(x`Hy$it0~o|k`8?Mj)Lpva@*kBaDcs`jLk052@Ahf(RW^U-1P5( zR4qz6+K+CjlQ@SHf~Kh#G`Xo(kp4+|UZNM;36gJm>Uy%Kpg~z7U=$MMQ>WwCF5TR0 zOV7@aQJ-nDU5q#gb_mBDhx63ifqik&qKIk1&OV6#UVpJo) zM?oZCXPQ~?yr2jt^vzFK-cGgn%k|SW%|0fJsRFmU_bf^cW+PZgYT`0V_H(E7yY(Dw zj_;sF*k5iftix+Au)d8*bT|5hpn=Ek#o(7pOH|J~N2K_%LSrjNlwI%~D-89ikYOan zkfE6Ynw^*z``Q`gRkSzaf1h4M>&k&*b^cbbU^I$>bCn)@jYgVB*O>$?O5Aim+-a(v zAkzmlSEd$IWjUVQVUyF;}~dQ1Zo+hJJ9Uykj- zUjKMZrIj`kka=8zZ;*3vln^xhbQtZR-PTmGv-KQ;(m2XU_Uc^Iq}*aHUvh$#Lo42> zut7-F4u=K!=owKhnos6CjKxo0*R=F2Dxk7OcFC}6IojN{0Lw`)-UWVPXl|?%_2aIa zSBurN-`gylSt1YXH!8 z#PBbxG|Ps&5v)S7{#AD0eJtL;wW`f$`KOBm$&8pZrE1UX&XIMEkjs(nh^JC3)MMpA zkJ+0FedI36aaq~1>*xa3J&c&zQ0~v^DYdb8i@GPEC2g7|kLoLiDZn%vi*AjC+|0;s zxA!CR%UCNcty-%N^I!1&;6waLS=q7;srEfO{SBqC5fgEyw8!^C-lsSb4d>ZWE{aWK z%7MCr%N$U_v+p@H_g+EszD9ubXLcg_v`ApB9T5kx&yo`Jzl`ZX)^EdLX(5H3cqBk5 zfyY(;X1tP=DqOKV6k`GF>P!m>=7!5iq-k(5)9t;^ng&kncS#>ZmVZ%WcO~=}jzYN88+BDF~!IBR%ZP%{a zkRy(@WY$YmfwmtMDm-qS{mdE|ZIgADo67w-J2KEq+t;Ar>2|&l;KKR#g+gt>J)y*Y zU1h9vqeJl8ds{XN8aG;U%sd{KZ)&oM!9_muTTFvq$&l5^|8(Rm-Xjm_%9^kM2^vG?+a0^HAt{^?2VtWz|dngf&Jp6 zCeBPcSN+Eq(g8IuJ?i#)SV>?omSS*#idG!*bM5w*63#%y?^q#eaQ%EK-erfxTQrT( z-{N(r@C#?4gDY%(2{;ZhQf;?=sb?u0ymJ%hSwdF>o$14)LbzzsZ!HbSELZ)4Z~d2_ z<$M##`|be8U6ZAv6q9r!$@CeQ(Fb1gJ1O||^tUTb37g}udZi58L?c#(RLQYUhOKM! z$pN1WY9F`}eeT;l&N5PQd}{rs_r7hk`&?bloz%<)xU~(>Fs#N+N19MWp3H)R{3fQ} z8+YMtm;_Wqo^{+j+x|0#i569JzI-+sI%p}R_}))-7#mx^V`nuOoG4{EfyywBL@8yy zz#r3ZwIUS9cOl<}{hT?Wp-x6Ft#jhK?&c$dv8h^}AeVb)`tolS!Pdj{-&tVCf}tA_ zTWb&o$B0*3&Qs%VhXZm{oriSk7 z?i=qMj}o}$?$tNjLGO%98^q`IZ{%m2sDLvjRB~|`u8OH>l=+SalE2hpxqGqEk8t0U zN@6Fjrl8PE==|}8$N%GH-f8`NZZh*a($BE^yQjo<%`@t;%F)?X^KG0*0AvuCJcia22UJrpxauJ5pX<^~W z)Ef)dra6o!VWWGwGhKqBHKd3{aeWf{HH4pIBcuS}IY&M$G=5#+`i#X{f<)4!wU@Y?{E@f?gHug3@9iW+1#!>7n^o7Zuk^Tv?v?A)2cU54j=l zr{LsHeAL&xn^N|sEawXA_&e#?%|yLCuP+>woqAxiHUHDouDXR+Jfsqc2iutX21>oe zY%H)5iM1pqT#z)@7!g%)V>Uu5^=dN!&j(G#+I4}8rFF26@dv|Q=e{wJFg!Sw~6^z7{-9& zw+B8{dI3|PZoy=0ffc^XKP4n3 ziNk0No)hgG10{+`F5cVC*nf*6_)YaP+<>zT>e86I)8TM%?omyIZG!-@jORwEPGT2! z8#d5}D%=JeQ}`DC!ft?lorn5GHi7!^PsINTN)O0e8L;8;T`1aDq3N|cN;)M?8&fON zdu+Le?>4t-Kdir4No%?Tm0t%(HFf8^rf5}8R#5`m?#RsS$2eb6Vfim}dx>A;s&JpA z?jkMyA;1)+WWruwl?Yk+hKUV65LOOMLg#NK_Q{SAL)|HJ7q;irP;tmXv(uc!ck>ip znqkHjOmz%DXeA!4w!3~pft*~xz@B~2Y`@N3VmG3G;e;-HFB*P^0A$Tdg-7gxODI+% zkbve!%)<=Uc^p!~g?UFM7;qXk9lL*}QFgMI*4Kgmx%=w(;8VV6-j)5VeJdHQYp^Xe zo$zNx(rK_S7oZZWPkCeTPj+@!qQ8NOvg+_lpkjRY1Dhfq;@$hJ`e$7srsvs{K@4H@plWcJ!VaA3_V^nomz9tnc2*5X|DG{x;@ZsnyOb@7f!V0u3ZQB?rvQSM<+ zk#))@vji8DqQX%rrhMT%8T;87gd6t3gzxV2(LBicAc&3Jc_^2D9A~pu4{@{Qh8z?Z zdujjI#8vdfk~%Y79WksEoy`=GLPG9GO)MQ?~4LatRqZyGOF@Q_bLBaN4`+|+yS>P7_}DB;IY-X%77LhQ&ZWZ)Au(Y4Iurtv|}rpzWhj8p1p z7+qf7&M54edQ#Fe8}P&BBVUo}<3D~cPk~d7sqB2WaaTsN(uIo*5RX6-IAT5Wttqac zUHC!U%&P)1dJMPa{Eype!MlZ~VMKVTQ!BsL%Oe&Hn7Uh$k?;&t@<|H;u&Xn6n7t#m59 z+{XsS4U%Prax9Q*+wXfJbHUkxe@?8kuojDcUuzcA{6iOpdm4BiS(07qT91ngH|&c6 zL?klSq+s*#c*jCcJl^@?ou~6xA;Zi#|5KvJ9+1n!RM6g8_VKQgR0h26MhErK4()3{ zV$ppsgRwEu5UW2~Q2^=u%=gH`mxBW&>roPv1jxff8??-E7C70I!hB^X3E3wJMtsP} z0fem-BfEEEowuTFiKuX#sdFdd#n_TM2$Q()t?6cL$-tpiCl<6{v|~bvi5-NF@47C= zPV(x%gDF8NSdrS+CfctJcqj+Sj~@bHAUyqTj{A>1ax3lk1Zy`LBPQejSJrrV(8_rS zv+oqHK+lW}i{`l|MmE%&i)1+M?`a4`TSM|U^q(@*5+e!n?oeuHbeqHs7Q{9cYD4wn zhPS~@r#7C;wHk_d85fp~52UEnE^v9vD*q%-sLDa)U#2?fOyyx&f#UvdP9|SGc<~u4 zdmn3_rf9XttKWmgC}60EFJ7}R*WSDdQ(%I}i}&`pHpoOv_PbRExGmOi{Uo1Xw*B!t z6Ql&RZQ3(nVU%1f)sVIzeXJ?&N3mb3|oiVyvl9$J`O>x{2;HnZp>i;)K-E{y& zhjp~=$}AQ~>5~z7z=r{M1}HOp{~2@B_Vm3YwHjXNnM0suA~B4eIWj{YgzLm*ui}NG zntpr8h>KVK@2a454~Ie|NDeHAc3AKEo(T?W-hgu>UpED-$Hfl6LiVmkAH`9Ih7uFw zo;dEYLA5JCYI^;`M32=x=AKtvw<;#!IV4?~>l9-3U_y5n3E!8j6fI`q89to=Ma%8% zZgc$oedFQQLyO-2HhEM*Z~`2g9Yao7dv;NLCWU5iBhHmOI7WDqIIbF}O6yw85Bg(P zFTM|D(k_)=tV)nVe}7)BeH>XI=lcO(51(J19i2c|)S4X*jZ-+eB zj^lsKMaN0%X0?87My)XrA)OF7ET9zCe_>hP^DD3QR=SYGK1dE|Z45&hkcyAc!TU54bxzXp5_AC#y z69;a^{33?t7Zu4o9%p?itoC}5A5547a&)cf%O81P99M>GbqamxK>i!w;P1Uc?N+PioR}NvVu)@& zw%kpy*Lo`?Ppbr<7*7zz#M+ZXhI&6xqNNDnVb_*Uy0vCr4KLUFHNV5y>=7KPy5`6ASRkp88Eg*Azcc+ z6YI{#hV>cH*b=UO4MzdufH>;&;VW8u(rg++Cj(i-<4{KtgjgrN|FYzE>M#sxzB$@w zjSz_vjVCv%lDtPVuCJSM=q5&YZNC!I_zRNHR1zdsQ_?<+&*7n@gduekz$1=|!WU*X zfGGR1fJ5<%RU{%1GR|&oyks0S;|~2zG}t6EDo+F7x(N!~nLvG5?o95EfB~PXvF20Q z-=f04GueA!`LBD7S5L36thwTnyjrpwYOMpdr*YZA4%w+9T?3!V zcJ}CYN8GACNwZJg62yoZ0i!;o$WE{ajGQdpw!RA-U4JkgGLk?avQo3g!Pn>C|2(3| zFX5t*C1mIn-%dO5fpH1e{J$#f7+od1Qlv?ZGdKly%qi4~Q+bs(U7G{BEm{hcIj3(1 zsK>U9gBq|Ja?sZRUBNu~Wk!sv5TU|5sM_X}88Tjf|0MYO=$#cxaJEHLA_w?Z4WibSFD z@Rp|VgqvI_xP$`d)ecBvQQwo=Y0|uz#w$MT1VXhIBSl8dmbQ%${HkFYhW7UwS?dl3tsh3< z_cfm$bvn6~*PbkP3P43g5IVnR)(_03Og2kug>PMh@LP*Y1j4a;|9JZ6H5@{FIuL-n z`uZ*0Yb3~Np#cm76d8zK{c}aEsMmR0xU!CAHsB4?1}pdWUA9h}J4urFx4Kg#8K5T6 z@U?Fv?r!n*xXE_i03p!sGGM zggF3;k-oPe<3*EuO8pYHSV#n9n+r)Kop>OKxZTOK7DTZe_H&XB8?7NI>GH(xVXq@> z=it(n0z&nS(5o2g>yt}%P5>X`t{Nc zL@ur+C<36iwAYmbavMSrgQYLLzi+_98ehDIjh4=qldV6V`-`ie;={7n^p|DKWnD9A zW8W;jW#_XSco3y0uy@p}?o*@8?E*lDum;m{&0-yw*{nhHE>dQ{Z6_>LJVLs?*u zoH9Ub)Kn&)Umna*5_ga)LkDv20MxKg$}-E}ClJ!(x9&rCPCBXo1lgH_sU4j>O zGo+KbgDq1zgdWd+1^pTx!U`#HYD>2lz+l2!DzNdJL7rIX;Wdtn0a>4S6nH|P`6$Gg zgz>n9;B%Fv$%=~Q;!pzBJMnn)Bu>I#l70)E@0#ctp_vNAu|*{!Vv1zoFjx%O#+yk5k1N#mFDp zL1F4=VLmJ!le?X$0j5exDKuW5AcWlBNco~upOF&6G4r(#l8;?(4J;%W=mvVOfV7hL z@YS8-Y+pBw43>afyiZiwBZG-R~$^u=K}`PzaC6`nSVolG#; z_UgdO^bo{CUQfRkRfj$PmBK3v)pE<`HQDB12)fCA3;cJ~k>kc$t?9E}8?eML0MWEh zNWKlBH4>&1vKJJ*XtVXRr_L|QofE3a|Um3Z(SZI z2e>NUB6!h{$C0}VO2_|Y0nEsvRvbRz$0jR^NlL<%lJ~EY8B3+-|JY@2GyxQeKM?k_ zVGCUS&Manp_9zZusMSDc-Kw-qo_paGCOu1rL)YU}zodXin0cHd6};5;r^3UXmzG9) zLGnDI;5TS2C?ghelQCf77YP@^IQK9!Lj8u)Mx!*7xFjvK6Jq;5xTfqHZ5AF*1ktuQ zoc5CuyI+G22$N&e8rnTHJNp{sP){Rfo3!>m8TX#dW=XuyOT=ekqZAXQ!t2f@Uig z<+(h-V^+6Rq){fhyS+2#Q>I||o`CsMZI}Vz1NqG0f1uFP{8t)L?XO3b#<8R7y~Rm> z@yYthR$kEQkGVlNLdaX`EKF20HDC>94YvXNk>khxNF42cW8qtN6!h14R0;gVlr3BP zz;+|HN!P=lZ+W*eDOC`C12}l*G;NI_k=H;2eOXChBO|+jmr9=ZHQ%}nA=H#NH<`~c zd;fC9WHgHldZ#=90+-#`a^QMnGI_ocbDGW^6Z8PK#m5tzalQ^jp}-lvn^*7JvKTK= za1X?!F~XoZrqHAuvT)%wuoDAOg*M?C$CkHlD_{7bOBtrk=j6`!(s*}8Ay(Bzk#JKo zfYJdwX)+7f6KzXiX^O(|VgnmfPNi)KJq6+J&}c$!ryG=TYm8D5#D`8^=U%PA!hn2AhXz zi8o0hx4J*2jivRQhfn$5>s`}LN1Lh9tu^@2lS3fgsGEl{34(hq}LffB!(92ORc`aLKN;DW!V%<988VlhOE@z<*Pj!XiG<^JVCe6+5bs82ZaE@_j2oELx`xuDCGSA-bV+Z2!IzvxTx#<^dHqNrp~e2VZpQU zh0#(!L1BOCetg+v~=zomF&GH>eOv$x&=QCDB#WGE}=MeebJ zx<0Q^CN7w0pH29hCzb$YHBHS&wtSoGVFt_>3d36f@4ul0pBzpQePxM73oHCy=0Ler zNp18WQ_Uu+;A}H9_OT<@tU1kQQ$AS*PH*a40~|T1jo4~;RZs=i*v+F47XDpmKu`t$wB>DKpy8UZ9oP7%=|w|7 z;K=3J`DotvWW4~dH&{}iub;+!%|eiwg(Zxjb~y&<)qV8|a2UTHEJj9+S{oG-$9o`A z*`QuAaJ3>2@N);$&H~T!9uMj0)6o(Ojb?(Z;QQuoP=!Q@!}D!rT;%5)&8!4i+;9)D z{1poRvU4$jysQLQBwG=%75Afq8V9cT;+o|J2v{S9!NQ-)%JGU`EofjD#A~7f?xEwQ zQ-EhlV4$i6LuLd>Z0eJ`CJ-a%zFm0kmxv6w=gjy|?MXgL0D0Eqe-=7@fE5)llrUT9 zabdL|UOjfg_X<@&dUl<@J?BB?uZ%aS&s}kSJJ;@6ER00x*Z++o$m0u7!*W!U;i}X( zcLz1b_%B!A=GVKK1)nmHEgYQ)PWyu@6DXN|S9_zf?H9N90wz2Zo%47c+Hooq{KXIZ zgl!=!kX%QxVu#E){$g&8zc2h{(r-YaA^x{KzfVOz&PS=)bdF;%&R@b zs(17X@D}|0`>ABmb%rB8ayiWU-nV+9S?Sx6`&*bpxkD{Q#p*#O=X+9W?7nOfk1BYc zeB#e?J(3X|JuJN(&UB3A%$;G!asmo^GE1u|R!r?y`ud)ja)VcCmAAI={;n{(baI-x zV^H>zIHV3tu7OM$a#nTlxwjbr>H*iJnK@+}C3kB}FUfEeyh{(j5h)RohO!BF!BN*> zCN;GzcbTX})X_@&hQq_vd3ccj$CPQ~*#kF1btV8E0y?;2xJ>7xPN#XdifQ?1vbZ zUAar>R}C(aydlm9TMJf)B-XgaFPL6w#}_%{ZBw|=r>Do#YGw>M9~_9;scfENdV0&j%S zLGJ-ljWi&KY8Ms`4fn^x4JYde;xDBs`v91O`qcCP6}J?4(4+R5>(DRw{ty6ocdl@3 z{l#_8IJRA>$!+Lede&Rs)ea|FHc*MpF9iEZzq*^(wbi0`qYWi5^$^@9heDoMxVrw2 zlg>Vay!!DLPzzvW^RLY1eO#lvHi@wddympbS-ntbUZOzPglnweOFBvo}B?U zoV2~zN)_x;)YtjWt1jC`IhG^m{>6YMlrGa%dbo0$)Lb`xtJWP)7~+FkUyFN0E4zBWl&Pu5+) zCRZdW>+|)b>?C)Ak*MjBDECgl?NRL(Q9x6-J9kPN?5F7V}Kqc;Z z5Ci+hU4xAcIvNJeHEsIKlvmTmsAWy}fC|r){}osBeu|88Qj))~_6cv{y<-@}c7?Do zC~>VR-JH2>mH1&o1A#1pGv)??8w?=T>r6TT!dXmXl$c)_R3JcqM1yOPIb49nR$Jpn z73{v&XE;090pbFF0&CEbQAijQ)<|1~Q^;V2GK9)=sNLX*4uJjp`msaT5OVoBxxFQ! z;!pV}qT&Bct)m4I`W2uGcS}fX*fn+Gl-z4z6q=ZMP6-iv*dvC8xw1?8d;5NH>j`VB z!B)!93K-YdEp+?WO`%Z`@ezj@6*1)4xO;f^&@pclmg5s=y(mK&gzPcHuMKmlB2gFZU%V~?ynhXLf@LwX`kumX)xr^DP0Pcf?3{L z91ty~BMmw#9}ogKc>Y^cl#fjYz(5}dzZlr8ZCtbD+cs_IXG9fv5P$?_p}*YNgKrO*pS6zv2R@&A5F0H%Q$Yw4OrH zcF`DSb+d|`hLtCfyiS}Jf#)sOjfrKjzWM{}L}IMK%_|da)#S-wq&j#Zw7tDeAw$|U z*JnRiZqcnKegR?#6hkVe^v(tV3oX**REFY2{0N*w1%W6IRZT3YBYoz~WWWg0(?1>9 zAMgT>)#OgxFU6pw2etd0;1uZdUs+LD-7TGGBp(j@Ae0F#)|zE)lE+j~$WeGc8XgYEG9l!!n= z!kc9MMJbAvq7iqkK`77lp~%pbdtr6~b`dy)Em8(_i>TFRMLg)D%SFP%WgyRRa-yRI zRQ5T%0p;Nx;}w3ym6BGJiK`MXU#X;iP$?b>4|4z60`0{6Z*CctO|6}Uk!QQwSsk?0 z>3B4As5VaYQ7HpuCqtY;M^Yf+^%n=(t;s?Be@gx;6^% zuUqp6rd!xsvw)5$T+5yo>G@7t0Er(JdMasQT!fE}ewuYPJvQeBbdIM22E@a&H_g`h zV2=mHbiwKLeujIm?42A%N(&jj4Re>12Pmts*LoLvT&T%+Mt@!4KZ`fU6xzvmM_Z*6 zKp>0C|77U}DnwSZQS$SzV(wWsN)e6g*9VOLIjn1%H_6Xggt4kru6@(lcfm(CTm*8xCmxP6m0JwhX+-H?xqWMmQf% z35wW^(xH((RS+A@d@(N`IK*YkJsH2Paii<@xhOXDuR!ZJaNR4O@XwkHdxtf{VQe`b zAhGvW5N&sl+{FKuRflVO-qO(ul)~P#lZ|dCSNOM&r^-&&a4cU zmdaAsXW8dq;^rSA&;bHN_*niUd}@(Nt6ToMG->xfcpQEZbgrv53^_FtthM8Z%>6oO zu%Pf!rnmnOQEwd<)%Udz4;|7u(%s!ihaey#oyq{xASvCAlprBU2#Az)2uMl`Qj&s0 zNk|Rd@$T{SeSYtC@t2-6`|Q0}uY0XkiZIxKSovUpgy7KrzL5^k%CB}+*VXj?+?3BC zX49VeS2wu*_Q~}Qe7^c~9rbr03>%n;jT{991!7`%!>f^U%A*^qy|Ls}{o->9=&Vt; zEVF9v+bH*V@l*^V|0avH7dmt!2{Or|b-GD?hK;#CFOtsR|hJ_tHdX5B!`ace>`!bn4(iMHAv?iem7(qcm5 zr&hZaQQ$|~wBVfB9PwU@MOVqX-UBchqWz~tOa*~Y9z&dH>3chFE>$-ND2a@Qq8JON z*+cNrK+esgJ{Tf!5{MdWlY9n`j-**S@qtJ=`i%ZDzN@C{hlH@iCf##KVSu3k`^H2} zo7dzX#y-N^Jjp$!GiKjY9R!!u)b$vdpjGJy`FUnIRdhvWiGf_i4dm2OCGncDCR@nU zwa4;V&rs?ADE4Rvph8j$H;p?Mq&1jW5R!l1?4Wrsq>XZocNwoUn6-lJ3-2(>X0_yF zHhr_kJwFz>0y2U9i}^XZ3VO}ZesW#_HEEhq3odK!xrVayAlS#CJ+e>C86DfwW4kO` zRN_3zkJ=|odCtG-Zm062Z7zAR&Sb%))S>fQ0D;nW|DchA7MLxch74#q9Q2UCt~5gd zsqFK^z;eef0CWO@ATarr9&-Ite^GUDfQTaFK_?QMnKL)W#A)~s&BY?HKoDxfzOJ7B z(KXiG_ipl28f1TMG}w3aUI_m;UmXpk0S3Y(8#F1QVZ^{PTtS`bk9{z?+$b+bL56DM@zDB94eZaG5OXyyy z!&5Vp*}GSU$>eVaA%hq-e4b2ZJxJb?L6ZdM!AsaFU(I3IDNf&n|HXN}M+N*YJN}HE zC;jcsR-UC=DJiD30C3N|{~u^%4_e8KwZ7+A&pz{}%x5Fn`mgrio0-&HqTIa82CcJ| zG($5+$XK(_mMh1DR*w+DR$O4pR$y3;Wsa_X$3pb{p1+!9P@X(}8FU;JaGI5u|8+97 z(}V(m8&BUL!I-h3yC4IEP72Ut_GkB*;ga%BhA$4If$Qa`bum%wFBmvK4}px#t+HT$ z=28NCNJho({lGlD>`49cw=w#QRF(oS&mk+ql?n4Z@dt6N=${(%$N|A%0IR7JS=Mmu z5{}~_j27#~t*RX<$~J)NPg7m~>1;mt_VurtZb%4Jh7J2@AMP*43GzyhiN^}M*AEh~ zW?2DxCytMf)Kynp{L=!n#lB5uHK9drU{FQ-H)j#3f)Wk_ufXyt3SKO#H;J5mm_ zb0iDy;(vKRB<=g-bdSexMp20RJVD{paD?hZJN!e17=F0F@ZO3$42+@qB74ff*SvMb z5heM@sWTIltkeyxD*``JaH4}eQmC6QfwJ%DiL0xjI; z76_~8*kHtOa+w8DmR8RhASFTDrgUXm#vhMUDUtrD-2Uv8hPB8u=lJY*225DQLk6rM z_u|0tBfHx(Ye|zmC(^@^4(YO`d+tX0A2e?VMO9j=I?wU{TjqQ5eRtZ2JW|ID?*ssn z)QQZGOP|t?tCcQumY>?7W5SH~Kjv)MkFVbnKt8p+o+B{*3Lutdqy$;De5wRwJwf359w_`387& zJD>kpkIp@|1rE?m)$UeXko#H1`LIh+*q#oSdsHt#&tJR%z*1yOZ$h=A?@SCbCsf+x z^z2j-%R;Z_P#{FIKj6t)zH8HI;u^bzJKqDmzxafPSEB;D48;yu@CtW#=I>3lL8o*GWS2=RM$WKrX^n4A1veN z&C7=NI4ib<(`PE@eMIodC-YS)$IAYoIEwDhYD#7%lL5g`qED-UH=p#sf?guJUIjBQF4^D;2o}2H1)AeOfC(Y;S_02llVsMFLrn(frjLm*5{i zN2qVU72o~9V;Lk?Ault7fY?)gKbeuiPA9Lam<12W&FDTy=U!LC5hK>__B6(Y5=$Ts zlJ9QC_I43nx6gj_Tm$f=K)nGcKpl-K}AobMIOWix2(>*izydiT9D6+p?ZBr$J9A+%yPT# zZ{CfD76{s;MIfmFla&dyj`W04vqeW)d?Q*yTW_@au+pkTQmlGCKPxJ%tF$&~eq13t8ggT(xa|cn(X5z#?t-6% z@>(ew!JDy1{KfEywV6o)Fz2l)rl6z%wj+Sj?a~hCk1)FIyxubSO4d0-wK&4>yW-Lw z&Oh@6l6XzLrC9<;>ChKMcGZ(v)vp19U5{!tZ?6@TTBQ->?@KHe>MjJYcM01Q|FS50 zm!ds4z6K>qxX8I6gZUPqX>GV@)Wc4(b}Bt`+#lA>O9GIl!=t?5_4^^^2+69`=ukQv z50s=!Ai}a(pOe!z(?EJR5N*Wbr*e%)qfIRDV%ERPWgWzwc&}L99pydcXgTaoZ8)9=4Xb-w6|Z1pMOv2Q1q@rqqRsRWCk8C zc==xm3ka@-R%6e4wHne#poqNfMuAARAAgKn`dfwlN)^4CNXy#+Wblc1l@9SAGGNBt z!!Y}OCD0zQ$UD#)EpLR%QXsh(>_A8Zaz>*a=ls{_d!k0a#v{j!B#^2qD;KQN&n{5g zTqQ;w|FE->2^HVn*UpF=LUq-`ese)uh1tBEtO{Zk4gs*hH=W54aQ8GU%THk)mRNhV zTm8j*=j525`kVjq0Y@V*{8t}5kXdSf@9rFT+9?2f<;@=o$qof5S4B|lpT&jjLj-C+ zLGetzW~(7N%7l9@E@aQ=IGG*eJf}Gdq+&MBUD_%p$E8|K6#Y%iDkX@Qr;zm^svs7h zf<0~2`ZuD^^%od7HF>%zw9u0ob2?6Xl>$%&MCMIUDgs{8+~HzweiUCx?o7_yc@eL>~ag9BMj*ls~@&C zZu0_?PT3!)R0Ns@P+uinA3*fOwQZDyOF8$WBy=J;@Mk7f>aW` zAlX+d@onsr>_=@p0E$edD8@ao$E36!O5dtogY4({RS^0pqU={*;&g764YgV}9}%FA zg7Oh?q8?=faSy%QL-M2>3G&*mFj@FkK}hS@mp@wQ0Byi5cR|qJw*CO*A(Z*>nir8! zte#L%L#hL;Zl(XqdK!fUQBUaLU)O$5^J0WdowaV3Vsz%PL*BdEx4%Jns(rG=69%QlmqE!H}vfNfXt%Ol>G{RyxB`*mHOGjzix7wu+2<6&I-cAXndwF(oXIz7Y zxUC!sLy&C`AIQcsfKs9gwbo8@O7GZDgRg&S+}Uo>?{VE!8ZB?5MTbvuO3Z`+sh6MP z^HBAjQnvLuT*=$wXO95f^V%4@M;;}Y;<2(;{!^&nqnz%Isw?`1{e3@AO7#IO6y#FG zJy0Kn;Dj7xgDhu=qPvKb`qLUFI_^mbdUH5rsj_+Kp}ih8+11&H%YlEk^$%N@;mCx z_6J$Hr+v`wX#mJFS?bEd{%#yLEY*4$v$0AZO?&sTCoksLTiwWtGZeY@D}w;=Yfsi4lN5|?T2b>?8C1V4T}Xsug~9(2KUm-aTfcmxa_t3 zrFh>n*R>@af&&^1Yg?ha>!*g%JP4BxI-h+IZ~%WVa9>p_E_h)wujKb(<1ZPPhXMw< zee6}2bU<#+Y;ur|8FN$v14eoD2@);w@^>g`mIAA=#xIGKHT@y^D#=b?9)dRmR~q1{Hq{_0Qo^IN>;&sr{TdGgWKM)>=j^rLg!4Azqh} zN34*_cD`YLO?i9MlGhc}1?+-WKUX+18B6?sa{r4{WK4)um#C!GQVuGd=UIL2LbGtJ zd>h1PZKHz;@)X|#3pW6A0wDx>877BWMfnkv9mAcTHYv>ggZbdlhI#+(RSAHea1g!4 z@xS>E!dE^U-W?I35-|SeYl}9vBHb}aWncAx*`kH3(7*H{1zwf{qP(GgC3f%hY5`?_ zA2n}w#Qfl| z3__n6=HrKYcQ{19B0O`Ap6P+y+0#hFy;DGu9^DaO-V`}#EAFa|ij>JV)EXeeh==FO zP+h)G3F-VXPe1_~8>WBJU7fC0Jq9whlX}@)hhp+0m`%2-a$@mL-P}nMIQ(*dd}1E$ z4)ZUwbtor1$`7%$9lurehQFp?@DN^M>3d!I5<6n(5;&O8k&#YTWTf*{>Y4%l0yQAL z#v&^+`jc6r^IB{#Xw;8?GdxS*GtQ< zngZu-TK}Hcxo#E|H3%v=g9tThEY+XfsmyPAkffL3hMxzM(@`(HW~I&9+%m%}ez}1> zToL;ChJE|6{DeRwui37FwAVbSVn3oc^y4FmcL*Vrm1g-6*axou?-vARDZScXjtD|5 zp2&ku_hfS^G8;YL>V)}{+205qm=QfyOL?*+m2Z8H1vb$FtmJF(*VPLf@_#8eJe z0Ho7}u8I22?dk-YliN2j^02zET3!pJv6KRx5pzXYRf=wIlxA7A+EkZlx*6LXb37i~ z2E2K#OTSgyUYh8$o=eE`K_;uIuMmk&;cMs$8%cPfq6ry?! zMMKD_Twc~pRw>*6C80o}erFhSMj)$BiJyLkz!bP~3or}A3ih#dMo)?O4d1pr$(;h= zqymbsj8k*Z%vt4Hs8; zn#E@xGB1O6P>dXF+{Z2D)4(u8;6e!X$+ua)7&0g^^yD!|&2ZQ1RAEv1kQq(2=zQg=$?FYg@g>Ub8Kw~u&x{AeRNdc@*&Yl*)N+bKwE3mU ze8-L(2dr>`MA7Muk6a^?F*7gSDybn)dI(u(T~~t|#@h~lH&;HP*2>8F7YZ*(7pp@o zPFUi^4($(VQoGJ1K5sp&-dN5?BV07TUY&pyv^8~XoxLNT^W}ebHr93yrxmxHKZmBL zJ^-kIu2QQ50K&?O14EzREeK(2O1BW2fjOdaA^4~FeK!K~>zGA4nIOoOYmcxqCRsH+ zB2f$ea*|iy0;w=bkj;f^Rns~d>YlQ)O}Oyd@rthR?!hs7cJtv_PH)_zY&`%sT;$d= zNfAyrA1t4okN^Gx`#HuyLGEyMJ=LCAd#L08gNkn znnqe0^VRDjEP8BcWK|yY@jYoVZT|fbx0k^XA6L6a;iO_tCFGC_9`9JRRCdsVgt(zF z=L#*#*Av|r&v58`rLElUdID`fMJdr&htbsrM^JlyQT(K!sbUet=KP>{9tc_=mRMN77K=kOkyC7dHaBBvRZxm%E)h@3lw-!pit&g9l(|HuTVO1sKrW3KtHzUhf7;k zecH#Tb`Dwop!%Jd7!RGU)02czH@cgWw;w4{*?Hw$XJ!jz-^cdKJCqBakZPS&n9d(T zZyk3veSEGcBE&jZEV0m0N0D^afb!oYwYmIq2BvJBrhO}N!=0^q1;OA8)uiC@-ZHMx z7!HVCQHxoA2_^cR3HVIskwSxo?Gef){hA`_#9(u8v_w-sNDyL-)b-n8n$*4E=Q7H8 z8JN0`gr87K{NAyfZEs(SEqCmhC7j&IYz}Nxn{QO!560y?L$>+@^^fCv_q*R;Rqu?2 zTYy<^ZXNR&)OAR6V?S*T!oWl|d8eE*Uu9CMfc+Ag!B^H2@ldxnd@67FPIdI0NLJ2^ zlz`*a()C*O@`6&LV*b<5_?)@blvLW>ztL16q4GTdF;Y(7OfT2GZGab_)M*lq)Vk8h24ob)p#&YPd+32-sdUWdbCEB=a^PJfqMSLYS z{O!$tsTw_&#{VI82uv*NF9HUZ-cYY<;rW6ud)^o5s7 zxE|EzM83_`)xwVpoy0?1XE&=7p4p$SA-=v0{pxnZd}aa4Z3I8(ZE=_UIRD4ycI>3+ zu4*kFlCG77*musDB|I#Y*YqhDh3nR`>ZY5Zb3zsZrR@+o~EKLOECze2^r*q`T~9m^(~%ejj0 z&0R~Zh;$X`u)8aCcFTa|qgS{$T_1KjT?=kxC4mG5%El`@=DwH*hR@tP6|e&LXY2Y< zAx61F>6+yxlYN3TX&}}&{?fx3lRfN)Kn}fVge2;+apkn1zHb-UL4w=_-w?S0Y)_<) zT|wEyE{%<=0fVTrn8!3=b7Jrx5=DO-FUBzccDPBTVB&{^1b@zYY18@`-8v` zu?(dZ{-i$$yZ29o6Dr%giPwr)cMlVWa**{Ipnk!VuYhdocIfG&xe_6-!e5D;Pi?Hm ziIV~Iq9S}B^*9NCc`@h&ZD*zdYD@1%6SVQ?r`w+(tR0@~(&;DE>(4_)^0K+`{-|MW zCMeAxY@c{9pK20X**VbsjwImWe8nj6seL%({X4M5UCz?}@#I^S65Z5v-Y6?#*Py5k zx)6u4SSL;hI)vd3t7Ux2p*79^m5+>$4qX9Y8#c^8lE+zTksu@+UGa>HLvHI6SKn?-S|Q(UgQvAc8wmY^PX;KE*c0DDqr;# z;T-0$@<^>bjeofpJtS1pKs48oXF}F*bhC-MaD9#jSjWBfyy>mmuYA?z0dj7O7c)LD zHgaL~6R{NfoQzPx+1XIF^>Ivv+~^6X90| z{VWG7q&{qox82>@B05%g%l4%1?i!}~iWi51UH%5EF64Lr3CoVKietk$X2CmG-1L)oarjAG|J`!XCNPzE6b`H#|A$%)ja zH@4#z<$r^1uo`skQ%6c{xXRN! z9Rudi>gg+#vMS)%4t%EQBQ6S6X!Z82G)ZirC`RmY;+D`D#q}adZ?o_FL&}G+dK4hy zV`$2tJKCvt*2#0t}Sj9mY;qP}S z7YE-9K%xyGNNUVql`&2qZ}h|w!-M{+`3mp&(SH4KppCm3*FsrvWVy|@TBMIQNp1iP zMt^hXv61xmrTywhQECZ`DZg}Yui7#zVlR5Nj#ycDBY|J$KEGs96GlV*;VI5mY|;7i zn0~Y4i=!@IWCmqMrJo=Mh%$%v<#n@d?H&Ewnl-I-@9P8qHfH#l1(^;l=lI#ASj+V1 zP8C5u%~vpjsJcEWRf94L$Z$sPrCa-@@~BopVxum1p;e}!3a31v1j#>P90ikdkM2%$ zP7-K#LMxQ3r!56YHDt@}6-!Nu%*rQpII7FQ(NglRz9V;(a69pPkY#e}D+gxmOj}jM zBf8obH$rQO_kLfpbj;u4X`Sx8FbyVTUK5IxP!-Hzrc~kgsRBOf ziy$|9m3MJ}pMObV7~#b60fRcvjN6+zA3Zyb8>i#LE>CiCR_{&^DB;aOK22qd%i|0vp?nADw@H8#1beo?wV&VpU>&e;(`7H{k5aOaF6OMMwMZ4oVP z7QX)Mycgf%*go}fWAtC)a7i{LSxr7VOgP(puQz8X2ZN$ItqL7IDjH7g3ZjEw;GMbn zXR&+9^&2%j-l8cT;!u{%I(qovy~)h1Htn+j26c`N>Ri`>eCfZhx0aN+8#jKWU`1{Kr#dUiiB<*A0&$iKn0grj#Pu}7( z%t|{nR7=hID6K;re-8gpsm%-EQ4db}MVc3cn1l1}s+oDO;e5Np(P|YYB5<;{Ggt!-k|`haXMF1EMU5jgRaz9D2h(|-pieZHy8pmk zr%ev0Q#luVaN*RS3$vsbs{4aLV!ur^kujOKkllC}5n^RC%rTMg>pnm@=^ zXr^al9U3#RTef0_HmL4@YfFg~;O4^V=ROOG{YWR_y0m-G`>7bj|75GKD>wXUrT$-f z>LTwKF~wKjM~__ywRYfLBcZZ7=8Nx`UnQDBQ}KE)%IP_wwf7(m|l754(d$s6p5OD{Mwv0vQF{fwWg=|mzsjY z_eIXTJT3@JZH@UqZycqyDO!C#jiJG9B@DG{r@E`v?7wZ?INzBU&h_)I^3R(j33l}y zn$3QF$-h)27P)=@zGXj*eiR?SHt<6Re4G(e-Rd|gaZKvLuxpVrG~!SA8#8Efk`=i9 zo2$;5j6xr*=l|`~r{E8^$;rb%6PfFrjt?|A6k;;QZT`yvYtn^4XuM(r-+Ja2e- z`W+B%19)!sQ8>K6x2MNCoTb*f@|DujvyYqLntELcb<;Y-8}>{|T`)Wr<36zJ=zu^2 zPZtdPa~D(twiVncPHw!gFtRf3m0tgLR_9GO4vR5@B)V$ErI1Zfz_4sCH~PA8u8=I@r2IKP)cBrQZc~W^_2`_h);dk82cEwAaYDjMHuF*9uq~)q?X#>1J$QJ( z4<_v|Mk#o8r`#{Tz5nT;xazLmM7r|$si79WZ}gw z6IURB&Lo8YxdA49Gw=Q8B7VA(ua+mUi;EzWCSQ!;IoXm&zS`S>Nxcv0`ZVw4v5;=J zP4-z6PvNV-OpjmOU#Pj~h&s&EVRUhQ8#Z^OSj~YQ6HY{mXnu7~?t7}#EHz40|k=PPr;TS>!MI6L?zv0+yE zwBFvAhdyi&!;Qd@%fI|#C-O^8eYDa))q8rAqBGu%?)6BScc4mBnm<_;-EBMC%U`FG zx&#~%GkmX)NExMD%6nN?b^fsTg)z|gar6T8>sAvVNldLcrVV{JVL;Cg?7U^g=}q)% znW_Aib(z=&R$!`?zaNgT6y@)Cf1&+tr^)2RUT0IVo^Zm5XU zjd8S~+kkZA=p>i_-+C|%ZDo7doA!$NeSz((hg!i9XMA|5sOGfM;!buyhc*{@s!k?K zO*c%U!11?(JFn(PbyVaodF+5yLq}7D$aIFrbD^BsbV()+2GpIv$)RItjO;?rMIA!w#Qr`2x6v%Y$(-ofmb(TN~hNgr-Fa_YN_z&YeFp7{#^cQ??BPdZL z`rLMZ_gFM^c5gwEDpPF;hW4XZFXG#a8&`Cr@zH3>I#FPU6ajRI1Gr;;J@Ulw!zHsl z>Z^=YwkIB*Bq*e!BMoQcY9}%sZv9Q)L;G5j*Z4}bWC+1GUohXQ*3=^384qC_68e?S zSK!<$WX8XyLqa?ImlXZ-S=h1x>JzdnU&HFYH%F5hNCHl z-i=N-HxAk;R0D$^0bAPEge~wR}up=1@6=bumkwr}LBX#|HD398pC?zm$q8JkY zx1&xcq9q~K#h<37iSfid^(-GkRYv$-62yJ?OVFPp-$Bdxq#P+7C;pk4k77#-9axkx z17R=F;?8p0i@$*DVvH|{^no5u`{#kU)|2~4vn>;Z)h*F9&RVAan3@cvC}RQrrTijP zXnG~I-Fco9ACH75mF2^kjU^>4DPc_PA0v!54O_(L``_TcrrkYZ`JhM#ekU1Y&?HVU zs@+)%x=U>&peB#y6T@?kO=yq@QjWx#E+|PJOCLObxSO;{4c3xPUKt^mQ4s2beYS?p zKT+}X-(LL!}-I9CX5k0*{iV=zk9yN~oFJo<9H~juC-Yx*B z;!#vXg66)HUBVgh39En#q7_^W54v#*u{il(Stn72?CzpW0wh}vppyS#>hrt$8|;PE zXYx5mOW&O!++_##AH{SwiLicOGY**LTCt=v)MZ8T)PN$nGO^W7__51;BG&NrBUCDB zpT{o*RpNq?c8G$z{p$q9mgx$%#c9PXmIwb)xgPXkDrOW=57bK=nyeoV;3m=rplbv2 z$JTVBMWZT30RuX)Yow@DAsLC-*bZ3sLeeUWKj&TH7U8fb9dv}S_y#!iCDJc{yl&U#Ki2xCWE_7uY3aT5;Wu=`X2|yI6>b` zIqU>kayPhJ@3ErDz*-yNC8$W|`Eyar!ng>yv_*e*Y-K|4KSn^QRRAcA%Ur)GlTzu8 zln_iSJrv|A9x|Envhq=E0`}y{&?Q0sz>CmYi;yAdKrQDYF|nwG^`|6b{^fswn;J8q z;cBmvIyxRWOSSR|)i~wvf6`E1tlDSeZ=fIbRI*^0WGZ?+-Q=VS@=I7jL6(We*{>-w zllO!F$C4;Qp}qc_;OVt4i!hEXG_79}j?&Lv{`-B8kx)U;3S%{0TP)+0FheMSJ~Gvg z0q8vRG8g`&G}v{T9YqFS{%@l%g2UN2TqPbD@)o}uWXk?ODzCvLHM;z=2dj61o$_Ic zg@})Yae;O_%F3tjk6sw7%uhV5uW;)t-h!Y&AZp4Ade0Lzp0zzdZd{py%nF~a9?xm9 z%LviQQ-Ll54X=aJ^ld%^e#;<3hW5#u&w@ylo4+eh>7n9l#wBL{6`Nh2g(du=zA` z?)g&CHbzxHEpZ`0GCR|~I6-ua&i%?D%r6KQY_w|OJoMu}iF<70Qb=RP-PJ6Mq(?Ar zriyK5LOGqI2buXWcBM)S0p(`LF26%XDTF-$9ioJ5eHLfy`gNIr{7v^xAYy^M+~orD z@_*{{DF^^f%gNt0(n76jP8Q~mg(;HMc;GWLC3cL}NRm;BKHkKaSJZR@KXcHXdWs}6Oz;}~SPO*y2`gPvM@h3SJJW{v#v+Y@T0J$S zh)>4gh-dm9UU)3ihTocZsxI%?Is3sTL9kTy3d!{`k2w);YU)6D)>oM&dJrHyy8xV4 z`9(fX!JF>`&_FGhZr>!FPy9GWqZiGSD**+^|4y7Sw(0+I82bM&Ej5WE^;9*EWg5uy zB%O#JZ*;RyTam_7{9A~I3*76bUB3TsE+?3qeOWkiPqm%193KtJ#*QWp%+f8pmENO! zhJf0YSkWeQUK9!>HGHf!Q8(kMJ+Bs3c6;)_9SuaG*f%R8NKFSF8kC;n*g?#zAR=jg zLStpZ4annT{4^-1 z4f*Y8I6g6_kj}F7O3(m#c#Jg`F&e^v`P3`)zNzSDqaUxzK3t^I&GO4$b|y`Q>c|7-0*WGwt!&-PsR`b?OP&tf+w1h%;K`T3t- zlLvv_4=(dweV16ppGd}_LIJ%G0v=-gBR*k%4HEYXUJyz}^5EnDZYr_|m<8##w%!8M z;;v(A^7o*K@@ao_haGI>n|WRr?=Fgn+&d(-R%e>|jO(7C1XP z0ZcrrX_!ias82)IzmFqFGNL2}h}u>bJ^DYHVj0hf%^UttrhI9a+UMq7I)Z&h+34fx zi?`r0a+U-g1A!F}gezt`h^N|b*|BPn&?1jEIkE>D#sIUs^1wrEv0{fCrlZ%7Sn;r7 zt0*}Rm!$vGjh~mO?+9U@JlR7G)t;4R3NSPPaM?Btu0T<3D~%hL^#ikClwXtq!z2<9 zF^d5oZ*jsgP7#|v+Z(N-jz6=?A2OTsui`*TRGVykXBn39mWT~nsM1DD8hYfr{0+Yv z%owt-KTJ^2r(wT``qyt+Z~HWIa9^$jKV=6gkYwKx5Y-kuHY0@ln`H2nx=@_es>wUH zdMs&5)`yn9Xy7uKnM3M)He)3rlirAvoY7Q_h4<{j>FbRI0honful7s5uyc#(ty<5H z6XLaTgk0$y^XP4;@%ZuD6DrtWIp6S~DDz`F;$eo@oGjKut6?=K?eM-Q3mNv0N!V^A zZx*0qa~fX?8B({2t5v*q zYp1dqF)U>}8R%LSR7XcD|Ks~rR(09~`?^wdZu5l^6~3*8wHEYl^nlA!$Pl%LaBLHT zoP%elu6W0UN9kXl4Z9W7D3t0k4o;})`(bK{YPyYH#T)(v956W%&!VALmuiv@d~RON ztzb5s*wK%_NhygxT_L=8rqbTo}i*9xOrjE`g znheKNW6&~L51goygWW1Lq?0t7Bzk)3(P}x+%HZ^l%&%$CK162shNej-*gK&^3Nb+Y z6?*rzB3@QTzP%yFd#`sdFtmg5ZF$p+bsx0pnT+Kqi-En|pb^)o0V&8I;J{^mZ>SSR%oj^q`u`!W69S6|LTyM5@DiKn8G?ak;>w@pp~Vg zL0Z;u8EojFuYZ=^=nqRnq)8(8w64yx(79Odr?Dtb9ltu&j$fVR%(p6L6OH zdpVSEpr#K5Ef2M&S*t42r{4ytr9agaN&#(9%C#%?@0X=Q`H}?n_>g}lrFW7#oPv5( zg=XcVTtu{)$z-E($2O%)}pNK{xFOO20xUj8FB5%Ce zT~fLV*lkG-6o?cDNSeUNT7NAMud!8DPHFVt2l3!x4*{GmpH~T)sr*Ny@8zXR_{l?J zUp$ZMUUnOK>l^LSp4-|0Sw{`fdVKdnUgYOd`to> zy-JS)!1{7x3N{NA5cQH3z7xQEet42iRkc)Teix}Rdqr$K8~Xnni1iYR(F zx=It_F`G8u+XnXrN#u=6LN_9}8(sD@d(9$e6npGhP)CdWP zeTVs`w%1rheP{hX#bq^xTL}Krgu;si)u(WclS z{WRXnl9a?$g9g1vjG>m%jY!^gGljbNrDPO0pG;oI9lV0a{MR!VR~{kLa71UVl_9@N z^A740xeFthIdw3NpFjV2aF@qI|Kg79;r^96)1DgL1J@JLQ93DY1*cQ(e8-T)PZS{0 zV01?^+MG2BE!DeUo_4=d4@yIAbGA|B#9DZ z!9^=zV8B&WbY#~jdQe;g#$&Df(vTpXr&AUbw75|-=6+kj5n#6Hf8#l1-R3~dIcwnn zi!1qWZvBk+xyW0#c-GKf#bQ}~7L0M_Ew@UY9G_&dile-N zH|_VibWxk{_25In-}S9Kfu{)sM+;*Rsc5WO!LgylE|e(sLc9zOJj3rGR{T`GOj+R( zA9n1wH)EIyL6IjB)`7)qDr+Ck_-A8~nuZUzFy{LbcHp4c0}#W)q}Z6aeE48nqx7Ii zfVM(EEW6@eCu~b21U&kO=v~QD`Q4)O$#akm(NNP-%_=$xqD`;~SbaO)X#&n-L@{)v z>5*#wBh~iUk#(D_Z!{RxDTGS67LREjVqMd)qoN?#dG7}(2vuoo+fm`X;nb8DN#`?i zytwXnS^AW8XF9>c{2DD=w}h!~GrKX$ftT4McQp9eFC=z!PtlN`Y0Ih`j?;5c)=kNV zP5mA%fqm;#u+mfX%f!^e_fO=GY`=3q-e;Z?Qd+xoU$wpRpMx)UH-xc`Wx!zA}9$;P8+Dk)RtXC~kLBA;v2wC{Mi)kG#TXsI%e zu2^!@Mt(9htJy%=xM?T#;jiHgo!hnzyDy#ID99*h*-cd$xIumXedaE4ZHOX2C&aoj z=cFwVEnr{9WiouwKVx2v%7^dO=OSQ=fy7#2}3j{PeA;^ zLy0I#uV4LGMqdjxikG;O!qCezT^%#&Vue4*r`&$!x+XMv7?W*`5jcIm_N!9?t6$e2 z5XM#+95$TmYJh(+HNXp`S z1!?hj-l*;W(5Js14*t`QMQ^KZ$c>B=42MCa1dfmKJ+43DUte_GL=X(%9RR{y)sHx- z8LO4+#aCJ*31n6}j>oU7sERK3_da?tO5l}*Hzls@VD=f%u_D=9LgsG_oxZH-50zhd zdDyE!qvy6rlW;!cyIf5iP_}aQEQNms!i}VQB>XTKNc;V7@PJiP+33P`hF78_8QMQ| zm{5PMyz9L{-MwHlDL{SZmRJ-?k={^W*V<4x?!UFhUdR7vYnM4+9A3=*ZUf_b^#;;$ zU3zv{N!`(DRH|O{=BExUQ+t}Kudhsm+&$nz7m;&poc5Qlc>4yIy$t(Iva;6D6b);V z8*3i-;V;~W({=H>Gqi#SM{6c&?EYQ{FAyHmQ+03Q$rfIOgog|J3`HN+8RG|4-3t4c z{-`T#^nC%wB5`Jy5i4Fv8h86fsWXqsmlixCRP-P5$ws>XNzQcdDy~+xF7KS{aW=CX z&J+u?hjANa9uCM|J1M4%zpAZm&e7j}2JWU%YW0s zWwlWJ*&yXzx4F*1h9~TWiZ7uObK&)J@uG&Izp2$v!knf$FB<#!Dt~sIo98%P8;1B4 zD>Uy7KHL0!JwUhtSo-z`k zh3>zfj}SEG%@6J$5wv502qU6f&(v>YK?o@mFY#<^{%cv)3e6NtVfv>f8fS~d#DLJm zbQ_8_T%I3aY73eZM04T>9`d)F&CGO|vWs2L8Y=m-UOw--nv!@@C3`2b*R&n<@@BBg zsI^Ih)G;#?_RGWzvA0@qq_sM=kt_CBn9IZ7OpxD1RHFU!?5ZolHwFg!{?EH6!@nwf z&3qdJims@rD3fQ%)AhwKbcN1= z0gj<`ucJBB%FN@rR9_Jb2Oe&*glBPQJdBn6^mL0C3lQpb9;@yYYu9T|$PN`9Y-WrB znFCcCbzaTi9Tn1}Vm><4jB^Sf!omn=Y3eTQTz9X^kjf~vkB`DAyg|IR1MqI zjoE20F)u#rho)GxZlQ^aKjSLrhg$O{-;Y8ISr(l#qx>Zf-Z3{FzMk0^zdQ5iF>iS^ z^!J5d-+jlq12e*z)>WZIx%C(ogj2%3djZN>sZbgOcZ|nL#Pijo8jC@9F&^WQ_aP4H zwQW_=?0&hcx4T*gU!6w(c6NzD1*NSeQCpJ@PY+ySAp`{Zz#+&Gf<#i<~(7LCRBK^O38- zz54POi#!BY`%pabXC4^di)R8_vL`&Ww9Y2DJkfeY=y-T|Zo}HqZa=3CA7Apkj(@+& z4VA9asn%wN!Ui!Iw<-CpZdR;Y{eH$mq<=1U2WrWUph@K}$L8iZZ6g?QQL~PG-4&Ff zQCsxj)35|wQ1g5XICi2{Pz7GSEFqTQehmyF!StyTgSVFxrjGUmRs=4_ z!`gA_H7yl!l}(Q{YMMr`?pKXK5mUBloA2L}I?a?+UL3N+hrY_~TXRiuX+yV`1{ifq z4e}2%(b#0enXaT>YF3hDFKD=GZZH8f*2>9yE!&Se>zTK|rO$VSudmMtYXj{<>V=|? zo`NAzz0H?qd=pAI&DYZcT%774Y8>-G}=1_hh|)d4@FydQ$3)i zsm-eg(LS*4x5xw5Z5t(ir}7F0B^Hs58<7-=BPCAWI9ggsglVA)P&UiDXgcsF&)`x4 zsbWJ)?d_w*I>f;`(P3-loV9#ztl?eJ1qJr5Z2N-r2*P-ze5*Zj`EaJ~ zwK@EV!5e-9iKBe=##$ZqJ6WP;sP)+%3UEDHDw}ptX^A9RPW2h>O3#R#1}S}Z1=$aN zSv_GI)S(M}Db*3MqP-Vz&4~HE5Q%F;uP1vQAvP&w0iwKD_b}srlw1Va@m$=jF5b0R z!TL{k#qe<9)^xlWfRvRaOKsfK%%_UJhcwWCZ8lMmJ(?Y7@8p@ zL>OX#p=5xe^F99G4?GVu^Wolm?m2t!v-Vo+l>H?MI6I0vg}Zkf@gUq3a>wtKeITwE zgwn1DkfirNy(S1+tE~@ooA2cKAMp!_oNkU1LLMMryfXKJXuM)zt$Lao1YUl&O<5P* zVBGO@v3(USu-9%b6t(Q#>7V#kT%TSL;5uFDeX0EHkZN;{V(Qn^`6s+BDF&Adnemap z>+ct*4&7EYnH-+|8Yfo8e=}H0mgU!>frD!r&8-0Xi4yFUZ#lV<-szSVx&d#qVy#s6 z1y%g^yj}m|Zw#UU)|DvA^x?)3pgF49E$Fq-@@PzW*F4LrB!&N}lB|L+#qih;A(*1ES%^WKtpfoDfWh|EntPm5Ty zA?1Bi%r;84z8zig%|epO7x=ZI))?&2mrehSsIef`x3=&{_bn*BMnltx6@0Bp$S9rEVj zNe;X|I6S`v+~!yv*%))CyGe1X=4RVm?;l5GfUZ?p3Sx+e7|;7_s%gwJJA&k|8A@5@*V0;?tlVQlK98ON=)_l{PuS{C{T(dg;gRt%zRnKxm?ozX76?%sqf`A_iGYS3|f0F$&vCWCp zju->i>s2;@nnB3RET3A!WyeqEXXy<}P1glAZ5%LFdslYSclJHC3j7EL&dYf5^9k@fTWg-}@ zh*Tp{%U-@{@^-dfs&2r$72oJ9ZE~^GrIBGhmO`wy+3SX=JN%{MHJUy{W|eWm{gagq zwJwH-Vc~&l8VUz}d*Vnh9+xXtM?L!%=k20TM2vfJd}(9E6h7hNLmYj}cRpAQ;6N?1 zxo^spENg3*yBmn-|2e@fa&P74zrT!4pBUb=E!ml!sbJdAn&OyY%&*dAz~=D!2zv@4 zmzg5l9xl+krRX~XC7G|bPO9axErr@KGQPaIMO%bs*SY)I`Psc3;zCi={%bmu)gB|G zS}LvH`E!I*#&F#~xQPjYI-R7~J0q#(OFEYeqNd;TbSN||MgA*5xQD46Ekz4GpP4l| zDG}FQDa7G#rTG|G(*lO&asfef;ol!%`hG+N%mcHc3tEiAG>zVSo3QrzrcXiO25&S0 zz8-S!iu+y;g`V7wIs^H6Z6#yVp=vIDRt^tn8}+#QhRR$6}EK59X2cX={)qu zo(Bx<)su%l=TOY=P}t&ThwRQ%wAa~o_S|l~=9Z(A-Io_!BNk3SeJaGCso5RuvNPLh zz2oQNXceD%Z5c~J>Hh})I`8xJbxMz+5*(=iiBll5sIyLc+WcpuX3=lTo~P9~@jI5! z{HK#Gwo^?PyHmUuZ_2X|j};FwKx~`w_#WL3(d>45`O;A3e)3I9Vhs(HNkd+w0b+Gp zE0a6!!_x5_4%^%ICNgms<7L$$?bs55pY>+DJZYN+F*=(+vydG}6%4^~nLW4#l{hVc z_nO?MG5=|U4E2>c-o{_HT!<#TzY%qf`d!xDeGKO_2#AZ9y`roz#ayjuv&2V~P<^~b z@3p)1wzfFKDHlTj&a7YAi0u1;px#n(IoxelFaHDE$(?re8P$ge`r+KkH}#lNcb;9$ zCMo|{`SHn|O5Bbq*78|Uka(v}Cs5k7+Y6-qtjP5JjK4UTR6LofhSUH30JUNGB>&tR z6b4rmkFHZjb65$>Qa8|1PIk6 zayOp%;8-f`!OyxU17ST&#rNsq_^{xQ)iSP&rB_nnu9I{v`>6`YUCgl`9d2{$4XRD( z-=qUOZwEN=PwKB~f6zUuip-tc&636V*+%Ukc8<6Q(Fa#9q-cLKyV&N_+Sagq3+qv= zDy*{tsm_p=Pk+?}m0TkGtujD-N@+RJG`Ax2aZ%>LKE$bFIc?H^wO_IN4O=>QnHhCc z8=30;%Xu*uV_|H?|STrj(N_kIi=A=+t*ZJtQ+i^q5pWY$MsYFEg_%lE8|$yj1rt(`sN{-}vNr7&k)aCdsYqk*4r z5>Mca+O8;p2c40AskXvtON;TFD7QrE8Cwl)T?9rwBX$Rj<D?0Ro&FZ!`v6IKtnd6j$Qg*J3nIJWoFP|JBRe37Q>#lCq&SB7 z%ns*9!Z4o+4q+%H2W7TbT$gp!jr|zRuHd+Ha(tuFZV|J{d~RV=3O1>n_(?01N?^W# zn1)V(eLK8=Lv$(ai9uck;^Td-HZp;4i7gkZLyG5WBCUI%CXFkSt3aKS`oM@gt!L@4y5yF@3WRlcEPYI&q@@nwBF- z)i0Z73M_YwhYWqSb8CKokuCk*$(yd%xaMKAw}*QK z@XbovnEo#!#$@vS=pNT|Xx?GX5~1lZZE}|l@5@`E_Hc-uVLlw(DOj{!U}o+ zMaKiopfOQx4~;+`wqIFgKf9zJ?;SfLDW<0Lgs4lIu%{#&(mulEVkC?OB|FFPs8!sW zGDSC9LF~0mtvi7%X&1$8fJL0|$^`Blb&#swcWDXh`sh;_d<*LNk*Gpe`K6o795qAd zjv5yT1yMVf2MdjC`&*a>Y1*Gn-pQFq-rxb&#JOx~JG2sn^h_Q*VL$Ds%Dp^p2+#Du z7@VbrHA&&PCd@$j6F+mdhA=SKVSdc+q_wSRTXsWB5@e#INW|go7Oso!dD=ONGZh19W}rcQa-Ka$bXeIMH>@rloqX+M0HlMLkQTE){#@x;2e5X)v| zPLu=5EwOp2Rgij)mRNv6l6K;VF^A2Y?C3++d+DNSZ+@%oqNR%yQKv)^J%MTF-&=(K ze#xEi`uj&Tx6l#t{4gz+R!ND(;{2drZsqGf9G`H;oNUvc7ja+Cb4~l=Jhfukmd&dD zQ{vmVSLi>=yrl)(Iua@bt(@$mA|)9a`8(77&s7fEWh3U!?f?6hZ&q~ArAD(ctVg#J z^=OC*RVuuAn>%ojXf|%>+<%EKAJlm61+3S+FwxHlVY(8Y0uv?LBw)Jyl;} zpI~6|{Bxjx(QZlA224OFh3|8*)R6^|!LIU$hv|Aj z(tHhI^`yzz-P+Wn(U(c?BO$iy(H70!vbVlNC8SHG;q*EU3P;0NV7UluO8lFc!Q&~m zRbGyjhjO5twV$F)0nY|})%oQ@qH${+;&R2sqz--!;P^!aw}Yr&XQ`=K zzT3e7gvHs}j{|vmtRk=*$b1=Rfe28t_H-zzBrcQFWTVZP-fqiJr5?w@tB& z?L8fzzbI@N)`SHC4L##3z4ZCr<><8_FEBPXS)uIVB_D1rtkg`>bkg+X$6ikLt>$h} z2-!j2If*u%3~j#}zR{huc{%_!;AR6;Y(Mp1&!M zEqL4J&NG!>K?InP-pXFzDZ)rjJ~_X-8TJsH@UOBk+*d~YOPgfGRmHkjIa-KWX zSuM;Ni6;>Q!)nzYE9w4=w=f4GkyEpO3iI2%*3PRFXO#k)_M_PnhT*4b=NvN z_1g-|RX(-CCr^KD{)oTE&S_s`IOQHJHw6q% zqv>kWKfg_>npHrke$K#79;zw#0&AxH`rQ0ha}rd-V2IHCmPVvg-mPKY@M3k>yZUQ> zdPdxhCgZM(FrjTZRO_{fy<+6(aONV-SERlYAc1!@d3$R{^yRDeJY^XKNc&Hw`v1{|0a}1 zJZ$jigB!@rNw(IFhq$KkFL(Zh{%^))S>hqy=Zi!0^pmZ{T%8{>uG5Y%S%Wwz+tLWL z%2&g%W4xAL`X7C!S#xtvUnMwl>Xob89ekTuR4TQqPUEa-PHPEL<&SqbJ{^}88;G8? z96FKi-$)f$J7+S5h#Q?haJCkf&G4f_>=l%(xw>UL+I>@&`O5J~jg=i1MZXy4?=`kn z$MGZpkH*uY;t}5tMcU>?<<2Nc7_R30g=m-)MTT)rz5m4y1dZ9+;a-WQ%l(B`sM{rU zB)@P5b}{cCL7K49Y+loewrgvg!-n&wf|SI*C**Rk`YZqa0K%$z(a z)$U_pW&e5WM;k?qQlvMx-@RkGj8)BiWdzgl+iLXHP2k)(~cv3DC!s|~rO0xOr=WJ5G@1WWrPBzsv{witsTeIk7aEKLD27?#TrzvTiy4WV8JVJ*0#%YkD7hA6 z+_^TB9DYqWy6WCsU$;RMvd--u@L6MihM>NuzOs3ZuB`;Ekf0-~96#H zIAY!;A#9#1lvgVB;CN1Us_eYyp4^J?Qtoep-uZ{qyq77yX!2?b92B=`TKJ;$@Qx*? zf7k#CCRqHVLxwlzNdAO8)am6N{ii8Cdj{K@DDBsEbvvyWe=cLi#F+7MVLftnlk1Ul zZhjG$XXgm(Z%=bd>Zw?~B76L4O{2w8eorhtFe}oCriB@v_4=j&H)07!`8O5!YSCn> zv6ZZ8-yg9t`m~dN)~IOp3}>morR=jv#@ySwlZX6-fD)GcW#`lQXhFTb`sQf~)yu@} z2W@MP!g;0|wJF=jv6h}g{;ER4Uq;o{0-a5PoP#10PM6wW-!h1y!Up*YQNqPFsK zIAX)RL6CbI_v5Ik)epJadZEs-oLdMmH1_A9BkE&$-?Yy;>S@14lRsak{JA0M7m!== zs@2XI+wo)^PP{wh^4lXX4?NA^+oQGqWfXXVH52;(Vn|1RW%bJbMR8weL{GnNSbFHh z17@qhj)W%re$%}e+Q(WG2_XbHr-|p_hr*5tno-oCD2Bw{KkTfnP-QL0;)05k zoIRKc#8WBX8|)7e`D&@r$E#F0udV`Nz?4F0oHMDdNY2T1z~DGexr;B+dsk?gzh?fb zp?ZgG39^Y%ap03}B3$u{9RSUX-V~*~Qsv4UK1_{*bq9bPRf`}kLAK}x`Y#s zyJ0e@zjy!hZFlk}bkLh4do*Gx9=|sZ1-4#M;!m4xvlRQTMH&(E$3&O6)%!WLh@PE? z3q^S#!=EDo$hi@o^HDp$*xqhT!bkS=-Df$1OOd>-JYNqFN3+@DjG6kQ4P4R6{>+Gz z15T6a(V?xl8`1nw37mW=eQwx~sa?S~3P3|4J8of{aqnB~+FuaeHeh!VH{pk<+qD}g zYC5y%ChlNz4RGsN^v$TB&A#X1J@2m3m$v(%`|Nd&+WasY__kp+`z)?|JP$A17Nvi~oEzLe{YnC@;q3>h@3F8jLnqm5H{0 z8OXHylg+39`R)UO4GfJAf0V?8POs>zu{wWTRopW|nIyX`cnMeyB(iL9VoQw2GkYFz zb8_G=I7O6GX@;gBSj{0%hPfY1nE9TZ$X}Mm*KdwH>iN>EsnNZ*@W3#W6J<7TzOraJ z*7em4DXLe)MurWj^H3J&@?km`M3B!M(@x$gVrX*4^C~xBtSfKpZ*Ek3xTcM0T!&VD zBaP;7?HFgOc&RG49r2ndQDI6m5U!t7qJ8^FHAu9!odA6cZ2^QOW*lTkC@y7z&FwCACF{gyZ z?b}p>P_Iw|CWPqm4NU!RkJsCu88etXpDh}4)iyua#pc(^EAJoM7_;MQt^n0W)OCh7 z&XYU*6RdxZW_sDYe(p;9k?WGZgI3WOx+;grTKV2+^gFG+3I{eCzh@`W<|2(BpUCj$ zk^oAk;6+KdHys)ZDtP^7VqT+6p9AV4!O$br<~{HZYudzL05B9h*@g z$~6+TW94_U2Dv^E`saV8X+y}3hwEUa5#g0;&2mV*K04Qu;*_k;I{ntgi)1XB;?~&5it7Bs zJHjrv6F1~=+qOP#@cY=4@k)qcrpnorO%n0U6o5Pdq(gLkgVMb{%xnobpXWYkAS4Ya*C}c&i|2_1TL##&xt-9TJl)g;a1m*4s9|YF?yCL9Wro}Dl zV!dMha&;zm$iC>E2xD?Z{6UL$c(fk3|JJWa)3KH>J1h=>ztIx}$FYDSWJPc9fZqA` zHWB4JB<4a@|Bt7Tv86{P9caxD*iCPmDtKe-liUZB*+ymWg?QpjO=tGsMrsl);GMkp+1!w8lT8_VJc3ZKr_d^O>6;bs%6ND`+8nUjV zT(e}XM)%ok|4|XlJuezWf>_wtQVFM}IeI_p3Er|1QPGf`zVFShS1arPYBzF-!QmL7gV{xX& zU~;uFqR0Qy+-8Tkg)m{_O1HtyOU3DBaCLp9gLmZzGRg-R-r`ac5i6k;*M0ZJq$K*f z=PpGW?oDs=fU?65g++N(C|pP>AEfkOD>3?dE8L73NJi(mP-dRTGx4(mmPS1EB?s3^ zTGXyOC|gHGQrBy~y80sOF&(ID50+-w`%I&6YW-MSm8^%KS2E}3K9FNf)@IA_qE2dB zr+vFm%TUZa-%nj;Z;XZ{wVeE`IIeOtFeWDqsqD%rd##xl*-3-`;(b8kPxe5Wx`d}t z$6_qdf0|d@_Hr24<^q@Rl3(wWRpNNhXt@UFNJptS?f9J~%Ht`jip9=lmjl}5dx}tr zXE(msyfB?Agw_9}tBEU`8Rqxs@JM!SJB5SKJIVCVX`=8aCANIf>d0=d^%K71#f|ct z{am)S#YP{)dIn;2$YI!z7B2n40A`#-oc1vzYwKEaFJLHThcdDfbs?yPETA-h{cMs5 zTO^oU4yKg5No9riWWR`Nm)E>%rhFK;A^6M%h;WxnPdPHnZuCps8K(x#o;Re~WwO5~ z-XC*@1HGjR{Uh|cgoKJ8l?etypqjTMs^;G9?T=Z5yiR4i;iov=m}gm z<`wrA-k?l+p)(NlW4#=2>BHy~ ziGNj|n1S!JxZXPvBPS0T7j+g55(g{~ubGih5A1l7!953{>P?m=r+2ledWRqsl&ovD zIjh??h3Vdf;!wM8M8xFXbp(&ktwcZIj%lslFVx-~%cYiJU-Z z;9zfJo9{2%#80`pL2@EX79@ZJgT)^%Dm@%$0+0?dO#Z|!Yvhq74MN?nfke_}2UGpx z7>YssOxu~ppH zZsSWTU!tjK{PasfTPw#yPpu%R4lv#FbN@a@7QEQd>9!UYF!LD&KT&1#kSyf~hTIm!pcmF!$fVs6=hj_MfR-oQ+9~sxLvL3BW$% zTfc|>jD=(Kaii6Z2-W@O>Iv{qX1}OXlBB-8+o(8zbJ(yJe8fujvkOg^?r#0GydL4@Jv0^7fY`#CXoV7O^J2ZokDaPlyy1>8hW>zZ2|yDPRo@kW>@JKaX)t z_$k*fKLb7^Ge0On^FW8M7Uek^I|Jw6n5?jd!#`jDa(NC3zW(pu{SD)75JA#j3jv<^ zf)lz#HoeVnsPPLX?glpGNmF?EaR{7frlD#qIMQ7H9Vv$o3l? z0Nv3c+D593(WgVepy4CStLG4>gb!f@4k-3CulK5LY%0DaKr>;avvR&sKF;(>Y9W#r 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 literal 0 HcmV?d00001 diff --git a/web/views/clients/index.html b/web/views/clients/index.html index dcd618d..1b70919 100644 --- a/web/views/clients/index.html +++ b/web/views/clients/index.html @@ -1,8 +1,10 @@

-
+
cloud_download
-
+

@@ -17,8 +19,9 @@
@@ -44,8 +47,9 @@ - + @@ -57,8 +61,8 @@
+ sglclick="openClientInfo(client)" ios-dblclick="editClient(client, currentGroup)" + ng-class="client.id == currentClientId ? 'active' : ''">
person @@ -74,18 +78,20 @@
- +
@@ -93,203 +99,335 @@
-
-

{{currentClient.name}}

-

-
{{currentClient.info.address}}
-
{{currentClient.info.phone}}
-
{{currentClient.info.email}}
-

-
-
- {{currentClient.info.order_count}} заказов на сумму {{currentClient.info.order_sum}} -
-
- - - - - - - - - - - - - - - -
ОткрытЗакрытСумма заказа
{{ order.opened }}{{ order.closed }}{{ order.sum }} BYN
-
-
-
-
- -
-
-
-

Создание новой группы

-
- -
- -
- -
-
-
- -
- -
-
-
- -
- - -
-
-
-

Создание дисконтных карт

-
- - - -
-
-
- -
- -
-
-
- -
-
- -
- +
+ - -
-
- -
- -
-
-
- -
-
-
- -
-
-
- - -
-
- -
-
-
-

Создание нового гостя

-
- - +
+
+
+
+
+
+
+
+
{{clientLog.time}}
+

{{clientLog.action}} на сумму {{clientLog.value | curr}} BYN + пользователем {{clientLog.who}}

+
+
+
{{clientLog.time}}
+

{{clientLog.action}} в количестве {{clientLog.value}} шт

+
+
+
+
+
+
+

Действия отсутствуют

+
+
+
+
+
+
+
+
+
+ -
-
-
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
- -
-
-
- +
+
+
+
+
+
+
+

Заказы отсутствуют

+
+
+
+
+
+
+
+ Телефон: +

{{currentClient.info.phone}}

+
+
+
+
+ Адрес: +

{{currentClient.info.address}}

+
+
+
+
+ Email: +

{{currentClient.info.email}}

+
+
+
- +
+ +
+
+
+

Создание новой группы

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

Создание дисконтных карт

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

Создание нового гостя

+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+
+
diff --git a/web/views/loyalty/create.html b/web/views/loyalty/create.html new file mode 100644 index 0000000..bc8cc56 --- /dev/null +++ b/web/views/loyalty/create.html @@ -0,0 +1,32 @@ + \ No newline at end of file diff --git a/web/views/loyalty/edit.html b/web/views/loyalty/edit.html new file mode 100644 index 0000000..44f36b7 --- /dev/null +++ b/web/views/loyalty/edit.html @@ -0,0 +1,234 @@ + + + + + \ No newline at end of file diff --git a/web/views/loyalty/index.html b/web/views/loyalty/index.html new file mode 100644 index 0000000..bdddba9 --- /dev/null +++ b/web/views/loyalty/index.html @@ -0,0 +1,79 @@ +
+
+ +
+ +
+ +
+ +
+

+

+
+
+ +
+
+
+ + + + + + + + + + + + + + + +
НазваниеЗначениеУсловия
{{ discount.name }}{{ discount.value_type == 0 ? discount.value + '%' : discount.value + ' BYN' }}{{ discount.terms_count }}
+
+
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/web/views/loyalty/terms/selectclientitem.html b/web/views/loyalty/terms/selectclientitem.html new file mode 100644 index 0000000..352b704 --- /dev/null +++ b/web/views/loyalty/terms/selectclientitem.html @@ -0,0 +1,65 @@ + \ No newline at end of file diff --git a/web/views/loyalty/terms/selectmenuitem.html b/web/views/loyalty/terms/selectmenuitem.html new file mode 100644 index 0000000..d3c6048 --- /dev/null +++ b/web/views/loyalty/terms/selectmenuitem.html @@ -0,0 +1,82 @@ + \ No newline at end of file