From 74437d1928b2d938fe017f970ed00df52e8b041b Mon Sep 17 00:00:00 2001
From: SHEREEF PT
Date: Tue, 24 Oct 2017 10:05:42 +0530
Subject: [PATCH] [ADD]Initail Commit
---
project_subtask/__manifest__.py | 2 +-
project_subtask/__manifest__.py~ | 1 +
project_subtask/views/sub_task_type_view.xml | 4 +-
project_subtask/views/sub_task_type_view.xml~ | 84 ++++
vouchers_pos/__init__.py | 3 +
vouchers_pos/__manifest__.py | 46 +++
vouchers_pos/data/product_data.xml | 11 +
vouchers_pos/models/__init__.py | 24 ++
vouchers_pos/models/gift_voucher.py | 110 +++++
vouchers_pos/security/ir.model.access.csv | 7 +
vouchers_pos/static/description/banner.jpg | Bin 0 -> 128856 bytes
.../static/description/coupon-button-pos.png | Bin 0 -> 5794 bytes
.../static/description/coupon-form.png | Bin 0 -> 33166 bytes
.../static/description/coupon-menu-pos.png | Bin 0 -> 8200 bytes
.../static/description/coupon-verified.png | Bin 0 -> 21408 bytes
.../static/description/cybro_logo.png | Bin 0 -> 50824 bytes
vouchers_pos/static/description/history.png | Bin 0 -> 16875 bytes
vouchers_pos/static/description/icon.png | Bin 0 -> 34052 bytes
vouchers_pos/static/description/index.html | 154 +++++++
.../static/description/verify-coupon.png | Bin 0 -> 7010 bytes
.../static/description/voucher-form.png | Bin 0 -> 24873 bytes
vouchers_pos/static/src/css/pos.css | 23 ++
vouchers_pos/static/src/js/coupons.js | 390 ++++++++++++++++++
vouchers_pos/static/src/xml/coupons.xml | 95 +++++
vouchers_pos/views/applied_coupons.xml | 47 +++
vouchers_pos/views/gift_voucher.xml | 128 ++++++
vouchers_pos/views/pos_template.xml | 11 +
27 files changed, 1137 insertions(+), 3 deletions(-)
create mode 100644 project_subtask/views/sub_task_type_view.xml~
create mode 100644 vouchers_pos/__init__.py
create mode 100644 vouchers_pos/__manifest__.py
create mode 100644 vouchers_pos/data/product_data.xml
create mode 100644 vouchers_pos/models/__init__.py
create mode 100644 vouchers_pos/models/gift_voucher.py
create mode 100644 vouchers_pos/security/ir.model.access.csv
create mode 100644 vouchers_pos/static/description/banner.jpg
create mode 100644 vouchers_pos/static/description/coupon-button-pos.png
create mode 100644 vouchers_pos/static/description/coupon-form.png
create mode 100644 vouchers_pos/static/description/coupon-menu-pos.png
create mode 100644 vouchers_pos/static/description/coupon-verified.png
create mode 100644 vouchers_pos/static/description/cybro_logo.png
create mode 100644 vouchers_pos/static/description/history.png
create mode 100644 vouchers_pos/static/description/icon.png
create mode 100644 vouchers_pos/static/description/index.html
create mode 100644 vouchers_pos/static/description/verify-coupon.png
create mode 100644 vouchers_pos/static/description/voucher-form.png
create mode 100644 vouchers_pos/static/src/css/pos.css
create mode 100644 vouchers_pos/static/src/js/coupons.js
create mode 100644 vouchers_pos/static/src/xml/coupons.xml
create mode 100644 vouchers_pos/views/applied_coupons.xml
create mode 100644 vouchers_pos/views/gift_voucher.xml
create mode 100644 vouchers_pos/views/pos_template.xml
diff --git a/project_subtask/__manifest__.py b/project_subtask/__manifest__.py
index 346813b9d..675f72c6e 100644
--- a/project_subtask/__manifest__.py
+++ b/project_subtask/__manifest__.py
@@ -22,7 +22,7 @@
##############################################################################
{
'name': 'Sub Tasks in Project',
- 'version': '10.0.2.0.0',
+ 'version': '10.0.3.0.0',
'summary': """Implementation & Reports of Sub-Task in Project Module""",
'description': 'This module helps you to create sub task under a task',
'category': 'Project',
diff --git a/project_subtask/__manifest__.py~ b/project_subtask/__manifest__.py~
index 3e7d9b324..346813b9d 100644
--- a/project_subtask/__manifest__.py~
+++ b/project_subtask/__manifest__.py~
@@ -31,6 +31,7 @@
'website': "http://www.cybrosys.com",
'depends': ['base', 'project'],
'data': [
+ 'security/ir.model.access.csv',
'views/project_view.xml',
'views/task_view.xml',
'views/sub_task.xml',
diff --git a/project_subtask/views/sub_task_type_view.xml b/project_subtask/views/sub_task_type_view.xml
index 582a23c90..8afd458b1 100644
--- a/project_subtask/views/sub_task_type_view.xml
+++ b/project_subtask/views/sub_task_type_view.xml
@@ -78,7 +78,7 @@
-
+
-
\ No newline at end of file
+
diff --git a/project_subtask/views/sub_task_type_view.xml~ b/project_subtask/views/sub_task_type_view.xml~
new file mode 100644
index 000000000..582a23c90
--- /dev/null
+++ b/project_subtask/views/sub_task_type_view.xml~
@@ -0,0 +1,84 @@
+
+
+
+
+ project.sub_task.type.form
+ project.sub_task.type
+
+
+
+
+
+
+ project.sub_task.type.tree
+ project.sub_task.type
+
+
+
+
+
+
+
+
+
+
+
+ Stages
+ project.sub_task.type
+ form
+
+
+
+ Click to add a stage in the task pipeline.
+
+ Define the steps that will be used in the project from the
+ creation of the task, up to the closing of the task or issue.
+ You will use these stages in order to track the progress in
+ solving a task or an issue.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vouchers_pos/__init__.py b/vouchers_pos/__init__.py
new file mode 100644
index 000000000..c7b5ac7e1
--- /dev/null
+++ b/vouchers_pos/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+import models
diff --git a/vouchers_pos/__manifest__.py b/vouchers_pos/__manifest__.py
new file mode 100644
index 000000000..095867cd2
--- /dev/null
+++ b/vouchers_pos/__manifest__.py
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+# Copyright (C) 2017-TODAY Cybrosys Technologies().
+# Author: Linto C T()
+# you can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# It is forbidden to publish, distribute, sublicense, or sell copies
+# of the Software or modified copies of the Software.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
+# If not, see .
+#
+##############################################################################
+{
+ 'name': 'Coupons & Vouchers in Point of Sale',
+ 'version': '10.0.1.0',
+ 'category': 'Point of Sale',
+ 'summary': 'Manage Point of Sale Coupon Codes & Its Redeem Operations',
+ 'author': 'Cybrosys Techno Solutions',
+ 'website': "https://www.cybrosys.com",
+ 'company': 'Cybrosys Techno Solutions',
+ 'depends': ['point_of_sale'],
+ 'data': [
+ 'data/product_data.xml',
+ 'views/gift_voucher.xml',
+ 'views/applied_coupons.xml',
+ 'views/pos_template.xml',
+ 'security/ir.model.access.csv',
+ ],
+ 'qweb': [
+ 'static/src/xml/*.xml'],
+ 'images': ['static/description/banner.jpg'],
+ 'license': 'AGPL-3',
+ 'installable': True,
+ 'application': False,
+ 'auto_install': False,
+}
diff --git a/vouchers_pos/data/product_data.xml b/vouchers_pos/data/product_data.xml
new file mode 100644
index 000000000..0431a5e1d
--- /dev/null
+++ b/vouchers_pos/data/product_data.xml
@@ -0,0 +1,11 @@
+
+
+
+ Gift-Coupon
+ Gift-Coupon
+ True
+ service
+
+
+
+
\ No newline at end of file
diff --git a/vouchers_pos/models/__init__.py b/vouchers_pos/models/__init__.py
new file mode 100644
index 000000000..913f90ebd
--- /dev/null
+++ b/vouchers_pos/models/__init__.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+# Copyright (C) 2017-TODAY Cybrosys Technologies().
+# Author: LINTO C T()
+# you can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# It is forbidden to publish, distribute, sublicense, or sell copies
+# of the Software or modified copies of the Software.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
+# If not, see .
+#
+##############################################################################
+
+import gift_voucher
diff --git a/vouchers_pos/models/gift_voucher.py b/vouchers_pos/models/gift_voucher.py
new file mode 100644
index 000000000..cd5871d06
--- /dev/null
+++ b/vouchers_pos/models/gift_voucher.py
@@ -0,0 +1,110 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+# Copyright (C) 2017-TODAY Cybrosys Technologies().
+# Author: LINTO C T()
+# you can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# It is forbidden to publish, distribute, sublicense, or sell copies
+# of the Software or modified copies of the Software.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
+# If not, see .
+#
+##############################################################################
+import string
+import random
+from odoo import models, fields, api, _
+from odoo.exceptions import UserError
+
+
+class GiftVoucherPos(models.Model):
+ _name = 'gift.voucher.pos'
+
+ name = fields.Char(string="Name", required=True)
+ voucher_type = fields.Selection(
+ selection=[
+ ('product', 'Product'),
+ ('category', 'POS Category'),
+ ('all', 'All Products'),
+ ], string="Applicable on ", default='product'
+ )
+ product_id = fields.Many2one('product.product', string="Product")
+ product_categ = fields.Many2one('pos.category', string="Product Category")
+ min_value = fields.Integer(string="Minimum Voucher Value", required=True)
+ max_value = fields.Integer(string="Maximum Voucher Value", required=True)
+ expiry_date = fields.Date(string="Expiry Date", required=True)
+
+
+class GiftCouponPos(models.Model):
+ _name = 'gift.coupon.pos'
+
+ def get_code(self):
+ size = 7
+ chars = string.ascii_uppercase + string.digits
+ return ''.join(random.choice(chars) for _ in range(size))
+
+ _sql_constraints = [
+ ('name_uniq', 'unique (code)', "Code already exists !"),
+ ]
+
+ name = fields.Char(string="Name", required=True)
+ code = fields.Char(string="Code", default=get_code)
+ voucher = fields.Many2one('gift.voucher.pos', string="Voucher", required=True)
+ start_date = fields.Date(string="Start Date")
+ end_date = fields.Date(string="End Date")
+ partner_id = fields.Many2one('res.partner', string="Limit to a Single Partner")
+ limit = fields.Integer(string="Total Available For Each User", default=1)
+ total_avail = fields.Integer(string="Total Available", default=1)
+
+ voucher_val = fields.Float(string="Voucher Value")
+ type = fields.Selection([
+ ('fixed', 'Fixed Amount'),
+ ('percentage', 'Percentage'),
+ ], store=True, default='fixed')
+
+ @api.onchange('voucher_val')
+ def check_val(self):
+ if self.voucher_val > self.voucher.max_value or self.voucher_val < self.voucher.min_value:
+ raise UserError(_("Please check the voucher value"))
+
+
+class CouponPartnerPos(models.Model):
+ _name = 'partner.coupon.pos'
+
+ partner_id = fields.Many2one('res.partner', string="Partner")
+ coupon_pos = fields.Char(string="Coupon Applied")
+ number_pos = fields.Integer(string="Number of Times Used")
+
+ def update_history(self, vals):
+ if vals:
+ h_obj = self.env['partner.coupon.pos']
+ history = h_obj.search([('coupon_pos', '=', vals['coupon_pos']),
+ ('partner_id', '=', vals['partner_id'])], limit=1)
+ coupon = self.env['gift.coupon.pos'].search([('code', '=', vals['coupon_pos'])], limit=1)
+ if history:
+ history.number_pos += 1
+ coupon.total_avail -= 1
+ else:
+ coupon.total_avail -= 1
+ rec = {
+ 'partner_id': vals['partner_id'],
+ 'number_pos': 1,
+ 'coupon_pos': vals['coupon_pos']
+ }
+ h_obj.create(rec)
+ return True
+
+
+class PartnerExtendedPos(models.Model):
+ _inherit = 'res.partner'
+
+ applied_coupon_pos = fields.One2many('partner.coupon.pos', 'partner_id', string="Coupons Applied From POS")
diff --git a/vouchers_pos/security/ir.model.access.csv b/vouchers_pos/security/ir.model.access.csv
new file mode 100644
index 000000000..be5525444
--- /dev/null
+++ b/vouchers_pos/security/ir.model.access.csv
@@ -0,0 +1,7 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+voucher_mgr,access_voucher_mgr,vouchers_pos.model_gift_voucher_pos,point_of_sale.group_pos_manager,1,1,1,1
+coupon_mgr,access_coupon_mgr,vouchers_pos.model_gift_coupon_pos,point_of_sale.group_pos_manager,1,1,1,1
+partner_coupon_mgr,access_partner_coupon_mgr,vouchers_pos.model_partner_coupon_pos,point_of_sale.group_pos_manager,1,1,1,1
+voucher_usr,access_voucher_usr,vouchers_pos.model_gift_voucher_pos,point_of_sale.group_pos_user,1,0,0,0
+coupon_usr,access_coupon_usr,vouchers_pos.model_gift_coupon_pos,point_of_sale.group_pos_user,1,0,0,0
+partner_coupon_usr,access_partner_coupon_usr,vouchers_pos.model_partner_coupon_pos,point_of_sale.group_pos_user,1,0,0,0
diff --git a/vouchers_pos/static/description/banner.jpg b/vouchers_pos/static/description/banner.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..384d5d6c6e642ff6572d0ba569008f3e691f8cbf
GIT binary patch
literal 128856
zcmeFa2|Sfs_c;C>V?>gv$q-7Z!fY
zv&h|HBK!*Txm98ve)Zg21Ve!t)U`~ChrKIeJ%UVB=5?X}n5d#&|6crSTxXIwW8
za%Vu0wKb#-LC`cv95xFQ1|b;ugJ5$ZQ9&4jD6n~xVGr2iuX%((9wY?rkUIGJ!BB#*
zJP03+aEC;`mc0m`m5}7?%J`G_lGg=E33}m5vW8&1ZfJ%e2GMr%^YQAT
zy^z$jY11U8Nl8dZ$xfG?E~_9TB_*RUTTV_vPHwiWl;HaM7?1q<4wIffU3!M}%o#Ig
z%FmcFL!N(|AwOP3_E#$4-G*eRL2IGY!Z3A6NERk63*$9_PD=9b!wdnIqA)D$MkJ)bF3bZqneM
zgE65?!yId^_jt$YSG{Z$zkH&TIk36%VJ5$A`^i3>?6bL@vbraEhv-6sq8CNYYm#`-
zK6f5e>b0?^y7bfG#`FT00jgf`Q+aH#9R
zBTjL`*fKZ|x?9QlP_@2$y?@7Z?A}2h
zbe0}BVx2id^f1@3{YHJ!y^tKv85iZbqqm|y?WZR+A8Ge~OwGNu)59&*1?k~gkV&22
zvZ0L!-3e)5vG?#y=?xc3mqg0Vp%eBW^leI}s}9eI7yt5jPVkMFrESGI&2^6pjC^-A
zuDhF)?{@ClSnH1AE^Y5a?uv$$C<|n+aoDA?$Di8QpbM{6cUqs7@5jv#JAtnlA%z**
zjL9&2IS)5K3|}&5Q{s6ZH1o~@*^;i3J&`!mSRQ1_D^smH=(W8lgFqO<=Cm*KPizl*
zRpXu3F|Qz{E%ap->wN2*{?!K$p1MAudae3#`t5XNJ|g{0mZ4`_eCV+!F6O-kDMg%7
zm42)C>diQ%&3B(XzU&ZXm(jlrE#2Tyg=cf%U8d>c;%AzFKYVrg>Tw6Jq6-yPxemu#
zW7{@#$mVu_c|Py+?4D-Ma;KDmL~&O0lConrmB-fIbA6qlB*U#RI8!l`#
zDgzJ4MtIUH4)!p+roZGt<+u_~os3;yQGesLVfl~)TQ70-zts9Xx_WCx;5_{G?vm^0
zyGIu4Uc`6uAX-3;lTGh+xKn@TuDG(ST!UAkA&2^1I<8f(vAg<+YumX!wRW=tmIvWo
zzi1bkkHuV1sBCDjtTuryv-qtXXvb?r^EP<C1W0v9!uO|HkBNZ|Bv>W~$Ux
zc;s?jS^I(&w@4is4b3V{8+ezOchx&@boKjTW2
zrF&*>VNGRmg+p?B_|vm1M;zCTrZjPL5_yo3&3P_6wQZBZlcn^kbx}u^4=@-@{Z6zv
z*j$Qv`tC_mXs*va20W*xz1Dkk$_E~F(t3YIo_>T>L0ni&d*JWcN5b4TeV{c&TV2it
zv_2HNwU(3(Y|gt@%Vt7vrc+-P7cPd9X&rRtvI*B
zlS6N&G1KcBZMu>!^u^m)yIF7}VjaCR-0U8UG!dW0I@R9ux|Fkt2e}tEFw>nz^<5PA
zeN2|2HQ;26
z3$JDzu(2&nsC9UGlwG{}Nn^WSZsV|W&G7nxn$Utx1Is(BULH9e(wV1el634vuWu}W
z5pcOD)6Tttr9@K!R=u#ZT{Z=es9MfY(%b+|&Q{Sivj=c!)_
zFLu}zS5SOmy_YYn+uI5<%`?YjF0j8_V3dT%
z5Prz0YSmS*lOm3^f5_^~tsY#_t-E|8n&={XQyt=bP6Jc#~u^Q*$`ZO3z4!`yB^ete^u)|hl~
zWZAX^!f;j4jt;YGWRcOSV%^h~J7JeE99|uJT+9!B=|+?sul%7ifwO+NdImh`*iC7M
zzDog4FRgLj{wuFrujRMhbkoc@GNU^c`moZ#r)0Ee_yG^{+rWdo9C*+X8y>V`$5jhM
z4_dC#@Z4)roy%x3ZR2^_RK!>PWaH)^bd}toj1svsB>Qhx_G*W
zwuf>hGsjq9y!TSAGdY%&VLJTq81r2Q(RPWfYV^ObwDNAGvuhD)i0BVdQlcPZRf@D99W
z9m2u4he7cphkT9h+&(jTMZ#sl2CFCr)y}KkY;Yw#=o=#@9K|y>KeRW?3cdi`L
zC(Ika?ofND!VR$}raqhwEGD{7)xs^Ct6SlCk$QY{4ffFPu1gstQlP5Mh>Jne=W=Hr
z#H)B{DOaYlBt+wZbBgQUvl9_*Cke9{t>hK9eddw&nX?XQ+L#2L{}3ggx^dxLi&MXS
zvI1pnZ>+*Z>&w1N0NKv_9(CvM-I9kj9%xvo9V&6vOtp7){^0sq3ozc@Yk>1}mOj~a
zZ@52Ue}tKaZ+hsq4!TiGjSy+>oP1_-KzH3GhyGr@>IA9Pj^0Q`TD;tu?bk0vvBL5>
zO@?M?2=D7ZZMBMjLVMA8YjfGc;@pnnU{>OQ7cw^?>|)p3BGbE3U#yb`T8A--{Y@A3
zG?Zjq=U-J{QyTbT=D_>W$i{qnr(yAdTFo0d+|W|&a1!l-uuoUY;)tzyui6h`7~Ror
zXim4N>p*W&U*zUj`8$@3WV$w}db#pyd0na|-wuvw9Rx%$wzL-EA2%Ub)_j;VBs_1S
z`PB12oDM*3z}FlI#%>{h?4X%DU$o@BY&z4@rK&M=U|RYtL7JW*?L9vo{P+iO2%7He
z=kCL{@n`$`vq6-vrGVD5*me{q(@T)U(uYl_`}lkF6Zm2NljP;ckIM+k+PMeua~Qj`
z`DOUY<8{*g){wpF_NMFY0cgCj@d9i8m`sKpo$c>yL-C-3L@98t_Jf$NQ&a`?!|WZ5mX7%B?P%i)*GzGsj-}2g%BLvzV&$4
zcRjZ8WxF$dSRh@ApOfUv_L=Ae=p@B&GGgn-vYw2P{Cr5?B0lVIk<}D0)?~^WH+H~e
z#MIl%WHJKi_^oPVs;ApmLX1-hvNbm*0c`l%BgmGfrbc7>Q&uwH@S}pu+|TDPFk`R3
z<}>!A**o~K%`|Mi_+vYH8GF&xegwB=d9elXwLxAhZ6~u!2GFT&rk@F!P3HGNfaF@Y
zwX6xQ;D`B{!IO_Rw3^NsujWt9+5_d(kD9fkdX2-^`cYSI;MX9yW>Wo_zD`@|U~mD4
zy8F0IkZ%S*!4}|T%w)5f-d;=}x35K{CQ|q)d4C5`q%Ioxyz~4^{x-
z&xfxNL7iVf9OBQnajgG*7yiIc{xftu{_ms-Xu+?VFTO+sF}@gs1PW9^;2+-vr4WLA
z3ga5MKi$XW0KdolKJ$6kRZwP{0HOfy04B6@{0Eecyg{|EqoxA!FTq+UC^45G6&e6H
ze%WvG1oH9s;)^~0be%>av*_Q6JyFO3VgY&P2hu?M6sErqjrFI=PGuuOnxGy244Gs@
z0Q?ghL&lTrKCYUzo#bX=FnW*}%gdcgXE}PU=FdmiAKDQWqyg|O@DmqAEKR;^OWe(m
z>F@gokQmd?-OYVc)SBAyYqt@=KpoO#e>T&c?nCz@v*|Pdfb4^PCsqo{@yvV(KgH79
zO$|K$yZbNf@8|W0^+qr>e}q`G-2S*GiIKh7_GGs|fV3w!I;6H;&5
z1o#h`CAKpCLX5oJ-6kj{Gv0ZN2{7onIE~IA`wOJ7L;&57{e$d|6W~8)pH6WjF};|6
z-w{`KynbWz$plaYTEq0=(^`Vf^aZOqi~hZslk@`e@Gnp)ia>t;1wI`N@zy_O7tDag
z{C2=<4W@zNM?rXecJa*=0uB~R7UbjSfTR<^jX&Q`gWp;Zd;>x8AP9^Av%x%@Qu)De@f{;rSzXt`cEnSrf@s$fo{~(7NL;`ryOB55Z0jSHL^_GCXdIvbdw_@)KEzLYPGAZs?8^as7EpUl^B3QRJ5
zQ_EM)sX#*U%`xA{`6iq1=e;esmvdu!%c+E8Wk?%MEC5*;~E8
zwjlE-FsOY(TR8g%rM-cYdQy4F*XPNc;g^8m-ax4cp5JIF@>TQA@0d8yU$THLZBnHy
zD4EPJ2u<^5VFJNZNT3}Yr+>~@3xpuUpKjy2`9A@_M)`X3@f!Y^4ufbZN1)kxI)8b>
zpaj!0LCT+><0&f}Jq0mL`G7&mY4$tGBA(*V$opN%q$uc6nqrL&m+epI??
z06Nf52{{u|F0E*#(7t^+faPew2K)~*
z)2Mn3frQgnclRc{(RDq1>2B(3ljEQ#5MZEXfFAmLxFv}M4EcNssjtogMsPJtQxXnI
z#Nps59i#wXYim7A9~PVJL#11q=&OUy>bSep^e_w>9mT*A;0!z-52s-;L^u%zq8J2)
zK*3W`G%RDhzo5Jclj_gsA%6Ms=|p2vK^@=FV=yon8Xk{>Q!o@79Eqgk;RGTT4`-n8
zbTo}dA)+X_32esAVPvoGYvp4_12v*i#sm{nV>AwfK$+r^NMiyKL&Bg)BqIb0VP=fr
z&zWzn^36@F$-zL1ew~cQWVf#&FZb_=C&k@@5w4C!LR=3C3OEmYkV<44W{@pS-~v6eEXXw{*sMfuP$E}jCV-)Z@T;qJV8q%
zFv={z`#&Ox0giw*CgO2KBV$u65k)e_8JXftNXAG4){J0gf+CJL>E%AzDT5ymHUjVs
zl|rS!DLAxXuyJrQih+ld(I^TPML|#i`~7lV3={#2!V%#J8iT=S92}fT1S~|Pfd>@>
zcnFXB)w)3QC?t}G0IWwwg1YcTIE9KPz=;?Xjf^8As00G?SL?zMa108WK!6jFMDjRZ
z6b6L>XW(#T3;}~<&`|hatqY4L5>aS8nO_(F->r*CAW-NuupVJ)l&|!nV=-_76-g)4
zs5k_MK>1a?a0n_6ydFbifh!IG(P8dy6g`bg(jO(6mf!5|2TUmiy)nnu82i8MZc
zP0$O6W55YyJc>?6Qt@a8_E+fz(86PBR3ep?nVf3ve$qY#ZXqys{#y=1-6a7RIDP$A@
ziGgD%XbPNw#!%q|24HL)85E`zh@%I=bO-LkD3=WGx83WN|iZ#L^P)10E5xCGq
zAdY`l(u_bNfwlZQj0pr&9Lbnuf0n2J
zXMok4j3wjHf8XvuTKRuc(%969XpA?VTzei{ZWn-~V1f*_FL
z6f~8Lrc;qfAYcBzzgRkkNCyqTi8w3~j%I+J8-)nyjKh*KC?XYs$6}~|UmEPJ2!IL5
za0ZQr0z84i!YN>A;B+*OK%l@B8-WSTai%7K&ICMv77AuPptUgqgCP-2P-doP
zKM;QtCGi9#0*$4BGZt8k;b6%EG8hZcAR{q28iIi%qkl#*JdhN|NE{xC{nqZU%?3Ql
z7(p^7kS4hU$f;lBXS^B77>IWi67|o{1cEV;Wk5=q63y^@sY)QCktEQpsVNa_gf{w#
zydZ+c7zjEAj-z2va1@@uE2n^c3
zz!`L~3jhl^8csw4`2+TER5Bh5_MUX|-*Y9Hu*N6?frvBuXV(OhkqHTiMcnrsNixOZ
zQAQXeJn?572?R6V2w_b6eogo_o-)B3qfi7hfa^ETAc2{I!Xfb{DAS)vS2H}?1d9Vw
z!uVTBBAS50qwr|JqCXj1u-xE@Xdq{RJm;TIL5NJC(%?7>1%V=flN*Kl6Z%rnC?uYN
z0($}+0&IwpVD^DQ0Xr-@4T(d6oh}jklhSk~fq=jx32-cdN`|8-e0fC!(hi*XC_1T7Z=!yDa{18_1+X4CURt>Gk1WAoj~#aOZIcHOHGvXAk4)veoP(nn|6ot2sec8#
z|KM2rkCu^%vVp)!`ll!T@s?Rk20IWa3XR;r@%IPH1UuZfZw9D;cN+X7-Yjy!}fB
z8R1R9x^9XdKlU0S@up^Yyoo6Zfil4pz=?mn!are+7bqQYdRY8~(&1mg`fJtHtz;iJ
zI?%7_{u});L!(h7upJW!zaMPve%ucv#vXiW0ge72>j#zT!}lotHYPw9473A4dCbyR
zXZSI_)yTfSz;hR^8p_G@wi=tM_MM*QZwH=6_XCRXNrwHtnMoYf{wo{&
zhn!}H`Cl
z1fV>iV2NNgBK}~S{#eKPYvSh5A6J>E{#QiKM$9`2d{KKjG
zYZ}_WEDZkxBPCei$Jc4yKQH0qag%YuXU3PM0!_Z&j~44+{oNgedWj`dd-
zdw$vRmoolEjq{`~_B%VxgnAYjfB3;ktCPWmb!h52MS&>_Oi^Hp0#g*2qQL({6!_-1
zLiYiO=|JF>!h0vR9+>G}*V@{cS*|t}IFCwMtakTd3IV?$Z}46_-)_HtgR`3WbMRKL
z1n}|!Z?}@EEMIFoGkdB^*_Y-`t>)-=&uKrjvn3nF#+q
zNKH1Kx)p>GAS~r)Z%YE<6~HA*%I&)_<-0H&80tY@h{W^_7QBe5wwSs^4HypzY8LcB
zFW|2RUkjXx$bK~7>f`N8_6dfd@jmlQL9_niI3WO!-+r3-UA~_M`C~ht-n&jPW-!I4
z-(cTLeuFWA7Z?G&w=R6-8;o)sf^zpk(CoTzFwN7z4|y*H<&=KcA4NXDeCLSdPN(Yd
z2|9WG!wi!-|32_tdpi8~CY?^yOvc~aRpWCt6}*S*@23Ww?WlA$_@9~hUoQ9^THoQZ
z4D9vke5XFTnj_#c;G+nJ+lS`P*W&PGLSqp2U3AFpv4dzIFsX{<a0fSrM*!mhw>!tTHx
z!OCE@u(z-_*k{|sSA%c*Rkd=_V&?X@_p>0ATLVJY{3mp?m7RnIH
z5xOJvM5s#WjZlYBKlp~~bYVr|1;TJ)f-p(gM%Y=HA?zo-LpV}6UN~7eQ#en!M7Tou
zjc}*%kcgOwoQRqTTx7Y3g@}U)Rb-pU4v~W*Cqyoa@`2PHr>jpVPG2|OefrMn$EIJN{&4!+=|fVpq_m|-QX8fGr4CD_NZppImFkt2mR=;i
zQrcOXEqz!zRr;RvYw0gDDIcGkUF
zO>)9=8ge8#s@xvAb8-*l-ph;0Ysp*6d&nP~?MPbE7
zik6CAicyMJ6{{78m6Vl?l;}$Pl`@sel?G?eo4s;2eRkyRtl3qwhv%rxF`eT%Cwflq
zoQAm~bG7HLn;SUy)Z7PiJLk#ITRx9EFLK`1d3E!J=4;QlogX^??EI(m`;}Fc&6RzX
zk1O9(?o?4!S*hZoa#W>IrA<{%)j-u<^{8r*YP*_(nvt59+A+2JY9ANOUtqDof5Djr
z&lilSYpFY^?^e%JZ_tp`AZRc&j%wW1_^7F>X|1_kGhMT8p~OPM!mSGv7M3g=T%@(g
zX;H+Y+(jR>W@}k$g=nQ~y;>~2*l_W-#mS2+mxwJPEb&}&a>)yAA#JSoR_#RX(xpO6
zaZBBoo?KeCOmrD>na{H1Wi@aqxDh-6o(_Mjqo}i5XSYtSPPeY6uCs2mZi(&~0*mlM
zoI}(jXCYT1cO&zVpHbQ3GiIzs2p*iRq=ueoXz@&c)^AanEwZ=wZ?_#+)JkAf7
ziEG1a;)L}Ma{c#Alshtp&0UDfMZ4qxuMJZ<@h6z~noW1wcR#o)BT8^Z;LWW!{`cPlkk(pFwr*=n@J$ipbZsM{D}>}P!4c#xz=
z3M1V%5jHV5i8Og`I?L3-^n~eaGj%gJvvjkM=2-Jk^V=4p7FHI~7B!a2mQ>4B%a5z@
ztHM^@x0155vpQk*ZngGmztwrxLe{ISW36AUS-8e$O|A`OV`&p>)38=+?Y6b~>%`Wr
zU6;77#TIG1-L}L|&d${?&2GTn*gnd>-eIwWzr$Te8OM!|sg8qACQdO(;i_aBKY5PIr>~
z3HMJP79L3+gPt~?DV{tpC$B8;Y2I7BZ~Dyg@$|XRRAB}&%Y2vmhWozRrnfC_+ebeu
zzY8oFYZL1RTOMqtp87BL-{=1}z#t$o;7g!mV0MsfkWbLlVC~@j!L1=?A?HIyLaCv5
zw=dYfYx~|h
z%=e{-&j|MmuZdV5k@TC$Z|=W6-;dsZeE(P^E%NaJ#DVw&qX(%6A0I*}fLNYcILH(*M7e)cRex(mJ^)wF?Vb3n;RQ$l-*o)^KRbq
zyzBWo`6;&++)6A^D2OVQEZkejD+(#+h|I1M~`uraP!8j#$NHf!Ao4;=X@`~9bn`TQ&@^z9O!yuK^I|H!q_WWuio
zc>K?P!)^%s3d6v6vcG-y+XsC18*FPKF`@5YU=yDvCMqH!ED1h;4nF%0i3x-DL8kEw
zBngWPO@m25lGA5GLNHD)p~1(+x;mf*~Fd&Y^&zf#SV^6bFbblfA^WThaJ0@
zem47FMbi=jqt{=XsAplh3T)Qgwz_)+1O^3%>1B%z7Q=pxCie)o_h09ZQGEx-YRF0kjN8hd5`PbhyVCx@yx7X;TqGt!6N_e
zf}V!ZtkA*D9k01HQ-FV(9)+%7Y?Qe1Np3voU1pCfcSKpMQ}ub{=T+eQ$EWu3pu?7x
z@Sc>>G?zf`GAa*B$1D4+>(=Rz|BoOw@5K}&{8zF4|87Pon_`41MgWTduY8ITrWk?G
z2o+O|FvSRbMyQ-(gegYgGeXrABTO*@pAo937-5PL_>539#RyZ3z-NRhJ;HyP`fN&%
zFr|zXFw_5TMwrqgOi2X(M4r+k{MT7l{ufAu*mwcuJj{E|i%(k_2FG3xE?VdoaUCDHJ059cTk
z;=x6HAiZ<({fV!8io17l>YF#tk;{O
zZUsEQR~K|$`pB!$eBz<{m(Ip_4sLrA{n*~Ne1D6!$+mD^4d2tJ^t1KvD_+6WpqFi%
zvG6zHfl~(u4kZM(O#c#4aKQ7%tyky1P{MK1rKyrTPspHG!D3c^h<-L&Qie0b&4VJZh!2lwuBdr(`bBpc$FSFbSxQ4mqmqOFK>fCI
z^J7M%2X-48TmkgH%F$ttJXw>)gHmgI#;%6e^k*j+e&|x_1^|Vu#`j_kTplX{PV>y1UT;=33PD@AQNBqcp9<;aKmm3Yzo)_?-
z8IMM97WKgOipEmhiiRKcG*&;~2>wCzHP_P7hR`uF9<;saW1^4hRm0(0F!HsA33%@N
z6eqwgor64RgZ{{H?USUwfCEE3C^3t3yRj!>OwRk>fH@Cx(Hk6HuJyTv2i>~X&VzI+y0q=@;4fc#1l~=%Sk!z(
z9OQN(`tqPB&iu01c66(J*=adY?|XU(;AYgv(yPePE4dl)%;0l-7!SG@I?vO-C~`&j
zv(hHkm%fYBGW+7t)HE%5|FWgKKUyWzic-z96Fu`?9`3D9kkB-LW}z_@Jeqd^-|f;e
z!?7qV{W#7gQTc)CYF2UCb;IApgl&@+DcCiKY-k4mRrt3izu7!!K}637j}N0~{AU-o
zpR!o7%MuppSx|%
zA>dR)hVG^@qy62=*O#r&ds*XJS0b6Gv?6rSsj5U-HS~Hpn;2MxxQ+6J<+-;XWMnwi*jb+^H(oVgxwo8
zXO&3Uyz6sum54qcp)7L#Ot`z-QQhc0(ke&qUYmQX)cH*4pp9U>LmTr3HxG6fOfmo;
zuxYoE$gF8X%$MFDfli
z$0yS(oE&nGWgUCZ!Rztk;fRwj*JCRy{2%rS)lCWl$#
zL2b5+kL-1szr9ttrHS3pO-8An+x1v|h$@=eZj*Fgd{fFuR_KQ8(6Fvk4{nyY&1uy?%+mXX(fWwPyz{JNDJv**TES%ymZ$DI6O-zSN&rRa%Miy?Wt-VmwACB?ht
zvj)Ydp>$WBeoA(Hn$4T~v+j(mYpH4U)H7})%y(Z5^RaBK-uBB+ly@!utnnMsGw4R`
zpj9xH^=7%K|7ZH5-}TLBZqM6SFf>p^8zj|t_4*WDiyC}z{Z_2AjZx;3Xe(&m;r*Bo
z(LtyapCrx8;p-7n=TMiWGNkW_Y@BH>BHN>>_m(I!OGYLC&!Z*4cuIx+A3JRwi$0zy
z9SJRYVmPwFzjSQ)Qe4lbWe46U+a?wH@A$d1+AEDQ*-zk~ZtM1n^PriGM_@DdW#nVq
z@h`d#jlE*{g!e^{f|AW*ESC@FXdEU~=I0lVKG#lG-~F_+_%_ThtV!kL(){i%+lKcW
zHkD+KjZp4{U2k4Q5ju3@`8gg`x*}|GNbVcX)6BN>do-#!b3-H86pvM3SiW8v55y$)
zBw2ChKCXE2uJ3ZQs;)+KNiIAM8PhUs^U
ziau+}g9tCOd63S*Sk6Ko)Z%z8{Msn3boTC!PdZ&4E$O+{clQTwNQaNj)$J@9KK}Gt
z)yS39vEzn!(od_6REA2?KNe+uZ14Z*!{$K+L71^Hg&B=syg#R(ev1ve2S{-}KoNsn
zcj8&+Xx^5MyN!^oscr4ZS?~v$i`2&+XW_i7Z#(ufA`<(UT+4_G`X|%c381^D^w8m6izy>6cZSWenz4@u}pfyEr
zl@*vtpG{sHw#K^-=QM=bUupcrJi~)7>M@7QPklbWLw3Nw_ln^_FXw{c+jh5tzM4r{
z!e3eW(#Cbl!0>-`_catG{RxIj$RaBgd+k6&(WK7QCRJ&ClOC{}64UdO)4Wds3T*@UEwIu$Q
zv(#$q>BFyu-+O;X&9kt?AmyMLeAT^+w9*YDMFm-I^(S7p{yp+}3y;uO&*EG#tA9@MLTyfBuX
z{_041ch7<472?-g(kxn@ycv;^zJX@T@9XT>l5ooTh>820#%gkY7~JI4`jVl`@;8rxAM9ABhGtcYMTy4rTn%q`snsPd~NkzWr@$?
z=L$FVFT!UJAK3OTx5w2dNUNmA&cQb2Ra1u|cJ+nYh9Jpi_ieS#NS)(tDaM%xm8GKf
zmRsQF?Thc(n(G)N0k0Qt-d?rqjrlRdHyx6}Phy6$>ka5h2}AM4R{HI)!fj{F@vL2j
z(wQ?i&e3kIk=Vg$@{dLz7DY2{2MeeB2BbWgucDNie>X<*>A4Zr*_YpiG+u4p>tqwBNwt%=^ti6boO(@;5EnvpWF
zv?uiG?@7V*CxuN7Pj33fDj50pho-N)jmx<9Ne8RpxKexF{!Z`3fjV`s=HY!?aq%7Z
zXaNH)^&6Z=Ro>j8x6#i$Cil+HJHGhy?Dk>Hs)Z@(XVdmYm+f2-al>)_xp4Dv`=#13
z(+FyZ)%vUIr;otPA6NL*XU2q1|E=1h*?5lfd@)DI*$Z}ws2tJynTBfF!|
z7`=0rl%Lo$?_kNg61X*;?qITOovfwi$l&I;H7}S$D9&BB-e8jf-gA4*P*LvXlX0JQ
zwtmP?G*9(gVwKqOIzBp1J5}qMtzPNj*C(S^)md3;#m+l$L{{h->e8yvbEQiNo0YxC
z|B3T@*lj2bQr)TFb0MT^Wat@(kT!ND{gvUYvBll4*Bevk-zaSCx&^mDcNSqnJa7h&
zGWY!!;eYH@tyHA)`ZwDVvJRKpnr5(C#jc~gm)l>v@m6yWkfEkFpF)y!gjeWE3~m_7
zy7yFeLuhO_HvH1DBLj|pQZ{Rp{+^+4R6%Zd1x&J*Q-u*({f#p}0J+)jk_V%;YEX!1Vb~~Y5(;|80m5UH~w-)>l
z-ks2G;fVG69qIiX*N>-cV&-&T8;Uk0Rlau{d$)a8-OYB#dsgTZ+F{(Q+Z6KCVTmdG
zk3A6G_+^EUS-5fJ+-)lsJo6_cU4HOW
z+%7-X!GMmDCi;zo9l|&2pLa+_$KKziVXBs?WM%hGpQ+outs^?jy@v-$62F8+)Gfc4
zWkB}Iu*b*_U|omxyN-Q0E&ISBf7`K^^t$C~>_|j%Hhg#Tsqi#Maz>e*@2206ab9_!
zTyUZ>XxCy*J0XNL~l^S`N6y|f=kKV-45e)WsUqyq(?a&L8C@|@G}iqgtbjSzY&3R~b5~Eh(Xe^{El%mO
zqJHnZ;Z$nTyG9ZZTFY+iKd=9O)u={iM=OQXb%6)1=G?0+4Q9@OQZ7p?O0XwTiRDXr+t?bejnHrI^DF-nzPnI22a4=eC9l_U$
z94h*ll+}DP@{9N7%ZBj6Rb7!DrEvujdkzd3(6H>Z!{
z)@)gE?4@hxk#ueuhke2ltE>^>VjSAIy6>oW?=_|Er0NvkcRZ*lyKB|S&xzI^XT4t5
z$=?jwD3TxUyl~O_ZQjQ-R&9Ono4)K!6?S%`P2ON>)^VGsE5)A}#;%+$(>GYp=~>>R
zXEVa;nH`ukwA6>wTc$M{)ZZu56~SG;!-xl+$0l*lmXt9ETwZkW-;rtun&Mb*Q6KZ6
z`0Y;NyJ+rP8uH@{sk5oc2b62_3-fONp4ArBrRHndlo%@a*&~~!Q>k<~$MA@m)>28hHX0hJ0B6*P9#=Gf5?HXChHMjP6M4Yt8_meK$
zIpI`cxXNI;_#y_jkMsuHOg@|L~}S98g_(mmaw2?Ni5_hhr7?-d$T7`?%TTcOl19
zk>MvS=kHt-X8_(rtgIPQ+5YBL(o@x;YaC?Oks84hS|7?b#FZAs6|!n-dA4s
z+vi)!NkUgl*SX3)ipgA@cC~q_Tg>g;B6i<_^E3Ukbf3D8EVYSs{c>u=6PWojT5pkG
zbDFbm0(Fi_(x;}H7cx1jeO*K1V@Inw15v7`MYT+lV70n*(C{rmA9mz*(h@umdMMeh
zHP+czc>B`rcOB>U@3m!~x^H+-E%F3qg`XwqS}MxS-{q?0Ma#?Ef|cqI6VO%Bm3t<}bi?49HyzK?E$66V%4@niy=jkkMzfR^4K~Qs>@~PEI=J{i
ze2=JK=Yf&+oFo3RjV$iYj?X)|8gMHter6_@9yjKYe#(
zZ}-vm&Z58o9<;u1Kq&3h9%OBOkEfT1)FEfg(PNKtag3;0esSA0G-Jw}G}6!y(@0m%
zj6a*_=yWTV*S%|dV2fF1eo54QsBcq#H_~flb5q{)^U1mUn$@=H$zKdRyDJ$V
znU0)$&;gI@@v|sZeq6lwt?>fkUb@y$|9yE7#SCgF;bEB4XMsRQxc
zlS_-<9^=HPaGL_hid9B=P*+MvAH4_d;5KK;gnKFo;WL7AmDRQotQC{3}kKP8KE
z55a@rHY3G7+=KeS3|Mc|SafOm;AjdDD%RjZr}YMhJ4bf$AYgVIKI6@UoI?gj(K4Sa
zfnCrC7@Y4lCULKEM}{kkIFC7_6vJWREY4H||F4lK1I>dLmcGxz%zB_&vLTfggEL9p
zb7Of~%C2KG7w-4SM_oAfFye>`-i2#4KlEkGr7x<3%g2zaTv$~?LncQ=u1H8r{$i*1tl7@on+X{y;qh~a
zGtBHHmPGpRUvV^+l=*qTL^P4(@BO-@Bn~<`JKb&J#Qc4yj|fs;2f3&d>HZzID?(+
zq|2P;oJZP?VCg-M@Ny&LY@XJGx0Fzo74T?RxA
zy~c2)J;$kleN}g-|Ee9_s^RZn=>M?wOGjB~Q*%vlzthV8g6U2@YieJAQI6YlxG~!r
z$H>zT{_KBvRR&?ydQQxRWU~dfvybnGLI<4}?ToE?x%6F9ad**|{hyjr3yJ=Rr0he@
z({jSm-sR7aXe!LfIJ$1Aw?1KEa?8fd_s>e#ZL;m$a4i&IKi~+ae
z3f#Gnl(ru1KDKjetw!(gp!;*Kas~?x`tVNWIK(z~~+xw93
zR-9vyq0Wui!L*h`rN_fMTfSs98`|Wqf~&1AQ~ynPXOL$=uuQ7YC6|}!8SD;w<`>)6
zhaQ^6Z2W^x(-6y;Q@I+iT&iOvfRQ9t)kfO!Wi7k^NK_il!|l=Y(_Crwq=$p@BMCQj
z5~VNA%e!DUVxW*!|B9oNhaHq`K5kt?7}>*;m?`42SYq}vi+I13VKtK!E>Wex!=`&-
z$GQKZllxEK2fUOrw5)Ft>*fwW|FO2n@W5K`JO!p(_p7A+h1KzyF_BsGu3ou&I!dw`
zwft)4sjcs{HXgm^uajJcT-%7aw)Hz5
z-6wurWY2<>(<_Zu!06&pE~WPNMwTK~4tA#2;QSeLeXOD_8DxqSKB
zo`vS3CegMvk(RjoS8XF7D$qVe^#@AkJ$gDb
zJx(M_;*i7~g_;w-S=KzLPqq>G1HIN^GP!fs>yAAL>lr>|$el08ZRSBq={zU{82Y#v
z;Ar!F5m@Yp2e~4FHHL!+66<-8nd5XGbj5YY*jeC6W-bEUk_=lr8apJw*1>wdVekH;
z4+g+X$4I%ql>4q_fCrVu?dCz9PK`wuD?sFq;cJ_r;lbg%K!03eE;IU$IV_XKd0`&L
z;z2<-3yS*aTZ%>$27B7U*|5*oW-xYaN5RxS#*5RP8w2b#taF!sp84Jr>3QJQhC{c?Y>uQ{I2(TcLhMYs
zD8*{&u187>l#3tbjMR44t$eyya@VR#;d{O9^IJAW53xdvYH2rS-I9X&V)i&VzOhVs
zutr}|w?$#}K|l|1!#dX+jKCHordf&}x@zM9OcM{GD3#^<@3<>Nd}NZl0SL>B2=EJZa(Lv_EU#
zY}*rtNe(A}FwV7u{c}0P1g()rJjl>i=HD3T_D_XcqlfEVmko<=34C2uY`(XsLk6#n|?|*o+Vc%VsxPyt_oz;HW4NFcb
zhzQB_wyU&whd0Fs=6A)nto&^3bVE{1>dYR<^S-LxiNhCD#^fzu9DiC|*CrD)d)1tD
zq>J9h()G+oXZD{TQ?k6_k(%wIrLpd`oJ|yQ{Z&lNssSTAC+pb@&cpVNMh6{O*l^$k
zdR=lm4*riy(K4fgqtFn2uzuK~Y!g~A{
zbMpTcfUEAP)`77nHo$M-lT%>U8251OfJ`fMXrT)@)*ADm63uqS!HO{lc>Y*Ck_S~K
z9?o4nsN^5HX+pF62k#}+RNnB(KY%y`p}Gg56D^NRjJG#_am
zB(d;Is7+yhMZSSs_rdi^a^(cQ9hn`gB7Zw}w;|%CJj=d2&mOom)*Yk--kn
z&&s3}%{YGiqR?=EQA9ysqF~3@0#<0r-9vbM5C@e}>Oj3JZFj9u*GoUQ`Y8M1aGO%F
zkG5XeU}5^1{+ZeVPc|LU2Bbc_ndsqKal*
zHxzBpH=yvKTIcO2z{X*)-gTtGO}|O87wnb8O2wiU8OB$4Tv2`0I%7{6bdd5dOxF*Cw$(
z73v4_jUOMKDGKAm?52H5MK>Bv$2
zcRMh8Z$`eI{>aLFogEyD(-oHge9`H|)vfneHd@VFGVgV7if-M?^7HM_79vt(Y*J2-
z*sM=@%<(r22~G@%VCKCi20YPUX}K-XqRBLKJ!JK8U4m8u2?Tct5Zv7<91?=NOX2QLK~Y69=e^zcoBq1*npr(FYyM?XwO5_9
z_c_n=v&W1jH)5aw_aZbkQ7q~NXW5(O#t#vJh>4c&9(dcOae)pyzdWqUT)Lo~I4)v5
z`juL%Q+~9O;|1cY<>p|oQtP3Mx7EtmK+BDe=&U^n`TwbE`LE3Dduj(O2`BhxLo;h4
z-sOU;)|Tg2`+D&?^9WP!W`>?g#SwBHAKjiw?ViYjOPBS@zr-LX)$oYfAO)r7TS20u_KO_qKMT(bE_A9c
z&A&+6!adMd?x9=vg|7r4g|L&K@?Uc#gl0uE3$%%WOQlbv|1y>3DH1F8Ja4JKuGK
z=TuMfD%mCnIl7y3MKATUMm6Sf0%8VCa*G~m>E~}WfM~~UpTcCmWkIEk#jPbHQnc?H
zzvZ$4*y0kwjK$?{%75a&+}ya?RQ(j|=cZ{8-xX#4IWP)!4+Kg83umRxXGNKk)fsCv
zx$aSpTS6v82kfNQuYOK}b6>Pg;u8!Gb#MBC+OKsvlJD;4B{!c9iQc4>&nc{#
zjak{wti#SREx)5`^~KL(;dp_IIy+D@WDfM<+8ZEZ;&!#;~F;+6xr3k*<
zH7s-EVsaYY-JRSM#fT2mzS3`UHk6$tI!P~RZxRzzc>V-|{!DFqGNv|=-9LGM$=%9N
zE4wxLAbF>k$%5LVLFukYH>9BUmaPAHXnbp$fB~7Ky(>RT)&Q#jFgnL
z8i%o?qoZ~SCI