From 4690cbb51c099e57d86abf4416e0fc9a13022c4a Mon Sep 17 00:00:00 2001
From: luciacrv <lc.reyerovargas@gmail.com>
Date: Sat, 26 Aug 2023 19:31:21 -0600
Subject: [PATCH 01/17] feat(account.invoice): Se realizan cambios Odoo 15
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Se adapta módulo para migrarlo a la versión 15 de Odoo
---
 CONTRIBUTORS.rst                              |   1 +
 l10n_mx_facturae/__init__.py                  |   2 +-
 .../{__openerp__.py => __manifest__.py}       |  39 +-
 l10n_mx_facturae/data/account_invoice.xml     |  58 --
 l10n_mx_facturae/data/account_move.xml        |  35 +
 ...ccount_voucher.xml => account_payment.xml} |  26 +-
 l10n_mx_facturae/data/email_template.xml      |   8 +-
 l10n_mx_facturae/data/facturae_data.xml       |   7 +-
 .../data/ir_attachment_facturae_config.xml    |  30 +-
 l10n_mx_facturae/data/ir_cron.xml             |  26 +-
 .../demo/l10n_mx_facturae_demo.xml            |  22 +
 l10n_mx_facturae/models/__init__.py           |   6 +-
 l10n_mx_facturae/models/account_invoice.py    | 671 ------------------
 l10n_mx_facturae/models/account_move.py       | 650 ++++++++++++++++-
 ...{account_voucher.py => account_payment.py} |  91 +--
 l10n_mx_facturae/models/email_template.py     |   2 +-
 l10n_mx_facturae/models/res_company.py        |  24 +
 l10n_mx_facturae/models/res_partner.py        |  32 +-
 .../{account_invoice.odt => account_move.odt} | Bin
 ...ccount_voucher.odt => account_payment.odt} | Bin
 l10n_mx_facturae/security/res_groups.xml      |   2 +-
 .../{account_invoice.txt => account_move.txt} |   0
 l10n_mx_facturae/templates/account_move.xml   |  56 ++
 .../{account_invoice.xml => account_move.xml} | 162 ++---
 ...ccount_voucher.xml => account_payment.xml} |  50 +-
 l10n_mx_facturae/views/res_company.xml        |  15 +
 l10n_mx_facturae/views/res_partner.xml        | 103 +--
 l10n_mx_facturae/wizard/__init__.py           |   4 +-
 .../wizard/account_invoice_refund.py          |   2 +-
 .../wizard/account_invoice_refund.xml         |   4 +-
 .../wizard/wizard_multi_charts_accounts.py    |   2 +-
 31 files changed, 1094 insertions(+), 1036 deletions(-)
 rename l10n_mx_facturae/{__openerp__.py => __manifest__.py} (50%)
 delete mode 100644 l10n_mx_facturae/data/account_invoice.xml
 create mode 100644 l10n_mx_facturae/data/account_move.xml
 rename l10n_mx_facturae/data/{account_voucher.xml => account_payment.xml} (73%)
 create mode 100644 l10n_mx_facturae/demo/l10n_mx_facturae_demo.xml
 delete mode 100644 l10n_mx_facturae/models/account_invoice.py
 rename l10n_mx_facturae/models/{account_voucher.py => account_payment.py} (89%)
 create mode 100644 l10n_mx_facturae/models/res_company.py
 rename l10n_mx_facturae/report/{account_invoice.odt => account_move.odt} (100%)
 rename l10n_mx_facturae/report/{account_voucher.odt => account_payment.odt} (100%)
 rename l10n_mx_facturae/templates/{account_invoice.txt => account_move.txt} (100%)
 create mode 100644 l10n_mx_facturae/templates/account_move.xml
 rename l10n_mx_facturae/views/{account_invoice.xml => account_move.xml} (56%)
 rename l10n_mx_facturae/views/{account_voucher.xml => account_payment.xml} (70%)
 create mode 100644 l10n_mx_facturae/views/res_company.xml

diff --git a/CONTRIBUTORS.rst b/CONTRIBUTORS.rst
index 579857ee15..e3344df941 100644
--- a/CONTRIBUTORS.rst
+++ b/CONTRIBUTORS.rst
@@ -2,3 +2,4 @@
 * Moisés López
 * Federico Cruz <federico.cruz@openpyme.mx>
 * Agustín Cruz <agustin.cruz@openpyme.mx>
+* Noé Fernando <noe.izquierdo@openpyme.mx>
\ No newline at end of file
diff --git a/l10n_mx_facturae/__init__.py b/l10n_mx_facturae/__init__.py
index 35e7c9600c..731182b4b8 100644
--- a/l10n_mx_facturae/__init__.py
+++ b/l10n_mx_facturae/__init__.py
@@ -1,4 +1,4 @@
 # -*- coding: utf-8 -*-
 
 from . import models
-from . import wizard
+#from . import wizard
diff --git a/l10n_mx_facturae/__openerp__.py b/l10n_mx_facturae/__manifest__.py
similarity index 50%
rename from l10n_mx_facturae/__openerp__.py
rename to l10n_mx_facturae/__manifest__.py
index ab41196dd2..60c998a8f1 100644
--- a/l10n_mx_facturae/__openerp__.py
+++ b/l10n_mx_facturae/__manifest__.py
@@ -8,27 +8,32 @@
     "website": "http://www.openpyme.mx/",
     "license": "AGPL-3",
     "depends": [
-        "account_cancel",
-        "account_invoice_discount",
-        "base_vat",
         "base_iso3166",
-        "l10n_mx_account_tax_category",
-        "l10n_mx_ir_attachment_facturae",
-        "l10n_mx_res_partner_bank",
+        "l10n_mx_base",
+    ],
+    "demo": [
+        "demo/l10n_mx_facturae_demo.xml",
     ],
-    "demo": [],
     "data": [
-        "security/res_groups.xml",
-        "views/account_invoice.xml",
-        "views/account_voucher.xml",
-        "views/res_partner.xml",
-        "wizard/account_invoice_refund.xml",
-        "data/account_invoice.xml",
-        "data/account_voucher.xml",
-        "data/ir_cron.xml",
-        "data/email_template.xml",
-        "data/ir_attachment_facturae_config.xml",
+        # Datas
+        "data/account_move.xml",
+        #"data/account_payment.xml",
+        #"data/email_template.xml",
         "data/facturae_data.xml",
+        "data/ir_attachment_facturae_config.xml",
+        #"data/ir_cron.xml",
+
+        # Views
+        "views/account_move.xml",
+        #"views/account_payment.xml",
+        "views/res_company.xml",
+        "views/res_partner.xml",
+
+        # Security
+        "security/res_groups.xml",
+
+        #Views Wizards
+        #"wizard/account_invoice_refund.xml",
     ],
     "installable": True,
 }
diff --git a/l10n_mx_facturae/data/account_invoice.xml b/l10n_mx_facturae/data/account_invoice.xml
deleted file mode 100644
index d59cdf0730..0000000000
--- a/l10n_mx_facturae/data/account_invoice.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
-<data>
-
-    <!-- XML invoice report definition -->
-    <record id="report_templates_aeroo_account_invoice_cfdi"
-        model="report.templates.aeroo">
-        <field name="name">Account Invoice CFDI XML</field>
-        <field name="model">account.invoice</field>
-        <field name="report_name">account.invoice.cfdi.xml</field>
-        <field
-            name="report_rml">l10n_mx_facturae/templates/account_invoice.txt</field>
-    </record>
-
-    <record id="ir_actions_report_xml_account_invioice_cfdi"
-        model="ir.actions.report.xml">
-        <field name="name">Account Invoice CFDI XML</field>
-        <field name="type">ir.actions.report.xml</field>
-        <field name="model">account.invoice</field>
-        <field name="report_name">account.invoice.cfdi.xml</field>
-        <field name="report_type">aeroo</field>
-        <field name="in_format">genshi-raw</field>
-        <field name="out_format" ref="report_aeroo.report_mimetypes_raw" />
-        <field name="aeroo_templates_ids"
-            eval="[(6, 0, [report_templates_aeroo_account_invoice_cfdi])]" />
-        <field name="parser_state">default</field>
-    </record>
-
-</data>
-
-<data noupdate="1">
-
-    <!-- PDF invoice report definition -->
-    <record id="report_templates_aeroo_pdf_account_invoice_cfdi"
-        model="report.templates.aeroo">
-        <field name="name">Default Invoice Report PDF</field>
-        <field name="model">account.invoice</field>
-        <field name="report_name">invoice.report.aaero.pdf</field>
-        <field name="report_rml">l10n_mx_facturae/report/account_invoice.odt</field>
-    </record>
-
-    <record id="ir_actions_report_pdf_account_invioice_cfdi"
-        model="ir.actions.report.xml">
-        <field name="name">Account Invoice CFDI PDF</field>
-        <field name="type">ir.actions.report.xml</field>
-        <field name="model">account.invoice</field>
-        <field name="report_name">invoice.report.aaero.pdf</field>
-        <field name="report_type">aeroo</field>
-        <field name="in_format">oo-odt</field>
-        <field name="out_format" ref="report_aeroo.report_mimetypes_pdf_odt" />
-        <field name="aeroo_templates_ids"
-            eval="[(6, 0, [report_templates_aeroo_pdf_account_invoice_cfdi])]" />
-        <field name="parser_loc">l10n_mx_ir_attachment_facturae/report/generate_qr.py</field>
-        <field name="parser_state">loc</field>
-    </record>
-
-</data>
-</openerp>
diff --git a/l10n_mx_facturae/data/account_move.xml b/l10n_mx_facturae/data/account_move.xml
new file mode 100644
index 0000000000..a28b7f9ba9
--- /dev/null
+++ b/l10n_mx_facturae/data/account_move.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+<data>
+
+    <!-- XML invoice report definition -->
+    <record id="ir_actions_report_xml_account_invioice_cfdi"
+        model="ir.actions.report">
+        <field name="name">Account Move CFDI XML</field>
+        <field name="model">account.move</field>
+        <field name="report_name">account.move.cfdi.xml</field>
+        <field name="report_type">aeroo</field>
+        <field name="in_format">genshi-raw</field>
+        <field name="out_format" ref="report_aeroo.report_mimetypes_raw" />
+        <field name="report_file">l10n_mx_facturae/templates/account_move.txt</field>
+    </record>
+
+</data>
+
+<data noupdate="1">
+
+    <!-- PDF invoice report definition -->
+    <record id="ir_actions_report_pdf_account_invioice_cfdi"
+        model="ir.actions.report">
+        <field name="name">Account Move CFDI PDF</field>
+        <field name="model">account.move</field>
+        <field name="report_name">move.report.aaero.pdf</field>
+        <field name="report_type">aeroo</field>
+        <field name="in_format">oo-odt</field>
+        <field name="out_format" ref="report_aeroo.report_mimetypes_pdf_odt" />
+        <field name="report_file">l10n_mx_facturae/report/account_move.odt</field>
+        <field name="parser_model">report.l10n_mx_qr</field>
+    </record>
+
+</data>
+</odoo>
diff --git a/l10n_mx_facturae/data/account_voucher.xml b/l10n_mx_facturae/data/account_payment.xml
similarity index 73%
rename from l10n_mx_facturae/data/account_voucher.xml
rename to l10n_mx_facturae/data/account_payment.xml
index 0ac23e6148..103ef68cd2 100644
--- a/l10n_mx_facturae/data/account_voucher.xml
+++ b/l10n_mx_facturae/data/account_payment.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
-<openerp>
+<odoo>
 <data>
 
     <!-- XML voucher report definition -->
     <record id="report_templates_aeroo_account_voucher_cfdi"
         model="report.templates.aeroo">
-        <field name="name">Account Voucher CFDI XML</field>
-        <field name="model">account.voucher</field>
+        <field name="name">Account VouPaymentcher CFDI XML</field>
+        <field name="model">account.payment</field>
         <field name="report_name">account.voucher.cfdi.xml</field>
         <field
             name="report_rml">l10n_mx_facturae/templates/account_voucher.txt</field>
@@ -31,28 +31,28 @@
 <data noupdate="1">
 
     <!-- PDF voucher report definition -->
-    <record id="report_templates_aeroo_account_voucher_pdf_cfdi"
+    <record id="report_templates_aeroo_account_payment_pdf_cfdi"
         model="report.templates.aeroo">
-        <field name="name">Default Voucher CFDI PDF</field>
-        <field name="model">account.voucher</field>
-        <field name="report_name">account.voucher.cfdi.pdf</field>
-        <field name="report_rml">l10n_mx_facturae/report/account_voucher.odt</field>
+        <field name="name">Default Payment CFDI PDF</field>
+        <field name="model">account.payment</field>
+        <field name="report_name">account.payment.cfdi.pdf</field>
+        <field name="report_rml">l10n_mx_facturae/report/account_payment.odt</field>
     </record>
 
-    <record id="ir_actions_report_pdf_account_voucher_cfdi"
+    <record id="ir_actions_report_pdf_account_payment_cfdi"
         model="ir.actions.report.xml">
-        <field name="name">Account Voucher CFDI PDF</field>
+        <field name="name">Account Payment CFDI PDF</field>
         <field name="type">ir.actions.report.xml</field>
-        <field name="model">account.voucher</field>
+        <field name="model">account.payment</field>
         <field name="report_name">account.voucher.cfdi.pdf</field>
         <field name="report_type">aeroo</field>
         <field name="in_format">oo-odt</field>
         <field name="out_format" ref="report_aeroo.report_mimetypes_pdf_odt" />
         <field name="aeroo_templates_ids"
-            eval="[(6, 0, [report_templates_aeroo_account_voucher_pdf_cfdi])]" />
+            eval="[(6, 0, [report_templates_aeroo_account_payment_pdf_cfdi])]" />
         <field name="parser_loc">l10n_mx_ir_attachment_facturae/report/generate_qr.py</field>
         <field name="parser_state">loc</field>
     </record>
 
 </data>
-</openerp>
+</odoo>
diff --git a/l10n_mx_facturae/data/email_template.xml b/l10n_mx_facturae/data/email_template.xml
index 3d534e910d..64aad2a1ae 100644
--- a/l10n_mx_facturae/data/email_template.xml
+++ b/l10n_mx_facturae/data/email_template.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" ?>
-<openerp>
+<odoo>
     <!-- Mail template are declared in a NOUPDATE block
          so users can freely customize/delete them -->
     <data noupdate="1">
         <!--Email template -->
-        <record id="account_voucher_cfdi_email_template" model="email.template">
+        <record id="account_payment_cfdi_email_template" model="email.template">
             <field name="name">Electronic Payment Receipt</field>
             <field name="subject">${object.company_id.name|safe} Payment (Ref ${object.number or 'n/a'})</field>
             <field name="partner_to">${object.partner_id.id}</field>
-            <field name="model_id" ref="account_voucher.model_account_voucher"/>
+            <field name="model_id" ref="account_payment.model_account_payment"/>
             <field name="auto_delete" eval="True"/>
             <field name="lang">${object.partner_id.lang}</field>
             <field name="body_html"><![CDATA[
@@ -65,4 +65,4 @@
             ]]></field>
         </record>
     </data>
-</openerp>
+</odoo>
diff --git a/l10n_mx_facturae/data/facturae_data.xml b/l10n_mx_facturae/data/facturae_data.xml
index 2f0a3e6c00..c64076bb00 100644
--- a/l10n_mx_facturae/data/facturae_data.xml
+++ b/l10n_mx_facturae/data/facturae_data.xml
@@ -1,12 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 
-<openerp>
-<data noupdate="0">
+<odoo>
 
     <record id="group_cfdi_custom_number" model="res.groups">
         <field name="name">CFDI Custom Number</field>
         <field name="category_id" ref="base.module_category_accounting_and_finance"/>
     </record>
 
-</data>
-</openerp>
+
+</odoo>
diff --git a/l10n_mx_facturae/data/ir_attachment_facturae_config.xml b/l10n_mx_facturae/data/ir_attachment_facturae_config.xml
index bbde0be441..c089ec2088 100644
--- a/l10n_mx_facturae/data/ir_attachment_facturae_config.xml
+++ b/l10n_mx_facturae/data/ir_attachment_facturae_config.xml
@@ -1,28 +1,26 @@
 <?xml version="1.0"?>
-<openerp>
-<data noupdate="1">
+<odoo>
 
-    <record id="ir_attachment_facturae_mx_config_account_invoice"
+    <record id="ir_attachment_facturae_mx_config_account_move"
         model="ir.attachment.facturae.mx.config">
-        <field name="model">account.invoice</field>
+        <field name="model">account.move</field>
         <field name="version">4.0</field>
-        <field name="template_xml_sign">account.invoice.cfdi.xml</field>
+        <field name="template_xml_sign">account.move.cfdi.xml</field>
         <field name="template_xml_cancel">Aun.no.hay.uno</field>
-        <field name="template_pdf_sign">invoice.report.aaero.pdf</field>
-        <field name="template_pdf_cancel">invoice.report.aaero.pdf</field>
-        <field name="email_template_id" ref="account.email_template_edi_invoice"/>
+        <field name="template_pdf_sign">move.report.aaero.pdf</field>
+        <field name="template_pdf_cancel">move.report.aaero.pdf</field>
+        <!--<field name="email_template_id" ref="account.email_template_edi_invoice"/>-->
     </record>
 
-    <record id="ir_attachment_facturae_mx_config_account_voucher"
+    <record id="ir_attachment_facturae_mx_config_account_payment"
         model="ir.attachment.facturae.mx.config">
-        <field name="model">account.voucher</field>
+        <field name="model">account.payment</field>
         <field name="version">4.0</field>
-        <field name="template_xml_sign">account.voucher.cfdi.xml</field>
+        <field name="template_xml_sign">account.payment.cfdi.xml</field>
         <field name="template_xml_cancel">Aun.no.hay.uno</field>
-        <field name="template_pdf_sign">account.voucher.cfdi.pdf</field>
-        <field name="template_pdf_cancel">account.voucher.cfdi.pdf</field>
-        <field name="email_template_id" ref="account_voucher_cfdi_email_template"/>
+        <field name="template_pdf_sign">account.payment.cfdi.pdf</field>
+        <field name="template_pdf_cancel">account.payment.cfdi.pdf</field>
+        <!--<field name="email_template_id" ref="account_payment_cfdi_email_template"/>-->
     </record>
 
-</data>
-</openerp>
+</odoo>
diff --git a/l10n_mx_facturae/data/ir_cron.xml b/l10n_mx_facturae/data/ir_cron.xml
index 976b588bbd..ccda338b1d 100644
--- a/l10n_mx_facturae/data/ir_cron.xml
+++ b/l10n_mx_facturae/data/ir_cron.xml
@@ -1,16 +1,12 @@
 <?xml version="1.0" encoding='UTF-8'?>
-<openerp>
-    <data noupdate="1">
-        <record model="ir.cron" id="ir_cron_invoices_pending_to_cancel">
-           <field name="name">Invoices pending to cancel</field>
-           <field name="interval_number">2</field>
-           <field name="interval_type">hours</field>
-           <field name="numbercall">-1</field>
-           <field name="model" eval="'account.invoice'"/>
-           <field name="function" eval="'cron_invoices_pending_to_cancel'"/>
-           <field name="args" eval="'()'"/>
-           <field name="active" eval="True" />
-        </record>
-    </data>
-</openerp>
-
+<odoo noupdate="1">
+    <record model="ir.cron" id="ir_cron_invoices_pending_to_cancel">
+        <field name="name">Invoices pending to cancel</field>
+        <field name="interval_number">2</field>
+        <field name="interval_type">hours</field>
+        <field name="numbercall">-1</field>
+        <field name="model_name">l10n_mx_base.model_account_move</field>
+        <!--<field name="function" eval="cron_invoices_pending_to_cancel"/>-->
+        <field name="active" eval="True" />
+    </record>
+</odoo>
diff --git a/l10n_mx_facturae/demo/l10n_mx_facturae_demo.xml b/l10n_mx_facturae/demo/l10n_mx_facturae_demo.xml
new file mode 100644
index 0000000000..aebdd71c2b
--- /dev/null
+++ b/l10n_mx_facturae/demo/l10n_mx_facturae_demo.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+    <record id="res_partner_2023" model="res.partner">
+        <field name="name">Felix Manuel Andrade Ballado</field>
+        <field name="is_company">1</field>
+        <field name="street">4557 10 oriente</field>
+        <field name="city">Huimanguillo</field>
+        <field name="state_id" ref="base.state_mx_tab"/>
+        <field name="zip">86400</field>
+        <field name="vat">MXAABF800614HI0</field>
+        <field name="phone">(870)-931-0505</field>
+        <field name="country_id" ref="base.mx"/>
+        <field name="email">felix.andrade@example.com</field>
+        <field name="image_2023" type="base64" file="base/static/img/partner_demo_portal.jpg"/>
+        <field name="company_id" ref="l10n_mx.demo_company_mx"/>
+        <field name="cfdi_fiscal_regime_id" ref="l10n_mx_base.regime_fiscal_616"/>
+        <field name="cfdi_use_id" ref="l10n_mx_base.cfdi_use_S01"/>
+        <field name="payment_method_id" ref="l10n_mx_base.cfdi_payment_method_1"/>
+    </record>
+
+</odoo>
diff --git a/l10n_mx_facturae/models/__init__.py b/l10n_mx_facturae/models/__init__.py
index cbde404e0d..0431e16b13 100644
--- a/l10n_mx_facturae/models/__init__.py
+++ b/l10n_mx_facturae/models/__init__.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
-from . import account_invoice
 from . import account_move
-from . import account_voucher
-from . import email_template
+#from . import account_payment
+#from . import email_template
+from . import res_company
 from . import res_partner
diff --git a/l10n_mx_facturae/models/account_invoice.py b/l10n_mx_facturae/models/account_invoice.py
deleted file mode 100644
index 294f08df6a..0000000000
--- a/l10n_mx_facturae/models/account_invoice.py
+++ /dev/null
@@ -1,671 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import logging
-import pytz
-from datetime import datetime, timedelta
-
-from openerp import api, fields, models
-from openerp.exceptions import ValidationError, Warning as UserError
-from openerp.tools.float_utils import float_round
-from openerp.tools.translate import _
-
-
-_logger = logging.getLogger(__name__)
-
-
-class AccountInvoice(models.Model):
-    _name = "account.invoice"
-    _inherit = ["account.invoice", "base.cfdi"]
-
-    @property
-    def formapago(self):
-        """Return payment type for display on CFDI"""
-        self.ensure_one()
-        try:
-            code = self.payment_type_ids[0].code
-        except IndexError:
-            code = "99"
-        return code
-
-    @property
-    def descuento(self):
-        self.ensure_one()
-        discount = 0.0
-        for line in self.invoice_line:
-            discount += line.descuento
-        return discount
-
-    @property
-    def subtotal(self):
-        self.ensure_one()
-        subtotal = 0.0
-        for line in self.invoice_line:
-            subtotal += line.importe
-        return subtotal
-
-    @property
-    def total(self):
-        self.ensure_one()
-        return (
-            self.subtotal
-            - self.descuento
-            + self.impuestos["total_traslados"]
-            + self.impuestos["total_retenciones"]
-            + self.impuestos["total_locales"]
-        )
-
-    @property
-    def impuestos(self):
-        """Return computed taxes for display on CFDI"""
-        self.ensure_one()
-        tax_grouped = {}
-        taxes = {
-            "traslados": [],
-            "retenciones": [],
-            "locales": [],
-            "total_traslados": 0.0,
-            "total_retenciones": 0.0,
-            "total_locales": 0.0,
-        }
-
-        for line in self.invoice_line:
-            for tax in line.export_invoice_line_for_xml().taxes:
-                # Mimic logic from compute function in account.invoice.tax
-                # object to group taxes from invoice lines and be able to get
-                # the same result for display on CFDI
-                if self.type in ("out_invoice", "in_invoice"):
-                    tax.account_id = tax.account_collected_id or line.account_id.id
-                    tax.analytic_id = tax.account_analytic_collected_id
-                else:
-                    tax.account_id = tax.account_paid_id or line.account_id.id
-                    tax.analytic_id = tax.account_analytic_paid_id
-
-                key = (tax.id, tax.account_id, tax.analytic_id)
-                if key not in tax_grouped:
-                    tax_grouped[key] = tax
-                else:
-                    tax_grouped[key].amount += tax.amount
-                    tax_grouped[key].base += tax.base
-
-        # Classify taxes for CFDI
-        for dummy, tax in tax_grouped.items():
-            if tax.group in ["IVA", "IEPS", "ISR"]:
-                if tax.amount >= 0:
-                    taxes["traslados"].append(tax)
-                    taxes["total_traslados"] += tax.amount
-                else:
-                    taxes["retenciones"].append(tax)
-                    taxes["total_retenciones"] += tax.amount
-            else:
-                taxes["locales"].append(tax)
-                taxes["total_locales"] += tax.amount
-        return taxes
-
-    # pylint: disable=W0212
-    address_issued_id = fields.Many2one(
-        "res.partner",
-        "Address Issued Invoice",
-        readonly=True,
-        states={"draft": [("readonly", False)]},
-        help="This address will be used as address that issued "
-        "for electronic invoice",
-        compute="_compute_address_issued",
-    )
-    datetime = fields.Datetime(compute="_compute_datetime")
-    date_invoice_cancel = fields.Datetime(
-        "Date Invoice Cancelled",
-        readonly=True,
-        copy=False,
-        help="If the invoice is cancelled, save the date" " when was cancel",
-    )
-    payment_method_id = fields.Many2one(
-        "cfdi.payment.method",
-        string="Payment Method",
-        readonly=True,
-        states={"draft": [("readonly", False)]},
-        help="Payment method associated with this payment term according",
-    )
-    cfdi_use = fields.Many2one(
-        "cfdi.use", "CFDI use", readonly=True, states={"draft": [("readonly", False)]}
-    )
-    cfdi_relation_type = fields.Many2one("cfdi.relation.type", "CFDI Relation type")
-    state = fields.Selection(selection_add=[("waiting", _("To cancel"))])
-    l10n_mx_edi_to_cancel = fields.Char(
-        compute="_compute_l10n_mx_edi_to_cancel",
-        search="_search_l10n_mx_edi_to_cancel",
-        help="Technical field to display a warning when an invoice must be canceled "
-        "because have being replaced by a new one.",
-    )
-    l10n_mx_edi_original_invoice = fields.Many2one(
-        "account.invoice",
-        compute="_compute_l10n_mx_edi_to_cancel",
-        help="Technical field to relate origin invoice with substitute",
-    )
-    cfdi_periodicity = fields.Selection(
-        [
-            ("01", "Daily"),
-            ("02", "Weekly"),
-            ("03", "Biweekly"),
-            ("04", "Monthly"),
-        ],
-        default="04",
-    )
-
-    l10n_mx_export = fields.Boolean(
-        compute="_compute_export",
-        string="Merchandise export"
-    )
-
-    @api.multi
-    @api.depends("company_id")
-    def _compute_is_cfdi_candidate(self):
-        mexico = self.env.ref("base.mx")
-        for record in self:
-            record.is_cfdi_candidate = bool(record.company_id.country_id == mexico)
-
-    @api.multi
-    def _get_cfdi_datetime(self):
-        """This base function inherits the creation of the cfdi datetime
-        what it basically does is respect the date_invoice from invoice form
-        """
-        self.ensure_one()
-        date_invoice = fields.Datetime.from_string(self.date_invoice)
-        time_now = fields.Datetime.context_timestamp(self, datetime.now())
-        # If we are singing an invoice in the past we need to move forward 1 minute the
-        # computed time to be in the 72 hours range defined by SAT
-        # On the opposite if we are singing an invoice for today we move back 1 minute
-        # the computed time to prevent false errors about being out of 72 hours range
-        if date_invoice.date() < time_now.date():
-            time_now += timedelta(minutes=1)
-        else:
-            time_now -= timedelta(minutes=1)
-        date_create = datetime.combine(date_invoice, time_now.timetz())
-        # Needed to save date into the database as until now we are using user timezone
-        # to express the datetime that will cause double timezone conversion if kept
-        date_create = date_create.astimezone(tz=pytz.utc)
-        return fields.Datetime.to_string(date_create)
-
-    @api.multi
-    @api.depends("journal_id")
-    def _compute_address_issued(self):
-        for invoice in self:
-            if invoice.journal_id.address_issued_id:
-                invoice.address_issued_id = invoice.journal_id.address_issued_id
-            else:
-                invoice.address_issued_id = invoice.company_id.partner_id
-
-    @api.multi
-    def _compute_sequence_id(self):
-        for record in self:
-            record.sequence_id = record.journal_id.sequence_id
-
-    @api.multi
-    def _compute_l10n_mx_edi_to_cancel(self):
-        """Computes legend to display when an invoice needs to be cancelled because
-        have being substituted by a new one.
-        """
-        # Get substitution relation to compare
-        substitution = self.env.ref("l10n_mx.cfdi_relation_type_04")
-        invoices_to_cancel = self.filtered(
-            lambda i: i.type == "out_invoice" and i.state in ("open", "paid")
-        )
-        for inv in invoices_to_cancel:
-            message = ""
-            origin_documents = inv.refund_invoice_ids.filtered(
-                lambda i:
-                    i.state in ("open", "paid") and i.type == "out_invoice"
-            )
-            is_substitue = any(
-                [o.cfdi_relation_type == substitution for o in origin_documents]
-            )
-            if origin_documents and is_substitue:
-                message = _("This invoice must be cancelled because have being "
-                            "replaced with invoice: ")
-                inv.l10n_mx_edi_original_invoice = origin_documents[0]
-
-            inv.l10n_mx_edi_to_cancel = message
-
-    @api.model
-    def _search_l10n_mx_edi_to_cancel(self, operator, value):
-        """Allows to get ids for invoices that must be cancelled"""
-        substitution = self.env.ref("l10n_mx.cfdi_relation_type_04")
-
-        if operator not in ["=", "!="] or not isinstance(value, bool):
-            raise UserError(_("Operation not supported"))
-
-        if operator != "=":
-            value = not value
-
-        self._cr.execute(
-            """
-            SELECT id FROM account_invoice ai
-            WHERE EXISTS (
-                SELECT * FROM account_invoice_refunds_rel airr
-                INNER JOIN account_invoice air on airr.refund_invoice_id = air.id
-                WHERE airr.original_invoice_id = ai.id
-                AND air.cfdi_relation_type = %s
-                LIMIT 1
-            )
-            AND ai.state IN ('open', 'paid')
-            """,
-            (substitution.id,)
-        )
-        return [
-            ("id", "in" if value else "not in", [r[0] for r in self._cr.fetchall()])
-        ]
-
-    @api.model
-    def cron_invoices_pending_to_cancel(self):
-        invoices = self.env["account.invoice"].search([("state", "in", ["waiting"])])
-        for invoice in invoices:
-            invoice.action_consult_cancellation_status()
-
-    @api.one
-    def _compute_datetime(self):
-        self.datetime = self.cfdi_datetime
-
-    @api.multi
-    @api.onchange("partner_id")
-    def onchange_partner_id(self):
-        """Copy fields cfdi_use, payment_method_id and cfdi_adenda_id
-        from selected partner
-        """
-        res = super(AccountInvoice, self).onchange_partner_id()
-        for invoice in self.filtered(lambda i: i.type in ("out_invoice", "out_refund")):
-            partner = invoice.partner_id
-            if partner:
-                if partner.cfdi_fiscal_regime_id.id:
-                    invoice.cfdi_fiscal_regime_id = partner.cfdi_fiscal_regime_id.id
-                if partner.cfdi_use.id:
-                    invoice.cfdi_use = partner.cfdi_use.id
-                invoice.payment_method_id = partner.payment_method_id.id
-                invoice.cfdi_adenda_ids = [(6, 0, partner.cfdi_adenda_ids._ids)]
-        return res
-
-    @api.model
-    def _prepare_refund(
-        self, invoice, date=None, period_id=None, description=None, journal_id=None
-    ):
-        """Overrides the prepare refund function to set field UsoCFDI"""
-        values = super(AccountInvoice, self)._prepare_refund(
-            invoice,
-            date=date,
-            period_id=period_id,
-            description=description,
-            journal_id=journal_id,
-        )
-        # We set field UsoCFDI to Descuentos y devoluciones for all refunds
-        usocfdi = self.env.ref("l10n_mx.cfdi_use_G02")
-        values["cfdi_use"] = usocfdi.id
-        values["cfdi_relation_type"] = self._context.get("cfdi_relation_type")
-        payment_type = self.env.ref("l10n_mx.pay_method_condonacion")
-        values["payment_type_ids"] = [(4, payment_type.id, None)]
-        payment_method = self.env.ref("l10n_mx.cfdi_payment_method_1")
-        values["payment_method_id"] = payment_method.id
-
-        return values
-
-    @api.multi
-    def action_invoice_validate(self):
-        res = super(AccountInvoice, self).action_invoice_validate()
-        for account_invoice in self:
-            if account_invoice.journal_id.sign_sat:
-                # Create new CFDI object for this invoice
-                account_invoice.create_cfdi()
-        return res
-
-    @api.multi
-    def action_cancel(self):
-        """Extend `AccountInvoice.action_cancel()`; Cancels the CFDI related to the
-        invoice
-        """
-        # Get only invoices with related cfdi to cancel cfdi before cancel invoice
-        cfdis = self.filtered(
-            lambda i:
-                i.journal_id.sign_sat
-                and i.cfdi_id
-                and i.cfdi_id.state not in ["draft", "cancel"]
-        )
-        for invoice in cfdis:
-            # Ensure we can cancel this invoice
-            invoice.check_if_can_cancel()
-            # If l10n_mx_edi_original_invoice is set save uuid to send info to PAC
-            # while cancel invoice
-            invoice.cfdi_id.substitute_cfdi_uuid = (
-                invoice.l10n_mx_edi_original_invoice.cfdi_id.uuid
-            )
-            cancelacion = invoice.cancel_cfdi()[0]
-            if cancelacion:
-                # CFDI cancelled (cancelacion == True) must cancel invoice too
-                super(AccountInvoice, invoice).action_cancel()
-            elif cancelacion is None:
-                # CFDI set to approval (cancelacion == None) must set invoice
-                # to waiting too
-                invoice.write({"state": "waiting"})
-            elif cancelacion is False:
-                # CFDI cancel denied (cancelacion == False) must get back invoice
-                # to open state
-                self.undo_waiting_state()
-
-        # Call super only with invoices without CFDI
-        invoices = self - cfdis
-        return super(AccountInvoice, invoices).action_cancel()
-
-    @api.multi
-    def undo_waiting_state(self):
-        """When cancel is negate revert invoice to open and post account_move"""
-        to_update = self.filtered(lambda i: i.state == "waiting")
-        to_update.write({"state": "open"})
-        to_update.mapped("move_id").post()
-
-    @api.multi
-    def action_consult_cancellation_status(self):
-        """Verify cancellation status"""
-        # TODO: Is this really needed? Maybe we can reuse the action_cancel
-        for invoice in self:
-            try:
-                with self.env.cr.savepoint():
-                    status_cancelacion = invoice.consult_cfdi_cancellation_status()
-                    if status_cancelacion is None:
-                        invoice.message_post(
-                            body=_("No status update found on SAT")
-                        )
-                    elif status_cancelacion is False:
-                        self.undo_waiting_state()
-                    else:
-                        try:
-                            invoice.action_cancel()
-                        except Exception as e:
-                            invoice.message_post(
-                                body=_("The invoice could not be canceled")
-                            )
-            except Exception as e:
-                invoice.message_post(
-                    body=_(
-                        "Could not check SAT invoice status "
-                        "due to the following error: %s."
-                    ) % (e)
-                )
-
-    @api.multi
-    def _validate_cfdi_data(self):
-        self._validate_account_invoice_fields()
-        self._validate_account_invoice_partners()
-
-    @api.multi
-    def _validate_account_invoice_fields(self):
-        """ This function is to validate that the invoice has an
-            issue address, partner and company"""
-        for record in self:
-            self._cfdi_validate_required_fields(
-                record,
-                [
-                    "cfdi_use",
-                    "partner_id",
-                    "cfdi_fiscal_regime_id",
-                    "payment_type_ids",
-                    "address_issued_id",
-                    "journal_id",
-                    "account_id"
-                ],
-            )
-
-    @api.multi
-    def _validate_account_invoice_partners(self):
-        """ This function is to validate that the vat of the
-            commercial partner and company"""
-
-        required = [
-            "vat",
-            "zip",
-            "cfdi_fiscal_regime_id",
-        ]
-
-        for record in self:
-            self._cfdi_validate_required_fields(
-                record.address_issued_id,
-                required,
-            )
-
-            self._cfdi_validate_required_fields(
-                record.company_id.partner_id,
-                required,
-            )
-
-            self._cfdi_validate_required_fields(
-                record.commercial_partner_id,
-                required,
-            )
-
-            if record.partner_id.country_id.code_alpha3 == "MEX":
-                self._cfdi_validate_required_fields(
-                    record.partner_id,
-                    required,
-                )
-
-    @api.multi
-    def _compute_export(self):
-        for record in self:
-            if record.cfdi_adenda_ids.filtered(
-                lambda i: i.code == "02"
-            ) and record.commercial_partner_id.country_id.code_alpha3 != "MEX":
-                record.l10n_mx_export = True
-
-
-class AccountInvoiceLine(models.Model):
-    _inherit = "account.invoice.line"
-
-    cfdi_numero_identificacion = fields.Char(
-        string="Identification Number",
-        help="This number is the identification number for invoice line in cfdi",
-        compute="_compute_cfdi_ident_number",
-    )
-    cfdi_cuentapredial = fields.Char(
-        string="Cuenta Predial",
-        help="Predial number for real state lease invoices",
-    )
-    cfdi_custom_number = fields.Many2many(
-        "import.pediment.number",
-        "invoice_pediment_rel",
-        "invoice_line_id",
-        "cfdi_custom_number_id",
-        "N° Pediment",
-    )
-
-    @api.multi
-    @api.constrains("cfdi_cuentapredial")
-    def _constraint_cfdi_cuentapredial(self):
-        for record in self:
-            if record.cfdi_cuentapredial and not record.cfdi_cuentapredial.isdigit():
-                raise ValidationError(
-                    _(
-                        "Predial Account must be only numbers.\n"
-                        "All letters must be replaced by '0'"
-                    )
-                )
-
-    @api.multi
-    @api.depends("product_id")
-    def _compute_cfdi_ident_number(self):
-        """Update cfdi_numero_identificacion only for invoice lines that are not signed
-        yet and that are customer's documents.
-        """
-        to_update = self.filtered(
-            lambda line: line.invoice_id.cfdi_state == "draft"
-            and line.invoice_id.type in ("out_invoice", "out_refund")
-        )
-        for record in to_update:
-            record.cfdi_numero_identificacion = record.product_id.default_code
-
-    @property
-    def cfdi_product_code(self):
-        """Return computed cfdi code for current line based on code selected
-        for product or product category.
-        Raise a validation error if no code found"""
-        self.ensure_one()
-        if self.product_id.cfdi_product_service_id.exists():
-            return self.product_id.cfdi_product_service_id.code
-        # Traverse product category to find cfdi product code
-        category = self.product_id.categ_id
-        while category:
-            if category.cfdi_product_service_id:
-                return category.cfdi_product_service_id.code
-            else:
-                category = category.parent_id
-        # If not have return for this point raise an error
-        raise ValidationError(
-            _("Missing SAT code for product: {product}").format(
-                product=self.product_id.name
-            )
-        )
-
-    @property
-    def importe(self):
-        """Return computed total line for display on CFDI"""
-        self.ensure_one()
-        return self.export_invoice_line_for_xml().importe
-
-    @property
-    def descuento(self):
-        """Property that computes the discount amount in currency for CFDI XML
-        invoice view
-        """
-        self.ensure_one()
-        return self.export_invoice_line_for_xml().descuento
-
-    @property
-    def impuestos(self):
-        """Return computed taxes for display on CFDI"""
-        self.ensure_one()
-        taxes = {"traslados": [], "retenciones": [], "locales": []}
-        for tax in self.export_invoice_line_for_xml().taxes:
-            if tax.group in ["IVA", "IEPS", "ISR"]:
-                if tax.amount >= 0:
-                    taxes["traslados"].append(tax)
-                else:
-                    taxes["retenciones"].append(tax)
-            else:
-                taxes["locales"].append(tax)
-        return taxes
-
-    @property
-    def valorunitario(self):
-        """Return computed price unit for display on CFDI"""
-        self.ensure_one()
-        return self.export_invoice_line_for_xml().price_unit
-
-    def export_invoice_line_for_xml(self):
-        # pylint: disable=R1710
-        """Computes all values needed for export account.invoice.line as CFDI"""
-
-        class Dict2obj(object):
-            """Convert dictionary to object
-            @source http://stackoverflow.com/a/1305561/383912
-            """
-
-            def __init__(self, d):
-                self.__dict__["d"] = d
-
-            def __getattr__(self, key):
-                value = self.__dict__["d"][key]
-                return value
-
-        def process_tax(tax):
-            """Helper function to populate extra values needed for display
-            taxes on CFDI representation from account.invoice
-            @param tax: tax values computed from original compute_all function
-                on account.invoice.tax object
-            @type tax: dictionary
-            @return: dictionary populated with all values needed for tax
-                excluding IEPS tax if partner is not IEPS subjected
-            @rtype: dictionary or None
-            """
-            tax_record = self.env["account.tax"].browse(tax["id"])
-            tax_group = tax_record.tax_category_id
-            # IEPS tax only must be included when partner is IEPS subjected
-            if tax_group.name == "IEPS" and not partner.ieps_subjected:
-                return
-            # TODO: Delete on version 3.0.0
-            if "base" not in tax:
-                tax["base"] = currency.cfdi_round(tax["price_unit"] * self.quantity)
-            tax["group"] = tax_group.name
-            tax["type"] = tax_record.type
-            tax["TasaOCuota"] = abs(tax_record.amount)
-            return tax
-
-        currency = self.invoice_id.currency_id
-        precision = self.env["decimal.precision"].precision_get("Product Price")
-        total_discount = 1 - self.discount / 100.0
-        # Include global discount
-        total_discount *= 1 - self.invoice_id.global_discount / 100
-        price = float_round(self.price_unit * total_discount, precision)
-        partner = self.invoice_id.partner_id
-        # Check if IEPS is on taxes, this will be used later to know if need price
-        # to be recalculated because IEPS must be price included as partner is not
-        # IEPS subjected and product include IEPS taxes
-        ieps_group = self.env.ref("l10n_mx.tax_category_ieps")
-        is_ieps_tax_subjected = any(
-            tax.tax_category_id == ieps_group for tax in self.invoice_line_tax_id
-        )
-        is_price_included = any(
-            tax.price_include for tax in self.invoice_line_tax_id
-        )
-        # Compute taxes using original compute_all function from
-        # account.invoice.tax to get same result for CFDI display
-        res = self.invoice_line_tax_id.compute_all(
-            price,
-            self.quantity,
-            product=self.product_id,
-            partner=partner,
-            currency=self.invoice_id.currency_id,
-        )
-        # pylint: disable=C1801
-        if len(res["taxes"]) == 0:
-            raise ValidationError(
-                _("Product {p} must have at least one tax selected.").format(
-                    p=self.product_id.name
-                )
-            )
-        taxes = []
-        taxes_list = iter(res["taxes"])
-        tax = next(taxes_list)
-        # Iterate taxes and append to the new tax list as needed
-        while True:
-            tax = process_tax(tax)
-            if tax:
-                taxes.append(tax)
-            try:
-                tax = next(taxes_list)
-            except StopIteration:
-                if tax is None:
-                    raise ValidationError(
-                        _(
-                            "Incorrect tax sequence configuration, check "
-                            "this data in Account >> Tax >> Sequence"
-                        )
-                    )
-                break
-        res["price_unit"] = self.price_unit
-        # Recompute price_unit is needed when any tax is setup to price included or
-        # when product is IEPS subjected but not partner
-        if is_price_included or (not partner.ieps_subjected and is_ieps_tax_subjected):
-            # Send round=False in context to avoid rounding to wrong value when working
-            # with high Product Price precision (6 digits)
-            res["price_unit"] = self.invoice_line_tax_id.with_context(
-                round=False
-            ).compute_all(
-                res["price_unit"], 1.0, product=self.product_id, partner=partner
-            )[
-                "base"
-            ]
-            # Round price_unit to Product Price precision after computing taxes
-            res["price_unit"] = float_round(
-                res["price_unit"],
-                self.env["decimal.precision"].precision_get("Product Price"),
-            )
-
-        res["importe"] = currency.round(res["price_unit"] * self.quantity)
-        res["descuento"] = currency.round(res["importe"] * (1 - total_discount))
-        # Overrides original taxes with the list computed by us
-        res["taxes"] = [Dict2obj(t) for t in taxes]
-        return Dict2obj(res)
diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index 06a0050e1e..7cfe80dede 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -1,19 +1,164 @@
 # -*- coding: utf-8 -*-
 
 import logging
+import pytz
+from datetime import datetime, timedelta
 
-from openerp import api, models
-from openerp.exceptions import Warning as UserError
-from openerp.tools.translate import _
+from odoo import api, fields, models
+from odoo.exceptions import ValidationError, Warning as UserError
+from odoo.tools.float_utils import float_round
+from odoo.tools.translate import _
 
 
 _logger = logging.getLogger(__name__)
 
 
 class AccountMove(models.Model):
-    _inherit = "account.move"
+    _name = "account.move"
+    _inherit = ["account.move", "base.cfdi"]
+
+    @property
+    def formapago(self):
+        """Return payment type for display on CFDI"""
+        self.ensure_one()
+        try:
+            code = self.payment_type_ids[0].code
+        except IndexError:
+            code = "99"
+        return code
+
+    @property
+    def descuento(self):
+        self.ensure_one()
+        discount = 0.0
+        for line in self.invoice_line_ids:
+            discount += line.descuento
+        return discount
+
+    @property
+    def subtotal(self):
+        self.ensure_one()
+        subtotal = 0.0
+        for line in self.invoice_line_ids:
+            subtotal += line.importe
+        return subtotal
+
+    @property
+    def total(self):
+        self.ensure_one()
+        return (
+            self.subtotal
+            - self.descuento
+            + self.impuestos["total_traslados"]
+            + self.impuestos["total_retenciones"]
+            + self.impuestos["total_locales"]
+        )
+
+    @property
+    def impuestos(self):
+        """Return computed taxes for display on CFDI"""
+        self.ensure_one()
+        tax_grouped = {}
+        taxes = {
+            "traslados": [],
+            "retenciones": [],
+            "locales": [],
+            "total_traslados": 0.0,
+            "total_retenciones": 0.0,
+            "total_locales": 0.0,
+        }
+
+        for line in self.invoice_line_ids:
+            for tax in line.export_invoice_line_for_xml().taxes:
+                # Mimic logic from compute function in account.invoice.tax
+                # object to group taxes from invoice lines and be able to get
+                # the same result for display on CFDI
+                if self.move_type in ("out_invoice", "in_invoice"):
+                    tax.account_id = tax.account_collected_id or line.account_id.id
+                    tax.analytic_id = tax.account_analytic_collected_id
+                else:
+                    tax.account_id = tax.account_paid_id or line.account_id.id
+                    tax.analytic_id = tax.account_analytic_paid_id
+
+                key = (tax.id, tax.account_id, tax.analytic_id)
+                if key not in tax_grouped:
+                    tax_grouped[key] = tax
+                else:
+                    tax_grouped[key].amount += tax.amount
+                    tax_grouped[key].base += tax.base
+
+        # Classify taxes for CFDI
+        for dummy, tax in tax_grouped.items():
+            if tax.group in ["IVA", "IEPS", "ISR"]:
+                if tax.amount >= 0:
+                    taxes["traslados"].append(tax)
+                    taxes["total_traslados"] += tax.amount
+                else:
+                    taxes["retenciones"].append(tax)
+                    taxes["total_retenciones"] += tax.amount
+            else:
+                taxes["locales"].append(tax)
+                taxes["total_locales"] += tax.amount
+        return taxes
+
+    # pylint: disable=W0212
+    address_issued_id = fields.Many2one(
+        "res.partner",
+        "Address Issued Invoice",
+        readonly=True,
+        states={"draft": [("readonly", False)]},
+        help="This address will be used as address that issued "
+        "for electronic invoice",
+        compute="_compute_address_issued",
+    )
+    datetime = fields.Datetime(compute="_compute_datetime")
+    date_invoice_cancel = fields.Datetime(
+        "Date Invoice Cancelled",
+        readonly=True,
+        copy=False,
+        help="If the invoice is cancelled, save the date" " when was cancel",
+    )
+    payment_method_id = fields.Many2one(
+        "cfdi.payment.method",
+        string="Payment Method",
+        readonly=True,
+        states={"draft": [("readonly", False)]},
+        help="Payment method associated with this payment term according",
+    )
+    cfdi_use = fields.Many2one(
+        "cfdi.use", "CFDI use", readonly=True, states={"draft": [("readonly", False)]}
+    )
+    cfdi_relation_type = fields.Many2one("cfdi.relation.type", "CFDI Relation type")
+    state = fields.Selection(
+        selection_add=[("waiting", _("To cancel"))],
+        ondelete={'waiting': 'cascade'}
+    )
+    l10n_mx_edi_to_cancel = fields.Char(
+        #compute="_compute_l10n_mx_edi_to_cancel",
+        #search="_search_l10n_mx_edi_to_cancel",
+        help="Technical field to display a warning when an invoice must be canceled "
+        "because have being replaced by a new one.",
+    )
+    l10n_mx_edi_original_invoice = fields.Many2one(
+        "account.move",
+        #compute="_compute_l10n_mx_edi_to_cancel",
+        help="Technical field to relate origin invoice with substitute",
+    )
+    cfdi_periodicity = fields.Selection(
+        [
+            ("01", "Daily"),
+            ("02", "Weekly"),
+            ("03", "Biweekly"),
+            ("04", "Monthly"),
+        ],
+        default="04",
+    )
+
+    l10n_mx_export = fields.Boolean(
+        compute="_compute_export",
+        string="Merchandise export",
+    )
 
-    @api.multi
     def button_validate(self):
         """
             Extend `AccountMove.button_validate`: prevents  to manipulate the
@@ -28,3 +173,498 @@ class AccountMove(models.Model):
                       "for a request to cancel.") % account_move.name
                 )
         return super(AccountMove, self).button_validate()
+
+    def _get_cfdi_datetime(self):
+        """This base function inherits the creation of the cfdi datetime
+        what it basically does is respect the date_invoice from invoice form
+        """
+        self.ensure_one()
+        date_invoice = fields.Datetime.from_string(self.invoice_date)
+        time_now = fields.Datetime.context_timestamp(self, datetime.now())
+        # If we are singing an invoice in the past we need to move forward 1 minute the
+        # computed time to be in the 72 hours range defined by SAT
+        # On the opposite if we are singing an invoice for today we move back 1 minute
+        # the computed time to prevent false errors about being out of 72 hours range
+        if date_invoice.date() < time_now.date():
+            time_now += timedelta(minutes=1)
+        else:
+            time_now -= timedelta(minutes=1)
+        date_create = datetime.combine(date_invoice, time_now.timetz())
+        # Needed to save date into the database as until now we are using user timezone
+        # to express the datetime that will cause double timezone conversion if kept
+        date_create = date_create.astimezone(tz=pytz.utc)
+        return fields.Datetime.to_string(date_create)
+
+    @api.depends("journal_id")
+    def _compute_address_issued(self):
+        for invoice in self:
+            if invoice.journal_id.address_issued_id:
+                invoice.address_issued_id = invoice.journal_id.address_issued_id
+            else:
+                invoice.address_issued_id = invoice.company_id.partner_id
+
+    def _compute_sequence_id(self):
+        for record in self:
+            record.sequence_id = record.journal_id.sequence_id
+
+    def _compute_l10n_mx_edi_to_cancel(self):
+        """Computes legend to display when an invoice needs to be cancelled because
+        have being substituted by a new one.
+        """
+        # Get substitution relation to compare
+        substitution = self.env.ref("l10n_mx_base.cfdi_relation_type_04")
+        invoices_to_cancel = self.filtered(
+            lambda i: i.move_type == "out_invoice" and i.state in ("posted",)
+        )
+        for inv in invoices_to_cancel:
+            message = ""
+            origin_documents = inv.refund_invoice_ids.filtered(
+                lambda i:
+                    i.state in ("posted",) and i.move_type == "out_invoice"
+            )
+            is_substitue = any(
+                [o.cfdi_relation_type == substitution for o in origin_documents]
+            )
+            if origin_documents and is_substitue:
+                message = _("This invoice must be cancelled because have being "
+                            "replaced with invoice: ")
+                inv.l10n_mx_edi_original_invoice = origin_documents[0]
+
+            inv.l10n_mx_edi_to_cancel = message
+
+    @api.model
+    def _search_l10n_mx_edi_to_cancel(self, operator, value):
+        """Allows to get ids for invoices that must be cancelled"""
+        substitution = self.env.ref("l10n_mx_base.cfdi_relation_type_04")
+
+        if operator not in ["=", "!="] or not isinstance(value, bool):
+            raise UserError(_("Operation not supported"))
+
+        if operator != "=":
+            value = not value
+
+        self._cr.execute(
+            """
+            SELECT id FROM account_move am
+            WHERE EXISTS (
+                SELECT * FROM account_invoice_refunds_rel airr
+                INNER JOIN account_move air on airr.refund_invoice_id = air.id
+                WHERE airr.original_invoice_id = am.id
+                AND air.cfdi_relation_type = %s
+                LIMIT 1
+            )
+            AND am.move_state IN ('posted',)
+            """,
+            (substitution.id,)
+        )
+        return [
+            ("id", "in" if value else "not in", [r[0] for r in self._cr.fetchall()])
+        ]
+
+    @api.model
+    def cron_invoices_pending_to_cancel(self):
+        invoices = self.env["account.move"].search([("state", "in", ["waiting"])])
+        for invoice in invoices:
+            invoice.action_consult_cancellation_status()
+
+    def _compute_datetime(self):
+        for record in self:
+            record.datetime = record.cfdi_datetime
+
+    @api.onchange("partner_id")
+    def onchange_partner_id(self):
+        """Copy fields cfdi_use, payment_method_id and cfdi_adenda_id
+        from selected partner
+        """
+        res = super(AccountMove, self).onchange_partner_id()
+        for invoice in self.filtered(lambda i: i.move_type in ("out_invoice", "out_refund")):
+            partner = invoice.partner_id
+            if partner:
+                if partner.cfdi_use_id:
+                    invoice.cfdi_use = partner.cfdi_use_id.id
+                invoice.payment_method_id = partner.payment_method_id.id
+                invoice.cfdi_adenda_ids = [(6, 0, partner.cfdi_adenda_ids._ids)]
+        return res
+
+    @api.model
+    def _prepare_refund(
+        self, invoice, date=None, period_id=None, description=None, journal_id=None
+    ):
+        """Overrides the prepare refund function to set field UsoCFDI"""
+        values = super(AccountMove, self)._prepare_refund(
+            invoice,
+            date=date,
+            period_id=period_id,
+            description=description,
+            journal_id=journal_id,
+        )
+        # We set field UsoCFDI to Descuentos y devoluciones for all refunds
+        usocfdi = self.env.ref("l10n_mx_base.cfdi_use_G02")
+        values["cfdi_use"] = usocfdi.id
+        values["cfdi_relation_type"] = self._context.get("cfdi_relation_type")
+        payment_type = self.env.ref("l10n_mx_base.pay_method_condonacion")
+        values["payment_type_ids"] = [(4, payment_type.id, None)]
+        payment_method = self.env.ref("l10n_mx_base.cfdi_payment_method_1")
+        values["payment_method_id"] = payment_method.id
+
+        return values
+
+    def action_post(self):
+        res = super(AccountMove, self).action_post()
+        for record in self:
+            record.action_invoice_validate()
+        return res
+
+    def action_invoice_validate(self):
+        for account_invoice in self:
+            if account_invoice.journal_id.sign_sat:
+                # Create new CFDI object for this invoice
+                account_invoice.create_cfdi()
+
+    def action_cancel(self):
+        """Extend `AccountMove.action_cancel()`; Cancels the CFDI related to the
+        invoice
+        """
+        # Get only invoices with related cfdi to cancel cfdi before cancel invoice
+        cfdis = self.filtered(
+            lambda i:
+                i.journal_id.sign_sat
+                and i.cfdi_id
+                and i.cfdi_id.state not in ["draft", "cancel"]
+        )
+        for invoice in cfdis:
+            # Ensure we can cancel this invoice
+            invoice.check_if_can_cancel()
+            # If l10n_mx_edi_original_invoice is set save uuid to send info to PAC
+            # while cancel invoice
+            invoice.cfdi_id.substitute_cfdi_uuid = (
+                invoice.l10n_mx_edi_original_invoice.cfdi_id.uuid
+            )
+            cancelacion = invoice.cancel_cfdi()[0]
+            if cancelacion:
+                # CFDI cancelled (cancelacion == True) must cancel invoice too
+                super(AccountMove, invoice).action_cancel()
+            elif cancelacion is None:
+                # CFDI set to approval (cancelacion == None) must set invoice
+                # to waiting too
+                invoice.write({"state": "waiting"})
+            elif cancelacion is False:
+                # CFDI cancel denied (cancelacion == False) must get back invoice
+                # to open state
+                self.undo_waiting_state()
+
+        # Call super only with invoices without CFDI
+        invoices = self - cfdis
+        return super(AccountMove, invoices).action_cancel()
+
+    def undo_waiting_state(self):
+        """When cancel is negate revert invoice to open and post account_move"""
+        for record in self:
+            to_update = record.filtered(lambda i: i.state == "waiting")
+            to_update.write({"state": "open"})
+            to_update.mapped("move_id").post()
+
+    def action_consult_cancellation_status(self):
+        """Verify cancellation status"""
+        # TODO: Is this really needed? Maybe we can reuse the action_cancel
+        for invoice in self:
+            try:
+                with self.env.cr.savepoint():
+                    status_cancelacion = invoice.consult_cfdi_cancellation_status()
+                    if status_cancelacion is None:
+                        invoice.message_post(
+                            body=_("No status update found on SAT")
+                        )
+                    elif status_cancelacion is False:
+                        self.undo_waiting_state()
+                    else:
+                        try:
+                            invoice.action_cancel()
+                        except Exception as e:
+                            invoice.message_post(
+                                body=_("The invoice could not be canceled")
+                            )
+            except Exception as e:
+                invoice.message_post(
+                    body=_(
+                        "Could not check SAT invoice status "
+                        "due to the following error: %s."
+                    ) % (e)
+                )
+
+    def _validate_cfdi_data(self):
+        for record in self:
+            record._validate_account_invoice_fields()
+            record._validate_account_invoice_partners()
+
+    def _validate_account_invoice_fields(self):
+        """ This function is to validate that the invoice has an
+            issue address, partner and company"""
+        for record in self:
+            self._cfdi_validate_required_fields(
+                record,
+                [
+                    "cfdi_use",
+                    "partner_id",
+                    "payment_type_ids",
+                    "address_issued_id",
+                    "journal_id",
+                ],
+            )
+
+    def _validate_account_invoice_partners(self):
+        """ This function is to validate that the vat of the
+            commercial partner and company"""
+
+        required = [
+            "vat",
+            "zip",
+            "cfdi_fiscal_regime_id",
+        ]
+
+        for record in self:
+            self._cfdi_validate_required_fields(
+                record.address_issued_id,
+                required,
+            )
+
+            self._cfdi_validate_required_fields(
+                record.company_id.partner_id,
+                required,
+            )
+
+            self._cfdi_validate_required_fields(
+                record.commercial_partner_id,
+                required,
+            )
+
+            if record.partner_id.country_id.code_alpha3 == "MEX":
+                self._cfdi_validate_required_fields(
+                    record.partner_id,
+                    required,
+                )
+
+    def _compute_export(self):
+        for record in self:
+            record.l10n_mx_export = bool(
+                record.cfdi_adenda_ids.filtered(
+                    lambda i: i.code == "02"
+                ) and record.commercial_partner_id.country_id.code_alpha3 != "MEX"
+            )
+
+
+class AccountMoveLine(models.Model):
+    _inherit = "account.move.line"
+
+    cfdi_numero_identificacion = fields.Char(
+        string="Identification Number",
+        help="This number is the identification number for invoice line in cfdi",
+        compute="_compute_cfdi_ident_number",
+    )
+    cfdi_cuentapredial = fields.Char(
+        string="Cuenta Predial",
+        help="Predial number for real state lease invoices",
+    )
+    cfdi_custom_number = fields.Many2many(
+        "cfdi.import.pediment.number",
+        "invoice_pediment_rel",
+        "invoice_line_id",
+        "cfdi_custom_number_id",
+        "N° Pediment",
+    )
+
+    @api.constrains("cfdi_cuentapredial")
+    def _constraint_cfdi_cuentapredial(self):
+        for record in self:
+            if record.cfdi_cuentapredial and not record.cfdi_cuentapredial.isdigit():
+                raise ValidationError(
+                    _(
+                        "Predial Account must be only numbers.\n"
+                        "All letters must be replaced by '0'"
+                    )
+                )
+
+    @api.depends("product_id")
+    def _compute_cfdi_ident_number(self):
+        """Update cfdi_numero_identificacion only for invoice lines that are not signed
+        yet and that are customer's documents.
+        """
+        to_update = self.filtered(
+            lambda line: line.move_id.cfdi_state == "draft"
+            and line.move_id.move_type in ("out_invoice", "out_refund")
+        )
+        for record in to_update:
+            record.cfdi_numero_identificacion = record.product_id.default_code
+
+    @property
+    def cfdi_product_code(self):
+        """Return computed cfdi code for current line based on code selected
+        for product or product category.
+        Raise a validation error if no code found"""
+        self.ensure_one()
+        if self.product_id.cfdi_product_service_id.exists():
+            return self.product_id.cfdi_product_service_id.code
+        # Traverse product category to find cfdi product code
+        category = self.product_id.categ_id
+        while category:
+            if category.cfdi_product_service_id:
+                return category.cfdi_product_service_id.code
+            else:
+                category = category.parent_id
+        # If not have return for this point raise an error
+        raise ValidationError(
+            _("Missing SAT code for product: {product}").format(
+                product=self.product_id.name
+            )
+        )
+
+    @property
+    def importe(self):
+        """Return computed total line for display on CFDI"""
+        self.ensure_one()
+        return self.export_invoice_line_for_xml().importe
+
+    @property
+    def descuento(self):
+        """Property that computes the discount amount in currency for CFDI XML
+        invoice view
+        """
+        self.ensure_one()
+        return self.export_invoice_line_for_xml().descuento
+
+    @property
+    def impuestos(self):
+        """Return computed taxes for display on CFDI"""
+        self.ensure_one()
+        taxes = {"traslados": [], "retenciones": [], "locales": []}
+        for tax in self.export_invoice_line_for_xml().taxes:
+            if tax.group in ["IVA", "IEPS", "ISR"]:
+                if tax.amount >= 0:
+                    taxes["traslados"].append(tax)
+                else:
+                    taxes["retenciones"].append(tax)
+            else:
+                taxes["locales"].append(tax)
+        return taxes
+
+    @property
+    def valorunitario(self):
+        """Return computed price unit for display on CFDI"""
+        self.ensure_one()
+        return self.export_invoice_line_for_xml().price_unit
+
+    def export_invoice_line_for_xml(self):
+        # pylint: disable=R1710
+        """Computes all values needed for export account.move.line as CFDI"""
+
+        class Dict2obj(object):
+            """Convert dictionary to object
+            @source http://stackoverflow.com/a/1305561/383912
+            """
+
+            def __init__(self, d):
+                self.__dict__["d"] = d
+
+            def __getattr__(self, key):
+                value = self.__dict__["d"][key]
+                return value
+
+        def process_tax(tax):
+            """Helper function to populate extra values needed for display
+            taxes on CFDI representation from account.move
+            @param tax: tax values computed from original compute_all function
+                on account.move.tax object
+            @type tax: dictionary
+            @return: dictionary populated with all values needed for tax
+                excluding IEPS tax if partner is not IEPS subjected
+            @rtype: dictionary or None
+            """
+            tax_record = self.env["account.tax"].browse(tax["id"])
+            tax_group = tax_record.tax_category_id
+            # IEPS tax only must be included when partner is IEPS subjected
+            if tax_group.name == "IEPS" and not partner.ieps_subjected:
+                return
+            # TODO: Delete on version 3.0.0
+            if "base" not in tax:
+                tax["base"] = currency.cfdi_round(tax["price_unit"] * self.quantity)
+            tax["group"] = tax_group.name
+            tax["type"] = tax_record.type
+            tax["TasaOCuota"] = abs(tax_record.amount)
+            return tax
+
+        currency = self.move_id.currency_id
+        precision = self.env["decimal.precision"].precision_get("Product Price")
+        total_discount = 1 - self.discount / 100.0
+        # Include global discount
+        total_discount *= 1 - self.move_id.global_discount / 100
+        price = float_round(self.price_unit * total_discount, precision)
+        partner = self.move_id.partner_id
+        # Check if IEPS is on taxes, this will be used later to know if need price
+        # to be recalculated because IEPS must be price included as partner is not
+        # IEPS subjected and product include IEPS taxes
+        ieps_group = self.env.ref("l10n_mx.tax_category_ieps")
+        is_ieps_tax_subjected = any(
+            tax.tax_category_id == ieps_group for tax in self.invoice_line_tax_id
+        )
+        is_price_included = any(
+            tax.price_include for tax in self.invoice_line_tax_id
+        )
+        # Compute taxes using original compute_all function from
+        # account.move.tax to get same result for CFDI display
+        res = self.invoice_line_tax_id.compute_all(
+            price,
+            self.quantity,
+            product=self.product_id,
+            partner=partner,
+            currency=self.move_id.currency_id,
+        )
+        # pylint: disable=C1801
+        if len(res["taxes"]) == 0:
+            raise ValidationError(
+                _("Product {p} must have at least one tax selected.").format(
+                    p=self.product_id.name
+                )
+            )
+        taxes = []
+        taxes_list = iter(res["taxes"])
+        tax = next(taxes_list)
+        # Iterate taxes and append to the new tax list as needed
+        while True:
+            tax = process_tax(tax)
+            if tax:
+                taxes.append(tax)
+            try:
+                tax = next(taxes_list)
+            except StopIteration:
+                if tax is None:
+                    raise ValidationError(
+                        _(
+                            "Incorrect tax sequence configuration, check "
+                            "this data in Account >> Tax >> Sequence"
+                        )
+                    )
+                break
+        res["price_unit"] = self.price_unit
+        # Recompute price_unit is needed when any tax is setup to price included or
+        # when product is IEPS subjected but not partner
+        if is_price_included or (not partner.ieps_subjected and is_ieps_tax_subjected):
+            # Send round=False in context to avoid rounding to wrong value when working
+            # with high Product Price precision (6 digits)
+            res["price_unit"] = self.invoice_line_tax_id.with_context(
+                round=False
+            ).compute_all(
+                res["price_unit"], 1.0, product=self.product_id, partner=partner
+            )[
+                "base"
+            ]
+            # Round price_unit to Product Price precision after computing taxes
+            res["price_unit"] = float_round(
+                res["price_unit"],
+                self.env["decimal.precision"].precision_get("Product Price"),
+            )
+
+        res["importe"] = currency.round(res["price_unit"] * self.quantity)
+        res["descuento"] = currency.round(res["importe"] * (1 - total_discount))
+        # Overrides original taxes with the list computed by us
+        res["taxes"] = [Dict2obj(t) for t in taxes]
+        return Dict2obj(res)
diff --git a/l10n_mx_facturae/models/account_voucher.py b/l10n_mx_facturae/models/account_payment.py
similarity index 89%
rename from l10n_mx_facturae/models/account_voucher.py
rename to l10n_mx_facturae/models/account_payment.py
index 6258e9bfbf..92418669cf 100644
--- a/l10n_mx_facturae/models/account_voucher.py
+++ b/l10n_mx_facturae/models/account_payment.py
@@ -1,38 +1,35 @@
 # -*- coding: utf-8 -*-
 
-from openerp import api, fields, models
-from openerp.exceptions import ValidationError
-from openerp.tools import float_round
-from openerp.tools.translate import _
+from odoo import api, fields, models
+from odoo.exceptions import ValidationError
+from odoo.tools import float_round
+from odoo.tools.translate import _
 
 
-class AccountVoucher(models.Model):
-    _name = "account.voucher"
-    _inherit = ["account.voucher", "base.cfdi"]
+class AccountPayment(models.Model):
+    _name = "account.payment"
+    _inherit = ["account.payment", "base.cfdi"]
 
     show_unreconcile = fields.Boolean(
         compute="_compute_show_unreconcile",
         help="Helper field to hide unreconcile button",
     )
 
-    @api.multi
     @api.depends("state", "cfdi_state")
     def _compute_show_unreconcile(self):
-        for voucher in self:
-            if voucher.cfdi_state in ["signed", "done"]:
-                voucher.show_unreconcile = False
-            elif voucher.state in ["draft", "cancel"]:
-                voucher.show_unreconcile = False
+        for payment in self:
+            if payment.cfdi_state in ["signed", "done"]:
+                payment.show_unreconcile = False
+            elif payment.state in ["draft", "cancel"]:
+                payment.show_unreconcile = False
             else:
-                voucher.show_unreconcile = True
+                payment.show_unreconcile = True
 
-    @api.multi
     def _compute_sequence_id(self):
         for record in self:
             record.sequence_id = record.journal_id.sequence_id
 
-    @api.multi
-    def sign_voucher(self):
+    def sign_payment(self):
         """Create CFDI for selected vouchers"""
         # Only vouchers to sign are the receipts
         receipts = self.filtered(lambda r: r.type == "receipt")
@@ -40,32 +37,31 @@ class AccountVoucher(models.Model):
         for receipt in receipts.filtered(lambda r: not r.cfdi_id.exists()):
             receipt.create_cfdi()
 
-    @api.multi
     def cancel_voucher(self):
         """Cancel CFDI for selected vouchers"""
-        res = super(AccountVoucher, self).cancel_voucher()
-        self.cancel_cfdi()
-        # Delete relation from voucher and CFDI
-        self.cfdi_id = False
+        res = super(AccountPayment, self).cancel_voucher()
+        for record in self:
+            record.cancel_cfdi()
+            # Delete relation from voucher and CFDI
+            record.cfdi_id = False
         return res
 
-    @api.multi
     def substitute_voucher(self):
         """Create new voucher for substitute this one"""
-        self._cancel_cfdi()
-        # After cancel voucher we must re open it
-        self.action_cancel_draft()
+        for record in self:
+            record._cancel_cfdi()
+            # After cancel voucher we must re open it
+            record.action_cancel_draft()
 
-    @api.multi
     def _cancel_cfdi_related_document(self):
-        self.cancel_voucher()
+        for record in self:
+            self.cancel_voucher()
 
-    @api.multi
     def replace_cfdi(self):
         """Cancel voucher cfdi by replacing with 1 MXN voucher"""
-        self._cancel_cfdi()
+        for record in self:
+            self._cancel_cfdi()
 
-    @api.multi
     def currency_rate(self):
         """Compute currency rate used for current voucher to display on XML
         This calls currency.compute() with the right context,
@@ -117,19 +113,18 @@ class AccountVoucher(models.Model):
             )
         return invoices
 
-    @api.multi
     def numparcialidad(self, invoice):
         """Computes payment number based on all payments done to invoice"""
-        # Get all payments done to given invoice
-        payments = invoice.mapped("payment_ids") - self.move_ids
-        # Leave only payments done in cash or bank older than current
-        payments = payments.filtered(
-            lambda r: r.date >= invoice.date_invoice
-            and r.journal_id.type in ("cash", "bank")
-        )
-        return len(payments) + 1
+        for record in self:
+            # Get all payments done to given invoice
+            payments = invoice.mapped("payment_ids") - record.move_ids
+            # Leave only payments done in cash or bank older than current
+            payments = payments.filtered(
+                lambda r: r.date >= invoice.date_invoice
+                and r.journal_id.type in ("cash", "bank")
+            )
+            return len(payments) + 1
 
-    @api.multi
     def impsaldoant(self, invoice):
         """Computes amount_residual for invoice before current voucher"""
         self.ensure_one()
@@ -172,7 +167,6 @@ class AccountVoucher(models.Model):
                 amount_residual -= abs(payment.debit - payment.credit)
         return self.currency_id.cfdi_round(amount_residual)
 
-    @api.multi
     def imppagado(self, invoice):
         """Computes total amount payment on this voucher for given invoice"""
         self.ensure_one()
@@ -206,7 +200,6 @@ class AccountVoucher(models.Model):
         amount_paid = min(amount_paid, amount_residual)
         return amount_paid
 
-    @api.multi
     def tipocambiodr(self, invoice):
         """Compute currency rate used for given invoice to display on XML
         This calls curreny.compute() with the right context,
@@ -242,7 +235,6 @@ class AccountVoucher(models.Model):
 
         return value
 
-    @api.multi
     def impuestos_dr(self, invoice, tax_type="traslados"):
         """Computes move lines for on payment taxes related to given invoice"""
         self.ensure_one()
@@ -253,7 +245,6 @@ class AccountVoucher(models.Model):
         tax_moves = self.env["account.move.line"].search(domain)
         return tax_moves
 
-    @api.multi
     def totales_p(self, tax_type="traslados"):
         """Computes move lines for on payment taxes related to given invoice"""
         self.ensure_one()
@@ -286,7 +277,6 @@ class AccountVoucher(models.Model):
 
         return tax_totals
 
-    @api.multi
     def impuestos_p(self, tax_type="traslados"):
         """Computes move lines for on payment taxes related to given invoice"""
         self.ensure_one()
@@ -339,7 +329,6 @@ class AccountVoucher(models.Model):
 
         return [line for line in tax_totals.values()]
 
-    @api.multi
     def _l10n_mx_get_taxes_domain(self, tax_reconciles, tax_type="traslados"):
         self.ensure_one()
         # Get tax moves done for this payment and this invoice
@@ -363,12 +352,11 @@ class AccountVoucher(models.Model):
 
         return domain
 
-    @api.multi
     def _validate_cfdi_data(self):
-        self._validate_account_voucher_vat()
-        self._validate_account_voucher_payment_type()
+        for record in self:
+            record._validate_account_voucher_vat()
+            record._validate_account_voucher_payment_type()
 
-    @api.multi
     def _validate_account_voucher_vat(self):
         """ This is function is to validate that the
         partner has a vat, name and property account position """
@@ -402,7 +390,6 @@ class AccountVoucher(models.Model):
                 required,
             )
 
-    @api.multi
     def _validate_account_voucher_payment_type(self):
         for record in self:
 
diff --git a/l10n_mx_facturae/models/email_template.py b/l10n_mx_facturae/models/email_template.py
index bfdcf7410b..c24134b6e2 100644
--- a/l10n_mx_facturae/models/email_template.py
+++ b/l10n_mx_facturae/models/email_template.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from openerp import api, models
+from odoo import api, models
 
 
 class EmailTemplate(models.Model):
diff --git a/l10n_mx_facturae/models/res_company.py b/l10n_mx_facturae/models/res_company.py
new file mode 100644
index 0000000000..4332c84e31
--- /dev/null
+++ b/l10n_mx_facturae/models/res_company.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+
+from odoo import api, fields, models
+
+
+class ResCompany(models.Model):
+    _inherit = "res.company"
+
+    cfdi_use_id = fields.Many2one(
+        "cfdi.use",
+        string="Use CFDI",
+        compute="_compute_use_cfdi",
+        inverse="_inverse_use_cfdi",
+    )
+
+    def _compute_use_cfdi(self):
+        for company in self:
+            use_cfdi = company.partner_id.cfdi_use_id
+            company.cfdi_use_id = use_cfdi.id
+
+    def _inverse_use_cfdi(self):
+        for company in self:
+            partner = company.partner_id
+            partner.cfdi_use_id = company.cfdi_use_id
diff --git a/l10n_mx_facturae/models/res_partner.py b/l10n_mx_facturae/models/res_partner.py
index 95bc6a89f0..9ea8f093e4 100644
--- a/l10n_mx_facturae/models/res_partner.py
+++ b/l10n_mx_facturae/models/res_partner.py
@@ -1,38 +1,54 @@
 # -*- coding: utf-8 -*-
 
-from openerp import api, fields, models
+from odoo import api, fields, models
 
 
 class ResPartner(models.Model):
     _inherit = "res.partner"
 
-    cfdi_use = fields.Many2one(
+    cfdi_use_id = fields.Many2one(
         "cfdi.use",
         "CFDI use",
         help="Cfdi usage that will be used by default on this customer "
         "invoices and credit notes",
     )
+
     cfdi_adenda_ids = fields.Many2many(
         "cfdi.adenda",
         string="CFDI Adendas",
         help="This field allows adding a node or addendum to the invoice",
     )
+
     payment_method_id = fields.Many2one(
         "cfdi.payment.method",
         string="Payment Method",
         help="Payment method associated with this partner according"
-        "to CFDI 3.3 catalog.",
+        "to CFDI 4.0 catalog.",
     )
+
     supplier_number = fields.Char(
         help="Number or reference that the Client assigned to our company."
     )
-    gln_number = fields.Char("GLN Number", help="Customer or Delivery branch")
+
+    gln_number = fields.Char(
+        "GLN Number",
+        help="Customer or Delivery branch"
+    )
+
     edi = fields.Char("User EDI")
-    show_glnnumber = fields.Boolean(compute="_compute_show_number")
-    show_suppliernumber = fields.Boolean(compute="_compute_show_number")
-    show_edi = fields.Boolean(compute="_compute_show_number")
 
-    @api.multi
+    show_glnnumber = fields.Boolean(
+        compute="_compute_show_number"
+    )
+
+    show_suppliernumber = fields.Boolean(
+        compute="_compute_show_number"
+    )
+
+    show_edi = fields.Boolean(
+        compute="_compute_show_number"
+    )
+
     @api.depends("cfdi_adenda_ids")
     def _compute_show_number(self):
         for record in self:
diff --git a/l10n_mx_facturae/report/account_invoice.odt b/l10n_mx_facturae/report/account_move.odt
similarity index 100%
rename from l10n_mx_facturae/report/account_invoice.odt
rename to l10n_mx_facturae/report/account_move.odt
diff --git a/l10n_mx_facturae/report/account_voucher.odt b/l10n_mx_facturae/report/account_payment.odt
similarity index 100%
rename from l10n_mx_facturae/report/account_voucher.odt
rename to l10n_mx_facturae/report/account_payment.odt
diff --git a/l10n_mx_facturae/security/res_groups.xml b/l10n_mx_facturae/security/res_groups.xml
index 9cc098cef4..66505f1597 100644
--- a/l10n_mx_facturae/security/res_groups.xml
+++ b/l10n_mx_facturae/security/res_groups.xml
@@ -4,7 +4,7 @@
 
     <record id="cfdi_cuentapredial" model="res.groups">
         <field name="name">Cfdi Cuenta Predial</field>
-        <field name="category_id" ref="l10n_mx.module_category_l10n_mx"/>
+        <field name="category_id" ref="l10n_mx_base.module_category_l10n_mx"/>
         <field name="comment">The user will have access to add Cuenta Predial information to invoice lines.</field>
     </record>
 
diff --git a/l10n_mx_facturae/templates/account_invoice.txt b/l10n_mx_facturae/templates/account_move.txt
similarity index 100%
rename from l10n_mx_facturae/templates/account_invoice.txt
rename to l10n_mx_facturae/templates/account_move.txt
diff --git a/l10n_mx_facturae/templates/account_move.xml b/l10n_mx_facturae/templates/account_move.xml
new file mode 100644
index 0000000000..bf3e5e9317
--- /dev/null
+++ b/l10n_mx_facturae/templates/account_move.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<odoo>
+    <template id="account_move_template_cfdi_xml">
+
+        <cfdi:Comprobante t-foreach="docs" t-as="cfdi"
+            xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd"
+            xmlns:cfdi="http://www.sat.gob.mx/cfd/4"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            Version="4.0"
+            t-attf-Serie="cfdi.serie"
+            t-attf-Exportacion="cfdi.l10n_mx_export ? '02' : '01'"
+            Folio="$o.folio"
+            Fecha="${ format_datetime(o.cfdi_datetime, '%Y-%m-%dT%H:%M:%S', tz=user.partner_id.tz) }"
+            Sello="@"
+            NoCertificado="@"
+            Certificado="@"
+            FormaPago="$o.formapago"
+            CondicionesDePago="${ html_escape(o.payment_term.name) }"
+            SubTotal="${ '{0:.2f}'.format(o.subtotal) }"
+            Descuento="${ '{0:.2f}'.format(o.descuento) }"
+            Moneda="${ o.currency_id.name }"
+            TipoCambio="${ o.currency_rate }"
+            Total="${ '{0:.2f}'.format(o.total) }"
+            TipoDeComprobante="E"
+            MetodoPago="PUE"
+            MetodoPago="$o.payment_method_id.code"
+            LugarExpedicion="${ o.address_issued_id.zip }"
+        >
+             <cfdi:CfdiRelacionados TipoRelacion="${ o.cfdi_relation_type.code }" t-if="cfdi.related_cfdi_ids">
+                 <cfdi:CfdiRelacionado  t-foreach="docs" t-as="cfdi" t-attf-UUID="cfdi.uuid"/>
+             </cfdi:CfdiRelacionados>
+            <cfdi:Emisor Rfc="EKU9003173C9" Nombre="ESCUELA KEMPER URGATE" RegimenFiscal="601"/>
+            <cfdi:Receptor Nombre="FELIX MANUEL ANDRADE BALLADO" Rfc="AABF800614HI0" UsoCFDI="S01" DomicilioFiscalReceptor="86400" RegimenFiscalReceptor="616"/>
+            <cfdi:Conceptos>
+                <cfdi:Concepto>
+
+                </cfdi:Concepto>
+            </cfdi:Conceptos>
+            <cfdi:Impuestos>
+                <cfdi:Retenciones>
+
+                </cfdi:Retenciones>
+                <cfdi:Traslados>
+
+                </cfdi:Traslados>
+            </cfdi:Impuestos>
+            <cfdi:Complemento>
+                <implocal:ImpuestosLocales>
+
+                </implocal:ImpuestosLocales>
+            </cfdi:Complemento>
+        </cfdi:Comprobante>
+
+    </template>
+
+</odoo>
diff --git a/l10n_mx_facturae/views/account_invoice.xml b/l10n_mx_facturae/views/account_move.xml
similarity index 56%
rename from l10n_mx_facturae/views/account_invoice.xml
rename to l10n_mx_facturae/views/account_move.xml
index 7bc6bcf9e7..7d72d8fd5f 100644
--- a/l10n_mx_facturae/views/account_invoice.xml
+++ b/l10n_mx_facturae/views/account_move.xml
@@ -1,23 +1,15 @@
 <?xml version="1.0"?>
-<openerp>
-<data>
+<odoo>
 
-    <act_window id="account_invoice_action_cfdi_details" name="CFDI Details"
-        domain="[
-            ('res_id', 'in', active_ids),
-            ('type_attachment', '=', 'account.invoice')
-        ]"
-        res_model="ir.attachment.facturae.mx" src_model="account.invoice" />
-
-    <record id="account_invoice_view_search" model="ir.ui.view">
-        <field name="name">account.invoice.view.search</field>
-        <field name="model">account.invoice</field>
+    <record id="account_move_view_search" model="ir.ui.view">
+        <field name="name">account.move.view.search</field>
+        <field name="model">account.move</field>
         <field name="inherit_id" ref="account.view_account_invoice_filter"/>
         <field name="arch" type="xml">
-            <field name="currency_id" position="after">
+            <field name="partner_id" position="after">
                 <field name="cfdi_id" />
             </field>
-            <group position="before">
+            <filter name="due_date" position="after">
                 <separator/>
                 <filter
                     string="To sign"
@@ -27,26 +19,24 @@
                 <filter
                     string="To cancel"
                     name="to_cancel"
-                    domain="[('l10n_mx_edi_to_cancel', '=', True)]"
                     help="Invoices that being substituted and must be cancelled" />
-            </group>
+                   <!--domain="[('l10n_mx_edi_to_cancel', '=', True)]"-->
+            </filter>
         </field>
     </record>
 
-    <record id="account_invoice_view_form_customer" model="ir.ui.view">
-        <field name="name">account.invoice.view.form.customer</field>
-        <field name="model">account.invoice</field>
-        <field name="inherit_id" ref="account.invoice_form"/>
+    <record id="account_move_view_form_customer" model="ir.ui.view">
+        <field name="name">account.move.view.form.customer</field>
+        <field name="model">account.move</field>
+        <field name="inherit_id" ref="account.view_move_form"/>
         <field name="arch" type="xml">
-            <button name="invoice_cancel" position="before">
-                <field name="is_cfdi_candidate" invisible="1" />
+            <button name="button_cancel" position="before">
+                <field name="is_cfdi_candidate" invisible="0" />
             </button>
             <xpath expr="//header" position="after">
                 <div
                     class="alert alert-danger"
                     attrs="{'invisible':[
-                    '|',
-                        ('state', '=', 'cancel'),
                         (
                             'cfdi_state',
                             'in',
@@ -63,8 +53,8 @@
                 <div
                     class="alert alert-warning"
                     role="alert"
-                    style="margin-bottom:0px;"
-                    attrs="{'invisible': [('l10n_mx_edi_to_cancel', '=', False)]}" >
+                    style="margin-bottom:0px;" >
+                    <!--attrs="{'invisible': [('l10n_mx_edi_to_cancel', '=', False)]}"-->
                     <field
                         name="l10n_mx_edi_to_cancel"
                         readonly="1"
@@ -89,63 +79,25 @@
                         }" />
                 </h4>
             </xpath>
-            <xpath expr="//sheet/group//group[last()]" position="inside">
-                <label for="cfdi_state" string="PAC State"
-                    attrs="{
-                        'invisible': [
-                            '|',
-                            ('is_cfdi_candidate', '=', False),
-                            ('state', 'not in', ['open', 'paid', 'cancel'])
-                        ]
-                    }"/>
-                <div class="o_row" 
-                    attrs="{
-                        'invisible': [
-                            '|',
-                            ('is_cfdi_candidate', '=', False),
-                            ('state', 'not in', ['open', 'paid', 'cancel'])
-                        ]
-                    }">
+            <xpath expr="//field[@name='invoice_date']" position="after">
+                <field name="payment_method_id"
+                    options="{'no_create':True, 'no_open':True}"/>
+            </xpath>
+            <xpath expr="//field[@name='payment_reference']" position="after">
+                <label for="cfdi_state" string="PAC State"/>
+                <div class="o_row" >
                     <field name="cfdi_state" class="oe_inline"/>
                     <button name="action_validate_cfdi" string="Retry"
                         class="oe_link oe_inline" type="object"
-                        groups="account.group_account_invoice"
-                        attrs="{
-                            'invisible':[
-                            '|',
-                                    ('state', '=', 'cancel'),
-                                    ('cfdi_state','in', ['signed', 'cancel', 'done', False])
-                            ]
-                        }"/>
+                        groups="account.group_account_invoice"/>
                 </div>
             </xpath>
-            <field name="partner_id" position="after">
-                <field name="cfdi_use"
-                    attrs="{
-                        'readonly': [('cfdi_state','in', ['signed', 'cancel', 'done'])],
-                        'invisible': [('is_cfdi_candidate', '=', False)]
-                    }"
-                    options="{'no_create':True}"/>
-                <field name="cfdi_adenda_ids"
-                    attrs="{
-                        'readonly': [('state','in',('cancel','paid'))],
-                        'invisible': [('is_cfdi_candidate', '=', False)]
-                    }"
-                    options="{'no_create': True,'no_open':True}"
-                    widget="many2many_tags" />
-                <field name="l10n_mx_export" invisible="1" />
-            </field>
-            <xpath expr="//page[@string='Payments']" position='after'>
-                <page name="Adendas" string="Adendas"
-                    attrs="{'invisible': [('cfdi_adenda_ids', '=', False)]}">
-                    <group name="adenda">
-                    </group>
-                </page>
+            <xpath expr="//page[@name='cfdi_configuration_move_mx']" position='after'>
                 <page string="Related" attrs="{
                         'invisible': [
                             '|', '|',
                             ('is_cfdi_candidate', '=', False),
-                            ('type', 'not in', ('out_refund','out_invoice')),
+                            ('move_type', 'not in', ('out_refund','out_invoice')),
                             ('state', '!=', 'draft'),
                             ('cfdi_relation_type', '=', False),
                         ]
@@ -159,11 +111,11 @@
                         </group>
                         <group>
                             <field name="commercial_partner_id" invisible="1"/>
-                            <field name="origin_invoice_ids"
+                            <!--<field name="origin_invoice_ids"
                                 domain="[
                                     ('commercial_partner_id', '=', commercial_partner_id),
-                                    ('state','in', ['open','paid']),
-                                    ('type','=','out_invoice'),
+                                    ('state','in', ['posted']),
+                                    ('move_type','=','out_invoice'),
                                 ]"
                                 widget="many2many_tags"
                                 options="{'no_create': True}"
@@ -174,17 +126,15 @@
                                 }"
                                 context="{
                                     'form_view_ref': 'account.invoice_form',
-                                }" />
+                                }" />-->
                         </group>
                     </group>
                  </page>
             </xpath>
-            <xpath expr="//field[@name='origin']" position="before">
-                <field name="address_issued_id"/>
-            </xpath>
-            <xpath expr="//field[@name='payment_term']" position="after">
-                <field name="payment_method_id" class="oe_inline"
-                    options="{'no_create':True, 'no_open':True}"/>
+            <xpath expr="//group[@name='sale_info_group']" position="after">
+                <group name="Extra information">
+                    <field name="address_issued_id"/>
+                </group>
             </xpath>
             <xpath expr="//field[@name='partner_id']" position="attributes">
                 <attribute
@@ -194,7 +144,6 @@
                 <attribute
                     name="domain"
                     translation="off">[
-                        ('customer', '=', True),
                         '|',
                         ('is_company', '=', True),
                         ('type', '=', 'invoice')]
@@ -204,10 +153,10 @@
                     translation="off">{'always_reload': True,'no_quick_create': True}
                 </attribute>
             </xpath>
-            <xpath expr="//field[@name='invoice_line']//tree//field[@name='account_analytic_id']" position="after">
+            <xpath expr="//field[@name='invoice_line_ids']//tree//field[@name='analytic_account_id']" position="after">
                 <field name="cfdi_cuentapredial" groups="l10n_mx_facturae.cfdi_cuentapredial" />
             </xpath>
-            <xpath expr="//page//tree//field[@name='invoice_line_tax_id']" position="before">
+            <xpath expr="//page//tree//field[@name='tax_ids']" position="before">
                 <field name="cfdi_custom_number"
                     widget="many2many_tags"
                     groups="l10n_mx.group_cfdi_custom_number"/>
@@ -215,10 +164,38 @@
         </field>
     </record>
 
-    <record id="account_invoice_view_tree" model="ir.ui.view">
-        <field name="name">account.invoice.view.tree</field>
-        <field name="model">account.invoice</field>
-        <field name="inherit_id" ref="account.invoice_tree"/>
+    <record id="account_move_cfdi_inherit_view_form" model="ir.ui.view">
+        <field name="name">account.move.cfdi.inherit.view.form</field>
+        <field name="model">account.move</field>
+        <field name="inherit_id" ref="l10n_mx_base.account_move_cfdi_view_form"/>
+        <field name="arch" type="xml">
+            <xpath expr="//group[@name='Payment Type']" position="after">
+                <group name="Fiscal data">
+                    <field name="cfdi_use"
+                        attrs="{
+                            'readonly': [('cfdi_state','in', ['signed', 'cancel', 'done'])],
+                            'invisible': [('is_cfdi_candidate', '=', False)]
+                        }"
+                        options="{'no_create':True}"/>
+                    <field name="l10n_mx_export" invisible="1"/>
+                    <field name="cfdi_adenda_ids"
+                        attrs="{
+                            'readonly': [('state','in',('cancel','paid'))],
+                            'invisible': [('is_cfdi_candidate', '=', False)]
+                        }"
+                        options="{'no_create': True,'no_open':True}"
+                        widget="many2many_tags" />
+                </group>
+                <group name="adenda">
+                </group>
+            </xpath>
+        </field>
+    </record>
+
+    <record id="account_move_view_tree" model="ir.ui.view">
+        <field name="name">account.move.view.tree</field>
+        <field name="model">account.move</field>
+        <field name="inherit_id" ref="account.view_out_invoice_tree"/>
         <field name="arch" type="xml">
             <field name="name" position="after">
                 <field string="Fiscal Number" name="cfdi_id" invisible="1" />
@@ -226,5 +203,4 @@
         </field>
     </record>
 
-</data>
-</openerp>
+</odoo>
diff --git a/l10n_mx_facturae/views/account_voucher.xml b/l10n_mx_facturae/views/account_payment.xml
similarity index 70%
rename from l10n_mx_facturae/views/account_voucher.xml
rename to l10n_mx_facturae/views/account_payment.xml
index d8f142e71d..39c99513ac 100644
--- a/l10n_mx_facturae/views/account_voucher.xml
+++ b/l10n_mx_facturae/views/account_payment.xml
@@ -1,39 +1,39 @@
 <?xml version="1.0"?>
-<openerp>
+<odoo>
 <data>
 
-    <record id="account_voucher_action_sign" model="ir.actions.server">
-        <field name="name">Sign Vouchers</field>
+    <record id="account_payment_action_sign" model="ir.actions.server">
+        <field name="name">Sign payments</field>
         <field name="type">ir.actions.server</field>
-        <field name="model_id" ref="model_account_voucher"/>
+        <field name="model_id" ref="model_account_payment"/>
         <field name="state">code</field>
-        <field name="code">self.sign_voucher(cr, uid, context.get('active_ids', []), context=context)</field>
+        <field name="code">self.sign_payment(cr, uid, context.get('active_ids', []), context=context)</field>
     </record>
 
     <record id="ir_values_action_sign" model="ir.values">
-        <field name="name">Sign Vouchers</field>
-        <field name="action_id" ref="account_voucher_action_sign"/>
-        <field name="value" eval="'ir.actions.server,' + str(ref('account_voucher_action_sign'))"/>
+        <field name="name">Sign payments</field>
+        <field name="action_id" ref="account_payment_action_sign"/>
+        <field name="value" eval="'ir.actions.server,' + str(ref('account_payment_action_sign'))"/>
         <field name="key">action</field>
-        <field name="model_id" ref="model_account_voucher"/>
-        <field name="model">account.voucher</field>
+        <field name="model_id" ref="model_account_payment"/>
+        <field name="model">account.payment</field>
         <field name="key2">client_action_multi</field>
     </record>
 
-    <record id="account_voucher_view_form" model="ir.ui.view">
-        <field name="name">account.voucher.view.form</field>
-        <field name="model">account.voucher</field>
-        <field name="inherit_id" ref="account_voucher.view_vendor_receipt_form"/>
+    <record id="account_payment_view_form" model="ir.ui.view">
+        <field name="name">account.payment.view.form</field>
+        <field name="model">account.payment</field>
+        <field name="inherit_id" ref="account.view_account_payment_form"/>
         <field name="arch" type="xml">
-            <button name="proforma_voucher" position="after">
+            <button name="action_port" position="after">
                 <field name="show_unreconcile" invisible="1"/>
-                <button name="sign_voucher" type="object" string="Sign"
+                <button name="sign_payment" type="object" string="Sign"
                     class="oe_highlight"
                     attrs="{'invisible': ['|', ('state', '!=', 'posted'), ('cfdi_state', '!=', False)]}"/>
-                <button name="substitute_voucher" type="object" string="Replace"
+                <button name="substitute_payment" type="object" string="Replace"
                     attrs="{'invisible': ['|', ('cfdi_state', 'not in', ['signed', 'done']), ('state', '=', 'cancel')]}"/>
                 <button name="replace_cfdi" type="object" string="Cancel"
-                    confirm="Are you sure to cancel this voucher?"
+                    confirm="Are you sure to cancel this payment?"
                     attrs="{'invisible': ['|', ('cfdi_state', 'not in', ['signed', 'done']), ('state', '=', 'cancel')]}"/>
             </button>
             <xpath expr="//header" position="after">
@@ -59,7 +59,7 @@
                     <field string="Fiscal Number" name="cfdi_id" readonly="1"/>
                 </h4>
             </xpath>
-            <!-- Hide cancel button when voucher have a related CFDI -->
+            <!-- Hide cancel button when payment have a related CFDI -->
             <xpath expr="//button[@string='Unreconcile']" position="attributes">
                 <attribute name="states" translation="off"></attribute>
                 <attribute name="attrs" translation="off">{'invisible': [('show_unreconcile', '=', False)]}</attribute>
@@ -77,10 +77,10 @@
         </field>
     </record>
 
-    <record id="account_voucher_view_search" model="ir.ui.view">
-        <field name="name">account.voucher.view.search</field>
-        <field name="model">account.voucher</field>
-        <field name="inherit_id" ref="account_voucher.view_voucher_filter_customer_pay"/>
+    <record id="account_payment_view_search" model="ir.ui.view">
+        <field name="name">account.payment.view.search</field>
+        <field name="model">account.payment</field>
+        <field name="inherit_id" ref="account_payment.view_payment_filter_customer_pay"/>
         <field name="arch" type="xml">
             <field name="partner_id" position="after">
                 <field name="cfdi_id" string="UUID" />
@@ -88,10 +88,10 @@
             <filter string="Posted" position="after">
                 <separator/>
                 <filter string="To Sign" domain="[('cfdi_state', '=', 'draft')]" help="Vochers to be signed"/>
-                <filter string="Signed" domain="[('cfdi_state', 'in', ['signed', 'done'])]" help="Signed Vouchers"/>
+                <filter string="Signed" domain="[('cfdi_state', 'in', ['signed', 'done'])]" help="Signed payments"/>
             </filter>
         </field>
     </record>
 
 </data>
-</openerp>
+</odoo>
diff --git a/l10n_mx_facturae/views/res_company.xml b/l10n_mx_facturae/views/res_company.xml
new file mode 100644
index 0000000000..5c6c743672
--- /dev/null
+++ b/l10n_mx_facturae/views/res_company.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+    <record id="l10_mx_facturae_res_company_view_form" model="ir.ui.view">
+        <field name="name">l10n.mx.facturae.res.company.view.form</field>
+        <field name="model">res.company</field>
+        <field name="inherit_id" ref="l10n_mx_base.res_company_view_form"/>
+        <field name="arch" type="xml">
+            <field name="cfdi_fiscal_regime_id" position="after">
+                <field name="cfdi_use_id"/>
+            </field>
+        </field>
+    </record>
+
+</odoo>
diff --git a/l10n_mx_facturae/views/res_partner.xml b/l10n_mx_facturae/views/res_partner.xml
index 00ed926970..fb28220319 100644
--- a/l10n_mx_facturae/views/res_partner.xml
+++ b/l10n_mx_facturae/views/res_partner.xml
@@ -1,50 +1,67 @@
 <?xml version="1.0"?>
-<openerp>
-<data>
+<odoo>
 
-    <record id="res_partner_view_form" model="ir.ui.view">
-        <field name="name">res.partner.view.form</field>
+    <record id="l10n_mx_facturae_res_partner_view_form" model="ir.ui.view">
+        <field name="name">l10n.mx.facturae.res.partner.view.form</field>
         <field name="model">res.partner</field>
-        <field name="inherit_id" ref="account.view_partner_property_form"/>
+        <field name="inherit_id" ref="l10n_mx_base.res_partner_view_form"/>
         <field name="arch" type="xml">
-            <xpath expr="//page[@string='Accounting']" position="after">
-                <page name="Invoicing" string="Invoicing">
-                    <group>
-                        <group name="Configuraciones" string="Configuraciones">
-                            <field name="cfdi_fiscal_regime_id" options="{'no_create': True,'no_open':True}" />
-                            <field name="cfdi_use" options="{'no_create': True,'no_open':True}"/>
-                            <field name="payment_method_id" options="{'no_create': True,'no_open':True}"/>
-                        </group>
-                        <group>
-                        </group>
-                        <group string="Adendas">
-                            <p>Addends are used to add additional content to the invoice that  the SAT. 
-                            An addendum contains information of a commercial, logistic and  operation,
-                            often required by the receiving company (client).
-                            <br/><br/>
-                            Once you have selected the addendum, you must add the necessary information
-                            in all or some of the following sections: Customers, suppliers, company,
-                            products, services, invoices or delivery notes
-                            <br/><br/>
-                            Done the necessary configurations, you will be able to stamp your invoices
-                            with the selected complement.
-                            </p>
-                        </group>
-                        <group>
-                            <p colspan="2"><b><br/>  </b></p>
-                            <field name="show_glnnumber" invisible="True"/>
-                            <field name="show_suppliernumber" invisible="True"/>
-                            <field name="show_edi" invisible="True"/>
-                            <field name="cfdi_adenda_ids" widget="many2many_tags" options="{'no_create': True,'no_open':True}"/>
-                            <field name="gln_number" attrs="{'required':[('show_glnnumber', '=', True)], 'invisible':[('show_glnnumber', '=', False)]}"/>
-                            <field name="supplier_number" attrs="{'required':[('show_suppliernumber', '=', True)], 'invisible':[('show_suppliernumber', '=', False)]}"/>
-                            <field name="edi" attrs="{'required':[('show_edi', '=', True)], 'invisible':[('show_edi', '=', False)]}"/>
-                        </group>
-                    </group>
-                </page>
-            </xpath>
+            <field name="cfdi_fiscal_regime_id" position="after">
+                <field name="cfdi_use_id" options="{'no_create': True,'no_open':True}"/>
+                <field name="payment_method_id" options="{'no_create': True,'no_open':True}"/>
+            </field>
+            <group name="cfdi_taxes" position="after">
+                <group name="cfdi_adendum" string="Adendas">
+                    <p>Addends are used to add additional content to the invoice that  the SAT.
+                    An addendum contains information of a commercial, logistic and  operation,
+                    often required by the receiving company (client).
+                    <br/><br/>
+                    Once you have selected the addendum, you must add the necessary information
+                    in all or some of the following sections: Customers, suppliers, company,
+                    products, services, invoices or delivery notes
+                    <br/><br/>
+                    Done the necessary configurations, you will be able to stamp your invoices
+                    with the selected complement.
+                    </p>
+                </group>
+                <group name="cfdi_adendum_fields">
+                    <p colspan="2"><b><br/>  </b></p>
+                    <field name="show_glnnumber" invisible="True"/>
+                    <field name="show_suppliernumber" invisible="True"/>
+                    <field name="show_edi" invisible="True"/>
+                    <field name="cfdi_adenda_ids"
+                        widget="many2many_tags"
+                        options="{'no_create': True,'no_open':True}"/>
+                    <field name="gln_number"
+                        attrs="{
+                            'required':[
+                                ('show_glnnumber', '=', True)
+                            ],
+                            'invisible':[
+                                ('show_glnnumber', '=', False)
+                            ]
+                        }"/>
+                    <field name="supplier_number"
+                        attrs="{
+                            'required':[
+                                ('show_suppliernumber', '=', True)
+                            ],
+                            'invisible':[
+                                ('show_suppliernumber', '=', False)
+                            ]
+                        }"/>
+                    <field name="edi"
+                        attrs="{
+                            'required':[
+                                ('show_edi', '=', True)
+                            ],
+                            'invisible':[
+                                ('show_edi', '=', False)
+                            ]
+                        }"/>
+                </group>
+            </group>
         </field>
     </record>
 
-</data>
-</openerp>
+</odoo>
diff --git a/l10n_mx_facturae/wizard/__init__.py b/l10n_mx_facturae/wizard/__init__.py
index 30e4ebec8a..799aa57d0a 100644
--- a/l10n_mx_facturae/wizard/__init__.py
+++ b/l10n_mx_facturae/wizard/__init__.py
@@ -1,4 +1,4 @@
 # -*- coding: utf-8 -*-
 
-from . import account_invoice_refund
-from . import wizard_multi_charts_accounts
+#from . import account_invoice_refund
+#from . import wizard_multi_charts_accounts
diff --git a/l10n_mx_facturae/wizard/account_invoice_refund.py b/l10n_mx_facturae/wizard/account_invoice_refund.py
index e292b5146c..1c8e4cb1ae 100644
--- a/l10n_mx_facturae/wizard/account_invoice_refund.py
+++ b/l10n_mx_facturae/wizard/account_invoice_refund.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from openerp import fields, models
+from odoo import fields, models
 
 
 class AccountInvoiceRefund(models.TransientModel):
diff --git a/l10n_mx_facturae/wizard/account_invoice_refund.xml b/l10n_mx_facturae/wizard/account_invoice_refund.xml
index e9fc4949fd..cd47e01e5d 100644
--- a/l10n_mx_facturae/wizard/account_invoice_refund.xml
+++ b/l10n_mx_facturae/wizard/account_invoice_refund.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<openerp>
+<odoo>
 <data>
 
     <record id="view_account_invoice_refund" model="ir.ui.view">
@@ -14,4 +14,4 @@
     </record>
 
 </data>
-</openerp>
+</odoo>
diff --git a/l10n_mx_facturae/wizard/wizard_multi_charts_accounts.py b/l10n_mx_facturae/wizard/wizard_multi_charts_accounts.py
index e90f7d41de..f10ab67b0b 100644
--- a/l10n_mx_facturae/wizard/wizard_multi_charts_accounts.py
+++ b/l10n_mx_facturae/wizard/wizard_multi_charts_accounts.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from openerp import api, models
+from odoo import api, models
 
 
 class WizardMultiChartsAccounts(models.TransientModel):
-- 
GitLab


From 004bae22b915c5ab51ad989b8c5474036bf3746c Mon Sep 17 00:00:00 2001
From: "noe.izquierdo" <noe.izquierdo@openpyme.mx>
Date: Sun, 5 Nov 2023 17:33:15 -0600
Subject: [PATCH 02/17] =?UTF-8?q?feat(account.move):=20se=20cambia=20estru?=
 =?UTF-8?q?ctura=20de=20la=20generaci=C3=B3n=20del=20xml=20de=20cfdi?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 l10n_mx_facturae/__init__.py                  |   1 +
 l10n_mx_facturae/__manifest__.py              |  24 +-
 l10n_mx_facturae/data/account_move.xml        |  36 +-
 l10n_mx_facturae/data/account_payment.xml     |  62 +---
 .../data/ir_attachment_facturae_config.xml    |  16 +-
 ...facturae_demo.xml => demo_res_partner.xml} |   8 +-
 l10n_mx_facturae/models/__init__.py           |   2 +-
 l10n_mx_facturae/models/account_move.py       | 253 +++++++++-----
 l10n_mx_facturae/models/account_payment.py    | 326 ++++++++++--------
 l10n_mx_facturae/report/__init__.py           |   3 +
 l10n_mx_facturae/report/account_move.odt      | Bin 54174 -> 54288 bytes
 l10n_mx_facturae/report/account_payment.odt   | Bin 48616 -> 44069 bytes
 l10n_mx_facturae/report/account_payment.py    |  50 +++
 l10n_mx_facturae/templates/account_move.xml   | 154 +++++++--
 .../templates/account_payment.xml             | 126 +++++++
 .../templates/account_voucher.txt             |   2 +-
 l10n_mx_facturae/views/account_move.xml       |  46 ++-
 l10n_mx_facturae/views/account_payment.xml    |  81 +++--
 18 files changed, 810 insertions(+), 380 deletions(-)
 rename l10n_mx_facturae/demo/{l10n_mx_facturae_demo.xml => demo_res_partner.xml} (73%)
 create mode 100644 l10n_mx_facturae/report/__init__.py
 create mode 100644 l10n_mx_facturae/report/account_payment.py
 create mode 100644 l10n_mx_facturae/templates/account_payment.xml

diff --git a/l10n_mx_facturae/__init__.py b/l10n_mx_facturae/__init__.py
index 731182b4b8..084335270d 100644
--- a/l10n_mx_facturae/__init__.py
+++ b/l10n_mx_facturae/__init__.py
@@ -1,4 +1,5 @@
 # -*- coding: utf-8 -*-
 
 from . import models
+from . import report
 #from . import wizard
diff --git a/l10n_mx_facturae/__manifest__.py b/l10n_mx_facturae/__manifest__.py
index 60c998a8f1..3a3e4ce2ec 100644
--- a/l10n_mx_facturae/__manifest__.py
+++ b/l10n_mx_facturae/__manifest__.py
@@ -2,22 +2,24 @@
 
 {
     "name": "Factura Electronica CFDI",
-    "version": "8.0.3.7.0",
+    "version": "15.0.3.7.0",
     "author": "OpenPyme",
     "category": "Localization/Mexico",
     "website": "http://www.openpyme.mx/",
     "license": "AGPL-3",
     "depends": [
-        "base_iso3166",
+        "account_global_discount",
+        "account_invoice_change_currency",
         "l10n_mx_base",
-    ],
-    "demo": [
-        "demo/l10n_mx_facturae_demo.xml",
+        "report_xml",
     ],
     "data": [
+        # Security
+        "security/res_groups.xml",
+
         # Datas
         "data/account_move.xml",
-        #"data/account_payment.xml",
+        "data/account_payment.xml",
         #"data/email_template.xml",
         "data/facturae_data.xml",
         "data/ir_attachment_facturae_config.xml",
@@ -25,15 +27,19 @@
 
         # Views
         "views/account_move.xml",
-        #"views/account_payment.xml",
+        "views/account_payment.xml",
         "views/res_company.xml",
         "views/res_partner.xml",
 
-        # Security
-        "security/res_groups.xml",
+        # templates
+        "templates/account_move.xml",
+        "templates/account_payment.xml",
 
         #Views Wizards
         #"wizard/account_invoice_refund.xml",
     ],
+    "demo": [
+        "demo/demo_res_partner.xml",
+    ],
     "installable": True,
 }
diff --git a/l10n_mx_facturae/data/account_move.xml b/l10n_mx_facturae/data/account_move.xml
index a28b7f9ba9..47fabd6217 100644
--- a/l10n_mx_facturae/data/account_move.xml
+++ b/l10n_mx_facturae/data/account_move.xml
@@ -1,35 +1,29 @@
 <?xml version="1.0" encoding="utf-8"?>
 <odoo>
-<data>
 
-    <!-- XML invoice report definition -->
-    <record id="ir_actions_report_xml_account_invioice_cfdi"
-        model="ir.actions.report">
+    <!-- XML move report definition -->
+    <record id="ir_actions_report_xml_account_move_cfdi" model="ir.actions.report">
         <field name="name">Account Move CFDI XML</field>
         <field name="model">account.move</field>
-        <field name="report_name">account.move.cfdi.xml</field>
-        <field name="report_type">aeroo</field>
-        <field name="in_format">genshi-raw</field>
-        <field name="out_format" ref="report_aeroo.report_mimetypes_raw" />
-        <field name="report_file">l10n_mx_facturae/templates/account_move.txt</field>
+        <field name="report_type">qweb-xml</field>
+        <field name="report_name">l10n_mx_facturae.account_move_template_cfdi_xml</field>
+        <field name="xml_declaration">true</field>
+        <field name="xsd_schema">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjx4czpzY2hlbWEgeG1sbnM6Y2ZkaT0iaHR0cDovL3d3dy5zYXQuZ29iLm14L2NmZC80IiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmNhdENGREk9Imh0dHA6Ly93d3cuc2F0LmdvYi5teC9zaXRpb19pbnRlcm5ldC9jZmQvY2F0YWxvZ29zIiB4bWxuczp0ZENGREk9Imh0dHA6Ly93d3cuc2F0LmdvYi5teC9zaXRpb19pbnRlcm5ldC9jZmQvdGlwb0RhdG9zL3RkQ0ZESSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhdC5nb2IubXgvY2ZkLzQiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiBhdHRyaWJ1dGVGb3JtRGVmYXVsdD0idW5xdWFsaWZpZWQiPg0KCTx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhdC5nb2IubXgvc2l0aW9faW50ZXJuZXQvY2ZkL2NhdGFsb2dvcyIgc2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuc2F0LmdvYi5teC9zaXRpb19pbnRlcm5ldC9jZmQvY2F0YWxvZ29zL2NhdENGREkueHNkIi8+DQoJPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2F0LmdvYi5teC9zaXRpb19pbnRlcm5ldC9jZmQvdGlwb0RhdG9zL3RkQ0ZESSIgc2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuc2F0LmdvYi5teC9zaXRpb19pbnRlcm5ldC9jZmQvdGlwb0RhdG9zL3RkQ0ZESS90ZENGREkueHNkIi8+DQoJPHhzOmVsZW1lbnQgbmFtZT0iQ29tcHJvYmFudGUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPkVzdMOhbmRhciBkZSBDb21wcm9iYW50ZSBGaXNjYWwgRGlnaXRhbCBwb3IgSW50ZXJuZXQuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4VHlwZT4NCgkJCTx4czpzZXF1ZW5jZT4NCgkJCQk8eHM6ZWxlbWVudCBuYW1lPSJJbmZvcm1hY2lvbkdsb2JhbCIgbWluT2NjdXJzPSIwIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIGNvbmRpY2lvbmFsIHBhcmEgcHJlY2lzYXIgbGEgaW5mb3JtYWNpw7NuIHJlbGFjaW9uYWRhIGNvbiBlbCBjb21wcm9iYW50ZSBnbG9iYWwuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iUGVyaW9kaWNpZGFkIiB0eXBlPSJjYXRDRkRJOmNfUGVyaW9kaWNpZGFkIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgZWwgcGVyw61vZG8gYWwgcXVlIGNvcnJlc3BvbmRlIGxhIGluZm9ybWFjacOzbiBkZWwgY29tcHJvYmFudGUgZ2xvYmFsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTWVzZXMiIHR5cGU9ImNhdENGREk6Y19NZXNlcyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIGVsIG1lcyBvIGxvcyBtZXNlcyBhbCBxdWUgY29ycmVzcG9uZGUgbGEgaW5mb3JtYWNpw7NuIGRlbCBjb21wcm9iYW50ZSBnbG9iYWwuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJBw7FvIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgZWwgYcOxbyBhbCBxdWUgY29ycmVzcG9uZGUgbGEgaW5mb3JtYWNpw7NuIGRlbCBjb21wcm9iYW50ZSBnbG9iYWwuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnNob3J0Ij4NCgkJCQkJCQkJCTx4czptaW5JbmNsdXNpdmUgdmFsdWU9IjIwMjEiLz4NCgkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCTwveHM6ZWxlbWVudD4NCgkJCQk8eHM6ZWxlbWVudCBuYW1lPSJDZmRpUmVsYWNpb25hZG9zIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIHBhcmEgcHJlY2lzYXIgbGEgaW5mb3JtYWNpw7NuIGRlIGxvcyBjb21wcm9iYW50ZXMgcmVsYWNpb25hZG9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6Y29tcGxleFR5cGU+DQoJCQkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iQ2ZkaVJlbGFjaW9uYWRvIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyByZXF1ZXJpZG8gcGFyYSBwcmVjaXNhciBsYSBpbmZvcm1hY2nDs24gZGUgbG9zIGNvbXByb2JhbnRlcyByZWxhY2lvbmFkb3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iVVVJRCIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHJlZ2lzdHJhciBlbCBmb2xpbyBmaXNjYWwgKFVVSUQpIGRlIHVuIENGREkgcmVsYWNpb25hZG8gY29uIGVsIHByZXNlbnRlIGNvbXByb2JhbnRlLCBwb3IgZWplbXBsbzogU2kgZWwgQ0ZESSByZWxhY2lvbmFkbyBlcyB1biBjb21wcm9iYW50ZSBkZSB0cmFzbGFkbyBxdWUgc2lydmUgcGFyYSByZWdpc3RyYXIgZWwgbW92aW1pZW50byBkZSBsYSBtZXJjYW5jw61hLiBTaSBlc3RlIGNvbXByb2JhbnRlIHNlIHVzYSBjb21vIG5vdGEgZGUgY3LDqWRpdG8gbyBub3RhIGRlIGTDqWJpdG8gZGVsIGNvbXByb2JhbnRlIHJlbGFjaW9uYWRvLiBTaSBlc3RlIGNvbXByb2JhbnRlIGVzIHVuYSBkZXZvbHVjacOzbiBzb2JyZSBlbCBjb21wcm9iYW50ZSByZWxhY2lvbmFkby4gU2kgw6lzdGUgc3VzdGl0dXllIGEgdW5hIGZhY3R1cmEgY2FuY2VsYWRhLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJPHhzOmxlbmd0aCB2YWx1ZT0iMzYiLz4NCgkJCQkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQkJCQkJPHhzOnBhdHRlcm4gdmFsdWU9IlthLWYwLTlBLUZdezh9LVthLWYwLTlBLUZdezR9LVthLWYwLTlBLUZdezR9LVthLWYwLTlBLUZdezR9LVthLWYwLTlBLUZdezEyfSIvPg0KCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlRpcG9SZWxhY2lvbiIgdHlwZT0iY2F0Q0ZESTpjX1RpcG9SZWxhY2lvbiIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGluZGljYXIgbGEgY2xhdmUgZGUgbGEgcmVsYWNpw7NuIHF1ZSBleGlzdGUgZW50cmUgw6lzdGUgcXVlIHNlIGVzdMOhIGdlbmVyYW5kbyB5IGVsIG8gbG9zIENGREkgcHJldmlvcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCTwveHM6Y29tcGxleFR5cGU+DQoJCQkJPC94czplbGVtZW50Pg0KCQkJCTx4czplbGVtZW50IG5hbWU9IkVtaXNvciI+DQoJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyByZXF1ZXJpZG8gcGFyYSBleHByZXNhciBsYSBpbmZvcm1hY2nDs24gZGVsIGNvbnRyaWJ1eWVudGUgZW1pc29yIGRlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZmMiIHR5cGU9InRkQ0ZESTp0X1JGQyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHJlZ2lzdHJhciBsYSBDbGF2ZSBkZWwgUmVnaXN0cm8gRmVkZXJhbCBkZSBDb250cmlidXllbnRlcyBjb3JyZXNwb25kaWVudGUgYWwgY29udHJpYnV5ZW50ZSBlbWlzb3IgZGVsIGNvbXByb2JhbnRlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTm9tYnJlIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgcmVnaXN0cmFyIGVsIG5vbWJyZSwgZGVub21pbmFjacOzbiBvIHJhesOzbiBzb2NpYWwgZGVsIGNvbnRyaWJ1eWVudGUgaW5zY3JpdG8gZW4gZWwgUkZDLCBkZWwgZW1pc29yIGRlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjMwMCIvPg0KCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDMwMH0iLz4NCgkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iUmVnaW1lbkZpc2NhbCIgdHlwZT0iY2F0Q0ZESTpjX1JlZ2ltZW5GaXNjYWwiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBpbmNvcnBvcmFyIGxhIGNsYXZlIGRlbCByw6lnaW1lbiBkZWwgY29udHJpYnV5ZW50ZSBlbWlzb3IgYWwgcXVlIGFwbGljYXLDoSBlbCBlZmVjdG8gZmlzY2FsIGRlIGVzdGUgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJGYWNBdHJBZHF1aXJlbnRlIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSBleHByZXNhciBlbCBuw7ptZXJvIGRlIG9wZXJhY2nDs24gcHJvcG9yY2lvbmFkbyBwb3IgZWwgU0FUIGN1YW5kbyBzZSB0cmF0ZSBkZSB1biBjb21wcm9iYW50ZSBhIHRyYXbDqXMgZGUgdW4gUENFQ0ZESSBvIHVuIFBDR0NGRElTUC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQkJPHhzOmxlbmd0aCB2YWx1ZT0iMTAiLz4NCgkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbMC05XXsxMH0iLz4NCgkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJPHhzOmVsZW1lbnQgbmFtZT0iUmVjZXB0b3IiPg0KCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gcmVxdWVyaWRvIHBhcmEgcHJlY2lzYXIgbGEgaW5mb3JtYWNpw7NuIGRlbCBjb250cmlidXllbnRlIHJlY2VwdG9yIGRlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZmMiIHR5cGU9InRkQ0ZESTp0X1JGQyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHJlZ2lzdHJhciBsYSBDbGF2ZSBkZWwgUmVnaXN0cm8gRmVkZXJhbCBkZSBDb250cmlidXllbnRlcyBjb3JyZXNwb25kaWVudGUgYWwgY29udHJpYnV5ZW50ZSByZWNlcHRvciBkZWwgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJOb21icmUiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSByZWdpc3RyYXIgZWwgbm9tYnJlKHMpLCBwcmltZXIgYXBlbGxpZG8sIHNlZ3VuZG8gYXBlbGxpZG8sIHNlZ8O6biBjb3JyZXNwb25kYSwgZGVub21pbmFjacOzbiBvIHJhesOzbiBzb2NpYWwgZGVsIGNvbnRyaWJ1eWVudGUsIGluc2NyaXRvIGVuIGVsIFJGQywgZGVsIHJlY2VwdG9yIGRlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjMwMCIvPg0KCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDMwMH0iLz4NCgkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iRG9taWNpbGlvRmlzY2FsUmVjZXB0b3IiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSByZWdpc3RyYXIgZWwgY8OzZGlnbyBwb3N0YWwgZGVsIGRvbWljaWxpbyBmaXNjYWwgZGVsIHJlY2VwdG9yIGRlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCTx4czpsZW5ndGggdmFsdWU9IjUiLz4NCgkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQkJPHhzOnBhdHRlcm4gdmFsdWU9IlswLTldezV9Ii8+DQoJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlJlc2lkZW5jaWFGaXNjYWwiIHR5cGU9ImNhdENGREk6Y19QYWlzIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSByZWdpc3RyYXIgbGEgY2xhdmUgZGVsIHBhw61zIGRlIHJlc2lkZW5jaWEgcGFyYSBlZmVjdG9zIGZpc2NhbGVzIGRlbCByZWNlcHRvciBkZWwgY29tcHJvYmFudGUsIGN1YW5kbyBzZSB0cmF0ZSBkZSB1biBleHRyYW5qZXJvLCB5IHF1ZSBlcyBjb25mb3JtZSBjb24gbGEgZXNwZWNpZmljYWNpw7NuIElTTyAzMTY2LTEgYWxwaGEtMy4gRXMgcmVxdWVyaWRvIGN1YW5kbyBzZSBpbmNsdXlhIGVsIGNvbXBsZW1lbnRvIGRlIGNvbWVyY2lvIGV4dGVyaW9yIG8gc2UgcmVnaXN0cmUgZWwgYXRyaWJ1dG8gTnVtUmVnSWRUcmliLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTnVtUmVnSWRUcmliIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSBleHByZXNhciBlbCBuw7ptZXJvIGRlIHJlZ2lzdHJvIGRlIGlkZW50aWRhZCBmaXNjYWwgZGVsIHJlY2VwdG9yIGN1YW5kbyBzZWEgcmVzaWRlbnRlIGVuIGVsIGV4dHJhbmplcm8uIEVzIHJlcXVlcmlkbyBjdWFuZG8gc2UgaW5jbHV5YSBlbCBjb21wbGVtZW50byBkZSBjb21lcmNpbyBleHRlcmlvci48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjQwIi8+DQoJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iUmVnaW1lbkZpc2NhbFJlY2VwdG9yIiB0eXBlPSJjYXRDRkRJOmNfUmVnaW1lbkZpc2NhbCIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGluY29ycG9yYXIgbGEgY2xhdmUgZGVsIHLDqWdpbWVuIGZpc2NhbCBkZWwgY29udHJpYnV5ZW50ZSByZWNlcHRvciBhbCBxdWUgYXBsaWNhcsOhIGVsIGVmZWN0byBmaXNjYWwgZGUgZXN0ZSBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlVzb0NGREkiIHR5cGU9ImNhdENGREk6Y19Vc29DRkRJIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgbGEgY2xhdmUgZGVsIHVzbyBxdWUgZGFyw6EgYSBlc3RhIGZhY3R1cmEgZWwgcmVjZXB0b3IgZGVsIENGREkuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCTwveHM6ZWxlbWVudD4NCgkJCQk8eHM6ZWxlbWVudCBuYW1lPSJDb25jZXB0b3MiPg0KCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gcmVxdWVyaWRvIHBhcmEgbGlzdGFyIGxvcyBjb25jZXB0b3MgY3ViaWVydG9zIHBvciBlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IkNvbmNlcHRvIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyByZXF1ZXJpZG8gcGFyYSByZWdpc3RyYXIgbGEgaW5mb3JtYWNpw7NuIGRldGFsbGFkYSBkZSB1biBiaWVuIG8gc2VydmljaW8gYW1wYXJhZG8gZW4gZWwgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJJbXB1ZXN0b3MiIG1pbk9jY3Vycz0iMCI+DQoJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyBjb25kaWNpb25hbCBwYXJhIGNhcHR1cmFyIGxvcyBpbXB1ZXN0b3MgYXBsaWNhYmxlcyBhbCBwcmVzZW50ZSBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IlRyYXNsYWRvcyIgbWluT2NjdXJzPSIwIj4NCgkJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIHBhcmEgYXNlbnRhciBsb3MgaW1wdWVzdG9zIHRyYXNsYWRhZG9zIGFwbGljYWJsZXMgYWwgcHJlc2VudGUgY29uY2VwdG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJUcmFzbGFkbyIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gcmVxdWVyaWRvIHBhcmEgYXNlbnRhciBsYSBpbmZvcm1hY2nDs24gZGV0YWxsYWRhIGRlIHVuIHRyYXNsYWRvIGRlIGltcHVlc3RvcyBhcGxpY2FibGUgYWwgcHJlc2VudGUgY29uY2VwdG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQmFzZSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIGJhc2UgcGFyYSBlbCBjw6FsY3VsbyBkZWwgaW1wdWVzdG8sIGxhIGRldGVybWluYWNpw7NuIGRlIGxhIGJhc2Ugc2UgcmVhbGl6YSBkZSBhY3VlcmRvIGNvbiBsYXMgZGlzcG9zaWNpb25lcyBmaXNjYWxlcyB2aWdlbnRlcy4gTm8gc2UgcGVybWl0ZW4gdmFsb3JlcyBuZWdhdGl2b3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmRlY2ltYWwiPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmZyYWN0aW9uRGlnaXRzIHZhbHVlPSI2Ii8+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwLjAwMDAwMSIvPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkltcHVlc3RvIiB0eXBlPSJjYXRDRkRJOmNfSW1wdWVzdG8iIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBzZcOxYWxhciBsYSBjbGF2ZSBkZWwgdGlwbyBkZSBpbXB1ZXN0byB0cmFzbGFkYWRvIGFwbGljYWJsZSBhbCBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlRpcG9GYWN0b3IiIHR5cGU9ImNhdENGREk6Y19UaXBvRmFjdG9yIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgc2XDsWFsYXIgbGEgY2xhdmUgZGVsIHRpcG8gZGUgZmFjdG9yIHF1ZSBzZSBhcGxpY2EgYSBsYSBiYXNlIGRlbCBpbXB1ZXN0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlRhc2FPQ3VvdGEiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBjb25kaWNpb25hbCBwYXJhIHNlw7FhbGFyIGVsIHZhbG9yIGRlIGxhIHRhc2EgbyBjdW90YSBkZWwgaW1wdWVzdG8gcXVlIHNlIHRyYXNsYWRhIHBhcmEgZWwgcHJlc2VudGUgY29uY2VwdG8uIEVzIHJlcXVlcmlkbyBjdWFuZG8gZWwgYXRyaWJ1dG8gVGlwb0ZhY3RvciB0ZW5nYSB1bmEgY2xhdmUgcXVlIGNvcnJlc3BvbmRhIGEgVGFzYSBvIEN1b3RhLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpkZWNpbWFsIj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpmcmFjdGlvbkRpZ2l0cyB2YWx1ZT0iNiIvPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOm1pbkluY2x1c2l2ZSB2YWx1ZT0iMC4wMDAwMDAiLz4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJJbXBvcnRlIiB0eXBlPSJ0ZENGREk6dF9JbXBvcnRlIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSBzZcOxYWxhciBlbCBpbXBvcnRlIGRlbCBpbXB1ZXN0byB0cmFzbGFkYWRvIHF1ZSBhcGxpY2EgYWwgY29uY2VwdG8uIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLiBFcyByZXF1ZXJpZG8gY3VhbmRvIFRpcG9GYWN0b3Igc2VhIFRhc2EgbyBDdW90YS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQkJCQkJCTwveHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQkJCQkJCQkJPC94czplbGVtZW50Pg0KCQkJCQkJCQkJCQkJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iUmV0ZW5jaW9uZXMiIG1pbk9jY3Vycz0iMCI+DQoJCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyBvcGNpb25hbCBwYXJhIGFzZW50YXIgbG9zIGltcHVlc3RvcyByZXRlbmlkb3MgYXBsaWNhYmxlcyBhbCBwcmVzZW50ZSBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCQkJCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IlJldGVuY2lvbiIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gcmVxdWVyaWRvIHBhcmEgYXNlbnRhciBsYSBpbmZvcm1hY2nDs24gZGV0YWxsYWRhIGRlIHVuYSByZXRlbmNpw7NuIGRlIGltcHVlc3RvcyBhcGxpY2FibGUgYWwgcHJlc2VudGUgY29uY2VwdG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQmFzZSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIGJhc2UgcGFyYSBlbCBjw6FsY3VsbyBkZSBsYSByZXRlbmNpw7NuLCBsYSBkZXRlcm1pbmFjacOzbiBkZSBsYSBiYXNlIHNlIHJlYWxpemEgZGUgYWN1ZXJkbyBjb24gbGFzIGRpc3Bvc2ljaW9uZXMgZmlzY2FsZXMgdmlnZW50ZXMuIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpkZWNpbWFsIj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpmcmFjdGlvbkRpZ2l0cyB2YWx1ZT0iNiIvPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOm1pbkluY2x1c2l2ZSB2YWx1ZT0iMC4wMDAwMDEiLz4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJJbXB1ZXN0byIgdHlwZT0iY2F0Q0ZESTpjX0ltcHVlc3RvIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgc2XDsWFsYXIgbGEgY2xhdmUgZGVsIHRpcG8gZGUgaW1wdWVzdG8gcmV0ZW5pZG8gYXBsaWNhYmxlIGFsIGNvbmNlcHRvLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iVGlwb0ZhY3RvciIgdHlwZT0iY2F0Q0ZESTpjX1RpcG9GYWN0b3IiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBzZcOxYWxhciBsYSBjbGF2ZSBkZWwgdGlwbyBkZSBmYWN0b3IgcXVlIHNlIGFwbGljYSBhIGxhIGJhc2UgZGVsIGltcHVlc3RvLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iVGFzYU9DdW90YSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIHRhc2EgbyBjdW90YSBkZWwgaW1wdWVzdG8gcXVlIHNlIHJldGllbmUgcGFyYSBlbCBwcmVzZW50ZSBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZGVjaW1hbCI+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czptaW5JbmNsdXNpdmUgdmFsdWU9IjAuMDAwMDAwIi8+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6ZnJhY3Rpb25EaWdpdHMgdmFsdWU9IjYiLz4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iSW1wb3J0ZSIgdHlwZT0idGRDRkRJOnRfSW1wb3J0ZSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGVsIGltcG9ydGUgZGVsIGltcHVlc3RvIHJldGVuaWRvIHF1ZSBhcGxpY2EgYWwgY29uY2VwdG8uIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQkJCQkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCQkJCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCQkJCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJCQkJCQkJCTwveHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQkJPC94czplbGVtZW50Pg0KCQkJCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IkFDdWVudGFUZXJjZXJvcyIgbWluT2NjdXJzPSIwIj4NCgkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIHBhcmEgcmVnaXN0cmFyIGluZm9ybWFjacOzbiBkZWwgY29udHJpYnV5ZW50ZSBUZXJjZXJvLCBhIGN1ZW50YSBkZWwgcXVlIHNlIHJlYWxpemEgbGEgb3BlcmFjacOzbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZmNBQ3VlbnRhVGVyY2Vyb3MiIHR5cGU9InRkQ0ZESTp0X1JGQyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHJlZ2lzdHJhciBsYSBDbGF2ZSBkZWwgUmVnaXN0cm8gRmVkZXJhbCBkZSBDb250cmlidXllbnRlcyBkZWwgY29udHJpYnV5ZW50ZSBUZXJjZXJvLCBhIGN1ZW50YSBkZWwgcXVlIHNlIHJlYWxpemEgbGEgb3BlcmFjacOzbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Ik5vbWJyZUFDdWVudGFUZXJjZXJvcyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHJlZ2lzdHJhciBlbCBub21icmUsIGRlbm9taW5hY2nDs24gbyByYXrDs24gc29jaWFsIGRlbCBjb250cmlidXllbnRlIFRlcmNlcm8gY29ycmVzcG9uZGllbnRlIGNvbiBlbCBSZmMsIGEgY3VlbnRhIGRlbCBxdWUgc2UgcmVhbGl6YSBsYSBvcGVyYWNpw7NuLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1pbkxlbmd0aCB2YWx1ZT0iMSIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1heExlbmd0aCB2YWx1ZT0iMzAwIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsMzAwfSIvPg0KCQkJCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZWdpbWVuRmlzY2FsQUN1ZW50YVRlcmNlcm9zIiB0eXBlPSJjYXRDRkRJOmNfUmVnaW1lbkZpc2NhbCIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGluY29ycG9yYXIgbGEgY2xhdmUgZGVsIHLDqWdpbWVuIGRlbCBjb250cmlidXllbnRlIFRlcmNlcm8sIGEgY3VlbnRhIGRlbCBxdWUgc2UgcmVhbGl6YSBsYSBvcGVyYWNpw7NuLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iRG9taWNpbGlvRmlzY2FsQUN1ZW50YVRlcmNlcm9zIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgaW5jb3Jwb3JhciBlbCBjw7NkaWdvIHBvc3RhbCBkZWwgZG9taWNpbGlvIGZpc2NhbCBkZWwgVGVyY2VybywgYSBjdWVudGEgZGVsIHF1ZSBzZSByZWFsaXphIGxhIG9wZXJhY2nDs24uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQoJCQkJCQkJCQkJCQkJCQk8eHM6bGVuZ3RoIHZhbHVlPSI1Ii8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbMC05XXs1fSIvPg0KCQkJCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJJbmZvcm1hY2lvbkFkdWFuZXJhIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCgkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIHBhcmEgaW50cm9kdWNpciBsYSBpbmZvcm1hY2nDs24gYWR1YW5lcmEgYXBsaWNhYmxlIGN1YW5kbyBzZSB0cmF0ZSBkZSB2ZW50YXMgZGUgcHJpbWVyYSBtYW5vIGRlIG1lcmNhbmPDrWFzIGltcG9ydGFkYXMgbyBzZSB0cmF0ZSBkZSBvcGVyYWNpb25lcyBkZSBjb21lcmNpbyBleHRlcmlvciBjb24gYmllbmVzIG8gc2VydmljaW9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQk8eHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Ik51bWVyb1BlZGltZW50byIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIGVsIG7Dum1lcm8gZGVsIHBlZGltZW50byBxdWUgYW1wYXJhIGxhIGltcG9ydGFjacOzbiBkZWwgYmllbiBxdWUgc2UgZXhwcmVzYSBlbiBlbCBzaWd1aWVudGUgZm9ybWF0bzogw7psdGltb3MgMiBkw61naXRvcyBkZWwgYcOxbyBkZSB2YWxpZGFjacOzbiBzZWd1aWRvcyBwb3IgZG9zIGVzcGFjaW9zLCAyIGTDrWdpdG9zIGRlIGxhIGFkdWFuYSBkZSBkZXNwYWNobyBzZWd1aWRvcyBwb3IgZG9zIGVzcGFjaW9zLCA0IGTDrWdpdG9zIGRlbCBuw7ptZXJvIGRlIGxhIHBhdGVudGUgc2VndWlkb3MgcG9yIGRvcyBlc3BhY2lvcywgMSBkw61naXRvIHF1ZSBjb3JyZXNwb25kZSBhbCDDumx0aW1vIGTDrWdpdG8gZGVsIGHDsW8gZW4gY3Vyc28sIHNhbHZvIHF1ZSBzZSB0cmF0ZSBkZSB1biBwZWRpbWVudG8gY29uc29saWRhZG8gaW5pY2lhZG8gZW4gZWwgYcOxbyBpbm1lZGlhdG8gYW50ZXJpb3IgbyBkZWwgcGVkaW1lbnRvIG9yaWdpbmFsIGRlIHVuYSByZWN0aWZpY2FjacOzbiwgc2VndWlkbyBkZSA2IGTDrWdpdG9zIGRlIGxhIG51bWVyYWNpw7NuIHByb2dyZXNpdmEgcG9yIGFkdWFuYS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCQkJCQkJCTx4czpsZW5ndGggdmFsdWU9IjIxIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iWzAtOV17Mn0gIFswLTldezJ9ICBbMC05XXs0fSAgWzAtOV17N30iLz4NCgkJCQkJCQkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iQ3VlbnRhUHJlZGlhbCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyBvcGNpb25hbCBwYXJhIGFzZW50YXIgZWwgbsO6bWVybyBkZSBjdWVudGEgcHJlZGlhbCBjb24gZWwgcXVlIGZ1ZSByZWdpc3RyYWRvIGVsIGlubXVlYmxlLCBlbiBlbCBzaXN0ZW1hIGNhdGFzdHJhbCBkZSBsYSBlbnRpZGFkIGZlZGVyYXRpdmEgZGUgcXVlIHRyYXRlLCBvIGJpZW4gcGFyYSBpbmNvcnBvcmFyIGxvcyBkYXRvcyBkZSBpZGVudGlmaWNhY2nDs24gZGVsIGNlcnRpZmljYWRvIGRlIHBhcnRpY2lwYWNpw7NuIGlubW9iaWxpYXJpYSBubyBhbW9ydGl6YWJsZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJOdW1lcm8iIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBwcmVjaXNhciBlbCBuw7ptZXJvIGRlIGxhIGN1ZW50YSBwcmVkaWFsIGRlbCBpbm11ZWJsZSBjdWJpZXJ0byBwb3IgZWwgcHJlc2VudGUgY29uY2VwdG8sIG8gYmllbiBwYXJhIGluY29ycG9yYXIgbG9zIGRhdG9zIGRlIGlkZW50aWZpY2FjacOzbiBkZWwgY2VydGlmaWNhZG8gZGUgcGFydGljaXBhY2nDs24gaW5tb2JpbGlhcmlhIG5vIGFtb3J0aXphYmxlLCB0cmF0w6FuZG9zZSBkZSBhcnJlbmRhbWllbnRvLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1pbkxlbmd0aCB2YWx1ZT0iMSIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1heExlbmd0aCB2YWx1ZT0iMTUwIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbMC05YS16QS1aXXsxLDE1MH0iLz4NCgkJCQkJCQkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iQ29tcGxlbWVudG9Db25jZXB0byIgbWluT2NjdXJzPSIwIj4NCgkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIGRvbmRlIHNlIGluY2x1eWVuIGxvcyBub2RvcyBjb21wbGVtZW50YXJpb3MgZGUgZXh0ZW5zacOzbiBhbCBjb25jZXB0byBkZWZpbmlkb3MgcG9yIGVsIFNBVCwgZGUgYWN1ZXJkbyBjb24gbGFzIGRpc3Bvc2ljaW9uZXMgcGFydGljdWxhcmVzIHBhcmEgdW4gc2VjdG9yIG8gYWN0aXZpZGFkIGVzcGVjw61maWNhLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQk8eHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCQkJCQkJCQkJPHhzOmFueSBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KCQkJCQkJCQkJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iUGFydGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gb3BjaW9uYWwgcGFyYSBleHByZXNhciBsYXMgcGFydGVzIG8gY29tcG9uZW50ZXMgcXVlIGludGVncmFuIGxhIHRvdGFsaWRhZCBkZWwgY29uY2VwdG8gZXhwcmVzYWRvIGVuIGVsIGNvbXByb2JhbnRlIGZpc2NhbCBkaWdpdGFsIHBvciBJbnRlcm5ldC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IkluZm9ybWFjaW9uQWR1YW5lcmEiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gb3BjaW9uYWwgcGFyYSBpbnRyb2R1Y2lyIGxhIGluZm9ybWFjacOzbiBhZHVhbmVyYSBhcGxpY2FibGUgY3VhbmRvIHNlIHRyYXRlIGRlIHZlbnRhcyBkZSBwcmltZXJhIG1hbm8gZGUgbWVyY2FuY8OtYXMgaW1wb3J0YWRhcyBvIHNlIHRyYXRlIGRlIG9wZXJhY2lvbmVzIGRlIGNvbWVyY2lvIGV4dGVyaW9yIGNvbiBiaWVuZXMgbyBzZXJ2aWNpb3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTnVtZXJvUGVkaW1lbnRvIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgZWwgbsO6bWVybyBkZWwgcGVkaW1lbnRvIHF1ZSBhbXBhcmEgbGEgaW1wb3J0YWNpw7NuIGRlbCBiaWVuIHF1ZSBzZSBleHByZXNhIGVuIGVsIHNpZ3VpZW50ZSBmb3JtYXRvOiDDumx0aW1vcyAyIGTDrWdpdG9zIGRlbCBhw7FvIGRlIHZhbGlkYWNpw7NuIHNlZ3VpZG9zIHBvciBkb3MgZXNwYWNpb3MsIDIgZMOtZ2l0b3MgZGUgbGEgYWR1YW5hIGRlIGRlc3BhY2hvIHNlZ3VpZG9zIHBvciBkb3MgZXNwYWNpb3MsIDQgZMOtZ2l0b3MgZGVsIG7Dum1lcm8gZGUgbGEgcGF0ZW50ZSBzZWd1aWRvcyBwb3IgZG9zIGVzcGFjaW9zLCAxIGTDrWdpdG8gcXVlIGNvcnJlc3BvbmRlIGFsIMO6bHRpbW8gZMOtZ2l0byBkZWwgYcOxbyBlbiBjdXJzbywgc2Fsdm8gcXVlIHNlIHRyYXRlIGRlIHVuIHBlZGltZW50byBjb25zb2xpZGFkbyBpbmljaWFkbyBlbiBlbCBhw7FvIGlubWVkaWF0byBhbnRlcmlvciBvIGRlbCBwZWRpbWVudG8gb3JpZ2luYWwgZGUgdW5hIHJlY3RpZmljYWNpw7NuLCBzZWd1aWRvIGRlIDYgZMOtZ2l0b3MgZGUgbGEgbnVtZXJhY2nDs24gcHJvZ3Jlc2l2YSBwb3IgYWR1YW5hLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmxlbmd0aCB2YWx1ZT0iMjEiLz4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbMC05XXsyfSAgWzAtOV17Mn0gIFswLTldezR9ICBbMC05XXs3fSIvPg0KCQkJCQkJCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCQkJCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkNsYXZlUHJvZFNlcnYiIHR5cGU9ImNhdENGREk6Y19DbGF2ZVByb2RTZXJ2IiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgbGEgY2xhdmUgZGVsIHByb2R1Y3RvIG8gZGVsIHNlcnZpY2lvIGFtcGFyYWRvIHBvciBsYSBwcmVzZW50ZSBwYXJ0ZS4gRXMgcmVxdWVyaWRvIHkgZGViZW4gdXRpbGl6YXIgbGFzIGNsYXZlcyBkZWwgY2F0w6Fsb2dvIGRlIHByb2R1Y3RvcyB5IHNlcnZpY2lvcywgY3VhbmRvIGxvcyBjb25jZXB0b3MgcXVlIHJlZ2lzdHJlbiBwb3Igc3VzIGFjdGl2aWRhZGVzIGNvcnJlc3BvbmRhbiBjb24gZGljaG9zIGNvbmNlcHRvcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Ik5vSWRlbnRpZmljYWNpb24iIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBvcGNpb25hbCBwYXJhIGV4cHJlc2FyIGVsIG7Dum1lcm8gZGUgc2VyaWUsIG7Dum1lcm8gZGUgcGFydGUgZGVsIGJpZW4gbyBpZGVudGlmaWNhZG9yIGRlbCBwcm9kdWN0byBvIGRlbCBzZXJ2aWNpbyBhbXBhcmFkbyBwb3IgbGEgcHJlc2VudGUgcGFydGUuIE9wY2lvbmFsbWVudGUgc2UgcHVlZGUgdXRpbGl6YXIgY2xhdmVzIGRlbCBlc3TDoW5kYXIgR1RJTi48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjEwMCIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDEwMH0iLz4NCgkJCQkJCQkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQ2FudGlkYWQiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBwcmVjaXNhciBsYSBjYW50aWRhZCBkZSBiaWVuZXMgbyBzZXJ2aWNpb3MgZGVsIHRpcG8gcGFydGljdWxhciBkZWZpbmlkbyBwb3IgbGEgcHJlc2VudGUgcGFydGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmRlY2ltYWwiPg0KCQkJCQkJCQkJCQkJCQkJPHhzOmZyYWN0aW9uRGlnaXRzIHZhbHVlPSI2Ii8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwLjAwMDAwMSIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlVuaWRhZCIgdXNlPSJvcHRpb25hbCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIG9wY2lvbmFsIHBhcmEgcHJlY2lzYXIgbGEgdW5pZGFkIGRlIG1lZGlkYSBwcm9waWEgZGUgbGEgb3BlcmFjacOzbiBkZWwgZW1pc29yLCBhcGxpY2FibGUgcGFyYSBsYSBjYW50aWRhZCBleHByZXNhZGEgZW4gbGEgcGFydGUuIExhIHVuaWRhZCBkZWJlIGNvcnJlc3BvbmRlciBjb24gbGEgZGVzY3JpcGNpw7NuIGRlIGxhIHBhcnRlLiA8L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjIwIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsMjB9Ii8+DQoJCQkJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkRlc2NyaXBjaW9uIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgcHJlY2lzYXIgbGEgZGVzY3JpcGNpw7NuIGRlbCBiaWVuIG8gc2VydmljaW8gY3ViaWVydG8gcG9yIGxhIHByZXNlbnRlIHBhcnRlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1pbkxlbmd0aCB2YWx1ZT0iMSIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1heExlbmd0aCB2YWx1ZT0iMTAwMCIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDEwMDB9Ii8+DQoJCQkJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlZhbG9yVW5pdGFyaW8iIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBvcGNpb25hbCBwYXJhIHByZWNpc2FyIGVsIHZhbG9yIG8gcHJlY2lvIHVuaXRhcmlvIGRlbCBiaWVuIG8gc2VydmljaW8gY3ViaWVydG8gcG9yIGxhIHByZXNlbnRlIHBhcnRlLiBObyBzZSBwZXJtaXRlbiB2YWxvcmVzIG5lZ2F0aXZvcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkltcG9ydGUiIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBvcGNpb25hbCBwYXJhIHByZWNpc2FyIGVsIGltcG9ydGUgdG90YWwgZGUgbG9zIGJpZW5lcyBvIHNlcnZpY2lvcyBkZSBsYSBwcmVzZW50ZSBwYXJ0ZS4gRGViZSBzZXIgZXF1aXZhbGVudGUgYWwgcmVzdWx0YWRvIGRlIG11bHRpcGxpY2FyIGxhIGNhbnRpZGFkIHBvciBlbCB2YWxvciB1bml0YXJpbyBleHByZXNhZG8gZW4gbGEgcGFydGUuIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJDbGF2ZVByb2RTZXJ2IiB0eXBlPSJjYXRDRkRJOmNfQ2xhdmVQcm9kU2VydiIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIGxhIGNsYXZlIGRlbCBwcm9kdWN0byBvIGRlbCBzZXJ2aWNpbyBhbXBhcmFkbyBwb3IgZWwgcHJlc2VudGUgY29uY2VwdG8uIEVzIHJlcXVlcmlkbyB5IGRlYmVuIHV0aWxpemFyIGxhcyBjbGF2ZXMgZGVsIGNhdMOhbG9nbyBkZSBwcm9kdWN0b3MgeSBzZXJ2aWNpb3MsIGN1YW5kbyBsb3MgY29uY2VwdG9zIHF1ZSByZWdpc3RyZW4gcG9yIHN1cyBhY3RpdmlkYWRlcyBjb3JyZXNwb25kYW4gY29uIGRpY2hvcyBjb25jZXB0b3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJOb0lkZW50aWZpY2FjaW9uIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gb3BjaW9uYWwgcGFyYSBleHByZXNhciBlbCBuw7ptZXJvIGRlIHBhcnRlLCBpZGVudGlmaWNhZG9yIGRlbCBwcm9kdWN0byBvIGRlbCBzZXJ2aWNpbywgbGEgY2xhdmUgZGUgcHJvZHVjdG8gbyBzZXJ2aWNpbywgU0tVIG8gZXF1aXZhbGVudGUsIHByb3BpYSBkZSBsYSBvcGVyYWNpw7NuIGRlbCBlbWlzb3IsIGFtcGFyYWRvIHBvciBlbCBwcmVzZW50ZSBjb25jZXB0by4gT3BjaW9uYWxtZW50ZSBzZSBwdWVkZSB1dGlsaXphciBjbGF2ZXMgZGVsIGVzdMOhbmRhciBHVElOLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQk8eHM6bWluTGVuZ3RoIHZhbHVlPSIxIi8+DQoJCQkJCQkJCQkJCQk8eHM6bWF4TGVuZ3RoIHZhbHVlPSIxMDAiLz4NCgkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsMTAwfSIvPg0KCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJDYW50aWRhZCIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHByZWNpc2FyIGxhIGNhbnRpZGFkIGRlIGJpZW5lcyBvIHNlcnZpY2lvcyBkZWwgdGlwbyBwYXJ0aWN1bGFyIGRlZmluaWRvIHBvciBlbCBwcmVzZW50ZSBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZGVjaW1hbCI+DQoJCQkJCQkJCQkJCQk8eHM6ZnJhY3Rpb25EaWdpdHMgdmFsdWU9IjYiLz4NCgkJCQkJCQkJCQkJCTx4czptaW5JbmNsdXNpdmUgdmFsdWU9IjAuMDAwMDAxIi8+DQoJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQ2xhdmVVbmlkYWQiIHR5cGU9ImNhdENGREk6Y19DbGF2ZVVuaWRhZCIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHByZWNpc2FyIGxhIGNsYXZlIGRlIHVuaWRhZCBkZSBtZWRpZGEgZXN0YW5kYXJpemFkYSBhcGxpY2FibGUgcGFyYSBsYSBjYW50aWRhZCBleHByZXNhZGEgZW4gZWwgY29uY2VwdG8uIExhIHVuaWRhZCBkZWJlIGNvcnJlc3BvbmRlciBjb24gbGEgZGVzY3JpcGNpw7NuIGRlbCBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlVuaWRhZCIgdXNlPSJvcHRpb25hbCI+DQoJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIG9wY2lvbmFsIHBhcmEgcHJlY2lzYXIgbGEgdW5pZGFkIGRlIG1lZGlkYSBwcm9waWEgZGUgbGEgb3BlcmFjacOzbiBkZWwgZW1pc29yLCBhcGxpY2FibGUgcGFyYSBsYSBjYW50aWRhZCBleHByZXNhZGEgZW4gZWwgY29uY2VwdG8uIExhIHVuaWRhZCBkZWJlIGNvcnJlc3BvbmRlciBjb24gbGEgZGVzY3JpcGNpw7NuIGRlbCBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjIwIi8+DQoJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsMjB9Ii8+DQoJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkRlc2NyaXBjaW9uIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgcHJlY2lzYXIgbGEgZGVzY3JpcGNpw7NuIGRlbCBiaWVuIG8gc2VydmljaW8gY3ViaWVydG8gcG9yIGVsIHByZXNlbnRlIGNvbmNlcHRvLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJPHhzOm1pbkxlbmd0aCB2YWx1ZT0iMSIvPg0KCQkJCQkJCQkJCQkJPHhzOm1heExlbmd0aCB2YWx1ZT0iMTAwMCIvPg0KCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDEwMDB9Ii8+DQoJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlZhbG9yVW5pdGFyaW8iIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBwcmVjaXNhciBlbCB2YWxvciBvIHByZWNpbyB1bml0YXJpbyBkZWwgYmllbiBvIHNlcnZpY2lvIGN1YmllcnRvIHBvciBlbCBwcmVzZW50ZSBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkltcG9ydGUiIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBwcmVjaXNhciBlbCBpbXBvcnRlIHRvdGFsIGRlIGxvcyBiaWVuZXMgbyBzZXJ2aWNpb3MgZGVsIHByZXNlbnRlIGNvbmNlcHRvLiBEZWJlIHNlciBlcXVpdmFsZW50ZSBhbCByZXN1bHRhZG8gZGUgbXVsdGlwbGljYXIgbGEgY2FudGlkYWQgcG9yIGVsIHZhbG9yIHVuaXRhcmlvIGV4cHJlc2FkbyBlbiBlbCBjb25jZXB0by4gTm8gc2UgcGVybWl0ZW4gdmFsb3JlcyBuZWdhdGl2b3MuIDwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iRGVzY3VlbnRvIiB0eXBlPSJ0ZENGREk6dF9JbXBvcnRlIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gb3BjaW9uYWwgcGFyYSByZXByZXNlbnRhciBlbCBpbXBvcnRlIGRlIGxvcyBkZXNjdWVudG9zIGFwbGljYWJsZXMgYWwgY29uY2VwdG8uIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iT2JqZXRvSW1wIiB0eXBlPSJjYXRDRkRJOmNfT2JqZXRvSW1wIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgc2kgbGEgb3BlcmFjacOzbiBjb21lcmNpYWwgZXMgb2JqZXRvIG8gbm8gZGUgaW1wdWVzdG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJCTwveHM6Y29tcGxleFR5cGU+DQoJCQkJPC94czplbGVtZW50Pg0KCQkJCTx4czplbGVtZW50IG5hbWU9IkltcHVlc3RvcyIgbWluT2NjdXJzPSIwIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIGNvbmRpY2lvbmFsIHBhcmEgZXhwcmVzYXIgZWwgcmVzdW1lbiBkZSBsb3MgaW1wdWVzdG9zIGFwbGljYWJsZXMuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJSZXRlbmNpb25lcyIgbWluT2NjdXJzPSIwIj4NCgkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIGNvbmRpY2lvbmFsIHBhcmEgY2FwdHVyYXIgbG9zIGltcHVlc3RvcyByZXRlbmlkb3MgYXBsaWNhYmxlcy4gRXMgcmVxdWVyaWRvIGN1YW5kbyBlbiBsb3MgY29uY2VwdG9zIHNlIHJlZ2lzdHJlIGFsZ8O6biBpbXB1ZXN0byByZXRlbmlkby48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IlJldGVuY2lvbiIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gcmVxdWVyaWRvIHBhcmEgbGEgaW5mb3JtYWNpw7NuIGRldGFsbGFkYSBkZSB1bmEgcmV0ZW5jacOzbiBkZSBpbXB1ZXN0byBlc3BlY8OtZmljby48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJJbXB1ZXN0byIgdHlwZT0iY2F0Q0ZESTpjX0ltcHVlc3RvIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgc2XDsWFsYXIgbGEgY2xhdmUgZGVsIHRpcG8gZGUgaW1wdWVzdG8gcmV0ZW5pZG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJJbXBvcnRlIiB0eXBlPSJ0ZENGREk6dF9JbXBvcnRlIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgc2XDsWFsYXIgZWwgbW9udG8gZGVsIGltcHVlc3RvIHJldGVuaWRvLiBObyBzZSBwZXJtaXRlbiB2YWxvcmVzIG5lZ2F0aXZvcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCTwveHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQkJPC94czplbGVtZW50Pg0KCQkJCQkJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iVHJhc2xhZG9zIiBtaW5PY2N1cnM9IjAiPg0KCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gY29uZGljaW9uYWwgcGFyYSBjYXB0dXJhciBsb3MgaW1wdWVzdG9zIHRyYXNsYWRhZG9zIGFwbGljYWJsZXMuIEVzIHJlcXVlcmlkbyBjdWFuZG8gZW4gbG9zIGNvbmNlcHRvcyBzZSByZWdpc3RyZSB1biBpbXB1ZXN0byB0cmFzbGFkYWRvLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQk8eHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iVHJhc2xhZG8iIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCgkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIHJlcXVlcmlkbyBwYXJhIGxhIGluZm9ybWFjacOzbiBkZXRhbGxhZGEgZGUgdW4gdHJhc2xhZG8gZGUgaW1wdWVzdG8gZXNwZWPDrWZpY28uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQmFzZSIgdHlwZT0idGRDRkRJOnRfSW1wb3J0ZSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIHN1bWEgZGUgbG9zIGF0cmlidXRvcyBCYXNlIGRlIGxvcyBjb25jZXB0b3MgZGVsIGltcHVlc3RvIHRyYXNsYWRhZG8uIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iSW1wdWVzdG8iIHR5cGU9ImNhdENGREk6Y19JbXB1ZXN0byIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIGNsYXZlIGRlbCB0aXBvIGRlIGltcHVlc3RvIHRyYXNsYWRhZG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJUaXBvRmFjdG9yIiB0eXBlPSJjYXRDRkRJOmNfVGlwb0ZhY3RvciIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIGNsYXZlIGRlbCB0aXBvIGRlIGZhY3RvciBxdWUgc2UgYXBsaWNhIGEgbGEgYmFzZSBkZWwgaW1wdWVzdG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJUYXNhT0N1b3RhIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSBzZcOxYWxhciBlbCB2YWxvciBkZSBsYSB0YXNhIG8gY3VvdGEgZGVsIGltcHVlc3RvIHF1ZSBzZSB0cmFzbGFkYSBwb3IgbG9zIGNvbmNlcHRvcyBhbXBhcmFkb3MgZW4gZWwgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmRlY2ltYWwiPg0KCQkJCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwLjAwMDAwMCIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOmZyYWN0aW9uRGlnaXRzIHZhbHVlPSI2Ii8+DQoJCQkJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkltcG9ydGUiIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBjb25kaWNpb25hbCBwYXJhIHNlw7FhbGFyIGxhIHN1bWEgZGVsIGltcG9ydGUgZGVsIGltcHVlc3RvIHRyYXNsYWRhZG8sIGFncnVwYWRvIHBvciBpbXB1ZXN0bywgVGlwb0ZhY3RvciB5IFRhc2FPQ3VvdGEuIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlRvdGFsSW1wdWVzdG9zUmV0ZW5pZG9zIiB0eXBlPSJ0ZENGREk6dF9JbXBvcnRlIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSBleHByZXNhciBlbCB0b3RhbCBkZSBsb3MgaW1wdWVzdG9zIHJldGVuaWRvcyBxdWUgc2UgZGVzcHJlbmRlbiBkZSBsb3MgY29uY2VwdG9zIGV4cHJlc2Fkb3MgZW4gZWwgY29tcHJvYmFudGUgZmlzY2FsIGRpZ2l0YWwgcG9yIEludGVybmV0LiBObyBzZSBwZXJtaXRlbiB2YWxvcmVzIG5lZ2F0aXZvcy4gRXMgcmVxdWVyaWRvIGN1YW5kbyBlbiBsb3MgY29uY2VwdG9zIHNlIHJlZ2lzdHJlbiBpbXB1ZXN0b3MgcmV0ZW5pZG9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iVG90YWxJbXB1ZXN0b3NUcmFzbGFkYWRvcyIgdHlwZT0idGRDRkRJOnRfSW1wb3J0ZSIgdXNlPSJvcHRpb25hbCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIGNvbmRpY2lvbmFsIHBhcmEgZXhwcmVzYXIgZWwgdG90YWwgZGUgbG9zIGltcHVlc3RvcyB0cmFzbGFkYWRvcyBxdWUgc2UgZGVzcHJlbmRlbiBkZSBsb3MgY29uY2VwdG9zIGV4cHJlc2Fkb3MgZW4gZWwgY29tcHJvYmFudGUgZmlzY2FsIGRpZ2l0YWwgcG9yIEludGVybmV0LiBObyBzZSBwZXJtaXRlbiB2YWxvcmVzIG5lZ2F0aXZvcy4gRXMgcmVxdWVyaWRvIGN1YW5kbyBlbiBsb3MgY29uY2VwdG9zIHNlIHJlZ2lzdHJlbiBpbXB1ZXN0b3MgdHJhc2xhZGFkb3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCTwveHM6ZWxlbWVudD4NCgkJCQk8eHM6ZWxlbWVudCBuYW1lPSJDb21wbGVtZW50byIgbWluT2NjdXJzPSIwIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIGRvbmRlIHNlIGluY2x1eWUgZWwgY29tcGxlbWVudG8gVGltYnJlIEZpc2NhbCBEaWdpdGFsIGRlIG1hbmVyYSBvYmxpZ2F0b3JpYSB5IGxvcyBub2RvcyBjb21wbGVtZW50YXJpb3MgZGV0ZXJtaW5hZG9zIHBvciBlbCBTQVQsIGRlIGFjdWVyZG8gY29uIGxhcyBkaXNwb3NpY2lvbmVzIHBhcnRpY3VsYXJlcyBwYXJhIHVuIHNlY3RvciBvIGFjdGl2aWRhZCBlc3BlY8OtZmljYS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCTx4czphbnkgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KCQkJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJPHhzOmVsZW1lbnQgbmFtZT0iQWRkZW5kYSIgbWluT2NjdXJzPSIwIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIHBhcmEgcmVjaWJpciBsYXMgZXh0ZW5zaW9uZXMgYWwgcHJlc2VudGUgZm9ybWF0byBxdWUgc2VhbiBkZSB1dGlsaWRhZCBhbCBjb250cmlidXllbnRlLiBQYXJhIGxhcyByZWdsYXMgZGUgdXNvIGRlbCBtaXNtbywgcmVmZXJpcnNlIGFsIGZvcm1hdG8gb3JpZ2VuLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6Y29tcGxleFR5cGU+DQoJCQkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCQkJPHhzOmFueSBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KCQkJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQk8L3hzOmVsZW1lbnQ+DQoJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJWZXJzaW9uIiB1c2U9InJlcXVpcmVkIiBmaXhlZD0iNC4wIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIGNvbiB2YWxvciBwcmVmaWphZG8gYSA0LjAgcXVlIGluZGljYSBsYSB2ZXJzacOzbiBkZWwgZXN0w6FuZGFyIGJham8gZWwgcXVlIHNlIGVuY3VlbnRyYSBleHByZXNhZG8gZWwgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQoJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iU2VyaWUiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBvcGNpb25hbCBwYXJhIHByZWNpc2FyIGxhIHNlcmllIHBhcmEgY29udHJvbCBpbnRlcm5vIGRlbCBjb250cmlidXllbnRlLiBFc3RlIGF0cmlidXRvIGFjZXB0YSB1bmEgY2FkZW5hIGRlIGNhcmFjdGVyZXMuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQoJCQkJCQk8eHM6bWluTGVuZ3RoIHZhbHVlPSIxIi8+DQoJCQkJCQk8eHM6bWF4TGVuZ3RoIHZhbHVlPSIyNSIvPg0KCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDI1fSIvPg0KCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJGb2xpbyIgdXNlPSJvcHRpb25hbCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIG9wY2lvbmFsIHBhcmEgY29udHJvbCBpbnRlcm5vIGRlbCBjb250cmlidXllbnRlIHF1ZSBleHByZXNhIGVsIGZvbGlvIGRlbCBjb21wcm9iYW50ZSwgYWNlcHRhIHVuYSBjYWRlbmEgZGUgY2FyYWN0ZXJlcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjQwIi8+DQoJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsNDB9Ii8+DQoJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJPC94czphdHRyaWJ1dGU+DQoJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkZlY2hhIiB0eXBlPSJ0ZENGREk6dF9GZWNoYUgiIHVzZT0icmVxdWlyZWQiPg0KCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBsYSBleHByZXNpw7NuIGRlIGxhIGZlY2hhIHkgaG9yYSBkZSBleHBlZGljacOzbiBkZWwgQ29tcHJvYmFudGUgRmlzY2FsIERpZ2l0YWwgcG9yIEludGVybmV0LiBTZSBleHByZXNhIGVuIGxhIGZvcm1hIEFBQUEtTU0tRERUaGg6bW06c3MgeSBkZWJlIGNvcnJlc3BvbmRlciBjb24gbGEgaG9yYSBsb2NhbCBkb25kZSBzZSBleHBpZGUgZWwgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJTZWxsbyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGNvbnRlbmVyIGVsIHNlbGxvIGRpZ2l0YWwgZGVsIGNvbXByb2JhbnRlIGZpc2NhbCwgYWwgcXVlIGhhY2VuIHJlZmVyZW5jaWEgbGFzIHJlZ2xhcyBkZSByZXNvbHVjacOzbiBtaXNjZWzDoW5lYSB2aWdlbnRlLiBFbCBzZWxsbyBkZWJlIHNlciBleHByZXNhZG8gY29tbyB1bmEgY2FkZW5hIGRlIHRleHRvIGVuIGZvcm1hdG8gQmFzZSA2NC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJGb3JtYVBhZ28iIHR5cGU9ImNhdENGREk6Y19Gb3JtYVBhZ28iIHVzZT0ib3B0aW9uYWwiPg0KCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBjb25kaWNpb25hbCBwYXJhIGV4cHJlc2FyIGxhIGNsYXZlIGRlIGxhIGZvcm1hIGRlIHBhZ28gZGUgbG9zIGJpZW5lcyBvIHNlcnZpY2lvcyBhbXBhcmFkb3MgcG9yIGVsIGNvbXByb2JhbnRlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTm9DZXJ0aWZpY2FkbyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIGVsIG7Dum1lcm8gZGUgc2VyaWUgZGVsIGNlcnRpZmljYWRvIGRlIHNlbGxvIGRpZ2l0YWwgcXVlIGFtcGFyYSBhbCBjb21wcm9iYW50ZSwgZGUgYWN1ZXJkbyBjb24gZWwgYWN1c2UgY29ycmVzcG9uZGllbnRlIGEgMjAgcG9zaWNpb25lcyBvdG9yZ2FkbyBwb3IgZWwgc2lzdGVtYSBkZWwgU0FULjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJPC94czphdHRyaWJ1dGU+DQoJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkNlcnRpZmljYWRvIiB1c2U9InJlcXVpcmVkIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHF1ZSBzaXJ2ZSBwYXJhIGluY29ycG9yYXIgZWwgY2VydGlmaWNhZG8gZGUgc2VsbG8gZGlnaXRhbCBxdWUgYW1wYXJhIGFsIGNvbXByb2JhbnRlLCBjb21vIHRleHRvIGVuIGZvcm1hdG8gYmFzZSA2NC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJDb25kaWNpb25lc0RlUGFnbyIgdXNlPSJvcHRpb25hbCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIGNvbmRpY2lvbmFsIHBhcmEgZXhwcmVzYXIgbGFzIGNvbmRpY2lvbmVzIGNvbWVyY2lhbGVzIGFwbGljYWJsZXMgcGFyYSBlbCBwYWdvIGRlbCBjb21wcm9iYW50ZSBmaXNjYWwgZGlnaXRhbCBwb3IgSW50ZXJuZXQuIEVzdGUgYXRyaWJ1dG8gcHVlZGUgc2VyIGNvbmRpY2lvbmFkbyBtZWRpYW50ZSBhdHJpYnV0b3MgbyBjb21wbGVtZW50b3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQoJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjEwMDAiLz4NCgkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsMTAwMH0iLz4NCgkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iU3ViVG90YWwiIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0icmVxdWlyZWQiPg0KCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSByZXByZXNlbnRhciBsYSBzdW1hIGRlIGxvcyBpbXBvcnRlcyBkZSBsb3MgY29uY2VwdG9zIGFudGVzIGRlIGRlc2N1ZW50b3MgZSBpbXB1ZXN0by4gTm8gc2UgcGVybWl0ZW4gdmFsb3JlcyBuZWdhdGl2b3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJEZXNjdWVudG8iIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBjb25kaWNpb25hbCBwYXJhIHJlcHJlc2VudGFyIGVsIGltcG9ydGUgdG90YWwgZGUgbG9zIGRlc2N1ZW50b3MgYXBsaWNhYmxlcyBhbnRlcyBkZSBpbXB1ZXN0b3MuIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLiBTZSBkZWJlIHJlZ2lzdHJhciBjdWFuZG8gZXhpc3RhbiBjb25jZXB0b3MgY29uIGRlc2N1ZW50by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJPC94czphdHRyaWJ1dGU+DQoJCQk8eHM6YXR0cmlidXRlIG5hbWU9Ik1vbmVkYSIgdHlwZT0iY2F0Q0ZESTpjX01vbmVkYSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGlkZW50aWZpY2FyIGxhIGNsYXZlIGRlIGxhIG1vbmVkYSB1dGlsaXphZGEgcGFyYSBleHByZXNhciBsb3MgbW9udG9zLCBjdWFuZG8gc2UgdXNhIG1vbmVkYSBuYWNpb25hbCBzZSByZWdpc3RyYSBNWE4uIENvbmZvcm1lIGNvbiBsYSBlc3BlY2lmaWNhY2nDs24gSVNPIDQyMTcuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJUaXBvQ2FtYmlvIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSByZXByZXNlbnRhciBlbCB0aXBvIGRlIGNhbWJpbyBGSVggY29uZm9ybWUgY29uIGxhIG1vbmVkYSB1c2FkYS4gRXMgcmVxdWVyaWRvIGN1YW5kbyBsYSBjbGF2ZSBkZSBtb25lZGEgZXMgZGlzdGludGEgZGUgTVhOIHkgZGUgWFhYLiBFbCB2YWxvciBkZWJlIHJlZmxlamFyIGVsIG7Dum1lcm8gZGUgcGVzb3MgbWV4aWNhbm9zIHF1ZSBlcXVpdmFsZW4gYSB1bmEgdW5pZGFkIGRlIGxhIGRpdmlzYSBzZcOxYWxhZGEgZW4gZWwgYXRyaWJ1dG8gbW9uZWRhLiBTaSBlbCB2YWxvciBlc3TDoSBmdWVyYSBkZWwgcG9yY2VudGFqZSBhcGxpY2FibGUgYSBsYSBtb25lZGEgdG9tYWRvIGRlbCBjYXTDoWxvZ28gY19Nb25lZGEsIGVsIGVtaXNvciBkZWJlIG9idGVuZXIgZGVsIFBBQyBxdWUgdmF5YSBhIHRpbWJyYXIgZWwgQ0ZESSwgZGUgbWFuZXJhIG5vIGF1dG9tw6F0aWNhLCB1bmEgY2xhdmUgZGUgY29uZmlybWFjacOzbiBwYXJhIHJhdGlmaWNhciBxdWUgZWwgdmFsb3IgZXMgY29ycmVjdG8gZSBpbnRlZ3JhciBkaWNoYSBjbGF2ZSBlbiBlbCBhdHJpYnV0byBDb25maXJtYWNpb24uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmRlY2ltYWwiPg0KCQkJCQkJPHhzOmZyYWN0aW9uRGlnaXRzIHZhbHVlPSI2Ii8+DQoJCQkJCQk8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwLjAwMDAwMSIvPg0KCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJPC94czphdHRyaWJ1dGU+DQoJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlRvdGFsIiB0eXBlPSJ0ZENGREk6dF9JbXBvcnRlIiB1c2U9InJlcXVpcmVkIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgcmVwcmVzZW50YXIgbGEgc3VtYSBkZWwgc3VidG90YWwsIG1lbm9zIGxvcyBkZXNjdWVudG9zIGFwbGljYWJsZXMsIG3DoXMgbGFzIGNvbnRyaWJ1Y2lvbmVzIHJlY2liaWRhcyAoaW1wdWVzdG9zIHRyYXNsYWRhZG9zIC0gZmVkZXJhbGVzIHkvbyBsb2NhbGVzLCBkZXJlY2hvcywgcHJvZHVjdG9zLCBhcHJvdmVjaGFtaWVudG9zLCBhcG9ydGFjaW9uZXMgZGUgc2VndXJpZGFkIHNvY2lhbCwgY29udHJpYnVjaW9uZXMgZGUgbWVqb3JhcykgbWVub3MgbG9zIGltcHVlc3RvcyByZXRlbmlkb3MgZmVkZXJhbGVzIHkvbyBsb2NhbGVzLiBTaSBlbCB2YWxvciBlcyBzdXBlcmlvciBhbCBsw61taXRlIHF1ZSBlc3RhYmxlemNhIGVsIFNBVCBlbiBsYSBSZXNvbHVjacOzbiBNaXNjZWzDoW5lYSBGaXNjYWwgdmlnZW50ZSwgZWwgZW1pc29yIGRlYmUgb2J0ZW5lciBkZWwgUEFDIHF1ZSB2YXlhIGEgdGltYnJhciBlbCBDRkRJLCBkZSBtYW5lcmEgbm8gYXV0b23DoXRpY2EsIHVuYSBjbGF2ZSBkZSBjb25maXJtYWNpw7NuIHBhcmEgcmF0aWZpY2FyIHF1ZSBlbCB2YWxvciBlcyBjb3JyZWN0byBlIGludGVncmFyIGRpY2hhIGNsYXZlIGVuIGVsIGF0cmlidXRvIENvbmZpcm1hY2lvbi4gTm8gc2UgcGVybWl0ZW4gdmFsb3JlcyBuZWdhdGl2b3MuIDwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iVGlwb0RlQ29tcHJvYmFudGUiIHR5cGU9ImNhdENGREk6Y19UaXBvRGVDb21wcm9iYW50ZSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIGxhIGNsYXZlIGRlbCBlZmVjdG8gZGVsIGNvbXByb2JhbnRlIGZpc2NhbCBwYXJhIGVsIGNvbnRyaWJ1eWVudGUgZW1pc29yLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iRXhwb3J0YWNpb24iIHR5cGU9ImNhdENGREk6Y19FeHBvcnRhY2lvbiIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIHNpIGVsIGNvbXByb2JhbnRlIGFtcGFyYSB1bmEgb3BlcmFjacOzbiBkZSBleHBvcnRhY2nDs24uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJNZXRvZG9QYWdvIiB0eXBlPSJjYXRDRkRJOmNfTWV0b2RvUGFnbyIgdXNlPSJvcHRpb25hbCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIGNvbmRpY2lvbmFsIHBhcmEgcHJlY2lzYXIgbGEgY2xhdmUgZGVsIG3DqXRvZG8gZGUgcGFnbyBxdWUgYXBsaWNhIHBhcmEgZXN0ZSBjb21wcm9iYW50ZSBmaXNjYWwgZGlnaXRhbCBwb3IgSW50ZXJuZXQsIGNvbmZvcm1lIGFsIEFydMOtY3VsbyAyOS1BIGZyYWNjacOzbiBWSUkgaW5jaXNvcyBhIHkgYiBkZWwgQ0ZGLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTHVnYXJFeHBlZGljaW9uIiB0eXBlPSJjYXRDRkRJOmNfQ29kaWdvUG9zdGFsIiB1c2U9InJlcXVpcmVkIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgaW5jb3Jwb3JhciBlbCBjw7NkaWdvIHBvc3RhbCBkZWwgbHVnYXIgZGUgZXhwZWRpY2nDs24gZGVsIGNvbXByb2JhbnRlIChkb21pY2lsaW8gZGUgbGEgbWF0cml6IG8gZGUgbGEgc3VjdXJzYWwpLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQ29uZmlybWFjaW9uIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSByZWdpc3RyYXIgbGEgY2xhdmUgZGUgY29uZmlybWFjacOzbiBxdWUgZW50cmVndWUgZWwgUEFDIHBhcmEgZXhwZWRpciBlbCBjb21wcm9iYW50ZSBjb24gaW1wb3J0ZXMgZ3JhbmRlcywgY29uIHVuIHRpcG8gZGUgY2FtYmlvIGZ1ZXJhIGRlbCByYW5nbyBlc3RhYmxlY2lkbyBvIGNvbiBhbWJvcyBjYXNvcy4gRXMgcmVxdWVyaWRvIGN1YW5kbyBzZSByZWdpc3RyYSB1biB0aXBvIGRlIGNhbWJpbyBvIHVuIHRvdGFsIGZ1ZXJhIGRlbCByYW5nbyBlc3RhYmxlY2lkby48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJPHhzOmxlbmd0aCB2YWx1ZT0iNSIvPg0KCQkJCQkJPHhzOnBhdHRlcm4gdmFsdWU9IlswLTlhLXpBLVpdezV9Ii8+DQoJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJPC94czphdHRyaWJ1dGU+DQoJCTwveHM6Y29tcGxleFR5cGU+DQoJPC94czplbGVtZW50Pg0KPC94czpzY2hlbWE+DQo=</field>
     </record>
 
-</data>
-
-<data noupdate="1">
-
-    <!-- PDF invoice report definition -->
-    <record id="ir_actions_report_pdf_account_invioice_cfdi"
-        model="ir.actions.report">
+    <!-- PDF move report definition -->
+    <record id="ir_actions_report_pdf_account_move_cfdi" model="ir.actions.report">
         <field name="name">Account Move CFDI PDF</field>
         <field name="model">account.move</field>
-        <field name="report_name">move.report.aaero.pdf</field>
         <field name="report_type">aeroo</field>
-        <field name="in_format">oo-odt</field>
-        <field name="out_format" ref="report_aeroo.report_mimetypes_pdf_odt" />
+        <field name="report_name">l10n_mx_facturae.account_move_template_cfdi_pdf</field>
+        <field name="tml_source">file</field>
         <field name="report_file">l10n_mx_facturae/report/account_move.odt</field>
+        <field name="in_format">oo-odt</field>
+        <field name="out_format" ref="report_aeroo.report_mimetypes_pdf_odt"/>
         <field name="parser_model">report.l10n_mx_qr</field>
+        <field name="styles_mode">default</field>
+        <field name="preload_mode">static</field>
+        <field name="deferred">off</field>
     </record>
-
-</data>
 </odoo>
diff --git a/l10n_mx_facturae/data/account_payment.xml b/l10n_mx_facturae/data/account_payment.xml
index 103ef68cd2..83fecf0d4a 100644
--- a/l10n_mx_facturae/data/account_payment.xml
+++ b/l10n_mx_facturae/data/account_payment.xml
@@ -1,58 +1,30 @@
 <?xml version="1.0" encoding="utf-8"?>
 <odoo>
-<data>
 
-    <!-- XML voucher report definition -->
-    <record id="report_templates_aeroo_account_voucher_cfdi"
-        model="report.templates.aeroo">
-        <field name="name">Account VouPaymentcher CFDI XML</field>
+    <!-- XML payment report definition -->
+    <record id="ir_actions_report_xml_account_payment_cfdi" model="ir.actions.report">
+        <field name="name">Account Payment CFDI XML</field>
         <field name="model">account.payment</field>
-        <field name="report_name">account.voucher.cfdi.xml</field>
-        <field
-            name="report_rml">l10n_mx_facturae/templates/account_voucher.txt</field>
+        <field name="report_type">qweb-xml</field>
+        <field name="report_name">l10n_mx_facturae.account_payment_template_cfdi_xml</field>
+        <field name="xml_declaration">true</field>
+        <field name="xsd_schema"></field>
     </record>
 
-    <record id="ir_actions_report_xml_account_voucher_cfdi"
-        model="ir.actions.report.xml">
-        <field name="name">Account Voucher CFDI XML</field>
-        <field name="type">ir.actions.report.xml</field>
-        <field name="model">account.voucher</field>
-        <field name="report_name">account.voucher.cfdi.xml</field>
-        <field name="report_type">aeroo</field>
-        <field name="in_format">genshi-raw</field>
-        <field name="out_format" ref="report_aeroo.report_mimetypes_raw" />
-        <field name="aeroo_templates_ids"
-            eval="[(6, 0, [report_templates_aeroo_account_voucher_cfdi])]" />
-        <field name="parser_state">default</field>
-    </record>
-
-</data>
-
-<data noupdate="1">
-
-    <!-- PDF voucher report definition -->
-    <record id="report_templates_aeroo_account_payment_pdf_cfdi"
-        model="report.templates.aeroo">
-        <field name="name">Default Payment CFDI PDF</field>
-        <field name="model">account.payment</field>
-        <field name="report_name">account.payment.cfdi.pdf</field>
-        <field name="report_rml">l10n_mx_facturae/report/account_payment.odt</field>
-    </record>
-
-    <record id="ir_actions_report_pdf_account_payment_cfdi"
-        model="ir.actions.report.xml">
+    <!-- PDF payment report definition -->
+    <record id="ir_actions_report_pdf_account_payment_cfdi" model="ir.actions.report">
         <field name="name">Account Payment CFDI PDF</field>
-        <field name="type">ir.actions.report.xml</field>
         <field name="model">account.payment</field>
-        <field name="report_name">account.voucher.cfdi.pdf</field>
         <field name="report_type">aeroo</field>
+        <field name="report_name">l10n_mx_facturae.account_payment_template_cfdi_pdf</field>
+        <field name="tml_source">file</field>
+        <field name="report_file">l10n_mx_facturae/report/account_payment.odt</field>
         <field name="in_format">oo-odt</field>
-        <field name="out_format" ref="report_aeroo.report_mimetypes_pdf_odt" />
-        <field name="aeroo_templates_ids"
-            eval="[(6, 0, [report_templates_aeroo_account_payment_pdf_cfdi])]" />
-        <field name="parser_loc">l10n_mx_ir_attachment_facturae/report/generate_qr.py</field>
-        <field name="parser_state">loc</field>
+        <field name="out_format" ref="report_aeroo.report_mimetypes_pdf_odt"/>
+        <field name="parser_model">report.l10n_mx_facturae.account_payment_template_cfdi_xml</field>
+        <field name="styles_mode">default</field>
+        <field name="preload_mode">static</field>
+        <field name="deferred">off</field>
     </record>
 
-</data>
 </odoo>
diff --git a/l10n_mx_facturae/data/ir_attachment_facturae_config.xml b/l10n_mx_facturae/data/ir_attachment_facturae_config.xml
index c089ec2088..db90752145 100644
--- a/l10n_mx_facturae/data/ir_attachment_facturae_config.xml
+++ b/l10n_mx_facturae/data/ir_attachment_facturae_config.xml
@@ -5,22 +5,22 @@
         model="ir.attachment.facturae.mx.config">
         <field name="model">account.move</field>
         <field name="version">4.0</field>
-        <field name="template_xml_sign">account.move.cfdi.xml</field>
+        <field name="template_xml_sign">l10n_mx_facturae.account_move_template_cfdi_xml</field>
         <field name="template_xml_cancel">Aun.no.hay.uno</field>
-        <field name="template_pdf_sign">move.report.aaero.pdf</field>
-        <field name="template_pdf_cancel">move.report.aaero.pdf</field>
-        <!--<field name="email_template_id" ref="account.email_template_edi_invoice"/>-->
+        <field name="template_pdf_sign">l10n_mx_facturae.account_move_template_cfdi_pdf</field>
+        <field name="template_pdf_cancel">l10n_mx_facturae.account_move_template_cfdi_pdf</field>
+        <!--<field name="mail_template_id" ref="account.email_template_edi_invoice"/>-->
     </record>
 
     <record id="ir_attachment_facturae_mx_config_account_payment"
         model="ir.attachment.facturae.mx.config">
         <field name="model">account.payment</field>
         <field name="version">4.0</field>
-        <field name="template_xml_sign">account.payment.cfdi.xml</field>
+        <field name="template_xml_sign">l10n_mx_facturae.account_payment_template_cfdi_xml</field>
         <field name="template_xml_cancel">Aun.no.hay.uno</field>
-        <field name="template_pdf_sign">account.payment.cfdi.pdf</field>
-        <field name="template_pdf_cancel">account.payment.cfdi.pdf</field>
-        <!--<field name="email_template_id" ref="account_payment_cfdi_email_template"/>-->
+        <field name="template_pdf_sign">l10n_mx_facturae.account_payment_template_cfdi_pdf</field>
+        <field name="template_pdf_cancel"><!--l10n_mx_facturae.account_payment_template_cfdi_pdf--></field>
+        <!--<field name="mail_template_id" ref="account_payment_cfdi_email_template"/>-->
     </record>
 
 </odoo>
diff --git a/l10n_mx_facturae/demo/l10n_mx_facturae_demo.xml b/l10n_mx_facturae/demo/demo_res_partner.xml
similarity index 73%
rename from l10n_mx_facturae/demo/l10n_mx_facturae_demo.xml
rename to l10n_mx_facturae/demo/demo_res_partner.xml
index aebdd71c2b..941161b955 100644
--- a/l10n_mx_facturae/demo/l10n_mx_facturae_demo.xml
+++ b/l10n_mx_facturae/demo/demo_res_partner.xml
@@ -1,6 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <odoo>
 
+    <record id="l10n_mx.demo_company_mx" model="res.company">
+        <field name="city">Jesus Maria</field>
+        <field name="state_id" ref="base.state_mx_ags"/>
+        <field name="cfdi_fiscal_regime_id" ref="l10n_mx_base.regime_fiscal_601"/>
+        <field name="cfdi_use_id" ref="l10n_mx_base.cfdi_use_S01"/>
+    </record>
+
     <record id="res_partner_2023" model="res.partner">
         <field name="name">Felix Manuel Andrade Ballado</field>
         <field name="is_company">1</field>
@@ -12,7 +19,6 @@
         <field name="phone">(870)-931-0505</field>
         <field name="country_id" ref="base.mx"/>
         <field name="email">felix.andrade@example.com</field>
-        <field name="image_2023" type="base64" file="base/static/img/partner_demo_portal.jpg"/>
         <field name="company_id" ref="l10n_mx.demo_company_mx"/>
         <field name="cfdi_fiscal_regime_id" ref="l10n_mx_base.regime_fiscal_616"/>
         <field name="cfdi_use_id" ref="l10n_mx_base.cfdi_use_S01"/>
diff --git a/l10n_mx_facturae/models/__init__.py b/l10n_mx_facturae/models/__init__.py
index 0431e16b13..8d64c35b0c 100644
--- a/l10n_mx_facturae/models/__init__.py
+++ b/l10n_mx_facturae/models/__init__.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 from . import account_move
-#from . import account_payment
+from . import account_payment
 #from . import email_template
 from . import res_company
 from . import res_partner
diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index 7cfe80dede..063bb5549b 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -73,23 +73,18 @@ class AccountMove(models.Model):
                 # Mimic logic from compute function in account.invoice.tax
                 # object to group taxes from invoice lines and be able to get
                 # the same result for display on CFDI
-                if self.move_type in ("out_invoice", "in_invoice"):
-                    tax.account_id = tax.account_collected_id or line.account_id.id
-                    tax.analytic_id = tax.account_analytic_collected_id
+                grouping_dict = self._get_tax_grouping_key_from_tax_line(line)
+                grouping_key = "-".join(str(v) for v in grouping_dict.values())
+                if grouping_key not in tax_grouped:
+                    tax_grouped[grouping_key] = tax
                 else:
-                    tax.account_id = tax.account_paid_id or line.account_id.id
-                    tax.analytic_id = tax.account_analytic_paid_id
-
-                key = (tax.id, tax.account_id, tax.analytic_id)
-                if key not in tax_grouped:
-                    tax_grouped[key] = tax
-                else:
-                    tax_grouped[key].amount += tax.amount
-                    tax_grouped[key].base += tax.base
+                    tax_grouped[grouping_key].amount += tax.amount
+                    tax_grouped[grouping_key].base += tax.base
 
         # Classify taxes for CFDI
         for dummy, tax in tax_grouped.items():
             if tax.group in ["IVA", "IEPS", "ISR"]:
+                tax.xml_amount = "{0:.2f}".format(tax.amount)
                 if tax.amount >= 0:
                     taxes["traslados"].append(tax)
                     taxes["total_traslados"] += tax.amount
@@ -205,14 +200,14 @@ class AccountMove(models.Model):
 
     def _compute_sequence_id(self):
         for record in self:
-            record.sequence_id = record.journal_id.sequence_id
+            record.sequence_id = record.journal_id.secure_sequence_id
 
     def _compute_l10n_mx_edi_to_cancel(self):
         """Computes legend to display when an invoice needs to be cancelled because
         have being substituted by a new one.
         """
         # Get substitution relation to compare
-        substitution = self.env.ref("l10n_mx_base.cfdi_relation_type_04")
+        substitution = self.env.ref("l10n_mx_ir_attachment_facturae.cfdi_relation_type_04")
         invoices_to_cancel = self.filtered(
             lambda i: i.move_type == "out_invoice" and i.state in ("posted",)
         )
@@ -226,7 +221,7 @@ class AccountMove(models.Model):
                 [o.cfdi_relation_type == substitution for o in origin_documents]
             )
             if origin_documents and is_substitue:
-                message = _("This invoice must be cancelled because have being "
+                message00 = _("This invoice must be cancelled because have being "
                             "replaced with invoice: ")
                 inv.l10n_mx_edi_original_invoice = origin_documents[0]
 
@@ -235,7 +230,7 @@ class AccountMove(models.Model):
     @api.model
     def _search_l10n_mx_edi_to_cancel(self, operator, value):
         """Allows to get ids for invoices that must be cancelled"""
-        substitution = self.env.ref("l10n_mx_base.cfdi_relation_type_04")
+        substitution = self.env.ref("l10n_mx_ir_attachment_facturae.cfdi_relation_type_04")
 
         if operator not in ["=", "!="] or not isinstance(value, bool):
             raise UserError(_("Operation not supported"))
@@ -392,65 +387,138 @@ class AccountMove(models.Model):
                     ) % (e)
                 )
 
-    def _validate_cfdi_data(self):
-        for record in self:
-            record._validate_account_invoice_fields()
-            record._validate_account_invoice_partners()
-
-    def _validate_account_invoice_fields(self):
-        """ This function is to validate that the invoice has an
-            issue address, partner and company"""
+    def _compute_export(self):
         for record in self:
-            self._cfdi_validate_required_fields(
-                record,
-                [
-                    "cfdi_use",
-                    "partner_id",
-                    "payment_type_ids",
-                    "address_issued_id",
-                    "journal_id",
-                ],
+            record.l10n_mx_export = bool(
+                record.cfdi_adenda_ids.filtered(
+                    lambda i: i.code == "02"
+                ) and record.commercial_partner_id.country_id.code_alpha3 != "MEX"
             )
 
-    def _validate_account_invoice_partners(self):
-        """ This function is to validate that the vat of the
-            commercial partner and company"""
+    ############################################################
+    # This section compute function of decision for xml CFDI 4.0
+    ############################################################
 
-        required = [
-            "vat",
-            "zip",
-            "cfdi_fiscal_regime_id",
-        ]
+    def l10n_mx_facturae_compute_fecha(self):
+        tz = pytz.timezone(self.env.user.tz or pytz.utc.zone)
+        date = pytz.UTC.localize(self.cfdi_datetime).astimezone(tz)
+        return date.strftime("%Y-%m-%dT%H:%M:%S")
 
-        for record in self:
-            self._cfdi_validate_required_fields(
-                record.address_issued_id,
-                required,
-            )
+    def l10n_mx_facturae_compute_serie(self):
+        if self.journal_id.secure_sequence_id.prefix:
+            return self.serie
 
-            self._cfdi_validate_required_fields(
-                record.company_id.partner_id,
-                required,
-            )
+    def l10n_mx_facturae_compute_export(self):
+        if self.l10n_mx_export:
+            return "02"
 
-            self._cfdi_validate_required_fields(
-                record.commercial_partner_id,
-                required,
-            )
+        return "01"
 
-            if record.partner_id.country_id.code_alpha3 == "MEX":
-                self._cfdi_validate_required_fields(
-                    record.partner_id,
-                    required,
-                )
+    def l10n_mx_facturae_compute_subtotal(self):
+        return "{0:.2f}".format(self.subtotal)
 
-    def _compute_export(self):
-        for record in self:
-            record.l10n_mx_export = bool(
-                record.cfdi_adenda_ids.filtered(
-                    lambda i: i.code == "02"
-                ) and record.commercial_partner_id.country_id.code_alpha3 != "MEX"
-            )
+    def l10n_mx_facturae_compute_total(self):
+        return "{0:.2f}".format(self.total)
+
+    def l10n_mx_facturae_compute_payment_terms(self):
+        paymentterms = self.invoice_payment_term_id.name
+        return paymentterms
+
+    def l10n_mx_facturae_compute_tipocambio(self):
+        tipocambio = False
+        if self.currency_id.name != "MXN":
+            tipocambio = self.custom_rate
+
+        return tipocambio
+
+    def l10n_mx_facturae_compute_type_document(self):
+        if self.move_type == "out_invoice":
+            return "I"
+        elif self.move_type == "out_refund":
+            return "E"
+
+    def l10n_mx_facturae_compute_payment_method(self):
+        if self.payment_method_id.code:
+            return self.payment_method_id.code
+        else:
+            return "PUE"
+
+    def l10n_mx_facturae_compute_rfc(self):
+        if self.commercial_partner_id.country_id.code_alpha3 != "MEX":
+            return "XEXX010101000"
+        else:
+            return self.commercial_partner_id.vat_split
+
+    def l10n_mx_facturae_compute_use_cfdi(self):
+        if self.commercial_partner_id.country_id.code_alpha3 != "MEX":
+            return "S01"
+        else:
+            return self.cfdi_use.code
+
+    def l10n_mx_facturae_compute_domicilio_fiscal(self):
+        code_country = self.commercial_partner_id.country_id.code_alpha3
+        vat = self.commercial_partner_id.vat_split
+        domiciliofiscal = self.commercial_partner_id.zip
+        if code_country == "MEX" and vat == "XAXX010101000" or code_country != "MEX":
+            domiciliofiscal = self.address_issued_id.zip
+
+        return domiciliofiscal
+
+    def l10n_mx_facturae_compute_regimen_fiscal_receptor(self):
+        code_country = self.commercial_partner_id.country_id.code_alpha3
+        regimenfiscal = self.commercial_partner_id.cfdi_fiscal_regime_id.code
+        if code_country != "MEX":
+            regimenfiscal = "616"
+
+        return regimenfiscal
+
+    def l10n_mx_facturae_compute_residencia_fiscal(self):
+        code_country = self.commercial_partner_id.country_id.code_alpha3
+        residenciafiscal = False
+        if code_country != "MEX":
+            residenciafiscal = code_country
+
+        return residenciafiscal
+
+    def l10n_mx_facturae_compute_regimen_tributario(self):
+        code_country = self.commercial_partner_id.country_id.code_alpha3
+        regimentribut = False
+        if code_country != "MEX":
+            regimentribut = self.commercial_partner_id.vat_split
+
+        return regimentribut
+
+    def l10n_mx_facturae_compute_product(self):
+        for line in self.invoice_line_ids:
+            product = line.cfdi_product_code
+            if not line.product_id.name:
+                product = "01010101"
+
+            return product
+
+    def l10n_mx_facturae_compute_unit(self):
+        for line in self.invoice_line_ids:
+            if len(line.product_uom_id.name) > 20:
+                unit = line.product_uom_id.name[:17].upper() + "..."
+            else:
+                unit = line.product_uom_id.name.upper()
+
+            return unit
+
+    def l10n_mx_facturae_compute_total_traslados(self, taxes):
+        res = False
+        if any(tax.type != "Excento" for tax in taxes["traslados"]):
+            res = taxes["total_traslados"]
+
+        return '{0:.2f}'.format(res)
+
+    def l10n_mx_facturae_compute_total_retenciones(self, taxes):
+        res = False
+        if taxes["total_retenciones"]:
+            res = taxes["total_retenciones"]
+            '{0:.2f}'.format(res)
+
+        return res
 
 
 class AccountMoveLine(models.Model):
@@ -518,6 +586,21 @@ class AccountMoveLine(models.Model):
             )
         )
 
+    def l10n_mx_facturae_compute_objeto_impuesto(self):
+        objimp = "01"
+
+        # Process taxes for this line
+        impuestos = self.impuestos
+
+        # Check if there is a maningfull tax
+        summ = sum([float(o.base) for o in impuestos["traslados"]])
+        summ += sum([float(o.base) for o in impuestos["retenciones"]])
+
+        if summ:
+            objimp = "02"
+
+        return objimp
+
     @property
     def importe(self):
         """Return computed total line for display on CFDI"""
@@ -554,7 +637,6 @@ class AccountMoveLine(models.Model):
         return self.export_invoice_line_for_xml().price_unit
 
     def export_invoice_line_for_xml(self):
-        # pylint: disable=R1710
         """Computes all values needed for export account.move.line as CFDI"""
 
         class Dict2obj(object):
@@ -580,40 +662,46 @@ class AccountMoveLine(models.Model):
             @rtype: dictionary or None
             """
             tax_record = self.env["account.tax"].browse(tax["id"])
-            tax_group = tax_record.tax_category_id
+            tax_rep_lines = tax_record.refund_repartition_line_ids._origin.filtered(
+                lambda x: x.repartition_type == "tax"
+            )
+            # TODO: What happen when more than one tag is found?
+            tax_group = tax_rep_lines.mapped("tag_ids")[0]
             # IEPS tax only must be included when partner is IEPS subjected
             if tax_group.name == "IEPS" and not partner.ieps_subjected:
                 return
-            # TODO: Delete on version 3.0.0
-            if "base" not in tax:
-                tax["base"] = currency.cfdi_round(tax["price_unit"] * self.quantity)
             tax["group"] = tax_group.name
-            tax["type"] = tax_record.type
-            tax["TasaOCuota"] = abs(tax_record.amount)
+            tax["xml_name"] = (
+                "001" if tax_group.name == "ISR" else
+                "002" if tax_group.name == "IVA" else "003"
+            )
+            tax["type"] = tax_record.l10n_mx_tax_type
+            tax["xml_amount"] = "{0:.2f}".format(tax["amount"])
+            tax["TasaOCuota"] = "{0:.6f}".format(abs(tax_record.amount)/100)
             return tax
 
         currency = self.move_id.currency_id
         precision = self.env["decimal.precision"].precision_get("Product Price")
         total_discount = 1 - self.discount / 100.0
         # Include global discount
-        total_discount *= 1 - self.move_id.global_discount / 100
+        total_discount *= 1 - self.move_id.amount_global_discount / 100
         price = float_round(self.price_unit * total_discount, precision)
         partner = self.move_id.partner_id
         # Check if IEPS is on taxes, this will be used later to know if need price
         # to be recalculated because IEPS must be price included as partner is not
         # IEPS subjected and product include IEPS taxes
-        ieps_group = self.env.ref("l10n_mx.tax_category_ieps")
+        ieps_group = self.env.ref("l10n_mx_base.tax_group_ieps")
         is_ieps_tax_subjected = any(
-            tax.tax_category_id == ieps_group for tax in self.invoice_line_tax_id
+            tax.tax_group_id == ieps_group for tax in self.tax_ids
         )
         is_price_included = any(
-            tax.price_include for tax in self.invoice_line_tax_id
+            tax.price_include for tax in self.tax_line_id
         )
         # Compute taxes using original compute_all function from
         # account.move.tax to get same result for CFDI display
-        res = self.invoice_line_tax_id.compute_all(
+        res = self.tax_ids.compute_all(
             price,
-            self.quantity,
+            quantity=self.quantity,
             product=self.product_id,
             partner=partner,
             currency=self.move_id.currency_id,
@@ -650,7 +738,7 @@ class AccountMoveLine(models.Model):
         if is_price_included or (not partner.ieps_subjected and is_ieps_tax_subjected):
             # Send round=False in context to avoid rounding to wrong value when working
             # with high Product Price precision (6 digits)
-            res["price_unit"] = self.invoice_line_tax_id.with_context(
+            res["price_unit"] = self.tax_line_id.with_context(
                 round=False
             ).compute_all(
                 res["price_unit"], 1.0, product=self.product_id, partner=partner
@@ -668,3 +756,8 @@ class AccountMoveLine(models.Model):
         # Overrides original taxes with the list computed by us
         res["taxes"] = [Dict2obj(t) for t in taxes]
         return Dict2obj(res)
+
+    # ====================
+
+    def l10n_mx_facturae_importe(self):
+        return "{0:.2f}".format(self.importe)
diff --git a/l10n_mx_facturae/models/account_payment.py b/l10n_mx_facturae/models/account_payment.py
index 92418669cf..9c6646fd93 100644
--- a/l10n_mx_facturae/models/account_payment.py
+++ b/l10n_mx_facturae/models/account_payment.py
@@ -1,5 +1,8 @@
 # -*- coding: utf-8 -*-
 
+import pytz
+from datetime import datetime, timedelta
+
 from odoo import api, fields, models
 from odoo.exceptions import ValidationError
 from odoo.tools import float_round
@@ -11,10 +14,83 @@ class AccountPayment(models.Model):
     _inherit = ["account.payment", "base.cfdi"]
 
     show_unreconcile = fields.Boolean(
-        compute="_compute_show_unreconcile",
+        #compute="_compute_show_unreconcile",
         help="Helper field to hide unreconcile button",
     )
 
+    ############################################################
+    # This section compute function of decision for xml CFDI 4.0
+    ############################################################
+
+    def l10n_mx_facturae_payment_compute_serie(self):
+        if self.journal_id.secure_sequence_id.prefix:
+            return self.serie
+
+    def l10n_mx_facturae_payment_compute_fecha(self):
+        tz = pytz.timezone(self.env.user.tz or pytz.utc.zone)
+        date = pytz.UTC.localize(self.cfdi_datetime).astimezone(tz)
+        return date.strftime("%Y-%m-%dT%H:%M:%S")
+
+    def l10n_mx_facturae_payment_compute_rfc(self):
+        if self.commercial_partner_id.country_id.code_alpha3 != "MEX":
+            return "XEXX010101000"
+        else:
+            return self.commercial_partner_id.vat_split
+
+    def l10n_mx_facturae_payment_compute_domicilio_fiscal(self):
+        code_country = self.commercial_partner_id.country_id.code_alpha3
+        vat = self.commercial_partner_id.vat_split
+        domiciliofiscal = self.commercial_partner_id.zip
+        if code_country == "MEX" and vat == "XAXX010101000" or code_country != "MEX":
+            domiciliofiscal = self.address_issued_id.zip
+
+        return domiciliofiscal
+
+    def l10n_mx_facturae_payment_compute_regimen_fiscal_receptor(self):
+        code_country = self.commercial_partner_id.country_id.code_alpha3
+        regimenfiscal = self.commercial_partner_id.cfdi_fiscal_regime_id.code
+        if code_country != "MEX":
+            regimenfiscal = "616"
+
+        return regimenfiscal
+
+    def l10n_mx_facturae_payment_compute_residencia_fiscal(self):
+        code_country = self.commercial_partner_id.country_id.code_alpha3
+        residenciafiscal = False
+        if code_country != "MEX":
+            residenciafiscal = code_country
+
+        return residenciafiscal
+
+    def l10n_mx_facturae_payment_compute_regimen_tributario(self):
+        code_country = self.commercial_partner_id.country_id.code_alpha3
+        regimentribut = False
+        if code_country != "MEX":
+            regimentribut = self.commercial_partner_id.vat_split
+
+        return regimentribut
+
+    def l10n_mx_facturae_payment_montototalpagos(self):
+        monto = self.amount
+        if self.currency_id.name != 'MXN':
+            monto = self.currency_id.round(self.currency_rate() * self.amount)
+        return monto
+
+    def l10n_mx_facturae_payment_compute_pago_fecha(self):
+        return self.date.strftime("%Y-%m-%dT%H:%M:%S")
+
+    def l10n_mx_facturae_payment_compute_tipocambio(self):
+        tipocambio = "1"
+        if self.currency_id.name != "MXN":
+            tipocambio = self.custom_rate
+
+        return tipocambio
+
+
+    ############################################################
+    # This section calculate for xml CFDI 4.0
+    ############################################################
+
     @api.depends("state", "cfdi_state")
     def _compute_show_unreconcile(self):
         for payment in self:
@@ -27,12 +103,12 @@ class AccountPayment(models.Model):
 
     def _compute_sequence_id(self):
         for record in self:
-            record.sequence_id = record.journal_id.sequence_id
+            record.sequence_id = record.journal_id.secure_sequence_id
 
     def sign_payment(self):
         """Create CFDI for selected vouchers"""
         # Only vouchers to sign are the receipts
-        receipts = self.filtered(lambda r: r.type == "receipt")
+        receipts = self.filtered(lambda r: r.payment_type == "inbound")
         # Get only receipts that doesn't have a CFDI yet and create it
         for receipt in receipts.filtered(lambda r: not r.cfdi_id.exists()):
             receipt.create_cfdi()
@@ -57,6 +133,15 @@ class AccountPayment(models.Model):
         for record in self:
             self.cancel_voucher()
 
+    def _l10n_mx_get_payments_to_invoice(self, invoice):
+        # Get all payments done to given invoice
+        self.ensure_one()
+        payments = self.env["account.move.line"]
+        for line in invoice._get_reconciled_invoices_partials():
+            payments |= line[2]
+
+        return payments
+
     def replace_cfdi(self):
         """Cancel voucher cfdi by replacing with 1 MXN voucher"""
         for record in self:
@@ -92,40 +177,30 @@ class AccountPayment(models.Model):
         """Return a list with all related invoices to this payment"""
         self.ensure_one()
 
-        # Get all records from account.move.line related to this voucher but
-        # affecting an account different than the selected for this voucher
-        move_lines = self.move_ids.filtered(lambda x: x.account_id != self.account_id)
-        # Get all lines form partial and full reconciliations
-        temp_lines = move_lines.mapped("reconcile_partial_id.line_partial_ids")
-        temp_lines |= move_lines.mapped("reconcile_id.line_id")
-
-        # Get only invoices related to this voucher
-        invoices = (temp_lines - move_lines).mapped("invoice")
-        invoices = invoices.filtered(lambda i: i.type == "out_invoice")
-
         # Validate that all related invoices have an uuid
-        tofix = invoices.filtered(lambda i: not i.cfdi_folio_fiscal)
+        tofix = self.reconciled_invoice_ids.filtered(lambda i: not i.cfdi_folio_fiscal)
         if tofix:
             raise ValidationError(
-                _("Some of the invoices that will be paid with this record are not "
-                  "signed, and the UUID is required to indicate the invoices that "
-                  "are paid with this CFDI ")
+                 _("Some of the invoices that will be paid with this record are not "
+                   "signed, and the UUID is required to indicate the invoices that "
+                   "are paid with this CFDI ")
             )
-        return invoices
+        return self.reconciled_invoice_ids
 
     def numparcialidad(self, invoice):
         """Computes payment number based on all payments done to invoice"""
         for record in self:
-            # Get all payments done to given invoice
-            payments = invoice.mapped("payment_ids") - record.move_ids
+            payments = self._l10n_mx_get_payments_to_invoice(invoice)
+            payments -= record.line_ids
             # Leave only payments done in cash or bank older than current
             payments = payments.filtered(
-                lambda r: r.date >= invoice.date_invoice
-                and r.journal_id.type in ("cash", "bank")
+                lambda r:
+                    r.date >= invoice.invoice_date
+                    and r.journal_id.type in ("cash", "bank")
             )
             return len(payments) + 1
 
-    def impsaldoant(self, invoice):
+    def impsaldoant(self, invoice, to_xml=False):
         """Computes amount_residual for invoice before current voucher"""
         self.ensure_one()
         # It is verified that the invoice is in another currency
@@ -133,8 +208,8 @@ class AccountPayment(models.Model):
             invoice.currency_id != self.company_id.currency_id
         )
         # Search the lines of the policy where the account is receivable or payable
-        move_line_ids = invoice.move_id.line_id.filtered(
-            lambda x: x.account_id.user_type.type in ("receivable", "payable")
+        move_line_ids = invoice.line_ids.filtered(
+            lambda x: x.account_internal_type in ("receivable", "payable")
         )
         if is_multi_currency:
             amount_residual = sum(
@@ -145,15 +220,15 @@ class AccountPayment(models.Model):
                 move_line.balance for move_line in move_line_ids
             )
         # Get all payments done to given invoice
-        payments = invoice.mapped("payment_ids") - self.move_ids
-        payment_date = self.move_ids[0].create_date
+        payments = self._l10n_mx_get_payments_to_invoice(invoice)
+        payments -= self.line_ids
         # Leave only payments done before (older than) the current one:
         # 1.  Payments with document date before current voucher date
         # 2.  Payments with same date but created before that current voucher
         payments = payments.filtered(
             lambda r:
                 r.date < self.date
-                or (r.date == self.date and r.create_date < payment_date)
+                or (r.date == self.date and r.create_date < self.create_date)
         )
 
         for payment in payments:
@@ -165,15 +240,20 @@ class AccountPayment(models.Model):
                 amount_residual -= amount_currency
             else:
                 amount_residual -= abs(payment.debit - payment.credit)
-        return self.currency_id.cfdi_round(amount_residual)
 
-    def imppagado(self, invoice):
+        amount_residual = self.currency_id.round(amount_residual)
+        if to_xml:
+            amount_residual = "{0:.2f}".format(amount_residual)
+        return amount_residual
+
+    def imppagado(self, invoice, to_xml=False):
         """Computes total amount payment on this voucher for given invoice"""
         self.ensure_one()
 
         amount_paid = 0.0
         # Get payments done in this voucher for given invoice
-        payments = invoice.mapped("payment_ids") & self.move_ids
+        payments = self._l10n_mx_get_payments_to_invoice(invoice)
+        payments &= self.line_ids
 
         for payment in payments:
             # If currency_id exists it means we are dealing with a multi
@@ -190,16 +270,22 @@ class AccountPayment(models.Model):
             else:
                 amount_paid += (payment.debit - payment.credit) * -1
 
-        # Compute amount of writeoff to adjust amount payment to this invoice
-        if self.currency_id == invoice.currency_id and self.writeoff_amount < 0.0:
-            amount_paid += self.writeoff_amount / len(self.doctos_relacionados)
-        amount_paid = self.currency_id.cfdi_round(amount_paid)
+        amount_paid = self.currency_id.round(amount_paid)
 
         # Ensure amount paid is always equal or less than amount residual
         amount_residual = self.impsaldoant(invoice)
         amount_paid = min(amount_paid, amount_residual)
+        if to_xml:
+            amount_paid = "{0:.2f}".format(amount_paid)
         return amount_paid
 
+    def impsaldoinsoluto(self, invoice, to_xml=False):
+        self.ensure_one()
+        amount_residual = self.impsaldoant(invoice) - self.imppagado(invoice)
+        if to_xml:
+            amount_residual = "{0:.2f}".format(amount_residual)
+        return amount_residual
+
     def tipocambiodr(self, invoice):
         """Compute currency rate used for given invoice to display on XML
         This calls curreny.compute() with the right context,
@@ -209,38 +295,45 @@ class AccountPayment(models.Model):
         company_currency = self.company_id.currency_id
         voucher_currency = self.currency_id.with_context(date=self.date)
 
-        if invoice.currency_id == company_currency:
-            # When invoice is in company currency we are going to use payment rate
-            voucher_currency = voucher_currency.with_context(
-                special_currency_rate=(1 / self.payment_rate),
-                special_currency=voucher_currency.id,
-            )
-        else:
-            voucher_currency = voucher_currency.with_context(
-                special_currency_rate=(1 / invoice.currency_rate),
-                special_currency=invoice.currency_id.id,
-            )
+        value = 1
+        if invoice.currency_id != voucher_currency:
+            if invoice.currency_id == company_currency:
+                # When invoice is in company currency we are going to use payment rate
+                voucher_currency = voucher_currency.with_context(
+                    special_currency_rate=(1 / self.payment_rate),
+                    special_currency=voucher_currency.id,
+                )
+            else:
+                voucher_currency = voucher_currency.with_context(
+                    special_currency_rate=(1 / invoice.currency_rate),
+                    special_currency=invoice.currency_id.id,
+                )
 
-        value = float_round(
-            voucher_currency.compute(1.0, invoice.currency_id, round=False),
-            precision_digits=6
-        )
+            value = float_round(
+                voucher_currency.compute(1.0, invoice.currency_id, round=False),
+                precision_digits=6
+            )
 
-        if (
-            voucher_currency == company_currency
-            and invoice.currency_id != company_currency
-        ):
-            # Hack to bypass PAC validation, suggested by PAC
-            value += 0.000001
+            if (
+                voucher_currency == company_currency
+                and invoice.currency_id != company_currency
+            ):
+                # Hack to bypass PAC validation, suggested by PAC
+                value += 0.000001
 
         return value
 
     def impuestos_dr(self, invoice, tax_type="traslados"):
         """Computes move lines for on payment taxes related to given invoice"""
         self.ensure_one()
+
         # Get payments done in this voucher for given invoice
-        payments = invoice.mapped("payment_ids") & self.move_ids
-        tax_reconciles = payments.mapped("tax_reconcile_id")
+        payments = self._l10n_mx_get_payments_to_invoice(invoice)
+        payments &= self.line_ids
+
+        tax_reconciles = invoice.tax_cash_basis_created_move_ids.mapped("tax_cash_basis_rec_id").filtered(
+            lambda rec: rec.credit_move_id in payments
+        )
         domain = self._l10n_mx_get_taxes_domain(tax_reconciles, tax_type=tax_type)
         tax_moves = self.env["account.move.line"].search(domain)
         return tax_moves
@@ -248,32 +341,33 @@ class AccountPayment(models.Model):
     def totales_p(self, tax_type="traslados"):
         """Computes move lines for on payment taxes related to given invoice"""
         self.ensure_one()
-        tax_totals = []
+        tax_totals = {}
         company_currency = self.company_id.currency_id
         voucher_currency = self.currency_id.with_context(date=self.date)
         impuestos = self.impuestos_p(tax_type=tax_type)
         # Load tax record for being able to use on template to fill XML
         for line in impuestos:
+            tax = line["tax_id"]
+            tax_rep_lines = tax.invoice_repartition_line_ids._origin.filtered(
+                lambda x: x.repartition_type == "tax"
+            )
+            tax_group = tax_rep_lines.mapped("tag_ids")
+            key = tax_group.name + str(line["tax_id"].amount)
+
             if company_currency != voucher_currency:
                 company_currency = company_currency.with_context(
                     special_currency_rate=self.currency_rate(),
                     special_currency=voucher_currency.id,
                 )
-                line["importe"] = company_currency.compute(
+                tax_totals["importe" + key] = company_currency.compute(
                     line["importe"], voucher_currency,
                 )
-                line["tax2_base"] = company_currency.compute(
-                    line["tax2_base"], voucher_currency,
+                tax_totals["base" + key] = company_currency.compute(
+                    line["tax_base"], voucher_currency,
                 )
             else:
-                line["importe"] = float_round(
-                    line["importe"], precision_digits=2,
-                )
-                line["tax2_base"] = float_round(
-                    line["tax2_base"], precision_digits=2,
-                )
-
-            tax_totals.append(line)
+                tax_totals["importe" + key] = line["importe"]
+                tax_totals["base" + key] = line["tax_base"]
 
         return tax_totals
 
@@ -286,10 +380,10 @@ class AccountPayment(models.Model):
 
         for invoice in self.doctos_relacionados:
             for tax_move in self.impuestos_dr(invoice, tax_type=tax_type):
-                if tax_move.tax2_id.id not in tax_totals:
-                    tax_totals[tax_move.tax2_id.id] = dict(
-                        tax2_id=tax_move.tax2_id,
-                        tax2_base=0.0,
+                if tax_move.tax_line_id.id not in tax_totals:
+                    tax_totals[tax_move.tax_line_id.id] = dict(
+                        tax_id=tax_move.tax_line_id,
+                        tax_base=0.0,
                         importe=0.0,
                     )
 
@@ -309,94 +403,38 @@ class AccountPayment(models.Model):
                             special_currency_rate=(1 / self.tipocambiodr(invoice)),
                             special_currency=voucher_currency.id,
                         )
-                    tax2_base = invoice_currency.compute(
-                        tax_move.tax2_base, voucher_currency, round=False,
+                    tax_base = invoice_currency.compute(
+                        tax_move.tax_base, voucher_currency, round=False,
                     )
                     # Force rounding 6 decimals to use as many decimal as possible and
                     # avoid rounding errors when validating XML
-                    tax2_base = float_round(
-                        tax2_base, precision_digits=6, rounding_method="DOWN",
+                    tax_base = float_round(
+                        tax_base, precision_digits=2, rounding_method="DOWN",
                     )
                 else:
-                    tax2_base = tax_move.tax2_base
+                    tax_base = tax_move.tax_base_amount
 
-                tax_totals[tax_move.tax2_id.id]["tax2_base"] += tax2_base
-                tax_totals[tax_move.tax2_id.id]["importe"] += float_round(
-                    tax2_base * tax_move.tax2_id.amount,
-                    precision_digits=6,
-                    rounding_method="DOWN",
-                )
+                tax_totals[tax_move.tax_line_id.id]["tax_base"] += tax_base
+                tax_totals[tax_move.tax_line_id.id]["importe"] += abs(tax_move.balance)
 
         return [line for line in tax_totals.values()]
 
     def _l10n_mx_get_taxes_domain(self, tax_reconciles, tax_type="traslados"):
         self.ensure_one()
         # Get tax moves done for this payment and this invoice
-        domain = [("tax_reconcile_id", "in", tax_reconciles._ids)]
+        domain = [("move_id.tax_cash_basis_rec_id", "in", tax_reconciles._ids)]
         # Exclude IEPS if partner not IEPS subjected
         if not self.partner_id.ieps_subjected:
             domain.append(
-                ("tax2_id.tax_category_id.code", "!=", "IEPS")
+                ("tax_line_id.invoice_repartition_line_ids.tag_ids.name", "!=", "IEPS")
             )
 
         if tax_type == "traslados":
-            domain.append("|")
-            domain.append(("tax2_id.type", "=", "none"))
-            domain.append("&")
-            domain.append(("tax2_id.amount", ">=", 0))
-            domain.append(("tax2_id.type", "=", "percent"))
+            domain.append(("tax_line_id.amount", ">=", 0))
+            domain.append(("tax_line_id.amount_type", "=", "percent"))
 
         else:
-            domain.append(("tax2_id.amount", "<", 0))
-            domain.append(("tax2_id.type", "=", "percent"))
+            domain.append(("tax_line_id.amount", "<", 0))
+            domain.append(("tax_line_id.amount_type", "=", "percent"))
 
         return domain
-
-    def _validate_cfdi_data(self):
-        for record in self:
-            record._validate_account_voucher_vat()
-            record._validate_account_voucher_payment_type()
-
-    def _validate_account_voucher_vat(self):
-        """ This is function is to validate that the
-        partner has a vat, name and property account position """
-
-        required = [
-            "vat",
-            "name",
-            "cfdi_fiscal_regime_id"
-        ]
-
-        for record in self:
-            # Validate required fields on document
-            self._cfdi_validate_required_fields(
-                record,
-                [
-                    "partner_id",
-                    "amount",
-                    "journal_id",
-                    "payment_type_id",
-                    "company_id"
-                ],
-            )
-
-            self._cfdi_validate_required_fields(
-                record.company_id.partner_id,
-                required,
-            )
-
-            self._cfdi_validate_required_fields(
-                record.partner_id,
-                required,
-            )
-
-    def _validate_account_voucher_payment_type(self):
-        for record in self:
-
-            # It is validated that there is a payment method or that the
-            # selected payment method has code 99
-
-            if not record.payment_type_id or record.payment_type_id.code == "99":
-                raise ValidationError(
-                    _("The payment method is missing or the payment method has code 99")
-                )
diff --git a/l10n_mx_facturae/report/__init__.py b/l10n_mx_facturae/report/__init__.py
new file mode 100644
index 0000000000..d564ba5da1
--- /dev/null
+++ b/l10n_mx_facturae/report/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import account_payment
diff --git a/l10n_mx_facturae/report/account_move.odt b/l10n_mx_facturae/report/account_move.odt
index 7fd53ab3112f6263b1541abf65b06af66cd8c284..239d7a7c9dc7094b1b9d862e0bbb11adfa59c49b 100644
GIT binary patch
delta 52640
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

delta 52444
zcmaI7V{{<Fmp&XD6DJd!6Wg|J+ji1%CZ0GG+qOBe?POxxerNZ$yXXJu?Jrfg`l(a5
ztE=z1c=}f<cy<XmlA;Va1Ud)^3<!u^&$D_wk`%;$xA8>rKB)iGW&ZCr(E*ew{s{d)
zV_)q53ro}j{SWTneb)a2CJuxC2bs7H%Jn}}h!T0hF#o&Xpbo|Z3jEhPApg(xPX!P=
zGgl*ePdnRWRXK+ZqHkSK8k(#c!F`X_G4A+H<!c1WMbhlb4k(~YGJBBldz>FngE^~(
zv`t;Ve?M(aWPm!*=ftU9li3wSZ-F6@ev_PxQEcA`>exJD1Wz68h*`bDNL9t&A}Dg-
zQQ`(LJ<IJatwKwi|NhmLLpg0na%W;~7A1=`Rwe1fgU?Ai-wKYHO>D_+O8>r88fNXD
zgy@!;u6^1D;nz2pS9L@8tXyty$A*rIH!A&D2xathHrlT`$)9%_XX*|QaTUipS}VX0
zt6+OoJZR`Hh(P|!+9-X~(D;=f#}gsatGx?YHfG^GRA)Xy$;-*6lMK-?N($rLivLLg
zOFj#g)n^A$f)@D4s1Zr3e!wQ(JgM+o37MP|Y9eB~k;xD0q`NaDF&pTrU7vTW@Vy!c
zK;~|}Y=$s*S@$zaqn_G1v#U=b0!2^y2jAw(t~8&f7vGAwO<F%hLKJP$`q3NV>Zw1F
z3_%(2ww9igz>_47MW~||@k>@r|K9sZzD*i)OnB%G3D?rht}@skKKOu1z`b5~f5?j`
zMuiu9H<nM8dB1pZiUB&9sXVq)H-8qL71>Y4q2K|QS>HG%Ib|_i%#&?^$7B#suD~|(
zHrT?E@*+X{_91EBe|1xcYjq*|O&I_Low7k$S8Z`~zB$)4qN8mZEc|$8Mn*y>EM%i-
z#SveGz=<XbgV?p|F98E)JK21enP`Qaestz*)Mvi;Ol(eKP|0W0RlIxelkOjSsv~rH
z^B!-+l|LgY%0R;?Eh5iyf`Nb>LV$q$=Y+$+!2I_K|Gxv52nU4$=y`nS_~v(2GqSVU
zw^DuPi24M=4vWZ+*Xy><QO6TtO?(mG2>R(~(FpGp=ms;+3;M=H8e@LBffEte!*F!E
z$x$o+{i96T2hjI|=4P&2m{&+HQF=QszJ0r3Ae=NMAuS!IkUq-&_ziw_gYtxAuv|@m
z!x#T7Z0)uQL#d|+L~*sY$DLAucKKI*zMgn1rs!$Wlo{}=nQu`(Si99}b{gn*bGU0)
z`8{9feZQ<GWE-+2AX{A>=^wy4I?`A?e>yz5KAQ<VXg~lT@9ANlG&^v&3xBwG5IA%h
z<)11H=UP3~^Z%XXSN`|c*)|y+yL!dB&(+t}d&D#c-OqR_faZ+HKlv}d*?pt4PDg1L
zP<biMrR$7E;a_u{;GAQ2Zs7xIutaaeaS#H4a%Ei*x?h~W-j3uUTbMHiU~eL5v*eZh
zZDx&*Q6h3ZSXxJqou8eRv%y3nkVO!iqZDon9?Y2(bEa@ZkooBm)3iO@&vSg`?v^&n
zbF-wF)shem$X)t6y(?qB>R;Txw}*UTh>Z^}x?O0N$;V=3@@ocZ#vUUDL5CU%3wi2E
zyU%+%9KH>IoJ}6YqkP6O-JwLTxwrnV>qe(=8yqX_HdEzZUU%}NIgvBbm&aV`aJPyY
z!R-Lfn<_{pww**2zj^&!$7Enc_@EVJ{-*yOY84S5*m)-==$m_Dlu}3%QvDriIhad_
z#w)rnLe@(*%f7}C?Z@SpVu@1~i1{|!rx;}#AP}22lO0u)*K_QiE%zu8uz%p#o~S4J
zqpJH8XKQ}=eHYyO0aAtl3GQ{N6+(^&+YM)fyfinuj~g;Rz)pvSFi4@LVPw=i@bkDz
zY2&OHV0$k{orM>(*?}0dZq1?eA8eb#Iej-8vQ@FPwDW~o;G?e84fADZzZ}EzY$mb7
zU3ZkMvD2yIJe-s4vXVLDC3c05mwn?op%dna5gK4bL6Jy#10#WwnR6;i7xa?kL{OmB
z#GLSq#@fYoF*4vhmn3FzvsU(~F}aU6o~F+OAT-2@lF#KR(0Tm!$X*DOF?p3(N$e1a
zxn+m9NO(wd^i>kVj&85XlxUqRsl(>aL6-?ltm)rJc#H3tH2LqE25+5GNe>4NAHK0@
z*(l?$d^hTIq)+1h(3HRwMM}fjcGwL~4I?FlH}E21)*67fCYYL`V6X=lMMy+9A?a)b
z_``4x;AVP?m03o5Bn)D7%(JO9kw|ILzRbh;x0HpHuvjt<HRk87Lo@jfNpOW=Q?FAJ
zq`;gE#QB@(JPD;`$7bM9k@#f<d<08Pr4#JTLY_jN<ID*<(@dllyk&o(E>!NMLOx(9
zM+Wpug6RlL^af-ew<pQ;J`R16^l%aZ#Hn?e!P${OT7$GDHYW~p^lCNjOjz=I)Ln(a
zblinVxEsj0zHbww5o#dD@lZdgACjE42h8~n^)q!uDD?L`m~Y-UZzo-)C>C90g>IU+
zITYBD>l??lCOD+iCHY`n*ekbkSJgA~=&Qm)>$n?rncU<bkjjLg-1T2nmFV8U`Y5tT
z1O*Z6B{6llOfTHd<kR?Lo`0*Z_#g1f9t3j(3hY&A;vT&P>mv>h347{Bl(f?7)8pvE
zScDrDR&s-`m6TlL*nL*??Y|AoCV7{)RSWd91{ARg56Hr$HBnU-QE|#L#30Dw#_5Vs
z*@GAHq<o+^xBd|W%ffE6Q7@-J%d{%v*w3hUBn>17$GZ90vq&aeyy#%#K_;bH4YQ4r
zkXRvjRi~>4Jn*sOrFJ5DPtTcDHD>Ub>NnP7W;%cS7Q^xlM?``9eoT7hvifC25U;3r
zDAL4-Cr)c<VQCuG`d=2u*u=)4zwv2KPEwd-3n--+Pq-{*f2*ud^+WsuN`^c>rn*_Z
zOy@a|R(#6XoOjMDiWk5}7l{2RPg$BocV7cGw0!XHAJ}AKC`!KbxgN{aS7*sP-1FF=
zX37dIYL-N`xF)5I1z$H%r2j@52(ju4Z6lvYT~XE>M8wH8Pk@wQa=Rsk@L`NCAhail
z`66}Gmsd{;)3uC;$$}dMmRtW|Jfp%<jS165ywN&mgbk2{E?c-*<QEEtzy1sjGr@s;
zSdx{uusCKI>9!IqYA<xX4ERy^34udh1b-Kw8m~ynu;n4U1oO75^(YS2xH{p8PbZ2G
z-%=olwy%@oO;yse6<ok450)EVnKC6$#jatO63Mzg(eHRci_$j%lwvneLuQdVmwb<^
zsM=hJJ+xi5qq?ERoHFaJB_zvFwOUEy?o!#ekh<H&B|fA*=NwRA{;g;MNoBS<{%nr{
zCkNKbLyIY!WtZPyfb*J!nUGhq$-FlD>=Uy%-*wY7GS%vCVNBNV)zge#rS)XX_`Nl4
z2;|$YRVeP3PIx*aP(ND0`MeKBB!QXwdrFe3Z=M9s!s&7-FGR!`Jk|=JHr)%<nt2h2
zx{2FvxjQlRUY~(dOeD>4Wrb>W*nM@pq_h|fIeiL?Z5Wh@BTaLF#VCr5!hlj3_KtXD
zg&kyk)l+!#=y)qpeB^pqNWSl&Y*z?M@-OP;OXo@ZsmhcDm?(Hh*r4_a7*2l7edXe6
zv40^2e5!-vAzs-!FfqUofC#m;o_V!@aD}wA&D><~Hn@`ROT0Wivt1QsYf58biG1L*
z!*ITA`bXg#yphsG{t@c+Esx&ne>KL%AaJd|e4nq-z9(#5|N7?zK*QV?T2F66gMf%}
z{Et@v3-Z5iK_Vd%9&i@B*NpMGUGfdj_G|R%_f0DgZf=Gxhafv_yH4&Gn0CIMJGoMB
z;SFcaqQr631D-zFsjyZy&J{&4t6<^|7a8)jhbKMR!SXi$pLh=iu^~@qj`Wxk(l`oG
zWUcxR+>f()9)RujaneBl?ji-!75_H(r&Yq6mVdP6q0kYT4gjsyJaQ%e#;dTLIJ)DA
zO^9hi@1Cgel}R)?eImk-V|AGYGf*1k!=FV@(IF-2yt~cf{XBH<xpL%W5x07AaUrUV
zXft9mJktQ{_<T=LIE~<e36m1EA1b+&X-cO<Nmjhdjl9HL6rpvocBn6dUzYL%>t<$a
z#O5hRs@tQ|3SfHy5q$v&{aN4P0`nTIIxAl|j}BZ{gq*N1=qOLGtj$C$yhliY@sEIE
z>d{pSYkBYEtOp`Zc`;bmKMB+Jx$)XyKSuIAq#8~jyy&EY^rgU1ArJmy*l7QhWDe~M
z5l6?$mNVbevYJ{!p3td~IUnPzKM(_JMtGAxi{md;1sKWVCEazF#cLlZT9yqvM9n)q
z^haIlUAEGGJA`Lo-)E${payhr57|>DjEXxR>yE$^jAF8)M>%>viCI2jSZ$FWEsD-0
zMRh{#`Ey`LzGazELimtC1(W<fE6oikS<u<;S6&UC3}D@lv62sS7uWA__(NDn+&Ek>
zUK=hO33!SO8g>$gG`bI_%#LWvmUYTYaX#%$SipKxWLH;hS#xgA!=*>f;-V3^;N|b7
zKrA3zeKT{=r{x+mSNMpT--_u*%M9I;NHE>vK^4PA4FJG#na`P`Vm%6a5|S){v%hK~
z@fsOmZ_hmGz23c1gS>?#Wp#yg$V9ictKf(dKw<-ACSOCyD$}^t2Kf#jiY#|Dn(*gH
zFKeNm7olf=)-BsJeGQ+D@WR-)zF##WwZk?L(5@ox-iMgF&?#oq<hTfJ_++@uNZ;hI
z(_H)6G&#F1+Mcq>iCxCkZY<-&kk^7mZ5GDu({uVD{dtFQ3EY0FlBx$AYK~EPK0*tq
z0IF%GyUxDtdTMauX}|2HP)=U^qN^-6VG}O37@0d?9Rwg5WW}a(w*;jcbg!q;`)&Ua
z6Ztl1>Knu#j0~WIcDkY`CuO``u!Fp<-9CVZ-Fl_V09lTNUrT!Re6TNl&{jrPp97ng
z-1-nsls79xhu@0)B&Ex8ipT=q|7^ST0sec~V!zzFPtCfA#USm}VJt)>?CRX3%aS4@
z*qL)>I&j7Mr#Z-*QRr@ZZ@X$xhkryckNYc={0zy53LzuzQHadkyJw_>r`D(>lYaUm
zOGLf_BTdu-eXscoIUeo;wi$fzI+nboOP;ha9%T-TkviMl@|S&`jC)c?Q#wgOE)WI*
zs&QC-PK5=zuS!F@!|506em%x2MK3^OtP4Q~K2MK|{p-}EYVrW7PnVp}qzBZGUBP7)
zGu~9=7e4E(EIY(6`2#T1m+LF#S=R8(!7l_M85*gGt+e^@`v|hB6@8`xkT5THe1jr#
zTX9U04?71cZ7LDZHx(c6i8#{N8Q?Z5CPIe2C~)Wxx!ZKQN@^jY|97=RMHgO?P9-aW
zf~^=3!SlG2YzkBn0TSXugzh9U@ARL8mFU1<f2k<45qLHtZyHVVO5AUJU3nAY*CJ2^
zlzmdUk{u^c;E6|@SissdR+G~@M43~xTn9QU1zkMK2KG_sU=rqP_h|lg6VTRM3Z7to
zAe)7UvS9ET7*!jNINEelelcer_AK!umeSVN4aP_;_U9UV4b2YX2$XtQ2ZS-TrZ0rd
z5dQN*gkK+W%xGTGjuO90`YYG=tZ$qcgLkwF+B#af-V@3rASue}%*}413WC`ik<sG}
zd2zF)f~w6w!iC40MES?R1)zd`#mU$~V}0k&`E1|WsgtQxq35IkdnYZW8~kIzl^UV2
z*uCQw3q9})ZSpXg0l|>8{}?hN-AfEMNHz-fH)i~?VC*Wj#fhU&IUI}q)vcK3`~W@e
zmveXG!o1DnFxHzngvNvM@gj|GcDoB#Nmeyxi79W-efcXlmXdR8Dxmb@rz_dipm2U%
ztq11BA2Tw$CXp@YKSu9&59Mm#eK0vQNy(DQXV&2tJBu<G*{A)A!kjZq*E0+)#<?Hh
zXV5VFqKNC46oI5ZtV1%sWx)!g*+XQ}ZhGO7vzu@r7s?Ht(qyP!A{oUr{70oF!@V%O
z9MMNm8!4F`eq*a70;rt(UF`1aufHE|7N25Bt{26=;_4sJ|F(mJ7(ROAjd=81@H6Xb
zQ~?`vX1P<$B^7HfYYT6+lVUn`weJXYR!g^7@lPglJWc<Uh8Zc}#oRs`vnHjn#fzxg
zmxL`eJfbCuL$_Mo7rNF|vjm|HLRzCb7hl63&v9w{j*=#e3n0cQ*gA4R{|h15=~Yb8
z7gQ+M6Im$^+peRoo{KNz0tdl>AHyqF*Ie?Cw`x(YeXTqu+_Y=pVszO2-B?JJIxPJv
zqFzn!iNvd(-`Ui4VTXXqiyCkwER8g*T;9viH%#7*cFnM1BIMv2Z>yhpw3<I2kqAMf
zD103E<vrYX0KlIa)0iW3c5$z#Cf=VNi|2M+EK0@f$-qJ*Ar)n`k%J>SJYv^<zw!Fp
zwvgHq*@LAdYF1TBFNKdQTjzzCeakvSU!fol^CsSmg9o*})Xv*s63{Mkl{4trc0`k<
z^<`VKGT}>Za6#|=3wR%aN16E~6TNXQCOiUtdJuji1lXg$K1m<0D>+C&H%0O{+!edb
zO`}B#h<6tyG0}Wi1(jVGinBRoOK6`<+~7;-^Q!XTOFKi`1&4<^lt!4k+^_L8e>x-{
zG>LG8XZN%t@tQmx1XX;y^~=1xq0TXZmgcV+bxnEgmM;qir4CF}g@lm+D}Lz=%V^M8
zK@0Uy0LXKYhPwhw_s?U*{D?7C2F*)Ar`=5bq!SFMLvsjKw2{Z3Iv#?li~jb+Raw*K
zuj^)ilecgSQml1XoNzK}*yOfXB_nTW*OSO2QcZ<9*2ayXM*L7dtn@2jAjC96LcGbR
z8^;*s9lYuL2#EArBZ2AEsVrB_io|U`U5xvl2lyKrD(MaMo~odhGjJ8}ttK!1Y+w6R
zeBzewgA>==5=`0mg~)LWP&MilyHZ!w-oV8XiMS2Dy8ZPgk+qYPX}Tt<*>IKH5uhC_
z?Zck+`EKRzh8KeP4NO)M<l@;A*r^an?wGAurIm3pbBRbZRUcp%YLMbJxiuzGw)DCd
z0wxnt>p|;z_xqm~^aj{9?^o)b#tVKDf(%Y7>2>UzveZ*BY`3Jn%*HxYPaXszK*)Au
zb>P0R7wssc=k@2h%nG`lcoV_7aKPQAhW6X?X6bq48>(1SVfPOzX|^h9cCw-`=+q#6
zlNJUCU-fr_NwJ4XVL%M3c$o_n60-`(1z@lwcE)1*7iC0t4$Th)^YU306+@y5952Lo
zUd{3t2^Fw5^Hz%&6dC_(a8G>auqcnwz%AT7V@^;Ag+8|b-`vxpJjX?ROgdrk;0gv*
zbo<S38{Moh_V#+%s!32Vk&aI2=JVM>cCYo0n$acWmw#<ltU0m!RUAtbZ5@GYbov38
zz#r=vug9%q&#&5+6>(?nxoIaD6*ZlgQmTqCbmHvkvA>JJUf72&6Vq6@35Qv>S@yic
zWh4`4$cfG{XAt7PmysQ(552sL`r%UM=xuMQQ?lu;%?7J#3)-^9kO%(isSePx_CmMH
zZZBx>g^2^vfAB7_wKnLz_tgN3JI*13^>P_N*mB;J3jYOW>@S5kS_PkI(_=<ebk~S|
zZjO&TsS=wpr#e$nos8bGlozL<qi}?JNdoG%m^i^w#ZhvS{S`%WW%~}dnl5WsT<Vi0
zF-_2@v`=p^@Lk+UR=l`bj1*o$?X(P{hl-_})>mZfli&w0lbWG%^6S8|O7GH`A3gTx
zNPs(-?tV~hr(3{g_0r@^Q$?)9{@h`J@61!qV=N<<OdtB!$?gojVcR*0y`;L88FzPk
zIYjNMXdRcj?Iy4EObF!y7gz}4yVvhErs_#DHT^H)35qirRE}WXm?3{|{S8<6baDuR
zB`g1kV&87U#PC;XwO_z8=LOt*nw(PkRg>FtbTJe!>40l<c?e_9b09(Q8d(qTaSH>d
zG(r7f&0)Ldxs8w)jv)-0XilDQ{p~`zo}eTfPd+z$X*C%x7VM_ac%?f-PJQVMWiy<t
zNw8AlcZNs7WH#~^Bwzd|iRB9MC5vvNguF^^5xv~Uekjh2mn&dtm6LbUk%Q%Je)9dq
z{PVAUu}f|?9lflMRpw_r&2NSj>t@`GO?sdklyL4G;*&06DyLa&;pUgst}HVfF@;v!
zFXz#A6iR#E-qIfL1`LZL@k0yRa&*<|wrU<d{=(wc+BD)xzdJt3zrVG^d}_~0h_iFc
za&f$i13s>LB8D}M-!nXkA?u$WH$4Q7m4DbhZ{I4|Se2;1eWHDa=ub-@RVQor*v-vc
z6}~Nh+kPkfub67|h;JJk@n7{o>3=h=|65CtD8smr2nPX?2u~Eo6DB%WlvNeu<>eI<
z6O)mVQC3#g)zvjIF|o0+adC0+@%2rt!ovd!3Y3eARLjbADl3720ORUv)4DpF#zvd=
zcBkfM*S0pGuFj{k)3>khM4RPQpX<y@;@n31!cq0YTjw&+<SNYS>Zk2hl;d@*>vf#x
z^)HX>1n-+PAUHTUG$P_>cz9G)RAOvwLSkZST3SX%MnHG>&z_!~+}zaW=B%Ec+-xAb
zprD|%sHnWWJg>gKs;;iAy}hoYqOH2Rp`oF%t*y1Gsk5^)q^~dP&!6a#k@%sZq|wpz
z!NH7)iL{xSlK%eOsj13=fx_9@iiL&B)z!wKq1w^W&Vhl>$;sNKrN-6O)`f+Rjg6L_
zozB01`@6bsQUh<&gKo2b-sVN$6~_a2Wy$wd>G!o+4^4#+Eu{~wB@Z1Hk3F@IeT`2;
zZBL_J&tqNv{r!VuV`Ia^6B84I^Ygu1Ta$BhW9#d)6BBcDbBil0t4m888ykOic7~6S
z$M^RqPflhI4;M~O*7x?-&(F86um5gsJx}&M&knsTjJ>Q(zpT%{Zm+!VtnCB)`+qMl
zPxklE&d&C3ZqDxSFQ1>UFE8JYcHU0*-!D(!uP^TI@9$q;ULGGlo*zFyKmX;^zrMZ#
z2S@ioK!`x3M1@p6*Ur1*5=mQ<DULJLu-fWyIV|E#J+v?u#LqV;LM_}Hsc3vCh0A!W
z=&L4dNoM*$xYcoqs$IXYa!&(RyxonS_Ys&VRKiqVuHO?$6u+-Wuz$|`FlediRT<bn
zAgd*-YSA%AOhB;QkrQ-7cRqDp{i!(Ur`v98ht%kA)vgY4B9E>(kjDQ15yq1l|G}Dc
zVfX&Q{$Bz3k90F>pl+3JZtz9>oBt<c`r+lP`2!@6U3%-!$z5hR(w8VxnDM)Tng_ns
zwnvPR*@dVRW0jh@%CLt;IQ>BygNZZjqX%=Q&51i#B?t8f^Y*~}Mb{bM%&Ovylg8gm
zMCryXA4&TZ&`yUtDs7f-jeR^7!nIELyuN+F56y1{YKTePCzVS}&^<~2QZjK8{$(Zz
z^umy{0~s3HW8s+M-t^PGjXq!fX#y?j$VXBMreY{NELHQ31c!Hc-AG4POe1sO^-mb3
z&{n!6i%-lG7lY|4!fQ(A(<Ty)T$+VnRINP5&-fo7rTzWld{dJZK66{fzx>{1gr7!$
z?3f$Fr?M^kpMaV^))zg$8sA{I&LtnUM~>;P)GfNIkVnp1#qRBPx&E_9r2q2!+ooQ1
zj@Rj5;?Q_e&RHI!0~Uv;&K5Jo&dojtxp$Q}$T)8LE}aek4;5amxBm1D&Wnv6#!J~K
zuXuzguapwGbYufv@)I8^_UY4nslx$)6&Ev#)c`Tk;|#BSDtz9wPIAsxvGZxqiaqXx
zcl5IC*L#t=!XV+qu0iPYJ=y!>!<oV*Uz>-^lTT;MThg08WCtDK$oDBYe07nm0Hg|Z
zy_ud{JuX~sCF=TJh4Zz7d3PZI7?X+16*pgw!N8N%3I+Jr)!?2j4)E^Rc?X0yJRO{;
zZhu_5K0J9`Vt$<ryjkI7c^=W;<Kz~w=l(hr`{;A!ci^vv_NsfHbZwB1ob<UnDgRBM
zj$vJHJ|7^QQN3j_d33jE9{+%aGA6JX+?u^{#y3g5>KAr(skZpAc}v~nYu&i6^7U9M
zY8U*YVEEY0<C(0ho3<uAyBOH@>DaC~CfMe&$4UC8?eCDP%kY$4?thJ5lnhi_pJIIx
z``?Sd9~V3i2@C_Dd>i*)T%Tv*9*V-iv)%iq#La-f-ywlP4u4#M*AK!k>@PO|=bD?;
z)`Pg7t~-m68%9fOJr22bMBnzD?4`j&0t}9?^S-|7ES=bx?5Z|rXTZ61QrV^?)xWs1
zeob;HBxS<7D04}Fa!J~zV5h@SnWqmYRojvBAu#l6{P&W!lX-5BS7!fnNss@ThrruK
zgTwnS@H(il{i*=`>;WFXKF>IS$Da3{BZsb=d5*7>i?6#F4&Y@dLm=*E75VGXLg4jf
z`jYo;DP#KcaS}NP2yJQkoX;AjL{N?QaCn6>T%x=)Z}66cadW24ga4ZAIQ^J45mp&Z
zwe$PuuD>?q^xQD?_&iz=e#SX`O@`kXY(JN@eE!><&-W6C4_5xSrRi))Cf>IO4${VG
zi#^;P-@A*JPxj9}T!)VjfkEW2J%-QMr#K~S596%rEzn5-;;Bc<IE&IP>tAqUe+fN>
zCC2h4g<mpw8YHyNV2AT{jeH~UeqYk_T$0m$Gv4!Zoa(XL^LfFr^}4tHc_Q$6Z{U9)
zPWbU&Md)|0;Lr)_O~e1TPB>@*JS_q5dvTu!7XKF3aqzo;+<w1Iy{T)C78rC*qi|b;
zD=01Dq5=wy+fNj}-t%6@uP9C$y&lXUhEpZ52|r!lU)FCXIj-J!FOavNdvZm9w}S1V
zoM8@u=&x(w9U%O;lbG)IJF;*P7Wj<&x^;ga7Vy1)x-r=DJeykg@P8d5^nV#zkJG?r
zDt_VB+c}}UbLGxL62vA-db9ivGKp!$Eyv&L2#6av^Scj`euG*A0<zdAi_;v`<lO;l
z%ADyaTTlv_c!S~;r*c&Ke8yOE<s6#gH+*ob^wxf;#&$~+iX*c?0U9IUf)ts`Vgh4F
z*7ZNjN=0&4Ow#qcjb-oct=2dO^K4IdQ~4~=Ec`Wz5E9D80yu{^%RoGs=$7e#TKW+K
zkO_V6$7%F_La<lbM%FLMlhrv-=z4nT$cat%A#brV$>X#*ov=f6X0MNX*=uJtC4~J{
zRebB4=x|Y0jE{}rk)BrUHc`JwLmT;d9c=0(r7fO9DFtwQ<{@8@Ooop>l}t}|OqyRi
zE4wBLrMq@)E1XS=+2aHQD))(8x`VlZ0RE%F*}?!n>%GwV`NYv?pCRX!`H5f4g$o8$
zei>)ni##eQHb=(u79}p8UZ5L@W`>xqo%&>X+ep9UoQ>n#+sFB^mIWmazX8Ijjn!sc
zmObAEzraX3(wbf>j2v4Og?{D1=b~!8_h)EjPT_-$SW4m5yB-U6=lte<$7(*Xo<*Tm
z@@9|Zw}a96@ydODcy57~_|go%nu36pT4eSwlAA2T8Y(He%|-ms4K-SoRkmj6nQf7B
zu|%Yuk;wU@S%Ujb0{pprlp&tc)ZvF!5d$!;NuFbSTj^Ow53-o=AjqU}=8^bXG|q~*
zo4k*uh-sjQy-6~y9!%%u#1akEYVVJBj?Q7#kCR3lX1Od8@Sl^NkV<$MXvtMY!kFu4
ziHxTWwbO6)4aI}Tw#)w5!wo9F>{A|wQoRHDcur>I-_*T%u*0KrUDMvn3RP%@wB2Ty
z^_uCYeLl{Lt-g_SMB#G?3XbW^-6O&?iH7g9Ibtnu9l~#fW`|Z(gRui9>A5SZ+GqH4
zg*s{*QMUNhyZ+F0L8@NFJb+49u~4Mt4lB<;@3tsnH<w7~(O7v~=TMUm2Z_lQ{ms01
z(d!>p{V9z`6%(%()GtmW<D;V7Pg^Wq9zo_<Kz(UkN;07yq_om87l}&!`?_cs36Ap!
zV>Z)93#Ea>n8;6tDm5NZBz2IIZ>^$;#&#ApN7Wh1a>!sLxhryt^u{DpQM%)d45%)B
zFcT|}yi540lYC~>fs-g1T#ZhRQx?t2A}!Ic79ui0gn+CXk2Xm{Ji}@)8DQ1Ps`NxP
zs1DL^G7;a4Qw4)VO~t}t5hzOX-DQ(mq>53#mL_(RG-JBe<#z~xl13Yfp1d;^2zGnD
zK`V!i9dum^hgzsi1?SrcP8niDJn%!qsj4u(S;CM5yr0vUBSJBZvD`!q0@{roDGYXu
zn)j?;V#hOYFpWxxniYkH1}b1pSvV<Ql?hQU<Xolz`-g}bp)&Slku46WH+)5vPzXGH
zJC<?84W{(c_2Mo7uTBTav-#Zuxvq4xHcY@Kg-BF7ZNToi*?!s4p>$esc`nFefLh7k
zF2;Sh#|#lh_b*2&CinN};PQ>U$NXLU4~)=w3=lhxI{7(F(Mcyu8eB}K(W4K4KdXfW
zKiu%ks4j~v55WG4^r+v0AcUa|HS`9<Hs=%Vh4BjW!=DMbqVy7&oVV{v?4EahW%9aI
z7FwSitbJyGqDtK#tZ_bP>|#Hrb3gRznU{jrn%%_dX8!8%?{=}vrc4#b4&dd`;srYZ
zq1lklJkW=(7@Vuf1&I#o|2YMNQGhDsMH;>P9i&thDlWjz7Zw_hCj-a+TB${Nz3F~t
zl5?{;ji?C7nCuK<7KG8>HB!HG(<#E#mqv!pXdSt#>+MNMmsbC{PqvRognq~!IkQSZ
z!WuAQ&g@C_Ynm-{!3eWx@xQ(N($|6m5V?{TX7$t_DE8IMJTNRE>`N-miDImUrNzjV
zM6XWEb(Mv3bFz}s`vT?FQYIk`OGbX1B~c%<coqRnk^`}(YGo0eGka(5HHAc-lC&Zq
z?Ogm!i!0Ig0j<&*RqDuQfgCr{vzxhS&*Z_)+1vgvUEsBtB)wxgN_CPbp2{kL@iQu@
z7w}p_DiMy$4q(qlhywd+Vtm+$wQ{QR*3cB<(;M10qP>}Ebr>9;jTrcohN*61`y+M1
zIEFw~f;yOvOjJTqbU?8T!C3rF!gFOd|Gwi$9d<f&i{g|T_SzpWsHOVyR^@!<&V)!<
zD9>%QAND%1#dXFQ|7v=U>r%f!v9Z6`qOgJ(b#7ab_in5&ii&y#%P@8q!6vT5M3*@i
zqHp1vaT;0DIgie0-fzKcOT$vhHb`sCtY8Cps~awFJ@sfh@tAflX*I<s#<)tDcZ(Wg
zZAa_OopCi)UC8`+ecZm;^tEfPL@=|Op8I-xaZ|Rz9KRx9*B=T<p&>7}THQMpV4!Rh
z?Xo01SuZc_QQ+J{=d*n0tAAi3vnW2xV`9x4Wp^=`CK~CL%sBPH|7GtG6*=C{R9Xji
zDQ~8T06wh)G4(>JO!Lvd9AZFXH$WZ@ja}clto|})O*46G#m>O4rN6*-T&Yn{H-Hl}
zzQCMWo5^+)aEV*KA83|I$UNPt3L;vN7~Mvdras0<OgqZ!N}W#3*p%Q*$hL{4t7HUH
z$6cPZ3mrDb_*jnrvK#3_`+K&9*AQTd#^nf##4hCs2zP*f=6Z(sWeAbMM4pPg6$m)H
zWAB@?7re}qqe5-pO?)S)I4-BkF1B@;kW$#hhMx_VSX7^jmjqc<?u)>G<C_98QKB%>
zRUg~E&aGk9MD<a0R^%QkBVn3&MBlAtOejo9;2C`KbPN7#*+GS`Nu?lSp$|+wnk#^}
z-}0^P1x6%r8K@zfTKKYv+wsL#1>J~M6~{J2MoYxrO4rs4?OT_Rg2HpAL6^e*Ek)ZS
zU}A|p42Sv)3H=?s|1UIYppTEG2zg!lb>yyzbno}s^a|?<X=$pd%Q0yM*2eO!G!*T6
zX)fyCw9ZMj(M{QvjvsqE93j9ZANJ-3&5Y8&505suxuw2;Cyiib9b4VE5E&mG`=Sve
zNX8~P)Xvt22zyP{5H{`bJK}wvs$m_YN%SL}8=j6eq8f{R^kM>yU`L8p?W=`0<H0uz
zE0ZGlN7m*?ofYQ(*;yq^Av;d5zMvKKzZB_Ed7%wRAXa<wj&|T;oR>hCSkn%6-uD%s
zD7~8lU&qY)y>#vSwO$5T>B;6X70dO^-GhS1aKc9L9v`{XX0uAntB=D=qCdM)j(^|z
z?MnVm!LRwNqk5!6f17B7EAY?HS-$ga8pZUa!13<1Wvn&oqADJ2_jkLiI3clV9~eBO
z%y_AYa&4vNP19Iew`2rLgDDX(X6-D+#c?x_MJh!h?^h85mW>*}KP+qbTN4UmPgk9a
z@x&=%1)HL1Jb=qGXE8M5Pn;QXTp5SRZYqRj$rE&}HfB7%1yB8bv1dQ-gfoD`IluN5
zI6+RZr|ff-_1jE`L%1G6EQpQi%3Q63$?MnBp&rO4%cm=fW1#>r-cF+>kaLSajnhn}
zdbYfrK7Cu#JbK5D_fuuCKiUZ%8{}IAjS!%-_PbUl;ak6^F@iO^1ti}-)F=sE=j}_j
zFXV-EH+Oh$_QVjROW}4<R;V{{rW)PBF1ZYu@tdMa6_Oa(ut|goVLsSO%j5*wmJ}jC
zeNN(_Kdd$lTs;7&(F4>W--f_&m<9BEyc&!OvDrrJ)1pbAikH`iEMu0K3R{+GtSE17
zhr<f*WQX0iEAb;xEYMhIYw9u(xu%7S&MIP51knQvkXXEeF?@zN1MJD#Hg#m^2ghgQ
zHMu)i$e`Z_^hS*q*P+W#gCSUXu*6~RR&PO$^^Iq_RqH^Ur}pPR#Y|jKj+kPlz!`LM
zZdUqs!PVc0EKieK>a5b^6c}$0Z(#<Wmo{r|EQA5!voow-qJ@SIBi7s`*)xrQ8NwB$
zxGs%b&s3uIel#7_p2nIL^)6LS6He>ezGoI6emEoBSEg;c^u;JEd@LuHADB@Z32Jxx
zx^}xXs{kE)swj4VE4G2QK2vK}zH);2&@ftFDYnYwuyH+Mt;~=S1wVm?y0Avfo+{eP
zUI6nby4nUL8y8W+1bWM?<7giV0(pUK@T}ZVOv4fQAz@p-8Y+vBj?$1NgN+6NgRSZN
z{vfRv|2q*o1CmOBs#vyZjrkz2oU<nF+<1O*Dd5tfK7IXSKjaFLpSLGjJ|_{0ls5Y?
zLJ)WC0F{7?rY^@zSm)Gql~$RFJFMx|&GBjUD^sIhspGtzkBAhJaa{3|%tczOmaiEp
zTzW`Pj*~Vyj!0tkkx*=0b3b5gdpakF{qCsPt$E}Yo$S{T9U&6tiD4q^zh_Q|pBk2L
z1pKGbnvOj9f=dh>#VASx{wg6K&+JrSL+Z_)HkYQMLwrL^b6+usxh>WfqAS>fA<Rlj
zg8tKa-rNW3;Z`_95U&f}+exN~MMGvkI7{~?xv;=nTv2I%>k3+XrS~;<zdZlqn=TiX
zKXr#(e{x`n)5lfTneJs08X(_y(&R3#37G7R+pThAa34+XH<u@I3~6VE1#B*eQXiPJ
zgl9ukMdby`RaNAAxUaUOtp!KS^=qB+roe*_<8Dk>S%3x9I*b!CrMFKMH2>fidxzz#
zv(||1Y3aR(NNx9Pv)#};Ujtj-!{5YF^qJP?4Qs1qwSe2}QVW;hVRtJFbuvnI016mE
z*6igPR2JIx>~5@BrE~b(<Sm2!AZ*=;2}sv-lezoMh+icn8?NnCRo-CiCYc(^gHVVg
z%=MF%(cm1D;7@`DhXvsR9-!oBtz1ufnoK7ghkiqt+T<IhfSB@mx&}6EOS6T}EYay$
z;?hjfR7uNZNQrS8D$$XdY30R21FU9`k8FquwK}Ai2X;eyRHDV_ZrwHrIjS2SXS<!D
zPH|tX$}_ALGNcHDl$o<`@OC>p4wL*yah<Cb&)6lEc{&=N;j}Z_K5&(s!nrYy1-Wce
zwSp@bm{aOuXnU<6>5HmaLr|*$m^nn?Gc;RXJq>HNYjl`Vi{)hkE0vgTfNx8i0n5AZ
zUT;;Byi`lbC&=GobzgIkP-~N>Lm31V2}^6p)TBU+J~EPp2WR%x<$h~W$%imE8^L-R
zgpfeBuZQMn-)|)Y%h17}wcROK`%L(*|18$3Yr9p;I$@y}<&Ol@Gz6$knULasS$y9c
z?Ch}Y_d5rd>$oG|OAYJ~K=Y|#D)&-g`@|#TCn!r6R>ljO7PBw0Pj!yjX5sd45AJz+
zmz_|i3*-_Vpk~<wuezC<@_VL+-ENz*;$}&D`oN0?gKRj@0Ix{T+EdsGw3STCwZ77H
zly7#48z13Bl$ifbXgors{OoAr(V^7rcG;WM65#~2RW{b9n0s|U@GOn*8P7|izja3*
zz0szA9$<Z8{vpqI>^|q8?V4cDDOqE7w8q*UGlMz&JL<FZ*urY->Z{zKQ`cgUXmlP_
z^0>d88kh;|^1`PWgFm2Tp-fg8k`i=@X=1TxwChaKR`|B91y0o!-`{w>N8<6<0!QHz
zFE#U{)$>O%n#_-R!09&HxP8CfG@quaR94315Ic}Wtg2fGfk_gkSA4uK>h*A+qGlpZ
zKSqvE*yvnEq!%QTysc~_+nG-oLaPIZ39WV3z7vYYO82{(vjX@nC?jgF)eI3#Q_2mk
z5w9|v8NxvdVF;5E)LLL4C-`WnDD)3X^3<SUukun;(V=hVK&B*V`MPksrEVn_mKyd}
zu=irjJU{zTh}+LKHcmL0Fis@AATK-Hj7v)0Unx5}v5=YYT5nZ^zc%Z6dYu*3CJ1XB
zxCoXSNz8c;f*5KIMdo#7jWpR!CbkkP6ADUYaJ<d?$+b*a3sYDl6Veh&Ev*!yqVkKU
z;0{6MHV%(30mu7Ll(2IzdDfUp39W@>4L)fRIxjYp25dp>r1;1VOW2w}T&2`4s{Kvz
zZ}Jit3*TLl8&ymZG<7bMYtgWDD8*?h1G3SVJw(2Wu4BTo^#k35vI-ZsjI`OV<Qx>n
ze?J&ev&BkPq~QMDSWFV>mK5jWK+u7z%TyWyYrsr*0l0Q1QbNWIBX;i39B@G5Xh>Us
zlvTQ4xOLc+<x`yUbyQHzhtar8?ux>xMf&xsuBpp3+dN7~f=`i-FJxCt#K7`@kWTt!
z^6{l>wRZdM{5-c>u1KoL-)+uMun$F<a>%V+?6Qye!-YB9=J8{GQvE1BSY%;Drf`kR
zbqVO|2YS;Q>Z;6j#d>8DQj*klD~Gw20~8u5>4?)MP#tjfP@*Xd`57gc?g<?PSZ$pf
z){d&@(t41*-<{aNc$=~vEm^DcXVj&wMViFSf8?EGq`wNYEkaay?oq{$F^)n!2y1pr
zfYeKiLB<z+NR|D~F<BvEhSyx#3j2)G8A`M!0r-B#DTj)JV1g{~KmNoy{zz`bo|jT(
zLs1Jb5d5tCXLi0AHBaa1iR_~$HgZ%{`d%DSr>_Q_qE%ct{AsWQjWlZcHpmeyn+^WP
zz7@EWo|ojBH5sW(e4fu?!Zv&$0-u(V>rL}(F!0S4L2h__id&8?A*r>kLf!><o41#a
zfJGb6&Zd?27QRP+2TLO2?Ij(C#<-8CM<x2qQGXnWxO+M+<O(8zf+&(L4#CUH!hqqm
z3&xP9Q?FFIyfo@Z_CEH|_s0d#QEzwMDalb;awO?N$c6<16pvJo@RY+lPY-iau@nnW
z4^h~b9MQK4=ZOj$xZ?l`qS;9KO5y-}faYN_rkg?A{wA9<X+xvMm--wWZf}G8dStV5
z;XAiDJYzGM8T=7R9tXm^xGDLLsy7d2STYC@>a>^Q5w6;pUmT?0m~={iHN`U0Ap#3O
zqqcRh8J`UPLBRVC<61ovBfn7^(L%Kyb<GyEPoOuh`Bsh|P54N|cx~$CIjTJb6n65V
zMLXfbfXb1nIR<uoz>)TmyLuh>OBq3nBWrJEDMy%WWr^&J_FY7*3LI{Nb`t#2M%~}k
zvUck4m=E9^-ML9!C(PR*Dvh4$9qXlbo%xI}r?z&_QL5ZPn}t7RNM-ETqR1+~m;#|E
zz#@3rYc<?o-m%BU_wBT}ri>o}N;-LR8i;l%Z!ckR<&ncYXqz+YrWhjQ{D{~Nc<(AL
zhL&awU0ZGahKlf-KISCOSQ$4vXpJ%p7zz5EtMNTuowqsOerQbvdd?WN)cC-B)WPk&
zYyXRuHn`U^W|W}<$~AuM;f3xT@T;UuSxQA?F#Cdspb!*yWpha6<tyU?q+H9FU<avf
z0&Gp`1QOmk%C>|Sh1<mo`dLGP4C<+Z*p~=Blkpy@Rc5*}XL7TZ^@H-=Rxc2dHc=<6
z-P>MO*;w-@3f%K@OgT$+m-|tbZO8qs`<B*}S;p3Xjo0vz^t)1qgkJY{<SiOb_Xj>f
z&^nNyvtAr6V8)4XH*y$(elIxEiQa3tIQE5uGi8<KNHGgdqSaB?lI@dW!jerR4x4m&
zcD((8#<zDz#!L_HO)RM3H_V}zrs&)@I~Pqu!|46Pgr;Z%p`Kq3>Z{h>zZHZ8>~7n=
z{J!t;%n$lDX--6WvpAfdbkeimz4up8cjJ=PxMG|WK=Qij>Cqbjz74r{jX~Pq4@5T-
zbm2W<7gSv^&5j*@F$&|>*kz(wZx)loV^x}Iav7=5ksn2h9saV4CaFlaurE7Nz9G*t
zG6!Q*&$LENmxSLCnp^dx7?mB^D;i3dt2AUei|%hzQ<Gvt0*gh}4RgY7Xv%*DyT|b$
zZP^QEMB!663X${y0wqUH)TCcU+Dg3pfBK<JW>>DHdCFnL6e@vP$cY>2_P^XI@f3e^
zGaI&v@PZ%OcueZ`qbeE6z%4E5c<V}-iO+ovPZ;DY9WsDmbrZ_7t0>O=C2DmDV-&QV
zi%}vyDVf`uzH!OKSB~IvuIMryfr}HykrbEWYc-7Yhh@na2$3Rd{c*v6K9EXI`cr8r
zo6(iHO^s>FQ|yOPY_s;x`vt;w0!CBa<~o&QRf`sCUXv{`%p6)4jtM91_a0n!q}J!w
z9<D7+g~R;d7C0KOALHtEUer@qQTN@8s(ZL4x+@mqK4r<6eN-khaWYpmMfkYq*U|L}
zR%npS>T4++fQQw+=8wH-nu02|>K)sNH_po{(PqSOi0%aHQgz6|wE2bRzPzJ<6nW90
z`j~1;#^KNzauMPD_3Pe0q+@@1&2VV?<HJHV;iid>O~kca(FtTFAPYkJ@bgYn1SuIO
z-Z6im{ITjwE5)lY4}#s{Z%tVk@bZ}b@tWlY=p)=s0z?L82K3Q?W4m}_hhc=rCGZ^0
z&sHQvv*ZmLW66S;v97rNS-Z{VLaQ0^nvyycX-<C3+e+ZcYx>5Wcrk!AZkDXL{w9Q_
zOv76G_eul#l@;=T)vfKB4Qi@IqBLQ&&ljk(ccV5AQ}2nNqH1%)KwES=#0WyKNC%*<
zxO8hU0m8KwrX4q2jN@Sg_8y$FJW=wLS01MfGHZ{yBF9siQ)L_;RmJSV)Wt#{E>ms)
zHX{1lJ$tU$%y>Uleu$f7k9hoQjxoF9(2hRtfa>(6U6#WixhaJEO!Th!kYw!vIgUm-
z*bvrJ^}M^Fe8mO|@>%}NsBb+2en!_*E><o60JRL%s3Esx_>3UI#8dzU-V123dxZP!
z1xmXZW2}9%IzM?H4lSd38!^(OYJy0dLXIoKYxWg4@j_^5^HQFIMTVtD-awzxxQZ#$
zr8Mpjq#ZLPLu4v-bzGAj<>YQVgak3rcGvF_QAmxwM9xT0A_IYnJE&R-f_x(Q{Y0Zm
zz{bYQeCO()!D6djUVB3~q-_FOY&`kq{cF6K>m7puyKNN(jWk^0K^jyciGYC>l;*P$
zP%lVXkU_!k<Po4reH>=Fj%5p2`cdky@kV<LYAR^dpqf(TI`y0Z^+`|9K#DvpnuDmU
zX1NwQI7~3Ne%^5N&M9^I)1T@V1Mb5+U=qK{4|~+NExnzbjbdp|mWUXq@w7-AZpqtG
zx}=L8y-wLG2vlZ<mTc!i7QeLg-+z1(i!PX9@W-n-(Q#`WAgT!NE-+HxD#F-}T0}JP
z?)M=+f~h;52sgqA&w^)eeT}Ca1EO_yr*V#L&j^~$GUvcHe4f%*DDXMmF}}~&0eo(3
z)}*j*i~mO^_-F1Q5r%t{-E`{hV>RNH_Tcwta~acJ(8A16UpVvLg1f)p*KU|3ZPzN$
z_BLB*)ar<i<tYjQTBmxGGRJ9L<|%=8G^qN_Q50GVkqLcwFbv~3f%cgv!;8$_dElY-
zN5fl&n2rMdX-v%4cYc6N>u(>bigLM?7^^<eLMTQL*s|#IncBtVW;%7eg{LhtRADP}
zT#foj9!7bPO|)Ca{^zUL%^KiDpw1=R8V=uxdZpQvgc0!>JDN|hO*a{lWYMnQ{xErt
zZ=g>yxt=VjVu>_MU3Gwcny)crUHJ({h4Zpvm<4eu)U$LnUJg*|`CL15yWxJf+iqc?
z>U`561Z<x^CeB<RT;H6E9-617yHAass%MrQNR$6g;x!xPFA<c0LbC{S_BLWuIc9=)
zB3cAp_DTsKIQ>+4YbL*3Fg#xq@sNEz@$K9g7ZX<5kqMA+#2QWB*CC2__;4nVrZv+2
z@sBEjI<)vt0380&9ae1Fw*zc=_C%Y7X#O7VDd2kNT$wkwd4x~;;oYu;#Jh%TDRWd5
zYq7dvV*QAz6Szie45A!%S{;K5Rr;#u`eqm`B*n8r9DggS$+g<DWk`|g{!S>h>u8CL
zV{^mU@Xl?j<k2y2PQVdGG1W0>+@RTodE}^+0Yg3l3UuP2J3$g^qSpC#3pF3IjyqzS
z&a%$C&eEw@{K#VD&8eUmHxQOL+Gu&<4q@7kkmHw~%Q_1G5CVQ(7Cyj5?ELI%dc40T
zqwi4eNKR5s*?^^{;R_V`_&J|V!IEEkT$X^H|4S+(CS{@HOqpp+hEtYP%^%S}izlk}
z7<t|w0MZcJrPw76<PwCK&z~Bygz8m>t$H#ZJ&Nmi@MJv_h|j@k-74>}?|2n%EB$D#
zpJnHH36UChNPd^NvHP+S`WNZ)BhyDOPL<2=EVO&I5D?|qZ?P&V%Q4btG&`-L^99gE
zl6r<jl~UoL?33Q|iAaP*=MGxxt8btM$%C7q0<C=e7=blvV&z4tfB5~4T%)|!vfN+)
zCDuOqM+_4mc<$_52rlm%jA!Dk!0IIhvE53xw@>8Xc&^+_t{ID+;w$TShNbGi7fZ3=
zA6EGDU6ou--Mxp}s#uH~Cj0%Da(Ts(LhL{E^~mOzF$Z~0c(wLvO-Xr(`YokcxiKSv
z-<hy%hsIV-xshkRKVfDk^I;P9e51JbGsi~bVTh^7A`;crmYAr~561lQMQ|&2?yj(c
zk#E)bL!n<b-$Si#wp^~3t}yOQxfLQ;$OgQ!+3MzNqEc@g=U)sJ>6{CBYBc`E;=kn^
zj6dz!vzA|c>(YAEMa10DG+u0Kih~CMjnRWU%h{xs%PliMX|NWvXdRv!DY5v>_cV6<
zaXgP>OR@75G9-7Ns-dB%2Gg9zHLkL&x1VzSesmVMS<@2#XyKW^<p{CrU(uy)*>ep1
zm2xl4k3xlJ|8Yw$9fJd{)@)`3g^tB7;SD88VKZmJ(5BZpZPvnlGd!d%2O8l3_hJxp
zNU|>U25ec@wW%3kigtePglIm-|9o$A(=~ew^jCMlc)(VhCpn$51*hdK21vfzozMoE
zSF9DXMn>hTuBcIEwH%L>M?60k#~pV%uC}uXQz#6RbKFSR57-S!)Oyy1OX51|pRUd>
zf1X2*<2REVITAU2zPmvR(xMIkFgp3*wUr3*e5JNpT0FaPFLSRvS^{O^!B-w{146b?
z!QPZ-=*yAx`4zU;x_aQPlXrteGIw;N>G0Iil-Xy?3Z0+MPkVTDcoNBqBTt9mu<e~%
zN?@KpIYJzlJlQEASbqJ9U#U5k6W(2M(T>e+sK(PIPp+pcSC0NAPcL2qSW+w2+v6c@
z0vr8QpI|eFz%S&v&nFGH1O%RsEG&M>o}T&NNbLdgvvZmVDw;Y)oBPJ)WprSzL$W9@
zoj>_4MPRWVFjPXQ`B8#KbyRcRl$@qIsmdM@pQJO!V1tnW3^U!}_S<v~RT)?O1zi#x
zq=OB%MeNc2dy}}t(Tql5Dly;lsmWXE{!T2xY*hv^py<8mvI#lC_CXqg)Lt9QtE=p2
zeozd3sKinAtk@^@50uw-I;pIHr?l4|7x5$Aht3%(p6NIOmi%w|UkD{!4>o-V8}zTi
zg{}V|0AxU$zl;Ngs7OC~SYWkzjC-FhpObOsvwiaBVk5-Q=`;Fquvo3y82^8)`&`{g
z@=iaQCU_xUy8~h30Y@HPtqoW3q*uZsZ?;rcXeC+`!bEG8-PfYpx2X5L-ZBn?5>uEs
z32vMX&MB}W4IDWOLV2zMjV*2b)iK^TYlHlxQbM(ITdjp^_nn;ir~()^4YK=!3dBr)
zRx>#K9^D5WMuVeGuzb*b0$P9Q&T5;iYPD!K3mlSa=HcTFM&MfbjcEByNo$nh5}Gd^
zgD#D5+P?LN@Lnm<#EnJ|t|%t^ja8s)F=azQ=m;lLA+>NYOJOWu>j&{w`K&M&o!C!y
z@_f)=#A~sc?o6j0gofJ@stM9D`_lBJE~PK6WHYa*BS_pz*&#7V;0%8qKE27+4GEVq
zx%FS(y-g0Or8ba5u)+ZmRB)nvtttXNk%?Sds%MpePG31*t<wm1&R1ed4@nfljhP);
z99O|=E3R+Iqqr-?taq?$c1vb0;gotX_^EaDjO$c4S-m(Mrrop)4-+7%<78EvW@q?f
zv6Br3gXH<)bRK7=krjVB(N@cf8yv(@YAn4Wa8;U8*3%UFKJj#=CUDhl#DS#tCMTjQ
zc?(mxrj>BWNGVIhm?e(hP}QS>wyT|b_*|zL6!F@8nm_S!v9szTIE;##+tnDO)_i5a
z<hCsAa~%y5@3uV7W*pnmDC(&d6*VDxemh$zOnK0bY?+>+PL_WdYh?snS*cv44zQZ-
zE$xl*+5tv;F>YSRv~lvZT0M@{__$i^paMWPfOQ0H{&MCGh?gBOH6q5c$=wU-^x;A3
zck}$k=kxBM)88hmN;gfn-WhZ|&(+<|Z+3hW4Pf?)wjm<~YlFvq$yM|qdT&ZgDvUTP
zM|8B7qGww&XSjdj%8Zds7~6Oy;k>Adj)M`P;dGDL#UIJoRKM7y*$ScGe2~oZ*bE1N
zM~W3Xw+fDobKH%XU~t3RQ4Y^4)h3`cfmEQVych66IT@Rv58^zF7WsG;G>M6bqMQhG
z6ySLRa7Bp}2LQPMsFe)&F>#xE$p>RFiJu{KVgj@oWVU~krNnBP6f<a=o&vBVRA?8%
zTF52S@t#4iY!z37Vu}&+^EO-6e3&lMB5tk?=UJ8ycLwkE-<wX+aaS@ETqEol)4(q!
zlKi`X<cO#~y#O1Rb1~u!Zn-o^E@&A*d%8fVf)j=314RJ16K)OaCpc0#?jAXsx~GqH
zTd3sxrzw8|x1m?ZQBssrcLJhtCB9~lj<+7QpzG+EW-uIo-x3oZ<FTXp<`~7Da{D5)
zAkr|i(`rvh4cjA+&H%J~A=>8;M>gA7vic;4Rm&~o+&vcr-`qBE%pJLVSb~o%CDfgO
z$DqkbgcDlgyC<@xT6_e;Xvd{K{tOyvRv$ks;`x7uElqPKK~d8@4m7ptB;8mPaj}`#
z4UX%q5Rrfi9{egUnlNuRt4()<S)G=~N_BDl{Ipzq6#*c%p82Yhpnd=k83|fb0`T$*
z)AV|avy^}Z+dK*f)&elvj=lvWF}xGNl?CN<U|W1-^=&v1)GG9cFE3uoa-2Mzrg7Dz
zj|G3)UYmAa>I`spEbaHZ{S2^3xBFh)Nt0w}`oi<md?y=%s$JgDGfKY3vGA`d_Hyi@
z*WnIxB@4C$yhUiKEBW-Ss;VWeq^{tRvg19$BhwfHCP)Q4iCufWWCj46L~I6-5tB-c
zdo8B{g^rt0<D9<vUyGuSA^!>VKYy1Fpkse}EMrqRF`0LY;b1t(hA(zH`QVjd5x<}J
z>;7P8QS>|gJ{TR?nbGRt;%bqRS_9hBQI0W?*+oH@qe@qfm(Z(uG1>DB<h!QOfnlhv
zh^4}=nD`P7QvlnTY1647>$EM`44X+D!@igSC(2v@_4O%&f=`m+3J}iw#q@EgsVskH
zi?sfA_gY>T@7DD^1w>NMV?KX%p49U}4Zx(R5rjZ9R>56ZVURHeyM+?IG&4|CjRdXg
z1lXNifVIT!O@OKX2n<(6;=yRkAng>|u1r!2#efzOvv6;eo&iMSn1_LuQc~fq3ZR%?
zP2XLm^LaX*=bLQv7=&>mlNa+ZKk|Qs;O?S!8ey9+p*cDOkir?*c0wY36wYEOe~S59
zhy<F=H10T*-XUZ7>G3X3&+-s%rt$FzqdCcDc&V4o{Nv9px1V{czVw-U@Q1CXfNtLZ
z1U-FLTfwd7n}-^;J(nBV-k{Cuq3THL^w;ynZ{lyJVE8rlYEiGjv=A5&XgPmhGNF;=
zSQ;i~prbHOO`=VUCL5EQYgs9?R27rRgkhkYi4xN<F=>QyiUuhdroR%^44ssi@RIWx
z!#a^5z}{Aj2p!)kvK&m#>DIUzPLoBwSWNF%7*OwonVHZOiAwkg*#Xd1XGZlnh_Uix
zK2eNYIaUU=E<y~?xMQAAB%^;5P|HZGgk2w4;VK5s)Ga-s?L4dG02(KUf_kOeoTrCO
zC^oZ9f+k1K0Zb#M7z5}iTue6s^9DHVWGxd?dB!3aaOc2Mr+})NYuN`R(=&}bRC0_=
z(wa>$c|uZT(-a+?&;@Fkq)GkKOaJY<vA0HMti#?I?(!bn6CMK!o$r6qk{*pK>7%En
zXB5$%Hk@JdE7j9}tYloWSVbf+>6xDDiL$CJtN5Ctg~69@Z$>B2R5NHvlIWKGB?eli
ztE_&m$n$&?izW{1ES=_q`o3ERH<TT+v6nMD79mvlLo}*!B-dv*%8K_Y%s+HPL^Wa0
zNF2n(p}L+V;+7U_PnLhw5+n%#7`R0#vRaeCN)X0K>hUd<lrJgV_z)H4q%zbRN%rJk
z*-n&KaLpmEd-Q)Z*R4<(aOt2#@4`?2Q1&WfD@m#lsNR#~wx<S2N;xKA^?RK40OVm}
zNoX0d&W7{;G@lm5;MIAy%F_4MKGh>DFcTF8I2#P~){<~1p-+FlJ>w%32D6p5s&Zo-
zriAuVLK6{c7A<o$aPBY`(eoQP(lAlGzMblv=vev6*pX>a7*cUlnyC0;>fagG^<a^;
zPKZMQLUle|-M27=p~4xQtaFq7h%x_5xJ=1f&ZP0EWR;nL+~ESqEnZFFR9pqmEFoib
zUW2=Zr;Ed6tg?S&r<uP!as-+f2!qVb*s@YMev6m*R73NV#BoIl=JYDtL1==!d4cc0
z|5B7v2*U!?mV&t8meU)ot)BA(!26tx97q)TC!rYUe8sp&jHH--2B|5U>HNK<S#4IU
zO}$!uvYP)Uxc#*b9@@Tf%3<HEtWj%kk!IIwOkCwOwpV`+s;KSC&7sngIb(bPe5I7L
z2VnKBwbIZ6_nla4j6>8WD5rzt9C<bLEzFDMy!ElJSMS96e6v+kcuw_V)!eTzoPw(n
z(Db!#J)o9EYCwPJzosQ1Kc)D1asYaaY7UkZ;RmqU3%@TMn6292SRSk@T!Y($PHsB1
zYf$3s4D^357-80;Mm5qb#h7VOEg(kCsaV2~FuHUWt|R?_kF4b&1_RBA3WL8baRgF2
zsR;<mW8kdO=rd>88Y!KW;ZXTO8^pi05?A+3rygy`)!Ye$a-Tv{N2lXn;V$et&F*n_
zOb$?5J2ck#u%uL+ZV3R34?@%UZKf=LOjmMW{oj9gKF81v+qW%m-S$iSeo}f|aQp!e
z1Ll@J*)MF54+1l_9#^*AD4}OLK77l<XfQf|ThaE%kd~vJyxFpVZQeimnRxP}$NXN$
z<=D%^@3^+$bo<F(@ebaH_A&gpeH4Sa;P~$w9G|huQ&3LbdNE!6W-+~Er6B-?K=)rZ
zVYGjyoNp7{ZS`B@;+DqlWQYh^n|(OpwmP1HJ~_;{1qjib`rIxpnI?dtvSL_dS(@Lv
z0gZ?f6U45+RKl>7jtwFmDrNv3B;qBFY<2+NeCb;6GfY$k+W!`S4I@Sr;WcP*<|C)j
zYXATQOrs|<W{dL^#xSYpAdC<4G@S=7$C`f-tNFoYY8fG#QhAE_vXoMW-UQTpX}IKK
z1ezbvBkof%0Od2@NPt*3s}T}EiPEWAL!zOPmT}w@F6`ZU@7%m%7RCFk8i3Sdvs$cH
zN5N=77{U7Ha;Ygx08Xt1pOH0SDJHP3fVHK-%tYq7%D|l;!}E{UE5J-b8EH+r5i)<p
zA#IN2MDUToDS+31bulJ_j*iFDj-0zh!q7rUK#^;Oe$38^nNv_=oyF{&QX3DD6&CHa
z5||d$AWz-4$OvtX1=uRA#+P!=pPvuw%Eu4lW^p_lH$54!x>RV&O7vxdzh+Cx9HNs_
z0~Wo@(j36x@Y^rP6waW?WNWdVk~x2$?EJ~OUE0obAADz%)M>IwH=Ar{^OJW#btT=V
z_!u-;9bW%+lNX!1Xdwm;OEG&P)zmj*8FYr7L1)lU`gy;bVRYX#cCvndXAl#dHtP(N
zem@yzi#xGLeLF050fhmY6?+AX4txMn9dgzg>$Qsp(CTqI=b%9YM{UvJ4uF5J_7;Z>
zLxZ$-upjIV2jiY*>BHJaOhCLn(rXV}@pvcz?H5iM?_4~BfB19oYgl?@L_9DLI*2{!
z?<D<hkqld5bO$Jmovhm*6fqqRyZxPR_WX}g80hK<z1&3<2H4J;2^KX#R4z!*?d=)T
zBUnbcWUf>UyFg^FBbstis-AxoJ+28H6AvjyTuzuG!c>Ctb_!XHM;fZ~J%jU{kw{u?
zM?iYFXL~nWP)ryY<GV_jp566(6*Y<-Xl5j(07lt^1rJ~#-lmv?;g@YN=?Kn?&hz;u
zU&XWw#q+xV#9~^+A|k03XxVe;tNNTF^gX3m97VW0)cRgUs}T;-c?N%LU`2?MQ0Pq}
zx-wRbRGvFdN2NB^&6Z<Ogeu<j5yJ=K9txv}W-sgcC|WPO5D8&a80v2UI3}YO6syV@
z9>-)%d%Pl5C7nl)K@UQ$v}ffbN4>4_)13Ga9FO{(d(MK-Q&Y<D@l0FfY-DJ_wKkmQ
zRwz0V#K{ty2H-2{N+W;aU7C^zCAGqVDnhk}R>EDVT659!sDz}Faq4-=;d*ad!Po&Z
zmqQ`Q6e>Glgc+sGp6~<^GvQh}%zGlxYf?XoA*HZ>BzM}Xu${kKd_BTwS?bK8SsT-G
z)E(NjwRVX#&4<Pu+Cyg#I3=p(J7^dD(59ue<9NvSID9)mH$Z=j^v?JV)-<C8dlS91
zx~;$&%?VVtv;d0NZC$w89JA#e9=0D3bZMfJbap&rXJn-()Zsjo0wgHLkx!T&uQf*}
zY&G+YPe50Sh_hCj3WSGZEMj0n>E%odsmhszXG4H`mKMhqggu@3(@xPNBqim>2u%L&
zw(Q)X0X%w!8j62|rcUAq)NiO#$i%1~4Vv<wOHvm;t993(F7cnWx%^{dymM@M!^(EX
zjsa}tuo6cTQW4eDyED+gwxSb@e%g~~CVQ0#lLN}iGODK?HfdR|<t+AOsL+{N2HFrI
zcm$Q{o*}Q;>soUp+lHs>hVJQ}sBRELapDgj=w0=6$vuCVYy>)8+rwzOsN0}A5*!@W
z^RhR#_a}_zQ(rD+6td@Lw6>}O8Q_fFzC2(7=b@;E`&zQm#7;!dk8!@SELo+4Fk=gV
z0U8lH56V)*BVQUf=2Do_@?dyx5^h41lj}6<iR6|A#w~P@1f%Ij<L$&>JA`qAmC`Sz
zRH9nyN??DspCvj{2Wkv)P$<gDeFy`?LRZr*{V~3+>X?4~83|qdB^b2?_y<a5ANc^B
zV+<jawq{>hCA6ToC33ZbPE=|i9)1NYR$)$$(Zs;IBmnq0bZ?m8V*)#Z9x55})~w?z
z|Lw?HK@D=@D<|PNspXgpsBi{47$?Cv#kn@CHRFGV@U}t<XJ81vFbflre_j}?Ynx7*
z_p`KHCxiKLSY&zkCux5;EiPHhIGGW<J4(=mvqJ>OC`yBnPNvdMC(ia+YmeVEtJNA!
z68CDNU)+;8Djfe#`)3)SZRgBRr`kYAakh+SCdxk7TlMoJm-@r*;)&$BPE7hu*6%Dj
z-MW9fx`dkQkq$(CDX9BwSNH(^;OBXv_tR;bG|6z0^rz1cb7&c_rt`F@FPS8yj`=*!
zG-hD~7-Tu<4C*u{Xxj&^En+;Pk>BPT)@|z>#SpXmS=-$k<C&*8d#n`VBVpTlLK&i$
zdY{SYDlXW86q+#5bc|Am*;sV>5HpG2`Qm@>yE*N<n|KNPj2K2Y7uhpN0#HRw8R_X#
zfSKB>jOYQ{1en)cSH1r{wg9^-wx=UnIneozCYW>xI^CyLPnIQJVo=y#*asU`hy6Xa
zXLUtvXkD7tjCmyK5KSxribZB<^Js-}x?FA_PsQE*Ck{t&s8_^cW&w*-_yA_quEl?m
z8Ba@I3FjwZjg-<>9C;iZbhEdDnC%f>VLmqw#)$D?w*qiA1^}`YYD6(A(NehvImo3G
z&=&(VqmDTi9+NO0DbNgGZM)x2zCZX(kT)*o|Ig8(-6vq^8H=FDptI2}06pSBVOk*o
zJrg=H?fPxF+v67Wuofk8(MZ{P25En!ATZL(nFkYe?J?HIgN+MTpAfeIGPQX$_6?vW
z>EzlyQejwxfPk?lD#V#|c8S5*$SKvJc?mWpMn3y!wLgr0q5$hDD-1MTZEc&83#@T&
z*4$X3;pL>Y($m(GQUZr_g+^MPU?h6#;T^XC{a6fu1fibj^<-buQdsLbRTzJ|_<(3C
zEKYrmj{Swg3C;?wSI`L_Izc&zg!Ji`qmxd!IXXsW{uB(g6Fw(v4OG!=_h{}-1^dtg
zg{4?lYr2#-1oV8piN}c4HH9bWHn)E4EZtMI0*J?YjDs#vH(8|^CzXpO7ZnbqSI~CF
z4JB>}RuW68sf6V4Op4Y5o-ltfi>u{zMM}*km?jQ`V-<<6r#UCR2oJBK#(|EWX;*n?
zD)C^_ID>E7R@M&Ip9}{!C;nAO@z}@ZZ0bdisczsVb7)ZbsJ}Zee$^637WI4@<FAW%
z|Lo6CHxDn2K!v%n9ED|%Rw06#tY~Q><F|z19u%b|a@2-+k2&u}tqy<T5eD7r#@<xK
z-~g)yP3u$-UX*d>t+-`*DTT%8X(=jllhDX4N9Hz8ZX)g>R?VmjnpM<NXdu##*O5~&
zkVAz&pbwO&T5eM<Dgw%=5^!=tR)C^#xT5DNCHpvpkHP%1&86FLI+hX4Z}cf;Ophx`
zp#d|&BzKD<f2|m1F-w2b`6hcmKEFtQRn+fiuP#!skMm-hzZN&sRh<{>SBn_(dX@bu
zn-|4Hw+v7pGU|#c1FDfQa$q>6(2Ze6p};H7wIrCPkxNq@>2j>#)RE|*B2Iz&azP%L
zs^YSQ9rhWS+=ezqMQI7uQXGjxO^|)ZXn{0IRvviF5YBW3${K%+)i@?x&+Hf)9dXrK
zRne&j(!yZ`*an*UsE3Zw@O)HSmju*33WJw~!V|Xcv8P3>NF0TDM8<Ix1>mG74fOiP
z2!Bgep;fLw{9orq@@k#MJWHlcUB_WoOtV4qK{9Awh{YgJ-c6fTJ|802XaAG<Vv#KJ
zq|W-y!wRE~={bMe#%-U{<TUOy!a3Y^IX(41Jvs@S4w?`V+PzwD)8;r_C<qgdJ`*{P
z!9gGs6C79t_XL+a-X3)%O#71$A`QHw&=XNG4>Yt34$nMDTw&A!2%nC1U{-j_B{V^f
z8Ua4moLVU+O!2XiUXs#t6)lg`8mFd`BCC_>8dOxWiA8^wBz2M%FU5H}&lh>qq<J!Z
zcbE?su};!F&(be+H$QJQbq-@w!WeDW#$z@&_=kR}b!7o9w6yqP4Nd?U0b2~Z#2_;Z
zl4xLJMuD3Eb&;y&z-(Gp$!6Zf-^@SAwlt2bW}c)i+3;%BU<rJ{vf4DrNsP%FSDWTa
z7$-*S$*_ME_Qc@?Qh9~J>t{W?5hf|A!(Bh^(=n%L{c#O<Z|j{?hnG8xM{5Xwo-ibm
zLW0tS-a*()E|J9|Zsxy1?(Dc|S({o-tfIe&4!55ZpK%@MK*j(*Zg3mQ>e9+#o=vBV
zY*^2K@_aE}0ODCB^)#ObAr+aR@36c0!oX=08peNI?p0t<3U_IRG02L1FfEGYrFuFX
z)=fHGWrIapmXRZoO#IRWxEDki{>Y&n3dW9P^6(O8TTAobyqab6It5shX0QAz%K_o6
zvIv%?t$4rz*o!ZWZJc`8k``U!glqu;&HBzAKsBp?PzU<kCceM+hX!yI4kuj#HT4Z&
z?mB-6hsz-h>%S?t{*xoXwN3Ci3fy2!)ok5P%!HGnVto1S`f*g&2@mM;F8(+c&@E@t
zY8{qZN23)Q@~<tLvz#9Fv8Q`|4|m0U@i4*&(lExYxCPi&$;*pvJy>^RW~15@m7Gzj
z_RvpY3<mdpG)Q->ktG>k#FPg!bk@@XeM*1GSVibGUFAy0Dk`I|Y-@*qFH|>F#pPc)
zA{d{D_{5<8&SIF&lVp>nt8^zXQs|T7wN=qyrSl?ROtVEjnAZ7&L)%^H8QGUSmX%<k
zM=z@|0F|>5PNXtdB7s6+K_HKzh*cchI6hQ8#wcZ!A(J0Kc!SY?ZiMboqT-^*G53E8
zHL+nDqx@ZuRV@Cc*0d$XJSuNK-|6=|Mbb%<?#{52ro;3JXcEmZPt#;GOy3(0@?kyA
z^1<qXTZR@m(y2L;$VhdGv8@uEfL$Hfy3~5VvMgw|j*d!hXG~5QBa$<85nOWhG|q0c
zTwjy`+7f!N(jXy5s18B7nZZcu9^-#hV<h7baOg|N;jo`1!$FeeNjJ;;uyiueQGnfE
z1>lyi(zKqY*)Si@AGl>WCyjDWP=L3>URpTi?b<FePqM|pDlOEZ-sV}+0%!f?q11q?
zc-bWr001BWNkl<Zv|B16wbgc_;TtF)9JE4zC*_PbMhjtKcl0!c+6<N|V-<fowL1Sv
z(`?#7sLh>ruA}8*K)OO$7I)hBZE5qM!Z<T9b36_9O@vfmAV8%Kub}PYSn}-UGf(8|
z<xdSGLQh+tk;zFAtn%kKZuOnde{PWNt~LB{{t;(&t=i64wzI%4ZojmMaeFDJkZ|iq
z0M_CRs+fWW40mO<shi|8laPOYi!H<5YM@qs&$f6nBYJXwf{gb~#5a8+&y!V}0n)()
z6#d0;irGt6!)Y<hlIhNHicHD?e>U0s`83U^*?P?k1)y}mb+{nH0364u^pOzg{{Vlm
z@<1qwflDq@CTYu+(i4@VL@|zVWgCr8I5m!Qs!A&=A<;8t)9KHL(|&)QCa?UP`JkRA
z=_XAO{W*?q7l1GsI?)JzlT}g!rrb{RaGVE~V~!rnW6s8Qgp-6mNMQ(4!tndU+uaY+
zYw3>%_3(-Jo1MDf=?>x$uxGbBNV*9oni+JFV>~X>57OZ)`QVlR@<Tvfw=3@aF25MU
zaMzV5)yzk&BypN*i~N6BKGNm@K;MKsgJ{q*0D1)QHzgPVj?wtB6r`k2Yk-vWR;8eU
zsHcvyeApQd2Rp;R8+NDt?u)}Npgy?W*M*~z1U<SvdS-(2v4)RWHL(?PBYA?6Qy{Dx
z^hO!=4Z=z=7f6rxP&kze>Z$u`9hjtVn0E%-%!vKuxp!jG&5?f|wg!aL9S(=-pg%3*
z;<Y+U(mbs<UXHXN+H-qR)RY%;OaVk`DGAP08xfQWQGy9*$kA=dOT_}Sij>4KL6Lb3
zC&o2_BP`*9$=kh=bP*FdBze(!XP9=gdYBD{Nr6ZZr|E-GOfoBZL-jM98)+nfNr7>M
zH~|VqmE$7Pz{h`rk4>*c2Xgctrj{a~*!?MW<VXJaeSF`<&Ek`GQVy^WK%QpPe6m@z
zP^hJV!d*6-1t6pYyIf)nkG~kgSObjH+sGrFgA{=OTpLG(j_(Gkt`yEo!lLB_kly6>
zL>aCD@xc)m)07#jXJEm?rQrnG0+XVyA`+1y68vBRmydtjG)Dw!4?G}DtPj8>m*!AT
zxG<oIl*WK3biINtdLr7GCMeP7f~EPpP-x01b@V7fXX`TX?Od+%fnN#ZYPk}|l`yWB
z2Np&P@=lla_J95H-T$*&KZcF?_VK5;oGz=+ygqJUXKFY(`0j75w_oo4o$U#1KC|%=
zEFXXBtiFG~WwrS-VQjMe<yT(LU&cJ~@OtI=FF*aqEhqo^c89jS-Sp|dEdR{%a{J2Q
zn5=!@Rsv<)AIi4%;os>my>jw9XU-@43a?i_=l`D9@kyOt*4Oodzv9b;(d4Uk2p9)|
zw`0MdS>o~LN3ne7CnDAywm)#^_?JFY1_g1u1q*++r+Ozg$Ax$9tu{2D{eE`&!b`dH
z1z+!+Ir%$hesudY+jHKQ$CKUSXRh>khxwNa<D9eqo=qoqG75Q`obn{xC7gIdw^X>>
ztw;XPM@K#G;rMX(Yx~}utbQS{!6N@sVZ3rii+Q~^!bIfX0IOTWr}u}IG?O-ACA=JL
z)B%6Ps$jo>`N5TMtz#>!*8xp)rGizm4Rwl5n<iX)7gSWypnE>7FQtav4LTlsiDOgF
z1@D?DD50E3j`PqghOsRxC96tDRo*tcM!`x&3?))uj}v-REPJAid@quS{Gux8uvTpz
z0Hl+d9C%@n21`fenbyL2Zs2soaXNFqbZdXHge%l-I`eHnl@V})Hd?)IvoCptDJ$_i
z*Ad<F+d&h~G;`{Dq=wD761+5=#G93?q${a=+N&EvmXcS<)sH9T&Q6~G8DZpiM`akX
ztb)sNmF_8BDpy&-v{wvMAWBP>y3x~nPphg&43TuC?b!5Y3@bnu$x4lxBxX<W8)AP(
zk&Oy-J+e50+qY|X^^F@ynIm0~u{}Y0Opg?)BGM=^j028=On6D-m{dfJq90W@x*O5=
zqU_CVN%$=Gg0UsjW)}oDQtoM0+ELF|0mt}vb#KBei)X5MBnO7r|G&Mr?QY~o)&%c#
zTO>d4obkGDYuG=5(=;pV?5@+f9-n`7C9{|pS`MI@o&(~jego|sdYo<Ipok0kBWVKi
zmrNP|bR&|~TS+BRDpr-`CitF2z9A41PXvGnwoga<`}!{f0;fuec{9|{RGr%p7gS+z
zEt#5UlJq5Gm|#hy6CesSav#@K;Q}i?;B5w5QtQ=$P#8)R&h?*&Put4>AKZUuU$}uA
z923Q7ObTY$Y-k2m|ApVrs=o6l&s3j|QhkwTbNcdjF?A7CP!PjXy1)_r6gqllnG@^{
zbR+0|&{)JS(kvYgQ!*I3VTK-dhG`{{A%{bqLdQ-kYWXl7%w{P@uc>oAdLRz`1^s=%
z;GVd_%m>6~lf@t#)foXen+bn7J|>&8eazN#l%|!#q{*sZ=@c5t*rEDQ%J&WH_qm0(
z``3(`MVqJUS(;^af6WH`ARS^3Ol>iIiW|Uw=_`zXpK*)pbUfw&%4%ZZf+_+R1(%Bp
zsup69*8WeUFv%nQC+lVxBo(uvCm0`O#wM#guO9k?{vzwcM@3Ra3~_&%X5vV3E{Pp#
z0yns5XV5J?&$1Eiqq}-j&NwGVRbs+Q<VJLD3rftW&R6M%xa=e&@C2^JNuabI!<Q-L
z#7+8{b`@V};ZiN2t%V+tA(L8EPP12;0-j1qNk_Qb=ui!bkY3C@CAbJRReg-}flpTf
z;T>%=)lNnF0?yF?EAW43UstjX=d1d{zv*Ytj|m6vVttGRM}d4aZL<>k4Nl_3wTA{S
zQ>Z>uDU)n;2$wsoPqj*C4!nnHl`3vzy`Tz2Ds&WTgsM&?E~pY3XeUQUbvkp(oa^H>
zraBl2wg&7>jCdh|4vu9~Q{GktxGOd7wo2*jS*F@Ya$kwI!o+`{!0{+DHWgDB3cOBO
zxlS&5ayhx<>gSb>>+FuW#_6Oy%zz&2eb4KZt0herG51gEX#K0?;b-|GE1jv!xyNn2
z1ZwrdRZy4CX)ogUUkcxUmJ9PD#pL=_)q2s@<%L)EDN9Q;a$L`8T^+K#NMC+wh1Lnf
z1y=5+a(?vH4a0vq%6db2k#C^7bZIA-(^TE1z}?Og{&;0$&Uk!9a=>CtS|`ODjp=Zq
zUt8dPZ2+TSI?74|#IgYIxU+_9B`3g+=IIh6e!O{G1y>Bzr6mWHkv7p1@EjEuF(07l
z6r&oFzsQW~HVFER7}drhsa3}74K0NoXKY$H2DYn+7Yu)+25`*Hs;C6O#M{6h7>ja|
zp;}J4tkR4CB%fhE6;9k!<%~zHGZvszxn-r2N_sZnxC|8ljllf&fQuHcG=P4nB93HI
zh(5=3-56ct$%?6OA1`O%!c%vaMSKO55GmpGN5C+Z#?(hAWpx6jsvl=K>gg)*U*6j<
zeBtqa+Z}(uxcSG12fZl2-TeKgBmQ=6=Lg=z+JnDc2l^e3!uWmt!k0bX-&{Pux$69W
z%S(Q-_d8zeJ>xT%`}vR6LF&VwAHUv+uQSj8x2r3-@p<)eak1w&u^JpW+ptw1`&};d
zXzt(g4nN=>KCXMJPtP6mr{}Kh(@U=lU-ao^PxXK4jc)E!zoF;*p=IT^KfQAK=Z^gM
zY@UnvyEx<VLfb3X`4r<<K3Qm6E|<^+f61r5nEQGDi=QI_=D+#!r)9bHz~A%V%isJm
zU&6ly+*Urv$$|627gN}yT;e`;#=^3|DRh2yoL_NUxqKqTcr4I1?>2kmUNbCu-B!{J
zThV`?rrn0$3w*2F3xlxR8t;X1<Xav15=4H!7Zu|_FN<a`i2oe6@}koUo8$SPfK094
z^StGKuiH!-Up1D+pO$g3<Ba<eqw~D^W!Q|8J)bvQVJm6$n!UW)Nt)g#orcdFz1H8p
z^R4-~*$T!;jA^$S_hMiAX4(B|+G>5(ng)N(Fa5abdr`+P_xw+dR@hkf;FwQ^7>~uy
z$Xj3L|Dgw+yA^eTCe3lT(RtqK0a;?4Jq;WGR{Trs8(}BfLz(qiku;!Q2YP*@47$Cb
z`E8?UM0?A!ku<+-jDN=CG~#9mkD!^)cbsvLvizy=-xmeWR~h@<V@mUBk^A{{{&jyb
zFUor3_!pmtxlbbChaA;KUXB3`=B1Bg+~@B_tti60jNt{lBoT&rFN!#N8pQbaX`rcp
z4j1}2<*tbykC@7fUHNEbe7n*2ZStu~6pycNcwIlnS01k~eS<PSd!Cnzs@FD*umAau
zGvB9--(%k-P9CY4N~TZp%=7sN6jOhj=l`68^;_igIpD;39SjhyVFWeH5<|)0^0E9L
zq>UfgBxsnIQ#92d+NKXZbA9S4o+D;^AThS)n`#8Dpb?E5Q7h=htxnYGv=T7Nzy=5!
z-JWl?{9dm)|KLp$|H=RPc_SG2I>GWI6C?V}cU#k5*lEQdhBG$r%gvw@G^2lCnqY@@
zn)77?tzj_JyzlfvzgIMyMaw_`YV#&}VE0Ns3-`iCSmeF%p~QG-$8I%~sM+l`{B-YA
zTi|=KPxg`=%-Zqi&wIGWyMvD?1Vb6P<8N@4akKc~{WJR8UJuSRj+4Fk<8sEh5p=rw
zXPqy@UhrW!WAokx3Sk~aIhcR6c~RTE;n>3?S{BnNF7vX?$6@i|n*=QL>CZ`&OrwV;
zB6{eVi(h=6mqk(G7}4nmAV&Pj&{RDC=R5PGHTvT5Ki`=jt<e|%Q=a*edTrzBKi`?R
zF}?F)aZa4q)>rEVKjrk)Ukw-cPf3jXamGSOL6z6IvPW|<OSx7$V~T$$Uoj@BWJJr#
zdk)`)WL#=VG$&Ar2qjXkjPgbqczS^`GPAzO2-iOT`a9qHdB+*I>x`?Np6)v_z|~7+
z@j{r4`=OC^;!WmLTr4LBhEya40;atGLW*pZrH7a|C(Y8T$}I7;UwJ`+pc0N@I3d(m
zRr%`0*JYRl(;b?+4`+WkE;ugt@<W@>j85N->Sc!&al}dHSY|Ub#AQ(f>H6j<JCGT(
zBr{}4w8<RtvmvfuRPaRZ8K&7YII0-gug5|Bw|K`H_prb#S6U?v2zqHbm3(C7alHmd
z5lqg<l=ihq(ndN=d}kIyD`Wr^Q&L&!%<N+AlO2i*D>~z<WwL+tSK|Zhh;bKZSbMQ(
zt6Hz)su$f>XA8FQ8za=LmT6rqow`VqW!H~Oi^}ZD&gi?3&cHlQZ@J8|Bb(bM*jM&R
z_Rq&JraI%YQT{NUkLUAzx|}b6{3XdfH@L!8;j(fe0XtbwGtkY7NuIt@TBMTE6U=f5
zunI7f#=Nxx&=`Mb6J_W~;WiL=l9G`X-YI3(`SOV;I=J*v#8eQz?uETD7=Il`IJOvf
zU)G^US)V(*PcUC|svIikKI#ZVL1$P`tY&`T9VQ4hZ4C05v36z#JUd98er9w(1q>!;
z-0cf*DO2n`_0f(q-Yur0s22xu5zWIQ43a2_gI*2>gkpcGuv|EOs7MOES__pej7ZI>
z;@o+zBrl29sp4EgyMuvJG3qkPMwym<c?3oV?5?>VIB$h8f}iYk#+{rohq4^cr{#2-
zFN=Jh|C|G=5&*6M4FSq>Mk-LqW@d(5FaS=q{<e%6sSl*8FgZOMdm5w`mrhDcIT(Uk
zgVfUIO(}ovdRg>NXKV;<-|}Z*ZqRBCqU^=0`+9koJ6Qz`Sg%J%lvOH9#7X_lUZ5;@
zb#1%-^pZPyBGC34Jt|$n6F_e5U-C=j@OgbRZ(}b!(DBFUpPPrdb#CF;IeoTr=4#`p
zuaz^t1h83MMWgSxB!Fii^fAc?<;H_%PlDWk7sY?^+)axq0I$Rq#d7?Qa=eUwskliM
z<BC@p5lK>B-9vI~!KtYOuS@Cy9GF$0Zz4T4DFZ~uGATwC1+hqHd}#dwU>nqB8W-mi
z>NFq=L4_K?MhiFrqaE>#C|Z$9Waiyxc3cjXA_~224s2LaFC^C)_e`@4u%Ji<ToYqd
zb0L4xM@Jd#!HB{<OpNG?q9>0jLNE(7ULoL^S46^@B|VT^5>r_EJ}oKnmAC!>{Bjxk
zVCs9Pz8B2HxR-ww&f_ks`#kKu{D1bXqBNBNqUgWQOiE_e=A4oBD*$AeYDkc0@|oNh
zvk`12CFRdF=pJfkBc1La?WYVBk#u!9o{WD>R<#+lCv}AFyP;_V?KInGS$}}uOb`7i
z<8VCv?lX&LZgeoqJlPkd4bU-r<uI!cs6y6f(EJ1Kh$GKLyH6I-xR?`20tptxXBdiy
zRD?gXbTME~37Mw+FDZuF0>zo7wEBW>Q%rfnGcGU%J3spOXdLBH;=}PY3dg~>!90Hm
z;al-dk@Vu;SO1WlycrIZVX{<QU;^&VCAZ}=U8fr2v`tfXAO-Y*OtV*vj`Wa2&p#%l
zKTM^8POND~mC1ynIzwU*pgrXylWJ&1M*A7bR`Jb&-!jrqjd$-lvje+`8e(Zm8SiHq
zB@;{;FcKnVL{27TQ4JlzYZ_THqn3X-!7avU0^Y@51RrpPHWQVSvc5u9pIMD)Rv{nR
zZHcLBVNxky9a(F%_0y!v$3VQexm=E?0K7m<m3e{5Zi*r|Cz=}}F^2iE#b|AAbIvHO
z)xtWSVX7f1By_Wh(n|A8961c^M$nTl@E-z}CfGSb6DG}q47Henkf9TW!P|cc$PPV`
zqE7tIoUs7QIrLb=`8&>BS%8V!$qeA1ID+FFgF)bDBI8FEZbA{JCkD?9*Fvbu6ee$j
zJwR+ul$tT*(<1?<7t~dFYC7b^8g~S&<;2X%;np~#Tm=SvE9c;iGwQ07^DNJ+$b!{9
z(EcjfkoOnKqCxLaFc9m5ot%HCAi{^$-k;|s0#(T{DA(Bm;F8y0s&^(Yx_ahv{r@^|
zAAXgT>hnXMpBX;XMcQh715Ht$S6d%p{kh)uR<6eP)EN&;!daEa#v5C$_Abh*C_fU~
zHyd2<hdHy`0OZ}9Gi=HL8VIfi)JStMtV8p0I-wvPq(X=@oQ%+~ArXIr0N%l*csR%>
z?8L9_K20zu28NykZHKeI<M7^SA3&7K1m=ox6CnV<aK^m_gPuA%0*L{JC!=r~6HGOL
zK?Y$53G!Qu_q8(|NITFYN=q-G9q2@`!_rfV;gy&erK3ZKAghLp&;T6J9074gG%w$e
z7&qt)21?NoTCo`@PG5he04@#nGF=ciYU3c_DC={TagqTBdEtlsY~hI+I=OGX1QCiE
z2S-P0<TK<{`q!Wg%VK>0{)urB4Rj1)GcutA(ATL~pkUkb6*?bzU-XF?hzy}EU>oN#
zAB|5Pf9BqkGvvr)h!{aU83KIKlx3y@ectAPXAIT*VvrhW28(~e5kblM$;cmA&|zPw
zZCl_BZrcKY6uJ&E3P3{};#g|Qo5O)cfaO!EGXlL6Fo?lKgU8TnmBXx%9JDU%^oG#G
zeS}kr9mju<;-I|0hlp9mE8qzx0nWAoY0;sVgA>BijJ#1wiZ%iqf?1n}|E9^pvjy~n
zOtLrc>zk5CI`e-L5VeB)Y7@(b#2xp65y9eO71JV3p;ZnL0*^Aqq*q6Zc*eP`wk@Wl
z#>A&o%h@XFU^bD!j6zjnFi~=*g>j5<Ww-(i0@y|(u+c}WWP^2C99uAqQljm#Ubr&(
zHBXBB_Rk8gV@QOv4kQobf&hmIApkTvezXuEL(J$9H*$YOF)V}2f(rpknLE=4-^CeD
zDV{NF0b}6+0HGrz!QOMiN`@IG!7${6aSQFDg#dsJTfjW*E90syi>Y#jYF0q%945d=
zT~nYB{0#Q2D%KdppChRn&Uk+gE2;-d?lai3hA3xX<s2ZbF%wwOjGyB$Z;tPTahspH
zTHoF|+FE}Dq%+u6<GnK&=JefX-jp+n<Zb3HQO;X+DXHLU{#3ON`GoweYZ8@pUgz_i
zd(}D-p<5^5g9`Y&dM`|~#gJZ)-fKJW=F=i7k~khOqau%rX;g$2mlIIbz?HTVTpWN(
z)qeq#T!EBoWBydiL0|#IVTS~j$mj$#3Z-DPgB^bj2#14NEGC4pqc-Pa24Z+MZDh-%
z3iqYc;~&o`;-nizQ3B)$gRlsbAV}J&XCg~=McY}s5-9;FO<Z3r7^?t14JTd?J=Bq&
z4>UmsllSQ%>1&x%+6O&9@F^L1fK{O0`UsF$6RLLO8Mo_<c{~oHB#-kv?#0ieWf*?b
zivWKMA<nI1y}uDWL$E*{Kq(0r!hsb6I7TodDX@qia7NK{X3M@7fGhx$;($3~Qv$@m
zOz0Y{5NUSf8Fxb4dEv{SSCOwU>tMN@FXzY3XrndY3QU>@1|0w;4ah=Hq}9g3FRQsx
z$5NO&)wAZDD{H|}GFBQ4Zp|0k0`h@(gSmeI>p0sx&Ulb->fAe1okOZMVmSBbROdOY
z5mQJhFKxdHMAoIOKDp$6{PU*n8eNmp3uhEcs%5e)bKs?9ybh4I?rC}haQ7JcXZ%Em
zUC$jw86~Q%)DV=xNi>e89SmiYhdF?*agyg>&mB{YGNQQHaQ(neXFPbdD^p@3Y9N0^
z_5&YyAR<`Ry)Z%O6@<&@f29@W8PQeR-*Lu6Ib)*;36(d4Y|+P|t)q#L!+72*@FM}}
z)r;m~6eqQhFcTG5J2CZ8Vr&>8VPP>-QXTl+R-hy17^Jb7`Ze?_r*7f2F*Ab!vUkMz
zusY+y|MV_<_snCnu|2%g8P_=jBLIJmUyrYp*W<sxzVyJjKJYPyXI+xy_3Gzqe67L{
zt^WA?>K%`H<p`_C#R;%Nw2D6Tk;|t&^IfZ5^Zcj$$NXyf5w;ciPe0a={HG$Xf8!?n
z2A}xtryuKzbtT*azg8P@Pdw;PZ$B<hP@H`f`A06F^vrjz1K)+kdqg_pNd|w66c<@7
z|477$pB`r@W-?AV=9T=TamH^?jw`;vskG_H9e*MIXq@r%#MDA$nq|k9**_d-JUKD7
zu<p&uuW!p8XMEyvHbtSTo}LQ7J$A^lHh|E4dlJvLY_-3yY|E!}?eXoLQT$XCKNbak
zJpN|^w%U(Bt=@lJ|9(o>p67ql+la9%pRnwRu_MN=Y(|W7{W#s=Ri18M_1#B(=bv{R
z{`yXvUd){rd&{++mcLh<9irUe>dW#rV&vzk33ufqlyCFfh%p{7=Npz~9?!Q@_Z@#u
z<LUfUlsoP#{&AxgS|;OPH>mXet(<X>u*uVVguA|K-fZ;eC-Vl}daZvOj|*<pl2<BS
z=ZyU7b%n*esAoof?~6Q+iaRbk_C;BQ|F|dNZvOL=c>`9LGY?~zg!wXxiZV);xsO-5
zMK&EVf2$>LE<cPn=Zs||4#O^7z-L8s+37Z}UdZ(}EdM1A!q)4?bQ_$p{8aAz)qMs3
z<$1I5LnCNJMJEj7&x3zn*t!pAY($K4zBy;)O&~<i`(`spI$wR)xH=K?Ix*&*ZmZMt
zop>vpu`MxGCglUfRM_anjZSCWh>J$)iw^X#z4AVs@&01!ElJnvb;Cv!wTkBSPeszW
z8i@aThhBE4|B|<QtvtS=y(6Ge9Qa;QM7__WXx!;deUSKWH<^Eqi^NB9w2YIa+bw()
z`d&A>&k%6b370|d+kXVXa@+}vZg)IRdfoB7+bg1FuQeTqWpq!@2m`-tPCM~lG!8nQ
zsGGDp!4=L(#@#Xrqb?k}lgvB4ByRPhUXWk3<h0YBj=Mn-_r}X!w+KC4RFH(@IW|Di
z?Je)c8NRGj`AmOHzbtWLRDK6%luJJ^F<Zm6sl?N9(pn~Er&;c`q9|{at!|LFmd);b
zZ`q8Bxa*tUKPTNzw>yRZTFb_~1A=<v_G{*0xAA}FQ8UgP^E_<jjc%_w-fO-t@>VyT
zH-rC>{Oz8^z<AViKVM=7q3Jr4(G{K13;vWen=N>C%VvMCReV-9$I*o(hn7rQ^Jcf1
z6pf(h#M5!Z2i?7>Xzj(pbZ@ygjXGD^=Odu0@q9%LXz%%WuMq~}pYxwvzSWI^3XQ#_
z={rG@bbK=i_qx4a;G1!y5jWvp$M+z{Jn1x|9Nv2^zl`=k*9CjMygBuGr<M3-FKl$S
zgr?40JLrFPL3{%>0uapIMx*Cj)1+~}`VQK83|$Na9rTV)^CwI{gIQOmz3{W>H|Ugp
z+}aRL0ryS2y|@fIMbYUk$5GrX!d^7)_L9)Y`MS5~NzjSs-C!K#)2P=8<Ja9F9>b2y
zva|GIXPgw{X0+^-NuHG5Rv3(@y`bF7r#;{My4ipFsW%-5!2MHX8Gvd*H;kIC@mG1#
z>vX#JQQ)AerXVEZUMG)QUq<n~7lN4ad8?K5rk}Tx7&hOllLa7BKnf*M(E57X0h0EL
zcpjrNJQq{ZS5Xi}y<dF!x6i{o{H^2RcA8%$7u~vOz?oZN0$r?VwZ?I?TQr0C`LY$2
zT_1nLCEp>Y&PdgaTc0<JM&~PFG>|7z*!a3=JO>hw8?B<Xp7}qHx=j$4d(pJfjKX5C
zZ1p~0e%oo~KP;2IB<alaZm(5#dw&9no7C%NuR31NKJo6)ew|*pW$vTEvFdLt_d<E?
z9QOnQa5>O#gD?LS1)Z;;KZkn-+(5I_>y&@ZA8u6O<z+#Asau!pEz4D%axMKX_S%dy
znyo1RtQmA;-|EE61}LIluNf35SAO2>o#}xHgaR-tvfiJQImn*pdr{bJE|*IXreV*|
zp@;jR1)?%f?vJLv{e(szh?H*7ZS=yj>GzslxbJbV)Ab<o;*SSySEMR^cj}AhWp{rH
z5;tjdlCMGZMBQ!_CLm!N`MFXKJFVx)dc9>cS$2IdjQuzq1N}e_{nTrPz`m_s9?l;^
zjOC{^`odN>52uYNUiR`H>aQXQKzR1HZ1mmB0<U?gmK>+ZX21E%nV#x4e2ew2b8oqU
zo$>N<xkKW2iMH}SM&EcFoKda_Q2Kw<->cK#Ygu=CCh^u^Ru7b|zV-;8OT=>he|dT)
zzh7j`_y7PP07*naRPpcXbXB*!<eomg<VarWjJoEft;iXtXNSG>^|s^t?Z@fGCEjtI
z^UGP^%v%m|;Eanu&Yj}eRMqd7cBni3^@}+5>kk|uDDQ%{x4F>2ee3sq-0gq29yhx8
zE+4W)(L-<K{`DU2LSJm`hW>T&>wLbP|6$6n=Wp9PBs9?$UFf^=-sPSO{3(=q@KlMh
znbG&8O1F`BizFy_obd<>*q%l6p=qFZoUvtMgu$0Vx9~g8cm$;^%i^7u=Z-UWWgDE4
z*I8%BAN_ID#*Ozq+yC|7xAcEVZux7A_neIHF#3{B(<kQz9BLbN@z0yK=9{I%zFg_2
ztvtrjdaC$MkK&t65?258V-Y7;ukFT5kGCeK?lo`fDNWV6b)@g*N1r!Up2u{rLvEJq
zg}rBMgI3|wZolYz+~B*W>U`39Q|~GtcRZs~Oc6#Gic^dMKA|I#3dMhnSB&a`*>`F{
zRI0=W=ZsJ4LVsuZ?jw$8eDC=)$CPJ-!M?5jPvuj7$WraaGy2S`K}!4Cpg*)EBmUn%
z5HYGVG4(--@$MCX)9<z+rnWPl;SI+i>_(CiW0W%m?XM(ve!&*|M{Q<gpU#+kwnffJ
zE{njjmW?2$ZVS;@UHN~k#VEWiJk`YOvO3FiwTf=M{(^^I3*MRg&|+#kI>Rii!6@`v
z9|?@XDY@ZX+r=tir-DBe=QE?Ws54@3Mu)<CVbq9HNibWLP%qyZAiyxey;rH3u?Z8Z
zpK<F)gbzmq{`!x4C@4AhoDdYWFSMY2!7>G1j8^GlNCXB_=OcgnFa@4`>@o0<jiwU!
zh13kQL#Sug4Fm&X9RBZj62pBV+|YadVkr6<OUa9Ys;bnpzZ_;jD3GA3Gt?7O^8Jy?
z2s7NI14Capul5=B=?hOm4u4U7dIf$bXH;di3U6LwGCrx!7`_fM@76KltI};%fjd5W
zW%PtH5RDw*f%kv>f4_XED5<zewGk?9LzmAo%z5TPpk@;!5i|c0GqZV?F?a$)wC%{G
ztitfdnIwHqG0d@gcc!}A@9X1^ft!8)3d5W0Hr$D1m`KKC4DgjaU_4`78x$pd>gQWq
zpAlPQK~qT(kM;;tF-#bf?wwP0u(se*nVGOgYOOGzsUCkRZQ-f)aeW-4B`_KTfhx@#
zkgj$HXP8+nM%qAiV;?A{KCaI22d*y-gRW#HmHvdFbmo0}FmU#nK7KZ{&t{n7<U>MR
zqvXk_n>V!`&e)F57}|6)lc{Fd?R?drnIq~sXM&AD0CP%5lv%Ftr@-$(Q+BpWU<Ys(
zu@9o2o9%xL=Sr=;Q^siLjGJM)8cYHP{Guxj{eKlhT3bw7W}H^e7ywXsa9c}Tcz3WX
zAQJ5;caL0Wn3<U{35<@h&aJ5h0tf)$ba7<3v=d<^Kc1N_E+dP5#;F1}EaDR?C?+4M
z=uLBN4HY6gFy6IA%79-@pGzu~IH=RWvkc@ZC76FW6tKAyDbZlBf^2QOXRz}#Fkvh5
z%=Y`QC;___G>EEC_F>S}cI=Gp_;BtgrU>SKOyT0>zGXEr4%`iP1}I~ZW+)|XDy<}z
z8%2e$P?R#S+HW$?`mo!;dEx-SawC{_FZ!73v#K+CW@(nDl%~R@873-di$`r|V1A=n
zoezJe!fevsTID<&)h$y8sdXq1oT}#c)fu$_swD{GH9%~@gdj*NFnI}PZSwx-Z$JW3
z@&=PSo!%s-oSaagg&$eiK@csC!<<SfD1S=9R2dS?5ntyZCl~<S3Wr7osk8k8GY~$(
zoGO4v(0uZxIC<nc!?OVg>*<+7D3z)Glv#f-<q_2&NT3T=nP8~_boJx?j6TOWCf*PX
z_LeG}5D+<SMfnS~Gqkey7+Ue08Jd>bER-wbYj#G32I;CCYk*NRTj!1d{Q<ieh2NA}
z0NPc6sb;G!0I$Ga)r1_tcLRH1a#Q$AnPY?Bs}F>xwq$2`I;fa&BxSEsnr7KRB0qmD
z`f!sLh@pqT+?qK4-|i=-^uCq?GZ&jL7K)@P1KW%_YS^|Ng$|=o->~r`du_L*GtiNs
zh30LoGfqUtL4<u%a3|5bZEV|iCbn(cwr%`k+s4GsOp=Lh+qP|={LiWLa_iQ;4|`SD
z?(W?WU0dI`_F4g|SeM)7F*1xSSkJsX9Sn^%DUzwmGY-@x;^wuN;%Pc@0PWb*cE;=_
zTi|OJi^V-|3&SKAHSFM3BA@^+K|@$TXB1rxbiE{ahDaTW+_W{18V@}4qI#99E?W+W
z)H#r+)(0&4-D8FkZK8E5-L|TFU;#wpS&wZZL9PLz6aEV#zyf=AWSG`SQGk2|C|Jt0
zTFlE4t~rKeXWL*)MmA7Zv*$`44~U4(-OZEptxv%K7vzZr0$UXuJXf%{FYO+1K7gcJ
zlGT6=<+uA@fHVi5$ru>foKmfFa+;zdt1rn#7&K%a283nd$EaLL%g0jis1l&AHKsf@
zO8i_s8Pa*x#HOmeq7m?0;3Zn#3<7hYx5J?-o-2=OisShBvan)V_f^$s$T4$@^&ZsV
zskK!+rgBnO2cdd%S{YP&y~GMo$=gHA=x=-JFot$ZjnrQP<mOij3=@!*eEEQ0(Wzch
zPu)lD&ZtNu*F>ni#!zQKTfi<oFk@lYH$r6gIT3+PK(&75IrQA@4Dl81%hQnhmjFCS
zNFjxdP32uVbuk+yA!R<gEzl+atXs%iwO*|zB$&;?7QP*6px<d>lz|Pv^h+AHv%E*L
zLexB#zk=nTf&sViVMqWT5S5q(&iwG}A-u7)3<L<YCvf#F+=ODZS634<!ULlrOzDrK
zo)VoE_;i37h4eI3HlwV!Igp-{b4XA+Q_xZJUC!#$x-(3AG$%9=Zly~<*=_|o(DGLw
zko3CGDz@8w0P$H$4eJQN_~8m0DVr@$HT8Q}ed@(X_ZS+~>Q*C;17?jBbV>XezpB+h
zQC?+AnHh9SQ!y}8W!IWXg{#c4%`6Y0HNlQ3Yzkq;v~&EsvNa;`FY-xOkwXuaB(PuH
z$r?wfJb5BAD;s=P#_&^{!`RXcG|iexb)B^lWC1iIMiALbT+0~X>=%#bgkY91`pVxP
z9Ch>6T@XgBB`)^LEg$m8OSiZ>By&2Txk60a&jAq=>p7nlY{TEe&prCdb6Vb1;X%SW
zPw1n?C()og9qY>$zTcqQ3jRy!WaI^?&#6A87nneo65fNK6&CL|U{XAObWd~?w4+p5
z?WQMIxZk7<j5aI)_x-MrX<!QJqwnqWHnwk&RGE7?N3^8+T$q=4;jLWVKp{jzcRr^p
zh{fv-^_hk7$w4%Sb>xS|iR6EdQ6;DVvI~Pq<YI?jsJn`3hh^;TV5**8euhRx5ejDR
zA`v8lr;+Lw!U-mrGYm3TU03p6B&7*8(#|gvkiJ01Ve4%GI5rLZm;*EKheXW<ZCHJ{
z(_|qJ!Y4l={s`NZ9yy8LAu;&K!Brl9(4&H&pmm6vq^Jp_0^fs`D_@N$Ne`i*GWlB(
z1`)pyE9cb4=73<dM<L%6tEe%C0?;s+k#8+aW!wJF;hMH+uvHA4#nc<>8C-$jlX&5i
zk+h<#y9y0}dC+#-c{mIt``z6#8gEjgx?)-Wl)H)`ZY={xW>Gx(wtE07LH)wtxB3!y
z117;07@!jfS;2C*%dVkwj$qTbyQByY2E3)m*8)Za1!bm{$~T|lJmKesX@T_M2$d-8
z7uIHgEEOYN=+YP;=KC_i2O9O9Dfzj}BKF?X{xknZ$VzjmdLWB*2u>D5D+hDJJhfFS
zLcs3r8=Oh!NJS;J*nP9@*HKY~OdzPtre{T+O^jPyIN8M#;Btv1a`pdHr7edkE!*tD
zSEjR<pWNSC^F8nJGaEZ2AoW{l-rf3DqZ}sUGNO5ffXU4zG+?@(q`3-VOhm>G!kS`Y
zs4EQEFG`L|)UX0ivw@M2s~Bfa$j7){x*P!dv$aHn3r!R@p_!%30{Ule`bFEKh23Cb
zAVB098#m}j4%jI-E2?Qc_A-V?1aH-w3Q;r*JR8O^8JIxtPx1296kJ>3k49rhATqt>
z!b(8)lw(pkLSw6>JVHp7`l6tz;B$E+{U3e+5qp9MLsiONIXe{qIIWP?7c^HWqfhn_
z?qV7_s|5C>8&cMJPm`^fb0(Jbw3J~+!EFSnNI5{#(bVV~O=Zk9gC%1`LtEXi)>RrP
z3L0ti*jRd0Ra#7l6Ond0ETFvw-Ed@NwY{LmFMvmMCbKx}S<Qftr6d2;PcTsR6m%58
zsbnW)y95~>IchK+0W8VHHxrQz6(LslqypUYjs53LR}fTJH<0mDHWtVY*%+wGsojCa
zpHmL$c|ua$#x?{h9Q4c6%Vr2fW1kpIl?a1wnmMuv8={2dtpMXjoaN3uP)Cs}z*V)W
z35LO=EYLa*Q@b5B5DJFuhAAT3B*YwGU(<7$3Ec5FX7(8Tt#1W8?|0iO{_m56tt+JL
zISnF8wQSS6FvBYCo@RPd)+W&D?SMO@Pt|eOrel2_5Ke1jp_VLmFYpIS<NOh$?@Zvf
zi76jkF;(KiP%J^vgzaJg2n1s}%w7Cq;01Yy3RioJl5A(NPQjO4`I%58=sy-f<Yik1
z4dR@S3&h`!(rW7}{$^%!RD=#-=2f8M<R~0<<dc2n3>RZl>Ic`*p;1X^c<UzXW;JV0
zsM#}+b{56c3?$tSVPiZab{nAS#(ezUK%^VNZk>QM$OB`cAUy(i_%@}^o;D8pDRmnS
ze=dHV^~)ZbM<_I!54BDwa$8{lefgPDmrFOA;(FT}19;yosi^h>Wmk`&#Xvc+X5`CA
zt*n+}$L}_cn>rg~>2e<)7zIbq>BXnirs%=n>^0UV<8<ba6e^Uw{7)8L)Q!|m1B6bS
ze`;*{%W4n}ryc5rRjO*;^<DW=G)+wJCoY5GRQ%TS6+t%xGRF6@efB#6<)}ls6cAIV
z?)U0QZh4TgPLv}y+Z|x5auYxYzG^z9#m05z*g@jJKC0KCqg_CBK#K5Fch)aaz+0sR
z4=GmJ-B>f@XMdrD8Xz-1Gl42P02>-;kb*$t7C4kYQC{An#$^|2TZhBB&W?ZEn_p#i
zsP%jJRti0w%tR#fXLp`}A$^Mtt1ut0=H>H{&YcGJm)CLq>vQ#4F!|YcZCPGJ-96~I
z6SI+QRVJ=v5sRmWUm~<ArW3$Vz^yVWW^;jH#i@VzZ51G0m1e(E-^XY`$a#!#irpYI
z*E2=_?p!9vp9@RSLTk>auw75J0}R~#X6Z`#zBkjyIfopbgaVfUQ@fqwZ}dK%y{?H4
zyZVacB%xoBpB$iAJ?0l<JIZAbUKTm7ZAxfy`&3tPMZCVNa@@p@;%d+d38HVmctm@8
zAWuLbSW76lt8!V1O5!*J%%@lcA;`=?4k``=sbqR0MtXFWG<dZ5C@bLKl7Lf~Vx)v!
z!{i^HXRx0Mb!pH5SoD5rFpUObe>EQb?dg2x?PoKeVPfvk2c;5JRm=Mg2szat6*1>8
zl89sa1E_W!TM!#Mie8u(*Hzr;!;@$j92#K5)hlX-Z>faF7na;<D552#%ApG}P)Cbw
zb*n?k5nxsZrPG!uyL`FSI`?m-7nV{R(W~7pyFViOYrPf$l+=d-l`JZ;`k(1$4%i=S
zwC!e$@JGG8eWoe<%MMR;^WFT4vhanYKo+Mw2YRoQBEBkD6v1x$U=2E=D(hJ8`0w47
z{Mu+_sCy&dE0Lu>PIFRs(|6@6A+dX24qskX+{nT23X+=XTH-y7p0Hh5@Rw?-C$4of
zp00@QXzI#<ll@eIZN3vA9cMIqA&UcqRTMue+O5G8{*v#>^zK}-w?G4#6jH=o4z<Mw
zDEetI!Pc3hM^3_wnLH*Yw1HfHOYz+h%Nc|!p*C6gLy?F?Uo4(|;+#KDnGR0g7K;+;
zg&;X1pFQn?WpB?81b<_y73j<|MR`(Yq8<c(Xn=MADZ!E)wNipK=dm5UvQQ3K4xN=$
zquy(HyK6ECgnr8;lnT)?PjSLhmL6^%K}#^KNNbA4r@;jeLcU)F$S0w{Dddpf8r5_<
z4J$~ni9AY1WJh@H!r$xpe^b|Zr9tcHWSm$uBhF(R4ldt7^1VicY%C2fjK}kJ&YSs{
zOAPw~qCjt{k^PdCsI|uIUadLtQU>g@S*)MuGBLCw%bqhsuReTI5D&AxsVo9E)s*2e
zZUq(Dl>NXo;fSum@HN8lUwmAKAY?$`IKpVnmc_67!}U_h#hv)xi3VOyxQi<7%C&VD
z^eq?xGydG-CRRolYuIg<rWC4o{IhBGi-7=u&kpy^Dr^b0OiA)52O{avu+Dt5*!Dsi
zS1=tIkgi-@>Fm2>*eF`+#o!2@*%7Ft_(x<Kn5Dg~8JmlH@n&M8F`MZpk;E><08&K;
z5^$xD8)5e#qD(k^K$I3SO_@MM#+#^>KinUZ?1xp7@wijkpnlv2RsIB)D-0EM3i?_=
zqN08mq=o9yhL}SoB2np{Lc@cmN*x3dmv5Fg%>j{`ytxBEo<+xHcGTC4&D&KW3)U_R
z2Xdx*reX?W<^rLzY^PcpBAN<e23EeLMZf}3t5Wxk-DBrkO73-h>DE!qi&a_Jde}0?
zJ}blSpBFbTl~*@l#1BB%uf4WC@%RtGrrWK8Z$5*6Cklf%j$HbEIIrRLqDxoX+>f6P
z!!dq5XZPiHL$Kl8Ktozb$sB$TvL1r(m)(clCpY5N=OsMytj8f=U+p$^>DW9B!Hben
zJ;3w5vw8~er0V5Kv#?JWsEUw7^sxJm6VO#eZ!e%wty4>Sl5Vl=)IVE`|MCG4Y`LcP
z&8h8vh2-6G+gr?({=WLIBRpKn@|X|?Bo(UW+mAM<#a^JMo~CxV9Ht_|v33l61N?CY
zS~T*yhBfzyV3Ikdqnudd?&ML9c3oE^^@ne0v4+JcrMu#F0N-!Jj;{lew_u#4_K#f`
z?!n><whwKa`ji*$!V|%(*1do_{UUT%p8UtQ{BVE`dHk1tp6|;g$y7IC^KXzABEsRi
z<obwVe)&?PoB=5`a^jt?lXWM~&$bn(q2a<2LXp63j;yyv;2ni!t(GP1Dn^SXZaH<Y
zugK}`-T3X@+qhufD5|GJe4DpBr^uz<_VEs0Hyd1EFP)}C-?om<K6HSKYv*p-+5GEW
zlETjNqPXCF)#mu(l!L+I@7mWN5mKk8oc4JXJ?N_U@@>H2{LkUm<b|@0>WOieDqsKQ
zTwVLXJ3lw^#E-w&o7X+ehY$W2|2k&<(CZG>{&ZYYIb8F^4`n-k99i17`DW~R8d$Dh
zf(iIRLfz5tXl~sCW@7>USjg7783oUFto}fD!8>MX=t_Ipf@xG|K`;vJE6<In!vdmS
z$gd<B?>BCFluB4J+gon;DR@Q^jyzNSyk`Tmu0Ik1b+gNtZa%RE^R`FV!`Sl_Knv<C
zP&)8EWu5jbem%QD{BC`n_4~o~kqwGIz4~3FUA--!f}AU~!N-7Yj83Kvr3E;jSV$M~
zjnhZ&TtfzXFr_kN0P9qQ$VrT)L+VeH_b>0f4&dMq<xCHkx4Ah^^RH3)QTBBKdczTx
z_b+C?CMdTy>qFomyHvVgc)xrzh8=l&G#$3*N^^jtIDwBqTJYn_dQ9)_R<YNE|7AZ^
zou2v-+H2b%D+9Iw&5%8p?G*gmwL#JVE{QX{NBiTLMdSoDT1#!csU07aPqWrIUwu6;
zNjK{JYaRw0|I35!x~((QzhxZT%3k@b@`qyfEAu`Vu9y}n7D%_H!*VYVN5|$jS2f7h
z9x>>PO-F8rY*75&8H07>hl5LQgAK%`%@VQdK9dZf+kitJhts*|b^^@yyzRw0+)H(S
zuR6Mv!Qdz7tJ%#F)cZAc>B)<Mu~3aQt(P#Fp|G*+OqDSP^IBJO@e!4=me9F1$&ysH
zEf~7oLF$Js&MQW+D8ou`Q;+8XPEZZRcv*HNe?v~>I7A6q&#M)~6e)%|BQ~eJGS?nv
zz91S@azOF#>Pm4EwakO?2AV?_5^@uC)t}7sJL8ZrQn1lThzvHanXl_eNhMVo?@t(q
zmkn=!8R10Iq9q4CJ2xuEhL{l*b}(QUn=1s=bj`VWKjxV@EZ8_6e+q}W*5ByY<XeM(
zaL_noHILKd+Jd(TUlr7IAf-KX)v5TD8qd^9Dj?ih{Po<K$E<6^I@7>yNFQi^@UEGb
z)6EILVTy1NUzgz!k<hBRZsQK>fevFO7d7WtN8r#s>*Q*|QHQ2%onnZbMFjg)nkiWw
z+X%z_M7MPY%B_h}eR5(T9c%cSv|WTivFm$xpXvs25IdE_PYz<qg-KU&k_~xFVS~zS
z6)=DcT<^}g<HipEw8FJtTkol(x<eSlLPNSzTv<#O1`U@14FPtXgcL~ZRKiGl*0ZLf
z5WvE}6cTb5jJ$74H_<2gPqR+7wqK8W$-=FkHde--Ud%(AUwvvMpT=Tif!R=lB@{SH
zJSlMZ$2%r{y*&lrVx!883{^y~yqwu91keib8yrv}5&t@H8xjMaEWj?H5eLtfDq)N}
z!eB7-dXw0Vi5H6D29D~v=~X+lRU<$+h-DuZ;Ir_BV=7TOr`7iIk8zY%zRr-Z%AI;)
zHIAY+An=U$*GW{`qapcM(ewQ}lak!xuF{HI+}YSnIK?f-6{;7?p9WLEAi9x(39tw+
zrQeQ1{;S;Q7&xn)ktDoWp(C#RckGd+*HowfTbgP`8hklpR*c%{+By?vSh-}V+DF-;
zUG2NTGKy(ee3dadk2VcHlmLr)0L;M3ywlK5Uge0IH0g8wPd=4#pkdhUr1ntBS;AK~
z`sz}o(w7qFzB4RmRd|XKKRNYZ5digzqNy-eGP5B_IIt<UV^AZ;1;qIQSvI47S!RoG
zi$|L|?J#BiJss!<E^-mK0?P3caMhQgCCt20Dko(Rw~CbpSFje5^ok_cE*eZCrCAc$
zwqH6xV}iE7rWYtLV|dP{$jNtFwTV1DoW(v+tJQJFz7zXCiNHi26V6m86QCyl!*NtB
z>SNqP4SEGXS7*ag?a(&d@_OkrT>e`bg9%X<+v7Isr=pG#2MIS8*=KkjuWF%NjM2d!
zb1{`d{cj?&eFHz&m70faDmH*NfTftEUs^?$r4}1Agg`ZQ@(XuLYwF(j>ze>eJn~S4
z1WcM$2u@8H>P$Tx7b>yO93cN--5};&A~;`(Lo-AT%qhlo)Ifw+)GIwDcL-Id!<Gux
z8Hqh(FjIv57{#2BS5Qlnbqj}+|E7_pIRVxBEzqHu%rltMzQxV)FSCZRQ0I_f3R_%?
z*69wmZSSD)p>ztd46*mhO}q`}{tq=RTeIeD!$0FFJepH_WRr3zIRFbCHD3U(1(wEq
zRU()u44Kq>kat~N*YvPc658xTw+Wo5d8YbI{Sa*`^%UAirFwXF<ZR%51NLlCZ)(Jt
z4L#SS_^`a^ODVG<Oobs2i?JBoIb8t|8H8@gZc?16IF|WMV$3aQ!T7GEOP<+SP%Ov{
zFlwGl&REZ(+f;eV901}91B{BXC`8^7j+X)1DBGL2WZ<BICG>QtCd1L;K)8)r1|1Mw
zp->6w4B<LSOtp^IhTB*G^pbZ6cgVlohS;~A-8FF#fl8~KT*4WYkXXd}SZR<OP0i6O
z>VQHO6)8wYp`im#;)G$3<r)rT=EVF>pBZ;gxc9Q1ivi&<4X8mqk?!zHpwDRZIdvLJ
z(f`FN$P$_h<^!ECHQ`XrR0H*pNvajT%Ri*61cXR|a?ibZS2{&eMj_rkD@`bpOkiEO
zvj#*lBYQ8>f#*_9W~;J6V=vgDM+#vscf<`IP0@cK*Q1Bkq6ZT|X$v$rDI+XpFg9U2
z!=7fem5;_v0PqqUgx&Lc6Pzk%eUO?^nPB>1wiCDyP-KM0#De`eI}w@oT$E%65kP#z
z^VLnGEg%0AqC23ahF>PY0je)!m3P*V`h-Zf1FG0<D_IZ_7YN-q#i3*wDDQ)Uwd=DR
z1iFxRDPPETY5i7LvJ7YtLC_{#QNikgmd$QQZ$Zhz27s=CB$ulVzdM5E^*yS26i@?U
zAzbO>DJ6t$Ac0)NmEg06VxjN{Z-t_Ef~EG%rK#i5&?*{z#`I#B_+VM6R)Jxzykof8
zx}QWwbFZ@uCtOCWh2h71BMb%b>mxE&Q;b)~2hjD<3jdu5h|DoNh%KNYg@r^3D)MPk
zP(f3v19agk<R44j#pi!J)EBdyoiM6^5!a0Y?a5=%M)-g-odEx<B3y$ZOF<TXRN#FO
zbHik!`4X2D4>)kZI>J8e|3~DfSNi6TljbJ+r%mb1^QlxG3nUh3)AsZJS0kx-6J%s(
zZHFd@+@sVb+=*a8TPuo4A(^#I;W#%g*$A~<2;k6AMB_DnlwqIu>-F&AMe%muL@#$F
zk=qFdyj?IP`aaj5C=8ti@vre5CDB2+v-1eWVgfCIgQ=Vggt71<FrW)8{4^T+>94>)
z@Hmw*d3BXZd3BdD>)73mTWe<Rk`*J0FS!%agdWmk|Bs{h@7Kxa?T=?MaA8PC$EK~v
zAwU{18qA2=%2-yUGYh9J^vLfvqtdmztkt+Ojh22fE+@)wv@U8pw#+|?;ad`1Cw8#E
z_9%t%wR0${gwA(gnz%j;l#qwLkiT!9MP@WI+#E=Y;!pdVX|8=$9N1=GYg7q#juPNB
z!T$jl%62EA#n8xdLPix%%W}K?MO?!BBm~qAZ;Os{5`1gWBh2pY;I@iTQIvp!{JfsM
z5%rrWn~O&ny&#Ti1#7I9IZ7KkK#P;_Amhr9D^LD-uw$fK09m=C6{Yo&B6oLb3M1gg
zx{#rMEVS6UbnUg2fHSg&m&MK@;XRe1L}_hVJPacF0n4z0PfMpD;yi{|+ya{D6cFix
zGFi{D2bA0TvmE%^QPyr3DJH`aToXk)4&*dUQ)X<XLk>YY2fpj);Umg2vn3LeH1{oI
z;qR%Z&4`(J%_M-4vREreRb)Y_QQnD!c}SWJpjO-{+^)!58j`N(@F4Xg3}C_2mWO53
zG6~!K(ZM^C5*1P{h^a*dFO(|j1(eECm;RA3v0+EWmO#AaM$D|3oW;+2gEHAcSs7rI
zD9@Fw%s`P1Ix~z~`>DP$KC?qaMG|pQ$i#L2t;vpRc;rLBx)h;w#c9&tU${%h=?1b%
zXB#wSG#WE%e}i^4v+ys{3I0-jOEQ=rt_l(OiUw>T1Fp%Nd*DT6vPo|h;LpHX6g)__
z*#_PvqVmkIYnHjw2i<%x=f^tbdHl<?UASZEl5>CFWe9Tp`3H;iynXL)F$iyzj|hD)
zZzc9)5W8A>4f^F4t>;amgKzAY+DV1`p1&&4EgTi=;}mZf=sWSgf%oL}{`9MeL?H2!
zQe^XT8GrN|hjWg${K$<*xzKIIvGCh5soR)131_h{qP9P6yDPcnA^k9-Vw6?*yUKJ7
zmd`$Y-_Le$9@o##9W=Jpg**s$`FhzlN3pA1Ro(2XhVQzh8=Iu9)IPhUg+p<xR6bA}
z^lFmyYbtZU^uM~+YW#DTgyaclH+4H0@-4sMnxhPLYA~8qC-eZCI2P;b-A-?QZnubC
zzgQHMW%-nIcgyz%)I(I{*pzg!b~_D&@R(_#Y^%yF<2yod!kj5G_h2YnVFP`z_;h*Y
zjd{hU992=yJ`#!2q*@K<Sk707CdGAUCLC+yigzI8k=R|8@g^k4HhU!#K^X-QxF{UA
zoQD35^$9C9x9|hRK$sl)K_2{xLuVlV0m1Ivfk&F`1WA{xO=qg)bSCCRCTddc|ByOp
zuSc;D4>>R657hGX7GKlP^tiYk-io|=et+$I=58519FF?7(F~Hl`_|pvr#i$RvVD@b
z@`)QY%7}ef{v}AaFw5P2PV}vX>sI5UoA%Gwe+RAn($@ogj~l2~5X@F}wd(wbh*<kS
zM8y9u(#FSPNu{J5+o%rBpQB$T@>+FXl;3!D&OZ#LGH5ujVH)uxG9{fj^KT>fb0qJD
z8*WeqjiejhyJ1cGFbv<5!Ss2q$?O?!0Py+^_+jo0FQR`(^m`JJ`LELUS;C?36{qi)
zat2mP;nDjzDK`$?j2}B;h3zv=1mm4S%y)1+dNr#&3<*B+h80cdh@n83&C#{>dP=};
z$3zupgKgR`Q##F2?M;{7Up1nNDzz-bwuw<*$oq_UAcu60#P1iUh8WeIMibeB19Ew7
z<8XU5I$P!g356W+8ns{lt_NAnJ~~lek#8EVMHJYt;7io>H2a^jdj~?^x!%<hLiSKk
za>Dr4WnV`C=P*qL%QFP{YrD30G6pyZ%|s4KEqubfIbU-n6y|s&k$|8)cyE$ehfX@<
z90G!u5WVN^bGk!5?+c)OHVfwA0eeJH!N=VX0a#uc&)i0o*dDiJoBGQFh}_ft8^eO1
zR@3RZRB(YqHB>Q4_)H(H)9Io446sNy^A+F28<^vNHDfdSn&+LnK3+9u@IvcsCerKu
zxEX}T(af+?f2f5!%?wA1Zd~7HT_FPF`D5D!!q9G?jVz%aFSzm`-i6ii)^U(DOx#Nj
zTuZlJPHwEO;iXqU?6Tq?Wr$Y<_ZfGI7`;_wlm9nrxDTu#oBUt#g*5$}Frl8*r;{Eo
zIGLyn15B>_MZJN$%o_N=uae8l@c@47&ikBcJMaGB%lImZTuMn^$kcO-Pa*T^))J<r
zF18jDaufEPR49MB#1gHOq}LxYao^EDdGi$o*nt>O$hUxyIwZ~AM9aiL26|ibgF$!d
zzMtCaTM2va>6W?pP=-E`A@Taz=#EbxPTu<;CHdZ(8@?YkJoua89F5zCtO39|hNdm@
zK;MUk4#NUWz6LPz@p-|9Ue3NBcX!PGi9@x|t{;vbF<Y@9H#m5NgEjfQ^Nsh~(Yy@!
z0{Ge91@ZoxJBJKX@yo}CiR&UWte2d=?e=Fn;Q1JFfcLxCEl&toKT|IM0v?E!2j(iD
z8r*3;hh5A@%=n^ZDU*3UG=M+$KdeAPq}cPNu3aseh|$#JoR&6+SIW39pf4%IoEDiK
zvJ(NRW`5{M3_c-|{U>p|c|T0=8{Ght#}`;%?62+gX{q-Jaz}}1Y$~?A^S1L{#qe^m
zpxjZX2Ok!ejYNGvA65_IaQZZF!^w+HAp>a%zuRgcPaEa+w0j?>eL!Kejj+#~%xMbP
z7gm#$ka3Ez@yWkGUoWMn&WEc;r1P8*?1HGz@u7d}F&GvQqjX~EudV1BT|5p2SA&8G
z_7OYi11$<Q+VI_ZR^Nni9Q<$0P3F06bFT1hcPcLME`GKtw_0#dsLLj22@i+7rTF2o
zb7%wjuuY*f%<$!>QUD5nk5Sp@$21}6oV!1eX|<TeB_C`A)|;I1rM1zjF*Z|$eZjhy
z^su7a-?t%h>x2s6zs-2h3D{Hnht^HSlgocE|C5KR2%pq=L+F4-I%&yOT6Z;AFG;A+
zkgs4U7C5cOVA(NZL269IX3Ey-VZVLp!>9YuD;4Z4njYj+u?GaYx~9DVB`)5^FC!k!
zU}8<WfyT%hu6(T;koGLax1MkW?LVB%xzHuIFXQL8FWLE&;wlCUmr7?b{CdB9IHB}A
zed|7GjMc|;(h(`(FQVM(ffnX#b(GuT(veG3HxyiFZ`Kd=a+QTE=)n^Ho<!^+LF^-J
zvk0ZB02!IaH~^$3%(gJp?qmG)<65ta5(rVvUSPPUao`vN(vzQ=xr%^Gq!x4hS*sU9
zfNMAio^1eV$_3M#zO_EkCBG)%J^L_2ok=&Fok{YAkgiblsA>{sl5QdL*&#a9<~X47
z(fJ<Pw9FSs?elyjeydL?E*j0?L)QR2fhN!_rjMb94PgB8twY2o*y3iyXACEEkV@9s
zXHZ10y3hmrYiBst;1}xaIf+1+QZg_yi$@{sHJ{eh2!spNEmY;*>CfI!Hs4-HK{353
zeV0s`Q4N@re;OQ_8|2A)_d*bdZvq5QAbvM(7^F^cN0Rt;01w6OSA`0UBz=a+?-(=v
zqJRV5d_b@`ME#|n;7$=MR)SSp8@AZH?}Ql3GD{-mUJC+Ih*)L+*yuy^E8Ct`K3W2V
zraQdB!yM?7Wm(`anY->Jk+BG0#ovu|C__<#nh-hHYcoo(u!LXf_Ip|i(`t4g9$K@;
zM-af$t~2!$FS;Ayui+{t>}F>9WjU8zmXSg-Z~$%N85FoCu#qy3(ln&TKcyqFZG(cg
zf<90mn(&3B;Gvxc)v;c31p&nzTU328v?Zeojc;3j)YFTaK*BHvsG~U*YzFXX4vg}a
zBppkr4ti77!*h!~1ZEgSnk6Euj5AB|ttONqP&wXQD1Lt@2Fp7zM+z>NUI<M;BWDkJ
z{{kp$y)=Y5EnlRr^}Rv0p704vud~MBa}jdoz5flyeIbj^0$(UO8Dxnt2bnF99;h_d
z=7}vstMJe_EZi!CFZXcbEtK4s!*$d^A{&T94GHNiK_2>BsVwNc3PeVt&^xkUMe*C%
zd7lU0fFl4UG@Y90wFx*3ofT*HRR=WT1_Tg$;(CCy$TnAkueC}hS?1@4S60In_kLn4
z3%Si2oFFBl^pwX4W^=7lz@&H#uGoP{QqHDATdAHPB&F@G4s^>Re8^NLA@do@`dq}m
z<EvmeA!y&c`1319HIpofjIMoUOq5CkLpty2gzBO;Ue$3OyAJ=9N1`P(9&TSA!~={&
z8>(n5ZE-(ZbTt}c1l*Fvqh}L%euNE6!g{UZcq;1`d9}gv{%|lBM&u-3VDt!GAzoku
zPl209^S`s*_k!c-7W^OZ%yF+xZbDL-tP-7OXhy+9okfMMGQ5_;YqTOdn8Ax7>MVqw
z?HEW^U^(zv2ym3QQJXo;PSp!W!9-iAGB?rG8-~h@&g*qqW%0E3beilD=}uUJ`+k7S
z8_(;#k6h#?r1jLK^SbO4LH4)vVUT_17aa0sK<)e~pQ7DOq}v0>;&HMmBt>#mzYIqi
z{uIa4lIQvEGZgCqV{O{f1fY#gf4B=5D!lsOakC%;CRC9B3U^RaJfvv-r0r{0=(i?i
z8Ma4d?{oPtHrte-@PhV$Kc9cdM|z0<xcEtl-qq8fWCyeJHLNm!n=qR`@dL<XYJ-mx
zQ3-m`*y7F90J!8LU<^PZN#`Pto#<3r{ZWw7w;}o~WfF{W&5tFB*+24wfnbQzq!DI3
zQRGg5N?9onGzA<<AS0p5BoS>S2@RUt5EGDRXs~IUFA@r?8cqUyn8$;{<X$9ZT|}qi
zs~4F~P<h49bQ+Xr;U~E;g;-;{o#;tC7huvp!7dek%K%@~%UFnnXK~PxO>3anO`CvT
zNG#tU@SMgmya9$F{DG|oh>>Yf)C&hpK+-P>k@xjfh+=yfuT0+EGFD|>VinV>REQ|r
zQY4hSzYw9D(B?j^#F|DLc|HE)b$wT!O`RM3<qN9|>%UysISzvsec$Y=RQ6OD1Z#?j
zbQoz0B1uUqVqku{f)cV~C_gyawRS40^n-dTXc*-WEuKc=9$-<4C*NwK_C-euKwzw$
z&FA%d&FP2$$vqMLP+B-&bDLF@8MRo}bB79|2a~SUh1&^fW)b82vN?oY`mhTjaeZ0D
zj98p6YPEl_r~>NS%ES(*e3no&Wrzzf3A^??M|{!OgBT5^sy)y1>;i|}Ey=9Nz9aiI
z2mQ9sUdTAfCf#gyrTn_P;&E*T#KG$qHNSw3MDQX2Ux98ixlQvLM^|H%W+yu4oQD0q
zqq>X7oIP~=`kLe+J$^jWBXj=4fUbsN`>t`miIWYc;EB0oQ$Kf^*u4;|=q0Wk@wS=<
zx|Ah`bO7L5L$?-~=`8TelqcvMsGrnbpGb7oPa23UOqXdhw=8AuHxIM~j2zgpI#P!p
zxaxN!w(mD6QY7-!D=KJ8=8xU!*DF$>N{$Q9l3N-nj7uhi>eYELH{1HC{0SMfzxAKB
z^Os>SvlF<)wy1sAii7^s01hgx5&uu${!R5DwSOJ0sOnH0N)xcj;fvarzrou~Z!x}o
zDgY&K*E@=afY{cI`HM9dpg_^~2lH1-#Uq951Fmvwc8E^lmRa5Aic`v8`~x$t0Y);t
z3{2+;UW`L!4g+H6dls<=(8P73ztk`gJL@FQ|9o>I#-y&qpFu6x6BFZf9{TEVVB6Ex
zZ2!Fu*Ev=rGVzc%c&)XtWuqiJYgB-5OYCrbp!&o0fpp9agdwU>1BCI`DKhROIf0v4
zHE_tB_th7&m)gvxYp_g>6QGZnl?qRMC{S&k+r>6I4tJ`2m%8inUBU@tGS3;5U$&7k
zrHZ0kcsxZoML^5E+pB<p|MmCpRw3=|U^8FN-?K-fvB7Mm@z_}g$38l42{&_O+~vE?
z`;7vFCZ{J~o3&^y0OXWVY16RbdUG=8h3(bd{n8R-_R>d3LMQU(iOwHP1-kw9cm;)$
zBR&M~X4004%&SlSnm=$vnlkB&_h|K2;?p7aiT;ue9;rvoOjG}1ho0t+jQpkw7BU?X
zD=k59ZX5v`#se$038Zdj%KQuT4<z~f^%DuJ@^SDJ-V>{o5g<0Ns8+CVbIScHQ@L0j
zC@aZ9Rmrp*>OLacWGrg$j}V~`*6UFPBGL5g0f9O)m*${s-fM8K9?YD?Actn7gh8pa
zzJSH<w_>rjBF;+@27s#1mYt!N{}dgdNLLH@p)^4FyE3@Kn7Iit_YQJVxW9)`_65{~
zu67%5L0R~72f$hG2`riY;|^M8DLaf*wgqzs2BtfwjNrACWT&8>dBgGnW`F!svG#!P
zD22cv%T`fr-saKKV>{g21M5?VsZH}+081ar$AK<z2OGV5%*%=*%Gb$lx2qZkrQSg1
zbb)WTF?Vwo8)6q-KUZN;7{aIxvaRIfBrrjIrbm|*(4;O&+LV&Ti!>)mQAbT?Gwdcg
zudIF}D5-*O%R(+E1KkQrJP9VwmNgewlgLelzezYphB1^eCaCmIst|*!(7Ed?v>>KM
z=iZ-5lIWyg$|0E(A-DsLa9bWKIs_f-o+z1UhJ;=KRT>n#k+o>w)Xy8~lvel*mSh^7
z4&=`YnBfY<8s7b+Ot6k(A+}(us{=dxtzD4`O4D`(9u$&ecv4z<jhHUmR<7m!tV?2b
z_M^k=IR~8Xs?^HrC{?3!$-R?AtT*>dM7AJ(MB&EdaSGd5a*lNp>322l;5(N0Fp{1s
z0e&g|=%^5|CDV<IV(z^#<T~@S0oQ{5&SlO8fG!mUpL6wj3f<G=wIlOah4$@G$riF@
zc~#-_;*$Rg@vAl6AtJQAOVM7gn?w-ly7#n05VWbjNgK{KTlc6)q%wRMQm=2^Q$7KT
z$O2Ea^G>kHZZN`JluteZkrc}~1yb2dxRGloun_-;3MlS=_#?G3oC3~y4k0%uio-S>
zVCV|LYRIZM%|Q`|Is6e?Ui*2Kx|e4J`zmv2no^R`YIW|Zx3kP_$-OFxW@@a&d()hd
zvoJWur0Uq2y|y3R>Gz~E53#r0B?3Dn0Y($KNQUh3yO5ok<k4)Um(x@>3Ij9W`aczQ
zENe)eZbb#vqu-WS;kX5jDO)zr%0r+^0C7z*%ci?gI+k_CM9FcOpu&lltTMW%DD<#K
zqvUGFT`#4d%_w?U2nidlVa{y3hPDxvLh+OW^%$7!cyz(fbKE1U1W>dQmHeqMtGo4m
zig;4vFy|*biX;)c2@Uk55&XIT_%4Y?TPeA!>pfH~^ih^*#YVP|Ss2RbN)!<R>9dUR
zuqNt8?vQxERj!J^S~16M2XHE$-qwK`=M(7g(GcnD;7%9hJBa7(%piNL@J($H`*CTc
zH^{?kSoS5b`jT0&txSi1!QvrvU07jTg)#Dd9-7*(y8A|7JE8MDIpvd`1-scSMO%P7
zj?DJ40Sh0^=S4-8SI$>xBj>{aROT7CW6NEg@JI4epDkS%b5VsBC#8r9t=yE2z;i2F
z189V{KK14JKkAxL<Di!Z8h*<OCi+dQG|S+O{*29*$6yX_+tDUE6tO=ea*u#i35M0v
zCv%**RD=Go(s9FThrnIq^|Aa@n5CWcTGufKE)mWZHw}`g9lse3K#v|!QT3k3eZfVG
zB<)sKU4NaLvH2&66;wqe0a1eX!iU^^TFWTEv9C+R*xix{p_*T3^I2N<Uv<GkOfJiy
zY^E|L$Q&FtCCXfaI`<NBEW2rrv}8Y{u(@=j-?SL8n6hUm`Yf3Luj9E`%p*gJ)O;^Z
zw+^+tTj9Auc&KuT)D&$%UBrMKMjPTOlQ3+lQ}oeNibS7gfN(&2eN6j?cvEdoKx}EJ
zw%`yapRgShMvfDf3-i8L3ae?koMsw!+OXxF=0v^qh|s(4ZncsbsLFZxwIIb7@VSQO
za=)ox<%I=<CgHJU?4JUwmSO9QaH>aFHLW7)Tz#J#!UK97x%Oy4%Y1?KI~xN67P`l!
zqhV^&*5d5EZkbjNmWsb}9*J%<_0E<R^|SnFOFGTqa!I@H6q06TVtzu!kUQ^5OVxLE
z_LWRb*2}6pcG+cY&}zHMLR+f+bu#`bOz1XcxYD6g`w`<EeBgrb!T+uzr*QwyS?|I@
zxTQyf<<S6+*J0Vu%1Bf5+02DJ(zHyl8WxLr<abm&oJbjx>ex=xq=BBjFoi*v5fxnB
zlG^-(ZFgHfvqQl0oMw&M8)-{Ih-FB6>1S{vAp#vL^y@ZJb!=emK}E??>u^N<MzG*n
z+oerzM4pMrde!GRY;kc6PYURgUJ`3eSBM0izOn#Q?Oew<v}m}sp_yPuZE>izqBFSD
z++d*MV^rp^h3mAOXWp6K71`!c`XeQ?4cG@{Xwj5$s1#nzM|MOC@OKFr#UMrfc>~z<
z5ByTLvTSmBgcOl1?)Q30nyjL7g5jKaB#|u9jMqs6N%RpNJ^#50s~Rr4SKUY>h%8$I
z0MIL$_ns7t5{*JI0M`IaM}CFlv0{7U5}7W+A!NZNQOKEfh0hV0CS8U99I$^kX#6a<
zI?rEqPHL|x20rVm`X#kXJq0genXA-%N+zSC%JYln$J)kfRG4Wl@Zxse6=g4%$5?nC
zJHVdwJ<<>aBTs{Y)Ti)trb}myEsy_t0$`qS2;#id22U`8GaBJ)<gjaZ$?8cKkVem4
z?Fwd*#g(p;6E2CVr<Qw49URG|w4MX0ho^+@K8oWyDU^L*aGz0ijht*+sMhuSo~!Dp
z5T>KNnH!ONyVjZDx8;;hDk3*wr8B{hZ)v36RPa=Oc~*GogoShVlSuJ+lSZC0DIf~9
zNv+G+sLADscr=W<kt<&O;&rXb!HxhWm#^*y&;U7CAYg-6kMHhq1$7A-IfdUNEaGHr
zoR1`WY@tX(C6VJ3Ps9xw_9N-c5%+*E<eE2&5Clb$BR~ogaH?B?9}r#Dww?o%i>b<n
zE|pKDwsfU>f>#K`Wg=a3hT~(b1t66`&CE}o{3Tn8>MyR!D|Lj7e#8uA{W{{C-d7FU
z8}axTg0(|A8<pab8I0WOWK@>z*lxO1Kd-=(og`ygj9tqqXf<JVpl^&Z2zfL{TmG=T
zcq)c#G{W>BrG==LvS_gBKvwI?L63Y8vW>OQEZE0JMq-Sn%DQxtaQXIO7GO<1D6oc;
z^cKsE*-po@9a@}hKGn->9y$Ytj5O)AAqQE_q!u++Q{`B)l6ne^gnMa$E2$O>HIx$j
zPw7-5oL0yd@XyD%Da}M-)QSIu=lNhWMRLSY#z#-#X^W&c^!iSH*hWvX3vtQ<!L8t5
zrpXX|34-Fb@oBg5XQi|Y0`g_H_}lXyAqSS0e89BiK@nGU)`^#W4keaAatH5>Gkaa&
zX0F;zeT<nSFVU47Ewl9rVu!c*OUXY>A1oX7Skel3xEY97D`CDv2nJy2^kF3`EEK$B
zCg3SePeZ23uqTHCq})d`horVgxiAj!qwY-fwf++*NgMq%Blwa4Nbh>W;|JjdHo^La
z<2fQqr6{5C`$DNr;nco(WDQBW<Yq`JO}grMz#-uSBTo}`c6&UZa1(gjwMv^*Q_YFv
z0?otBbR8V1q;jHoWDRU<k$yf%hW;7t4kHcciE2h{2v7(#vFGEdeJd!3rrCvzZ#Mr^
zs0`8H4#pc-t>n1@7y{7-BTbT8q4#HUnQVSU6pe`xrzMQ>^&k+Ha0sPrd?_zB4OPTx
z77t~FD%v7>d~LO<o(mCWNSArHGX>f9cHVOdSmLSc@AbWjM;Dwh1nGaeCm4z`d6m%t
z;I>u~ZG71U6H1a4&|-JRY2FY0)9^>q>i$56;>Wmhs{2L<n0B1|AE2B;m)ltbj@P`k
zy%JfH;(b{UlW)FTPp;u<3T&_hWNe;ZCe@cUi(z%*r~4z3Twg@jc8!~ZkGn2>fmht2
zL(WIVk829Q_-Xc>@qjkl9-)~ijffYiJas@^PXfXt(B>_%iTOWo9e$^Ez^mmS{?hm}
zAq36DYZHkDc>akY^1KW}_F8Ouz3s#m&LQIM@M#}mRZdb)J+|b3{c#R92)KXw<bS*0
zS5W9>kg!O>H?d#oaeZ1I`66z>$E{dk6~-j;#rZ^_JAf{G-z9W3Oc|QVZFV$#9{t3+
zCt7%&!5JQz`$Vpk3~qZLo*!LL(@0lN*VZIL)FFEUXyDPVxsM;jBKn046n`O~&1ejK
z-KzGrPHrsEL<qv7007KsY^Gf@mZf5m12uJmbcja6tUOgYysBeT>o2s#+Nj97zXjZ1
zl2TMEJe|1px|`fUdE41t^;<R}Z;yW?f&E!t0#m^Y>&n_IS)kOMY7CQ2t6;BCY?2bK
zlpCuAu#*gu&L*p%)~k*0hf6+n3p>2u_KDc5RKs!FOtqS@l0A1TwC1~>D1U>%j};w$
zI1)?Ff+7gMPm&X^&Iz1EbB&P&J!PPE*=$0o=jDZ7ra=75F4yzB;U7@cM0m~zH~h#6
zng+d3H4*RrW_V7V$4`C-vH<z)HasVl*|B{F=%1yvehvuQH*|i|dC+;Ax%@)y-B<P}
zH#1C33Ot170tI~Eou1iegKEI;w1$d?jgj!M(s1#=-+aDL9u6lDFa^P@NYb*O(6G-a
zI!(!)J0TPaKRekIyP#_yBxD%GPZtUN*3vB!*IhX2M7rNQyV^Z^JKFo$je7UyIl8I?
zT-i?vxI7;t^3WU+cwz*^k0Yr-t%y>PV>R0CcE`P27I4BEgASdC7Pqf7dL5^<w|0Mb
z(dJ%#qLUGzAC8E@dy#vJzMqAe`dGNWhxs<<bD^#hn@WMedcR-gH24C*|D8N}Jr?`q
zKy%jD`@ZC6fswg#y3IcXTnmIbW=2#40Gi_<2KN?m#!x90Gs!>Pbx<P`;R({W`-fhg
z!1(MJXeWgOLq*OG+f^~Ecs=?=-+Vyl0fBv&u2b{!hWM3(eYgGXI9tFU{5{Nw&P)wr
z<xoaxUi5xjB^Q~{X=KfKXxUe=smky-FnIy$Y=@ML!egxdPv8O`fxehhcNZGK<Ul5>
zuRLuO9pI$5sJqc91I2lH^AWr-s#I*+--H0aSm){`s=jwK|Jyf+B;n*?<eu&lY>@d*
z?zX*WXMukgD)$`igJt>Cuh6GEzOUMgyX5u7(<*2>?f!kgh-5rjLQIuRDNk}<?k_85
zsgK7Y_AYWMV&M@LA`+RhTuMJ+m(d?SfG|fq>u<y|sTjKV7o)3aijYEY)gk0pc)ZfK
z<n*6+{nj*@WLmK^HYp%y{4-RrRK{GtkvJ95eN#>*UDTB0mZ*1hqk7jaMzmMWAPryj
zWBQFlTuN0EECfzt&Vm+#gbYk~V*A(;`4%KO`Gda?=J;q4vWp8LV@BM7e@DeQhK&EP
zkL9XJ5NvM@>GTdTNT=>MGOv0@&cW8BeiL&_zoLs#E1;V^=1PwpC@F%yOpB^(ja<~8
zR*sydY4KIpdM4?_1ylbdzu+qB`h1-fo;($VTXBz}#TV@H8pI+d0U8>|=sPt-cm@9|
zRdpusEx4-`hVoYP<R(b~g(qrEf9mS3HW>#Yg8$kmqTPXaLVl*UgLawy&WfuEk-b}x
zHvXr2;2VS-B?q>q3J2-B&xHZ0nh~Vlv8SCn%=zcJum}B}6CwBuF|qn1-_s3_*4)aF
z9_j@rc<%6T95I9rAsR!yE`K{hkD{R%H86OaNYB@OzRR+cg7XFr0OPA(GSi7Zn@O&E
zV^i1reBI<obP(SzyJ8c_Sm_c1Ny?fdKvFXeg2!}hPV(=wrQn&NiE`>nHbJi53P#&3
zCQk>_LJ^CvkZ*x%QK2JU0Hj>vr=+StNH%+lDcpgr^N63sg!)}Ozxzy+*5d2tb=SC_
zuEEw0WZB3PYw=(zfFh}mYP{i2$V%9)3SMN8kc5_UQEM(sEbCX^RMzI+b_ujB3YLH~
zDG0R@PsQbc{+rQcCfh`1Q><%bfd&@z-%RLHX{Gx-gaf#pfkg!`a4p;LWcNpP)Zh`h
z@_JpD#O$tGO?HxZSq%b5bFcD9p@`0l-{{b~Ial;N$dBg<05n3{5D3~T8acL-Usc*`
z8tC`T(LSS~JXOk~pIO=+HNWMgroR+Rx$e2mEOmFA>FE%$!XA$SJh8A04@yxrG~&vU
zB^tA~>WNY`P6AG<xi!U^8e*oKeI1pkzgh2<x$~E6HN?{_?X=A-D|GGlgDcG5B8gM8
zp5Lrcg*r#M0M9?J7|HUVqPg-l2>{pf^VQJvj5Od}o}D6;xRS4fJrce#qEa1~3|gNE
z%q@%_Xadk3I$;2VTFHg8r4qyHW_=T^8R$hbd_neZ{araay*wvvANp8b)u31bX@a|l
z-C#T{u^rZEV$Y=ONw;vtJp4Y>n(3HP;XCSuM7T*4U~E5i#-7okkdil@qdzN+!klph
zVQSMtGdbb7X0YFB#H0wPgQ`C%U%7_NAFh`>NBpk|#x)Av45Bp!5d|(E^g-NImzV+-
zkmXFau{GG)-|Bq`TP{fNCPG$tv%2n9%k=pT=U;WLuO=agYFQc~M1WrP7!o*%uMdlz
zEc<<FfGKd0#qvNMBSVQyr}s^R-Fs_b%s+kH-ei?JJ+j0B>TTfw>}ungpy1PSHb&>n
ziDYMN_VO9TkDJT)MG1sf5<JJ2)S@Dn4p)Q@ejOIt?1EE-W4IhxiejhXp|Se_lMeEZ
zHZGpMaR&n@82mrTKR$nue%h#jW8^gv$x}3QKxyb9jD4@f37mSRpX3bWCZeB^h`~g)
zI!OW>0dJ#{XDlc^pUp$mj9Fr2(KsH|t&B_+sN5M2dEj;p^kg1m5&BO-&Sfl$o%WFL
zjhqg}^)iGeLYH-|#-Fv)(w?0E+jud`3oQ$Ey1UDZa(Sc_3!J=D<M|tTxattalaL=^
zPxG(a@B88PXfLh(ZS2$g@$u~H!)4-gc9s^Moacn+Hr$`*`;tQ+>U;QJXB#R|pk(E(
z9&m4{_35Yk7PU+7L&uv^i2bErpxyQA?dS7+__231{r#QV-mzCZ%|Ot#o$J!=-}UMG
z)%x60!Sd*!;la_I&Vk91ew_X*DZmY|`|9jA4HXm3ZJ6`@`fU#_r-q4^Lere?@HBwG
z@8gAvaem#}<f}-jO+OY5;eb0iqQJ;XXMVk=<~lcvEwI}KG;C0#;BO6WQe3N=FG;mX
zQaF$kg7SP#JI)lqf`pt8XG}*DH4#bW{A^f=NJd5!q!=9n;(`LRQBvXqX5<W@M7vnI
zP1I5~mI$ZkqX@Skr)020n2)l2XNW!!9N&qbPetr_(Dt|)9)5t9ZxUEKaB5`Z<)w&3
z)J6M*l=0Q@txlYuiGn7&rjVx@T~vhA*o8<=)vYf_D^n3{87ud18D*?vr<<sfi@dW|
znG-oJD-NGiXt4TMiI855Un>dV(M@)LNp0-kwm!rtV|$ubh?}Axi{*n;5Xk@jjCyzX
z@bU5mxIKFunYSW*%mlt_Lx0=h9589*IfX}^9o?PTxLTTIIGinpnBfKGirjFl{?-Sg
z-_NJcSrGF3_HN)`!s4&xZH1*_St+r&S5GNw7_WMdZqIhGGCxZR>{0_T&ulIZPSS-#
zIr@9Jtke1m(`>8ueIKr0ZuYBzI)2w6Y%$R8hQ-|BpAr056;~b(h4zLANo9+esR?80
z+8VmH372HoSjV+gNR}jOVk~296B?5(G?7V&Fxi*5YRJ-L8D$w{O!kx|M#z$7#*f?W
z`Q3Y-=RDtezw>_Qe9!mi`QGP*C#qSXtW<1&C^8q8zXdWzUmgXuwDSIz?AFEB{-LWK
z)AepJm8j*di)l?Cs~Ov=srHUu921#h1hKZR=>*0!>2U4+30~E1-lO4YQdxfMs@+q4
zEKj!hb)0*~#RXH+-OtC}il0@DPMioi13W1k_sAR9Ce$Y40|qQ{C!}IXSCl<cHy96`
zPswZH)8!28N2{rPm&7fEAa!CrKOm<^58K$jBHNZE_j^$!Pt)<ItZjr@iWTUx_;VtI
zJZf@RTjhc@fyHwJthBlpGL2;M4=wLHu}G<JV?yWJth~v-E1^|#M(D>&>(SOXKPII?
zUM7TCTQa$J6kXJ{JJ2KFp%Wc0q^zT{9B=F8Cud(a7mH4npu$cL)Q#VXLvkEiqIbr_
zeVvLn-U~-f9(GT3<e1Nz?D+JR1149wj^HU&4y$VSGol+haF%Vt$UF4cX>~wzES+~S
zSe4CKdUE3o>4B{r>nvV)H2`OKG5X;eSLiaKy4?|$n)P^~%j#BaXL)K7&ev0s1}4JE
zCWR07VE!JQ0}~&+$jIcS#Uu7aPJgJAr6#<pob|s^*IqUEM>w6$m6_R)ooP>*v)|Iu
zB3sT97P(|E^RLL4IT-rg#jYwQ!=9#W>W@{O$l{c^Vyr?>x|-#=2o$R+qkiF=HJi_(
z$ixO3uh*1u$IE_*?|2gf)eKMw)RD$%+!sxsC%xP4*siTJ^~?#9BpCYlcdMOxA9675
zYkOX}wAYlZZZBB1>wxQILyiu*7TQft*SIl57FOn_kYBD(v&)NNSP%*Fp%L>Odv2*A
z<psKNGUYG+1~%)7K*cc2XTn~`qTxzJJ;`vvsvVq>_OX3I%A2Yqeakhb=0G+F1*Nm)
z5L_U*NVGr)Y~HV!8LN62N>h1mBsQc$cwgpdgJ}Uev}ga`!5x1KrM1_8yDAh8^zUWd
z6A`N(u8`wHt%0YpiUHqlm^Xct1I~TCUq=6nfxBRqGaf6QiS`JOth5^=Ra`uE&Q3t4
zZ2+{`d3Z_1ailSoX=2n;KXS1%mZ~gy4<0Sr5d$w#H$Cx5u@?R=y&H#-JYT1t7vPj&
zdHDuDs{7__!<fi?{r9Ui13As!(|gZwQv<@5*Sf;Y#C=~xWBUhy^%Plde+@wwHu?Oz
zcWC1oDKXTL(xwOWW={%50yShP5Z2+=6f=bFa1+#8KoULoEL8P#C0=a(?|tT%$^@GH
z(t+z<xgFWJp+yv<c)`<@t`uaKC;=8o!9b`n7z?7d(vWnY>?&(=P=VGG{%7J_6($v`
z$i`BkacoWPdX&ZDD5Rm9vY82CbQ#YF1gYkW#=$^w`I!kueO<=VbJNl)^{?*9Ybbjq
zY`N`<c*uN*qs{oUfLF#p3%^XBo#R1^okw@GiB3)a*LQ=+L2H)JhUI-n7+OjnGw^!r
z+-pNN6c%geJ5zkaZ~IP=F_(bmqk)NDtV=@nitT7s)8p3C$~#flo`&5f36354eTHu#
zjZ|8wDEh*sMfp0pZSi|XUzT%qnAv*hlp@~m{qpPAx&;VD#IdL-pQjQ|_q&ZOAVH2!
zDmGk{^D3p6mLt4lJClZ#d}AHBNRcUbVCrdUTkh7n>#MU1>}|QiMSuqMExM2i$3}EQ
zCQO{+JmKLG`1xGjBM(XA&B?9V@U-A!H~|^kX@VlWF+;Ls0la3Nk{HYvo^&S4-0aYu
zMN*xZ=B2#nw++B+memN?3(D@Qz(XjZV~LhS1DM%^FgKnp-|#z7n#96aWTKJ)#plI^
zBp)>(UR!^}Uc@@B_PI9hwowRH6uoJ?*XZ%fB9YArj62$I3+kyM*T2%VEpOi(;qWds
zarAz!wq9+NT}A4~Crou&o=OT;>Tfdu0YOI0Ld`=PIuC<q5qAf)K$Xib@635cx3c&z
zBFjJKXPyR;UlD^!Y_08NgIumj)9qzZE?;E%^|`jspu%k$m>^B@?RjitXUul!%SB)D
zPmR_awTLo}mlbyKQpAjrZ>MqE@awu-Ipu4`&{9M-g04_$M(r0A&_(_=|9v3kC@9y9
zKB;{<tKIGbcoaT`Oq>ZFBz)141-V};)H_&_4*3B&H&~9sSEKwRFqBb_A)(Ig;46*l
zo;F7e58~uKZOrxzwx;a@bx>32k|%BqkH~Fdv02j(;%YwJo%&cye-ugQzDtIirA_@A
zY}t&F>St|^TRD}dMf*>QmsQypC4aRxMOCGk(wrTZ!X7cC-slDuCn1@zHm5)hs+h{|
z)W{0|C{lH-NW~H^056Pd>|1*8O%doMww^7Q(TEDCnXY0brXpolGU`LrFX!8CS9FFL
zq)htQ<|5!O^_f<)8*=InA$AJ_)e13uCqy!mrRqKn-*t!hDLo+?M##GuN{YUUJumIg
zA7wNPej|Wkc;3VqaM}I=I~JTR@t8+L42~86zHu!$m!}~OUXFI6v96_}jTKB?3aCQJ
zB3)kX0V(YJM8}d(3Brs@?blBFAlD|tI!<?DbD6hYqCNcG@H0EL0uQ@)=!<900+sak
z^nwlZ&c_!yN6{VAize_4m`$Ks<ZrnvNQ>2|sJDOcw(5pUy^UL&rQ&=qTjxe(&t;Rg
z3rucbw%XWk4#*;zreYf|Lvw=0qh0Hpwstnt>l?6}YtxfEYG}+Fv3?5`fDLoxjEF?0
z7~{-K+0cLm!=eCQ5VU0Y!%>NX)jZv@Pt$ffV&ge_fr%4KuFlX$utm}0Gu>w@8nXlH
z&_@}r^m$;GG^5vYVm28OX;r7?9PY7N5*6y1ZefkpB8Dv;2C<1qm5rwoM{-P>%DDN~
zuvRI;2Hib)?A=`*6W~rvre!9sH#U|-|0H`^4W#I6##=*Hz4G<S1VE6rX(%YcD!9e%
zPvBnSGp~bu&urEwe0Y-VhEG(!$7dU8(cPocCw=c(lUqfK1H0(Pi54F3#Rwy<s9hpg
zEPo_mTixf!Z(BT(2f7YFIWk3U&-hIC!0OZ=K0V9s2pN1W)4jVKxDp(y{;9n|@_52*
zOTx8-JtR{?)e{}e!NL9jztB@jwa+izo6|E%_lTzV%ScHHfN!V=xF#rIk~;97&3;*c
z$NGBC$|G~(4Y{l7To0>_m##15=8`g9)#%~FJE|@oxJ0JB1akokurcR3gh@^GI{r)%
z0I2lk+;ebniU33afI|SlzD$--(4+cOB`ehnCam?y{{jX-7kV@>A*xsLC#dK(`Lzuu
z9Hafi)uS2xpPNhjhucHD@GA&Rfb~It0<S(8|Ngaz4}vsJP5@w<P}HXY+4rpE`}B<R
z0072k0RTS0zsDM3x$orP9O{hj_;LQd#1R0%k$+PFe1y~eCnWdJF)b2hn&JU~{dxR9
t9Osh+&wkmTdED;@b29P>#r-mW2kn>WSA}^06J(lCVD^h2l<C>`{tscQ)iVG9

diff --git a/l10n_mx_facturae/report/account_payment.odt b/l10n_mx_facturae/report/account_payment.odt
index 04b4379a894f1b130eb544315004ca4c1b1cd335..3987451a8e3b18db5bde8d67bad8c2fa1e4a7d1f 100644
GIT binary patch
delta 42305
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
B>k<F}

delta 46901
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
Z@A}_EhWYpi5D4SrcKqnkxcNWa{{ug?i=O}h

diff --git a/l10n_mx_facturae/report/account_payment.py b/l10n_mx_facturae/report/account_payment.py
new file mode 100644
index 0000000000..325f895f30
--- /dev/null
+++ b/l10n_mx_facturae/report/account_payment.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+
+from odoo import api, models
+
+
+class Parser(models.AbstractModel):
+    _inherit = ["report.report_xml.abstract", "report.l10n_mx_qr", "report.report_aeroo.abstract"]
+    _description = "report.l10n_mx_facturae.account_payment_template_cfdi_xml"
+    _name = "report.l10n_mx_facturae.account_payment_template_cfdi_xml"
+
+    @api.model
+    def aeroo_report(self, docids, data):
+        self = self.with_context(
+            format_float = self._format_float,
+            format_impuesto = self._format_impuesto,
+            format_tasaocuota = self._format_tasaocuota,
+        )
+        return super(Parser, self).aeroo_report(docids, data)
+
+    def _get_report_values(self, docids, data=None):
+        docs = self.env["account.payment"].browse(docids)
+        # return a custom rendering context
+        return {
+            "doc_ids": docids,
+            "doc_model": "account.payment",
+            "docs": docs,
+            "format_float": self._format_float,
+            "format_impuesto": self._format_impuesto,
+            "format_tasaocuota": self._format_tasaocuota,
+        }
+
+    def _format_float(self, amount, decimals):
+        """Format any amount to a given number of decimals"""
+        return "{:.{}f}".format(amount, decimals)
+
+    def _format_impuesto(self, tax):
+        tax_types = {
+            "ISR": "001",
+            "IVA": "002",
+            "IEPS": "003",
+        }
+        tax_rep_lines = tax.invoice_repartition_line_ids._origin.filtered(
+            lambda x: x.repartition_type == "tax"
+        )
+        tax_group = tax_rep_lines.mapped("tag_ids")
+        return tax_types[tax_group.name]
+
+    def _format_tasaocuota(self, tax):
+        """Format tasa o cuota"""
+        return "{0:.6f}".format(abs(tax.amount) / 100)
diff --git a/l10n_mx_facturae/templates/account_move.xml b/l10n_mx_facturae/templates/account_move.xml
index bf3e5e9317..2202441201 100644
--- a/l10n_mx_facturae/templates/account_move.xml
+++ b/l10n_mx_facturae/templates/account_move.xml
@@ -1,54 +1,134 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <odoo>
     <template id="account_move_template_cfdi_xml">
-
-        <cfdi:Comprobante t-foreach="docs" t-as="cfdi"
+        <t t-set="move" t-value="docs[0]" />
+        <t t-set="taxes" t-value="move.impuestos" />
+        <t t-set="total_traslados" t-value="move.l10n_mx_facturae_compute_total_traslados(taxes)" />
+        <t t-set="total_retenciones" t-value="move.l10n_mx_facturae_compute_total_retenciones(taxes)" />
+        <t t-set="tipoCambio" t-value="move.l10n_mx_facturae_compute_tipocambio()"/>
+        <t t-set="residenciaFiscal" t-value="move.l10n_mx_facturae_compute_residencia_fiscal()"/>
+        <t t-set="regimenTrib" t-value="move.l10n_mx_facturae_compute_regimen_tributario()"/>
+        <cfdi:Comprobante t-foreach="docs" t-as="o"
             xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd"
             xmlns:cfdi="http://www.sat.gob.mx/cfd/4"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-            Version="4.0"
-            t-attf-Serie="cfdi.serie"
-            t-attf-Exportacion="cfdi.l10n_mx_export ? '02' : '01'"
-            Folio="$o.folio"
-            Fecha="${ format_datetime(o.cfdi_datetime, '%Y-%m-%dT%H:%M:%S', tz=user.partner_id.tz) }"
-            Sello="@"
-            NoCertificado="@"
-            Certificado="@"
-            FormaPago="$o.formapago"
-            CondicionesDePago="${ html_escape(o.payment_term.name) }"
-            SubTotal="${ '{0:.2f}'.format(o.subtotal) }"
-            Descuento="${ '{0:.2f}'.format(o.descuento) }"
-            Moneda="${ o.currency_id.name }"
-            TipoCambio="${ o.currency_rate }"
-            Total="${ '{0:.2f}'.format(o.total) }"
-            TipoDeComprobante="E"
-            MetodoPago="PUE"
-            MetodoPago="$o.payment_method_id.code"
-            LugarExpedicion="${ o.address_issued_id.zip }"
-        >
-             <cfdi:CfdiRelacionados TipoRelacion="${ o.cfdi_relation_type.code }" t-if="cfdi.related_cfdi_ids">
-                 <cfdi:CfdiRelacionado  t-foreach="docs" t-as="cfdi" t-attf-UUID="cfdi.uuid"/>
-             </cfdi:CfdiRelacionados>
-            <cfdi:Emisor Rfc="EKU9003173C9" Nombre="ESCUELA KEMPER URGATE" RegimenFiscal="601"/>
-            <cfdi:Receptor Nombre="FELIX MANUEL ANDRADE BALLADO" Rfc="AABF800614HI0" UsoCFDI="S01" DomicilioFiscalReceptor="86400" RegimenFiscalReceptor="616"/>
+            t-attf-Version="4.0"
+            t-attf-Exportacion="{{ o.l10n_mx_facturae_compute_export() }}"
+            t-attf-Folio="{{ o.folio }}"
+            t-attf-Fecha="{{ o.l10n_mx_facturae_compute_fecha() }}"
+            t-attf-Sello="@"
+            t-attf-NoCertificado="@"
+            t-attf-Certificado="@"
+            t-attf-FormaPago="{{ o.formapago }}"
+            t-attf-CondicionesDePago="{{ o.l10n_mx_facturae_compute_payment_terms() }}"
+            t-attf-SubTotal="{{ o.l10n_mx_facturae_compute_subtotal()}}"
+            t-attf-Descuento="{{ o.descuento }}"
+            t-attf-Moneda="{{ o.currency_id.name }}"
+            t-att-TipoCambio="tipoCambio"
+            t-attf-Total="{{ o.l10n_mx_facturae_compute_total() }}"
+            t-attf-TipoDeComprobante="{{ o.l10n_mx_facturae_compute_type_document() }}"
+            t-attf-MetodoPago="{{ o.l10n_mx_facturae_compute_payment_method() }}"
+            t-attf-LugarExpedicion="{{ o.address_issued_id.zip }}">
+            <cfdi:CfdiRelacionados t-attf-TipoRelacion="o.cfdi_relation_type.code" t-if="o.reversed_entry_id">
+                <cfdi:CfdiRelacionado  t-foreach="o.reversed_entry_id" t-as="cfdi" t-attf-UUID="cfdi.cfdi_folio_fiscal"/>
+            </cfdi:CfdiRelacionados>
+            <cfdi:CfdiRelacionados t-attf-TipoRelacion="o.cfdi_relation_type.code" t-if="o.related_cfdi_ids">
+                <cfdi:CfdiRelacionado  t-foreach="o.related_cfdi_ids" t-as="cfdi" t-attf-UUID="cfdi.uuid"/>
+            </cfdi:CfdiRelacionados>
+            <cfdi:InformacionGlobal
+                t-if="o.commercial_partner_id.name.upper() == 'PUBLICO EN GENERAL' and o.commercial_partner_id.vat_split == 'XAXX010101000' and o.move_type == 'out_invoice'"
+                t-attf-Año="{{ format_datetime(o.cfdi_datetime, '%Y', tz=user.partner_id.tz) }}"
+                t-attf-Meses="{{ format_datetime(o.cfdi_datetime, '%m', tz=user.partner_id.tz) }}"
+                t-attf-Periodicidad="{{ o.cfdi_periodicity }}" />
+            <cfdi:Emisor
+                t-attf-Rfc="{{ o.company_id.partner_id.vat_split }}"
+                t-attf-Nombre="{{ o.company_id.partner_id.name.upper() }}"
+                t-attf-RegimenFiscal="{{ o.company_id.partner_id.cfdi_fiscal_regime_id.code }}"/>
+            <cfdi:Receptor
+                t-attf-Nombre="{{ o.commercial_partner_id.name.upper() }}"
+                t-attf-Rfc="{{ o.l10n_mx_facturae_compute_rfc() }}"
+                t-attf-UsoCFDI="{{ o.l10n_mx_facturae_compute_use_cfdi() }}"
+                t-attf-DomicilioFiscalReceptor="{{ o.l10n_mx_facturae_compute_domicilio_fiscal() }}"
+                t-attf-RegimenFiscalReceptor="{{ o.l10n_mx_facturae_compute_regimen_fiscal_receptor() }}"
+                t-att-ResidenciaFiscal="residenciaFiscal"
+                t-att-NumRegIdTrib="regimenTrib" />
             <cfdi:Conceptos>
-                <cfdi:Concepto>
-
+                <cfdi:Concepto t-foreach="o.invoice_line_ids" t-as="line"
+                    t-attf-ClaveProdServ="{{ o.l10n_mx_facturae_compute_product() }}"
+                    t-attf-NoIdentificacion="{{ line.cfdi_numero_identificacion }}"
+                    t-attf-Cantidad="{{ line.quantity }}"
+                    t-attf-ClaveUnidad="{{ line.product_uom_id.cfdi_unit_measure_id.code }}"
+                    t-attf-Unidad="{{ o.l10n_mx_facturae_compute_unit() }}"
+                    t-attf-Descripcion="{{ line.name }}"
+                    t-attf-ValorUnitario="{{ line.valorunitario }}"
+                    t-attf-Importe="{{ line.l10n_mx_facturae_importe() }}"
+                    t-attf-Descuento="{{ line.descuento }}"
+                    t-attf-ObjetoImp="{{ line.l10n_mx_facturae_compute_objeto_impuesto() }}">
+				    <cfdi:Impuestos t-if="line.l10n_mx_facturae_compute_objeto_impuesto() == '02' ">
+				        <cfdi:Traslados t-if="line.impuestos['traslados']">
+                            <t t-set="impuestos" t-value="line.impuestos"/>
+				            <cfdi:Traslado t-foreach="impuestos['traslados']" t-as="tax"
+				                t-attf-Base="{{ tax.base }}"
+                                t-attf-Impuesto="{{ tax.xml_name }}"
+                                t-attf-TipoFactor="{{ tax.type }}"
+				                t-attf-TasaOCuota="{{ tax.TasaOCuota }}"
+				                t-attf-Importe="{{ tax.xml_amount }}" />
+				        </cfdi:Traslados>
+				        <cfdi:Retenciones t-if="impuestos['retenciones']">
+				            <cfdi:Retencion t-foreach="impuestos['retenciones']" t-as="tax"
+				                t-attf-Base="{{ tax.base }}"
+                                t-attf-Impuesto="{{ tax.xml_name }}"
+                                t-attf-TipoFactor="{{ tax.type }}"
+				                t-attf-TasaOCuota="{{ tax.TasaOCuota }}"
+				                t-attf-Importe="{{ tax.xml_amount }}" />
+				        </cfdi:Retenciones>
+				    </cfdi:Impuestos>
+                    <cfdi:CuentaPredial t-if="line.cfdi_cuentapredial"
+                        t-attf-Numero="line.cfdi_cuentapredial" />
+                    <cfdi:InformacionAduanera
+                        t-if="line.cfdi_custom_number"
+                        t-foreach="line.cfdi_custom_number" t-as="cfdi_custom_number"
+                        t-attf-NumeroPedimento="{{ cfdi_custom_number.name }}" />
                 </cfdi:Concepto>
             </cfdi:Conceptos>
-            <cfdi:Impuestos>
-                <cfdi:Retenciones>
-
+            <cfdi:Impuestos
+                t-att-TotalImpuestosTrasladados="total_traslados"
+                t-att-TotalImpuestosRetenidos="total_retenciones" >
+                <cfdi:Retenciones t-if="taxes['retenciones']">
+                    <cfdi:Retencion t-foreach="taxes['retenciones']" t-as="tax"
+                        t-attf-Impuesto="{{ tax.xml_name }}"
+                        t-attf-Importe="{{ tax.xml_amount }}" />
                 </cfdi:Retenciones>
-                <cfdi:Traslados>
-
+                <cfdi:Traslados t-if="taxes['traslados']">
+                    <cfdi:Traslado t-foreach="taxes['traslados']" t-as="tax"
+                        t-attf-Base="{{ tax.base }}"
+                        t-attf-Impuesto="{{ tax.xml_name }}"
+                        t-attf-TipoFactor="{{ tax.type }}"
+                        t-attf-TasaOCuota="{{ tax.TasaOCuota }}"
+                        t-attf-Importe="{{ tax.xml_amount }}" />
                 </cfdi:Traslados>
             </cfdi:Impuestos>
-            <cfdi:Complemento>
-                <implocal:ImpuestosLocales>
-
+            <!--
+            <cfdi:Complemento t-if="is_local_taxes">
+                <implocal:ImpuestosLocales
+                    t-attf-version="1.0"
+                    t-attf-TotaldeTraslados="${ '{0:.2f}'.format(sumif(taxes.locales, 'amount', [('amount', '>', 0)])) }"
+                    t-attf-TotaldeRetenciones="${ '{0:.2f}'.format(abs(sumif(taxes.locales, 'amount', [('amount', '<', 0)]))) }">
+                    <implocal:TrasladosLocales
+                        t-foreach="taxes.locales" t-as="tax_line"
+                        t-if="tax_line.amount > 0"
+                        t-attf-ImpLocTrasladado="html_escape(tax_line.name)"
+                        t-attf-TasadeTraslado="${ '{0:.2f}'.format(tax_line.TasaOCuota * 100) }"
+                        t-attf-Importe="tax_line.amount" />
+                    <implocal:RetencionesLocales
+                        t-foreach="taxes.locales" t-as="tax_line"
+                        t-if="tax_line.amount < 0"
+                        t-attf-ImpLocRetenido="html_escape(tax_line.name)"
+                        t-attf-TasadeRetencion="tax_line.TasaOCuota * 100 }"
+                        t-attf-Importe="tax_line.amount" />
                 </implocal:ImpuestosLocales>
             </cfdi:Complemento>
+            -->
         </cfdi:Comprobante>
 
     </template>
diff --git a/l10n_mx_facturae/templates/account_payment.xml b/l10n_mx_facturae/templates/account_payment.xml
new file mode 100644
index 0000000000..4203c948b3
--- /dev/null
+++ b/l10n_mx_facturae/templates/account_payment.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<odoo>
+    <template id="account_payment_template_cfdi_xml">
+        <t t-set="payment" t-value="docs[0]" />
+        <t t-set="residenciaFiscal" t-value="payment.l10n_mx_facturae_payment_compute_residencia_fiscal()"/>
+        <t t-set="regimenTrib" t-value="payment.l10n_mx_facturae_payment_compute_regimen_tributario()"/>
+        <t t-set="tipoCambio" t-value="payment.l10n_mx_facturae_payment_compute_tipocambio()"/>
+        <t t-set="traslados" t-value="payment.totales_p()" />
+        <t t-set="retenciones" t-value="payment.totales_p(tax_type='retenciones')" />
+        <cfdi:Comprobante t-foreach="docs" t-as="o"
+            xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd http://www.sat.gob.mx/Pagos20 http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos20.xsd"
+            xmlns:cfdi="http://www.sat.gob.mx/cfd/4"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xmlns:pago20="http://www.sat.gob.mx/Pagos20"
+            t-attf-Version="4.0"
+            t-attf-Exportacion="01"
+            t-attf-Folio="{{ o.folio }}"
+            t-attf-Fecha="{{ o.l10n_mx_facturae_payment_compute_fecha() }}"
+            t-attf-Sello="@"
+            t-attf-NoCertificado="@"
+            t-attf-Certificado="@"
+            t-attf-SubTotal="0"
+            t-attf-Moneda="XXX"
+            t-attf-Total="0"
+            t-attf-TipoDeComprobante="P"
+            t-attf-LugarExpedicion="{{ o.company_id.zip }}">
+            <cfdi:CfdiRelacionados t-attf-TipoRelacion="o.cfdi_relation_type.code" t-if="o.related_cfdi_ids">
+                <cfdi:CfdiRelacionado t-foreach="o.related_cfdi_ids" t-as="cfdi" t-attf-UUID="cfdi.uuid"/>
+            </cfdi:CfdiRelacionados>
+            <cfdi:Emisor
+                t-attf-Rfc="{{ o.company_id.partner_id.vat_split }}"
+                t-attf-Nombre="{{ o.company_id.partner_id.name.upper() }}"
+                t-attf-RegimenFiscal="{{ o.company_id.partner_id.cfdi_fiscal_regime_id.code }}"/>
+            <cfdi:Receptor
+                t-attf-Nombre="{{ o.commercial_partner_id.name.upper() }}"
+                t-attf-Rfc="{{ o.l10n_mx_facturae_payment_compute_rfc() }}"
+                t-attf-UsoCFDI="CP01"
+                t-attf-DomicilioFiscalReceptor="{{ o.l10n_mx_facturae_payment_compute_domicilio_fiscal() }}"
+                t-attf-RegimenFiscalReceptor="{{ o.l10n_mx_facturae_payment_compute_regimen_fiscal_receptor() }}"
+                t-att-ResidenciaFiscal="residenciaFiscal"
+                t-att-NumRegIdTrib="regimenTrib" />
+            <cfdi:Conceptos>
+                <cfdi:Concepto
+                    t-attf-Cantidad="1"
+                    t-attf-ClaveProdServ="84111506"
+                    t-attf-ClaveUnidad="ACT"
+                    t-attf-Descripcion="Pago"
+                    t-attf-Importe="0"
+                    t-attf-ObjetoImp="01"
+                    t-attf-ValorUnitario="0" />
+            </cfdi:Conceptos>
+            <cfdi:Complemento>
+                <pago20:Pagos t-attf-Version="2.0">
+                    <pago20:Totales
+                        t-attf-MontoTotalPagos="{{ o.l10n_mx_facturae_payment_montototalpagos() }}"
+                        t-att-TotalTrasladosBaseIVAExento="traslados.get('baseIVAExento', False)"
+                        t-att-TotalTrasladosBaseIVA16="traslados.get('baseIVA16.0', False)"
+                        t-att-TotalTrasladosImpuestoIVA16="traslados.get('importeIVA16.0', False)"
+                        t-att-TotalTrasladosBaseIVA8="traslados.get('baseIVA8.0', False)"
+                        t-att-TotalTrasladosImpuestoIVA8="traslados.get('importeIVA8.0', False)"
+                        t-att-TotalTrasladosBaseIVA0="traslados.get('baseIVA0.0', False)"
+                        t-att-TotalTrasladosImpuestoIVA0="traslados.get('importeIVA0.0', False)"
+                        t-att-TotalRetencionesIVA="retenciones.get('importeIVA', False)"
+                        t-att-TotalRetencionesISR="retenciones.get('importeISR', False)"
+                        t-att-TotalRetencionesIEPS="retenciones.get('importeIEPS', False)" />
+                    <pago20:Pago
+                        t-attf-FechaPago="{{ o.l10n_mx_facturae_payment_compute_pago_fecha() }}"
+                        t-attf-FormaDePagoP="{{ o.payment_type_id.code }}"
+                        t-attf-MonedaP="{{ o.currency_id.name }}"
+                        t-att-TipoCambioP="tipoCambio"
+                        t-attf-Monto="{{ o.amount }}"
+                        t-attf-NumOperacion="{{ o.name }}" >
+                        <pago20:DoctoRelacionado t-foreach="o.doctos_relacionados" t-as="invoice"
+                            t-attf-Folio="{{ invoice.folio }}"
+                            t-attf-IdDocumento="{{ invoice.cfdi_folio_fiscal }}"
+                            t-attf-MonedaDR="{{ invoice.currency_id.name }}"
+                            t-attf-EquivalenciaDR="{{ o.tipocambiodr(invoice) }}"
+                            t-attf-NumParcialidad="{{ o.numparcialidad(invoice) }}"
+                            t-attf-ImpSaldoAnt="{{ o.impsaldoant(invoice, to_xml=True) }}"
+                            t-attf-ImpSaldoInsoluto="{{ o.impsaldoinsoluto(invoice, to_xml=True) }}"
+                            t-attf-ImpPagado="{{ o.imppagado(invoice, to_xml=True) }}"
+                            t-attf-ObjetoImpDR="02" >
+                            <pago20:ImpuestosDR>
+                                <t t-set="retenciones" t-value="o.impuestos_dr(invoice, tax_type='retenciones')"/>
+                                <pago20:RetencionesDR t-if="retenciones">
+                                    <pago20:RetencionDR t-foreach="retenciones" t-as="tax_move"
+                                        t-att-BaseDR="format_float(tax_move.tax_base_amount, invoice.currency_id.decimal_places)"
+                                        t-att-ImpuestoDR="format_impuesto(tax_move.tax_line_id)"
+                                        t-att-ImporteDR="format_float(abs(tax_move.balance), invoice.currency_id.decimal_places)"
+                                        t-att-TasaOCuotaDR="format_tasaocuota(tax_move.tax_line_id)"
+                                        t-att-TipoFactorDR="tax_move.tax_line_id.l10n_mx_tax_type" />
+                                </pago20:RetencionesDR>
+                                <pago20:TrasladosDR>
+                                    <pago20:TrasladoDR t-foreach="o.impuestos_dr(invoice)" t-as="tax_move"
+                                        t-att-BaseDR="format_float(tax_move.tax_base_amount, invoice.currency_id.decimal_places)"
+                                        t-att-ImpuestoDR="format_impuesto(tax_move.tax_line_id)"
+                                        t-att-ImporteDR="format_float(abs(tax_move.balance), invoice.currency_id.decimal_places)"
+                                        t-att-TasaOCuotaDR="format_tasaocuota(tax_move.tax_line_id)"
+                                        t-att-TipoFactorDR="tax_move.tax_line_id.l10n_mx_tax_type" />
+                                </pago20:TrasladosDR>
+                            </pago20:ImpuestosDR>
+                        </pago20:DoctoRelacionado>
+                        <pago20:ImpuestosP>
+                            <t t-set="retenciones" t-value="o.impuestos_p(tax_type='retenciones')"/>
+                            <pago20:RetencionesP t-if="retenciones">
+                                <pago20:RetencionP t-foreach="retenciones" t-as="tax_total"
+                                    t-attf-ImporteP="{{ tax_total['importe'] }}"
+                                    t-attf-ImpuestoP="format_impuesto(tax_total['tax_id'])" />
+                            </pago20:RetencionesP>
+                            <pago20:TrasladosP>
+                                <pago20:TrasladoP t-foreach="o.impuestos_p()" t-as="tax_total"
+                                    t-att-BaseP="format_float(tax_total['tax_base'], o.currency_id.decimal_places)"
+                                    t-att-ImpuestoP="format_impuesto(tax_total['tax_id'])"
+                                    t-att-ImporteP="format_float(tax_total['importe'], o.currency_id.decimal_places)"
+                                    t-att-TasaOCuotaP="format_tasaocuota(tax_total['tax_id'])"
+                                    t-att-TipoFactorP="tax_total['tax_id'].l10n_mx_tax_type" />
+                            </pago20:TrasladosP>
+                        </pago20:ImpuestosP>
+                    </pago20:Pago>
+                </pago20:Pagos>
+            </cfdi:Complemento>
+        </cfdi:Comprobante>
+
+    </template>
+
+</odoo>
diff --git a/l10n_mx_facturae/templates/account_voucher.txt b/l10n_mx_facturae/templates/account_voucher.txt
index 2a30569ab8..80723d339e 100644
--- a/l10n_mx_facturae/templates/account_voucher.txt
+++ b/l10n_mx_facturae/templates/account_voucher.txt
@@ -163,7 +163,7 @@
                         {% end %}
                         NumParcialidad="${ o.numparcialidad(invoice) }"
                         ImpSaldoAnt="${ '{0:.2f}'.format(o.impsaldoant(invoice)) }"
-                        ImpSaldoInsoluto="${ '{0:.2f}'.format(o.impsaldoant(invoice) - o.imppagado(invoice)) }"
+                        ImpSaldoInsoluto="${ '{0:.2f}'.format() }"
                         ImpPagado="${ '{0:.2f}'.format(o.imppagado(invoice)) }"
                         ObjetoImpDR="02"
                         >
diff --git a/l10n_mx_facturae/views/account_move.xml b/l10n_mx_facturae/views/account_move.xml
index 7d72d8fd5f..f7d429a9fe 100644
--- a/l10n_mx_facturae/views/account_move.xml
+++ b/l10n_mx_facturae/views/account_move.xml
@@ -31,16 +31,18 @@
         <field name="inherit_id" ref="account.view_move_form"/>
         <field name="arch" type="xml">
             <button name="button_cancel" position="before">
-                <field name="is_cfdi_candidate" invisible="0" />
+                <field name="is_cfdi_candidate" invisible="1" />
             </button>
             <xpath expr="//header" position="after">
                 <div
                     class="alert alert-danger"
                     attrs="{'invisible':[
+                        '|',
+                        ('state', '=', 'draft'),
                         (
                             'cfdi_state',
                             'in',
-                            ['signed', 'cancel', 'done', False]
+                            ['signed', 'done', 'waiting', 'cancel',  False]
                         )
                     ]}"
                     role="alert"
@@ -53,8 +55,8 @@
                 <div
                     class="alert alert-warning"
                     role="alert"
-                    style="margin-bottom:0px;" >
-                    <!--attrs="{'invisible': [('l10n_mx_edi_to_cancel', '=', False)]}"-->
+                    style="margin-bottom:0px;"
+                    attrs="{'invisible': [('l10n_mx_edi_to_cancel', '=', False)]}" >
                     <field
                         name="l10n_mx_edi_to_cancel"
                         readonly="1"
@@ -84,12 +86,40 @@
                     options="{'no_create':True, 'no_open':True}"/>
             </xpath>
             <xpath expr="//field[@name='payment_reference']" position="after">
-                <label for="cfdi_state" string="PAC State"/>
+                <label
+                    for="cfdi_state"
+                    string="PAC State"
+                    attrs="{
+                        'invisible':[
+                            '|',
+                            ('is_cfdi_candidate', '=', False),
+                            ('state', '=', 'draft')
+                        ]
+                    }"
+                />
                 <div class="o_row" >
-                    <field name="cfdi_state" class="oe_inline"/>
+                    <field
+                        name="cfdi_state"
+                        class="oe_inline"
+                        attrs="{
+                            'invisible':[
+                                '|',
+                                ('is_cfdi_candidate', '=', False),
+                                ('state', '=', 'draft')
+                            ]
+                        }"
+                    />
                     <button name="action_validate_cfdi" string="Retry"
                         class="oe_link oe_inline" type="object"
-                        groups="account.group_account_invoice"/>
+                        groups="account.group_account_invoice"
+                        attrs="{
+                            'invisible':[
+                                '|',
+                                ('state', 'in', ['draft', 'cancel', 'waiting']),
+                                ('cfdi_state','in', ['signed', 'cancel', 'done', 'waiting', False])
+                            ]
+                        }"
+                    />
                 </div>
             </xpath>
             <xpath expr="//page[@name='cfdi_configuration_move_mx']" position='after'>
@@ -159,7 +189,7 @@
             <xpath expr="//page//tree//field[@name='tax_ids']" position="before">
                 <field name="cfdi_custom_number"
                     widget="many2many_tags"
-                    groups="l10n_mx.group_cfdi_custom_number"/>
+                    groups="l10n_mx_base.group_cfdi_custom_number"/>
             </xpath>
         </field>
     </record>
diff --git a/l10n_mx_facturae/views/account_payment.xml b/l10n_mx_facturae/views/account_payment.xml
index 39c99513ac..c35f3805ce 100644
--- a/l10n_mx_facturae/views/account_payment.xml
+++ b/l10n_mx_facturae/views/account_payment.xml
@@ -1,16 +1,15 @@
 <?xml version="1.0"?>
 <odoo>
-<data>
 
-    <record id="account_payment_action_sign" model="ir.actions.server">
+    <!--<record id="account_payment_action_sign" model="ir.actions.server">
         <field name="name">Sign payments</field>
         <field name="type">ir.actions.server</field>
         <field name="model_id" ref="model_account_payment"/>
         <field name="state">code</field>
         <field name="code">self.sign_payment(cr, uid, context.get('active_ids', []), context=context)</field>
-    </record>
+    </record>-->
 
-    <record id="ir_values_action_sign" model="ir.values">
+    <!--<record id="ir_values_action_sign" model="ir.values">
         <field name="name">Sign payments</field>
         <field name="action_id" ref="account_payment_action_sign"/>
         <field name="value" eval="'ir.actions.server,' + str(ref('account_payment_action_sign'))"/>
@@ -18,28 +17,37 @@
         <field name="model_id" ref="model_account_payment"/>
         <field name="model">account.payment</field>
         <field name="key2">client_action_multi</field>
-    </record>
+    </record>-->
 
-    <record id="account_payment_view_form" model="ir.ui.view">
-        <field name="name">account.payment.view.form</field>
+    <record id="account_payment_cfdi_view_form" model="ir.ui.view">
+        <field name="name">account.payment.cfdi.view.form</field>
         <field name="model">account.payment</field>
         <field name="inherit_id" ref="account.view_account_payment_form"/>
         <field name="arch" type="xml">
-            <button name="action_port" position="after">
-                <field name="show_unreconcile" invisible="1"/>
+            <button name="action_post" position="after">
                 <button name="sign_payment" type="object" string="Sign"
                     class="oe_highlight"
-                    attrs="{'invisible': ['|', ('state', '!=', 'posted'), ('cfdi_state', '!=', False)]}"/>
-                <button name="substitute_payment" type="object" string="Replace"
+                    attrs="{'invisible': [
+                        '|',
+                        ('state', '!=', 'posted'),
+                        ('cfdi_state', '!=', False)
+                    ]}" />
+                <!--<button name="substitute_payment" type="object" string="Replace"
                     attrs="{'invisible': ['|', ('cfdi_state', 'not in', ['signed', 'done']), ('state', '=', 'cancel')]}"/>
                 <button name="replace_cfdi" type="object" string="Cancel"
                     confirm="Are you sure to cancel this payment?"
-                    attrs="{'invisible': ['|', ('cfdi_state', 'not in', ['signed', 'done']), ('state', '=', 'cancel')]}"/>
+                    attrs="{'invisible': ['|', ('cfdi_state', 'not in', ['signed',
+                    'done']), ('state', '=', 'cancel')]}"/>-->
+            </button>
+            <button name="mark_as_sent" position="after">
+                <field name="show_unreconcile" invisible="1"/>
             </button>
             <xpath expr="//header" position="after">
                 <div
                     class="alert alert-danger"
                     attrs="{'invisible':[
+                        '|',
+                        ('state', '=', 'draft'),
                         (
                             'cfdi_state',
                             'in',
@@ -54,30 +62,54 @@
                         readonly="1" />
                 </div>
             </xpath>
-            <xpath expr="//sheet/h1" position="after">
-                <h4 attrs="{'invisible': [('number','=',False)]}" collspan="2">
+            <xpath expr="//h1[2]" position="after">
+                <h4 collspan="2">
                     <field string="Fiscal Number" name="cfdi_id" readonly="1"/>
                 </h4>
             </xpath>
-            <!-- Hide cancel button when payment have a related CFDI -->
+            <!-- Hide cancel button when payment have a related CFDI
             <xpath expr="//button[@string='Unreconcile']" position="attributes">
                 <attribute name="states" translation="off"></attribute>
                 <attribute name="attrs" translation="off">{'invisible': [('show_unreconcile', '=', False)]}</attribute>
-            </xpath>
-            <xpath expr="//field[@name='name']" position="after">
-                <label for="cfdi_state" string="PAC State" states="posted,signed,cancel" />
-                <div class="o_row" states="posted,signed,cancel">
-                    <field name="cfdi_state" class="oe_inline"/>
+            </xpath>-->
+            <field name="partner_bank_id" position="after">
+                <label
+                    for="cfdi_state"
+                    string="PAC State"
+                    attrs="{
+                        'invisible':[
+                            ('state', '=', 'draft')
+                        ]
+                    }"
+                />
+                <div class="o_row">
+                    <field
+                        name="cfdi_state"
+                        class="oe_inline"
+                        attrs="{
+                            'invisible':[
+                                ('state', '=', 'draft')
+                            ]
+                        }"
+                    />
                     <button name="action_validate_cfdi" string="Retry"
                         class="oe_link oe_inline" type="object"
                         groups="account.group_account_invoice"
-                        attrs="{'invisible':[('cfdi_state', 'in', ['signed', 'cancelled', 'done', False])]}"/>
+                        attrs="{'invisible':[
+                            '|',
+                            ('state', 'in', ['draft', 'cancel', 'waiting']),
+                            (
+                                'cfdi_state',
+                                'in',
+                                ['signed', 'cancel', 'done', 'waiting', False]
+                            )
+                        ]}" />
                 </div>
-            </xpath>
+            </field>
         </field>
     </record>
 
-    <record id="account_payment_view_search" model="ir.ui.view">
+    <!--<record id="account_payment_view_search" model="ir.ui.view">
         <field name="name">account.payment.view.search</field>
         <field name="model">account.payment</field>
         <field name="inherit_id" ref="account_payment.view_payment_filter_customer_pay"/>
@@ -91,7 +123,6 @@
                 <filter string="Signed" domain="[('cfdi_state', 'in', ['signed', 'done'])]" help="Signed payments"/>
             </filter>
         </field>
-    </record>
+    </record>-->
 
-</data>
 </odoo>
-- 
GitLab


From 8ec45fc51ed01094108d395976c83406417970b1 Mon Sep 17 00:00:00 2001
From: "noe.izquierdo" <noe.izquierdo@openpyme.mx>
Date: Tue, 26 Mar 2024 10:44:11 -0600
Subject: [PATCH 03/17] =?UTF-8?q?feat(account.payment):=20se=20corrigen=20?=
 =?UTF-8?q?errores=20para=20la=20validaci=C3=B3n=20de=20pagos?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 l10n_mx_facturae/models/account_payment.py | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

diff --git a/l10n_mx_facturae/models/account_payment.py b/l10n_mx_facturae/models/account_payment.py
index 9c6646fd93..d43314d24f 100644
--- a/l10n_mx_facturae/models/account_payment.py
+++ b/l10n_mx_facturae/models/account_payment.py
@@ -154,18 +154,9 @@ class AccountPayment(models.Model):
         or will use the default behavior"""
         self.ensure_one()
         # We need to give the date in the context to get proper rate
-        voucher_currency = self.journal_id.currency or self.company_id.currency_id
+        voucher_currency = self.journal_id.currency_id or self.company_id.currency_id
         voucher_currency = voucher_currency.with_context(date=self.date)
-        voucher_currency = voucher_currency.with_context(
-            special_currency_rate=(
-                voucher_currency.rate * self.payment_rate
-            ),
-            special_currency=(
-                self.payment_rate_currency_id
-                and self.payment_rate_currency_id.id
-                or False
-            ),
-        )
+
         res = float_round(
             voucher_currency.compute(1.0, self.company_id.currency_id, round=False),
             precision_digits=6,
@@ -300,12 +291,12 @@ class AccountPayment(models.Model):
             if invoice.currency_id == company_currency:
                 # When invoice is in company currency we are going to use payment rate
                 voucher_currency = voucher_currency.with_context(
-                    special_currency_rate=(1 / self.payment_rate),
+                    special_currency_rate=(1 / voucher_currency.rate),
                     special_currency=voucher_currency.id,
                 )
             else:
                 voucher_currency = voucher_currency.with_context(
-                    special_currency_rate=(1 / invoice.currency_rate),
+                    special_currency_rate=(1 / invoice.currency_id.rate),
                     special_currency=invoice.currency_id.id,
                 )
 
@@ -404,7 +395,7 @@ class AccountPayment(models.Model):
                             special_currency=voucher_currency.id,
                         )
                     tax_base = invoice_currency.compute(
-                        tax_move.tax_base, voucher_currency, round=False,
+                        tax_move.tax_base_amount, voucher_currency, round=False,
                     )
                     # Force rounding 6 decimals to use as many decimal as possible and
                     # avoid rounding errors when validating XML
-- 
GitLab


From b992efa470dcd9d29ccdae5cb09a1896ef537b45 Mon Sep 17 00:00:00 2001
From: "noe.izquierdo" <noe.izquierdo@openpyme.mx>
Date: Tue, 26 Mar 2024 16:09:48 -0600
Subject: [PATCH 04/17] =?UTF-8?q?feat(account.move):=20se=20mejora=20la=20?=
 =?UTF-8?q?precisi=C3=B3n=20decimal=20y=20se=20generaliza=20en=20parser=20?=
 =?UTF-8?q?funci=C3=B3n=20format=5Ffloat?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 l10n_mx_facturae/data/account_move.xml        |  4 +--
 l10n_mx_facturae/data/account_payment.xml     |  4 +--
 .../data/ir_attachment_facturae_config.xml    |  4 +--
 l10n_mx_facturae/report/__init__.py           |  1 +
 l10n_mx_facturae/report/account_move.py       | 22 ++++++++++++
 l10n_mx_facturae/report/account_payment.py    | 34 +++++++++----------
 l10n_mx_facturae/templates/account_move.xml   |  8 ++---
 .../templates/account_payment.xml             |  4 +--
 8 files changed, 51 insertions(+), 30 deletions(-)
 create mode 100644 l10n_mx_facturae/report/account_move.py

diff --git a/l10n_mx_facturae/data/account_move.xml b/l10n_mx_facturae/data/account_move.xml
index 47fabd6217..4b2fd495bf 100644
--- a/l10n_mx_facturae/data/account_move.xml
+++ b/l10n_mx_facturae/data/account_move.xml
@@ -6,7 +6,7 @@
         <field name="name">Account Move CFDI XML</field>
         <field name="model">account.move</field>
         <field name="report_type">qweb-xml</field>
-        <field name="report_name">l10n_mx_facturae.account_move_template_cfdi_xml</field>
+        <field name="report_name">l10n_mx_facturae.account_move</field>
         <field name="xml_declaration">true</field>
         <field name="xsd_schema">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjx4czpzY2hlbWEgeG1sbnM6Y2ZkaT0iaHR0cDovL3d3dy5zYXQuZ29iLm14L2NmZC80IiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOmNhdENGREk9Imh0dHA6Ly93d3cuc2F0LmdvYi5teC9zaXRpb19pbnRlcm5ldC9jZmQvY2F0YWxvZ29zIiB4bWxuczp0ZENGREk9Imh0dHA6Ly93d3cuc2F0LmdvYi5teC9zaXRpb19pbnRlcm5ldC9jZmQvdGlwb0RhdG9zL3RkQ0ZESSIgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhdC5nb2IubXgvY2ZkLzQiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiBhdHRyaWJ1dGVGb3JtRGVmYXVsdD0idW5xdWFsaWZpZWQiPg0KCTx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnNhdC5nb2IubXgvc2l0aW9faW50ZXJuZXQvY2ZkL2NhdGFsb2dvcyIgc2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuc2F0LmdvYi5teC9zaXRpb19pbnRlcm5ldC9jZmQvY2F0YWxvZ29zL2NhdENGREkueHNkIi8+DQoJPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cuc2F0LmdvYi5teC9zaXRpb19pbnRlcm5ldC9jZmQvdGlwb0RhdG9zL3RkQ0ZESSIgc2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuc2F0LmdvYi5teC9zaXRpb19pbnRlcm5ldC9jZmQvdGlwb0RhdG9zL3RkQ0ZESS90ZENGREkueHNkIi8+DQoJPHhzOmVsZW1lbnQgbmFtZT0iQ29tcHJvYmFudGUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPkVzdMOhbmRhciBkZSBDb21wcm9iYW50ZSBGaXNjYWwgRGlnaXRhbCBwb3IgSW50ZXJuZXQuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4VHlwZT4NCgkJCTx4czpzZXF1ZW5jZT4NCgkJCQk8eHM6ZWxlbWVudCBuYW1lPSJJbmZvcm1hY2lvbkdsb2JhbCIgbWluT2NjdXJzPSIwIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIGNvbmRpY2lvbmFsIHBhcmEgcHJlY2lzYXIgbGEgaW5mb3JtYWNpw7NuIHJlbGFjaW9uYWRhIGNvbiBlbCBjb21wcm9iYW50ZSBnbG9iYWwuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iUGVyaW9kaWNpZGFkIiB0eXBlPSJjYXRDRkRJOmNfUGVyaW9kaWNpZGFkIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgZWwgcGVyw61vZG8gYWwgcXVlIGNvcnJlc3BvbmRlIGxhIGluZm9ybWFjacOzbiBkZWwgY29tcHJvYmFudGUgZ2xvYmFsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTWVzZXMiIHR5cGU9ImNhdENGREk6Y19NZXNlcyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIGVsIG1lcyBvIGxvcyBtZXNlcyBhbCBxdWUgY29ycmVzcG9uZGUgbGEgaW5mb3JtYWNpw7NuIGRlbCBjb21wcm9iYW50ZSBnbG9iYWwuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJBw7FvIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgZWwgYcOxbyBhbCBxdWUgY29ycmVzcG9uZGUgbGEgaW5mb3JtYWNpw7NuIGRlbCBjb21wcm9iYW50ZSBnbG9iYWwuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnNob3J0Ij4NCgkJCQkJCQkJCTx4czptaW5JbmNsdXNpdmUgdmFsdWU9IjIwMjEiLz4NCgkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCTwveHM6ZWxlbWVudD4NCgkJCQk8eHM6ZWxlbWVudCBuYW1lPSJDZmRpUmVsYWNpb25hZG9zIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIHBhcmEgcHJlY2lzYXIgbGEgaW5mb3JtYWNpw7NuIGRlIGxvcyBjb21wcm9iYW50ZXMgcmVsYWNpb25hZG9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6Y29tcGxleFR5cGU+DQoJCQkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iQ2ZkaVJlbGFjaW9uYWRvIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyByZXF1ZXJpZG8gcGFyYSBwcmVjaXNhciBsYSBpbmZvcm1hY2nDs24gZGUgbG9zIGNvbXByb2JhbnRlcyByZWxhY2lvbmFkb3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iVVVJRCIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHJlZ2lzdHJhciBlbCBmb2xpbyBmaXNjYWwgKFVVSUQpIGRlIHVuIENGREkgcmVsYWNpb25hZG8gY29uIGVsIHByZXNlbnRlIGNvbXByb2JhbnRlLCBwb3IgZWplbXBsbzogU2kgZWwgQ0ZESSByZWxhY2lvbmFkbyBlcyB1biBjb21wcm9iYW50ZSBkZSB0cmFzbGFkbyBxdWUgc2lydmUgcGFyYSByZWdpc3RyYXIgZWwgbW92aW1pZW50byBkZSBsYSBtZXJjYW5jw61hLiBTaSBlc3RlIGNvbXByb2JhbnRlIHNlIHVzYSBjb21vIG5vdGEgZGUgY3LDqWRpdG8gbyBub3RhIGRlIGTDqWJpdG8gZGVsIGNvbXByb2JhbnRlIHJlbGFjaW9uYWRvLiBTaSBlc3RlIGNvbXByb2JhbnRlIGVzIHVuYSBkZXZvbHVjacOzbiBzb2JyZSBlbCBjb21wcm9iYW50ZSByZWxhY2lvbmFkby4gU2kgw6lzdGUgc3VzdGl0dXllIGEgdW5hIGZhY3R1cmEgY2FuY2VsYWRhLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJPHhzOmxlbmd0aCB2YWx1ZT0iMzYiLz4NCgkJCQkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQkJCQkJPHhzOnBhdHRlcm4gdmFsdWU9IlthLWYwLTlBLUZdezh9LVthLWYwLTlBLUZdezR9LVthLWYwLTlBLUZdezR9LVthLWYwLTlBLUZdezR9LVthLWYwLTlBLUZdezEyfSIvPg0KCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlRpcG9SZWxhY2lvbiIgdHlwZT0iY2F0Q0ZESTpjX1RpcG9SZWxhY2lvbiIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGluZGljYXIgbGEgY2xhdmUgZGUgbGEgcmVsYWNpw7NuIHF1ZSBleGlzdGUgZW50cmUgw6lzdGUgcXVlIHNlIGVzdMOhIGdlbmVyYW5kbyB5IGVsIG8gbG9zIENGREkgcHJldmlvcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCTwveHM6Y29tcGxleFR5cGU+DQoJCQkJPC94czplbGVtZW50Pg0KCQkJCTx4czplbGVtZW50IG5hbWU9IkVtaXNvciI+DQoJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyByZXF1ZXJpZG8gcGFyYSBleHByZXNhciBsYSBpbmZvcm1hY2nDs24gZGVsIGNvbnRyaWJ1eWVudGUgZW1pc29yIGRlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZmMiIHR5cGU9InRkQ0ZESTp0X1JGQyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHJlZ2lzdHJhciBsYSBDbGF2ZSBkZWwgUmVnaXN0cm8gRmVkZXJhbCBkZSBDb250cmlidXllbnRlcyBjb3JyZXNwb25kaWVudGUgYWwgY29udHJpYnV5ZW50ZSBlbWlzb3IgZGVsIGNvbXByb2JhbnRlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTm9tYnJlIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgcmVnaXN0cmFyIGVsIG5vbWJyZSwgZGVub21pbmFjacOzbiBvIHJhesOzbiBzb2NpYWwgZGVsIGNvbnRyaWJ1eWVudGUgaW5zY3JpdG8gZW4gZWwgUkZDLCBkZWwgZW1pc29yIGRlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjMwMCIvPg0KCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDMwMH0iLz4NCgkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iUmVnaW1lbkZpc2NhbCIgdHlwZT0iY2F0Q0ZESTpjX1JlZ2ltZW5GaXNjYWwiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBpbmNvcnBvcmFyIGxhIGNsYXZlIGRlbCByw6lnaW1lbiBkZWwgY29udHJpYnV5ZW50ZSBlbWlzb3IgYWwgcXVlIGFwbGljYXLDoSBlbCBlZmVjdG8gZmlzY2FsIGRlIGVzdGUgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJGYWNBdHJBZHF1aXJlbnRlIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSBleHByZXNhciBlbCBuw7ptZXJvIGRlIG9wZXJhY2nDs24gcHJvcG9yY2lvbmFkbyBwb3IgZWwgU0FUIGN1YW5kbyBzZSB0cmF0ZSBkZSB1biBjb21wcm9iYW50ZSBhIHRyYXbDqXMgZGUgdW4gUENFQ0ZESSBvIHVuIFBDR0NGRElTUC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQkJPHhzOmxlbmd0aCB2YWx1ZT0iMTAiLz4NCgkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbMC05XXsxMH0iLz4NCgkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJPHhzOmVsZW1lbnQgbmFtZT0iUmVjZXB0b3IiPg0KCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gcmVxdWVyaWRvIHBhcmEgcHJlY2lzYXIgbGEgaW5mb3JtYWNpw7NuIGRlbCBjb250cmlidXllbnRlIHJlY2VwdG9yIGRlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZmMiIHR5cGU9InRkQ0ZESTp0X1JGQyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHJlZ2lzdHJhciBsYSBDbGF2ZSBkZWwgUmVnaXN0cm8gRmVkZXJhbCBkZSBDb250cmlidXllbnRlcyBjb3JyZXNwb25kaWVudGUgYWwgY29udHJpYnV5ZW50ZSByZWNlcHRvciBkZWwgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJOb21icmUiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSByZWdpc3RyYXIgZWwgbm9tYnJlKHMpLCBwcmltZXIgYXBlbGxpZG8sIHNlZ3VuZG8gYXBlbGxpZG8sIHNlZ8O6biBjb3JyZXNwb25kYSwgZGVub21pbmFjacOzbiBvIHJhesOzbiBzb2NpYWwgZGVsIGNvbnRyaWJ1eWVudGUsIGluc2NyaXRvIGVuIGVsIFJGQywgZGVsIHJlY2VwdG9yIGRlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjMwMCIvPg0KCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDMwMH0iLz4NCgkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iRG9taWNpbGlvRmlzY2FsUmVjZXB0b3IiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSByZWdpc3RyYXIgZWwgY8OzZGlnbyBwb3N0YWwgZGVsIGRvbWljaWxpbyBmaXNjYWwgZGVsIHJlY2VwdG9yIGRlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCTx4czpsZW5ndGggdmFsdWU9IjUiLz4NCgkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQkJPHhzOnBhdHRlcm4gdmFsdWU9IlswLTldezV9Ii8+DQoJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlJlc2lkZW5jaWFGaXNjYWwiIHR5cGU9ImNhdENGREk6Y19QYWlzIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSByZWdpc3RyYXIgbGEgY2xhdmUgZGVsIHBhw61zIGRlIHJlc2lkZW5jaWEgcGFyYSBlZmVjdG9zIGZpc2NhbGVzIGRlbCByZWNlcHRvciBkZWwgY29tcHJvYmFudGUsIGN1YW5kbyBzZSB0cmF0ZSBkZSB1biBleHRyYW5qZXJvLCB5IHF1ZSBlcyBjb25mb3JtZSBjb24gbGEgZXNwZWNpZmljYWNpw7NuIElTTyAzMTY2LTEgYWxwaGEtMy4gRXMgcmVxdWVyaWRvIGN1YW5kbyBzZSBpbmNsdXlhIGVsIGNvbXBsZW1lbnRvIGRlIGNvbWVyY2lvIGV4dGVyaW9yIG8gc2UgcmVnaXN0cmUgZWwgYXRyaWJ1dG8gTnVtUmVnSWRUcmliLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTnVtUmVnSWRUcmliIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSBleHByZXNhciBlbCBuw7ptZXJvIGRlIHJlZ2lzdHJvIGRlIGlkZW50aWRhZCBmaXNjYWwgZGVsIHJlY2VwdG9yIGN1YW5kbyBzZWEgcmVzaWRlbnRlIGVuIGVsIGV4dHJhbmplcm8uIEVzIHJlcXVlcmlkbyBjdWFuZG8gc2UgaW5jbHV5YSBlbCBjb21wbGVtZW50byBkZSBjb21lcmNpbyBleHRlcmlvci48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjQwIi8+DQoJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iUmVnaW1lbkZpc2NhbFJlY2VwdG9yIiB0eXBlPSJjYXRDRkRJOmNfUmVnaW1lbkZpc2NhbCIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGluY29ycG9yYXIgbGEgY2xhdmUgZGVsIHLDqWdpbWVuIGZpc2NhbCBkZWwgY29udHJpYnV5ZW50ZSByZWNlcHRvciBhbCBxdWUgYXBsaWNhcsOhIGVsIGVmZWN0byBmaXNjYWwgZGUgZXN0ZSBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlVzb0NGREkiIHR5cGU9ImNhdENGREk6Y19Vc29DRkRJIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgbGEgY2xhdmUgZGVsIHVzbyBxdWUgZGFyw6EgYSBlc3RhIGZhY3R1cmEgZWwgcmVjZXB0b3IgZGVsIENGREkuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCTwveHM6ZWxlbWVudD4NCgkJCQk8eHM6ZWxlbWVudCBuYW1lPSJDb25jZXB0b3MiPg0KCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gcmVxdWVyaWRvIHBhcmEgbGlzdGFyIGxvcyBjb25jZXB0b3MgY3ViaWVydG9zIHBvciBlbCBjb21wcm9iYW50ZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IkNvbmNlcHRvIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyByZXF1ZXJpZG8gcGFyYSByZWdpc3RyYXIgbGEgaW5mb3JtYWNpw7NuIGRldGFsbGFkYSBkZSB1biBiaWVuIG8gc2VydmljaW8gYW1wYXJhZG8gZW4gZWwgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJJbXB1ZXN0b3MiIG1pbk9jY3Vycz0iMCI+DQoJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyBjb25kaWNpb25hbCBwYXJhIGNhcHR1cmFyIGxvcyBpbXB1ZXN0b3MgYXBsaWNhYmxlcyBhbCBwcmVzZW50ZSBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IlRyYXNsYWRvcyIgbWluT2NjdXJzPSIwIj4NCgkJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIHBhcmEgYXNlbnRhciBsb3MgaW1wdWVzdG9zIHRyYXNsYWRhZG9zIGFwbGljYWJsZXMgYWwgcHJlc2VudGUgY29uY2VwdG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJUcmFzbGFkbyIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gcmVxdWVyaWRvIHBhcmEgYXNlbnRhciBsYSBpbmZvcm1hY2nDs24gZGV0YWxsYWRhIGRlIHVuIHRyYXNsYWRvIGRlIGltcHVlc3RvcyBhcGxpY2FibGUgYWwgcHJlc2VudGUgY29uY2VwdG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQmFzZSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIGJhc2UgcGFyYSBlbCBjw6FsY3VsbyBkZWwgaW1wdWVzdG8sIGxhIGRldGVybWluYWNpw7NuIGRlIGxhIGJhc2Ugc2UgcmVhbGl6YSBkZSBhY3VlcmRvIGNvbiBsYXMgZGlzcG9zaWNpb25lcyBmaXNjYWxlcyB2aWdlbnRlcy4gTm8gc2UgcGVybWl0ZW4gdmFsb3JlcyBuZWdhdGl2b3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmRlY2ltYWwiPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmZyYWN0aW9uRGlnaXRzIHZhbHVlPSI2Ii8+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwLjAwMDAwMSIvPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkltcHVlc3RvIiB0eXBlPSJjYXRDRkRJOmNfSW1wdWVzdG8iIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBzZcOxYWxhciBsYSBjbGF2ZSBkZWwgdGlwbyBkZSBpbXB1ZXN0byB0cmFzbGFkYWRvIGFwbGljYWJsZSBhbCBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlRpcG9GYWN0b3IiIHR5cGU9ImNhdENGREk6Y19UaXBvRmFjdG9yIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgc2XDsWFsYXIgbGEgY2xhdmUgZGVsIHRpcG8gZGUgZmFjdG9yIHF1ZSBzZSBhcGxpY2EgYSBsYSBiYXNlIGRlbCBpbXB1ZXN0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlRhc2FPQ3VvdGEiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBjb25kaWNpb25hbCBwYXJhIHNlw7FhbGFyIGVsIHZhbG9yIGRlIGxhIHRhc2EgbyBjdW90YSBkZWwgaW1wdWVzdG8gcXVlIHNlIHRyYXNsYWRhIHBhcmEgZWwgcHJlc2VudGUgY29uY2VwdG8uIEVzIHJlcXVlcmlkbyBjdWFuZG8gZWwgYXRyaWJ1dG8gVGlwb0ZhY3RvciB0ZW5nYSB1bmEgY2xhdmUgcXVlIGNvcnJlc3BvbmRhIGEgVGFzYSBvIEN1b3RhLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpkZWNpbWFsIj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpmcmFjdGlvbkRpZ2l0cyB2YWx1ZT0iNiIvPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOm1pbkluY2x1c2l2ZSB2YWx1ZT0iMC4wMDAwMDAiLz4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJJbXBvcnRlIiB0eXBlPSJ0ZENGREk6dF9JbXBvcnRlIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSBzZcOxYWxhciBlbCBpbXBvcnRlIGRlbCBpbXB1ZXN0byB0cmFzbGFkYWRvIHF1ZSBhcGxpY2EgYWwgY29uY2VwdG8uIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLiBFcyByZXF1ZXJpZG8gY3VhbmRvIFRpcG9GYWN0b3Igc2VhIFRhc2EgbyBDdW90YS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQkJCQkJCTwveHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQkJCQkJCQkJPC94czplbGVtZW50Pg0KCQkJCQkJCQkJCQkJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iUmV0ZW5jaW9uZXMiIG1pbk9jY3Vycz0iMCI+DQoJCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyBvcGNpb25hbCBwYXJhIGFzZW50YXIgbG9zIGltcHVlc3RvcyByZXRlbmlkb3MgYXBsaWNhYmxlcyBhbCBwcmVzZW50ZSBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCQkJCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IlJldGVuY2lvbiIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gcmVxdWVyaWRvIHBhcmEgYXNlbnRhciBsYSBpbmZvcm1hY2nDs24gZGV0YWxsYWRhIGRlIHVuYSByZXRlbmNpw7NuIGRlIGltcHVlc3RvcyBhcGxpY2FibGUgYWwgcHJlc2VudGUgY29uY2VwdG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQmFzZSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIGJhc2UgcGFyYSBlbCBjw6FsY3VsbyBkZSBsYSByZXRlbmNpw7NuLCBsYSBkZXRlcm1pbmFjacOzbiBkZSBsYSBiYXNlIHNlIHJlYWxpemEgZGUgYWN1ZXJkbyBjb24gbGFzIGRpc3Bvc2ljaW9uZXMgZmlzY2FsZXMgdmlnZW50ZXMuIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpkZWNpbWFsIj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpmcmFjdGlvbkRpZ2l0cyB2YWx1ZT0iNiIvPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOm1pbkluY2x1c2l2ZSB2YWx1ZT0iMC4wMDAwMDEiLz4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJJbXB1ZXN0byIgdHlwZT0iY2F0Q0ZESTpjX0ltcHVlc3RvIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgc2XDsWFsYXIgbGEgY2xhdmUgZGVsIHRpcG8gZGUgaW1wdWVzdG8gcmV0ZW5pZG8gYXBsaWNhYmxlIGFsIGNvbmNlcHRvLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iVGlwb0ZhY3RvciIgdHlwZT0iY2F0Q0ZESTpjX1RpcG9GYWN0b3IiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBzZcOxYWxhciBsYSBjbGF2ZSBkZWwgdGlwbyBkZSBmYWN0b3IgcXVlIHNlIGFwbGljYSBhIGxhIGJhc2UgZGVsIGltcHVlc3RvLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iVGFzYU9DdW90YSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIHRhc2EgbyBjdW90YSBkZWwgaW1wdWVzdG8gcXVlIHNlIHJldGllbmUgcGFyYSBlbCBwcmVzZW50ZSBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZGVjaW1hbCI+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czptaW5JbmNsdXNpdmUgdmFsdWU9IjAuMDAwMDAwIi8+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCQk8eHM6ZnJhY3Rpb25EaWdpdHMgdmFsdWU9IjYiLz4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iSW1wb3J0ZSIgdHlwZT0idGRDRkRJOnRfSW1wb3J0ZSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGVsIGltcG9ydGUgZGVsIGltcHVlc3RvIHJldGVuaWRvIHF1ZSBhcGxpY2EgYWwgY29uY2VwdG8uIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQkJCQkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCQkJCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCQkJCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJCQkJCQkJCTwveHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQkJPC94czplbGVtZW50Pg0KCQkJCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IkFDdWVudGFUZXJjZXJvcyIgbWluT2NjdXJzPSIwIj4NCgkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIHBhcmEgcmVnaXN0cmFyIGluZm9ybWFjacOzbiBkZWwgY29udHJpYnV5ZW50ZSBUZXJjZXJvLCBhIGN1ZW50YSBkZWwgcXVlIHNlIHJlYWxpemEgbGEgb3BlcmFjacOzbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZmNBQ3VlbnRhVGVyY2Vyb3MiIHR5cGU9InRkQ0ZESTp0X1JGQyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHJlZ2lzdHJhciBsYSBDbGF2ZSBkZWwgUmVnaXN0cm8gRmVkZXJhbCBkZSBDb250cmlidXllbnRlcyBkZWwgY29udHJpYnV5ZW50ZSBUZXJjZXJvLCBhIGN1ZW50YSBkZWwgcXVlIHNlIHJlYWxpemEgbGEgb3BlcmFjacOzbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Ik5vbWJyZUFDdWVudGFUZXJjZXJvcyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHJlZ2lzdHJhciBlbCBub21icmUsIGRlbm9taW5hY2nDs24gbyByYXrDs24gc29jaWFsIGRlbCBjb250cmlidXllbnRlIFRlcmNlcm8gY29ycmVzcG9uZGllbnRlIGNvbiBlbCBSZmMsIGEgY3VlbnRhIGRlbCBxdWUgc2UgcmVhbGl6YSBsYSBvcGVyYWNpw7NuLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1pbkxlbmd0aCB2YWx1ZT0iMSIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1heExlbmd0aCB2YWx1ZT0iMzAwIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsMzAwfSIvPg0KCQkJCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZWdpbWVuRmlzY2FsQUN1ZW50YVRlcmNlcm9zIiB0eXBlPSJjYXRDRkRJOmNfUmVnaW1lbkZpc2NhbCIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGluY29ycG9yYXIgbGEgY2xhdmUgZGVsIHLDqWdpbWVuIGRlbCBjb250cmlidXllbnRlIFRlcmNlcm8sIGEgY3VlbnRhIGRlbCBxdWUgc2UgcmVhbGl6YSBsYSBvcGVyYWNpw7NuLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iRG9taWNpbGlvRmlzY2FsQUN1ZW50YVRlcmNlcm9zIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgaW5jb3Jwb3JhciBlbCBjw7NkaWdvIHBvc3RhbCBkZWwgZG9taWNpbGlvIGZpc2NhbCBkZWwgVGVyY2VybywgYSBjdWVudGEgZGVsIHF1ZSBzZSByZWFsaXphIGxhIG9wZXJhY2nDs24uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQoJCQkJCQkJCQkJCQkJCQk8eHM6bGVuZ3RoIHZhbHVlPSI1Ii8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbMC05XXs1fSIvPg0KCQkJCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJJbmZvcm1hY2lvbkFkdWFuZXJhIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCgkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIHBhcmEgaW50cm9kdWNpciBsYSBpbmZvcm1hY2nDs24gYWR1YW5lcmEgYXBsaWNhYmxlIGN1YW5kbyBzZSB0cmF0ZSBkZSB2ZW50YXMgZGUgcHJpbWVyYSBtYW5vIGRlIG1lcmNhbmPDrWFzIGltcG9ydGFkYXMgbyBzZSB0cmF0ZSBkZSBvcGVyYWNpb25lcyBkZSBjb21lcmNpbyBleHRlcmlvciBjb24gYmllbmVzIG8gc2VydmljaW9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQk8eHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Ik51bWVyb1BlZGltZW50byIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIGVsIG7Dum1lcm8gZGVsIHBlZGltZW50byBxdWUgYW1wYXJhIGxhIGltcG9ydGFjacOzbiBkZWwgYmllbiBxdWUgc2UgZXhwcmVzYSBlbiBlbCBzaWd1aWVudGUgZm9ybWF0bzogw7psdGltb3MgMiBkw61naXRvcyBkZWwgYcOxbyBkZSB2YWxpZGFjacOzbiBzZWd1aWRvcyBwb3IgZG9zIGVzcGFjaW9zLCAyIGTDrWdpdG9zIGRlIGxhIGFkdWFuYSBkZSBkZXNwYWNobyBzZWd1aWRvcyBwb3IgZG9zIGVzcGFjaW9zLCA0IGTDrWdpdG9zIGRlbCBuw7ptZXJvIGRlIGxhIHBhdGVudGUgc2VndWlkb3MgcG9yIGRvcyBlc3BhY2lvcywgMSBkw61naXRvIHF1ZSBjb3JyZXNwb25kZSBhbCDDumx0aW1vIGTDrWdpdG8gZGVsIGHDsW8gZW4gY3Vyc28sIHNhbHZvIHF1ZSBzZSB0cmF0ZSBkZSB1biBwZWRpbWVudG8gY29uc29saWRhZG8gaW5pY2lhZG8gZW4gZWwgYcOxbyBpbm1lZGlhdG8gYW50ZXJpb3IgbyBkZWwgcGVkaW1lbnRvIG9yaWdpbmFsIGRlIHVuYSByZWN0aWZpY2FjacOzbiwgc2VndWlkbyBkZSA2IGTDrWdpdG9zIGRlIGxhIG51bWVyYWNpw7NuIHByb2dyZXNpdmEgcG9yIGFkdWFuYS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCQkJCQkJCTx4czpsZW5ndGggdmFsdWU9IjIxIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iWzAtOV17Mn0gIFswLTldezJ9ICBbMC05XXs0fSAgWzAtOV17N30iLz4NCgkJCQkJCQkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iQ3VlbnRhUHJlZGlhbCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+Tm9kbyBvcGNpb25hbCBwYXJhIGFzZW50YXIgZWwgbsO6bWVybyBkZSBjdWVudGEgcHJlZGlhbCBjb24gZWwgcXVlIGZ1ZSByZWdpc3RyYWRvIGVsIGlubXVlYmxlLCBlbiBlbCBzaXN0ZW1hIGNhdGFzdHJhbCBkZSBsYSBlbnRpZGFkIGZlZGVyYXRpdmEgZGUgcXVlIHRyYXRlLCBvIGJpZW4gcGFyYSBpbmNvcnBvcmFyIGxvcyBkYXRvcyBkZSBpZGVudGlmaWNhY2nDs24gZGVsIGNlcnRpZmljYWRvIGRlIHBhcnRpY2lwYWNpw7NuIGlubW9iaWxpYXJpYSBubyBhbW9ydGl6YWJsZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJOdW1lcm8iIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBwcmVjaXNhciBlbCBuw7ptZXJvIGRlIGxhIGN1ZW50YSBwcmVkaWFsIGRlbCBpbm11ZWJsZSBjdWJpZXJ0byBwb3IgZWwgcHJlc2VudGUgY29uY2VwdG8sIG8gYmllbiBwYXJhIGluY29ycG9yYXIgbG9zIGRhdG9zIGRlIGlkZW50aWZpY2FjacOzbiBkZWwgY2VydGlmaWNhZG8gZGUgcGFydGljaXBhY2nDs24gaW5tb2JpbGlhcmlhIG5vIGFtb3J0aXphYmxlLCB0cmF0w6FuZG9zZSBkZSBhcnJlbmRhbWllbnRvLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1pbkxlbmd0aCB2YWx1ZT0iMSIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1heExlbmd0aCB2YWx1ZT0iMTUwIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbMC05YS16QS1aXXsxLDE1MH0iLz4NCgkJCQkJCQkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iQ29tcGxlbWVudG9Db25jZXB0byIgbWluT2NjdXJzPSIwIj4NCgkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIGRvbmRlIHNlIGluY2x1eWVuIGxvcyBub2RvcyBjb21wbGVtZW50YXJpb3MgZGUgZXh0ZW5zacOzbiBhbCBjb25jZXB0byBkZWZpbmlkb3MgcG9yIGVsIFNBVCwgZGUgYWN1ZXJkbyBjb24gbGFzIGRpc3Bvc2ljaW9uZXMgcGFydGljdWxhcmVzIHBhcmEgdW4gc2VjdG9yIG8gYWN0aXZpZGFkIGVzcGVjw61maWNhLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQk8eHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCQkJCQkJCQkJPHhzOmFueSBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KCQkJCQkJCQkJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iUGFydGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gb3BjaW9uYWwgcGFyYSBleHByZXNhciBsYXMgcGFydGVzIG8gY29tcG9uZW50ZXMgcXVlIGludGVncmFuIGxhIHRvdGFsaWRhZCBkZWwgY29uY2VwdG8gZXhwcmVzYWRvIGVuIGVsIGNvbXByb2JhbnRlIGZpc2NhbCBkaWdpdGFsIHBvciBJbnRlcm5ldC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IkluZm9ybWFjaW9uQWR1YW5lcmEiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gb3BjaW9uYWwgcGFyYSBpbnRyb2R1Y2lyIGxhIGluZm9ybWFjacOzbiBhZHVhbmVyYSBhcGxpY2FibGUgY3VhbmRvIHNlIHRyYXRlIGRlIHZlbnRhcyBkZSBwcmltZXJhIG1hbm8gZGUgbWVyY2FuY8OtYXMgaW1wb3J0YWRhcyBvIHNlIHRyYXRlIGRlIG9wZXJhY2lvbmVzIGRlIGNvbWVyY2lvIGV4dGVyaW9yIGNvbiBiaWVuZXMgbyBzZXJ2aWNpb3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTnVtZXJvUGVkaW1lbnRvIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgZWwgbsO6bWVybyBkZWwgcGVkaW1lbnRvIHF1ZSBhbXBhcmEgbGEgaW1wb3J0YWNpw7NuIGRlbCBiaWVuIHF1ZSBzZSBleHByZXNhIGVuIGVsIHNpZ3VpZW50ZSBmb3JtYXRvOiDDumx0aW1vcyAyIGTDrWdpdG9zIGRlbCBhw7FvIGRlIHZhbGlkYWNpw7NuIHNlZ3VpZG9zIHBvciBkb3MgZXNwYWNpb3MsIDIgZMOtZ2l0b3MgZGUgbGEgYWR1YW5hIGRlIGRlc3BhY2hvIHNlZ3VpZG9zIHBvciBkb3MgZXNwYWNpb3MsIDQgZMOtZ2l0b3MgZGVsIG7Dum1lcm8gZGUgbGEgcGF0ZW50ZSBzZWd1aWRvcyBwb3IgZG9zIGVzcGFjaW9zLCAxIGTDrWdpdG8gcXVlIGNvcnJlc3BvbmRlIGFsIMO6bHRpbW8gZMOtZ2l0byBkZWwgYcOxbyBlbiBjdXJzbywgc2Fsdm8gcXVlIHNlIHRyYXRlIGRlIHVuIHBlZGltZW50byBjb25zb2xpZGFkbyBpbmljaWFkbyBlbiBlbCBhw7FvIGlubWVkaWF0byBhbnRlcmlvciBvIGRlbCBwZWRpbWVudG8gb3JpZ2luYWwgZGUgdW5hIHJlY3RpZmljYWNpw7NuLCBzZWd1aWRvIGRlIDYgZMOtZ2l0b3MgZGUgbGEgbnVtZXJhY2nDs24gcHJvZ3Jlc2l2YSBwb3IgYWR1YW5hLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJCQkJCQkJPHhzOmxlbmd0aCB2YWx1ZT0iMjEiLz4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbMC05XXsyfSAgWzAtOV17Mn0gIFswLTldezR9ICBbMC05XXs3fSIvPg0KCQkJCQkJCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCQkJCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkNsYXZlUHJvZFNlcnYiIHR5cGU9ImNhdENGREk6Y19DbGF2ZVByb2RTZXJ2IiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgbGEgY2xhdmUgZGVsIHByb2R1Y3RvIG8gZGVsIHNlcnZpY2lvIGFtcGFyYWRvIHBvciBsYSBwcmVzZW50ZSBwYXJ0ZS4gRXMgcmVxdWVyaWRvIHkgZGViZW4gdXRpbGl6YXIgbGFzIGNsYXZlcyBkZWwgY2F0w6Fsb2dvIGRlIHByb2R1Y3RvcyB5IHNlcnZpY2lvcywgY3VhbmRvIGxvcyBjb25jZXB0b3MgcXVlIHJlZ2lzdHJlbiBwb3Igc3VzIGFjdGl2aWRhZGVzIGNvcnJlc3BvbmRhbiBjb24gZGljaG9zIGNvbmNlcHRvcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Ik5vSWRlbnRpZmljYWNpb24iIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBvcGNpb25hbCBwYXJhIGV4cHJlc2FyIGVsIG7Dum1lcm8gZGUgc2VyaWUsIG7Dum1lcm8gZGUgcGFydGUgZGVsIGJpZW4gbyBpZGVudGlmaWNhZG9yIGRlbCBwcm9kdWN0byBvIGRlbCBzZXJ2aWNpbyBhbXBhcmFkbyBwb3IgbGEgcHJlc2VudGUgcGFydGUuIE9wY2lvbmFsbWVudGUgc2UgcHVlZGUgdXRpbGl6YXIgY2xhdmVzIGRlbCBlc3TDoW5kYXIgR1RJTi48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjEwMCIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDEwMH0iLz4NCgkJCQkJCQkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQ2FudGlkYWQiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBwcmVjaXNhciBsYSBjYW50aWRhZCBkZSBiaWVuZXMgbyBzZXJ2aWNpb3MgZGVsIHRpcG8gcGFydGljdWxhciBkZWZpbmlkbyBwb3IgbGEgcHJlc2VudGUgcGFydGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmRlY2ltYWwiPg0KCQkJCQkJCQkJCQkJCQkJPHhzOmZyYWN0aW9uRGlnaXRzIHZhbHVlPSI2Ii8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwLjAwMDAwMSIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlVuaWRhZCIgdXNlPSJvcHRpb25hbCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIG9wY2lvbmFsIHBhcmEgcHJlY2lzYXIgbGEgdW5pZGFkIGRlIG1lZGlkYSBwcm9waWEgZGUgbGEgb3BlcmFjacOzbiBkZWwgZW1pc29yLCBhcGxpY2FibGUgcGFyYSBsYSBjYW50aWRhZCBleHByZXNhZGEgZW4gbGEgcGFydGUuIExhIHVuaWRhZCBkZWJlIGNvcnJlc3BvbmRlciBjb24gbGEgZGVzY3JpcGNpw7NuIGRlIGxhIHBhcnRlLiA8L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjIwIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsMjB9Ii8+DQoJCQkJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkRlc2NyaXBjaW9uIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgcHJlY2lzYXIgbGEgZGVzY3JpcGNpw7NuIGRlbCBiaWVuIG8gc2VydmljaW8gY3ViaWVydG8gcG9yIGxhIHByZXNlbnRlIHBhcnRlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1pbkxlbmd0aCB2YWx1ZT0iMSIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOm1heExlbmd0aCB2YWx1ZT0iMTAwMCIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDEwMDB9Ii8+DQoJCQkJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlZhbG9yVW5pdGFyaW8iIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBvcGNpb25hbCBwYXJhIHByZWNpc2FyIGVsIHZhbG9yIG8gcHJlY2lvIHVuaXRhcmlvIGRlbCBiaWVuIG8gc2VydmljaW8gY3ViaWVydG8gcG9yIGxhIHByZXNlbnRlIHBhcnRlLiBObyBzZSBwZXJtaXRlbiB2YWxvcmVzIG5lZ2F0aXZvcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkltcG9ydGUiIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBvcGNpb25hbCBwYXJhIHByZWNpc2FyIGVsIGltcG9ydGUgdG90YWwgZGUgbG9zIGJpZW5lcyBvIHNlcnZpY2lvcyBkZSBsYSBwcmVzZW50ZSBwYXJ0ZS4gRGViZSBzZXIgZXF1aXZhbGVudGUgYWwgcmVzdWx0YWRvIGRlIG11bHRpcGxpY2FyIGxhIGNhbnRpZGFkIHBvciBlbCB2YWxvciB1bml0YXJpbyBleHByZXNhZG8gZW4gbGEgcGFydGUuIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJDbGF2ZVByb2RTZXJ2IiB0eXBlPSJjYXRDRkRJOmNfQ2xhdmVQcm9kU2VydiIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIGxhIGNsYXZlIGRlbCBwcm9kdWN0byBvIGRlbCBzZXJ2aWNpbyBhbXBhcmFkbyBwb3IgZWwgcHJlc2VudGUgY29uY2VwdG8uIEVzIHJlcXVlcmlkbyB5IGRlYmVuIHV0aWxpemFyIGxhcyBjbGF2ZXMgZGVsIGNhdMOhbG9nbyBkZSBwcm9kdWN0b3MgeSBzZXJ2aWNpb3MsIGN1YW5kbyBsb3MgY29uY2VwdG9zIHF1ZSByZWdpc3RyZW4gcG9yIHN1cyBhY3RpdmlkYWRlcyBjb3JyZXNwb25kYW4gY29uIGRpY2hvcyBjb25jZXB0b3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJOb0lkZW50aWZpY2FjaW9uIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gb3BjaW9uYWwgcGFyYSBleHByZXNhciBlbCBuw7ptZXJvIGRlIHBhcnRlLCBpZGVudGlmaWNhZG9yIGRlbCBwcm9kdWN0byBvIGRlbCBzZXJ2aWNpbywgbGEgY2xhdmUgZGUgcHJvZHVjdG8gbyBzZXJ2aWNpbywgU0tVIG8gZXF1aXZhbGVudGUsIHByb3BpYSBkZSBsYSBvcGVyYWNpw7NuIGRlbCBlbWlzb3IsIGFtcGFyYWRvIHBvciBlbCBwcmVzZW50ZSBjb25jZXB0by4gT3BjaW9uYWxtZW50ZSBzZSBwdWVkZSB1dGlsaXphciBjbGF2ZXMgZGVsIGVzdMOhbmRhciBHVElOLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQk8eHM6bWluTGVuZ3RoIHZhbHVlPSIxIi8+DQoJCQkJCQkJCQkJCQk8eHM6bWF4TGVuZ3RoIHZhbHVlPSIxMDAiLz4NCgkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsMTAwfSIvPg0KCQkJCQkJCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCQkJCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJDYW50aWRhZCIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHByZWNpc2FyIGxhIGNhbnRpZGFkIGRlIGJpZW5lcyBvIHNlcnZpY2lvcyBkZWwgdGlwbyBwYXJ0aWN1bGFyIGRlZmluaWRvIHBvciBlbCBwcmVzZW50ZSBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZGVjaW1hbCI+DQoJCQkJCQkJCQkJCQk8eHM6ZnJhY3Rpb25EaWdpdHMgdmFsdWU9IjYiLz4NCgkJCQkJCQkJCQkJCTx4czptaW5JbmNsdXNpdmUgdmFsdWU9IjAuMDAwMDAxIi8+DQoJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQkJCQkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQ2xhdmVVbmlkYWQiIHR5cGU9ImNhdENGREk6Y19DbGF2ZVVuaWRhZCIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHByZWNpc2FyIGxhIGNsYXZlIGRlIHVuaWRhZCBkZSBtZWRpZGEgZXN0YW5kYXJpemFkYSBhcGxpY2FibGUgcGFyYSBsYSBjYW50aWRhZCBleHByZXNhZGEgZW4gZWwgY29uY2VwdG8uIExhIHVuaWRhZCBkZWJlIGNvcnJlc3BvbmRlciBjb24gbGEgZGVzY3JpcGNpw7NuIGRlbCBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlVuaWRhZCIgdXNlPSJvcHRpb25hbCI+DQoJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIG9wY2lvbmFsIHBhcmEgcHJlY2lzYXIgbGEgdW5pZGFkIGRlIG1lZGlkYSBwcm9waWEgZGUgbGEgb3BlcmFjacOzbiBkZWwgZW1pc29yLCBhcGxpY2FibGUgcGFyYSBsYSBjYW50aWRhZCBleHByZXNhZGEgZW4gZWwgY29uY2VwdG8uIExhIHVuaWRhZCBkZWJlIGNvcnJlc3BvbmRlciBjb24gbGEgZGVzY3JpcGNpw7NuIGRlbCBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCQkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCQkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjIwIi8+DQoJCQkJCQkJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCQkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsMjB9Ii8+DQoJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkRlc2NyaXBjaW9uIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgcHJlY2lzYXIgbGEgZGVzY3JpcGNpw7NuIGRlbCBiaWVuIG8gc2VydmljaW8gY3ViaWVydG8gcG9yIGVsIHByZXNlbnRlIGNvbmNlcHRvLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCQkJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJCQkJCQkJPHhzOm1pbkxlbmd0aCB2YWx1ZT0iMSIvPg0KCQkJCQkJCQkJCQkJPHhzOm1heExlbmd0aCB2YWx1ZT0iMTAwMCIvPg0KCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDEwMDB9Ii8+DQoJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlZhbG9yVW5pdGFyaW8iIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBwcmVjaXNhciBlbCB2YWxvciBvIHByZWNpbyB1bml0YXJpbyBkZWwgYmllbiBvIHNlcnZpY2lvIGN1YmllcnRvIHBvciBlbCBwcmVzZW50ZSBjb25jZXB0by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkltcG9ydGUiIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBwcmVjaXNhciBlbCBpbXBvcnRlIHRvdGFsIGRlIGxvcyBiaWVuZXMgbyBzZXJ2aWNpb3MgZGVsIHByZXNlbnRlIGNvbmNlcHRvLiBEZWJlIHNlciBlcXVpdmFsZW50ZSBhbCByZXN1bHRhZG8gZGUgbXVsdGlwbGljYXIgbGEgY2FudGlkYWQgcG9yIGVsIHZhbG9yIHVuaXRhcmlvIGV4cHJlc2FkbyBlbiBlbCBjb25jZXB0by4gTm8gc2UgcGVybWl0ZW4gdmFsb3JlcyBuZWdhdGl2b3MuIDwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iRGVzY3VlbnRvIiB0eXBlPSJ0ZENGREk6dF9JbXBvcnRlIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gb3BjaW9uYWwgcGFyYSByZXByZXNlbnRhciBlbCBpbXBvcnRlIGRlIGxvcyBkZXNjdWVudG9zIGFwbGljYWJsZXMgYWwgY29uY2VwdG8uIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iT2JqZXRvSW1wIiB0eXBlPSJjYXRDRkRJOmNfT2JqZXRvSW1wIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgZXhwcmVzYXIgc2kgbGEgb3BlcmFjacOzbiBjb21lcmNpYWwgZXMgb2JqZXRvIG8gbm8gZGUgaW1wdWVzdG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJCTwveHM6Y29tcGxleFR5cGU+DQoJCQkJPC94czplbGVtZW50Pg0KCQkJCTx4czplbGVtZW50IG5hbWU9IkltcHVlc3RvcyIgbWluT2NjdXJzPSIwIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIGNvbmRpY2lvbmFsIHBhcmEgZXhwcmVzYXIgZWwgcmVzdW1lbiBkZSBsb3MgaW1wdWVzdG9zIGFwbGljYWJsZXMuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJSZXRlbmNpb25lcyIgbWluT2NjdXJzPSIwIj4NCgkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIGNvbmRpY2lvbmFsIHBhcmEgY2FwdHVyYXIgbG9zIGltcHVlc3RvcyByZXRlbmlkb3MgYXBsaWNhYmxlcy4gRXMgcmVxdWVyaWRvIGN1YW5kbyBlbiBsb3MgY29uY2VwdG9zIHNlIHJlZ2lzdHJlIGFsZ8O6biBpbXB1ZXN0byByZXRlbmlkby48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCQkJCTx4czplbGVtZW50IG5hbWU9IlJldGVuY2lvbiIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gcmVxdWVyaWRvIHBhcmEgbGEgaW5mb3JtYWNpw7NuIGRldGFsbGFkYSBkZSB1bmEgcmV0ZW5jacOzbiBkZSBpbXB1ZXN0byBlc3BlY8OtZmljby48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJJbXB1ZXN0byIgdHlwZT0iY2F0Q0ZESTpjX0ltcHVlc3RvIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgc2XDsWFsYXIgbGEgY2xhdmUgZGVsIHRpcG8gZGUgaW1wdWVzdG8gcmV0ZW5pZG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJJbXBvcnRlIiB0eXBlPSJ0ZENGREk6dF9JbXBvcnRlIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgc2XDsWFsYXIgZWwgbW9udG8gZGVsIGltcHVlc3RvIHJldGVuaWRvLiBObyBzZSBwZXJtaXRlbiB2YWxvcmVzIG5lZ2F0aXZvcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCTwveHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQkJPC94czplbGVtZW50Pg0KCQkJCQkJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iVHJhc2xhZG9zIiBtaW5PY2N1cnM9IjAiPg0KCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPk5vZG8gY29uZGljaW9uYWwgcGFyYSBjYXB0dXJhciBsb3MgaW1wdWVzdG9zIHRyYXNsYWRhZG9zIGFwbGljYWJsZXMuIEVzIHJlcXVlcmlkbyBjdWFuZG8gZW4gbG9zIGNvbmNlcHRvcyBzZSByZWdpc3RyZSB1biBpbXB1ZXN0byB0cmFzbGFkYWRvLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQkJCQk8eHM6Y29tcGxleFR5cGU+DQoJCQkJCQkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iVHJhc2xhZG8iIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCgkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIHJlcXVlcmlkbyBwYXJhIGxhIGluZm9ybWFjacOzbiBkZXRhbGxhZGEgZGUgdW4gdHJhc2xhZG8gZGUgaW1wdWVzdG8gZXNwZWPDrWZpY28uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQmFzZSIgdHlwZT0idGRDRkRJOnRfSW1wb3J0ZSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIHN1bWEgZGUgbG9zIGF0cmlidXRvcyBCYXNlIGRlIGxvcyBjb25jZXB0b3MgZGVsIGltcHVlc3RvIHRyYXNsYWRhZG8uIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iSW1wdWVzdG8iIHR5cGU9ImNhdENGREk6Y19JbXB1ZXN0byIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIGNsYXZlIGRlbCB0aXBvIGRlIGltcHVlc3RvIHRyYXNsYWRhZG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJUaXBvRmFjdG9yIiB0eXBlPSJjYXRDRkRJOmNfVGlwb0ZhY3RvciIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCQkJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIHNlw7FhbGFyIGxhIGNsYXZlIGRlbCB0aXBvIGRlIGZhY3RvciBxdWUgc2UgYXBsaWNhIGEgbGEgYmFzZSBkZWwgaW1wdWVzdG8uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQkJCQkJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJUYXNhT0N1b3RhIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSBzZcOxYWxhciBlbCB2YWxvciBkZSBsYSB0YXNhIG8gY3VvdGEgZGVsIGltcHVlc3RvIHF1ZSBzZSB0cmFzbGFkYSBwb3IgbG9zIGNvbmNlcHRvcyBhbXBhcmFkb3MgZW4gZWwgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJCQkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJCQkJCQkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmRlY2ltYWwiPg0KCQkJCQkJCQkJCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQkJCQkJCQkJCQk8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwLjAwMDAwMCIvPg0KCQkJCQkJCQkJCQkJCQkJPHhzOmZyYWN0aW9uRGlnaXRzIHZhbHVlPSI2Ii8+DQoJCQkJCQkJCQkJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJCQkJCQkJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJCQkJCQkJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkltcG9ydGUiIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQkJCQkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCQkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBjb25kaWNpb25hbCBwYXJhIHNlw7FhbGFyIGxhIHN1bWEgZGVsIGltcG9ydGUgZGVsIGltcHVlc3RvIHRyYXNsYWRhZG8sIGFncnVwYWRvIHBvciBpbXB1ZXN0bywgVGlwb0ZhY3RvciB5IFRhc2FPQ3VvdGEuIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQkJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlRvdGFsSW1wdWVzdG9zUmV0ZW5pZG9zIiB0eXBlPSJ0ZENGREk6dF9JbXBvcnRlIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSBleHByZXNhciBlbCB0b3RhbCBkZSBsb3MgaW1wdWVzdG9zIHJldGVuaWRvcyBxdWUgc2UgZGVzcHJlbmRlbiBkZSBsb3MgY29uY2VwdG9zIGV4cHJlc2Fkb3MgZW4gZWwgY29tcHJvYmFudGUgZmlzY2FsIGRpZ2l0YWwgcG9yIEludGVybmV0LiBObyBzZSBwZXJtaXRlbiB2YWxvcmVzIG5lZ2F0aXZvcy4gRXMgcmVxdWVyaWRvIGN1YW5kbyBlbiBsb3MgY29uY2VwdG9zIHNlIHJlZ2lzdHJlbiBpbXB1ZXN0b3MgcmV0ZW5pZG9zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iVG90YWxJbXB1ZXN0b3NUcmFzbGFkYWRvcyIgdHlwZT0idGRDRkRJOnRfSW1wb3J0ZSIgdXNlPSJvcHRpb25hbCI+DQoJCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIGNvbmRpY2lvbmFsIHBhcmEgZXhwcmVzYXIgZWwgdG90YWwgZGUgbG9zIGltcHVlc3RvcyB0cmFzbGFkYWRvcyBxdWUgc2UgZGVzcHJlbmRlbiBkZSBsb3MgY29uY2VwdG9zIGV4cHJlc2Fkb3MgZW4gZWwgY29tcHJvYmFudGUgZmlzY2FsIGRpZ2l0YWwgcG9yIEludGVybmV0LiBObyBzZSBwZXJtaXRlbiB2YWxvcmVzIG5lZ2F0aXZvcy4gRXMgcmVxdWVyaWRvIGN1YW5kbyBlbiBsb3MgY29uY2VwdG9zIHNlIHJlZ2lzdHJlbiBpbXB1ZXN0b3MgdHJhc2xhZGFkb3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCTwveHM6ZWxlbWVudD4NCgkJCQk8eHM6ZWxlbWVudCBuYW1lPSJDb21wbGVtZW50byIgbWluT2NjdXJzPSIwIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIGRvbmRlIHNlIGluY2x1eWUgZWwgY29tcGxlbWVudG8gVGltYnJlIEZpc2NhbCBEaWdpdGFsIGRlIG1hbmVyYSBvYmxpZ2F0b3JpYSB5IGxvcyBub2RvcyBjb21wbGVtZW50YXJpb3MgZGV0ZXJtaW5hZG9zIHBvciBlbCBTQVQsIGRlIGFjdWVyZG8gY29uIGxhcyBkaXNwb3NpY2lvbmVzIHBhcnRpY3VsYXJlcyBwYXJhIHVuIHNlY3RvciBvIGFjdGl2aWRhZCBlc3BlY8OtZmljYS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmNvbXBsZXhUeXBlPg0KCQkJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQkJCTx4czphbnkgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KCQkJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJPHhzOmVsZW1lbnQgbmFtZT0iQWRkZW5kYSIgbWluT2NjdXJzPSIwIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5Ob2RvIG9wY2lvbmFsIHBhcmEgcmVjaWJpciBsYXMgZXh0ZW5zaW9uZXMgYWwgcHJlc2VudGUgZm9ybWF0byBxdWUgc2VhbiBkZSB1dGlsaWRhZCBhbCBjb250cmlidXllbnRlLiBQYXJhIGxhcyByZWdsYXMgZGUgdXNvIGRlbCBtaXNtbywgcmVmZXJpcnNlIGFsIGZvcm1hdG8gb3JpZ2VuLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6Y29tcGxleFR5cGU+DQoJCQkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCQkJPHhzOmFueSBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KCQkJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQk8L3hzOmVsZW1lbnQ+DQoJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJWZXJzaW9uIiB1c2U9InJlcXVpcmVkIiBmaXhlZD0iNC4wIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIGNvbiB2YWxvciBwcmVmaWphZG8gYSA0LjAgcXVlIGluZGljYSBsYSB2ZXJzacOzbiBkZWwgZXN0w6FuZGFyIGJham8gZWwgcXVlIHNlIGVuY3VlbnRyYSBleHByZXNhZG8gZWwgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQoJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iU2VyaWUiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBvcGNpb25hbCBwYXJhIHByZWNpc2FyIGxhIHNlcmllIHBhcmEgY29udHJvbCBpbnRlcm5vIGRlbCBjb250cmlidXllbnRlLiBFc3RlIGF0cmlidXRvIGFjZXB0YSB1bmEgY2FkZW5hIGRlIGNhcmFjdGVyZXMuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQoJCQkJCQk8eHM6bWluTGVuZ3RoIHZhbHVlPSIxIi8+DQoJCQkJCQk8eHM6bWF4TGVuZ3RoIHZhbHVlPSIyNSIvPg0KCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCQk8eHM6cGF0dGVybiB2YWx1ZT0iW158XXsxLDI1fSIvPg0KCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJGb2xpbyIgdXNlPSJvcHRpb25hbCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIG9wY2lvbmFsIHBhcmEgY29udHJvbCBpbnRlcm5vIGRlbCBjb250cmlidXllbnRlIHF1ZSBleHByZXNhIGVsIGZvbGlvIGRlbCBjb21wcm9iYW50ZSwgYWNlcHRhIHVuYSBjYWRlbmEgZGUgY2FyYWN0ZXJlcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjQwIi8+DQoJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsNDB9Ii8+DQoJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJPC94czphdHRyaWJ1dGU+DQoJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkZlY2hhIiB0eXBlPSJ0ZENGREk6dF9GZWNoYUgiIHVzZT0icmVxdWlyZWQiPg0KCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSBsYSBleHByZXNpw7NuIGRlIGxhIGZlY2hhIHkgaG9yYSBkZSBleHBlZGljacOzbiBkZWwgQ29tcHJvYmFudGUgRmlzY2FsIERpZ2l0YWwgcG9yIEludGVybmV0LiBTZSBleHByZXNhIGVuIGxhIGZvcm1hIEFBQUEtTU0tRERUaGg6bW06c3MgeSBkZWJlIGNvcnJlc3BvbmRlciBjb24gbGEgaG9yYSBsb2NhbCBkb25kZSBzZSBleHBpZGUgZWwgY29tcHJvYmFudGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJTZWxsbyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGNvbnRlbmVyIGVsIHNlbGxvIGRpZ2l0YWwgZGVsIGNvbXByb2JhbnRlIGZpc2NhbCwgYWwgcXVlIGhhY2VuIHJlZmVyZW5jaWEgbGFzIHJlZ2xhcyBkZSByZXNvbHVjacOzbiBtaXNjZWzDoW5lYSB2aWdlbnRlLiBFbCBzZWxsbyBkZWJlIHNlciBleHByZXNhZG8gY29tbyB1bmEgY2FkZW5hIGRlIHRleHRvIGVuIGZvcm1hdG8gQmFzZSA2NC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJGb3JtYVBhZ28iIHR5cGU9ImNhdENGREk6Y19Gb3JtYVBhZ28iIHVzZT0ib3B0aW9uYWwiPg0KCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBjb25kaWNpb25hbCBwYXJhIGV4cHJlc2FyIGxhIGNsYXZlIGRlIGxhIGZvcm1hIGRlIHBhZ28gZGUgbG9zIGJpZW5lcyBvIHNlcnZpY2lvcyBhbXBhcmFkb3MgcG9yIGVsIGNvbXByb2JhbnRlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTm9DZXJ0aWZpY2FkbyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIGVsIG7Dum1lcm8gZGUgc2VyaWUgZGVsIGNlcnRpZmljYWRvIGRlIHNlbGxvIGRpZ2l0YWwgcXVlIGFtcGFyYSBhbCBjb21wcm9iYW50ZSwgZGUgYWN1ZXJkbyBjb24gZWwgYWN1c2UgY29ycmVzcG9uZGllbnRlIGEgMjAgcG9zaWNpb25lcyBvdG9yZ2FkbyBwb3IgZWwgc2lzdGVtYSBkZWwgU0FULjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJPHhzOnNpbXBsZVR5cGU+DQoJCQkJCTx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJPC94czphdHRyaWJ1dGU+DQoJCQk8eHM6YXR0cmlidXRlIG5hbWU9IkNlcnRpZmljYWRvIiB1c2U9InJlcXVpcmVkIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHF1ZSBzaXJ2ZSBwYXJhIGluY29ycG9yYXIgZWwgY2VydGlmaWNhZG8gZGUgc2VsbG8gZGlnaXRhbCBxdWUgYW1wYXJhIGFsIGNvbXByb2JhbnRlLCBjb21vIHRleHRvIGVuIGZvcm1hdG8gYmFzZSA2NC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQk8L3hzOnJlc3RyaWN0aW9uPg0KCQkJCTwveHM6c2ltcGxlVHlwZT4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJDb25kaWNpb25lc0RlUGFnbyIgdXNlPSJvcHRpb25hbCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIGNvbmRpY2lvbmFsIHBhcmEgZXhwcmVzYXIgbGFzIGNvbmRpY2lvbmVzIGNvbWVyY2lhbGVzIGFwbGljYWJsZXMgcGFyYSBlbCBwYWdvIGRlbCBjb21wcm9iYW50ZSBmaXNjYWwgZGlnaXRhbCBwb3IgSW50ZXJuZXQuIEVzdGUgYXRyaWJ1dG8gcHVlZGUgc2VyIGNvbmRpY2lvbmFkbyBtZWRpYW50ZSBhdHJpYnV0b3MgbyBjb21wbGVtZW50b3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQoJCQkJCQk8eHM6d2hpdGVTcGFjZSB2YWx1ZT0iY29sbGFwc2UiLz4NCgkJCQkJCTx4czptaW5MZW5ndGggdmFsdWU9IjEiLz4NCgkJCQkJCTx4czptYXhMZW5ndGggdmFsdWU9IjEwMDAiLz4NCgkJCQkJCTx4czpwYXR0ZXJuIHZhbHVlPSJbXnxdezEsMTAwMH0iLz4NCgkJCQkJPC94czpyZXN0cmljdGlvbj4NCgkJCQk8L3hzOnNpbXBsZVR5cGU+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iU3ViVG90YWwiIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0icmVxdWlyZWQiPg0KCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byByZXF1ZXJpZG8gcGFyYSByZXByZXNlbnRhciBsYSBzdW1hIGRlIGxvcyBpbXBvcnRlcyBkZSBsb3MgY29uY2VwdG9zIGFudGVzIGRlIGRlc2N1ZW50b3MgZSBpbXB1ZXN0by4gTm8gc2UgcGVybWl0ZW4gdmFsb3JlcyBuZWdhdGl2b3MuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJEZXNjdWVudG8iIHR5cGU9InRkQ0ZESTp0X0ltcG9ydGUiIHVzZT0ib3B0aW9uYWwiPg0KCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BdHJpYnV0byBjb25kaWNpb25hbCBwYXJhIHJlcHJlc2VudGFyIGVsIGltcG9ydGUgdG90YWwgZGUgbG9zIGRlc2N1ZW50b3MgYXBsaWNhYmxlcyBhbnRlcyBkZSBpbXB1ZXN0b3MuIE5vIHNlIHBlcm1pdGVuIHZhbG9yZXMgbmVnYXRpdm9zLiBTZSBkZWJlIHJlZ2lzdHJhciBjdWFuZG8gZXhpc3RhbiBjb25jZXB0b3MgY29uIGRlc2N1ZW50by48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJPC94czphdHRyaWJ1dGU+DQoJCQk8eHM6YXR0cmlidXRlIG5hbWU9Ik1vbmVkYSIgdHlwZT0iY2F0Q0ZESTpjX01vbmVkYSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGlkZW50aWZpY2FyIGxhIGNsYXZlIGRlIGxhIG1vbmVkYSB1dGlsaXphZGEgcGFyYSBleHByZXNhciBsb3MgbW9udG9zLCBjdWFuZG8gc2UgdXNhIG1vbmVkYSBuYWNpb25hbCBzZSByZWdpc3RyYSBNWE4uIENvbmZvcm1lIGNvbiBsYSBlc3BlY2lmaWNhY2nDs24gSVNPIDQyMTcuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJUaXBvQ2FtYmlvIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSByZXByZXNlbnRhciBlbCB0aXBvIGRlIGNhbWJpbyBGSVggY29uZm9ybWUgY29uIGxhIG1vbmVkYSB1c2FkYS4gRXMgcmVxdWVyaWRvIGN1YW5kbyBsYSBjbGF2ZSBkZSBtb25lZGEgZXMgZGlzdGludGEgZGUgTVhOIHkgZGUgWFhYLiBFbCB2YWxvciBkZWJlIHJlZmxlamFyIGVsIG7Dum1lcm8gZGUgcGVzb3MgbWV4aWNhbm9zIHF1ZSBlcXVpdmFsZW4gYSB1bmEgdW5pZGFkIGRlIGxhIGRpdmlzYSBzZcOxYWxhZGEgZW4gZWwgYXRyaWJ1dG8gbW9uZWRhLiBTaSBlbCB2YWxvciBlc3TDoSBmdWVyYSBkZWwgcG9yY2VudGFqZSBhcGxpY2FibGUgYSBsYSBtb25lZGEgdG9tYWRvIGRlbCBjYXTDoWxvZ28gY19Nb25lZGEsIGVsIGVtaXNvciBkZWJlIG9idGVuZXIgZGVsIFBBQyBxdWUgdmF5YSBhIHRpbWJyYXIgZWwgQ0ZESSwgZGUgbWFuZXJhIG5vIGF1dG9tw6F0aWNhLCB1bmEgY2xhdmUgZGUgY29uZmlybWFjacOzbiBwYXJhIHJhdGlmaWNhciBxdWUgZWwgdmFsb3IgZXMgY29ycmVjdG8gZSBpbnRlZ3JhciBkaWNoYSBjbGF2ZSBlbiBlbCBhdHJpYnV0byBDb25maXJtYWNpb24uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQk8eHM6c2ltcGxlVHlwZT4NCgkJCQkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmRlY2ltYWwiPg0KCQkJCQkJPHhzOmZyYWN0aW9uRGlnaXRzIHZhbHVlPSI2Ii8+DQoJCQkJCQk8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwLjAwMDAwMSIvPg0KCQkJCQkJPHhzOndoaXRlU3BhY2UgdmFsdWU9ImNvbGxhcHNlIi8+DQoJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJPC94czphdHRyaWJ1dGU+DQoJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlRvdGFsIiB0eXBlPSJ0ZENGREk6dF9JbXBvcnRlIiB1c2U9InJlcXVpcmVkIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgcmVwcmVzZW50YXIgbGEgc3VtYSBkZWwgc3VidG90YWwsIG1lbm9zIGxvcyBkZXNjdWVudG9zIGFwbGljYWJsZXMsIG3DoXMgbGFzIGNvbnRyaWJ1Y2lvbmVzIHJlY2liaWRhcyAoaW1wdWVzdG9zIHRyYXNsYWRhZG9zIC0gZmVkZXJhbGVzIHkvbyBsb2NhbGVzLCBkZXJlY2hvcywgcHJvZHVjdG9zLCBhcHJvdmVjaGFtaWVudG9zLCBhcG9ydGFjaW9uZXMgZGUgc2VndXJpZGFkIHNvY2lhbCwgY29udHJpYnVjaW9uZXMgZGUgbWVqb3JhcykgbWVub3MgbG9zIGltcHVlc3RvcyByZXRlbmlkb3MgZmVkZXJhbGVzIHkvbyBsb2NhbGVzLiBTaSBlbCB2YWxvciBlcyBzdXBlcmlvciBhbCBsw61taXRlIHF1ZSBlc3RhYmxlemNhIGVsIFNBVCBlbiBsYSBSZXNvbHVjacOzbiBNaXNjZWzDoW5lYSBGaXNjYWwgdmlnZW50ZSwgZWwgZW1pc29yIGRlYmUgb2J0ZW5lciBkZWwgUEFDIHF1ZSB2YXlhIGEgdGltYnJhciBlbCBDRkRJLCBkZSBtYW5lcmEgbm8gYXV0b23DoXRpY2EsIHVuYSBjbGF2ZSBkZSBjb25maXJtYWNpw7NuIHBhcmEgcmF0aWZpY2FyIHF1ZSBlbCB2YWxvciBlcyBjb3JyZWN0byBlIGludGVncmFyIGRpY2hhIGNsYXZlIGVuIGVsIGF0cmlidXRvIENvbmZpcm1hY2lvbi4gTm8gc2UgcGVybWl0ZW4gdmFsb3JlcyBuZWdhdGl2b3MuIDwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iVGlwb0RlQ29tcHJvYmFudGUiIHR5cGU9ImNhdENGREk6Y19UaXBvRGVDb21wcm9iYW50ZSIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIGxhIGNsYXZlIGRlbCBlZmVjdG8gZGVsIGNvbXByb2JhbnRlIGZpc2NhbCBwYXJhIGVsIGNvbnRyaWJ1eWVudGUgZW1pc29yLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iRXhwb3J0YWNpb24iIHR5cGU9ImNhdENGREk6Y19FeHBvcnRhY2lvbiIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIHJlcXVlcmlkbyBwYXJhIGV4cHJlc2FyIHNpIGVsIGNvbXByb2JhbnRlIGFtcGFyYSB1bmEgb3BlcmFjacOzbiBkZSBleHBvcnRhY2nDs24uPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCTwveHM6YXR0cmlidXRlPg0KCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJNZXRvZG9QYWdvIiB0eXBlPSJjYXRDRkRJOmNfTWV0b2RvUGFnbyIgdXNlPSJvcHRpb25hbCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPkF0cmlidXRvIGNvbmRpY2lvbmFsIHBhcmEgcHJlY2lzYXIgbGEgY2xhdmUgZGVsIG3DqXRvZG8gZGUgcGFnbyBxdWUgYXBsaWNhIHBhcmEgZXN0ZSBjb21wcm9iYW50ZSBmaXNjYWwgZGlnaXRhbCBwb3IgSW50ZXJuZXQsIGNvbmZvcm1lIGFsIEFydMOtY3VsbyAyOS1BIGZyYWNjacOzbiBWSUkgaW5jaXNvcyBhIHkgYiBkZWwgQ0ZGLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iTHVnYXJFeHBlZGljaW9uIiB0eXBlPSJjYXRDRkRJOmNfQ29kaWdvUG9zdGFsIiB1c2U9InJlcXVpcmVkIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gcmVxdWVyaWRvIHBhcmEgaW5jb3Jwb3JhciBlbCBjw7NkaWdvIHBvc3RhbCBkZWwgbHVnYXIgZGUgZXhwZWRpY2nDs24gZGVsIGNvbXByb2JhbnRlIChkb21pY2lsaW8gZGUgbGEgbWF0cml6IG8gZGUgbGEgc3VjdXJzYWwpLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCTx4czphdHRyaWJ1dGUgbmFtZT0iQ29uZmlybWFjaW9uIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+QXRyaWJ1dG8gY29uZGljaW9uYWwgcGFyYSByZWdpc3RyYXIgbGEgY2xhdmUgZGUgY29uZmlybWFjacOzbiBxdWUgZW50cmVndWUgZWwgUEFDIHBhcmEgZXhwZWRpciBlbCBjb21wcm9iYW50ZSBjb24gaW1wb3J0ZXMgZ3JhbmRlcywgY29uIHVuIHRpcG8gZGUgY2FtYmlvIGZ1ZXJhIGRlbCByYW5nbyBlc3RhYmxlY2lkbyBvIGNvbiBhbWJvcyBjYXNvcy4gRXMgcmVxdWVyaWRvIGN1YW5kbyBzZSByZWdpc3RyYSB1biB0aXBvIGRlIGNhbWJpbyBvIHVuIHRvdGFsIGZ1ZXJhIGRlbCByYW5nbyBlc3RhYmxlY2lkby48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTx4czpzaW1wbGVUeXBlPg0KCQkJCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCQkJCTx4czp3aGl0ZVNwYWNlIHZhbHVlPSJjb2xsYXBzZSIvPg0KCQkJCQkJPHhzOmxlbmd0aCB2YWx1ZT0iNSIvPg0KCQkJCQkJPHhzOnBhdHRlcm4gdmFsdWU9IlswLTlhLXpBLVpdezV9Ii8+DQoJCQkJCTwveHM6cmVzdHJpY3Rpb24+DQoJCQkJPC94czpzaW1wbGVUeXBlPg0KCQkJPC94czphdHRyaWJ1dGU+DQoJCTwveHM6Y29tcGxleFR5cGU+DQoJPC94czplbGVtZW50Pg0KPC94czpzY2hlbWE+DQo=</field>
     </record>
@@ -21,7 +21,7 @@
         <field name="report_file">l10n_mx_facturae/report/account_move.odt</field>
         <field name="in_format">oo-odt</field>
         <field name="out_format" ref="report_aeroo.report_mimetypes_pdf_odt"/>
-        <field name="parser_model">report.l10n_mx_qr</field>
+        <field name="parser_model">report.l10n_mx_facturae.account_move</field>
         <field name="styles_mode">default</field>
         <field name="preload_mode">static</field>
         <field name="deferred">off</field>
diff --git a/l10n_mx_facturae/data/account_payment.xml b/l10n_mx_facturae/data/account_payment.xml
index 83fecf0d4a..f2d4733197 100644
--- a/l10n_mx_facturae/data/account_payment.xml
+++ b/l10n_mx_facturae/data/account_payment.xml
@@ -6,7 +6,7 @@
         <field name="name">Account Payment CFDI XML</field>
         <field name="model">account.payment</field>
         <field name="report_type">qweb-xml</field>
-        <field name="report_name">l10n_mx_facturae.account_payment_template_cfdi_xml</field>
+        <field name="report_name">l10n_mx_facturae.account_payment</field>
         <field name="xml_declaration">true</field>
         <field name="xsd_schema"></field>
     </record>
@@ -21,7 +21,7 @@
         <field name="report_file">l10n_mx_facturae/report/account_payment.odt</field>
         <field name="in_format">oo-odt</field>
         <field name="out_format" ref="report_aeroo.report_mimetypes_pdf_odt"/>
-        <field name="parser_model">report.l10n_mx_facturae.account_payment_template_cfdi_xml</field>
+        <field name="parser_model">report.l10n_mx_facturae.account_payment</field>
         <field name="styles_mode">default</field>
         <field name="preload_mode">static</field>
         <field name="deferred">off</field>
diff --git a/l10n_mx_facturae/data/ir_attachment_facturae_config.xml b/l10n_mx_facturae/data/ir_attachment_facturae_config.xml
index db90752145..4539748303 100644
--- a/l10n_mx_facturae/data/ir_attachment_facturae_config.xml
+++ b/l10n_mx_facturae/data/ir_attachment_facturae_config.xml
@@ -5,7 +5,7 @@
         model="ir.attachment.facturae.mx.config">
         <field name="model">account.move</field>
         <field name="version">4.0</field>
-        <field name="template_xml_sign">l10n_mx_facturae.account_move_template_cfdi_xml</field>
+        <field name="template_xml_sign">l10n_mx_facturae.account_move</field>
         <field name="template_xml_cancel">Aun.no.hay.uno</field>
         <field name="template_pdf_sign">l10n_mx_facturae.account_move_template_cfdi_pdf</field>
         <field name="template_pdf_cancel">l10n_mx_facturae.account_move_template_cfdi_pdf</field>
@@ -16,7 +16,7 @@
         model="ir.attachment.facturae.mx.config">
         <field name="model">account.payment</field>
         <field name="version">4.0</field>
-        <field name="template_xml_sign">l10n_mx_facturae.account_payment_template_cfdi_xml</field>
+        <field name="template_xml_sign">l10n_mx_facturae.account_payment</field>
         <field name="template_xml_cancel">Aun.no.hay.uno</field>
         <field name="template_pdf_sign">l10n_mx_facturae.account_payment_template_cfdi_pdf</field>
         <field name="template_pdf_cancel"><!--l10n_mx_facturae.account_payment_template_cfdi_pdf--></field>
diff --git a/l10n_mx_facturae/report/__init__.py b/l10n_mx_facturae/report/__init__.py
index d564ba5da1..dd3fb58358 100644
--- a/l10n_mx_facturae/report/__init__.py
+++ b/l10n_mx_facturae/report/__init__.py
@@ -1,3 +1,4 @@
 # -*- coding: utf-8 -*-
 
+from . import account_move
 from . import account_payment
diff --git a/l10n_mx_facturae/report/account_move.py b/l10n_mx_facturae/report/account_move.py
new file mode 100644
index 0000000000..91e1bf36d5
--- /dev/null
+++ b/l10n_mx_facturae/report/account_move.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+
+from odoo import api, models
+
+
+class Parser(models.AbstractModel):
+    _inherit = "report.l10n_mx_cfdi"
+    _description = "report.l10n_mx_facturae.account_move"
+    _name = "report.l10n_mx_facturae.account_move"
+
+    def _get_report_values(self, docids, data=None):
+        res = super()._get_report_values(docids, data=data)
+        docs = self.env["account.move"].browse(docids)
+        # return a custom rendering context
+        res.update(
+            {
+                "doc_ids": docids,
+                "doc_model": "account.move",
+                "docs": docs,
+            }
+        )
+        return res
diff --git a/l10n_mx_facturae/report/account_payment.py b/l10n_mx_facturae/report/account_payment.py
index 325f895f30..1cd16ae961 100644
--- a/l10n_mx_facturae/report/account_payment.py
+++ b/l10n_mx_facturae/report/account_payment.py
@@ -4,34 +4,32 @@ from odoo import api, models
 
 
 class Parser(models.AbstractModel):
-    _inherit = ["report.report_xml.abstract", "report.l10n_mx_qr", "report.report_aeroo.abstract"]
-    _description = "report.l10n_mx_facturae.account_payment_template_cfdi_xml"
-    _name = "report.l10n_mx_facturae.account_payment_template_cfdi_xml"
+    _inherit = "report.l10n_mx_cfdi"
+    _description = "report.l10n_mx_facturae.account_payment"
+    _name = "report.l10n_mx_facturae.account_payment"
 
     @api.model
     def aeroo_report(self, docids, data):
         self = self.with_context(
-            format_float = self._format_float,
-            format_impuesto = self._format_impuesto,
-            format_tasaocuota = self._format_tasaocuota,
+            format_impuesto=self._format_impuesto,
+            format_tasaocuota=self._format_tasaocuota,
         )
         return super(Parser, self).aeroo_report(docids, data)
 
     def _get_report_values(self, docids, data=None):
+        res = super()._get_report_values(docids, data=data)
         docs = self.env["account.payment"].browse(docids)
         # return a custom rendering context
-        return {
-            "doc_ids": docids,
-            "doc_model": "account.payment",
-            "docs": docs,
-            "format_float": self._format_float,
-            "format_impuesto": self._format_impuesto,
-            "format_tasaocuota": self._format_tasaocuota,
-        }
-
-    def _format_float(self, amount, decimals):
-        """Format any amount to a given number of decimals"""
-        return "{:.{}f}".format(amount, decimals)
+        res.update(
+            {
+                "doc_ids": docids,
+                "doc_model": "account.payment",
+                "docs": docs,
+                "format_impuesto": self._format_impuesto,
+                "format_tasaocuota": self._format_tasaocuota,
+            }
+        )
+        return res
 
     def _format_impuesto(self, tax):
         tax_types = {
diff --git a/l10n_mx_facturae/templates/account_move.xml b/l10n_mx_facturae/templates/account_move.xml
index 2202441201..b0a4a8b7c2 100644
--- a/l10n_mx_facturae/templates/account_move.xml
+++ b/l10n_mx_facturae/templates/account_move.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <odoo>
-    <template id="account_move_template_cfdi_xml">
+    <template id="account_move">
         <t t-set="move" t-value="docs[0]" />
         <t t-set="taxes" t-value="move.impuestos" />
         <t t-set="total_traslados" t-value="move.l10n_mx_facturae_compute_total_traslados(taxes)" />
@@ -68,7 +68,7 @@
 				        <cfdi:Traslados t-if="line.impuestos['traslados']">
                             <t t-set="impuestos" t-value="line.impuestos"/>
 				            <cfdi:Traslado t-foreach="impuestos['traslados']" t-as="tax"
-				                t-attf-Base="{{ tax.base }}"
+				                t-att-Base="format_float(tax.base, o.currency_id.decimal_places)"
                                 t-attf-Impuesto="{{ tax.xml_name }}"
                                 t-attf-TipoFactor="{{ tax.type }}"
 				                t-attf-TasaOCuota="{{ tax.TasaOCuota }}"
@@ -76,7 +76,7 @@
 				        </cfdi:Traslados>
 				        <cfdi:Retenciones t-if="impuestos['retenciones']">
 				            <cfdi:Retencion t-foreach="impuestos['retenciones']" t-as="tax"
-				                t-attf-Base="{{ tax.base }}"
+				                t-att-Base="format_float(tax.base, o.currency_id.decimal_places)"
                                 t-attf-Impuesto="{{ tax.xml_name }}"
                                 t-attf-TipoFactor="{{ tax.type }}"
 				                t-attf-TasaOCuota="{{ tax.TasaOCuota }}"
@@ -101,7 +101,7 @@
                 </cfdi:Retenciones>
                 <cfdi:Traslados t-if="taxes['traslados']">
                     <cfdi:Traslado t-foreach="taxes['traslados']" t-as="tax"
-                        t-attf-Base="{{ tax.base }}"
+                        t-att-Base="format_float(tax.base, o.currency_id.decimal_places)"
                         t-attf-Impuesto="{{ tax.xml_name }}"
                         t-attf-TipoFactor="{{ tax.type }}"
                         t-attf-TasaOCuota="{{ tax.TasaOCuota }}"
diff --git a/l10n_mx_facturae/templates/account_payment.xml b/l10n_mx_facturae/templates/account_payment.xml
index 4203c948b3..3b9dfe6de3 100644
--- a/l10n_mx_facturae/templates/account_payment.xml
+++ b/l10n_mx_facturae/templates/account_payment.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <odoo>
-    <template id="account_payment_template_cfdi_xml">
+    <template id="account_payment">
         <t t-set="payment" t-value="docs[0]" />
         <t t-set="residenciaFiscal" t-value="payment.l10n_mx_facturae_payment_compute_residencia_fiscal()"/>
         <t t-set="regimenTrib" t-value="payment.l10n_mx_facturae_payment_compute_regimen_tributario()"/>
@@ -54,7 +54,7 @@
                     <pago20:Totales
                         t-attf-MontoTotalPagos="{{ o.l10n_mx_facturae_payment_montototalpagos() }}"
                         t-att-TotalTrasladosBaseIVAExento="traslados.get('baseIVAExento', False)"
-                        t-att-TotalTrasladosBaseIVA16="traslados.get('baseIVA16.0', False)"
+                        t-att-TotalTrasladosBaseIVA16="format_float(traslados.get('baseIVA16.0', False), o.currency_id.decimal_places)"
                         t-att-TotalTrasladosImpuestoIVA16="traslados.get('importeIVA16.0', False)"
                         t-att-TotalTrasladosBaseIVA8="traslados.get('baseIVA8.0', False)"
                         t-att-TotalTrasladosImpuestoIVA8="traslados.get('importeIVA8.0', False)"
-- 
GitLab


From 7b012259c4e83893888ab5b4463f17eec7ba921d Mon Sep 17 00:00:00 2001
From: "noe.izquierdo" <noe.izquierdo@openpyme.mx>
Date: Wed, 10 Apr 2024 10:02:50 -0600
Subject: [PATCH 05/17] feat(account.payment): se agregan correcciones para los
 totales traslados y retenciones

---
 l10n_mx_facturae/models/account_move.py       | 24 +++++++++++++++++++
 .../templates/account_payment.xml             |  8 +++----
 2 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index 063bb5549b..19599d4bfa 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -541,6 +541,18 @@ class AccountMoveLine(models.Model):
         "N° Pediment",
     )
 
+    l10n_mx_tax_base_dr = fields.Monetary(
+        compute="_compute_l10n_mx_tax_base_dr"
+    )
+
+    l10n_mx_tax_importe_dr = fields.Monetary(
+        compute="_compute_l10n_mx_tax_importe_dr"
+    )
+
+    l10n_mx_tax_currency_dr = fields.Monetary(
+        compute="_compue_l10n_mx_tax_currency_dr"
+    )
+
     @api.constrains("cfdi_cuentapredial")
     def _constraint_cfdi_cuentapredial(self):
         for record in self:
@@ -761,3 +773,15 @@ class AccountMoveLine(models.Model):
 
     def l10n_mx_facturae_importe(self):
         return "{0:.2f}".format(self.importe)
+
+    def _compute_l10n_mx_tax_base_dr(self):
+        for record in self:
+            return
+
+    def _compute_l10n_mx_tax_importe_dr(self):
+        for record in self:
+            return
+
+    def _compue_l10n_mx_tax_currency_dr(self):
+        for record in self:
+            return
diff --git a/l10n_mx_facturae/templates/account_payment.xml b/l10n_mx_facturae/templates/account_payment.xml
index 3b9dfe6de3..9305f84f16 100644
--- a/l10n_mx_facturae/templates/account_payment.xml
+++ b/l10n_mx_facturae/templates/account_payment.xml
@@ -54,10 +54,10 @@
                     <pago20:Totales
                         t-attf-MontoTotalPagos="{{ o.l10n_mx_facturae_payment_montototalpagos() }}"
                         t-att-TotalTrasladosBaseIVAExento="traslados.get('baseIVAExento', False)"
-                        t-att-TotalTrasladosBaseIVA16="format_float(traslados.get('baseIVA16.0', False), o.currency_id.decimal_places)"
-                        t-att-TotalTrasladosImpuestoIVA16="traslados.get('importeIVA16.0', False)"
-                        t-att-TotalTrasladosBaseIVA8="traslados.get('baseIVA8.0', False)"
-                        t-att-TotalTrasladosImpuestoIVA8="traslados.get('importeIVA8.0', False)"
+                        t-att-TotalTrasladosBaseIVA16="format_float(traslados.get('baseIVA16.0'), o.currency_id.decimal_places) if traslados.get('baseIVA16.0', False) else False"
+                        t-att-TotalTrasladosImpuestoIVA16="format_float(traslados.get('importeIVA16.0'), o.currency_id.decimal_places) if traslados.get('importeIVA16.0', False) else False"
+                        t-att-TotalTrasladosBaseIVA8="format_float(traslados.get('baseIVA8.0'), o.currency_id.decimal_places) if traslados.get('baseIVA8.0', False) else False"
+                        t-att-TotalTrasladosImpuestoIVA8="format_float(traslados.get('importeIVA8.0'), o.currency_id.decimal_places) if traslados.get('importeIVA8.0', False) else False"
                         t-att-TotalTrasladosBaseIVA0="traslados.get('baseIVA0.0', False)"
                         t-att-TotalTrasladosImpuestoIVA0="traslados.get('importeIVA0.0', False)"
                         t-att-TotalRetencionesIVA="retenciones.get('importeIVA', False)"
-- 
GitLab


From 91537a6ac06590c24948dea7a33a3f27f54b4a24 Mon Sep 17 00:00:00 2001
From: "noe.izquierdo" <noe.izquierdo@openpyme.mx>
Date: Thu, 11 Apr 2024 18:01:09 -0600
Subject: [PATCH 06/17] fix(account.payment): se agregan funciones para
 calcular la basedr e impuestodr en la moneda del dr

---
 l10n_mx_facturae/models/account_move.py       | 24 -------
 l10n_mx_facturae/models/account_payment.py    | 70 ++++++++-----------
 .../templates/account_payment.xml             |  8 +--
 3 files changed, 33 insertions(+), 69 deletions(-)

diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index 19599d4bfa..063bb5549b 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -541,18 +541,6 @@ class AccountMoveLine(models.Model):
         "N° Pediment",
     )
 
-    l10n_mx_tax_base_dr = fields.Monetary(
-        compute="_compute_l10n_mx_tax_base_dr"
-    )
-
-    l10n_mx_tax_importe_dr = fields.Monetary(
-        compute="_compute_l10n_mx_tax_importe_dr"
-    )
-
-    l10n_mx_tax_currency_dr = fields.Monetary(
-        compute="_compue_l10n_mx_tax_currency_dr"
-    )
-
     @api.constrains("cfdi_cuentapredial")
     def _constraint_cfdi_cuentapredial(self):
         for record in self:
@@ -773,15 +761,3 @@ class AccountMoveLine(models.Model):
 
     def l10n_mx_facturae_importe(self):
         return "{0:.2f}".format(self.importe)
-
-    def _compute_l10n_mx_tax_base_dr(self):
-        for record in self:
-            return
-
-    def _compute_l10n_mx_tax_importe_dr(self):
-        for record in self:
-            return
-
-    def _compue_l10n_mx_tax_currency_dr(self):
-        for record in self:
-            return
diff --git a/l10n_mx_facturae/models/account_payment.py b/l10n_mx_facturae/models/account_payment.py
index d43314d24f..5acacfaa41 100644
--- a/l10n_mx_facturae/models/account_payment.py
+++ b/l10n_mx_facturae/models/account_payment.py
@@ -345,20 +345,8 @@ class AccountPayment(models.Model):
             tax_group = tax_rep_lines.mapped("tag_ids")
             key = tax_group.name + str(line["tax_id"].amount)
 
-            if company_currency != voucher_currency:
-                company_currency = company_currency.with_context(
-                    special_currency_rate=self.currency_rate(),
-                    special_currency=voucher_currency.id,
-                )
-                tax_totals["importe" + key] = company_currency.compute(
-                    line["importe"], voucher_currency,
-                )
-                tax_totals["base" + key] = company_currency.compute(
-                    line["tax_base"], voucher_currency,
-                )
-            else:
-                tax_totals["importe" + key] = line["importe"]
-                tax_totals["base" + key] = line["tax_base"]
+            tax_totals["importe" + key] = line["importe"]
+            tax_totals["base" + key] = line["tax_base"]
 
         return tax_totals
 
@@ -378,35 +366,11 @@ class AccountPayment(models.Model):
                         importe=0.0,
                     )
 
-                if tax_move.currency_id != voucher_currency:
-                    invoice_currency = (
-                        tax_move.currency_id
-                        if tax_move.currency_id else company_currency
-                    )
-                    invoice_currency = invoice_currency.with_context(date=self.date)
-                    if invoice_currency != company_currency:
-                        invoice_currency = invoice_currency.with_context(
-                            special_currency_rate=self.tipocambiodr(invoice),
-                            special_currency=invoice_currency.id,
-                        )
-                    else:
-                        invoice_currency = invoice_currency.with_context(
-                            special_currency_rate=(1 / self.tipocambiodr(invoice)),
-                            special_currency=voucher_currency.id,
-                        )
-                    tax_base = invoice_currency.compute(
-                        tax_move.tax_base_amount, voucher_currency, round=False,
-                    )
-                    # Force rounding 6 decimals to use as many decimal as possible and
-                    # avoid rounding errors when validating XML
-                    tax_base = float_round(
-                        tax_base, precision_digits=2, rounding_method="DOWN",
-                    )
-                else:
-                    tax_base = tax_move.tax_base_amount
+                tax_base = self._l10n_mx_tax_base_dr(invoice, tax_move)
+                importe = self._l10n_mx_tax_importe_dr(invoice, tax_move)
 
                 tax_totals[tax_move.tax_line_id.id]["tax_base"] += tax_base
-                tax_totals[tax_move.tax_line_id.id]["importe"] += abs(tax_move.balance)
+                tax_totals[tax_move.tax_line_id.id]["importe"] += importe
 
         return [line for line in tax_totals.values()]
 
@@ -429,3 +393,27 @@ class AccountPayment(models.Model):
             domain.append(("tax_line_id.amount_type", "=", "percent"))
 
         return domain
+
+    def _l10n_mx_tax_base_dr(self, invoice, tax_move):
+        amount = tax_move.tax_base_amount
+
+        if invoice.currency_id != self.company_id.currency_id:
+            account = (
+                tax_move.company_id.account_cash_basis_base_account_id or
+                tax_move.account_id
+            )
+            base_line = tax_move.move_id.line_ids.filtered(
+                lambda l:
+                    l.id != tax_move.id and l.account_id == account and l.tax_ids
+            )
+            amount = -1 * base_line.amount_currency
+
+        return amount
+
+    def _l10n_mx_tax_importe_dr(self, invoice, tax_move):
+        amount = tax_move.balance
+
+        if invoice.currency_id != self.company_id.currency_id:
+            amount = tax_move.amount_currency
+
+        return -1 * amount
diff --git a/l10n_mx_facturae/templates/account_payment.xml b/l10n_mx_facturae/templates/account_payment.xml
index 9305f84f16..eeec6bff47 100644
--- a/l10n_mx_facturae/templates/account_payment.xml
+++ b/l10n_mx_facturae/templates/account_payment.xml
@@ -58,8 +58,8 @@
                         t-att-TotalTrasladosImpuestoIVA16="format_float(traslados.get('importeIVA16.0'), o.currency_id.decimal_places) if traslados.get('importeIVA16.0', False) else False"
                         t-att-TotalTrasladosBaseIVA8="format_float(traslados.get('baseIVA8.0'), o.currency_id.decimal_places) if traslados.get('baseIVA8.0', False) else False"
                         t-att-TotalTrasladosImpuestoIVA8="format_float(traslados.get('importeIVA8.0'), o.currency_id.decimal_places) if traslados.get('importeIVA8.0', False) else False"
-                        t-att-TotalTrasladosBaseIVA0="traslados.get('baseIVA0.0', False)"
-                        t-att-TotalTrasladosImpuestoIVA0="traslados.get('importeIVA0.0', False)"
+                        t-att-TotalTrasladosBaseIVA0="format_float(traslados.get('baseIVA0.0'), o.currency_id.decimal_places) if traslados.get('baseIVA0.0', False) else False"
+                        t-att-TotalTrasladosImpuestoIVA0="format_float(traslados.get('importeIVA0.0'), o.currency_id.decimal_places) if traslados.get('importeIVA0.0', False) else False"
                         t-att-TotalRetencionesIVA="retenciones.get('importeIVA', False)"
                         t-att-TotalRetencionesISR="retenciones.get('importeISR', False)"
                         t-att-TotalRetencionesIEPS="retenciones.get('importeIEPS', False)" />
@@ -92,9 +92,9 @@
                                 </pago20:RetencionesDR>
                                 <pago20:TrasladosDR>
                                     <pago20:TrasladoDR t-foreach="o.impuestos_dr(invoice)" t-as="tax_move"
-                                        t-att-BaseDR="format_float(tax_move.tax_base_amount, invoice.currency_id.decimal_places)"
+                                        t-att-BaseDR="format_float(o._l10n_mx_tax_base_dr(invoice, tax_move), invoice.currency_id.decimal_places)"
                                         t-att-ImpuestoDR="format_impuesto(tax_move.tax_line_id)"
-                                        t-att-ImporteDR="format_float(abs(tax_move.balance), invoice.currency_id.decimal_places)"
+                                        t-att-ImporteDR="format_float(abs(o._l10n_mx_tax_importe_dr(invoice, tax_move)), invoice.currency_id.decimal_places)"
                                         t-att-TasaOCuotaDR="format_tasaocuota(tax_move.tax_line_id)"
                                         t-att-TipoFactorDR="tax_move.tax_line_id.l10n_mx_tax_type" />
                                 </pago20:TrasladosDR>
-- 
GitLab


From 6177bb8bc75f9e34f785ad072b99bc40dbb5424b Mon Sep 17 00:00:00 2001
From: "ricardo.mendoza" <ricardo.mendoza@openpyme.mx>
Date: Thu, 18 Apr 2024 10:34:11 -0600
Subject: [PATCH 07/17] =?UTF-8?q?feat(cancelaci=C3=B3n=20de=20facturas):?=
 =?UTF-8?q?=20se=20creo=20un=20campo=20boolean=20en=20el=20objeto=20accoun?=
 =?UTF-8?q?t.move,=20y=20un=20campo=20al=20xml?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 l10n_mx_facturae/models/account_move.py | 3 +++
 l10n_mx_facturae/views/account_move.xml | 1 +
 2 files changed, 4 insertions(+)

diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index 063bb5549b..9ab48f3f88 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -17,6 +17,9 @@ class AccountMove(models.Model):
     _name = "account.move"
     _inherit = ["account.move", "base.cfdi"]
 
+    is_cancelable = fields.Boolean(
+        "Candidate is canceled"
+    )
     @property
     def formapago(self):
         """Return payment type for display on CFDI"""
diff --git a/l10n_mx_facturae/views/account_move.xml b/l10n_mx_facturae/views/account_move.xml
index f7d429a9fe..fefbbf1c4c 100644
--- a/l10n_mx_facturae/views/account_move.xml
+++ b/l10n_mx_facturae/views/account_move.xml
@@ -32,6 +32,7 @@
         <field name="arch" type="xml">
             <button name="button_cancel" position="before">
                 <field name="is_cfdi_candidate" invisible="1" />
+                <field name="is_cancelable" invisible="1" />
             </button>
             <xpath expr="//header" position="after">
                 <div
-- 
GitLab


From 9146e27d32ddd07425c4ef84849ff0c202e04283 Mon Sep 17 00:00:00 2001
From: "ricardo.mendoza" <ricardo.mendoza@openpyme.mx>
Date: Thu, 18 Apr 2024 18:10:12 -0600
Subject: [PATCH 08/17] =?UTF-8?q?Se=20agrego=20el=20boton=20Cancelar=20CFD?=
 =?UTF-8?q?I=20al=20header,=20se=20uso=20una=20funci=C3=B3n=20de=20ejemplo?=
 =?UTF-8?q?=20que=20imprime=20el=20hola=20mundo=20para=20que=20nos=20permi?=
 =?UTF-8?q?tiara=20crear=20el=20boton=20ya=20que=20la=20funci=C3=B3n=20es?=
 =?UTF-8?q?=20obligatoria=20y=20por=20ultimo=20se=20agregaron=20la=20condi?=
 =?UTF-8?q?ciones=20al=20attrs=20del=20boton=20creado=20para=20indicarlo?=
 =?UTF-8?q?=20cuando=20debe=20de=20estar=20visible?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 l10n_mx_facturae/models/account_move.py | 4 ++++
 l10n_mx_facturae/views/account_move.xml | 1 +
 2 files changed, 5 insertions(+)

diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index 9ab48f3f88..cfef523c5d 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -20,6 +20,10 @@ class AccountMove(models.Model):
     is_cancelable = fields.Boolean(
         "Candidate is canceled"
     )
+    def l10n_mx_action_cancel(self):
+        print("Hola Mundo")
+
+
     @property
     def formapago(self):
         """Return payment type for display on CFDI"""
diff --git a/l10n_mx_facturae/views/account_move.xml b/l10n_mx_facturae/views/account_move.xml
index fefbbf1c4c..59c291ca18 100644
--- a/l10n_mx_facturae/views/account_move.xml
+++ b/l10n_mx_facturae/views/account_move.xml
@@ -31,6 +31,7 @@
         <field name="inherit_id" ref="account.view_move_form"/>
         <field name="arch" type="xml">
             <button name="button_cancel" position="before">
+            <button name="l10n_mx_action_cancel" string="Cancelar CFDI" type="object" class="btn-primary" attrs="{'invisible': [('state', '!=', 'posted'), ('cfdi_state', '!=', 'done')]}"/>
                 <field name="is_cfdi_candidate" invisible="1" />
                 <field name="is_cancelable" invisible="1" />
             </button>
-- 
GitLab


From 1f634f8843e36428b05f46a579602db894a5d436 Mon Sep 17 00:00:00 2001
From: "ricardo.mendoza" <ricardo.mendoza@openpyme.mx>
Date: Fri, 19 Apr 2024 16:13:22 -0600
Subject: [PATCH 09/17] =?UTF-8?q?Se=20coloca=20el=20campo=20is=5Fcancelabl?=
 =?UTF-8?q?e=20despues=20de=20l10n=5Fmx=5Fexport,=20y=20se=20ajusta=20la?=
 =?UTF-8?q?=20identaci=C3=B3n=20en=20el=20modelo=20de=20vista?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 l10n_mx_facturae/models/account_move.py |  8 ++++----
 l10n_mx_facturae/views/account_move.xml | 13 ++++++++++++-
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index cfef523c5d..a170c923ce 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -17,13 +17,9 @@ class AccountMove(models.Model):
     _name = "account.move"
     _inherit = ["account.move", "base.cfdi"]
 
-    is_cancelable = fields.Boolean(
-        "Candidate is canceled"
-    )
     def l10n_mx_action_cancel(self):
         print("Hola Mundo")
 
-
     @property
     def formapago(self):
         """Return payment type for display on CFDI"""
@@ -161,6 +157,10 @@ class AccountMove(models.Model):
         string="Merchandise export",
     )
 
+    is_cancelable = fields.Boolean(
+        "Candidate is canceled"
+    )
+
     def button_validate(self):
         """
             Extend `AccountMove.button_validate`: prevents  to manipulate the
diff --git a/l10n_mx_facturae/views/account_move.xml b/l10n_mx_facturae/views/account_move.xml
index 59c291ca18..d5144b7db1 100644
--- a/l10n_mx_facturae/views/account_move.xml
+++ b/l10n_mx_facturae/views/account_move.xml
@@ -31,7 +31,18 @@
         <field name="inherit_id" ref="account.view_move_form"/>
         <field name="arch" type="xml">
             <button name="button_cancel" position="before">
-            <button name="l10n_mx_action_cancel" string="Cancelar CFDI" type="object" class="btn-primary" attrs="{'invisible': [('state', '!=', 'posted'), ('cfdi_state', '!=', 'done')]}"/>
+                <button name="l10n_mx_action_cancel"
+                        string="Cancel CFDI"
+                        type="object"
+                        class="btn-primary"
+                        attrs="{'invisible': [
+                        ('state', '!=', 'posted'),
+                         (
+                            'cfdi_state',
+                            '!=',
+                            'done'
+                         )
+                         ]}"/>
                 <field name="is_cfdi_candidate" invisible="1" />
                 <field name="is_cancelable" invisible="1" />
             </button>
-- 
GitLab


From 7376726be636a442b8eb763a4b96b78d7bc5bde2 Mon Sep 17 00:00:00 2001
From: "ricardo.mendoza" <ricardo.mendoza@openpyme.mx>
Date: Mon, 22 Apr 2024 13:26:55 -0600
Subject: [PATCH 10/17] =?UTF-8?q?Se=20coloca=20la=20funci=C3=B3n=20l10n=5F?=
 =?UTF-8?q?mx=5Faction=5Fcancel=20al=20final=20de=20las=20funciones=20de?=
 =?UTF-8?q?=20la=20clase=20account?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 l10n_mx_facturae/models/account_move.py | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index a170c923ce..81bb604051 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -17,9 +17,6 @@ class AccountMove(models.Model):
     _name = "account.move"
     _inherit = ["account.move", "base.cfdi"]
 
-    def l10n_mx_action_cancel(self):
-        print("Hola Mundo")
-
     @property
     def formapago(self):
         """Return payment type for display on CFDI"""
@@ -527,6 +524,8 @@ class AccountMove(models.Model):
 
         return res
 
+    def l10n_mx_action_cancel(self):
+        print("Hola Mundo")
 
 class AccountMoveLine(models.Model):
     _inherit = "account.move.line"
-- 
GitLab


From a42e016ff44d023102f9b29c54ea3e4a86112334 Mon Sep 17 00:00:00 2001
From: "ricardo.mendoza" <ricardo.mendoza@openpyme.mx>
Date: Mon, 22 Apr 2024 13:44:28 -0600
Subject: [PATCH 11/17] =?UTF-8?q?Se=20corrige=20la=20identaci=C3=B3n=20del?=
 =?UTF-8?q?=20bot=C3=B3n=20Cancel=20CFDI?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 l10n_mx_facturae/views/account_move.xml | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/l10n_mx_facturae/views/account_move.xml b/l10n_mx_facturae/views/account_move.xml
index d5144b7db1..90f997368a 100644
--- a/l10n_mx_facturae/views/account_move.xml
+++ b/l10n_mx_facturae/views/account_move.xml
@@ -36,12 +36,8 @@
                         type="object"
                         class="btn-primary"
                         attrs="{'invisible': [
-                        ('state', '!=', 'posted'),
-                         (
-                            'cfdi_state',
-                            '!=',
-                            'done'
-                         )
+                            ('state', '!=', 'posted'),
+                            ('cfdi_state', '!=', 'done')
                          ]}"/>
                 <field name="is_cfdi_candidate" invisible="1" />
                 <field name="is_cancelable" invisible="1" />
-- 
GitLab


From 9ba74c46cb73294b9f2e50dc6a0fcc06e5f977a3 Mon Sep 17 00:00:00 2001
From: "ricardo.mendoza" <ricardo.mendoza@openpyme.mx>
Date: Mon, 22 Apr 2024 14:04:11 -0600
Subject: [PATCH 12/17] =?UTF-8?q?Se=20corrige=20la=20identaci=C3=B3n=20del?=
 =?UTF-8?q?=20boton=20tal=20cual=20esta=20mostrada=20en=20el=20ejemplo=20g?=
 =?UTF-8?q?it=20lab=20con=204=20espacios=20a=20su=20izquierda?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 l10n_mx_facturae/views/account_move.xml | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/l10n_mx_facturae/views/account_move.xml b/l10n_mx_facturae/views/account_move.xml
index 90f997368a..9bfd892623 100644
--- a/l10n_mx_facturae/views/account_move.xml
+++ b/l10n_mx_facturae/views/account_move.xml
@@ -32,15 +32,15 @@
         <field name="arch" type="xml">
             <button name="button_cancel" position="before">
                 <button name="l10n_mx_action_cancel"
-                        string="Cancel CFDI"
-                        type="object"
-                        class="btn-primary"
-                        attrs="{'invisible': [
-                            ('state', '!=', 'posted'),
-                            ('cfdi_state', '!=', 'done')
-                         ]}"/>
+                    string="Cancel CFDI"
+                    type="object"
+                    class="btn-primary"
+                    attrs="{'invisible': [
+                        ('state', '!=', 'posted'),
+                        ('cfdi_state', '!=', 'done')
+                    ]}"/>
                 <field name="is_cfdi_candidate" invisible="1" />
-                <field name="is_cancelable" invisible="1" />
+                <field name="is_cancelable" invisible="0" />
             </button>
             <xpath expr="//header" position="after">
                 <div
-- 
GitLab


From e68109c1fd59e96b7904bceb21878f865f3a0d1a Mon Sep 17 00:00:00 2001
From: "ricardo.mendoza" <ricardo.mendoza@openpyme.mx>
Date: Mon, 22 Apr 2024 18:06:59 -0600
Subject: [PATCH 13/17] =?UTF-8?q?Se=20agrego=20la=20funci=C3=B3n=20que=20c?=
 =?UTF-8?q?ambia=20el=20estado=20de=20la=20celda=20is=5Fcancelable=20a=20T?=
 =?UTF-8?q?rue=20cuando=20se=20presiona=20el=20boton=20Cancel=20CFDI?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 l10n_mx_facturae/models/account_move.py | 3 ++-
 l10n_mx_facturae/views/account_move.xml | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index 81bb604051..04ab01abd9 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -525,7 +525,8 @@ class AccountMove(models.Model):
         return res
 
     def l10n_mx_action_cancel(self):
-        print("Hola Mundo")
+        # Call write() to update the is_cancelable field
+        self.write({'is_cancelable': True})
 
 class AccountMoveLine(models.Model):
     _inherit = "account.move.line"
diff --git a/l10n_mx_facturae/views/account_move.xml b/l10n_mx_facturae/views/account_move.xml
index 9bfd892623..2cde0e337c 100644
--- a/l10n_mx_facturae/views/account_move.xml
+++ b/l10n_mx_facturae/views/account_move.xml
@@ -40,7 +40,7 @@
                         ('cfdi_state', '!=', 'done')
                     ]}"/>
                 <field name="is_cfdi_candidate" invisible="1" />
-                <field name="is_cancelable" invisible="0" />
+                <field name="is_cancelable" invisible="1" />
             </button>
             <xpath expr="//header" position="after">
                 <div
-- 
GitLab


From d6a3a87ab53f458d0d91292631cc402e3e7c0f69 Mon Sep 17 00:00:00 2001
From: "ricardo.mendoza" <ricardo.mendoza@openpyme.mx>
Date: Tue, 23 Apr 2024 11:23:19 -0600
Subject: [PATCH 14/17] Se agrega el ciclo que filtra a las facturas por
 atributos

---
 l10n_mx_facturae/models/account_move.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index 04ab01abd9..325d97e325 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -527,6 +527,17 @@ class AccountMove(models.Model):
     def l10n_mx_action_cancel(self):
         # Call write() to update the is_cancelable field
         self.write({'is_cancelable': True})
+        # Get only invoices with related cfdi to cancel cfdi before cancel invoice
+        """Extend `AccountInvoice.action_cancel()`; Cancels the CFDI related to the
+        invoice
+        """
+        # Get only invoices with related cfdi to cancel cfdi before cancel invoice
+        cfdis = self.filtered(
+            lambda i:
+                i.journal_id.sign_sat
+                and i.cfdi_id
+                and i.cfdi_id.state not in ["draft", "cancel"]
+        )
 
 class AccountMoveLine(models.Model):
     _inherit = "account.move.line"
-- 
GitLab


From a19579960e63ee888f5f55820bb01fbbecf32fac Mon Sep 17 00:00:00 2001
From: "ricardo.mendoza" <ricardo.mendoza@openpyme.mx>
Date: Tue, 23 Apr 2024 13:10:11 -0600
Subject: [PATCH 15/17] Se agrega el ciclo for y dentro de este manda el
 mensaje al chatter siempre que el for se ejecute

---
 l10n_mx_facturae/models/account_move.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index 325d97e325..2a995c376a 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -538,6 +538,18 @@ class AccountMove(models.Model):
                 and i.cfdi_id
                 and i.cfdi_id.state not in ["draft", "cancel"]
         )
+        for invoice in cfdis:
+            # Ensure we can cancel this invoice
+            invoice.check_if_can_cancel()
+            # If l10n_mx_edi_original_invoice is set save uuid to send info to PAC
+            # while cancel invoice
+            invoice.cfdi_id.substitute_cfdi_uuid = (
+                invoice.l10n_mx_edi_original_invoice.cfdi_id.uuid
+            )
+            invoice.message_post(
+                body=_("Cancellation request sent")
+            )
+            cancelacion = invoice.cancel_cfdi()[0]
 
 class AccountMoveLine(models.Model):
     _inherit = "account.move.line"
-- 
GitLab


From c4db8b68da01bf286ac189c4fbacd2faf2379846 Mon Sep 17 00:00:00 2001
From: "ricardo.mendoza" <ricardo.mendoza@openpyme.mx>
Date: Tue, 23 Apr 2024 13:17:46 -0600
Subject: [PATCH 16/17] Se agregaron codiciones

---
 l10n_mx_facturae/models/account_move.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index 2a995c376a..1d29077802 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -550,6 +550,19 @@ class AccountMove(models.Model):
                 body=_("Cancellation request sent")
             )
             cancelacion = invoice.cancel_cfdi()[0]
+            if cancelacion:
+                # CFDI cancelled (cancelacion == True) must cancel invoice too
+                invoice.button_draft()
+                invoice.button_cancel()
+            elif cancelacion is None:
+                # CFDI set to approval (cancelacion == None) must set invoice
+                # to waiting too
+                invoice.write({"state": "waiting"})
+            elif cancelacion is False:
+                # CFDI cancel denied (cancelacion == False) must get back invoice
+                # to open state
+                self.undo_waiting_state()
+
 
 class AccountMoveLine(models.Model):
     _inherit = "account.move.line"
-- 
GitLab


From 98181ff8fe54656653d7485e97a7fbb46051b90a Mon Sep 17 00:00:00 2001
From: "ricardo.mendoza" <ricardo.mendoza@openpyme.mx>
Date: Tue, 23 Apr 2024 18:19:30 -0600
Subject: [PATCH 17/17] =?UTF-8?q?Problema=20con=20la=20variable=20cancelac?=
 =?UTF-8?q?i=C3=B3n=20dentro=20del=20ciclo=20for=20en=20la=20funcion=20l10?=
 =?UTF-8?q?n=5Fmx=5Faction=5Fcancel?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 l10n_mx_facturae/i18n/es_MX.po          | 628 ++++++++++++++++++++++++
 l10n_mx_facturae/models/account_move.py |  65 +--
 l10n_mx_facturae/views/account_move.xml |   1 +
 3 files changed, 634 insertions(+), 60 deletions(-)
 create mode 100644 l10n_mx_facturae/i18n/es_MX.po

diff --git a/l10n_mx_facturae/i18n/es_MX.po b/l10n_mx_facturae/i18n/es_MX.po
new file mode 100644
index 0000000000..460e0b6d95
--- /dev/null
+++ b/l10n_mx_facturae/i18n/es_MX.po
@@ -0,0 +1,628 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# 	* l10n_mx_facturae
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 15.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-04-25 23:00+0000\n"
+"PO-Revision-Date: 2024-04-25 18:02-0600\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: es_MX\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+"X-Generator: Poedit 3.2.2\n"
+
+#. module: l10n_mx_facturae
+#: model:ir.actions.report,name:l10n_mx_facturae.ir_actions_report_pdf_account_move_cfdi
+msgid "Account Move CFDI PDF"
+msgstr "Traslado de cuenta CFDI PDF"
+
+#. module: l10n_mx_facturae
+#: model:ir.actions.report,name:l10n_mx_facturae.ir_actions_report_xml_account_move_cfdi
+msgid "Account Move CFDI XML"
+msgstr "Traslado de cuenta CFDI XML"
+
+#. module: l10n_mx_facturae
+#: model:ir.actions.report,name:l10n_mx_facturae.ir_actions_report_pdf_account_payment_cfdi
+msgid "Account Payment CFDI PDF"
+msgstr "Pago de cuenta CFDI PDF"
+
+#. module: l10n_mx_facturae
+#: model:ir.actions.report,name:l10n_mx_facturae.ir_actions_report_xml_account_payment_cfdi
+msgid "Account Payment CFDI XML"
+msgstr "Pago de cuenta CFDI XML"
+
+#. module: l10n_mx_facturae
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.l10n_mx_facturae_res_partner_view_form
+msgid ""
+"Addends are used to add additional content to the invoice that  the SAT.\n"
+"                    An addendum contains information of a commercial, "
+"logistic and  operation,\n"
+"                    often required by the receiving company (client).\n"
+"                    <br/><br/>\n"
+"                    Once you have selected the addendum, you must add the "
+"necessary information\n"
+"                    in all or some of the following sections: Customers, "
+"suppliers, company,\n"
+"                    products, services, invoices or delivery notes\n"
+"                    <br/><br/>\n"
+"                    Done the necessary configurations, you will be able to "
+"stamp your invoices\n"
+"                    with the selected complement."
+msgstr ""
+"Los sumandos se utilizan para agregar contenido adicional a la factura que "
+"emite el SAT.\n"
+"                     Una adenda contiene información de carácter comercial, "
+"logístico y de operación,\n"
+"                     a menudo requerido por la empresa receptora "
+"(cliente).\n"
+"                     <br/>><br/>\n"
+"                     Una vez que hayas seleccionado la adenda, deberás "
+"agregar la información necesaria\n"
+"                     en todos o algunos de los siguientes apartados: "
+"Clientes, proveedores, empresa,\n"
+"                     productos, servicios, facturas o albaranes\n"
+"                     <br/>><br/>\n"
+"                     Realizadas las configuraciones necesarias, podrás "
+"sellar tus facturas\n"
+"                     con el complemento seleccionado."
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__cfdi_adenda_ids
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__cfdi_adenda_ids
+msgid "Addendum"
+msgstr "Adenda"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_bank_statement_line__address_issued_id
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__address_issued_id
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__address_issued_id
+msgid "Address Issued Invoice"
+msgstr "Dirección Factura Emitida"
+
+#. module: l10n_mx_facturae
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.l10n_mx_facturae_res_partner_view_form
+msgid "Adendas"
+msgstr "Adendas"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields.selection,name:l10n_mx_facturae.selection__account_move__cfdi_periodicity__03
+msgid "Biweekly"
+msgstr "Cada dos semanas"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__cfdi_folio_fiscal
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__cfdi_folio_fiscal
+msgid "CFD-I Folio Fiscal"
+msgstr "CFD-I Folio Fiscal"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__cfdi_id
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__cfdi_id
+msgid "CFDI"
+msgstr "CFDI"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_partner__cfdi_adenda_ids
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_users__cfdi_adenda_ids
+msgid "CFDI Adendas"
+msgstr "CFDI Adendas"
+
+#. module: l10n_mx_facturae
+#: model:res.groups,name:l10n_mx_facturae.group_cfdi_custom_number
+msgid "CFDI Custom Number"
+msgstr "Número de Pedimento"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_bank_statement_line__cfdi_relation_type
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__cfdi_relation_type
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__cfdi_relation_type
+msgid "CFDI Relation type"
+msgstr "CFDI Tipo de relación"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move__cfdi_id
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_payment__cfdi_id
+msgid "CFDI related to the selected record"
+msgstr "CFDI relacionado con el registro seleccionado"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_bank_statement_line__cfdi_use
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__cfdi_use
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__cfdi_use
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_partner__cfdi_use_id
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_users__cfdi_use_id
+msgid "CFDI use"
+msgstr "Uso de CFDI"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#, python-format
+msgid ""
+"Can't post the entry %s, the related invoice is waiting for a request to "
+"cancel."
+msgstr ""
+"No se puede asentar la póliza %s, porque la factura relacionada esta "
+"esperando el resultado de una solicitud de cancelación."
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#, python-format
+msgid "Cancellation request sent"
+msgstr "Solicitud de cancelación enviada"
+
+#. module: l10n_mx_facturae
+#: model:res.groups,name:l10n_mx_facturae.cfdi_cuentapredial
+msgid "Cfdi Cuenta Predial"
+msgstr "Cuenta Predial"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__cfdi_datetime
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__cfdi_datetime
+msgid "Cfdi Datetime"
+msgstr "CFDI Fecha/hora"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_bank_statement_line__cfdi_periodicity
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__cfdi_periodicity
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__cfdi_periodicity
+msgid "Cfdi Periodicity"
+msgstr "CFDI Periodicidad"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_res_partner__cfdi_use_id
+#: model:ir.model.fields,help:l10n_mx_facturae.field_res_users__cfdi_use_id
+msgid ""
+"Cfdi usage that will be used by default on this customer invoices and "
+"credit notes"
+msgstr ""
+"Uso de CFDI que se utilizará por defecto en las facturas y notas de crédito "
+"de este cliente"
+
+#. module: l10n_mx_facturae
+#: model:ir.model,name:l10n_mx_facturae.model_res_company
+msgid "Companies"
+msgstr "Compañías"
+
+#. module: l10n_mx_facturae
+#: model:ir.model,name:l10n_mx_facturae.model_res_partner
+msgid "Contact"
+msgstr "Contacto"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#, python-format
+msgid "Could not check SAT invoice status due to the following error: %s."
+msgstr ""
+"No se ha podido comprobar el estado de la factura SAT debido al siguiente "
+"error: %s."
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move_line__cfdi_cuentapredial
+msgid "Cuenta Predial"
+msgstr "Cuenta Predial"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_res_partner__gln_number
+#: model:ir.model.fields,help:l10n_mx_facturae.field_res_users__gln_number
+msgid "Customer or Delivery branch"
+msgstr "Cliente o sucursal de entrega"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields.selection,name:l10n_mx_facturae.selection__account_move__cfdi_periodicity__01
+msgid "Daily"
+msgstr "Diario"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_bank_statement_line__date_invoice_cancel
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__date_invoice_cancel
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__date_invoice_cancel
+msgid "Date Invoice Cancelled"
+msgstr "Fecha de cancelación de la factura"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_bank_statement_line__datetime
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__datetime
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__datetime
+msgid "Datetime"
+msgstr "Fecha y hora"
+
+#. module: l10n_mx_facturae
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_move_view_form_customer
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_move_view_tree
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_payment_cfdi_view_form
+msgid "Fiscal Number"
+msgstr "Número Fiscal"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move__cfdi_folio_fiscal
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_payment__cfdi_folio_fiscal
+msgid "Folio used in the electronic invoice"
+msgstr "Folio utilizado en la factura electrónica"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_partner__gln_number
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_users__gln_number
+msgid "GLN Number"
+msgstr "Número GLN"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move__is_cfdi_candidate
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_payment__is_cfdi_candidate
+msgid ""
+"Helper field to determine if document is CFDI candidate to show send PAC "
+"button on form view."
+msgstr ""
+"Campo auxiliar para determinar si el documento es candidato a CFDI para "
+"mostrar el botón enviar PAC en la vista del formulario."
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_payment__show_unreconcile
+msgid "Helper field to hide unreconcile button"
+msgstr "Campo de ayuda para ocultar el botón de irreconciliar"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move_line__cfdi_numero_identificacion
+msgid "Identification Number"
+msgstr "Número de identificación"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_bank_statement_line__date_invoice_cancel
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move__date_invoice_cancel
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_payment__date_invoice_cancel
+msgid "If the invoice is cancelled, save the date when was cancel"
+msgstr "Si la factura es cancelada, guarde la fecha cuando se canceló"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#, python-format
+msgid ""
+"Incorrect tax sequence configuration, check this data in Account >> Tax >> "
+"Sequence"
+msgstr ""
+"Configuración incorrecta de la secuencia de impuestos, compruebe estos "
+"datos en Cuenta >> Impuestos >> Secuencia"
+
+#. module: l10n_mx_facturae
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_move_view_search
+msgid "Invoices that being substituted and must be cancelled"
+msgstr "Facturas que se sustituyen y deben cancelarse"
+
+#. module: l10n_mx_facturae
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_move_view_search
+msgid "Invoices to be signed"
+msgstr "Facturas por firmar"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__is_cfdi_candidate
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__is_cfdi_candidate
+msgid "Is Cfdi Candidate"
+msgstr "Es Candidato Cfdi"
+
+#. module: l10n_mx_facturae
+#: model:ir.model,name:l10n_mx_facturae.model_account_move
+msgid "Journal Entry"
+msgstr "Asiento de diario"
+
+#. module: l10n_mx_facturae
+#: model:ir.model,name:l10n_mx_facturae.model_account_move_line
+msgid "Journal Item"
+msgstr "Apunte contable"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__l10n_mx_edi_error
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__l10n_mx_edi_error
+msgid "L10N Mx Edi Error"
+msgstr "L10N Mx Edi Error"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_bank_statement_line__l10n_mx_edi_original_invoice
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__l10n_mx_edi_original_invoice
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__l10n_mx_edi_original_invoice
+msgid "L10N Mx Edi Original Invoice"
+msgstr "L10N Mx Edi Factura original"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_bank_statement_line__l10n_mx_edi_to_cancel
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__l10n_mx_edi_to_cancel
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__l10n_mx_edi_to_cancel
+msgid "L10N Mx Edi To Cancel"
+msgstr "L10N Mx Edi Para Cancelar"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_bank_statement_line__l10n_mx_export
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__l10n_mx_export
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__l10n_mx_export
+msgid "Merchandise export"
+msgstr "Exportación de mercancías"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#, python-format
+msgid "Missing SAT code for product: {product}"
+msgstr "Falta el código SAT para el producto: {producto}"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields.selection,name:l10n_mx_facturae.selection__account_move__cfdi_periodicity__04
+msgid "Monthly"
+msgstr "Mensualmente"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#, python-format
+msgid "No status update found on SAT"
+msgstr "No se ha encontrado ninguna actualización de estado en SAT"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_res_partner__supplier_number
+#: model:ir.model.fields,help:l10n_mx_facturae.field_res_users__supplier_number
+msgid "Number or reference that the Client assigned to our company."
+msgstr "Número o referencia que el Cliente asignó a nuestra empresa."
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move_line__cfdi_custom_number
+msgid "N° Pediment"
+msgstr "N° Pedimento"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#, python-format
+msgid "Operation not supported"
+msgstr "Operación no admitida"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move__related_cfdi_ids
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_payment__related_cfdi_ids
+msgid "Original CFDI to which this CFDI is referred to"
+msgstr "CFDI original al que se refiere este CFDI"
+
+#. module: l10n_mx_facturae
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_move_view_form_customer
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_payment_cfdi_view_form
+msgid "PAC State"
+msgstr "Estado PAC"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_bank_statement_line__payment_method_id
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__payment_method_id
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_partner__payment_method_id
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_users__payment_method_id
+msgid "Payment Method"
+msgstr "Forma de pago"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_res_partner__payment_method_id
+#: model:ir.model.fields,help:l10n_mx_facturae.field_res_users__payment_method_id
+msgid ""
+"Payment method associated with this partner accordingto CFDI 4.0 catalog."
+msgstr "Forma de pago asociada a este socio de acuerdo al catálogo CFDI 4.0."
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_bank_statement_line__payment_method_id
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move__payment_method_id
+msgid "Payment method associated with this payment term according"
+msgstr "Método de pago asociado a este plazo de pago según"
+
+#. module: l10n_mx_facturae
+#: model:ir.model,name:l10n_mx_facturae.model_account_payment
+msgid "Payments"
+msgstr "Pagos"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#, python-format
+msgid ""
+"Predial Account must be only numbers.\n"
+"All letters must be replaced by '0'"
+msgstr ""
+"La cuenta de premarcado debe ser solo numérica.\n"
+"Todas las letras deben sustituirse por \"0\"."
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move_line__cfdi_cuentapredial
+msgid "Predial number for real state lease invoices"
+msgstr "Número predial para facturas de arrendamiento de inmuebles"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#, python-format
+msgid "Product {p} must have at least one tax selected."
+msgstr "El producto {p} debe tener al menos un impuesto seleccionado."
+
+#. module: l10n_mx_facturae
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_move_view_form_customer
+msgid "Related"
+msgstr "Relacionado"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__related_cfdi_ids
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__related_cfdi_ids
+msgid "Related Cfdi"
+msgstr "CFDI relacionado"
+
+#. module: l10n_mx_facturae
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_move_view_form_customer
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_payment_cfdi_view_form
+msgid "Retry"
+msgstr "Reintentar"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move__cfdi_adenda_ids
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_payment__cfdi_adenda_ids
+msgid "Select addendum node to use on this CFDI."
+msgstr "Seleccione el nodo de adenda a utilizar en este CFDI."
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__sequence_id
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__sequence_id
+msgid "Sequence"
+msgstr "Secuencia"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_partner__show_edi
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_users__show_edi
+msgid "Show Edi"
+msgstr "Mostrar edición"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_partner__show_glnnumber
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_users__show_glnnumber
+msgid "Show Glnnumber"
+msgstr "Mostrar número de registro"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_partner__show_suppliernumber
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_users__show_suppliernumber
+msgid "Show Suppliernumber"
+msgstr "Mostrar número de proveedor"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__show_unreconcile
+msgid "Show Unreconcile"
+msgstr "Mostrar irreconciliar"
+
+#. module: l10n_mx_facturae
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_payment_cfdi_view_form
+msgid "Sign"
+msgstr "Firma"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_payment.py:0
+#, python-format
+msgid ""
+"Some of the invoices that will be paid with this record are not signed, and "
+"the UUID is required to indicate the invoices that are paid with this CFDI "
+msgstr ""
+"Algunas de las facturas que se pagarán con este registro no están firmadas, "
+"y se requiere el UUID para indicar las facturas que se pagan con este CFDI"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__cfdi_state
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__cfdi_state
+msgid "State"
+msgstr "Estado"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move__cfdi_state
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_payment__cfdi_state
+msgid "State of attachments"
+msgstr "Estado de los archivos adjuntos"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_move__state
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_account_payment__state
+msgid "Status"
+msgstr "Estado"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_partner__supplier_number
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_users__supplier_number
+msgid "Supplier Number"
+msgstr "Número de proveedor"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_bank_statement_line__l10n_mx_edi_to_cancel
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move__l10n_mx_edi_to_cancel
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_payment__l10n_mx_edi_to_cancel
+msgid ""
+"Technical field to display a warning when an invoice must be canceled "
+"because have being replaced by a new one."
+msgstr ""
+"Campo técnico para mostrar un aviso cuando una factura debe cancelarse "
+"porque ha sido sustituida por una nueva."
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_bank_statement_line__l10n_mx_edi_original_invoice
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move__l10n_mx_edi_original_invoice
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_payment__l10n_mx_edi_original_invoice
+msgid "Technical field to relate origin invoice with substitute"
+msgstr "Campo técnico para relacionar la factura de origen con la sustituta"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#, python-format
+msgid "The invoice could not be canceled"
+msgstr "La factura no se ha podido cancelar"
+
+#. module: l10n_mx_facturae
+#: model:res.groups,comment:l10n_mx_facturae.cfdi_cuentapredial
+msgid ""
+"The user will have access to add Cuenta Predial information to invoice "
+"lines."
+msgstr ""
+"El usuario tendrá acceso al campo para la Cuenta Predial en las líneas de "
+"las facturas."
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_bank_statement_line__address_issued_id
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move__address_issued_id
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_payment__address_issued_id
+msgid ""
+"This address will be used as address that issued for electronic invoice"
+msgstr ""
+"Esta dirección se utilizará como dirección emitida para la factura "
+"electrónica"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_res_partner__cfdi_adenda_ids
+#: model:ir.model.fields,help:l10n_mx_facturae.field_res_users__cfdi_adenda_ids
+msgid "This field allows adding a node or addendum to the invoice"
+msgstr "Este campo permite agregar un nodo o adenda a la factura"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#, python-format
+msgid ""
+"This invoice must be cancelled because have being replaced with invoice: "
+msgstr ""
+"Esta factura debe cancelarse porque ha sido reemplazada por una factura: "
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,help:l10n_mx_facturae.field_account_move_line__cfdi_numero_identificacion
+msgid "This number is the identification number for invoice line in cfdi"
+msgstr ""
+"Este número es el número de identificación de la línea de factura en CFDI"
+
+#. module: l10n_mx_facturae
+#: code:addons/l10n_mx_facturae/models/account_move.py:0
+#: model:ir.model.fields.selection,name:l10n_mx_facturae.selection__account_move__state__waiting
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_move_view_search
+#, python-format
+msgid "To cancel"
+msgstr "A cancelar"
+
+#. module: l10n_mx_facturae
+#: model_terms:ir.ui.view,arch_db:l10n_mx_facturae.account_move_view_search
+msgid "To sign"
+msgstr "A firmar"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_company__cfdi_use_id
+msgid "Use CFDI"
+msgstr "Uso de CFDI"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_partner__edi
+#: model:ir.model.fields,field_description:l10n_mx_facturae.field_res_users__edi
+msgid "User EDI"
+msgstr "Usuario EDI"
+
+#. module: l10n_mx_facturae
+#: model:ir.model.fields.selection,name:l10n_mx_facturae.selection__account_move__cfdi_periodicity__02
+msgid "Weekly"
+msgstr "Semanal"
+
+#. module: l10n_mx_facturae
+#: model:ir.model,name:l10n_mx_facturae.model_report_l10n_mx_facturae_account_move
+msgid "report.l10n_mx_facturae.account_move"
+msgstr "report.l10n_mx_facturae.account_move"
+
+#. module: l10n_mx_facturae
+#: model:ir.model,name:l10n_mx_facturae.model_report_l10n_mx_facturae_account_payment
+msgid "report.l10n_mx_facturae.account_payment"
+msgstr "report.l10n_mx_facturae.account_payment"
diff --git a/l10n_mx_facturae/models/account_move.py b/l10n_mx_facturae/models/account_move.py
index 1d29077802..312a8c1041 100644
--- a/l10n_mx_facturae/models/account_move.py
+++ b/l10n_mx_facturae/models/account_move.py
@@ -320,42 +320,6 @@ class AccountMove(models.Model):
                 # Create new CFDI object for this invoice
                 account_invoice.create_cfdi()
 
-    def action_cancel(self):
-        """Extend `AccountMove.action_cancel()`; Cancels the CFDI related to the
-        invoice
-        """
-        # Get only invoices with related cfdi to cancel cfdi before cancel invoice
-        cfdis = self.filtered(
-            lambda i:
-                i.journal_id.sign_sat
-                and i.cfdi_id
-                and i.cfdi_id.state not in ["draft", "cancel"]
-        )
-        for invoice in cfdis:
-            # Ensure we can cancel this invoice
-            invoice.check_if_can_cancel()
-            # If l10n_mx_edi_original_invoice is set save uuid to send info to PAC
-            # while cancel invoice
-            invoice.cfdi_id.substitute_cfdi_uuid = (
-                invoice.l10n_mx_edi_original_invoice.cfdi_id.uuid
-            )
-            cancelacion = invoice.cancel_cfdi()[0]
-            if cancelacion:
-                # CFDI cancelled (cancelacion == True) must cancel invoice too
-                super(AccountMove, invoice).action_cancel()
-            elif cancelacion is None:
-                # CFDI set to approval (cancelacion == None) must set invoice
-                # to waiting too
-                invoice.write({"state": "waiting"})
-            elif cancelacion is False:
-                # CFDI cancel denied (cancelacion == False) must get back invoice
-                # to open state
-                self.undo_waiting_state()
-
-        # Call super only with invoices without CFDI
-        invoices = self - cfdis
-        return super(AccountMove, invoices).action_cancel()
-
     def undo_waiting_state(self):
         """When cancel is negate revert invoice to open and post account_move"""
         for record in self:
@@ -525,12 +489,11 @@ class AccountMove(models.Model):
         return res
 
     def l10n_mx_action_cancel(self):
+        """Cancels the CFDI related to the invoice"""
+
         # Call write() to update the is_cancelable field
-        self.write({'is_cancelable': True})
-        # Get only invoices with related cfdi to cancel cfdi before cancel invoice
-        """Extend `AccountInvoice.action_cancel()`; Cancels the CFDI related to the
-        invoice
-        """
+        self.write({"is_cancelable": True})
+
         # Get only invoices with related cfdi to cancel cfdi before cancel invoice
         cfdis = self.filtered(
             lambda i:
@@ -538,30 +501,12 @@ class AccountMove(models.Model):
                 and i.cfdi_id
                 and i.cfdi_id.state not in ["draft", "cancel"]
         )
+
         for invoice in cfdis:
-            # Ensure we can cancel this invoice
-            invoice.check_if_can_cancel()
-            # If l10n_mx_edi_original_invoice is set save uuid to send info to PAC
-            # while cancel invoice
-            invoice.cfdi_id.substitute_cfdi_uuid = (
-                invoice.l10n_mx_edi_original_invoice.cfdi_id.uuid
-            )
             invoice.message_post(
                 body=_("Cancellation request sent")
             )
             cancelacion = invoice.cancel_cfdi()[0]
-            if cancelacion:
-                # CFDI cancelled (cancelacion == True) must cancel invoice too
-                invoice.button_draft()
-                invoice.button_cancel()
-            elif cancelacion is None:
-                # CFDI set to approval (cancelacion == None) must set invoice
-                # to waiting too
-                invoice.write({"state": "waiting"})
-            elif cancelacion is False:
-                # CFDI cancel denied (cancelacion == False) must get back invoice
-                # to open state
-                self.undo_waiting_state()
 
 
 class AccountMoveLine(models.Model):
diff --git a/l10n_mx_facturae/views/account_move.xml b/l10n_mx_facturae/views/account_move.xml
index 2cde0e337c..bd0ec404a5 100644
--- a/l10n_mx_facturae/views/account_move.xml
+++ b/l10n_mx_facturae/views/account_move.xml
@@ -36,6 +36,7 @@
                     type="object"
                     class="btn-primary"
                     attrs="{'invisible': [
+                        '&amp;',
                         ('state', '!=', 'posted'),
                         ('cfdi_state', '!=', 'done')
                     ]}"/>
-- 
GitLab