v1.0.0 2024-12-06 22:06 UTC

This package is auto-updated.

Last update: 2025-01-07 18:37:59 UTC


README

Simple and easy to use a compliance solution for ZATCA integration with your ERP application.

Features

  • OnBoarding.
  • Sign Invoice.
  • Report And Clear Invoices.
  • Invoice Status.
  • Invoice Compliance.

Installation

composer require digitaltunnel/zatca

Publish repository configurations

php artisan vendor:publish --provider="DigitalTunnel\Zatca\ZatcaServiceProvider"

This will publish zatcaconnect.php configurations to config/zatcaconnect.php



Prepare Environment

Add the following configuration to .env file.

ZATCA_CONNECT_API_KEY="user token here" #Get API key from ZATCA Connect dashboard

Usage

  • Device OnBoarding
    use DigitalTunnel\Zatca\Data\CSRDetails;
    use DigitalTunnel\Zatca\Facades\ZatcaConnect;

  ZatcaConnect::setEnviroment("developer") // developer, simulation, production
      ->setOtp(123456)
      ->setCSRDetails(
        new CSRDetails(
          deviceName: "POS-001",
          organizationIdentifier: "399999999900003",
          organizationUnitName: "Yasmin Branch",
          organizationName: "Digital Tunnel, LLC",
          countryName: "SA",
          address: "RUH2+XV Riyadh",
          businessCategory: "Technology",
        )
      )
      ->onBoarding();
  • Example Response
{
    "message": "Successfully onboarded device",
    "data":
    {
        "name": "POS-001-308227458-399999999900003",
        "serial_number": "1-POS-001|2-MacOS|3-52C3725B-B00E-5776-BDC8-96FA4A2749F6",
        "environment": "developer",
        "ccsid_request_id": 1234567890123,
        "ccsid_binary_security_token": "TUlJQ096Q0NBZUtnQXdJQkFnSUdBWk9ieE5PcU1Bb0dDQ3FHU000OUJBTUNNQlV4RXpBUkJnTlZCQU1NQ21WSmJuWnZhV05wYm1jd0hoY05NalF4TWpBMk1URXpPVFF6V2hjTk1qa3hNakExTWpFd01EQXdXakJ2TVFzd0NRWURWUVFHRXdKVFFURVdNQlFHQTFVRUN4TU5XV0Z6YldsdUlFSnlZVzVqYURFY01Cb0dBMVVFQ2hNVFJHbG5hWFJoYkNCVWRXNXVaV3dzSUV4TVF6RXFNQ2dHQTFVRUF4TWhVRTlUTFRBd01TMHpNRGd5TWpjME5UZ3RNems1T1RrNU9UazVPVEF3TURBek1GWXdFQVlIS29aSXpqMENBUVlGSzRFRUFBb0RRZ0FFR0dHeHRLU2M5a0plU25rZ0pMSVdQSWk0dnFsRUZKclRGTFJxT2ZiaXFKbEtFTTAxZDNmUVBjdzV3aDhIYzB0bXpwVlhLbmVwdm9JNXF1bUVJeGViMzZPQnhqQ0J3ekFNQmdOVkhSTUJBZjhFQWpBQU1JR3lCZ05WSFJFRWdhb3dnYWVrZ2FRd2dhRXhRVEEvQmdOVkJBUVVPREV0VUU5VExUQXdNWHd5TFUxaFkwOVRmRE10TlRKRE16Y3lOVUl0UWpBd1JTMDFOemMyTFVKRVF6Z3RPVFpHUVRSQk1qYzBPVVkyTVI4d0hRWUtDWkltaVpQeUxHUUJBUk1QTXprNU9UazVPVGs1T1RBd01EQXpNUTB3Q3dZRFZRUU1Fd1F4TVRBd01SY3dGUVlEVlFRYUV3NVNWVWd5SzFoV0lGSnBlV0ZrYURFVE1CRUdBMVVFRHhNS1ZHVmphRzV2Ykc5bmVUQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQlRZL0YzZ3VtWUJISTRsMnpZdnNGMWVTclRQTjE4Skl6YlJKRUszM28yZmdJZ0tXWDA5USt0d0k3aDdRUFlpalFvK2ZnZW5iZ09LTzJsUEhNRXdyUXNsbDg9",
        "ccsid_secret": "YcaUYQdRIu/djIXIiLhhCBYpMX5cYN5i7kCTSl0avJI=",
        "pcsid_request_id": 30368,
        "pcsid_binary_security_token": "TUlJRDNqQ0NBNFNnQXdJQkFnSVRFUUFBT0FQRjkwQWpzL3hjWHdBQkFBQTRBekFLQmdncWhrak9QUVFEQWpCaU1SVXdFd1lLQ1pJbWlaUHlMR1FCR1JZRmJHOWpZV3d4RXpBUkJnb0praWFKay9Jc1pBRVpGZ05uYjNZeEZ6QVZCZ29Ka2lhSmsvSXNaQUVaRmdkbGVIUm5ZWHAwTVJzd0dRWURWUVFERXhKUVVscEZTVTVXVDBsRFJWTkRRVFF0UTBFd0hoY05NalF3TVRFeE1Ea3hPVE13V2hjTk1qa3dNVEE1TURreE9UTXdXakIxTVFzd0NRWURWUVFHRXdKVFFURW1NQ1FHQTFVRUNoTWRUV0Y0YVcxMWJTQlRjR1ZsWkNCVVpXTm9JRk4xY0hCc2VTQk1WRVF4RmpBVUJnTlZCQXNURFZKcGVXRmthQ0JDY21GdVkyZ3hKakFrQmdOVkJBTVRIVlJUVkMwNE9EWTBNekV4TkRVdE16azVPVGs1T1RrNU9UQXdNREF6TUZZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUFvRFFnQUVvV0NLYTBTYTlGSUVyVE92MHVBa0MxVklLWHhVOW5QcHgydmxmNHloTWVqeThjMDJYSmJsRHE3dFB5ZG84bXEwYWhPTW1Obzhnd25pN1h0MUtUOVVlS09DQWdjd2dnSURNSUd0QmdOVkhSRUVnYVV3Z2FLa2daOHdnWnd4T3pBNUJnTlZCQVFNTWpFdFZGTlVmREl0VkZOVWZETXRaV1F5TW1ZeFpEZ3RaVFpoTWkweE1URTRMVGxpTlRndFpEbGhPR1l4TVdVME5EVm1NUjh3SFFZS0NaSW1pWlB5TEdRQkFRd1BNems1T1RrNU9UazVPVEF3TURBek1RMHdDd1lEVlFRTURBUXhNVEF3TVJFd0R3WURWUVFhREFoU1VsSkVNamt5T1RFYU1CZ0dBMVVFRHd3UlUzVndjR3g1SUdGamRHbDJhWFJwWlhNd0hRWURWUjBPQkJZRUZFWCtZdm1tdG5Zb0RmOUJHYktvN29jVEtZSzFNQjhHQTFVZEl3UVlNQmFBRkp2S3FxTHRtcXdza0lGelZ2cFAyUHhUKzlObk1Ic0dDQ3NHQVFVRkJ3RUJCRzh3YlRCckJnZ3JCZ0VGQlFjd0FvWmZhSFIwY0RvdkwyRnBZVFF1ZW1GMFkyRXVaMjkyTG5OaEwwTmxjblJGYm5KdmJHd3ZVRkphUlVsdWRtOXBZMlZUUTBFMExtVjRkR2RoZW5RdVoyOTJMbXh2WTJGc1gxQlNXa1ZKVGxaUFNVTkZVME5CTkMxRFFTZ3hLUzVqY25Rd0RnWURWUjBQQVFIL0JBUURBZ2VBTUR3R0NTc0dBUVFCZ2pjVkJ3UXZNQzBHSlNzR0FRUUJnamNWQ0lHR3FCMkUwUHNTaHUyZEpJZk8reG5Ud0ZWbWgvcWxaWVhaaEQ0Q0FXUUNBUkl3SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdNR0NDc0dBUVVGQndNQ01DY0dDU3NHQVFRQmdqY1ZDZ1FhTUJnd0NnWUlLd1lCQlFVSEF3TXdDZ1lJS3dZQkJRVUhBd0l3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQUxFL2ljaG1uV1hDVUtVYmNhM3ljaThvcXdhTHZGZEhWalFydmVJOXVxQWJBaUE5aEM0TThqZ01CQURQU3ptZDJ1aVBKQTZnS1IzTEUwM1U3NWVxYkMvclhBPT0=",
        "pcsid_secret": "CkYsEXfV8c1gFHAtFWoZv73pGMvh/Qyo4LzKM2h/8Hg=",
        "csr": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ0dUQ0NBYjRDQVFBd2J6RUxNQWtHQTFVRUJoTUNVMEV4RmpBVUJnTlZCQXNURFZsaGMyMXBiaUJDY21GdQpZMmd4SERBYUJnTlZCQW9URTBScFoybDBZV3dnVkhWdWJtVnNMQ0JNVEVNeEtqQW9CZ05WQkFNVElWQlBVeTB3Ck1ERXRNekE0TWpJM05EVTRMVE01T1RrNU9UazVPVGt3TURBd016QldNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQUsKQTBJQUJCaGhzYlNrblBaQ1hrcDVJQ1N5Rmp5SXVMNnBSQlNhMHhTMGFqbjI0cWlaU2hETk5YZDMwRDNNT2NJZgpCM05MWnM2VlZ5cDNxYjZDT2FycGhDTVhtOStnZ2U4d2dld0dDU3FHU0liM0RRRUpEakdCM2pDQjJ6QWtCZ2tyCkJnRUVBWW9mRkFJRUZ4TVZWRk5VV2tGVVEwRXRRMjlrWlMxVGFXZHVhVzVuTUlHeUJnTlZIUkVFZ2Fvd2dhZWsKZ2FRd2dhRXhRVEEvQmdOVkJBUVVPREV0VUU5VExUQXdNWHd5TFUxaFkwOVRmRE10TlRKRE16Y3lOVUl0UWpBdwpSUzAxTnpjMkxVSkVRemd0T1RaR1FUUkJNamMwT1VZMk1SOHdIUVlLQ1pJbWlaUHlMR1FCQVJNUE16azVPVGs1Ck9UazVPVEF3TURBek1RMHdDd1lEVlFRTUV3UXhNVEF3TVJjd0ZRWURWUVFhRXc1U1ZVZ3lLMWhXSUZKcGVXRmsKYURFVE1CRUdBMVVFRHhNS1ZHVmphRzV2Ykc5bmVUQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUE5L1JPY0RkeQpIODFheUhPYWNCc3hoUURLUlc4S0RKV3RCTFBSQ3pBbG1qb0NJUUNPM0s1UjkxR1pIY1J6MVRwOTVJZzNjV290CmFFenlFNCtKc1JXbXNuRXJwUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFIFJFUVVFU1QtLS0tLQo=",
        "private_key": "MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgDTx8z/L0CMBQUxKF9DFHLXu+3L0g3r+Fslrv0957xTmhRANCAAQYYbG0pJz2Ql5KeSAkshY8iLi+qUQUmtMUtGo59uKomUoQzTV3d9A9zDnCHwdzS2bOlVcqd6m+gjmq6YQjF5vf",
        "csr_details":
        {
            "csr.organization.identifier": "399999999900003",
            "csr.organization.unit.name": "Yasmin Branch",
            "csr.organization.name": "Digital Tunnel, LLC",
            "csr.country.name": "SA",
            "csr.invoice.type": "1100",
            "csr.location.address": "RUH2+XV Riyadh",
            "csr.industry.business.category": "Technology"
        },
        "uuid": "fcb09acc-7d2f-4e74-8709-91a72a5f8fec",
        "created_at": "2024-12-06T11:39:48.000000Z"
    }
}

