diff --git a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.spec.ts b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.spec.ts
index fc15453be..b86453a25 100644
--- a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.spec.ts
+++ b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.spec.ts
@@ -34,6 +34,7 @@ const doc = {
correspondent: 8,
document_type: 10,
storage_path: null,
+ page_count: 12,
notes: [
{
id: 11,
@@ -91,6 +92,10 @@ describe('DocumentCardSmallComponent', () => {
fixture.detectChanges()
})
+ it('should display page count', () => {
+ expect(fixture.nativeElement.textContent).toContain('12 pages')
+ })
+
it('should display a document, limit tags to 5', () => {
expect(fixture.nativeElement.textContent).toContain('Document 10')
expect(
diff --git a/src-ui/src/app/components/document-list/document-list.component.html b/src-ui/src/app/components/document-list/document-list.component.html
index 368515970..8ca8e111d 100644
--- a/src-ui/src/app/components/document-list/document-list.component.html
+++ b/src-ui/src/app/components/document-list/document-list.component.html
@@ -246,6 +246,15 @@
(sort)="onSort($event)"
i18n>Added
}
+ @if (activeDisplayFields.includes(DisplayField.PAGE_COUNT)) {
+
Pages |
+ }
@if (activeDisplayFields.includes(DisplayField.SHARED)) {
Shared
@@ -330,6 +339,11 @@
{{d.added | customDate}}
}
+ @if (activeDisplayFields.includes(DisplayField.PAGE_COUNT)) {
+ |
+ {{ d.page_count }}
+ |
+ }
@if (activeDisplayFields.includes(DisplayField.SHARED)) {
@if (d.is_shared_by_requester) { Yes } @else { No }
diff --git a/src-ui/src/app/components/document-list/document-list.component.spec.ts b/src-ui/src/app/components/document-list/document-list.component.spec.ts
index 26758b3c0..ad85652b8 100644
--- a/src-ui/src/app/components/document-list/document-list.component.spec.ts
+++ b/src-ui/src/app/components/document-list/document-list.component.spec.ts
@@ -602,7 +602,7 @@ describe('DocumentListComponent', () => {
expect(
fixture.debugElement.queryAll(By.directive(SortableDirective))
- ).toHaveLength(9)
+ ).toHaveLength(10)
expect(component.notesEnabled).toBeTruthy()
settingsService.set(SETTINGS_KEYS.NOTES_ENABLED, false)
@@ -610,14 +610,14 @@ describe('DocumentListComponent', () => {
expect(component.notesEnabled).toBeFalsy()
expect(
fixture.debugElement.queryAll(By.directive(SortableDirective))
- ).toHaveLength(8)
+ ).toHaveLength(9)
// insufficient perms
jest.spyOn(permissionService, 'currentUserCan').mockReturnValue(false)
fixture.detectChanges()
expect(
fixture.debugElement.queryAll(By.directive(SortableDirective))
- ).toHaveLength(4)
+ ).toHaveLength(5)
})
it('should support toggle on document objects', () => {
diff --git a/src-ui/src/app/data/document.ts b/src-ui/src/app/data/document.ts
index 1571d2a53..0b630b8cd 100644
--- a/src-ui/src/app/data/document.ts
+++ b/src-ui/src/app/data/document.ts
@@ -26,6 +26,7 @@ export enum DisplayField {
OWNER = 'owner',
SHARED = 'shared',
ASN = 'asn',
+ PAGE_COUNT = 'pagecount',
}
export const DEFAULT_DISPLAY_FIELDS = [
@@ -73,6 +74,10 @@ export const DEFAULT_DISPLAY_FIELDS = [
id: DisplayField.ASN,
name: $localize`ASN`,
},
+ {
+ id: DisplayField.PAGE_COUNT,
+ name: $localize`Pages`,
+ },
]
export const DEFAULT_DASHBOARD_VIEW_PAGE_SIZE = 10
@@ -94,6 +99,7 @@ export const DOCUMENT_SORT_FIELDS = [
{ field: 'modified', name: $localize`Modified` },
{ field: 'num_notes', name: $localize`Notes` },
{ field: 'owner', name: $localize`Owner` },
+ { field: 'page_count', name: $localize`Pages` },
]
export const DOCUMENT_SORT_FIELDS_FULLTEXT = [
@@ -164,4 +170,6 @@ export interface Document extends ObjectWithPermissions {
// write-only field
remove_inbox_tags?: boolean
+
+ page_count?: number
}
diff --git a/src-ui/src/app/services/settings.service.ts b/src-ui/src/app/services/settings.service.ts
index 91d1cc320..c3ea3f856 100644
--- a/src-ui/src/app/services/settings.service.ts
+++ b/src-ui/src/app/services/settings.service.ts
@@ -345,6 +345,7 @@ export class SettingsService {
DisplayField.CREATED,
DisplayField.ADDED,
DisplayField.ASN,
+ DisplayField.PAGE_COUNT,
DisplayField.SHARED,
].includes(field.id)
) {
diff --git a/src/documents/bulk_edit.py b/src/documents/bulk_edit.py
index 1f7a2a403..4481b2b3f 100644
--- a/src/documents/bulk_edit.py
+++ b/src/documents/bulk_edit.py
@@ -387,6 +387,8 @@ def delete_pages(doc_ids: list[int], pages: list[int]):
pdf.remove_unreferenced_resources()
pdf.save()
doc.checksum = hashlib.md5(doc.source_path.read_bytes()).hexdigest()
+ if doc.page_count is not None:
+ doc.page_count = doc.page_count - len(pages)
doc.save()
update_document_archive_file.delay(document_id=doc.id)
logger.info(f"Deleted pages {pages} from document {doc.id}")
diff --git a/src/documents/consumer.py b/src/documents/consumer.py
index d90b88f5a..57277e4a6 100644
--- a/src/documents/consumer.py
+++ b/src/documents/consumer.py
@@ -586,6 +586,7 @@ class ConsumerPlugin(
date = None
thumbnail = None
archive_path = None
+ page_count = None
try:
self._send_progress(
@@ -621,6 +622,7 @@ class ConsumerPlugin(
)
date = parse_date(self.filename, text)
archive_path = document_parser.get_archive_path()
+ page_count = document_parser.get_page_count(self.working_copy, mime_type)
except ParseError as e:
document_parser.cleanup()
@@ -662,7 +664,12 @@ class ConsumerPlugin(
try:
with transaction.atomic():
# store the document.
- document = self._store(text=text, date=date, mime_type=mime_type)
+ document = self._store(
+ text=text,
+ date=date,
+ page_count=page_count,
+ mime_type=mime_type,
+ )
# If we get here, it was successful. Proceed with post-consume
# hooks. If they fail, nothing will get changed.
@@ -790,6 +797,7 @@ class ConsumerPlugin(
self,
text: str,
date: Optional[datetime.datetime],
+ page_count: Optional[int],
mime_type: str,
) -> Document:
# If someone gave us the original filename, use it instead of doc.
@@ -835,6 +843,7 @@ class ConsumerPlugin(
created=create_date,
modified=create_date,
storage_type=storage_type,
+ page_count=page_count,
original_filename=self.filename,
)
diff --git a/src/documents/index.py b/src/documents/index.py
index d95a80213..03b8c4f35 100644
--- a/src/documents/index.py
+++ b/src/documents/index.py
@@ -80,6 +80,7 @@ def get_schema():
has_owner=BOOLEAN(),
viewer_id=KEYWORD(commas=True),
checksum=TEXT(),
+ page_count=NUMERIC(sortable=True),
original_filename=TEXT(sortable=True),
is_shared=BOOLEAN(),
)
@@ -181,6 +182,7 @@ def update_document(writer: AsyncWriter, doc: Document):
has_owner=doc.owner is not None,
viewer_id=viewer_ids if viewer_ids else None,
checksum=doc.checksum,
+ page_count=doc.page_count,
original_filename=doc.original_filename,
is_shared=len(viewer_ids) > 0,
)
@@ -247,6 +249,7 @@ class DelayedQuery:
"archive_serial_number": "asn",
"num_notes": "num_notes",
"owner": "owner",
+ "page_count": "page_count",
}
if field.startswith("-"):
diff --git a/src/documents/migrations/1053_document_page_count.py b/src/documents/migrations/1053_document_page_count.py
new file mode 100644
index 000000000..13549e00f
--- /dev/null
+++ b/src/documents/migrations/1053_document_page_count.py
@@ -0,0 +1,62 @@
+# Generated by Django 4.2.16 on 2024-09-21 15:44
+from pathlib import Path
+
+import pikepdf
+from django.conf import settings
+from django.db import migrations
+from django.db import models
+from django.utils.termcolors import colorize as colourise
+
+
+def source_path(self):
+ if self.filename:
+ fname = str(self.filename)
+
+ return Path(settings.ORIGINALS_DIR / fname).resolve()
+
+
+def add_number_of_pages_to_page_count(apps, schema_editor):
+ Document = apps.get_model("documents", "Document")
+
+ if not Document.objects.all().exists():
+ return
+
+ for doc in Document.objects.filter(mime_type="application/pdf"):
+ print(
+ " {} {} {}".format(
+ colourise("*", fg="green"),
+ colourise("Calculating number of pages for", fg="white"),
+ colourise(doc.filename, fg="cyan"),
+ ),
+ )
+
+ try:
+ with pikepdf.Pdf.open(source_path(doc)) as pdf:
+ if pdf.pages is not None:
+ doc.page_count = len(pdf.pages)
+ doc.save()
+ except Exception as e: # pragma: no cover
+ print(f"Error retrieving number of pages for {doc.filename}: {e}")
+
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ("documents", "1052_document_transaction_id"),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name="document",
+ name="page_count",
+ field=models.PositiveIntegerField(
+ blank=False,
+ null=True,
+ unique=False,
+ db_index=False,
+ ),
+ ),
+ migrations.RunPython(
+ add_number_of_pages_to_page_count,
+ migrations.RunPython.noop,
+ ),
+ ]
diff --git a/src/documents/models.py b/src/documents/models.py
index 24e8c2b26..772e10fde 100644
--- a/src/documents/models.py
+++ b/src/documents/models.py
@@ -205,6 +205,18 @@ class Document(SoftDeleteModel, ModelWithOwner):
help_text=_("The checksum of the archived document."),
)
+ page_count = models.PositiveIntegerField(
+ _("page count"),
+ blank=False,
+ null=True,
+ unique=False,
+ db_index=False,
+ validators=[MinValueValidator(1)],
+ help_text=_(
+ "The number of pages of the document.",
+ ),
+ )
+
created = models.DateTimeField(_("created"), default=timezone.now, db_index=True)
modified = models.DateTimeField(
@@ -414,6 +426,7 @@ class SavedView(ModelWithOwner):
OWNER = ("owner", _("Owner"))
SHARED = ("shared", _("Shared"))
ASN = ("asn", _("ASN"))
+ PAGE_COUNT = ("pagecount", _("Pages"))
CUSTOM_FIELD = ("custom_field_%d", ("Custom Field"))
name = models.CharField(_("name"), max_length=128)
diff --git a/src/documents/parsers.py b/src/documents/parsers.py
index 1297162e2..63599c0c5 100644
--- a/src/documents/parsers.py
+++ b/src/documents/parsers.py
@@ -367,6 +367,9 @@ class DocumentParser(LoggingMixin):
def extract_metadata(self, document_path, mime_type):
return []
+ def get_page_count(self, document_path, mime_type):
+ return None
+
def parse(self, document_path, mime_type, file_name=None):
raise NotImplementedError
diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py
index 5218cbf8a..737d1256f 100644
--- a/src/documents/serialisers.py
+++ b/src/documents/serialisers.py
@@ -750,6 +750,7 @@ class DocumentSerializer(
original_file_name = SerializerMethodField()
archived_file_name = SerializerMethodField()
created_date = serializers.DateField(required=False)
+ page_count = SerializerMethodField()
custom_fields = CustomFieldInstanceSerializer(
many=True,
@@ -770,6 +771,9 @@ class DocumentSerializer(
required=False,
)
+ def get_page_count(self, obj):
+ return obj.page_count
+
def get_original_file_name(self, obj):
return obj.original_filename
@@ -885,6 +889,7 @@ class DocumentSerializer(
"notes",
"custom_fields",
"remove_inbox_tags",
+ "page_count",
)
list_serializer_class = OwnedObjectListSerializer
diff --git a/src/documents/tests/test_bulk_edit.py b/src/documents/tests/test_bulk_edit.py
index fed93cd01..d80116a80 100644
--- a/src/documents/tests/test_bulk_edit.py
+++ b/src/documents/tests/test_bulk_edit.py
@@ -389,6 +389,7 @@ class TestPDFActions(DirectoriesMixin, TestCase):
title="B",
filename=sample2,
mime_type="application/pdf",
+ page_count=8,
)
self.doc2.archive_filename = sample2_archive
self.doc2.save()
@@ -681,14 +682,20 @@ class TestPDFActions(DirectoriesMixin, TestCase):
THEN:
- Save should be called once
- Archive file should be updated once
+ - The document's page_count should be reduced by the number of deleted pages
"""
doc_ids = [self.doc2.id]
+ initial_page_count = self.doc2.page_count
pages = [1, 3]
result = bulk_edit.delete_pages(doc_ids, pages)
mock_pdf_save.assert_called_once()
mock_update_archive_file.assert_called_once()
self.assertEqual(result, "OK")
+ expected_page_count = initial_page_count - len(pages)
+ self.doc2.refresh_from_db()
+ self.assertEqual(self.doc2.page_count, expected_page_count)
+
@mock.patch("documents.tasks.update_document_archive_file.delay")
@mock.patch("pikepdf.Pdf.save")
def test_delete_pages_with_error(self, mock_pdf_save, mock_update_archive_file):
diff --git a/src/documents/tests/test_migration_document_pages_count.py b/src/documents/tests/test_migration_document_pages_count.py
new file mode 100644
index 000000000..e656bf1b8
--- /dev/null
+++ b/src/documents/tests/test_migration_document_pages_count.py
@@ -0,0 +1,59 @@
+import os
+import shutil
+from pathlib import Path
+
+from django.conf import settings
+
+from documents.tests.utils import TestMigrations
+
+
+def source_path_before(self):
+ if self.filename:
+ fname = str(self.filename)
+
+ return os.path.join(settings.ORIGINALS_DIR, fname)
+
+
+class TestMigrateDocumentPageCount(TestMigrations):
+ migrate_from = "1052_document_transaction_id"
+ migrate_to = "1053_document_page_count"
+
+ def setUpBeforeMigration(self, apps):
+ Document = apps.get_model("documents", "Document")
+ doc = Document.objects.create(
+ title="test1",
+ mime_type="application/pdf",
+ filename="file1.pdf",
+ )
+ self.doc_id = doc.id
+ shutil.copy(
+ Path(__file__).parent / "samples" / "simple.pdf",
+ source_path_before(doc),
+ )
+
+ def testDocumentPageCountMigrated(self):
+ Document = self.apps.get_model("documents", "Document")
+
+ doc = Document.objects.get(id=self.doc_id)
+ self.assertEqual(doc.page_count, 1)
+
+
+class TestMigrateDocumentPageCountBackwards(TestMigrations):
+ migrate_from = "1053_document_page_count"
+ migrate_to = "1052_document_transaction_id"
+
+ def setUpBeforeMigration(self, apps):
+ Document = apps.get_model("documents", "Document")
+ doc = Document.objects.create(
+ title="test1",
+ mime_type="application/pdf",
+ filename="file1.pdf",
+ page_count=8,
+ )
+ self.doc_id = doc.id
+
+ def test_remove_number_of_pages_to_page_count(self):
+ Document = self.apps.get_model("documents", "Document")
+ self.assertFalse(
+ "page_count" in [field.name for field in Document._meta.get_fields()],
+ )
diff --git a/src/documents/views.py b/src/documents/views.py
index a8a5bf97d..723eddd00 100644
--- a/src/documents/views.py
+++ b/src/documents/views.py
@@ -361,6 +361,7 @@ class DocumentViewSet(
"archive_serial_number",
"num_notes",
"owner",
+ "page_count",
)
def get_queryset(self):
diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py
index 4e92990f1..5731fe037 100644
--- a/src/paperless_tesseract/parsers.py
+++ b/src/paperless_tesseract/parsers.py
@@ -41,6 +41,15 @@ class RasterisedDocumentParser(DocumentParser):
"""
return OcrConfig()
+ def get_page_count(self, document_path, mime_type):
+ page_count = None
+ if mime_type == "application/pdf":
+ import pikepdf
+
+ with pikepdf.Pdf.open(document_path) as pdf:
+ page_count = len(pdf.pages)
+ return page_count
+
def extract_metadata(self, document_path, mime_type):
result = []
if mime_type == "application/pdf":
diff --git a/src/paperless_tesseract/tests/test_parser.py b/src/paperless_tesseract/tests/test_parser.py
index d63d965c5..45a5939ab 100644
--- a/src/paperless_tesseract/tests/test_parser.py
+++ b/src/paperless_tesseract/tests/test_parser.py
@@ -57,6 +57,30 @@ class TestParser(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
self.assertContainsStrings(text.strip(), ["This is a test document."])
+ def test_get_page_count(self):
+ """
+ GIVEN:
+ - PDF file with a single page
+ - PDF file with multiple pages
+ WHEN:
+ - The number of pages is requested
+ THEN:
+ - The method returns 1 as the expected number of pages
+ - The method returns the correct number of pages (6)
+ """
+ parser = RasterisedDocumentParser(uuid.uuid4())
+ page_count = parser.get_page_count(
+ os.path.join(self.SAMPLE_FILES, "simple-digital.pdf"),
+ "application/pdf",
+ )
+ self.assertEqual(page_count, 1)
+
+ page_count = parser.get_page_count(
+ os.path.join(self.SAMPLE_FILES, "multi-page-mixed.pdf"),
+ "application/pdf",
+ )
+ self.assertEqual(page_count, 6)
+
def test_thumbnail(self):
parser = RasterisedDocumentParser(uuid.uuid4())
thumb = parser.get_thumbnail(
From 5e687d9a930d5450a7eee9763f16e96885be26c1 Mon Sep 17 00:00:00 2001
From: shamoon <4887959+shamoon@users.noreply.github.com>
Date: Wed, 25 Sep 2024 08:57:20 -0700
Subject: [PATCH 3/4] Feature: auto-clean some invalid pdfs (#7651)
---
docs/advanced_usage.md | 5 +++
src/documents/consumer.py | 38 +++++++++++++++++++-
src/documents/serialisers.py | 15 ++++++--
src/documents/tests/samples/invalid_pdf.pdf | Bin 0 -> 215166 bytes
src/documents/tests/test_api_documents.py | 21 +++++++++++
src/documents/tests/test_consumer.py | 23 ++++++++++++
src/paperless/settings.py | 2 ++
7 files changed, 100 insertions(+), 4 deletions(-)
create mode 100644 src/documents/tests/samples/invalid_pdf.pdf
diff --git a/docs/advanced_usage.md b/docs/advanced_usage.md
index 30687680c..fe8d2e305 100644
--- a/docs/advanced_usage.md
+++ b/docs/advanced_usage.md
@@ -418,6 +418,11 @@ Insurances/ # Insurances
Defining a storage path is optional. If no storage path is defined for a
document, the global [`PAPERLESS_FILENAME_FORMAT`](configuration.md#PAPERLESS_FILENAME_FORMAT) is applied.
+## Automatic recovery of invalid PDFs {#pdf-recovery}
+
+Paperless will attempt to "clean" certain invalid PDFs with `qpdf` before processing if, for example, the mime_type
+detection is incorrect. This can happen if the PDF is not properly formatted or contains errors.
+
## Celery Monitoring {#celery-monitoring}
The monitoring tool
diff --git a/src/documents/consumer.py b/src/documents/consumer.py
index 57277e4a6..97910e24b 100644
--- a/src/documents/consumer.py
+++ b/src/documents/consumer.py
@@ -532,6 +532,7 @@ class ConsumerPlugin(
)
self.working_copy = Path(tempdir.name) / Path(self.filename)
copy_file_with_basic_stats(self.input_doc.original_file, self.working_copy)
+ self.unmodified_original = None
# Determine the parser class.
@@ -539,6 +540,37 @@ class ConsumerPlugin(
self.log.debug(f"Detected mime type: {mime_type}")
+ if (
+ Path(self.filename).suffix.lower() == ".pdf"
+ and mime_type in settings.CONSUMER_PDF_RECOVERABLE_MIME_TYPES
+ ):
+ try:
+ # The file might be a pdf, but the mime type is wrong.
+ # Try to clean with qpdf
+ self.log.debug(
+ "Detected possible PDF with wrong mime type, trying to clean with qpdf",
+ )
+ run_subprocess(
+ [
+ "qpdf",
+ "--replace-input",
+ self.working_copy,
+ ],
+ logger=self.log,
+ )
+ mime_type = magic.from_file(self.working_copy, mime=True)
+ self.log.debug(f"Detected mime type after qpdf: {mime_type}")
+ # Save the original file for later
+ self.unmodified_original = (
+ Path(tempdir.name) / Path("uo") / Path(self.filename)
+ )
+ copy_file_with_basic_stats(
+ self.input_doc.original_file,
+ self.unmodified_original,
+ )
+ except Exception as e:
+ self.log.error(f"Error attempting to clean PDF: {e}")
+
# Based on the mime type, get the parser for that type
parser_class: Optional[type[DocumentParser]] = (
get_parser_class_for_mime_type(
@@ -689,7 +721,9 @@ class ConsumerPlugin(
self._write(
document.storage_type,
- self.working_copy,
+ self.unmodified_original
+ if self.unmodified_original is not None
+ else self.working_copy,
document.source_path,
)
@@ -725,6 +759,8 @@ class ConsumerPlugin(
self.log.debug(f"Deleting file {self.working_copy}")
self.input_doc.original_file.unlink()
self.working_copy.unlink()
+ if self.unmodified_original is not None: # pragma: no cover
+ self.unmodified_original.unlink()
# https://github.com/jonaswinkler/paperless-ng/discussions/1037
shadow_file = os.path.join(
diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py
index 737d1256f..30f3dd26d 100644
--- a/src/documents/serialisers.py
+++ b/src/documents/serialisers.py
@@ -1389,9 +1389,18 @@ class PostDocumentSerializer(serializers.Serializer):
mime_type = magic.from_buffer(document_data, mime=True)
if not is_mime_type_supported(mime_type):
- raise serializers.ValidationError(
- _("File type %(type)s not supported") % {"type": mime_type},
- )
+ if (
+ mime_type in settings.CONSUMER_PDF_RECOVERABLE_MIME_TYPES
+ and document.name.endswith(
+ ".pdf",
+ )
+ ):
+ # If the file is an invalid PDF, we can try to recover it later in the consumer
+ mime_type = "application/pdf"
+ else:
+ raise serializers.ValidationError(
+ _("File type %(type)s not supported") % {"type": mime_type},
+ )
return document.name, document_data
diff --git a/src/documents/tests/samples/invalid_pdf.pdf b/src/documents/tests/samples/invalid_pdf.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f226c2d84d436707091d752d808d471bea6fc3f0
GIT binary patch
literal 215166
zcmeFYV|Zmv*De~{c2;cLX2-T|+qP|69jiOG&5qNtla7;}e%^O~``y=fu5-?>eg2%e
z=2aY3HR>KU?p3qqS}+AApkxZ7;&e>(Y%pX!k3}Ca9LxYlfW46w3@S&
z%hUwG^pyj!v2buP0~jO$+5jddE=~XwD;q!;z#tFcUE9!DS$yk$<*v?8m4yUE*1dxFHOZQZCp&9zG53g
z7gJGFV|$Y?sei=^hEBH5fWIJ!*xR_;+BpMQ0SpRGrY4rgF7{3UCg!i10T|T(BJnj{
zroS*q*_oJnd=-2__=U$m1!ndD&cAvn0T`6*?OgyItpCa=e_{HC9_K$@y8Qzc+kbD~Wvx}3dp)HI@
zj`PlK<}J{}Y@3H-!HGg8!ok!2Gj(|BD<9?aTp`rgl^S23bQVYbm?0#s1e{
z{${=i!^O$<%bEV=c>h)Z*Jl(A%}t#FT#WzrgfBT`7ZoQ{(|;U3C0v&LN@PmMW@9KcoNgPAaqEE)f0`gmg8UF7c@a5_MOCb?^I~P+s
z7iRzm$G@f_`^6WA!uEez;qQFezi8txgMM+t7r%T-{uc~Nrq1@RPR3ur{Dn}=!$m^b
z<%^U4$w{yPIRDKX5^Mm@zXK}$!#?6)!~G*6&I;iC3(ObIh_eGY|26nOSUcGpE1SA}
z4bSjJ^IzsL^>FzjD%&p;2>&}4`FAY!rPbdi%KsSTU+Ou3_4#iT{+@qsk^hoH{6Ksds$d_(Fo;mhl8AMNHaVZo7@Hi@LgMg5KlK0ACoctuDP142lM_2^xULK1FUQJIYZqEzZJ)WA+K
z*-Ro=x36CxTO!)tby9GOP$5F&Wr3p=_sill86tDYKpz(cVcOPdiX9Deqw7A$u#kx3
zUw3=h-H|-<4T2cH#3N9S)F{F+mkn@(B&1j5)L@E)&W^4Piu|-GMAJ~HAqQYe^G141iY8AkJO_d5dSPqK86GoO4W0Uh^7J7TPfo?uprn{X^mzHEiz%adf
zqw;gZVjzVim*~!pni}E+;d)I;oyYJ;2olYtg{*9)J(NDC;QZMbB-vPiQAH{j7)vw-=*A4b&qlmH5yTk
zgvSV?LffSr*biubp}Ck&p2dncr(UYq4Iq|CyDMP#S4VS5d0ey1_T431-%MtO)W@l9
zMc*O6MJVav)xSKMm_j3E?+7}N3E5;}=ygFFFkz}f88LFf
z0IRl{{`eloC4}TEOeQovg$}edScx`j3uozA)=0v>3B*=2xRfem3;X2iKv
zfGU);BShdXvQ0&L4<5)xj-pw*4_ZHZrb4t4e4kbK7AC-@%~H8aUrk~GQXN%
zt*_pU2cB2Eok>$7Z=-IZ5==kGjl=0+50ItG5}NgrA7FM+%><6QUMy}l<*$#r_CrCJ
zWErg_0Y;Fxz`jyFLRL=?428sNLZL)TkXO`~^@rTnu}9o*a-Xc;fxXHaFmY{^iBKPQ
zl4~|`xLKWoKxu2_15O$sM4Xu&aO(gnTLv(lkS31Dp!zQB2-As4G2>vYEw+Bmzo?~hiuwI
z7)03RCuBtoi^CmVaqW1Nmt0Lhmsv>`@Os(B9fdlf4J3vOh
z6i|h!%IX9Ax9cRrG1@q&Mu(Y*+Vg*0M2GaB-)~m#$!da&SQRZqyan@tB(`V
zIy!_(>xfrL2;{jh3nX$MxLWA_*43rDNo|MT7NtG(={yuZGQ{)#_?%pgxZOif+DWo-
z5Rxmfh&m-ce(#s0uKuZO?d5OetT
z>?;a~T6S@dUi^NHtEvC0fqf+S)Z=r4vl2O!-WpHr`B#S$M-812K>=9$0Y7~>GAZMnz9bU2~&`Y3lu+TSy)0)l%ni05KQ5G #KSAc*?
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 |