From 1514662b8dd859444608548021a882aca03c9244 Mon Sep 17 00:00:00 2001 From: grasdk <115414609+grasdk@users.noreply.github.com> Date: Sat, 30 Mar 2024 13:58:06 +0100 Subject: [PATCH] Feature/metadata sidecar reading cleanup (#13) * Removed the SideCar Type to make reading sidecar data just as generic as reading the embedded exif data * Moved metadata-mapping into separate function to prepare for reuse * Most sidecar metadata is now read with the same function as embedded metadata (for photos). Fixed a bug with rating: 0 being ignored * added new test for special chars and timezone * merge incoming changes * xmp rating fix - 0 is a value. prep for xmp timestamp handling * refactored mapping of metadata into smaller functions * consolidated GPS coordinate mapping * simplification of sidecar date reading logic * Moved date mapping code into one function - fixed testdata - did not yet resolve offset bug * CreationDateOffset is now mapped from Sidecar timestamps. Tests updated accordingly. Total: changed sidecar reading for video to shared reader and fixed tests accordingly (more data is read now) --- .gitignore | 1 + .../model/fileaccess/MetadataLoader.ts | 757 ++++++++---------- src/common/Utils.ts | 21 +- src/common/entities/MediaDTO.ts | 28 - test/backend/assets/Chars.json | 2 +- test/backend/assets/Chars_exiftool.json | 2 +- .../assets/sidecar/20240107_110258.json | 4 +- .../assets/sidecar/20240121_102400.json | 4 +- .../assets/sidecar/20240128_105420.json | 10 +- .../assets/sidecar/20240128_120909.json | 10 +- .../assets/sidecar/20240128_185808.json | 4 +- test/backend/assets/sidecar/Chars.jpg | Bin 0 -> 101948 bytes test/backend/assets/sidecar/Chars.jpg.xmp | 172 ++++ test/backend/assets/sidecar/Chars.json | 50 ++ .../backend/assets/sidecar/Chars_exiftool.jpg | Bin 0 -> 101948 bytes .../assets/sidecar/Chars_exiftool.jpg.xmp | 173 ++++ .../assets/sidecar/Chars_exiftool.json | 50 ++ test/backend/assets/sidecar/bunny_1sec.json | 1 + .../backend/assets/sidecar/bunny_1sec_v2.json | 1 + .../backend/assets/sidecar/bunny_1sec_v3.json | 1 + test/backend/assets/sidecar/metadata.json | 1 + test/backend/assets/sidecar/metadata_v2.json | 1 + test/backend/assets/sidecar/no_metadata.json | 1 + .../assets/sidecar/no_metadata_v2.json | 1 + .../assets/sidecar/no_metadata_v3.json | 1 + test/tmp/sqlite.db-journal | Bin 0 -> 8720 bytes 26 files changed, 833 insertions(+), 463 deletions(-) create mode 100644 test/backend/assets/sidecar/Chars.jpg create mode 100644 test/backend/assets/sidecar/Chars.jpg.xmp create mode 100644 test/backend/assets/sidecar/Chars.json create mode 100644 test/backend/assets/sidecar/Chars_exiftool.jpg create mode 100644 test/backend/assets/sidecar/Chars_exiftool.jpg.xmp create mode 100644 test/backend/assets/sidecar/Chars_exiftool.json create mode 100644 test/tmp/sqlite.db-journal diff --git a/.gitignore b/.gitignore index 6efad7e3..2e0fc4c6 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ test/e2e/**/*.js test/e2e/**/*.js.map test/*.js test/*.js.map +test/tmp/* benchmark/**/*.js benchmark/**/*.js.map gulpfile.js diff --git a/src/backend/model/fileaccess/MetadataLoader.ts b/src/backend/model/fileaccess/MetadataLoader.ts index e0fcb50f..58b027c8 100644 --- a/src/backend/model/fileaccess/MetadataLoader.ts +++ b/src/backend/model/fileaccess/MetadataLoader.ts @@ -1,7 +1,6 @@ import * as fs from 'fs'; import { imageSize } from 'image-size'; import { Config } from '../../../common/config/private/Config'; -import { SideCar } from '../../../common/entities/MediaDTO'; import { FaceRegion, PhotoMetadata } from '../../../common/entities/PhotoDTO'; import { VideoMetadata } from '../../../common/entities/VideoDTO'; import { Logger } from '../../Logger'; @@ -142,57 +141,9 @@ export class MetadataLoader { for (const sidecarPath of sidecarPaths) { if (fs.existsSync(sidecarPath)) { - const sidecarData = await exifr.sidecar(sidecarPath); + const sidecarData: any = await exifr.sidecar(sidecarPath); if (sidecarData !== undefined) { - if ((sidecarData as SideCar).dc !== undefined) { - if ((sidecarData as SideCar).dc.subject !== undefined) { - if (metadata.keywords === undefined) { - metadata.keywords = []; - } - let keywords = (sidecarData as SideCar).dc.subject || []; - if (typeof keywords === 'string') { - keywords = [keywords]; - } - for (const kw of keywords) { - if (metadata.keywords.indexOf(kw) === -1) { - metadata.keywords.push(kw); - } - } - } - } - let hasPhotoshopDate = false; - if ((sidecarData as SideCar).photoshop !== undefined) { - if ((sidecarData as SideCar).photoshop.DateCreated !== undefined) { - const date = Utils.timestampToMS((sidecarData as SideCar).photoshop.DateCreated, null); - if (date) { - metadata.creationDate = date; - hasPhotoshopDate = true; - } - } - } - if (Object.hasOwn(sidecarData, 'xap')) { - (sidecarData as any)['xmp'] = (sidecarData as any)['xap']; - delete (sidecarData as any)['xap']; - } - if ((sidecarData as SideCar).xmp !== undefined) { - if ( - (sidecarData as SideCar).xmp.Rating !== undefined && - (sidecarData as SideCar).xmp.Rating > 0 - ) { - metadata.rating = (sidecarData as SideCar).xmp.Rating; - } - if ( - !hasPhotoshopDate && ( - (sidecarData as SideCar).xmp.CreateDate !== undefined || - (sidecarData as SideCar).xmp.ModifyDate !== undefined - ) - ) { - metadata.creationDate = - Utils.timestampToMS((sidecarData as SideCar).xmp.CreateDate, null) || - Utils.timestampToMS((sidecarData as SideCar).xmp.ModifyDate, null) || - metadata.creationDate; - } - } + MetadataLoader.mapMetadata(metadata, sidecarData); } } } @@ -205,6 +156,7 @@ export class MetadataLoader { Logger.silly(LOG_TAG, 'Error loading metadata for : ' + fullPath); Logger.silly(err); } + return metadata; } @@ -235,14 +187,6 @@ export class MetadataLoader { translateValues: false, //don't translate orientation from numbers to strings etc. mergeOutput: false //don't merge output, because things like Microsoft Rating (percent) and xmp.rating will be merged }; - - //Function to convert html code for special characters into their corresponding character (used in exif.photoshop-section) - const unescape = (tag: string) => { - return tag.replace(/&#([0-9]{1,3});/gi, function (match, numStr) { - return String.fromCharCode(parseInt(numStr, 10)); - }); - } - try { let bufferSize = Config.Media.photoMetadataSize; try { @@ -254,6 +198,15 @@ export class MetadataLoader { } catch (err) { // ignoring errors } + try { + //read the actual image size, don't rely on tags for this + const info = imageSize(fullPath); + metadata.size = { width: info.width, height: info.height }; + } catch (e) { + //in case of failure, set dimensions to 0 so they may be read via tags + metadata.size = { width: 0, height: 0 }; + } + const data = Buffer.allocUnsafe(bufferSize); fileHandle = await fs.promises.open(fullPath, 'r'); @@ -267,14 +220,6 @@ export class MetadataLoader { await fileHandle.close(); } try { - try { - //read the actual image size, don't rely on tags for this - const info = imageSize(fullPath); - metadata.size = { width: info.width, height: info.height }; - } catch (e) { - //in case of failure, set dimensions to 0 so they may be read via tags - metadata.size = { width: 0, height: 0 }; - } try { //Parse iptc data using the IptcParser, which works correctly for both UTF-8 and ASCII @@ -316,298 +261,12 @@ export class MetadataLoader { } try { - let orientation = 1; //Orientation 1 is normal const exif = await exifr.parse(data, exifrOptions); - //exif is structured in sections, we read the data by section - - //dc-section (subject is the only tag we want from dc) - if (exif.dc && - exif.dc.subject && - exif.dc.subject.length > 0) { - const subj = Array.isArray(exif.dc.subject) ? exif.dc.subject : [exif.dc.subject]; - if (metadata.keywords === undefined) { - metadata.keywords = []; - } - for (const kw of subj) { - if (metadata.keywords.indexOf(kw) === -1) { - metadata.keywords.push(kw); - } - } - } - - //ifd0 section - if (exif.ifd0) { - if (exif.ifd0.ImageWidth && metadata.size.width <= 0) { - metadata.size.width = exif.ifd0.ImageWidth; - } - if (exif.ifd0.ImageHeight && metadata.size.height <= 0) { - metadata.size.height = exif.ifd0.ImageHeight; - } - if (exif.ifd0.Orientation) { - orientation = parseInt( - exif.ifd0.Orientation as any, - 10 - ) as number; - } - if (exif.ifd0.Make && exif.ifd0.Make !== '') { - metadata.cameraData = metadata.cameraData || {}; - metadata.cameraData.make = '' + exif.ifd0.Make; - } - if (exif.ifd0.Model && exif.ifd0.Model !== '') { - metadata.cameraData = metadata.cameraData || {}; - metadata.cameraData.model = '' + exif.ifd0.Model; - } - //if (exif.ifd0.ModifyDate) {} //Deferred to the exif-section where the other timestamps are - } - - //exif section starting with the date sectino - if (exif.exif) { - //Preceedence of dates: exif.DateTimeOriginal, exif.CreateDate, ifd0.ModifyDate, ihdr["Creation Time"], xmp.MetadataDate, file system date - //Filesystem is the absolute last resort, and it's hard to write tests for, since file system dates are changed on e.g. git clone. - if (exif.exif.DateTimeOriginal) { - //DateTimeOriginal is when the camera shutter closed - let offset = exif.exif.OffsetTimeOriginal; //OffsetTimeOriginal is the corresponding offset - if (!offset) { //Find offset among other options if possible - offset = exif.exif.OffsetTimeDigitized || exif.exif.OffsetTime || Utils.getTimeOffsetByGPSStamp(exif.exif.DateTimeOriginal, exif.exif.GPSTimeStamp, exif.gps); - } - metadata.creationDate = Utils.timestampToMS(exif.exif.DateTimeOriginal, offset); - metadata.creationDateOffset = offset; - } else if (exif.exif.CreateDate) { //using else if here, because DateTimeOriginal has preceedence - //Create is when the camera wrote the file (typically within the same ms as shutter close) - let offset = exif.exif.OffsetTimeDigitized; //OffsetTimeDigitized is the corresponding offset - if (!offset) { //Find offset among other options if possible - offset = exif.exif.OffsetTimeOriginal || exif.exif.OffsetTime || Utils.getTimeOffsetByGPSStamp(exif.exif.DateTimeOriginal, exif.exif.GPSTimeStamp, exif.gps); - } - metadata.creationDate = Utils.timestampToMS(exif.exif.CreateDate, offset); - metadata.creationDateOffset = offset; - } else if (exif.ifd0?.ModifyDate) { //using else if here, because DateTimeOriginal and CreatDate have preceedence - let offset = exif.exif.OffsetTime; //exif.Offsettime is the offset corresponding to ifd0.ModifyDate - if (!offset) { //Find offset among other options if possible - offset = exif.exif.DateTimeOriginal || exif.exif.OffsetTimeDigitized || Utils.getTimeOffsetByGPSStamp(exif.ifd0.ModifyDate, exif.exif.GPSTimeStamp, exif.gps); - } - metadata.creationDate = Utils.timestampToMS(exif.ifd0.ModifyDate, offset); - metadata.creationDateOffset = offset - } else if (exif.ihdr && exif.ihdr["Creation Time"]) {// again else if (another fallback date if the good ones aren't there) { - const any_offset = exif.exif.DateTimeOriginal || exif.exif.OffsetTimeDigitized || exif.exif.OffsetTime || Utils.getTimeOffsetByGPSStamp(exif.ifd0.ModifyDate, exif.exif.GPSTimeStamp, exif.gps); - metadata.creationDate = Utils.timestampToMS(exif.ihdr["Creation Time"], any_offset); - metadata.creationDateOffset = any_offset; - } else if (exif.xmp?.MetadataDate) {// again else if (another fallback date if the good ones aren't there - metadata date is probably later than actual creation date, but much better than file time) { - const any_offset = exif.exif.DateTimeOriginal || exif.exif.OffsetTimeDigitized || exif.exif.OffsetTime || Utils.getTimeOffsetByGPSStamp(exif.ifd0.ModifyDate, exif.exif.GPSTimeStamp, exif.gps); - metadata.creationDate = Utils.timestampToMS(exif.xmp.MetadataDate, any_offset); - metadata.creationDateOffset = any_offset; - } - if (exif.exif.LensModel && exif.exif.LensModel !== '') { - metadata.cameraData = metadata.cameraData || {}; - metadata.cameraData.lens = '' + exif.exif.LensModel; - } - if (Utils.isUInt32(exif.exif.ISO)) { - metadata.cameraData = metadata.cameraData || {}; - metadata.cameraData.ISO = parseInt('' + exif.exif.ISO, 10); - } - if (Utils.isFloat32(exif.exif.FocalLength)) { - metadata.cameraData = metadata.cameraData || {}; - metadata.cameraData.focalLength = parseFloat( - '' + exif.exif.FocalLength - ); - } - if (Utils.isFloat32(exif.exif.ExposureTime)) { - metadata.cameraData = metadata.cameraData || {}; - metadata.cameraData.exposure = parseFloat( - parseFloat('' + exif.exif.ExposureTime).toFixed(6) - ); - } - if (Utils.isFloat32(exif.exif.FNumber)) { - metadata.cameraData = metadata.cameraData || {}; - metadata.cameraData.fStop = parseFloat( - parseFloat('' + exif.exif.FNumber).toFixed(2) - ); - } - if (exif.exif.ExifImageWidth && metadata.size.width <= 0) { - metadata.size.width = exif.exif.ExifImageWidth; - } - if (exif.exif.ExifImageHeight && metadata.size.height <= 0) { - metadata.size.height = exif.exif.ExifImageHeight; - } - } - - //gps section - if (exif.gps) { - metadata.positionData = metadata.positionData || {}; - metadata.positionData.GPSData = metadata.positionData.GPSData || {}; - - if (Utils.isFloat32(exif.gps.longitude)) { - metadata.positionData.GPSData.longitude = parseFloat( - exif.gps.longitude.toFixed(6) - ); - } - if (Utils.isFloat32(exif.gps.latitude)) { - metadata.positionData.GPSData.latitude = parseFloat( - exif.gps.latitude.toFixed(6) - ); - } - - if (metadata.positionData) { - if (!metadata.positionData.GPSData || - Object.keys(metadata.positionData.GPSData).length === 0) { - metadata.positionData.GPSData = undefined; - metadata.positionData = undefined; - } - } - } - //photoshop section (sometimes has City, Country and State) - if (exif.photoshop) { - if (!metadata.positionData?.country && exif.photoshop.Country) { - metadata.positionData = metadata.positionData || {}; - metadata.positionData.country = unescape(exif.photoshop.Country); - } - if (!metadata.positionData?.state && exif.photoshop.State) { - metadata.positionData = metadata.positionData || {}; - metadata.positionData.state = unescape(exif.photoshop.State); - } - if (!metadata.positionData?.city && exif.photoshop.City) { - metadata.positionData = metadata.positionData || {}; - metadata.positionData.city = unescape(exif.photoshop.City); - } - } - - /////////////////////////////////////// - metadata.size.height = Math.max(metadata.size.height, 1); //ensure height dimension is positive - metadata.size.width = Math.max(metadata.size.width, 1); //ensure width dimension is positive - - //Before moving on to the XMP section (particularly the regions (mwg-rs)) - //we need to switch width and height for images that are rotated sideways - if (4 < orientation) { //Orientation is sideways (rotated 90% or 270%) - // noinspection JSSuspiciousNameCombination - const height = metadata.size.width; - // noinspection JSSuspiciousNameCombination - metadata.size.width = metadata.size.height; - metadata.size.height = height; - } - /////////////////////////////////////// - - //xmp section - if (exif.xmp && exif.xmp.Rating) { - metadata.rating = exif.xmp.Rating; - if (metadata.rating < 0) { - metadata.rating = 0; - } - } - //xmp."mwg-rs" section - if (Config.Faces.enabled && - exif["mwg-rs"] && - exif["mwg-rs"].Regions) { - const faces: FaceRegion[] = []; - const regionListVal = Array.isArray(exif["mwg-rs"].Regions.RegionList) ? exif["mwg-rs"].Regions.RegionList : [exif["mwg-rs"].Regions.RegionList]; - if (regionListVal) { - for (const regionRoot of regionListVal) { - let type; - let name; - let box; - const createFaceBox = ( - w: string, - h: string, - x: string, - y: string - ) => { - if (4 < orientation) { //roation is sidewards (90 or 270 degrees) - [x, y] = [y, x]; - [w, h] = [h, w]; - } - let swapX = 0; - let swapY = 0; - switch (orientation) { - case 2: //TOP RIGHT (Mirror horizontal): - case 6: //RIGHT TOP (Rotate 90 CW) - swapX = 1; - break; - case 3: // BOTTOM RIGHT (Rotate 180) - case 7: // RIGHT BOTTOM (Mirror horizontal and rotate 90 CW) - swapX = 1; - swapY = 1; - break; - case 4: //BOTTOM_LEFT (Mirror vertical) - case 8: //LEFT_BOTTOM (Rotate 270 CW) - swapY = 1; - break; - } - // converting ratio to px - return { - width: Math.round(parseFloat(w) * metadata.size.width), - height: Math.round(parseFloat(h) * metadata.size.height), - left: Math.round(Math.abs(parseFloat(x) - swapX) * metadata.size.width), - top: Math.round(Math.abs(parseFloat(y) - swapY) * metadata.size.height), - }; - }; - /* Adobe Lightroom based face region structure */ - if ( - regionRoot && - regionRoot['rdf:Description'] && - regionRoot['rdf:Description'] && - regionRoot['rdf:Description']['mwg-rs:Area'] - ) { - const region = regionRoot['rdf:Description']; - const regionBox = region['mwg-rs:Area'].attributes; - - name = region['mwg-rs:Name']; - type = region['mwg-rs:Type']; - box = createFaceBox( - regionBox['stArea:w'], - regionBox['stArea:h'], - regionBox['stArea:x'], - regionBox['stArea:y'] - ); - /* Load exiftool edited face region structure, see github issue #191 */ - } else if ( - regionRoot && - regionRoot.Name && - regionRoot.Type && - regionRoot.Area - ) { - const regionBox = regionRoot.Area; - name = regionRoot.Name; - type = regionRoot.Type; - box = createFaceBox( - regionBox.w, - regionBox.h, - regionBox.x, - regionBox.y - ); - } - - if (type !== 'Face' || !name) { - continue; - } - - // convert center base box to corner based box - box.left = Math.round(Math.max(0, box.left - box.width / 2)); - box.top = Math.round(Math.max(0, box.top - box.height / 2)); - - - faces.push({ name, box }); - } - } - if (faces.length > 0) { - metadata.faces = faces; // save faces - if (Config.Faces.keywordsToPersons) { - // remove faces from keywords - metadata.faces.forEach((f) => { - const index = metadata.keywords.indexOf(f.name); - if (index !== -1) { - metadata.keywords.splice(index, 1); - } - }); - } - } - } + MetadataLoader.mapMetadata(metadata, exif); } catch (err) { // ignoring errors } - if (!metadata.creationDate) { - // creationDate can be negative, when it was created before epoch (1970) - metadata.creationDate = 0; - } - try { // search for sidecar and merge metadata const fullPathWithoutExt = path.join(path.parse(fullPath).dir, path.parse(fullPath).name); @@ -620,74 +279,9 @@ export class MetadataLoader { for (const sidecarPath of sidecarPaths) { if (fs.existsSync(sidecarPath)) { - const sidecarData = await exifr.sidecar(sidecarPath); - + const sidecarData: any = await exifr.sidecar(sidecarPath, exifrOptions); if (sidecarData !== undefined) { - if ((sidecarData as SideCar).dc !== undefined) { - if ((sidecarData as SideCar).dc.subject !== undefined) { - if (metadata.keywords === undefined) { - metadata.keywords = []; - } - let keywords = (sidecarData as SideCar).dc.subject || []; - if (typeof keywords === 'string') { - keywords = [keywords]; - } - for (const kw of keywords) { - if (metadata.keywords.indexOf(kw) === -1) { - metadata.keywords.push(kw); - } - } - } - } - let hasPhotoshopDate = false; - if ((sidecarData as SideCar).photoshop !== undefined) { - if ((sidecarData as SideCar).photoshop.DateCreated !== undefined) { - const date = Utils.timestampToMS((sidecarData as SideCar).photoshop.DateCreated, null); - if (date) { - metadata.creationDate = date; - hasPhotoshopDate = true; - } - } - } - if (Object.hasOwn(sidecarData, 'xap')) { - (sidecarData as any)['xmp'] = (sidecarData as any)['xap']; - delete (sidecarData as any)['xap']; - } - if ((sidecarData as SideCar).xmp !== undefined) { - if ( - (sidecarData as SideCar).xmp.Rating !== undefined && - (sidecarData as SideCar).xmp.Rating > 0 - ) { - metadata.rating = (sidecarData as SideCar).xmp.Rating; - } - if ( - !hasPhotoshopDate && ( - (sidecarData as SideCar).xmp.CreateDate !== undefined || - (sidecarData as SideCar).xmp.ModifyDate !== undefined - ) - ) { - metadata.creationDate = - Utils.timestampToMS((sidecarData as SideCar).xmp.CreateDate, null) || - Utils.timestampToMS((sidecarData as SideCar).xmp.ModifyDate, null) || - metadata.creationDate; - } - } - if ((sidecarData as SideCar).exif !== undefined) { - if ( - (sidecarData as SideCar).exif.GPSLatitude !== undefined && - (sidecarData as SideCar).exif.GPSLongitude !== undefined - ) { - metadata.positionData = metadata.positionData || {}; - metadata.positionData.GPSData = {}; - - metadata.positionData.GPSData.longitude = Utils.xmpExifGpsCoordinateToDecimalDegrees( - (sidecarData as SideCar).exif.GPSLongitude - ); - metadata.positionData.GPSData.latitude = Utils.xmpExifGpsCoordinateToDecimalDegrees( - (sidecarData as SideCar).exif.GPSLatitude - ); - } - } + MetadataLoader.mapMetadata(metadata, sidecarData); } } } @@ -695,7 +289,10 @@ export class MetadataLoader { Logger.silly(LOG_TAG, 'Error loading sidecar metadata for : ' + fullPath); Logger.silly(err); } - + if (!metadata.creationDate) { + // creationDate can be negative, when it was created before epoch (1970) + metadata.creationDate = 0; + } } catch (err) { Logger.error(LOG_TAG, 'Error during reading photo: ' + fullPath); console.error(err); @@ -708,4 +305,320 @@ export class MetadataLoader { } return metadata; } + + private static mapMetadata(metadata: PhotoMetadata, exif: any) { + //replace adobe xap-section with xmp to reuse parsing + if (Object.hasOwn(exif, 'xap')) { + exif['xmp'] = exif['xap']; + delete exif['xap']; + } + let orientation = MetadataLoader.getOrientation(exif); + MetadataLoader.mapImageDimensions(metadata, exif, orientation); + MetadataLoader.mapKeywords(metadata, exif); + MetadataLoader.mapTimestampAndOffset(metadata, exif); + MetadataLoader.mapCameraData(metadata, exif); + MetadataLoader.mapGPS(metadata, exif); + MetadataLoader.mapToponyms(metadata, exif); + MetadataLoader.mapRating(metadata, exif); + if (Config.Faces.enabled) { + MetadataLoader.mapFaces(metadata, exif, orientation); + } + + } + private static getOrientation(exif: any): number { + let orientation = 1; //Orientation 1 is normal + if (exif.ifd0?.Orientation != undefined) { + orientation = parseInt(exif.ifd0.Orientation as any, 10) as number; + } + return orientation; + } + + private static mapImageDimensions(metadata: PhotoMetadata, exif: any, orientation: number) { + if (metadata.size.width <= 0) { + metadata.size.width = exif.ifd0?.ImageWidth || exif.exif?.ExifImageWidth; + } + if (metadata.size.height <= 0) { + metadata.size.height = exif.ifd0?.ImageHeight || exif.exif?.ExifImageHeight; + } + metadata.size.height = Math.max(metadata.size.height, 1); //ensure height dimension is positive + metadata.size.width = Math.max(metadata.size.width, 1); //ensure width dimension is positive + + //we need to switch width and height for images that are rotated sideways + if (4 < orientation) { //Orientation is sideways (rotated 90% or 270%) + // noinspection JSSuspiciousNameCombination + const height = metadata.size.width; + // noinspection JSSuspiciousNameCombination + metadata.size.width = metadata.size.height; + metadata.size.height = height; + } + } + + private static mapKeywords(metadata: PhotoMetadata, exif: any) { + if (exif.dc && + exif.dc.subject && + exif.dc.subject.length > 0) { + const subj = Array.isArray(exif.dc.subject) ? exif.dc.subject : [exif.dc.subject]; + if (metadata.keywords === undefined) { + metadata.keywords = []; + } + for (const kw of subj) { + if (metadata.keywords.indexOf(kw) === -1) { + metadata.keywords.push(kw); + } + } + } + } + + private static mapTimestampAndOffset(metadata: PhotoMetadata, exif: any) { + metadata.creationDate = Utils.timestampToMS(exif?.photoshop?.DateCreated, null) || + Utils.timestampToMS(exif?.xmp?.CreateDate, null) || + Utils.timestampToMS(exif?.xmp?.ModifyDate, null) || + metadata.creationDate; + + metadata.creationDateOffset = Utils.timestampToOffsetString(exif?.photoshop?.DateCreated) || + Utils.timestampToOffsetString(exif?.xmp?.CreateDate) || + metadata.creationDateOffset; + if (exif.exif) { + let offset = undefined; + //Preceedence of dates: exif.DateTimeOriginal, exif.CreateDate, ifd0.ModifyDate, ihdr["Creation Time"], xmp.MetadataDate, file system date + //Filesystem is the absolute last resort, and it's hard to write tests for, since file system dates are changed on e.g. git clone. + if (exif.exif.DateTimeOriginal) { + //DateTimeOriginal is when the camera shutter closed + offset = exif.exif.OffsetTimeOriginal; //OffsetTimeOriginal is the corresponding offset + if (!offset) { //Find offset among other options if possible + offset = exif.exif.OffsetTimeDigitized || exif.exif.OffsetTime || Utils.getTimeOffsetByGPSStamp(exif.exif.DateTimeOriginal, exif.exif.GPSTimeStamp, exif.gps); + } + metadata.creationDate = Utils.timestampToMS(exif.exif.DateTimeOriginal, offset); + } else if (exif.exif.CreateDate) { //using else if here, because DateTimeOriginal has preceedence + //Create is when the camera wrote the file (typically within the same ms as shutter close) + offset = exif.exif.OffsetTimeDigitized; //OffsetTimeDigitized is the corresponding offset + if (!offset) { //Find offset among other options if possible + offset = exif.exif.OffsetTimeOriginal || exif.exif.OffsetTime || Utils.getTimeOffsetByGPSStamp(exif.exif.DateTimeOriginal, exif.exif.GPSTimeStamp, exif.gps); + } + metadata.creationDate = Utils.timestampToMS(exif.exif.CreateDate, offset); + } else if (exif.ifd0?.ModifyDate) { //using else if here, because DateTimeOriginal and CreatDate have preceedence + offset = exif.exif.OffsetTime; //exif.Offsettime is the offset corresponding to ifd0.ModifyDate + if (!offset) { //Find offset among other options if possible + offset = exif.exif.DateTimeOriginal || exif.exif.OffsetTimeDigitized || Utils.getTimeOffsetByGPSStamp(exif.ifd0.ModifyDate, exif.exif.GPSTimeStamp, exif.gps); + } + metadata.creationDate = Utils.timestampToMS(exif.ifd0.ModifyDate, offset); + } else if (exif.ihdr && exif.ihdr["Creation Time"]) {// again else if (another fallback date if the good ones aren't there) { + const any_offset = exif.exif.DateTimeOriginal || exif.exif.OffsetTimeDigitized || exif.exif.OffsetTime || Utils.getTimeOffsetByGPSStamp(exif.ifd0.ModifyDate, exif.exif.GPSTimeStamp, exif.gps); + metadata.creationDate = Utils.timestampToMS(exif.ihdr["Creation Time"], any_offset); + offset = any_offset; + } else if (exif.xmp?.MetadataDate) {// again else if (another fallback date if the good ones aren't there - metadata date is probably later than actual creation date, but much better than file time) { + const any_offset = exif.exif.DateTimeOriginal || exif.exif.OffsetTimeDigitized || exif.exif.OffsetTime || Utils.getTimeOffsetByGPSStamp(exif.ifd0.ModifyDate, exif.exif.GPSTimeStamp, exif.gps); + metadata.creationDate = Utils.timestampToMS(exif.xmp.MetadataDate, any_offset); + offset = any_offset; + } + metadata.creationDateOffset = offset || metadata.creationDateOffset; + } + } + + private static mapCameraData(metadata: PhotoMetadata, exif: any) { + metadata.cameraData = metadata.cameraData || {}; + if (exif.ifd0) { + if (exif.ifd0.Make && exif.ifd0.Make !== '') { + metadata.cameraData.make = '' + exif.ifd0.Make; + } + if (exif.ifd0.Model && exif.ifd0.Model !== '') { + metadata.cameraData.model = '' + exif.ifd0.Model; + } + } + if (exif.exif) { + if (exif.exif.LensModel && exif.exif.LensModel !== '') { + metadata.cameraData.lens = '' + exif.exif.LensModel; + } + if (Utils.isUInt32(exif.exif.ISO)) { + metadata.cameraData.ISO = parseInt('' + exif.exif.ISO, 10); + } + if (Utils.isFloat32(exif.exif.FocalLength)) { + metadata.cameraData.focalLength = parseFloat( + '' + exif.exif.FocalLength + ); + } + if (Utils.isFloat32(exif.exif.ExposureTime)) { + metadata.cameraData.exposure = parseFloat( + parseFloat('' + exif.exif.ExposureTime).toFixed(6) + ); + } + if (Utils.isFloat32(exif.exif.FNumber)) { + metadata.cameraData.fStop = parseFloat( + parseFloat('' + exif.exif.FNumber).toFixed(2) + ); + } + } + if (Object.keys(metadata.cameraData).length === 0) { + delete metadata.cameraData; + } + } + + private static mapGPS(metadata: PhotoMetadata, exif: any) { + try { + if (exif.gps || (exif.exif && exif.exif.GPSLatitude && exif.exif.GPSLongitude)) { + metadata.positionData = metadata.positionData || {}; + metadata.positionData.GPSData = metadata.positionData.GPSData || {}; + + metadata.positionData.GPSData.longitude = Utils.isFloat32(exif.gps?.longitude) ? exif.gps.longitude : Utils.xmpExifGpsCoordinateToDecimalDegrees(exif.exif.GPSLongitude); + metadata.positionData.GPSData.latitude = Utils.isFloat32(exif.gps?.latitude) ? exif.gps.latitude : Utils.xmpExifGpsCoordinateToDecimalDegrees(exif.exif.GPSLatitude); + + metadata.positionData.GPSData.longitude = parseFloat(metadata.positionData.GPSData.longitude.toFixed(6)) + metadata.positionData.GPSData.latitude = parseFloat(metadata.positionData.GPSData.latitude.toFixed(6)) + } + } catch (err) { + Logger.error(LOG_TAG, 'Error during reading of GPS data: ' + err); + } finally { + if (metadata.positionData?.GPSData && + (Object.keys(metadata.positionData.GPSData).length === 0 || + metadata.positionData.GPSData.longitude === undefined || + metadata.positionData.GPSData.latitude === undefined)) { + delete metadata.positionData.GPSData; + } + if (metadata.positionData) { + if (Object.keys(metadata.positionData).length === 0) { + delete metadata.positionData; + } + } + } + } + + private static mapToponyms(metadata: PhotoMetadata, exif: any) { + //Function to convert html code for special characters into their corresponding character (used in exif.photoshop-section) + const unescape = (tag: string) => { + return tag.replace(/&#([0-9]{1,3});/gi, function (match, numStr) { + return String.fromCharCode(parseInt(numStr, 10)); + }); + } + //photoshop section sometimes has City, Country and State + if (exif.photoshop) { + if (!metadata.positionData?.country && exif.photoshop.Country) { + metadata.positionData = metadata.positionData || {}; + metadata.positionData.country = unescape(exif.photoshop.Country); + } + if (!metadata.positionData?.state && exif.photoshop.State) { + metadata.positionData = metadata.positionData || {}; + metadata.positionData.state = unescape(exif.photoshop.State); + } + if (!metadata.positionData?.city && exif.photoshop.City) { + metadata.positionData = metadata.positionData || {}; + metadata.positionData.city = unescape(exif.photoshop.City); + } + } + } + + private static mapRating(metadata: PhotoMetadata, exif: any) { + if (exif.xmp && + exif.xmp.Rating !== undefined) { + metadata.rating = exif.xmp.Rating; + } + } + + private static mapFaces(metadata: PhotoMetadata, exif: any, orientation: number) { + //xmp."mwg-rs" section + if (exif["mwg-rs"] && + exif["mwg-rs"].Regions) { + const faces: FaceRegion[] = []; + const regionListVal = Array.isArray(exif["mwg-rs"].Regions.RegionList) ? exif["mwg-rs"].Regions.RegionList : [exif["mwg-rs"].Regions.RegionList]; + if (regionListVal) { + for (const regionRoot of regionListVal) { + let type; + let name; + let box; + const createFaceBox = ( + w: string, + h: string, + x: string, + y: string + ) => { + if (4 < orientation) { //roation is sidewards (90 or 270 degrees) + [x, y] = [y, x]; + [w, h] = [h, w]; + } + let swapX = 0; + let swapY = 0; + switch (orientation) { + case 2: //TOP RIGHT (Mirror horizontal): + case 6: //RIGHT TOP (Rotate 90 CW) + swapX = 1; + break; + case 3: // BOTTOM RIGHT (Rotate 180) + case 7: // RIGHT BOTTOM (Mirror horizontal and rotate 90 CW) + swapX = 1; + swapY = 1; + break; + case 4: //BOTTOM_LEFT (Mirror vertical) + case 8: //LEFT_BOTTOM (Rotate 270 CW) + swapY = 1; + break; + } + // converting ratio to px + return { + width: Math.round(parseFloat(w) * metadata.size.width), + height: Math.round(parseFloat(h) * metadata.size.height), + left: Math.round(Math.abs(parseFloat(x) - swapX) * metadata.size.width), + top: Math.round(Math.abs(parseFloat(y) - swapY) * metadata.size.height), + }; + }; + /* Adobe Lightroom based face region structure */ + if ( + regionRoot && + regionRoot['rdf:Description'] && + regionRoot['rdf:Description'] && + regionRoot['rdf:Description']['mwg-rs:Area'] + ) { + const region = regionRoot['rdf:Description']; + const regionBox = region['mwg-rs:Area'].attributes; + + name = region['mwg-rs:Name']; + type = region['mwg-rs:Type']; + box = createFaceBox( + regionBox['stArea:w'], + regionBox['stArea:h'], + regionBox['stArea:x'], + regionBox['stArea:y'] + ); + /* Load exiftool edited face region structure, see github issue #191 */ + } else if ( + regionRoot && + regionRoot.Name && + regionRoot.Type && + regionRoot.Area + ) { + const regionBox = regionRoot.Area; + name = regionRoot.Name; + type = regionRoot.Type; + box = createFaceBox( + regionBox.w, + regionBox.h, + regionBox.x, + regionBox.y + ); + } + + if (type !== 'Face' || !name) { + continue; + } + + // convert center base box to corner based box + box.left = Math.round(Math.max(0, box.left - box.width / 2)); + box.top = Math.round(Math.max(0, box.top - box.height / 2)); + + + faces.push({ name, box }); + } + } + if (faces.length > 0) { + metadata.faces = faces; // save faces + if (Config.Faces.keywordsToPersons) { + // remove faces from keywords + metadata.faces.forEach((f) => { + const index = metadata.keywords.indexOf(f.name); + if (index !== -1) { + metadata.keywords.splice(index, 1); + } + }); + } + } + } + } } diff --git a/src/common/Utils.ts b/src/common/Utils.ts index 710a43f8..44604e75 100644 --- a/src/common/Utils.ts +++ b/src/common/Utils.ts @@ -141,6 +141,22 @@ export class Utils { return Date.parse(formattedTimestamp); } + //function to extract offset string from timestamp string, returns undefined if timestamp does not contain offset + static timestampToOffsetString(timestamp: string) { + try { + const idx = timestamp.indexOf("+"); + if (idx > 0) { + return timestamp.substring(idx, timestamp.length); + } + if (timestamp.indexOf("Z") > 0) { + return '+00:00'; + } + return undefined; + } catch (err) { + return undefined; + } + } + //function to calculate offset from exif.exif.gpsTimeStamp or exif.gps.GPSDateStamp + exif.gps.GPSTimestamp static getTimeOffsetByGPSStamp(timestamp: string, gpsTimeStamp: string, gps: any) { let UTCTimestamp = gpsTimeStamp; @@ -383,11 +399,14 @@ export class Utils { } public static xmpExifGpsCoordinateToDecimalDegrees(text: string): number { + if (!text) { + return undefined; + } const parts = text.match(/^([0-9]+),([0-9.]+)([EWNS])$/); const degrees: number = parseInt(parts[1], 10); const minutes: number = parseFloat(parts[2]); const sign = (parts[3] === "N" || parts[3] === "E") ? 1 : -1; - return sign * (degrees + (minutes / 60.0)) + return (sign * (degrees + (minutes / 60.0))) } } diff --git a/src/common/entities/MediaDTO.ts b/src/common/entities/MediaDTO.ts index 05acc4ce..92807a39 100644 --- a/src/common/entities/MediaDTO.ts +++ b/src/common/entities/MediaDTO.ts @@ -29,34 +29,6 @@ export interface MediaDimension { height: number; } -export interface SideCar { - exif?: SideCarExif; - dc?: SideCarDc; - xmp?: SideCarXmp; - photoshop?: SideCarPhotoshop; -} - -export interface SideCarExif { - GPSLatitude?: string; - GPSLongitude?: string; -} - -export interface SideCarDc { - subject?: string[]; -} - -export interface SideCarXmp { - Rating?: RatingTypes; - CreateDate?: string; - ModifyDate?: string; -} - -export interface SideCarPhotoshop { - // Corresponds to Exif.Photo.DateTimeOriginal. No corresponding key exists in - // the xmp namespace! - DateCreated?: string; -} - export const MediaDTOUtils = { hasPositionData: (media: MediaDTO): boolean => { return ( diff --git a/test/backend/assets/Chars.json b/test/backend/assets/Chars.json index 83bec784..03352e6c 100644 --- a/test/backend/assets/Chars.json +++ b/test/backend/assets/Chars.json @@ -17,7 +17,7 @@ }, "keywords": [ ], - "rating": 0, + "rating": -1, "faces": [ { "box": { diff --git a/test/backend/assets/Chars_exiftool.json b/test/backend/assets/Chars_exiftool.json index 4c09dfec..7f57c2f2 100644 --- a/test/backend/assets/Chars_exiftool.json +++ b/test/backend/assets/Chars_exiftool.json @@ -16,7 +16,7 @@ }, "keywords": [ ], - "rating": 0, + "rating": -1, "faces": [ { "box": { diff --git a/test/backend/assets/sidecar/20240107_110258.json b/test/backend/assets/sidecar/20240107_110258.json index a466e4f9..0bece513 100644 --- a/test/backend/assets/sidecar/20240107_110258.json +++ b/test/backend/assets/sidecar/20240107_110258.json @@ -20,8 +20,8 @@ ], "positionData": { "GPSData": { - "latitude": 50.08958748333333, - "longitude": 14.397409516666666 + "latitude": 50.089587, + "longitude": 14.39741 } }, "rating": 3 diff --git a/test/backend/assets/sidecar/20240121_102400.json b/test/backend/assets/sidecar/20240121_102400.json index 551b7d9a..58c49509 100644 --- a/test/backend/assets/sidecar/20240121_102400.json +++ b/test/backend/assets/sidecar/20240121_102400.json @@ -21,8 +21,8 @@ ], "positionData": { "GPSData": { - "latitude": 50.08958748333333, - "longitude": 14.397409516666666 + "latitude": 50.089587, + "longitude": 14.39741 } }, "rating": 3 diff --git a/test/backend/assets/sidecar/20240128_105420.json b/test/backend/assets/sidecar/20240128_105420.json index 40587ac4..de4bde68 100644 --- a/test/backend/assets/sidecar/20240128_105420.json +++ b/test/backend/assets/sidecar/20240128_105420.json @@ -11,5 +11,11 @@ "keywords": [ "Travel" ], - "rating": 3 -} + "rating": 3, + "positionData": { + "GPSData": { + "latitude": 50.089587, + "longitude": 14.39741 + } + } +} \ No newline at end of file diff --git a/test/backend/assets/sidecar/20240128_120909.json b/test/backend/assets/sidecar/20240128_120909.json index c8e2ddd0..22ee4209 100644 --- a/test/backend/assets/sidecar/20240128_120909.json +++ b/test/backend/assets/sidecar/20240128_120909.json @@ -11,5 +11,11 @@ "keywords": [ "Travel" ], - "rating": 3 -} + "rating": 3, + "positionData": { + "GPSData": { + "latitude": 50.089587, + "longitude": 14.39741 + } + } +} \ No newline at end of file diff --git a/test/backend/assets/sidecar/20240128_185808.json b/test/backend/assets/sidecar/20240128_185808.json index 9d53fca1..e9defe72 100644 --- a/test/backend/assets/sidecar/20240128_185808.json +++ b/test/backend/assets/sidecar/20240128_185808.json @@ -21,8 +21,8 @@ ], "positionData": { "GPSData": { - "latitude": 50.08958748333333, - "longitude": 14.397409516666666 + "latitude": 50.089587, + "longitude": 14.39741 } }, "rating": 3 diff --git a/test/backend/assets/sidecar/Chars.jpg b/test/backend/assets/sidecar/Chars.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2bf928269f424dc3ebbedacd22a951b1a48d78e8 GIT binary patch literal 101948 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 P_Pm3v^uPZAR#*Sonjnx( literal 0 HcmV?d00001 diff --git a/test/backend/assets/sidecar/Chars.jpg.xmp b/test/backend/assets/sidecar/Chars.jpg.xmp new file mode 100644 index 00000000..c7e83b2a --- /dev/null +++ b/test/backend/assets/sidecar/Chars.jpg.xmp @@ -0,0 +1,172 @@ + + + + + + SWE + Jönköping + + + + + + æÆøØåÅéÉüÜäÄöÖïÏñÑ + abcdefghijklmnopqrstuvwxyz + abcdefghijklmnopqrstuvwxyz + + + + + + + + + + æÆøØåÅéÉüÜäÄöÖïÏñÑ + 0.294791666666667, 0.13287037037037, 0.107291666666667, 0.237962962962963 + + + abcdefghijklmnopqrstuvwxyz + 0.451041666666667, 0.13287037037037, 0.110416666666667, 0.24537037037037 + + + abcdefghijklmnopqrstuvwxyz + 0.605208333333333, 0.138425925925926, 0.110416666666667, 0.24537037037037 + + + + + + + + + + æÆøØåÅéÉüÜäÄöÖïÏñÑ + abcdefghijklmnopqrstuvwxyz + + + + + + 65535 + + + 1 + 2 + 3 + 0 + + + 2024-01-31T00:02:07+01:00 + 0232 + 0100 + 102/1 + 0 + 57,46.8417528N + 14,9.7753146E + WGS-84 + 1899-12-30T01:00:14Z + 2.2.0.0 + + + + + + 1080 + pixel + 1920 + + + + + + 0.237962962962963 + normalized + 0.107291666666667 + 0.3484375 + 0.251851851851852 + + æÆøØåÅéÉüÜäÄöÖïÏñÑ + Face + + + + 0.24537037037037 + normalized + 0.110416666666667 + 0.50625 + 0.255555555555556 + + abcdefghijklmnopqrstuvwxyz + Face + + + + 0.24537037037037 + normalized + 0.110416666666667 + 0.660416666666667 + 0.261111111111111 + + abcdefghijklmnopqrstuvwxyz + Face + + + + + + + + æÆøØåÅéÉüÜäÄöÖïÏñÑ, abcdefghijklmnopqrstuvwxyz + + + + Jönköping + Sverige + Jönköping + + + + + + 8 + + + 1080 + 1920 + 2 + 300/1 + 1 + + + 1 + 1 + + + 300/1 + + + + 2024-01-31T00:02:07+01:00 + Tag That Photo + 2024-01-30T23:02:06Z + 2024-01-31T00:02:07+01:00 + -1 + + + + \ No newline at end of file diff --git a/test/backend/assets/sidecar/Chars.json b/test/backend/assets/sidecar/Chars.json new file mode 100644 index 00000000..b30a3ded --- /dev/null +++ b/test/backend/assets/sidecar/Chars.json @@ -0,0 +1,50 @@ +{ + "size": { + "width": 1920, + "height": 1080 + }, + "creationDate": 1706655727000, + "creationDateOffset": "+01:00", + "fileSize": 101948, + "positionData": { + "GPSData": { + "longitude": 14.162922, + "latitude": 57.780696 + }, + "country": "Sverige", + "state": "Jönköping", + "city": "Jönköping" + }, + "keywords": [ + ], + "rating": -1, + "faces": [ + { + "box": { + "width": 206, + "height": 257, + "left": 566, + "top": 144 + }, + "name": "æÆøØåÅéÉüÜäÄöÖïÏñÑ" + }, + { + "name": "abcdefghijklmnopqrstuvwxyz", + "box": { + "width": 212, + "height": 265, + "left": 866, + "top": 144 + } + }, + { + "name": "abcdefghijklmnopqrstuvwxyz", + "box": { + "width": 212, + "height": 265, + "left": 1162, + "top": 150 + } + } + ] +} \ No newline at end of file diff --git a/test/backend/assets/sidecar/Chars_exiftool.jpg b/test/backend/assets/sidecar/Chars_exiftool.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2bf928269f424dc3ebbedacd22a951b1a48d78e8 GIT binary patch literal 101948 zcmeFabyQqSyC>YZTSMc)-QC?Ax8MYKcPF^JySuxE1b24=fuI2rLa-nK!jPPE-g)ob zxpz*^%s=0^QmfZ4d8D4_S5AP#_ng#7V)3eZnK7MXlNKjI5=2% zWJF|SBt#@66jUHO3MvLF5)wK#ItC^d2n0e#!@5ppwWT+=0bSQKH0HT%TFR|b8Zv=iL@Ed{O2>eFiHv<0=0km!Wgi3;}#2ulsVHxN* z^5r%EqC)}2pye%x;qNoaohZ&7xRw7!`EP{&#q&24k+MnBhTk)H-+4_UoWeRb?WR(Q`ivy2pzN)Gb3sj&G07~ zE~f&A3;3L^ml%?lWd2P?za%ql>o1z|7rPfCodoQuzL?BY0gIUsNw5*~Tz9}9 zRPj<=f&F|&*5juvDO*+sa100f`yVu@Q597Z?x2rAk*B#&Fzp#M0fK+*-XCJWdc99E z4H*mRHh)qD0BDF6XOqq@82_P!Tr41e{w$g1M{XGr%W}V#k>@7`;+AF%AsNAQGT=wH zCRCbBys&KWC+Sx&kS(duDbc6i0Y3ymwv~Gg2F>4oD#0DdDQkPtZ}u}|Q!c1r*<<=g zhyAZ*e)9gpWo6nfFS%H%9}NL18%z}d5kLk6bBnx0#1-G)p#GzeRg{`BV%P?dFGy3V z(E*@kjmL8Cf>?QP?8Bv$3Vu`tWx(6!tr$xHFF?U$N09}91w?=;HX!b4jL_0ub9;ZV z{AvJkRG0QKWWWi-cYIH`%oAa?;E8qonu|aIuo~e}SUnv5p%4n_A~2pyDHsqjj^&T? z?y&RfsU@VKKkA<%s)|tVQU9zIMuG0gQH}~?rk_c;bd5RzS$mpXPtZaP48V7q#&qXn z`&H9^@WY*cNQ~yQ^a!^n6{PX1Bg_Kxq`$1P>7Py zF?NPf;=I#Zz@va48h$Y#epFNan0)hx6fDgL2sWJF9~o4$yyjApA1MF;vH(VT~1>?K!{i#K@sVA3++wey*1Xe*uY5bq%ON!RXg`R(Aekp=B zcX`)XI`XGXxGcU7+iJj54nj;OyzqG#fQKguE5c~7+FcYh?Gf_NzkBc83u z&-AZd;1WJyG(961E@P-1KGu5j6iSlz)*<#31gMofrTVFnuJJiilagV?_@w?W)01{J z6Dx+XYnF1hF~FhYkJ^aDGo(gcW4>oJl@m0Y^a21VSmpa~xO>$hTXA|be{lSAC^jWB znAhZV$t|PkFpC8M;7^OFy7c=!1f)4;5*OH)e<*~Fa!E;<4hSkvjY&jWwG9BEMJmf~ zIvj|_Yio_i>59$%td-_1T>53|l-_|=Bom&A2mn%mCbBNwF?R-Iiha*@@@v3Pu3x)A z;1YhLNG^msjvdD~8nbPNF7cVkECk)xh4;3V=D}#vWm-hr{#1#D8;P_jUp`qH0&Nz} zp;)%&AH#|c3Yd+Z>@lA-igU;lFNOVy;on#JYo-DKShm3vsyYqUFpOlqFXbz@gaB`m zViZJT75y_^iih=nsw2P1qjEe9Y$Wb)1<8y+Eqfyy3QL^ou`~J0GKrNoGs6GmLgW(N zuVmEXgiK2`6fRRgB?j1r4pS9Kl?%&v&i(8fziJx*fXkjc+@hB>7$6x!WC=_0H9L_7 zGw>5^h%!5>0i@9%`sg84WAA&Y9C3}|$Xqmqq#TnFwl)KAY5VjMWO~XMe=@-$A2`+G zP&ATY7{O&hL<*Yk$wO~>_Z4Cx52W{Ii2S-?PZB7|1ys1rl#PNUPnnQ$Efb_Tt%g4| zy+pLsbg^efAPaaJF{rBNnA}Z|fXsqFh?Zs$EJK-$kw2ba&{V1exO&b*PkjF*SndNk zpDk-vS_u8btLPMoPS4`VO*m*Rz}W3k~J0IXrU9Hd@APj3ek1T3f!_%HM&LIBzY+M2z;6WppCiEfLFE6r z&Oa4G)T1XhCCdN+qJxTh7d9854Pi3hHJD03;<{B~6Ai6=NlL0$vzH1?vbqQilQnw73QiIjCeH3Q`x8 ziZYd-yCGA32ZgJ=vz&GNftyW%lRR5mQsELbnHZtfMCDmSAs|at;EklGX>3iBtj&z^ z9N8RZVsTID?v}3Pk`7K4&(WbCD1c0A2zxg9epn` z+@)k#Zz^UicM4$uzJJL1$~>0`eXvflQ9TDTV4OuUWgJ9!^&i31{>uRYdJUg zv>qlECY;n5U8qbZC*ra##M)9aoOe;rxhbpC6#@QW%pFlg-^HCaF`CuvBMpS1k_sir zvX#oRWGLw`yi-RPkUm<(IpreqZn_GLrwk5eh%KN8asf}_0uIJJ#=CV?%hP%f&gim? zW{m@JLW*EES%*BC0{*E7Uh%w|@G2E=Z*EKyEAvSOi_t=uGulG8 zz;qf>|Cj*Ur?N9yq$pMLg7Dc88Rgv3?wh2y`eTcUF<=>_EOE(p0W$=~MpdL^A5j&Q zlnlf_;IA55r$Z1*+3E>z2t_OaOa8Hz_Yax?KBE$L-Y>o}lFclTa@Kh@DbQk6U}3V5 z1iPY&D#TBTH;D<12NIda#q4!ezJ{#A3)bLRnAhIPBX&7dfL+#b;q!{#dTxxw4j0pH zDj{;PcZo}0Onr$}k`3?Mmti~yJc0vNtjD@0PpDf-zF?$Pn=pKC{5cgmU)IrJU=^{; zI&|tESp8E3B8Cm_cp&q~N&|6nub)z665QSc5&NMxfYn^&hN$>y`)i13VE*Zv33Uju zD?nulh2^7kbR}FsJn#(}{6%PsI2qAQspFs4|6A@qApl9uRc!yXC?7%Q{B);hBHtM$ zF0hs=lOq8@ypThNz#;&*|0kLMi-PBns+3PXA3stp`VBzfKxjfsZsZVy7Bg)WvM8;h zvb2l$(v<_UA}R9Uhc{fv_5VecKSbl?d6`lr*5w-+@yKB%%g${}VEtrrUVVtNhVB-Z zG-Zl>ARjojg_f0-y0j~GVo=eGCUKcOv?|IJdzBQKB`DPb-jf1L^-70vTqVhnn;1|o ztV+WQ+yNu+$y`>w6=s)Xl@nqKFM+h+$d-h@PW0^-qGV?>acp_GhDZd@1to|Q%*s8| zU@NX-V-6^6Ys0U}1^>V!XkW1pL0YP8oW^3LL0?it8Z1tu#zekj1ezmu$wAx8hgves zy@;fVk>gRHA55J+44gT?&w1d(cA0E1m1WM<8k4A|sIV$S&VlFYp=OI#6oVNiC5N_` z;4mQ1F-szwH)0u1v)=>i?L=d1-6zaZVQz~>yBf`G8^!tJ2vkeX(?Ia!VOr2^FF>YY z7X-&wmIEtW&=Z}eU#6YT!BeCniTwkg0OY_K`73j66f(VteW*8gl276vjHc`Jvx=zqu0DhD~Y$ zAA-u0j#N;?@sAYcF4mcTp${&h~{SA0XC!_Us#;Y?DcFb+(+50uL>LZo_O zg8!UNlVzxoW8p+S=rn~R0ZBq?P*ImG28X3+|MtmvhJ#EFj5Cj@CRs{t<}naPpiP`# z`u)MttaCd7f&o&BZ77KGRvI+|gBL!7Y%#lUrf45@+!2O*hb7+u!_J4Oxr?pMo(Cs6 z>R37=GZ`r_kKu-Dhr^Q{5mHUX^UC~EG?a_^ElG-Ui$v0|IP(`T2V_2hXgC9&K3b&( zSgQtF(V=Aaxtf6eem?C{6~U1?;;}Y+&fcgN)UotXC|#ntY>{qrzO*=^wO&zs9yy1@ zAhd3=2!~i7)@l2`5ECr|Ua~nI?KT4fU(S2(Rg~H^z}HP2nANA=utygAL{sHG{r(Fsa;Z%yf}? z45Um%kfm8~%@8kb0FYz(Mb@xIqEZ}{Z%A;nc%Ui`BD~#rz17 zj*-jCk{FF%h@SMn*(NlJ1-aO4C3Mn5iM(5`Igzpr`fAqX# z0V+$fEmjDro*U^C<}ew*QvZ`MKz`6&Z4FJxR#T#XiDwy7Goe-o=DA(}=_ z{3Uw`)(d51l^M2+?7uhOp!8`nIr4TU5-N$YSqiBoQN3|I*8_y$1gFCTl#MsAW_zSW zKpbO0?QELNx#nd6Ev*I04OU9Cgt6ZY?I%G~S!uIRTw8y7n-M`cg$ZF09rv6aTWRl5 z&De{!Zx)IPLV1iQX3R2m992eYQab?!y0SEk+z{ihk2suvZJ+S zNom65HN9I@>c+aC%RB1IQx7Xrdmt`5YA%QGk4R!Vv+Xf+w8eYrkM!LfKub!NruFw4 zmmVURsy{WCl+-yt8=S|4F%w)0fZB3-cjyVjNbOwlH1XCJ47q=f zDJQr!k8~_W{q8)kd0G9!joIlCPEhWfkEl$vjMxYG=6wn#UiIiCW#CcjVa~XQYXLxW zzjdWuUft(_7Xhj~NDNdx_08dh1dMzySx12=Vo>r9-E^*ft-;o}w zCP|heo8Qash3h@&oIQPdaN-OWh5p%n%TGVt&IYqt!RRw!7$EUD^p=!nkz<~CDQSP= z7}%8D-xIX>%TfE0(Lt<)j(t^Th>{e~1UY22{;%00FlV1 zONDsuDMy21SO6!Ykn*?u1dz?Qq!(Z$Y9L{WncizAz2GJ*Oxs(H=vYTI*K6+AY?5Y# zm{DEK8!(~2rAnqDId4x}odj_-mijVm_dq74S;i=J?h9JfEIh4r071;6qH-GEF`3#( zG7coYf4B-DosYt~yamy;m5qyrc)wsPPMTwZ>Q{z*LFpn-5B5@!h@CLi?B}Hrw-uta zW-j2Jc9poxAPc~5xK7n;85~A^i5-(3Kx1VBPQfB+3K{ksht^e9Cox86=6#?a+h!=d zr6GNtY$<5^_Z)_nH3vgOwgATv^7w5jlu9ah_ik%eKZ7H^mDb4QiA5w_97T_ zutdg^ROiGLyF&0X$qI(wFtpPt*b!y7!jwd7@MpQy7-Y>Ii6Akk*l4K%@El381&a~z z{Yh4Q#7$&e3yy&E)XUmomRGPhMzOYON`2Z0gMmsArc*JX$wum9d|m*Nu?1xU{8pmU zEVR4B!6L>S39%{l{6^q60>2UXjlgdN{y&ZY)YBK-+~@!ZXh;Z1 zNJPk|PspD>+y=lteS!`L0SQ3o0%2nSF|lw+SlC4zIXGDn@-^$|dr)o567LG8iZPNV~Ef2CDr=GX15l$AJPHN1?6sVBX`R$)%I5t=xm zX(=RqzGs#xLC)wh)Vdcs!t*IE9-hd=7*GE;@>am9Gh|mkQ)f?s9mm5ePb^b>=DWqs z-cmFSTqb{~U&r|@xkuBG8vW|=&FomZmg!ez3@5p#JM zL~=UO0V+C2jdjXhR)-_Bh^#H?hzlQNeagKet}>@`!c-LMy$}IC?bmNs|u*tywc#flJW51s9s$sYL##CI zPgU<1OXhdN)Dy%|eubCD!(^eybfm@3M@2w?J zv0wMy4H~+K*<%~O?(Hc@7=nd58Qx^smVMn~3P%3ka*3(RGtYWJ&X)B#m#c1~djaJJ zdpo|1w3nn6$yBEmocyxZ3b5mQe&Aqz=*w_mb3FvQGF2?hVoo4$Bu zYB!s|lO($m%D5k${(Mr2CBU|J4xy+47DM8-OS~dOA{xWQc`4OoH}guz*u$$jbC*2Noe$Jw6j1=*LNM8k{JPp}H~Lo~HZP(}6PN&>%53-UBc z2sAT~r)0C8_7vA;9v`>U_SL%^E#7ykdc~!Jt(zM+%qTD;P$%;sFUi-@k>rUOnE@qw@*@{QPjE%D*vya9zca@4yHfLqPw4=qN$P9L z)pqMuGq_gAfWp&0*~c0)nWR!&N5wwal=<*8jyu|HWVi`4sppxLs_N7nduW59cTCC; zaxuo7s!KCE;3zNT;l$=15DHS|OhNFuqes+-?+)gItPBY9V~tC4g0Zbe*bc9kuZ3D> z%BOPe2ptmqTf*zNbL}FO5NWmu+sq|}YG)Wv8U#v7g^xdZdT-t?axd%)wfS@RjmY#E zu=y#G3V0f%QnZov}$Pwhr}+>q;wa@KIOXjahPa>k2rpX?E^V)Tt|%k5fpePD63#uZ`e};+-SgLp z^-HAdEBTm8YbpMen|Z9X?+VNRvn99_9ITaUjKQlsd9DLvsU(Fvcv1Oe%+I+^0{0O+{)Gkj6{9gLM--88NFfP2;!uOndd3db1u9Tpt(&1sBQsu4wwaRseYBljjqSfaPK zBS-yNCM)WV={!dzQ@Z*{TjIVF&UQbs#!2*%;-t~xf!G8UhfRd`0+C^4svXzB;c6RQ zJw=G!189f7Y@bO1Y=r`BdR15JgR?XA2zb70N7UlE;?6Wkd5@foce$IS8f%Q7rdvns zT+4q3?H?Ja>%>#R&u0AWbgaZmRiCLc-i~}ck9idRi>EyR1O{EYxgvR;^8?Z=1uxlt9}c0` zPK51}ceU`oo;D%DpT~;K$q4&otlo^-!&#P+)=%r$4l1-<-u3gMYCzxxSd7#I<1M)9 zO5U}oJ13pXuaymzAFgA$Oq%#Y(vG&AWPdEn;Y7068`hv)BtJpcb}r5uSW8gNuzqOX z;O)vPj}$+|&B4&C)3<&Vs?Qi>VY>pV)A>BV%`j3uZtAes@$Jg+AOPsx#BhPk%)Rj3 zwV^tcVfY7WpcQSBP zba+aRk)Nh7YTm(!Of@+2+cM2T#_$caTB6kk_mTpSHTJvCm>RhX>36tI`_i1@tt6!^ zOLrDsE^eGk!0=gC9bHHlvP4?OSovOml+T}2Nn?zOk{GH@r zOQ_jY+i=!fs_$lgdD>C2+`F;p_JED75#rMR@mb*xg1Aybd**6*)17rSv1YEH_;vaf zKgcHgrs-) ob(!m{PMO4Z}4x!AiPDGoMFXhg7z7di!tQem<)m6vcVm~q#MH84NB z;c5`lGYQ;3ktiW8%Tj7MqD3CJLhyc`9GkB$f#O-}Es@RvN%}sPuAf_1QdRaKfs|!8 z*L@w|#$@$7<193**ceCB9CQz)^|S6vBiy^hOnD2w4_!^1sS7oqZ4me~=@ibjowR}6 z>m(t#<8E{K-9`#ios*3GzyU@bk|EU4VHD^L`N^)lgaw6^%}&JLZjU2O2<)N8X7rPS z{6|0>w9XyJ(yNp_(#x3RWs|kBalTBSr!Kd=bP%$8+8nRM5cP?b|I{}3w0T=RW2ePG zrREinRM?eTlKiOz_^oM(fVd^iBcPuJ!&aAo74;*+Bj9FBvc6eCw-dZWEHgc2E?ARO zT$$c6>^^1p!c$QgoEp)@U@F6Kqx}Ugx?~tc+`hBtxU_?ocN*9G@knpCTr~&F|{O%=OJ{1xh3@ zjS&NN9wB}Q^ov!bCB@h<%{CRe4$x6|(K!`gv)(nfjAlBuu2Yr?@zf4Ezw z2dJOV;rPHwvhrVX>-WJ|I7o3=(wBpWF)BpO9K|6QWW=197cAj^v>8$UR*wJ@x*IKl zU7{F&*-@%}+K*v$a%@ZL_xAd%&I2!#pQg~34R}Ys{i<0uqZw4_GXCoSM?E=S$o#~K5E8RaWm@{$R4Dq1; zfmU(W7iug9|85C>87e{QkxXDyFn%PG`Ct^2itY1L+~ixrWQk_CE^qpJcKihk)QzIP zZZBxtrk?Wa_v)9d`Rb!-l<`rrzQ_l?(}*Ho#+dv3f+AqpNtqgpQI!e1l2&H2IcRG0 zaJS0cVuE@V|19xpNhQ zb;QLP^J)O6gMw<}_P}{-unwW~wc{Hg37v;T=|=#6N%_~-d|$00CP|}eDCr^mw;$%o z=`>5G5e<2?IRno=w@u$c&3HvPlxFylag#wyZ58w7w6(Q5)@<0#?V4NBqK zn!6n_&YETod1J|}*G8xsZ-ZgaV!hm^y*(^3KY!A(fBCMAPcCkF=2LY>2L}$ZxLWGOy*|Euns)VaNA<@qv zSRB#Mc=l5_5BhzgWHl}Du~_%x-*S{Ye^2Mk)bllJ@B$An^t%A6Yx$&&J9M)1!1!B3 zdkixaB^Xggf^3b@Eq1;0M0}Ljq2s z^Fv8IZ+QEj71en_z>Sq+EjQ0`lgZk=HQVxtddk-S%Er0BXnj|m8YUVahqLppfxG2{ za7Crhf532z#9I)s)=EV&7-HK2J$u|nZG`n+y(P`F(MwHcPMOHU??49pubd4RvQ zJnqGImMS4~i-*yV|KNRpAhw)t^13~*O2>MYzWS<5$Qb&|yBLL6QfVj6LJQ^m-4iWa z8!`o7>3jp{ZSyBIn?FCZ{92p3`DJ@OK~$z82|$iPYp)G5xl*8g*HikA3%sLLqBB%z znl~^#5S87HzObwQo~m3kC*8cgo1-JjuWISDb-x(qw&e(1R>`-Q+m0hbILJ<~q-I$~ z6W=(nuiFun)`6PM?Rfl15E+DZ{M$<@795z=6<0MF2+ij7%AaN)Ook!eTCsj)%dAKO zn-pPe$ur-Dtho2j$`qT14u&(QK^dLQYngf1+H4ltBdAf+6uj(bGhqkdOiGoWiQYTn z*I5h7)m%692z^FeL5%kP$0(n9<3G~9xNL1af-k-riEz!*R41)wx_RCu_nDew7>{10 zi=$MhSSTS{)uCU~h;k_~`DTH)-&s=D)XM9N_54J_CJ$G7Ah`eDdkPP>_*DhH(MHXA z&W6k*Kw5Oe%)p8O7clXD@;`ujly|(p`d*(})Z;4fO4FzLJ841^OrzucJU~KH)h>d* zORe*zTsG#GDzbptP~7<-PE-(5Nh$DJk;gGv0uf%7AQ&@5Z!uqiQ%(`#T1guIZovE2 zHzrS^+tG(xgt2q}8^d7EURo7L0_a zGw5d7D=ii=@At}0;Z8GE*@x56w;W*zYHLYhjY)hg|3Ebm@x3{I%B>=1o?6H*EW_?X zJF_r(-aJvwsE92+#%>q7Mx=HWKC4^jvVYR_HwE97J3VR%8!O}Z3QqB2{` zc5>()#@Z6iRX$|v*=KBqfHah0fpUZ~WlxW@;(6=HS)miDgm@rU^BfnZba}W3 ztH?)yXMAIII;~JlYx$0{lL;24b5E2PGP}ujle-h0&X3yljF_Yutq`gtf&7N@2;6R5 zN=C)1*X0a+Qx>QhScrEsr=-*mQ)t(&k5%J2lyM9Ss(9b zQ$|QriPkD(O!NrcV;MKh{mKM))=$;b+}_h5|3M#mK%(gXxXL+dMoIm z&@6#>bkP}Ud`-gzZtG!>C{tXV6I5NP4zt_XhL`!!`6;7JTi^YN7mS7JP(J;EG8B$#qEgjeGE`wb-(L~t-m)8k9|7$Beh41lL0AN4w`~UdG>v3KX*TW+D*7&; zY-X!`CRhwd@?6voHrKz(bmipUGXE6m`##bA=Cj&cVv(L!+BYY+g!EyDNP{PiTCIv) zReYa5ewtr8_U8Wbm9AxfH_~Lo=K_*mM?aCk&2PKw{Ry+~#L08P#M_e>MGL}JRJOP@ zoF;ZM2$YY28D{1#crZR6Oz9iJrnz$kGo5oCyBJKr6Nm?_Q1)<=xA#vgs`V!wd+IJ` z5=kfvej8)EmQGV^>%r6N)}L`k3AN;nP9bGhH5}FZGQHW$8g{e4xb}T&AFfc;A=p-? zd+xe!d$LYs-GZQQ#FRrv0W_4!Tisw&4Wxq3(R~=&+iv06&0yoAu-r6ot~`zuzoD^M zFmKqsiD@OFNcVhb@iD92-b)Q3F%(fX>jRvGYA4tjKerdELvQayPd^RU4r$QyRuYjcOEHxh$n?c87O_tE9 z#Wb%gg`oJ%46v$g(;`pctSH4^KZ^=HCA}$-6g*@^6V>cA?_-+o1>V+)4NLq0a^?5r zb9faGzOMyfL2s>lEav#@YP!UQA}WcP?9D+E*sAfJFt)y+LC38eIJb6#RdL%|w9>s3 zm#2UxWVmUZ>Ep>adjyOFSe^_o&3(`KGSc;?~~s;uLizEn!$D!Au$JD)#_4N>9hQOa`4GgVDq;L(B0 zlmRP?T*Ak5!!xDCj9`{)$^wu2>ZnuEOqZiIP1<51flNY?99gvzMmicPd#362k~^2s zo)d@?w2Tot+L~eDE7xqQhMFZl&dvgs8hviwFAeT7DKa_c{NvLWHSo z_X$ptv}P%N{?s(DYMIHy6ew=FJ6&kxGOEP!7m76c~a3rg+j1>)&4R!pX z1}!|n0uk?c-tiZor(n!A2^W3VK439%-GhRw)ca@?Xsu-D+vDZ8R^CKumet>+FFAu; zqeVCop)M&SA+Y4~&2I?|SSCzWkefn7O7Vn`qDV0A@m#9h)X;pkOdEeHTOvO?Iy@N?czNvzRgc-#y|(0 zZ>=yC)kYowLft?i54iTsA4WL_CP<(0R!6)Tj@L-8fALmS3CXqhD2FNw3LCu!9dcDt zh(P^Lz^R0_nFv-hIZwzHH8EH|EDfzL*IQF4))K@fB(dFPKTBO0o`)pk@7ce8A zN?PYCHvHuUt-;K()xfub!E11CyqLm*eL|> zLqynTV$?@USsW1#o%3|Wo1mRqTgX=-nvBBCSie*UsjT>Gv*q;)nnvv8q}zP?U@s99 z&NJLeLE_0Lv}(>!VpOSa(si2SweExoln=1^NRZy}LfN_&J&iDVyWnIWogWq#%??LD z5h!dpMzbvSwIm4>K0G7g99d2Z5|}y%|LMwbzod#;L!l-6!`iN&xJ@gGocA*{(-h|x zEOld?u+~?ZO^eA(So?&$)_t;<1!2xaq%BxZmd(x`jeTTi+9B=ZkvNmo(7ZbFH)q1A ztV}J`{X71?OwUIW9^KGyG%&EB3;rG?wig+GZzGm_QHn(3EZ1QnN=adA09_ zaAz6L2ES>%LJ`x@U^)gep{`n-kPIjjl|bh%;9miN7S0h2k3`;wsrv1n&J9zx@=O+oGhA zZq5ekB1HTzsRXXgDCW|m)dTV%sY`AKc|{Vyxw~ye?#|q9QQBaX^O{2_=aFTGT$~)_ zSZ4-k`*|!bYx8=VmET<3XwoETsVKY2cN5&sC^n|j{t^p(v$;wkO}gC0Ztq3QFb~Sv zSm~*M-6Gv~=Aj-%hmtmeRXBlfwg3d?;tfsm#S^qbe?$yTv=BG=Em0zI%!M}lyRg;d;3OacbW4J1gsKBH`2zz# zP?06faBvvowYy9q%NOwpqUV7m65qkF-*DeH9b)i`1RLSe|3?%ku^;LpeD3qYWhe^A_U7rS zDamVjqPvkT^)ge-+{F%bRaElrV0n3n{k+C9Ab22>M}?>GvTZ^COju8B#+n_jV|B`F zGsk%fE;4HgC8xbUHVr4~5g_o#yA?BYkE*+Yocg}ZJI$qOFzYkqVNx7h0%7^AeA7E+ z+;*1!c42o2cMrMzR{(yl&)<`hKd-;~=B?Du6t`IHzug%`rV`ws6nC(*OEAE)AHO-- z6FR?tvK%D?1MZz_Cyh=_5TlK$zP`c$X}+h*Etw0NX|0NTi1XI(d9R@#Yo2|~Gf9Zj z7ab88(Ls^&w4BLQwJJwKqI!yN1!{4O-M;^p-=xPWxuziiNiK2P{LPCa$Y0{z(YVNP zhyh-77t_s_u*tbmwe@~W#aOZt``Uc&y}t%R$hsBR1OjG3d7ISdL>1g`wthv4b*o(d z5jVjY>A9$PeQ1pn&Fz)UM|?zAZmb*W&^QtC^UZlh_ZdlwL=4`%syo%Ha6sdfX47d7r8KJ99+P0>nS~HmCIp(! zZu81d->pWUVHtBvO?E&b=A^rv4dBoxm2tRbMShc@T*&H^gtOt8mvZFw#eO91$?E(M zFWh1UJQEW@mNR-@C^-gAAT@XCJ*+~!ZFjg#$+zElzcBCD>FQqkLS)e_XnZU`3F*h% z+>yz3GxN4LxhPmh(`maGrwW!_w3+WEm zOX(&+0ri}IDpp*}&2|aw*iCiS_0gzJ;+e`jN)MV=#gTl8guGsTOOY;9ABneaJVdhz z-cR#lj;77yHSRCta?PQZU)*9QfC~uJ_Gq-s&;YlN=!!9^W`=LM*FnT4=@t&E2J^0h z#~)2zJ!@6?r0%Xq(FxPy96QH-a+XqqQxO#TvC6p?8;vf`HzymZ%3-y!Y}+veYHtaV z)%=Ki%6_a~Dy5tGmBfXe)0;LL^Zq6!M(MgCdXkqc0*`=a#H>=_oJ;XpF{#)+TS&`@ zveU#3J91`%gi3M0xt{yHk2zO%A7OTOlE@Q7$b*47quZ#jO#JLlrh;*jDL*U)a&-i- zCe)_}=2}Y=kbXSWJZHY5pT7L$W>*KUs&%OljNcr)U0HktOxXI(~YiP~-&$dJP)uqxnykQc3K>0DMN)@hMYjmwDZVxTC zLLkgWv4=LErk{GXKFCUZhid2g{_%_|Z+aTLh4YbNxP_+hJp&aH7C)10===9%TF*!) zc74te+u9IXPV-Gppwh)Q|$yO+5bHSsh4~RYW z)Fpmh{0In~Kfn7*ZFa%)wUKGeh%CcPoobht4TLOmvV8D6-O?I!_W8&cbA$dP=W9!0ONX*5%Z)BObdv93)nAeo=gaP1g%*7t z-!XX)24Jks#~yIjyuux4HENox+yj$#y_4{kkySsvll)`UP?s*DHAjp)7E8R5!_60+ z`<6xS1$^bxZ2A6;6whoPC#5L>yuGiS9ee0Z@~()kGkKF`pzysX=@qYY%UdTM(eH1{ zL2&C$VM6$r&R~>ZvJS1_fmK!b%d5ZR*F%HMi5EeeA-RX~&Nora*z0Hq?zBd<2Xg zXU;%lRTgxsXO~6@f53?9df5m5d@@xfOAg!ITE-rul|~ebut;trF_ahnQ5TC3OaaA= zVcI)E*%<=#p3zf@afQxu6=5MD*`&$ei5PjNOCCXGWG+BG-&Buf-u|?JZ()H#vG7D8 zMJ9t^>3;J7e(T53V4Kv6%I%H)k!dI(MbdmudRQ<=PO=e4}Sx z)$i5QR3Ch`Kev|R@NPd+XGaMFPEq1nga4+=)3}+k-7Z=Gai_EkgkrkdKY1EKhyQcr zc*vm>tA^3}DDY~#v)*WgHl9K|2LKzcOp%*paYd;s{kqc|0g#UJ*ZNLn?co<6{l^Y( zli1`ZB#6RBqu=?DG3c1^4sJ{ly%qSN_0g5%IR;Jkj|S|SaMT2*BPxh$ zH@Lv3t|qFeaGJ6unfd)3N@Jrb2W0r2iBRM*?FG37A65xP$;G9ql&UfGM@ad!Szf?C z*A%^Bsn=CR>KnJtP(r{yvJ~~CRd|lHP1f!C85>1z{274)0OpXIV1kEuBuk_0meB9% zD4O%}=W+3Gb#`qW%L6Q9@~t*394tS;6{3l8s*U5jUAa%$0*P~q4Pv6jeIk`R{2-HJ zBxdv_Fz0Dkp`PRuJdY$F2D}s&#Z~DkLkU4hnE+rIqXX=Lm0q7T*|V-{8#z<`7i+_Hdc$cy;NZviBA7$#7nOfNa%Fv!E*OenG+2e4f&y`mME- zBVmv_o#a-C9#=N`oA~$3N<6~PP|8D64o~|!^{4=W4;>j#2MD+MI<2D@;c45Hc=>Rc z_%jHHjBfU}VtlaK6VI)2VsEQ(anZ)IFZ@`_qE&V7)(ZzIcTAr)m!&v@V=5tqM(yIk zYr(@GI93)H3RzsORF!DqaNoWrxwA)JZX~z<%8F=jFy%I!^_2}pWT**j9i@*PjLvGG zM_%#%qdF6s(Ol2>be_u{&@>aLPzDw4~Spp*~qfrLj?4TfI=@b2K~5o@Rs- zZ9DQWMWy>zWsiXMsyD3Z59igvsZ`}zVy{~u*{X-%mo(k)yuQX3D7jy6s~?es22Yz_ zqa8^u>|&)CcZaWOl(tpJ&#*U}apDo$)2$R`ux{kk9e!=`@l7dw#=2edu|GzZNZ3q! zvX;aTzrmZcf7}I)|KrtiOfkdD_nK{u+^J>$3q#_AHsO?=;*lT1s}?a+oSl?rVybV^ z+5*Bk5j`&Dw(1983aS#OQ3wdhawFft(DDjXlQuRwgQ7#dJ*P*IsJ(>hPSuwUzWhJ``RoBU3=6h|pW^+nt{ zv6W8RTAi?(tl9q{?k(Hein^{*DnNlki&L~X!HT;SD1-zL?!^i2ZY@?^65NXfcQ1uP z(ICa$-6`($&3(Vmd9HJQ!TGX3L(sbG<2gqX=}Hx}t$Vwv14=g75OakjfgZBiRGo^24W z+|XQ>HBMiBuo)18u9?rEEcwXun1rAo`G?l0T^pGb%m|OM=!IwJakTBU;s?szuHji| z|1|8nIm~a#Gh4Vtrh!)K!uuQDnA=4Gpa3aL6k9S;*QugHqoU?* zO4y8$YvySKJFy)WpWPey+P6&mJVi0o6H?Ccf=Bqt75(aGV}D93$b1*D9TQjkSDi0&^DuyGOH4$(7a&g@@NwZ{BhKPE|J3A z(tB2(^R}GZl>43JoB-jZiFHY3h->Z{m_$e8J)Q9elK03@W~DfAfo!6z;;ijd5} zGu&piaYs)p;GLMzpooZ23>Md7hsXR625S1-Mq>9{Byd4B$*d;6;~T(##E~z>M7@J#H%HbMJZE!z4+=Rd(S@VW;Ye@$Ft$D zx82@uw@_uF-rHyi!`Qcb^MY>=H~|P%hos!uNCymERr~Wif(AzaYy5{fN3nH1=nI16 zy3gpG)IdmTR0)Ki!*5Z>35`=Z7r-fjq5S#C%jqAQ=YkEkKc|Xo%$BYMt&VB8DNkUn z9dmKl0n}LxOj^N(Po+;xQL&I~T_~Jbhy{AYStP!>q+ujs;%Yv@o9eV5sV{%v@p4Xf zb8{vqFlh-mYVeR3175OhM&Mzj*_lG7iq%ZM7P*+dLH}9lQa0D}m6fX&HpB3t2DmaH zr6kzSc$B!i=H?tA-K-$1gx^QC!7zD})?lV${r+JCnbun_f{4 zPh|$bsXJFXp}}bZb#^NE_PId^2q@M62ssp%=@#T+u|i_L%GJpyrErEE;1jq#ja@=? zqQ}WBMB=}EmSkvJ3;C5*xkrh99%snPzOBHCYXGMFe9RByDNFsHjRPS*^9zR!-{vPW z2$5UVL?~$G$%bL44SW+LxoSaHS#G~7?n0^<#JBg*1Tv!YE#IUxD&&Wb_1w}^ySd3b zT5>?QMFB2n0f2b9#2mQeydXX&VKXIppG{4-wZtENe-Y}>Su7HNCKDKDaf_mbq8b&= z4{tR+4Hoq?*5#O7O!1PAoKBe+lzLHKa+Bu+(t)hUkp81J-&zk=_YX;8ZAoUi6RxIZ zAz9c`ll7_?;bIH}&!7+ji6$%mUhTq*e_JZVWAd?UrMy!Xj76tmI(BpyGlF4?Bvop=u zV5Q;6N&+_kCS;-;nl`5L%xBy^_XzWn{+M0!az@=7o2t||JE!;ONQ;~Km0Q~m%`nlz zYk}l6I}87(y4{#*CfJYt8!v50^@pGszkp`aFYUyGy=c`F_!+S!uO*nRrWXSY zB{Q5!G8q_Dl!_L@jbWY7ug{v2ho7O=;dGsej^3vdnIHDmn5Xz4i!}5I?8(V5AvxNb zIXR3dD*bM1NMH z;^Ij!wa_JREy~RLZnED&v*Q(|qM#*>2o>5e^$J@7;?M#xT(ofkEfAk5SvOuMzCuZ! z40P$PdwZrvMe(7+;I}v)U1KfMr~jX@OLwuV19c#1QTWq)rY zDT;9KM^yro-r@*V*aDXh_ZfzKS7)Vk5ljk(la)Q9Z-v4(9IMyUz3bd6M0)rES_A~H zj?b2G=ib6GoT8OjuFA+u>?;`Aq`C^S!oGu9>ln6|PEgSRZfz-fR-4q;4XPmh*4?*~ ziqF!cp8b3`<&?CDfS#(Wr7C0S$xA~7a7XFcUe7VVuxg>uyxAz^utDuy10o|EF8YwD zmvh@591`;~--P08BABDyU-gfX=&OJ0y_=}Q>ppIP8M*wmV0(qRIqi-=$;?t41x%aM zH_Pw~SQ_46ue_koc#NHy8@u)T|2Gi(BHIY1pT8>;v#%k3$;D&jH^4>QSeT-$xd{~h zlEDRc=I@nmgMQDXsJ;G_=i}z(I~nvR<*W7H?0mq=>Ul|%c>P^#s6@zITEs}~edE=| zvHA6+!>SzAb3-|95cn0=1>c&KuyMQnd#r>kQ-)2GpO;NdnrH6_Y_*vc50EvSXgyNr z157)hwx^$!4;5FstklD^A3se$cNPoT(K~_NG%2r>F;@&qS)U(JJAT-zv~gQl6xjou zxHAvf#Nbzj`2U*S^L8Yu%eOD&mIz;aP;CAOxF@%#uo?8!8 z*%q_zJ3 zlP-5xW$I9&kQdzTwxR{5(@1O?9EllYK)q8JTU>b?*=px*cBA(#B}q) z;oVX{PV8PpWhaKb2FO=aN%OSvky2TZQQM0kJ*Z=*&&rdLCUQaQZi~2w+4v!Y|n!k0oo%XnDArFNzT*?z~EW-tMlx_z6>d0 z3F*iT9dZI+)O)yEM1l~EC{t4MZ&iQjIyR!2+2v8|t&`JcLPCJ*|^!v#q-Q?uR?=&fsw znALvmy^{`qKQTI{vR4gQYHlr z%j5E!()>P*o*9Cu^K>louvi4;>=%`QBuwl!Gecr_ke?@>XnsFBlb9Sn6?|XD^mnQH z$fqH(3ftIn(%mVLUYdt#_ZS2m>wFC_zH5JL6}4u`WspjYq?wtHnaPTjd4*wiU3r~m{)krzq)LZ_tzu2N7uKmc5y*5{FlsA(+Ayd1Eb5Kkc*aCXyAg8iN;Vk((P5(RUx785J?^?njPLAmQn6e}c@`Uf8A9hh$% z_aEhcNuJYa9E*rXDA07}3^PzOO>Hj*`39|b1jQL|)du}TOLZORPki$*VRqBOKOl3@ zf7`pQh#6sXS^+$(e)G^bB^n#M4(a=gnjmIGgLl(=>Q$ktRr;B`7?aL37l?`gG44?A z@Qr*z?BX8vpJAS|d}-LbLD#iKwPSh?BUSOhWaMz!a0#>I2eEwtrAnRt_TemCbY z%IUS``usyvYXQ;g5l}sjW1TrDe+w{-uNi?oRSh%HlMwgo=~0X3ykA5nBHdo*6_oX= zqz33g8YSQ&Vp`|HEf_ktmXP+004O|}IO3I&bwGbp_C@k2HwW+)rDdv#2*LPs%#RP1 z5c%nl@Ibe(ei^XuG%4ont_A=+cd>9`OTaQ z#Vo3ubUD#GT|Bk(Eu9S?QWyB!+ma441@ zoCn|0UZFBlk=Wn_2x$XsyjG%A&)y80AAXM)sIJ>mnO-ztq;A0-)ZZ?XKU;BE%srX= zy{RukxI%8r(tafX%k7a1`)f~fIiXG`L}}6K|IGXPoinJbMM1syK`%T$AirrGsF$7@SkK2c>ErnhM{~31fYbSmhGb*Z z+`6X_XFk-9?+{@9>)a|gmU{rCM+B+Q2*ou`|B|$bt8l3Hepey$0eJSZwfv$1ujw5# zXlI?M#FetUE)PHziTQT%TH2IDLfVbtAyKI1nmX~Wnr9q5>5UG~Jh8k(R&)!zA(jjI z(;1(l@sS(`u$P)G8cL8Zt9Pp1vXc5+~ybK-h+Z^E?UI_adJZ`q)#{(-_%ZO9ek z$JMbZ(D2*ZLCwgr+Mu)|X>i05Y~lSW{!~eyR`P;;D=HfY3}q#fsFT*X$bH{=zq$CD zX*V*K@c5d3K?!K`tWi&ysKAaQ;Y<{~*6Ld2nO{RKDX=+Ix*kAS&Yy4D;L~QDvI3&A zv2lJH9j#K^TQuj;hLM)H^!5Ac$4MpRlfXaN5LZuB7v{eh&i*RY$H-`{1|D}H;*Ye! z(01bgQ1dA`kJI&(rk`NHZhTT?(L9Se=NqJO$dzCuq`-rPQpR-&>s$RT)+p>uetl=r zM`8chAc#$ElbF@@XT||*)7x1wO>#oXS9e{Q%pAN_d7(w|Zxi|@)&9`dFRN2|S3>w> z6Pm-d{I{?5{al{L1sShAL?4QNBQ4y z0A@1PE6c#ibuKo)K}BbkTDFz3g!oDG4_hv04hY&_qb!_6V1h&k$;O<;=3o5-MdQ|^ zxUzz$&+DTZvMHV!o8r}{x7RN{XS~NSh*z4FdmI2b@(?0+sRd<=*O_0pl|{6^ROI|{ zk`JYIUZ$#*B)1k!rZ>^v+t}YzV)of0A<0KP(<1hYO>Y*YNG(({6?z)`1&|L(+9GWp z=gRN3T~S_*s}h+|_VARor3hr!{5Ef83 zpH(@~R;%OdC<|umNXyE8{qq^gwGw?Knc|IGbe4KB?2=IK7Sk(7W zP;7wT_VQ^p@0ybVqW4S~D&5_zzl6xOeUDgTQ>(z3|@E{Letm|62p&X%^4Rxssg=BWNuf2JckkrR^559|!a6VfQSXX*zaC9+$I)K0k(TwYh2!D0EF&`V%&m`(W~`MPv9R-9PlllHN_iGV1(Yd+eXs2Nrt%s3 z_moO|-^Pj}3{^_M)+Vchg%+Yw=@tH!s)l^TpMbOxf(Ks_K``77qZaD@fw9F}FU!xb z>HTfH|41`YX7)%*O5eFGZR7acc?_Zgn-}M#t4O7JH@$m^2fng&A|C=w!p|XQ`URug zo@iMK>F{!xoWff#YjbCxsE)=*B0x(JbD*>e!ZEX4L zTlu{(bO1&A^f$j%VepM3?M6aDxY_KpV3Ic1sDW$32Yw++gS zn9f14dJG;m;{n9?Si(nUNGK&;r&TN1DUhjo6lrNer9~C&e_flxYSyzeQy~}heDkot zLa|__11~vEd%z{zc$gCD&HbZO#Lz;L9x36N;Upin9sDN-V94CwoYd@zz`Ye@L5p_EV3(+%R26=6OSVYAF$qxYdy4z! zs}+Z9u)iqtS^$x)TdVrT1xi>OuP`U0M=_o3k2r_CY8C|y+!FuDuXQ2!@XSWOkHW7_ z+^|)*RgN#nzz12e3U(hR4bLIG^#W{b_Hih7ebhFLBUM_gcpH9<1$=hS3sYIXU47)MK>ws@aX8&)q^!G5o@uj^dIlQL^mUz$SC zK*%G})_L>k+<82H9ZZsi&Pqb>N~w$2YwR|TR7tEKRD_>O%u4$EuD{e)8Da%CwzB}Q z|Do+wHYLu1Zbt||(W7t;4@2j#qG@cagEa@ESL1v#W+p*S)rMuJ{OXc2gGDj+36Z@>;8 z+xCjnv>tf%^bhU0vIdWyeg~c9c27!IN-_7U94(GzLbeZ;A5huowunZUva!XVHPF_$ z$|oiFt4-6r-+jzKENGm6VPBw&0`N2$m3+OBdz|Sc$fo&MOW;hZCjcF;Q zroirmDT%%MmW*x(s&YL+%6vC{8ZYG?2PPcq=jgr`CfE7~iftHw^M!J9_gigr3G0zlvXh6)iz)WziKl%&(rjdpl4EfPuc8-}IpziA+Tl|3_n)LmNgQ}>G?49{aJW#anh3WaIqV+IPes=tM;0*;hlo~i* zPyC6EkxO(if7qCm=4A0+vva^&{BE*JxLnb^Kc=enb<|W)_2xgcs|SLGab0MSjr8<0 z$;#Wac~bXejrx_?$z?TU+CW{=QjcU7{hN*C+AtOWiTCEWtR_v$lTT9kbglYXY>-jA z0($7BYW$N9QmxiTIYkh8yhDd7I^h|gY$(~fvU zficzpkm_zzpf zF$2k)y$r3%$qVVe^tQ1a18VdNE|gwKEHL?)KlvXj*%aori##w@Lrm4wNP5VI{_B!o zuzoEG!(G?fM*NjX@yPO0cd`}^Z>CWwgE#*6&xim(H0-uYk zTNrh6$bXTHin%j0kGMk;lk1Az{S)23*j`LjE|9!T(vNML%gpa;H`_ewv9TZ2Cy;7_ zOgO>3Yn6#U;C5lsh+~Z~sSi`*OCRn&jum(V`j4a(p;2U>U6hC3Fh@fW3kd=?;H2K`qJmB@D9Cz%e*|MxY4ldxs?;AcumjKQO>`?czznckviP$jkI z=SQlU?ObwXO{F_})tl@}+&;1rT?xMU&D6(4uiNH3#5;Fd6x+-SnrD@h4}O|?#r?cl zQTUy$y7okFNDeL0x3QG$o*9zU=`~TGCR2r+^!VvedY(GRw-vX-N2l~3y9@doW0f@E z^eiuF={fsC< znyfAqhx{Vy7;{KVVPlKej5Id+AsjNua)>IIvNYhi5@f!>S5UwfcvJ;|g&+woO2j-w zjWrnbf&+nuGU0K8?bI?lM}9&vRmN2R&_e&A8TxrXkv_VOsQfv}oKqY5{M$EUze6+4 zn(^WLYAd-&qG%x`v%5t=#K36{+R?}O`bt}xw4OFvW}HYH8%68i@?_4(3BVvOK8*6; z_!>7b8#cCg3kJffFA#y{>{lRd=jOO8cS5RQ^djDqWF`0xGu+#j{zQ13(R{D+#M5lR z@TdSvEj~xEEC7X*5|2R`+Z+xC*|e4DM5boe+!G}nZ4Y<%={|-sI&ZeRmg%!~<$fva z^_%K&DVT%MzzT8Y-ND28mcjMM7RnDkbQ!Ko8D{dDO;vXX8y$Z;4ocb|S2A`m2R{D} zdqBiC4OwHo@t;cxfC4x9mpAexP7^wJ8mkO>S6S!wmiT0`l@?~%vAW! ztm`vpx=tTfN57RKHr7XSu^kWNF}7jd4_N_UOAy~_8F#XVL(2`AW%tc^yRBNDZYA`rJGM zib#UDsGfvW1iqSSEZCBtHP3rZno%=aK@Rw)?yADe5YI)AB^R}O3MuTh6FSSpMZ9fQ z_eb;?AH4*ual$*DCtE|-nrKhQ{<_~aQTDGKt|z|`#8ziOXOHpY2vUuB8tvBKJ%)2t zW9G)j^s znaa({6TNjdqVwuJ994X)+Ub>U*uz+3Q9pa#1@|$)CPp{OB3nPSP^Y>52M&3lzEx1q zRT*@*JZ3HW&a9*@0+&l@QAf#0EG*}aKNM0p>?$xSKr*i36@;iQJnfSa9&=cTtZu8z zjQ_qdf;S}@^E^EQKX(u}ijm$)I&{XR?CvdmZ}{x|RQ&|07i;KRg;RQUi-^t^f#NW7 zZx-{Msl;E<7;U^WB7wYP2JmFQ+q%M5!7sj5V7HjPh3>ZM+Hfnsq!y`?AE@qJjkX{DQjd`(!V#0MnW=vDfa<_4MtM8pqa)LQMRdhQ2Q&jy|BopIF)HW9$ z1dl<(g+sckk#JXedOe_BAf;Oi&qU-)vqH%NZQ_>&FAJ>E9LhMl9dU;Lq3M8q&94nE z>1hWJV%9i$h78qOUGbIca*y&? z4=x=<0mZ{jjAK@mU^~q}`YV7+TDynLB<2~gE0df_o6n+SXh7Cb$qMr*(PC;d4C_25 z39&h~xH7E2EdA9523U(5$J=$VQ2y&9UF1c3F>#lgA;AUm&&?FNgsM`vuGDIjvmP3z zx6xk#m((_!>x*_O`lIXe4DkXz>>rx7C8vU2!8V1lX~QW^Z-%Nh?wj_ohyA;Tq~#{uSN3RUl*Z-` z2D$?yQ9Lu{XDADwHP1A&OYnoh_;LNi#^ClMGDd(s^H_43?5F#2n;+xDZv|!U{Lm1e zg8-!3Gs7rYvU-3?U60zLx75o$8$}BWahoz^6n?q>da=or_V<$yxIAvP;*MW%mvnbBFyD2oP9g?~ri;+C|5m(MVE%few>7#HD=G z?YI}{=Pqg}1x8-U9K>8SA%7#%=z@91b7%3mYd1yt>A3XMkn^moq)cXn|6Bgt8kBbiqJCd(>3Od zu5o9|b_w;XDiCq981WyuxZtWOU9(Pu3tJ2Y^^zo7#_YPew_a_U+0OkH&6W5vm5F6% zv*av7>Fy2g(^#uQIlc3iGC)FyTn^^=>Hluq%aDl(gg&`P!Gcb~oDPlo26Sz{ebMda9NlBued)R5K;S(zRW&-z6_aDKb((9{>-m+E}{SLe`jm}y`E`B^MoIB5d zH?x0n@bQz0BknpSOFq+3j!A!2wcjFn-|*P#3J?mLjjzQTGQf#xRpL7F2&!VFrvqv~ zBXN;!zG9wP&l6?q`@jjrDlmgM<;O`a7^6It;(r=+1$YN~2gmj8p+76JgZNLa&X?{r z|L-*|df9=`jR0P~AMIEyzHNI2Wzc9*0H>FiVnNYcAa&1-=t^$P9 zVXrX=?q2-Hh-SmIik}qAGbQ5X(ZFP>xhQpG%wSb8k>3Ke$E}}13MIRocA*tznlx7_ zoR{4&4|1(SX9`bx%VUUhyk^Y9ynW*$jVACLN{`l<_yrY?y@s}_>=fGOVNd1K$w?MA z{bPX}SK+VylXA;GnUdQ9#U-_!b%d<9Sv$JtfIIg z{ebR%vG?A?@&gWR6$9^j?@z0G#irl|O?kZ=6`-94emG@Bhr-8IIal;J>U?8@z{r1S zvT{!`%W+&vS%1u$MMd$IauXFjwWf2H@238H)IfhT`A-MsTj5`^-A$`Lozj?Qn^MFH zg=9VFGMoC@X^3>t z!35rCSC3^CabDpNfsLWX0ujzEt*ZS|$sfk^dHh%8CX3H7`F$zuON1GFoYIB2e@v8n zJzR<_WpMl=@1To`OT7HR+8W=$Bcr&|AgYq#JUjlD(qeKAqC5``Nz!exWNmi=S3h1p z*S0x$*RiC1SCTB%x*^m!DdOyN7Xir>kl`q?%GCnPMs)r4y!J9GMLxam;Ftd^>my%Y zvs&rH=SLM#I!KMZldpWk`p9rB<>jFe7jnUJZ_AK#NFb(}B)WO`JnaNCJqo9mAwOhr zY2XS{nHWy4Wq*ZN7}uMxzSV8yobs+)m|ZSdUF_{0^iffmoq^+$aseO`S@M8LW)j)J z{eb>uJiqeyH}!>H97T4H7s9qx#_pAf&2_uKM*j5CdVND;zER#g1QYV4kZC(K#7<@R z7faYu@jem39lRc(yT|Ebe>$$35DFkcvs>(6Ci_z)XlT8!2ZnMNy`GQI&|EQ@+j`Ll z?oSi$S_XZ-zti&#OwH+Ap0qv+`;T-@_SI>uJ9k3b>R#&!Vs1>)JdIM|x;S>{cy{`= zECI?`q>MLf$G3S{x-VF6>pR7I%7DkoD+PE4AV;GRqzr%es~q*dzvlt+o^mkZN#7Cj z8iT9BS#h@#d3hJ8AkNl_NxaV3M!oXg#B#gLQr$=3nWpMb$L9*L9mu^ous5Y<8{{~ zdEAAA4?mo?0G*>Z7R@)WP(ly7M~R_@g9n=rZt6v6v{uz4;w0jy>ibOlc_@|Z^RZfe z4nL=fivG8;HNP!uYDJ9+XZsHGMOyG=5P$l$E2qTf(0(iiawLPw{QR&y{+pU!WFmr- z{3Ge14XNKwk*!beQZZ=wX>7bob+@=I2etu%|3foU^N;`jY?ALxubpWC)fBJzN+b1X zbJls$`6c7@ELa0pyo66d-a2Mpac8DVIvlNEP z4cVkdJ(Yn2$7bfNXH?3C`16rQx`~-={z7D+V}UZnX=QCk@P}cD7`{;=8@m@&*X|;&t$FOZ)nJ--7;v27|275Vg?i)eagVP2lo}^j#*o@z zN=K?1^Sm(K_YrYx^ac`}a7gPON7-}~esu4nUuiRuSOFAtMTb*{<9u;rh;KNOCIt4#SKZ~olk`ltWjYXUQiWR5qF#;n%cY&@c@%PE!73y-{O*0Z0B1ENnA+v`W2-k=XA@L@d&wR=8Ri4 z343~!0oDeT2^dG{M04i%ev^#SoG1o)4@PhU8{v=q)c{Nc+MVn9CFfD4ykPX<>UIqA z+v$;(Q}4qNiDd-*2{i^b{$I!vgGGFzkwP84?JJPrl4pwB=60?oV({C?3&2nq3HH+Q;kmZeAPnv5hA{Rqc$aK5+XHJsO?(_{mH*rE}kt(W4 zENHqF273&iej?nVW=%*m(8d!Ush2RB**c$S(PrdBq&aQ4C*L!$MZ2iR7V@%TL?NYE zsoqB}Ct%nsOs8^C8i_NgbMGKtX4>j~(Hw#K{5Lsc#6qI>)^Hui!_*oW=^ZL%jJ8}Z3V4_iEek}eqx>b zP=cS>waDJvjlXf`8{v9WeQL~d(pk&R!QVc%blD>Y^v4BEwm-NPUckcByVc*Ru-4Xh z^@L_)5aFES`tpxMkXf#bKrKOi1&}J~?erKTIluO3Cfifwu7$tsbnqiCnnON|Kz1FM zQws_IU0Z!>B}E5Ld9mLJO27z43cqV;Ate!;Fw9_vB?fakddrG%_uH+X;e#Rx5EE6t zy-M-IDl1^`vlN%8?}Iv%UlwC}6hjJnkQ9!yqJIVl!PNl-jzt@U3YVHuZ#9wn+Vd5= zbGqPqvcDM(w^!p#7Qfi}ipT^z0uOW1swvpmZg?K1=sSt`=>Ge#{Rg3!{rCA3T`jwS zwZJ4ojeG`-We&>!3xNK3i7k{3>Wa6MO)wV31d93WTQVe^$W(Qx?3)8_q9yW*n`bp& z7SaMJFt*)Q%>c`X^%*FRcAX~veN=Guv?YVb2EXqrRDjrO)_$#fUAk=flq~K-Ddc#U zqCbPJcMn`D2-s zW@vK!xL16JyNP4B$yN;5xmxLE9%^i~efE3YHpzNY|;G<=iJgR)F)yfl6`jBJ`OV@mB@x`um!_3$$|oO zUA_tB8}KsoIvGBV+Hx{!Xn8}$3+JU+5YpiFI@Rl)Ke~MfbF%XM0ro^citM_|$5}i& zupCT1zq!=6#P6GO^mHCbYDo4q@~Mx`yysY{lm7aU&O$9da~5mnw_SbN=H=-Atg5Jp z+3Q67m>__Znr$WCIpE`Fl}iJ7d2Z?S{O|It&o?t~$Klhs{~4b9|11SBbmdieQXrt=S1b@6Ud$giRe@2JQd<`DP=1CX4HtL?KpCe* zL|`lpfY&@`p)?nd)gH?uRB}z*cyE$OP=5DuW=P3$TjANs*n3lLnC4sh5uFWO#F6%; zLEhuM#FC=UWck<=-?X0lR$)$9~NK|(hy@i4F zKbU+;y7%=#pwU-H^%s%guprsJqkm`#%YiIhc@dj@8H5h^D$1zV|NDrCrS85gHi5G+ zb^u5-oTJ3ym$PzXa7b}uLDWU$|K9I(56Xd-65Is>UIl?M|F5w2t)TVL-|}QB4)*Zm zx?@>LOxTSa{zjpE;vJcZ$f903+jDK&v8B8UYP~am^`1MhwNn`p}BZaUWsQiJm zRDnZbsI5ZYU+BX`X+}7?gNs6B7u+(L(@*2Dg>ATcw7Ws?ifI4+;7CcqhT&+ztXt&J zNjOd8*A13dph|7sUxx3}0t1A6XrW4vdZZ#PY~j!ys#o5i~!12l5zxUB59WLk7oX7f%8*+ z)0OSZ(jqDlh+#&Rfz@DoL6kg;zd|s4IoOmQ;G{`K9Go6jmc9erEFTB&!H1UQ0 zcZWdGI4tZW~s4A(pYa#3p!Q>w<0}=V3f7WTzfe~4Z_VY1k+`!7CC{(5 zRpW0yIed634IHk-Ams_pFR%CT+Za$5I*%G&?_+|r{Z3AgKq&}uaTw`p1$jFld7dLa zmbEz|l7mWEx;AFT?qgAW1L!hYau-AWjzSljWdgY;=CHBa^dL(%uTB;7wPrgiEea(T zUJ;!Hdu$_ujC1`N#p>FR>I-8RxIm@0u#{oNPoa+%8=+$CqI|a>WCBLwo36Im;kQyn zFH}lqPo5VgyRqPxdzZdMC^J{D>WYGusx}MFb?`_I#n0B=uj?bc)wa6rJKd^h50WVcl+>fYo$NSuM*TdI-ni*e>H%o%dg zuSboeYsJosW6OjqGAri-5S4G(15lCQ(`V$!6&V@EE~iGz%O=q!A8(d0ME{D%Xv11( zfUWVMuBxTqP~AsDwZi(hmG^f6DGGJ=4< zA-A0CV^6;WuJqTtk~UDkqYKz(ZLzb_53J8ZAcHkQ@CtgvP>xdff^~yL;kql)oeq<+VMFr ziHUxtin$`sm>~{|(3p1yMa*P0)-AmumQ2jl)=%VaT8XnhcMwSyStqC=5s_OGI7_#E z-&&X#1mDmXz-GnRygB$E+9)j?{q}=`m>@3_^h$XcL~gw`Aiu^IOvYkEp^4JSmmsKl z%;VzCK$Q3B^ume6m`s>oQEj7^z%`B8wv#7Vci;baL0h><0g(csW!cl0T8gBN-u70) zUN3JC0N`6$5%S&VPd}%}cO2n2+INOSHLJ0AOew2_=S8(LoHI&!soK z>N3z7gdA;SJ1I-xE&kOWFJ)L$K`8o;LE=1IehNWs5%cakn4ZO?-b0ULeM7A=j#y>KaYD%=_Ohy? zd2hqw zO6RHR2SAi6<*J{u2@EnDSg0Bq76yJKZUx2fcP(hYd*1CmY<{-ZqRili{uW?-sqzo4 za$C*BKXRko)wz-rO_$J)2?@t7pr%6F~@zJE6VJE+8_#1z1#D1rN7na^SK`i7HQ_1!>eE`SKY4tBPy@R;bb=#$=L|GYQDC^8P z#0@d%3`(F63xivTc@1B9dlH4Bp$tI5jX5z`hxWTpXl@Mw)9_6MfoCxu9rvwF-;j7l zp|j8Y^X}9>i>k6IAS=*_c+i?LmaEX0@213Cs{1n4EEri=HnX`H;5zSwLrXQ^hz%)V zDPhy{QD_6LUt-HBG0@hdEJc%;`&_R|IYb$UrkzE`*+C6pB+uKFt@`7aj6O~{#>5@u zC2&)+X!xAq#B3>o>4BE%>JdKupJP*l^Y)M8MB=vCJBt^(3;itcf>1>-G)(Kb7P=gZ z5K|BFEPL^jC7(cM1t-4A?>M$vx$T@eTAN-c67c@`+_3qhq%nwr{CFD0UfEGgw|ExO zWPe$AXbfOJxZ9R(Lq~SKIpNz;7c}5?hlmaP)wqT!d+0)o)(RO>c@*uhg**#8)1xob z!q@LCuD=$FRfllJu#WqEt^M=m=PtPfUWeAI<70O0L1Lz1N;;MO?{nZP1SKHe4*PjH z(w^ii=Ju`T9V%mo5USrUTukVi{j@!BVB5vlmF!%&khPF-3rtS8Z9^3v<9+Cz{{t!P zMU!}B3^)gNi^-o{{Nbst;H-g2v8`;ifdP5%q{8WBZbqo!%m1bm|BcJE`VR0GTIAcQ zE_#Jxm#xxrs#Igb13o;{HaT(RK|FKsysuEeK+@xnxzVzhMz6OSwrKbi}dw;B-<)KQm3`<$dNQ3#W_0Z%+ivR*BcHhA;>SI;6$RcZjdfIZ!(?HUT&Tt8mT$NiC-`= zTKKUq0A{0sDvkNw=DH|uCp)IsB}006kVK7wB&T(mm5`C(@8^>gt;#ulv38pztmV!t zq;QLk9Xd;sYq~!L9Nt1|QE5%V{f zaW5Te>kW&GD^BLqS{QBni@nvhKTas8`J=sHz?(N&R839a^MC25L{Zu3Td%Xu+-&ia zi@>a=d8<78=F0M&K1Kc?+TJn9vTkb^OxvuqZQC|0D{b4hZQHhO+qRvR&PvtY?>XOh z@9DVRH=-lD_m36($666WaDbB^&qCV_+o)PR7pr)-)3UBn91mv6{NyIY5#d}UZV zkd#PcRJBIE!#sS!wEkfKjJQtdLaNL$cr0qke}7c-F_zM8tyJ5Q{=tMAh9=&oElNjN zn*tj)F3$g;m1b*0qf~QJwv|V{Hc=pWkz$-T%0_$gS3@{ycHR!O7(nGDv6>u6$7;m>Nmn4wOiJkf4 z7KOMY${g&g#h6*mZfj!c0^PN=#vvv*w}rCV&@@xJGLxBN4F|4xw#hLhw!MKedU>SQ z2Em>~M7we2EXi1H6Ev0%NfdW|9^Q@Y?BrbdItJcMP|OIPr+gis3FUMd&YZYIGxb39Vn%Y8D|> z5t@&P<`h}6B}2ihp2CxiMM&7m2%D1ZgAy{P1mN0*&53f3R2}Z zfV3H^n1VoJnZt~Wd+i2eU&kHb3xp%bo>WZ=GubD}humH<2-)K^KWD}=e$A5BQ#aCH zU68OPZBo9o{vMQF6h0qAL0++)-c-W%a=UP(06U?^9owE*F0P zD&pr&Bm_vuva` z3t*n6QX<2>TFW9%8VeH!-6q~lo!oBIdD0>o+(YVdK_|Tz5X*H(19i^rosxt){M;Sd z7_2@%%YWsrm=)l(q=Gle#L;ET5<nH_MC`+3x)v|{N^9bB&TGa|_Mbs+ggi0| zqAB&nz>pG4$u?uDg`*OBSUX8!Uj$K+!Fzbt(1)N#&6w(1rxCTUtlgd~xIVzELndG8 zS8%LZ-6Dw%Y^a>_uJ6WZi*P`^^#qAuhu4&$B|ndP-QTP%$?VyfmPzVTfDhE;g}2{7 z-AbgPH}sGi?8%Hmz*_OsQ_GnDP)rC0t_QF~BTc11{l^vM=D4cARg75jbas5?34;;z zEy^8`15(GNPFTz9?D4QQJvS9AQ3{Vg_aR}H^29M!j*6)y>B^&$Y1Atkw}I8f(TZOt zxq(WVO7D+cUb)#2@sAQ3Sq-1k-eA-nC}+wn7Of8F&RSlo{^Q!Gsz_u3N0$9cq(ti3 z-2x#KzmfSFns~VF!}*kxgQi>^2L-xapPWa=yDF<3`{F@uB{y@8KtR_=L?w$;D4V?r zwaE|+P>}fxr1}@={n>-(Vy^D-{0~`+4)Xg|&!3g!$3^2B_5_aF+}9TT-nX+B1rI+j%3J{nfVbwSJ}UAMLssNBpr}q9QHVVMFFB>0-p(qndRb`-;?gm znS3~iUR3%Is#DK2)P5|U-%IULv#oJ!H|fTEfdlqV{?_IM^CZCmuf~U0)vXD+u&qg) z&HekbBXKD^(uBVfdeUC;P(TVt=$^oa+?y<={!ktrZA*Gm zo3kYwRf5D#k{(IOFGzZ%p$Yn=hSk3?J%XqRYX7pmon$S|P2VV^55>2(2-;Z^o z03hK_#-tCGu~uH<^3(8pbJ`p~5}u+z=!CkI~b^O|F61Us7uH zo*p9SR#V9oZr;&0N^JD5paDdvkjzj2j`JN`c7=>|<1y*qr|~r$zkVE7=TS>P#&zzJ zRrYH?sd6+r$J`$74i*Jax3^JND4amP4wWbP(}1WHK^>w)Z|9JB)r?82+LQglI6)`- z%>RCKL4g6OC*x*}C6bexxI4vXMhUDY(qycP%WO=aWOf@h<_M}OVeh56#LWuCMJGL> zVBOQT;Prma@uSqAsLpNAAM$3|jzu_rOQ1L{YR*TAo`i2FiB^$TOF;v1Q^E$D9s&=p zL$H8ZavG%py~ICnC|IcaaT|J>J6~aIuWo(A>pfU7l*Pk`XW*WYDcBP)KcFEl>vFnh z5mE!wa&03it`Scv>=gJjOIpT{M=-xQzBq?4rmF#K;^DQ+$_P8u24*SzJ~D{eC}RTw z+)&5A4=yGv(nxlq=op(X&f8VFtxKt}NPj5&ZAM3-@s)T3zf#6SlicdV{axaAkyOlu zp|OWb6Cq|CYGSdiQ%5-Reez6vZS8UfQvw7s z&iWAZi@NB#zd-*?OKuWL`T5eD)0*qzA5Jyii!p;;OYPSc^bqOhhRQKiTy&vF^=xzp z5oXIYwbZ-;!>u)^Et0Pl(NEr-Z|aG5KDyMCOhqSfTk!nFL|myeAs?InIT`=+dk`^L z^w2CfN{PO7En`x%>R4lR%+lSEQ$rpg_S)7E9WR&I*vKe4%Ms#@ zwyyiPKKbiWX5;B;@t>KXtRdPlW|Bvx==gR|i&_ZuH-)o!&Z`d9MR9Z_wbc*_AtLSA zRHYA77mhgD;50z;*7xV=4#l?Ae9676%;>#NoT@8@lTybFjA`qJ4e zvmM6N(l37QCDxDv))673gVqom7ZH>>Ie>$!1GducA#U7~_z!O*rP2qd*s$bTr_cne z9ntqIG9QZaTZ}z}ws>c>_IRN(vSZUn6qP}yF#R(Q@ei=bG$+G zHgX}RS+=KFJ;@M%{;Xove88718aW%(KD#4k$$?22>; z9C*h0dYpf~XemDc46*u&j_;zTFbTDPh9h&6yE2Stv?4nj?T!FX#l7enq#%>ny#-H! zk|N)pU>sZ_DRr%3!ItzV8=xogGvyO~j!lxb2;ZRl;iiEDd7->k_M zG04YAgC)c7lsX9pyC#_w_V5dZ^UsB&F`bQ|bi1AFEI!dqez;<$Rg7yVVDCU9tOigr zTil(fDTJG6CBw$iBf_DQm4ro({4Et*lU;ppr^O|O=Dl1KuHr$>oxK?J3FPXlINaRUIRhB?;tnOM#2 z&XjGbz2YN&bNeJ$PvM{SHH^PQ-d+~lPsx`BPltYBLLRB-zcrG!_51XaT$k}@p#Rf& zYoW?$(DH$dw!j@T;a#G4S-0D1`6I@D<{WQDAuKmYpqZ_k<8EW{sVnVA)wzh5luMUi zB@YDjvS29#-@CDzhU%cA8;G_^X3!82rbn<3wLbmx1YQnwq53c5lj7#(L zIG+pqt(U>!(t^B@X7%>4`Q1{n2SW$F<1_Qd&-U4Yqw2y3DV6BP4teS|fI!5DvZGey zzNEZEy;nos#OZbxPpb_s!rQq*Y9Wy~`<9x|);(hHR@78{!U0{`(#xVF?HTvvTu*B4 ziq4$;!9;x89R~W4`k$X4;1sm8c7PJ-t8ka-tM-}Gj(hlP)#cTM z^c6K~~hGefov7>$w)zW6)+xi>48<5Eeblfp}*24 z2<7AWE=gHqQIy;ev1fY=W}jB2-xZWDNli!5Bqe=^OrHM;RcF3O(9E1J%WqR4R{k#> z(RSQ!*Rw@>Qt7ENnH3pUNtGR8UG!g|_`8iVtRNQtE1NXc?9HVC+@sV`nllQir8X#v zWvcRPfR|??QgTdCh1me|1$CpsJp8IRGJawe=@&cz`ULe}TKcB+q@n@Xix#Qy(!N8N z^3w4~R?*KS*8s611=Ls`oTJ;bH0H5Od#Np5f+V1DcDA(Nu2jXjQM(;2pp7k*&2;Vs z7R^>pSf8V8MW-+}HK?sjTR514laoZv^ltoNb5qUE0`?fEqmh!BV%Pxmi;}*Gh^d$F zruVbR8~s@FPAVJw0y|F2;tQNBi3cEa*m_AoZ@n(N%$_W7eNwu~8Q#Sb3M5Wc#^yR8 z2YMT-Gp73<(Uqm;$@oZ^R{=C-y50hgBVrfCxO&it+n&oyv3OARu)%44G#GwbmQ4+@&sB37coeT=$Sj_9;9$WF zc8gdz8X!2pAsHQODlinrv5s@(kA9t@*NPNlabJM_S&In zQE*xM3xp;zL02V{|~`{tJp;+LqR(wYp=+lrvx}^Xq&6+sE$~@ofH8%jYheo8y+&-OtLj zb3#BwLtv1<;-7Ll+A5$df4)2i%O7YF2dhw6nL|#@(lrOIWzC~OYz#w z13R^@SD(NHW~;4tY54hUb{mSg)I!}qJ?C^I-qL-QjV|rmeXo(1@Xu<}Ga!6#8=y%@ z|4fD76ANtvrX$|0rE6!rDd|~w+aU*fKYu3kl3d1Y*E~Vw{uXb3>cbP6EXT%RL2$ZK zs2h<9KCHbaQ`c+fmZ&YR$;Efsp91;dLHp*i1l$dQ19f(?<4STeOdH}O!m~@SvygSI!F zNn>zW1LPW;+zy^o+A&*jVlJf4Tw}qo+}KfK(X8={;go`7O;NcSz)wtWxWjR0V`HB8 zDNGx~QS8*)Ic=E(PwQ}O)v z9+sH$@ggl_U1mq!N!5XIrMRfAbg~S26qyY;FR9;YzAv{YChT(Zkk9=n+8mGWqI9jL zSQnGX!cx!l;K0q!svw4dnGk!?4@9iG!-$XB(vjK$9Y1W)r zkAo1F-Kv&fVs<4_P0(C(n|yKAPqx#6F72_vJm}RPmJaI5P6?~42oyY8Pv;jkPYtdG z6kHz?!ain2j>hym=3PE-i`0%u(NyPGhC7q3_(571!Z*V50-M~ZSNFCZ>`L>jL^x_S z{=Y6r$A4Wn$LSXzw+f1ewwot4cl?9np%G40tlkbkYbA(Loo=t1WxRACy&d}9a8BKr zwnQ=0`E-GuR6x1eVvYW8(YQ9xzfYCUGzN~B*jl5d@To*vqOO;)igU4c+yhM`w-L-z z)_ddAgVTs3Y)2H^y~eq*$RNksqRBhk*z3Fe_W5+SMBJFy$?Vqa#S!FRqPq?#cSXJp zS7n6p&k)0*(ILfGTWUUGBFy0aBz8_t-OjLv;z446+O01f&z^%$$)i@_;|^gJ?8QRH zUGVEm4Q#tK=xFKChIPKI%5H!x6qcjH;)0n(bQ9IL_Pp3=LPLAlc51)?a)6n5IN{2S zUA%2s&oV#$uRUpD>2U{{&X9FE>QM_duG%!G^t>|s>X|@e*5n_##;qV(SM+M{6E6khQ(m;F$v-B_jW{9WGDx~$|3OkgWuIAtoHwt*(tpI2ul4p4?EJVd#h5fAr zi)B%{sgqmu!_-#|Y5B$Xu_Qu9lpI)ET8U1^?&lR6hRC4p9@PBOfrRKa$b9NZtniw?)qJ_w(A@jlhJS=p(^^|ZqZ$yqsQ&uc~ z`1xiT6L~GIa3oYLF(pSe$ZA*GlKbXG{e7M=k?wT8n3VLx(Wnb!zdzurc2j%ITT-E1 zF*+#Q$D1SPHsyaFSzFIKt10%FAhp}9_jYbdj3Z!QyOUg{ZnO_CsuMrObYO%ZtE(F9 zwH4{5WFbFHkFy0vD)V-e)HCQTs4U=U85FQu7=J5hM69XRNlcyo_kmS9@J|1MaWDLu zpL-;XgPLow7=OfQ-5g8W6}C&U7(F(SN?Npxl+rb(F<&7XMgph_y$7xy{#}8NYJzHj zSp!znwS=$y)8TdkS}r|lZR=v~q=&gBN`RrRDy!we<2_7A*m`&%S3$t$WNAsRyI`#p z_x{dHk32VLEj4%}!p8^q3!oczQKrg$J(S10Q zxnGe$v{jtk_!CppJjxc_#H_^VkoR zV-i^t%}Y}74ses3d1~2|PvmkTl)c27=y5mQ>q7riFCim#R&n%k3ci3V4SZsrNAE3@ z<020*3<3=ea_$NU6MN#`~C%5)&f8pj~^*MZ!gvH31JqzaT?vvsDDlApC_Jyst#bx7R zZTCQ-GAO~IjF(?y7Q4H%&BO%J#R=;H!OrWjHOgw_|Ed=7ndi*0>(af8I}2;k=WL1H z_VT!UAhO?Z*wZ0_&H?IemrbqQl+Jj?`-@N9QA8|5;12HmmjWK%P4cGtI-YgejOW!K zaUMVM6q*ew)iIsiUXp%^aEpgUk`WU)#@Lb85&vSjR|!u8bG9I+I17&JFg($KoHFFAbiN9FM>9oK`5XN(7ZViIw^uca2#?oIA@McFC~ZmS=& zJlP{z12#YoxzrOed%-%&HPig>iG{T2bZTGAi$r!g7a{Yvyt{nCTIxp?VZH!dc+hdZ zLCYTn{M!$aQn;YsAyDml5_mK$sj&B$8>3p-&_}p*5GDVIf5!!r(yJC5|lk>iUT!frB~!CYpu>QQ_-!~Q%k4x5Z9S?#uim`=grY6 zxfYdLDm-i2HUyxO)`fm1n|T%Wc5c`~7(sN|47+y*uw`fstRQrmHiYEz85SO2zr0QF z)fxA|$AW>SepNXS<1ayibC z=Z=BL^p6%tZPgLGn?JoE5(D}}Ru8#+|C~*Uhq1L98V8Gt@X43bJ0vi&otJrQk(1Su z*L#A1`+h7HMmG8?4aUTbi+vVtNbPk1F7>B` z`|>1VmKJpR2EtXhV>&mFZZ+I&HKh4O)evXz!RV%@b^h^_fQ_c)w2UQbPx@T z`7gHQPFNlZRI6=FA`gddsj&tYvOfJh5HjR$F%)*!75EEeMFTKhp+^FksDOfkf`Nbl zoLB%KAYf!5fSHPt0g^)iz(eIX;eg-*qy53XzG8p;e|e+;3lIT_YeUH}_1Me(@+(VX z^ls8-%CSi!_?6fgi($z=%iY=jb3&0yDFm%8H~Z$ecxlg;2trRJGm~10@On4Slv1Mp z-wLNT`D6QR_eyP3db~x#Sh?>DMdJH;t&_@1Crj&#DK9vl^U^+zH@&8>#n)V1b$Ar3 zKIM9-pCcgE5G{1Vc^M=VL5;rwo?%0r!CSRIC z@jg(Gj;Y5%zdm$eP?QJ-lD=49I3f)KQaRvu^RwGscu32Cz|!z z!28`;FXcy3G(P$AU<1bFc0?+XHQotp)k;48<@4ijne_vFg-ZH+HFscI9?L7RdYuB8 z%+H@t30XN{i5zVBnK}x^&**ssE_{PYBgQDNT@gI0raOeU6z>{j_(&RRb$tNCcipoV z>J$@~Vz_g#DiOV7$5@v9!!0hz$eq(zT#Mh3`_I@DV?7M53y!adB;vx_VHg=X7iqRL zZX8_PSlH4RCm&-OReGt7TLj$#qp9RJ*$m&A%4p~{qnmnsr1n2pCao2#^^1T9F@N(c zEZIsH^{n5EPC65QvW5u;0Ne}7(tgFOqGq}cZ+izjE!y^jyrL8UtDSEh8yqPmDjXIU z4Z>2dyx#r=y4rpzQLe6S4#)vYF}M1RRT_21)iNWz*Xmvvis1+P#4pm|d@Xs|q}M$- zHXoOXKU`wzVZPa@Jw2lkA(7JI?Q?%*vwB$7GI|aBq739N2G$~iAbMeSyD;#j73d1u zthTm641;V-`3r=zs-(D#!E_hXETekdd~cPcP(re2H}3IGA1FE& z_0625QV_in$&kQE!Z#K3aOk6*uX1#B{>|RYL+{?Y2z=&&URsVRQX>8tk-P^tq-sym zGbN~r@T;ZhBk7A2V7?%Twr5QoV?uHA3e~5nx7xHp*XI824u^xnhnQ`fKzr(21mGPwdw__tHn? zfN%Zs`K>AH#_{`--2tePbUZl67Rp^0ueyCx*K3#$7*34v`xoh zx%fvMj5am}wkl%!up&Iz&$H-@IN{Jy$6==`Hk8sByuJ0V;V`IPEWqO1T{JwJ4IVI* z9u;Fvt$t;?6o%RPDC7kD(qev!Cj(N!>F{BQ+cnq_IF$P^eL5y5uN;1JczJv+Hj`N^ ziM<0KrWSvJ!n0`{{ei97_P+q;#o#2v$DK!AzwqD`$6+08_KZd#^`k(RK7U6b|FFdQ z3$*&E5@%)&@DJ*iAK?-tl@&ODv(_SK^{z%c`N_8?&k7SzYXkoam?1I({NSs($ClD* zuy<8a=|(e<(?k zOrqJ-=-oa$oXH8p3)XFxb8jMJEj}*p96_)?SiLVEZwQp-qWoj;N;LO)nDN5Fry8__ z0=wdV*V6oanJRGhBkBwYGZOxxS@}^&$eK#H=a3}d&|q|gO0a(Kfx!&0x%&PAz|oYQ zE(x1o4aTuD_o@sVTyTv&w8}qiL^SaC_oi+e8rOlI6(!|MjSx zuzv%bBN!W87Bz5pqodUF53ok=RYz9en2s^qRMpc7mUkn!cL7we%nDwx?i^Uw21fpY zi>b;HfeYdRliN>{+#tAAOBYcoxrm(skCitWRb7)HNO~%I0S2^Y#E(&)1NU7Y7zZ9E5Nr8nU_rA$&E05oB|ZMj*D}adcIkVn0$#PQ?;%2F69t3H zL$q|&V@VOjh#?p#PjrJLMtv}*<1Wm-B5{dG-egFnP}K1abV=N*G;==O1+^$x-gI1) zY5fYn-ccPrI%~iEW)Jm~ep2|SB^8*al0&ZZak;3MeUYlu_Ur{a%^M`n$d^Y@HSn}E zaQ8u5Mori2pNx==ogAhDRL?!JjJu$fX4rWn&!FORdwcx%zj*0L$&Z19t*D~b8OvJA zkx4tgV<049t7N>G!rPvxQVI+W0==+mw~-DJN(kVqa z54!|fQ%EJo4DDiU4X3bkEll&q%(Q^T4 z=S5A&0zumK7sjV*w{v6O=NOWD^Z6|l7TJF)2uqlfHHVEY-G_4^*ovo48$XRR@+c-v z>B?4jfIcYX0C$DQcOIA1yi2{;x%`j{&Ha9Ih#RE&U=NCpQH1P>qek)o zoqWNINly@H0HKPqd|Lo@K4BxmhUot3(-3|rE1{$bi;o!&VVU${Es2I+@H6R5(Dsm& zzJnU(JJGjlM;yhVtgi>x=su$V_J!}Axw~ebf9{agb8^;?tqqBiKr;NO1y4UD`1eR{>TaKIn17vNdsL2Dr3bAB4v9mu##*u9~G}Wevx2jlYLLj zea$7E32rD;d?D?HG5wFx=EqlTP1B>u+lbPHP`xo}bAM_)Qag1>PxVvoIGT>C6|{_d z=d7CDrq{^fHzPIJ%VjwMj4<-DH&tkB)x=d%_D18qux3>{^&WZx2V0nk4MM)*i>q9H zzEMQh8XbA1lwv6b@l=(4fOBv9FSc}j0XAe(tajZKFz?!WOh8ljEg#I-mO?f+lJvLj zZ`Jz?*!hds8{tKGC*Mn-*}cO6u7|oWxVjrE+hU#J#yJC9$|8H-BWy128S6);U^mdk za1e$flgIB^D@OrC!gC0Y;p=j~H$8`QQ9&VE`>zf%zV@&M_R8o$JOJEZ-PnsNmoKfy z?2%qMC(2i%cy;j_8)-gY4YoOQ0Ny)S&Ku{6EFw36PU?B`0}K((SGznb>jkWr5;Wu; zjDX2TCHrec}``yC9h~y4VP~*_t=Z&qzwJ09Y=vz(- zWFPD;A5=ILSu8;tX;~Z6JNb%Iyhwd0aur;h3CmdHYxTFuq)LO`_*3SlPLMD*8q9!e zf;v%M(nMX5Z*T+4JXr;Qhn{}GVcb*-s*`Vj+6a(+pJ33@7jAoGsnA21`}vkN!l&2D zhy0WIcyqv@a}$}3(W&n8!sQ!8METvk{$_NL^{%oO+MiON`aD&|4~-u__}QQ5kqPI^ z@P!Vi)VL3HZ{gnM!mY_u(WuWw^AYgt}BkTk$5>o!*w zykPh=-RjUTN1n7d)#8m0jez99eMp@FIf-{vWK+*`fA{N#XQ7CA5fXZFI;ABp!%Ib? zY9E`ts81-!k{Q0qL&{p^G~;E^M@i(y*x9LSnqDYZFVl2JfX}s--lKCc~FQo{m z2*{)yUKHOGvI$@TT{3?hhW%+(;CP2h*|a_msQSV+Zl6zW**~_)b=|r5Y1*uwm>$+K zELo;q9k9RWyq#5|5IL~cviDQWSddZF`4*W-26br>u=b-RY}>n>9CDWy=`u9@1uCVg zME+=^QIU@W%e(_tY}DDAN=do<1Wgj5l;zcbzmS$B9F!%|%qku9LH*)ZH3@cGOFusb zBf@19AW*?=xsP3`nF`t7K5o;O^@4-O$d2Mhu6tVY4`~T+;`HmkBRJbPUk+B>Q&$=V7s(p{k z#P$s0HL5a(iq{%5sJoH+;%f%aFA^Lu!3CD;Pmy~b`Z#O&qiI0twyuxUA5Ta77aEh zp?pG!y7hXNBI=OCdMIBtRhQ|OBTM=L%Q{S8xxfniVsfK$ye;3mZ8~CziE$6d8c5E4 zSN^A*!4onbeWB13MwL;CUl*30lV{Y$!1rEnt4Iaeitu26!4LoTTHY|CC&v~akkc-vp0 zFZqMzuIFBcm5nOM%2{Sz4otnu!6{2nX8Q)PNk5quC{Ax+pBuM;9L|DV9QL?yd28oUi~Q{)|HiuaR=TcO zC|W_#XYW>|0+2UTNd-tQ6B4J9I54S~REeGqHBE_CEffFYRXA(26?4V%Rzs*(bo8FI z3zDm8K-eKcqvd86_{~=(_mJTt_sj3_|C_h^qNQ`3+uk^?%Bj@*)BAO?_&m=pQKUA- zUqjt8n*SPre;IjRc8ZOx>-$czdGS3UhwnDDBDX;tr|@)nutkY=<-V2KtPy~S^&9^$ z(0IdHugR^eUXLV~(SqGdSZwQIzc`77a6V~dh`r+s73d84~@6(0nIS$D}l}Vmj zisq4`SAU#~n6t_wJXD>459$rT$xy#Ej_2UA^g2PJ?A^uwCK>Lz+h#_Swm&TT4bksu zikS<4#O|QQwegcj@m=ZK)kZ=4^|Pc{8|)z%-y&4aCvmU5Y6L8XV18BC9102$DuoF4 z@zybVbI9YbN8>lbv$NK$=_Q-yf%tqN1d;sixK#rx!TH&|hh+w(zl^EeapL^%v}P!h zWNPmoHWJ2PX#C)-TG9?S!xrO=nk+rf`cCMG_bHMIA7z=Fu2a9nbSX*Aze5`z1qB7w z5udIVn*=t{^w;brsEVU2?e;WTe;RU}l1GHsLkWB$fSse=k*nqkcllU8kto3JK7sK! z?1(NBQhE}6!~Gwg{O&`vqS}J>ocn0^g&dAoV%^FvEbRvxLhk%j6Lo;nzefxf=r3_iqV(Kt-~iZ?-@|1{Trg9_v=QE^xWmK)uozUg6L)%_cA6fsRDcJQjW} zD?ZEYf;}ltB8c>mW2C*d4>(yY3?m*sLB5gMIizi|$7^;{O1(rWCEalAdyfDnq|08f z*6tGsPL$%8Wxx{A=OUQi=8d;iONpywvb3lrrD- zgMNtBzs9eDbu?&k{ApN%AUlP~d7MiHT3wEiQeU(wybw`@kr7-|V9l0lf9qbO8Dv&J z<+OOg5IsvaJ=aFw8Di<4e&ky71{5fmq{fc)$H)h-;d(`;5`<_yF5=;qsc}qVG0hs| z%~#_RNbqW>ylWFW@RfcL@Yh-9I)jdYoj}&CQX^SHc@meBeak}DEVZrNZn$t^#bNfD zz57blTO?dXvTct^@yE1uiIHyFK2R@V)ptz?^FWDrN@T{-4z8L2aA8>SzC?#$u`(E^ zry(=~W}&%}^GUYOqoP)aXrTV0%G#G8^s+P%^RkzJB-DtjpO-yo zmmGT!s6+){Bu1J6b4xGguBg(ARvmnMfx$dem;0EV$|8mef=<2qD~0ru7&D-IeDus3 zT^Ky>T$+W{`ewrOIMo)|&v^s0V5`26Eh>N48C*ka$*GkR?oCD9-E} z>$!L93ns<1pc2=Ry>wr2c7Eyss)M)Lk3*`S-}3uXKoj(75)hN%|WM@oJw3?4vds?7Kyg^EgFrc;+YMoP_5+ojc_V-sNT zFm^OGbd!GDP4+)H;j zkQ+UY>HLWuY;m&j)$Mp#`_x!2L!+EioBb-{NFMz8MUw_~!NFgTBGb-Be9*68!xxN^ z5`#C|^tQsSgcLTXsOB$F;l?sZOc+_Qt;S(M;E$!sQyksWKyH&ZTb8xPNp3PtbA_7es)dCPq0P)?%wRxUM{DJtf~@U`1dR zBW|NV1(-IJS;TKzj-f7FW4_xv@j&O|WumcIoc{%KDBAuDB)1m{LKG!(T2H?G8m5 z+8ms-=D2gG8}$x9ZfL}`TBT7G9|Lw|*;~(|7kK2cbO0M2#DyUbII0&hi&->WVeICD z6ZzLlWSj|>^@_#-eZg3!f^DmQv7YCeGx$Z^MP?W-q=|^?FWjih6E(u_EZ)mKz$S9` zHqj@5Ml0>xNW~u$JE~JSe3WdwhB{Cqgf(Pa;xeRmCnEtJbbk*opDBnSE!oa1Mq&aj z&Qp`FR&uNskA>Ww3n&#gAc(DzP(-p1rs&fMv}ct!YRiM%rPtjE zi+xRI3Iof&@CCDiH*f6wS(Ih2ySYO6TlT<~SG^I#G+7d^9Lw5aRtnx#?&yj2_};mY za|s?LYcO^oqgTDw){d*3#wqFjRwidva=~eV=J$kO47LSLH&@dC)qb5SeX+qu2Xx~l+fQj0}r|jvb7n0nB0FjE1wvhYzVy~6Z zaJ@C&H6~2Esy62QTBIzhh1C=hO{2Y7m4Z6ZQFfH+q065=r{|$`we%(U8U6w@!+0T5 zx5{NMs^MH9o_!OKem~kaW65~qoxcbqZzn*C%Q+^J`gG^ z(WT}VSPL;g&5hfyJ=y^MU*sgaInP zbHRrvHCq0GV&&W)lX@!s6;h4}O1^9?^>k!$c0=TMI-`kTOxS+Mm;Y-_u`Xr``Qj<> zF7EYegM9l;bQ=uxY)&e^l+SVz6!r{8fHqK7!wgWrSkR~$*u~QPF-PDU&4)F`$>A-q zq5gzE^Iz&Gs-Gdd8eg9mX6xJhEN#?Pe=pg$*dhC4#$jHH@Tru9bPgPJucj8bN2(NQ z#fi652=n9lP9^KEKxoFBQx$^7r#K<2%&`y?B7&W$g*u`{h%aZj(T$qW1&MUq40?G? zA75V)J~l!QK{_|6L5)ImHOH zGLXSVRV@FP3%~PL7acdaME;EYa}@YvuVg}ypB{jLt6?uAxC94>8ty_gjwKJOM~}CU zlbi-@uVYAKb+OZ}aOqURn)+qgaeZ_cl<><|2ja_jHUg?GHRzYXeGL&JTRJi3!e5}gi}cnPgL5D!6dr(Y>^`h4l=+No zJWYt@sj>qDI8Z(#TZUOK2Mi~+*q@nz8+DiK$0sq6VvMHEJfjx)+>Os!%Fb2=M>bpD72ck6><~T*P+W4?}VZBW&lX zcu))`Cz{-Jby5XkETdwf>Z#?`mt)^YFA#d9Bf(W7jcIgbCgV&&(7l!O)C-KqKpGRx z6iXjRB`aJsUcyy!vcJBQ#F`$e4`wJqSL{k{{AoiWV+B~83!X&`_qMaU8ZuqwMX6i~ zOej=|HJ>p;)5g~y8Wx?a#}$<-^@=QWJr7n~ak^%c%ZpFxrdu#8vRr~B{4dQsgEVqs zVd9kvv#`uHvZoClww01WfR<|dY6r~C%2Pn$L`M$1ZBV7{m1SI*Wg3UIU+eA$1HPmQ zpXqtT^4!pqLC45-|F{I%CNy*Q#B%a3JcwlV?D8!C-rj4`PCEg5k>zPn<}9lYFh4k1 zjIJmAfl!R_UIWO^Yqzhy5JKZpyzvvTZ{s_a`*4q?`zW zqKvP#pqQW(INH%5YXOWofFMEbJHPh# ztHNl{ufiONEx)j}iOvoY1V zdr%M(RQ3Za#gjy$026BUgzMXJ!IHJD^)374W$Ey9E<QiZ%9>!nkuAa5OE@$}?sa6{QG}%avpF$MEa!-f7@If9aF1`zT;;{J&DfD!B zMuxwfpSO^v%M!)UR@oV@*D6Oo zH38W#3mdfxk%Y2DW(g8%=(n;`(Y@&Iy~D3{h(OBI^3aT&L?xkYMA1KMWL;J3M}D+! z&r`c?MRZ><`nV|N{oN*ss+Z~qVT-pHK~ zt%pB2O&c=#dXUEDz`@4;p@NhqgW(2jVkz!$lcPWhKTxWrDY%A#J)pejm_>cA=F0z0 z6=$-%XiGG>T`4U#JnX@Q6;G6Yp(S~BY)iyftpnGr=_t~9PSKO+#7yO-pVCLL@3{o# z`fa5J=Zrvcl588*nNUS*v|c~d`ViHun4b9Xe!`*mh7rR@6qL||d+vqmsu_~l-cEC{ z#jnGu`H5ye5eu}bqN{ipL_@7p74u&!>&q*ah&P=ylRkc@&gppS>Wy~%pf*=?jF!}K69iutPr z(oe!9!eRl6d7QT@%YMV$qUT+@y)xd~9UlDe{!eplgHCLUvh|VkIkh$qXpmxt86!)t zP$QFRchwTnNIYYDHHj&>883&zqAYSSBH2E_QC@DZo*C~vws|2v$l4bA(CV`Sz?RNd z4e`u$;OaCDYhk_OaFocFd8Z{b^J?tWRXJKZOp6mB{7`Rv=t(O0HPqtS;VC6Hk z?PDu{Rf?TtAI-{boMvjS^OPBr586!YVS#Fjoq#7N+S+Si{`oCN7CxKr!NXGY&`&09gQPsm z>&PieGs!KZn^(I&74KM8yr)R|l;qmZFgg{cUp_qNd!!jG({42DLsnoR<5tykJ|8cj zz)zTGusPC*tW71-oh7Y!tAB8R{56o6kDRLyoIWuVg?ICgvm6nMm^o_W!D}37{Tm0) zc+Xy+$;(R&zdcmWqTblh*?zhaf=1}|FdlWrKdvpwqFqjfxbHs86WodwVxKIz8Y)_? ziCktkvhQA#O&3q5ipg%Y{{&dX47jE*$I4A~Y|FXDpU5E=_SxQR_J09;cYuy-{_Fwv z=C}5hn|vndwLLmSOwoS9F=TKgeDl~-XVyoBJ%PT`2V*k-1)W4X{%v{^@!MU}s@6Z^ z6O@yUQ3f{7brNb@6@S?1s)V-VvqUSlX13LN(V0n6c+YT8r6|qU=_3J)J>U`|xnAJ!)L;h^T12(^^7c z;iGlc%rfGSLrD3!kqEU&^2(vx)HD;$J)wN*WA%v#$;lpAZujTv$O*FS^K&Rvm4inY z_vH>(T0&7TDd68`cw2KjG8+MnoZj6u z4j-6XreOI_H(*fWo)pN?-)T^ZPd4Hf_KU-(dv*OZ#xJ9Y%}Em*g;w zAR&KEl)i&R4xn0L=a8hbL6_Wr$2!V3Iy#Ol38^#dedc(^vz5(dQABWMvHt1Z_<+*; zFw4)O(=4)2_6$UyKi~MURl9jU?~%=M_`yxqtZY-_=sDuq!tmQUc;H!jLsV?$b1ifF zHr7k2kVkDn^miI1k5|eE!Qj<49Do-1FD=E++{$^)Ncxdrz8cG;hx#=(Du(kM*Fg2`N*Un8~9gE20Ve=oDZc*>WsabJFcQNWu*Pa8K2R`((uP@n>U+~1fjCQ2anR(MWD--y7AZyD(OVnEP1oaCtd1OjMmlG@8 z`PSW>ch-L7G!8mM@?^UCJLlorMvRiLROLuM1yf2SBlg0MBR`;8NF(EoEL{)dE*n$p<8qD_|Ay`$8YI9 zYwMBqs&^OL>%JR)<0M(>Yu+)WpE~HxFYa4fo>$uxc7{n*cJJhUQ@sDkN-NxaEX~GD z?U9TMoUf?*enb6FAWun=Sd&p+NI~LLQtC;p#PYLjL2EpOE{4Uy(dtJ_1WtxVJdG5M~M=56j~_Sx}S`a zxS{yL*F#=P-hReuk9wyh`jEjp^=W79j25Y+J7pxZc%CwOp-SlOJXtIw<;wK_{nrLU zjQ;%N#5ye|Hw$tcmF$u`=N#kk7F$Bx9E5aD&Zx@X==3X1J;WVIZF*Wv4paHgt09~H zG#OE=&}5{0B<}pt7#-tY%*_cyiQxoEmW$0CL75si4)zxL8dcl6_jk#e3Sj&#U&I&$ zbRzA}+&tOh$Jt^N77q(2K*_?fhB>B_jEYlwix)@==Qom~DQirpPUv%tnzYq1&y+9XtVLFj#MRaX z`wZAI6Vj_i`b{OIQS33Vg_fRTveli?)@)=WL(@w<$8xBSD+whzIi7g1xz@(Grmehx zEB!!0X`8`w<*{p+KVkgsHX5>+ds;(%irl-o;o}oI441urrI6fIin=$RxmNnx9Kizf z71HaZHaKJ2^#W|2vYAIEX9Xq#c$vxV|%y>(e-(cbQ+5@+mTEyLb%W#KBTrE%XB zj&fxvSZ3nAX!{-rA&|y6%VL1JY-N%+TqH`1Q>^EOM_g)f4j6F~b1Dc{8CUy@t&JQG zy4?fF3|T4p(&){XkjU~Dn*kN1!{pmAPVK46r+J@YPFrcOWmezbdD63`xfQ)4y!NrD zBXdma2wC38u`v>wc*-kNUAydHUGq`!IA_sAS=q+lK;;`|N5v9zyaD|d^>MN(2PD^l zgptVajhlNTxl-66k|=~DI>_|~9$MRjD@0$5@x9RC3Ss0f@%ky<@#)p>qje}djGFA^ zu{M=b$>X!ptD!` zUCHd(8S4K^-*enNcKHM}-ti|-Xb@pG%SKqkAkq5?hF zQR^Gr7xi6+5B3|w-QtR$-WfFJS>wVNyb4(;sZS(aTRd)Rzc0<$-Wwd#^-1IiPfg8O zN4)2Z!woW;SSHRig4mLI)07y^5I4G^lg=*1D2dUC!b>_AxEa1W%8}&SXcfyk_qDz# z!6B=r%Mf=sS*(|p7PB(6x6YXGUYt1T$2|f8O%A;H_7AorxflGp3k5}9K`7;#F3w5i z#EHt*v)Df>mI48ZCmFV)VcZ}5v<7EW#Q;uOj5HkBOcJZ}J7NpWzKJ6=xW%E_RU~T% zVbZI7$;a~kFGwL`px?Jk(wMKd?4tJ#c^)S(FXG!behT3jCG9QL;aszqicc?@Q2lPh zSoJOF27eEFOVlB*sXx;|V;`QsjA|m}DZ(=fG6s z%o{uX@+s72AwRZq$6Aq+?G^Udk&WHx7s#f(N^5scydZzQ9a)JJt>!`(^7;IZu-IeQ z7(4Nib4|syw2XMS$g1fTPm*kGlsupCmGpG=jc`)4JNhp_4V)in$qWzH>)g!$_KvO9 zgTL>abaKGgj0YsIwtEeNNjgzDO{F8_m09miw1nYWaY8V{abWivy|z!xQRr_L5+^EI z&2s9O33c_SXFGK0_VD=8Pbt3gp2(auu4J4UK#;f?s^2dkdz`0wr{&%@o^44yCd~1@ z&8Rit%nl42aI58v(OOQRzL+yYXeZHS#+%g;LvCYbFH;;$pd=M}NRX@OxzNSX4^FZ3 z`|=F4P`~@)kIcx#F)$xrdKK@zij$kLHVX#?og|02ta#Tv}uR)fs*>ciLAAx7^EBp9zd^K69L&B&+r8Qs|W@ ziDC}Ue;~P`+>#cO9mI^=SiSz%u=d9HW5LU+4Q3_6RqE!gI#sL0LvYU%pTL9xD$F*_ zrz35R>-kcd*cnl%OvO`UM>9_cn5*OZI@n-KwL);hxHh-ugZpBaw-3)=Up|vn@OpqY zDSNBx5ZCQZgP2{G$_QF8A6L>^PURla*@UV@!Tm=oY^20X2-kMj(3s3bpS-LVf_Gju zyNzh3)*tpPGTF2RoSLzI0-X5NSnppJv|N(X0FBR#$LkN9kJ6F3K$5e z+EiAfntoOPt#LD!pYBzyy=zcB_KO>6d@bK31{^mX1$!SJ^Hh`7r=mkEoI1DZe0Z#J3+ONYA(KZD(rvXeNDq%uh^sk`*8zo~36MtUaP$Er#Nv|*biBAsD`WkM`Vv7R^!@|sv!n( z=Q}<3aF%9BZE$d{X^hc4t#rs$yHn=4{<}k|yy!$XGR&mNgQ}gIkzyED82JtL#?R>% z@4q+up-qE$>9~JOya1meZ<^`No+DYLiH6S7CdQk$by=L&AY9MX~HzM z2W7E##t-Roi=1S2xNgmx{TPwMi28cA;8AU4Z8PyTFWu3gq_gK8!AqXcU+?~?nv~!bVRrHR<{h)r#s0^*O?Yc4q4L+?B(?3iaM%K9$fN%^%R@U zg1vo?qxB(&vVp6mwOS@|Y?tvXk}Tbivoy07!3zQ6p1?3r+AlH4hLpB zXN-4#0u`-x+tL> zzeA~`FgzEM1R2i?bk*?)EyBJrPy8jHWYq7bd9mRVpJ%BDY32{M-VLs?+z`lj)cL?1 zjbdd(i1JHbg67tHrP32#gQG(iK@jzi~hKUk>U{T>AF7nG#Xre z}>7+V_6FR-FuuBdsvIdSiy_6kjN zxJl7Ro6Oe!dmQkO_yqC8931$tu(^}V;PGAQpv}Pe=^xulV#KxT;EyXZ6Qjk{F-0`u z*&NQIwwK9h!>&S9MvEb$1aed(Lqv1+iVaVWQ$z^Q@slbXr@yn^71KH^x-9-Wq0V;7 zM3}U|c{G^Zc${6fQ~Sgsa{>HvRO^7H8kTYU;@E=Ar2>6iUj*hA`PHcH63(}ySE5C@ z1h^7%1-He?)z{xDO4b*G&U3~f6rac1Zsl|{c%341aQi@LlZvqEt48wavm#vTqkCSc( zi0jvFL_%Ra_{(OOLq9r}MWT#<@85 z41I&=P+eIyc_^ltN)&aaaJpK}9y2Xh)C)&xMKjw!X}dsM;MvwY-Anwg*jD3a$OCT6 z7~>xo;TD@1&}1Jz+<yW7hu+^9h7Rt&o_0~ni?jf2|cfq}VTS$ce(e!FM2{q9gj@t2i^$beTtisGNj<(Vg&-&;uJ=o4E}H+mlRR zsi7-!x`Y7o;ZmWZov}3dA?iLgun|ipAJd8_raf4Olf1%GEUnA*2eQ}d5*{5@L24a*-7DS z)$r`OM9nTn0aLH+E>pfe8}~^QEWlWr=FdteH|V7>r0|(a{?KnkzmXYaK%%m0{q4*E z++#?%^agISqQ!?!$0uLNEw?3&{c95+ZO|^iw&oM2zsP)Y@Bv)#?D_5?P5M~s?S&fE zr}xU(fEP^$9Xf}v?ywT(ry%npZUjA}M(hL;_r6nepZ=(w92dA*zTF_yikxpmuawIr z?3-Ksp_pXnheUOF37gT4M4Qa_|3Y>kLw9f((@w?jd}x=KLBnY=9La4fFmXW=VlE>| zWJhPoOw3ZMKlaG9bYU{MGOc!}caD>oxcal82fpQiOn^bkyO6daU91=dmYnr>(eAgt zV;@W2q%U6IL;ae?!;nq4f zJ>{81MCf}t`I<}fmaj~jt_*w6YW??>w0i2f$G2`=LQa4#q=7UcQDnecX-*2Rjm2Ui z{a6w{5el8g=ZzA3>cYH0R;}kBs%f`e2s+5v-VBcC@t60E1{0kB8l9Sz8cX;pq^<^d zIvF2c5`df5K!q_Ycjf{+afA$8_R1v&Nm}p-DT#_vB_#7=-<(>QTDNjnJR`M&Zr)c7) zq-bGidFo7a`y-DPXb05?Zgq|EY0tBtITrM1V-XW9caH8|e=}MPE5x>JL0!DY&8V9^ zkc+4r{iRicgmX!DGTNN)nN^C{u(3E`>AmGtK1X6CEWUMx8U9>#8fi8%W;2Q}XiWKB zQIZpN^P59#c_3Py+_b?4k$A|-Of)5@6_*(Prmuo9o2c9{JNmrZAY>RK1i|`<-pJV> z6>v1l#y}r;H&v+k$Om(Kv#(U>MpXT{m+mVScP?AVr9({8^Pm7%={G0*{$_?(bczmo z8M7^Gx`AuWj*7vpd>;PpSg0Jy-JFxD=yA>`RCkl5+9$q9dYoq4V?ApbX>zyw@HMUv&6B#-!<$y-=Rfgg@c7Y}YIOyyEYy z%ifNfQf?fV7>ls%=vMoe$F(n^Y?Ja`kq2bHF){@04#`aKL((D#UKS{HEMHXW}=0QOol}9qs`b32Gd~bEcYZ$bU zo<6rb2sg$s$mC{q4z{jGU<&lvcY87n*==|MCxY(OIncOdoX3c2Ds=;0W!c9NN z`Cv*|i0Rf0?2S_YcdSQbndetjz4>bB9G{CH{`_?w)+61zBYex4tV~FXbFU-scd&c~v zF4uK=J)?+kS~5S!I;eO|#Jpg68DWlU-^se7P{ZcQY)I_@uI63U4E_`y7ZnA70H^=} zz~Ysee;>aU_^rTi1%4~=TY=vS{Pz@q14;nVKL<(#90~l#pcxA=16coY`QI!4KmJq+ z>aWcFAILJyL`wgW86v|R|M!tWDCj?t{SnYuWjN#?CJA!J+_9`>`|3d-fH3A&=Cl34?5Y*>yz=D{+kmG+bk5|6d97F@K zevy>mx0Fr0~RC~EITplJ`gOjR_gB}1_4jmUjzs`Opi6_!c1;WpLx7G4R`g32CHQqS zmx2H4On%+@E97CAP_V2&=xo=eK$nAq{`_a_#=Q3PSn$)o0{9E(nub4!1}cE{2PFW4 z$qYd-6a8^11AYqH@<*kAWcVv*6gW)j4=JuoA(f$EAN41)G7yW&4E!y^Ak_6E1DXHH znK|}40sLwHA2t3d)OEJMcA!B2)n23wGw3alKS8dm_5@^3ox9|-?5cSZbH2>&koTY=vS{8r$%0>2gbt-x;uek<@> zfxn=@|Lnc=@4rP~69B;Y0(=!$`W0k>>Fd}NPV`^F1cNnYD2M>Y4oENr0KqZAiU9B? zM2Q*lUqFrp%PIlj84PB@I1Y@qVr8JQD9~6;C|Jwi4^=>u!Qz;p?aUxUe-IX&SW^OL zRG5DSDbT-m8;4gUBzh;gF;D8LA2!J9%&Y%w0E&+zg@OTtB67xEC{`+bm05GU0QU;Ki za3U1Y6F}LaFceT^IMFZUf2Hx)(g-M+KNbX30vTSX&FLzLw_Crf-Lhd>Azu!64)Z(ATk8FCXB>_!%(g#B47YBObKj^%tSKa zr`JyYm;FQu4swQo&J4g|n9x`(0ET(}?}_VXem%zvCBkI(M_hM00SjOK*2T$T&oQy!UAWOz-|gkgn)wy zB2cKm!5P5}1AuF`pxVH7*F=N@;sX#FXe#s}kFHB;u{p}xCEB%+C{#ye< zw0{ErGx4kHYoGl8!GQ#u0BAVa7Qlyva@{$DRzpC413eJzPEo)H0^WpzP96&|Loojs z7XJ-pWZ>Yx9sqED73_)uX3&k1G5|PWfzAMqGN3C$u;Ad}7_S8SA?Vmp7&xe5{Tr~? zPvm;G85~=Ql$gQBdyRbEOaK@b5U&Ix!yzDT5E-l&3ktsB#3Qb=ftUZw1EdE^0lsb# zDS^e|V0Q$H6RQM=fchZdu~^JV87SCN;z9B3>b{KNtC(|F;6a75J^dZv}oU@LPf33j9{!w*vpI0^s&>B!noyfBswi zwMiVfmz*@ro8f_ZKCtyJlRdeHC+$(D@+Q&+nXk;ZWqhdULUHdtWjq9lp#ZFLEgPGBl$lqKo#FgZ6Ogc9)C zYVJM@A4@G4wZc;UxNsb7K&pxw%z+J=9kyYrT}cK|n{q$ZO0AdUFoew9+EVNsdbWp~ zeSjfZjDAsK1a7f&TuJJ;rvI%rfZR`0qTs@o{B4=Fdjm$n5@2?D0Io(GoJSiiFbxDGw>{YWW#Z zh@HmY9Yil44Z-@9l2yUK6mi}Vf@a*BmBfE~`xA-0SB5?|rS0<@tgLYAbrnU$P8FF# zw;wdVk167YsnVkpDOGX5w|8>7wQM|AUX;@GyNy!&qP|7%oTI1f@YQ8-R_F2%caFxS z-+GI)m?nKXGh!nU2U$+B)Z;4m>PF*DVRm;xp{N3wyjRwed6=KPE>crzjxO@GMFL$R^q|xe+}-r##T@NuN{Y~fW^ysK^~b3@t#q+UBORT6QMS&;{y%{S zz15K^s7CE6{Ou&Q;`v!=0e$1xZsPk#@333d;_b zsTX+1(E`Ct1b@q0Ly=0NAP3Mkcx6LL+wA(*J&(!_N!9cR@qN>nTTnS0oeADlhBF83 zH1m>3n*w$(UUfGUQyBGr?`vAf&K;+gfUDbl?ReXOt7`6J0vyUA>oJn;-|itj|*+D5dr;^LvR>v^0t8Ro)EYFnmA1eccR zo%dF~@$K%s&bz#W@C4?p5!~QOv|Kf2qkvA*G~w3N88XzP5sI zX~y-hgzH4Td#WO!k3L1cjq8Gw7H1U9R$29$H;{`wORwqt~r5OWKV%vT8`XJ*m;V>w1zMAtdAa5 zkb&!lQ_m^scuFtA00<9{^}RK#08Q@JbiaG|5v^7P)Wu zqCa$nwO`6jSV73B1jMN*u%b&&`-q&EA5g;H51bmHdzm_7qJ+wLHkcHl|qhJ=D9#{JoxZS-WO1N{?GVw-K zbNFejxaODBAVvCjX!_L_`y$T5L%5~c=z2>7^%jWFd&wiXIG2te7_hqbx_o-&6+{$o z>@a`XuwX;`RdLjH76p^tssCF zK*iwF*V%Pn(NM9C$)r^Ip64b7K?hDz#FL~Tjpab!;!5TBd2qRoy49grL1SMVu9dB7 zvuvcUbtC$-9+RQ*4aHe{BfLZ!x9pA*3z25FRn21Bu<8B`AGm-mf=^xZ-G!*O)ErfK zj%ORsRm-HHbuy!?F_C_A)JINvJ=>b|-8&oRrB#VU>|Yra>etUC>TYc~rh3lW+U!4t zJoSe60Hufh{k(8_{d~KUm558mY1Mw(Y`kfU?i>#GDvaLmg1ucpSr-8?z_`6yRvauZ zuV|E|JrD_Q+!w%3Wg;w58VEmPl%D*5*YKYJMn>gr? z9iEb}F)S1=;x2bjo`Yp*dOU@mg>&d;@+FS-$ZilNVKj1+kiHh0^Mmn%^LdCrzfUO;T6i6jEGbO+}h?cS@NDNJcO?~9tKF9l|%k@sCdyF&IBFl+HDmg^KpEPa~o?)YBPRm+Jc2N<;zwYWI?!TcO$>gK- zm_>d;w!6+3@<}569ugDq34VO}jGHjUK5tcicYE=fse7hwJI1uC7m^ccZBiF!pll!5 zo9JP-vyTO{OBbnnUfy{>iNu;vw^?pwq{iwP=BW9)LOwwS!)*H-oi3NFym{nd43tZeA8bZZfO3x@iL zc+t+7kY;G`Z8;G(g;hjId?Nuwvt-DZS@85UubQy=JnTRsnf+#t5Ar2I^h(gyxT#`@ zQ`dy}s(oXSJO|cKn?v3lG}GUCz&m(YA=vK!LGJe5XQt8m=J!K!G8n6GiZ^E`vr9;C zndbViqSXEb0?#NynQ<+swy~nSzij$}JCt734ja(1$C;1Z?ILeYiPYrPsHfjnml=bj z&$G1*)ia9bWZ4=qlkoSF6R>#DL34DnuavBR{7|%G@;xTrc+RcqD0_(_2Cx`defr>S znyp*hz;+ojoXIE4kSZ?A=ZjPGB4WchYwuwX`)a`(&-UZ}6)xRu?>5h-robXWYu6bg zraM`xcWLmB%n|_H(!;h_%q)}b^0XFf-k6((h_Ukc;Z1y40Z~cZPI8jg35n-hjVZiR zfD_rEu#JY2Myj;K=PSDv5c)pLTEmn?Ax966TKx9XDxgoP^Kzk`9^2$6U>#C{WB(Z&S`4b$FQL^ z8yCo6HW11b=(#HMVR;n4P#Pl3Ou>KN{$tQtnOWnf-&>W;b$#1#xahRbWEGSza}76ja91N0aoPUWzYM)X3_oPK=e#PbNd9er(3%i!jK7Gx04LiX$i! zD6jKQ=wo6kLuE`id`sV;!sl)t{sc6T#cVHgye~yRYa#0)5+#B?q{Zi=#3elq1xV^OCE$&H}C@9iwwc`x@*v`f5?58C@UTcy-m3Sac1NO4G7Gi$_3rBwLhV13^?R$29{Kh@Lna!=`2hEy4fwD!h%$Dk(fTXY8 z7UbsMt+ujJN$FjJZSngKXRD^;N7@TtWtmGPS$%8UBNQzxj}TX7jeKL$TPOHMl|0ge zrZZy5C@;Ld(t|;b^Y#lW{gmB!={u(*M+DQqrmJDJGvE&7uAd!P-9iio2JV6e_X`a-a0q z7qw^39}LFR$9yF|$H-OKs(A7|f29=g)D>YFu0tWvIV%*RCmI|_x$=QN44M^ru5;>Z zH!k~u;vD*D{@FfEO|ws9p8XPBb0#Nua=hzhXq^PKK7n3$G1~*cF5DwvLZ-HnXt1@q z7|XbMI{BGIi*v=Je~h(Q7feqGm+xHuG6`ONy>m$#TWO=pXRRLR?`QvPKUJ_@0c!zf zKU5{E@GC6wO6xr$sd=V%B)%O@wK%{;2R^LVEn~J$@17F+cwdOfI(&wUaebwa;|ts| zauQpqZn+iCeYz~lRvd_3=NdOdhu*5I8g@ydgra9g(?i&!$nlOz&meFy#Jxh>y38w$ zWyv&`WRqF3cRw>$2q(7kjbyZp{jq%5OxfvLyPMe^59tY!VaKf%^$sICh_P}^sk5de zfTrV)5!a$>j?I>^SXZ81FL@n_(I)kxTK5P%excUe$!M|v*fGGm=V`%Jc#pviR`RMM zrB+1shm(Fv^W4DQP@xS&n%wMBvFFiJYF6ji_db-K(;jx?Iorg=DETgKV*peB?DQV9 z&7mjDtpmJ<`j0RcH`m_id{dC$0i%}`QvI1=#XW!cel@iNy1WcAqidskjw@b-UIa5D z6e{n^HjxSu93ag&x3R>b8Qn^kaa?Q~FD-M&Br!wNkJClj@_TCOC1-B*)n8h1);yp# zk{vT3nFaeTId*6mjvJv6l(Ach6S-zhikoJkzLas8uzpp~p#B zF;?IThGTCoInt&hNSB(Bde4~Vt^PYv{riUEG!Jk~AIS)#)7NDY(!;hybOp@_fd$k_ zaiQ5ZTaqjq{CFxKg^(oyse!YPed@Q64>cuJTbA4hl5II{3cM?p20a&IvGpeAQH}|; zS}-1=J`S0DJSRLa#x}@+>Fv)q(;4`Zc+wH|5#`wcBqY)bjn)iqV6gONOfw1>e3ZYX4yMRa||fovVe(q+~f8 zcg9Z$05Dn<+|9TsV}lNhTDe=HWNz8Zz%w)U2@N3&o=l-NSpmJ{7o_X91 zCn2v;!o6Yb-c=c(;4uvkKY+OCd90!SOmFaT3TWHvJyr3TqCr`*c-0CrBjVyo0h_qFh zybsJXBzuW)x+l{CO{HE(bUpM~IVUzsHdWr5r0pWr?g;gxBAsOj>Km9w0s{snKQPni za`ONq5}wW*#s76R0CrqG+gM!DCfb7tFK9u3L>V91!kNXaxp#n?>U;Dtr+!ZIJ;ssX zh`Z2&4&M^eOV^of!_mQ|wtJF%S#I$~=JJy4v}`J&)V?ZIPaJTl-x*AaXVkhKx6<|9 zXPzcRP)MWm&UeIq3yVu3l#>l#xEpzwe;L@D~Ys!GmZ=Tq&)`%5RxB}+(UcA z&!2)}dZp3Ak14OpMz)oPo%HhI-E#Ny4{li6b2u^1lhj<n|u>Q_GOxa{)wKRh|8am z?g}b7{%C6MgcEkwG;uYr0Gzdzz^t8(7)wU^WXo5ky=TS@mhf>d?mSU(P1r$Ao6Vmb ze!hx$@K`zJMOxGqTLq-0onVA-Jv7%gONga5`>I&va?|pv?&%YcOk$SnYgI zAxAoJx+Y_daHyU>K)WBQtc}41P9#3%Oi60S`YKMt1LanQ0Yd=B(M`WlOu-Nxj0xw4 zSBEO$U)*|<{Kb}r0+3XU_H-wZsZ@$P0Tn+1wnYjkBP(&l6E!rIPw&d~CA{bAp(Rd1 z-F1#pNkd}a3FZmP^`h?F+T!SaUoQCZ3-yHuX5mQOGm2-ea8{*C zL%q$_>>~l#(@(kJj3WO)EE6y^HaZHo%+C>%AwIKuBK1k-75>A*yAtodvY`~V9snX{ zuuXJ;T0a^s{Psf=%Yd@gpMVW|7eY%yB4@g(46y^g91^rD5!=&VBnTv0l2}yYDB5DI zV#{_P^!iJ&R*fBCpRBN}?O|ATbabxC>=mCj%}4vG&sCDg^{v>SFZcZfTIi>D2l7y* zf@$}Zu;RJN^gN!kOGe7mzAcWUXT!Z=h1nu>Q|O?FVv}7xR{rV*t;XBJy@U{r)%&9Hlp`1mz|M(S$RYgvGEiZ8lZmTv zoa-~Pznf8)19UaI}9DnN|fwv}>U=in;sXTc07c zR^8{2q&*+hlRc9}o-o!t&`c2OZ@hH)fbzEeW;?RMF>$!N{fcy@QiU>CyB`&(su^r= ze$4%kaLsKQ>pR65l>Yv=z*?&NnZuZXqZUdgHT51X3eq7m2y^+vj`Ytm+D3i?>P(k)tr?pE$_yDRt8E=Focr9) z2aN77o96KSq&m!Mvc6HJ+m+yAaJ`}$BaV5SM@NICSL}(+B&tWfFx&3NdEC=DuVgCX zvG}7Q+b4!Oll$dW15}PF?z!}55s}PbdVqdnzxdKEzf}MG1(OcOUD<3i?PA&@QbNtU z>v5m$V|4;?+VBxD)Yi*}qU9+`;Xw<`%|-Cl@xBmdeQMzIm7s9*BOq+)1cJ`$mxJ2L z;!po_Agg|*6hqaM%RAv~idBI#4cE9?f)3dMzu2i*bTTavm z%Scuw{6tZA#d01_Y&KHtzeiC%@CXtS&}b?(*^tlfEUsa=>yfJz2N!| zEZ+P60>lS{ml-XerhXhOI{(o62|RQa;*Q>f(x1?C=rVlgq4#2ZOd7EB>cT}0XSky= zzUn6+OJ9WIv-o)QCt!=sA_E-I{{&0}jFkG%6!%2ngn9Wtfm>FWb(xlxG8!0^dFO?A z*<`{L0FVDo6O}UgR%dk7GlFKwo%AY3%(bXx%c!$}UEpr{u;ht*LkU-)Di07|l)4DB4NGNUh@^2Y{f4RDmfO8a;t;Dz8-wBg zti4#UTHdA$8>%`QX(S2k6dQ^J>ml6UcQW_^IZ=S+c6pli4^&ae86E1FS9TrLDmjVd zd8~<<C_YzXyo%u>a z*InAAxyhp@UBTh9O^PS}*6`L+Nq}dCNY~ssF*#Y3>hTGq*Mkbgv^ZUlk5=+Qua2OFVr(P5VjOh6f(1~->63Y{`ZDrh@Q zdVt8GEXm|FYmotfxkN}1WP~hWQ7PFlzNPqBQ$9)&B-3w_$;PPs6EKLd0g}ld;OdIt z%esz7jGfqMSKbB2XyE?vIwl3WB2*caLfyFGWJT`US<}z{y`f+4^}_B<)MY}AY|>Wo zs_wNk8}LI~>`KO$>Jka#tP@$Psw2W|krZ0UAX%Sv@}aNz6q?gAvlCJT>|tH4^}$4| zJMGD}*#~$0b$6ZA>#X()vG6KUD=q!~?j2o-18F&hT^%2DotoPVC!Ro|zHa!OHHd9t zaEVt2E#P~@aovsXpFlbiGjvt`3SkW)6fh2Dqx_C9)|Q@!7-c4BlR5jqf6Pnw<4$Vp zQ_knF`x5%K5O3di1y+*BOAC!`g;u}n`GU^i;K>nqLq@&M16zM9T~E8TbaJtXz(Ryt zEAFEJrXT$b_Gj$-_u>?Kv;_qdBcm-gXfNOx(C0D~YCVKuAN zN1II#Q4t{-(O1SbZ36>muX;jAMgVE(-a(F$& z@}Y5-uP{mLggi5`N+kPt#MqiK&{t98wFg6NmIItUjn0#=N0rb405y!tgOWRk6d0*r zYp=CkJLQ%P8(I3o&Jc=%#E(g+-FXv>=*zLFFLO>D9g3!qZ~7< z$h@26DzzNiZ3-yfLp%Wi7sA3-93-@zGTi)zvMa%X9UcKIjYh&A=&b zO!9N6f<^d0@RrLT;i#xrX?PU|oMq<06>_ygTD;bi%*|&IPjkB18AB;G2xKh2x`*;H zplg1`n#uHqYP`gXzfbG+;wtd@o6FCZUUU~7{G7V^EdH@~_a0}`B&#W+ieZuG`WU;k zt!dTlr6ejsTR5>H#rHS`!p$%6ZY>8McRaLck?`V?8Vtr--PlMSz8c4{<0unMAB#i9 zWhV3DaQrkR;?W`|^7^$_w3{x!NRE6F>usy-)wYc|h>%MWffkxvpqZ9+oT54-uMJV^ zZJ~}6B?M3tl-$eu3F|%=1J@)6;Rdcc%qoPHl^ORuV7EQKfpwA#3OzBt8=pMM)>LDT z62bUMp|vTcjm+-<3VSVt(u@jPB8sGNhPBdYiTWqUXJ5c5X((kpd~`A~PLp8C2GPBL zOd7H{7Y=*B#XKlx76Cz)Ea0N>9i%BXQfST`bfwWI2pPzy8HF*2H*%5h^cNNS#|BjN z0`aREq=L+(KLYTf0KgTMxVG-RQCAg5#3;xU2<0s&(N=-v9@iX#9e^sYKyYU>34nEQ zVUoHtG7Dl{k&C$2at%41%&-<37|$%l&oZ8fm4b9!WTfbE)Nglq7wy1fK?1Rjvi*bT zA4EL_U!%id4u1l1{NJC_c`4vF?SNLAI*}j4ML2n0j7otQH!a3TwBC$@Ihp6~BMd-)hFe)Ov`Gz?7%yX! zAIhzuD6XJqfc`ep#z9aFW4!VOTAL7r6(m}-sm_x`j?t zJg6azZq%?l((H<+dDp-aLH31`+bQ;N&?Ow2N+{=~J#jSbQQZKdtuSYVccKGr5|oj( z)p;!G?Kk~6BrfBtkqTO`r^C_(Td)lZ2~KYR0G(@_70?Kif|5s+#FSv^22fq~^TV5_ zkW=`Ff}))SYRtf`k)l2g@)i{m-XS%S11?ypkg_Pf06N1*$75f>AZRLOeEf7WF%FX` z!3M>>{UFtmz$7T=q95{c5In#^FYNt(Kz5?aPv~%?Gn0%=@2`HmFwAFsuSv;ZS+#?J zyoumd!)4NygQe+oWw(m|0JY(g;?< zpNof7f=xeeUye$DSy%>kus-<}V_b~lVj#@({7}Ro3O{GD=?9s|BUYg>kYtrSaW=5y zPS@@FJWX}sUiY$K>j~GYa-Bei^i$Ho?)DDDz53qaAy$NN%&>8-Z;Bi{n1U+{;pBN5U( zUYGPFNfiSvj^CU(Te@Jm1B^{LDIPK22(*5L@5wFpNuGb-OC4t zLmZUT!;HsEkOh!fWUHfs_yJ)L15~i>o_N)rwFfR3hSS6G0X~RTe*Fh(91L95xTAs? zY^csST4qZu7on6c3cBD#ai~-SD5-Fu%OHC(Mm?HMBay?OfMfuw=;0zj2`^9}Fo0oH zn29bBFLA=v6yy27Kdkaoz+HbQ7)w^1sF=9M@ZVK4Yn;#NNmb`DW{FmWZlQ0dwCar!1cvdrKUC7 z3I}k^OHJSzZTMr2Q)eX}Yo_!C7`zECBEZm*O8 z*^2=STpsp%igkv}1f0!~six27%RUbTjAP$C4` zC>B7mw(Le@-cycw6&uc@vt7Ka!XdJ{M<^_&xm>?b=q6NO4>jRGYz;NjKcD0=b2`W(*@! z!&CO6#OocHxB?NX@s8oT$SRnXm7VZ==fpJJQz;KUkz!iXMB_fDSQ-J`<6??#b z+$B#z1~)^Xp4rGtHwrRs1Ky0$P#|HT0stBge>dm#o=SKNujKrB`*+g2sL!$vL!r>q zur@d<4T;y~{{RfO;}RL9Qhqp5q84ueVB!dgM~GJx7Q2td=Yg(Z0PqICpyVK70wOyT zu678$^?()s0Ha3=2;dm}7oW_9@qD(@NyRq4Tp9Rk-Id4c9xM!TKhqDQ&qXovF(1zo zHV!I9A|%AuKlryuLz%2!Gw1;jPkaV|eZD4Ra-H*EgU5CH3J2F^;xG9Wj{plojo=I) zMgtthULknNy=9Wsqnp4W0Dx%u$lsKX@#r1!9!v;$5+~f}?M=}D1A#OH=6xDK{muYr zpAcn8-yv=0q5x<31L!D~1Vh;IC?o`Yiuf!`{;~o80Q&Fx`nW{@0E|y7kKXl*_HKGh zGr#En05ZH00g_uDesR`)(z3cuXX-j1Mow2ZKL_mG^p*A`68iZ)8sJ{oDJ(hks{Fk56{Qm%-{0qSObd#8Sjrd3WQ&UzLE%v)X^~Ue4Wfa}= zP8nfQD4u=<38mNwEGddqA#$7)Z%aS1$k7kMxwY7Kfjd4ICQ($vqcR&$9F=n~+&@j> zGnxV^S;85%Z#d@b)uvz_sX!G}0eK#vcq&qUDD-k|EB4k377me%x<- z6cpuPtOv9wd?I1;B_SST=h=k?P9sRcmp9%sno; z;zx)R?>~GGj)FR6FbFK~JT)+dD5L;+c)(`uLljpA!aFI!NFoEe4Ddy)Tky5LbgBho z)JzNq6PhLhfP_78_6P#Sg3yYlnmEM-69+$%^Z46cbj(A!LCOom$?Os=frPnASx$dH z=i%Y#*eltbE3mtp;BzV{P-=mOPo8~<{{RxE?@v>{3tj*N(K%c|%W=y|ps!*}`#yRY z<&AOPsS_fcLF1FaZ->=T?@)qJun5H#V5fF2^$vNZ6qhCOmq4-!=TuZtaCL_S& zgX@GDt;;Z01KJb5Np})nktx};;q;0mHd;FU#hKzL!x1eFR+A2Q#&V_jpch(DGQAH5 zoCL;DfE!nr#*L3)O1|$CaEiu2Wl2aa=y;7JqJXI}!pep?(pdy@3pCk)UIZOV`B|#; z@R54G$ApvY4}7tt3m{m-dIzp2EWnzJXb6ZX;p2UBv5*ErPzARK0lqaxOTY`mMI*u5 zag?GDAut#o6_C)P!DmkgR9osGSY{Qej{y3G@d!2<6lmk%SZ!TUsF*T`*9)T>NG%44 z8`Uyk%-Bka!HLoF@oWCa1S>KUL7x`~w6c_N9WfCQMB><@z*#zD6Q-POC_D{Q=m(CL z+su&Vii;)`J_hG%6L1le<>keOiyUIiAy#{G$EK4D7%9{VBZbET!P;D)Od=zA$6Z_+ z{#QU{P%`ldee)m`2bEv~s0+rZh$YEA@+6X5#--k)ApwBl2pgY=@dUnDP*HBHgAA1U zPY+0dsn9A0xhNpnvx&Qv ze`Pk@uKGtgQsvvSiO;s)2va<(V#J;xS9s!q@bP$}>M*uC=Z1;;xGcVl1kg)J5K#!T ziffC|4SMv&0tamJ5Wt5xDTWw>3}&DmbOV$f=LgHWz_G0wyiw zDDH~Z=%|T}F~uD=x_}mUjt>;|2H7%@U`3NTGvSfJzP0Q1^D+WMwv&L_Ejv*2+gp$* z{*S}o;XHl=e%;UHy!ibPD)b~aond4qUM4548o3H00TRdwT#kMQ(Uesxs;zna{{Wwt zg5!$VNKtr6kRDwLEE#@1fU+P8=s{Vh=|svSA%HOw!rbA`Erm|`eq>b=+b#v%Q)vGH zFXhB^El8oM50JD2VpDWeJ_ClSt;1X#M|dGj3KCbKnS%>jkR~j-Uakh>50Pmy#XulS zBWek1O6d~S<0ka`77jX#JUZnsY!QIEOb1S26TnF14b>$KsAvN%vdD^rHN~UHlnjg z@bWl4D4{dqGT&k<`lCg#^k-a2>8KO11p6nxRsp;uvOq%cZ4P1gN%i2g+5$p{HvXjka|#Yz-*K(t%-(d)0>vv4pAMRjq0q)pblV zuO{qC!PkES%)p<+1d$0wBgP1NVnH~vVE5ubRfSZ`cM**V- zm$B!+_!#Z(IXLB^U~@z*ny~Q$ohZ2x0_G2a!%7Eb4uU@i;f{Q&Hnk2^y9)Xa5H$$? zFV`DX=}dv}4d0Ij)npNFVS<&ApbCuu7082pc{8R!#Msz*>NoHgx*quy%&CQ^Tmk}+ zYNttBu^8XSNXYJ3NHV9RA)AH;=4i`w=APV#{2GtHN_HI(wZL}bI#>*lYZRwbO^lxD z_sjnPA3%gfC?hx!Sn8+luY7sF%%Hh=!+oUuFg#VhW5>!vo}3CNm8tE1g~1aHfGcQD z&^Oh2=DFYIC8Eiqxy`=?EzFBeCBj*B2O6NIj~@Z%fo=rA3j~3b4*4k^=*F9bfwCZF z$smnETSU7;0Imm&Xfq&SntcKECrF4IP&*X<0r=ugQN61CJ^mBN;5Y0JP<%yC6EQ)L zJQ3oYDs!k|@w~4Wec1{w6BVW;2m$f@{{Wwtg8u-=caKy+>UtKSXJ-30)20DS<{1VBMD3QxiKIlO%5%^DCr zBa3)wlQ9dCD<`DLsPvMa67FCXNC>AM_aD2FUhmQVv2f1M+lfx1J}7=R}6wa z4F3S+3^AYp{{RM2SQXZG2$2v$5O@`Fyha^h>Q)wlJJ2dF#3@r(j*t=%Qcnx|56Fa0 ztDd+v9fFFyBSb3NLs^~bU&yZ!XWQv*s2D~_09=mt@0Q4MPAdf3i+A674RafYA zh)-&M-#t%%gz@+d`)&YfM#J~=PxiMY{mAbwTqL*RRhd22p`GNsPsoN5K*A?KpY!tY zU-<7IfWOIk`K|t6%joUXS0oVLh?QV4yGpGrw0MGVE+ef3MII-4mIr9S9$rb9B?63~ z@UC4s8iibeBJ2Qq4i~j*!jk|Bt^nW-VHdQCg!XeCQ_mzrFoyz#&l>m^$3daVn?2mu zcvBFa(wpP>9Z{{T-r1e1|W*-AA?_fRoVuWtevVQa;!drUl`#ll1H%76jo;ktf7*Qnu55EBUT z_gL_DJA`Jv+%Ic6B~k!A@m?zL8vud~rTEPkph+4QIt}mwt%(K>7a%<@j#*D5RJ6UU ztJ=Q-;3A+Z8wTJdSI<1UwIEIbP)Q*GXmf&aRDfRKdmL|pw?z|7f&_mGBs>_b)dxyH z`h0aJ5Ei5GG;I%DGwMZhpi;au<2EqYLGFI$z+^SVIA$ zA-}Pa3JxW6QR1@*IZHRw!MKRdp9xjPV50l=7B;&2FQqVo)xxw15g zh?B6K3GSe%LS<+mtH>k40RkCIUR=16 z%IUy@x}nfQAf%yVWS=zzXY<5yJbVtjP?Scb9P_o*NMT9=P!}k2?9lH20A!4kV|-GD zPzWGLfB{!WB<&4YN?-(NCeddb9T9iP$b1F=01uRuAZ{GDW8oHdyqR3zZQ{TXCA8unh*wn}W z04x&Y;BBBES!im|rdJik&3b5HB2(GTr$)57*p6PY%BKO4ey;GX#gE2^iF-y_+YMt}Jfn*$jOLRj>Vnpb z1HT^|_UKR)S13VV67^vpV%3Xr#@uK|6uYs~V0#3k0~SGnrVEfZoIXEBM9erhfpLN0 zzF|tqmIJdQ4F@hp5VA3miWyH_VH1iqRWfp-a`(PBa843~ph}1gM`s)%As9;z*a4se z2Qe+1AP^^D&cW#fQ0^_7SQ<1ej9v%{$BvRm#UHmAaTzqBf5$iW@iGTcIZ)=F5luua zz_kP6;3snu${j$@4-q8F#xc|hg~!{Fe%S>1f-nHNdQ^M904TDss_m}>c@syY4J}l$ z2zbcx1Oj1yRtdx7X$5?h7ADj%*Df2&ihzPWfaQhY{^)=ct`&qa9tg@c#!yBJf%Wjy zlx;x~JSQyJvMg+^mXw&M$@}$yz5CT23=z4agf z9smw8AqFpqnOa*03l1Gr0g>jR4a+-%PO(_cOULe9D;qcMyM}VUq#3ho1xk5EwHA00?A5cazgaF#S0>)Nge-wijPcPyI!;CQ6@!;a6WZc0(s9#T z2~P$K^T!Al4Oq@Mi4_I}6)_RKGL%Q-*8LeH?m_(?DZdiOyp(;<#{<;c=8=qo^pc~B zWNjd#$d8lbbp$0DYmt@T&%VyxzwR5n$)v5?LHI!W?+V=5eEaWiAZn^87_&OT@D~s% zn9YMVK@l!3zE>+?LsC`;!LBohY`6EmTNQ&qnVheK**Tw3+@xrXM0_GSIlB(S*--{r zjb-Nf0;XHi4FLJsCu!_}gDl3f^I~rk71RNM4tltAR|LS&9&1F@W6-jyE_beKi_1hH zrb|G1q>z!1LdvOgy>r>~v!0*u z#6iu}5R_%EMpt~sbd(^g3>kX)-Z(Msz>HR7Tj1_l5wKtbKnFm4h2p(w=X)Wd>=Di7 zIO_rIb_J2gI#v^FC4v|Uq8LO*{QdiQPR3wC3~QVIb@nNk zYz=)(Sw4Mkf9$PALkG3nPT zU;`9Y5`!rbQU&;2y%r0>wO9ixftQZ#jSsA9XHUPGs>NWs78u3P=YbW`k)q+`3>1sc z9rNd4fEi2g>G$7#-_>S?0?42^@y}NdYT&sVi}S8PsgibsK{=}q!_iR&S)E|vTgE6d z`ijbFE_gF>Mi7W}Sb9&FW*!6dsSy}m=(avXMrOH7fFR6X3FIaqlLlG>AT{!24L(LQ zQB(r)R=5BZ>0Due00s}0ca5Bx)g+EU-CE*^5XKhYS`Sp#4#A_T%B zBk?S1xXQ2m8(16~zA-4V6^bx0SzDNKa#oqOw9!B~Tk3P*yI>H}HiYDel>?-HC9xW+ zOaX?;lajbVNcnBH^C$ozN7L`V`-O719gIXD283q<25-Opobl(xwJh$?czDT3lwIgX zVwPtmPGho4{goa^=-mU8LzU7R$6^V_d6l?=v?5I-Bxf~>P4Jh1H3B4nxY!G|q~HpH zc`Y`QwV`re2uXm`ZN24KAm|Kn`Y{oq_IXAw#b~IRQ!c{--cH7BSGKBwD-p}Tmq{z? z&_oI+68`{908lQI12+=5JP&AU8YMk}WE?iesG@m4qucPKNTFze#fHNmRy**ee~37G zG*HTk5`!Q%HcUM&iuvQWU`F;Ah8^La#w~SBzz{rT2>3{{A`qPqfPc#Q{*suyT-p>H z{Qm%+4(c(oA_hx~<$=u@=JQLEe#qk(1%uR^)wS(K8C8D1)ET6uM3-0I_COBYah1?b zff}gr;V6#+0>Mx;45I*LP&dXP0jOCF!Fm{M9{?F;yBY%{u`}Q;4;40-F5%iwZ7-QV ziwMm`z|f$1Mz}m6+#OxT_*tw%4M;ybG8+M!77v_@QFCS#9)lWmC$BfIwAf9 z*6~Q0FjaEmA*K?+@tj{MJbKPUE83GG(*u zCk2s9vO{2_C6JKE&+$IF{5OZxTNm=aegN(jm5>V_3%b*<5^v$*g5Kr>x8o2D2rMO2 zK=wHnYakV&(I)9!@Ijb>ok@Y9nc+Cm#>I%A{2QcnU~-ft{&|#2TfeJ@;`u1plp*sAA`^_jfglC2+KR2^xl9_D!|(C zmKwI~#MrrDHV4NnuTn85K&NH9lac!v1Q%Qh_LZDmzp6c%YVFh8JGTlkCV9A7BS?Q2EM;{XahjnTmbv{1$t(S-dS&_dGyK}xHb1B8CU1ClWNfdgj< zSb%sA222bEAbK8f9j>&4?sr1y8a|KVyuO!AV<%DTakri8B{uDiZ@1Ok@U7b*gRT7= zhwt(4c>&9oD2yAOVdRYLAc2e8$494xjfa7N{2x$1<$V7DNlacYZ3+#ImcrJ5Ybxj! zf#tIhpq2}oO0uf4$%9}rxE=x5Kpt1??LnQ56QCwzKx~>6b1JrVF+CSa$o7XAI)_b$ zRjwQ(mV7XA!qX`Cu(i2DJ^(T&dr>D)>_NvIhV$Id(28vnDpC@U0FV#cp71t4g@j5G zl?Y681QHubo)N>~h#z>QdsooRAg}?I426}~8w6Ej_7Vx;eC}+@ej)``064UUqajSR zA0Qt1YXU1L`wBGda6Kubgm?{~uXXuDSfCvO7z5~ihYq%vF_-L3>*m}k88{_^o2Ni3 z=;9UfZjmFx76ar`w5qpAw&fSNk1a^HN#QNv( z-XBqHU&{IT11=A}6+h8<@EQOKMPM#xLy1yGp@jHEd4Wt&V;(_ZefY2}L!*scoh~0Y z3jtF`L_8v#Tjl#QOj=0tIZDj}Gm#vLVme2OX98Bxw;dk&usI?z#L-C2pMbqUUD9|g z!4CW4d?aXVeu>O5DY1yd2)Lfx$1vYajARUAh4>FOPDqLzA~JC7D*)#82&T}PTA0{C z6M@biw1StL8Ai@(lj*%xGtkQd0DydIE8iM1={6=r6I>CtmtltrM^=JSL)S=Ha0{iQ zE=yb(r3iPQ+m!8JopImE0hD|61#=V?Fe(v9x;!qkx}WAzuPx*u^76h&H!Ypby84d97QeILVleJ-WJUo!nNE(F9ceINLKJAc8N2Ap9e#P}cg ziqH2~g}wX={a<(PjAYOonRHE(EO%xrP}= z!XvZ#J*YE=C1jYKi0sAu0n<=n6mmJGN#$-P{T2W+KHxdLcAk(1kl?*J5U_ft<~AY= zn!q>%1#h&q>NYt4q)+^T`YVPt1|V#;v~nnpTqPKuwv)|o*TR+Ltwqa z-$U`a&9e-{=3Z8_vxohm-~EXR?}ZnLNGr&ZfmsNV#6TetD4ekPg0!o-yJpWfn4Uo- z>>xW(#=*!<-#3_J8IWlZPoLs_bNFu$sJ167{9lkV!Igkip5Ma{1mY~0S&agGH3*oo zW3d$L%<_A|aznOX3y^|Z$xoxPeLQk?A|*w)K{22_%ex>5W{(G7(V>4{$x(|YXuYo! zG9h)0Ch9k%no%iIgFOJ98oAudBFJbY#}#jU%^JiiAt!V_ubj)AASSGb5YwWLMH-C<& z02%}T0B1ibApkbKWS?3nR!m6paoF^&GuA#G0>`jO7@!FvBfK*dE+~qjR(3MKLAn4W z6$}r3ksed7Wn`V#M}`;7_~8qAh}-!DL#gME;oOO3r5FR+`ag#9`W*(vv?{3J09(L0 z$E}fj1aqei=%GN&tSZ~T=yv=l&`fC>M+wRZlqf3Vjh}Sug`LO_jCwdaSH`k|k4OaO zmpj)cbQW-)72#W(51F9<0G0FoB{6upv?w?D{{TEp!C|woA96l!!c@827iiX5$D?>9G zj0Ptv%fT2o8gM+GJ_xXF9RtD1yYF$=C1yh5fE&d}v=~pII-PYqbjm?TZI#0_DmPd< z81?k`HatEtp6E;`z5|}4&@;5K9p6jxFtOP#9Ae1HXTEkEzE_t@FRz<$s!Ku`KALx+ zqlb*4ShyuqrY@C30W=j+(w|2cO8J%ga)1a`ksB5=a%XZuU=vw>y>HL)KDqoihrtju zp07{lyh?V)e0kuqdVH-I<(33@&O6&*Nsq{%kAQBIEKCiIs=gl?)fvbc26{Nh+DBb- z8cZih38Z}CVZn*|cq#Qx_`~TWtdOL1^+yB71lWm`4DAH${94l}gKJF*A4`gbPDY4X z>|`IY%R9A^xD%p&6Y^6*k^*AwVy=NOJiiCPwm*BmR{3~4^6erFz&yw~$m>wS&E&~fMe|k>WcKsjrUhacH30hFLfP7!WBe9>|li^6(8IT2CcZO;YQKFfd8WqbWULoqTRVl%Ms5-X+q;J2*8f z`Umg8R3hVm1&KyTlWd5u;+p`ZquIscw$ss2?G49akVI+81ib?p4FMCda`LQ7-3iyV z>dV0g)jwG^{WxKbIR;UlP>bPjJK5185de0pl~rDBC}2CRax^>m^=3(CJPF^C!LKP{ zagJPXx!{p)GL9}Ot6le@P|IAJ08H%Q4tVNj@hmf@I<7!I{5cx!6hjxk(Af; z*~4H1Blz*rk<{L5t=O0s9h%LQkbIF~IF7yuv#Vw&E$IP0jUgwAq`EY5=^`e>gB27e zn}K7;S0xKLFj}YKD_?_@v2T+M=FTwaYj?e%nlXJ#l*=&SH-?OG4Q2!V7^>$W z{TKweA#^xC>y`9w6h_trvMO6tr}Y@*v}aX7o`5FIU{}hv=9yURI}%-rAfqmk&L@q8 zY;kHiGeMPl6k;30I!$5NE~pUfUcP^c_0QqFJ|UQT3tJw^`y6Om{a}$MGwckUj?@hi zpRvUrjyyiDo`OyG4kB8_bp=8g2oPav@s5ZzsPuu|DETAOs0+tFzz<^d9EkRPB>_PB z2oY4e0JoSrdDOvqlPwcSa6nTUX&D4Mo@!r@eb#?RJSu=x1F zKv)Te1KTN!K2S*H=DWQ>Jan9ZfEh})qMj=fGiGc{@HQjvO9ze&GMM5-phP01^S}TE z3<2;%5tOlj7%iPMI8>cT8KumwPqEDi8Tj)G`n=qg&SUf+YD z@(}*7`Z)M0r7zg=5z@ADS2}p@^ZQLDw`HE2`7{3j>Z3g!WH-Kkrr3vX@0;N>`o8bo zLRoh8^kGePCLj?!24pCU#Y59$7yvAp0{Au0)7~Gn-!riCP}LU?OD7BFiV8yoPXSA~Dv)fajoKPQitS5%^&(qWY06fFReg1#uQ^6w) zr7YRc{!%!>c@|7t&(shT@rAN4lb?sJ-(aqrUE}C{?STkL!O>@C5qSRq<3Eu%k!8i7 z47CeJ^_ebmF2{-*#?*Td{s%3@_Y$R>x z?X{Jf6Ai5E=t5OwE`W~}h=u}29*+E-#pv8Cr z3Jd`NJOT7#X+4w|Lh@pr93+mc1OvbU^E^1Hu&%|)i&nTEh1f72fDed?n!$5a*@dxF zg_U~uK~!oMhCYFTRHCY^mlcO)%oy0*o^3;-q>Q2Q`U^*NyS=YTnt%20ID>YdZ-DYb zS!`HpRc%IJq|DFxUA5>;lGy9~B*Ar(b;OWr5q3QkvM5y!a*Y@gK^ovwc!IiYmG__i z7$7tS6T))!>i7BG?B4g6l;xuy+_SLJI^J=LQY=&eTUi4@00aDrP(m;)(~>GvHc*ln P_Pm3v^uPZAR#*Sonjnx( literal 0 HcmV?d00001 diff --git a/test/backend/assets/sidecar/Chars_exiftool.jpg.xmp b/test/backend/assets/sidecar/Chars_exiftool.jpg.xmp new file mode 100644 index 00000000..efdfb0b9 --- /dev/null +++ b/test/backend/assets/sidecar/Chars_exiftool.jpg.xmp @@ -0,0 +1,173 @@ + + + + + + SWE + Jönköping + + + + + + æÆøØåÅéÉüÜäÄöÖïÏñÑ + abcdefghijklmnopqrstuvwxyz + abcdefghijklmnopqrstuvwxyz + + + + + + + + + + æÆøØåÅéÉüÜäÄöÖïÏñÑ + 0.294791666666667, 0.13287037037037, 0.107291666666667, 0.237962962962963 + + + abcdefghijklmnopqrstuvwxyz + 0.451041666666667, 0.13287037037037, 0.110416666666667, 0.24537037037037 + + + abcdefghijklmnopqrstuvwxyz + 0.605208333333333, 0.138425925925926, 0.110416666666667, 0.24537037037037 + + + + + + + + + + æÆøØåÅéÉüÜäÄöÖïÏñÑ + abcdefghijklmnopqrstuvwxyz + + + + + + 65535 + + + 1 + 2 + 3 + 0 + + + 2024-01-30T12:00:00+01:00 + 0232 + 0100 + 102/1 + 0 + 57,46.8417528N + 14,9.7753146E + WGS-84 + 1899-12-30T01:00:14Z + 2.2.0.0 + + + + + + 1080 + pixel + 1920 + + + + + + 0.237962962962963 + normalized + 0.107291666666667 + 0.3484375 + 0.251851851851852 + + æÆøØåÅéÉüÜäÄöÖïÏñÑ + Face + + + + 0.24537037037037 + normalized + 0.110416666666667 + 0.50625 + 0.255555555555556 + + abcdefghijklmnopqrstuvwxyz + Face + + + + 0.24537037037037 + normalized + 0.110416666666667 + 0.660416666666667 + 0.261111111111111 + + abcdefghijklmnopqrstuvwxyz + Face + + + + + + + + æÆøØåÅéÉüÜäÄöÖïÏñÑ, abcdefghijklmnopqrstuvwxyz + + + + Jönköping + Sverige + Jönköping + + + + + + 8 + + + 1080 + 1920 + 1 + 2 + 300/1 + 1 + + + 1 + 1 + + + 300/1 + + + + 2024-01-30T12:00:00+01:00 + Tag That Photo + 2024-01-30T23:02:06Z + 2024-01-30T12:00:00+01:00 + -1 + + + + \ No newline at end of file diff --git a/test/backend/assets/sidecar/Chars_exiftool.json b/test/backend/assets/sidecar/Chars_exiftool.json new file mode 100644 index 00000000..febff88f --- /dev/null +++ b/test/backend/assets/sidecar/Chars_exiftool.json @@ -0,0 +1,50 @@ +{ + "size": { + "width": 1920, + "height": 1080 + }, + "creationDate": 1706612400000, + "creationDateOffset": "+01:00", + "fileSize": 101948, + "positionData": { + "GPSData": { + "longitude": 14.162922, + "latitude": 57.780696 + }, + "country": "Sverige", + "state": "Jönköping", + "city": "Jönköping" + }, + "keywords": [ + ], + "rating": -1, + "faces": [ + { + "box": { + "width": 206, + "height": 257, + "left": 566, + "top": 144 + }, + "name": "æÆøØåÅéÉüÜäÄöÖïÏñÑ" + }, + { + "name": "abcdefghijklmnopqrstuvwxyz", + "box": { + "width": 212, + "height": 265, + "left": 866, + "top": 144 + } + }, + { + "name": "abcdefghijklmnopqrstuvwxyz", + "box": { + "width": 212, + "height": 265, + "left": 1162, + "top": 150 + } + } + ] +} \ No newline at end of file diff --git a/test/backend/assets/sidecar/bunny_1sec.json b/test/backend/assets/sidecar/bunny_1sec.json index eec9a09a..d7cd2e46 100644 --- a/test/backend/assets/sidecar/bunny_1sec.json +++ b/test/backend/assets/sidecar/bunny_1sec.json @@ -6,6 +6,7 @@ "bitRate": 1794127, "duration": 290, "creationDate": 1542482851000, + "creationDateOffset": "+01:00", "fileSize": 65073, "fps": 40000, "keywords": [ diff --git a/test/backend/assets/sidecar/bunny_1sec_v2.json b/test/backend/assets/sidecar/bunny_1sec_v2.json index eec9a09a..d7cd2e46 100644 --- a/test/backend/assets/sidecar/bunny_1sec_v2.json +++ b/test/backend/assets/sidecar/bunny_1sec_v2.json @@ -6,6 +6,7 @@ "bitRate": 1794127, "duration": 290, "creationDate": 1542482851000, + "creationDateOffset": "+01:00", "fileSize": 65073, "fps": 40000, "keywords": [ diff --git a/test/backend/assets/sidecar/bunny_1sec_v3.json b/test/backend/assets/sidecar/bunny_1sec_v3.json index d3abbdba..825f71e7 100644 --- a/test/backend/assets/sidecar/bunny_1sec_v3.json +++ b/test/backend/assets/sidecar/bunny_1sec_v3.json @@ -6,6 +6,7 @@ "bitRate": 1794127, "duration": 290, "creationDate": 1542482851000, + "creationDateOffset": "+01:00", "fileSize": 65073, "fps": 40000, "keywords": [ diff --git a/test/backend/assets/sidecar/metadata.json b/test/backend/assets/sidecar/metadata.json index 3593766b..1f7eab71 100644 --- a/test/backend/assets/sidecar/metadata.json +++ b/test/backend/assets/sidecar/metadata.json @@ -3,6 +3,7 @@ "width": 10, "height": 5 }, + "rating": 0, "creationDate": 1710188754000, "fileSize": 5095, "keywords": [ diff --git a/test/backend/assets/sidecar/metadata_v2.json b/test/backend/assets/sidecar/metadata_v2.json index 36a37353..ceda26fb 100644 --- a/test/backend/assets/sidecar/metadata_v2.json +++ b/test/backend/assets/sidecar/metadata_v2.json @@ -5,6 +5,7 @@ }, "creationDate": 1710188754000, "fileSize": 5095, + "rating": 0, "keywords": [ "floor", "book", diff --git a/test/backend/assets/sidecar/no_metadata.json b/test/backend/assets/sidecar/no_metadata.json index 2ce48ad6..6574ba17 100644 --- a/test/backend/assets/sidecar/no_metadata.json +++ b/test/backend/assets/sidecar/no_metadata.json @@ -4,6 +4,7 @@ "height": 5 }, "creationDate": 1542482851000, + "creationDateOffset": "+01:00", "fileSize": 1430, "keywords": [ "first", diff --git a/test/backend/assets/sidecar/no_metadata_v2.json b/test/backend/assets/sidecar/no_metadata_v2.json index 2ce48ad6..6574ba17 100644 --- a/test/backend/assets/sidecar/no_metadata_v2.json +++ b/test/backend/assets/sidecar/no_metadata_v2.json @@ -4,6 +4,7 @@ "height": 5 }, "creationDate": 1542482851000, + "creationDateOffset": "+01:00", "fileSize": 1430, "keywords": [ "first", diff --git a/test/backend/assets/sidecar/no_metadata_v3.json b/test/backend/assets/sidecar/no_metadata_v3.json index 7f904f44..2c27c2a6 100644 --- a/test/backend/assets/sidecar/no_metadata_v3.json +++ b/test/backend/assets/sidecar/no_metadata_v3.json @@ -4,6 +4,7 @@ "height": 5 }, "creationDate": 1542482851000, + "creationDateOffset": "+01:00", "fileSize": 1430, "keywords": [ "first" diff --git a/test/tmp/sqlite.db-journal b/test/tmp/sqlite.db-journal new file mode 100644 index 0000000000000000000000000000000000000000..41fef9eebaebbae9c91a7f46412db09bd82d3d74 GIT binary patch literal 8720 zcmeHLOK;mo5Edg#vST}To@!9ECFB~l;5c1Am%OxfZ3PhG$gwR0$tA*)yX&yf!=WfQ z28tANilYCiK!N^*0=*SIWmTn%UT+izw*u9(T3zg|5t ze}vI$CUXhCmd_38*}KfZM~kpJVd?J-ywg|8K*~VMK*~VMK*~VMK*~VMK*~VMK*~VM zK+3>7$H0t`%?KZlp8E&~dpnNDMBZ^*#1j>G0wf5TFGLZRorMFQ3uQipWAJdO4#x}} z@!8*I9~OSj?-hQ?{gRuV z>1BV&=(ET^E&>x(PGpg4c7J?@3bL> zN5%fF8--#O3w_hSw7UJMA=%87bqNt}Pz!U)Wn|cfq1)OqbGw~(=nZC4(NrRfn$;%-eWO^j0#*G7gaEtSRo&Fe#8H~^-YHd3)IF{V+#$Eji% z1RJJ_CI-9_2bLV+4ZwWPhPalm4RLJ*xER$`U6&~3wrOyK5koQ%lBpt3#C1K6D>=d& za5+9z_pTO-7z=0XenKWrI`PMABP8|BFLx?a(gL%HPTONg%oQK*S08NdKNjy-9*diY z_1$U>f;_0y>SApdj>DauJ7Q@}SKt-04UqtsF=P3~GEloJ^xqGtMW(K3j9J*S45CYt zjJd9=$kz1Hf}p6~)2netlN~QG>bnmr&nNOsy;3Nyt_t5>Akx1kJl)bn+QOlNrTr(i z+N8xw;t6r>r^F4@Xm@&TFV2&=UAeb;xKkI`P#MT}y7$OQr{_Y?mqe@6X)@9dqC~Fk zlGbsP?Xx3j-%twfh+Dh0gZlnv74ld*+yf231~qjHXy>MEG95!T6Nw>BDv5`+>fT`m zNb`Z0%Xn#;_=K5jNa4|Pe_;_4z9IBK4H8Z%v$@6y^ec2 z60$4tq$fKMlO7G>OAc`%bHD{i&g{Yv&L;sJTQUF$0!-X6ZLD(5B$~`Qk)p8{<8YFl zr@`@_`cUShP%tR6Vr!tuRKtW(#U>!rTq1T9%0e7UvU4(&VRprS{_+sYO27({5n?*E z2{6GWgfX^s3p7whQ7H3qD9O&rQ2g$ExiecRZfpqO-}hxMI#qN$H=24RZc+27>EBYP z9ur90q!w1Nh~sfPjERA;_P}$RS|E*L)zDQ;Wo&W7z>Fh9)+xhs zR4pK!&sDkn`CPtuu#vQ7iKeR&Yq-lV3Q(6TLjQxHE+q>oSVNL5*_MW6_<%cxN(}>X zr^!aTF&i(*WWQlahP(%556%fE-`8zR3+?+zwz+1888#k~LFSBm|kEvZb0>wL&oRaTv*d6JhvW*{{zOiYqI^ zS;z0n&;+5=+{IoDS>A3NQsUnO{Vsz_^Ak1h$~8$ZhdVD!;<(rYd--8DUtC`o9{Y