You have to save device UUID for next operations (Sign Invoice, Report And Clear Invoices)

  • Sign Invoice
    use DigitalTunnel\Zatca\Facades\ZatcaConnect;
    use DigitalTunnel\Zatca\Data\Invoice;
    use DigitalTunnel\Zatca\Data\PartyInformation;
    use DigitalTunnel\Zatca\Data\Address;
    use DigitalTunnel\Zatca\Data\InvoiceLine;
    use DigitalTunnel\Zatca\Data\InvoiceTotals;
    use DigitalTunnel\Zatca\Facades\ZatcaConnect;
    use DigitalTunnel\Zatca\Enum\TransactionType;
    use DigitalTunnel\Zatca\Enum\InvoiceType;
    use DigitalTunnel\Zatca\Enum\PaymentMethod;
    
    $zatca = ZatcaConnect::setDeviceUuid("94d71b2f-ee56-4c21-a0a6-4f13d0c84774")
              ->setInvoice(
                new Invoice(
                  transactionType: TransactionType::Invoice,
                  invoiceType: InvoiceType::Invoice,
                  invoiceNumber: "INV-1029912",
                  invoiceDateTime: "2024-11-25T13:45:00Z",
                  deliveryDateTime: "2024-11-25T13:45:00Z",
                  paymentMethod: PaymentMethod::Credit,
                  company: new PartyInformation(
                    registrationName: "Maximum Speed Tech Supply LTD",
                    taxIdentificationNumber: "399999999900003",
                    identification: "1010010000",
                    identificationType: IdentificationType::CommercialRegistrationNumber,
                    address: new Address(
                      street: "Street Name",
                      buildingNumber: 2231,
                      plotIdentification: 123,
                      city: "Riyadh",
                      district: "District",
                      postalCode: "12345",
                      country: "SA"
                    )
                  ),
                  customer: new PartyInformation(
                    registrationName: "Company Name",
                    taxIdentificationNumber: "399999999800003",
                    identification: "1010010000",
                    identificationType: IdentificationType::NationalID,
                    address: new Address(
                      street: "Street Name",
                      buildingNumber: "123",
                      plotIdentification: 123,
                      city: "Riyadh",
                      district: "District",
                      postalCode: "12345",
                      country: "SA"
                    )
                  ),
                  lines: [
                    new InvoiceLine(
                      id: "1",
                      name: "Item Name",
                      quantity: 1,
                      unitPrice: 2,
                      unitType: UnitType::Unit,
                      taxableAmount: 2,
                      taxAmount: 0.3,
                      taxPercentage: 15
                    ),
                    new InvoiceLine(
                      id: "2",
                      name: "Item Name",
                      quantity: 1,
                      unitPrice: 2,
                      unitType: UnitType::Unit,
                      taxableAmount: 2,
                      taxAmount: 0.3,
                      taxPercentage: 15
                    )
                  ],
                  totals: new InvoiceTotals(
                    extensionAmount: 4,
                    taxExclusiveAmount: 4,
                    taxInclusiveAmount: 4.6,
                    prepaidAmount: 0,
                    payableAmount: 4.6,
                    allowanceTotalAmount: 0
                  )
                )
              )
              ->signInvoice();

Response example

{
    "message": "Invoice Signed successfully",
    "data":
    {
        "status": "Signed",
        "uuid": "1935e4d3-0375-471d-835f-cc27ea9905ed",
        "transaction_type": "Simplified",
        "invoice_type": "Invoice",
        "invoice_number": "INV-1029912",
        "invoice_hash": "9fiFUfZwrSigOLxsfgPUVMKfLfRV5jIwf+98kiibDBo=",
        "invoice": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPEludm9pY2UgeG1sbnM9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkludm9pY2UtMiIgeG1sbnM6Y2FjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpDb21tb25BZ2dyZWdhdGVDb21wb25lbnRzLTIiIHhtbG5zOmNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uQmFzaWNDb21wb25lbnRzLTIiIHhtbG5zOmV4dD0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uRXh0ZW5zaW9uQ29tcG9uZW50cy0yIj48ZXh0OlVCTEV4dGVuc2lvbnM+CiAgICA8ZXh0OlVCTEV4dGVuc2lvbj4KICAgICAgICA8ZXh0OkV4dGVuc2lvblVSST51cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6ZHNpZzplbnZlbG9wZWQ6eGFkZXM8L2V4dDpFeHRlbnNpb25VUkk+CiAgICAgICAgPGV4dDpFeHRlbnNpb25Db250ZW50PgogICAgICAgICAgICA8c2lnOlVCTERvY3VtZW50U2lnbmF0dXJlcyB4bWxuczpzaWc9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkNvbW1vblNpZ25hdHVyZUNvbXBvbmVudHMtMiIgeG1sbnM6c2FjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpTaWduYXR1cmVBZ2dyZWdhdGVDb21wb25lbnRzLTIiIHhtbG5zOnNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6U2lnbmF0dXJlQmFzaWNDb21wb25lbnRzLTIiPgogICAgICAgICAgICAgICAgPHNhYzpTaWduYXR1cmVJbmZvcm1hdGlvbj4KICAgICAgICAgICAgICAgICAgICA8Y2JjOklEPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzaWduYXR1cmU6MTwvY2JjOklEPgogICAgICAgICAgICAgICAgICAgIDxzYmM6UmVmZXJlbmNlZFNpZ25hdHVyZUlEPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzaWduYXR1cmU6SW52b2ljZTwvc2JjOlJlZmVyZW5jZWRTaWduYXR1cmVJRD4KICAgICAgICAgICAgICAgICAgICA8ZHM6U2lnbmF0dXJlIElkPSJzaWduYXR1cmUiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlNpZ25lZEluZm8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTI1NiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlJlZmVyZW5jZSBJZD0iaW52b2ljZVNpZ25lZERhdGEiIFVSST0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3Jtcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpYUGF0aD5ub3QoLy9hbmNlc3Rvci1vci1zZWxmOjpleHQ6VUJMRXh0ZW5zaW9ucyk8L2RzOlhQYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RzOlRyYW5zZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpYUGF0aD5ub3QoLy9hbmNlc3Rvci1vci1zZWxmOjpjYWM6U2lnbmF0dXJlKTwvZHM6WFBhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHM6VHJhbnNmb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlhQYXRoPm5vdCgvL2FuY2VzdG9yLW9yLXNlbGY6OmNhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2VbY2JjOklEPSdRUiddKTwvZHM6WFBhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHM6VHJhbnNmb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpUcmFuc2Zvcm1zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6RGlnZXN0VmFsdWU+OWZpRlVmWndyU2lnT0x4c2ZnUFVWTUtmTGZSVjVqSXdmKzk4a2lpYkRCbz08L2RzOkRpZ2VzdFZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpSZWZlcmVuY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNTaWduYXR1cmVQcm9wZXJ0aWVzIiBVUkk9IiN4YWRlc1NpZ25lZFByb3BlcnRpZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6RGlnZXN0VmFsdWU+TURrNU1USXdOR015TlRrellqZG1NbUZoTnpkak56VmtOV1JsWm1GbU0yRXlOMkk0TnpGbE5UZzNPVFJqTVdNeU9XWmhOREV5TXpsbE9HUTBaVE14Wmc9PTwvZHM6RGlnZXN0VmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RzOlJlZmVyZW5jZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpTaWduZWRJbmZvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHM6U2lnbmF0dXJlVmFsdWU+TUVZQ0lRQ3hMODRMRDcwUHA4MUI5Rm1Ja0lRVVNLU0wraGJIOXQ5Qnp2VktEUUdGYWdJaEFJd0Z2eEpsdjB1SmRWY3RTSlZzZkNMakIzS3RYSmYxb0tPWlh5WVhnUWFqPC9kczpTaWduYXR1cmVWYWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRzOktleUluZm8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6WDUwOURhdGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEM2pDQ0E0U2dBd0lCQWdJVEVRQUFPQVBGOTBBanMveGNYd0FCQUFBNEF6QUtCZ2dxaGtqT1BRUURBakJpTVJVd0V3WUtDWkltaVpQeUxHUUJHUllGYkc5allXd3hFekFSQmdvSmtpYUprL0lzWkFFWkZnTm5iM1l4RnpBVkJnb0praWFKay9Jc1pBRVpGZ2RsZUhSbllYcDBNUnN3R1FZRFZRUURFeEpRVWxwRlNVNVdUMGxEUlZORFFUUXRRMEV3SGhjTk1qUXdNVEV4TURreE9UTXdXaGNOTWprd01UQTVNRGt4T1RNd1dqQjFNUXN3Q1FZRFZRUUdFd0pUUVRFbU1DUUdBMVVFQ2hNZFRXRjRhVzExYlNCVGNHVmxaQ0JVWldOb0lGTjFjSEJzZVNCTVZFUXhGakFVQmdOVkJBc1REVkpwZVdGa2FDQkNjbUZ1WTJneEpqQWtCZ05WQkFNVEhWUlRWQzA0T0RZME16RXhORFV0TXprNU9UazVPVGs1T1RBd01EQXpNRll3RUFZSEtvWkl6ajBDQVFZRks0RUVBQW9EUWdBRW9XQ0thMFNhOUZJRXJUT3YwdUFrQzFWSUtYeFU5blBweDJ2bGY0eWhNZWp5OGMwMlhKYmxEcTd0UHlkbzhtcTBhaE9NbU5vOGd3bmk3WHQxS1Q5VWVLT0NBZ2N3Z2dJRE1JR3RCZ05WSFJFRWdhVXdnYUtrZ1o4d2dad3hPekE1QmdOVkJBUU1NakV0VkZOVWZESXRWRk5VZkRNdFpXUXlNbVl4WkRndFpUWmhNaTB4TVRFNExUbGlOVGd0WkRsaE9HWXhNV1UwTkRWbU1SOHdIUVlLQ1pJbWlaUHlMR1FCQVF3UE16azVPVGs1T1RrNU9UQXdNREF6TVEwd0N3WURWUVFNREFReE1UQXdNUkV3RHdZRFZRUWFEQWhTVWxKRU1qa3lPVEVhTUJnR0ExVUVEd3dSVTNWd2NHeDVJR0ZqZEdsMmFYUnBaWE13SFFZRFZSME9CQllFRkVYK1l2bW10bllvRGY5QkdiS283b2NUS1lLMU1COEdBMVVkSXdRWU1CYUFGSnZLcXFMdG1xd3NrSUZ6VnZwUDJQeFQrOU5uTUhzR0NDc0dBUVVGQndFQkJHOHdiVEJyQmdnckJnRUZCUWN3QW9aZmFIUjBjRG92TDJGcFlUUXVlbUYwWTJFdVoyOTJMbk5oTDBObGNuUkZibkp2Ykd3dlVGSmFSVWx1ZG05cFkyVlRRMEUwTG1WNGRHZGhlblF1WjI5MkxteHZZMkZzWDFCU1drVkpUbFpQU1VORlUwTkJOQzFEUVNneEtTNWpjblF3RGdZRFZSMFBBUUgvQkFRREFnZUFNRHdHQ1NzR0FRUUJnamNWQndRdk1DMEdKU3NHQVFRQmdqY1ZDSUdHcUIyRTBQc1NodTJkSklmTyt4blR3RlZtaC9xbFpZWFpoRDRDQVdRQ0FSSXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd01HQ0NzR0FRVUZCd01DTUNjR0NTc0dBUVFCZ2pjVkNnUWFNQmd3Q2dZSUt3WUJCUVVIQXdNd0NnWUlLd1lCQlFVSEF3SXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTEUvaWNobW5XWENVS1ViY2EzeWNpOG9xd2FMdkZkSFZqUXJ2ZUk5dXFBYkFpQTloQzRNOGpnTUJBRFBTem1kMnVpUEpBNmdLUjNMRTAzVTc1ZXFiQy9yWEE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpYNTA5RGF0YT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpLZXlJbmZvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHM6T2JqZWN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhhZGVzOlF1YWxpZnlpbmdQcm9wZXJ0aWVzIFRhcmdldD0ic2lnbmF0dXJlIiB4bWxuczp4YWRlcz0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMy92MS4zLjIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmVkUHJvcGVydGllcyBJZD0ieGFkZXNTaWduZWRQcm9wZXJ0aWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhhZGVzOlNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmluZ1RpbWU+MjAyNC0xMi0wNlQyMTo0MzoyNzwveGFkZXM6U2lnbmluZ1RpbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4YWRlczpDZXJ0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6Q2VydERpZ2VzdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RWYWx1ZT5aRE13TW1JME1URTFOelZqT1RVMk5UazRZelZsT0RoaFltSTBPRFUyTkRVeU5UVTJZVFZoWWpoaE1ERm1OMkZqWWprMVlUQTJPV1EwTmpZMk1qUTROUT09PC9kczpEaWdlc3RWYWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpDZXJ0RGlnZXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6SXNzdWVyU2VyaWFsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlg1MDlJc3N1ZXJOYW1lPkNOPVBSWkVJTlZPSUNFU0NBNC1DQSwgREM9ZXh0Z2F6dCwgREM9Z292LCBEQz1sb2NhbDwvZHM6WDUwOUlzc3Vlck5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6WDUwOVNlcmlhbE51bWJlcj4zNzkxMTI3NDI4MzEzODA0NzE4MzUyNjM5Njk1ODcyODc2NjM1MjA1MjgzODc8L2RzOlg1MDlTZXJpYWxOdW1iZXI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6SXNzdWVyU2VyaWFsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6Q2VydD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hhZGVzOlNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpTaWduZWRQcm9wZXJ0aWVzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpRdWFsaWZ5aW5nUHJvcGVydGllcz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpPYmplY3Q+CiAgICAgICAgICAgICAgICAgICAgPC9kczpTaWduYXR1cmU+CiAgICAgICAgICAgICAgICA8L3NhYzpTaWduYXR1cmVJbmZvcm1hdGlvbj4KICAgICAgICAgICAgPC9zaWc6VUJMRG9jdW1lbnRTaWduYXR1cmVzPgogICAgICAgIDwvZXh0OkV4dGVuc2lvbkNvbnRlbnQ+CiAgICA8L2V4dDpVQkxFeHRlbnNpb24+CjwvZXh0OlVCTEV4dGVuc2lvbnM+CiAKIDxjYmM6UHJvZmlsZUlEPnJlcG9ydGluZzoxLjA8L2NiYzpQcm9maWxlSUQ+CiA8Y2JjOklEPklOVi0xMDI5OTEyPC9jYmM6SUQ+CiA8Y2JjOlVVSUQ+MTkzNWU0ZDMtMDM3NS00NzFkLTgzNWYtY2MyN2VhOTkwNWVkPC9jYmM6VVVJRD4KIDxjYmM6SXNzdWVEYXRlPjIwMjQtMTEtMjU8L2NiYzpJc3N1ZURhdGU+CiA8Y2JjOklzc3VlVGltZT4xMzo0NTowMDwvY2JjOklzc3VlVGltZT4KIDxjYmM6SW52b2ljZVR5cGVDb2RlIG5hbWU9IjAyMDAwMDAiPjM4ODwvY2JjOkludm9pY2VUeXBlQ29kZT4KIDxjYmM6RG9jdW1lbnRDdXJyZW5jeUNvZGU+U0FSPC9jYmM6RG9jdW1lbnRDdXJyZW5jeUNvZGU+CiA8Y2JjOlRheEN1cnJlbmN5Q29kZT5TQVI8L2NiYzpUYXhDdXJyZW5jeUNvZGU+CiA8Y2FjOkFkZGl0aW9uYWxEb2N1bWVudFJlZmVyZW5jZT4KICA8Y2JjOklEPklDVjwvY2JjOklEPgogIDxjYmM6VVVJRD41MTwvY2JjOlVVSUQ+CiA8L2NhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2U+CiA8Y2FjOkFkZGl0aW9uYWxEb2N1bWVudFJlZmVyZW5jZT4KICA8Y2JjOklEPlBJSDwvY2JjOklEPgogIDxjYWM6QXR0YWNobWVudD4KICAgPGNiYzpFbWJlZGRlZERvY3VtZW50QmluYXJ5T2JqZWN0IG1pbWVDb2RlPSJ0ZXh0L3BsYWluIj5OV1psWTJWaU5qWm1abU00Tm1Zek9HUTVOVEkzT0Raak5tUTJPVFpqTnpsak1tUmlZekl6T1dSa05HVTVNV0kwTmpjeU9XUTNNMkV5TjJaaU5UZGxPUT09PC9jYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdD4KICA8L2NhYzpBdHRhY2htZW50PgogPC9jYWM6QWRkaXRpb25hbERvY3VtZW50UmVmZXJlbmNlPgogCiAKIDxjYWM6QWRkaXRpb25hbERvY3VtZW50UmVmZXJlbmNlPgogICAgICAgIDxjYmM6SUQ+UVI8L2NiYzpJRD4KICAgICAgICA8Y2FjOkF0dGFjaG1lbnQ+CiAgICAgICAgICAgIDxjYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdCBtaW1lQ29kZT0idGV4dC9wbGFpbiI+QVIxTllYaHBiWFZ0SUZOd1pXVmtJRlJsWTJnZ1UzVndjR3g1SUV4VVJBSVBNems1T1RrNU9UazVPVEF3TURBekF4TXlNREkwTFRFeExUSTFWREV6T2pRMU9qQXdCQVEwTGpZd0JRTXdMallHTERsbWFVWlZabHAzY2xOcFowOU1lSE5tWjFCVlZrMUxaa3htVWxZMWFrbDNaaXM1T0d0cGFXSkVRbTg5QjJCTlJWbERTVkZEZUV3NE5FeEVOekJRY0RneFFqbEdiVWxyU1ZGVlUwdFRUQ3RvWWtnNWREbENlblpXUzBSUlIwWmhaMGxvUVVsM1JuWjRTbXgyTUhWS1pGWmpkRk5LVm5ObVEweHFRak5MZEZoS1pqRnZTMDlhV0hsWldHZFJZV29JV0RCV01CQUdCeXFHU000OUFnRUdCU3VCQkFBS0EwSUFCS0ZnaW10RW12UlNCSzB6cjlMZ0pBdFZTQ2w4VlBaejZjZHI1WCtNb1RIbzh2SE5ObHlXNVE2dTdUOG5hUEpxdEdvVGpKamFQSU1KNHUxN2RTay9WSGdKUnpCRkFpRUFzVCtKeUdhZFpjSlFwUnR4cmZKeUx5aXJCb3U4VjBkV05DdTk0ajI2b0JzQ0lEMkVMZ3p5T0F3RUFNOUxPWjNhNkk4a0RxQXBIY3NUVGRUdmw2cHNMK3RjPC9jYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdD4KICAgICAgICA8L2NhYzpBdHRhY2htZW50Pgo8L2NhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2U+PGNhYzpTaWduYXR1cmU+CiAgICAgIDxjYmM6SUQ+dXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNpZ25hdHVyZTpJbnZvaWNlPC9jYmM6SUQ+CiAgICAgIDxjYmM6U2lnbmF0dXJlTWV0aG9kPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpkc2lnOmVudmVsb3BlZDp4YWRlczwvY2JjOlNpZ25hdHVyZU1ldGhvZD4KPC9jYWM6U2lnbmF0dXJlPjxjYWM6QWNjb3VudGluZ1N1cHBsaWVyUGFydHk+CiAgPGNhYzpQYXJ0eT4KICAgPGNhYzpQYXJ0eUlkZW50aWZpY2F0aW9uPgogICAgPGNiYzpJRCBzY2hlbWVJRD0iQ1JOIj4xMDEwMDEwMDAwPC9jYmM6SUQ+CiAgIDwvY2FjOlBhcnR5SWRlbnRpZmljYXRpb24+CiAgIDxjYWM6UG9zdGFsQWRkcmVzcz4KICAgIDxjYmM6U3RyZWV0TmFtZT5TdHJlZXQgTmFtZTwvY2JjOlN0cmVldE5hbWU+CiAgICA8Y2JjOkJ1aWxkaW5nTnVtYmVyPjIyMzE8L2NiYzpCdWlsZGluZ051bWJlcj4KICAgIDxjYmM6UGxvdElkZW50aWZpY2F0aW9uPjEyMzwvY2JjOlBsb3RJZGVudGlmaWNhdGlvbj4KICAgIDxjYmM6Q2l0eVN1YmRpdmlzaW9uTmFtZT5EaXN0cmljdDwvY2JjOkNpdHlTdWJkaXZpc2lvbk5hbWU+CiAgICA8Y2JjOkNpdHlOYW1lPlJpeWFkaDwvY2JjOkNpdHlOYW1lPgogICAgPGNiYzpQb3N0YWxab25lPjEyMzQ1PC9jYmM6UG9zdGFsWm9uZT4KICAgIDxjYWM6Q291bnRyeT4KICAgICA8Y2JjOklkZW50aWZpY2F0aW9uQ29kZT5TQTwvY2JjOklkZW50aWZpY2F0aW9uQ29kZT4KICAgIDwvY2FjOkNvdW50cnk+CiAgIDwvY2FjOlBvc3RhbEFkZHJlc3M+CiAgIDxjYWM6UGFydHlUYXhTY2hlbWU+CiAgICA8Y2JjOkNvbXBhbnlJRD4zOTk5OTk5OTk5MDAwMDM8L2NiYzpDb21wYW55SUQ+CiAgICA8Y2FjOlRheFNjaGVtZT4KICAgICA8Y2JjOklEPlZBVDwvY2JjOklEPgogICAgPC9jYWM6VGF4U2NoZW1lPgogICA8L2NhYzpQYXJ0eVRheFNjaGVtZT4KICAgPGNhYzpQYXJ0eUxlZ2FsRW50aXR5PgogICAgPGNiYzpSZWdpc3RyYXRpb25OYW1lPk1heGltdW0gU3BlZWQgVGVjaCBTdXBwbHkgTFREPC9jYmM6UmVnaXN0cmF0aW9uTmFtZT4KICAgPC9jYWM6UGFydHlMZWdhbEVudGl0eT4KICA8L2NhYzpQYXJ0eT4KIDwvY2FjOkFjY291bnRpbmdTdXBwbGllclBhcnR5PgogPGNhYzpBY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eT4KICA8Y2FjOlBhcnR5PgogICA8Y2FjOlBhcnR5SWRlbnRpZmljYXRpb24+CiAgICA8Y2JjOklEIHNjaGVtZUlEPSJOQVQiPjEwMTAwMTAwMDA8L2NiYzpJRD4KICAgPC9jYWM6UGFydHlJZGVudGlmaWNhdGlvbj4KICAgPGNhYzpQb3N0YWxBZGRyZXNzPgogICAgPGNiYzpTdHJlZXROYW1lPlN0cmVldCBOYW1lPC9jYmM6U3RyZWV0TmFtZT4KICAgIDxjYmM6QnVpbGRpbmdOdW1iZXI+MTIzPC9jYmM6QnVpbGRpbmdOdW1iZXI+CiAgICA8Y2JjOlBsb3RJZGVudGlmaWNhdGlvbj4xMjM8L2NiYzpQbG90SWRlbnRpZmljYXRpb24+CiAgICA8Y2JjOkNpdHlTdWJkaXZpc2lvbk5hbWU+RGlzdHJpY3Q8L2NiYzpDaXR5U3ViZGl2aXNpb25OYW1lPgogICAgPGNiYzpDaXR5TmFtZT5SaXlhZGg8L2NiYzpDaXR5TmFtZT4KICAgIDxjYmM6UG9zdGFsWm9uZT4xMjM0NTwvY2JjOlBvc3RhbFpvbmU+CiAgICA8Y2FjOkNvdW50cnk+CiAgICAgPGNiYzpJZGVudGlmaWNhdGlvbkNvZGU+U0E8L2NiYzpJZGVudGlmaWNhdGlvbkNvZGU+CiAgICA8L2NhYzpDb3VudHJ5PgogICA8L2NhYzpQb3N0YWxBZGRyZXNzPgogICA8Y2FjOlBhcnR5VGF4U2NoZW1lPgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRD5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6UGFydHlUYXhTY2hlbWU+CiAgIDxjYWM6UGFydHlMZWdhbEVudGl0eT4KICAgIDxjYmM6UmVnaXN0cmF0aW9uTmFtZT5Db21wYW55IE5hbWU8L2NiYzpSZWdpc3RyYXRpb25OYW1lPgogICA8L2NhYzpQYXJ0eUxlZ2FsRW50aXR5PgogIDwvY2FjOlBhcnR5PgogPC9jYWM6QWNjb3VudGluZ0N1c3RvbWVyUGFydHk+CiA8Y2FjOkRlbGl2ZXJ5PgogIDxjYmM6QWN0dWFsRGVsaXZlcnlEYXRlPjIwMjQtMTEtMjU8L2NiYzpBY3R1YWxEZWxpdmVyeURhdGU+CiA8L2NhYzpEZWxpdmVyeT4KIDxjYWM6UGF5bWVudE1lYW5zPgogIDxjYmM6UGF5bWVudE1lYW5zQ29kZT4zMDwvY2JjOlBheW1lbnRNZWFuc0NvZGU+CiA8L2NhYzpQYXltZW50TWVhbnM+CiA8Y2FjOlRheFRvdGFsPgogIDxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+MC42PC9jYmM6VGF4QW1vdW50PgogPC9jYWM6VGF4VG90YWw+CiA8Y2FjOlRheFRvdGFsPgogIDxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+MC42MDwvY2JjOlRheEFtb3VudD4KICA8Y2FjOlRheFN1YnRvdGFsPgogICA8Y2JjOlRheGFibGVBbW91bnQgY3VycmVuY3lJRD0iU0FSIj40LjAwPC9jYmM6VGF4YWJsZUFtb3VudD4KICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjYwPC9jYmM6VGF4QW1vdW50PgogICA8Y2FjOlRheENhdGVnb3J5PgogICAgPGNiYzpJRCBzY2hlbWVBZ2VuY3lJRD0iNiIgc2NoZW1lSUQ9IlVOL0VDRSA1MzA1Ij5TPC9jYmM6SUQ+CiAgICA8Y2JjOlBlcmNlbnQ+MTU8L2NiYzpQZXJjZW50PgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRCBzY2hlbWVBZ2VuY3lJRD0iNiIgc2NoZW1lSUQ9IlVOL0VDRSA1MTUzIj5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6VGF4Q2F0ZWdvcnk+CiAgPC9jYWM6VGF4U3VidG90YWw+CiA8L2NhYzpUYXhUb3RhbD4KIDxjYWM6TGVnYWxNb25ldGFyeVRvdGFsPgogIDxjYmM6TGluZUV4dGVuc2lvbkFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjQuMDA8L2NiYzpMaW5lRXh0ZW5zaW9uQW1vdW50PgogIDxjYmM6VGF4RXhjbHVzaXZlQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+NC4wMDwvY2JjOlRheEV4Y2x1c2l2ZUFtb3VudD4KICA8Y2JjOlRheEluY2x1c2l2ZUFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjQuNjA8L2NiYzpUYXhJbmNsdXNpdmVBbW91bnQ+CiAgPGNiYzpBbGxvd2FuY2VUb3RhbEFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjAuMDA8L2NiYzpBbGxvd2FuY2VUb3RhbEFtb3VudD4KICA8Y2JjOlByZXBhaWRBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjAwPC9jYmM6UHJlcGFpZEFtb3VudD4KICA8Y2JjOlBheWFibGVBbW91bnQgY3VycmVuY3lJRD0iU0FSIj40LjYwPC9jYmM6UGF5YWJsZUFtb3VudD4KIDwvY2FjOkxlZ2FsTW9uZXRhcnlUb3RhbD4KIDxjYWM6SW52b2ljZUxpbmU+CiAgPGNiYzpJRD4xPC9jYmM6SUQ+CiAgPGNiYzpJbnZvaWNlZFF1YW50aXR5IHVuaXRDb2RlPSJNT04iPjEuMDAwMDAwPC9jYmM6SW52b2ljZWRRdWFudGl0eT4KICA8Y2JjOkxpbmVFeHRlbnNpb25BbW91bnQgY3VycmVuY3lJRD0iU0FSIj4yLjAwPC9jYmM6TGluZUV4dGVuc2lvbkFtb3VudD4KICA8Y2FjOlRheFRvdGFsPgogICA8Y2JjOlRheEFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjAuMzA8L2NiYzpUYXhBbW91bnQ+CiAgIDxjYmM6Um91bmRpbmdBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4yLjMwPC9jYmM6Um91bmRpbmdBbW91bnQ+CiAgPC9jYWM6VGF4VG90YWw+CiAgPGNhYzpJdGVtPgogICA8Y2JjOk5hbWU+SXRlbSBOYW1lPC9jYmM6TmFtZT4KICAgPGNhYzpDbGFzc2lmaWVkVGF4Q2F0ZWdvcnk+CiAgICA8Y2JjOklEPlM8L2NiYzpJRD4KICAgIDxjYmM6UGVyY2VudD4xNS4wMDwvY2JjOlBlcmNlbnQ+CiAgICA8Y2FjOlRheFNjaGVtZT4KICAgICA8Y2JjOklEPlZBVDwvY2JjOklEPgogICAgPC9jYWM6VGF4U2NoZW1lPgogICA8L2NhYzpDbGFzc2lmaWVkVGF4Q2F0ZWdvcnk+CiAgPC9jYWM6SXRlbT4KICA8Y2FjOlByaWNlPgogICA8Y2JjOlByaWNlQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4wMDwvY2JjOlByaWNlQW1vdW50PgogIDwvY2FjOlByaWNlPgogPC9jYWM6SW52b2ljZUxpbmU+CiA8Y2FjOkludm9pY2VMaW5lPgogIDxjYmM6SUQ+MjwvY2JjOklEPgogIDxjYmM6SW52b2ljZWRRdWFudGl0eSB1bml0Q29kZT0iTU9OIj4xLjAwMDAwMDwvY2JjOkludm9pY2VkUXVhbnRpdHk+CiAgPGNiYzpMaW5lRXh0ZW5zaW9uQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4wMDwvY2JjOkxpbmVFeHRlbnNpb25BbW91bnQ+CiAgPGNhYzpUYXhUb3RhbD4KICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjMwPC9jYmM6VGF4QW1vdW50PgogICA8Y2JjOlJvdW5kaW5nQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4zMDwvY2JjOlJvdW5kaW5nQW1vdW50PgogIDwvY2FjOlRheFRvdGFsPgogIDxjYWM6SXRlbT4KICAgPGNiYzpOYW1lPkl0ZW0gTmFtZTwvY2JjOk5hbWU+CiAgIDxjYWM6Q2xhc3NpZmllZFRheENhdGVnb3J5PgogICAgPGNiYzpJRD5TPC9jYmM6SUQ+CiAgICA8Y2JjOlBlcmNlbnQ+MTUuMDA8L2NiYzpQZXJjZW50PgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRD5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6Q2xhc3NpZmllZFRheENhdGVnb3J5PgogIDwvY2FjOkl0ZW0+CiAgPGNhYzpQcmljZT4KICAgPGNiYzpQcmljZUFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjIuMDA8L2NiYzpQcmljZUFtb3VudD4KICA8L2NhYzpQcmljZT4KIDwvY2FjOkludm9pY2VMaW5lPgo8L0ludm9pY2U+",
        "qr": "AR1NYXhpbXVtIFNwZWVkIFRlY2ggU3VwcGx5IExURAIPMzk5OTk5OTk5OTAwMDAzAxMyMDI0LTExLTI1VDEzOjQ1OjAwBAQ0LjYwBQMwLjYGLDlmaUZVZlp3clNpZ09MeHNmZ1BVVk1LZkxmUlY1akl3Zis5OGtpaWJEQm89B2BNRVlDSVFDeEw4NExENzBQcDgxQjlGbUlrSVFVU0tTTCtoYkg5dDlCenZWS0RRR0ZhZ0loQUl3RnZ4Smx2MHVKZFZjdFNKVnNmQ0xqQjNLdFhKZjFvS09aWHlZWGdRYWoIWDBWMBAGByqGSM49AgEGBSuBBAAKA0IABKFgimtEmvRSBK0zr9LgJAtVSCl8VPZz6cdr5X+MoTHo8vHNNlyW5Q6u7T8naPJqtGoTjJjaPIMJ4u17dSk/VHgJRzBFAiEAsT+JyGadZcJQpRtxrfJyLyirBou8V0dWNCu94j26oBsCID2ELgzyOAwEAM9LOZ3a6I8kDqApHcsTTdTvl6psL+tc",
        "response": null,
        "created_at": "2024-12-06T21:43:27.000000Z"
    }
}

Use the Invoice UUID to perform compliance checks or to initiate the report and clear steps.

  • Report And Clear Invoices
    use DigitalTunnel\Zatca\Facades\ZatcaConnect;
    
    $zatca = ZatcaConnect::setInvoiceUuid("94d71b2f-ee56-4c21-a0a6-4f13d0c84774")
              ->reportAndClearInvoices();

Response example of Standard invoice reporting

{
    "message": "ZATCA Invoice Compliance Check Details",
    "data":
    {
        "validationResults":
        {
            "infoMessages": [
                {
                    "type": "INFO",
                    "code": "XSD_ZATCA_VALID",
                    "category": "XSD validation",
                    "message": "Complied with UBL 2.1 standards in line with ZATCA specifications",
                    "status": "PASS"
                }],
            "warningMessages": [],
            "errorMessages": [],
            "status": "PASS"
        },
        "reportingStatus": null,
        "clearanceStatus": "CLEARED",
        "qrSellertStatus": null,
        "qrBuyertStatus": null
    }
}

Response example of Simplified invoice reporting

{
    "message": "ZATCA Simplified Invoice Reporting Details",
    "data":
    {
        "validationResults":
        {
            "infoMessages": [
                {
                    "type": "INFO",
                    "code": "XSD_ZATCA_VALID",
                    "category": "XSD validation",
                    "message": "Complied with UBL 2.1 standards in line with ZATCA specifications",
                    "status": "PASS"
                }],
            "warningMessages": [],
            "errorMessages": [],
            "status": "PASS"
        },
        "reportingStatus": "REPORTED"
    }
}
  • Get Invoice Details
    use DigitalTunnel\Zatca\Facades\ZatcaConnect;
    
    $zatca = ZatcaConnect::setInvoiceUuid("94d71b2f-ee56-4c21-a0a6-4f13d0c84774")
              ->getInvoice();

Response example of invoice instance

{
    "message": "ZATCA Invoice Invoice Details",
    "data":
    {
        "uuid": "1935e4d3-0375-471d-835f-cc27ea9905ed",
        "status": "REPORTED",
        "transaction_type": "Simplified",
        "invoice_type": "Invoice",
        "invoice_number": "INV-1029912",
        "invoice_hash": "9fiFUfZwrSigOLxsfgPUVMKfLfRV5jIwf+98kiibDBo=",
        "invoice": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPEludm9pY2UgeG1sbnM9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkludm9pY2UtMiIgeG1sbnM6Y2FjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpDb21tb25BZ2dyZWdhdGVDb21wb25lbnRzLTIiIHhtbG5zOmNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uQmFzaWNDb21wb25lbnRzLTIiIHhtbG5zOmV4dD0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uRXh0ZW5zaW9uQ29tcG9uZW50cy0yIj48ZXh0OlVCTEV4dGVuc2lvbnM+CiAgICA8ZXh0OlVCTEV4dGVuc2lvbj4KICAgICAgICA8ZXh0OkV4dGVuc2lvblVSST51cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6ZHNpZzplbnZlbG9wZWQ6eGFkZXM8L2V4dDpFeHRlbnNpb25VUkk+CiAgICAgICAgPGV4dDpFeHRlbnNpb25Db250ZW50PgogICAgICAgICAgICA8c2lnOlVCTERvY3VtZW50U2lnbmF0dXJlcyB4bWxuczpzaWc9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkNvbW1vblNpZ25hdHVyZUNvbXBvbmVudHMtMiIgeG1sbnM6c2FjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpTaWduYXR1cmVBZ2dyZWdhdGVDb21wb25lbnRzLTIiIHhtbG5zOnNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6U2lnbmF0dXJlQmFzaWNDb21wb25lbnRzLTIiPgogICAgICAgICAgICAgICAgPHNhYzpTaWduYXR1cmVJbmZvcm1hdGlvbj4KICAgICAgICAgICAgICAgICAgICA8Y2JjOklEPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzaWduYXR1cmU6MTwvY2JjOklEPgogICAgICAgICAgICAgICAgICAgIDxzYmM6UmVmZXJlbmNlZFNpZ25hdHVyZUlEPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzaWduYXR1cmU6SW52b2ljZTwvc2JjOlJlZmVyZW5jZWRTaWduYXR1cmVJRD4KICAgICAgICAgICAgICAgICAgICA8ZHM6U2lnbmF0dXJlIElkPSJzaWduYXR1cmUiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlNpZ25lZEluZm8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTI1NiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlJlZmVyZW5jZSBJZD0iaW52b2ljZVNpZ25lZERhdGEiIFVSST0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3Jtcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpYUGF0aD5ub3QoLy9hbmNlc3Rvci1vci1zZWxmOjpleHQ6VUJMRXh0ZW5zaW9ucyk8L2RzOlhQYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RzOlRyYW5zZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpYUGF0aD5ub3QoLy9hbmNlc3Rvci1vci1zZWxmOjpjYWM6U2lnbmF0dXJlKTwvZHM6WFBhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHM6VHJhbnNmb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlhQYXRoPm5vdCgvL2FuY2VzdG9yLW9yLXNlbGY6OmNhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2VbY2JjOklEPSdRUiddKTwvZHM6WFBhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHM6VHJhbnNmb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpUcmFuc2Zvcm1zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6RGlnZXN0VmFsdWU+OWZpRlVmWndyU2lnT0x4c2ZnUFVWTUtmTGZSVjVqSXdmKzk4a2lpYkRCbz08L2RzOkRpZ2VzdFZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpSZWZlcmVuY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNTaWduYXR1cmVQcm9wZXJ0aWVzIiBVUkk9IiN4YWRlc1NpZ25lZFByb3BlcnRpZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6RGlnZXN0VmFsdWU+TURrNU1USXdOR015TlRrellqZG1NbUZoTnpkak56VmtOV1JsWm1GbU0yRXlOMkk0TnpGbE5UZzNPVFJqTVdNeU9XWmhOREV5TXpsbE9HUTBaVE14Wmc9PTwvZHM6RGlnZXN0VmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RzOlJlZmVyZW5jZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpTaWduZWRJbmZvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHM6U2lnbmF0dXJlVmFsdWU+TUVZQ0lRQ3hMODRMRDcwUHA4MUI5Rm1Ja0lRVVNLU0wraGJIOXQ5Qnp2VktEUUdGYWdJaEFJd0Z2eEpsdjB1SmRWY3RTSlZzZkNMakIzS3RYSmYxb0tPWlh5WVhnUWFqPC9kczpTaWduYXR1cmVWYWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRzOktleUluZm8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6WDUwOURhdGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEM2pDQ0E0U2dBd0lCQWdJVEVRQUFPQVBGOTBBanMveGNYd0FCQUFBNEF6QUtCZ2dxaGtqT1BRUURBakJpTVJVd0V3WUtDWkltaVpQeUxHUUJHUllGYkc5allXd3hFekFSQmdvSmtpYUprL0lzWkFFWkZnTm5iM1l4RnpBVkJnb0praWFKay9Jc1pBRVpGZ2RsZUhSbllYcDBNUnN3R1FZRFZRUURFeEpRVWxwRlNVNVdUMGxEUlZORFFUUXRRMEV3SGhjTk1qUXdNVEV4TURreE9UTXdXaGNOTWprd01UQTVNRGt4T1RNd1dqQjFNUXN3Q1FZRFZRUUdFd0pUUVRFbU1DUUdBMVVFQ2hNZFRXRjRhVzExYlNCVGNHVmxaQ0JVWldOb0lGTjFjSEJzZVNCTVZFUXhGakFVQmdOVkJBc1REVkpwZVdGa2FDQkNjbUZ1WTJneEpqQWtCZ05WQkFNVEhWUlRWQzA0T0RZME16RXhORFV0TXprNU9UazVPVGs1T1RBd01EQXpNRll3RUFZSEtvWkl6ajBDQVFZRks0RUVBQW9EUWdBRW9XQ0thMFNhOUZJRXJUT3YwdUFrQzFWSUtYeFU5blBweDJ2bGY0eWhNZWp5OGMwMlhKYmxEcTd0UHlkbzhtcTBhaE9NbU5vOGd3bmk3WHQxS1Q5VWVLT0NBZ2N3Z2dJRE1JR3RCZ05WSFJFRWdhVXdnYUtrZ1o4d2dad3hPekE1QmdOVkJBUU1NakV0VkZOVWZESXRWRk5VZkRNdFpXUXlNbVl4WkRndFpUWmhNaTB4TVRFNExUbGlOVGd0WkRsaE9HWXhNV1UwTkRWbU1SOHdIUVlLQ1pJbWlaUHlMR1FCQVF3UE16azVPVGs1T1RrNU9UQXdNREF6TVEwd0N3WURWUVFNREFReE1UQXdNUkV3RHdZRFZRUWFEQWhTVWxKRU1qa3lPVEVhTUJnR0ExVUVEd3dSVTNWd2NHeDVJR0ZqZEdsMmFYUnBaWE13SFFZRFZSME9CQllFRkVYK1l2bW10bllvRGY5QkdiS283b2NUS1lLMU1COEdBMVVkSXdRWU1CYUFGSnZLcXFMdG1xd3NrSUZ6VnZwUDJQeFQrOU5uTUhzR0NDc0dBUVVGQndFQkJHOHdiVEJyQmdnckJnRUZCUWN3QW9aZmFIUjBjRG92TDJGcFlUUXVlbUYwWTJFdVoyOTJMbk5oTDBObGNuUkZibkp2Ykd3dlVGSmFSVWx1ZG05cFkyVlRRMEUwTG1WNGRHZGhlblF1WjI5MkxteHZZMkZzWDFCU1drVkpUbFpQU1VORlUwTkJOQzFEUVNneEtTNWpjblF3RGdZRFZSMFBBUUgvQkFRREFnZUFNRHdHQ1NzR0FRUUJnamNWQndRdk1DMEdKU3NHQVFRQmdqY1ZDSUdHcUIyRTBQc1NodTJkSklmTyt4blR3RlZtaC9xbFpZWFpoRDRDQVdRQ0FSSXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd01HQ0NzR0FRVUZCd01DTUNjR0NTc0dBUVFCZ2pjVkNnUWFNQmd3Q2dZSUt3WUJCUVVIQXdNd0NnWUlLd1lCQlFVSEF3SXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTEUvaWNobW5XWENVS1ViY2EzeWNpOG9xd2FMdkZkSFZqUXJ2ZUk5dXFBYkFpQTloQzRNOGpnTUJBRFBTem1kMnVpUEpBNmdLUjNMRTAzVTc1ZXFiQy9yWEE9PTwvZHM6WDUwOUNlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpYNTA5RGF0YT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpLZXlJbmZvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHM6T2JqZWN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhhZGVzOlF1YWxpZnlpbmdQcm9wZXJ0aWVzIFRhcmdldD0ic2lnbmF0dXJlIiB4bWxuczp4YWRlcz0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMy92MS4zLjIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmVkUHJvcGVydGllcyBJZD0ieGFkZXNTaWduZWRQcm9wZXJ0aWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhhZGVzOlNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmluZ1RpbWU+MjAyNC0xMi0wNlQyMTo0MzoyNzwveGFkZXM6U2lnbmluZ1RpbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4YWRlczpDZXJ0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6Q2VydERpZ2VzdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkczpEaWdlc3RWYWx1ZT5aRE13TW1JME1URTFOelZqT1RVMk5UazRZelZsT0RoaFltSTBPRFUyTkRVeU5UVTJZVFZoWWpoaE1ERm1OMkZqWWprMVlUQTJPV1EwTmpZMk1qUTROUT09PC9kczpEaWdlc3RWYWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpDZXJ0RGlnZXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eGFkZXM6SXNzdWVyU2VyaWFsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlg1MDlJc3N1ZXJOYW1lPkNOPVBSWkVJTlZPSUNFU0NBNC1DQSwgREM9ZXh0Z2F6dCwgREM9Z292LCBEQz1sb2NhbDwvZHM6WDUwOUlzc3Vlck5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHM6WDUwOVNlcmlhbE51bWJlcj4zNzkxMTI3NDI4MzEzODA0NzE4MzUyNjM5Njk1ODcyODc2NjM1MjA1MjgzODc8L2RzOlg1MDlTZXJpYWxOdW1iZXI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6SXNzdWVyU2VyaWFsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6Q2VydD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hhZGVzOlNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpTaWduZWRQcm9wZXJ0aWVzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94YWRlczpRdWFsaWZ5aW5nUHJvcGVydGllcz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpPYmplY3Q+CiAgICAgICAgICAgICAgICAgICAgPC9kczpTaWduYXR1cmU+CiAgICAgICAgICAgICAgICA8L3NhYzpTaWduYXR1cmVJbmZvcm1hdGlvbj4KICAgICAgICAgICAgPC9zaWc6VUJMRG9jdW1lbnRTaWduYXR1cmVzPgogICAgICAgIDwvZXh0OkV4dGVuc2lvbkNvbnRlbnQ+CiAgICA8L2V4dDpVQkxFeHRlbnNpb24+CjwvZXh0OlVCTEV4dGVuc2lvbnM+CiAKIDxjYmM6UHJvZmlsZUlEPnJlcG9ydGluZzoxLjA8L2NiYzpQcm9maWxlSUQ+CiA8Y2JjOklEPklOVi0xMDI5OTEyPC9jYmM6SUQ+CiA8Y2JjOlVVSUQ+MTkzNWU0ZDMtMDM3NS00NzFkLTgzNWYtY2MyN2VhOTkwNWVkPC9jYmM6VVVJRD4KIDxjYmM6SXNzdWVEYXRlPjIwMjQtMTEtMjU8L2NiYzpJc3N1ZURhdGU+CiA8Y2JjOklzc3VlVGltZT4xMzo0NTowMDwvY2JjOklzc3VlVGltZT4KIDxjYmM6SW52b2ljZVR5cGVDb2RlIG5hbWU9IjAyMDAwMDAiPjM4ODwvY2JjOkludm9pY2VUeXBlQ29kZT4KIDxjYmM6RG9jdW1lbnRDdXJyZW5jeUNvZGU+U0FSPC9jYmM6RG9jdW1lbnRDdXJyZW5jeUNvZGU+CiA8Y2JjOlRheEN1cnJlbmN5Q29kZT5TQVI8L2NiYzpUYXhDdXJyZW5jeUNvZGU+CiA8Y2FjOkFkZGl0aW9uYWxEb2N1bWVudFJlZmVyZW5jZT4KICA8Y2JjOklEPklDVjwvY2JjOklEPgogIDxjYmM6VVVJRD41MTwvY2JjOlVVSUQ+CiA8L2NhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2U+CiA8Y2FjOkFkZGl0aW9uYWxEb2N1bWVudFJlZmVyZW5jZT4KICA8Y2JjOklEPlBJSDwvY2JjOklEPgogIDxjYWM6QXR0YWNobWVudD4KICAgPGNiYzpFbWJlZGRlZERvY3VtZW50QmluYXJ5T2JqZWN0IG1pbWVDb2RlPSJ0ZXh0L3BsYWluIj5OV1psWTJWaU5qWm1abU00Tm1Zek9HUTVOVEkzT0Raak5tUTJPVFpqTnpsak1tUmlZekl6T1dSa05HVTVNV0kwTmpjeU9XUTNNMkV5TjJaaU5UZGxPUT09PC9jYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdD4KICA8L2NhYzpBdHRhY2htZW50PgogPC9jYWM6QWRkaXRpb25hbERvY3VtZW50UmVmZXJlbmNlPgogCiAKIDxjYWM6QWRkaXRpb25hbERvY3VtZW50UmVmZXJlbmNlPgogICAgICAgIDxjYmM6SUQ+UVI8L2NiYzpJRD4KICAgICAgICA8Y2FjOkF0dGFjaG1lbnQ+CiAgICAgICAgICAgIDxjYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdCBtaW1lQ29kZT0idGV4dC9wbGFpbiI+QVIxTllYaHBiWFZ0SUZOd1pXVmtJRlJsWTJnZ1UzVndjR3g1SUV4VVJBSVBNems1T1RrNU9UazVPVEF3TURBekF4TXlNREkwTFRFeExUSTFWREV6T2pRMU9qQXdCQVEwTGpZd0JRTXdMallHTERsbWFVWlZabHAzY2xOcFowOU1lSE5tWjFCVlZrMUxaa3htVWxZMWFrbDNaaXM1T0d0cGFXSkVRbTg5QjJCTlJWbERTVkZEZUV3NE5FeEVOekJRY0RneFFqbEdiVWxyU1ZGVlUwdFRUQ3RvWWtnNWREbENlblpXUzBSUlIwWmhaMGxvUVVsM1JuWjRTbXgyTUhWS1pGWmpkRk5LVm5ObVEweHFRak5MZEZoS1pqRnZTMDlhV0hsWldHZFJZV29JV0RCV01CQUdCeXFHU000OUFnRUdCU3VCQkFBS0EwSUFCS0ZnaW10RW12UlNCSzB6cjlMZ0pBdFZTQ2w4VlBaejZjZHI1WCtNb1RIbzh2SE5ObHlXNVE2dTdUOG5hUEpxdEdvVGpKamFQSU1KNHUxN2RTay9WSGdKUnpCRkFpRUFzVCtKeUdhZFpjSlFwUnR4cmZKeUx5aXJCb3U4VjBkV05DdTk0ajI2b0JzQ0lEMkVMZ3p5T0F3RUFNOUxPWjNhNkk4a0RxQXBIY3NUVGRUdmw2cHNMK3RjPC9jYmM6RW1iZWRkZWREb2N1bWVudEJpbmFyeU9iamVjdD4KICAgICAgICA8L2NhYzpBdHRhY2htZW50Pgo8L2NhYzpBZGRpdGlvbmFsRG9jdW1lbnRSZWZlcmVuY2U+PGNhYzpTaWduYXR1cmU+CiAgICAgIDxjYmM6SUQ+dXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNpZ25hdHVyZTpJbnZvaWNlPC9jYmM6SUQ+CiAgICAgIDxjYmM6U2lnbmF0dXJlTWV0aG9kPnVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpkc2lnOmVudmVsb3BlZDp4YWRlczwvY2JjOlNpZ25hdHVyZU1ldGhvZD4KPC9jYWM6U2lnbmF0dXJlPjxjYWM6QWNjb3VudGluZ1N1cHBsaWVyUGFydHk+CiAgPGNhYzpQYXJ0eT4KICAgPGNhYzpQYXJ0eUlkZW50aWZpY2F0aW9uPgogICAgPGNiYzpJRCBzY2hlbWVJRD0iQ1JOIj4xMDEwMDEwMDAwPC9jYmM6SUQ+CiAgIDwvY2FjOlBhcnR5SWRlbnRpZmljYXRpb24+CiAgIDxjYWM6UG9zdGFsQWRkcmVzcz4KICAgIDxjYmM6U3RyZWV0TmFtZT5TdHJlZXQgTmFtZTwvY2JjOlN0cmVldE5hbWU+CiAgICA8Y2JjOkJ1aWxkaW5nTnVtYmVyPjIyMzE8L2NiYzpCdWlsZGluZ051bWJlcj4KICAgIDxjYmM6UGxvdElkZW50aWZpY2F0aW9uPjEyMzwvY2JjOlBsb3RJZGVudGlmaWNhdGlvbj4KICAgIDxjYmM6Q2l0eVN1YmRpdmlzaW9uTmFtZT5EaXN0cmljdDwvY2JjOkNpdHlTdWJkaXZpc2lvbk5hbWU+CiAgICA8Y2JjOkNpdHlOYW1lPlJpeWFkaDwvY2JjOkNpdHlOYW1lPgogICAgPGNiYzpQb3N0YWxab25lPjEyMzQ1PC9jYmM6UG9zdGFsWm9uZT4KICAgIDxjYWM6Q291bnRyeT4KICAgICA8Y2JjOklkZW50aWZpY2F0aW9uQ29kZT5TQTwvY2JjOklkZW50aWZpY2F0aW9uQ29kZT4KICAgIDwvY2FjOkNvdW50cnk+CiAgIDwvY2FjOlBvc3RhbEFkZHJlc3M+CiAgIDxjYWM6UGFydHlUYXhTY2hlbWU+CiAgICA8Y2JjOkNvbXBhbnlJRD4zOTk5OTk5OTk5MDAwMDM8L2NiYzpDb21wYW55SUQ+CiAgICA8Y2FjOlRheFNjaGVtZT4KICAgICA8Y2JjOklEPlZBVDwvY2JjOklEPgogICAgPC9jYWM6VGF4U2NoZW1lPgogICA8L2NhYzpQYXJ0eVRheFNjaGVtZT4KICAgPGNhYzpQYXJ0eUxlZ2FsRW50aXR5PgogICAgPGNiYzpSZWdpc3RyYXRpb25OYW1lPk1heGltdW0gU3BlZWQgVGVjaCBTdXBwbHkgTFREPC9jYmM6UmVnaXN0cmF0aW9uTmFtZT4KICAgPC9jYWM6UGFydHlMZWdhbEVudGl0eT4KICA8L2NhYzpQYXJ0eT4KIDwvY2FjOkFjY291bnRpbmdTdXBwbGllclBhcnR5PgogPGNhYzpBY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eT4KICA8Y2FjOlBhcnR5PgogICA8Y2FjOlBhcnR5SWRlbnRpZmljYXRpb24+CiAgICA8Y2JjOklEIHNjaGVtZUlEPSJOQVQiPjEwMTAwMTAwMDA8L2NiYzpJRD4KICAgPC9jYWM6UGFydHlJZGVudGlmaWNhdGlvbj4KICAgPGNhYzpQb3N0YWxBZGRyZXNzPgogICAgPGNiYzpTdHJlZXROYW1lPlN0cmVldCBOYW1lPC9jYmM6U3RyZWV0TmFtZT4KICAgIDxjYmM6QnVpbGRpbmdOdW1iZXI+MTIzPC9jYmM6QnVpbGRpbmdOdW1iZXI+CiAgICA8Y2JjOlBsb3RJZGVudGlmaWNhdGlvbj4xMjM8L2NiYzpQbG90SWRlbnRpZmljYXRpb24+CiAgICA8Y2JjOkNpdHlTdWJkaXZpc2lvbk5hbWU+RGlzdHJpY3Q8L2NiYzpDaXR5U3ViZGl2aXNpb25OYW1lPgogICAgPGNiYzpDaXR5TmFtZT5SaXlhZGg8L2NiYzpDaXR5TmFtZT4KICAgIDxjYmM6UG9zdGFsWm9uZT4xMjM0NTwvY2JjOlBvc3RhbFpvbmU+CiAgICA8Y2FjOkNvdW50cnk+CiAgICAgPGNiYzpJZGVudGlmaWNhdGlvbkNvZGU+U0E8L2NiYzpJZGVudGlmaWNhdGlvbkNvZGU+CiAgICA8L2NhYzpDb3VudHJ5PgogICA8L2NhYzpQb3N0YWxBZGRyZXNzPgogICA8Y2FjOlBhcnR5VGF4U2NoZW1lPgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRD5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6UGFydHlUYXhTY2hlbWU+CiAgIDxjYWM6UGFydHlMZWdhbEVudGl0eT4KICAgIDxjYmM6UmVnaXN0cmF0aW9uTmFtZT5Db21wYW55IE5hbWU8L2NiYzpSZWdpc3RyYXRpb25OYW1lPgogICA8L2NhYzpQYXJ0eUxlZ2FsRW50aXR5PgogIDwvY2FjOlBhcnR5PgogPC9jYWM6QWNjb3VudGluZ0N1c3RvbWVyUGFydHk+CiA8Y2FjOkRlbGl2ZXJ5PgogIDxjYmM6QWN0dWFsRGVsaXZlcnlEYXRlPjIwMjQtMTEtMjU8L2NiYzpBY3R1YWxEZWxpdmVyeURhdGU+CiA8L2NhYzpEZWxpdmVyeT4KIDxjYWM6UGF5bWVudE1lYW5zPgogIDxjYmM6UGF5bWVudE1lYW5zQ29kZT4zMDwvY2JjOlBheW1lbnRNZWFuc0NvZGU+CiA8L2NhYzpQYXltZW50TWVhbnM+CiA8Y2FjOlRheFRvdGFsPgogIDxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+MC42PC9jYmM6VGF4QW1vdW50PgogPC9jYWM6VGF4VG90YWw+CiA8Y2FjOlRheFRvdGFsPgogIDxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+MC42MDwvY2JjOlRheEFtb3VudD4KICA8Y2FjOlRheFN1YnRvdGFsPgogICA8Y2JjOlRheGFibGVBbW91bnQgY3VycmVuY3lJRD0iU0FSIj40LjAwPC9jYmM6VGF4YWJsZUFtb3VudD4KICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjYwPC9jYmM6VGF4QW1vdW50PgogICA8Y2FjOlRheENhdGVnb3J5PgogICAgPGNiYzpJRCBzY2hlbWVBZ2VuY3lJRD0iNiIgc2NoZW1lSUQ9IlVOL0VDRSA1MzA1Ij5TPC9jYmM6SUQ+CiAgICA8Y2JjOlBlcmNlbnQ+MTU8L2NiYzpQZXJjZW50PgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRCBzY2hlbWVBZ2VuY3lJRD0iNiIgc2NoZW1lSUQ9IlVOL0VDRSA1MTUzIj5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6VGF4Q2F0ZWdvcnk+CiAgPC9jYWM6VGF4U3VidG90YWw+CiA8L2NhYzpUYXhUb3RhbD4KIDxjYWM6TGVnYWxNb25ldGFyeVRvdGFsPgogIDxjYmM6TGluZUV4dGVuc2lvbkFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjQuMDA8L2NiYzpMaW5lRXh0ZW5zaW9uQW1vdW50PgogIDxjYmM6VGF4RXhjbHVzaXZlQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+NC4wMDwvY2JjOlRheEV4Y2x1c2l2ZUFtb3VudD4KICA8Y2JjOlRheEluY2x1c2l2ZUFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjQuNjA8L2NiYzpUYXhJbmNsdXNpdmVBbW91bnQ+CiAgPGNiYzpBbGxvd2FuY2VUb3RhbEFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjAuMDA8L2NiYzpBbGxvd2FuY2VUb3RhbEFtb3VudD4KICA8Y2JjOlByZXBhaWRBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjAwPC9jYmM6UHJlcGFpZEFtb3VudD4KICA8Y2JjOlBheWFibGVBbW91bnQgY3VycmVuY3lJRD0iU0FSIj40LjYwPC9jYmM6UGF5YWJsZUFtb3VudD4KIDwvY2FjOkxlZ2FsTW9uZXRhcnlUb3RhbD4KIDxjYWM6SW52b2ljZUxpbmU+CiAgPGNiYzpJRD4xPC9jYmM6SUQ+CiAgPGNiYzpJbnZvaWNlZFF1YW50aXR5IHVuaXRDb2RlPSJNT04iPjEuMDAwMDAwPC9jYmM6SW52b2ljZWRRdWFudGl0eT4KICA8Y2JjOkxpbmVFeHRlbnNpb25BbW91bnQgY3VycmVuY3lJRD0iU0FSIj4yLjAwPC9jYmM6TGluZUV4dGVuc2lvbkFtb3VudD4KICA8Y2FjOlRheFRvdGFsPgogICA8Y2JjOlRheEFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjAuMzA8L2NiYzpUYXhBbW91bnQ+CiAgIDxjYmM6Um91bmRpbmdBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4yLjMwPC9jYmM6Um91bmRpbmdBbW91bnQ+CiAgPC9jYWM6VGF4VG90YWw+CiAgPGNhYzpJdGVtPgogICA8Y2JjOk5hbWU+SXRlbSBOYW1lPC9jYmM6TmFtZT4KICAgPGNhYzpDbGFzc2lmaWVkVGF4Q2F0ZWdvcnk+CiAgICA8Y2JjOklEPlM8L2NiYzpJRD4KICAgIDxjYmM6UGVyY2VudD4xNS4wMDwvY2JjOlBlcmNlbnQ+CiAgICA8Y2FjOlRheFNjaGVtZT4KICAgICA8Y2JjOklEPlZBVDwvY2JjOklEPgogICAgPC9jYWM6VGF4U2NoZW1lPgogICA8L2NhYzpDbGFzc2lmaWVkVGF4Q2F0ZWdvcnk+CiAgPC9jYWM6SXRlbT4KICA8Y2FjOlByaWNlPgogICA8Y2JjOlByaWNlQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4wMDwvY2JjOlByaWNlQW1vdW50PgogIDwvY2FjOlByaWNlPgogPC9jYWM6SW52b2ljZUxpbmU+CiA8Y2FjOkludm9pY2VMaW5lPgogIDxjYmM6SUQ+MjwvY2JjOklEPgogIDxjYmM6SW52b2ljZWRRdWFudGl0eSB1bml0Q29kZT0iTU9OIj4xLjAwMDAwMDwvY2JjOkludm9pY2VkUXVhbnRpdHk+CiAgPGNiYzpMaW5lRXh0ZW5zaW9uQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4wMDwvY2JjOkxpbmVFeHRlbnNpb25BbW91bnQ+CiAgPGNhYzpUYXhUb3RhbD4KICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iU0FSIj4wLjMwPC9jYmM6VGF4QW1vdW50PgogICA8Y2JjOlJvdW5kaW5nQW1vdW50IGN1cnJlbmN5SUQ9IlNBUiI+Mi4zMDwvY2JjOlJvdW5kaW5nQW1vdW50PgogIDwvY2FjOlRheFRvdGFsPgogIDxjYWM6SXRlbT4KICAgPGNiYzpOYW1lPkl0ZW0gTmFtZTwvY2JjOk5hbWU+CiAgIDxjYWM6Q2xhc3NpZmllZFRheENhdGVnb3J5PgogICAgPGNiYzpJRD5TPC9jYmM6SUQ+CiAgICA8Y2JjOlBlcmNlbnQ+MTUuMDA8L2NiYzpQZXJjZW50PgogICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgPGNiYzpJRD5WQVQ8L2NiYzpJRD4KICAgIDwvY2FjOlRheFNjaGVtZT4KICAgPC9jYWM6Q2xhc3NpZmllZFRheENhdGVnb3J5PgogIDwvY2FjOkl0ZW0+CiAgPGNhYzpQcmljZT4KICAgPGNiYzpQcmljZUFtb3VudCBjdXJyZW5jeUlEPSJTQVIiPjIuMDA8L2NiYzpQcmljZUFtb3VudD4KICA8L2NhYzpQcmljZT4KIDwvY2FjOkludm9pY2VMaW5lPgo8L0ludm9pY2U+",
        "qr": "AR1NYXhpbXVtIFNwZWVkIFRlY2ggU3VwcGx5IExURAIPMzk5OTk5OTk5OTAwMDAzAxMyMDI0LTExLTI1VDEzOjQ1OjAwBAQ0LjYwBQMwLjYGLDlmaUZVZlp3clNpZ09MeHNmZ1BVVk1LZkxmUlY1akl3Zis5OGtpaWJEQm89B2BNRVlDSVFDeEw4NExENzBQcDgxQjlGbUlrSVFVU0tTTCtoYkg5dDlCenZWS0RRR0ZhZ0loQUl3RnZ4Smx2MHVKZFZjdFNKVnNmQ0xqQjNLdFhKZjFvS09aWHlZWGdRYWoIWDBWMBAGByqGSM49AgEGBSuBBAAKA0IABKFgimtEmvRSBK0zr9LgJAtVSCl8VPZz6cdr5X+MoTHo8vHNNlyW5Q6u7T8naPJqtGoTjJjaPIMJ4u17dSk/VHgJRzBFAiEAsT+JyGadZcJQpRtxrfJyLyirBou8V0dWNCu94j26oBsCID2ELgzyOAwEAM9LOZ3a6I8kDqApHcsTTdTvl6psL+tc",
        "response":
        {
            "validationResults":
            {
                "infoMessages": [
                    {
                        "type": "INFO",
                        "code": "XSD_ZATCA_VALID",
                        "category": "XSD validation",
                        "message": "Complied with UBL 2.1 standards in line with ZATCA specifications",
                        "status": "PASS"
                    }],
                "warningMessages": [],
                "errorMessages": [],
                "status": "PASS"
            },
            "reportingStatus": "REPORTED"
        },
        "created_at": "2024-12-06T21:43:27.000000Z"
    }
}
  • Check Invoice Compliance
    use DigitalTunnel\Zatca\Facades\ZatcaConnect;

    ZatcaConnect::setInvoiceUuid('1935e4d3-0375-471d-835f-cc27ea9905ed')
                ->checkCompliance();

Response example of invoice compliance

{
	"message": "ZATCA Invoice Compliance Check Details",
	"data":
	{
		"validationResults":
		{
			"infoMessages": [
			{
				"type": "INFO",
				"code": "XSD_ZATCA_VALID",
				"category": "XSD validation",
				"message": "Complied with UBL 2.1 standards in line with ZATCA specifications",
				"status": "PASS"
			}],
			"warningMessages": [],
			"errorMessages": [],
			"status": "PASS"
		},
		"reportingStatus": "REPORTED",
		"clearanceStatus": null,
		"qrSellertStatus": null,
		"qrBuyertStatus": null
	}
}