From cf9ad3a6322bf49d444bd52db043f61dc5ce34fa Mon Sep 17 00:00:00 2001 From: subnub Date: Sun, 12 Apr 2020 17:40:17 -0400 Subject: [PATCH 001/129] Started converting some of the backend over to Typescript, still trying to figure out a overall file strucure, in terms of adding the ability to have multiple backend fileserver options --- .DS_Store | Bin 6148 -> 6148 bytes backend/controllers/{file.js => file.ts} | 275 +++---- backend/express-routers/{file.js => file.ts} | 23 +- .../express-routers/{folder.js => folder.ts} | 4 +- .../{storage.js => storage.ts} | 4 +- backend/express-routers/{user.js => user.ts} | 4 +- backend/key/getKey.js | 30 + backend/models/file.ts | 19 + backend/models/{thumbnail.js => thumbnail.ts} | 13 +- backend/models/{user.js => user.ts} | 40 +- {server => backend/server}/server.js | 12 +- {server => backend/server}/serverStart.js | 0 backend/services/ChunkService/MongoService.ts | 81 +++ backend/services/FileService/index.js | 16 +- backend/services/FileService/indexnew.ts | 286 ++++++++ backend/services/FolderService/index.js | 6 +- backend/services/UserService/index.js | 6 +- backend/utils/InternalServerError.js | 10 + backend/utils/NotAuthorizedError.js | 10 + backend/utils/NotFoundError.js | 10 + backend/utils/createError.js | 12 + backend/utils/createQuery.js | 41 ++ backend/utils/imageChecker.js | 31 + backend/utils/mobileCheck.js | 6 + backend/utils/sortBySwitch.js | 15 + backend/utils/sortBySwitchFolder.js | 15 + backend/utils/videoChecker.js | 57 ++ dist/controllers/file.js | 420 +++++++++++ dist/controllers/folder.js | 162 +++++ dist/controllers/storage.js | 32 + dist/controllers/user.js | 121 ++++ dist/db/mongoose.js | 9 + dist/db/mongooseServerUtils.js | 11 + dist/db/utils/fileUtils/index.js | 117 +++ dist/db/utils/folderUtils/index.js | 47 ++ dist/enviroment/env.js | 10 + dist/express-routers/file.js | 36 + dist/express-routers/folder.js | 16 + dist/express-routers/storage.js | 9 + dist/express-routers/user.js | 14 + dist/key/getKey.js | 30 + dist/middleware/auth.js | 45 ++ dist/middleware/tempAuth.js | 49 ++ dist/middleware/tempAuthVideo.js | 49 ++ dist/models/file.js | 2 + dist/models/folder.js | 24 + dist/models/thumbnail.js | 24 + dist/models/user.js | 224 ++++++ dist/server/server.js | 52 ++ dist/server/serverStart.js | 36 + dist/services/ChunkService/MongoService.js | 60 ++ dist/services/FileService/index.js | 668 ++++++++++++++++++ dist/services/FileService/indexnew.js | 209 ++++++ .../FileService/utils/createThumbnail.js | 65 ++ .../FileService/utils/removeChunks.js | 27 + dist/services/FolderService/index.js | 202 ++++++ dist/services/UserService/index.js | 62 ++ dist/test.js | 1 + dist/utils/InternalServerError.js | 8 + dist/utils/NotAuthorizedError.js | 8 + dist/utils/NotFoundError.js | 8 + dist/utils/createError.js | 9 + dist/utils/createQuery.js | 27 + dist/utils/imageChecker.js | 22 + dist/utils/mobileCheck.js | 9 + dist/utils/sortBySwitch.js | 14 + dist/utils/sortBySwitchFolder.js | 14 + dist/utils/videoChecker.js | 48 ++ package.json | 9 +- rootpath.js | 1 - tsconfig.json | 74 ++ 71 files changed, 3930 insertions(+), 180 deletions(-) rename backend/controllers/{file.js => file.ts} (56%) rename backend/express-routers/{file.js => file.ts} (65%) rename backend/express-routers/{folder.js => folder.ts} (89%) rename backend/express-routers/{storage.js => storage.ts} (71%) rename backend/express-routers/{user.js => user.ts} (85%) create mode 100644 backend/key/getKey.js create mode 100644 backend/models/file.ts rename backend/models/{thumbnail.js => thumbnail.ts} (50%) rename backend/models/{user.js => user.ts} (87%) rename {server => backend/server}/server.js (80%) rename {server => backend/server}/serverStart.js (100%) create mode 100644 backend/services/ChunkService/MongoService.ts create mode 100644 backend/services/FileService/indexnew.ts create mode 100644 backend/utils/InternalServerError.js create mode 100644 backend/utils/NotAuthorizedError.js create mode 100644 backend/utils/NotFoundError.js create mode 100644 backend/utils/createError.js create mode 100644 backend/utils/createQuery.js create mode 100644 backend/utils/imageChecker.js create mode 100644 backend/utils/mobileCheck.js create mode 100644 backend/utils/sortBySwitch.js create mode 100644 backend/utils/sortBySwitchFolder.js create mode 100644 backend/utils/videoChecker.js create mode 100644 dist/controllers/file.js create mode 100644 dist/controllers/folder.js create mode 100644 dist/controllers/storage.js create mode 100644 dist/controllers/user.js create mode 100644 dist/db/mongoose.js create mode 100644 dist/db/mongooseServerUtils.js create mode 100644 dist/db/utils/fileUtils/index.js create mode 100644 dist/db/utils/folderUtils/index.js create mode 100644 dist/enviroment/env.js create mode 100644 dist/express-routers/file.js create mode 100644 dist/express-routers/folder.js create mode 100644 dist/express-routers/storage.js create mode 100644 dist/express-routers/user.js create mode 100644 dist/key/getKey.js create mode 100644 dist/middleware/auth.js create mode 100644 dist/middleware/tempAuth.js create mode 100644 dist/middleware/tempAuthVideo.js create mode 100644 dist/models/file.js create mode 100644 dist/models/folder.js create mode 100644 dist/models/thumbnail.js create mode 100644 dist/models/user.js create mode 100644 dist/server/server.js create mode 100644 dist/server/serverStart.js create mode 100644 dist/services/ChunkService/MongoService.js create mode 100644 dist/services/FileService/index.js create mode 100644 dist/services/FileService/indexnew.js create mode 100644 dist/services/FileService/utils/createThumbnail.js create mode 100644 dist/services/FileService/utils/removeChunks.js create mode 100644 dist/services/FolderService/index.js create mode 100644 dist/services/UserService/index.js create mode 100644 dist/test.js create mode 100644 dist/utils/InternalServerError.js create mode 100644 dist/utils/NotAuthorizedError.js create mode 100644 dist/utils/NotFoundError.js create mode 100644 dist/utils/createError.js create mode 100644 dist/utils/createQuery.js create mode 100644 dist/utils/imageChecker.js create mode 100644 dist/utils/mobileCheck.js create mode 100644 dist/utils/sortBySwitch.js create mode 100644 dist/utils/sortBySwitchFolder.js create mode 100644 dist/utils/videoChecker.js delete mode 100644 rootpath.js create mode 100644 tsconfig.json diff --git a/.DS_Store b/.DS_Store index 7c761f1b784e8677673c03dcb31c11dee19e48b2..d99ca88b0c94efcedd0bedc8c65862a70f826c4b 100644 GIT binary patch delta 33 pcmZoMXfc@J&&akhU^g=(+h!gXF2>E`Y#$gmHZU@7X6N|J4*;cp38er4 delta 76 zcmZoMXfc@J&&aVcU^g=($7UWDE=KNThJ1!RhBSsuhV;pDEd3lN=B7FdhNi}opR>wN XzQm%!%f^7DWHT!(BhzMfj=%f>)x#2b diff --git a/backend/controllers/file.js b/backend/controllers/file.ts similarity index 56% rename from backend/controllers/file.js rename to backend/controllers/file.ts index 42ff660..f55db61 100644 --- a/backend/controllers/file.js +++ b/backend/controllers/file.ts @@ -1,15 +1,32 @@ -const FileService = require("../services/FileService") +import { Request, Response } from "express"; + +//const FileService = require("../services/FileService") +import FileService from "../services/FileService/indexnew"; const fileService = new FileService() + +import MongoService from "../services/ChunkService/MongoService"; +const mongoService = new MongoService(); + +import {UserInterface} from "../models/user"; + +interface RequestType extends Request { + user?: UserInterface, + auth?: any, + busboy?: any, +} + class FileController { + // fileService: ; + constructor() { } + getThumbnail = async(req: RequestType, res: Response) => { - async getThumbnail(req, res) { if (!req.user) { @@ -17,6 +34,7 @@ class FileController { } try { + const user = req.user; const id = req.params.id; @@ -35,73 +53,73 @@ class FileController { } - async getFullThumbnail(req, res) { + // async getFullThumbnail(req: RequestType, res: Response) { - if (!req.user) { - return; - } + // if (!req.user) { + // return; + // } - try { + // try { - const user = req.user; - const fileID = req.params.id; + // const user = req.user; + // const fileID = req.params.id; - await fileService.getFullThumbnail(user, fileID, res); + // await fileService.getFullThumbnail(user, fileID, res); - } catch (e) { - const code = e.code || 500; - console.log(e.message, e.exception) - return res.status(code).send(); - } - } + // } catch (e) { + // const code = e.code || 500; + // console.log(e.message, e.exception) + // return res.status(code).send(); + // } + // } - async uploadFile(req, res) { + // async uploadFile(req: RequestType, res: Response) { - if (!req.user) { + // if (!req.user) { - return - } + // return + // } - try { + // try { - const user = req.user; - const busboy = req.busboy; + // const user = req.user; + // const busboy = req.busboy; - req.pipe(busboy); + // req.pipe(busboy); - const file = await fileService.upload(user, busboy, req); + // const file = await fileService.upload(user, busboy, req); - res.send(file); + // res.send(file); - console.log("file uploaded"); + // console.log("file uploaded"); - } catch (e) { - const code = e.code || 500; - console.log(e.message, e.exception) - return res.status(code).send(); - } - } + // } catch (e) { + // const code = e.code || 500; + // console.log(e.message, e.exception) + // return res.status(code).send(); + // } + // } - async getPublicDownload(req, res) { + // async getPublicDownload(req: RequestType, res: Response) { - try { + // try { - const ID = req.params.id; - const tempToken = req.params.tempToken; + // const ID = req.params.id; + // const tempToken = req.params.tempToken; - await fileService.publicDownload(ID, tempToken, res); + // await fileService.publicDownload(ID, tempToken, res); - } catch (e) { + // } catch (e) { - const code = e.code || 500; - const message = e.message || e; + // const code = e.code || 500; + // const message = e.message || e; - console.log(message, e); - res.status(code).send(); - } - } + // console.log(message, e); + // res.status(code).send(); + // } + // } - async removeLink(req, res) { + async removeLink(req: RequestType, res: Response) { if (!req.user) { return; @@ -126,7 +144,7 @@ class FileController { } - async makePublic(req, res) { + async makePublic(req: RequestType, res: Response) { if (!req.user) { return; @@ -150,7 +168,7 @@ class FileController { } } - async getPublicInfo(req, res) { + async getPublicInfo(req: RequestType, res: Response) { try { @@ -170,7 +188,7 @@ class FileController { } } - async makeOneTimePublic(req, res) { + async makeOneTimePublic(req: RequestType, res: Response) { if (!req.user) { return; @@ -195,7 +213,7 @@ class FileController { } - async getFileInfo(req, res) { + async getFileInfo(req: RequestType, res: Response) { if (!req.user) { return; @@ -219,7 +237,7 @@ class FileController { } } - async getQuickList(req, res) { + async getQuickList(req: RequestType, res: Response) { if (!req.user) { return; @@ -242,7 +260,7 @@ class FileController { } } - async getList(req, res) { + async getList(req: RequestType, res: Response) { if (!req.user) { return @@ -266,7 +284,7 @@ class FileController { } } - async getDownloadToken(req, res) { + async getDownloadToken(req: RequestType, res: Response) { if (!req.user) { return @@ -289,7 +307,7 @@ class FileController { } } - async getDownloadTokenVideo(req, res) { + async getDownloadTokenVideo(req: RequestType, res: Response) { if (!req.user) { return @@ -298,7 +316,7 @@ class FileController { try { const user = req.user; - const cookie = req.headers.uuid + const cookie = req.headers.uuid as string; const tempToken = await fileService.getDownloadTokenVideo(user, cookie); @@ -313,7 +331,7 @@ class FileController { } } - async removeTempToken(req, res) { + async removeTempToken(req: RequestType, res: Response) { if (!req.user) { return @@ -337,111 +355,111 @@ class FileController { } } - async transcodeVideo(req, res) { + // async transcodeVideo(req: RequestType, res: Response) { - if (!req.user) { + // if (!req.user) { - return; - } + // return; + // } - try { + // try { - console.log("transcode request", req.body.file._id) + // console.log("transcode request", req.body.file._id) - const user = req.user; - const body = req.body; + // const user = req.user; + // const body = req.body; - await fileService.transcodeVideo(user, body); + // await fileService.transcodeVideo(user, body); - res.send("Finished"); + // res.send("Finished"); - } catch (e) { + // } catch (e) { - const code = e.code || 500; - console.log(e.message, e.exception) - return res.status(code).send(); - } - } + // const code = e.code || 500; + // console.log(e.message, e.exception) + // return res.status(code).send(); + // } + // } - async removeTranscodeVideo(req, res) { + // async removeTranscodeVideo(req: RequestType, res: Response) { - if (!req.user) { + // if (!req.user) { - return; - } + // return; + // } - try { + // try { - const fileID = req.body.id; - const userID = req.user._id; + // const fileID = req.body.id; + // const userID = req.user._id; - await fileService.removeTranscodeVideo(userID, fileID); + // await fileService.removeTranscodeVideo(userID, fileID); - res.send(); + // res.send(); - } catch (e) { + // } catch (e) { - const code = e.code || 500; + // const code = e.code || 500; - console.log(e); - res.status(code).send() - } - } + // console.log(e); + // res.status(code).send() + // } + // } - async streamTranscodedVideo(req, res) { + // async streamTranscodedVideo(req: RequestType, res: Response) { - if (!req.auth || !req.user) { - return; - } + // if (!req.auth || !req.user) { + // return; + // } - try { + // try { - console.log("stream request transcoded", req.params.id) + // console.log("stream request transcoded", req.params.id) - const fileID = req.params.id; - const userID = req.user._id; - const headers = req.headers; + // const fileID = req.params.id; + // const userID = req.user._id; + // const headers = req.headers; - await fileService.streamTranscodedVideo(userID, fileID, headers, res); + // await fileService.streamTranscodedVideo(userID, fileID, headers, res); - } catch (e) { + // } catch (e) { - const code = e.code || 500; - const message = e.message || e; + // const code = e.code || 500; + // const message = e.message || e; - console.log(message, e); - res.status(code).send(); - } - } + // console.log(message, e); + // res.status(code).send(); + // } + // } - async streamVideo(req, res) { + // async streamVideo(req: RequestType, res: Response) { - if (!req.auth || !req.user) { - return; - } + // if (!req.auth || !req.user) { + // return; + // } - try { + // try { - const user = req.user; - const fileID = req.params.id; - const headers = req.headers; + // const user = req.user; + // const fileID = req.params.id; + // const headers = req.headers; - console.log("stream request", req.params.id) + // console.log("stream request", req.params.id) - await fileService.streamVideo(user, fileID, headers, res); + // await fileService.streamVideo(user, fileID, headers, res); - } catch (e) { + // } catch (e) { - const code = e.code || 500; - const message = e.message || e; + // const code = e.code || 500; + // const message = e.message || e; - console.log(message, e); - res.status(code).send(); - } + // console.log(message, e); + // res.status(code).send(); + // } - } + // } - async downloadFile(req, res) { + async downloadFile(req: RequestType, res: Response) { if (!req.auth || !req.user) { return; @@ -454,7 +472,8 @@ class FileController { const user = req.user; const fileID = req.params.id; - await fileService.downloadFile(user, fileID, res); + //await fileService.downloadFile(user, fileID, res); + await mongoService.downloadFile(user, fileID, res); } catch (e) { @@ -466,7 +485,7 @@ class FileController { } } - async getSuggestedList(req, res) { + async getSuggestedList(req: RequestType, res: Response) { if (!req.user) { return; @@ -491,7 +510,7 @@ class FileController { } } - async renameFile(req, res) { + async renameFile(req: RequestType, res: Response) { if (!req.user) { return; @@ -517,7 +536,7 @@ class FileController { } - async moveFile(req, res) { + async moveFile(req: RequestType, res: Response) { console.log("move request"); @@ -547,7 +566,7 @@ class FileController { } - async deleteFile(req, res) { + async deleteFile(req: RequestType, res: Response) { if (!req.user) { return; @@ -572,4 +591,4 @@ class FileController { } } -module.exports = FileController; +export default FileController; diff --git a/backend/express-routers/file.js b/backend/express-routers/file.ts similarity index 65% rename from backend/express-routers/file.js rename to backend/express-routers/file.ts index f9f9860..35d46e4 100644 --- a/backend/express-routers/file.js +++ b/backend/express-routers/file.ts @@ -1,21 +1,24 @@ -const express = require("express"); -const router = new express.Router; +import {Router} from "express"; + +const router = Router(); + const auth = require("../middleware/auth"); const tempAuth = require("../middleware/tempAuth") const tempAuthVideo = require("../middleware/tempAuthVideo") -const FileController = require("../controllers/file"); + +import FileController from "../controllers/file"; const fileController = new FileController() -router.post("/file-service/upload", auth, fileController.uploadFile); +//router.post("/file-service/upload", auth, fileController.uploadFile); -router.post("/file-service/transcode-video", auth, fileController.transcodeVideo); +//router.post("/file-service/transcode-video", auth, fileController.transcodeVideo); router.get("/file-service/thumbnail/:id", auth, fileController.getThumbnail); -router.get("/file-service/full-thumbnail/:id", auth, fileController.getFullThumbnail); +//router.get("/file-service/full-thumbnail/:id", auth, fileController.getFullThumbnail); -router.get("/file-service/public/download/:id/:tempToken", fileController.getPublicDownload); +//router.get("/file-service/public/download/:id/:tempToken", fileController.getPublicDownload); router.get("/file-service/public/info/:id/:tempToken", fileController.getPublicInfo); @@ -29,9 +32,9 @@ router.get("/file-service/download/get-token", auth, fileController.getDownloadT router.get("/file-service/download/get-token-video", auth, fileController.getDownloadTokenVideo); -router.get("/file-service/stream-video-transcoded/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamTranscodedVideo); +//router.get("/file-service/stream-video-transcoded/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamTranscodedVideo); -router.get("/file-service/stream-video/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamVideo); +//router.get("/file-service/stream-video/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamVideo); router.get("/file-service/download/:id/:tempToken", tempAuth, fileController.downloadFile); @@ -49,7 +52,7 @@ router.delete("/file-service/remove-link/:id", auth, fileController.removeLink); router.delete("/file-service/remove/token-video/:tempToken", auth, fileController.removeTempToken); -router.delete("/file-service/transcode-video/remove", auth, fileController.removeTranscodeVideo); +//router.delete("/file-service/transcode-video/remove", auth, fileController.removeTranscodeVideo); router.delete("/file-service/remove", auth, fileController.deleteFile); diff --git a/backend/express-routers/folder.js b/backend/express-routers/folder.ts similarity index 89% rename from backend/express-routers/folder.js rename to backend/express-routers/folder.ts index 117be38..69a9dce 100644 --- a/backend/express-routers/folder.js +++ b/backend/express-routers/folder.ts @@ -1,5 +1,5 @@ -const express = require("express"); -const router = new express.Router; +import {Router} from "express"; +const router = Router(); const auth = require("../middleware/auth"); const FolderController = require("../controllers/folder"); const folderController = new FolderController(); diff --git a/backend/express-routers/storage.js b/backend/express-routers/storage.ts similarity index 71% rename from backend/express-routers/storage.js rename to backend/express-routers/storage.ts index 5fa436b..f5a4966 100644 --- a/backend/express-routers/storage.js +++ b/backend/express-routers/storage.ts @@ -1,5 +1,5 @@ -const express = require("express"); -const router = new express.Router; +import {Router} from "express"; +const router = Router(); const auth = require("../middleware/auth"); const StorageController = require("../controllers/storage"); const storageController = new StorageController(); diff --git a/backend/express-routers/user.js b/backend/express-routers/user.ts similarity index 85% rename from backend/express-routers/user.js rename to backend/express-routers/user.ts index 089a4ff..3a376de 100644 --- a/backend/express-routers/user.js +++ b/backend/express-routers/user.ts @@ -1,5 +1,5 @@ -const express = require("express"); -const router = new express.Router; +import {Router} from "express"; +const router = Router(); const auth = require("../middleware/auth"); const UserController = require("../controllers/user"); const userController = new UserController(); diff --git a/backend/key/getKey.js b/backend/key/getKey.js new file mode 100644 index 0000000..533b36f --- /dev/null +++ b/backend/key/getKey.js @@ -0,0 +1,30 @@ +const prompt = require('password-prompt') +const env = require("../enviroment/env"); +const crypto = require("crypto"); + +const getKey = async() => { + + if (process.env.KEY) { + // For Docker + + env.key = process.env.KEY + + } else if (process.env.NODE_ENV) { + + let password = await prompt("Enter Server Encryption Password: ", {method: "hide"}); + + password = crypto.createHash("md5").update(password).digest("hex"); + + env.key = password; + + } else { + + let password = "1234"; + + password = crypto.createHash("md5").update(password).digest("hex"); + + env.key = password; + } +} + +module.exports = getKey; \ No newline at end of file diff --git a/backend/models/file.ts b/backend/models/file.ts new file mode 100644 index 0000000..a03af91 --- /dev/null +++ b/backend/models/file.ts @@ -0,0 +1,19 @@ +export interface FileInterface { + _id: string, + length: number, + chunkSize: number, + updateDate: string, + filename: string, + metadata: { + owner: string, + parent: string, + parentList: string, + hasThumbnail: boolean, + isVideo: boolean, + thumbnailID?: string, + size: number, + IV: any, + linkType?: 'one' | 'public', + link?: string + } +} \ No newline at end of file diff --git a/backend/models/thumbnail.js b/backend/models/thumbnail.ts similarity index 50% rename from backend/models/thumbnail.js rename to backend/models/thumbnail.ts index fe873c9..7fbc73c 100644 --- a/backend/models/thumbnail.js +++ b/backend/models/thumbnail.ts @@ -1,4 +1,4 @@ -const mongoose = require("mongoose"); +import mongoose, {Document} from "mongoose"; const thumbnailSchema = new mongoose.Schema({ @@ -20,6 +20,13 @@ const thumbnailSchema = new mongoose.Schema({ timestamps: true }) -const Thumbnail = mongoose.model("Thumbnail", thumbnailSchema); +export interface ThumbnailInterface extends Document { + _id: string, + name: string, + owner: string, + data: any +} -module.exports = Thumbnail; \ No newline at end of file +const Thumbnail = mongoose.model("Thumbnail", thumbnailSchema); + +export default Thumbnail; \ No newline at end of file diff --git a/backend/models/user.js b/backend/models/user.ts similarity index 87% rename from backend/models/user.js rename to backend/models/user.ts index 4c90626..0ee9243 100644 --- a/backend/models/user.js +++ b/backend/models/user.ts @@ -1,11 +1,11 @@ -const mongoose = require("mongoose"); +import mongoose, {Document} from "mongoose"; const validator = require("validator"); const crypto = require("crypto"); const bcrypt = require("bcrypt"); const jwt = require("jsonwebtoken"); const env = require("../enviroment/env"); -const userSchema = mongoose.Schema({ +const userSchema = new mongoose.Schema({ name: { @@ -18,7 +18,7 @@ const userSchema = mongoose.Schema({ trim: true, unique: true, lowercase: true, - validate(value) { + validate(value: any): any { if (!validator.isEmail(value)) { throw new Error("Email is invalid"); } @@ -28,7 +28,7 @@ const userSchema = mongoose.Schema({ type: String, trim: true, required: true, - validate(value) { + validate(value: any): any { if (value.length < 6) { throw new Error("Password Length Not Sufficent"); } @@ -57,12 +57,30 @@ const userSchema = mongoose.Schema({ timestamps: true }) +export interface UserInterface extends Document { + _id: string, + name: string, + email: string, + password: string, + tokens: any[], + tempTokens: any[], + privateKey?: string, + publicKey?: string, + token?:string, + + getEncryptionKey: () => Buffer; + generateTempAuthToken: () => any; + generateTempAuthTokenVideo: (cookie: string) => any; + encryptToken: (tempToken: any, key: any, publicKey: any) => any; +} + // userSchema.virtual("files", { // ref: "fs.files", // localField: "_id" // }) -userSchema.pre("save", async function(next) { + +userSchema.pre("save", async function(this: any, next: any) { const user = this; @@ -73,7 +91,7 @@ userSchema.pre("save", async function(next) { next(); }) -userSchema.statics.findByCreds = async(email, password) => { +userSchema.statics.findByCreds = async(email: string, password: string) => { const user = await User.findOne({email}); @@ -123,7 +141,7 @@ userSchema.methods.generateAuthToken = async function() { return token; } -userSchema.methods.encryptToken = function(token, key, iv) { +userSchema.methods.encryptToken = function(token: string, key: string, iv: any) { iv = Buffer.from(iv, "hex") @@ -135,7 +153,7 @@ userSchema.methods.encryptToken = function(token, key, iv) { return encryptedText; } -userSchema.methods.decryptToken = function(encryptedToken, key, iv) { +userSchema.methods.decryptToken = function(encryptedToken: any, key: string, iv: any) { encryptedToken = Buffer.from(encryptedToken, "hex"); iv = Buffer.from(iv, "hex") @@ -197,7 +215,7 @@ userSchema.methods.getEncryptionKey = function() { return decrypted; } -userSchema.methods.changeEncryptionKey = async function(randomKey) { +userSchema.methods.changeEncryptionKey = async function(randomKey: string) { const user = this; const userPassword = user.password; @@ -251,7 +269,7 @@ userSchema.methods.generateTempAuthToken = async function() { return token; } -userSchema.methods.generateTempAuthTokenVideo = async function(cookie) { +userSchema.methods.generateTempAuthTokenVideo = async function(cookie: string) { const iv = crypto.randomBytes(16); @@ -270,6 +288,6 @@ userSchema.methods.generateTempAuthTokenVideo = async function(cookie) { } -const User = mongoose.model("User", userSchema); +const User = mongoose.model("User", userSchema); module.exports = User; \ No newline at end of file diff --git a/server/server.js b/backend/server/server.js similarity index 80% rename from server/server.js rename to backend/server/server.js index 3f7aaab..4fdc033 100755 --- a/server/server.js +++ b/backend/server/server.js @@ -1,11 +1,11 @@ const express = require("express"); const app = express(); const path = require("path") -const publicPath = path.join(__dirname, "..", "public"); -const userRouter = require("../backend/express-routers/user") -const fileRouter = require("../backend/express-routers/file") -const folderRouter = require("../backend/express-routers/folder"); -const storageRouter = require("../backend/express-routers/storage"); +const publicPath = path.join(__dirname, "..", "..", "public"); +const userRouter = require("../express-routers/user") +const fileRouter = require("../express-routers/file") +const folderRouter = require("../express-routers/folder"); +const storageRouter = require("../express-routers/storage"); const bodyParser = require('body-parser'); const https = require("https"); const fs = require("fs"); @@ -39,7 +39,7 @@ server = http.createServer(app); -require("../backend/db/mongoose"); +require("../db/mongoose"); app.use(helmet()) diff --git a/server/serverStart.js b/backend/server/serverStart.js similarity index 100% rename from server/serverStart.js rename to backend/server/serverStart.js diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts new file mode 100644 index 0000000..ecd9830 --- /dev/null +++ b/backend/services/ChunkService/MongoService.ts @@ -0,0 +1,81 @@ +import mongoose from "../../db/mongoose"; +import {Response} from "express"; +const conn = mongoose.connection; +const env = require("../../enviroment/env"); +const DbUtilFolder = require("../../db/utils/folderUtils"); +import DbUtilFile from "../../db/utils/fileUtils/index"; +import crypto from "crypto"; + +const ObjectID = require('mongodb').ObjectID + +import { UserInterface } from "../../models/user"; +import { FileInterface } from "../../models/file"; + +const dbUtilsFile = new DbUtilFile(); +const dbUtilsFolder = new DbUtilFolder(); + +class MongoService { + + constructor() { + + } + + downloadFile = (user: UserInterface, fileID: string, res: Response) => { + + return new Promise((resolve, reject) => { + + dbUtilsFile.getFileInfo(fileID, user._id).then((currentFile: FileInterface) => { + + if (!currentFile) { + + reject({ + code: 401, + message: "Download File Not Found Error", + exception: undefined + }) + + } else { + + const password: Buffer = user.getEncryptionKey(); + + const bucket = new mongoose.mongo.GridFSBucket(conn.db); + + const IV = currentFile.metadata.IV.buffer + const readStream = bucket.openDownloadStream(ObjectID(fileID)); + + readStream.on("error", (e: Error) => { + reject({ + code: 500, + message: "File service download decipher error", + exception: e + }) + }) + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + decipher.on("error", (e) => { + reject({ + code: 500, + message: "File service download decipher error", + exception: e + }) + }) + + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); + res.set('Content-Length', currentFile.metadata.size.toString()); + + readStream.pipe(decipher).pipe(res).on("finish", () => { + resolve(); + }); + } + + }) + }) + } + +} + +export default MongoService; \ No newline at end of file diff --git a/backend/services/FileService/index.js b/backend/services/FileService/index.js index 4c5838b..abe4686 100644 --- a/backend/services/FileService/index.js +++ b/backend/services/FileService/index.js @@ -1,13 +1,13 @@ -const imageChecker = require("../../../src/utils/imageChecker"); -const crypto= require("crypto"); -const videoChecker = require("../../../src/utils/videoChecker"); +const imageChecker = require("../../utils/imageChecker"); +import crypto from "crypto"; +const videoChecker = require("../../utils/videoChecker"); const mongoose = require("../../db/mongoose") const conn = mongoose.connection; -const createThumbnail = require("../../services/FileService/utils/createThumbnail"); +const createThumbnail = require("./utils/createThumbnail"); const Thumbnail = require("../../models/thumbnail"); const ObjectID = require('mongodb').ObjectID -const NotAuthorizedError = require("../../../src/utils/NotAuthorizedError"); -const NotFoundError = require("../../../src/utils/NotFoundError"); +const NotAuthorizedError = require("../../utils/NotAuthorizedError"); +const NotFoundError = require("../../utils/NotFoundError"); const env = require("../../enviroment/env"); const jwt = require("jsonwebtoken"); const removeChunks = require("./utils/removeChunks"); @@ -15,8 +15,8 @@ const User = require("../../models/user"); const Folder = require("../../models/folder"); -const sortBySwitch = require("../../../src/utils/sortBySwitch") -const createQuery = require("../../../src/utils/createQuery"); +const sortBySwitch = require("../../utils/sortBySwitch") +const createQuery = require("../../utils/createQuery"); const ffmpeg = require("fluent-ffmpeg"); const temp = require("temp").track(); const progress = require("progress-stream"); diff --git a/backend/services/FileService/indexnew.ts b/backend/services/FileService/indexnew.ts new file mode 100644 index 0000000..7092fdc --- /dev/null +++ b/backend/services/FileService/indexnew.ts @@ -0,0 +1,286 @@ +const imageChecker = require("../../utils/imageChecker"); +import crypto from "crypto"; +const videoChecker = require("../../utils/videoChecker"); +const mongoose = require("../../db/mongoose") +const conn = mongoose.connection; +const createThumbnail = require("../../services/FileService/utils/createThumbnail"); +import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; +const ObjectID = require('mongodb').ObjectID +import NotAuthorizedError from "../../utils/NotAuthorizedError"; +import NotFoundError from "../../utils/NotFoundError"; +const env = require("../../enviroment/env"); +const jwt = require("jsonwebtoken"); +const removeChunks = require("./utils/removeChunks"); +const User = require("../../models/user"); + + +const Folder = require("../../models/folder"); +const sortBySwitch = require("../../utils/sortBySwitch") +const createQuery = require("../../utils/createQuery"); +const ffmpeg = require("fluent-ffmpeg"); +const temp = require("temp").track(); +const progress = require("progress-stream"); +const fs = require("fs") +import DbUtilFile from "../../db/utils/fileUtils/index"; +const DbUtilFolder = require("../../db/utils/folderUtils"); + +const dbUtilsFile = new DbUtilFile(); +const dbUtilsFolder = new DbUtilFolder(); + +import { UserInterface } from "../../models/user"; +import { FileInterface } from "../../models/file"; + +class MongoFileService { + + constructor() { + + } + + getThumbnail = async(user: UserInterface, id: string) => { + + const password: Buffer = user.getEncryptionKey(); + + const thumbnail = await Thumbnail.findById(id) as ThumbnailInterface; + + if (thumbnail.owner !== user._id.toString()) { + + throw new NotAuthorizedError('Thumbnail Unauthorized Error'); + } + + const iv = thumbnail.data.slice(0, 16); + + const chunk = thumbnail.data.slice(16); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv("aes256", CIPHER_KEY, iv); + + const decryptedThumbnail = Buffer.concat([decipher.update(chunk), decipher.final()]); + + return decryptedThumbnail; + } + + removePublicOneTimeLink = async(currentFile: FileInterface) => { + + const fileID = currentFile._id; + + if (currentFile.metadata.linkType === "one") { + + await dbUtilsFile.removeOneTimePublicLink(fileID); + } + } + + removeLink = async(userID: string, fileID: string) => { + + const file = await dbUtilsFile.removeLink(fileID, userID); + + if (!file.lastErrorObject.updatedExisting) throw new NotFoundError("Remove Link File Not Found Error") + } + + makePublic = async(user: UserInterface, fileID: string) => { + + const userID = user._id; + const token = await jwt.sign({_id: userID.toString()}, env.password); + + const file = await dbUtilsFile.makePublic(fileID, userID, token); + + if (!file.lastErrorObject.updatedExisting) throw new NotFoundError("Make Public File Not Found Error"); + + return token; + } + + getPublicInfo = async(fileID: string, tempToken: string) => { + + const file: FileInterface = await dbUtilsFile.getPublicInfo(fileID, tempToken); + + if (!file || !file.metadata.link || file.metadata.link !== tempToken) { + + throw new NotFoundError("Public Info Not Found"); + + } else { + + return file; + } + } + + makeOneTimePublic = async(userID: string, fileID: string) => { + + const token = await jwt.sign({_id: userID.toString()}, env.password); + + const file = await dbUtilsFile.makeOneTimePublic(fileID, userID, token); + + if (!file.lastErrorObject.updatedExisting) throw new NotFoundError("Make One Time Public Not Found Error"); + + return token; + } + + getFileInfo = async(userID: string, fileID: string) => { + + let currentFile = await dbUtilsFile.getFileInfo(fileID, userID) + + if (!currentFile) throw new NotFoundError("Get File Info Not Found Error"); + + const parentID = currentFile.metadata.parent + + let parentName = ""; + + if (parentID === "/") { + + parentName = "Home" + + } else { + + const parentFolder = await Folder.findOne({"owner": userID, "_id": parentID}); + + if (parentFolder) { + + parentName = parentFolder.name; + + } else { + + parentName = "Unknown" + } + + } + + return {...currentFile, parentName} + } + + getQuickList = async(userID: string) => { + + const quickList = await dbUtilsFile.getQuickList(userID); + + if (!quickList) throw new NotFoundError("Quick List Not Found Error"); + + return quickList; + } + + getList = async(userID: string, query: any) => { + + let searchQuery = query.search || ""; + const parent = query.parent || "/"; + let limit = query.limit || 50; + let sortBy = query.sortby || "DEFAULT" + const startAt = query.startAt || undefined + const startAtDate = query.startAtDate || "0" + const startAtName = query.startAtName || "" + sortBy = sortBySwitch(sortBy) + limit = parseInt(limit) + + const queryObj = createQuery(userID, parent, query.sortby,startAt, startAtDate, searchQuery, startAtName) + + const fileList = await dbUtilsFile.getList(queryObj, sortBy, limit); + + if (!fileList) throw new NotFoundError("File List Not Found"); + + return fileList; + } + + getDownloadToken = async(user: UserInterface) => { + + const tempToken = await user.generateTempAuthToken(); + + if (!tempToken) throw new NotAuthorizedError("Get Download Token Not Authorized Error"); + + return tempToken; + } + + getDownloadTokenVideo = async(user: UserInterface, cookie: string) => { + + if (!cookie) throw new NotAuthorizedError("Get Download Token Video Cookie Not Authorized Error"); + + const tempToken = await user.generateTempAuthTokenVideo(cookie); + + if (!tempToken) throw new NotAuthorizedError("Get Download Token Video Not Authorized Error"); + + return tempToken; + } + + removeTempToken = async(user: UserInterface, tempToken: any) => { + + const key = user.getEncryptionKey(); + + const decoded = await jwt.verify(tempToken, env.password); + + const publicKey = decoded.iv; + + const encryptedToken = user.encryptToken(tempToken, key, publicKey); + + const removedTokenUser = await dbUtilsFile.removeTempToken(user, encryptedToken); + + if (!removedTokenUser) throw new NotFoundError("Remove Temp Token User Not Found Errors"); + + await removedTokenUser.save(); + } + + getSuggestedList = async(userID: string, searchQuery: any) => { + + searchQuery = new RegExp(searchQuery, 'i') + + const fileList = await dbUtilsFile.getFileSearchList(userID, searchQuery); + const folderList = await dbUtilsFolder.getFolderSearchList(userID, searchQuery); + + if (!fileList || !folderList) throw new NotFoundError("Suggested List Not Found Error"); + + return { + fileList, + folderList + } + } + + renameFile = async(userID: string, fileID: string, title: string) => { + + const file = await dbUtilsFile.renameFile(fileID, userID, title); + + if (!file.lastErrorObject.updatedExisting) throw new NotFoundError("Rename File Not Found Error"); + + return file; + } + + moveFile = async(userID: string, fileID: string, parentID: string) => { + + let parentList = ["/"]; + + if (parentID.length !== 1) { + + const parentFile = await dbUtilsFolder.getFolderInfo(parentID, userID); + if (!parentFile) throw new NotFoundError("Rename Parent File Not Found Error") + const parentList = parentFile.parentList; + parentList.push(parentID); + } + + const file = await dbUtilsFile.moveFile(fileID, userID, parentID, parentList.toString()); + + if (!file.lastErrorObject.updatedExisting) throw new NotFoundError("Rename File Not Found Error"); + + return file; + } + + deleteFile = async(userID: string, fileID: string) => { + + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255, + }); + + const file = await dbUtilsFile.getFileInfo(fileID, userID); + + if (!file) throw new NotFoundError("Delete File Not Found Error"); + + if (file.metadata.thumbnailID) { + + await Thumbnail.deleteOne({_id: file.metadata.thumbnailID}); + } + + if (file.metadata.isVideo && file.metadata.transcoded) { + try { + await bucket.delete(ObjectID(file.metadata.transcodedID)); + } catch (e) { + console.log("Could Not Find Transcoded Video"); + } + } + + await bucket.delete(ObjectID(fileID)); + } +} + +export default MongoFileService; \ No newline at end of file diff --git a/backend/services/FolderService/index.js b/backend/services/FolderService/index.js index a22bfd3..87ad37b 100644 --- a/backend/services/FolderService/index.js +++ b/backend/services/FolderService/index.js @@ -1,13 +1,13 @@ const Folder = require("../../models/folder"); -const InternalServerError = require("../../../src/utils/InternalServerError"); -const NotFoundError = require("../../../src/utils/NotFoundError"); +const InternalServerError = require("../../utils/InternalServerError"); +const NotFoundError = require("../../utils/NotFoundError"); const UtilsFile = require("../../db/utils/fileUtils"); const ObjectID = require('mongodb').ObjectID const UtilsFolder = require("../../db/utils/folderUtils"); const mongoose = require("../../db/mongoose") const conn = mongoose.connection; const Thumbnail = require("../../models/thumbnail"); -const sortBySwitch = require("../../../src/utils/sortBySwitchFolder") +const sortBySwitch = require("../../utils/sortBySwitchFolder"); const utilsFile = new UtilsFile(); const utilsFolder = new UtilsFolder(); diff --git a/backend/services/UserService/index.js b/backend/services/UserService/index.js index b1cc6c6..b18ed44 100644 --- a/backend/services/UserService/index.js +++ b/backend/services/UserService/index.js @@ -1,9 +1,9 @@ const User = require("../../models/user"); const bcrypt = require("bcrypt"); const crypto = require("crypto"); -const NotFoundError = require("../../../src/utils/NotFoundError"); -const InternalServerError = require("../../../src/utils/InternalServerError"); -const NotAuthorizedError = require("../../../src/utils/NotAuthorizedError"); +const NotFoundError = require("../../utils/NotFoundError"); +const InternalServerError = require("../../utils/InternalServerError"); +const NotAuthorizedError = require("../../utils/NotAuthorizedError"); const UserService = function() { diff --git a/backend/utils/InternalServerError.js b/backend/utils/InternalServerError.js new file mode 100644 index 0000000..5556ea5 --- /dev/null +++ b/backend/utils/InternalServerError.js @@ -0,0 +1,10 @@ +class InternalServerError extends Error { + + constructor(args) { + super(args); + + this.code = 500; + } +} + +module.exports = InternalServerError; \ No newline at end of file diff --git a/backend/utils/NotAuthorizedError.js b/backend/utils/NotAuthorizedError.js new file mode 100644 index 0000000..d28fd6e --- /dev/null +++ b/backend/utils/NotAuthorizedError.js @@ -0,0 +1,10 @@ +class NotAuthorizedError extends Error { + + constructor(args) { + super(args); + + this.code = 401; + } +} + +module.exports = NotAuthorizedError; \ No newline at end of file diff --git a/backend/utils/NotFoundError.js b/backend/utils/NotFoundError.js new file mode 100644 index 0000000..128205f --- /dev/null +++ b/backend/utils/NotFoundError.js @@ -0,0 +1,10 @@ +class NotFoundError extends Error { + + constructor(args) { + super(args); + + this.code = 404; + } +} + +module.exports = NotFoundError; \ No newline at end of file diff --git a/backend/utils/createError.js b/backend/utils/createError.js new file mode 100644 index 0000000..6e9efc1 --- /dev/null +++ b/backend/utils/createError.js @@ -0,0 +1,12 @@ +const createError = (message, code, exception) => { + + let error = new Error(message); + error.message = message + error.code = code + error.exception = exception + + throw error; + +} + +module.exports = createError; \ No newline at end of file diff --git a/backend/utils/createQuery.js b/backend/utils/createQuery.js new file mode 100644 index 0000000..c4f6751 --- /dev/null +++ b/backend/utils/createQuery.js @@ -0,0 +1,41 @@ +const createQuery = (owner, parent,sortBy, startAt, startAtDate,searchQuery, startAtName) => { + + let query = {"metadata.owner": owner} + + if (searchQuery !== "") { + + searchQuery = new RegExp(searchQuery, 'i') + + query = {...query, filename: searchQuery} + + } else { + + query = {...query, "metadata.parent": parent} + } + + if (startAt) { + + if (sortBy === "date_desc" || sortBy === "DEFAULT") { + + query = {...query, "uploadDate": {$lt: new Date(startAtDate)}} + + } else if (sortBy === "date_asc") { + + query = {...query, "uploadDate": {$gt: new Date(startAtDate)}} + + } else if (sortBy === "alp_desc") { + + query = {...query, "filename": {$lt: startAtName}} + + } else { + + query = {...query, "filename": {$gt: startAtName}} + } + } + + + return query; + +} + +module.exports = createQuery \ No newline at end of file diff --git a/backend/utils/imageChecker.js b/backend/utils/imageChecker.js new file mode 100644 index 0000000..2df835e --- /dev/null +++ b/backend/utils/imageChecker.js @@ -0,0 +1,31 @@ +const videoExtList = [ + "jpeg", + "jpg", + "png", + "gif", + "svg", + "tiff", + "bmp" +] + +const videoChecker = (filename) => { + + if (filename.length < 1 || !filename.includes(".")) { + + return false; + } + + const extSplit = filename.split("."); + + if (extSplit < 1) { + + return false; + } + + const ext = extSplit[extSplit.length - 1]; + + return videoExtList.includes(ext.toLowerCase()); + +} + +module.exports = videoChecker; \ No newline at end of file diff --git a/backend/utils/mobileCheck.js b/backend/utils/mobileCheck.js new file mode 100644 index 0000000..67876d7 --- /dev/null +++ b/backend/utils/mobileCheck.js @@ -0,0 +1,6 @@ +const mobilecheck = () => { + var check = false; + (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); + return check; + }; +export default mobilecheck; diff --git a/backend/utils/sortBySwitch.js b/backend/utils/sortBySwitch.js new file mode 100644 index 0000000..d0c43c3 --- /dev/null +++ b/backend/utils/sortBySwitch.js @@ -0,0 +1,15 @@ +const sortBySwitch = (sortBy) => { + switch(sortBy) { + + case "alp_asc": + return {filename: 1} + case "alp_desc": + return {filename: -1} + case "date_asc": + return {uploadDate: 1} + default: + return {uploadDate: -1} + } +} + +module.exports = sortBySwitch; \ No newline at end of file diff --git a/backend/utils/sortBySwitchFolder.js b/backend/utils/sortBySwitchFolder.js new file mode 100644 index 0000000..314397e --- /dev/null +++ b/backend/utils/sortBySwitchFolder.js @@ -0,0 +1,15 @@ +const sortBySwitch = (sortBy) => { + switch(sortBy) { + + case "alp_asc": + return {name: 1} + case "alp_desc": + return {name: -1} + case "date_asc": + return {createdAt: 1} + default: + return {createdAt: -1} + } +} + +module.exports = sortBySwitch; \ No newline at end of file diff --git a/backend/utils/videoChecker.js b/backend/utils/videoChecker.js new file mode 100644 index 0000000..e3c31f6 --- /dev/null +++ b/backend/utils/videoChecker.js @@ -0,0 +1,57 @@ +const videoExtList = [ + "3g2", + "3gp", + "aaf", + "asf", + "avchd", + "avi", + "drc", + "flv", + "m2v", + "m4p", + "m4v", + "mkv", + "mng", + "mov", + "mp2", + "mp4", + "mpe", + "mpeg", + "mpg", + "mpv", + "mxf", + "nsv", + "ogg", + "ogv", + "qt", + "rm", + "rmvb", + "roq", + "svi", + "vob", + "webm", + "wmv", + "yuv" +] + +const videoChecker = (filename) => { + + if (filename.length < 1 || !filename.includes(".")) { + + return false; + } + + const extSplit = filename.split("."); + + if (extSplit < 1) { + + return false; + } + + const ext = extSplit[extSplit.length - 1]; + + return videoExtList.includes(ext.toLowerCase()); + +} + +module.exports = videoChecker; \ No newline at end of file diff --git a/dist/controllers/file.js b/dist/controllers/file.js new file mode 100644 index 0000000..e8b5ae4 --- /dev/null +++ b/dist/controllers/file.js @@ -0,0 +1,420 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +//const FileService = require("../services/FileService") +const indexnew_1 = __importDefault(require("../services/FileService/indexnew")); +const fileService = new indexnew_1.default(); +const MongoService_1 = __importDefault(require("../services/ChunkService/MongoService")); +const mongoService = new MongoService_1.default(); +class FileController { + // fileService: ; + constructor() { + this.getThumbnail = (req, res) => __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const user = req.user; + const id = req.params.id; + const decryptedThumbnail = yield fileService.getThumbnail(user, id); + res.send(decryptedThumbnail); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + // async getFullThumbnail(req: RequestType, res: Response) { + // if (!req.user) { + // return; + // } + // try { + // const user = req.user; + // const fileID = req.params.id; + // await fileService.getFullThumbnail(user, fileID, res); + // } catch (e) { + // const code = e.code || 500; + // console.log(e.message, e.exception) + // return res.status(code).send(); + // } + // } + // async uploadFile(req: RequestType, res: Response) { + // if (!req.user) { + // return + // } + // try { + // const user = req.user; + // const busboy = req.busboy; + // req.pipe(busboy); + // const file = await fileService.upload(user, busboy, req); + // res.send(file); + // console.log("file uploaded"); + // } catch (e) { + // const code = e.code || 500; + // console.log(e.message, e.exception) + // return res.status(code).send(); + // } + // } + // async getPublicDownload(req: RequestType, res: Response) { + // try { + // const ID = req.params.id; + // const tempToken = req.params.tempToken; + // await fileService.publicDownload(ID, tempToken, res); + // } catch (e) { + // const code = e.code || 500; + // const message = e.message || e; + // console.log(message, e); + // res.status(code).send(); + // } + // } + removeLink(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const id = req.params.id; + const userID = req.user._id; + yield fileService.removeLink(userID, id); + res.send(); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + makePublic(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const fileID = req.params.id; + const user = req.user; + const token = yield fileService.makePublic(user, fileID); + res.send(token); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + getPublicInfo(req, res) { + return __awaiter(this, void 0, void 0, function* () { + try { + const id = req.params.id; + const tempToken = req.params.tempToken; + const file = yield fileService.getPublicInfo(id, tempToken); + res.send(file); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + makeOneTimePublic(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const id = req.params.id; + const userID = req.user._id; + const token = yield fileService.makeOneTimePublic(userID, id); + res.send(token); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + getFileInfo(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const fileID = req.params.id; + const userID = req.user._id; + const file = yield fileService.getFileInfo(userID, fileID); + res.send(file); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + getQuickList(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const userID = req.user._id; + const quickList = yield fileService.getQuickList(userID); + res.send(quickList); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + getList(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const query = req.query; + const userID = req.user._id; + const fileList = yield fileService.getList(userID, query); + res.send(fileList); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + getDownloadToken(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const user = req.user; + const tempToken = yield fileService.getDownloadToken(user); + res.send({ tempToken }); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + getDownloadTokenVideo(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const user = req.user; + const cookie = req.headers.uuid; + const tempToken = yield fileService.getDownloadTokenVideo(user, cookie); + res.send({ tempToken }); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + removeTempToken(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const user = req.user; + const tempToken = req.params.tempToken; + yield fileService.removeTempToken(user, tempToken); + res.send(); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + // async transcodeVideo(req: RequestType, res: Response) { + // if (!req.user) { + // return; + // } + // try { + // console.log("transcode request", req.body.file._id) + // const user = req.user; + // const body = req.body; + // await fileService.transcodeVideo(user, body); + // res.send("Finished"); + // } catch (e) { + // const code = e.code || 500; + // console.log(e.message, e.exception) + // return res.status(code).send(); + // } + // } + // async removeTranscodeVideo(req: RequestType, res: Response) { + // if (!req.user) { + // return; + // } + // try { + // const fileID = req.body.id; + // const userID = req.user._id; + // await fileService.removeTranscodeVideo(userID, fileID); + // res.send(); + // } catch (e) { + // const code = e.code || 500; + // console.log(e); + // res.status(code).send() + // } + // } + // async streamTranscodedVideo(req: RequestType, res: Response) { + // if (!req.auth || !req.user) { + // return; + // } + // try { + // console.log("stream request transcoded", req.params.id) + // const fileID = req.params.id; + // const userID = req.user._id; + // const headers = req.headers; + // await fileService.streamTranscodedVideo(userID, fileID, headers, res); + // } catch (e) { + // const code = e.code || 500; + // const message = e.message || e; + // console.log(message, e); + // res.status(code).send(); + // } + // } + // async streamVideo(req: RequestType, res: Response) { + // if (!req.auth || !req.user) { + // return; + // } + // try { + // const user = req.user; + // const fileID = req.params.id; + // const headers = req.headers; + // console.log("stream request", req.params.id) + // await fileService.streamVideo(user, fileID, headers, res); + // } catch (e) { + // const code = e.code || 500; + // const message = e.message || e; + // console.log(message, e); + // res.status(code).send(); + // } + // } + downloadFile(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.auth || !req.user) { + return; + } + try { + console.log("download request"); + const user = req.user; + const fileID = req.params.id; + //await fileService.downloadFile(user, fileID, res); + yield mongoService.downloadFile(user, fileID, res); + } + catch (e) { + const code = e.code || 500; + const message = e.message || e; + console.log(message, e); + res.status(code).send(); + } + }); + } + getSuggestedList(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const userID = req.user._id; + let searchQuery = req.query.search || ""; + const { fileList, folderList } = yield fileService.getSuggestedList(userID, searchQuery); + return res.send({ folderList, fileList }); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + renameFile(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const fileID = req.body.id; + const title = req.body.title; + const userID = req.user._id; + yield fileService.renameFile(userID, fileID, title); + res.send(); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + moveFile(req, res) { + return __awaiter(this, void 0, void 0, function* () { + console.log("move request"); + if (!req.user) { + return; + } + try { + const fileID = req.body.id; + const userID = req.user._id; + const parentID = req.body.parent; + console.log(fileID, userID, parentID); + yield fileService.moveFile(userID, fileID, parentID); + res.send(); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } + deleteFile(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const userID = req.user._id; + const fileID = req.body.id; + yield fileService.deleteFile(userID, fileID); + res.send(); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(); + } + }); + } +} +exports.default = FileController; diff --git a/dist/controllers/folder.js b/dist/controllers/folder.js new file mode 100644 index 0000000..73aed5a --- /dev/null +++ b/dist/controllers/folder.js @@ -0,0 +1,162 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const FolderService = require("../services/FolderService"); +const folderService = new FolderService(); +class FolderController { + constructor() { + } + uploadFolder(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const data = req.body; + const folder = yield folderService.uploadFolder(data); + res.send(folder); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(e); + } + }); + } + deleteFolder(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const userID = req.user._id; + const folderID = req.body.id; + const parentList = req.body.parentList; + yield folderService.deleteFolder(userID, folderID, parentList); + res.send(); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(e); + } + }); + } + deleteAll(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const userID = req.user._id; + yield folderService.deleteAll(userID); + res.send(); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(e); + } + }); + } + getInfo(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const userID = req.user._id; + const folderID = req.params.id; + const folder = yield folderService.getFolderInfo(userID, folderID); + res.send(folder); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(e); + } + }); + } + getSubfolderList(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const userID = req.user._id; + const folderID = req.query.id; + const { folderIDList, folderNameList } = yield folderService.getFolderSublist(userID, folderID); + res.send({ folderIDList, folderNameList }); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(e); + } + }); + } + getFolderList(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const userID = req.user._id; + const query = req.query; + const folderList = yield folderService.getFolderList(userID, query); + res.send(folderList); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(e); + } + }); + } + moveFolder(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const userID = req.user._id; + const folderID = req.body.id; + const parent = req.body.parent; + yield folderService.moveFolder(userID, folderID, parent); + res.send(); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(e); + } + }); + } + renameFolder(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const userID = req.user._id; + const folderID = req.body.id; + const title = req.body.title; + yield folderService.renameFolder(userID, folderID, title); + res.send(); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(e); + } + }); + } +} +module.exports = FolderController; diff --git a/dist/controllers/storage.js b/dist/controllers/storage.js new file mode 100644 index 0000000..b1acae1 --- /dev/null +++ b/dist/controllers/storage.js @@ -0,0 +1,32 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const env = require("../enviroment/env"); +const disk = require('diskusage'); +class StorageController { + constructor() { + } + getStorageInfo(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const info = yield disk.check(env.root); + res.send(info); + } + catch (e) { + console.log(e); + res.status(500).send(e); + } + }); + } +} +module.exports = StorageController; diff --git a/dist/controllers/user.js b/dist/controllers/user.js new file mode 100644 index 0000000..34aeeff --- /dev/null +++ b/dist/controllers/user.js @@ -0,0 +1,121 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const env = require("../enviroment/env"); +const UserService = require("../services/UserService"); +const UserProvider = new UserService(); +class UserController { + constructor() { + } + getUser(req, res) { + return __awaiter(this, void 0, void 0, function* () { + try { + const user = req.user; + user.tokens = undefined; + user.tempTokens = undefined; + user.password = undefined; + user.privateKey = undefined; + user.publicKey = undefined; + res.send(user); + } + catch (e) { + res.status(500).send(e); + } + }); + } + login(req, res) { + return __awaiter(this, void 0, void 0, function* () { + try { + const body = req.body; + const { user, token } = yield UserProvider.login(body); + user.tokens = undefined; + user.tempTokens = undefined; + user.password = undefined; + user.privateKey = undefined; + user.publicKey = undefined; + res.status(200).send({ user, token }); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(e); + } + }); + } + logout(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const user = req.user; + const token = req.encryptedToken; + yield UserProvider.logout(user, token); + res.send(); + } + catch (e) { + res.status(500).send(e); + } + }); + } + logoutAll(req, res) { + return __awaiter(this, void 0, void 0, function* () { + try { + const user = req.user; + yield UserProvider.logoutAll(user); + res.send(); + } + catch (e) { + res.status(500).send(e); + } + }); + } + createUser(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (env.createAcctBlocked) { + return yield res.status(401).send(); + } + try { + const { user, token } = yield UserProvider.create(req.body); + user.tokens = undefined; + user.tempTokens = undefined; + user.password = undefined; + user.privateKey = undefined; + user.publicKey = undefined; + res.status(201).send({ user, token }); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(e); + } + }); + } + changePassword(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const user = req.user; + const oldPassword = req.body.oldPassword; + const newPassword = req.body.newPassword; + const newToken = yield UserProvider.changePassword(user, oldPassword, newPassword); + res.send(newToken); + } + catch (e) { + const code = e.code || 500; + console.log(e); + res.status(code).send(e); + } + }); + } +} +module.exports = UserController; diff --git a/dist/db/mongoose.js b/dist/db/mongoose.js new file mode 100644 index 0000000..63e99c8 --- /dev/null +++ b/dist/db/mongoose.js @@ -0,0 +1,9 @@ +"use strict"; +const mongoose = require("mongoose"); +const env = require("../enviroment/env"); +mongoose.connect(env.mongoURL, { + useNewUrlParser: true, + useCreateIndex: true, + useUnifiedTopology: true, +}); +module.exports = mongoose; diff --git a/dist/db/mongooseServerUtils.js b/dist/db/mongooseServerUtils.js new file mode 100644 index 0000000..14e286d --- /dev/null +++ b/dist/db/mongooseServerUtils.js @@ -0,0 +1,11 @@ +"use strict"; +const mongoose = require("mongoose"); +const env = require("../enviroment/env"); +mongoose.connect(env.mongoURL, { + useNewUrlParser: true, + useCreateIndex: true, + useUnifiedTopology: true, + socketTimeoutMS: 30000000, + keepAlive: true, +}); +module.exports = mongoose; diff --git a/dist/db/utils/fileUtils/index.js b/dist/db/utils/fileUtils/index.js new file mode 100644 index 0000000..1942447 --- /dev/null +++ b/dist/db/utils/fileUtils/index.js @@ -0,0 +1,117 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const mongoose = require("../../mongoose"); +const conn = mongoose.connection; +const ObjectID = require('mongodb').ObjectID; +const DbUtil = function () { + this.getPublicFile = (fileID) => __awaiter(this, void 0, void 0, function* () { + let file = yield conn.db.collection("fs.files") + .findOne({ "_id": ObjectID(fileID) }); + return file; + }); + this.removeOneTimePublicLink = (fileID) => __awaiter(this, void 0, void 0, function* () { + const file = yield conn.db.collection("fs.files") + .findOneAndUpdate({ "_id": ObjectID(fileID) }, { + "$unset": { "metadata.linkType": "", "metadata.link": "" } + }); + return file; + }); + this.removeLink = (fileID, userID) => __awaiter(this, void 0, void 0, function* () { + const file = yield conn.db.collection("fs.files") + .findOneAndUpdate({ "_id": ObjectID(fileID), + "metadata.owner": userID }, { "$unset": { "metadata.linkType": "", "metadata.link": "" } }); + return file; + }); + this.makePublic = (fileID, userID, token) => __awaiter(this, void 0, void 0, function* () { + const file = yield conn.db.collection("fs.files") + .findOneAndUpdate({ "_id": ObjectID(fileID), + "metadata.owner": userID }, { "$set": { "metadata.linkType": "public", "metadata.link": token } }); + return file; + }); + this.getPublicInfo = (fileID, tempToken) => __awaiter(this, void 0, void 0, function* () { + const file = yield conn.db.collection("fs.files") + .findOne({ "_id": ObjectID(fileID), "metadata.link": tempToken }); + return file; + }); + this.makeOneTimePublic = (fileID, userID, token) => __awaiter(this, void 0, void 0, function* () { + const file = yield conn.db.collection("fs.files") + .findOneAndUpdate({ "_id": ObjectID(fileID), + "metadata.owner": userID }, { "$set": { "metadata.linkType": "one", "metadata.link": token } }); + return file; + }); + this.getFileInfo = (fileID, userID) => __awaiter(this, void 0, void 0, function* () { + const file = yield conn.db.collection("fs.files") + .findOne({ "metadata.owner": userID, "_id": ObjectID(fileID) }); + return file; + }); + this.getQuickList = (userID) => __awaiter(this, void 0, void 0, function* () { + const fileList = yield conn.db.collection("fs.files") + .find({ "metadata.owner": userID }) + .sort({ uploadDate: -1 }) + .limit(10) + .toArray(); + return fileList; + }); + this.getList = (queryObj, sortBy, limit) => __awaiter(this, void 0, void 0, function* () { + const fileList = yield conn.db.collection("fs.files") + .find(queryObj) + .sort(sortBy) + .limit(limit) + .toArray(); + return fileList; + }); + this.removeTempToken = (user, tempToken) => __awaiter(this, void 0, void 0, function* () { + user.tempTokens = user.tempTokens.filter((filterToken) => { + return filterToken.token !== tempToken; + }); + return user; + }); + this.removeTranscodeVideo = (fileID, userID) => __awaiter(this, void 0, void 0, function* () { + const file = yield conn.db.collection("fs.files") + .findOneAndUpdate({ "_id": ObjectID(fileID), "metadata.owner": userID }, { "$unset": { "metadata.transcoded": "", "metadata.transcodedIV": "", + "metadata.transcoded_size": "", "metadata.transcodedID": "" } }); + return file; + }); + this.getFileSearchList = (userID, searchQuery) => __awaiter(this, void 0, void 0, function* () { + const fileList = yield conn.db.collection("fs.files") + .find({ "metadata.owner": userID, "filename": searchQuery }) + .limit(10) + .toArray(); + return fileList; + }); + this.renameFile = (fileID, userID, title) => __awaiter(this, void 0, void 0, function* () { + const file = yield conn.db.collection("fs.files") + .findOneAndUpdate({ "_id": ObjectID(fileID), + "metadata.owner": userID }, { "$set": { "filename": title } }); + return file; + }); + this.moveFile = (fileID, userID, parent, parentList) => __awaiter(this, void 0, void 0, function* () { + const file = yield conn.db.collection("fs.files") + .findOneAndUpdate({ "_id": ObjectID(fileID), + "metadata.owner": userID }, { "$set": { "metadata.parent": parent, "metadata.parentList": parentList } }); + return file; + }); + this.getFileListByParent = (userID, parentListString) => __awaiter(this, void 0, void 0, function* () { + const fileList = yield conn.db.collection("fs.files") + .find({ "metadata.owner": userID, + "metadata.parentList": { $regex: `.*${parentListString}.*` } }).toArray(); + return fileList; + }); + this.getFileListByOwner = (userID) => __awaiter(this, void 0, void 0, function* () { + const fileList = yield conn.db.collection("fs.files") + .find({ "metadata.owner": userID }).toArray(); + return fileList; + }); + this.removeChunksByID = (fileID) => __awaiter(this, void 0, void 0, function* () { + yield conn.db.collection("fs.chunks").deleteMany({ files_id: fileID }); + }); +}; +module.exports = DbUtil; diff --git a/dist/db/utils/folderUtils/index.js b/dist/db/utils/folderUtils/index.js new file mode 100644 index 0000000..f4c3ea4 --- /dev/null +++ b/dist/db/utils/folderUtils/index.js @@ -0,0 +1,47 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const Folder = require("../../../models/folder"); +const ObjectID = require('mongodb').ObjectID; +const DbUtil = function () { + this.getFolderSearchList = (userID, searchQuery) => __awaiter(this, void 0, void 0, function* () { + const folderList = yield Folder.find({ "owner": userID, "name": searchQuery }).limit(10); + return folderList; + }); + this.getFolderInfo = (folderID, userID) => __awaiter(this, void 0, void 0, function* () { + const folder = yield Folder.findOne({ "owner": userID, "_id": ObjectID(folderID) }); + return folder; + }); + this.getFolderListByParent = (userID, parent, sortBy) => __awaiter(this, void 0, void 0, function* () { + const folderList = yield Folder.find({ "owner": userID, "parent": parent }) + .sort(sortBy); + return folderList; + }); + this.getFolderListBySearch = (userID, searchQuery, sortBy) => __awaiter(this, void 0, void 0, function* () { + const folderList = yield Folder.find({ "name": searchQuery, "owner": userID }) + .sort(sortBy); + return folderList; + }); + this.moveFolder = (folderID, userID, parent, parentList) => __awaiter(this, void 0, void 0, function* () { + const folder = yield Folder.findOneAndUpdate({ "_id": ObjectID(folderID), + "owner": userID }, { "$set": { "parent": parent, "parentList": parentList } }); + return folder; + }); + this.renameFolder = (folderID, userID, title) => __awaiter(this, void 0, void 0, function* () { + const folder = yield Folder.findOneAndUpdate({ "_id": ObjectID(folderID), + "owner": userID }, { "$set": { "name": title } }); + return folder; + }); + this.findAllFoldersByParent = (parentID, userID) => __awaiter(this, void 0, void 0, function* () { + const folderList = yield Folder.find({ "parentList": parentID, "owner": userID }); + return folderList; + }); +}; +module.exports = DbUtil; diff --git a/dist/enviroment/env.js b/dist/enviroment/env.js new file mode 100644 index 0000000..19007e7 --- /dev/null +++ b/dist/enviroment/env.js @@ -0,0 +1,10 @@ +"use strict"; +module.exports = { + key: process.env.KEY, + newKey: process.env.NEW_KEY, + password: process.env.PASSWORD, + createAcctBlocked: process.env.BLOCK_CREATE_ACCOUNT, + root: process.env.ROOT, + url: process.env.URL, + mongoURL: process.env.MONGODB_URL +}; diff --git a/dist/express-routers/file.js b/dist/express-routers/file.js new file mode 100644 index 0000000..89692aa --- /dev/null +++ b/dist/express-routers/file.js @@ -0,0 +1,36 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const express_1 = require("express"); +const router = express_1.Router(); +const auth = require("../middleware/auth"); +const tempAuth = require("../middleware/tempAuth"); +const tempAuthVideo = require("../middleware/tempAuthVideo"); +const file_1 = __importDefault(require("../controllers/file")); +const fileController = new file_1.default(); +//router.post("/file-service/upload", auth, fileController.uploadFile); +//router.post("/file-service/transcode-video", auth, fileController.transcodeVideo); +router.get("/file-service/thumbnail/:id", auth, fileController.getThumbnail); +//router.get("/file-service/full-thumbnail/:id", auth, fileController.getFullThumbnail); +//router.get("/file-service/public/download/:id/:tempToken", fileController.getPublicDownload); +router.get("/file-service/public/info/:id/:tempToken", fileController.getPublicInfo); +router.get("/file-service/info/:id", auth, fileController.getFileInfo); +router.get("/file-service/quick-list", auth, fileController.getQuickList); +router.get("/file-service/list", auth, fileController.getList); +router.get("/file-service/download/get-token", auth, fileController.getDownloadToken); +router.get("/file-service/download/get-token-video", auth, fileController.getDownloadTokenVideo); +//router.get("/file-service/stream-video-transcoded/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamTranscodedVideo); +//router.get("/file-service/stream-video/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamVideo); +router.get("/file-service/download/:id/:tempToken", tempAuth, fileController.downloadFile); +router.get("/file-service/suggested-list", auth, fileController.getSuggestedList); +router.patch("/file-service/make-public/:id", auth, fileController.makePublic); +router.patch("/file-service/make-one/:id", auth, fileController.makeOneTimePublic); +router.patch("/file-service/rename", auth, fileController.renameFile); +router.patch("/file-service/move", auth, fileController.moveFile); +router.delete("/file-service/remove-link/:id", auth, fileController.removeLink); +router.delete("/file-service/remove/token-video/:tempToken", auth, fileController.removeTempToken); +//router.delete("/file-service/transcode-video/remove", auth, fileController.removeTranscodeVideo); +router.delete("/file-service/remove", auth, fileController.deleteFile); +module.exports = router; diff --git a/dist/express-routers/folder.js b/dist/express-routers/folder.js new file mode 100644 index 0000000..17d2f1c --- /dev/null +++ b/dist/express-routers/folder.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const express_1 = require("express"); +const router = express_1.Router(); +const auth = require("../middleware/auth"); +const FolderController = require("../controllers/folder"); +const folderController = new FolderController(); +router.post("/folder-service/upload", auth, folderController.uploadFolder); +router.delete("/folder-service/remove", auth, folderController.deleteFolder); +router.delete("/folder-service/remove-all", auth, folderController.deleteAll); +router.get("/folder-service/info/:id", auth, folderController.getInfo); +router.get("/folder-service/subfolder-list", auth, folderController.getSubfolderList); +router.get("/folder-service/list", auth, folderController.getFolderList); +router.patch("/folder-service/rename", auth, folderController.renameFolder); +router.patch("/folder-service/move", auth, folderController.moveFolder); +module.exports = router; diff --git a/dist/express-routers/storage.js b/dist/express-routers/storage.js new file mode 100644 index 0000000..3436a64 --- /dev/null +++ b/dist/express-routers/storage.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const express_1 = require("express"); +const router = express_1.Router(); +const auth = require("../middleware/auth"); +const StorageController = require("../controllers/storage"); +const storageController = new StorageController(); +router.get("/storage-service/info", auth, storageController.getStorageInfo); +module.exports = router; diff --git a/dist/express-routers/user.js b/dist/express-routers/user.js new file mode 100644 index 0000000..4a8a393 --- /dev/null +++ b/dist/express-routers/user.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const express_1 = require("express"); +const router = express_1.Router(); +const auth = require("../middleware/auth"); +const UserController = require("../controllers/user"); +const userController = new UserController(); +router.get("/user-service/user", auth, userController.getUser); +router.post("/user-service/login", userController.login); +router.post("/user-service/logout", auth, userController.logout); +router.post("/user-service/logout-all", auth, userController.logoutAll); +router.post("/user-service/create", userController.createUser); +router.post("/user-service/change-password", auth, userController.changePassword); +module.exports = router; diff --git a/dist/key/getKey.js b/dist/key/getKey.js new file mode 100644 index 0000000..87cdd47 --- /dev/null +++ b/dist/key/getKey.js @@ -0,0 +1,30 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const prompt = require('password-prompt'); +const env = require("../enviroment/env"); +const crypto = require("crypto"); +const getKey = () => __awaiter(void 0, void 0, void 0, function* () { + if (process.env.KEY) { + // For Docker + env.key = process.env.KEY; + } + else if (process.env.NODE_ENV) { + let password = yield prompt("Enter Server Encryption Password: ", { method: "hide" }); + password = crypto.createHash("md5").update(password).digest("hex"); + env.key = password; + } + else { + let password = "1234"; + password = crypto.createHash("md5").update(password).digest("hex"); + env.key = password; + } +}); +module.exports = getKey; diff --git a/dist/middleware/auth.js b/dist/middleware/auth.js new file mode 100644 index 0000000..e00bb45 --- /dev/null +++ b/dist/middleware/auth.js @@ -0,0 +1,45 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const jwt = require("jsonwebtoken"); +const User = require("../models/user"); +const env = require("../enviroment/env"); +const auth = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const token = req.header("Authorization").replace("Bearer ", ""); + const decoded = yield jwt.verify(token, env.password); + const iv = decoded.iv; + const user = yield User.findOne({ _id: decoded._id }); + const encrpytionKey = user.getEncryptionKey(); + const encryptedToken = user.encryptToken(token, encrpytionKey, iv); + let tokenFound = false; + for (let i = 0; i < user.tokens.length; i++) { + const currentToken = user.tokens[i].token; + if (currentToken === encryptedToken) { + tokenFound = true; + break; + } + } + if (!user || !tokenFound) { + throw new Error("User not found"); + } + else { + req.token = token; + req.encryptedToken = encryptedToken; + req.user = user; + next(); + } + } + catch (e) { + console.log(e); + res.status(401).send({ error: "Error Authenticating" }); + } +}); +module.exports = auth; diff --git a/dist/middleware/tempAuth.js b/dist/middleware/tempAuth.js new file mode 100644 index 0000000..206a31b --- /dev/null +++ b/dist/middleware/tempAuth.js @@ -0,0 +1,49 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const jwt = require("jsonwebtoken"); +const User = require("../models/user"); +const env = require("../enviroment/env"); +const tempAuth = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const token = req.params.tempToken; + const decoded = yield jwt.verify(token, env.password); + const iv = decoded.iv; + const user = yield User.findOne({ _id: decoded._id }); + const encrpytionKey = user.getEncryptionKey(); + const encryptedToken = user.encryptToken(token, encrpytionKey, iv); + let tokenFound = false; + for (let i = 0; i < user.tempTokens.length; i++) { + const currentToken = user.tempTokens[i].token; + if (currentToken === encryptedToken) { + tokenFound = true; + break; + } + } + if (!user || !tokenFound) { + throw new Error("User Not Found"); + } + else { + user.tempTokens = user.tempTokens.filter((filterToken) => { + return filterToken.token !== encryptedToken; + }); + yield user.save(); + req.user = user; + req.auth = true; + req.encryptedTempToken = encryptedToken; + next(); + } + } + catch (e) { + console.log(e); + res.status(401).send(); + } +}); +module.exports = tempAuth; diff --git a/dist/middleware/tempAuthVideo.js b/dist/middleware/tempAuthVideo.js new file mode 100644 index 0000000..5cb9f1f --- /dev/null +++ b/dist/middleware/tempAuthVideo.js @@ -0,0 +1,49 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const jwt = require("jsonwebtoken"); +const User = require("../models/user"); +const env = require("../enviroment/env"); +const tempAuthVideo = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { + try { + const token = req.params.tempToken; + const decoded = yield jwt.verify(token, env.password); + const iv = decoded.iv; + if (req.params.uuid !== decoded.cookie) { + throw new Error("Cookie mismatch"); + } + const user = yield User.findOne({ _id: decoded._id }); + const encrpytionKey = user.getEncryptionKey(); + const encryptedToken = user.encryptToken(token, encrpytionKey, iv); + let tokenFound = false; + for (let i = 0; i < user.tempTokens.length; i++) { + const currentToken = user.tempTokens[i].token; + if (currentToken === encryptedToken) { + tokenFound = true; + break; + } + } + if (!user || !tokenFound) { + throw new Error("User not found"); + } + else { + yield user.save(); + req.user = user; + req.auth = true; + req.encryptedTempToken = encryptedToken; + next(); + } + } + catch (e) { + console.log(e); + res.status(401).send(); + } +}); +module.exports = tempAuthVideo; diff --git a/dist/models/file.js b/dist/models/file.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/dist/models/file.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/dist/models/folder.js b/dist/models/folder.js new file mode 100644 index 0000000..39a8948 --- /dev/null +++ b/dist/models/folder.js @@ -0,0 +1,24 @@ +"use strict"; +const mongoose = require("mongoose"); +const folderSchema = new mongoose.Schema({ + name: { + type: String, + required: true, + }, + parent: { + type: String, + required: true, + }, + owner: { + type: String, + required: true + }, + parentList: { + type: Array, + required: true + } +}, { + timestamps: true +}); +const Folder = mongoose.model("Folder", folderSchema); +module.exports = Folder; diff --git a/dist/models/thumbnail.js b/dist/models/thumbnail.js new file mode 100644 index 0000000..149680c --- /dev/null +++ b/dist/models/thumbnail.js @@ -0,0 +1,24 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const mongoose_1 = __importDefault(require("mongoose")); +const thumbnailSchema = new mongoose_1.default.Schema({ + name: { + type: String, + required: true, + }, + owner: { + type: String, + required: true + }, + data: { + type: Buffer, + required: true + } +}, { + timestamps: true +}); +const Thumbnail = mongoose_1.default.model("Thumbnail", thumbnailSchema); +exports.default = Thumbnail; diff --git a/dist/models/user.js b/dist/models/user.js new file mode 100644 index 0000000..c7344e2 --- /dev/null +++ b/dist/models/user.js @@ -0,0 +1,224 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const mongoose_1 = __importDefault(require("mongoose")); +const validator = require("validator"); +const crypto = require("crypto"); +const bcrypt = require("bcrypt"); +const jwt = require("jsonwebtoken"); +const env = require("../enviroment/env"); +const userSchema = new mongoose_1.default.Schema({ + name: { + type: String, + trim: true + }, + email: { + type: String, + required: true, + trim: true, + unique: true, + lowercase: true, + validate(value) { + if (!validator.isEmail(value)) { + throw new Error("Email is invalid"); + } + } + }, + password: { + type: String, + trim: true, + required: true, + validate(value) { + if (value.length < 6) { + throw new Error("Password Length Not Sufficent"); + } + } + }, + tokens: [{ + token: { + type: String, + required: true + } + }], + tempTokens: [{ + token: { + type: String, + required: true + } + }], + privateKey: { + type: String, + }, + publicKey: { + type: String, + } +}, { + timestamps: true +}); +// userSchema.virtual("files", { +// ref: "fs.files", +// localField: "_id" +// }) +userSchema.pre("save", function (next) { + return __awaiter(this, void 0, void 0, function* () { + const user = this; + if (user.isModified("password")) { + user.password = yield bcrypt.hash(user.password, 8); + } + next(); + }); +}); +userSchema.statics.findByCreds = (email, password) => __awaiter(void 0, void 0, void 0, function* () { + const user = yield User.findOne({ email }); + if (!user) { + throw new Error("User not found"); + } + const isMatch = yield bcrypt.compare(password, user.password); + if (!isMatch) { + console.log("incorrect password"); + throw new Error("Incorrect password"); + } + return user; +}); +userSchema.methods.toJSON = function () { + const user = this; + const userObject = user.toObject(); + delete userObject.password; + delete userObject.tokens; + delete userObject.tempTokens; + return userObject; +}; +userSchema.methods.generateAuthToken = function () { + return __awaiter(this, void 0, void 0, function* () { + const iv = crypto.randomBytes(16); + const user = this; + let token = jwt.sign({ _id: user._id.toString(), iv }, env.password); + const publicKey = user.publicKey; + const encryptionKey = user.getEncryptionKey(); + const encryptedToken = user.encryptToken(token, encryptionKey, iv); + user.tokens = user.tokens.concat({ token: encryptedToken }); + yield user.save(); + return token; + }); +}; +userSchema.methods.encryptToken = function (token, key, iv) { + iv = Buffer.from(iv, "hex"); + const TOKEN_CIPHER_KEY = crypto.createHash('sha256').update(key).digest(); + const cipher = crypto.createCipheriv('aes-256-cbc', TOKEN_CIPHER_KEY, iv); + let encryptedText = cipher.update(token); + encryptedText = Buffer.concat([encryptedText, cipher.final()]).toString("hex"); + return encryptedText; +}; +userSchema.methods.decryptToken = function (encryptedToken, key, iv) { + encryptedToken = Buffer.from(encryptedToken, "hex"); + iv = Buffer.from(iv, "hex"); + const TOKEN_CIPHER_KEY = crypto.createHash('sha256').update(key).digest(); + const decipher = crypto.createDecipheriv('aes-256-cbc', TOKEN_CIPHER_KEY, iv); + let tokenDecrypted = decipher.update(encryptedToken); + tokenDecrypted = Buffer.concat([tokenDecrypted, decipher.final()]).toString(); + return tokenDecrypted; +}; +userSchema.methods.generateEncryptionKeys = function () { + return __awaiter(this, void 0, void 0, function* () { + const user = this; + const userPassword = user.password; + const masterPassword = env.key; + const randomKey = crypto.randomBytes(32); + const iv = crypto.randomBytes(16); + const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); + const cipher = crypto.createCipheriv('aes-256-cbc', USER_CIPHER_KEY, iv); + let encryptedText = cipher.update(randomKey); + encryptedText = Buffer.concat([encryptedText, cipher.final()]); + const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); + const masterCipher = crypto.createCipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv); + let masterEncryptedText = masterCipher.update(encryptedText); + masterEncryptedText = Buffer.concat([masterEncryptedText, masterCipher.final()]).toString("hex"); + user.privateKey = masterEncryptedText; + user.publicKey = iv.toString("hex"); + yield user.save(); + }); +}; +userSchema.methods.getEncryptionKey = function () { + const user = this; + const userPassword = user.password; + const masterEncryptedText = user.privateKey; + const masterPassword = env.key; + const iv = Buffer.from(user.publicKey, "hex"); + const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); + const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); + const unhexMasterText = Buffer.from(masterEncryptedText, "hex"); + const masterDecipher = crypto.createDecipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv); + let masterDecrypted = masterDecipher.update(unhexMasterText); + masterDecrypted = Buffer.concat([masterDecrypted, masterDecipher.final()]); + let decipher = crypto.createDecipheriv('aes-256-cbc', USER_CIPHER_KEY, iv); + let decrypted = decipher.update(masterDecrypted); + decrypted = Buffer.concat([decrypted, decipher.final()]); + return decrypted; +}; +userSchema.methods.changeEncryptionKey = function (randomKey) { + return __awaiter(this, void 0, void 0, function* () { + const user = this; + const userPassword = user.password; + const masterPassword = env.key; + const iv = crypto.randomBytes(16); + const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); + const cipher = crypto.createCipheriv('aes-256-cbc', USER_CIPHER_KEY, iv); + let encryptedText = cipher.update(randomKey); + encryptedText = Buffer.concat([encryptedText, cipher.final()]); + const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); + const masterCipher = crypto.createCipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv); + let masterEncryptedText = masterCipher.update(encryptedText); + masterEncryptedText = Buffer.concat([masterEncryptedText, masterCipher.final()]).toString("hex"); + user.privateKey = masterEncryptedText; + user.publicKey = iv.toString("hex"); + yield user.save(); + }); +}; +userSchema.methods.generateTempAuthToken = function () { + return __awaiter(this, void 0, void 0, function* () { + // const user = this; + // let token = jwt.sign({_id:user._id.toString()}, env.password); + // const publicKey = user.publicKey; + // const encryptionKey = user.getEncryptionKey(); + // const encryptedToken = user.encryptToken(token, encryptionKey, publicKey); + // user.tokens = user.tokens.concat({token: encryptedToken}); + // await user.save(); + // return token; + const iv = crypto.randomBytes(16); + const user = this; + const token = jwt.sign({ _id: user._id.toString(), iv }, env.password, { expiresIn: 2 }); + const publicKey = user.publicKey; + const encryptionKey = user.getEncryptionKey(); + const encryptedToken = user.encryptToken(token, encryptionKey, iv); + user.tempTokens = user.tempTokens.concat({ token: encryptedToken }); + yield user.save(); + return token; + }); +}; +userSchema.methods.generateTempAuthTokenVideo = function (cookie) { + return __awaiter(this, void 0, void 0, function* () { + const iv = crypto.randomBytes(16); + const user = this; + const token = jwt.sign({ _id: user._id.toString(), cookie, iv }, env.password, { expiresIn: "5h" }); + //const publicKey = user.publicKey; + const encryptionKey = user.getEncryptionKey(); + const encryptedToken = user.encryptToken(token, encryptionKey, iv); + //user.tempTokens = user.tempTokens.concat({token}); + user.tempTokens = user.tempTokens.concat({ token: encryptedToken }); + yield user.save(); + return token; + }); +}; +const User = mongoose_1.default.model("User", userSchema); +module.exports = User; diff --git a/dist/server/server.js b/dist/server/server.js new file mode 100644 index 0000000..cb5505f --- /dev/null +++ b/dist/server/server.js @@ -0,0 +1,52 @@ +"use strict"; +const express = require("express"); +const app = express(); +const path = require("path"); +const publicPath = path.join(__dirname, "..", "..", "public"); +const userRouter = require("../express-routers/user"); +const fileRouter = require("../express-routers/file"); +const folderRouter = require("../express-routers/folder"); +const storageRouter = require("../express-routers/storage"); +const bodyParser = require('body-parser'); +const https = require("https"); +const fs = require("fs"); +const helmet = require("helmet"); +const busboy = require("connect-busboy"); +const compression = require("compression"); +const http = require("http"); +let server; +let serverHttps; +if (process.env.NODE_ENV === 'production') { + const cert = fs.readFileSync("certificate.crt"); + const ca = fs.readFileSync("certificate.ca-bundle"); + const key = fs.readFileSync("certificate.key"); + const options = { + cert, + ca, + key + }; + serverHttps = https.createServer(options, app); +} +server = http.createServer(app); +require("../db/mongoose"); +app.use(helmet()); +app.use(compression()); +app.use(express.json()); +app.use(express.static(publicPath)); +app.use(bodyParser.json({ limit: "50mb" })); +app.use(bodyParser.urlencoded({ limit: "50mb", extended: true, parameterLimit: 50000 })); +app.use(busboy({ + highWaterMark: 2 * 1024 * 1024, +})); +app.use(userRouter, fileRouter, folderRouter, storageRouter); +const nodeMode = process.env.NODE_ENV ? "Production" : "Development/Testing"; +console.log("Node Enviroment Mode:", nodeMode); +app.get("*", (req, res) => { + res.sendFile(path.join(publicPath, "index.html")); +}); +if (process.env.NODE_ENV === 'production') { + module.exports = { server, serverHttps }; +} +else { + module.exports = server; +} diff --git a/dist/server/serverStart.js b/dist/server/serverStart.js new file mode 100644 index 0000000..ab1b73b --- /dev/null +++ b/dist/server/serverStart.js @@ -0,0 +1,36 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const getKey = require("../key/getKey"); +const serverStart = () => __awaiter(void 0, void 0, void 0, function* () { + yield getKey(); + if (process.env.NODE_ENV === 'production') { + const { server, serverHttps } = require("./server"); + server.listen(process.env.HTTP_PORT, process.env.URL, () => { + console.log("Http Server Running On Port:", process.env.HTTP_PORT); + }); + serverHttps.listen(process.env.HTTPS_PORT, function () { + console.log('Https Server Running On Port:', process.env.HTTPS_PORT); + }); + } + else if (process.env.NODE_ENV === 'production-no-ssl') { + const server = require("./server"); + server.listen(process.env.HTTP_PORT, process.env.URL, () => { + console.log("Http Server (No-SSL) Running On Port:", process.env.HTTP_PORT); + }); + } + else { + const server = require("./server"); + server.listen(process.env.HTTP_PORT, process.env.URL, () => { + console.log("Development Server Running On Port:", process.env.HTTP_PORT); + }); + } +}); +serverStart(); diff --git a/dist/services/ChunkService/MongoService.js b/dist/services/ChunkService/MongoService.js new file mode 100644 index 0000000..8b84ff7 --- /dev/null +++ b/dist/services/ChunkService/MongoService.js @@ -0,0 +1,60 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const mongoose_1 = __importDefault(require("../../db/mongoose")); +const conn = mongoose_1.default.connection; +const env = require("../../enviroment/env"); +const DbUtilFolder = require("../../db/utils/folderUtils"); +const index_1 = __importDefault(require("../../db/utils/fileUtils/index")); +const crypto_1 = __importDefault(require("crypto")); +const ObjectID = require('mongodb').ObjectID; +const dbUtilsFile = new index_1.default(); +const dbUtilsFolder = new DbUtilFolder(); +class MongoService { + constructor() { + this.downloadFile = (user, fileID, res) => { + return new Promise((resolve, reject) => { + dbUtilsFile.getFileInfo(fileID, user._id).then((currentFile) => { + if (!currentFile) { + reject({ + code: 401, + message: "Download File Not Found Error", + exception: undefined + }); + } + else { + const password = user.getEncryptionKey(); + const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db); + const IV = currentFile.metadata.IV.buffer; + const readStream = bucket.openDownloadStream(ObjectID(fileID)); + readStream.on("error", (e) => { + reject({ + code: 500, + message: "File service download decipher error", + exception: e + }); + }); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + decipher.on("error", (e) => { + reject({ + code: 500, + message: "File service download decipher error", + exception: e + }); + }); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); + res.set('Content-Length', currentFile.metadata.size.toString()); + readStream.pipe(decipher).pipe(res).on("finish", () => { + resolve(); + }); + } + }); + }); + }; + } +} +exports.default = MongoService; diff --git a/dist/services/FileService/index.js b/dist/services/FileService/index.js new file mode 100644 index 0000000..12da623 --- /dev/null +++ b/dist/services/FileService/index.js @@ -0,0 +1,668 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const imageChecker = require("../../utils/imageChecker"); +const crypto_1 = __importDefault(require("crypto")); +const videoChecker = require("../../utils/videoChecker"); +const mongoose = require("../../db/mongoose"); +const conn = mongoose.connection; +const createThumbnail = require("./utils/createThumbnail"); +const Thumbnail = require("../../models/thumbnail"); +const ObjectID = require('mongodb').ObjectID; +const NotAuthorizedError = require("../../utils/NotAuthorizedError"); +const NotFoundError = require("../../utils/NotFoundError"); +const env = require("../../enviroment/env"); +const jwt = require("jsonwebtoken"); +const removeChunks = require("./utils/removeChunks"); +const User = require("../../models/user"); +const Folder = require("../../models/folder"); +const sortBySwitch = require("../../utils/sortBySwitch"); +const createQuery = require("../../utils/createQuery"); +const ffmpeg = require("fluent-ffmpeg"); +const temp = require("temp").track(); +const progress = require("progress-stream"); +const fs = require("fs"); +const DbUtilFile = require("../../db/utils/fileUtils"); +const DbUtilFolder = require("../../db/utils/folderUtils"); +const dbUtilsFile = new DbUtilFile(); +const dbUtilsFolder = new DbUtilFolder(); +const FileService = function () { + this.upload = (user, busboy, req) => { + return new Promise((resolve, reject) => { + const password = user.getEncryptionKey(); + let bucketStream; + const initVect = crypto_1.default.randomBytes(16); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const cipher = crypto_1.default.createCipheriv('aes256', CIPHER_KEY, initVect); + cipher.on("error", (e) => __awaiter(this, void 0, void 0, function* () { + yield removeChunks(bucketStream); + reject({ + message: "File service upload cipher error", + exception: e, + code: 500 + }); + })); + const formData = new Map(); + busboy.on("error", (e) => __awaiter(this, void 0, void 0, function* () { + yield removeChunks(bucketStream); + reject({ + message: "File service upload busboy error", + exception: e, + code: 500 + }); + })); + busboy.on("file", (fieldname, file, filename) => __awaiter(this, void 0, void 0, function* () { + const parent = formData.get("parent") || "/"; + const parentList = formData.get("parentList") || "/"; + const size = formData.get("size") || ""; + let hasThumbnail = false; + let thumbnailID = ""; + const isVideo = videoChecker(filename); + const metadata = { + owner: user._id, + parent, + parentList, + hasThumbnail, + thumbnailID, + isVideo, + size, + IV: initVect + }; + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255 + }); + bucketStream = bucket.openUploadStream(filename, { metadata }); + bucketStream.on("error", (e) => __awaiter(this, void 0, void 0, function* () { + yield removeChunks(bucketStream); + reject({ + message: "Cannot upload file to database", + exception: e, + code: 500 + }); + })); + req.on("aborted", () => __awaiter(this, void 0, void 0, function* () { + console.log("Upload Request Cancelling..."); + yield removeChunks(bucketStream); + })); + file.pipe(cipher).pipe(bucketStream); + bucketStream.on("finish", (file) => __awaiter(this, void 0, void 0, function* () { + const imageCheck = imageChecker(filename); + if (file.length < 15728640 && imageCheck) { + let updatedFile = yield createThumbnail(file, filename, user); + resolve(updatedFile); + } + else { + resolve(file); + } + })); + })).on("field", (field, val) => { + formData.set(field, val); + }); + }); + }; + this.getThumbnail = (user, id) => __awaiter(this, void 0, void 0, function* () { + const password = user.getEncryptionKey(); + const thumbnail = yield Thumbnail.findById(id); + if (user._id.toString() !== thumbnail.owner) { + throw new NotAuthorizedError("Thumbnail Unauthorized Error"); + } + const iv = thumbnail.data.slice(0, 16); + const chunk = thumbnail.data.slice(16); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv("aes256", CIPHER_KEY, iv); + const decryptedThumbnail = Buffer.concat([decipher.update(chunk), decipher.final()]); + //console.log("decry", decryptedThumbnail); + return decryptedThumbnail; + }); + this.getFullThumbnail = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + const userID = user._id; + dbUtilsFile.getFileInfo(fileID, userID).then((file) => __awaiter(this, void 0, void 0, function* () { + if (!file) { + reject({ + code: 401, + message: "File For Full Thumbnail Not Found", + exception: undefined + }); + } + const bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255, + }); + const password = user.getEncryptionKey(); + const IV = file.metadata.IV.buffer; + const readStream = bucket.openDownloadStream(ObjectID(fileID)); + readStream.on("error", (e) => { + reject({ + code: 500, + message: "File service Full Thumbnail stream error", + exception: e + }); + }); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + decipher.on("error", (e) => { + reject({ + code: 500, + message: "File service Full Thumbnail decipher error", + exception: e + }); + }); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size); + readStream.pipe(decipher).pipe(res).on("finish", () => __awaiter(this, void 0, void 0, function* () { + console.log("Sent Full Thumbnail"); + resolve(); + })); + })); + }); + }); + this.publicDownload = (ID, tempToken, res) => { + return new Promise((resolve, reject) => { + dbUtilsFile.getPublicFile(ID).then((file) => __awaiter(this, void 0, void 0, function* () { + if (!file || !file.metadata.link || file.metadata.link !== tempToken) { + reject({ + code: 401, + message: "File not public/Not found", + exception: undefined + }); + } + else { + const user = yield User.findById(file.metadata.owner); + const bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255, + }); + const password = user.getEncryptionKey(); + const IV = file.metadata.IV.buffer; + const readStream = bucket.openDownloadStream(ObjectID(ID)); + readStream.on("error", (e) => { + reject({ + code: 500, + message: "File service public download decipher error", + exception: e + }); + }); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + decipher.on("error", (e) => { + reject({ + code: 500, + message: "File service public download decipher error", + exception: e + }); + }); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size); + readStream.pipe(decipher).pipe(res).on("finish", () => __awaiter(this, void 0, void 0, function* () { + console.log("removing public link"); + yield this.removePublicOneTimeLink(file); + resolve(); + })); + } + })); + }); + }; + this.removePublicOneTimeLink = (currentFile) => __awaiter(this, void 0, void 0, function* () { + const ID = currentFile._id; + if (currentFile.metadata.linkType === "one") { + yield dbUtilsFile.removeOneTimePublicLink(ID); + } + }); + this.removeLink = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { + const file = yield dbUtilsFile.removeLink(fileID, userID); + if (!file.lastErrorObject.updatedExisting) + throw new NotFoundError("Remove Link File Not Found Error"); + }); + this.makePublic = (user, fileID) => __awaiter(this, void 0, void 0, function* () { + const userID = user._id; + const token = yield jwt.sign({ _id: userID.toString() }, env.password); + const file = yield dbUtilsFile.makePublic(fileID, userID, token, "public"); + if (!file.lastErrorObject.updatedExisting) + throw new NotFoundError("Make Public File Not Found Error"); + return token; + }); + this.getPublicInfo = (fileID, tempToken) => __awaiter(this, void 0, void 0, function* () { + const file = yield dbUtilsFile.getPublicInfo(fileID, tempToken); + if (!file || !file.metadata.link || file.metadata.link !== tempToken) { + throw new NotFoundError("Public Info Not Found"); + } + else { + return file; + } + }); + this.makeOneTimePublic = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { + const token = yield jwt.sign({ _id: userID.toString() }, env.password); + const file = yield dbUtilsFile.makeOneTimePublic(fileID, userID, token); + if (!file.lastErrorObject.updatedExisting) + throw new NotFoundError("Make One Time Public Not Found Error"); + return token; + }); + this.getFileInfo = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { + let currentFile = yield dbUtilsFile.getFileInfo(fileID, userID); + if (!currentFile) + throw new NotFoundError("Get File Info Not Found Error"); + const parentID = currentFile.metadata.parent; + let parentName = ""; + if (parentID === "/") { + parentName = "Home"; + } + else { + const parentFolder = yield Folder.findOne({ "owner": userID, "_id": parentID }); + if (parentFolder) { + parentName = parentFolder.name; + } + else { + parentName = "Unknown"; + } + } + return Object.assign(Object.assign({}, currentFile), { parentName }); + }); + this.getQuickList = (userID) => __awaiter(this, void 0, void 0, function* () { + const quickList = yield dbUtilsFile.getQuickList(userID); + if (!quickList) + throw new NotFoundError("Quick List Not Found Error"); + return quickList; + }); + this.getList = (userID, query) => __awaiter(this, void 0, void 0, function* () { + let searchQuery = query.search || ""; + const parent = query.parent || "/"; + let limit = query.limit || 50; + let sortBy = query.sortby || "DEFAULT"; + const startAt = query.startAt || undefined; + const startAtDate = query.startAtDate || "0"; + const startAtName = query.startAtName || ""; + sortBy = sortBySwitch(sortBy); + limit = parseInt(limit); + const queryObj = createQuery(userID, parent, query.sortby, startAt, startAtDate, searchQuery, startAtName); + const fileList = yield dbUtilsFile.getList(queryObj, sortBy, limit); + if (!fileList) + throw new NotFoundError("File List Not Found"); + return fileList; + }); + this.getDownloadToken = (user) => __awaiter(this, void 0, void 0, function* () { + const tempToken = yield user.generateTempAuthToken(); + if (!tempToken) + throw new NotAuthorizedError("Get Download Token Not Authorized Error"); + return tempToken; + }); + this.getDownloadTokenVideo = (user, cookie) => __awaiter(this, void 0, void 0, function* () { + if (!cookie) + throw new NotAuthorizedError("Get Download Token Video Cookie Not Authorized Error"); + const tempToken = yield user.generateTempAuthTokenVideo(cookie); + if (!tempToken) + throw new NotAuthorizedError("Get Download Token Video Not Authorized Error"); + return tempToken; + }); + this.removeTempToken = (user, tempToken) => __awaiter(this, void 0, void 0, function* () { + const key = user.getEncryptionKey(); + const decoded = yield jwt.verify(tempToken, env.password); + const publicKey = decoded.iv; + const encryptedToken = user.encryptToken(tempToken, key, publicKey); + const removedTokenUser = yield dbUtilsFile.removeTempToken(user, encryptedToken); + if (!removedTokenUser) + throw new NotFoundError("Remove Temp Token User Not Found Errors"); + yield removedTokenUser.save(); + }); + this.transcodeVideo = (user, body) => { + return new Promise((resolve, reject) => { + const id = body.file._id; + const userID = user._id; + conn.db.collection("fs.files") + .findOne({ "_id": ObjectID(id), "metadata.owner": userID }).then((currentFile) => { + if (!currentFile) { + reject({ + message: "Transcode Video Not Found Error", + exception: undefined, + code: 401 + }); + } + else { + const password = user.getEncryptionKey(); //env.key; + const IV = currentFile.metadata.IV.buffer; + const bucket = new mongoose.mongo.GridFSBucket(conn.db); + const readStream = bucket.openDownloadStream(ObjectID(id)); + readStream.on("error", (e) => { + reject({ + message: "File service transcode video stream error", + exception: e, + code: 500 + }); + }); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + decipher.on("error", (e) => { + reject({ + message: "File service transcode video decipher error", + exception: e, + code: 500 + }); + }); + const tempStream = temp.createWriteStream(); + tempStream.on("error", (e) => { + reject({ + message: "File service transcode video temp error", + exception: e, + code: 500 + }); + }); + readStream.pipe(decipher).pipe(tempStream).on("finish", () => { + const writeBucket = new mongoose.mongo.GridFSBucket(conn.db, { + bucketName: "videos", + }); + const gfsWrite = writeBucket.openUploadStream(currentFile.filename, { + _id: id, + }); + gfsWrite.on("error", (e) => { + reject({ + message: "File service transcode video write stream error", + exception: e, + code: 500 + }); + }); + const initVect = crypto_1.default.randomBytes(16); + const cipher = crypto_1.default.createCipheriv('aes256', CIPHER_KEY, initVect); + cipher.on("error", (e) => { + reject({ + message: "File service transcode video cipher write error", + exception: e, + code: 500 + }); + }); + const str = progress({ time: 100 }); + str.on("progress", () => { + }); + str.on("finish", () => { + }); + const tempStream2 = temp.createWriteStream(); + tempStream2.on("error", (e) => { + reject({ + message: "File service transcode video temp write error", + exception: e, + code: 500 + }); + }); + const ffmpegCommand = ffmpeg() + .input(tempStream.path).outputOptions(['-movflags frag_keyframe+empty_moov', '-movflags +faststart']) + .outputFormat('mp4').on("error", (err, stdout, stderr) => { + console.log('An error occurred: ' + err.message, err, stderr); + reject({ + message: "Video Transcode Failed Error", + exception: err.message, + code: 500 + }); + }) + .videoCodec('libx264') + .audioBitrate('128k') + .videoBitrate(8000, true) + .pipe(tempStream2).on("finish", () => { + fs.createReadStream(tempStream2.path).pipe(cipher).pipe(gfsWrite).on("finish", (file) => __awaiter(this, void 0, void 0, function* () { + console.log("transcode finished"); + yield conn.db.collection("fs.files") + .findOneAndUpdate({ "_id": ObjectID(id) }, { "$set": { "metadata.transcoded": true, "metadata.transcodedIV": initVect, "metadata.transcoded_size": tempStream2.bytesWritten, "metadata.transcodedID": file._id } }); + resolve(); + })).on("error", (e) => { + reject({ + message: "File service transcode read stream error", + exception: e, + code: 500 + }); + }); + }); + ffmpegCommand.on("error", (e) => { + reject({ + message: "File service FFMPEG error", + exception: e, + code: 500 + }); + }); + }); + } + }); + }); + }; + this.removeTranscodeVideo = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { + const parentFile = yield dbUtilsFile.getFileInfo(fileID, userID); + const transcodedVideoID = parentFile.metadata.transcodedID; + const bucket = new mongoose.mongo.GridFSBucket(conn.db, { + bucketName: "videos" + }); + try { + yield bucket.delete(ObjectID(transcodedVideoID)); + } + catch (e) { + console.log("Could Not Find Transcoded Video"); + } + const file = yield dbUtilsFile.removeTranscodeVideo(fileID, userID); + if (!file) + throw new NotFoundError("Remove Transcode Video Error"); + }); + this.streamTranscodedVideo = (userID, fileID, headers, res) => { + return new Promise((resolve, reject) => { + dbUtilsFile.getFileInfo(fileID, userID).then((file) => { + if (!file) { + reject({ + code: 401, + message: "Stream Transcoded File Not Found", + exception: undefined + }); + } + else { + const fileSize = file.metadata.transcoded_size; + const transcodedVideoID = file.metadata.transcodedID; + const password = user.getEncryptionKey(); //env.key; + const range = headers.range; + const parts = range.replace(/bytes=/, "").split("-"); + const start = parseInt(parts[0], 10); + const end = parts[1] + ? parseInt(parts[1], 10) + : fileSize - 1; + const chunksize = (end - start) + 1; + const IV = file.metadata.transcodedIV.buffer; + let head = { + 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, + 'Accept-Ranges': 'bytes', + 'Content-Length': chunksize, + 'Content-Type': 'video/mp4' + }; + const bucket = new mongoose.mongo.GridFSBucket(conn.db, { + bucketName: "videos", + chunkSizeBytes: chunksize + }); + const readStream = bucket.openDownloadStream(ObjectID(transcodedVideoID), { + start: start, + end: end + }); + readStream.on("error", (e) => { + reject({ + code: 500, + message: "File service transcode video stream error", + exception: e + }); + }); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + decipher.setAutoPadding(false); + decipher.on("error", (e) => { + reject({ + code: 500, + message: "File service transcode video decipher error", + exception: e + }); + }); + res.writeHead(206, head); + readStream.pipe(decipher).pipe(res).on("finish", () => { + resolve(); + }); + } + }); + }); + }; + this.streamVideo = (user, fileID, headers, res) => { + return new Promise((resolve, reject) => { + const userID = user._id; + dbUtilsFile.getFileInfo(fileID, userID).then((currentFile) => { + if (!currentFile) { + reject({ + code: 401, + message: "Video Steam Not Found Error", + exception: undefined + }); + } + else { + const password = user.getEncryptionKey(); + const fileSize = currentFile.metadata.size; + const range = headers.range; + const parts = range.replace(/bytes=/, "").split("-"); + let start = parseInt(parts[0], 10); + let end = parts[1] + ? parseInt(parts[1], 10) + : fileSize - 1; + const chunksize = (end - start) + 1; + const IV = currentFile.metadata.IV.buffer; + let head = { + 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, + 'Accept-Ranges': 'bytes', + 'Content-Length': chunksize, + 'Content-Type': 'video/mp4' + }; + const bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 + }); + const readStream = bucket.openDownloadStream(ObjectID(fileID), { + start: start, + end: end.length + }); + readStream.on("error", (e) => { + reject({ + code: 500, + message: "File service stream video stream error", + exception: e + }); + }); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + decipher.on("error", (e) => { + reject({ + code: 500, + message: "File service stream video decipher error", + exception: e + }); + }); + res.writeHead(206, head); + readStream.pipe(decipher).pipe(res).on("finish", () => { + resolve(); + }); + } + }); + }); + }; + this.downloadFile = (user, fileID, res) => { + return new Promise((resolve, reject) => { + const userID = user._id; + dbUtilsFile.getFileInfo(fileID, userID).then((file) => { + if (!file) { + reject({ + code: 401, + message: "Download File Not Found Error", + exception: undefined + }); + } + else { + const password = user.getEncryptionKey(); + const bucket = new mongoose.mongo.GridFSBucket(conn.db); + const IV = file.metadata.IV.buffer; + const readStream = bucket.openDownloadStream(ObjectID(fileID)); + readStream.on("error", (e) => { + reject({ + code: 500, + message: "File service download decipher error", + exception: e + }); + }); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + decipher.on("error", (e) => { + reject({ + code: 500, + message: "File service download decipher error", + exception: e + }); + }); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size); + readStream.pipe(decipher).pipe(res).on("finish", () => { + resolve(); + }); + } + }); + }); + }; + this.getSuggestedList = (userID, searchQuery) => __awaiter(this, void 0, void 0, function* () { + searchQuery = new RegExp(searchQuery, 'i'); + const fileList = yield dbUtilsFile.getFileSearchList(userID, searchQuery); + const folderList = yield dbUtilsFolder.getFolderSearchList(userID, searchQuery); + if (!fileList || !folderList) + throw new NotFoundError("Suggested List Not Found Error"); + return { + fileList, + folderList + }; + }); + this.renameFile = (userID, fileID, title) => __awaiter(this, void 0, void 0, function* () { + const file = yield dbUtilsFile.renameFile(fileID, userID, title); + if (!file.lastErrorObject.updatedExisting) + throw new NotFoundError("Rename File Not Found Error"); + return file; + }); + this.moveFile = (userID, fileID, parentID) => __awaiter(this, void 0, void 0, function* () { + let parentList = ["/"]; + if (parentID.length !== 1) { + const parentFile = yield dbUtilsFolder.getFolderInfo(parentID, userID); + if (!parentFile) + throw new NotFoundError("Rename Parent File Not Found Error"); + const parentList = parentFile.parentList; + parentList.push(parentID); + } + const file = yield dbUtilsFile.moveFile(fileID, userID, parentID, parentList.toString()); + if (!file.lastErrorObject.updatedExisting) + throw new NotFoundError("Rename File Not Found Error"); + return file; + }); + this.deleteFile = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255, + }); + const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { + bucketName: "videos" + }); + const file = yield dbUtilsFile.getFileInfo(fileID, userID); + if (!file) + throw new NotFoundError("Delete File Not Found Error"); + if (file.metadata.thumbnailID) { + yield Thumbnail.deleteOne({ _id: file.metadata.thumbnailID }); + } + if (file.metadata.isVideo && file.metadata.transcoded) { + try { + yield bucket.delete(ObjectID(file.metadata.transcodedID)); + } + catch (e) { + console.log("Could Not Find Transcoded Video"); + } + } + yield bucket.delete(ObjectID(fileID)); + }); +}; +module.exports = FileService; diff --git a/dist/services/FileService/indexnew.js b/dist/services/FileService/indexnew.js new file mode 100644 index 0000000..cc49a43 --- /dev/null +++ b/dist/services/FileService/indexnew.js @@ -0,0 +1,209 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const imageChecker = require("../../utils/imageChecker"); +const crypto_1 = __importDefault(require("crypto")); +const videoChecker = require("../../utils/videoChecker"); +const mongoose = require("../../db/mongoose"); +const conn = mongoose.connection; +const createThumbnail = require("../../services/FileService/utils/createThumbnail"); +const thumbnail_1 = __importDefault(require("../../models/thumbnail")); +const ObjectID = require('mongodb').ObjectID; +const NotAuthorizedError_1 = __importDefault(require("../../utils/NotAuthorizedError")); +const NotFoundError_1 = __importDefault(require("../../utils/NotFoundError")); +const env = require("../../enviroment/env"); +const jwt = require("jsonwebtoken"); +const removeChunks = require("./utils/removeChunks"); +const User = require("../../models/user"); +const Folder = require("../../models/folder"); +const sortBySwitch = require("../../utils/sortBySwitch"); +const createQuery = require("../../utils/createQuery"); +const ffmpeg = require("fluent-ffmpeg"); +const temp = require("temp").track(); +const progress = require("progress-stream"); +const fs = require("fs"); +const index_1 = __importDefault(require("../../db/utils/fileUtils/index")); +const DbUtilFolder = require("../../db/utils/folderUtils"); +const dbUtilsFile = new index_1.default(); +const dbUtilsFolder = new DbUtilFolder(); +class MongoFileService { + constructor() { + this.getThumbnail = (user, id) => __awaiter(this, void 0, void 0, function* () { + const password = user.getEncryptionKey(); + const thumbnail = yield thumbnail_1.default.findById(id); + if (thumbnail.owner !== user._id.toString()) { + throw new NotAuthorizedError_1.default('Thumbnail Unauthorized Error'); + } + const iv = thumbnail.data.slice(0, 16); + const chunk = thumbnail.data.slice(16); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv("aes256", CIPHER_KEY, iv); + const decryptedThumbnail = Buffer.concat([decipher.update(chunk), decipher.final()]); + return decryptedThumbnail; + }); + this.removePublicOneTimeLink = (currentFile) => __awaiter(this, void 0, void 0, function* () { + const fileID = currentFile._id; + if (currentFile.metadata.linkType === "one") { + yield dbUtilsFile.removeOneTimePublicLink(fileID); + } + }); + this.removeLink = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { + const file = yield dbUtilsFile.removeLink(fileID, userID); + if (!file.lastErrorObject.updatedExisting) + throw new NotFoundError_1.default("Remove Link File Not Found Error"); + }); + this.makePublic = (user, fileID) => __awaiter(this, void 0, void 0, function* () { + const userID = user._id; + const token = yield jwt.sign({ _id: userID.toString() }, env.password); + const file = yield dbUtilsFile.makePublic(fileID, userID, token); + if (!file.lastErrorObject.updatedExisting) + throw new NotFoundError_1.default("Make Public File Not Found Error"); + return token; + }); + this.getPublicInfo = (fileID, tempToken) => __awaiter(this, void 0, void 0, function* () { + const file = yield dbUtilsFile.getPublicInfo(fileID, tempToken); + if (!file || !file.metadata.link || file.metadata.link !== tempToken) { + throw new NotFoundError_1.default("Public Info Not Found"); + } + else { + return file; + } + }); + this.makeOneTimePublic = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { + const token = yield jwt.sign({ _id: userID.toString() }, env.password); + const file = yield dbUtilsFile.makeOneTimePublic(fileID, userID, token); + if (!file.lastErrorObject.updatedExisting) + throw new NotFoundError_1.default("Make One Time Public Not Found Error"); + return token; + }); + this.getFileInfo = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { + let currentFile = yield dbUtilsFile.getFileInfo(fileID, userID); + if (!currentFile) + throw new NotFoundError_1.default("Get File Info Not Found Error"); + const parentID = currentFile.metadata.parent; + let parentName = ""; + if (parentID === "/") { + parentName = "Home"; + } + else { + const parentFolder = yield Folder.findOne({ "owner": userID, "_id": parentID }); + if (parentFolder) { + parentName = parentFolder.name; + } + else { + parentName = "Unknown"; + } + } + return Object.assign(Object.assign({}, currentFile), { parentName }); + }); + this.getQuickList = (userID) => __awaiter(this, void 0, void 0, function* () { + const quickList = yield dbUtilsFile.getQuickList(userID); + if (!quickList) + throw new NotFoundError_1.default("Quick List Not Found Error"); + return quickList; + }); + this.getList = (userID, query) => __awaiter(this, void 0, void 0, function* () { + let searchQuery = query.search || ""; + const parent = query.parent || "/"; + let limit = query.limit || 50; + let sortBy = query.sortby || "DEFAULT"; + const startAt = query.startAt || undefined; + const startAtDate = query.startAtDate || "0"; + const startAtName = query.startAtName || ""; + sortBy = sortBySwitch(sortBy); + limit = parseInt(limit); + const queryObj = createQuery(userID, parent, query.sortby, startAt, startAtDate, searchQuery, startAtName); + const fileList = yield dbUtilsFile.getList(queryObj, sortBy, limit); + if (!fileList) + throw new NotFoundError_1.default("File List Not Found"); + return fileList; + }); + this.getDownloadToken = (user) => __awaiter(this, void 0, void 0, function* () { + const tempToken = yield user.generateTempAuthToken(); + if (!tempToken) + throw new NotAuthorizedError_1.default("Get Download Token Not Authorized Error"); + return tempToken; + }); + this.getDownloadTokenVideo = (user, cookie) => __awaiter(this, void 0, void 0, function* () { + if (!cookie) + throw new NotAuthorizedError_1.default("Get Download Token Video Cookie Not Authorized Error"); + const tempToken = yield user.generateTempAuthTokenVideo(cookie); + if (!tempToken) + throw new NotAuthorizedError_1.default("Get Download Token Video Not Authorized Error"); + return tempToken; + }); + this.removeTempToken = (user, tempToken) => __awaiter(this, void 0, void 0, function* () { + const key = user.getEncryptionKey(); + const decoded = yield jwt.verify(tempToken, env.password); + const publicKey = decoded.iv; + const encryptedToken = user.encryptToken(tempToken, key, publicKey); + const removedTokenUser = yield dbUtilsFile.removeTempToken(user, encryptedToken); + if (!removedTokenUser) + throw new NotFoundError_1.default("Remove Temp Token User Not Found Errors"); + yield removedTokenUser.save(); + }); + this.getSuggestedList = (userID, searchQuery) => __awaiter(this, void 0, void 0, function* () { + searchQuery = new RegExp(searchQuery, 'i'); + const fileList = yield dbUtilsFile.getFileSearchList(userID, searchQuery); + const folderList = yield dbUtilsFolder.getFolderSearchList(userID, searchQuery); + if (!fileList || !folderList) + throw new NotFoundError_1.default("Suggested List Not Found Error"); + return { + fileList, + folderList + }; + }); + this.renameFile = (userID, fileID, title) => __awaiter(this, void 0, void 0, function* () { + const file = yield dbUtilsFile.renameFile(fileID, userID, title); + if (!file.lastErrorObject.updatedExisting) + throw new NotFoundError_1.default("Rename File Not Found Error"); + return file; + }); + this.moveFile = (userID, fileID, parentID) => __awaiter(this, void 0, void 0, function* () { + let parentList = ["/"]; + if (parentID.length !== 1) { + const parentFile = yield dbUtilsFolder.getFolderInfo(parentID, userID); + if (!parentFile) + throw new NotFoundError_1.default("Rename Parent File Not Found Error"); + const parentList = parentFile.parentList; + parentList.push(parentID); + } + const file = yield dbUtilsFile.moveFile(fileID, userID, parentID, parentList.toString()); + if (!file.lastErrorObject.updatedExisting) + throw new NotFoundError_1.default("Rename File Not Found Error"); + return file; + }); + this.deleteFile = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255, + }); + const file = yield dbUtilsFile.getFileInfo(fileID, userID); + if (!file) + throw new NotFoundError_1.default("Delete File Not Found Error"); + if (file.metadata.thumbnailID) { + yield thumbnail_1.default.deleteOne({ _id: file.metadata.thumbnailID }); + } + if (file.metadata.isVideo && file.metadata.transcoded) { + try { + yield bucket.delete(ObjectID(file.metadata.transcodedID)); + } + catch (e) { + console.log("Could Not Find Transcoded Video"); + } + } + yield bucket.delete(ObjectID(fileID)); + }); + } +} +exports.default = MongoFileService; diff --git a/dist/services/FileService/utils/createThumbnail.js b/dist/services/FileService/utils/createThumbnail.js new file mode 100644 index 0000000..0ccf56f --- /dev/null +++ b/dist/services/FileService/utils/createThumbnail.js @@ -0,0 +1,65 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const mongoose = require("../../../db/mongoose"); +const conn = mongoose.connection; +const crypto = require("crypto"); +const env = require("../../../enviroment/env"); +const Thumbnail = require("../../../models/thumbnail"); +const ObjectID = require('mongodb').ObjectID; +const sharp = require("sharp"); +const concat = require("concat-stream"); +const createThumbnail = (file, filename, user) => __awaiter(void 0, void 0, void 0, function* () { + return new Promise((resolve) => { + const password = user.getEncryptionKey(); + let CIPHER_KEY = crypto.createHash('sha256').update(password).digest(); + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255 + }); + const readStream = bucket.openDownloadStream(ObjectID(file._id)); + readStream.on("error", (e) => { + console.log("File service upload thumbnail error", e); + resolve(file); + }); + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, file.metadata.IV); + decipher.on("error", (e) => { + console.log("File service upload thumbnail decipher error", e); + resolve(file); + }); + try { + const concatStream = concat((bufferData) => __awaiter(void 0, void 0, void 0, function* () { + const thumbnailIV = crypto.randomBytes(16); + //CIPHER_KEY = crypto.createHash('sha256').update(process.env.newPassword).digest() + const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); + bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); //thumbnailCipher.update(bufferData) + const thumbnailModel = new Thumbnail({ name: filename, owner: user._id, data: bufferData }); + yield thumbnailModel.save(); + let updatedFile = yield conn.db.collection("fs.files") + .findOneAndUpdate({ "_id": file._id }, { "$set": { "metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id } }); + updatedFile = updatedFile.value; + updatedFile = Object.assign(Object.assign({}, updatedFile), { metadata: Object.assign(Object.assign({}, updatedFile.metadata), { hasThumbnail: true, thumbnailID: thumbnailModel._id }) }); + resolve(updatedFile); + })).on("error", (e) => { + console.log("File service upload concat stream error", e); + resolve(file); + }); + const imageResize = sharp().resize(300).on("error", (e) => { + console.log("resize error", e); + resolve(file); + }); + readStream.pipe(decipher).pipe(imageResize).pipe(concatStream); + } + catch (e) { + console.log(e); + resolve(file); + } + }); +}); +module.exports = createThumbnail; diff --git a/dist/services/FileService/utils/removeChunks.js b/dist/services/FileService/utils/removeChunks.js new file mode 100644 index 0000000..b39ea56 --- /dev/null +++ b/dist/services/FileService/utils/removeChunks.js @@ -0,0 +1,27 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const DbUtilsFile = require("../../../db/utils/fileUtils"); +const dbUtilsFile = new DbUtilsFile(); +const removeChunks = (bucketStream) => __awaiter(void 0, void 0, void 0, function* () { + try { + const uploadID = bucketStream.id; + if (!uploadID || uploadID.length === 0) { + console.log("Invalid uploadID for remove chunks"); + return; + } + yield dbUtilsFile.removeChunksByID(uploadID); + console.log("Upload Request Cancelled, Chunks Removed"); + } + catch (e) { + console.log("Could not remove chunks for canceled upload", uploadID, e); + } +}); +module.exports = removeChunks; diff --git a/dist/services/FolderService/index.js b/dist/services/FolderService/index.js new file mode 100644 index 0000000..6993c00 --- /dev/null +++ b/dist/services/FolderService/index.js @@ -0,0 +1,202 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const Folder = require("../../models/folder"); +const InternalServerError = require("../../utils/InternalServerError"); +const NotFoundError = require("../../utils/NotFoundError"); +const UtilsFile = require("../../db/utils/fileUtils"); +const ObjectID = require('mongodb').ObjectID; +const UtilsFolder = require("../../db/utils/folderUtils"); +const mongoose = require("../../db/mongoose"); +const conn = mongoose.connection; +const Thumbnail = require("../../models/thumbnail"); +const sortBySwitch = require("../../utils/sortBySwitchFolder"); +const utilsFile = new UtilsFile(); +const utilsFolder = new UtilsFolder(); +const FolderService = function () { + this.uploadFolder = (data) => __awaiter(this, void 0, void 0, function* () { + const folder = new Folder(data); + yield folder.save(); + if (!folder) + throw new InternalServerError("Upload Folder Error"); + return folder; + }); + this.deleteFolder = (userID, folderID, parentList) => __awaiter(this, void 0, void 0, function* () { + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255 + }); + const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { + bucketName: "videos" + }); + const parentListString = parentList.toString(); + yield Folder.deleteMany({ "owner": userID, "parentList": { $all: parentList } }); + yield Folder.deleteMany({ "owner": userID, "_id": folderID }); + const fileList = yield utilsFile.getFileListByParent(userID, parentListString); + if (!fileList) + throw new NotFoundError("Delete File List Not Found"); + for (let i = 0; i < fileList.length; i++) { + const currentFile = fileList[i]; + try { + if (currentFile.metadata.thumbnailID) { + yield Thumbnail.deleteOne({ _id: currentFile.metadata.thumbnailID }); + } + if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { + try { + yield videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)); + } + catch (e) { + console.log("Could Not Find Transcoded Video"); + } + } + yield bucket.delete(ObjectID(currentFile._id)); + } + catch (e) { + console.log("Could not delete file", currentFile.filename, currentFile._id); + } + } + }); + this.deleteAll = (userID) => __awaiter(this, void 0, void 0, function* () { + console.log("remove all request"); + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255 + }); + const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { + bucketName: "videos" + }); + yield Folder.deleteMany({ "owner": userID }); + const fileList = yield utilsFile.getFileListByOwner(userID); + if (!fileList) + throw new NotFoundError("Delete All File List Not Found Error"); + for (let i = 0; i < fileList.length; i++) { + const currentFile = fileList[i]; + try { + if (currentFile.metadata.thumbnailID) { + yield Thumbnail.deleteOne({ _id: currentFile.metadata.thumbnailID }); + } + if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { + try { + yield videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)); + } + catch (e) { + console.log("Cannot Find Transcoded Video"); + } + } + yield bucket.delete(ObjectID(currentFile._id)); + } + catch (e) { + console.log("Could Not Remove File", currentFile.filename, currentFile._id); + } + } + }); + this.getFolderInfo = (userID, folderID) => __awaiter(this, void 0, void 0, function* () { + let currentFolder = yield utilsFolder.getFolderInfo(folderID, userID); + if (!currentFolder) + throw new NotFoundError("Folder Info Not Found Error"); + const parentID = currentFolder.parent; + let parentName = ""; + if (parentID === "/") { + parentName = "Home"; + } + else { + const parentFolder = yield utilsFolder.getFolderInfo(parentID, userID); + if (parentFolder) { + parentName = parentFolder.name; + } + else { + parentName = "Unknown"; + } + } + const folderName = currentFolder.name; + currentFolder = Object.assign(Object.assign({}, currentFolder._doc), { parentName, folderName }); + // Must Use ._doc here, or the destucturing/spreading + // Will add a bunch of unneeded variables to the object. + return currentFolder; + }); + this.getFolderSublist = (userID, folderID) => __awaiter(this, void 0, void 0, function* () { + const folder = yield utilsFolder.getFolderInfo(folderID, userID); + if (!folder) + throw new NotFoundError("Folder Sublist Not Found Error"); + const subfolderList = folder.parentList; + let folderIDList = []; + let folderNameList = []; + for (let i = 0; i < subfolderList.length; i++) { + const currentSubFolderID = subfolderList[i]; + if (currentSubFolderID === "/") { + folderIDList.push("/"); + folderNameList.push("Home"); + } + else { + const currentFolder = yield utilsFolder.getFolderInfo(currentSubFolderID, userID); + folderIDList.push(currentFolder._id); + folderNameList.push(currentFolder.name); + } + } + folderIDList.push(folderID); + folderNameList.push(folder.name); + return { + folderIDList, + folderNameList + }; + }); + this.getFolderList = (userID, query) => __awaiter(this, void 0, void 0, function* () { + let searchQuery = query.search || ""; + const parent = query.parent || "/"; + let sortBy = query.sortby || "DEFAULT"; + sortBy = sortBySwitch(sortBy); + if (searchQuery.length === 0) { + const folderList = yield utilsFolder.getFolderListByParent(userID, parent, sortBy); + if (!folderList) + throw new NotFoundError("Folder List Not Found Error"); + return folderList; + } + else { + searchQuery = new RegExp(searchQuery, 'i'); + const folderList = yield utilsFolder.getFolderListBySearch(userID, searchQuery, sortBy); + if (!folderList) + throw new NotFoundError("Folder List Not Found Error"); + return folderList; + } + }); + this.renameFolder = (userID, folderID, title) => __awaiter(this, void 0, void 0, function* () { + const folder = yield utilsFolder.renameFolder(folderID, userID, title); + if (!folder) + throw new NotFoundError("Rename Folder Not Found"); + }); + this.moveFolder = (userID, folderID, parentID) => __awaiter(this, void 0, void 0, function* () { + let parentList = ["/"]; + if (parentID.length !== 1) { + const parentFile = yield utilsFolder.getFolderInfo(parentID, userID); + parentList = parentFile.parentList; + parentList.push(parentID); + } + const folder = yield utilsFolder.moveFolder(folderID, userID, parentID, parentList); + if (!folder) + throw new NotFoundError("Move Folder Not Found"); + const folderChilden = yield utilsFolder.findAllFoldersByParent(folderID.toString(), userID); + folderChilden.map((currentFolderChild) => __awaiter(this, void 0, void 0, function* () { + let currentFolderChildParentList = currentFolderChild.parentList; + const indexOfFolderID = currentFolderChildParentList.indexOf(folderID.toString()); + currentFolderChildParentList = currentFolderChildParentList.splice(indexOfFolderID); + currentFolderChildParentList = [...parentList, ...currentFolderChildParentList]; + currentFolderChild.parentList = currentFolderChildParentList; + yield currentFolderChild.save(); + })); + const fileChildren = yield utilsFile.getFileListByParent(userID, folderID.toString()); + fileChildren.map((currentFileChild) => __awaiter(this, void 0, void 0, function* () { + let currentFileChildParentList = currentFileChild.metadata.parentList; + currentFileChildParentList = currentFileChildParentList.split(","); + const indexOfFolderID = currentFileChildParentList.indexOf(folderID.toString()); + currentFileChildParentList = currentFileChildParentList.splice(indexOfFolderID); + currentFileChildParentList = [...parentList, ...currentFileChildParentList]; + yield utilsFile.moveFile(currentFileChild._id, userID, currentFileChild.metadata.parent, currentFileChildParentList.toString()); + })); + }); +}; +module.exports = FolderService; diff --git a/dist/services/UserService/index.js b/dist/services/UserService/index.js new file mode 100644 index 0000000..2984442 --- /dev/null +++ b/dist/services/UserService/index.js @@ -0,0 +1,62 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const User = require("../../models/user"); +const bcrypt = require("bcrypt"); +const crypto = require("crypto"); +const NotFoundError = require("../../utils/NotFoundError"); +const InternalServerError = require("../../utils/InternalServerError"); +const NotAuthorizedError = require("../../utils/NotAuthorizedError"); +const UserService = function () { + this.login = (userData) => __awaiter(this, void 0, void 0, function* () { + const email = userData.email; + const password = userData.password; + const user = yield User.findByCreds(email, password); + const token = yield user.generateAuthToken(); + if (!user || !token) + throw new NotFoundError("Login User Not Found Error"); + return { user, token }; + }); + this.logout = (user, userToken) => __awaiter(this, void 0, void 0, function* () { + user.tokens = user.tokens.filter((token) => { + return token.token !== userToken; + }); + yield user.save(); + }); + this.logoutAll = (user) => __awaiter(this, void 0, void 0, function* () { + user.tokens = []; + user.tempTokens = []; + yield user.save(); + }); + this.create = (userData) => __awaiter(this, void 0, void 0, function* () { + console.log("Create"); + const user = new User(userData); + yield user.save(); + yield user.generateEncryptionKeys(); + const token = yield user.generateAuthToken(); + if (!user || !token) + throw new InternalServerError("Could Not Create New User Error"); + return { user, token }; + }); + this.changePassword = (user, oldPassword, newPassword) => __awaiter(this, void 0, void 0, function* () { + const isMatch = yield bcrypt.compare(oldPassword, user.password); + if (!isMatch) + throw new NotAuthorizedError("Change Passwords Do Not Match Error"); + const encryptionKey = user.getEncryptionKey(); + user.password = newPassword; + user.tokens = []; + user.tempTokens = []; + yield user.save(); + yield user.changeEncryptionKey(encryptionKey); + const newToken = yield user.generateAuthToken(); + return newToken; + }); +}; +module.exports = UserService; diff --git a/dist/test.js b/dist/test.js new file mode 100644 index 0000000..3918c74 --- /dev/null +++ b/dist/test.js @@ -0,0 +1 @@ +"use strict"; diff --git a/dist/utils/InternalServerError.js b/dist/utils/InternalServerError.js new file mode 100644 index 0000000..b54404a --- /dev/null +++ b/dist/utils/InternalServerError.js @@ -0,0 +1,8 @@ +"use strict"; +class InternalServerError extends Error { + constructor(args) { + super(args); + this.code = 500; + } +} +module.exports = InternalServerError; diff --git a/dist/utils/NotAuthorizedError.js b/dist/utils/NotAuthorizedError.js new file mode 100644 index 0000000..05c85c6 --- /dev/null +++ b/dist/utils/NotAuthorizedError.js @@ -0,0 +1,8 @@ +"use strict"; +class NotAuthorizedError extends Error { + constructor(args) { + super(args); + this.code = 401; + } +} +module.exports = NotAuthorizedError; diff --git a/dist/utils/NotFoundError.js b/dist/utils/NotFoundError.js new file mode 100644 index 0000000..daddb1c --- /dev/null +++ b/dist/utils/NotFoundError.js @@ -0,0 +1,8 @@ +"use strict"; +class NotFoundError extends Error { + constructor(args) { + super(args); + this.code = 404; + } +} +module.exports = NotFoundError; diff --git a/dist/utils/createError.js b/dist/utils/createError.js new file mode 100644 index 0000000..e19bcc0 --- /dev/null +++ b/dist/utils/createError.js @@ -0,0 +1,9 @@ +"use strict"; +const createError = (message, code, exception) => { + let error = new Error(message); + error.message = message; + error.code = code; + error.exception = exception; + throw error; +}; +module.exports = createError; diff --git a/dist/utils/createQuery.js b/dist/utils/createQuery.js new file mode 100644 index 0000000..594d1dd --- /dev/null +++ b/dist/utils/createQuery.js @@ -0,0 +1,27 @@ +"use strict"; +const createQuery = (owner, parent, sortBy, startAt, startAtDate, searchQuery, startAtName) => { + let query = { "metadata.owner": owner }; + if (searchQuery !== "") { + searchQuery = new RegExp(searchQuery, 'i'); + query = Object.assign(Object.assign({}, query), { filename: searchQuery }); + } + else { + query = Object.assign(Object.assign({}, query), { "metadata.parent": parent }); + } + if (startAt) { + if (sortBy === "date_desc" || sortBy === "DEFAULT") { + query = Object.assign(Object.assign({}, query), { "uploadDate": { $lt: new Date(startAtDate) } }); + } + else if (sortBy === "date_asc") { + query = Object.assign(Object.assign({}, query), { "uploadDate": { $gt: new Date(startAtDate) } }); + } + else if (sortBy === "alp_desc") { + query = Object.assign(Object.assign({}, query), { "filename": { $lt: startAtName } }); + } + else { + query = Object.assign(Object.assign({}, query), { "filename": { $gt: startAtName } }); + } + } + return query; +}; +module.exports = createQuery; diff --git a/dist/utils/imageChecker.js b/dist/utils/imageChecker.js new file mode 100644 index 0000000..10b76cc --- /dev/null +++ b/dist/utils/imageChecker.js @@ -0,0 +1,22 @@ +"use strict"; +const videoExtList = [ + "jpeg", + "jpg", + "png", + "gif", + "svg", + "tiff", + "bmp" +]; +const videoChecker = (filename) => { + if (filename.length < 1 || !filename.includes(".")) { + return false; + } + const extSplit = filename.split("."); + if (extSplit < 1) { + return false; + } + const ext = extSplit[extSplit.length - 1]; + return videoExtList.includes(ext.toLowerCase()); +}; +module.exports = videoChecker; diff --git a/dist/utils/mobileCheck.js b/dist/utils/mobileCheck.js new file mode 100644 index 0000000..5926377 --- /dev/null +++ b/dist/utils/mobileCheck.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const mobilecheck = () => { + var check = false; + (function (a) { if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) + check = true; })(navigator.userAgent || navigator.vendor || window.opera); + return check; +}; +exports.default = mobilecheck; diff --git a/dist/utils/sortBySwitch.js b/dist/utils/sortBySwitch.js new file mode 100644 index 0000000..08b6927 --- /dev/null +++ b/dist/utils/sortBySwitch.js @@ -0,0 +1,14 @@ +"use strict"; +const sortBySwitch = (sortBy) => { + switch (sortBy) { + case "alp_asc": + return { filename: 1 }; + case "alp_desc": + return { filename: -1 }; + case "date_asc": + return { uploadDate: 1 }; + default: + return { uploadDate: -1 }; + } +}; +module.exports = sortBySwitch; diff --git a/dist/utils/sortBySwitchFolder.js b/dist/utils/sortBySwitchFolder.js new file mode 100644 index 0000000..01f8cd2 --- /dev/null +++ b/dist/utils/sortBySwitchFolder.js @@ -0,0 +1,14 @@ +"use strict"; +const sortBySwitch = (sortBy) => { + switch (sortBy) { + case "alp_asc": + return { name: 1 }; + case "alp_desc": + return { name: -1 }; + case "date_asc": + return { createdAt: 1 }; + default: + return { createdAt: -1 }; + } +}; +module.exports = sortBySwitch; diff --git a/dist/utils/videoChecker.js b/dist/utils/videoChecker.js new file mode 100644 index 0000000..74e8cd4 --- /dev/null +++ b/dist/utils/videoChecker.js @@ -0,0 +1,48 @@ +"use strict"; +const videoExtList = [ + "3g2", + "3gp", + "aaf", + "asf", + "avchd", + "avi", + "drc", + "flv", + "m2v", + "m4p", + "m4v", + "mkv", + "mng", + "mov", + "mp2", + "mp4", + "mpe", + "mpeg", + "mpg", + "mpv", + "mxf", + "nsv", + "ogg", + "ogv", + "qt", + "rm", + "rmvb", + "roq", + "svi", + "vob", + "webm", + "wmv", + "yuv" +]; +const videoChecker = (filename) => { + if (filename.length < 1 || !filename.includes(".")) { + return false; + } + const extSplit = filename.split("."); + if (extSplit < 1) { + return false; + } + const ext = extSplit[extSplit.length - 1]; + return videoExtList.includes(ext.toLowerCase()); +}; +module.exports = videoChecker; diff --git a/package.json b/package.json index 8537a31..36f2029 100755 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "test": "cross-env NODE_ENV=test env-cmd -f ./config/test.env jest --config=jest.config.json --watchAll --runInBand", "start:dev": "env-cmd -f ./config/dev.env node server/serverStart.js", "start": "cross-env NODE_ENV=production env-cmd -f ./config/prod.env node server/serverStart.js --env production", - "start:no-ssl": "cross-env NODE_ENV=production-no-ssl env-cmd -f ./config/prod.env node server/serverStart.js --env production-no-ssl", + "start:no-ssl": "cross-env NODE_ENV=production-no-ssl env-cmd -f ./config/prod.env node dist/server/serverStart.js --env production-no-ssl", "clean-database": "env-cmd -f ./config/prod.env node serverUtils/cleanDatabase.js", "clean-database:dev": "env-cmd -f ./config/dev.env node serverUtils/cleanDatabase.js", "backup-database": "env-cmd -f ./config/prod.env node serverUtils/backupDatabase.js", @@ -32,10 +32,16 @@ }, "dependencies": { "@babel/core": "^7.8.4", + "@babel/parser": "^7.9.4", "@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin-proposal-object-rest-spread": "^7.8.3", "@babel/preset-env": "^7.8.4", "@babel/preset-react": "^7.8.3", + "@babel/types": "^7.9.5", + "@types/express": "^4.17.6", + "@types/mongodb": "^3.5.5", + "@types/mongoose": "^5.7.10", + "@types/node": "^13.11.1", "axios": "^0.19.2", "babel-polyfill": "^6.26.0", "bcrypt": "^3.0.8", @@ -76,6 +82,7 @@ "sharp": "^0.23.4", "sweetalert2": "^9.7.2", "temp": "^0.9.1", + "typescript": "^3.8.3", "uuid": "^3.4.0", "validator": "^12.2.0", "webpack": "^4.41.6" diff --git a/rootpath.js b/rootpath.js deleted file mode 100644 index 68db50e..0000000 --- a/rootpath.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = __dirname \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..5d5c7f0 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,74 @@ +{ + "compilerOptions": { + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + "module": "CommonJS", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + // "lib": [], /* Specify library files to be included in the compilation. */ + "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./dist", /* Redirect output structure to the directory. */ + "rootDir": "./backend", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "exclude": [ + "serverUtils", + "src", + "tests", + "key", + "public", + "node_modules", + "webpack.config.js", + "dist" + ] +} From ef191fb27575a0b63a922c103acfcc4ee76ae080 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 13 Apr 2020 15:55:27 -0400 Subject: [PATCH 002/129] Added more typescript files --- backend/controllers/file.ts | 88 +++--- backend/express-routers/file.ts | 6 +- backend/middleware/auth.js | 4 +- backend/middleware/tempAuth.js | 2 +- backend/middleware/tempAuthVideo.js | 2 +- backend/models/user.ts | 2 +- backend/services/ChunkService/MongoService.ts | 262 +++++++++++++++++- backend/services/FileService/index.js | 2 +- backend/services/FileService/indexnew.ts | 24 -- ...{createThumbnail.js => createThumbnail.ts} | 26 +- backend/services/UserService/index.js | 2 +- dist/controllers/file.js | 97 ++++--- dist/express-routers/file.js | 6 +- dist/middleware/auth.js | 8 +- dist/middleware/tempAuth.js | 8 +- dist/middleware/tempAuthVideo.js | 8 +- dist/models/user.js | 2 +- dist/services/ChunkService/MongoService.js | 194 +++++++++++++ dist/services/FileService/index.js | 2 +- dist/services/FileService/indexnew.js | 14 - .../FileService/utils/createThumbnail.js | 17 +- dist/services/UserService/index.js | 10 +- 22 files changed, 613 insertions(+), 173 deletions(-) rename backend/services/FileService/utils/{createThumbnail.js => createThumbnail.ts} (77%) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index f55db61..0be8d10 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -39,7 +39,7 @@ class FileController { const user = req.user; const id = req.params.id; - const decryptedThumbnail = await fileService.getThumbnail(user, id); + const decryptedThumbnail = await mongoService.getThumbnail(user, id); res.send(decryptedThumbnail); @@ -53,71 +53,71 @@ class FileController { } - // async getFullThumbnail(req: RequestType, res: Response) { + async getFullThumbnail(req: RequestType, res: Response) { - // if (!req.user) { - // return; - // } + if (!req.user) { + return; + } - // try { + try { - // const user = req.user; - // const fileID = req.params.id; + const user = req.user; + const fileID = req.params.id; - // await fileService.getFullThumbnail(user, fileID, res); + await mongoService.getFullThumbnail(user, fileID, res); - // } catch (e) { - // const code = e.code || 500; - // console.log(e.message, e.exception) - // return res.status(code).send(); - // } - // } + } catch (e) { + const code = e.code || 500; + console.log(e.message, e.exception) + return res.status(code).send(); + } + } - // async uploadFile(req: RequestType, res: Response) { + async uploadFile(req: RequestType, res: Response) { - // if (!req.user) { + if (!req.user) { - // return - // } + return + } - // try { + try { - // const user = req.user; - // const busboy = req.busboy; + const user = req.user; + const busboy = req.busboy; - // req.pipe(busboy); + req.pipe(busboy); - // const file = await fileService.upload(user, busboy, req); + const file = await mongoService.uploadFile(user, busboy, req); - // res.send(file); + res.send(file); - // console.log("file uploaded"); + console.log("file uploaded"); - // } catch (e) { - // const code = e.code || 500; - // console.log(e.message, e.exception) - // return res.status(code).send(); - // } - // } + } catch (e) { + const code = e.code || 500; + console.log(e.message, e.exception) + return res.status(code).send(); + } + } - // async getPublicDownload(req: RequestType, res: Response) { + async getPublicDownload(req: RequestType, res: Response) { - // try { + try { - // const ID = req.params.id; - // const tempToken = req.params.tempToken; + const ID = req.params.id; + const tempToken = req.params.tempToken; - // await fileService.publicDownload(ID, tempToken, res); + await mongoService.getPublicDownload(ID, tempToken, res); - // } catch (e) { + } catch (e) { - // const code = e.code || 500; - // const message = e.message || e; + const code = e.code || 500; + const message = e.message || e; - // console.log(message, e); - // res.status(code).send(); - // } - // } + console.log(message, e); + res.status(code).send(); + } + } async removeLink(req: RequestType, res: Response) { diff --git a/backend/express-routers/file.ts b/backend/express-routers/file.ts index 35d46e4..d745ef4 100644 --- a/backend/express-routers/file.ts +++ b/backend/express-routers/file.ts @@ -10,15 +10,15 @@ import FileController from "../controllers/file"; const fileController = new FileController() -//router.post("/file-service/upload", auth, fileController.uploadFile); +router.post("/file-service/upload", auth, fileController.uploadFile); //router.post("/file-service/transcode-video", auth, fileController.transcodeVideo); router.get("/file-service/thumbnail/:id", auth, fileController.getThumbnail); -//router.get("/file-service/full-thumbnail/:id", auth, fileController.getFullThumbnail); +router.get("/file-service/full-thumbnail/:id", auth, fileController.getFullThumbnail); -//router.get("/file-service/public/download/:id/:tempToken", fileController.getPublicDownload); +router.get("/file-service/public/download/:id/:tempToken", fileController.getPublicDownload); router.get("/file-service/public/info/:id/:tempToken", fileController.getPublicInfo); diff --git a/backend/middleware/auth.js b/backend/middleware/auth.js index 35085f2..8c70bb3 100644 --- a/backend/middleware/auth.js +++ b/backend/middleware/auth.js @@ -1,5 +1,5 @@ const jwt = require("jsonwebtoken"); -const User = require("../models/user"); +import User from "../models/user"; const env = require("../enviroment/env"); const auth = async(req, res, next) => { @@ -11,7 +11,7 @@ const auth = async(req, res, next) => { const decoded = await jwt.verify(token, env.password); const iv = decoded.iv; - + const user = await User.findOne({_id: decoded._id}); const encrpytionKey = user.getEncryptionKey(); diff --git a/backend/middleware/tempAuth.js b/backend/middleware/tempAuth.js index 06dec37..8638520 100644 --- a/backend/middleware/tempAuth.js +++ b/backend/middleware/tempAuth.js @@ -1,5 +1,5 @@ const jwt = require("jsonwebtoken"); -const User = require("../models/user"); +import User from "../models/user"; const env = require("../enviroment/env"); const tempAuth = async(req, res, next) => { diff --git a/backend/middleware/tempAuthVideo.js b/backend/middleware/tempAuthVideo.js index 3f62d06..1ae1861 100644 --- a/backend/middleware/tempAuthVideo.js +++ b/backend/middleware/tempAuthVideo.js @@ -1,5 +1,5 @@ const jwt = require("jsonwebtoken"); -const User = require("../models/user"); +import User from "../models/user"; const env = require("../enviroment/env"); const tempAuthVideo = async(req, res, next) => { diff --git a/backend/models/user.ts b/backend/models/user.ts index 0ee9243..fe64aea 100644 --- a/backend/models/user.ts +++ b/backend/models/user.ts @@ -290,4 +290,4 @@ userSchema.methods.generateTempAuthTokenVideo = async function(cookie: string) { const User = mongoose.model("User", userSchema); -module.exports = User; \ No newline at end of file +export default User; \ No newline at end of file diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index ecd9830..ecf2449 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -1,15 +1,20 @@ import mongoose from "../../db/mongoose"; -import {Response} from "express"; +import {Response, Request} from "express"; const conn = mongoose.connection; const env = require("../../enviroment/env"); const DbUtilFolder = require("../../db/utils/folderUtils"); import DbUtilFile from "../../db/utils/fileUtils/index"; import crypto from "crypto"; - +const videoChecker = require("../../utils/videoChecker"); +const imageChecker = require("../../utils/imageChecker"); const ObjectID = require('mongodb').ObjectID +import createThumbnail from "../FileService/utils/createThumbnail"; +import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; +import NotAuthorizedError from "../../utils/NotAuthorizedError"; -import { UserInterface } from "../../models/user"; +import User, { UserInterface } from "../../models/user"; import { FileInterface } from "../../models/file"; +const removeChunks = require("../FileService/utils/removeChunks"); const dbUtilsFile = new DbUtilFile(); const dbUtilsFolder = new DbUtilFolder(); @@ -20,6 +25,112 @@ class MongoService { } + uploadFile = (user: UserInterface, busboy: any, req: Request) => { + + return new Promise((resolve, reject) => { + + const password = user.getEncryptionKey(); + + let bucketStream: any; + + const initVect = crypto.randomBytes(16); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect); + + cipher.on("error", async(e) => { + await removeChunks(bucketStream); + reject({ + message: "File service upload cipher error", + exception: e, + code: 500 + }) + }) + + const formData = new Map(); + + busboy.on("error", async(e: Error) => { + await removeChunks(bucketStream); + reject({ + message: "File service upload busboy error", + exception: e, + code: 500 + }) + }) + + busboy.on("file", async(_: string, file: any, filename: string) => { + + const parent = formData.get("parent") || "/" + const parentList = formData.get("parentList") || "/"; + const size = formData.get("size") || "" + let hasThumbnail = false; + let thumbnailID = "" + const isVideo = videoChecker(filename) + + const metadata = { + owner: user._id, + parent, + parentList, + hasThumbnail, + thumbnailID, + isVideo, + size, + IV: initVect + } + + + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255 + }); + + + bucketStream = bucket.openUploadStream(filename, {metadata}) + + bucketStream.on("error", async(e: Error) => { + await removeChunks(bucketStream); + reject({ + message: "Cannot upload file to database", + exception: e, + code: 500 + }) + }) + + req.on("aborted", async() => { + + console.log("Upload Request Cancelling..."); + + await removeChunks(bucketStream); + }) + + file.pipe(cipher).pipe(bucketStream); + + bucketStream.on("finish", (file: FileInterface) => { + + const imageCheck = imageChecker(filename); + + if (file.length < 15728640 && imageCheck) { + + createThumbnail(file, filename, user).then((updatedFile: FileInterface) => { + resolve(updatedFile); + }) + + } else { + + resolve(file); + } + + }) + + }).on("field", (field: any, val: any) => { + + formData.set(field, val) + + }) + + }) + } + downloadFile = (user: UserInterface, fileID: string, res: Response) => { return new Promise((resolve, reject) => { @@ -76,6 +187,151 @@ class MongoService { }) } + getThumbnail = async(user: UserInterface, id: string) => { + + const password: Buffer = user.getEncryptionKey(); + + const thumbnail = await Thumbnail.findById(id) as ThumbnailInterface; + + if (thumbnail.owner !== user._id.toString()) { + + throw new NotAuthorizedError('Thumbnail Unauthorized Error'); + } + + const iv = thumbnail.data.slice(0, 16); + + const chunk = thumbnail.data.slice(16); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv("aes256", CIPHER_KEY, iv); + + const decryptedThumbnail = Buffer.concat([decipher.update(chunk), decipher.final()]); + + return decryptedThumbnail; + } + + getFullThumbnail = (user: UserInterface, fileID: string, res: Response) => { + + return new Promise((resolve, reject) => { + + const userID = user._id; + + dbUtilsFile.getFileInfo(fileID, userID).then((file) => { + + if (!file) { + reject({ + code: 401, + message: "File For Full Thumbnail Not Found", + exception: undefined + }) + } + + const bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255, + }) + const password = user.getEncryptionKey(); + const IV = file.metadata.IV.buffer + + const readStream = bucket.openDownloadStream(ObjectID(fileID)) + + readStream.on("error", (e) => { + reject({ + code: 500, + message: "File service Full Thumbnail stream error", + exception: e + }) + }) + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + decipher.on("error", (e) => { + reject({ + code: 500, + message: "File service Full Thumbnail decipher error", + exception: e + }) + }) + + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size); + + readStream.pipe(decipher).pipe(res).on("finish", async() => { + console.log("Sent Full Thumbnail"); + resolve(); + }); + }); + }) + + } + + getPublicDownload = (fileID: string, tempToken: any, res: Response) => { + + return new Promise((resolve, reject) => { + + dbUtilsFile.getPublicFile(fileID).then(async(file: FileInterface) => { + + if (!file || !file.metadata.link || file.metadata.link !== tempToken) { + reject({ + code: 401, + message: "File not public/Not found", + exception: undefined + }) + } else { + + const user = await User.findById(file.metadata.owner) as UserInterface; + + const bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255, + }) + + const password = user.getEncryptionKey(); + const IV = file.metadata.IV.buffer + + const readStream = bucket.openDownloadStream(ObjectID(fileID)) + + readStream.on("error", (e) => { + reject({ + code: 500, + message: "File service public download decipher error", + exception: e + }) + }) + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + decipher.on("error", (e) => { + reject({ + code: 500, + message: "File service public download decipher error", + exception: e + }) + }) + + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + + readStream.pipe(decipher).pipe(res).on("finish", async() => { + + if (file.metadata.linkType === "one") { + console.log("removing public link"); + await dbUtilsFile.removeOneTimePublicLink(fileID); + } + resolve(); + }); + + } + + }) + }) + } + } export default MongoService; \ No newline at end of file diff --git a/backend/services/FileService/index.js b/backend/services/FileService/index.js index abe4686..7fc7860 100644 --- a/backend/services/FileService/index.js +++ b/backend/services/FileService/index.js @@ -3,7 +3,7 @@ import crypto from "crypto"; const videoChecker = require("../../utils/videoChecker"); const mongoose = require("../../db/mongoose") const conn = mongoose.connection; -const createThumbnail = require("./utils/createThumbnail"); +const createThumbnail = require("./utils/createThumbnail.ss"); const Thumbnail = require("../../models/thumbnail"); const ObjectID = require('mongodb').ObjectID const NotAuthorizedError = require("../../utils/NotAuthorizedError"); diff --git a/backend/services/FileService/indexnew.ts b/backend/services/FileService/indexnew.ts index 7092fdc..90338ed 100644 --- a/backend/services/FileService/indexnew.ts +++ b/backend/services/FileService/indexnew.ts @@ -36,30 +36,6 @@ class MongoFileService { } - getThumbnail = async(user: UserInterface, id: string) => { - - const password: Buffer = user.getEncryptionKey(); - - const thumbnail = await Thumbnail.findById(id) as ThumbnailInterface; - - if (thumbnail.owner !== user._id.toString()) { - - throw new NotAuthorizedError('Thumbnail Unauthorized Error'); - } - - const iv = thumbnail.data.slice(0, 16); - - const chunk = thumbnail.data.slice(16); - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const decipher = crypto.createDecipheriv("aes256", CIPHER_KEY, iv); - - const decryptedThumbnail = Buffer.concat([decipher.update(chunk), decipher.final()]); - - return decryptedThumbnail; - } - removePublicOneTimeLink = async(currentFile: FileInterface) => { const fileID = currentFile._id; diff --git a/backend/services/FileService/utils/createThumbnail.js b/backend/services/FileService/utils/createThumbnail.ts similarity index 77% rename from backend/services/FileService/utils/createThumbnail.js rename to backend/services/FileService/utils/createThumbnail.ts index 8a43a3f..d7aa0e2 100644 --- a/backend/services/FileService/utils/createThumbnail.js +++ b/backend/services/FileService/utils/createThumbnail.ts @@ -2,14 +2,16 @@ const mongoose = require("../../../db/mongoose") const conn = mongoose.connection; const crypto= require("crypto"); const env = require("../../../enviroment/env"); -const Thumbnail = require("../../../models/thumbnail"); +import Thumbnail from "../../../models/thumbnail"; const ObjectID = require('mongodb').ObjectID const sharp = require("sharp"); const concat = require("concat-stream") +import {FileInterface} from "../../../models/file"; +import {UserInterface} from "../../../models/user"; -const createThumbnail = async(file, filename, user) => { +const createThumbnail = (file: FileInterface, filename: string, user: UserInterface) => { - return new Promise((resolve) => { + return new Promise((resolve) => { const password = user.getEncryptionKey(); @@ -21,29 +23,27 @@ const createThumbnail = async(file, filename, user) => { const readStream = bucket.openDownloadStream(ObjectID(file._id)) - readStream.on("error", (e) => { + readStream.on("error", (e: Error) => { console.log("File service upload thumbnail error", e); resolve(file); }) const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, file.metadata.IV); - decipher.on("error", (e) => { + decipher.on("error", (e: Error) => { console.log("File service upload thumbnail decipher error", e); resolve(file) }) try { - const concatStream = concat(async(bufferData) => { + const concatStream = concat(async(bufferData: Buffer) => { - const thumbnailIV = crypto.randomBytes(16); - - //CIPHER_KEY = crypto.createHash('sha256').update(process.env.newPassword).digest() + const thumbnailIV = crypto.randomBytes(16); const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); - bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); //thumbnailCipher.update(bufferData) + bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); const thumbnailModel = new Thumbnail({name: filename, owner: user._id, data: bufferData}); @@ -58,12 +58,12 @@ const createThumbnail = async(file, filename, user) => { resolve(updatedFile); - }).on("error", (e) => { + }).on("error", (e: Error) => { console.log("File service upload concat stream error", e); resolve(file); }) - const imageResize = sharp().resize(300).on("error", (e) => { + const imageResize = sharp().resize(300).on("error", (e: Error) => { console.log("resize error", e); resolve(file); @@ -81,4 +81,4 @@ const createThumbnail = async(file, filename, user) => { }) } -module.exports = createThumbnail; \ No newline at end of file +export default createThumbnail; \ No newline at end of file diff --git a/backend/services/UserService/index.js b/backend/services/UserService/index.js index b18ed44..48c376d 100644 --- a/backend/services/UserService/index.js +++ b/backend/services/UserService/index.js @@ -1,4 +1,4 @@ -const User = require("../../models/user"); +import User from "../../models/user"; const bcrypt = require("bcrypt"); const crypto = require("crypto"); const NotFoundError = require("../../utils/NotFoundError"); diff --git a/dist/controllers/file.js b/dist/controllers/file.js index e8b5ae4..5128b84 100644 --- a/dist/controllers/file.js +++ b/dist/controllers/file.js @@ -27,7 +27,7 @@ class FileController { try { const user = req.user; const id = req.params.id; - const decryptedThumbnail = yield fileService.getThumbnail(user, id); + const decryptedThumbnail = yield mongoService.getThumbnail(user, id); res.send(decryptedThumbnail); } catch (e) { @@ -37,49 +37,58 @@ class FileController { } }); } - // async getFullThumbnail(req: RequestType, res: Response) { - // if (!req.user) { - // return; - // } - // try { - // const user = req.user; - // const fileID = req.params.id; - // await fileService.getFullThumbnail(user, fileID, res); - // } catch (e) { - // const code = e.code || 500; - // console.log(e.message, e.exception) - // return res.status(code).send(); - // } - // } - // async uploadFile(req: RequestType, res: Response) { - // if (!req.user) { - // return - // } - // try { - // const user = req.user; - // const busboy = req.busboy; - // req.pipe(busboy); - // const file = await fileService.upload(user, busboy, req); - // res.send(file); - // console.log("file uploaded"); - // } catch (e) { - // const code = e.code || 500; - // console.log(e.message, e.exception) - // return res.status(code).send(); - // } - // } - // async getPublicDownload(req: RequestType, res: Response) { - // try { - // const ID = req.params.id; - // const tempToken = req.params.tempToken; - // await fileService.publicDownload(ID, tempToken, res); - // } catch (e) { - // const code = e.code || 500; - // const message = e.message || e; - // console.log(message, e); - // res.status(code).send(); - // } - // } + getFullThumbnail(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const user = req.user; + const fileID = req.params.id; + yield mongoService.getFullThumbnail(user, fileID, res); + } + catch (e) { + const code = e.code || 500; + console.log(e.message, e.exception); + return res.status(code).send(); + } + }); + } + uploadFile(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.user) { + return; + } + try { + const user = req.user; + const busboy = req.busboy; + req.pipe(busboy); + const file = yield mongoService.uploadFile(user, busboy, req); + res.send(file); + console.log("file uploaded"); + } + catch (e) { + const code = e.code || 500; + console.log(e.message, e.exception); + return res.status(code).send(); + } + }); + } + getPublicDownload(req, res) { + return __awaiter(this, void 0, void 0, function* () { + try { + const ID = req.params.id; + const tempToken = req.params.tempToken; + yield mongoService.getPublicDownload(ID, tempToken, res); + } + catch (e) { + const code = e.code || 500; + const message = e.message || e; + console.log(message, e); + res.status(code).send(); + } + }); + } removeLink(req, res) { return __awaiter(this, void 0, void 0, function* () { if (!req.user) { diff --git a/dist/express-routers/file.js b/dist/express-routers/file.js index 89692aa..3bc151e 100644 --- a/dist/express-routers/file.js +++ b/dist/express-routers/file.js @@ -10,11 +10,11 @@ const tempAuth = require("../middleware/tempAuth"); const tempAuthVideo = require("../middleware/tempAuthVideo"); const file_1 = __importDefault(require("../controllers/file")); const fileController = new file_1.default(); -//router.post("/file-service/upload", auth, fileController.uploadFile); +router.post("/file-service/upload", auth, fileController.uploadFile); //router.post("/file-service/transcode-video", auth, fileController.transcodeVideo); router.get("/file-service/thumbnail/:id", auth, fileController.getThumbnail); -//router.get("/file-service/full-thumbnail/:id", auth, fileController.getFullThumbnail); -//router.get("/file-service/public/download/:id/:tempToken", fileController.getPublicDownload); +router.get("/file-service/full-thumbnail/:id", auth, fileController.getFullThumbnail); +router.get("/file-service/public/download/:id/:tempToken", fileController.getPublicDownload); router.get("/file-service/public/info/:id/:tempToken", fileController.getPublicInfo); router.get("/file-service/info/:id", auth, fileController.getFileInfo); router.get("/file-service/quick-list", auth, fileController.getQuickList); diff --git a/dist/middleware/auth.js b/dist/middleware/auth.js index e00bb45..0af0b65 100644 --- a/dist/middleware/auth.js +++ b/dist/middleware/auth.js @@ -8,15 +8,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); const jwt = require("jsonwebtoken"); -const User = require("../models/user"); +const user_1 = __importDefault(require("../models/user")); const env = require("../enviroment/env"); const auth = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { try { const token = req.header("Authorization").replace("Bearer ", ""); const decoded = yield jwt.verify(token, env.password); const iv = decoded.iv; - const user = yield User.findOne({ _id: decoded._id }); + const user = yield user_1.default.findOne({ _id: decoded._id }); const encrpytionKey = user.getEncryptionKey(); const encryptedToken = user.encryptToken(token, encrpytionKey, iv); let tokenFound = false; diff --git a/dist/middleware/tempAuth.js b/dist/middleware/tempAuth.js index 206a31b..6cf4982 100644 --- a/dist/middleware/tempAuth.js +++ b/dist/middleware/tempAuth.js @@ -8,15 +8,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); const jwt = require("jsonwebtoken"); -const User = require("../models/user"); +const user_1 = __importDefault(require("../models/user")); const env = require("../enviroment/env"); const tempAuth = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { try { const token = req.params.tempToken; const decoded = yield jwt.verify(token, env.password); const iv = decoded.iv; - const user = yield User.findOne({ _id: decoded._id }); + const user = yield user_1.default.findOne({ _id: decoded._id }); const encrpytionKey = user.getEncryptionKey(); const encryptedToken = user.encryptToken(token, encrpytionKey, iv); let tokenFound = false; diff --git a/dist/middleware/tempAuthVideo.js b/dist/middleware/tempAuthVideo.js index 5cb9f1f..3f8931c 100644 --- a/dist/middleware/tempAuthVideo.js +++ b/dist/middleware/tempAuthVideo.js @@ -8,8 +8,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); const jwt = require("jsonwebtoken"); -const User = require("../models/user"); +const user_1 = __importDefault(require("../models/user")); const env = require("../enviroment/env"); const tempAuthVideo = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { try { @@ -19,7 +23,7 @@ const tempAuthVideo = (req, res, next) => __awaiter(void 0, void 0, void 0, func if (req.params.uuid !== decoded.cookie) { throw new Error("Cookie mismatch"); } - const user = yield User.findOne({ _id: decoded._id }); + const user = yield user_1.default.findOne({ _id: decoded._id }); const encrpytionKey = user.getEncryptionKey(); const encryptedToken = user.encryptToken(token, encrpytionKey, iv); let tokenFound = false; diff --git a/dist/models/user.js b/dist/models/user.js index c7344e2..e0ec58b 100644 --- a/dist/models/user.js +++ b/dist/models/user.js @@ -221,4 +221,4 @@ userSchema.methods.generateTempAuthTokenVideo = function (cookie) { }); }; const User = mongoose_1.default.model("User", userSchema); -module.exports = User; +exports.default = User; diff --git a/dist/services/ChunkService/MongoService.js b/dist/services/ChunkService/MongoService.js index 8b84ff7..47cd435 100644 --- a/dist/services/ChunkService/MongoService.js +++ b/dist/services/ChunkService/MongoService.js @@ -1,4 +1,13 @@ "use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; @@ -9,11 +18,92 @@ const env = require("../../enviroment/env"); const DbUtilFolder = require("../../db/utils/folderUtils"); const index_1 = __importDefault(require("../../db/utils/fileUtils/index")); const crypto_1 = __importDefault(require("crypto")); +const videoChecker = require("../../utils/videoChecker"); +const imageChecker = require("../../utils/imageChecker"); const ObjectID = require('mongodb').ObjectID; +const createThumbnail_1 = __importDefault(require("../FileService/utils/createThumbnail")); +const thumbnail_1 = __importDefault(require("../../models/thumbnail")); +const NotAuthorizedError_1 = __importDefault(require("../../utils/NotAuthorizedError")); +const user_1 = __importDefault(require("../../models/user")); +const removeChunks = require("../FileService/utils/removeChunks"); const dbUtilsFile = new index_1.default(); const dbUtilsFolder = new DbUtilFolder(); class MongoService { constructor() { + this.uploadFile = (user, busboy, req) => { + return new Promise((resolve, reject) => { + const password = user.getEncryptionKey(); + let bucketStream; + const initVect = crypto_1.default.randomBytes(16); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const cipher = crypto_1.default.createCipheriv('aes256', CIPHER_KEY, initVect); + cipher.on("error", (e) => __awaiter(this, void 0, void 0, function* () { + yield removeChunks(bucketStream); + reject({ + message: "File service upload cipher error", + exception: e, + code: 500 + }); + })); + const formData = new Map(); + busboy.on("error", (e) => __awaiter(this, void 0, void 0, function* () { + yield removeChunks(bucketStream); + reject({ + message: "File service upload busboy error", + exception: e, + code: 500 + }); + })); + busboy.on("file", (_, file, filename) => __awaiter(this, void 0, void 0, function* () { + const parent = formData.get("parent") || "/"; + const parentList = formData.get("parentList") || "/"; + const size = formData.get("size") || ""; + let hasThumbnail = false; + let thumbnailID = ""; + const isVideo = videoChecker(filename); + const metadata = { + owner: user._id, + parent, + parentList, + hasThumbnail, + thumbnailID, + isVideo, + size, + IV: initVect + }; + let bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255 + }); + bucketStream = bucket.openUploadStream(filename, { metadata }); + bucketStream.on("error", (e) => __awaiter(this, void 0, void 0, function* () { + yield removeChunks(bucketStream); + reject({ + message: "Cannot upload file to database", + exception: e, + code: 500 + }); + })); + req.on("aborted", () => __awaiter(this, void 0, void 0, function* () { + console.log("Upload Request Cancelling..."); + yield removeChunks(bucketStream); + })); + file.pipe(cipher).pipe(bucketStream); + bucketStream.on("finish", (file) => { + const imageCheck = imageChecker(filename); + if (file.length < 15728640 && imageCheck) { + createThumbnail_1.default(file, filename, user).then((updatedFile) => { + resolve(updatedFile); + }); + } + else { + resolve(file); + } + }); + })).on("field", (field, val) => { + formData.set(field, val); + }); + }); + }; this.downloadFile = (user, fileID, res) => { return new Promise((resolve, reject) => { dbUtilsFile.getFileInfo(fileID, user._id).then((currentFile) => { @@ -55,6 +145,110 @@ class MongoService { }); }); }; + this.getThumbnail = (user, id) => __awaiter(this, void 0, void 0, function* () { + const password = user.getEncryptionKey(); + const thumbnail = yield thumbnail_1.default.findById(id); + if (thumbnail.owner !== user._id.toString()) { + throw new NotAuthorizedError_1.default('Thumbnail Unauthorized Error'); + } + const iv = thumbnail.data.slice(0, 16); + const chunk = thumbnail.data.slice(16); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv("aes256", CIPHER_KEY, iv); + const decryptedThumbnail = Buffer.concat([decipher.update(chunk), decipher.final()]); + return decryptedThumbnail; + }); + this.getFullThumbnail = (user, fileID, res) => { + return new Promise((resolve, reject) => { + const userID = user._id; + dbUtilsFile.getFileInfo(fileID, userID).then((file) => { + if (!file) { + reject({ + code: 401, + message: "File For Full Thumbnail Not Found", + exception: undefined + }); + } + const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255, + }); + const password = user.getEncryptionKey(); + const IV = file.metadata.IV.buffer; + const readStream = bucket.openDownloadStream(ObjectID(fileID)); + readStream.on("error", (e) => { + reject({ + code: 500, + message: "File service Full Thumbnail stream error", + exception: e + }); + }); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + decipher.on("error", (e) => { + reject({ + code: 500, + message: "File service Full Thumbnail decipher error", + exception: e + }); + }); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size); + readStream.pipe(decipher).pipe(res).on("finish", () => __awaiter(this, void 0, void 0, function* () { + console.log("Sent Full Thumbnail"); + resolve(); + })); + }); + }); + }; + this.getPublicDownload = (fileID, tempToken, res) => { + return new Promise((resolve, reject) => { + dbUtilsFile.getPublicFile(fileID).then((file) => __awaiter(this, void 0, void 0, function* () { + if (!file || !file.metadata.link || file.metadata.link !== tempToken) { + reject({ + code: 401, + message: "File not public/Not found", + exception: undefined + }); + } + else { + const user = yield user_1.default.findById(file.metadata.owner); + const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255, + }); + const password = user.getEncryptionKey(); + const IV = file.metadata.IV.buffer; + const readStream = bucket.openDownloadStream(ObjectID(fileID)); + readStream.on("error", (e) => { + reject({ + code: 500, + message: "File service public download decipher error", + exception: e + }); + }); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + decipher.on("error", (e) => { + reject({ + code: 500, + message: "File service public download decipher error", + exception: e + }); + }); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + readStream.pipe(decipher).pipe(res).on("finish", () => __awaiter(this, void 0, void 0, function* () { + if (file.metadata.linkType === "one") { + console.log("removing public link"); + yield dbUtilsFile.removeOneTimePublicLink(fileID); + } + resolve(); + })); + } + })); + }); + }; } } exports.default = MongoService; diff --git a/dist/services/FileService/index.js b/dist/services/FileService/index.js index 12da623..a20bd95 100644 --- a/dist/services/FileService/index.js +++ b/dist/services/FileService/index.js @@ -17,7 +17,7 @@ const crypto_1 = __importDefault(require("crypto")); const videoChecker = require("../../utils/videoChecker"); const mongoose = require("../../db/mongoose"); const conn = mongoose.connection; -const createThumbnail = require("./utils/createThumbnail"); +const createThumbnail = require("./utils/createThumbnail.ss"); const Thumbnail = require("../../models/thumbnail"); const ObjectID = require('mongodb').ObjectID; const NotAuthorizedError = require("../../utils/NotAuthorizedError"); diff --git a/dist/services/FileService/indexnew.js b/dist/services/FileService/indexnew.js index cc49a43..8a06593 100644 --- a/dist/services/FileService/indexnew.js +++ b/dist/services/FileService/indexnew.js @@ -13,7 +13,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); const imageChecker = require("../../utils/imageChecker"); -const crypto_1 = __importDefault(require("crypto")); const videoChecker = require("../../utils/videoChecker"); const mongoose = require("../../db/mongoose"); const conn = mongoose.connection; @@ -39,19 +38,6 @@ const dbUtilsFile = new index_1.default(); const dbUtilsFolder = new DbUtilFolder(); class MongoFileService { constructor() { - this.getThumbnail = (user, id) => __awaiter(this, void 0, void 0, function* () { - const password = user.getEncryptionKey(); - const thumbnail = yield thumbnail_1.default.findById(id); - if (thumbnail.owner !== user._id.toString()) { - throw new NotAuthorizedError_1.default('Thumbnail Unauthorized Error'); - } - const iv = thumbnail.data.slice(0, 16); - const chunk = thumbnail.data.slice(16); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv("aes256", CIPHER_KEY, iv); - const decryptedThumbnail = Buffer.concat([decipher.update(chunk), decipher.final()]); - return decryptedThumbnail; - }); this.removePublicOneTimeLink = (currentFile) => __awaiter(this, void 0, void 0, function* () { const fileID = currentFile._id; if (currentFile.metadata.linkType === "one") { diff --git a/dist/services/FileService/utils/createThumbnail.js b/dist/services/FileService/utils/createThumbnail.js index 0ccf56f..bef3ef3 100644 --- a/dist/services/FileService/utils/createThumbnail.js +++ b/dist/services/FileService/utils/createThumbnail.js @@ -8,15 +8,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); const mongoose = require("../../../db/mongoose"); const conn = mongoose.connection; const crypto = require("crypto"); const env = require("../../../enviroment/env"); -const Thumbnail = require("../../../models/thumbnail"); +const thumbnail_1 = __importDefault(require("../../../models/thumbnail")); const ObjectID = require('mongodb').ObjectID; const sharp = require("sharp"); const concat = require("concat-stream"); -const createThumbnail = (file, filename, user) => __awaiter(void 0, void 0, void 0, function* () { +const createThumbnail = (file, filename, user) => { return new Promise((resolve) => { const password = user.getEncryptionKey(); let CIPHER_KEY = crypto.createHash('sha256').update(password).digest(); @@ -36,10 +40,9 @@ const createThumbnail = (file, filename, user) => __awaiter(void 0, void 0, void try { const concatStream = concat((bufferData) => __awaiter(void 0, void 0, void 0, function* () { const thumbnailIV = crypto.randomBytes(16); - //CIPHER_KEY = crypto.createHash('sha256').update(process.env.newPassword).digest() const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); - bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); //thumbnailCipher.update(bufferData) - const thumbnailModel = new Thumbnail({ name: filename, owner: user._id, data: bufferData }); + bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); + const thumbnailModel = new thumbnail_1.default({ name: filename, owner: user._id, data: bufferData }); yield thumbnailModel.save(); let updatedFile = yield conn.db.collection("fs.files") .findOneAndUpdate({ "_id": file._id }, { "$set": { "metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id } }); @@ -61,5 +64,5 @@ const createThumbnail = (file, filename, user) => __awaiter(void 0, void 0, void resolve(file); } }); -}); -module.exports = createThumbnail; +}; +exports.default = createThumbnail; diff --git a/dist/services/UserService/index.js b/dist/services/UserService/index.js index 2984442..89b6d61 100644 --- a/dist/services/UserService/index.js +++ b/dist/services/UserService/index.js @@ -8,7 +8,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; -const User = require("../../models/user"); +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const user_1 = __importDefault(require("../../models/user")); const bcrypt = require("bcrypt"); const crypto = require("crypto"); const NotFoundError = require("../../utils/NotFoundError"); @@ -18,7 +22,7 @@ const UserService = function () { this.login = (userData) => __awaiter(this, void 0, void 0, function* () { const email = userData.email; const password = userData.password; - const user = yield User.findByCreds(email, password); + const user = yield user_1.default.findByCreds(email, password); const token = yield user.generateAuthToken(); if (!user || !token) throw new NotFoundError("Login User Not Found Error"); @@ -37,7 +41,7 @@ const UserService = function () { }); this.create = (userData) => __awaiter(this, void 0, void 0, function* () { console.log("Create"); - const user = new User(userData); + const user = new user_1.default(userData); yield user.save(); yield user.generateEncryptionKeys(); const token = yield user.generateAuthToken(); From 46e15be8816433bdd897b9a1e02836e29d42f0cc Mon Sep 17 00:00:00 2001 From: subnub Date: Wed, 15 Apr 2020 03:26:29 -0400 Subject: [PATCH 003/129] Started seperating chunks, and file metadata services, cleaned up many functions that rely on the promise constuctor --- backend/controllers/file.ts | 34 +- backend/express-routers/file.ts | 2 +- backend/models/user.ts | 39 +- backend/services/ChunkService/MongoService.ts | 396 +++++-------- .../ChunkService/utils/awaitStream.ts | 28 + .../ChunkService/utils/awaitUploadStream.ts | 44 ++ .../ChunkService/utils/getBusboyData.ts | 33 ++ .../{removeChunks.js => removeChunks.ts} | 10 +- .../{imageChecker.js => imageChecker.ts} | 10 +- .../{videoChecker.js => videoChecker.ts} | 6 +- dist/controllers/file.js | 37 +- dist/express-routers/file.js | 2 +- dist/models/user.js | 36 +- dist/services/ChunkService/MongoService.js | 551 +++++++++++------- .../ChunkService/utils/awaitStream.js | 25 + .../ChunkService/utils/awaitUploadStream.js | 35 ++ .../ChunkService/utils/getBusboyData.js | 27 + .../FileService/utils/removeChunks.js | 5 +- dist/utils/imageChecker.js | 11 +- dist/utils/videoChecker.js | 5 +- 20 files changed, 800 insertions(+), 536 deletions(-) create mode 100644 backend/services/ChunkService/utils/awaitStream.ts create mode 100644 backend/services/ChunkService/utils/awaitUploadStream.ts create mode 100644 backend/services/ChunkService/utils/getBusboyData.ts rename backend/services/FileService/utils/{removeChunks.js => removeChunks.ts} (71%) rename backend/utils/{imageChecker.js => imageChecker.ts} (60%) rename backend/utils/{videoChecker.js => videoChecker.ts} (84%) create mode 100644 dist/services/ChunkService/utils/awaitStream.js create mode 100644 dist/services/ChunkService/utils/awaitUploadStream.js create mode 100644 dist/services/ChunkService/utils/getBusboyData.js diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index 0be8d10..a7b48d8 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -432,32 +432,32 @@ class FileController { // } // } - // async streamVideo(req: RequestType, res: Response) { + async streamVideo(req: RequestType, res: Response) { - // if (!req.auth || !req.user) { - // return; - // } + if (!req.auth || !req.user) { + return; + } - // try { + try { - // const user = req.user; - // const fileID = req.params.id; - // const headers = req.headers; + const user = req.user; + const fileID = req.params.id; + const headers = req.headers; - // console.log("stream request", req.params.id) + console.log("stream request", req.params.id) - // await fileService.streamVideo(user, fileID, headers, res); + await mongoService.streamVideo(user, fileID, headers, res); - // } catch (e) { + } catch (e) { - // const code = e.code || 500; - // const message = e.message || e; + const code = e.code || 500; + const message = e.message || e; - // console.log(message, e); - // res.status(code).send(); - // } + console.log(message, e); + res.status(code).send(); + } - // } + } async downloadFile(req: RequestType, res: Response) { diff --git a/backend/express-routers/file.ts b/backend/express-routers/file.ts index d745ef4..bb5e22c 100644 --- a/backend/express-routers/file.ts +++ b/backend/express-routers/file.ts @@ -34,7 +34,7 @@ router.get("/file-service/download/get-token-video", auth, fileController.getDow //router.get("/file-service/stream-video-transcoded/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamTranscodedVideo); -//router.get("/file-service/stream-video/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamVideo); +router.get("/file-service/stream-video/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamVideo); router.get("/file-service/download/:id/:tempToken", tempAuth, fileController.downloadFile); diff --git a/backend/models/user.ts b/backend/models/user.ts index fe64aea..3ac9450 100644 --- a/backend/models/user.ts +++ b/backend/models/user.ts @@ -68,7 +68,7 @@ export interface UserInterface extends Document { publicKey?: string, token?:string, - getEncryptionKey: () => Buffer; + getEncryptionKey: () => Buffer | undefined; generateTempAuthToken: () => any; generateTempAuthTokenVideo: (cookie: string) => any; encryptToken: (tempToken: any, key: any, publicKey: any) => any; @@ -194,25 +194,32 @@ userSchema.methods.generateEncryptionKeys = async function() { userSchema.methods.getEncryptionKey = function() { - const user = this; - const userPassword = user.password; - const masterEncryptedText = user.privateKey; - const masterPassword = env.key; - const iv = Buffer.from(user.publicKey, "hex"); + try { + const user = this; + const userPassword = user.password; + const masterEncryptedText = user.privateKey; + const masterPassword = env.key; + const iv = Buffer.from(user.publicKey, "hex"); - const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); - const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); + const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); + const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); - const unhexMasterText = Buffer.from(masterEncryptedText, "hex"); - const masterDecipher = crypto.createDecipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv) - let masterDecrypted = masterDecipher.update(unhexMasterText); - masterDecrypted = Buffer.concat([masterDecrypted, masterDecipher.final()]) + const unhexMasterText = Buffer.from(masterEncryptedText, "hex"); + const masterDecipher = crypto.createDecipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv) + let masterDecrypted = masterDecipher.update(unhexMasterText); + masterDecrypted = Buffer.concat([masterDecrypted, masterDecipher.final()]) - let decipher = crypto.createDecipheriv('aes-256-cbc', USER_CIPHER_KEY, iv); - let decrypted = decipher.update(masterDecrypted); - decrypted = Buffer.concat([decrypted, decipher.final()]); + let decipher = crypto.createDecipheriv('aes-256-cbc', USER_CIPHER_KEY, iv); + let decrypted = decipher.update(masterDecrypted); + decrypted = Buffer.concat([decrypted, decipher.final()]); - return decrypted; + return decrypted; + + } catch (e) { + + console.log("Get Encryption Key Error"); + return undefined; + } } userSchema.methods.changeEncryptionKey = async function(randomKey: string) { diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index ecf2449..bbd7ef8 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -1,20 +1,26 @@ import mongoose from "../../db/mongoose"; -import {Response, Request} from "express"; +import { Response, Request } from "express"; const conn = mongoose.connection; -const env = require("../../enviroment/env"); const DbUtilFolder = require("../../db/utils/folderUtils"); import DbUtilFile from "../../db/utils/fileUtils/index"; import crypto from "crypto"; -const videoChecker = require("../../utils/videoChecker"); -const imageChecker = require("../../utils/imageChecker"); -const ObjectID = require('mongodb').ObjectID +import videoChecker from "../../utils/videoChecker" +import imageChecker from "../../utils/imageChecker" +import { ObjectID } from "mongodb"; import createThumbnail from "../FileService/utils/createThumbnail"; import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; import NotAuthorizedError from "../../utils/NotAuthorizedError"; +import InternalServerError from "../../utils/InternalServerError"; +import NotFoundError from "../../utils/NotFoundError"; +import {GridFSBucketWriteStream} from "mongodb"; +import awaitStream from "./utils/awaitStream"; +import awaitUploadStream from "./utils/awaitUploadStream"; import User, { UserInterface } from "../../models/user"; import { FileInterface } from "../../models/file"; -const removeChunks = require("../FileService/utils/removeChunks"); +import { Stream } from "stream"; +import removeChunks from "../FileService/utils/removeChunks"; +import getBusboyData from "./utils/getBusboyData"; const dbUtilsFile = new DbUtilFile(); const dbUtilsFolder = new DbUtilFolder(); @@ -25,171 +31,93 @@ class MongoService { } - uploadFile = (user: UserInterface, busboy: any, req: Request) => { + uploadFile = async(user: UserInterface, busboy: any, req: Request) => { - return new Promise((resolve, reject) => { + const password = user.getEncryptionKey(); - const password = user.getEncryptionKey(); + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") - let bucketStream: any; + let bucketStream: GridFSBucketWriteStream; - const initVect = crypto.randomBytes(16); + const initVect = crypto.randomBytes(16); - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect); + const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect); - cipher.on("error", async(e) => { - await removeChunks(bucketStream); - reject({ - message: "File service upload cipher error", - exception: e, - code: 500 - }) - }) + const {file, filename, formData} = await getBusboyData(busboy); - const formData = new Map(); - - busboy.on("error", async(e: Error) => { - await removeChunks(bucketStream); - reject({ - message: "File service upload busboy error", - exception: e, - code: 500 - }) - }) - - busboy.on("file", async(_: string, file: any, filename: string) => { - - const parent = formData.get("parent") || "/" - const parentList = formData.get("parentList") || "/"; - const size = formData.get("size") || "" - let hasThumbnail = false; - let thumbnailID = "" - const isVideo = videoChecker(filename) + const parent = formData.get("parent") || "/" + const parentList = formData.get("parentList") || "/"; + const size = formData.get("size") || "" + let hasThumbnail = false; + let thumbnailID = "" + const isVideo = videoChecker(filename) - const metadata = { - owner: user._id, - parent, - parentList, - hasThumbnail, - thumbnailID, - isVideo, - size, - IV: initVect - } + const metadata = { + owner: user._id, + parent, + parentList, + hasThumbnail, + thumbnailID, + isVideo, + size, + IV: initVect + } - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); + let bucket = new mongoose.mongo.GridFSBucket(conn.db); + bucketStream = bucket.openUploadStream(filename, {metadata}); - bucketStream = bucket.openUploadStream(filename, {metadata}) + const finishedFile = await awaitUploadStream(file.pipe(cipher), bucketStream, req) as FileInterface; - bucketStream.on("error", async(e: Error) => { - await removeChunks(bucketStream); - reject({ - message: "Cannot upload file to database", - exception: e, - code: 500 - }) - }) + const imageCheck = imageChecker(filename); + + if (finishedFile.length < 15728640 && imageCheck) { - req.on("aborted", async() => { + const updatedFile = await createThumbnail(finishedFile, filename, user); - console.log("Upload Request Cancelling..."); + return updatedFile; + - await removeChunks(bucketStream); - }) + } else { - file.pipe(cipher).pipe(bucketStream); - - bucketStream.on("finish", (file: FileInterface) => { - - const imageCheck = imageChecker(filename); - - if (file.length < 15728640 && imageCheck) { - - createThumbnail(file, filename, user).then((updatedFile: FileInterface) => { - resolve(updatedFile); - }) - - } else { - - resolve(file); - } - - }) - - }).on("field", (field: any, val: any) => { - - formData.set(field, val) - - }) - - }) + return finishedFile; + } } - downloadFile = (user: UserInterface, fileID: string, res: Response) => { + downloadFile = async(user: UserInterface, fileID: string, res: Response) => { - return new Promise((resolve, reject) => { + const currentFile = await dbUtilsFile.getFileInfo(fileID, user._id); - dbUtilsFile.getFileInfo(fileID, user._id).then((currentFile: FileInterface) => { + if (!currentFile) throw new NotFoundError("Download File Not Found"); - if (!currentFile) { + const password = user.getEncryptionKey(); - reject({ - code: 401, - message: "Download File Not Found Error", - exception: undefined - }) + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") - } else { + const bucket = new mongoose.mongo.GridFSBucket(conn.db); - const password: Buffer = user.getEncryptionKey(); + const IV = currentFile.metadata.IV.buffer + const readStream = bucket.openDownloadStream(new ObjectID(fileID)); - const bucket = new mongoose.mongo.GridFSBucket(conn.db); + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - const IV = currentFile.metadata.IV.buffer - const readStream = bucket.openDownloadStream(ObjectID(fileID)); + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - readStream.on("error", (e: Error) => { - reject({ - code: 500, - message: "File service download decipher error", - exception: e - }) - }) + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); + res.set('Content-Length', currentFile.metadata.size.toString()); - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service download decipher error", - exception: e - }) - }) - - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); - res.set('Content-Length', currentFile.metadata.size.toString()); - - readStream.pipe(decipher).pipe(res).on("finish", () => { - resolve(); - }); - } - - }) - }) + await awaitStream(readStream.pipe(decipher), res); } getThumbnail = async(user: UserInterface, id: string) => { - const password: Buffer = user.getEncryptionKey(); + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") const thumbnail = await Thumbnail.findById(id) as ThumbnailInterface; @@ -211,125 +139,115 @@ class MongoService { return decryptedThumbnail; } - getFullThumbnail = (user: UserInterface, fileID: string, res: Response) => { + getFullThumbnail = async(user: UserInterface, fileID: string, res: Response) => { - return new Promise((resolve, reject) => { + const userID = user._id; - const userID = user._id; + const file: FileInterface = await dbUtilsFile.getFileInfo(fileID, userID); - dbUtilsFile.getFileInfo(fileID, userID).then((file) => { + if (!file) throw new NotFoundError("File Thumbnail Not Found"); - if (!file) { - reject({ - code: 401, - message: "File For Full Thumbnail Not Found", - exception: undefined - }) - } + const bucket = new mongoose.mongo.GridFSBucket(conn.db); + const password = user.getEncryptionKey(); + const IV = file.metadata.IV.buffer + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + const readStream = bucket.openDownloadStream(new ObjectID(fileID)) + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }) - const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer - - const readStream = bucket.openDownloadStream(ObjectID(fileID)) - - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service Full Thumbnail stream error", - exception: e - }) - }) - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service Full Thumbnail decipher error", - exception: e - }) - }) + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size); - - readStream.pipe(decipher).pipe(res).on("finish", async() => { - console.log("Sent Full Thumbnail"); - resolve(); - }); - }); - }) + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + console.log("Sending Full Thumbnail...") + await awaitStream(readStream.pipe(decipher), res); + console.log("Full thumbnail sent"); } - getPublicDownload = (fileID: string, tempToken: any, res: Response) => { + getPublicDownload = async(fileID: string, tempToken: any, res: Response) => { - return new Promise((resolve, reject) => { + const file: FileInterface = await dbUtilsFile.getPublicFile(fileID); - dbUtilsFile.getPublicFile(fileID).then(async(file: FileInterface) => { + if (!file || !file.metadata.link || file.metadata.link !== tempToken) { + throw new NotAuthorizedError("File Not Public"); + } - if (!file || !file.metadata.link || file.metadata.link !== tempToken) { - reject({ - code: 401, - message: "File not public/Not found", - exception: undefined - }) - } else { + const user = await User.findById(file.metadata.owner) as UserInterface; - const user = await User.findById(file.metadata.owner) as UserInterface; + const password = user.getEncryptionKey(); - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }) - - const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer + if (!password) throw new NotAuthorizedError("Invalid Encryption Key"); + + const bucket = new mongoose.mongo.GridFSBucket(conn.db); + + const IV = file.metadata.IV.buffer - const readStream = bucket.openDownloadStream(ObjectID(fileID)) + const readStream = bucket.openDownloadStream(new ObjectID(fileID)) - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service public download decipher error", - exception: e - }) - }) - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service public download decipher error", - exception: e - }) - }) - - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size.toString()); - - readStream.pipe(decipher).pipe(res).on("finish", async() => { - - if (file.metadata.linkType === "one") { - console.log("removing public link"); - await dbUtilsFile.removeOneTimePublicLink(fileID); - } - resolve(); - }); - - } + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - }) - }) + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + + await awaitStream(readStream.pipe(decipher), res); + + if (file.metadata.linkType === "one") { + console.log("removing public link"); + await dbUtilsFile.removeOneTimePublicLink(fileID); + } + } + + streamVideo = async(user: UserInterface, fileID: string, headers: any, res: Response) => { + + const userID = user._id; + const currentFile = await dbUtilsFile.getFileInfo(fileID, userID); + + if (!currentFile) throw new NotFoundError("Video File Not Found"); + + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + const fileSize = currentFile.metadata.size; + + const range = headers.range + const parts = range.replace(/bytes=/, "").split("-") + let start = parseInt(parts[0], 10) + let end = parts[1] + ? parseInt(parts[1], 10) + : fileSize-1 + const chunksize = (end-start)+1 + const IV = currentFile.metadata.IV.buffer + + let head = { + 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, + 'Accept-Ranges': 'bytes', + 'Content-Length': chunksize, + 'Content-Type': 'video/mp4'} + + const bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 + }); + + const readStream = bucket.openDownloadStream(new ObjectID(fileID), { + start: start, + end: end + }); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + res.writeHead(206, head); + + await awaitStream(readStream.pipe(decipher), res); } } diff --git a/backend/services/ChunkService/utils/awaitStream.ts b/backend/services/ChunkService/utils/awaitStream.ts new file mode 100644 index 0000000..682b671 --- /dev/null +++ b/backend/services/ChunkService/utils/awaitStream.ts @@ -0,0 +1,28 @@ +const awaitStream = (inputSteam: any, outputStream: any) => { + + return new Promise((resolve, reject) => { + + inputSteam.on("error", (e: Error) => { + reject({ + message: "Await Stream Input Error", + code: 500, + error: e + }) + }) + + outputStream.on("error", (e: Error) => { + reject({ + message: "Await Stream Output Error", + code: 500, + error: e + }) + }) + + inputSteam.pipe(outputStream).on("finish", (data: T) => { + console.log("await stream finished") + resolve(data); + }) + }) +} + +export default awaitStream; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/awaitUploadStream.ts b/backend/services/ChunkService/utils/awaitUploadStream.ts new file mode 100644 index 0000000..5a7f0d3 --- /dev/null +++ b/backend/services/ChunkService/utils/awaitUploadStream.ts @@ -0,0 +1,44 @@ +import removeChunks from "../../FileService/utils/removeChunks"; +import {Request} from "express" + +const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request) => { + + return new Promise((resolve, reject) => { + + inputSteam.on("error", (e: Error) => { + + removeChunks(outputStream); + + reject({ + message: "Await Stream Input Error", + code: 500, + error: e + }) + }) + + outputStream.on("error", (e: Error) => { + + removeChunks(outputStream); + + reject({ + message: "Await Stream Output Error", + code: 500, + error: e + }) + }) + + req.on("aborted", () => { + + console.log("Upload Request Cancelling..."); + + removeChunks(outputStream); + }) + + inputSteam.pipe(outputStream).on("finish", (data: T) => { + console.log("await stream finished") + resolve(data); + }) + }) +} + +export default awaitUploadStream; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/getBusboyData.ts b/backend/services/ChunkService/utils/getBusboyData.ts new file mode 100644 index 0000000..0166e6f --- /dev/null +++ b/backend/services/ChunkService/utils/getBusboyData.ts @@ -0,0 +1,33 @@ +import { Stream } from "stream"; + +const getBusboyData = (busboy: any) => { + + type dataType = { + file: Stream, + filename: string, + formData: Map + } + + return new Promise((resolve, reject) => { + + const formData = new Map(); + + busboy.on("field", (field: any, val: any) => { + + formData.set(field, val) + + }); + + busboy.on("file", async(_: string, file: Stream, filename: string) => { + + resolve({ + file, + filename, + formData + }) + }) + + }) +} + +export default getBusboyData; \ No newline at end of file diff --git a/backend/services/FileService/utils/removeChunks.js b/backend/services/FileService/utils/removeChunks.ts similarity index 71% rename from backend/services/FileService/utils/removeChunks.js rename to backend/services/FileService/utils/removeChunks.ts index 52bc691..d27e872 100644 --- a/backend/services/FileService/utils/removeChunks.js +++ b/backend/services/FileService/utils/removeChunks.ts @@ -1,11 +1,13 @@ +import { GridFSBucketWriteStream } from "mongodb"; + const DbUtilsFile = require("../../../db/utils/fileUtils"); const dbUtilsFile = new DbUtilsFile(); -const removeChunks = async(bucketStream) => { +const removeChunks = async(bucketStream: GridFSBucketWriteStream) => { + + const uploadID = bucketStream.id as string; try { - - const uploadID = bucketStream.id; if (!uploadID || uploadID.length === 0) { @@ -23,4 +25,4 @@ const removeChunks = async(bucketStream) => { } } -module.exports = removeChunks; \ No newline at end of file +export default removeChunks; \ No newline at end of file diff --git a/backend/utils/imageChecker.js b/backend/utils/imageChecker.ts similarity index 60% rename from backend/utils/imageChecker.js rename to backend/utils/imageChecker.ts index 2df835e..9c6c62e 100644 --- a/backend/utils/imageChecker.js +++ b/backend/utils/imageChecker.ts @@ -1,4 +1,4 @@ -const videoExtList = [ +const imageExtList = [ "jpeg", "jpg", "png", @@ -8,7 +8,7 @@ const videoExtList = [ "bmp" ] -const videoChecker = (filename) => { +const imageChecker = (filename: string) => { if (filename.length < 1 || !filename.includes(".")) { @@ -17,15 +17,15 @@ const videoChecker = (filename) => { const extSplit = filename.split("."); - if (extSplit < 1) { + if (extSplit.length <= 1) { return false; } const ext = extSplit[extSplit.length - 1]; - return videoExtList.includes(ext.toLowerCase()); + return imageExtList.includes(ext.toLowerCase()); } -module.exports = videoChecker; \ No newline at end of file +export default imageChecker; \ No newline at end of file diff --git a/backend/utils/videoChecker.js b/backend/utils/videoChecker.ts similarity index 84% rename from backend/utils/videoChecker.js rename to backend/utils/videoChecker.ts index e3c31f6..28bd071 100644 --- a/backend/utils/videoChecker.js +++ b/backend/utils/videoChecker.ts @@ -34,7 +34,7 @@ const videoExtList = [ "yuv" ] -const videoChecker = (filename) => { +const videoChecker = (filename: string) => { if (filename.length < 1 || !filename.includes(".")) { @@ -43,7 +43,7 @@ const videoChecker = (filename) => { const extSplit = filename.split("."); - if (extSplit < 1) { + if (extSplit.length <= 1) { return false; } @@ -54,4 +54,4 @@ const videoChecker = (filename) => { } -module.exports = videoChecker; \ No newline at end of file +export default videoChecker; \ No newline at end of file diff --git a/dist/controllers/file.js b/dist/controllers/file.js index 5128b84..79a6eb3 100644 --- a/dist/controllers/file.js +++ b/dist/controllers/file.js @@ -312,23 +312,26 @@ class FileController { // res.status(code).send(); // } // } - // async streamVideo(req: RequestType, res: Response) { - // if (!req.auth || !req.user) { - // return; - // } - // try { - // const user = req.user; - // const fileID = req.params.id; - // const headers = req.headers; - // console.log("stream request", req.params.id) - // await fileService.streamVideo(user, fileID, headers, res); - // } catch (e) { - // const code = e.code || 500; - // const message = e.message || e; - // console.log(message, e); - // res.status(code).send(); - // } - // } + streamVideo(req, res) { + return __awaiter(this, void 0, void 0, function* () { + if (!req.auth || !req.user) { + return; + } + try { + const user = req.user; + const fileID = req.params.id; + const headers = req.headers; + console.log("stream request", req.params.id); + yield mongoService.streamVideo(user, fileID, headers, res); + } + catch (e) { + const code = e.code || 500; + const message = e.message || e; + console.log(message, e); + res.status(code).send(); + } + }); + } downloadFile(req, res) { return __awaiter(this, void 0, void 0, function* () { if (!req.auth || !req.user) { diff --git a/dist/express-routers/file.js b/dist/express-routers/file.js index 3bc151e..40772e5 100644 --- a/dist/express-routers/file.js +++ b/dist/express-routers/file.js @@ -22,7 +22,7 @@ router.get("/file-service/list", auth, fileController.getList); router.get("/file-service/download/get-token", auth, fileController.getDownloadToken); router.get("/file-service/download/get-token-video", auth, fileController.getDownloadTokenVideo); //router.get("/file-service/stream-video-transcoded/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamTranscodedVideo); -//router.get("/file-service/stream-video/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamVideo); +router.get("/file-service/stream-video/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamVideo); router.get("/file-service/download/:id/:tempToken", tempAuth, fileController.downloadFile); router.get("/file-service/suggested-list", auth, fileController.getSuggestedList); router.patch("/file-service/make-public/:id", auth, fileController.makePublic); diff --git a/dist/models/user.js b/dist/models/user.js index e0ec58b..08747d4 100644 --- a/dist/models/user.js +++ b/dist/models/user.js @@ -150,21 +150,27 @@ userSchema.methods.generateEncryptionKeys = function () { }); }; userSchema.methods.getEncryptionKey = function () { - const user = this; - const userPassword = user.password; - const masterEncryptedText = user.privateKey; - const masterPassword = env.key; - const iv = Buffer.from(user.publicKey, "hex"); - const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); - const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); - const unhexMasterText = Buffer.from(masterEncryptedText, "hex"); - const masterDecipher = crypto.createDecipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv); - let masterDecrypted = masterDecipher.update(unhexMasterText); - masterDecrypted = Buffer.concat([masterDecrypted, masterDecipher.final()]); - let decipher = crypto.createDecipheriv('aes-256-cbc', USER_CIPHER_KEY, iv); - let decrypted = decipher.update(masterDecrypted); - decrypted = Buffer.concat([decrypted, decipher.final()]); - return decrypted; + try { + const user = this; + const userPassword = user.password; + const masterEncryptedText = user.privateKey; + const masterPassword = env.key; + const iv = Buffer.from(user.publicKey, "hex"); + const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); + const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); + const unhexMasterText = Buffer.from(masterEncryptedText, "hex"); + const masterDecipher = crypto.createDecipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv); + let masterDecrypted = masterDecipher.update(unhexMasterText); + masterDecrypted = Buffer.concat([masterDecrypted, masterDecipher.final()]); + let decipher = crypto.createDecipheriv('aes-256-cbc', USER_CIPHER_KEY, iv); + let decrypted = decipher.update(masterDecrypted); + decrypted = Buffer.concat([decrypted, decipher.final()]); + return decrypted; + } + catch (e) { + console.log("Get Encryption Key Error"); + return undefined; + } }; userSchema.methods.changeEncryptionKey = function (randomKey) { return __awaiter(this, void 0, void 0, function* () { diff --git a/dist/services/ChunkService/MongoService.js b/dist/services/ChunkService/MongoService.js index 47cd435..fda3cfb 100644 --- a/dist/services/ChunkService/MongoService.js +++ b/dist/services/ChunkService/MongoService.js @@ -14,139 +14,188 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); const mongoose_1 = __importDefault(require("../../db/mongoose")); const conn = mongoose_1.default.connection; -const env = require("../../enviroment/env"); const DbUtilFolder = require("../../db/utils/folderUtils"); const index_1 = __importDefault(require("../../db/utils/fileUtils/index")); const crypto_1 = __importDefault(require("crypto")); -const videoChecker = require("../../utils/videoChecker"); -const imageChecker = require("../../utils/imageChecker"); -const ObjectID = require('mongodb').ObjectID; +const videoChecker_1 = __importDefault(require("../../utils/videoChecker")); +const imageChecker_1 = __importDefault(require("../../utils/imageChecker")); +const mongodb_1 = require("mongodb"); const createThumbnail_1 = __importDefault(require("../FileService/utils/createThumbnail")); const thumbnail_1 = __importDefault(require("../../models/thumbnail")); const NotAuthorizedError_1 = __importDefault(require("../../utils/NotAuthorizedError")); +const NotFoundError_1 = __importDefault(require("../../utils/NotFoundError")); +const awaitStream_1 = __importDefault(require("./utils/awaitStream")); +const awaitUploadStream_1 = __importDefault(require("./utils/awaitUploadStream")); const user_1 = __importDefault(require("../../models/user")); -const removeChunks = require("../FileService/utils/removeChunks"); +const getBusboyData_1 = __importDefault(require("./utils/getBusboyData")); const dbUtilsFile = new index_1.default(); const dbUtilsFolder = new DbUtilFolder(); class MongoService { constructor() { - this.uploadFile = (user, busboy, req) => { - return new Promise((resolve, reject) => { - const password = user.getEncryptionKey(); - let bucketStream; - const initVect = crypto_1.default.randomBytes(16); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const cipher = crypto_1.default.createCipheriv('aes256', CIPHER_KEY, initVect); - cipher.on("error", (e) => __awaiter(this, void 0, void 0, function* () { - yield removeChunks(bucketStream); - reject({ - message: "File service upload cipher error", - exception: e, - code: 500 - }); - })); - const formData = new Map(); - busboy.on("error", (e) => __awaiter(this, void 0, void 0, function* () { - yield removeChunks(bucketStream); - reject({ - message: "File service upload busboy error", - exception: e, - code: 500 - }); - })); - busboy.on("file", (_, file, filename) => __awaiter(this, void 0, void 0, function* () { - const parent = formData.get("parent") || "/"; - const parentList = formData.get("parentList") || "/"; - const size = formData.get("size") || ""; - let hasThumbnail = false; - let thumbnailID = ""; - const isVideo = videoChecker(filename); - const metadata = { - owner: user._id, - parent, - parentList, - hasThumbnail, - thumbnailID, - isVideo, - size, - IV: initVect - }; - let bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); - bucketStream = bucket.openUploadStream(filename, { metadata }); - bucketStream.on("error", (e) => __awaiter(this, void 0, void 0, function* () { - yield removeChunks(bucketStream); - reject({ - message: "Cannot upload file to database", - exception: e, - code: 500 - }); - })); - req.on("aborted", () => __awaiter(this, void 0, void 0, function* () { - console.log("Upload Request Cancelling..."); - yield removeChunks(bucketStream); - })); - file.pipe(cipher).pipe(bucketStream); - bucketStream.on("finish", (file) => { - const imageCheck = imageChecker(filename); - if (file.length < 15728640 && imageCheck) { - createThumbnail_1.default(file, filename, user).then((updatedFile) => { - resolve(updatedFile); - }); - } - else { - resolve(file); - } - }); - })).on("field", (field, val) => { - formData.set(field, val); - }); - }); - }; - this.downloadFile = (user, fileID, res) => { - return new Promise((resolve, reject) => { - dbUtilsFile.getFileInfo(fileID, user._id).then((currentFile) => { - if (!currentFile) { - reject({ - code: 401, - message: "Download File Not Found Error", - exception: undefined - }); - } - else { - const password = user.getEncryptionKey(); - const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db); - const IV = currentFile.metadata.IV.buffer; - const readStream = bucket.openDownloadStream(ObjectID(fileID)); - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service download decipher error", - exception: e - }); - }); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service download decipher error", - exception: e - }); - }); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); - res.set('Content-Length', currentFile.metadata.size.toString()); - readStream.pipe(decipher).pipe(res).on("finish", () => { - resolve(); - }); - } - }); - }); - }; + this.uploadFile = (user, busboy, req) => __awaiter(this, void 0, void 0, function* () { + const password = user.getEncryptionKey(); + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); + let bucketStream; + const initVect = crypto_1.default.randomBytes(16); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const cipher = crypto_1.default.createCipheriv('aes256', CIPHER_KEY, initVect); + const { file, filename, formData } = yield getBusboyData_1.default(busboy); + const parent = formData.get("parent") || "/"; + const parentList = formData.get("parentList") || "/"; + const size = formData.get("size") || ""; + let hasThumbnail = false; + let thumbnailID = ""; + const isVideo = videoChecker_1.default(filename); + const metadata = { + owner: user._id, + parent, + parentList, + hasThumbnail, + thumbnailID, + isVideo, + size, + IV: initVect + }; + let bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db); + bucketStream = bucket.openUploadStream(filename, { metadata }); + const finishedFile = yield awaitUploadStream_1.default(file.pipe(cipher), bucketStream, req); + const imageCheck = imageChecker_1.default(filename); + if (finishedFile.length < 15728640 && imageCheck) { + const updatedFile = yield createThumbnail_1.default(finishedFile, filename, user); + return updatedFile; + } + else { + return finishedFile; + } + // file.pipe(cipher).pipe(bucketStream); + // bucketStream.on("finish", (finishedFile: FileInterface) => { + // const imageCheck = imageChecker(filename); + // if (finishedFile.length < 15728640 && imageCheck) { + // createThumbnail(finishedFile, filename, user).then((updatedFile: FileInterface) => { + // resolve(updatedFile); + // }) + // } else { + // resolve(finishedFile); + // } + // }) + // return new Promise((resolve, reject) => { + // const password = user.getEncryptionKey(); + // if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + // let bucketStream: GridFSBucketWriteStream; + // const initVect = crypto.randomBytes(16); + // const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + // const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect); + // const formData = new Map(); + // busboy.on("file", async(_: string, file: Stream, filename: string) => { + // const parent = formData.get("parent") || "/" + // const parentList = formData.get("parentList") || "/"; + // const size = formData.get("size") || "" + // let hasThumbnail = false; + // let thumbnailID = "" + // const isVideo = videoChecker(filename) + // const metadata = { + // owner: user._id, + // parent, + // parentList, + // hasThumbnail, + // thumbnailID, + // isVideo, + // size, + // IV: initVect + // } + // let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + // chunkSizeBytes: 1024 * 255 + // }); + // bucketStream = bucket.openUploadStream(filename, {metadata}) + // bucketStream.on("error", async(e: Error) => { + // await removeChunks(bucketStream); + // reject({ + // message: "Cannot upload file to database", + // exception: e, + // code: 500 + // }) + // }) + // req.on("aborted", async() => { + // console.log("Upload Request Cancelling..."); + // await removeChunks(bucketStream); + // }) + // file.pipe(cipher).pipe(bucketStream); + // bucketStream.on("finish", (finishedFile: FileInterface) => { + // const imageCheck = imageChecker(filename); + // if (finishedFile.length < 15728640 && imageCheck) { + // createThumbnail(finishedFile, filename, user).then((updatedFile: FileInterface) => { + // resolve(updatedFile); + // }) + // } else { + // resolve(finishedFile); + // } + // }) + // }).on("field", (field: any, val: any) => { + // formData.set(field, val) + // }) + // }) + }); + this.downloadFile = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { + const currentFile = yield dbUtilsFile.getFileInfo(fileID, user._id); + if (!currentFile) + throw new NotFoundError_1.default("Download File Not Found"); + const password = user.getEncryptionKey(); + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); + const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db); + const IV = currentFile.metadata.IV.buffer; + const readStream = bucket.openDownloadStream(new mongodb_1.ObjectID(fileID)); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); + res.set('Content-Length', currentFile.metadata.size.toString()); + yield awaitStream_1.default(readStream.pipe(decipher), res); + // return new Promise((resolve, reject) => { + // dbUtilsFile.getFileInfo(fileID, user._id).then((currentFile: FileInterface) => { + // if (!currentFile) { + // reject({ + // code: 401, + // message: "Download File Not Found Error", + // exception: undefined + // }) + // } else { + // const password = user.getEncryptionKey(); + // if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + // const bucket = new mongoose.mongo.GridFSBucket(conn.db); + // const IV = currentFile.metadata.IV.buffer + // const readStream = bucket.openDownloadStream(new ObjectID(fileID)); + // readStream.on("error", (e: Error) => { + // reject({ + // code: 500, + // message: "File service download decipher error", + // exception: e + // }) + // }) + // const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + // const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + // decipher.on("error", (e) => { + // reject({ + // code: 500, + // message: "File service download decipher error", + // exception: e + // }) + // }) + // res.set('Content-Type', 'binary/octet-stream'); + // res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); + // res.set('Content-Length', currentFile.metadata.size.toString()); + // readStream.pipe(decipher).pipe(res).on("finish", () => { + // resolve(); + // }); + // } + // }) + // }) + }); this.getThumbnail = (user, id) => __awaiter(this, void 0, void 0, function* () { const password = user.getEncryptionKey(); + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); const thumbnail = yield thumbnail_1.default.findById(id); if (thumbnail.owner !== user._id.toString()) { throw new NotAuthorizedError_1.default('Thumbnail Unauthorized Error'); @@ -158,97 +207,181 @@ class MongoService { const decryptedThumbnail = Buffer.concat([decipher.update(chunk), decipher.final()]); return decryptedThumbnail; }); - this.getFullThumbnail = (user, fileID, res) => { - return new Promise((resolve, reject) => { - const userID = user._id; - dbUtilsFile.getFileInfo(fileID, userID).then((file) => { - if (!file) { - reject({ - code: 401, - message: "File For Full Thumbnail Not Found", - exception: undefined - }); - } - const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }); - const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer; - const readStream = bucket.openDownloadStream(ObjectID(fileID)); - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service Full Thumbnail stream error", - exception: e - }); - }); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service Full Thumbnail decipher error", - exception: e - }); - }); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size); - readStream.pipe(decipher).pipe(res).on("finish", () => __awaiter(this, void 0, void 0, function* () { - console.log("Sent Full Thumbnail"); - resolve(); - })); - }); + this.getFullThumbnail = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { + const userID = user._id; + const file = yield dbUtilsFile.getFileInfo(fileID, userID); + if (!file) + throw new NotFoundError_1.default("File Thumbnail Not Found"); + const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db); + const password = user.getEncryptionKey(); + const IV = file.metadata.IV.buffer; + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); + const readStream = bucket.openDownloadStream(new mongodb_1.ObjectID(fileID)); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + console.log("Sending Full Thumbnail..."); + yield awaitStream_1.default(readStream.pipe(decipher), res); + console.log("Full thumbnail sent"); + // return new Promise((resolve, reject) => { + // const userID = user._id; + // dbUtilsFile.getFileInfo(fileID, userID).then((file) => { + // if (!file) { + // reject({ + // code: 401, + // message: "File For Full Thumbnail Not Found", + // exception: undefined + // }) + // } + // const bucket = new mongoose.mongo.GridFSBucket(conn.db, { + // chunkSizeBytes: 1024 * 255, + // }) + // const password = user.getEncryptionKey(); + // const IV = file.metadata.IV.buffer + // const readStream = bucket.openDownloadStream(new ObjectID(fileID)) + // readStream.on("error", (e) => { + // reject({ + // code: 500, + // message: "File service Full Thumbnail stream error", + // exception: e + // }) + // }) + // const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + // const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + // decipher.on("error", (e) => { + // reject({ + // code: 500, + // message: "File service Full Thumbnail decipher error", + // exception: e + // }) + // }) + // res.set('Content-Type', 'binary/octet-stream'); + // res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + // res.set('Content-Length', file.metadata.size); + // readStream.pipe(decipher).pipe(res).on("finish", () => { + // console.log("Sent Full Thumbnail"); + // resolve(); + // }); + // }); + // }) + }); + this.getPublicDownload = (fileID, tempToken, res) => __awaiter(this, void 0, void 0, function* () { + const file = yield dbUtilsFile.getPublicFile(fileID); + if (!file || !file.metadata.link || file.metadata.link !== tempToken) { + throw new NotAuthorizedError_1.default("File Not Public"); + } + const user = yield user_1.default.findById(file.metadata.owner); + const password = user.getEncryptionKey(); + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); + const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db); + const IV = file.metadata.IV.buffer; + const readStream = bucket.openDownloadStream(new mongodb_1.ObjectID(fileID)); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + yield awaitStream_1.default(readStream.pipe(decipher), res); + if (file.metadata.linkType === "one") { + console.log("removing public link"); + yield dbUtilsFile.removeOneTimePublicLink(fileID); + } + }); + this.streamVideo = (user, fileID, headers, res) => __awaiter(this, void 0, void 0, function* () { + const userID = user._id; + const currentFile = yield dbUtilsFile.getFileInfo(fileID, userID); + if (!currentFile) + throw new NotFoundError_1.default("Video File Not Found"); + const password = user.getEncryptionKey(); + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); + const fileSize = currentFile.metadata.size; + const range = headers.range; + const parts = range.replace(/bytes=/, "").split("-"); + let start = parseInt(parts[0], 10); + let end = parts[1] + ? parseInt(parts[1], 10) + : fileSize - 1; + const chunksize = (end - start) + 1; + const IV = currentFile.metadata.IV.buffer; + let head = { + 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, + 'Accept-Ranges': 'bytes', + 'Content-Length': chunksize, + 'Content-Type': 'video/mp4' + }; + const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 }); - }; - this.getPublicDownload = (fileID, tempToken, res) => { - return new Promise((resolve, reject) => { - dbUtilsFile.getPublicFile(fileID).then((file) => __awaiter(this, void 0, void 0, function* () { - if (!file || !file.metadata.link || file.metadata.link !== tempToken) { - reject({ - code: 401, - message: "File not public/Not found", - exception: undefined - }); - } - else { - const user = yield user_1.default.findById(file.metadata.owner); - const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }); - const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer; - const readStream = bucket.openDownloadStream(ObjectID(fileID)); - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service public download decipher error", - exception: e - }); - }); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service public download decipher error", - exception: e - }); - }); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size.toString()); - readStream.pipe(decipher).pipe(res).on("finish", () => __awaiter(this, void 0, void 0, function* () { - if (file.metadata.linkType === "one") { - console.log("removing public link"); - yield dbUtilsFile.removeOneTimePublicLink(fileID); - } - resolve(); - })); - } - })); + const readStream = bucket.openDownloadStream(new mongodb_1.ObjectID(fileID), { + start: start, + end: end }); - }; + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + res.writeHead(206, head); + yield awaitStream_1.default(readStream.pipe(decipher), res); + // return new Promise((resolve, reject) => { + // const userID = user._id; + // dbUtilsFile.getFileInfo(fileID, userID).then((currentFile: FileInterface) => { + // if (!currentFile) { + // reject({ + // code: 401, + // message: "Video Steam Not Found Error", + // exception: undefined + // }) + // } else { + // const password = user.getEncryptionKey(); + // if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + // const fileSize = currentFile.metadata.size; + // const range = headers.range + // const parts = range.replace(/bytes=/, "").split("-") + // let start = parseInt(parts[0], 10) + // let end = parts[1] + // ? parseInt(parts[1], 10) + // : fileSize-1 + // const chunksize = (end-start)+1 + // const IV = currentFile.metadata.IV.buffer + // let head = { + // 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, + // 'Accept-Ranges': 'bytes', + // 'Content-Length': chunksize, + // 'Content-Type': 'video/mp4'} + // const bucket = new mongoose.mongo.GridFSBucket(conn.db, { + // chunkSizeBytes: 1024 + // }); + // const readStream = bucket.openDownloadStream(new ObjectID(fileID), { + // start: start, + // end: end + // }); + // readStream.on("error", (e) => { + // reject({ + // code: 500, + // message: "File service stream video stream error", + // exception: e + // }) + // }) + // const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + // const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + // decipher.on("error", (e) => { + // reject({ + // code: 500, + // message: "File service stream video decipher error", + // exception: e + // }) + // }) + // res.writeHead(206, head); + // readStream.pipe(decipher).pipe(res).on("finish", () => { + // resolve(); + // }); + // } + // }) + // }) + }); } } exports.default = MongoService; diff --git a/dist/services/ChunkService/utils/awaitStream.js b/dist/services/ChunkService/utils/awaitStream.js new file mode 100644 index 0000000..d363b07 --- /dev/null +++ b/dist/services/ChunkService/utils/awaitStream.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const awaitStream = (inputSteam, outputStream) => { + return new Promise((resolve, reject) => { + inputSteam.on("error", (e) => { + reject({ + message: "Await Stream Input Error", + code: 500, + error: e + }); + }); + outputStream.on("error", (e) => { + reject({ + message: "Await Stream Output Error", + code: 500, + error: e + }); + }); + inputSteam.pipe(outputStream).on("finish", (data) => { + console.log("await stream finished"); + resolve(data); + }); + }); +}; +exports.default = awaitStream; diff --git a/dist/services/ChunkService/utils/awaitUploadStream.js b/dist/services/ChunkService/utils/awaitUploadStream.js new file mode 100644 index 0000000..aeb9d7a --- /dev/null +++ b/dist/services/ChunkService/utils/awaitUploadStream.js @@ -0,0 +1,35 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const removeChunks_1 = __importDefault(require("../../FileService/utils/removeChunks")); +const awaitUploadStream = (inputSteam, outputStream, req) => { + return new Promise((resolve, reject) => { + inputSteam.on("error", (e) => { + removeChunks_1.default(outputStream); + reject({ + message: "Await Stream Input Error", + code: 500, + error: e + }); + }); + outputStream.on("error", (e) => { + removeChunks_1.default(outputStream); + reject({ + message: "Await Stream Output Error", + code: 500, + error: e + }); + }); + req.on("aborted", () => { + console.log("Upload Request Cancelling..."); + removeChunks_1.default(outputStream); + }); + inputSteam.pipe(outputStream).on("finish", (data) => { + console.log("await stream finished"); + resolve(data); + }); + }); +}; +exports.default = awaitUploadStream; diff --git a/dist/services/ChunkService/utils/getBusboyData.js b/dist/services/ChunkService/utils/getBusboyData.js new file mode 100644 index 0000000..5698054 --- /dev/null +++ b/dist/services/ChunkService/utils/getBusboyData.js @@ -0,0 +1,27 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const getBusboyData = (busboy) => { + return new Promise((resolve, reject) => { + const formData = new Map(); + busboy.on("field", (field, val) => { + formData.set(field, val); + }); + busboy.on("file", (_, file, filename) => __awaiter(void 0, void 0, void 0, function* () { + resolve({ + file, + filename, + formData + }); + })); + }); +}; +exports.default = getBusboyData; diff --git a/dist/services/FileService/utils/removeChunks.js b/dist/services/FileService/utils/removeChunks.js index b39ea56..c2deae9 100644 --- a/dist/services/FileService/utils/removeChunks.js +++ b/dist/services/FileService/utils/removeChunks.js @@ -8,11 +8,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; +Object.defineProperty(exports, "__esModule", { value: true }); const DbUtilsFile = require("../../../db/utils/fileUtils"); const dbUtilsFile = new DbUtilsFile(); const removeChunks = (bucketStream) => __awaiter(void 0, void 0, void 0, function* () { + const uploadID = bucketStream.id; try { - const uploadID = bucketStream.id; if (!uploadID || uploadID.length === 0) { console.log("Invalid uploadID for remove chunks"); return; @@ -24,4 +25,4 @@ const removeChunks = (bucketStream) => __awaiter(void 0, void 0, void 0, functio console.log("Could not remove chunks for canceled upload", uploadID, e); } }); -module.exports = removeChunks; +exports.default = removeChunks; diff --git a/dist/utils/imageChecker.js b/dist/utils/imageChecker.js index 10b76cc..7426a09 100644 --- a/dist/utils/imageChecker.js +++ b/dist/utils/imageChecker.js @@ -1,5 +1,6 @@ "use strict"; -const videoExtList = [ +Object.defineProperty(exports, "__esModule", { value: true }); +const imageExtList = [ "jpeg", "jpg", "png", @@ -8,15 +9,15 @@ const videoExtList = [ "tiff", "bmp" ]; -const videoChecker = (filename) => { +const imageChecker = (filename) => { if (filename.length < 1 || !filename.includes(".")) { return false; } const extSplit = filename.split("."); - if (extSplit < 1) { + if (extSplit.length <= 1) { return false; } const ext = extSplit[extSplit.length - 1]; - return videoExtList.includes(ext.toLowerCase()); + return imageExtList.includes(ext.toLowerCase()); }; -module.exports = videoChecker; +exports.default = imageChecker; diff --git a/dist/utils/videoChecker.js b/dist/utils/videoChecker.js index 74e8cd4..2af56bd 100644 --- a/dist/utils/videoChecker.js +++ b/dist/utils/videoChecker.js @@ -1,4 +1,5 @@ "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); const videoExtList = [ "3g2", "3gp", @@ -39,10 +40,10 @@ const videoChecker = (filename) => { return false; } const extSplit = filename.split("."); - if (extSplit < 1) { + if (extSplit.length <= 1) { return false; } const ext = extSplit[extSplit.length - 1]; return videoExtList.includes(ext.toLowerCase()); }; -module.exports = videoChecker; +exports.default = videoChecker; From 412440a77bbef260347d5603ec08ff50837cc199 Mon Sep 17 00:00:00 2001 From: subnub Date: Thu, 16 Apr 2020 04:26:44 -0400 Subject: [PATCH 004/129] Started adding the ability to store file chunks in the file system :) --- backend/controllers/FileSystem/fileSystem.ts | 0 backend/controllers/file.ts | 7 +- backend/controllers/{folder.js => folder.ts} | 23 +- backend/models/file.ts | 76 ++++++- backend/models/fileSystem.ts | 69 ++++++ .../ChunkService/FileSystemService.ts | 113 ++++++++++ backend/services/ChunkService/MongoService.ts | 5 +- .../ChunkService/utils/ChunkInterface.ts | 14 ++ .../ChunkService/utils/getFileSize.ts | 19 ++ dist/controllers/FileSystem/fileSystem.js | 1 + dist/controllers/file.js | 6 +- dist/controllers/folder.js | 1 + dist/models/file.js | 61 ++++++ dist/models/fileSystem.js | 55 +++++ .../ChunkService/FileSystemService.js | 90 ++++++++ dist/services/ChunkService/MongoService.js | 203 ------------------ .../ChunkService/utils/ChunkInterface.js | 2 + .../ChunkService/utils/getFileSize.js | 17 ++ package.json | 1 + 19 files changed, 541 insertions(+), 222 deletions(-) create mode 100644 backend/controllers/FileSystem/fileSystem.ts rename backend/controllers/{folder.js => folder.ts} (84%) create mode 100644 backend/models/fileSystem.ts create mode 100644 backend/services/ChunkService/FileSystemService.ts create mode 100644 backend/services/ChunkService/utils/ChunkInterface.ts create mode 100644 backend/services/ChunkService/utils/getFileSize.ts create mode 100644 dist/controllers/FileSystem/fileSystem.js create mode 100644 dist/models/fileSystem.js create mode 100644 dist/services/ChunkService/FileSystemService.js create mode 100644 dist/services/ChunkService/utils/ChunkInterface.js create mode 100644 dist/services/ChunkService/utils/getFileSize.js diff --git a/backend/controllers/FileSystem/fileSystem.ts b/backend/controllers/FileSystem/fileSystem.ts new file mode 100644 index 0000000..e69de29 diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index a7b48d8..d28fa91 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -9,6 +9,9 @@ const fileService = new FileService() import MongoService from "../services/ChunkService/MongoService"; const mongoService = new MongoService(); +import FileSystemService from "../services/ChunkService/FileSystemService"; +const fileSystemService = new FileSystemService(); + import {UserInterface} from "../models/user"; interface RequestType extends Request { @@ -87,7 +90,7 @@ class FileController { req.pipe(busboy); - const file = await mongoService.uploadFile(user, busboy, req); + const file = await fileSystemService.uploadFile(user, busboy, req); res.send(file); @@ -473,7 +476,7 @@ class FileController { const fileID = req.params.id; //await fileService.downloadFile(user, fileID, res); - await mongoService.downloadFile(user, fileID, res); + await fileSystemService.downloadFile(user, fileID, res); } catch (e) { diff --git a/backend/controllers/folder.js b/backend/controllers/folder.ts similarity index 84% rename from backend/controllers/folder.js rename to backend/controllers/folder.ts index 8ee3529..0505aa7 100644 --- a/backend/controllers/folder.js +++ b/backend/controllers/folder.ts @@ -1,5 +1,12 @@ const FolderService = require("../services/FolderService"); const folderService = new FolderService(); +import { Request, Response } from "express"; +import {UserInterface} from "../models/user"; + +interface RequestType extends Request { + user?: UserInterface, + auth?: any, +} class FolderController { @@ -7,7 +14,7 @@ class FolderController { } - async uploadFolder(req, res) { + async uploadFolder(req: RequestType, res: Response) { if (!req.user) { @@ -31,7 +38,7 @@ class FolderController { } } - async deleteFolder(req, res) { + async deleteFolder(req: RequestType, res: Response) { if (!req.user) { @@ -57,7 +64,7 @@ class FolderController { } } - async deleteAll(req, res) { + async deleteAll(req: RequestType, res: Response) { if (!req.user) { @@ -81,7 +88,7 @@ class FolderController { } } - async getInfo(req, res) { + async getInfo(req: RequestType, res: Response) { if (!req.user) { return; @@ -105,7 +112,7 @@ class FolderController { } } - async getSubfolderList(req, res) { + async getSubfolderList(req: RequestType, res: Response) { if (!req.user) { @@ -130,7 +137,7 @@ class FolderController { } } - async getFolderList(req, res) { + async getFolderList(req: RequestType, res: Response) { if (!req.user) { @@ -155,7 +162,7 @@ class FolderController { } } - async moveFolder(req, res) { + async moveFolder(req: RequestType, res: Response) { if (!req.user) { return; @@ -181,7 +188,7 @@ class FolderController { } } - async renameFolder(req, res) { + async renameFolder(req: RequestType, res: Response) { if (!req.user) { return; diff --git a/backend/models/file.ts b/backend/models/file.ts index a03af91..44c18df 100644 --- a/backend/models/file.ts +++ b/backend/models/file.ts @@ -1,8 +1,68 @@ -export interface FileInterface { - _id: string, +import mongoose, {Document} from "mongoose"; +import { Binary } from "mongodb"; + +const fileSchema = new mongoose.Schema({ + + length: { + type: Number, + required: true, + }, + chunkSize: { + type: Number, + }, + uploadDate: { + type: Date, + required: true + }, + filename: { + type: String, + required: true + }, + metadata: { + type: { + owner: { + type: String, + required: true + }, + parent: { + type: String, + required: true + }, + parentList: { + type: String, + required: true + }, + hasThumbnail: { + type: Boolean, + required: true + }, + isVideo: { + type: Boolean, + required: true + }, + thumbnailID: String, + size: { + type: Number, + required: true, + }, + IV: { + type: Binary, + required: true + }, + linkType: String, + link: String, + filePath: String + + }, + required: true + } + +}) + +export interface FileInterface extends Document { length: number, chunkSize: number, - updateDate: string, + uploadDate: string, filename: string, metadata: { owner: string, @@ -14,6 +74,12 @@ export interface FileInterface { size: number, IV: any, linkType?: 'one' | 'public', - link?: string + link?: string, + filePath?: string, } -} \ No newline at end of file +} + + +const File = mongoose.model("fs.files", fileSchema); + +export default File; \ No newline at end of file diff --git a/backend/models/fileSystem.ts b/backend/models/fileSystem.ts new file mode 100644 index 0000000..aaeebd6 --- /dev/null +++ b/backend/models/fileSystem.ts @@ -0,0 +1,69 @@ +import mongoose, {Document} from "mongoose"; + +const fileSystemSchema = new mongoose.Schema({ + + name: { + type: String, + required: true, + }, + owner: { + type: String, + required: true + }, + path: { + type: String, + required: true + }, + parent: { + type: String, + required: true, + }, + parentList: { + type: Array, + required: true + }, + hasThumbnail: { + type: Boolean, + required: true + }, + thumbnailID: { + type: String + }, + originalSize: { + type: Number, + required: true + }, + size: { + type: Number, + required: true + }, + isVideo: { + type: Boolean, + required: true + }, + IV: { + type: Buffer, + required: true + } + +}, { + timestamps: true +}) + +export interface FileSystemInterface extends Document { + name: string, + owner: string, + path: string, + parent: string, + parentList: string[], + hasThumbnail: boolean, + thumbnailID?: string, + originalSize: number, + size: number, + isVideo: boolean, + IV: Buffer +} + +const FileSystem = mongoose.model("FileSystem", fileSystemSchema); + +export default FileSystem; \ No newline at end of file diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts new file mode 100644 index 0000000..1c3424d --- /dev/null +++ b/backend/services/ChunkService/FileSystemService.ts @@ -0,0 +1,113 @@ +import { Response, Request } from "express"; +import ChunkInterface from "./utils/ChunkInterface"; +import { UserInterface } from "../../models/user"; +import NotAuthorizedError from "../../utils/NotAuthorizedError"; +import NotFoundError from "../../utils/NotFoundError"; +import crypto from "crypto"; +import getBusboyData from "./utils/getBusboyData"; +import videoChecker from "../../utils/videoChecker"; +import fs from "fs"; +import uuid from "uuid"; +import awaitUploadStream from "./utils/awaitUploadStream"; +import File, { FileInterface } from "../../models/file"; +import getFileSize from "./utils/getFileSize"; +import DbUtilFile from "../../db/utils/fileUtils/index"; +import awaitStream from "./utils/awaitStream"; + +const dbUtilsFile = new DbUtilFile(); + +// implements ChunkInterface +class FileSystemService { + + constructor() { + + } + + uploadFile = async(user: UserInterface, busboy: any, req: Request) => { + + + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + + const initVect = crypto.randomBytes(16); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect); + + const {file, filename, formData} = await getBusboyData(busboy); + + const parent = formData.get("parent") || "/" + const parentList = formData.get("parentList") || "/"; + const size = formData.get("size") || "" + let hasThumbnail = false; + let thumbnailID = "" + const isVideo = videoChecker(filename) + + const systemFileName = uuid.v4(); + + const metadata = { + owner: user._id, + parent, + parentList, + hasThumbnail, + thumbnailID, + isVideo, + size, + IV: initVect, + filePath: `/Users/kylehoell/Documents/fstestdata/${systemFileName}` + } + + const fileWriteStream = fs.createWriteStream(metadata.filePath); + + await awaitUploadStream(file.pipe(cipher), fileWriteStream, req); + + const date = new Date(); + const encryptedFileSize = await getFileSize(metadata.filePath); + + const currentFile = new File({ + filename, + uploadDate: date.toISOString(), + length: encryptedFileSize, + metadata + }); + + await currentFile.save(); + + console.log(currentFile); + + return currentFile; + + } + + downloadFile = async(user: UserInterface, fileID: string, res: Response) => { + + const currentFile: FileInterface = await dbUtilsFile.getFileInfo(fileID, user._id); + + if (!currentFile) throw new NotFoundError("Download File Not Found"); + + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + const filePath = currentFile.metadata.filePath!; + + const IV = currentFile.metadata.IV.buffer + + const readStream = fs.createReadStream(filePath); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); + res.set('Content-Length', currentFile.metadata.size.toString()); + + await awaitStream(readStream.pipe(decipher), res); + } +} + +export default FileSystemService; \ No newline at end of file diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index bbd7ef8..57e7f5e 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -22,10 +22,12 @@ import { Stream } from "stream"; import removeChunks from "../FileService/utils/removeChunks"; import getBusboyData from "./utils/getBusboyData"; +import ChunkInterface from "./utils/ChunkInterface"; + const dbUtilsFile = new DbUtilFile(); const dbUtilsFolder = new DbUtilFolder(); -class MongoService { +class MongoService implements ChunkInterface { constructor() { @@ -80,7 +82,6 @@ class MongoService { return updatedFile; - } else { return finishedFile; diff --git a/backend/services/ChunkService/utils/ChunkInterface.ts b/backend/services/ChunkService/utils/ChunkInterface.ts new file mode 100644 index 0000000..c335077 --- /dev/null +++ b/backend/services/ChunkService/utils/ChunkInterface.ts @@ -0,0 +1,14 @@ +import { UserInterface } from "../../../models/user"; +import { FileInterface } from "../../../models/file"; +import { Request, Response } from "express"; + +interface ChunkInterface { + uploadFile: (user: UserInterface, busboy: any, req: Request) => Promise; + downloadFile: (user: UserInterface, fileID: string, res: Response) => void; + getThumbnail: (user: UserInterface, id: string) => Promise; + getFullThumbnail: (user: UserInterface, fileID: string, res: Response) => void; + getPublicDownload: (fileID: string, tempToken: any, res: Response) => void; + streamVideo: (user: UserInterface, fileID: string, headers: any, res: Response) => void; +} + +export default ChunkInterface; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/getFileSize.ts b/backend/services/ChunkService/utils/getFileSize.ts new file mode 100644 index 0000000..f493f6e --- /dev/null +++ b/backend/services/ChunkService/utils/getFileSize.ts @@ -0,0 +1,19 @@ +import fs from "fs"; + +const getFileSize = (path: string) => { + + return new Promise((resolve, reject) => { + + fs.stat(path, (error, stats) => { + + if (error) { + + resolve(0); + } + + resolve(stats.size); + }); + }) +} + +export default getFileSize; \ No newline at end of file diff --git a/dist/controllers/FileSystem/fileSystem.js b/dist/controllers/FileSystem/fileSystem.js new file mode 100644 index 0000000..3918c74 --- /dev/null +++ b/dist/controllers/FileSystem/fileSystem.js @@ -0,0 +1 @@ +"use strict"; diff --git a/dist/controllers/file.js b/dist/controllers/file.js index 79a6eb3..78889b3 100644 --- a/dist/controllers/file.js +++ b/dist/controllers/file.js @@ -17,6 +17,8 @@ const indexnew_1 = __importDefault(require("../services/FileService/indexnew")); const fileService = new indexnew_1.default(); const MongoService_1 = __importDefault(require("../services/ChunkService/MongoService")); const mongoService = new MongoService_1.default(); +const FileSystemService_1 = __importDefault(require("../services/ChunkService/FileSystemService")); +const fileSystemService = new FileSystemService_1.default(); class FileController { // fileService: ; constructor() { @@ -63,7 +65,7 @@ class FileController { const user = req.user; const busboy = req.busboy; req.pipe(busboy); - const file = yield mongoService.uploadFile(user, busboy, req); + const file = yield fileSystemService.uploadFile(user, busboy, req); res.send(file); console.log("file uploaded"); } @@ -342,7 +344,7 @@ class FileController { const user = req.user; const fileID = req.params.id; //await fileService.downloadFile(user, fileID, res); - yield mongoService.downloadFile(user, fileID, res); + yield fileSystemService.downloadFile(user, fileID, res); } catch (e) { const code = e.code || 500; diff --git a/dist/controllers/folder.js b/dist/controllers/folder.js index 73aed5a..630402d 100644 --- a/dist/controllers/folder.js +++ b/dist/controllers/folder.js @@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; +Object.defineProperty(exports, "__esModule", { value: true }); const FolderService = require("../services/FolderService"); const folderService = new FolderService(); class FolderController { diff --git a/dist/models/file.js b/dist/models/file.js index c8ad2e5..4f4a7e4 100644 --- a/dist/models/file.js +++ b/dist/models/file.js @@ -1,2 +1,63 @@ "use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); +const mongoose_1 = __importDefault(require("mongoose")); +const mongodb_1 = require("mongodb"); +const fileSchema = new mongoose_1.default.Schema({ + length: { + type: Number, + required: true, + }, + chunkSize: { + type: Number, + }, + uploadDate: { + type: Date, + required: true + }, + filename: { + type: String, + required: true + }, + metadata: { + type: { + owner: { + type: String, + required: true + }, + parent: { + type: String, + required: true + }, + parentList: { + type: String, + required: true + }, + hasThumbnail: { + type: Boolean, + required: true + }, + isVideo: { + type: Boolean, + required: true + }, + thumbnailID: String, + size: { + type: Number, + required: true, + }, + IV: { + type: mongodb_1.Binary, + required: true + }, + linkType: String, + link: String, + filePath: String + }, + required: true + } +}); +const File = mongoose_1.default.model("fs.files", fileSchema); +exports.default = File; diff --git a/dist/models/fileSystem.js b/dist/models/fileSystem.js new file mode 100644 index 0000000..458df75 --- /dev/null +++ b/dist/models/fileSystem.js @@ -0,0 +1,55 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const mongoose_1 = __importDefault(require("mongoose")); +const fileSystemSchema = new mongoose_1.default.Schema({ + name: { + type: String, + required: true, + }, + owner: { + type: String, + required: true + }, + path: { + type: String, + required: true + }, + parent: { + type: String, + required: true, + }, + parentList: { + type: Array, + required: true + }, + hasThumbnail: { + type: Boolean, + required: true + }, + thumbnailID: { + type: String + }, + originalSize: { + type: Number, + required: true + }, + size: { + type: Number, + required: true + }, + isVideo: { + type: Boolean, + required: true + }, + IV: { + type: Buffer, + required: true + } +}, { + timestamps: true +}); +const FileSystem = mongoose_1.default.model("FileSystem", fileSystemSchema); +exports.default = FileSystem; diff --git a/dist/services/ChunkService/FileSystemService.js b/dist/services/ChunkService/FileSystemService.js new file mode 100644 index 0000000..287f758 --- /dev/null +++ b/dist/services/ChunkService/FileSystemService.js @@ -0,0 +1,90 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const NotAuthorizedError_1 = __importDefault(require("../../utils/NotAuthorizedError")); +const NotFoundError_1 = __importDefault(require("../../utils/NotFoundError")); +const crypto_1 = __importDefault(require("crypto")); +const getBusboyData_1 = __importDefault(require("./utils/getBusboyData")); +const videoChecker_1 = __importDefault(require("../../utils/videoChecker")); +const fs_1 = __importDefault(require("fs")); +const uuid_1 = __importDefault(require("uuid")); +const awaitUploadStream_1 = __importDefault(require("./utils/awaitUploadStream")); +const file_1 = __importDefault(require("../../models/file")); +const getFileSize_1 = __importDefault(require("./utils/getFileSize")); +const index_1 = __importDefault(require("../../db/utils/fileUtils/index")); +const awaitStream_1 = __importDefault(require("./utils/awaitStream")); +const dbUtilsFile = new index_1.default(); +// implements ChunkInterface +class FileSystemService { + constructor() { + this.uploadFile = (user, busboy, req) => __awaiter(this, void 0, void 0, function* () { + const password = user.getEncryptionKey(); + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); + const initVect = crypto_1.default.randomBytes(16); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const cipher = crypto_1.default.createCipheriv('aes256', CIPHER_KEY, initVect); + const { file, filename, formData } = yield getBusboyData_1.default(busboy); + const parent = formData.get("parent") || "/"; + const parentList = formData.get("parentList") || "/"; + const size = formData.get("size") || ""; + let hasThumbnail = false; + let thumbnailID = ""; + const isVideo = videoChecker_1.default(filename); + const systemFileName = uuid_1.default.v4(); + const metadata = { + owner: user._id, + parent, + parentList, + hasThumbnail, + thumbnailID, + isVideo, + size, + IV: initVect, + filePath: `/Users/kylehoell/Documents/fstestdata/${systemFileName}` + }; + const fileWriteStream = fs_1.default.createWriteStream(metadata.filePath); + yield awaitUploadStream_1.default(file.pipe(cipher), fileWriteStream, req); + const date = new Date(); + const encryptedFileSize = yield getFileSize_1.default(metadata.filePath); + const currentFile = new file_1.default({ + filename, + uploadDate: date.toISOString(), + length: encryptedFileSize, + metadata + }); + yield currentFile.save(); + console.log(currentFile); + return currentFile; + }); + this.downloadFile = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { + const currentFile = yield dbUtilsFile.getFileInfo(fileID, user._id); + if (!currentFile) + throw new NotFoundError_1.default("Download File Not Found"); + const password = user.getEncryptionKey(); + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); + const filePath = currentFile.metadata.filePath; + const IV = currentFile.metadata.IV.buffer; + const readStream = fs_1.default.createReadStream(filePath); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); + res.set('Content-Length', currentFile.metadata.size.toString()); + yield awaitStream_1.default(readStream.pipe(decipher), res); + }); + } +} +exports.default = FileSystemService; diff --git a/dist/services/ChunkService/MongoService.js b/dist/services/ChunkService/MongoService.js index fda3cfb..10188e3 100644 --- a/dist/services/ChunkService/MongoService.js +++ b/dist/services/ChunkService/MongoService.js @@ -68,73 +68,6 @@ class MongoService { else { return finishedFile; } - // file.pipe(cipher).pipe(bucketStream); - // bucketStream.on("finish", (finishedFile: FileInterface) => { - // const imageCheck = imageChecker(filename); - // if (finishedFile.length < 15728640 && imageCheck) { - // createThumbnail(finishedFile, filename, user).then((updatedFile: FileInterface) => { - // resolve(updatedFile); - // }) - // } else { - // resolve(finishedFile); - // } - // }) - // return new Promise((resolve, reject) => { - // const password = user.getEncryptionKey(); - // if (!password) throw new NotAuthorizedError("Invalid Encryption Key") - // let bucketStream: GridFSBucketWriteStream; - // const initVect = crypto.randomBytes(16); - // const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - // const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect); - // const formData = new Map(); - // busboy.on("file", async(_: string, file: Stream, filename: string) => { - // const parent = formData.get("parent") || "/" - // const parentList = formData.get("parentList") || "/"; - // const size = formData.get("size") || "" - // let hasThumbnail = false; - // let thumbnailID = "" - // const isVideo = videoChecker(filename) - // const metadata = { - // owner: user._id, - // parent, - // parentList, - // hasThumbnail, - // thumbnailID, - // isVideo, - // size, - // IV: initVect - // } - // let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - // chunkSizeBytes: 1024 * 255 - // }); - // bucketStream = bucket.openUploadStream(filename, {metadata}) - // bucketStream.on("error", async(e: Error) => { - // await removeChunks(bucketStream); - // reject({ - // message: "Cannot upload file to database", - // exception: e, - // code: 500 - // }) - // }) - // req.on("aborted", async() => { - // console.log("Upload Request Cancelling..."); - // await removeChunks(bucketStream); - // }) - // file.pipe(cipher).pipe(bucketStream); - // bucketStream.on("finish", (finishedFile: FileInterface) => { - // const imageCheck = imageChecker(filename); - // if (finishedFile.length < 15728640 && imageCheck) { - // createThumbnail(finishedFile, filename, user).then((updatedFile: FileInterface) => { - // resolve(updatedFile); - // }) - // } else { - // resolve(finishedFile); - // } - // }) - // }).on("field", (field: any, val: any) => { - // formData.set(field, val) - // }) - // }) }); this.downloadFile = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { const currentFile = yield dbUtilsFile.getFileInfo(fileID, user._id); @@ -152,45 +85,6 @@ class MongoService { res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); res.set('Content-Length', currentFile.metadata.size.toString()); yield awaitStream_1.default(readStream.pipe(decipher), res); - // return new Promise((resolve, reject) => { - // dbUtilsFile.getFileInfo(fileID, user._id).then((currentFile: FileInterface) => { - // if (!currentFile) { - // reject({ - // code: 401, - // message: "Download File Not Found Error", - // exception: undefined - // }) - // } else { - // const password = user.getEncryptionKey(); - // if (!password) throw new NotAuthorizedError("Invalid Encryption Key") - // const bucket = new mongoose.mongo.GridFSBucket(conn.db); - // const IV = currentFile.metadata.IV.buffer - // const readStream = bucket.openDownloadStream(new ObjectID(fileID)); - // readStream.on("error", (e: Error) => { - // reject({ - // code: 500, - // message: "File service download decipher error", - // exception: e - // }) - // }) - // const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - // const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - // decipher.on("error", (e) => { - // reject({ - // code: 500, - // message: "File service download decipher error", - // exception: e - // }) - // }) - // res.set('Content-Type', 'binary/octet-stream'); - // res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); - // res.set('Content-Length', currentFile.metadata.size.toString()); - // readStream.pipe(decipher).pipe(res).on("finish", () => { - // resolve(); - // }); - // } - // }) - // }) }); this.getThumbnail = (user, id) => __awaiter(this, void 0, void 0, function* () { const password = user.getEncryptionKey(); @@ -226,47 +120,6 @@ class MongoService { console.log("Sending Full Thumbnail..."); yield awaitStream_1.default(readStream.pipe(decipher), res); console.log("Full thumbnail sent"); - // return new Promise((resolve, reject) => { - // const userID = user._id; - // dbUtilsFile.getFileInfo(fileID, userID).then((file) => { - // if (!file) { - // reject({ - // code: 401, - // message: "File For Full Thumbnail Not Found", - // exception: undefined - // }) - // } - // const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - // chunkSizeBytes: 1024 * 255, - // }) - // const password = user.getEncryptionKey(); - // const IV = file.metadata.IV.buffer - // const readStream = bucket.openDownloadStream(new ObjectID(fileID)) - // readStream.on("error", (e) => { - // reject({ - // code: 500, - // message: "File service Full Thumbnail stream error", - // exception: e - // }) - // }) - // const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - // const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - // decipher.on("error", (e) => { - // reject({ - // code: 500, - // message: "File service Full Thumbnail decipher error", - // exception: e - // }) - // }) - // res.set('Content-Type', 'binary/octet-stream'); - // res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - // res.set('Content-Length', file.metadata.size); - // readStream.pipe(decipher).pipe(res).on("finish", () => { - // console.log("Sent Full Thumbnail"); - // resolve(); - // }); - // }); - // }) }); this.getPublicDownload = (fileID, tempToken, res) => __awaiter(this, void 0, void 0, function* () { const file = yield dbUtilsFile.getPublicFile(fileID); @@ -325,62 +178,6 @@ class MongoService { const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); res.writeHead(206, head); yield awaitStream_1.default(readStream.pipe(decipher), res); - // return new Promise((resolve, reject) => { - // const userID = user._id; - // dbUtilsFile.getFileInfo(fileID, userID).then((currentFile: FileInterface) => { - // if (!currentFile) { - // reject({ - // code: 401, - // message: "Video Steam Not Found Error", - // exception: undefined - // }) - // } else { - // const password = user.getEncryptionKey(); - // if (!password) throw new NotAuthorizedError("Invalid Encryption Key") - // const fileSize = currentFile.metadata.size; - // const range = headers.range - // const parts = range.replace(/bytes=/, "").split("-") - // let start = parseInt(parts[0], 10) - // let end = parts[1] - // ? parseInt(parts[1], 10) - // : fileSize-1 - // const chunksize = (end-start)+1 - // const IV = currentFile.metadata.IV.buffer - // let head = { - // 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, - // 'Accept-Ranges': 'bytes', - // 'Content-Length': chunksize, - // 'Content-Type': 'video/mp4'} - // const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - // chunkSizeBytes: 1024 - // }); - // const readStream = bucket.openDownloadStream(new ObjectID(fileID), { - // start: start, - // end: end - // }); - // readStream.on("error", (e) => { - // reject({ - // code: 500, - // message: "File service stream video stream error", - // exception: e - // }) - // }) - // const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - // const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - // decipher.on("error", (e) => { - // reject({ - // code: 500, - // message: "File service stream video decipher error", - // exception: e - // }) - // }) - // res.writeHead(206, head); - // readStream.pipe(decipher).pipe(res).on("finish", () => { - // resolve(); - // }); - // } - // }) - // }) }); } } diff --git a/dist/services/ChunkService/utils/ChunkInterface.js b/dist/services/ChunkService/utils/ChunkInterface.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/dist/services/ChunkService/utils/ChunkInterface.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/dist/services/ChunkService/utils/getFileSize.js b/dist/services/ChunkService/utils/getFileSize.js new file mode 100644 index 0000000..0ca261c --- /dev/null +++ b/dist/services/ChunkService/utils/getFileSize.js @@ -0,0 +1,17 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const fs_1 = __importDefault(require("fs")); +const getFileSize = (path) => { + return new Promise((resolve, reject) => { + fs_1.default.stat(path, (error, stats) => { + if (error) { + resolve(0); + } + resolve(stats.size); + }); + }); +}; +exports.default = getFileSize; diff --git a/package.json b/package.json index 36f2029..7d55069 100755 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@types/mongodb": "^3.5.5", "@types/mongoose": "^5.7.10", "@types/node": "^13.11.1", + "@types/uuid": "^7.0.2", "axios": "^0.19.2", "babel-polyfill": "^6.26.0", "bcrypt": "^3.0.8", From 2cf22536a15205be16d6b3a7937d14b5c2988a1b Mon Sep 17 00:00:00 2001 From: subnub Date: Thu, 16 Apr 2020 16:16:58 -0400 Subject: [PATCH 005/129] Added all the chunk functions for filesystem use, now users can instead store file chunks on the file sysyem, instead of inside of mongoDB. Still needs cleanup and config file --- backend/controllers/file.ts | 8 +- backend/models/thumbnail.ts | 11 +- .../ChunkService/FileSystemService.ts | 149 +++++++++++++++++- backend/services/ChunkService/MongoService.ts | 1 - .../FileService/utils/createThumbnailFS.ts | 127 +++++++++++++++ backend/utils/streamToBuffer.ts | 10 ++ dist/controllers/file.js | 8 +- dist/models/thumbnail.js | 7 +- .../ChunkService/FileSystemService.js | 100 +++++++++++- .../FileService/utils/createThumbnailFS.js | 95 +++++++++++ dist/utils/streamToBuffer.js | 11 ++ dist/utils/streamToStrings.js | 11 ++ 12 files changed, 524 insertions(+), 14 deletions(-) create mode 100644 backend/services/FileService/utils/createThumbnailFS.ts create mode 100644 backend/utils/streamToBuffer.ts create mode 100644 dist/services/FileService/utils/createThumbnailFS.js create mode 100644 dist/utils/streamToBuffer.js create mode 100644 dist/utils/streamToStrings.js diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index d28fa91..0458090 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -42,7 +42,7 @@ class FileController { const user = req.user; const id = req.params.id; - const decryptedThumbnail = await mongoService.getThumbnail(user, id); + const decryptedThumbnail = await fileSystemService.getThumbnail(user, id); res.send(decryptedThumbnail); @@ -67,7 +67,7 @@ class FileController { const user = req.user; const fileID = req.params.id; - await mongoService.getFullThumbnail(user, fileID, res); + await fileSystemService.getFullThumbnail(user, fileID, res); } catch (e) { const code = e.code || 500; @@ -110,7 +110,7 @@ class FileController { const ID = req.params.id; const tempToken = req.params.tempToken; - await mongoService.getPublicDownload(ID, tempToken, res); + await fileSystemService.getPublicDownload(ID, tempToken, res); } catch (e) { @@ -449,7 +449,7 @@ class FileController { console.log("stream request", req.params.id) - await mongoService.streamVideo(user, fileID, headers, res); + await fileSystemService.streamVideo(user, fileID, headers, res); } catch (e) { diff --git a/backend/models/thumbnail.ts b/backend/models/thumbnail.ts index 7fbc73c..e31f30a 100644 --- a/backend/models/thumbnail.ts +++ b/backend/models/thumbnail.ts @@ -13,7 +13,12 @@ const thumbnailSchema = new mongoose.Schema({ data: { type: Buffer, - required: true + }, + path: { + type: String + }, + IV: { + type: Buffer, } }, { @@ -24,7 +29,9 @@ export interface ThumbnailInterface extends Document { _id: string, name: string, owner: string, - data: any + data?: any, + path?: string, + IV?: Buffer, } const Thumbnail = mongoose.model("Thumbnail", thumbnailSchema); diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index 1c3424d..bc4d538 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -13,6 +13,11 @@ import File, { FileInterface } from "../../models/file"; import getFileSize from "./utils/getFileSize"; import DbUtilFile from "../../db/utils/fileUtils/index"; import awaitStream from "./utils/awaitStream"; +import createThumbnailFS from "../FileService/utils/createThumbnailFS"; +import imageChecker from "../../utils/imageChecker"; +import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; +import streamToBuffer from "../../utils/streamToBuffer"; +import User from "../../models/user"; const dbUtilsFile = new DbUtilFile(); @@ -78,7 +83,18 @@ class FileSystemService { console.log(currentFile); - return currentFile; + const imageCheck = imageChecker(currentFile.filename); + + if (currentFile.length < 15728640 && imageCheck) { + + const updatedFile = await createThumbnailFS(currentFile, filename, user); + + return updatedFile; + + } else { + + return currentFile; + } } @@ -108,6 +124,137 @@ class FileSystemService { await awaitStream(readStream.pipe(decipher), res); } + + getThumbnail = async(user: UserInterface, id: string) => { + + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + const thumbnail = await Thumbnail.findById(id) as ThumbnailInterface; + + if (thumbnail.owner !== user._id.toString()) { + + throw new NotAuthorizedError('Thumbnail Unauthorized Error'); + } + + const iv = thumbnail.IV!; + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv("aes256", CIPHER_KEY, iv); + + const readStream = fs.createReadStream(thumbnail.path!); + + const bufferData = await streamToBuffer(readStream.pipe(decipher)); + + return bufferData; + + } + + getFullThumbnail = async(user: UserInterface, fileID: string, res: Response) => { + + const userID = user._id; + + const file: FileInterface = await dbUtilsFile.getFileInfo(fileID, userID); + + if (!file) throw new NotFoundError("File Thumbnail Not Found"); + + const password = user.getEncryptionKey(); + const IV = file.metadata.IV.buffer + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + const readStream = fs.createReadStream(file.metadata.filePath!); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + + console.log("Sending Full Thumbnail...") + await awaitStream(readStream.pipe(decipher), res); + console.log("Full thumbnail sent"); + } + + streamVideo = async(user: UserInterface, fileID: string, headers: any, res: Response) => { + + const userID = user._id; + const currentFile: FileInterface = await dbUtilsFile.getFileInfo(fileID, userID); + + if (!currentFile) throw new NotFoundError("Video File Not Found"); + + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + const fileSize = currentFile.metadata.size; + + const range = headers.range + const parts = range.replace(/bytes=/, "").split("-") + let start = parseInt(parts[0], 10) + let end = parts[1] + ? parseInt(parts[1], 10) + : fileSize-1 + const chunksize = (end-start)+1 + const IV = currentFile.metadata.IV.buffer + + let head = { + 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, + 'Accept-Ranges': 'bytes', + 'Content-Length': chunksize, + 'Content-Type': 'video/mp4'} + + + const readStream = fs.createReadStream(currentFile.metadata.filePath!, + {start: start, + end: end}); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + res.writeHead(206, head); + + await awaitStream(readStream.pipe(decipher), res); + } + + getPublicDownload = async(fileID: string, tempToken: any, res: Response) => { + + const file: FileInterface = await dbUtilsFile.getPublicFile(fileID); + + if (!file || !file.metadata.link || file.metadata.link !== tempToken) { + throw new NotAuthorizedError("File Not Public"); + } + + const user = await User.findById(file.metadata.owner) as UserInterface; + + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key"); + + const IV = file.metadata.IV.buffer + + const readStream = fs.createReadStream(file.metadata.filePath!); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + + await awaitStream(readStream.pipe(decipher), res); + + if (file.metadata.linkType === "one") { + console.log("removing public link"); + await dbUtilsFile.removeOneTimePublicLink(fileID); + } + } } export default FileSystemService; \ No newline at end of file diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 57e7f5e..2fe6b6c 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -23,7 +23,6 @@ import removeChunks from "../FileService/utils/removeChunks"; import getBusboyData from "./utils/getBusboyData"; import ChunkInterface from "./utils/ChunkInterface"; - const dbUtilsFile = new DbUtilFile(); const dbUtilsFolder = new DbUtilFolder(); diff --git a/backend/services/FileService/utils/createThumbnailFS.ts b/backend/services/FileService/utils/createThumbnailFS.ts new file mode 100644 index 0000000..f874980 --- /dev/null +++ b/backend/services/FileService/utils/createThumbnailFS.ts @@ -0,0 +1,127 @@ +const mongoose = require("../../../db/mongoose") +const conn = mongoose.connection; +const crypto= require("crypto"); +const env = require("../../../enviroment/env"); +import Thumbnail from "../../../models/thumbnail"; +const ObjectID = require('mongodb').ObjectID +const sharp = require("sharp"); +const concat = require("concat-stream") +import {FileInterface} from "../../../models/file"; +import {UserInterface} from "../../../models/user"; +import fs from "fs"; +import uuid from "uuid"; + +const createThumbnailFS = (file: FileInterface, filename: string, user: UserInterface) => { + + return new Promise((resolve) => { + + const password = user.getEncryptionKey(); + + let CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const thumbnailFilename = uuid.v4(); + + const readStream = fs.createReadStream(file.metadata.filePath!); + const writeStream = fs.createWriteStream(`/Users/kylehoell/Documents/fstestdata/${thumbnailFilename}`); + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, file.metadata.IV); + + readStream.on("error", (e: Error) => { + console.log("File service upload thumbnail error", e); + resolve(file); + }) + + writeStream.on("error", (e: Error) => { + console.log("File service upload write thumbnail error", e); + resolve(file); + }) + + decipher.on("error", (e: Error) => { + console.log("File service upload thumbnail decipher error", e); + resolve(file) + }) + + try { + + + const thumbnailIV = crypto.randomBytes(16); + + const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); + + const imageResize = sharp().resize(300).on("error", (e: Error) => { + + console.log("resize error", e); + resolve(file); + }) + + readStream.pipe(decipher).pipe(imageResize).pipe(thumbnailCipher).pipe(writeStream); + + writeStream.on("finish", async() => { + console.log("Thumbnail written"); + + const thumbnailModel = new Thumbnail({name: filename, owner: user._id, IV: thumbnailIV, path: `/Users/kylehoell/Documents/fstestdata/${thumbnailFilename}`}); + + await thumbnailModel.save(); + + let updatedFile = await conn.db.collection("fs.files") + .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) + + updatedFile = updatedFile.value; + + updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} + + resolve(updatedFile); + }) + + } catch (e) { + + console.log("Thumbnail error", e); + resolve(file); + } + + // try { + + // const concatStream = concat(async(bufferData: Buffer) => { + + // const thumbnailIV = crypto.randomBytes(16); + + // const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); + + // bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); + + // const thumbnailModel = new Thumbnail({name: filename, owner: user._id, data: bufferData}); + + // await thumbnailModel.save(); + + // let updatedFile = await conn.db.collection("fs.files") + // .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) + + // updatedFile = updatedFile.value; + + // updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} + + // resolve(updatedFile); + + // }).on("error", (e: Error) => { + // console.log("File service upload concat stream error", e); + // resolve(file); + // }) + + // const imageResize = sharp().resize(300).on("error", (e: Error) => { + + // console.log("resize error", e); + // resolve(file); + // }) + + // readStream.pipe(decipher).pipe(imageResize).pipe(concatStream); + + + // } catch (e) { + + // console.log(e); + // resolve(file); + // } + + }) +} + +export default createThumbnailFS; \ No newline at end of file diff --git a/backend/utils/streamToBuffer.ts b/backend/utils/streamToBuffer.ts new file mode 100644 index 0000000..b959c24 --- /dev/null +++ b/backend/utils/streamToBuffer.ts @@ -0,0 +1,10 @@ +const streamToBuffer = (stream: any) => { + const chunks: any[] = [] + return new Promise((resolve, reject) => { + stream.on('data', (chunk: any) => chunks.push(chunk)) + stream.on('error', reject) + stream.on('end', () => resolve(Buffer.concat(chunks))) + }) +} + +export default streamToBuffer; \ No newline at end of file diff --git a/dist/controllers/file.js b/dist/controllers/file.js index 78889b3..dca4a09 100644 --- a/dist/controllers/file.js +++ b/dist/controllers/file.js @@ -29,7 +29,7 @@ class FileController { try { const user = req.user; const id = req.params.id; - const decryptedThumbnail = yield mongoService.getThumbnail(user, id); + const decryptedThumbnail = yield fileSystemService.getThumbnail(user, id); res.send(decryptedThumbnail); } catch (e) { @@ -47,7 +47,7 @@ class FileController { try { const user = req.user; const fileID = req.params.id; - yield mongoService.getFullThumbnail(user, fileID, res); + yield fileSystemService.getFullThumbnail(user, fileID, res); } catch (e) { const code = e.code || 500; @@ -81,7 +81,7 @@ class FileController { try { const ID = req.params.id; const tempToken = req.params.tempToken; - yield mongoService.getPublicDownload(ID, tempToken, res); + yield fileSystemService.getPublicDownload(ID, tempToken, res); } catch (e) { const code = e.code || 500; @@ -324,7 +324,7 @@ class FileController { const fileID = req.params.id; const headers = req.headers; console.log("stream request", req.params.id); - yield mongoService.streamVideo(user, fileID, headers, res); + yield fileSystemService.streamVideo(user, fileID, headers, res); } catch (e) { const code = e.code || 500; diff --git a/dist/models/thumbnail.js b/dist/models/thumbnail.js index 149680c..a4e545c 100644 --- a/dist/models/thumbnail.js +++ b/dist/models/thumbnail.js @@ -15,7 +15,12 @@ const thumbnailSchema = new mongoose_1.default.Schema({ }, data: { type: Buffer, - required: true + }, + path: { + type: String + }, + IV: { + type: Buffer, } }, { timestamps: true diff --git a/dist/services/ChunkService/FileSystemService.js b/dist/services/ChunkService/FileSystemService.js index 287f758..ff90e52 100644 --- a/dist/services/ChunkService/FileSystemService.js +++ b/dist/services/ChunkService/FileSystemService.js @@ -24,6 +24,11 @@ const file_1 = __importDefault(require("../../models/file")); const getFileSize_1 = __importDefault(require("./utils/getFileSize")); const index_1 = __importDefault(require("../../db/utils/fileUtils/index")); const awaitStream_1 = __importDefault(require("./utils/awaitStream")); +const createThumbnailFS_1 = __importDefault(require("../FileService/utils/createThumbnailFS")); +const imageChecker_1 = __importDefault(require("../../utils/imageChecker")); +const thumbnail_1 = __importDefault(require("../../models/thumbnail")); +const streamToBuffer_1 = __importDefault(require("../../utils/streamToBuffer")); +const user_1 = __importDefault(require("../../models/user")); const dbUtilsFile = new index_1.default(); // implements ChunkInterface class FileSystemService { @@ -66,7 +71,14 @@ class FileSystemService { }); yield currentFile.save(); console.log(currentFile); - return currentFile; + const imageCheck = imageChecker_1.default(currentFile.filename); + if (currentFile.length < 15728640 && imageCheck) { + const updatedFile = yield createThumbnailFS_1.default(currentFile, filename, user); + return updatedFile; + } + else { + return currentFile; + } }); this.downloadFile = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { const currentFile = yield dbUtilsFile.getFileInfo(fileID, user._id); @@ -85,6 +97,92 @@ class FileSystemService { res.set('Content-Length', currentFile.metadata.size.toString()); yield awaitStream_1.default(readStream.pipe(decipher), res); }); + this.getThumbnail = (user, id) => __awaiter(this, void 0, void 0, function* () { + const password = user.getEncryptionKey(); + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); + const thumbnail = yield thumbnail_1.default.findById(id); + if (thumbnail.owner !== user._id.toString()) { + throw new NotAuthorizedError_1.default('Thumbnail Unauthorized Error'); + } + const iv = thumbnail.IV; + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv("aes256", CIPHER_KEY, iv); + const readStream = fs_1.default.createReadStream(thumbnail.path); + const bufferData = yield streamToBuffer_1.default(readStream.pipe(decipher)); + return bufferData; + }); + this.getFullThumbnail = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { + const userID = user._id; + const file = yield dbUtilsFile.getFileInfo(fileID, userID); + if (!file) + throw new NotFoundError_1.default("File Thumbnail Not Found"); + const password = user.getEncryptionKey(); + const IV = file.metadata.IV.buffer; + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); + const readStream = fs_1.default.createReadStream(file.metadata.filePath); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + console.log("Sending Full Thumbnail..."); + yield awaitStream_1.default(readStream.pipe(decipher), res); + console.log("Full thumbnail sent"); + }); + this.streamVideo = (user, fileID, headers, res) => __awaiter(this, void 0, void 0, function* () { + const userID = user._id; + const currentFile = yield dbUtilsFile.getFileInfo(fileID, userID); + if (!currentFile) + throw new NotFoundError_1.default("Video File Not Found"); + const password = user.getEncryptionKey(); + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); + const fileSize = currentFile.metadata.size; + const range = headers.range; + const parts = range.replace(/bytes=/, "").split("-"); + let start = parseInt(parts[0], 10); + let end = parts[1] + ? parseInt(parts[1], 10) + : fileSize - 1; + const chunksize = (end - start) + 1; + const IV = currentFile.metadata.IV.buffer; + let head = { + 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, + 'Accept-Ranges': 'bytes', + 'Content-Length': chunksize, + 'Content-Type': 'video/mp4' + }; + const readStream = fs_1.default.createReadStream(currentFile.metadata.filePath, { start: start, + end: end }); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + res.writeHead(206, head); + yield awaitStream_1.default(readStream.pipe(decipher), res); + }); + this.getPublicDownload = (fileID, tempToken, res) => __awaiter(this, void 0, void 0, function* () { + const file = yield dbUtilsFile.getPublicFile(fileID); + if (!file || !file.metadata.link || file.metadata.link !== tempToken) { + throw new NotAuthorizedError_1.default("File Not Public"); + } + const user = yield user_1.default.findById(file.metadata.owner); + const password = user.getEncryptionKey(); + if (!password) + throw new NotAuthorizedError_1.default("Invalid Encryption Key"); + const IV = file.metadata.IV.buffer; + const readStream = fs_1.default.createReadStream(file.metadata.filePath); + const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); + const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + yield awaitStream_1.default(readStream.pipe(decipher), res); + if (file.metadata.linkType === "one") { + console.log("removing public link"); + yield dbUtilsFile.removeOneTimePublicLink(fileID); + } + }); } } exports.default = FileSystemService; diff --git a/dist/services/FileService/utils/createThumbnailFS.js b/dist/services/FileService/utils/createThumbnailFS.js new file mode 100644 index 0000000..65e3a7b --- /dev/null +++ b/dist/services/FileService/utils/createThumbnailFS.js @@ -0,0 +1,95 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const mongoose = require("../../../db/mongoose"); +const conn = mongoose.connection; +const crypto = require("crypto"); +const env = require("../../../enviroment/env"); +const thumbnail_1 = __importDefault(require("../../../models/thumbnail")); +const ObjectID = require('mongodb').ObjectID; +const sharp = require("sharp"); +const concat = require("concat-stream"); +const fs_1 = __importDefault(require("fs")); +const uuid_1 = __importDefault(require("uuid")); +const createThumbnailFS = (file, filename, user) => { + return new Promise((resolve) => { + const password = user.getEncryptionKey(); + let CIPHER_KEY = crypto.createHash('sha256').update(password).digest(); + const thumbnailFilename = uuid_1.default.v4(); + const readStream = fs_1.default.createReadStream(file.metadata.filePath); + const writeStream = fs_1.default.createWriteStream(`/Users/kylehoell/Documents/fstestdata/${thumbnailFilename}`); + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, file.metadata.IV); + readStream.on("error", (e) => { + console.log("File service upload thumbnail error", e); + resolve(file); + }); + writeStream.on("error", (e) => { + console.log("File service upload write thumbnail error", e); + resolve(file); + }); + decipher.on("error", (e) => { + console.log("File service upload thumbnail decipher error", e); + resolve(file); + }); + try { + const thumbnailIV = crypto.randomBytes(16); + const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); + const imageResize = sharp().resize(300).on("error", (e) => { + console.log("resize error", e); + resolve(file); + }); + readStream.pipe(decipher).pipe(imageResize).pipe(thumbnailCipher).pipe(writeStream); + writeStream.on("finish", () => __awaiter(void 0, void 0, void 0, function* () { + console.log("Thumbnail written"); + const thumbnailModel = new thumbnail_1.default({ name: filename, owner: user._id, IV: thumbnailIV, path: `/Users/kylehoell/Documents/fstestdata/${thumbnailFilename}` }); + yield thumbnailModel.save(); + let updatedFile = yield conn.db.collection("fs.files") + .findOneAndUpdate({ "_id": file._id }, { "$set": { "metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id } }); + updatedFile = updatedFile.value; + updatedFile = Object.assign(Object.assign({}, updatedFile), { metadata: Object.assign(Object.assign({}, updatedFile.metadata), { hasThumbnail: true, thumbnailID: thumbnailModel._id }) }); + resolve(updatedFile); + })); + } + catch (e) { + console.log("Thumbnail error", e); + resolve(file); + } + // try { + // const concatStream = concat(async(bufferData: Buffer) => { + // const thumbnailIV = crypto.randomBytes(16); + // const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); + // bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); + // const thumbnailModel = new Thumbnail({name: filename, owner: user._id, data: bufferData}); + // await thumbnailModel.save(); + // let updatedFile = await conn.db.collection("fs.files") + // .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) + // updatedFile = updatedFile.value; + // updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} + // resolve(updatedFile); + // }).on("error", (e: Error) => { + // console.log("File service upload concat stream error", e); + // resolve(file); + // }) + // const imageResize = sharp().resize(300).on("error", (e: Error) => { + // console.log("resize error", e); + // resolve(file); + // }) + // readStream.pipe(decipher).pipe(imageResize).pipe(concatStream); + // } catch (e) { + // console.log(e); + // resolve(file); + // } + }); +}; +exports.default = createThumbnailFS; diff --git a/dist/utils/streamToBuffer.js b/dist/utils/streamToBuffer.js new file mode 100644 index 0000000..df36dd5 --- /dev/null +++ b/dist/utils/streamToBuffer.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const streamToBuffer = (stream) => { + const chunks = []; + return new Promise((resolve, reject) => { + stream.on('data', (chunk) => chunks.push(chunk)); + stream.on('error', reject); + stream.on('end', () => resolve(Buffer.concat(chunks))); + }); +}; +exports.default = streamToBuffer; diff --git a/dist/utils/streamToStrings.js b/dist/utils/streamToStrings.js new file mode 100644 index 0000000..2446b3c --- /dev/null +++ b/dist/utils/streamToStrings.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const streamToString = (stream) => { + const chunks = []; + return new Promise((resolve, reject) => { + stream.on('data', (chunk) => chunks.push(chunk)); + stream.on('error', reject); + stream.on('end', () => resolve(Buffer.concat(chunks))); + }); +}; +exports.default = streamToString; From 7bdede8d4d67bfb471134070aead3da70e36f571 Mon Sep 17 00:00:00 2001 From: subnub Date: Thu, 16 Apr 2020 17:31:29 -0400 Subject: [PATCH 006/129] Added config option to change wether users want to use mongo or fs, removed the dist folder, will ignore it later --- backend/controllers/FileSystem/fileSystem.ts | 0 backend/controllers/file.ts | 14 +- backend/controllers/fileSystem.ts | 593 ++++++++++++++++ backend/enviroment/env.js | 3 +- backend/express-routers/file.ts | 12 +- .../ChunkService/FileSystemService.ts | 4 +- .../ChunkService/utils/awaitUploadStreamFS.ts | 59 ++ dist/controllers/FileSystem/fileSystem.js | 1 - dist/controllers/file.js | 434 ------------ dist/controllers/folder.js | 163 ----- dist/controllers/storage.js | 32 - dist/controllers/user.js | 121 ---- dist/db/mongoose.js | 9 - dist/db/mongooseServerUtils.js | 11 - dist/db/utils/fileUtils/index.js | 117 --- dist/db/utils/folderUtils/index.js | 47 -- dist/enviroment/env.js | 10 - dist/express-routers/file.js | 36 - dist/express-routers/folder.js | 16 - dist/express-routers/storage.js | 9 - dist/express-routers/user.js | 14 - dist/key/getKey.js | 30 - dist/middleware/auth.js | 49 -- dist/middleware/tempAuth.js | 53 -- dist/middleware/tempAuthVideo.js | 53 -- dist/models/file.js | 63 -- dist/models/fileSystem.js | 55 -- dist/models/folder.js | 24 - dist/models/thumbnail.js | 29 - dist/models/user.js | 230 ------ dist/server/server.js | 52 -- dist/server/serverStart.js | 36 - .../ChunkService/FileSystemService.js | 188 ----- dist/services/ChunkService/MongoService.js | 184 ----- .../ChunkService/utils/ChunkInterface.js | 2 - .../ChunkService/utils/awaitStream.js | 25 - .../ChunkService/utils/awaitUploadStream.js | 35 - .../ChunkService/utils/getBusboyData.js | 27 - .../ChunkService/utils/getFileSize.js | 17 - dist/services/FileService/index.js | 668 ------------------ dist/services/FileService/indexnew.js | 195 ----- .../FileService/utils/createThumbnail.js | 68 -- .../FileService/utils/createThumbnailFS.js | 95 --- .../FileService/utils/removeChunks.js | 28 - dist/services/FolderService/index.js | 202 ------ dist/services/UserService/index.js | 66 -- dist/test.js | 1 - dist/utils/InternalServerError.js | 8 - dist/utils/NotAuthorizedError.js | 8 - dist/utils/NotFoundError.js | 8 - dist/utils/createError.js | 9 - dist/utils/createQuery.js | 27 - dist/utils/imageChecker.js | 23 - dist/utils/mobileCheck.js | 9 - dist/utils/sortBySwitch.js | 14 - dist/utils/sortBySwitchFolder.js | 14 - dist/utils/streamToBuffer.js | 11 - dist/utils/streamToStrings.js | 11 - dist/utils/videoChecker.js | 49 -- 59 files changed, 673 insertions(+), 3698 deletions(-) delete mode 100644 backend/controllers/FileSystem/fileSystem.ts create mode 100644 backend/controllers/fileSystem.ts create mode 100644 backend/services/ChunkService/utils/awaitUploadStreamFS.ts delete mode 100644 dist/controllers/FileSystem/fileSystem.js delete mode 100644 dist/controllers/file.js delete mode 100644 dist/controllers/folder.js delete mode 100644 dist/controllers/storage.js delete mode 100644 dist/controllers/user.js delete mode 100644 dist/db/mongoose.js delete mode 100644 dist/db/mongooseServerUtils.js delete mode 100644 dist/db/utils/fileUtils/index.js delete mode 100644 dist/db/utils/folderUtils/index.js delete mode 100644 dist/enviroment/env.js delete mode 100644 dist/express-routers/file.js delete mode 100644 dist/express-routers/folder.js delete mode 100644 dist/express-routers/storage.js delete mode 100644 dist/express-routers/user.js delete mode 100644 dist/key/getKey.js delete mode 100644 dist/middleware/auth.js delete mode 100644 dist/middleware/tempAuth.js delete mode 100644 dist/middleware/tempAuthVideo.js delete mode 100644 dist/models/file.js delete mode 100644 dist/models/fileSystem.js delete mode 100644 dist/models/folder.js delete mode 100644 dist/models/thumbnail.js delete mode 100644 dist/models/user.js delete mode 100644 dist/server/server.js delete mode 100644 dist/server/serverStart.js delete mode 100644 dist/services/ChunkService/FileSystemService.js delete mode 100644 dist/services/ChunkService/MongoService.js delete mode 100644 dist/services/ChunkService/utils/ChunkInterface.js delete mode 100644 dist/services/ChunkService/utils/awaitStream.js delete mode 100644 dist/services/ChunkService/utils/awaitUploadStream.js delete mode 100644 dist/services/ChunkService/utils/getBusboyData.js delete mode 100644 dist/services/ChunkService/utils/getFileSize.js delete mode 100644 dist/services/FileService/index.js delete mode 100644 dist/services/FileService/indexnew.js delete mode 100644 dist/services/FileService/utils/createThumbnail.js delete mode 100644 dist/services/FileService/utils/createThumbnailFS.js delete mode 100644 dist/services/FileService/utils/removeChunks.js delete mode 100644 dist/services/FolderService/index.js delete mode 100644 dist/services/UserService/index.js delete mode 100644 dist/test.js delete mode 100644 dist/utils/InternalServerError.js delete mode 100644 dist/utils/NotAuthorizedError.js delete mode 100644 dist/utils/NotFoundError.js delete mode 100644 dist/utils/createError.js delete mode 100644 dist/utils/createQuery.js delete mode 100644 dist/utils/imageChecker.js delete mode 100644 dist/utils/mobileCheck.js delete mode 100644 dist/utils/sortBySwitch.js delete mode 100644 dist/utils/sortBySwitchFolder.js delete mode 100644 dist/utils/streamToBuffer.js delete mode 100644 dist/utils/streamToStrings.js delete mode 100644 dist/utils/videoChecker.js diff --git a/backend/controllers/FileSystem/fileSystem.ts b/backend/controllers/FileSystem/fileSystem.ts deleted file mode 100644 index e69de29..0000000 diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index 0458090..cee7a0d 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -9,8 +9,6 @@ const fileService = new FileService() import MongoService from "../services/ChunkService/MongoService"; const mongoService = new MongoService(); -import FileSystemService from "../services/ChunkService/FileSystemService"; -const fileSystemService = new FileSystemService(); import {UserInterface} from "../models/user"; @@ -42,7 +40,7 @@ class FileController { const user = req.user; const id = req.params.id; - const decryptedThumbnail = await fileSystemService.getThumbnail(user, id); + const decryptedThumbnail = await mongoService.getThumbnail(user, id); res.send(decryptedThumbnail); @@ -67,7 +65,7 @@ class FileController { const user = req.user; const fileID = req.params.id; - await fileSystemService.getFullThumbnail(user, fileID, res); + await mongoService.getFullThumbnail(user, fileID, res); } catch (e) { const code = e.code || 500; @@ -90,7 +88,7 @@ class FileController { req.pipe(busboy); - const file = await fileSystemService.uploadFile(user, busboy, req); + const file = await mongoService.uploadFile(user, busboy, req); res.send(file); @@ -110,7 +108,7 @@ class FileController { const ID = req.params.id; const tempToken = req.params.tempToken; - await fileSystemService.getPublicDownload(ID, tempToken, res); + await mongoService.getPublicDownload(ID, tempToken, res); } catch (e) { @@ -449,7 +447,7 @@ class FileController { console.log("stream request", req.params.id) - await fileSystemService.streamVideo(user, fileID, headers, res); + await mongoService.streamVideo(user, fileID, headers, res); } catch (e) { @@ -476,7 +474,7 @@ class FileController { const fileID = req.params.id; //await fileService.downloadFile(user, fileID, res); - await fileSystemService.downloadFile(user, fileID, res); + await mongoService.downloadFile(user, fileID, res); } catch (e) { diff --git a/backend/controllers/fileSystem.ts b/backend/controllers/fileSystem.ts new file mode 100644 index 0000000..7ecb22f --- /dev/null +++ b/backend/controllers/fileSystem.ts @@ -0,0 +1,593 @@ +import { Request, Response } from "express"; + +//const FileService = require("../services/FileService") +import FileService from "../services/FileService/indexnew"; + +const fileService = new FileService() + +import FileSystemService from "../services/ChunkService/FileSystemService"; +const fileSystemService = new FileSystemService(); + +import {UserInterface} from "../models/user"; + +interface RequestType extends Request { + user?: UserInterface, + auth?: any, + busboy?: any, +} + +class FileSystemController { + + // fileService: ; + + constructor() { + + } + + getThumbnail = async(req: RequestType, res: Response) => { + + + if (!req.user) { + + return; + } + + try { + + + const user = req.user; + const id = req.params.id; + + const decryptedThumbnail = await fileSystemService.getThumbnail(user, id); + + res.send(decryptedThumbnail); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send(); + } + + } + + async getFullThumbnail(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const user = req.user; + const fileID = req.params.id; + + await fileSystemService.getFullThumbnail(user, fileID, res); + + } catch (e) { + const code = e.code || 500; + console.log(e.message, e.exception) + return res.status(code).send(); + } + } + + async uploadFile(req: RequestType, res: Response) { + + if (!req.user) { + + return + } + + try { + + const user = req.user; + const busboy = req.busboy; + + req.pipe(busboy); + + const file = await fileSystemService.uploadFile(user, busboy, req); + + res.send(file); + + console.log("file uploaded"); + + } catch (e) { + const code = e.code || 500; + console.log(e.message, e.exception) + return res.status(code).send(); + } + } + + async getPublicDownload(req: RequestType, res: Response) { + + try { + + const ID = req.params.id; + const tempToken = req.params.tempToken; + + await fileSystemService.getPublicDownload(ID, tempToken, res); + + } catch (e) { + + const code = e.code || 500; + const message = e.message || e; + + console.log(message, e); + res.status(code).send(); + } + } + + async removeLink(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const id = req.params.id; + const userID = req.user._id; + + await fileService.removeLink(userID, id) + + res.send(); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send(); + } + + } + + async makePublic(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const fileID = req.params.id; + const user = req.user; + + const token = await fileService.makePublic(user, fileID); + + res.send(token); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send(); + } + } + + async getPublicInfo(req: RequestType, res: Response) { + + try { + + const id = req.params.id; + const tempToken = req.params.tempToken; + + const file = await fileService.getPublicInfo(id, tempToken); + + res.send(file); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async makeOneTimePublic(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const id = req.params.id; + const userID = req.user._id; + + const token = await fileService.makeOneTimePublic(userID, id); + + res.send(token); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + + } + + async getFileInfo(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const fileID = req.params.id; + const userID = req.user._id; + + const file = await fileService.getFileInfo(userID, fileID); + + res.send(file); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async getQuickList(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const userID = req.user._id; + + const quickList = await fileService.getQuickList(userID); + + res.send(quickList); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async getList(req: RequestType, res: Response) { + + if (!req.user) { + return + } + + try { + + const query = req.query; + const userID = req.user._id; + + const fileList = await fileService.getList(userID, query); + + res.send(fileList); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async getDownloadToken(req: RequestType, res: Response) { + + if (!req.user) { + return + } + + try { + + const user = req.user; + + const tempToken = await fileService.getDownloadToken(user); + + res.send({tempToken}); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async getDownloadTokenVideo(req: RequestType, res: Response) { + + if (!req.user) { + return + } + + try { + + const user = req.user; + const cookie = req.headers.uuid as string; + + const tempToken = await fileService.getDownloadTokenVideo(user, cookie); + + res.send({tempToken}); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async removeTempToken(req: RequestType, res: Response) { + + if (!req.user) { + return + } + + try { + + const user = req.user + const tempToken = req.params.tempToken; + + await fileService.removeTempToken(user, tempToken); + + res.send(); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + // async transcodeVideo(req: RequestType, res: Response) { + + // if (!req.user) { + + // return; + // } + + // try { + + // console.log("transcode request", req.body.file._id) + + // const user = req.user; + // const body = req.body; + + // await fileService.transcodeVideo(user, body); + + // res.send("Finished"); + + // } catch (e) { + + // const code = e.code || 500; + // console.log(e.message, e.exception) + // return res.status(code).send(); + // } + // } + + // async removeTranscodeVideo(req: RequestType, res: Response) { + + // if (!req.user) { + + // return; + // } + + // try { + + // const fileID = req.body.id; + // const userID = req.user._id; + + // await fileService.removeTranscodeVideo(userID, fileID); + + // res.send(); + + // } catch (e) { + + // const code = e.code || 500; + + // console.log(e); + // res.status(code).send() + // } + // } + + // async streamTranscodedVideo(req: RequestType, res: Response) { + + // if (!req.auth || !req.user) { + // return; + // } + + // try { + + // console.log("stream request transcoded", req.params.id) + + // const fileID = req.params.id; + // const userID = req.user._id; + // const headers = req.headers; + + // await fileService.streamTranscodedVideo(userID, fileID, headers, res); + + // } catch (e) { + + // const code = e.code || 500; + // const message = e.message || e; + + // console.log(message, e); + // res.status(code).send(); + // } + // } + + async streamVideo(req: RequestType, res: Response) { + + if (!req.auth || !req.user) { + return; + } + + try { + + const user = req.user; + const fileID = req.params.id; + const headers = req.headers; + + console.log("stream request", req.params.id) + + await fileSystemService.streamVideo(user, fileID, headers, res); + + } catch (e) { + + const code = e.code || 500; + const message = e.message || e; + + console.log(message, e); + res.status(code).send(); + } + + } + + async downloadFile(req: RequestType, res: Response) { + + if (!req.auth || !req.user) { + return; + } + + try { + + console.log("download request") + + const user = req.user; + const fileID = req.params.id; + + //await fileService.downloadFile(user, fileID, res); + await fileSystemService.downloadFile(user, fileID, res); + + } catch (e) { + + const code = e.code || 500; + const message = e.message || e; + + console.log(message, e); + res.status(code).send(); + } + } + + async getSuggestedList(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const userID = req.user._id; + let searchQuery = req.query.search || ""; + + const {fileList, folderList} = await fileService.getSuggestedList(userID, searchQuery); + + return res.send({folderList, fileList}) + + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async renameFile(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const fileID = req.body.id; + const title = req.body.title + const userID = req.user._id; + + await fileService.renameFile(userID, fileID, title) + + res.send(); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + + } + + async moveFile(req: RequestType, res: Response) { + + console.log("move request"); + + if (!req.user) { + return; + } + + try { + + const fileID = req.body.id; + const userID = req.user._id; + const parentID = req.body.parent; + + console.log(fileID, userID, parentID); + + await fileService.moveFile(userID, fileID, parentID); + + res.send(); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + + } + + async deleteFile(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const userID = req.user._id; + const fileID = req.body.id; + + await fileService.deleteFile(userID, fileID); + + res.send() + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } +} + +export default FileSystemController; diff --git a/backend/enviroment/env.js b/backend/enviroment/env.js index df55f36..309fd68 100644 --- a/backend/enviroment/env.js +++ b/backend/enviroment/env.js @@ -5,5 +5,6 @@ module.exports = { createAcctBlocked: process.env.BLOCK_CREATE_ACCOUNT, root: process.env.ROOT, url: process.env.URL, - mongoURL: process.env.MONGODB_URL + mongoURL: process.env.MONGODB_URL, + dbType: process.env.DB_TYPE } \ No newline at end of file diff --git a/backend/express-routers/file.ts b/backend/express-routers/file.ts index bb5e22c..bbf8242 100644 --- a/backend/express-routers/file.ts +++ b/backend/express-routers/file.ts @@ -7,8 +7,18 @@ const tempAuth = require("../middleware/tempAuth") const tempAuthVideo = require("../middleware/tempAuthVideo") import FileController from "../controllers/file"; +import FsFileController from "../controllers/fileSystem"; +import env from "../enviroment/env"; -const fileController = new FileController() +let fileController: FileController | FsFileController; + +if (env.dbType === "mongo") { + fileController = new FileController(); +} else { + fileController = new FsFileController(); +} + +//const fileController = new FileController() router.post("/file-service/upload", auth, fileController.uploadFile); diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index bc4d538..98b9e91 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -8,7 +8,7 @@ import getBusboyData from "./utils/getBusboyData"; import videoChecker from "../../utils/videoChecker"; import fs from "fs"; import uuid from "uuid"; -import awaitUploadStream from "./utils/awaitUploadStream"; +import awaitUploadStreamFS from "./utils/awaitUploadStreamFS"; import File, { FileInterface } from "../../models/file"; import getFileSize from "./utils/getFileSize"; import DbUtilFile from "../../db/utils/fileUtils/index"; @@ -67,7 +67,7 @@ class FileSystemService { const fileWriteStream = fs.createWriteStream(metadata.filePath); - await awaitUploadStream(file.pipe(cipher), fileWriteStream, req); + await awaitUploadStreamFS(file.pipe(cipher), fileWriteStream, req, metadata.filePath); const date = new Date(); const encryptedFileSize = await getFileSize(metadata.filePath); diff --git a/backend/services/ChunkService/utils/awaitUploadStreamFS.ts b/backend/services/ChunkService/utils/awaitUploadStreamFS.ts new file mode 100644 index 0000000..cdec25f --- /dev/null +++ b/backend/services/ChunkService/utils/awaitUploadStreamFS.ts @@ -0,0 +1,59 @@ +import {Request} from "express" +import fs from "fs"; + +const removeChunks = (path: string) => { + + return new Promise((resolve, reject) => { + + fs.unlink(path, (err) => { + + if (err) { + console.log("Could not remove fs file", err); + } + + console.log("File Removed"); + }) + }) +} + +const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, path: string) => { + + return new Promise((resolve, reject) => { + + inputSteam.on("error", (e: Error) => { + + removeChunks(path); + + reject({ + message: "Await Stream Input Error", + code: 500, + error: e + }) + }) + + outputStream.on("error", (e: Error) => { + + removeChunks(path); + + reject({ + message: "Await Stream Output Error", + code: 500, + error: e + }) + }) + + req.on("aborted", () => { + + console.log("Upload Request Cancelling..."); + + removeChunks(path); + }) + + inputSteam.pipe(outputStream).on("finish", (data: T) => { + console.log("await stream finished") + resolve(data); + }) + }) +} + +export default awaitUploadStream; \ No newline at end of file diff --git a/dist/controllers/FileSystem/fileSystem.js b/dist/controllers/FileSystem/fileSystem.js deleted file mode 100644 index 3918c74..0000000 --- a/dist/controllers/FileSystem/fileSystem.js +++ /dev/null @@ -1 +0,0 @@ -"use strict"; diff --git a/dist/controllers/file.js b/dist/controllers/file.js deleted file mode 100644 index dca4a09..0000000 --- a/dist/controllers/file.js +++ /dev/null @@ -1,434 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -//const FileService = require("../services/FileService") -const indexnew_1 = __importDefault(require("../services/FileService/indexnew")); -const fileService = new indexnew_1.default(); -const MongoService_1 = __importDefault(require("../services/ChunkService/MongoService")); -const mongoService = new MongoService_1.default(); -const FileSystemService_1 = __importDefault(require("../services/ChunkService/FileSystemService")); -const fileSystemService = new FileSystemService_1.default(); -class FileController { - // fileService: ; - constructor() { - this.getThumbnail = (req, res) => __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const user = req.user; - const id = req.params.id; - const decryptedThumbnail = yield fileSystemService.getThumbnail(user, id); - res.send(decryptedThumbnail); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - getFullThumbnail(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const user = req.user; - const fileID = req.params.id; - yield fileSystemService.getFullThumbnail(user, fileID, res); - } - catch (e) { - const code = e.code || 500; - console.log(e.message, e.exception); - return res.status(code).send(); - } - }); - } - uploadFile(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const user = req.user; - const busboy = req.busboy; - req.pipe(busboy); - const file = yield fileSystemService.uploadFile(user, busboy, req); - res.send(file); - console.log("file uploaded"); - } - catch (e) { - const code = e.code || 500; - console.log(e.message, e.exception); - return res.status(code).send(); - } - }); - } - getPublicDownload(req, res) { - return __awaiter(this, void 0, void 0, function* () { - try { - const ID = req.params.id; - const tempToken = req.params.tempToken; - yield fileSystemService.getPublicDownload(ID, tempToken, res); - } - catch (e) { - const code = e.code || 500; - const message = e.message || e; - console.log(message, e); - res.status(code).send(); - } - }); - } - removeLink(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const id = req.params.id; - const userID = req.user._id; - yield fileService.removeLink(userID, id); - res.send(); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - makePublic(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const fileID = req.params.id; - const user = req.user; - const token = yield fileService.makePublic(user, fileID); - res.send(token); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - getPublicInfo(req, res) { - return __awaiter(this, void 0, void 0, function* () { - try { - const id = req.params.id; - const tempToken = req.params.tempToken; - const file = yield fileService.getPublicInfo(id, tempToken); - res.send(file); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - makeOneTimePublic(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const id = req.params.id; - const userID = req.user._id; - const token = yield fileService.makeOneTimePublic(userID, id); - res.send(token); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - getFileInfo(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const fileID = req.params.id; - const userID = req.user._id; - const file = yield fileService.getFileInfo(userID, fileID); - res.send(file); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - getQuickList(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const userID = req.user._id; - const quickList = yield fileService.getQuickList(userID); - res.send(quickList); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - getList(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const query = req.query; - const userID = req.user._id; - const fileList = yield fileService.getList(userID, query); - res.send(fileList); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - getDownloadToken(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const user = req.user; - const tempToken = yield fileService.getDownloadToken(user); - res.send({ tempToken }); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - getDownloadTokenVideo(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const user = req.user; - const cookie = req.headers.uuid; - const tempToken = yield fileService.getDownloadTokenVideo(user, cookie); - res.send({ tempToken }); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - removeTempToken(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const user = req.user; - const tempToken = req.params.tempToken; - yield fileService.removeTempToken(user, tempToken); - res.send(); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - // async transcodeVideo(req: RequestType, res: Response) { - // if (!req.user) { - // return; - // } - // try { - // console.log("transcode request", req.body.file._id) - // const user = req.user; - // const body = req.body; - // await fileService.transcodeVideo(user, body); - // res.send("Finished"); - // } catch (e) { - // const code = e.code || 500; - // console.log(e.message, e.exception) - // return res.status(code).send(); - // } - // } - // async removeTranscodeVideo(req: RequestType, res: Response) { - // if (!req.user) { - // return; - // } - // try { - // const fileID = req.body.id; - // const userID = req.user._id; - // await fileService.removeTranscodeVideo(userID, fileID); - // res.send(); - // } catch (e) { - // const code = e.code || 500; - // console.log(e); - // res.status(code).send() - // } - // } - // async streamTranscodedVideo(req: RequestType, res: Response) { - // if (!req.auth || !req.user) { - // return; - // } - // try { - // console.log("stream request transcoded", req.params.id) - // const fileID = req.params.id; - // const userID = req.user._id; - // const headers = req.headers; - // await fileService.streamTranscodedVideo(userID, fileID, headers, res); - // } catch (e) { - // const code = e.code || 500; - // const message = e.message || e; - // console.log(message, e); - // res.status(code).send(); - // } - // } - streamVideo(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.auth || !req.user) { - return; - } - try { - const user = req.user; - const fileID = req.params.id; - const headers = req.headers; - console.log("stream request", req.params.id); - yield fileSystemService.streamVideo(user, fileID, headers, res); - } - catch (e) { - const code = e.code || 500; - const message = e.message || e; - console.log(message, e); - res.status(code).send(); - } - }); - } - downloadFile(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.auth || !req.user) { - return; - } - try { - console.log("download request"); - const user = req.user; - const fileID = req.params.id; - //await fileService.downloadFile(user, fileID, res); - yield fileSystemService.downloadFile(user, fileID, res); - } - catch (e) { - const code = e.code || 500; - const message = e.message || e; - console.log(message, e); - res.status(code).send(); - } - }); - } - getSuggestedList(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const userID = req.user._id; - let searchQuery = req.query.search || ""; - const { fileList, folderList } = yield fileService.getSuggestedList(userID, searchQuery); - return res.send({ folderList, fileList }); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - renameFile(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const fileID = req.body.id; - const title = req.body.title; - const userID = req.user._id; - yield fileService.renameFile(userID, fileID, title); - res.send(); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - moveFile(req, res) { - return __awaiter(this, void 0, void 0, function* () { - console.log("move request"); - if (!req.user) { - return; - } - try { - const fileID = req.body.id; - const userID = req.user._id; - const parentID = req.body.parent; - console.log(fileID, userID, parentID); - yield fileService.moveFile(userID, fileID, parentID); - res.send(); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } - deleteFile(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const userID = req.user._id; - const fileID = req.body.id; - yield fileService.deleteFile(userID, fileID); - res.send(); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(); - } - }); - } -} -exports.default = FileController; diff --git a/dist/controllers/folder.js b/dist/controllers/folder.js deleted file mode 100644 index 630402d..0000000 --- a/dist/controllers/folder.js +++ /dev/null @@ -1,163 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const FolderService = require("../services/FolderService"); -const folderService = new FolderService(); -class FolderController { - constructor() { - } - uploadFolder(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const data = req.body; - const folder = yield folderService.uploadFolder(data); - res.send(folder); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(e); - } - }); - } - deleteFolder(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const userID = req.user._id; - const folderID = req.body.id; - const parentList = req.body.parentList; - yield folderService.deleteFolder(userID, folderID, parentList); - res.send(); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(e); - } - }); - } - deleteAll(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const userID = req.user._id; - yield folderService.deleteAll(userID); - res.send(); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(e); - } - }); - } - getInfo(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const userID = req.user._id; - const folderID = req.params.id; - const folder = yield folderService.getFolderInfo(userID, folderID); - res.send(folder); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(e); - } - }); - } - getSubfolderList(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const userID = req.user._id; - const folderID = req.query.id; - const { folderIDList, folderNameList } = yield folderService.getFolderSublist(userID, folderID); - res.send({ folderIDList, folderNameList }); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(e); - } - }); - } - getFolderList(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const userID = req.user._id; - const query = req.query; - const folderList = yield folderService.getFolderList(userID, query); - res.send(folderList); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(e); - } - }); - } - moveFolder(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const userID = req.user._id; - const folderID = req.body.id; - const parent = req.body.parent; - yield folderService.moveFolder(userID, folderID, parent); - res.send(); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(e); - } - }); - } - renameFolder(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const userID = req.user._id; - const folderID = req.body.id; - const title = req.body.title; - yield folderService.renameFolder(userID, folderID, title); - res.send(); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(e); - } - }); - } -} -module.exports = FolderController; diff --git a/dist/controllers/storage.js b/dist/controllers/storage.js deleted file mode 100644 index b1acae1..0000000 --- a/dist/controllers/storage.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -const env = require("../enviroment/env"); -const disk = require('diskusage'); -class StorageController { - constructor() { - } - getStorageInfo(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const info = yield disk.check(env.root); - res.send(info); - } - catch (e) { - console.log(e); - res.status(500).send(e); - } - }); - } -} -module.exports = StorageController; diff --git a/dist/controllers/user.js b/dist/controllers/user.js deleted file mode 100644 index 34aeeff..0000000 --- a/dist/controllers/user.js +++ /dev/null @@ -1,121 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -const env = require("../enviroment/env"); -const UserService = require("../services/UserService"); -const UserProvider = new UserService(); -class UserController { - constructor() { - } - getUser(req, res) { - return __awaiter(this, void 0, void 0, function* () { - try { - const user = req.user; - user.tokens = undefined; - user.tempTokens = undefined; - user.password = undefined; - user.privateKey = undefined; - user.publicKey = undefined; - res.send(user); - } - catch (e) { - res.status(500).send(e); - } - }); - } - login(req, res) { - return __awaiter(this, void 0, void 0, function* () { - try { - const body = req.body; - const { user, token } = yield UserProvider.login(body); - user.tokens = undefined; - user.tempTokens = undefined; - user.password = undefined; - user.privateKey = undefined; - user.publicKey = undefined; - res.status(200).send({ user, token }); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(e); - } - }); - } - logout(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const user = req.user; - const token = req.encryptedToken; - yield UserProvider.logout(user, token); - res.send(); - } - catch (e) { - res.status(500).send(e); - } - }); - } - logoutAll(req, res) { - return __awaiter(this, void 0, void 0, function* () { - try { - const user = req.user; - yield UserProvider.logoutAll(user); - res.send(); - } - catch (e) { - res.status(500).send(e); - } - }); - } - createUser(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (env.createAcctBlocked) { - return yield res.status(401).send(); - } - try { - const { user, token } = yield UserProvider.create(req.body); - user.tokens = undefined; - user.tempTokens = undefined; - user.password = undefined; - user.privateKey = undefined; - user.publicKey = undefined; - res.status(201).send({ user, token }); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(e); - } - }); - } - changePassword(req, res) { - return __awaiter(this, void 0, void 0, function* () { - if (!req.user) { - return; - } - try { - const user = req.user; - const oldPassword = req.body.oldPassword; - const newPassword = req.body.newPassword; - const newToken = yield UserProvider.changePassword(user, oldPassword, newPassword); - res.send(newToken); - } - catch (e) { - const code = e.code || 500; - console.log(e); - res.status(code).send(e); - } - }); - } -} -module.exports = UserController; diff --git a/dist/db/mongoose.js b/dist/db/mongoose.js deleted file mode 100644 index 63e99c8..0000000 --- a/dist/db/mongoose.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -const mongoose = require("mongoose"); -const env = require("../enviroment/env"); -mongoose.connect(env.mongoURL, { - useNewUrlParser: true, - useCreateIndex: true, - useUnifiedTopology: true, -}); -module.exports = mongoose; diff --git a/dist/db/mongooseServerUtils.js b/dist/db/mongooseServerUtils.js deleted file mode 100644 index 14e286d..0000000 --- a/dist/db/mongooseServerUtils.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -const mongoose = require("mongoose"); -const env = require("../enviroment/env"); -mongoose.connect(env.mongoURL, { - useNewUrlParser: true, - useCreateIndex: true, - useUnifiedTopology: true, - socketTimeoutMS: 30000000, - keepAlive: true, -}); -module.exports = mongoose; diff --git a/dist/db/utils/fileUtils/index.js b/dist/db/utils/fileUtils/index.js deleted file mode 100644 index 1942447..0000000 --- a/dist/db/utils/fileUtils/index.js +++ /dev/null @@ -1,117 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -const mongoose = require("../../mongoose"); -const conn = mongoose.connection; -const ObjectID = require('mongodb').ObjectID; -const DbUtil = function () { - this.getPublicFile = (fileID) => __awaiter(this, void 0, void 0, function* () { - let file = yield conn.db.collection("fs.files") - .findOne({ "_id": ObjectID(fileID) }); - return file; - }); - this.removeOneTimePublicLink = (fileID) => __awaiter(this, void 0, void 0, function* () { - const file = yield conn.db.collection("fs.files") - .findOneAndUpdate({ "_id": ObjectID(fileID) }, { - "$unset": { "metadata.linkType": "", "metadata.link": "" } - }); - return file; - }); - this.removeLink = (fileID, userID) => __awaiter(this, void 0, void 0, function* () { - const file = yield conn.db.collection("fs.files") - .findOneAndUpdate({ "_id": ObjectID(fileID), - "metadata.owner": userID }, { "$unset": { "metadata.linkType": "", "metadata.link": "" } }); - return file; - }); - this.makePublic = (fileID, userID, token) => __awaiter(this, void 0, void 0, function* () { - const file = yield conn.db.collection("fs.files") - .findOneAndUpdate({ "_id": ObjectID(fileID), - "metadata.owner": userID }, { "$set": { "metadata.linkType": "public", "metadata.link": token } }); - return file; - }); - this.getPublicInfo = (fileID, tempToken) => __awaiter(this, void 0, void 0, function* () { - const file = yield conn.db.collection("fs.files") - .findOne({ "_id": ObjectID(fileID), "metadata.link": tempToken }); - return file; - }); - this.makeOneTimePublic = (fileID, userID, token) => __awaiter(this, void 0, void 0, function* () { - const file = yield conn.db.collection("fs.files") - .findOneAndUpdate({ "_id": ObjectID(fileID), - "metadata.owner": userID }, { "$set": { "metadata.linkType": "one", "metadata.link": token } }); - return file; - }); - this.getFileInfo = (fileID, userID) => __awaiter(this, void 0, void 0, function* () { - const file = yield conn.db.collection("fs.files") - .findOne({ "metadata.owner": userID, "_id": ObjectID(fileID) }); - return file; - }); - this.getQuickList = (userID) => __awaiter(this, void 0, void 0, function* () { - const fileList = yield conn.db.collection("fs.files") - .find({ "metadata.owner": userID }) - .sort({ uploadDate: -1 }) - .limit(10) - .toArray(); - return fileList; - }); - this.getList = (queryObj, sortBy, limit) => __awaiter(this, void 0, void 0, function* () { - const fileList = yield conn.db.collection("fs.files") - .find(queryObj) - .sort(sortBy) - .limit(limit) - .toArray(); - return fileList; - }); - this.removeTempToken = (user, tempToken) => __awaiter(this, void 0, void 0, function* () { - user.tempTokens = user.tempTokens.filter((filterToken) => { - return filterToken.token !== tempToken; - }); - return user; - }); - this.removeTranscodeVideo = (fileID, userID) => __awaiter(this, void 0, void 0, function* () { - const file = yield conn.db.collection("fs.files") - .findOneAndUpdate({ "_id": ObjectID(fileID), "metadata.owner": userID }, { "$unset": { "metadata.transcoded": "", "metadata.transcodedIV": "", - "metadata.transcoded_size": "", "metadata.transcodedID": "" } }); - return file; - }); - this.getFileSearchList = (userID, searchQuery) => __awaiter(this, void 0, void 0, function* () { - const fileList = yield conn.db.collection("fs.files") - .find({ "metadata.owner": userID, "filename": searchQuery }) - .limit(10) - .toArray(); - return fileList; - }); - this.renameFile = (fileID, userID, title) => __awaiter(this, void 0, void 0, function* () { - const file = yield conn.db.collection("fs.files") - .findOneAndUpdate({ "_id": ObjectID(fileID), - "metadata.owner": userID }, { "$set": { "filename": title } }); - return file; - }); - this.moveFile = (fileID, userID, parent, parentList) => __awaiter(this, void 0, void 0, function* () { - const file = yield conn.db.collection("fs.files") - .findOneAndUpdate({ "_id": ObjectID(fileID), - "metadata.owner": userID }, { "$set": { "metadata.parent": parent, "metadata.parentList": parentList } }); - return file; - }); - this.getFileListByParent = (userID, parentListString) => __awaiter(this, void 0, void 0, function* () { - const fileList = yield conn.db.collection("fs.files") - .find({ "metadata.owner": userID, - "metadata.parentList": { $regex: `.*${parentListString}.*` } }).toArray(); - return fileList; - }); - this.getFileListByOwner = (userID) => __awaiter(this, void 0, void 0, function* () { - const fileList = yield conn.db.collection("fs.files") - .find({ "metadata.owner": userID }).toArray(); - return fileList; - }); - this.removeChunksByID = (fileID) => __awaiter(this, void 0, void 0, function* () { - yield conn.db.collection("fs.chunks").deleteMany({ files_id: fileID }); - }); -}; -module.exports = DbUtil; diff --git a/dist/db/utils/folderUtils/index.js b/dist/db/utils/folderUtils/index.js deleted file mode 100644 index f4c3ea4..0000000 --- a/dist/db/utils/folderUtils/index.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -const Folder = require("../../../models/folder"); -const ObjectID = require('mongodb').ObjectID; -const DbUtil = function () { - this.getFolderSearchList = (userID, searchQuery) => __awaiter(this, void 0, void 0, function* () { - const folderList = yield Folder.find({ "owner": userID, "name": searchQuery }).limit(10); - return folderList; - }); - this.getFolderInfo = (folderID, userID) => __awaiter(this, void 0, void 0, function* () { - const folder = yield Folder.findOne({ "owner": userID, "_id": ObjectID(folderID) }); - return folder; - }); - this.getFolderListByParent = (userID, parent, sortBy) => __awaiter(this, void 0, void 0, function* () { - const folderList = yield Folder.find({ "owner": userID, "parent": parent }) - .sort(sortBy); - return folderList; - }); - this.getFolderListBySearch = (userID, searchQuery, sortBy) => __awaiter(this, void 0, void 0, function* () { - const folderList = yield Folder.find({ "name": searchQuery, "owner": userID }) - .sort(sortBy); - return folderList; - }); - this.moveFolder = (folderID, userID, parent, parentList) => __awaiter(this, void 0, void 0, function* () { - const folder = yield Folder.findOneAndUpdate({ "_id": ObjectID(folderID), - "owner": userID }, { "$set": { "parent": parent, "parentList": parentList } }); - return folder; - }); - this.renameFolder = (folderID, userID, title) => __awaiter(this, void 0, void 0, function* () { - const folder = yield Folder.findOneAndUpdate({ "_id": ObjectID(folderID), - "owner": userID }, { "$set": { "name": title } }); - return folder; - }); - this.findAllFoldersByParent = (parentID, userID) => __awaiter(this, void 0, void 0, function* () { - const folderList = yield Folder.find({ "parentList": parentID, "owner": userID }); - return folderList; - }); -}; -module.exports = DbUtil; diff --git a/dist/enviroment/env.js b/dist/enviroment/env.js deleted file mode 100644 index 19007e7..0000000 --- a/dist/enviroment/env.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -module.exports = { - key: process.env.KEY, - newKey: process.env.NEW_KEY, - password: process.env.PASSWORD, - createAcctBlocked: process.env.BLOCK_CREATE_ACCOUNT, - root: process.env.ROOT, - url: process.env.URL, - mongoURL: process.env.MONGODB_URL -}; diff --git a/dist/express-routers/file.js b/dist/express-routers/file.js deleted file mode 100644 index 40772e5..0000000 --- a/dist/express-routers/file.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const express_1 = require("express"); -const router = express_1.Router(); -const auth = require("../middleware/auth"); -const tempAuth = require("../middleware/tempAuth"); -const tempAuthVideo = require("../middleware/tempAuthVideo"); -const file_1 = __importDefault(require("../controllers/file")); -const fileController = new file_1.default(); -router.post("/file-service/upload", auth, fileController.uploadFile); -//router.post("/file-service/transcode-video", auth, fileController.transcodeVideo); -router.get("/file-service/thumbnail/:id", auth, fileController.getThumbnail); -router.get("/file-service/full-thumbnail/:id", auth, fileController.getFullThumbnail); -router.get("/file-service/public/download/:id/:tempToken", fileController.getPublicDownload); -router.get("/file-service/public/info/:id/:tempToken", fileController.getPublicInfo); -router.get("/file-service/info/:id", auth, fileController.getFileInfo); -router.get("/file-service/quick-list", auth, fileController.getQuickList); -router.get("/file-service/list", auth, fileController.getList); -router.get("/file-service/download/get-token", auth, fileController.getDownloadToken); -router.get("/file-service/download/get-token-video", auth, fileController.getDownloadTokenVideo); -//router.get("/file-service/stream-video-transcoded/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamTranscodedVideo); -router.get("/file-service/stream-video/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamVideo); -router.get("/file-service/download/:id/:tempToken", tempAuth, fileController.downloadFile); -router.get("/file-service/suggested-list", auth, fileController.getSuggestedList); -router.patch("/file-service/make-public/:id", auth, fileController.makePublic); -router.patch("/file-service/make-one/:id", auth, fileController.makeOneTimePublic); -router.patch("/file-service/rename", auth, fileController.renameFile); -router.patch("/file-service/move", auth, fileController.moveFile); -router.delete("/file-service/remove-link/:id", auth, fileController.removeLink); -router.delete("/file-service/remove/token-video/:tempToken", auth, fileController.removeTempToken); -//router.delete("/file-service/transcode-video/remove", auth, fileController.removeTranscodeVideo); -router.delete("/file-service/remove", auth, fileController.deleteFile); -module.exports = router; diff --git a/dist/express-routers/folder.js b/dist/express-routers/folder.js deleted file mode 100644 index 17d2f1c..0000000 --- a/dist/express-routers/folder.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const express_1 = require("express"); -const router = express_1.Router(); -const auth = require("../middleware/auth"); -const FolderController = require("../controllers/folder"); -const folderController = new FolderController(); -router.post("/folder-service/upload", auth, folderController.uploadFolder); -router.delete("/folder-service/remove", auth, folderController.deleteFolder); -router.delete("/folder-service/remove-all", auth, folderController.deleteAll); -router.get("/folder-service/info/:id", auth, folderController.getInfo); -router.get("/folder-service/subfolder-list", auth, folderController.getSubfolderList); -router.get("/folder-service/list", auth, folderController.getFolderList); -router.patch("/folder-service/rename", auth, folderController.renameFolder); -router.patch("/folder-service/move", auth, folderController.moveFolder); -module.exports = router; diff --git a/dist/express-routers/storage.js b/dist/express-routers/storage.js deleted file mode 100644 index 3436a64..0000000 --- a/dist/express-routers/storage.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const express_1 = require("express"); -const router = express_1.Router(); -const auth = require("../middleware/auth"); -const StorageController = require("../controllers/storage"); -const storageController = new StorageController(); -router.get("/storage-service/info", auth, storageController.getStorageInfo); -module.exports = router; diff --git a/dist/express-routers/user.js b/dist/express-routers/user.js deleted file mode 100644 index 4a8a393..0000000 --- a/dist/express-routers/user.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const express_1 = require("express"); -const router = express_1.Router(); -const auth = require("../middleware/auth"); -const UserController = require("../controllers/user"); -const userController = new UserController(); -router.get("/user-service/user", auth, userController.getUser); -router.post("/user-service/login", userController.login); -router.post("/user-service/logout", auth, userController.logout); -router.post("/user-service/logout-all", auth, userController.logoutAll); -router.post("/user-service/create", userController.createUser); -router.post("/user-service/change-password", auth, userController.changePassword); -module.exports = router; diff --git a/dist/key/getKey.js b/dist/key/getKey.js deleted file mode 100644 index 87cdd47..0000000 --- a/dist/key/getKey.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -const prompt = require('password-prompt'); -const env = require("../enviroment/env"); -const crypto = require("crypto"); -const getKey = () => __awaiter(void 0, void 0, void 0, function* () { - if (process.env.KEY) { - // For Docker - env.key = process.env.KEY; - } - else if (process.env.NODE_ENV) { - let password = yield prompt("Enter Server Encryption Password: ", { method: "hide" }); - password = crypto.createHash("md5").update(password).digest("hex"); - env.key = password; - } - else { - let password = "1234"; - password = crypto.createHash("md5").update(password).digest("hex"); - env.key = password; - } -}); -module.exports = getKey; diff --git a/dist/middleware/auth.js b/dist/middleware/auth.js deleted file mode 100644 index 0af0b65..0000000 --- a/dist/middleware/auth.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const jwt = require("jsonwebtoken"); -const user_1 = __importDefault(require("../models/user")); -const env = require("../enviroment/env"); -const auth = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { - try { - const token = req.header("Authorization").replace("Bearer ", ""); - const decoded = yield jwt.verify(token, env.password); - const iv = decoded.iv; - const user = yield user_1.default.findOne({ _id: decoded._id }); - const encrpytionKey = user.getEncryptionKey(); - const encryptedToken = user.encryptToken(token, encrpytionKey, iv); - let tokenFound = false; - for (let i = 0; i < user.tokens.length; i++) { - const currentToken = user.tokens[i].token; - if (currentToken === encryptedToken) { - tokenFound = true; - break; - } - } - if (!user || !tokenFound) { - throw new Error("User not found"); - } - else { - req.token = token; - req.encryptedToken = encryptedToken; - req.user = user; - next(); - } - } - catch (e) { - console.log(e); - res.status(401).send({ error: "Error Authenticating" }); - } -}); -module.exports = auth; diff --git a/dist/middleware/tempAuth.js b/dist/middleware/tempAuth.js deleted file mode 100644 index 6cf4982..0000000 --- a/dist/middleware/tempAuth.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const jwt = require("jsonwebtoken"); -const user_1 = __importDefault(require("../models/user")); -const env = require("../enviroment/env"); -const tempAuth = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { - try { - const token = req.params.tempToken; - const decoded = yield jwt.verify(token, env.password); - const iv = decoded.iv; - const user = yield user_1.default.findOne({ _id: decoded._id }); - const encrpytionKey = user.getEncryptionKey(); - const encryptedToken = user.encryptToken(token, encrpytionKey, iv); - let tokenFound = false; - for (let i = 0; i < user.tempTokens.length; i++) { - const currentToken = user.tempTokens[i].token; - if (currentToken === encryptedToken) { - tokenFound = true; - break; - } - } - if (!user || !tokenFound) { - throw new Error("User Not Found"); - } - else { - user.tempTokens = user.tempTokens.filter((filterToken) => { - return filterToken.token !== encryptedToken; - }); - yield user.save(); - req.user = user; - req.auth = true; - req.encryptedTempToken = encryptedToken; - next(); - } - } - catch (e) { - console.log(e); - res.status(401).send(); - } -}); -module.exports = tempAuth; diff --git a/dist/middleware/tempAuthVideo.js b/dist/middleware/tempAuthVideo.js deleted file mode 100644 index 3f8931c..0000000 --- a/dist/middleware/tempAuthVideo.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const jwt = require("jsonwebtoken"); -const user_1 = __importDefault(require("../models/user")); -const env = require("../enviroment/env"); -const tempAuthVideo = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { - try { - const token = req.params.tempToken; - const decoded = yield jwt.verify(token, env.password); - const iv = decoded.iv; - if (req.params.uuid !== decoded.cookie) { - throw new Error("Cookie mismatch"); - } - const user = yield user_1.default.findOne({ _id: decoded._id }); - const encrpytionKey = user.getEncryptionKey(); - const encryptedToken = user.encryptToken(token, encrpytionKey, iv); - let tokenFound = false; - for (let i = 0; i < user.tempTokens.length; i++) { - const currentToken = user.tempTokens[i].token; - if (currentToken === encryptedToken) { - tokenFound = true; - break; - } - } - if (!user || !tokenFound) { - throw new Error("User not found"); - } - else { - yield user.save(); - req.user = user; - req.auth = true; - req.encryptedTempToken = encryptedToken; - next(); - } - } - catch (e) { - console.log(e); - res.status(401).send(); - } -}); -module.exports = tempAuthVideo; diff --git a/dist/models/file.js b/dist/models/file.js deleted file mode 100644 index 4f4a7e4..0000000 --- a/dist/models/file.js +++ /dev/null @@ -1,63 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const mongoose_1 = __importDefault(require("mongoose")); -const mongodb_1 = require("mongodb"); -const fileSchema = new mongoose_1.default.Schema({ - length: { - type: Number, - required: true, - }, - chunkSize: { - type: Number, - }, - uploadDate: { - type: Date, - required: true - }, - filename: { - type: String, - required: true - }, - metadata: { - type: { - owner: { - type: String, - required: true - }, - parent: { - type: String, - required: true - }, - parentList: { - type: String, - required: true - }, - hasThumbnail: { - type: Boolean, - required: true - }, - isVideo: { - type: Boolean, - required: true - }, - thumbnailID: String, - size: { - type: Number, - required: true, - }, - IV: { - type: mongodb_1.Binary, - required: true - }, - linkType: String, - link: String, - filePath: String - }, - required: true - } -}); -const File = mongoose_1.default.model("fs.files", fileSchema); -exports.default = File; diff --git a/dist/models/fileSystem.js b/dist/models/fileSystem.js deleted file mode 100644 index 458df75..0000000 --- a/dist/models/fileSystem.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const mongoose_1 = __importDefault(require("mongoose")); -const fileSystemSchema = new mongoose_1.default.Schema({ - name: { - type: String, - required: true, - }, - owner: { - type: String, - required: true - }, - path: { - type: String, - required: true - }, - parent: { - type: String, - required: true, - }, - parentList: { - type: Array, - required: true - }, - hasThumbnail: { - type: Boolean, - required: true - }, - thumbnailID: { - type: String - }, - originalSize: { - type: Number, - required: true - }, - size: { - type: Number, - required: true - }, - isVideo: { - type: Boolean, - required: true - }, - IV: { - type: Buffer, - required: true - } -}, { - timestamps: true -}); -const FileSystem = mongoose_1.default.model("FileSystem", fileSystemSchema); -exports.default = FileSystem; diff --git a/dist/models/folder.js b/dist/models/folder.js deleted file mode 100644 index 39a8948..0000000 --- a/dist/models/folder.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -const mongoose = require("mongoose"); -const folderSchema = new mongoose.Schema({ - name: { - type: String, - required: true, - }, - parent: { - type: String, - required: true, - }, - owner: { - type: String, - required: true - }, - parentList: { - type: Array, - required: true - } -}, { - timestamps: true -}); -const Folder = mongoose.model("Folder", folderSchema); -module.exports = Folder; diff --git a/dist/models/thumbnail.js b/dist/models/thumbnail.js deleted file mode 100644 index a4e545c..0000000 --- a/dist/models/thumbnail.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const mongoose_1 = __importDefault(require("mongoose")); -const thumbnailSchema = new mongoose_1.default.Schema({ - name: { - type: String, - required: true, - }, - owner: { - type: String, - required: true - }, - data: { - type: Buffer, - }, - path: { - type: String - }, - IV: { - type: Buffer, - } -}, { - timestamps: true -}); -const Thumbnail = mongoose_1.default.model("Thumbnail", thumbnailSchema); -exports.default = Thumbnail; diff --git a/dist/models/user.js b/dist/models/user.js deleted file mode 100644 index 08747d4..0000000 --- a/dist/models/user.js +++ /dev/null @@ -1,230 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const mongoose_1 = __importDefault(require("mongoose")); -const validator = require("validator"); -const crypto = require("crypto"); -const bcrypt = require("bcrypt"); -const jwt = require("jsonwebtoken"); -const env = require("../enviroment/env"); -const userSchema = new mongoose_1.default.Schema({ - name: { - type: String, - trim: true - }, - email: { - type: String, - required: true, - trim: true, - unique: true, - lowercase: true, - validate(value) { - if (!validator.isEmail(value)) { - throw new Error("Email is invalid"); - } - } - }, - password: { - type: String, - trim: true, - required: true, - validate(value) { - if (value.length < 6) { - throw new Error("Password Length Not Sufficent"); - } - } - }, - tokens: [{ - token: { - type: String, - required: true - } - }], - tempTokens: [{ - token: { - type: String, - required: true - } - }], - privateKey: { - type: String, - }, - publicKey: { - type: String, - } -}, { - timestamps: true -}); -// userSchema.virtual("files", { -// ref: "fs.files", -// localField: "_id" -// }) -userSchema.pre("save", function (next) { - return __awaiter(this, void 0, void 0, function* () { - const user = this; - if (user.isModified("password")) { - user.password = yield bcrypt.hash(user.password, 8); - } - next(); - }); -}); -userSchema.statics.findByCreds = (email, password) => __awaiter(void 0, void 0, void 0, function* () { - const user = yield User.findOne({ email }); - if (!user) { - throw new Error("User not found"); - } - const isMatch = yield bcrypt.compare(password, user.password); - if (!isMatch) { - console.log("incorrect password"); - throw new Error("Incorrect password"); - } - return user; -}); -userSchema.methods.toJSON = function () { - const user = this; - const userObject = user.toObject(); - delete userObject.password; - delete userObject.tokens; - delete userObject.tempTokens; - return userObject; -}; -userSchema.methods.generateAuthToken = function () { - return __awaiter(this, void 0, void 0, function* () { - const iv = crypto.randomBytes(16); - const user = this; - let token = jwt.sign({ _id: user._id.toString(), iv }, env.password); - const publicKey = user.publicKey; - const encryptionKey = user.getEncryptionKey(); - const encryptedToken = user.encryptToken(token, encryptionKey, iv); - user.tokens = user.tokens.concat({ token: encryptedToken }); - yield user.save(); - return token; - }); -}; -userSchema.methods.encryptToken = function (token, key, iv) { - iv = Buffer.from(iv, "hex"); - const TOKEN_CIPHER_KEY = crypto.createHash('sha256').update(key).digest(); - const cipher = crypto.createCipheriv('aes-256-cbc', TOKEN_CIPHER_KEY, iv); - let encryptedText = cipher.update(token); - encryptedText = Buffer.concat([encryptedText, cipher.final()]).toString("hex"); - return encryptedText; -}; -userSchema.methods.decryptToken = function (encryptedToken, key, iv) { - encryptedToken = Buffer.from(encryptedToken, "hex"); - iv = Buffer.from(iv, "hex"); - const TOKEN_CIPHER_KEY = crypto.createHash('sha256').update(key).digest(); - const decipher = crypto.createDecipheriv('aes-256-cbc', TOKEN_CIPHER_KEY, iv); - let tokenDecrypted = decipher.update(encryptedToken); - tokenDecrypted = Buffer.concat([tokenDecrypted, decipher.final()]).toString(); - return tokenDecrypted; -}; -userSchema.methods.generateEncryptionKeys = function () { - return __awaiter(this, void 0, void 0, function* () { - const user = this; - const userPassword = user.password; - const masterPassword = env.key; - const randomKey = crypto.randomBytes(32); - const iv = crypto.randomBytes(16); - const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); - const cipher = crypto.createCipheriv('aes-256-cbc', USER_CIPHER_KEY, iv); - let encryptedText = cipher.update(randomKey); - encryptedText = Buffer.concat([encryptedText, cipher.final()]); - const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); - const masterCipher = crypto.createCipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv); - let masterEncryptedText = masterCipher.update(encryptedText); - masterEncryptedText = Buffer.concat([masterEncryptedText, masterCipher.final()]).toString("hex"); - user.privateKey = masterEncryptedText; - user.publicKey = iv.toString("hex"); - yield user.save(); - }); -}; -userSchema.methods.getEncryptionKey = function () { - try { - const user = this; - const userPassword = user.password; - const masterEncryptedText = user.privateKey; - const masterPassword = env.key; - const iv = Buffer.from(user.publicKey, "hex"); - const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); - const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); - const unhexMasterText = Buffer.from(masterEncryptedText, "hex"); - const masterDecipher = crypto.createDecipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv); - let masterDecrypted = masterDecipher.update(unhexMasterText); - masterDecrypted = Buffer.concat([masterDecrypted, masterDecipher.final()]); - let decipher = crypto.createDecipheriv('aes-256-cbc', USER_CIPHER_KEY, iv); - let decrypted = decipher.update(masterDecrypted); - decrypted = Buffer.concat([decrypted, decipher.final()]); - return decrypted; - } - catch (e) { - console.log("Get Encryption Key Error"); - return undefined; - } -}; -userSchema.methods.changeEncryptionKey = function (randomKey) { - return __awaiter(this, void 0, void 0, function* () { - const user = this; - const userPassword = user.password; - const masterPassword = env.key; - const iv = crypto.randomBytes(16); - const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); - const cipher = crypto.createCipheriv('aes-256-cbc', USER_CIPHER_KEY, iv); - let encryptedText = cipher.update(randomKey); - encryptedText = Buffer.concat([encryptedText, cipher.final()]); - const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); - const masterCipher = crypto.createCipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv); - let masterEncryptedText = masterCipher.update(encryptedText); - masterEncryptedText = Buffer.concat([masterEncryptedText, masterCipher.final()]).toString("hex"); - user.privateKey = masterEncryptedText; - user.publicKey = iv.toString("hex"); - yield user.save(); - }); -}; -userSchema.methods.generateTempAuthToken = function () { - return __awaiter(this, void 0, void 0, function* () { - // const user = this; - // let token = jwt.sign({_id:user._id.toString()}, env.password); - // const publicKey = user.publicKey; - // const encryptionKey = user.getEncryptionKey(); - // const encryptedToken = user.encryptToken(token, encryptionKey, publicKey); - // user.tokens = user.tokens.concat({token: encryptedToken}); - // await user.save(); - // return token; - const iv = crypto.randomBytes(16); - const user = this; - const token = jwt.sign({ _id: user._id.toString(), iv }, env.password, { expiresIn: 2 }); - const publicKey = user.publicKey; - const encryptionKey = user.getEncryptionKey(); - const encryptedToken = user.encryptToken(token, encryptionKey, iv); - user.tempTokens = user.tempTokens.concat({ token: encryptedToken }); - yield user.save(); - return token; - }); -}; -userSchema.methods.generateTempAuthTokenVideo = function (cookie) { - return __awaiter(this, void 0, void 0, function* () { - const iv = crypto.randomBytes(16); - const user = this; - const token = jwt.sign({ _id: user._id.toString(), cookie, iv }, env.password, { expiresIn: "5h" }); - //const publicKey = user.publicKey; - const encryptionKey = user.getEncryptionKey(); - const encryptedToken = user.encryptToken(token, encryptionKey, iv); - //user.tempTokens = user.tempTokens.concat({token}); - user.tempTokens = user.tempTokens.concat({ token: encryptedToken }); - yield user.save(); - return token; - }); -}; -const User = mongoose_1.default.model("User", userSchema); -exports.default = User; diff --git a/dist/server/server.js b/dist/server/server.js deleted file mode 100644 index cb5505f..0000000 --- a/dist/server/server.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; -const express = require("express"); -const app = express(); -const path = require("path"); -const publicPath = path.join(__dirname, "..", "..", "public"); -const userRouter = require("../express-routers/user"); -const fileRouter = require("../express-routers/file"); -const folderRouter = require("../express-routers/folder"); -const storageRouter = require("../express-routers/storage"); -const bodyParser = require('body-parser'); -const https = require("https"); -const fs = require("fs"); -const helmet = require("helmet"); -const busboy = require("connect-busboy"); -const compression = require("compression"); -const http = require("http"); -let server; -let serverHttps; -if (process.env.NODE_ENV === 'production') { - const cert = fs.readFileSync("certificate.crt"); - const ca = fs.readFileSync("certificate.ca-bundle"); - const key = fs.readFileSync("certificate.key"); - const options = { - cert, - ca, - key - }; - serverHttps = https.createServer(options, app); -} -server = http.createServer(app); -require("../db/mongoose"); -app.use(helmet()); -app.use(compression()); -app.use(express.json()); -app.use(express.static(publicPath)); -app.use(bodyParser.json({ limit: "50mb" })); -app.use(bodyParser.urlencoded({ limit: "50mb", extended: true, parameterLimit: 50000 })); -app.use(busboy({ - highWaterMark: 2 * 1024 * 1024, -})); -app.use(userRouter, fileRouter, folderRouter, storageRouter); -const nodeMode = process.env.NODE_ENV ? "Production" : "Development/Testing"; -console.log("Node Enviroment Mode:", nodeMode); -app.get("*", (req, res) => { - res.sendFile(path.join(publicPath, "index.html")); -}); -if (process.env.NODE_ENV === 'production') { - module.exports = { server, serverHttps }; -} -else { - module.exports = server; -} diff --git a/dist/server/serverStart.js b/dist/server/serverStart.js deleted file mode 100644 index ab1b73b..0000000 --- a/dist/server/serverStart.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -const getKey = require("../key/getKey"); -const serverStart = () => __awaiter(void 0, void 0, void 0, function* () { - yield getKey(); - if (process.env.NODE_ENV === 'production') { - const { server, serverHttps } = require("./server"); - server.listen(process.env.HTTP_PORT, process.env.URL, () => { - console.log("Http Server Running On Port:", process.env.HTTP_PORT); - }); - serverHttps.listen(process.env.HTTPS_PORT, function () { - console.log('Https Server Running On Port:', process.env.HTTPS_PORT); - }); - } - else if (process.env.NODE_ENV === 'production-no-ssl') { - const server = require("./server"); - server.listen(process.env.HTTP_PORT, process.env.URL, () => { - console.log("Http Server (No-SSL) Running On Port:", process.env.HTTP_PORT); - }); - } - else { - const server = require("./server"); - server.listen(process.env.HTTP_PORT, process.env.URL, () => { - console.log("Development Server Running On Port:", process.env.HTTP_PORT); - }); - } -}); -serverStart(); diff --git a/dist/services/ChunkService/FileSystemService.js b/dist/services/ChunkService/FileSystemService.js deleted file mode 100644 index ff90e52..0000000 --- a/dist/services/ChunkService/FileSystemService.js +++ /dev/null @@ -1,188 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const NotAuthorizedError_1 = __importDefault(require("../../utils/NotAuthorizedError")); -const NotFoundError_1 = __importDefault(require("../../utils/NotFoundError")); -const crypto_1 = __importDefault(require("crypto")); -const getBusboyData_1 = __importDefault(require("./utils/getBusboyData")); -const videoChecker_1 = __importDefault(require("../../utils/videoChecker")); -const fs_1 = __importDefault(require("fs")); -const uuid_1 = __importDefault(require("uuid")); -const awaitUploadStream_1 = __importDefault(require("./utils/awaitUploadStream")); -const file_1 = __importDefault(require("../../models/file")); -const getFileSize_1 = __importDefault(require("./utils/getFileSize")); -const index_1 = __importDefault(require("../../db/utils/fileUtils/index")); -const awaitStream_1 = __importDefault(require("./utils/awaitStream")); -const createThumbnailFS_1 = __importDefault(require("../FileService/utils/createThumbnailFS")); -const imageChecker_1 = __importDefault(require("../../utils/imageChecker")); -const thumbnail_1 = __importDefault(require("../../models/thumbnail")); -const streamToBuffer_1 = __importDefault(require("../../utils/streamToBuffer")); -const user_1 = __importDefault(require("../../models/user")); -const dbUtilsFile = new index_1.default(); -// implements ChunkInterface -class FileSystemService { - constructor() { - this.uploadFile = (user, busboy, req) => __awaiter(this, void 0, void 0, function* () { - const password = user.getEncryptionKey(); - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - const initVect = crypto_1.default.randomBytes(16); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const cipher = crypto_1.default.createCipheriv('aes256', CIPHER_KEY, initVect); - const { file, filename, formData } = yield getBusboyData_1.default(busboy); - const parent = formData.get("parent") || "/"; - const parentList = formData.get("parentList") || "/"; - const size = formData.get("size") || ""; - let hasThumbnail = false; - let thumbnailID = ""; - const isVideo = videoChecker_1.default(filename); - const systemFileName = uuid_1.default.v4(); - const metadata = { - owner: user._id, - parent, - parentList, - hasThumbnail, - thumbnailID, - isVideo, - size, - IV: initVect, - filePath: `/Users/kylehoell/Documents/fstestdata/${systemFileName}` - }; - const fileWriteStream = fs_1.default.createWriteStream(metadata.filePath); - yield awaitUploadStream_1.default(file.pipe(cipher), fileWriteStream, req); - const date = new Date(); - const encryptedFileSize = yield getFileSize_1.default(metadata.filePath); - const currentFile = new file_1.default({ - filename, - uploadDate: date.toISOString(), - length: encryptedFileSize, - metadata - }); - yield currentFile.save(); - console.log(currentFile); - const imageCheck = imageChecker_1.default(currentFile.filename); - if (currentFile.length < 15728640 && imageCheck) { - const updatedFile = yield createThumbnailFS_1.default(currentFile, filename, user); - return updatedFile; - } - else { - return currentFile; - } - }); - this.downloadFile = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { - const currentFile = yield dbUtilsFile.getFileInfo(fileID, user._id); - if (!currentFile) - throw new NotFoundError_1.default("Download File Not Found"); - const password = user.getEncryptionKey(); - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - const filePath = currentFile.metadata.filePath; - const IV = currentFile.metadata.IV.buffer; - const readStream = fs_1.default.createReadStream(filePath); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); - res.set('Content-Length', currentFile.metadata.size.toString()); - yield awaitStream_1.default(readStream.pipe(decipher), res); - }); - this.getThumbnail = (user, id) => __awaiter(this, void 0, void 0, function* () { - const password = user.getEncryptionKey(); - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - const thumbnail = yield thumbnail_1.default.findById(id); - if (thumbnail.owner !== user._id.toString()) { - throw new NotAuthorizedError_1.default('Thumbnail Unauthorized Error'); - } - const iv = thumbnail.IV; - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv("aes256", CIPHER_KEY, iv); - const readStream = fs_1.default.createReadStream(thumbnail.path); - const bufferData = yield streamToBuffer_1.default(readStream.pipe(decipher)); - return bufferData; - }); - this.getFullThumbnail = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { - const userID = user._id; - const file = yield dbUtilsFile.getFileInfo(fileID, userID); - if (!file) - throw new NotFoundError_1.default("File Thumbnail Not Found"); - const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer; - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - const readStream = fs_1.default.createReadStream(file.metadata.filePath); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size.toString()); - console.log("Sending Full Thumbnail..."); - yield awaitStream_1.default(readStream.pipe(decipher), res); - console.log("Full thumbnail sent"); - }); - this.streamVideo = (user, fileID, headers, res) => __awaiter(this, void 0, void 0, function* () { - const userID = user._id; - const currentFile = yield dbUtilsFile.getFileInfo(fileID, userID); - if (!currentFile) - throw new NotFoundError_1.default("Video File Not Found"); - const password = user.getEncryptionKey(); - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - const fileSize = currentFile.metadata.size; - const range = headers.range; - const parts = range.replace(/bytes=/, "").split("-"); - let start = parseInt(parts[0], 10); - let end = parts[1] - ? parseInt(parts[1], 10) - : fileSize - 1; - const chunksize = (end - start) + 1; - const IV = currentFile.metadata.IV.buffer; - let head = { - 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, - 'Accept-Ranges': 'bytes', - 'Content-Length': chunksize, - 'Content-Type': 'video/mp4' - }; - const readStream = fs_1.default.createReadStream(currentFile.metadata.filePath, { start: start, - end: end }); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - res.writeHead(206, head); - yield awaitStream_1.default(readStream.pipe(decipher), res); - }); - this.getPublicDownload = (fileID, tempToken, res) => __awaiter(this, void 0, void 0, function* () { - const file = yield dbUtilsFile.getPublicFile(fileID); - if (!file || !file.metadata.link || file.metadata.link !== tempToken) { - throw new NotAuthorizedError_1.default("File Not Public"); - } - const user = yield user_1.default.findById(file.metadata.owner); - const password = user.getEncryptionKey(); - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - const IV = file.metadata.IV.buffer; - const readStream = fs_1.default.createReadStream(file.metadata.filePath); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size.toString()); - yield awaitStream_1.default(readStream.pipe(decipher), res); - if (file.metadata.linkType === "one") { - console.log("removing public link"); - yield dbUtilsFile.removeOneTimePublicLink(fileID); - } - }); - } -} -exports.default = FileSystemService; diff --git a/dist/services/ChunkService/MongoService.js b/dist/services/ChunkService/MongoService.js deleted file mode 100644 index 10188e3..0000000 --- a/dist/services/ChunkService/MongoService.js +++ /dev/null @@ -1,184 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const mongoose_1 = __importDefault(require("../../db/mongoose")); -const conn = mongoose_1.default.connection; -const DbUtilFolder = require("../../db/utils/folderUtils"); -const index_1 = __importDefault(require("../../db/utils/fileUtils/index")); -const crypto_1 = __importDefault(require("crypto")); -const videoChecker_1 = __importDefault(require("../../utils/videoChecker")); -const imageChecker_1 = __importDefault(require("../../utils/imageChecker")); -const mongodb_1 = require("mongodb"); -const createThumbnail_1 = __importDefault(require("../FileService/utils/createThumbnail")); -const thumbnail_1 = __importDefault(require("../../models/thumbnail")); -const NotAuthorizedError_1 = __importDefault(require("../../utils/NotAuthorizedError")); -const NotFoundError_1 = __importDefault(require("../../utils/NotFoundError")); -const awaitStream_1 = __importDefault(require("./utils/awaitStream")); -const awaitUploadStream_1 = __importDefault(require("./utils/awaitUploadStream")); -const user_1 = __importDefault(require("../../models/user")); -const getBusboyData_1 = __importDefault(require("./utils/getBusboyData")); -const dbUtilsFile = new index_1.default(); -const dbUtilsFolder = new DbUtilFolder(); -class MongoService { - constructor() { - this.uploadFile = (user, busboy, req) => __awaiter(this, void 0, void 0, function* () { - const password = user.getEncryptionKey(); - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - let bucketStream; - const initVect = crypto_1.default.randomBytes(16); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const cipher = crypto_1.default.createCipheriv('aes256', CIPHER_KEY, initVect); - const { file, filename, formData } = yield getBusboyData_1.default(busboy); - const parent = formData.get("parent") || "/"; - const parentList = formData.get("parentList") || "/"; - const size = formData.get("size") || ""; - let hasThumbnail = false; - let thumbnailID = ""; - const isVideo = videoChecker_1.default(filename); - const metadata = { - owner: user._id, - parent, - parentList, - hasThumbnail, - thumbnailID, - isVideo, - size, - IV: initVect - }; - let bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db); - bucketStream = bucket.openUploadStream(filename, { metadata }); - const finishedFile = yield awaitUploadStream_1.default(file.pipe(cipher), bucketStream, req); - const imageCheck = imageChecker_1.default(filename); - if (finishedFile.length < 15728640 && imageCheck) { - const updatedFile = yield createThumbnail_1.default(finishedFile, filename, user); - return updatedFile; - } - else { - return finishedFile; - } - }); - this.downloadFile = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { - const currentFile = yield dbUtilsFile.getFileInfo(fileID, user._id); - if (!currentFile) - throw new NotFoundError_1.default("Download File Not Found"); - const password = user.getEncryptionKey(); - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db); - const IV = currentFile.metadata.IV.buffer; - const readStream = bucket.openDownloadStream(new mongodb_1.ObjectID(fileID)); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); - res.set('Content-Length', currentFile.metadata.size.toString()); - yield awaitStream_1.default(readStream.pipe(decipher), res); - }); - this.getThumbnail = (user, id) => __awaiter(this, void 0, void 0, function* () { - const password = user.getEncryptionKey(); - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - const thumbnail = yield thumbnail_1.default.findById(id); - if (thumbnail.owner !== user._id.toString()) { - throw new NotAuthorizedError_1.default('Thumbnail Unauthorized Error'); - } - const iv = thumbnail.data.slice(0, 16); - const chunk = thumbnail.data.slice(16); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv("aes256", CIPHER_KEY, iv); - const decryptedThumbnail = Buffer.concat([decipher.update(chunk), decipher.final()]); - return decryptedThumbnail; - }); - this.getFullThumbnail = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { - const userID = user._id; - const file = yield dbUtilsFile.getFileInfo(fileID, userID); - if (!file) - throw new NotFoundError_1.default("File Thumbnail Not Found"); - const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db); - const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer; - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - const readStream = bucket.openDownloadStream(new mongodb_1.ObjectID(fileID)); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size.toString()); - console.log("Sending Full Thumbnail..."); - yield awaitStream_1.default(readStream.pipe(decipher), res); - console.log("Full thumbnail sent"); - }); - this.getPublicDownload = (fileID, tempToken, res) => __awaiter(this, void 0, void 0, function* () { - const file = yield dbUtilsFile.getPublicFile(fileID); - if (!file || !file.metadata.link || file.metadata.link !== tempToken) { - throw new NotAuthorizedError_1.default("File Not Public"); - } - const user = yield user_1.default.findById(file.metadata.owner); - const password = user.getEncryptionKey(); - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db); - const IV = file.metadata.IV.buffer; - const readStream = bucket.openDownloadStream(new mongodb_1.ObjectID(fileID)); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size.toString()); - yield awaitStream_1.default(readStream.pipe(decipher), res); - if (file.metadata.linkType === "one") { - console.log("removing public link"); - yield dbUtilsFile.removeOneTimePublicLink(fileID); - } - }); - this.streamVideo = (user, fileID, headers, res) => __awaiter(this, void 0, void 0, function* () { - const userID = user._id; - const currentFile = yield dbUtilsFile.getFileInfo(fileID, userID); - if (!currentFile) - throw new NotFoundError_1.default("Video File Not Found"); - const password = user.getEncryptionKey(); - if (!password) - throw new NotAuthorizedError_1.default("Invalid Encryption Key"); - const fileSize = currentFile.metadata.size; - const range = headers.range; - const parts = range.replace(/bytes=/, "").split("-"); - let start = parseInt(parts[0], 10); - let end = parts[1] - ? parseInt(parts[1], 10) - : fileSize - 1; - const chunksize = (end - start) + 1; - const IV = currentFile.metadata.IV.buffer; - let head = { - 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, - 'Accept-Ranges': 'bytes', - 'Content-Length': chunksize, - 'Content-Type': 'video/mp4' - }; - const bucket = new mongoose_1.default.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 - }); - const readStream = bucket.openDownloadStream(new mongodb_1.ObjectID(fileID), { - start: start, - end: end - }); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - res.writeHead(206, head); - yield awaitStream_1.default(readStream.pipe(decipher), res); - }); - } -} -exports.default = MongoService; diff --git a/dist/services/ChunkService/utils/ChunkInterface.js b/dist/services/ChunkService/utils/ChunkInterface.js deleted file mode 100644 index c8ad2e5..0000000 --- a/dist/services/ChunkService/utils/ChunkInterface.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/dist/services/ChunkService/utils/awaitStream.js b/dist/services/ChunkService/utils/awaitStream.js deleted file mode 100644 index d363b07..0000000 --- a/dist/services/ChunkService/utils/awaitStream.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const awaitStream = (inputSteam, outputStream) => { - return new Promise((resolve, reject) => { - inputSteam.on("error", (e) => { - reject({ - message: "Await Stream Input Error", - code: 500, - error: e - }); - }); - outputStream.on("error", (e) => { - reject({ - message: "Await Stream Output Error", - code: 500, - error: e - }); - }); - inputSteam.pipe(outputStream).on("finish", (data) => { - console.log("await stream finished"); - resolve(data); - }); - }); -}; -exports.default = awaitStream; diff --git a/dist/services/ChunkService/utils/awaitUploadStream.js b/dist/services/ChunkService/utils/awaitUploadStream.js deleted file mode 100644 index aeb9d7a..0000000 --- a/dist/services/ChunkService/utils/awaitUploadStream.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const removeChunks_1 = __importDefault(require("../../FileService/utils/removeChunks")); -const awaitUploadStream = (inputSteam, outputStream, req) => { - return new Promise((resolve, reject) => { - inputSteam.on("error", (e) => { - removeChunks_1.default(outputStream); - reject({ - message: "Await Stream Input Error", - code: 500, - error: e - }); - }); - outputStream.on("error", (e) => { - removeChunks_1.default(outputStream); - reject({ - message: "Await Stream Output Error", - code: 500, - error: e - }); - }); - req.on("aborted", () => { - console.log("Upload Request Cancelling..."); - removeChunks_1.default(outputStream); - }); - inputSteam.pipe(outputStream).on("finish", (data) => { - console.log("await stream finished"); - resolve(data); - }); - }); -}; -exports.default = awaitUploadStream; diff --git a/dist/services/ChunkService/utils/getBusboyData.js b/dist/services/ChunkService/utils/getBusboyData.js deleted file mode 100644 index 5698054..0000000 --- a/dist/services/ChunkService/utils/getBusboyData.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const getBusboyData = (busboy) => { - return new Promise((resolve, reject) => { - const formData = new Map(); - busboy.on("field", (field, val) => { - formData.set(field, val); - }); - busboy.on("file", (_, file, filename) => __awaiter(void 0, void 0, void 0, function* () { - resolve({ - file, - filename, - formData - }); - })); - }); -}; -exports.default = getBusboyData; diff --git a/dist/services/ChunkService/utils/getFileSize.js b/dist/services/ChunkService/utils/getFileSize.js deleted file mode 100644 index 0ca261c..0000000 --- a/dist/services/ChunkService/utils/getFileSize.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs_1 = __importDefault(require("fs")); -const getFileSize = (path) => { - return new Promise((resolve, reject) => { - fs_1.default.stat(path, (error, stats) => { - if (error) { - resolve(0); - } - resolve(stats.size); - }); - }); -}; -exports.default = getFileSize; diff --git a/dist/services/FileService/index.js b/dist/services/FileService/index.js deleted file mode 100644 index a20bd95..0000000 --- a/dist/services/FileService/index.js +++ /dev/null @@ -1,668 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const imageChecker = require("../../utils/imageChecker"); -const crypto_1 = __importDefault(require("crypto")); -const videoChecker = require("../../utils/videoChecker"); -const mongoose = require("../../db/mongoose"); -const conn = mongoose.connection; -const createThumbnail = require("./utils/createThumbnail.ss"); -const Thumbnail = require("../../models/thumbnail"); -const ObjectID = require('mongodb').ObjectID; -const NotAuthorizedError = require("../../utils/NotAuthorizedError"); -const NotFoundError = require("../../utils/NotFoundError"); -const env = require("../../enviroment/env"); -const jwt = require("jsonwebtoken"); -const removeChunks = require("./utils/removeChunks"); -const User = require("../../models/user"); -const Folder = require("../../models/folder"); -const sortBySwitch = require("../../utils/sortBySwitch"); -const createQuery = require("../../utils/createQuery"); -const ffmpeg = require("fluent-ffmpeg"); -const temp = require("temp").track(); -const progress = require("progress-stream"); -const fs = require("fs"); -const DbUtilFile = require("../../db/utils/fileUtils"); -const DbUtilFolder = require("../../db/utils/folderUtils"); -const dbUtilsFile = new DbUtilFile(); -const dbUtilsFolder = new DbUtilFolder(); -const FileService = function () { - this.upload = (user, busboy, req) => { - return new Promise((resolve, reject) => { - const password = user.getEncryptionKey(); - let bucketStream; - const initVect = crypto_1.default.randomBytes(16); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const cipher = crypto_1.default.createCipheriv('aes256', CIPHER_KEY, initVect); - cipher.on("error", (e) => __awaiter(this, void 0, void 0, function* () { - yield removeChunks(bucketStream); - reject({ - message: "File service upload cipher error", - exception: e, - code: 500 - }); - })); - const formData = new Map(); - busboy.on("error", (e) => __awaiter(this, void 0, void 0, function* () { - yield removeChunks(bucketStream); - reject({ - message: "File service upload busboy error", - exception: e, - code: 500 - }); - })); - busboy.on("file", (fieldname, file, filename) => __awaiter(this, void 0, void 0, function* () { - const parent = formData.get("parent") || "/"; - const parentList = formData.get("parentList") || "/"; - const size = formData.get("size") || ""; - let hasThumbnail = false; - let thumbnailID = ""; - const isVideo = videoChecker(filename); - const metadata = { - owner: user._id, - parent, - parentList, - hasThumbnail, - thumbnailID, - isVideo, - size, - IV: initVect - }; - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); - bucketStream = bucket.openUploadStream(filename, { metadata }); - bucketStream.on("error", (e) => __awaiter(this, void 0, void 0, function* () { - yield removeChunks(bucketStream); - reject({ - message: "Cannot upload file to database", - exception: e, - code: 500 - }); - })); - req.on("aborted", () => __awaiter(this, void 0, void 0, function* () { - console.log("Upload Request Cancelling..."); - yield removeChunks(bucketStream); - })); - file.pipe(cipher).pipe(bucketStream); - bucketStream.on("finish", (file) => __awaiter(this, void 0, void 0, function* () { - const imageCheck = imageChecker(filename); - if (file.length < 15728640 && imageCheck) { - let updatedFile = yield createThumbnail(file, filename, user); - resolve(updatedFile); - } - else { - resolve(file); - } - })); - })).on("field", (field, val) => { - formData.set(field, val); - }); - }); - }; - this.getThumbnail = (user, id) => __awaiter(this, void 0, void 0, function* () { - const password = user.getEncryptionKey(); - const thumbnail = yield Thumbnail.findById(id); - if (user._id.toString() !== thumbnail.owner) { - throw new NotAuthorizedError("Thumbnail Unauthorized Error"); - } - const iv = thumbnail.data.slice(0, 16); - const chunk = thumbnail.data.slice(16); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv("aes256", CIPHER_KEY, iv); - const decryptedThumbnail = Buffer.concat([decipher.update(chunk), decipher.final()]); - //console.log("decry", decryptedThumbnail); - return decryptedThumbnail; - }); - this.getFullThumbnail = (user, fileID, res) => __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - const userID = user._id; - dbUtilsFile.getFileInfo(fileID, userID).then((file) => __awaiter(this, void 0, void 0, function* () { - if (!file) { - reject({ - code: 401, - message: "File For Full Thumbnail Not Found", - exception: undefined - }); - } - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }); - const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer; - const readStream = bucket.openDownloadStream(ObjectID(fileID)); - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service Full Thumbnail stream error", - exception: e - }); - }); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service Full Thumbnail decipher error", - exception: e - }); - }); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size); - readStream.pipe(decipher).pipe(res).on("finish", () => __awaiter(this, void 0, void 0, function* () { - console.log("Sent Full Thumbnail"); - resolve(); - })); - })); - }); - }); - this.publicDownload = (ID, tempToken, res) => { - return new Promise((resolve, reject) => { - dbUtilsFile.getPublicFile(ID).then((file) => __awaiter(this, void 0, void 0, function* () { - if (!file || !file.metadata.link || file.metadata.link !== tempToken) { - reject({ - code: 401, - message: "File not public/Not found", - exception: undefined - }); - } - else { - const user = yield User.findById(file.metadata.owner); - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }); - const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer; - const readStream = bucket.openDownloadStream(ObjectID(ID)); - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service public download decipher error", - exception: e - }); - }); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service public download decipher error", - exception: e - }); - }); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size); - readStream.pipe(decipher).pipe(res).on("finish", () => __awaiter(this, void 0, void 0, function* () { - console.log("removing public link"); - yield this.removePublicOneTimeLink(file); - resolve(); - })); - } - })); - }); - }; - this.removePublicOneTimeLink = (currentFile) => __awaiter(this, void 0, void 0, function* () { - const ID = currentFile._id; - if (currentFile.metadata.linkType === "one") { - yield dbUtilsFile.removeOneTimePublicLink(ID); - } - }); - this.removeLink = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { - const file = yield dbUtilsFile.removeLink(fileID, userID); - if (!file.lastErrorObject.updatedExisting) - throw new NotFoundError("Remove Link File Not Found Error"); - }); - this.makePublic = (user, fileID) => __awaiter(this, void 0, void 0, function* () { - const userID = user._id; - const token = yield jwt.sign({ _id: userID.toString() }, env.password); - const file = yield dbUtilsFile.makePublic(fileID, userID, token, "public"); - if (!file.lastErrorObject.updatedExisting) - throw new NotFoundError("Make Public File Not Found Error"); - return token; - }); - this.getPublicInfo = (fileID, tempToken) => __awaiter(this, void 0, void 0, function* () { - const file = yield dbUtilsFile.getPublicInfo(fileID, tempToken); - if (!file || !file.metadata.link || file.metadata.link !== tempToken) { - throw new NotFoundError("Public Info Not Found"); - } - else { - return file; - } - }); - this.makeOneTimePublic = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { - const token = yield jwt.sign({ _id: userID.toString() }, env.password); - const file = yield dbUtilsFile.makeOneTimePublic(fileID, userID, token); - if (!file.lastErrorObject.updatedExisting) - throw new NotFoundError("Make One Time Public Not Found Error"); - return token; - }); - this.getFileInfo = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { - let currentFile = yield dbUtilsFile.getFileInfo(fileID, userID); - if (!currentFile) - throw new NotFoundError("Get File Info Not Found Error"); - const parentID = currentFile.metadata.parent; - let parentName = ""; - if (parentID === "/") { - parentName = "Home"; - } - else { - const parentFolder = yield Folder.findOne({ "owner": userID, "_id": parentID }); - if (parentFolder) { - parentName = parentFolder.name; - } - else { - parentName = "Unknown"; - } - } - return Object.assign(Object.assign({}, currentFile), { parentName }); - }); - this.getQuickList = (userID) => __awaiter(this, void 0, void 0, function* () { - const quickList = yield dbUtilsFile.getQuickList(userID); - if (!quickList) - throw new NotFoundError("Quick List Not Found Error"); - return quickList; - }); - this.getList = (userID, query) => __awaiter(this, void 0, void 0, function* () { - let searchQuery = query.search || ""; - const parent = query.parent || "/"; - let limit = query.limit || 50; - let sortBy = query.sortby || "DEFAULT"; - const startAt = query.startAt || undefined; - const startAtDate = query.startAtDate || "0"; - const startAtName = query.startAtName || ""; - sortBy = sortBySwitch(sortBy); - limit = parseInt(limit); - const queryObj = createQuery(userID, parent, query.sortby, startAt, startAtDate, searchQuery, startAtName); - const fileList = yield dbUtilsFile.getList(queryObj, sortBy, limit); - if (!fileList) - throw new NotFoundError("File List Not Found"); - return fileList; - }); - this.getDownloadToken = (user) => __awaiter(this, void 0, void 0, function* () { - const tempToken = yield user.generateTempAuthToken(); - if (!tempToken) - throw new NotAuthorizedError("Get Download Token Not Authorized Error"); - return tempToken; - }); - this.getDownloadTokenVideo = (user, cookie) => __awaiter(this, void 0, void 0, function* () { - if (!cookie) - throw new NotAuthorizedError("Get Download Token Video Cookie Not Authorized Error"); - const tempToken = yield user.generateTempAuthTokenVideo(cookie); - if (!tempToken) - throw new NotAuthorizedError("Get Download Token Video Not Authorized Error"); - return tempToken; - }); - this.removeTempToken = (user, tempToken) => __awaiter(this, void 0, void 0, function* () { - const key = user.getEncryptionKey(); - const decoded = yield jwt.verify(tempToken, env.password); - const publicKey = decoded.iv; - const encryptedToken = user.encryptToken(tempToken, key, publicKey); - const removedTokenUser = yield dbUtilsFile.removeTempToken(user, encryptedToken); - if (!removedTokenUser) - throw new NotFoundError("Remove Temp Token User Not Found Errors"); - yield removedTokenUser.save(); - }); - this.transcodeVideo = (user, body) => { - return new Promise((resolve, reject) => { - const id = body.file._id; - const userID = user._id; - conn.db.collection("fs.files") - .findOne({ "_id": ObjectID(id), "metadata.owner": userID }).then((currentFile) => { - if (!currentFile) { - reject({ - message: "Transcode Video Not Found Error", - exception: undefined, - code: 401 - }); - } - else { - const password = user.getEncryptionKey(); //env.key; - const IV = currentFile.metadata.IV.buffer; - const bucket = new mongoose.mongo.GridFSBucket(conn.db); - const readStream = bucket.openDownloadStream(ObjectID(id)); - readStream.on("error", (e) => { - reject({ - message: "File service transcode video stream error", - exception: e, - code: 500 - }); - }); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - decipher.on("error", (e) => { - reject({ - message: "File service transcode video decipher error", - exception: e, - code: 500 - }); - }); - const tempStream = temp.createWriteStream(); - tempStream.on("error", (e) => { - reject({ - message: "File service transcode video temp error", - exception: e, - code: 500 - }); - }); - readStream.pipe(decipher).pipe(tempStream).on("finish", () => { - const writeBucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos", - }); - const gfsWrite = writeBucket.openUploadStream(currentFile.filename, { - _id: id, - }); - gfsWrite.on("error", (e) => { - reject({ - message: "File service transcode video write stream error", - exception: e, - code: 500 - }); - }); - const initVect = crypto_1.default.randomBytes(16); - const cipher = crypto_1.default.createCipheriv('aes256', CIPHER_KEY, initVect); - cipher.on("error", (e) => { - reject({ - message: "File service transcode video cipher write error", - exception: e, - code: 500 - }); - }); - const str = progress({ time: 100 }); - str.on("progress", () => { - }); - str.on("finish", () => { - }); - const tempStream2 = temp.createWriteStream(); - tempStream2.on("error", (e) => { - reject({ - message: "File service transcode video temp write error", - exception: e, - code: 500 - }); - }); - const ffmpegCommand = ffmpeg() - .input(tempStream.path).outputOptions(['-movflags frag_keyframe+empty_moov', '-movflags +faststart']) - .outputFormat('mp4').on("error", (err, stdout, stderr) => { - console.log('An error occurred: ' + err.message, err, stderr); - reject({ - message: "Video Transcode Failed Error", - exception: err.message, - code: 500 - }); - }) - .videoCodec('libx264') - .audioBitrate('128k') - .videoBitrate(8000, true) - .pipe(tempStream2).on("finish", () => { - fs.createReadStream(tempStream2.path).pipe(cipher).pipe(gfsWrite).on("finish", (file) => __awaiter(this, void 0, void 0, function* () { - console.log("transcode finished"); - yield conn.db.collection("fs.files") - .findOneAndUpdate({ "_id": ObjectID(id) }, { "$set": { "metadata.transcoded": true, "metadata.transcodedIV": initVect, "metadata.transcoded_size": tempStream2.bytesWritten, "metadata.transcodedID": file._id } }); - resolve(); - })).on("error", (e) => { - reject({ - message: "File service transcode read stream error", - exception: e, - code: 500 - }); - }); - }); - ffmpegCommand.on("error", (e) => { - reject({ - message: "File service FFMPEG error", - exception: e, - code: 500 - }); - }); - }); - } - }); - }); - }; - this.removeTranscodeVideo = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { - const parentFile = yield dbUtilsFile.getFileInfo(fileID, userID); - const transcodedVideoID = parentFile.metadata.transcodedID; - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos" - }); - try { - yield bucket.delete(ObjectID(transcodedVideoID)); - } - catch (e) { - console.log("Could Not Find Transcoded Video"); - } - const file = yield dbUtilsFile.removeTranscodeVideo(fileID, userID); - if (!file) - throw new NotFoundError("Remove Transcode Video Error"); - }); - this.streamTranscodedVideo = (userID, fileID, headers, res) => { - return new Promise((resolve, reject) => { - dbUtilsFile.getFileInfo(fileID, userID).then((file) => { - if (!file) { - reject({ - code: 401, - message: "Stream Transcoded File Not Found", - exception: undefined - }); - } - else { - const fileSize = file.metadata.transcoded_size; - const transcodedVideoID = file.metadata.transcodedID; - const password = user.getEncryptionKey(); //env.key; - const range = headers.range; - const parts = range.replace(/bytes=/, "").split("-"); - const start = parseInt(parts[0], 10); - const end = parts[1] - ? parseInt(parts[1], 10) - : fileSize - 1; - const chunksize = (end - start) + 1; - const IV = file.metadata.transcodedIV.buffer; - let head = { - 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, - 'Accept-Ranges': 'bytes', - 'Content-Length': chunksize, - 'Content-Type': 'video/mp4' - }; - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos", - chunkSizeBytes: chunksize - }); - const readStream = bucket.openDownloadStream(ObjectID(transcodedVideoID), { - start: start, - end: end - }); - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service transcode video stream error", - exception: e - }); - }); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - decipher.setAutoPadding(false); - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service transcode video decipher error", - exception: e - }); - }); - res.writeHead(206, head); - readStream.pipe(decipher).pipe(res).on("finish", () => { - resolve(); - }); - } - }); - }); - }; - this.streamVideo = (user, fileID, headers, res) => { - return new Promise((resolve, reject) => { - const userID = user._id; - dbUtilsFile.getFileInfo(fileID, userID).then((currentFile) => { - if (!currentFile) { - reject({ - code: 401, - message: "Video Steam Not Found Error", - exception: undefined - }); - } - else { - const password = user.getEncryptionKey(); - const fileSize = currentFile.metadata.size; - const range = headers.range; - const parts = range.replace(/bytes=/, "").split("-"); - let start = parseInt(parts[0], 10); - let end = parts[1] - ? parseInt(parts[1], 10) - : fileSize - 1; - const chunksize = (end - start) + 1; - const IV = currentFile.metadata.IV.buffer; - let head = { - 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, - 'Accept-Ranges': 'bytes', - 'Content-Length': chunksize, - 'Content-Type': 'video/mp4' - }; - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 - }); - const readStream = bucket.openDownloadStream(ObjectID(fileID), { - start: start, - end: end.length - }); - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service stream video stream error", - exception: e - }); - }); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service stream video decipher error", - exception: e - }); - }); - res.writeHead(206, head); - readStream.pipe(decipher).pipe(res).on("finish", () => { - resolve(); - }); - } - }); - }); - }; - this.downloadFile = (user, fileID, res) => { - return new Promise((resolve, reject) => { - const userID = user._id; - dbUtilsFile.getFileInfo(fileID, userID).then((file) => { - if (!file) { - reject({ - code: 401, - message: "Download File Not Found Error", - exception: undefined - }); - } - else { - const password = user.getEncryptionKey(); - const bucket = new mongoose.mongo.GridFSBucket(conn.db); - const IV = file.metadata.IV.buffer; - const readStream = bucket.openDownloadStream(ObjectID(fileID)); - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service download decipher error", - exception: e - }); - }); - const CIPHER_KEY = crypto_1.default.createHash('sha256').update(password).digest(); - const decipher = crypto_1.default.createDecipheriv('aes256', CIPHER_KEY, IV); - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service download decipher error", - exception: e - }); - }); - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size); - readStream.pipe(decipher).pipe(res).on("finish", () => { - resolve(); - }); - } - }); - }); - }; - this.getSuggestedList = (userID, searchQuery) => __awaiter(this, void 0, void 0, function* () { - searchQuery = new RegExp(searchQuery, 'i'); - const fileList = yield dbUtilsFile.getFileSearchList(userID, searchQuery); - const folderList = yield dbUtilsFolder.getFolderSearchList(userID, searchQuery); - if (!fileList || !folderList) - throw new NotFoundError("Suggested List Not Found Error"); - return { - fileList, - folderList - }; - }); - this.renameFile = (userID, fileID, title) => __awaiter(this, void 0, void 0, function* () { - const file = yield dbUtilsFile.renameFile(fileID, userID, title); - if (!file.lastErrorObject.updatedExisting) - throw new NotFoundError("Rename File Not Found Error"); - return file; - }); - this.moveFile = (userID, fileID, parentID) => __awaiter(this, void 0, void 0, function* () { - let parentList = ["/"]; - if (parentID.length !== 1) { - const parentFile = yield dbUtilsFolder.getFolderInfo(parentID, userID); - if (!parentFile) - throw new NotFoundError("Rename Parent File Not Found Error"); - const parentList = parentFile.parentList; - parentList.push(parentID); - } - const file = yield dbUtilsFile.moveFile(fileID, userID, parentID, parentList.toString()); - if (!file.lastErrorObject.updatedExisting) - throw new NotFoundError("Rename File Not Found Error"); - return file; - }); - this.deleteFile = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }); - const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos" - }); - const file = yield dbUtilsFile.getFileInfo(fileID, userID); - if (!file) - throw new NotFoundError("Delete File Not Found Error"); - if (file.metadata.thumbnailID) { - yield Thumbnail.deleteOne({ _id: file.metadata.thumbnailID }); - } - if (file.metadata.isVideo && file.metadata.transcoded) { - try { - yield bucket.delete(ObjectID(file.metadata.transcodedID)); - } - catch (e) { - console.log("Could Not Find Transcoded Video"); - } - } - yield bucket.delete(ObjectID(fileID)); - }); -}; -module.exports = FileService; diff --git a/dist/services/FileService/indexnew.js b/dist/services/FileService/indexnew.js deleted file mode 100644 index 8a06593..0000000 --- a/dist/services/FileService/indexnew.js +++ /dev/null @@ -1,195 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const imageChecker = require("../../utils/imageChecker"); -const videoChecker = require("../../utils/videoChecker"); -const mongoose = require("../../db/mongoose"); -const conn = mongoose.connection; -const createThumbnail = require("../../services/FileService/utils/createThumbnail"); -const thumbnail_1 = __importDefault(require("../../models/thumbnail")); -const ObjectID = require('mongodb').ObjectID; -const NotAuthorizedError_1 = __importDefault(require("../../utils/NotAuthorizedError")); -const NotFoundError_1 = __importDefault(require("../../utils/NotFoundError")); -const env = require("../../enviroment/env"); -const jwt = require("jsonwebtoken"); -const removeChunks = require("./utils/removeChunks"); -const User = require("../../models/user"); -const Folder = require("../../models/folder"); -const sortBySwitch = require("../../utils/sortBySwitch"); -const createQuery = require("../../utils/createQuery"); -const ffmpeg = require("fluent-ffmpeg"); -const temp = require("temp").track(); -const progress = require("progress-stream"); -const fs = require("fs"); -const index_1 = __importDefault(require("../../db/utils/fileUtils/index")); -const DbUtilFolder = require("../../db/utils/folderUtils"); -const dbUtilsFile = new index_1.default(); -const dbUtilsFolder = new DbUtilFolder(); -class MongoFileService { - constructor() { - this.removePublicOneTimeLink = (currentFile) => __awaiter(this, void 0, void 0, function* () { - const fileID = currentFile._id; - if (currentFile.metadata.linkType === "one") { - yield dbUtilsFile.removeOneTimePublicLink(fileID); - } - }); - this.removeLink = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { - const file = yield dbUtilsFile.removeLink(fileID, userID); - if (!file.lastErrorObject.updatedExisting) - throw new NotFoundError_1.default("Remove Link File Not Found Error"); - }); - this.makePublic = (user, fileID) => __awaiter(this, void 0, void 0, function* () { - const userID = user._id; - const token = yield jwt.sign({ _id: userID.toString() }, env.password); - const file = yield dbUtilsFile.makePublic(fileID, userID, token); - if (!file.lastErrorObject.updatedExisting) - throw new NotFoundError_1.default("Make Public File Not Found Error"); - return token; - }); - this.getPublicInfo = (fileID, tempToken) => __awaiter(this, void 0, void 0, function* () { - const file = yield dbUtilsFile.getPublicInfo(fileID, tempToken); - if (!file || !file.metadata.link || file.metadata.link !== tempToken) { - throw new NotFoundError_1.default("Public Info Not Found"); - } - else { - return file; - } - }); - this.makeOneTimePublic = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { - const token = yield jwt.sign({ _id: userID.toString() }, env.password); - const file = yield dbUtilsFile.makeOneTimePublic(fileID, userID, token); - if (!file.lastErrorObject.updatedExisting) - throw new NotFoundError_1.default("Make One Time Public Not Found Error"); - return token; - }); - this.getFileInfo = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { - let currentFile = yield dbUtilsFile.getFileInfo(fileID, userID); - if (!currentFile) - throw new NotFoundError_1.default("Get File Info Not Found Error"); - const parentID = currentFile.metadata.parent; - let parentName = ""; - if (parentID === "/") { - parentName = "Home"; - } - else { - const parentFolder = yield Folder.findOne({ "owner": userID, "_id": parentID }); - if (parentFolder) { - parentName = parentFolder.name; - } - else { - parentName = "Unknown"; - } - } - return Object.assign(Object.assign({}, currentFile), { parentName }); - }); - this.getQuickList = (userID) => __awaiter(this, void 0, void 0, function* () { - const quickList = yield dbUtilsFile.getQuickList(userID); - if (!quickList) - throw new NotFoundError_1.default("Quick List Not Found Error"); - return quickList; - }); - this.getList = (userID, query) => __awaiter(this, void 0, void 0, function* () { - let searchQuery = query.search || ""; - const parent = query.parent || "/"; - let limit = query.limit || 50; - let sortBy = query.sortby || "DEFAULT"; - const startAt = query.startAt || undefined; - const startAtDate = query.startAtDate || "0"; - const startAtName = query.startAtName || ""; - sortBy = sortBySwitch(sortBy); - limit = parseInt(limit); - const queryObj = createQuery(userID, parent, query.sortby, startAt, startAtDate, searchQuery, startAtName); - const fileList = yield dbUtilsFile.getList(queryObj, sortBy, limit); - if (!fileList) - throw new NotFoundError_1.default("File List Not Found"); - return fileList; - }); - this.getDownloadToken = (user) => __awaiter(this, void 0, void 0, function* () { - const tempToken = yield user.generateTempAuthToken(); - if (!tempToken) - throw new NotAuthorizedError_1.default("Get Download Token Not Authorized Error"); - return tempToken; - }); - this.getDownloadTokenVideo = (user, cookie) => __awaiter(this, void 0, void 0, function* () { - if (!cookie) - throw new NotAuthorizedError_1.default("Get Download Token Video Cookie Not Authorized Error"); - const tempToken = yield user.generateTempAuthTokenVideo(cookie); - if (!tempToken) - throw new NotAuthorizedError_1.default("Get Download Token Video Not Authorized Error"); - return tempToken; - }); - this.removeTempToken = (user, tempToken) => __awaiter(this, void 0, void 0, function* () { - const key = user.getEncryptionKey(); - const decoded = yield jwt.verify(tempToken, env.password); - const publicKey = decoded.iv; - const encryptedToken = user.encryptToken(tempToken, key, publicKey); - const removedTokenUser = yield dbUtilsFile.removeTempToken(user, encryptedToken); - if (!removedTokenUser) - throw new NotFoundError_1.default("Remove Temp Token User Not Found Errors"); - yield removedTokenUser.save(); - }); - this.getSuggestedList = (userID, searchQuery) => __awaiter(this, void 0, void 0, function* () { - searchQuery = new RegExp(searchQuery, 'i'); - const fileList = yield dbUtilsFile.getFileSearchList(userID, searchQuery); - const folderList = yield dbUtilsFolder.getFolderSearchList(userID, searchQuery); - if (!fileList || !folderList) - throw new NotFoundError_1.default("Suggested List Not Found Error"); - return { - fileList, - folderList - }; - }); - this.renameFile = (userID, fileID, title) => __awaiter(this, void 0, void 0, function* () { - const file = yield dbUtilsFile.renameFile(fileID, userID, title); - if (!file.lastErrorObject.updatedExisting) - throw new NotFoundError_1.default("Rename File Not Found Error"); - return file; - }); - this.moveFile = (userID, fileID, parentID) => __awaiter(this, void 0, void 0, function* () { - let parentList = ["/"]; - if (parentID.length !== 1) { - const parentFile = yield dbUtilsFolder.getFolderInfo(parentID, userID); - if (!parentFile) - throw new NotFoundError_1.default("Rename Parent File Not Found Error"); - const parentList = parentFile.parentList; - parentList.push(parentID); - } - const file = yield dbUtilsFile.moveFile(fileID, userID, parentID, parentList.toString()); - if (!file.lastErrorObject.updatedExisting) - throw new NotFoundError_1.default("Rename File Not Found Error"); - return file; - }); - this.deleteFile = (userID, fileID) => __awaiter(this, void 0, void 0, function* () { - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }); - const file = yield dbUtilsFile.getFileInfo(fileID, userID); - if (!file) - throw new NotFoundError_1.default("Delete File Not Found Error"); - if (file.metadata.thumbnailID) { - yield thumbnail_1.default.deleteOne({ _id: file.metadata.thumbnailID }); - } - if (file.metadata.isVideo && file.metadata.transcoded) { - try { - yield bucket.delete(ObjectID(file.metadata.transcodedID)); - } - catch (e) { - console.log("Could Not Find Transcoded Video"); - } - } - yield bucket.delete(ObjectID(fileID)); - }); - } -} -exports.default = MongoFileService; diff --git a/dist/services/FileService/utils/createThumbnail.js b/dist/services/FileService/utils/createThumbnail.js deleted file mode 100644 index bef3ef3..0000000 --- a/dist/services/FileService/utils/createThumbnail.js +++ /dev/null @@ -1,68 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const mongoose = require("../../../db/mongoose"); -const conn = mongoose.connection; -const crypto = require("crypto"); -const env = require("../../../enviroment/env"); -const thumbnail_1 = __importDefault(require("../../../models/thumbnail")); -const ObjectID = require('mongodb').ObjectID; -const sharp = require("sharp"); -const concat = require("concat-stream"); -const createThumbnail = (file, filename, user) => { - return new Promise((resolve) => { - const password = user.getEncryptionKey(); - let CIPHER_KEY = crypto.createHash('sha256').update(password).digest(); - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); - const readStream = bucket.openDownloadStream(ObjectID(file._id)); - readStream.on("error", (e) => { - console.log("File service upload thumbnail error", e); - resolve(file); - }); - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, file.metadata.IV); - decipher.on("error", (e) => { - console.log("File service upload thumbnail decipher error", e); - resolve(file); - }); - try { - const concatStream = concat((bufferData) => __awaiter(void 0, void 0, void 0, function* () { - const thumbnailIV = crypto.randomBytes(16); - const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); - bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); - const thumbnailModel = new thumbnail_1.default({ name: filename, owner: user._id, data: bufferData }); - yield thumbnailModel.save(); - let updatedFile = yield conn.db.collection("fs.files") - .findOneAndUpdate({ "_id": file._id }, { "$set": { "metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id } }); - updatedFile = updatedFile.value; - updatedFile = Object.assign(Object.assign({}, updatedFile), { metadata: Object.assign(Object.assign({}, updatedFile.metadata), { hasThumbnail: true, thumbnailID: thumbnailModel._id }) }); - resolve(updatedFile); - })).on("error", (e) => { - console.log("File service upload concat stream error", e); - resolve(file); - }); - const imageResize = sharp().resize(300).on("error", (e) => { - console.log("resize error", e); - resolve(file); - }); - readStream.pipe(decipher).pipe(imageResize).pipe(concatStream); - } - catch (e) { - console.log(e); - resolve(file); - } - }); -}; -exports.default = createThumbnail; diff --git a/dist/services/FileService/utils/createThumbnailFS.js b/dist/services/FileService/utils/createThumbnailFS.js deleted file mode 100644 index 65e3a7b..0000000 --- a/dist/services/FileService/utils/createThumbnailFS.js +++ /dev/null @@ -1,95 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const mongoose = require("../../../db/mongoose"); -const conn = mongoose.connection; -const crypto = require("crypto"); -const env = require("../../../enviroment/env"); -const thumbnail_1 = __importDefault(require("../../../models/thumbnail")); -const ObjectID = require('mongodb').ObjectID; -const sharp = require("sharp"); -const concat = require("concat-stream"); -const fs_1 = __importDefault(require("fs")); -const uuid_1 = __importDefault(require("uuid")); -const createThumbnailFS = (file, filename, user) => { - return new Promise((resolve) => { - const password = user.getEncryptionKey(); - let CIPHER_KEY = crypto.createHash('sha256').update(password).digest(); - const thumbnailFilename = uuid_1.default.v4(); - const readStream = fs_1.default.createReadStream(file.metadata.filePath); - const writeStream = fs_1.default.createWriteStream(`/Users/kylehoell/Documents/fstestdata/${thumbnailFilename}`); - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, file.metadata.IV); - readStream.on("error", (e) => { - console.log("File service upload thumbnail error", e); - resolve(file); - }); - writeStream.on("error", (e) => { - console.log("File service upload write thumbnail error", e); - resolve(file); - }); - decipher.on("error", (e) => { - console.log("File service upload thumbnail decipher error", e); - resolve(file); - }); - try { - const thumbnailIV = crypto.randomBytes(16); - const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); - const imageResize = sharp().resize(300).on("error", (e) => { - console.log("resize error", e); - resolve(file); - }); - readStream.pipe(decipher).pipe(imageResize).pipe(thumbnailCipher).pipe(writeStream); - writeStream.on("finish", () => __awaiter(void 0, void 0, void 0, function* () { - console.log("Thumbnail written"); - const thumbnailModel = new thumbnail_1.default({ name: filename, owner: user._id, IV: thumbnailIV, path: `/Users/kylehoell/Documents/fstestdata/${thumbnailFilename}` }); - yield thumbnailModel.save(); - let updatedFile = yield conn.db.collection("fs.files") - .findOneAndUpdate({ "_id": file._id }, { "$set": { "metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id } }); - updatedFile = updatedFile.value; - updatedFile = Object.assign(Object.assign({}, updatedFile), { metadata: Object.assign(Object.assign({}, updatedFile.metadata), { hasThumbnail: true, thumbnailID: thumbnailModel._id }) }); - resolve(updatedFile); - })); - } - catch (e) { - console.log("Thumbnail error", e); - resolve(file); - } - // try { - // const concatStream = concat(async(bufferData: Buffer) => { - // const thumbnailIV = crypto.randomBytes(16); - // const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); - // bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); - // const thumbnailModel = new Thumbnail({name: filename, owner: user._id, data: bufferData}); - // await thumbnailModel.save(); - // let updatedFile = await conn.db.collection("fs.files") - // .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) - // updatedFile = updatedFile.value; - // updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} - // resolve(updatedFile); - // }).on("error", (e: Error) => { - // console.log("File service upload concat stream error", e); - // resolve(file); - // }) - // const imageResize = sharp().resize(300).on("error", (e: Error) => { - // console.log("resize error", e); - // resolve(file); - // }) - // readStream.pipe(decipher).pipe(imageResize).pipe(concatStream); - // } catch (e) { - // console.log(e); - // resolve(file); - // } - }); -}; -exports.default = createThumbnailFS; diff --git a/dist/services/FileService/utils/removeChunks.js b/dist/services/FileService/utils/removeChunks.js deleted file mode 100644 index c2deae9..0000000 --- a/dist/services/FileService/utils/removeChunks.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const DbUtilsFile = require("../../../db/utils/fileUtils"); -const dbUtilsFile = new DbUtilsFile(); -const removeChunks = (bucketStream) => __awaiter(void 0, void 0, void 0, function* () { - const uploadID = bucketStream.id; - try { - if (!uploadID || uploadID.length === 0) { - console.log("Invalid uploadID for remove chunks"); - return; - } - yield dbUtilsFile.removeChunksByID(uploadID); - console.log("Upload Request Cancelled, Chunks Removed"); - } - catch (e) { - console.log("Could not remove chunks for canceled upload", uploadID, e); - } -}); -exports.default = removeChunks; diff --git a/dist/services/FolderService/index.js b/dist/services/FolderService/index.js deleted file mode 100644 index 6993c00..0000000 --- a/dist/services/FolderService/index.js +++ /dev/null @@ -1,202 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -const Folder = require("../../models/folder"); -const InternalServerError = require("../../utils/InternalServerError"); -const NotFoundError = require("../../utils/NotFoundError"); -const UtilsFile = require("../../db/utils/fileUtils"); -const ObjectID = require('mongodb').ObjectID; -const UtilsFolder = require("../../db/utils/folderUtils"); -const mongoose = require("../../db/mongoose"); -const conn = mongoose.connection; -const Thumbnail = require("../../models/thumbnail"); -const sortBySwitch = require("../../utils/sortBySwitchFolder"); -const utilsFile = new UtilsFile(); -const utilsFolder = new UtilsFolder(); -const FolderService = function () { - this.uploadFolder = (data) => __awaiter(this, void 0, void 0, function* () { - const folder = new Folder(data); - yield folder.save(); - if (!folder) - throw new InternalServerError("Upload Folder Error"); - return folder; - }); - this.deleteFolder = (userID, folderID, parentList) => __awaiter(this, void 0, void 0, function* () { - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); - const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos" - }); - const parentListString = parentList.toString(); - yield Folder.deleteMany({ "owner": userID, "parentList": { $all: parentList } }); - yield Folder.deleteMany({ "owner": userID, "_id": folderID }); - const fileList = yield utilsFile.getFileListByParent(userID, parentListString); - if (!fileList) - throw new NotFoundError("Delete File List Not Found"); - for (let i = 0; i < fileList.length; i++) { - const currentFile = fileList[i]; - try { - if (currentFile.metadata.thumbnailID) { - yield Thumbnail.deleteOne({ _id: currentFile.metadata.thumbnailID }); - } - if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { - try { - yield videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)); - } - catch (e) { - console.log("Could Not Find Transcoded Video"); - } - } - yield bucket.delete(ObjectID(currentFile._id)); - } - catch (e) { - console.log("Could not delete file", currentFile.filename, currentFile._id); - } - } - }); - this.deleteAll = (userID) => __awaiter(this, void 0, void 0, function* () { - console.log("remove all request"); - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); - const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos" - }); - yield Folder.deleteMany({ "owner": userID }); - const fileList = yield utilsFile.getFileListByOwner(userID); - if (!fileList) - throw new NotFoundError("Delete All File List Not Found Error"); - for (let i = 0; i < fileList.length; i++) { - const currentFile = fileList[i]; - try { - if (currentFile.metadata.thumbnailID) { - yield Thumbnail.deleteOne({ _id: currentFile.metadata.thumbnailID }); - } - if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { - try { - yield videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)); - } - catch (e) { - console.log("Cannot Find Transcoded Video"); - } - } - yield bucket.delete(ObjectID(currentFile._id)); - } - catch (e) { - console.log("Could Not Remove File", currentFile.filename, currentFile._id); - } - } - }); - this.getFolderInfo = (userID, folderID) => __awaiter(this, void 0, void 0, function* () { - let currentFolder = yield utilsFolder.getFolderInfo(folderID, userID); - if (!currentFolder) - throw new NotFoundError("Folder Info Not Found Error"); - const parentID = currentFolder.parent; - let parentName = ""; - if (parentID === "/") { - parentName = "Home"; - } - else { - const parentFolder = yield utilsFolder.getFolderInfo(parentID, userID); - if (parentFolder) { - parentName = parentFolder.name; - } - else { - parentName = "Unknown"; - } - } - const folderName = currentFolder.name; - currentFolder = Object.assign(Object.assign({}, currentFolder._doc), { parentName, folderName }); - // Must Use ._doc here, or the destucturing/spreading - // Will add a bunch of unneeded variables to the object. - return currentFolder; - }); - this.getFolderSublist = (userID, folderID) => __awaiter(this, void 0, void 0, function* () { - const folder = yield utilsFolder.getFolderInfo(folderID, userID); - if (!folder) - throw new NotFoundError("Folder Sublist Not Found Error"); - const subfolderList = folder.parentList; - let folderIDList = []; - let folderNameList = []; - for (let i = 0; i < subfolderList.length; i++) { - const currentSubFolderID = subfolderList[i]; - if (currentSubFolderID === "/") { - folderIDList.push("/"); - folderNameList.push("Home"); - } - else { - const currentFolder = yield utilsFolder.getFolderInfo(currentSubFolderID, userID); - folderIDList.push(currentFolder._id); - folderNameList.push(currentFolder.name); - } - } - folderIDList.push(folderID); - folderNameList.push(folder.name); - return { - folderIDList, - folderNameList - }; - }); - this.getFolderList = (userID, query) => __awaiter(this, void 0, void 0, function* () { - let searchQuery = query.search || ""; - const parent = query.parent || "/"; - let sortBy = query.sortby || "DEFAULT"; - sortBy = sortBySwitch(sortBy); - if (searchQuery.length === 0) { - const folderList = yield utilsFolder.getFolderListByParent(userID, parent, sortBy); - if (!folderList) - throw new NotFoundError("Folder List Not Found Error"); - return folderList; - } - else { - searchQuery = new RegExp(searchQuery, 'i'); - const folderList = yield utilsFolder.getFolderListBySearch(userID, searchQuery, sortBy); - if (!folderList) - throw new NotFoundError("Folder List Not Found Error"); - return folderList; - } - }); - this.renameFolder = (userID, folderID, title) => __awaiter(this, void 0, void 0, function* () { - const folder = yield utilsFolder.renameFolder(folderID, userID, title); - if (!folder) - throw new NotFoundError("Rename Folder Not Found"); - }); - this.moveFolder = (userID, folderID, parentID) => __awaiter(this, void 0, void 0, function* () { - let parentList = ["/"]; - if (parentID.length !== 1) { - const parentFile = yield utilsFolder.getFolderInfo(parentID, userID); - parentList = parentFile.parentList; - parentList.push(parentID); - } - const folder = yield utilsFolder.moveFolder(folderID, userID, parentID, parentList); - if (!folder) - throw new NotFoundError("Move Folder Not Found"); - const folderChilden = yield utilsFolder.findAllFoldersByParent(folderID.toString(), userID); - folderChilden.map((currentFolderChild) => __awaiter(this, void 0, void 0, function* () { - let currentFolderChildParentList = currentFolderChild.parentList; - const indexOfFolderID = currentFolderChildParentList.indexOf(folderID.toString()); - currentFolderChildParentList = currentFolderChildParentList.splice(indexOfFolderID); - currentFolderChildParentList = [...parentList, ...currentFolderChildParentList]; - currentFolderChild.parentList = currentFolderChildParentList; - yield currentFolderChild.save(); - })); - const fileChildren = yield utilsFile.getFileListByParent(userID, folderID.toString()); - fileChildren.map((currentFileChild) => __awaiter(this, void 0, void 0, function* () { - let currentFileChildParentList = currentFileChild.metadata.parentList; - currentFileChildParentList = currentFileChildParentList.split(","); - const indexOfFolderID = currentFileChildParentList.indexOf(folderID.toString()); - currentFileChildParentList = currentFileChildParentList.splice(indexOfFolderID); - currentFileChildParentList = [...parentList, ...currentFileChildParentList]; - yield utilsFile.moveFile(currentFileChild._id, userID, currentFileChild.metadata.parent, currentFileChildParentList.toString()); - })); - }); -}; -module.exports = FolderService; diff --git a/dist/services/UserService/index.js b/dist/services/UserService/index.js deleted file mode 100644 index 89b6d61..0000000 --- a/dist/services/UserService/index.js +++ /dev/null @@ -1,66 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const user_1 = __importDefault(require("../../models/user")); -const bcrypt = require("bcrypt"); -const crypto = require("crypto"); -const NotFoundError = require("../../utils/NotFoundError"); -const InternalServerError = require("../../utils/InternalServerError"); -const NotAuthorizedError = require("../../utils/NotAuthorizedError"); -const UserService = function () { - this.login = (userData) => __awaiter(this, void 0, void 0, function* () { - const email = userData.email; - const password = userData.password; - const user = yield user_1.default.findByCreds(email, password); - const token = yield user.generateAuthToken(); - if (!user || !token) - throw new NotFoundError("Login User Not Found Error"); - return { user, token }; - }); - this.logout = (user, userToken) => __awaiter(this, void 0, void 0, function* () { - user.tokens = user.tokens.filter((token) => { - return token.token !== userToken; - }); - yield user.save(); - }); - this.logoutAll = (user) => __awaiter(this, void 0, void 0, function* () { - user.tokens = []; - user.tempTokens = []; - yield user.save(); - }); - this.create = (userData) => __awaiter(this, void 0, void 0, function* () { - console.log("Create"); - const user = new user_1.default(userData); - yield user.save(); - yield user.generateEncryptionKeys(); - const token = yield user.generateAuthToken(); - if (!user || !token) - throw new InternalServerError("Could Not Create New User Error"); - return { user, token }; - }); - this.changePassword = (user, oldPassword, newPassword) => __awaiter(this, void 0, void 0, function* () { - const isMatch = yield bcrypt.compare(oldPassword, user.password); - if (!isMatch) - throw new NotAuthorizedError("Change Passwords Do Not Match Error"); - const encryptionKey = user.getEncryptionKey(); - user.password = newPassword; - user.tokens = []; - user.tempTokens = []; - yield user.save(); - yield user.changeEncryptionKey(encryptionKey); - const newToken = yield user.generateAuthToken(); - return newToken; - }); -}; -module.exports = UserService; diff --git a/dist/test.js b/dist/test.js deleted file mode 100644 index 3918c74..0000000 --- a/dist/test.js +++ /dev/null @@ -1 +0,0 @@ -"use strict"; diff --git a/dist/utils/InternalServerError.js b/dist/utils/InternalServerError.js deleted file mode 100644 index b54404a..0000000 --- a/dist/utils/InternalServerError.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -class InternalServerError extends Error { - constructor(args) { - super(args); - this.code = 500; - } -} -module.exports = InternalServerError; diff --git a/dist/utils/NotAuthorizedError.js b/dist/utils/NotAuthorizedError.js deleted file mode 100644 index 05c85c6..0000000 --- a/dist/utils/NotAuthorizedError.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -class NotAuthorizedError extends Error { - constructor(args) { - super(args); - this.code = 401; - } -} -module.exports = NotAuthorizedError; diff --git a/dist/utils/NotFoundError.js b/dist/utils/NotFoundError.js deleted file mode 100644 index daddb1c..0000000 --- a/dist/utils/NotFoundError.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -class NotFoundError extends Error { - constructor(args) { - super(args); - this.code = 404; - } -} -module.exports = NotFoundError; diff --git a/dist/utils/createError.js b/dist/utils/createError.js deleted file mode 100644 index e19bcc0..0000000 --- a/dist/utils/createError.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -const createError = (message, code, exception) => { - let error = new Error(message); - error.message = message; - error.code = code; - error.exception = exception; - throw error; -}; -module.exports = createError; diff --git a/dist/utils/createQuery.js b/dist/utils/createQuery.js deleted file mode 100644 index 594d1dd..0000000 --- a/dist/utils/createQuery.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -const createQuery = (owner, parent, sortBy, startAt, startAtDate, searchQuery, startAtName) => { - let query = { "metadata.owner": owner }; - if (searchQuery !== "") { - searchQuery = new RegExp(searchQuery, 'i'); - query = Object.assign(Object.assign({}, query), { filename: searchQuery }); - } - else { - query = Object.assign(Object.assign({}, query), { "metadata.parent": parent }); - } - if (startAt) { - if (sortBy === "date_desc" || sortBy === "DEFAULT") { - query = Object.assign(Object.assign({}, query), { "uploadDate": { $lt: new Date(startAtDate) } }); - } - else if (sortBy === "date_asc") { - query = Object.assign(Object.assign({}, query), { "uploadDate": { $gt: new Date(startAtDate) } }); - } - else if (sortBy === "alp_desc") { - query = Object.assign(Object.assign({}, query), { "filename": { $lt: startAtName } }); - } - else { - query = Object.assign(Object.assign({}, query), { "filename": { $gt: startAtName } }); - } - } - return query; -}; -module.exports = createQuery; diff --git a/dist/utils/imageChecker.js b/dist/utils/imageChecker.js deleted file mode 100644 index 7426a09..0000000 --- a/dist/utils/imageChecker.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const imageExtList = [ - "jpeg", - "jpg", - "png", - "gif", - "svg", - "tiff", - "bmp" -]; -const imageChecker = (filename) => { - if (filename.length < 1 || !filename.includes(".")) { - return false; - } - const extSplit = filename.split("."); - if (extSplit.length <= 1) { - return false; - } - const ext = extSplit[extSplit.length - 1]; - return imageExtList.includes(ext.toLowerCase()); -}; -exports.default = imageChecker; diff --git a/dist/utils/mobileCheck.js b/dist/utils/mobileCheck.js deleted file mode 100644 index 5926377..0000000 --- a/dist/utils/mobileCheck.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const mobilecheck = () => { - var check = false; - (function (a) { if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) - check = true; })(navigator.userAgent || navigator.vendor || window.opera); - return check; -}; -exports.default = mobilecheck; diff --git a/dist/utils/sortBySwitch.js b/dist/utils/sortBySwitch.js deleted file mode 100644 index 08b6927..0000000 --- a/dist/utils/sortBySwitch.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -const sortBySwitch = (sortBy) => { - switch (sortBy) { - case "alp_asc": - return { filename: 1 }; - case "alp_desc": - return { filename: -1 }; - case "date_asc": - return { uploadDate: 1 }; - default: - return { uploadDate: -1 }; - } -}; -module.exports = sortBySwitch; diff --git a/dist/utils/sortBySwitchFolder.js b/dist/utils/sortBySwitchFolder.js deleted file mode 100644 index 01f8cd2..0000000 --- a/dist/utils/sortBySwitchFolder.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -const sortBySwitch = (sortBy) => { - switch (sortBy) { - case "alp_asc": - return { name: 1 }; - case "alp_desc": - return { name: -1 }; - case "date_asc": - return { createdAt: 1 }; - default: - return { createdAt: -1 }; - } -}; -module.exports = sortBySwitch; diff --git a/dist/utils/streamToBuffer.js b/dist/utils/streamToBuffer.js deleted file mode 100644 index df36dd5..0000000 --- a/dist/utils/streamToBuffer.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const streamToBuffer = (stream) => { - const chunks = []; - return new Promise((resolve, reject) => { - stream.on('data', (chunk) => chunks.push(chunk)); - stream.on('error', reject); - stream.on('end', () => resolve(Buffer.concat(chunks))); - }); -}; -exports.default = streamToBuffer; diff --git a/dist/utils/streamToStrings.js b/dist/utils/streamToStrings.js deleted file mode 100644 index 2446b3c..0000000 --- a/dist/utils/streamToStrings.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const streamToString = (stream) => { - const chunks = []; - return new Promise((resolve, reject) => { - stream.on('data', (chunk) => chunks.push(chunk)); - stream.on('error', reject); - stream.on('end', () => resolve(Buffer.concat(chunks))); - }); -}; -exports.default = streamToString; diff --git a/dist/utils/videoChecker.js b/dist/utils/videoChecker.js deleted file mode 100644 index 2af56bd..0000000 --- a/dist/utils/videoChecker.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const videoExtList = [ - "3g2", - "3gp", - "aaf", - "asf", - "avchd", - "avi", - "drc", - "flv", - "m2v", - "m4p", - "m4v", - "mkv", - "mng", - "mov", - "mp2", - "mp4", - "mpe", - "mpeg", - "mpg", - "mpv", - "mxf", - "nsv", - "ogg", - "ogv", - "qt", - "rm", - "rmvb", - "roq", - "svi", - "vob", - "webm", - "wmv", - "yuv" -]; -const videoChecker = (filename) => { - if (filename.length < 1 || !filename.includes(".")) { - return false; - } - const extSplit = filename.split("."); - if (extSplit.length <= 1) { - return false; - } - const ext = extSplit[extSplit.length - 1]; - return videoExtList.includes(ext.toLowerCase()); -}; -exports.default = videoChecker; From 7bfba3b499f3a51160246cf1a6bc00d911002063 Mon Sep 17 00:00:00 2001 From: subnub Date: Thu, 16 Apr 2020 17:33:51 -0400 Subject: [PATCH 007/129] added /dist to git ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index f89a75d..3e9f1d2 100755 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ certificate.key package-lock.json ._* .DS_Store +dist/ \ No newline at end of file From 4821c5a40883a1015d0e85594dda1d12ed1ebb78 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 17 Apr 2020 00:13:12 -0400 Subject: [PATCH 008/129] Added path option for storing files on file system, started to add s3 support --- backend/controllers/file.ts | 2 +- backend/controllers/fileSystem.ts | 2 +- backend/db/s3.ts | 6 +++++ backend/enviroment/env.js | 3 ++- .../ChunkService/FileSystemService.ts | 23 +++++++++++++++- backend/services/ChunkService/MongoService.ts | 25 ++++++++++++++++++ .../ChunkService/utils/awaitUploadStreamFS.ts | 9 ++++--- backend/services/FileService/indexnew.ts | 26 ------------------- .../FileService/utils/createThumbnailFS.ts | 6 ++--- package.json | 1 + 10 files changed, 66 insertions(+), 37 deletions(-) create mode 100644 backend/db/s3.ts diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index cee7a0d..ccc179e 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -578,7 +578,7 @@ class FileController { const userID = req.user._id; const fileID = req.body.id; - await fileService.deleteFile(userID, fileID); + await mongoService.deleteFile(userID, fileID); res.send() diff --git a/backend/controllers/fileSystem.ts b/backend/controllers/fileSystem.ts index 7ecb22f..cd546fd 100644 --- a/backend/controllers/fileSystem.ts +++ b/backend/controllers/fileSystem.ts @@ -576,7 +576,7 @@ class FileSystemController { const userID = req.user._id; const fileID = req.body.id; - await fileService.deleteFile(userID, fileID); + await fileSystemService.deleteFile(userID, fileID); res.send() diff --git a/backend/db/s3.ts b/backend/db/s3.ts new file mode 100644 index 0000000..73dd6b3 --- /dev/null +++ b/backend/db/s3.ts @@ -0,0 +1,6 @@ +import AWS from "aws-sdk"; + +AWS.config.update({ + accessKeyId: "", + secretAccessKey: "" +}); \ No newline at end of file diff --git a/backend/enviroment/env.js b/backend/enviroment/env.js index 309fd68..c72bc5d 100644 --- a/backend/enviroment/env.js +++ b/backend/enviroment/env.js @@ -6,5 +6,6 @@ module.exports = { root: process.env.ROOT, url: process.env.URL, mongoURL: process.env.MONGODB_URL, - dbType: process.env.DB_TYPE + dbType: process.env.DB_TYPE, + fsDirectory: process.env.FS_DIRECTORY } \ No newline at end of file diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index 98b9e91..bee4730 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -18,6 +18,8 @@ import imageChecker from "../../utils/imageChecker"; import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; import streamToBuffer from "../../utils/streamToBuffer"; import User from "../../models/user"; +import env from "../../enviroment/env"; +import { removeChunksFS } from "./utils/awaitUploadStreamFS"; const dbUtilsFile = new DbUtilFile(); @@ -62,7 +64,7 @@ class FileSystemService { isVideo, size, IV: initVect, - filePath: `/Users/kylehoell/Documents/fstestdata/${systemFileName}` + filePath: env.fsDirectory + systemFileName } const fileWriteStream = fs.createWriteStream(metadata.filePath); @@ -255,6 +257,25 @@ class FileSystemService { await dbUtilsFile.removeOneTimePublicLink(fileID); } } + + deleteFile = async(userID: string, fileID: string) => { + + const file: FileInterface = await dbUtilsFile.getFileInfo(fileID, userID); + + if (!file) throw new NotFoundError("Delete File Not Found Error"); + + if (file.metadata.thumbnailID) { + + const thumbnail = await Thumbnail.findById(file.metadata.thumbnailID) as ThumbnailInterface; + const thumbnailPath = thumbnail.path!; + await removeChunksFS(thumbnailPath); + + await Thumbnail.deleteOne({_id: file.metadata.thumbnailID}); + } + + await removeChunksFS(file.metadata.filePath!); + await File.deleteOne({_id: file._id}); + } } export default FileSystemService; \ No newline at end of file diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 2fe6b6c..16a39f3 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -250,6 +250,31 @@ class MongoService implements ChunkInterface { await awaitStream(readStream.pipe(decipher), res); } + deleteFile = async(userID: string, fileID: string) => { + + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255, + }); + + const file = await dbUtilsFile.getFileInfo(fileID, userID); + + if (!file) throw new NotFoundError("Delete File Not Found Error"); + + if (file.metadata.thumbnailID) { + + await Thumbnail.deleteOne({_id: file.metadata.thumbnailID}); + } + + if (file.metadata.isVideo && file.metadata.transcoded) { + try { + await bucket.delete(new ObjectID(file.metadata.transcodedID)); + } catch (e) { + console.log("Could Not Find Transcoded Video"); + } + } + + await bucket.delete(new ObjectID(fileID)); + } } export default MongoService; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/awaitUploadStreamFS.ts b/backend/services/ChunkService/utils/awaitUploadStreamFS.ts index cdec25f..64ec29b 100644 --- a/backend/services/ChunkService/utils/awaitUploadStreamFS.ts +++ b/backend/services/ChunkService/utils/awaitUploadStreamFS.ts @@ -1,7 +1,7 @@ import {Request} from "express" import fs from "fs"; -const removeChunks = (path: string) => { +export const removeChunksFS = (path: string) => { return new Promise((resolve, reject) => { @@ -12,6 +12,7 @@ const removeChunks = (path: string) => { } console.log("File Removed"); + resolve(); }) }) } @@ -22,7 +23,7 @@ const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, inputSteam.on("error", (e: Error) => { - removeChunks(path); + removeChunksFS(path); reject({ message: "Await Stream Input Error", @@ -33,7 +34,7 @@ const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, outputStream.on("error", (e: Error) => { - removeChunks(path); + removeChunksFS(path); reject({ message: "Await Stream Output Error", @@ -46,7 +47,7 @@ const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, console.log("Upload Request Cancelling..."); - removeChunks(path); + removeChunksFS(path); }) inputSteam.pipe(outputStream).on("finish", (data: T) => { diff --git a/backend/services/FileService/indexnew.ts b/backend/services/FileService/indexnew.ts index 90338ed..7c925ea 100644 --- a/backend/services/FileService/indexnew.ts +++ b/backend/services/FileService/indexnew.ts @@ -231,32 +231,6 @@ class MongoFileService { return file; } - - deleteFile = async(userID: string, fileID: string) => { - - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }); - - const file = await dbUtilsFile.getFileInfo(fileID, userID); - - if (!file) throw new NotFoundError("Delete File Not Found Error"); - - if (file.metadata.thumbnailID) { - - await Thumbnail.deleteOne({_id: file.metadata.thumbnailID}); - } - - if (file.metadata.isVideo && file.metadata.transcoded) { - try { - await bucket.delete(ObjectID(file.metadata.transcodedID)); - } catch (e) { - console.log("Could Not Find Transcoded Video"); - } - } - - await bucket.delete(ObjectID(fileID)); - } } export default MongoFileService; \ No newline at end of file diff --git a/backend/services/FileService/utils/createThumbnailFS.ts b/backend/services/FileService/utils/createThumbnailFS.ts index f874980..a9eca0e 100644 --- a/backend/services/FileService/utils/createThumbnailFS.ts +++ b/backend/services/FileService/utils/createThumbnailFS.ts @@ -1,7 +1,6 @@ const mongoose = require("../../../db/mongoose") const conn = mongoose.connection; const crypto= require("crypto"); -const env = require("../../../enviroment/env"); import Thumbnail from "../../../models/thumbnail"; const ObjectID = require('mongodb').ObjectID const sharp = require("sharp"); @@ -10,6 +9,7 @@ import {FileInterface} from "../../../models/file"; import {UserInterface} from "../../../models/user"; import fs from "fs"; import uuid from "uuid"; +import env from "../../../enviroment/env"; const createThumbnailFS = (file: FileInterface, filename: string, user: UserInterface) => { @@ -22,7 +22,7 @@ const createThumbnailFS = (file: FileInterface, filename: string, user: UserInte const thumbnailFilename = uuid.v4(); const readStream = fs.createReadStream(file.metadata.filePath!); - const writeStream = fs.createWriteStream(`/Users/kylehoell/Documents/fstestdata/${thumbnailFilename}`); + const writeStream = fs.createWriteStream(env.fsDirectory + thumbnailFilename); const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, file.metadata.IV); readStream.on("error", (e: Error) => { @@ -58,7 +58,7 @@ const createThumbnailFS = (file: FileInterface, filename: string, user: UserInte writeStream.on("finish", async() => { console.log("Thumbnail written"); - const thumbnailModel = new Thumbnail({name: filename, owner: user._id, IV: thumbnailIV, path: `/Users/kylehoell/Documents/fstestdata/${thumbnailFilename}`}); + const thumbnailModel = new Thumbnail({name: filename, owner: user._id, IV: thumbnailIV, path: env.fsDirectory + thumbnailFilename}); await thumbnailModel.save(); diff --git a/package.json b/package.json index 7d55069..3712115 100755 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "@types/mongoose": "^5.7.10", "@types/node": "^13.11.1", "@types/uuid": "^7.0.2", + "aws-sdk": "^2.657.0", "axios": "^0.19.2", "babel-polyfill": "^6.26.0", "bcrypt": "^3.0.8", From 4a03523c96eb89c7ee3e6f7088abd1237e846d73 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 17 Apr 2020 01:20:54 -0400 Subject: [PATCH 009/129] Started adding the Amazon S3 Chunk Service, so far Uploading, Downloading, and Streaming video works --- backend/controllers/fileSystem.ts | 9 +- backend/db/s3.ts | 11 +- backend/enviroment/env.js | 5 +- backend/models/file.ts | 4 +- .../ChunkService/FileSystemService.ts | 2 +- backend/services/ChunkService/S3Service.ts | 176 ++++++++++++++++++ .../ChunkService/utils/awaitUploadStreamS3.ts | 21 +++ backend/utils/streamToBuffer.ts | 2 +- 8 files changed, 220 insertions(+), 10 deletions(-) create mode 100644 backend/services/ChunkService/S3Service.ts create mode 100644 backend/services/ChunkService/utils/awaitUploadStreamS3.ts diff --git a/backend/controllers/fileSystem.ts b/backend/controllers/fileSystem.ts index cd546fd..0ed4914 100644 --- a/backend/controllers/fileSystem.ts +++ b/backend/controllers/fileSystem.ts @@ -8,6 +8,9 @@ const fileService = new FileService() import FileSystemService from "../services/ChunkService/FileSystemService"; const fileSystemService = new FileSystemService(); +import S3FileService from "../services/ChunkService/S3Service"; +const s3FileService = new S3FileService(); + import {UserInterface} from "../models/user"; interface RequestType extends Request { @@ -86,7 +89,7 @@ class FileSystemController { req.pipe(busboy); - const file = await fileSystemService.uploadFile(user, busboy, req); + const file = await s3FileService.uploadFile(user, busboy, req); res.send(file); @@ -445,7 +448,7 @@ class FileSystemController { console.log("stream request", req.params.id) - await fileSystemService.streamVideo(user, fileID, headers, res); + await s3FileService.streamVideo(user, fileID, headers, res); } catch (e) { @@ -472,7 +475,7 @@ class FileSystemController { const fileID = req.params.id; //await fileService.downloadFile(user, fileID, res); - await fileSystemService.downloadFile(user, fileID, res); + await s3FileService.downloadFile(user, fileID, res); } catch (e) { diff --git a/backend/db/s3.ts b/backend/db/s3.ts index 73dd6b3..17b945c 100644 --- a/backend/db/s3.ts +++ b/backend/db/s3.ts @@ -1,6 +1,11 @@ import AWS from "aws-sdk"; +import env from "../enviroment/env"; AWS.config.update({ - accessKeyId: "", - secretAccessKey: "" -}); \ No newline at end of file + accessKeyId: env.s3ID, + secretAccessKey: env.s3Key +}); + +const s3 = new AWS.S3(); + +export default s3; \ No newline at end of file diff --git a/backend/enviroment/env.js b/backend/enviroment/env.js index c72bc5d..3fc3d0e 100644 --- a/backend/enviroment/env.js +++ b/backend/enviroment/env.js @@ -7,5 +7,8 @@ module.exports = { url: process.env.URL, mongoURL: process.env.MONGODB_URL, dbType: process.env.DB_TYPE, - fsDirectory: process.env.FS_DIRECTORY + fsDirectory: process.env.FS_DIRECTORY, + s3ID: process.env.S3_ID, + s3Key: process.env.S3_KEY, + s3Bucket: process.env.S3_BUCKET } \ No newline at end of file diff --git a/backend/models/file.ts b/backend/models/file.ts index 44c18df..dc1ac0f 100644 --- a/backend/models/file.ts +++ b/backend/models/file.ts @@ -51,7 +51,8 @@ const fileSchema = new mongoose.Schema({ }, linkType: String, link: String, - filePath: String + filePath: String, + s3ID: String, }, required: true @@ -76,6 +77,7 @@ export interface FileInterface extends Document { linkType?: 'one' | 'public', link?: string, filePath?: string, + s3ID?: string, } } diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index bee4730..c7a570d 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -24,7 +24,7 @@ import { removeChunksFS } from "./utils/awaitUploadStreamFS"; const dbUtilsFile = new DbUtilFile(); // implements ChunkInterface -class FileSystemService { +class FileSystemService implements ChunkInterface { constructor() { diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts new file mode 100644 index 0000000..cd58688 --- /dev/null +++ b/backend/services/ChunkService/S3Service.ts @@ -0,0 +1,176 @@ +import File, { FileInterface } from "../../models/file"; +import User, {UserInterface} from "../../models/user"; +import s3 from "../../db/s3"; +import env from "../../enviroment/env"; + +import { Response, Request } from "express"; +import ChunkInterface from "./utils/ChunkInterface"; +import NotAuthorizedError from "../../utils/NotAuthorizedError"; +import NotFoundError from "../../utils/NotFoundError"; +import crypto from "crypto"; +import getBusboyData from "./utils/getBusboyData"; +import videoChecker from "../../utils/videoChecker"; +import fs from "fs"; +import uuid from "uuid"; +import awaitUploadStreamS3 from "./utils/awaitUploadStreamS3"; +import getFileSize from "./utils/getFileSize"; +import awaitStream from "./utils/awaitStream"; +import createThumbnailFS from "../FileService/utils/createThumbnailFS"; +import imageChecker from "../../utils/imageChecker"; +import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; +import streamToBuffer from "../../utils/streamToBuffer"; +import { removeChunksFS } from "./utils/awaitUploadStreamFS"; + +import DbUtilFile from "../../db/utils/fileUtils/index"; +const dbUtilsFile = new DbUtilFile(); + + +class S3Service { + + constructor() { + + } + + uploadFile = async(user: UserInterface, busboy: any, req: Request) => { + + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + const initVect = crypto.randomBytes(16); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect); + + const {file, filename, formData} = await getBusboyData(busboy); + + const parent = formData.get("parent") || "/" + const parentList = formData.get("parentList") || "/"; + const size = formData.get("size") || "" + let hasThumbnail = false; + let thumbnailID = "" + const isVideo = videoChecker(filename) + + const randomS3ID = uuid.v4(); + + const metadata = { + owner: user._id, + parent, + parentList, + hasThumbnail, + thumbnailID, + isVideo, + size, + IV: initVect, + s3ID: randomS3ID + } + + const params = { + Bucket: env.s3Bucket, + Body : file.pipe(cipher), + Key : randomS3ID + }; + + await awaitUploadStreamS3(params); + + const date = new Date(); + const encryptedFileSize = size; //await getFileSize(metadata.filePath); + + const currentFile = new File({ + filename, + uploadDate: date.toISOString(), + length: encryptedFileSize, + metadata + }); + + await currentFile.save(); + + console.log("Sending file...") + + return currentFile; + + // if (finishedFile.length < 15728640 && imageCheck) { + + // // const updatedFile = await createThumbnail(finishedFile, filename, user); + + // // return updatedFile; + + // } else { + + // return finishedFile; + // } + } + + downloadFile = async(user: UserInterface, fileID: string, res: Response) => { + + const currentFile: FileInterface = await dbUtilsFile.getFileInfo(fileID, user._id); + + if (!currentFile) throw new NotFoundError("Download File Not Found"); + + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + const IV = currentFile.metadata.IV.buffer + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); + res.set('Content-Length', currentFile.metadata.size.toString()); + + const params: any = {Bucket: env.s3Bucket, Key: currentFile.metadata.s3ID!}; + + const s3ReadStream = s3.getObject(params).createReadStream(); + + await awaitStream(s3ReadStream.pipe(decipher), res); + + } + + streamVideo = async(user: UserInterface, fileID: string, headers: any, res: Response) => { + + const userID = user._id; + const currentFile: FileInterface = await dbUtilsFile.getFileInfo(fileID, userID); + + if (!currentFile) throw new NotFoundError("Video File Not Found"); + + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + const fileSize = currentFile.metadata.size; + + const range = headers.range + const parts = range.replace(/bytes=/, "").split("-") + let start = parseInt(parts[0], 10) + let end = parts[1] + ? parseInt(parts[1], 10) + : fileSize-1 + const chunksize = (end-start)+1 + const IV = currentFile.metadata.IV.buffer + + let head = { + 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, + 'Accept-Ranges': 'bytes', + 'Content-Length': chunksize, + 'Content-Type': 'video/mp4'} + + const params: any = {Bucket: env.s3Bucket, Key: currentFile.metadata.s3ID!, Range: `bytes=${start}-${end}`}; + + const s3ReadStream = s3.getObject(params).createReadStream(); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + res.writeHead(206, head); + + await awaitStream(s3ReadStream.pipe(decipher), res); + + } +} + +export default S3Service; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/awaitUploadStreamS3.ts b/backend/services/ChunkService/utils/awaitUploadStreamS3.ts new file mode 100644 index 0000000..4b8f9b0 --- /dev/null +++ b/backend/services/ChunkService/utils/awaitUploadStreamS3.ts @@ -0,0 +1,21 @@ +import s3 from "../../../db/s3"; + +const awaitUploadStreamS3 = (params: any) => { + + return new Promise((resolve, reject) => { + + s3.upload(params, (err: any, data: any) => { + + if (err) { + console.log("Amazon Upload Error", err); + reject("Amazon upload error"); + } + + console.log("Amazon File Uploaded", data); + resolve(); + }) + + }) +} + +export default awaitUploadStreamS3; \ No newline at end of file diff --git a/backend/utils/streamToBuffer.ts b/backend/utils/streamToBuffer.ts index b959c24..ec50ee6 100644 --- a/backend/utils/streamToBuffer.ts +++ b/backend/utils/streamToBuffer.ts @@ -1,6 +1,6 @@ const streamToBuffer = (stream: any) => { const chunks: any[] = [] - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { stream.on('data', (chunk: any) => chunks.push(chunk)) stream.on('error', reject) stream.on('end', () => resolve(Buffer.concat(chunks))) From 9b83b06556a9e4fb264e65603be433a3a61b904a Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 17 Apr 2020 16:43:45 -0400 Subject: [PATCH 010/129] S3 for file chunks is now fully operational, and can used by changing the config file. MongoDB, FileSystem, and S3 are now working fully. --- .DS_Store | Bin 6148 -> 6148 bytes backend/controllers/fileS3.ts | 593 ++++++++++++++++++ backend/controllers/fileSystem.ts | 9 +- backend/express-routers/file.ts | 7 +- backend/models/thumbnail.ts | 6 +- backend/services/ChunkService/S3Service.ts | 136 +++- .../FileService/utils/createThumbnailS3.ts | 169 +++++ .../FileService/utils/removeChunksS3.ts | 21 + 8 files changed, 919 insertions(+), 22 deletions(-) create mode 100644 backend/controllers/fileS3.ts create mode 100644 backend/services/FileService/utils/createThumbnailS3.ts create mode 100644 backend/services/FileService/utils/removeChunksS3.ts diff --git a/.DS_Store b/.DS_Store index d99ca88b0c94efcedd0bedc8c65862a70f826c4b..1bee93502d9db1577d91a9ffe873236cfc7e5d4b 100644 GIT binary patch delta 24 fcmZoMXffEZmWAEa%s@xM*l6-IR=LfWSd4@LVBH6Y delta 25 gcmZoMXffEZmW9L2$U;ZK(8PT5b5_~SmspI10cU#$!~g&Q diff --git a/backend/controllers/fileS3.ts b/backend/controllers/fileS3.ts new file mode 100644 index 0000000..2bad71a --- /dev/null +++ b/backend/controllers/fileS3.ts @@ -0,0 +1,593 @@ +import { Request, Response } from "express"; + +//const FileService = require("../services/FileService") +import FileService from "../services/FileService/indexnew"; + +const fileService = new FileService() + +import S3FileService from "../services/ChunkService/S3Service"; +const s3FileService = new S3FileService(); + +import {UserInterface} from "../models/user"; + +interface RequestType extends Request { + user?: UserInterface, + auth?: any, + busboy?: any, +} + +class FileSystemController { + + // fileService: ; + + constructor() { + + } + + getThumbnail = async(req: RequestType, res: Response) => { + + + if (!req.user) { + + return; + } + + try { + + + const user = req.user; + const id = req.params.id; + + const decryptedThumbnail = await s3FileService.getThumbnail(user, id); + + res.send(decryptedThumbnail); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send(); + } + + } + + async getFullThumbnail(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const user = req.user; + const fileID = req.params.id; + + await s3FileService.getFullThumbnail(user, fileID, res); + + } catch (e) { + const code = e.code || 500; + console.log(e.message, e.exception) + return res.status(code).send(); + } + } + + async uploadFile(req: RequestType, res: Response) { + + if (!req.user) { + + return + } + + try { + + const user = req.user; + const busboy = req.busboy; + + req.pipe(busboy); + + const file = await s3FileService.uploadFile(user, busboy, req); + + res.send(file); + + console.log("file uploaded"); + + } catch (e) { + const code = e.code || 500; + console.log(e.message, e.exception) + return res.status(code).send(); + } + } + + async getPublicDownload(req: RequestType, res: Response) { + + try { + + const ID = req.params.id; + const tempToken = req.params.tempToken; + + await s3FileService.getPublicDownload(ID, tempToken, res); + + } catch (e) { + + const code = e.code || 500; + const message = e.message || e; + + console.log(message, e); + res.status(code).send(); + } + } + + async removeLink(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const id = req.params.id; + const userID = req.user._id; + + await fileService.removeLink(userID, id) + + res.send(); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send(); + } + + } + + async makePublic(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const fileID = req.params.id; + const user = req.user; + + const token = await fileService.makePublic(user, fileID); + + res.send(token); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send(); + } + } + + async getPublicInfo(req: RequestType, res: Response) { + + try { + + const id = req.params.id; + const tempToken = req.params.tempToken; + + const file = await fileService.getPublicInfo(id, tempToken); + + res.send(file); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async makeOneTimePublic(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const id = req.params.id; + const userID = req.user._id; + + const token = await fileService.makeOneTimePublic(userID, id); + + res.send(token); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + + } + + async getFileInfo(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const fileID = req.params.id; + const userID = req.user._id; + + const file = await fileService.getFileInfo(userID, fileID); + + res.send(file); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async getQuickList(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const userID = req.user._id; + + const quickList = await fileService.getQuickList(userID); + + res.send(quickList); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async getList(req: RequestType, res: Response) { + + if (!req.user) { + return + } + + try { + + const query = req.query; + const userID = req.user._id; + + const fileList = await fileService.getList(userID, query); + + res.send(fileList); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async getDownloadToken(req: RequestType, res: Response) { + + if (!req.user) { + return + } + + try { + + const user = req.user; + + const tempToken = await fileService.getDownloadToken(user); + + res.send({tempToken}); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async getDownloadTokenVideo(req: RequestType, res: Response) { + + if (!req.user) { + return + } + + try { + + const user = req.user; + const cookie = req.headers.uuid as string; + + const tempToken = await fileService.getDownloadTokenVideo(user, cookie); + + res.send({tempToken}); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async removeTempToken(req: RequestType, res: Response) { + + if (!req.user) { + return + } + + try { + + const user = req.user + const tempToken = req.params.tempToken; + + await fileService.removeTempToken(user, tempToken); + + res.send(); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + // async transcodeVideo(req: RequestType, res: Response) { + + // if (!req.user) { + + // return; + // } + + // try { + + // console.log("transcode request", req.body.file._id) + + // const user = req.user; + // const body = req.body; + + // await fileService.transcodeVideo(user, body); + + // res.send("Finished"); + + // } catch (e) { + + // const code = e.code || 500; + // console.log(e.message, e.exception) + // return res.status(code).send(); + // } + // } + + // async removeTranscodeVideo(req: RequestType, res: Response) { + + // if (!req.user) { + + // return; + // } + + // try { + + // const fileID = req.body.id; + // const userID = req.user._id; + + // await fileService.removeTranscodeVideo(userID, fileID); + + // res.send(); + + // } catch (e) { + + // const code = e.code || 500; + + // console.log(e); + // res.status(code).send() + // } + // } + + // async streamTranscodedVideo(req: RequestType, res: Response) { + + // if (!req.auth || !req.user) { + // return; + // } + + // try { + + // console.log("stream request transcoded", req.params.id) + + // const fileID = req.params.id; + // const userID = req.user._id; + // const headers = req.headers; + + // await fileService.streamTranscodedVideo(userID, fileID, headers, res); + + // } catch (e) { + + // const code = e.code || 500; + // const message = e.message || e; + + // console.log(message, e); + // res.status(code).send(); + // } + // } + + async streamVideo(req: RequestType, res: Response) { + + if (!req.auth || !req.user) { + return; + } + + try { + + const user = req.user; + const fileID = req.params.id; + const headers = req.headers; + + console.log("stream request", req.params.id) + + await s3FileService.streamVideo(user, fileID, headers, res); + + } catch (e) { + + const code = e.code || 500; + const message = e.message || e; + + console.log(message, e); + res.status(code).send(); + } + + } + + async downloadFile(req: RequestType, res: Response) { + + if (!req.auth || !req.user) { + return; + } + + try { + + console.log("download request") + + const user = req.user; + const fileID = req.params.id; + + //await fileService.downloadFile(user, fileID, res); + await s3FileService.downloadFile(user, fileID, res); + + } catch (e) { + + const code = e.code || 500; + const message = e.message || e; + + console.log(message, e); + res.status(code).send(); + } + } + + async getSuggestedList(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const userID = req.user._id; + let searchQuery = req.query.search || ""; + + const {fileList, folderList} = await fileService.getSuggestedList(userID, searchQuery); + + return res.send({folderList, fileList}) + + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } + + async renameFile(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const fileID = req.body.id; + const title = req.body.title + const userID = req.user._id; + + await fileService.renameFile(userID, fileID, title) + + res.send(); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + + } + + async moveFile(req: RequestType, res: Response) { + + console.log("move request"); + + if (!req.user) { + return; + } + + try { + + const fileID = req.body.id; + const userID = req.user._id; + const parentID = req.body.parent; + + console.log(fileID, userID, parentID); + + await fileService.moveFile(userID, fileID, parentID); + + res.send(); + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + + } + + async deleteFile(req: RequestType, res: Response) { + + if (!req.user) { + return; + } + + try { + + const userID = req.user._id; + const fileID = req.body.id; + + await s3FileService.deleteFile(userID, fileID); + + res.send() + + } catch (e) { + + const code = e.code || 500; + + console.log(e); + res.status(code).send() + } + } +} + +export default FileSystemController; diff --git a/backend/controllers/fileSystem.ts b/backend/controllers/fileSystem.ts index 0ed4914..cd546fd 100644 --- a/backend/controllers/fileSystem.ts +++ b/backend/controllers/fileSystem.ts @@ -8,9 +8,6 @@ const fileService = new FileService() import FileSystemService from "../services/ChunkService/FileSystemService"; const fileSystemService = new FileSystemService(); -import S3FileService from "../services/ChunkService/S3Service"; -const s3FileService = new S3FileService(); - import {UserInterface} from "../models/user"; interface RequestType extends Request { @@ -89,7 +86,7 @@ class FileSystemController { req.pipe(busboy); - const file = await s3FileService.uploadFile(user, busboy, req); + const file = await fileSystemService.uploadFile(user, busboy, req); res.send(file); @@ -448,7 +445,7 @@ class FileSystemController { console.log("stream request", req.params.id) - await s3FileService.streamVideo(user, fileID, headers, res); + await fileSystemService.streamVideo(user, fileID, headers, res); } catch (e) { @@ -475,7 +472,7 @@ class FileSystemController { const fileID = req.params.id; //await fileService.downloadFile(user, fileID, res); - await s3FileService.downloadFile(user, fileID, res); + await fileSystemService.downloadFile(user, fileID, res); } catch (e) { diff --git a/backend/express-routers/file.ts b/backend/express-routers/file.ts index bbf8242..a7a1cb9 100644 --- a/backend/express-routers/file.ts +++ b/backend/express-routers/file.ts @@ -8,14 +8,17 @@ const tempAuthVideo = require("../middleware/tempAuthVideo") import FileController from "../controllers/file"; import FsFileController from "../controllers/fileSystem"; +import S3FileController from "../controllers/fileS3"; import env from "../enviroment/env"; -let fileController: FileController | FsFileController; +let fileController: FileController | FsFileController | S3FileController; if (env.dbType === "mongo") { fileController = new FileController(); -} else { +} else if (env.dbType === "fs") { fileController = new FsFileController(); +} else { + fileController = new S3FileController(); } //const fileController = new FileController() diff --git a/backend/models/thumbnail.ts b/backend/models/thumbnail.ts index e31f30a..8526060 100644 --- a/backend/models/thumbnail.ts +++ b/backend/models/thumbnail.ts @@ -17,10 +17,11 @@ const thumbnailSchema = new mongoose.Schema({ path: { type: String }, + IV: { type: Buffer, - } - + }, + s3ID: String }, { timestamps: true }) @@ -32,6 +33,7 @@ export interface ThumbnailInterface extends Document { data?: any, path?: string, IV?: Buffer, + s3ID? : string, } const Thumbnail = mongoose.model("Thumbnail", thumbnailSchema); diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index cd58688..2b8c479 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -15,17 +15,17 @@ import uuid from "uuid"; import awaitUploadStreamS3 from "./utils/awaitUploadStreamS3"; import getFileSize from "./utils/getFileSize"; import awaitStream from "./utils/awaitStream"; -import createThumbnailFS from "../FileService/utils/createThumbnailFS"; +import createThumbnailS3 from "../FileService/utils/createThumbnailS3"; import imageChecker from "../../utils/imageChecker"; import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; import streamToBuffer from "../../utils/streamToBuffer"; -import { removeChunksFS } from "./utils/awaitUploadStreamFS"; +import removeChunksS3 from "../FileService/utils/removeChunksS3"; import DbUtilFile from "../../db/utils/fileUtils/index"; const dbUtilsFile = new DbUtilFile(); -class S3Service { +class S3Service implements ChunkInterface { constructor() { @@ -86,20 +86,19 @@ class S3Service { await currentFile.save(); - console.log("Sending file...") - - return currentFile; + const imageCheck = imageChecker(currentFile.filename); - // if (finishedFile.length < 15728640 && imageCheck) { + if (currentFile.length < 15728640 && imageCheck) { - // // const updatedFile = await createThumbnail(finishedFile, filename, user); + console.log("Creating thumbnail...") + const updatedFile = await createThumbnailS3(currentFile, filename, user); - // // return updatedFile; + return updatedFile; - // } else { + } else { - // return finishedFile; - // } + return currentFile; + } } downloadFile = async(user: UserInterface, fileID: string, res: Response) => { @@ -171,6 +170,119 @@ class S3Service { await awaitStream(s3ReadStream.pipe(decipher), res); } + + getThumbnail = async(user: UserInterface, id: string) => { + + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + const thumbnail = await Thumbnail.findById(id) as ThumbnailInterface; + + if (thumbnail.owner !== user._id.toString()) { + + throw new NotAuthorizedError('Thumbnail Unauthorized Error'); + } + + const iv = thumbnail.IV!; + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv("aes256", CIPHER_KEY, iv); + + const params: any = {Bucket: env.s3Bucket, Key: thumbnail.s3ID!}; + + const readStream = s3.getObject(params).createReadStream(); + + const bufferData = await streamToBuffer(readStream.pipe(decipher)); + + return bufferData; + } + + getFullThumbnail = async(user: UserInterface, fileID: string, res: Response) => { + + const userID = user._id; + + const file: FileInterface = await dbUtilsFile.getFileInfo(fileID, userID); + + if (!file) throw new NotFoundError("File Thumbnail Not Found"); + + const password = user.getEncryptionKey(); + const IV = file.metadata.IV.buffer + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key") + + const params: any = {Bucket: env.s3Bucket, Key: file.metadata.s3ID!}; + + const readStream = s3.getObject(params).createReadStream(); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + + console.log("Sending Full Thumbnail...") + await awaitStream(readStream.pipe(decipher), res); + console.log("Full thumbnail sent"); + } + + getPublicDownload = async(fileID: string, tempToken: any, res: Response) => { + + const file: FileInterface = await dbUtilsFile.getPublicFile(fileID); + + if (!file || !file.metadata.link || file.metadata.link !== tempToken) { + throw new NotAuthorizedError("File Not Public"); + } + + const user = await User.findById(file.metadata.owner) as UserInterface; + + const password = user.getEncryptionKey(); + + if (!password) throw new NotAuthorizedError("Invalid Encryption Key"); + + const IV = file.metadata.IV.buffer + + const params: any = {Bucket: env.s3Bucket, Key: file.metadata.s3ID!}; + + const readStream = s3.getObject(params).createReadStream(); + + const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + + res.set('Content-Type', 'binary/octet-stream'); + res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); + res.set('Content-Length', file.metadata.size.toString()); + + await awaitStream(readStream.pipe(decipher), res); + + if (file.metadata.linkType === "one") { + console.log("removing public link"); + await dbUtilsFile.removeOneTimePublicLink(fileID); + } + } + + deleteFile = async(userID: string, fileID: string) => { + + const file: FileInterface = await dbUtilsFile.getFileInfo(fileID, userID); + + if (!file) throw new NotFoundError("Delete File Not Found Error"); + + if (file.metadata.thumbnailID) { + + const thumbnail = await Thumbnail.findById(file.metadata.thumbnailID) as ThumbnailInterface; + const paramsThumbnail: any = {Bucket: env.s3Bucket, Key: thumbnail.s3ID!}; + await removeChunksS3(paramsThumbnail); + await Thumbnail.deleteOne({_id: file.metadata.thumbnailID}); + } + + const params: any = {Bucket: env.s3Bucket, Key: file.metadata.s3ID!}; + await removeChunksS3(params); + await File.deleteOne({_id: file._id}); + } } export default S3Service; \ No newline at end of file diff --git a/backend/services/FileService/utils/createThumbnailS3.ts b/backend/services/FileService/utils/createThumbnailS3.ts new file mode 100644 index 0000000..ff09aaa --- /dev/null +++ b/backend/services/FileService/utils/createThumbnailS3.ts @@ -0,0 +1,169 @@ +const mongoose = require("../../../db/mongoose") +const conn = mongoose.connection; +const crypto= require("crypto"); +import Thumbnail from "../../../models/thumbnail"; +const ObjectID = require('mongodb').ObjectID +const sharp = require("sharp"); +const concat = require("concat-stream") +import {FileInterface} from "../../../models/file"; +import {UserInterface} from "../../../models/user"; +import fs from "fs"; +import uuid from "uuid"; +import env from "../../../enviroment/env"; +import s3 from "../../../db/s3"; +import awaitUploadStreamS3 from "../../ChunkService/utils/awaitUploadStreamS3"; + +const createThumbnailS3 = (file: FileInterface, filename: string, user: UserInterface) => { + + return new Promise((resolve, reject) => { + + const password = user.getEncryptionKey(); + + let CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + + const thumbnailFilename = uuid.v4(); + + const params: any = {Bucket: env.s3Bucket, Key: file.metadata.s3ID!}; + + const readStream = s3.getObject(params).createReadStream(); + + //const readStream = fs.createReadStream(file.metadata.filePath!); + //const writeStream = fs.createWriteStream(env.fsDirectory + thumbnailFilename); + + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, file.metadata.IV); + + + + + readStream.on("error", (e: Error) => { + console.log("File service upload thumbnail error", e); + resolve(file); + }) + + // writeStream.on("error", (e: Error) => { + // console.log("File service upload write thumbnail error", e); + // resolve(file); + // }) + + decipher.on("error", (e: Error) => { + console.log("File service upload thumbnail decipher error", e); + resolve(file) + }) + + try { + + + const thumbnailIV = crypto.randomBytes(16); + + const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); + + const imageResize = sharp().resize(300).on("error", (e: Error) => { + + console.log("resize error", e); + resolve(file); + + }) + + const paramsWrite: any = { + Bucket: env.s3Bucket, + Body : readStream.pipe(decipher).pipe(imageResize).pipe(thumbnailCipher), + Key : thumbnailFilename + }; + + //readStream.pipe(decipher).pipe(imageResize).pipe(thumbnailCipher).pipe(writeStream); + //await awaitUploadStreamS3(paramsWrite); + + s3.upload(paramsWrite, async(err: any, data: any) => { + + if (err) { + console.log("Amazon Upload Error", err); + reject("Amazon upload error"); + } + + console.log("Thumbnail written"); + + const thumbnailModel = new Thumbnail({name: thumbnailFilename, owner: user._id, IV: thumbnailIV, s3ID: thumbnailFilename}); + + await thumbnailModel.save(); + + let updatedFile = await conn.db.collection("fs.files") + .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) + + updatedFile = updatedFile.value; + + updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} + + resolve(updatedFile); + }) + + // writeStream.on("finish", async() => { + // console.log("Thumbnail written"); + + // const thumbnailModel = new Thumbnail({name: filename, owner: user._id, IV: thumbnailIV, path: env.fsDirectory + thumbnailFilename}); + + // await thumbnailModel.save(); + + // let updatedFile = await conn.db.collection("fs.files") + // .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) + + // updatedFile = updatedFile.value; + + // updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} + + // resolve(updatedFile); + // }) + + } catch (e) { + + console.log("Thumbnail error", e); + resolve(file); + } + + // try { + + // const concatStream = concat(async(bufferData: Buffer) => { + + // const thumbnailIV = crypto.randomBytes(16); + + // const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); + + // bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); + + // const thumbnailModel = new Thumbnail({name: filename, owner: user._id, data: bufferData}); + + // await thumbnailModel.save(); + + // let updatedFile = await conn.db.collection("fs.files") + // .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) + + // updatedFile = updatedFile.value; + + // updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} + + // resolve(updatedFile); + + // }).on("error", (e: Error) => { + // console.log("File service upload concat stream error", e); + // resolve(file); + // }) + + // const imageResize = sharp().resize(300).on("error", (e: Error) => { + + // console.log("resize error", e); + // resolve(file); + // }) + + // readStream.pipe(decipher).pipe(imageResize).pipe(concatStream); + + + // } catch (e) { + + // console.log(e); + // resolve(file); + // } + + }) +} + +export default createThumbnailS3; \ No newline at end of file diff --git a/backend/services/FileService/utils/removeChunksS3.ts b/backend/services/FileService/utils/removeChunksS3.ts new file mode 100644 index 0000000..f0180ee --- /dev/null +++ b/backend/services/FileService/utils/removeChunksS3.ts @@ -0,0 +1,21 @@ +import s3 from "../../../db/s3"; + +const removeChunksS3 = (parmas: any) => { + + return new Promise((resolve, reject) => { + + s3.deleteObject(parmas, (err, data) => { + + if (err) { + console.log("Could not remove S3 file"); + reject("Could Not Remove S3 File"); + } + + console.log("Delete S3 file"); + resolve(); + }) + + }) +} + +export default removeChunksS3; \ No newline at end of file From c70abc69bb0f3742d477814dc2a2d33c5eb9e6ea Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 17 Apr 2020 23:18:06 -0400 Subject: [PATCH 011/129] Added more typescript support, and started adding documentDB support --- .gitignore | 3 +- backend/controllers/storage.js | 31 ----- backend/controllers/storage.ts | 38 ++++++ backend/controllers/{user.js => user.ts} | 50 ++++--- backend/db/mongoose.js | 31 ++++- backend/enviroment/env.js | 5 +- backend/express-routers/storage.ts | 2 +- backend/express-routers/user.ts | 5 +- backend/models/user.ts | 6 +- backend/services/UserService/index.js | 79 ----------- backend/services/UserService/index.ts | 167 +++++++++++++++++++++++ 11 files changed, 274 insertions(+), 143 deletions(-) delete mode 100644 backend/controllers/storage.js create mode 100644 backend/controllers/storage.ts rename backend/controllers/{user.js => user.ts} (67%) delete mode 100644 backend/services/UserService/index.js create mode 100644 backend/services/UserService/index.ts diff --git a/.gitignore b/.gitignore index 3e9f1d2..5111ece 100755 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ certificate.key package-lock.json ._* .DS_Store -dist/ \ No newline at end of file +dist/ +rds-combined-ca-bundle.pem \ No newline at end of file diff --git a/backend/controllers/storage.js b/backend/controllers/storage.js deleted file mode 100644 index 4205c6c..0000000 --- a/backend/controllers/storage.js +++ /dev/null @@ -1,31 +0,0 @@ -const env = require("../enviroment/env") -const disk = require('diskusage'); - -class StorageController { - - constructor() { - - } - - async getStorageInfo(req, res) { - - if (!req.user) { - - return; - } - - try { - - const info = await disk.check(env.root); - - res.send(info) - - } catch (e) { - - console.log(e); - res.status(500).send(e); - } - } -} - -module.exports = StorageController; \ No newline at end of file diff --git a/backend/controllers/storage.ts b/backend/controllers/storage.ts new file mode 100644 index 0000000..fc8c5be --- /dev/null +++ b/backend/controllers/storage.ts @@ -0,0 +1,38 @@ +import disk from "diskusage"; +import env from "../enviroment/env"; +import { Request, Response } from "express"; +import { UserInterface } from "../models/user"; + +interface RequestType extends Request { + user?: UserInterface, + auth?: any, +} + +class StorageController { + + constructor() { + + } + + getStorageInfo = async(req: RequestType, res: Response) => { + + if (!req.user) { + + return; + } + + try { + + const info = await disk.check(env.root!); + + res.send(info) + + } catch (e) { + + console.log(e); + res.status(500).send(e); + } + } +} + +export default StorageController; \ No newline at end of file diff --git a/backend/controllers/user.js b/backend/controllers/user.ts similarity index 67% rename from backend/controllers/user.js rename to backend/controllers/user.ts index 6dd9202..6533b27 100644 --- a/backend/controllers/user.js +++ b/backend/controllers/user.ts @@ -1,21 +1,31 @@ -const env = require("../enviroment/env"); -const UserService = require("../services/UserService") + +import env from "../enviroment/env"; +import UserService from "../services/UserService"; +import { Request, Response } from "express"; +import { UserInterface } from "../models/user"; const UserProvider = new UserService(); +interface RequestType extends Request { + user?: UserInterface, + auth?: any, + busboy?: any, + encryptedToken?: any +} + class UserController { constructor() { } - async getUser(req, res) { + getUser = async(req: RequestType, res: Response) => { try { - const user = req.user; - user.tokens = undefined; - user.tempTokens = undefined; - user.password = undefined; + const user = req.user!; + user.tokens = []; + user.tempTokens = []; + user.password = ''; user.privateKey = undefined; user.publicKey = undefined; @@ -27,7 +37,7 @@ class UserController { } } - async login(req, res) { + login = async(req: RequestType, res: Response) => { try { @@ -35,9 +45,9 @@ class UserController { const {user, token} = await UserProvider.login(body); - user.tokens = undefined; - user.tempTokens = undefined; - user.password = undefined; + user.tokens = []; + user.tempTokens = []; + user.password = ''; user.privateKey = undefined; user.publicKey = undefined; @@ -52,7 +62,7 @@ class UserController { } } - async logout(req, res) { + logout = async(req: RequestType, res: Response) => { if (!req.user) { @@ -74,13 +84,13 @@ class UserController { } } - async logoutAll(req, res) { + logoutAll = async(req: RequestType, res: Response) => { try { const user = req.user; - await UserProvider.logoutAll(user); + await UserProvider.logoutAll(user!); res.send(); @@ -90,7 +100,7 @@ class UserController { } } - async createUser(req, res) { + createUser = async(req: RequestType, res: Response) => { if (env.createAcctBlocked) { @@ -101,9 +111,9 @@ class UserController { const {user, token} = await UserProvider.create(req.body); - user.tokens = undefined; - user.tempTokens = undefined; - user.password = undefined; + user.tokens = []; + user.tempTokens = [] + user.password = ''; user.privateKey = undefined; user.publicKey = undefined; @@ -118,7 +128,7 @@ class UserController { } } - async changePassword(req, res) { + changePassword = async(req: RequestType, res: Response) => { if (!req.user) { @@ -145,4 +155,4 @@ class UserController { } } -module.exports = UserController; \ No newline at end of file +export default UserController; \ No newline at end of file diff --git a/backend/db/mongoose.js b/backend/db/mongoose.js index 9e5fb05..6c6e0a4 100644 --- a/backend/db/mongoose.js +++ b/backend/db/mongoose.js @@ -1,10 +1,29 @@ const mongoose = require("mongoose"); -const env = require("../enviroment/env"); +const env = require("../enviroment/env.js"); +const fs = require("fs"); + +if (env.useDocumentDB === "true") { + + console.log("Using DocumentDB"); + + mongoose.connect(env.mongoURL, { + useNewUrlParser: true, + useCreateIndex: true, + useUnifiedTopology: true, + sslValidate: true, + useNewUrlParser: true, + sslCA: fs.readFileSync('./rds-combined-ca-bundle.pem') + }) + +} else { + + mongoose.connect(env.mongoURL, { + useNewUrlParser: true, + useCreateIndex: true, + useUnifiedTopology: true, + }) +} + -mongoose.connect(env.mongoURL, { - useNewUrlParser: true, - useCreateIndex: true, - useUnifiedTopology: true, -}) module.exports = mongoose; \ No newline at end of file diff --git a/backend/enviroment/env.js b/backend/enviroment/env.js index 3fc3d0e..5c29287 100644 --- a/backend/enviroment/env.js +++ b/backend/enviroment/env.js @@ -1,4 +1,4 @@ -module.exports = { +export default { key: process.env.KEY, newKey: process.env.NEW_KEY, password: process.env.PASSWORD, @@ -10,5 +10,6 @@ module.exports = { fsDirectory: process.env.FS_DIRECTORY, s3ID: process.env.S3_ID, s3Key: process.env.S3_KEY, - s3Bucket: process.env.S3_BUCKET + s3Bucket: process.env.S3_BUCKET, + useDocumentDB: process.env.USE_DOCUMENT_DB } \ No newline at end of file diff --git a/backend/express-routers/storage.ts b/backend/express-routers/storage.ts index f5a4966..ad32310 100644 --- a/backend/express-routers/storage.ts +++ b/backend/express-routers/storage.ts @@ -1,7 +1,7 @@ import {Router} from "express"; const router = Router(); const auth = require("../middleware/auth"); -const StorageController = require("../controllers/storage"); +import StorageController from "../controllers/storage"; const storageController = new StorageController(); router.get("/storage-service/info", auth, storageController.getStorageInfo); diff --git a/backend/express-routers/user.ts b/backend/express-routers/user.ts index 3a376de..c2ecd56 100644 --- a/backend/express-routers/user.ts +++ b/backend/express-routers/user.ts @@ -1,7 +1,8 @@ -import {Router} from "express"; +import { Router } from "express"; const router = Router(); const auth = require("../middleware/auth"); -const UserController = require("../controllers/user"); +import UserController from "../controllers/user"; + const userController = new UserController(); router.get("/user-service/user", auth, userController.getUser); diff --git a/backend/models/user.ts b/backend/models/user.ts index 3ac9450..5382bb3 100644 --- a/backend/models/user.ts +++ b/backend/models/user.ts @@ -72,6 +72,10 @@ export interface UserInterface extends Document { generateTempAuthToken: () => any; generateTempAuthTokenVideo: (cookie: string) => any; encryptToken: (tempToken: any, key: any, publicKey: any) => any; + findByCreds: (email: string, password: string) => UserInterface; + generateAuthToken: () => any; + generateEncryptionKeys: () => Promise; + changeEncryptionKey: (randomKey: Buffer) => void; } // userSchema.virtual("files", { @@ -222,7 +226,7 @@ userSchema.methods.getEncryptionKey = function() { } } -userSchema.methods.changeEncryptionKey = async function(randomKey: string) { +userSchema.methods.changeEncryptionKey = async function(randomKey: Buffer) { const user = this; const userPassword = user.password; diff --git a/backend/services/UserService/index.js b/backend/services/UserService/index.js deleted file mode 100644 index 48c376d..0000000 --- a/backend/services/UserService/index.js +++ /dev/null @@ -1,79 +0,0 @@ -import User from "../../models/user"; -const bcrypt = require("bcrypt"); -const crypto = require("crypto"); -const NotFoundError = require("../../utils/NotFoundError"); -const InternalServerError = require("../../utils/InternalServerError"); -const NotAuthorizedError = require("../../utils/NotAuthorizedError"); - -const UserService = function() { - - this.login = async(userData) => { - - const email = userData.email; - const password = userData.password; - - const user = await User.findByCreds(email, password); - - const token = await user.generateAuthToken(); - - if (!user || !token) throw new NotFoundError("Login User Not Found Error"); - - return {user, token} - } - - this.logout = async(user, userToken) => { - - user.tokens = user.tokens.filter((token) => { - return token.token !== userToken; - }) - - await user.save(); - } - - this.logoutAll = async(user) => { - - user.tokens = [] - user.tempTokens = []; - - await user.save(); - } - - this.create = async(userData) => { - - console.log("Create"); - - const user = new User(userData); - await user.save(); - - await user.generateEncryptionKeys(); - - const token = await user.generateAuthToken(); - - if (!user || !token) throw new InternalServerError("Could Not Create New User Error"); - - return {user, token} - } - - this.changePassword = async(user, oldPassword, newPassword) => { - - const isMatch = await bcrypt.compare(oldPassword, user.password); - - if (!isMatch) throw new NotAuthorizedError("Change Passwords Do Not Match Error"); - - const encryptionKey = user.getEncryptionKey(); - - user.password = newPassword; - - user.tokens = []; - user.tempTokens = []; - - await user.save(); - await user.changeEncryptionKey(encryptionKey); - - const newToken = await user.generateAuthToken(); - - return newToken; - } -} - -module.exports = UserService; \ No newline at end of file diff --git a/backend/services/UserService/index.ts b/backend/services/UserService/index.ts new file mode 100644 index 0000000..4e0232d --- /dev/null +++ b/backend/services/UserService/index.ts @@ -0,0 +1,167 @@ +import User, {UserInterface} from "../../models/user"; +const bcrypt = require("bcrypt"); +const crypto = require("crypto"); +const NotFoundError = require("../../utils/NotFoundError"); +const InternalServerError = require("../../utils/InternalServerError"); +const NotAuthorizedError = require("../../utils/NotAuthorizedError"); + +type UserDataType = { + email: string, + password: string, +} + +const uknownUserType = User as unknown; + +const UserStaticType = uknownUserType as { + findByCreds: (email: string, password: string) => Promise; +}; + + +class UserService { + + constructor() { + + } + + login = async(userData: UserDataType) => { + + const email = userData.email; + const password = userData.password; + + const user = await UserStaticType.findByCreds(email, password); + + const token = await user.generateAuthToken(); + + if (!user || !token) throw new NotFoundError("Login User Not Found Error"); + + return {user, token} + } + + logout = async(user: UserInterface, userToken: any) => { + + user.tokens = user.tokens.filter((token) => { + return token.token !== userToken; + }) + + await user.save(); + } + + logoutAll = async(user: UserInterface) => { + + user.tokens = [] + user.tempTokens = []; + + await user.save(); + } + + create = async(userData: any) => { + + console.log("Create"); + + const user = new User(userData); + await user.save(); + + await user.generateEncryptionKeys(); + + const token = await user.generateAuthToken(); + + if (!user || !token) throw new InternalServerError("Could Not Create New User Error"); + + return {user, token} + } + + changePassword = async(user: UserInterface, oldPassword: string, newPassword: string) => { + + const isMatch = await bcrypt.compare(oldPassword, user.password); + + if (!isMatch) throw new NotAuthorizedError("Change Passwords Do Not Match Error"); + + const encryptionKey = user.getEncryptionKey(); + + user.password = newPassword; + + user.tokens = []; + user.tempTokens = []; + + await user.save(); + await user.changeEncryptionKey(encryptionKey!); + + const newToken = await user.generateAuthToken(); + + return newToken; + } + +} + +// const UserService = function() { + +// this.login = async(userData) => { + +// const email = userData.email; +// const password = userData.password; + +// const user = await User.findByCreds(email, password); + +// const token = await user.generateAuthToken(); + +// if (!user || !token) throw new NotFoundError("Login User Not Found Error"); + +// return {user, token} +// } + +// this.logout = async(user, userToken) => { + +// user.tokens = user.tokens.filter((token) => { +// return token.token !== userToken; +// }) + +// await user.save(); +// } + +// this.logoutAll = async(user) => { + +// user.tokens = [] +// user.tempTokens = []; + +// await user.save(); +// } + +// this.create = async(userData) => { + +// console.log("Create"); + +// const user = new User(userData); +// await user.save(); + +// await user.generateEncryptionKeys(); + +// const token = await user.generateAuthToken(); + +// if (!user || !token) throw new InternalServerError("Could Not Create New User Error"); + +// return {user, token} +// } + +// this.changePassword = async(user, oldPassword, newPassword) => { + +// const isMatch = await bcrypt.compare(oldPassword, user.password); + +// if (!isMatch) throw new NotAuthorizedError("Change Passwords Do Not Match Error"); + +// const encryptionKey = user.getEncryptionKey(); + +// user.password = newPassword; + +// user.tokens = []; +// user.tempTokens = []; + +// await user.save(); +// await user.changeEncryptionKey(encryptionKey); + +// const newToken = await user.generateAuthToken(); + +// return newToken; +// } +// } + +export default UserService; \ No newline at end of file From e18ae1eee1699acfd92fe908acd0911ff01d6e7d Mon Sep 17 00:00:00 2001 From: subnub Date: Sat, 18 Apr 2020 00:16:31 -0400 Subject: [PATCH 012/129] Added more typescript support to the backend --- backend/db/mongoose.js | 29 ------------- backend/db/mongoose.ts | 43 +++++++++++++++++++ backend/db/utils/fileUtils/index.js | 5 ++- backend/db/utils/folderUtils/index.js | 3 +- backend/enviroment/{env.js => env.ts} | 3 +- backend/key/getKey.js | 2 +- backend/middleware/auth.js | 2 +- backend/middleware/tempAuth.js | 2 +- backend/middleware/tempAuthVideo.js | 2 +- backend/models/user.ts | 4 +- backend/services/FileService/index.js | 4 +- backend/services/FileService/indexnew.ts | 4 +- .../FileService/utils/createThumbnail.ts | 10 ++--- .../FileService/utils/createThumbnailFS.ts | 8 ++-- .../FileService/utils/createThumbnailS3.ts | 8 ++-- backend/services/FolderService/index.js | 2 +- key/getKey.js | 2 +- key/getNewKey.js | 2 +- serverUtils/createThumbnailBuffer.js | 4 +- 19 files changed, 78 insertions(+), 61 deletions(-) delete mode 100644 backend/db/mongoose.js create mode 100644 backend/db/mongoose.ts rename backend/enviroment/{env.js => env.ts} (81%) diff --git a/backend/db/mongoose.js b/backend/db/mongoose.js deleted file mode 100644 index 6c6e0a4..0000000 --- a/backend/db/mongoose.js +++ /dev/null @@ -1,29 +0,0 @@ -const mongoose = require("mongoose"); -const env = require("../enviroment/env.js"); -const fs = require("fs"); - -if (env.useDocumentDB === "true") { - - console.log("Using DocumentDB"); - - mongoose.connect(env.mongoURL, { - useNewUrlParser: true, - useCreateIndex: true, - useUnifiedTopology: true, - sslValidate: true, - useNewUrlParser: true, - sslCA: fs.readFileSync('./rds-combined-ca-bundle.pem') - }) - -} else { - - mongoose.connect(env.mongoURL, { - useNewUrlParser: true, - useCreateIndex: true, - useUnifiedTopology: true, - }) -} - - - -module.exports = mongoose; \ No newline at end of file diff --git a/backend/db/mongoose.ts b/backend/db/mongoose.ts new file mode 100644 index 0000000..3f0a7b7 --- /dev/null +++ b/backend/db/mongoose.ts @@ -0,0 +1,43 @@ +import mongoose from "mongoose"; +import env from "../enviroment/env"; +import fs from "fs"; + +const DBUrl = env.mongoURL as string; + +if (env.useDocumentDB === "true") { + + console.log("Using DocumentDB"); + + if (env.documentDBBundle === "true") { + + const fileBuffer = fs.readFileSync('./rds-combined-ca-bundle.pem'); + const mongooseCertificateConnect = mongoose as any; + + mongooseCertificateConnect.connect(DBUrl, { + + useCreateIndex: true, + useUnifiedTopology: true, + sslValidate: true, + sslCA: fileBuffer + }) + + } else { + + mongoose.connect(DBUrl, { + useNewUrlParser: true, + useCreateIndex: true, + useUnifiedTopology: true, + sslValidate: true, + }) + } + +} else { + + mongoose.connect(DBUrl, { + useNewUrlParser: true, + useCreateIndex: true, + useUnifiedTopology: true, + }) +} + +export default mongoose; \ No newline at end of file diff --git a/backend/db/utils/fileUtils/index.js b/backend/db/utils/fileUtils/index.js index 7cb92d5..6b17896 100644 --- a/backend/db/utils/fileUtils/index.js +++ b/backend/db/utils/fileUtils/index.js @@ -1,4 +1,4 @@ -const mongoose = require("../../mongoose") +import mongoose from "../../mongoose"; const conn = mongoose.connection; const ObjectID = require('mongodb').ObjectID @@ -163,4 +163,5 @@ const DbUtil = function() { } -module.exports = DbUtil; \ No newline at end of file +module.exports = DbUtil; +export default DbUtil; \ No newline at end of file diff --git a/backend/db/utils/folderUtils/index.js b/backend/db/utils/folderUtils/index.js index 53e6883..d5c6a1f 100644 --- a/backend/db/utils/folderUtils/index.js +++ b/backend/db/utils/folderUtils/index.js @@ -58,4 +58,5 @@ const DbUtil = function() { } } -module.exports = DbUtil; \ No newline at end of file +module.exports = DbUtil; +export default DbUtil; \ No newline at end of file diff --git a/backend/enviroment/env.js b/backend/enviroment/env.ts similarity index 81% rename from backend/enviroment/env.js rename to backend/enviroment/env.ts index 5c29287..9a531c8 100644 --- a/backend/enviroment/env.js +++ b/backend/enviroment/env.ts @@ -11,5 +11,6 @@ export default { s3ID: process.env.S3_ID, s3Key: process.env.S3_KEY, s3Bucket: process.env.S3_BUCKET, - useDocumentDB: process.env.USE_DOCUMENT_DB + useDocumentDB: process.env.USE_DOCUMENT_DB, + documentDBBundle: process.env.DOCUMENT_DB_BUNDLE } \ No newline at end of file diff --git a/backend/key/getKey.js b/backend/key/getKey.js index 533b36f..d9644e8 100644 --- a/backend/key/getKey.js +++ b/backend/key/getKey.js @@ -1,5 +1,5 @@ const prompt = require('password-prompt') -const env = require("../enviroment/env"); +import env from "../enviroment/env"; const crypto = require("crypto"); const getKey = async() => { diff --git a/backend/middleware/auth.js b/backend/middleware/auth.js index 8c70bb3..23175d0 100644 --- a/backend/middleware/auth.js +++ b/backend/middleware/auth.js @@ -1,6 +1,6 @@ const jwt = require("jsonwebtoken"); import User from "../models/user"; -const env = require("../enviroment/env"); +import env from "../enviroment/env"; const auth = async(req, res, next) => { diff --git a/backend/middleware/tempAuth.js b/backend/middleware/tempAuth.js index 8638520..4036a72 100644 --- a/backend/middleware/tempAuth.js +++ b/backend/middleware/tempAuth.js @@ -1,6 +1,6 @@ const jwt = require("jsonwebtoken"); import User from "../models/user"; -const env = require("../enviroment/env"); +import env from "../enviroment/env"; const tempAuth = async(req, res, next) => { diff --git a/backend/middleware/tempAuthVideo.js b/backend/middleware/tempAuthVideo.js index 1ae1861..2c48ab9 100644 --- a/backend/middleware/tempAuthVideo.js +++ b/backend/middleware/tempAuthVideo.js @@ -1,6 +1,6 @@ const jwt = require("jsonwebtoken"); import User from "../models/user"; -const env = require("../enviroment/env"); +import env from "../enviroment/env"; const tempAuthVideo = async(req, res, next) => { diff --git a/backend/models/user.ts b/backend/models/user.ts index 5382bb3..c83b15c 100644 --- a/backend/models/user.ts +++ b/backend/models/user.ts @@ -3,7 +3,7 @@ const validator = require("validator"); const crypto = require("crypto"); const bcrypt = require("bcrypt"); const jwt = require("jsonwebtoken"); -const env = require("../enviroment/env"); +import env from "../enviroment/env"; const userSchema = new mongoose.Schema({ @@ -221,7 +221,7 @@ userSchema.methods.getEncryptionKey = function() { } catch (e) { - console.log("Get Encryption Key Error"); + console.log("Get Encryption Key Error", e); return undefined; } } diff --git a/backend/services/FileService/index.js b/backend/services/FileService/index.js index 7fc7860..f21ee9b 100644 --- a/backend/services/FileService/index.js +++ b/backend/services/FileService/index.js @@ -1,14 +1,14 @@ const imageChecker = require("../../utils/imageChecker"); import crypto from "crypto"; const videoChecker = require("../../utils/videoChecker"); -const mongoose = require("../../db/mongoose") +import mongoose from "../../db/mongoose"; const conn = mongoose.connection; const createThumbnail = require("./utils/createThumbnail.ss"); const Thumbnail = require("../../models/thumbnail"); const ObjectID = require('mongodb').ObjectID const NotAuthorizedError = require("../../utils/NotAuthorizedError"); const NotFoundError = require("../../utils/NotFoundError"); -const env = require("../../enviroment/env"); +import env from "../../enviroment/env"; const jwt = require("jsonwebtoken"); const removeChunks = require("./utils/removeChunks"); const User = require("../../models/user"); diff --git a/backend/services/FileService/indexnew.ts b/backend/services/FileService/indexnew.ts index 7c925ea..7493857 100644 --- a/backend/services/FileService/indexnew.ts +++ b/backend/services/FileService/indexnew.ts @@ -1,14 +1,14 @@ const imageChecker = require("../../utils/imageChecker"); import crypto from "crypto"; const videoChecker = require("../../utils/videoChecker"); -const mongoose = require("../../db/mongoose") +import mongoose from "../../db/mongoose"; const conn = mongoose.connection; const createThumbnail = require("../../services/FileService/utils/createThumbnail"); import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; const ObjectID = require('mongodb').ObjectID import NotAuthorizedError from "../../utils/NotAuthorizedError"; import NotFoundError from "../../utils/NotFoundError"; -const env = require("../../enviroment/env"); +import env from "../../enviroment/env"; const jwt = require("jsonwebtoken"); const removeChunks = require("./utils/removeChunks"); const User = require("../../models/user"); diff --git a/backend/services/FileService/utils/createThumbnail.ts b/backend/services/FileService/utils/createThumbnail.ts index d7aa0e2..66bed98 100644 --- a/backend/services/FileService/utils/createThumbnail.ts +++ b/backend/services/FileService/utils/createThumbnail.ts @@ -1,7 +1,7 @@ -const mongoose = require("../../../db/mongoose") +import mongoose from "../../../db/mongoose"; const conn = mongoose.connection; const crypto= require("crypto"); -const env = require("../../../enviroment/env"); +import env from "../../../enviroment/env"; import Thumbnail from "../../../models/thumbnail"; const ObjectID = require('mongodb').ObjectID const sharp = require("sharp"); @@ -49,12 +49,12 @@ const createThumbnail = (file: FileInterface, filename: string, user: UserInterf await thumbnailModel.save(); - let updatedFile = await conn.db.collection("fs.files") + const getUpdatedFile = await conn.db.collection("fs.files") .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) - updatedFile = updatedFile.value; + let updatedFile: FileInterface = getUpdatedFile.value; - updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} + updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} as FileInterface; resolve(updatedFile); diff --git a/backend/services/FileService/utils/createThumbnailFS.ts b/backend/services/FileService/utils/createThumbnailFS.ts index a9eca0e..3bafcb8 100644 --- a/backend/services/FileService/utils/createThumbnailFS.ts +++ b/backend/services/FileService/utils/createThumbnailFS.ts @@ -1,4 +1,4 @@ -const mongoose = require("../../../db/mongoose") +import mongoose from "../../../db/mongoose"; const conn = mongoose.connection; const crypto= require("crypto"); import Thumbnail from "../../../models/thumbnail"; @@ -62,12 +62,12 @@ const createThumbnailFS = (file: FileInterface, filename: string, user: UserInte await thumbnailModel.save(); - let updatedFile = await conn.db.collection("fs.files") + const getUpdatedFile = await conn.db.collection("fs.files") .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) - updatedFile = updatedFile.value; + let updatedFile: FileInterface = getUpdatedFile.value; - updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} + updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} as FileInterface resolve(updatedFile); }) diff --git a/backend/services/FileService/utils/createThumbnailS3.ts b/backend/services/FileService/utils/createThumbnailS3.ts index ff09aaa..ebe96d9 100644 --- a/backend/services/FileService/utils/createThumbnailS3.ts +++ b/backend/services/FileService/utils/createThumbnailS3.ts @@ -1,4 +1,4 @@ -const mongoose = require("../../../db/mongoose") +import mongoose from "../../../db/mongoose"; const conn = mongoose.connection; const crypto= require("crypto"); import Thumbnail from "../../../models/thumbnail"; @@ -87,12 +87,12 @@ const createThumbnailS3 = (file: FileInterface, filename: string, user: UserInte await thumbnailModel.save(); - let updatedFile = await conn.db.collection("fs.files") + const getUpdatedFile = await conn.db.collection("fs.files") .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) - updatedFile = updatedFile.value; + let updatedFile: FileInterface = getUpdatedFile.value; - updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} + updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} as FileInterface; resolve(updatedFile); }) diff --git a/backend/services/FolderService/index.js b/backend/services/FolderService/index.js index 87ad37b..f04352f 100644 --- a/backend/services/FolderService/index.js +++ b/backend/services/FolderService/index.js @@ -4,7 +4,7 @@ const NotFoundError = require("../../utils/NotFoundError"); const UtilsFile = require("../../db/utils/fileUtils"); const ObjectID = require('mongodb').ObjectID const UtilsFolder = require("../../db/utils/folderUtils"); -const mongoose = require("../../db/mongoose") +import mongoose from "../../db/mongoose"; const conn = mongoose.connection; const Thumbnail = require("../../models/thumbnail"); const sortBySwitch = require("../../utils/sortBySwitchFolder"); diff --git a/key/getKey.js b/key/getKey.js index 6117cc3..a65d1f5 100644 --- a/key/getKey.js +++ b/key/getKey.js @@ -1,5 +1,5 @@ const prompt = require('password-prompt') -const env = require("../backend/enviroment/env") +import env from "../backend/enviroment/env"; const crypto = require("crypto"); const getKey = async() => { diff --git a/key/getNewKey.js b/key/getNewKey.js index 6e62f2e..253ad1a 100644 --- a/key/getNewKey.js +++ b/key/getNewKey.js @@ -1,5 +1,5 @@ const prompt = require('password-prompt') -const env = require("../backend/enviroment/env") +import env from "../backend/enviroment/env"; const crypto = require("crypto"); const getKey = async() => { diff --git a/serverUtils/createThumbnailBuffer.js b/serverUtils/createThumbnailBuffer.js index 33de081..23e7b7c 100644 --- a/serverUtils/createThumbnailBuffer.js +++ b/serverUtils/createThumbnailBuffer.js @@ -1,7 +1,7 @@ -const mongoose = require("../backend/db/mongooseServerUtils") +import mongoose from "../backend/db/mongoose"; const conn = mongoose.connection; const crypto= require("crypto"); -const env = require("../backend/enviroment/env"); +import env from "../backend/enviroment/env"; const Thumbnail = require("../backend/models/thumbnail"); const ObjectID = require('mongodb').ObjectID const sharp = require("sharp"); From d4141a9dccbbdb9ab91293ed15cf904fc8211156 Mon Sep 17 00:00:00 2001 From: subnub Date: Sun, 19 Apr 2020 17:06:16 -0400 Subject: [PATCH 013/129] Improved error catching for streams --- .../ChunkService/FileSystemService.ts | 24 +++++++--- backend/services/ChunkService/MongoService.ts | 21 ++++++-- backend/services/ChunkService/S3Service.ts | 20 ++++++-- .../ChunkService/utils/awaitStream.ts | 22 ++++----- .../ChunkService/utils/awaitUploadStream.ts | 48 ++++++++++++------- .../ChunkService/utils/awaitUploadStreamFS.ts | 45 +++++++++++------ backend/utils/streamToBuffer.ts | 29 ++++++++--- 7 files changed, 142 insertions(+), 67 deletions(-) diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index c7a570d..d4d408b 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -69,7 +69,9 @@ class FileSystemService implements ChunkInterface { const fileWriteStream = fs.createWriteStream(metadata.filePath); - await awaitUploadStreamFS(file.pipe(cipher), fileWriteStream, req, metadata.filePath); + const totalStreamsToErrorCatch = [file, cipher, fileWriteStream]; + + await awaitUploadStreamFS(file.pipe(cipher), fileWriteStream, req, metadata.filePath, totalStreamsToErrorCatch); const date = new Date(); const encryptedFileSize = await getFileSize(metadata.filePath); @@ -124,7 +126,9 @@ class FileSystemService implements ChunkInterface { res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); res.set('Content-Length', currentFile.metadata.size.toString()); - await awaitStream(readStream.pipe(decipher), res); + const allStreamsToErrorCatch = [readStream, decipher]; + + await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); } getThumbnail = async(user: UserInterface, id: string) => { @@ -148,7 +152,9 @@ class FileSystemService implements ChunkInterface { const readStream = fs.createReadStream(thumbnail.path!); - const bufferData = await streamToBuffer(readStream.pipe(decipher)); + const allStreamsToErrorCatch = [readStream, decipher]; + + const bufferData = await streamToBuffer(readStream.pipe(decipher), allStreamsToErrorCatch); return bufferData; @@ -177,8 +183,10 @@ class FileSystemService implements ChunkInterface { res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); res.set('Content-Length', file.metadata.size.toString()); + const allStreamsToErrorCatch = [readStream, decipher]; + console.log("Sending Full Thumbnail...") - await awaitStream(readStream.pipe(decipher), res); + await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); console.log("Full thumbnail sent"); } @@ -221,7 +229,9 @@ class FileSystemService implements ChunkInterface { res.writeHead(206, head); - await awaitStream(readStream.pipe(decipher), res); + const allStreamsToErrorCatch = [readStream, decipher]; + + await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); } getPublicDownload = async(fileID: string, tempToken: any, res: Response) => { @@ -250,7 +260,9 @@ class FileSystemService implements ChunkInterface { res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); res.set('Content-Length', file.metadata.size.toString()); - await awaitStream(readStream.pipe(decipher), res); + const allStreamsToErrorCatch = [readStream, decipher]; + + await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); if (file.metadata.linkType === "one") { console.log("removing public link"); diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 16a39f3..07a0496 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -71,7 +71,9 @@ class MongoService implements ChunkInterface { bucketStream = bucket.openUploadStream(filename, {metadata}); - const finishedFile = await awaitUploadStream(file.pipe(cipher), bucketStream, req) as FileInterface; + const allStreamsToErrorCatch = [file, cipher, bucketStream]; + + const finishedFile = await awaitUploadStream(file.pipe(cipher), bucketStream, req, allStreamsToErrorCatch) as FileInterface; const imageCheck = imageChecker(filename); @@ -110,7 +112,9 @@ class MongoService implements ChunkInterface { res.set('Content-Disposition', 'attachment; filename="' + currentFile.filename + '"'); res.set('Content-Length', currentFile.metadata.size.toString()); - await awaitStream(readStream.pipe(decipher), res); + const allStreamsToErrorCatch = [readStream, decipher]; + + await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); } getThumbnail = async(user: UserInterface, id: string) => { @@ -164,7 +168,10 @@ class MongoService implements ChunkInterface { res.set('Content-Length', file.metadata.size.toString()); console.log("Sending Full Thumbnail...") - await awaitStream(readStream.pipe(decipher), res); + + const allStreamsToErrorCatch = [readStream, decipher]; + + await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); console.log("Full thumbnail sent"); } @@ -196,7 +203,9 @@ class MongoService implements ChunkInterface { res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); res.set('Content-Length', file.metadata.size.toString()); - await awaitStream(readStream.pipe(decipher), res); + const allStreamsToErrorCatch = [readStream, decipher]; + + await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); if (file.metadata.linkType === "one") { console.log("removing public link"); @@ -247,7 +256,9 @@ class MongoService implements ChunkInterface { res.writeHead(206, head); - await awaitStream(readStream.pipe(decipher), res); + const allStreamsToErrorCatch = [readStream, decipher]; + + await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); } deleteFile = async(userID: string, fileID: string) => { diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 2b8c479..f3f5606 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -125,7 +125,9 @@ class S3Service implements ChunkInterface { const s3ReadStream = s3.getObject(params).createReadStream(); - await awaitStream(s3ReadStream.pipe(decipher), res); + const allStreamsToErrorCatch = [s3ReadStream, decipher]; + + await awaitStream(s3ReadStream.pipe(decipher), res, allStreamsToErrorCatch); } @@ -167,7 +169,9 @@ class S3Service implements ChunkInterface { res.writeHead(206, head); - await awaitStream(s3ReadStream.pipe(decipher), res); + const allStreamsToErrorCatch = [s3ReadStream, decipher]; + + await awaitStream(s3ReadStream.pipe(decipher), res, allStreamsToErrorCatch); } @@ -194,7 +198,9 @@ class S3Service implements ChunkInterface { const readStream = s3.getObject(params).createReadStream(); - const bufferData = await streamToBuffer(readStream.pipe(decipher)); + const allStreamsToErrorCatch = [readStream, decipher]; + + const bufferData = await streamToBuffer(readStream.pipe(decipher), allStreamsToErrorCatch); return bufferData; } @@ -224,8 +230,10 @@ class S3Service implements ChunkInterface { res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); res.set('Content-Length', file.metadata.size.toString()); + const allStreamsToErrorCatch = [readStream, decipher]; + console.log("Sending Full Thumbnail...") - await awaitStream(readStream.pipe(decipher), res); + await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); console.log("Full thumbnail sent"); } @@ -257,7 +265,9 @@ class S3Service implements ChunkInterface { res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); res.set('Content-Length', file.metadata.size.toString()); - await awaitStream(readStream.pipe(decipher), res); + const allStreamsToErrorCatch = [readStream, decipher]; + + await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); if (file.metadata.linkType === "one") { console.log("removing public link"); diff --git a/backend/services/ChunkService/utils/awaitStream.ts b/backend/services/ChunkService/utils/awaitStream.ts index 682b671..1b01c8d 100644 --- a/backend/services/ChunkService/utils/awaitStream.ts +++ b/backend/services/ChunkService/utils/awaitStream.ts @@ -1,21 +1,17 @@ -const awaitStream = (inputSteam: any, outputStream: any) => { +const awaitStream = (inputSteam: any, outputStream: any, allStreamsToErrorCatch: any[]) => { return new Promise((resolve, reject) => { - inputSteam.on("error", (e: Error) => { - reject({ - message: "Await Stream Input Error", - code: 500, - error: e - }) - }) + allStreamsToErrorCatch.forEach((currentStream: any) => { - outputStream.on("error", (e: Error) => { - reject({ - message: "Await Stream Output Error", - code: 500, - error: e + currentStream.on("error", (e: Error) => { + reject({ + message: "Await Stream Input Error", + code: 500, + error: e + }) }) + }) inputSteam.pipe(outputStream).on("finish", (data: T) => { diff --git a/backend/services/ChunkService/utils/awaitUploadStream.ts b/backend/services/ChunkService/utils/awaitUploadStream.ts index 5a7f0d3..9526ad7 100644 --- a/backend/services/ChunkService/utils/awaitUploadStream.ts +++ b/backend/services/ChunkService/utils/awaitUploadStream.ts @@ -1,31 +1,45 @@ import removeChunks from "../../FileService/utils/removeChunks"; import {Request} from "express" -const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request) => { +const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, allStreamsToErrorCatch: any[]) => { return new Promise((resolve, reject) => { - inputSteam.on("error", (e: Error) => { + allStreamsToErrorCatch.forEach((currentStream: any) => { - removeChunks(outputStream); + currentStream.on("error", (e: Error) => { + + removeChunks(outputStream); + + reject({ + message: "Await Stream Input Error", + code: 500, + error: e + }) + }) + }) + + // inputSteam.on("error", (e: Error) => { + + // removeChunks(outputStream); - reject({ - message: "Await Stream Input Error", - code: 500, - error: e - }) - }) + // reject({ + // message: "Await Stream Input Error", + // code: 500, + // error: e + // }) + // }) - outputStream.on("error", (e: Error) => { + // outputStream.on("error", (e: Error) => { - removeChunks(outputStream); + // removeChunks(outputStream); - reject({ - message: "Await Stream Output Error", - code: 500, - error: e - }) - }) + // reject({ + // message: "Await Stream Output Error", + // code: 500, + // error: e + // }) + // }) req.on("aborted", () => { diff --git a/backend/services/ChunkService/utils/awaitUploadStreamFS.ts b/backend/services/ChunkService/utils/awaitUploadStreamFS.ts index 64ec29b..dc8353e 100644 --- a/backend/services/ChunkService/utils/awaitUploadStreamFS.ts +++ b/backend/services/ChunkService/utils/awaitUploadStreamFS.ts @@ -9,6 +9,7 @@ export const removeChunksFS = (path: string) => { if (err) { console.log("Could not remove fs file", err); + resolve(); } console.log("File Removed"); @@ -17,31 +18,45 @@ export const removeChunksFS = (path: string) => { }) } -const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, path: string) => { +const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, path: string, allStreamsToCatchError: any[]) => { return new Promise((resolve, reject) => { + + allStreamsToCatchError.forEach((currentStream: any) => { - inputSteam.on("error", (e: Error) => { + currentStream.on("error", (e: Error) => { - removeChunksFS(path); + removeChunksFS(path); - reject({ - message: "Await Stream Input Error", - code: 500, - error: e + reject({ + message: "Await Stream Input Error", + code: 500, + error: e + }) }) }) - outputStream.on("error", (e: Error) => { + // inputSteam.on("error", (e: Error) => { - removeChunksFS(path); + // removeChunksFS(path); + + // reject({ + // message: "Await Stream Input Error", + // code: 500, + // error: e + // }) + // }) - reject({ - message: "Await Stream Output Error", - code: 500, - error: e - }) - }) + // outputStream.on("error", (e: Error) => { + + // removeChunksFS(path); + + // reject({ + // message: "Await Stream Output Error", + // code: 500, + // error: e + // }) + // }) req.on("aborted", () => { diff --git a/backend/utils/streamToBuffer.ts b/backend/utils/streamToBuffer.ts index ec50ee6..edefc02 100644 --- a/backend/utils/streamToBuffer.ts +++ b/backend/utils/streamToBuffer.ts @@ -1,10 +1,27 @@ -const streamToBuffer = (stream: any) => { - const chunks: any[] = [] - return new Promise((resolve, reject) => { - stream.on('data', (chunk: any) => chunks.push(chunk)) - stream.on('error', reject) - stream.on('end', () => resolve(Buffer.concat(chunks))) +const streamToBuffer = (stream: any, allStreamsToErrorCatch: any[]) => { + + const chunks: any[] = [] + return new Promise((resolve, reject) => { + + allStreamsToErrorCatch.forEach((currentStream) => { + + currentStream.on("error", (e: Error) => { + + console.log("Stream To Buffer Error", e); + reject({ + message: "stream to buffer error", + code: 500, + error: e + }) + + }) }) + + stream.on('data', (chunk: any) => chunks.push(chunk)); + stream.on('error', reject); + stream.on('end', () => resolve(Buffer.concat(chunks))); + + }) } export default streamToBuffer; \ No newline at end of file From 677198dfdeaf2b40555c5b028bd464ae529ccc73 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 20 Apr 2020 03:03:00 -0400 Subject: [PATCH 014/129] Added more typescript files, fixed some error correcting --- backend/db/utils/fileUtils/index.js | 167 --------- backend/db/utils/fileUtils/index.ts | 322 ++++++++++++++++++ backend/db/utils/folderUtils/index.js | 62 ---- backend/db/utils/folderUtils/index.ts | 122 +++++++ backend/models/file.ts | 1 + backend/models/{folder.js => folder.ts} | 13 +- backend/services/ChunkService/MongoService.ts | 20 +- .../FileService/utils/removeChunks.ts | 2 +- backend/services/FolderService/index.js | 4 +- 9 files changed, 468 insertions(+), 245 deletions(-) delete mode 100644 backend/db/utils/fileUtils/index.js create mode 100644 backend/db/utils/fileUtils/index.ts delete mode 100644 backend/db/utils/folderUtils/index.js create mode 100644 backend/db/utils/folderUtils/index.ts rename backend/models/{folder.js => folder.ts} (56%) diff --git a/backend/db/utils/fileUtils/index.js b/backend/db/utils/fileUtils/index.js deleted file mode 100644 index 6b17896..0000000 --- a/backend/db/utils/fileUtils/index.js +++ /dev/null @@ -1,167 +0,0 @@ -import mongoose from "../../mongoose"; -const conn = mongoose.connection; -const ObjectID = require('mongodb').ObjectID - -const DbUtil = function() { - - this.getPublicFile = async(fileID) => { - - let file = await conn.db.collection("fs.files") - .findOne({"_id": ObjectID(fileID)}); - - return file; - } - - this.removeOneTimePublicLink = async(fileID) => { - - const file = await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID)}, { - "$unset": {"metadata.linkType": "", "metadata.link": ""}}); - - return file; - - } - - this.removeLink = async(fileID, userID) => { - - const file = await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$unset": {"metadata.linkType": "", "metadata.link": ""}}) - - return file; - } - - this.makePublic = async(fileID, userID, token) => { - - const file = await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$set": {"metadata.linkType": "public", "metadata.link": token}}) - - return file; - } - - this.getPublicInfo = async(fileID, tempToken) => { - - const file = await conn.db.collection("fs.files") - .findOne({"_id": ObjectID(fileID), "metadata.link": tempToken}) - - return file; - } - - this.makeOneTimePublic = async(fileID, userID, token) => { - - const file = await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, - {"$set": {"metadata.linkType": "one", "metadata.link": token}}) - - return file; - } - - this.getFileInfo = async(fileID, userID) => { - - const file = await conn.db.collection("fs.files") - .findOne({"metadata.owner": userID, "_id": ObjectID(fileID)}); - - return file; - } - - this.getQuickList = async(userID) => { - - const fileList = await conn.db.collection("fs.files") - .find({"metadata.owner": userID}) - .sort({uploadDate: -1}) - .limit(10) - .toArray(); - - return fileList; - } - - this.getList = async(queryObj, sortBy, limit) => { - - const fileList = await conn.db.collection("fs.files") - .find(queryObj) - .sort(sortBy) - .limit(limit) - .toArray(); - - - return fileList; - } - - this.removeTempToken = async(user, tempToken) => { - - user.tempTokens = user.tempTokens.filter((filterToken) => { - - return filterToken.token !== tempToken; - }); - - return user; - } - - this.removeTranscodeVideo = async(fileID, userID) => { - - const file = await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, - {"$unset": {"metadata.transcoded": "", "metadata.transcodedIV": "", - "metadata.transcoded_size": "", "metadata.transcodedID": ""}}) - - return file; - } - - this.getFileSearchList = async(userID, searchQuery) => { - - const fileList = await conn.db.collection("fs.files") - .find({"metadata.owner": userID, "filename": searchQuery}) - .limit(10) - .toArray(); - - return fileList; - } - - this.renameFile = async(fileID, userID, title) => { - - const file = await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, {"$set": {"filename": title}}) - - return file; - } - - this.moveFile = async(fileID, userID, parent, parentList) => { - - const file = await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), - "metadata.owner": userID}, {"$set": {"metadata.parent": parent, "metadata.parentList": parentList}}) - - return file; - } - - this.getFileListByParent = async(userID, parentListString) => { - - const fileList = await conn.db.collection("fs.files") - .find({"metadata.owner": userID, - "metadata.parentList": {$regex : `.*${parentListString}.*`}}).toArray(); - - return fileList; - } - - this.getFileListByOwner = async(userID) => { - - const fileList = await conn.db.collection("fs.files") - .find({"metadata.owner": userID}).toArray(); - - return fileList; - } - - this.removeChunksByID = async(fileID) => { - - await conn.db.collection("fs.chunks").deleteMany({files_id: fileID}); - } - -} - -module.exports = DbUtil; -export default DbUtil; \ No newline at end of file diff --git a/backend/db/utils/fileUtils/index.ts b/backend/db/utils/fileUtils/index.ts new file mode 100644 index 0000000..aa5a0ac --- /dev/null +++ b/backend/db/utils/fileUtils/index.ts @@ -0,0 +1,322 @@ +import mongoose from "../../mongoose"; +import {ObjectID} from "mongodb"; +import {FileInterface} from "../../../models/file"; +import {UserInterface} from "../../../models/user"; +const conn = mongoose.connection; + +class DbUtil { + + constructor() { + + } + + getPublicFile = async(fileID: string) => { + + let file = await conn.db.collection("fs.files") + .findOne({"_id": new ObjectID(fileID)}) as FileInterface; + + return file; + } + + removeOneTimePublicLink = async(fileID: string) => { + + const file = await conn.db.collection("fs.files") + .findOneAndUpdate({"_id": new ObjectID(fileID)}, { + "$unset": {"metadata.linkType": "", "metadata.link": ""}}) as FileInterface; + + return file; + } + + removeLink = async(fileID: string, userID: string) => { + + const file = await conn.db.collection("fs.files") + .findOneAndUpdate({"_id": new ObjectID(fileID), + "metadata.owner": userID}, + {"$unset": {"metadata.linkType": "", "metadata.link": ""}}) as FileInterface; + + return file; + } + + makePublic = async(fileID: string, userID: string, token: any) => { + + const file = await conn.db.collection("fs.files") + .findOneAndUpdate({"_id": new ObjectID(fileID), + "metadata.owner": userID}, + {"$set": {"metadata.linkType": "public", "metadata.link": token}}) as FileInterface + + return file; + } + + getPublicInfo = async(fileID: string, tempToken: any) => { + + const file = await conn.db.collection("fs.files") + .findOne({"_id": new ObjectID(fileID), "metadata.link": tempToken}) as FileInterface; + + return file; + } + + makeOneTimePublic = async(fileID: string, userID: string, token: any) => { + + const file = await conn.db.collection("fs.files") + .findOneAndUpdate({"_id": new ObjectID(fileID), + "metadata.owner": userID}, + {"$set": {"metadata.linkType": "one", "metadata.link": token}}) as FileInterface; + + return file; + } + + getFileInfo = async(fileID: string, userID: string) => { + + const file = await conn.db.collection("fs.files") + .findOne({"metadata.owner": userID, "_id": new ObjectID(fileID)}) as FileInterface; + + return file; + } + + getQuickList = async(userID: string) => { + + const fileList = await conn.db.collection("fs.files") + .find({"metadata.owner": userID}) + .sort({uploadDate: -1}) + .limit(10) + .toArray() as FileInterface[]; + + return fileList; + } + + getList = async(queryObj: any, sortBy: string, limit: number) => { + + const fileList = await conn.db.collection("fs.files") + .find(queryObj) + .sort(sortBy) + .limit(limit) + .toArray() as FileInterface[]; + + + return fileList; + } + + removeTempToken = async(user: UserInterface, tempToken: string) => { + + user.tempTokens = user.tempTokens.filter((filterToken) => { + + return filterToken.token !== tempToken; + }); + + return user; + } + + getFileSearchList = async(userID: string, searchQuery: any) => { + + const fileList = await conn.db.collection("fs.files") + .find({"metadata.owner": userID, "filename": searchQuery}) + .limit(10) + .toArray() as FileInterface[]; + + return fileList; + } + + renameFile = async(fileID: string, userID: string, title: string) => { + + const file = await conn.db.collection("fs.files") + .findOneAndUpdate({"_id": new ObjectID(fileID), + "metadata.owner": userID}, {"$set": {"filename": title}}) as FileInterface; + + return file; + } + + moveFile = async(fileID: string, userID: string, parent: string, parentList: string) => { + + const file = await conn.db.collection("fs.files") + .findOneAndUpdate({"_id": new ObjectID(fileID), + "metadata.owner": userID}, {"$set": {"metadata.parent": parent, "metadata.parentList": parentList}}) + + return file; + } + + getFileListByParent = async(userID: string, parentListString: string) => { + + const fileList = await conn.db.collection("fs.files") + .find({"metadata.owner": userID, + "metadata.parentList": {$regex : `.*${parentListString}.*`}}).toArray() as FileInterface[]; + + return fileList; + } + + getFileListByOwner = async(userID: string) => { + + const fileList = await conn.db.collection("fs.files") + .find({"metadata.owner": userID}).toArray() as FileInterface[]; + + return fileList; + } + + removeChunksByID = async(fileID: string) => { + + await conn.db.collection("fs.chunks").deleteMany({files_id: fileID}); + } +} + +// const DbUtil = function() { + +// this.getPublicFile = async(fileID) => { + +// let file = await conn.db.collection("fs.files") +// .findOne({"_id": ObjectID(fileID)}); + +// return file; +// } + +// this.removeOneTimePublicLink = async(fileID) => { + +// const file = await conn.db.collection("fs.files") +// .findOneAndUpdate({"_id": ObjectID(fileID)}, { +// "$unset": {"metadata.linkType": "", "metadata.link": ""}}); + +// return file; + +// } + +// this.removeLink = async(fileID, userID) => { + +// const file = await conn.db.collection("fs.files") +// .findOneAndUpdate({"_id": ObjectID(fileID), +// "metadata.owner": userID}, +// {"$unset": {"metadata.linkType": "", "metadata.link": ""}}) + +// return file; +// } + +// this.makePublic = async(fileID, userID, token) => { + +// const file = await conn.db.collection("fs.files") +// .findOneAndUpdate({"_id": ObjectID(fileID), +// "metadata.owner": userID}, +// {"$set": {"metadata.linkType": "public", "metadata.link": token}}) + +// return file; +// } + +// this.getPublicInfo = async(fileID, tempToken) => { + +// const file = await conn.db.collection("fs.files") +// .findOne({"_id": ObjectID(fileID), "metadata.link": tempToken}) + +// return file; +// } + +// this.makeOneTimePublic = async(fileID, userID, token) => { + +// const file = await conn.db.collection("fs.files") +// .findOneAndUpdate({"_id": ObjectID(fileID), +// "metadata.owner": userID}, +// {"$set": {"metadata.linkType": "one", "metadata.link": token}}) + +// return file; +// } + +// this.getFileInfo = async(fileID, userID) => { + +// const file = await conn.db.collection("fs.files") +// .findOne({"metadata.owner": userID, "_id": ObjectID(fileID)}); + +// return file; +// } + +// this.getQuickList = async(userID) => { + +// const fileList = await conn.db.collection("fs.files") +// .find({"metadata.owner": userID}) +// .sort({uploadDate: -1}) +// .limit(10) +// .toArray(); + +// return fileList; +// } + +// this.getList = async(queryObj, sortBy, limit) => { + +// const fileList = await conn.db.collection("fs.files") +// .find(queryObj) +// .sort(sortBy) +// .limit(limit) +// .toArray(); + + +// return fileList; +// } + +// this.removeTempToken = async(user, tempToken) => { + +// user.tempTokens = user.tempTokens.filter((filterToken) => { + +// return filterToken.token !== tempToken; +// }); + +// return user; +// } + +// this.removeTranscodeVideo = async(fileID, userID) => { + +// const file = await conn.db.collection("fs.files") +// .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, +// {"$unset": {"metadata.transcoded": "", "metadata.transcodedIV": "", +// "metadata.transcoded_size": "", "metadata.transcodedID": ""}}) + +// return file; +// } + +// this.getFileSearchList = async(userID, searchQuery) => { + +// const fileList = await conn.db.collection("fs.files") +// .find({"metadata.owner": userID, "filename": searchQuery}) +// .limit(10) +// .toArray(); + +// return fileList; +// } + +// this.renameFile = async(fileID, userID, title) => { + +// const file = await conn.db.collection("fs.files") +// .findOneAndUpdate({"_id": ObjectID(fileID), +// "metadata.owner": userID}, {"$set": {"filename": title}}) + +// return file; +// } + +// this.moveFile = async(fileID, userID, parent, parentList) => { + +// const file = await conn.db.collection("fs.files") +// .findOneAndUpdate({"_id": ObjectID(fileID), +// "metadata.owner": userID}, {"$set": {"metadata.parent": parent, "metadata.parentList": parentList}}) + +// return file; +// } + +// this.getFileListByParent = async(userID, parentListString) => { + +// const fileList = await conn.db.collection("fs.files") +// .find({"metadata.owner": userID, +// "metadata.parentList": {$regex : `.*${parentListString}.*`}}).toArray(); + +// return fileList; +// } + +// this.getFileListByOwner = async(userID) => { + +// const fileList = await conn.db.collection("fs.files") +// .find({"metadata.owner": userID}).toArray(); + +// return fileList; +// } + +// this.removeChunksByID = async(fileID) => { + +// await conn.db.collection("fs.chunks").deleteMany({files_id: fileID}); +// } + +// } + +//module.exports = DbUtil; +export default DbUtil; \ No newline at end of file diff --git a/backend/db/utils/folderUtils/index.js b/backend/db/utils/folderUtils/index.js deleted file mode 100644 index d5c6a1f..0000000 --- a/backend/db/utils/folderUtils/index.js +++ /dev/null @@ -1,62 +0,0 @@ -const Folder = require("../../../models/folder"); -const ObjectID = require('mongodb').ObjectID - -const DbUtil = function() { - - this.getFolderSearchList = async(userID, searchQuery) => { - - const folderList = await Folder.find({"owner": userID, "name": searchQuery}).limit(10); - - return folderList; - } - - this.getFolderInfo = async(folderID, userID) => { - - const folder = await Folder.findOne({"owner": userID, "_id": ObjectID(folderID)}); - - return folder; - } - - this.getFolderListByParent = async(userID, parent, sortBy) => { - - const folderList = await Folder.find({"owner": userID, "parent": parent}) - .sort(sortBy); - - return folderList; - } - - this.getFolderListBySearch = async(userID, searchQuery, sortBy) => { - - const folderList = await Folder.find({"name": searchQuery,"owner": userID}) - .sort(sortBy); - - return folderList; - } - - this.moveFolder = async(folderID, userID, parent, parentList) => { - - const folder = await Folder.findOneAndUpdate({"_id": ObjectID(folderID), - "owner": userID}, {"$set": {"parent": parent, "parentList": parentList}}); - - return folder; - } - - this.renameFolder = async(folderID, userID, title) => { - - const folder = await Folder.findOneAndUpdate({"_id": ObjectID(folderID), - "owner": userID}, {"$set": {"name": title}}); - - return folder; - } - - this.findAllFoldersByParent = async(parentID, userID) => { - - const folderList = await Folder.find({"parentList": parentID, "owner": userID}); - - return folderList; - - } -} - -module.exports = DbUtil; -export default DbUtil; \ No newline at end of file diff --git a/backend/db/utils/folderUtils/index.ts b/backend/db/utils/folderUtils/index.ts new file mode 100644 index 0000000..e48450e --- /dev/null +++ b/backend/db/utils/folderUtils/index.ts @@ -0,0 +1,122 @@ +import Folder, { FolderInterface } from "../../../models/folder"; +import {ObjectID} from "mongodb"; + + +class DbUtil { + + constructor() { + + } + + getFolderSearchList = async(userID: string, searchQuery: any) => { + + const folderList = await Folder.find({"owner": userID, "name": searchQuery}).limit(10) as FolderInterface[]; + + return folderList; + } + + getFolderInfo = async(folderID: string, userID: string) => { + + const folder = await Folder.findOne({"owner": userID, "_id": new ObjectID(folderID)}) as FolderInterface; + + return folder; + } + + getFolderListByParent = async(userID: string, parent: string, sortBy: string) => { + + const folderList = await Folder.find({"owner": userID, "parent": parent}) + .sort(sortBy) as FolderInterface[]; + + return folderList; + } + + getFolderListBySearch = async(userID: string, searchQuery: string, sortBy: string) => { + + const folderList = await Folder.find({"name": searchQuery,"owner": userID}) + .sort(sortBy) as FolderInterface[]; + + return folderList; + } + + moveFolder = async(folderID: string, userID: string, parent: string, parentList: string[]) => { + + const folder = await Folder.findOneAndUpdate({"_id": new ObjectID(folderID), + "owner": userID}, {"$set": {"parent": parent, "parentList": parentList}}) as FolderInterface; + + return folder; + } + + renameFolder = async(folderID: string, userID: string, title: string) => { + + const folder = await Folder.findOneAndUpdate({"_id": new ObjectID(folderID), + "owner": userID}, {"$set": {"name": title}}) as FolderInterface; + + return folder; + } + + findAllFoldersByParent = async(parentID: string, userID: string) => { + + const folderList = await Folder.find({"parentList": parentID, "owner": userID}) as FolderInterface[]; + + return folderList; + } +} + +// const DbUtil = function() { + +// this.getFolderSearchList = async(userID, searchQuery) => { + +// const folderList = await Folder.find({"owner": userID, "name": searchQuery}).limit(10); + +// return folderList; +// } + +// this.getFolderInfo = async(folderID, userID) => { + +// const folder = await Folder.findOne({"owner": userID, "_id": ObjectID(folderID)}); + +// return folder; +// } + +// this.getFolderListByParent = async(userID, parent, sortBy) => { + +// const folderList = await Folder.find({"owner": userID, "parent": parent}) +// .sort(sortBy); + +// return folderList; +// } + +// this.getFolderListBySearch = async(userID, searchQuery, sortBy) => { + +// const folderList = await Folder.find({"name": searchQuery,"owner": userID}) +// .sort(sortBy); + +// return folderList; +// } + +// this.moveFolder = async(folderID, userID, parent, parentList) => { + +// const folder = await Folder.findOneAndUpdate({"_id": ObjectID(folderID), +// "owner": userID}, {"$set": {"parent": parent, "parentList": parentList}}); + +// return folder; +// } + +// this.renameFolder = async(folderID, userID, title) => { + +// const folder = await Folder.findOneAndUpdate({"_id": ObjectID(folderID), +// "owner": userID}, {"$set": {"name": title}}); + +// return folder; +// } + +// this.findAllFoldersByParent = async(parentID, userID) => { + +// const folderList = await Folder.find({"parentList": parentID, "owner": userID}); + +// return folderList; + +// } +// } + +export default DbUtil; \ No newline at end of file diff --git a/backend/models/file.ts b/backend/models/file.ts index dc1ac0f..b209f94 100644 --- a/backend/models/file.ts +++ b/backend/models/file.ts @@ -65,6 +65,7 @@ export interface FileInterface extends Document { chunkSize: number, uploadDate: string, filename: string, + lastErrorObject: {updatedExisting: any} metadata: { owner: string, parent: string, diff --git a/backend/models/folder.js b/backend/models/folder.ts similarity index 56% rename from backend/models/folder.js rename to backend/models/folder.ts index 290fe0c..8da5d74 100644 --- a/backend/models/folder.js +++ b/backend/models/folder.ts @@ -1,4 +1,4 @@ -const mongoose = require("mongoose"); +import mongoose, {Document} from "mongoose"; const folderSchema = new mongoose.Schema({ @@ -27,6 +27,13 @@ const folderSchema = new mongoose.Schema({ timestamps: true }) -const Folder = mongoose.model("Folder", folderSchema); +export interface FolderInterface extends Document { + name: string, + parent: string, + owner: string, + parentList: string[] +} -module.exports = Folder; \ No newline at end of file +const Folder = mongoose.model("Folder", folderSchema); + +export default Folder; \ No newline at end of file diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 07a0496..58a4e9a 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -2,7 +2,7 @@ import mongoose from "../../db/mongoose"; import { Response, Request } from "express"; const conn = mongoose.connection; const DbUtilFolder = require("../../db/utils/folderUtils"); -import DbUtilFile from "../../db/utils/fileUtils/index"; +import DbUtilFile from "../../db/utils/fileUtils"; import crypto from "crypto"; import videoChecker from "../../utils/videoChecker" import imageChecker from "../../utils/imageChecker" @@ -147,7 +147,7 @@ class MongoService implements ChunkInterface { const userID = user._id; - const file: FileInterface = await dbUtilsFile.getFileInfo(fileID, userID); + const file = await dbUtilsFile.getFileInfo(fileID, userID); if (!file) throw new NotFoundError("File Thumbnail Not Found"); @@ -177,7 +177,7 @@ class MongoService implements ChunkInterface { getPublicDownload = async(fileID: string, tempToken: any, res: Response) => { - const file: FileInterface = await dbUtilsFile.getPublicFile(fileID); + const file = await dbUtilsFile.getPublicFile(fileID); if (!file || !file.metadata.link || file.metadata.link !== tempToken) { throw new NotAuthorizedError("File Not Public"); @@ -276,13 +276,13 @@ class MongoService implements ChunkInterface { await Thumbnail.deleteOne({_id: file.metadata.thumbnailID}); } - if (file.metadata.isVideo && file.metadata.transcoded) { - try { - await bucket.delete(new ObjectID(file.metadata.transcodedID)); - } catch (e) { - console.log("Could Not Find Transcoded Video"); - } - } + // if (file.metadata.isVideo && file.metadata.transcoded) { + // try { + // await bucket.delete(new ObjectID(file.metadata.transcodedID)); + // } catch (e) { + // console.log("Could Not Find Transcoded Video"); + // } + // } await bucket.delete(new ObjectID(fileID)); } diff --git a/backend/services/FileService/utils/removeChunks.ts b/backend/services/FileService/utils/removeChunks.ts index d27e872..c316099 100644 --- a/backend/services/FileService/utils/removeChunks.ts +++ b/backend/services/FileService/utils/removeChunks.ts @@ -1,6 +1,6 @@ import { GridFSBucketWriteStream } from "mongodb"; -const DbUtilsFile = require("../../../db/utils/fileUtils"); +import DbUtilsFile from "../../../db/utils/fileUtils"; const dbUtilsFile = new DbUtilsFile(); const removeChunks = async(bucketStream: GridFSBucketWriteStream) => { diff --git a/backend/services/FolderService/index.js b/backend/services/FolderService/index.js index f04352f..e60e94a 100644 --- a/backend/services/FolderService/index.js +++ b/backend/services/FolderService/index.js @@ -1,7 +1,7 @@ -const Folder = require("../../models/folder"); +import Folder from "../../models/folder"; const InternalServerError = require("../../utils/InternalServerError"); const NotFoundError = require("../../utils/NotFoundError"); -const UtilsFile = require("../../db/utils/fileUtils"); +import UtilsFile from "../../db/utils/fileUtils"; const ObjectID = require('mongodb').ObjectID const UtilsFolder = require("../../db/utils/folderUtils"); import mongoose from "../../db/mongoose"; From 54324b9f7a89839d812424c62621a88a3ac5c34e Mon Sep 17 00:00:00 2001 From: subnub Date: Tue, 21 Apr 2020 02:42:57 -0400 Subject: [PATCH 015/129] Added a ton more typescript files --- backend/controllers/file.ts | 40 +- backend/controllers/fileS3.ts | 40 +- backend/controllers/fileSystem.ts | 40 +- backend/controllers/folder.ts | 20 +- backend/express-routers/file.ts | 6 +- backend/express-routers/folder.ts | 2 +- backend/express-routers/storage.ts | 2 +- backend/express-routers/user.ts | 2 +- backend/key/{getKey.js => getKey.ts} | 6 +- backend/middleware/{auth.js => auth.ts} | 28 +- .../middleware/{tempAuth.js => tempAuth.ts} | 27 +- .../{tempAuthVideo.js => tempAuthVideo.ts} | 28 +- backend/models/folder.ts | 3 +- backend/server/serverStart.js | 2 +- backend/services/ChunkService/MongoService.ts | 6 +- backend/services/FileService/index.js | 899 ------------------ .../FileService/{indexnew.ts => index.ts} | 6 +- backend/services/FolderService/index.js | 287 ------ backend/services/FolderService/index.ts | 557 +++++++++++ backend/services/UserService/index.ts | 4 +- ...lServerError.js => InternalServerError.ts} | 6 +- ...thorizedError.js => NotAuthorizedError.ts} | 6 +- .../{NotFoundError.js => NotFoundError.ts} | 6 +- backend/utils/createError.js | 12 - .../utils/{createQuery.js => createQuery.ts} | 6 +- .../utils/{mobileCheck.js => mobileCheck.ts} | 2 + .../{sortBySwitch.js => sortBySwitch.ts} | 4 +- ...ySwitchFolder.js => sortBySwitchFolder.ts} | 4 +- package.json | 1 + 29 files changed, 734 insertions(+), 1318 deletions(-) rename backend/key/{getKey.js => getKey.ts} (76%) rename backend/middleware/{auth.js => auth.ts} (56%) rename backend/middleware/{tempAuth.js => tempAuth.ts} (64%) rename backend/middleware/{tempAuthVideo.js => tempAuthVideo.ts} (61%) delete mode 100644 backend/services/FileService/index.js rename backend/services/FileService/{indexnew.ts => index.ts} (97%) delete mode 100644 backend/services/FolderService/index.js create mode 100644 backend/services/FolderService/index.ts rename backend/utils/{InternalServerError.js => InternalServerError.ts} (55%) rename backend/utils/{NotAuthorizedError.js => NotAuthorizedError.ts} (55%) rename backend/utils/{NotFoundError.js => NotFoundError.ts} (55%) delete mode 100644 backend/utils/createError.js rename backend/utils/{createQuery.js => createQuery.ts} (75%) rename backend/utils/{mobileCheck.js => mobileCheck.ts} (98%) rename backend/utils/{sortBySwitch.js => sortBySwitch.ts} (78%) rename backend/utils/{sortBySwitchFolder.js => sortBySwitchFolder.ts} (75%) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index ccc179e..aa2e50c 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -1,7 +1,7 @@ import { Request, Response } from "express"; //const FileService = require("../services/FileService") -import FileService from "../services/FileService/indexnew"; +import FileService from "../services/FileService"; const fileService = new FileService() @@ -54,7 +54,7 @@ class FileController { } - async getFullThumbnail(req: RequestType, res: Response) { + getFullThumbnail = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -74,7 +74,7 @@ class FileController { } } - async uploadFile(req: RequestType, res: Response) { + uploadFile = async(req: RequestType, res: Response) => { if (!req.user) { @@ -101,7 +101,7 @@ class FileController { } } - async getPublicDownload(req: RequestType, res: Response) { + getPublicDownload = async(req: RequestType, res: Response) => { try { @@ -120,7 +120,7 @@ class FileController { } } - async removeLink(req: RequestType, res: Response) { + removeLink = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -145,7 +145,7 @@ class FileController { } - async makePublic(req: RequestType, res: Response) { + makePublic = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -169,7 +169,7 @@ class FileController { } } - async getPublicInfo(req: RequestType, res: Response) { + getPublicInfo = async(req: RequestType, res: Response) => { try { @@ -189,7 +189,7 @@ class FileController { } } - async makeOneTimePublic(req: RequestType, res: Response) { + makeOneTimePublic = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -214,7 +214,7 @@ class FileController { } - async getFileInfo(req: RequestType, res: Response) { + getFileInfo = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -238,7 +238,7 @@ class FileController { } } - async getQuickList(req: RequestType, res: Response) { + getQuickList = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -261,7 +261,7 @@ class FileController { } } - async getList(req: RequestType, res: Response) { + getList = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -285,7 +285,7 @@ class FileController { } } - async getDownloadToken(req: RequestType, res: Response) { + getDownloadToken = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -308,7 +308,7 @@ class FileController { } } - async getDownloadTokenVideo(req: RequestType, res: Response) { + getDownloadTokenVideo = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -332,7 +332,7 @@ class FileController { } } - async removeTempToken(req: RequestType, res: Response) { + removeTempToken = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -433,7 +433,7 @@ class FileController { // } // } - async streamVideo(req: RequestType, res: Response) { + streamVideo = async(req: RequestType, res: Response) => { if (!req.auth || !req.user) { return; @@ -460,7 +460,7 @@ class FileController { } - async downloadFile(req: RequestType, res: Response) { + downloadFile = async(req: RequestType, res: Response) => { if (!req.auth || !req.user) { return; @@ -486,7 +486,7 @@ class FileController { } } - async getSuggestedList(req: RequestType, res: Response) { + getSuggestedList = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -511,7 +511,7 @@ class FileController { } } - async renameFile(req: RequestType, res: Response) { + renameFile = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -537,7 +537,7 @@ class FileController { } - async moveFile(req: RequestType, res: Response) { + moveFile = async(req: RequestType, res: Response) => { console.log("move request"); @@ -567,7 +567,7 @@ class FileController { } - async deleteFile(req: RequestType, res: Response) { + deleteFile = async(req: RequestType, res: Response) => { if (!req.user) { return; diff --git a/backend/controllers/fileS3.ts b/backend/controllers/fileS3.ts index 2bad71a..690d2a7 100644 --- a/backend/controllers/fileS3.ts +++ b/backend/controllers/fileS3.ts @@ -1,7 +1,7 @@ import { Request, Response } from "express"; //const FileService = require("../services/FileService") -import FileService from "../services/FileService/indexnew"; +import FileService from "../services/FileService"; const fileService = new FileService() @@ -52,7 +52,7 @@ class FileSystemController { } - async getFullThumbnail(req: RequestType, res: Response) { + getFullThumbnail = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -72,7 +72,7 @@ class FileSystemController { } } - async uploadFile(req: RequestType, res: Response) { + uploadFile = async(req: RequestType, res: Response) => { if (!req.user) { @@ -99,7 +99,7 @@ class FileSystemController { } } - async getPublicDownload(req: RequestType, res: Response) { + getPublicDownload = async(req: RequestType, res: Response) => { try { @@ -118,7 +118,7 @@ class FileSystemController { } } - async removeLink(req: RequestType, res: Response) { + removeLink = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -143,7 +143,7 @@ class FileSystemController { } - async makePublic(req: RequestType, res: Response) { + makePublic = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -167,7 +167,7 @@ class FileSystemController { } } - async getPublicInfo(req: RequestType, res: Response) { + getPublicInfo = async(req: RequestType, res: Response) => { try { @@ -187,7 +187,7 @@ class FileSystemController { } } - async makeOneTimePublic(req: RequestType, res: Response) { + makeOneTimePublic = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -212,7 +212,7 @@ class FileSystemController { } - async getFileInfo(req: RequestType, res: Response) { + getFileInfo = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -236,7 +236,7 @@ class FileSystemController { } } - async getQuickList(req: RequestType, res: Response) { + getQuickList = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -259,7 +259,7 @@ class FileSystemController { } } - async getList(req: RequestType, res: Response) { + getList = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -283,7 +283,7 @@ class FileSystemController { } } - async getDownloadToken(req: RequestType, res: Response) { + getDownloadToken = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -306,7 +306,7 @@ class FileSystemController { } } - async getDownloadTokenVideo(req: RequestType, res: Response) { + getDownloadTokenVideo = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -330,7 +330,7 @@ class FileSystemController { } } - async removeTempToken(req: RequestType, res: Response) { + removeTempToken = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -431,7 +431,7 @@ class FileSystemController { // } // } - async streamVideo(req: RequestType, res: Response) { + streamVideo = async(req: RequestType, res: Response) => { if (!req.auth || !req.user) { return; @@ -458,7 +458,7 @@ class FileSystemController { } - async downloadFile(req: RequestType, res: Response) { + downloadFile = async(req: RequestType, res: Response) => { if (!req.auth || !req.user) { return; @@ -484,7 +484,7 @@ class FileSystemController { } } - async getSuggestedList(req: RequestType, res: Response) { + getSuggestedList = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -509,7 +509,7 @@ class FileSystemController { } } - async renameFile(req: RequestType, res: Response) { + renameFile = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -535,7 +535,7 @@ class FileSystemController { } - async moveFile(req: RequestType, res: Response) { + moveFile = async(req: RequestType, res: Response) => { console.log("move request"); @@ -565,7 +565,7 @@ class FileSystemController { } - async deleteFile(req: RequestType, res: Response) { + deleteFile = async(req: RequestType, res: Response) => { if (!req.user) { return; diff --git a/backend/controllers/fileSystem.ts b/backend/controllers/fileSystem.ts index cd546fd..01cd58d 100644 --- a/backend/controllers/fileSystem.ts +++ b/backend/controllers/fileSystem.ts @@ -1,7 +1,7 @@ import { Request, Response } from "express"; //const FileService = require("../services/FileService") -import FileService from "../services/FileService/indexnew"; +import FileService from "../services/FileService"; const fileService = new FileService() @@ -52,7 +52,7 @@ class FileSystemController { } - async getFullThumbnail(req: RequestType, res: Response) { + getFullThumbnail = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -72,7 +72,7 @@ class FileSystemController { } } - async uploadFile(req: RequestType, res: Response) { + uploadFile = async(req: RequestType, res: Response) => { if (!req.user) { @@ -99,7 +99,7 @@ class FileSystemController { } } - async getPublicDownload(req: RequestType, res: Response) { + getPublicDownload = async(req: RequestType, res: Response) => { try { @@ -118,7 +118,7 @@ class FileSystemController { } } - async removeLink(req: RequestType, res: Response) { + removeLink = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -143,7 +143,7 @@ class FileSystemController { } - async makePublic(req: RequestType, res: Response) { + makePublic = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -167,7 +167,7 @@ class FileSystemController { } } - async getPublicInfo(req: RequestType, res: Response) { + getPublicInfo = async(req: RequestType, res: Response) => { try { @@ -187,7 +187,7 @@ class FileSystemController { } } - async makeOneTimePublic(req: RequestType, res: Response) { + makeOneTimePublic = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -212,7 +212,7 @@ class FileSystemController { } - async getFileInfo(req: RequestType, res: Response) { + getFileInfo = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -236,7 +236,7 @@ class FileSystemController { } } - async getQuickList(req: RequestType, res: Response) { + getQuickList = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -259,7 +259,7 @@ class FileSystemController { } } - async getList(req: RequestType, res: Response) { + getList = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -283,7 +283,7 @@ class FileSystemController { } } - async getDownloadToken(req: RequestType, res: Response) { + getDownloadToken = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -306,7 +306,7 @@ class FileSystemController { } } - async getDownloadTokenVideo(req: RequestType, res: Response) { + getDownloadTokenVideo = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -330,7 +330,7 @@ class FileSystemController { } } - async removeTempToken(req: RequestType, res: Response) { + removeTempToken = async(req: RequestType, res: Response) => { if (!req.user) { return @@ -431,7 +431,7 @@ class FileSystemController { // } // } - async streamVideo(req: RequestType, res: Response) { + streamVideo = async(req: RequestType, res: Response) => { if (!req.auth || !req.user) { return; @@ -458,7 +458,7 @@ class FileSystemController { } - async downloadFile(req: RequestType, res: Response) { + downloadFile = async(req: RequestType, res: Response) => { if (!req.auth || !req.user) { return; @@ -484,7 +484,7 @@ class FileSystemController { } } - async getSuggestedList(req: RequestType, res: Response) { + getSuggestedList = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -509,7 +509,7 @@ class FileSystemController { } } - async renameFile(req: RequestType, res: Response) { + renameFile = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -535,7 +535,7 @@ class FileSystemController { } - async moveFile(req: RequestType, res: Response) { + moveFile = async(req: RequestType, res: Response) => { console.log("move request"); @@ -565,7 +565,7 @@ class FileSystemController { } - async deleteFile(req: RequestType, res: Response) { + deleteFile = async(req: RequestType, res: Response) => { if (!req.user) { return; diff --git a/backend/controllers/folder.ts b/backend/controllers/folder.ts index 0505aa7..33961de 100644 --- a/backend/controllers/folder.ts +++ b/backend/controllers/folder.ts @@ -1,4 +1,4 @@ -const FolderService = require("../services/FolderService"); +import FolderService from "../services/FolderService"; const folderService = new FolderService(); import { Request, Response } from "express"; import {UserInterface} from "../models/user"; @@ -14,7 +14,7 @@ class FolderController { } - async uploadFolder(req: RequestType, res: Response) { + uploadFolder = async(req: RequestType, res: Response) => { if (!req.user) { @@ -38,7 +38,7 @@ class FolderController { } } - async deleteFolder(req: RequestType, res: Response) { + deleteFolder = async(req: RequestType, res: Response) => { if (!req.user) { @@ -64,7 +64,7 @@ class FolderController { } } - async deleteAll(req: RequestType, res: Response) { + deleteAll = async(req: RequestType, res: Response) => { if (!req.user) { @@ -88,7 +88,7 @@ class FolderController { } } - async getInfo(req: RequestType, res: Response) { + getInfo = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -112,7 +112,7 @@ class FolderController { } } - async getSubfolderList(req: RequestType, res: Response) { + getSubfolderList = async(req: RequestType, res: Response) => { if (!req.user) { @@ -122,7 +122,7 @@ class FolderController { try { const userID = req.user._id; - const folderID = req.query.id; + const folderID = req.query.id as string; const {folderIDList, folderNameList} = await folderService.getFolderSublist(userID, folderID); @@ -137,7 +137,7 @@ class FolderController { } } - async getFolderList(req: RequestType, res: Response) { + getFolderList = async(req: RequestType, res: Response) => { if (!req.user) { @@ -162,7 +162,7 @@ class FolderController { } } - async moveFolder(req: RequestType, res: Response) { + moveFolder = async(req: RequestType, res: Response) => { if (!req.user) { return; @@ -188,7 +188,7 @@ class FolderController { } } - async renameFolder(req: RequestType, res: Response) { + renameFolder = async(req: RequestType, res: Response) => { if (!req.user) { return; diff --git a/backend/express-routers/file.ts b/backend/express-routers/file.ts index a7a1cb9..fe554e4 100644 --- a/backend/express-routers/file.ts +++ b/backend/express-routers/file.ts @@ -2,9 +2,9 @@ import {Router} from "express"; const router = Router(); -const auth = require("../middleware/auth"); -const tempAuth = require("../middleware/tempAuth") -const tempAuthVideo = require("../middleware/tempAuthVideo") +import auth from "../middleware/auth"; +import tempAuth from "../middleware/tempAuth"; +import tempAuthVideo from "../middleware/tempAuthVideo"; import FileController from "../controllers/file"; import FsFileController from "../controllers/fileSystem"; diff --git a/backend/express-routers/folder.ts b/backend/express-routers/folder.ts index 69a9dce..72a4de8 100644 --- a/backend/express-routers/folder.ts +++ b/backend/express-routers/folder.ts @@ -1,6 +1,6 @@ import {Router} from "express"; const router = Router(); -const auth = require("../middleware/auth"); +import auth from "../middleware/auth"; const FolderController = require("../controllers/folder"); const folderController = new FolderController(); diff --git a/backend/express-routers/storage.ts b/backend/express-routers/storage.ts index ad32310..231fbec 100644 --- a/backend/express-routers/storage.ts +++ b/backend/express-routers/storage.ts @@ -1,6 +1,6 @@ import {Router} from "express"; const router = Router(); -const auth = require("../middleware/auth"); +import auth from "../middleware/auth"; import StorageController from "../controllers/storage"; const storageController = new StorageController(); diff --git a/backend/express-routers/user.ts b/backend/express-routers/user.ts index c2ecd56..3ad5d1b 100644 --- a/backend/express-routers/user.ts +++ b/backend/express-routers/user.ts @@ -1,6 +1,6 @@ import { Router } from "express"; const router = Router(); -const auth = require("../middleware/auth"); +import auth from "../middleware/auth"; import UserController from "../controllers/user"; const userController = new UserController(); diff --git a/backend/key/getKey.js b/backend/key/getKey.ts similarity index 76% rename from backend/key/getKey.js rename to backend/key/getKey.ts index d9644e8..c77429f 100644 --- a/backend/key/getKey.js +++ b/backend/key/getKey.ts @@ -1,6 +1,6 @@ const prompt = require('password-prompt') import env from "../enviroment/env"; -const crypto = require("crypto"); +import crypto from "crypto"; const getKey = async() => { @@ -11,7 +11,7 @@ const getKey = async() => { } else if (process.env.NODE_ENV) { - let password = await prompt("Enter Server Encryption Password: ", {method: "hide"}); + let password: string = await prompt("Enter Server Encryption Password: ", {method: "hide"}); password = crypto.createHash("md5").update(password).digest("hex"); @@ -27,4 +27,4 @@ const getKey = async() => { } } -module.exports = getKey; \ No newline at end of file +export default getKey; \ No newline at end of file diff --git a/backend/middleware/auth.js b/backend/middleware/auth.ts similarity index 56% rename from backend/middleware/auth.js rename to backend/middleware/auth.ts index 23175d0..a2e1ac4 100644 --- a/backend/middleware/auth.js +++ b/backend/middleware/auth.ts @@ -1,18 +1,32 @@ -const jwt = require("jsonwebtoken"); -import User from "../models/user"; +import jwt from "jsonwebtoken"; +import User, {UserInterface} from "../models/user"; import env from "../enviroment/env"; +import {Request, Response, NextFunction} from "express"; -const auth = async(req, res, next) => { +interface RequestType extends Request { + user?: UserInterface, + auth?: any, + busboy?: any, + token?: any, + encryptedToken?: any, +} + +type jwtType = { + iv: Buffer, + _id: string, +} + +const auth = async(req: RequestType, res: Response, next: NextFunction) => { try { - const token = req.header("Authorization").replace("Bearer ", ""); + const token = req.header("Authorization")!.replace("Bearer ", ""); - const decoded = await jwt.verify(token, env.password); + const decoded = await jwt.verify(token, env.password!) as jwtType; const iv = decoded.iv; - const user = await User.findOne({_id: decoded._id}); + const user = await User.findOne({_id: decoded._id}) as UserInterface; const encrpytionKey = user.getEncryptionKey(); const encryptedToken = user.encryptToken(token, encrpytionKey, iv); @@ -46,4 +60,4 @@ const auth = async(req, res, next) => { } } -module.exports = auth; \ No newline at end of file +export default auth; \ No newline at end of file diff --git a/backend/middleware/tempAuth.js b/backend/middleware/tempAuth.ts similarity index 64% rename from backend/middleware/tempAuth.js rename to backend/middleware/tempAuth.ts index 4036a72..9a0c3eb 100644 --- a/backend/middleware/tempAuth.js +++ b/backend/middleware/tempAuth.ts @@ -1,18 +1,33 @@ -const jwt = require("jsonwebtoken"); -import User from "../models/user"; +import jwt from "jsonwebtoken"; +import User, {UserInterface} from "../models/user"; import env from "../enviroment/env"; +import {Request, Response, NextFunction} from "express"; -const tempAuth = async(req, res, next) => { + +interface RequestType extends Request { + user?: UserInterface, + auth?: any, + busboy?: any, + token?: any, + encryptedTempToken?: any, +} + +type jwtType = { + iv: Buffer, + _id: string, +} + +const tempAuth = async(req: RequestType, res: Response, next: NextFunction) => { try { const token = req.params.tempToken; - const decoded = await jwt.verify(token, env.password); + const decoded = await jwt.verify(token, env.password!) as jwtType; const iv = decoded.iv; - const user = await User.findOne({_id: decoded._id}) + const user = await User.findOne({_id: decoded._id}) as UserInterface; const encrpytionKey = user.getEncryptionKey(); const encryptedToken = user.encryptToken(token, encrpytionKey, iv); @@ -54,4 +69,4 @@ const tempAuth = async(req, res, next) => { } } -module.exports = tempAuth; \ No newline at end of file +export default tempAuth; \ No newline at end of file diff --git a/backend/middleware/tempAuthVideo.js b/backend/middleware/tempAuthVideo.ts similarity index 61% rename from backend/middleware/tempAuthVideo.js rename to backend/middleware/tempAuthVideo.ts index 2c48ab9..99e621d 100644 --- a/backend/middleware/tempAuthVideo.js +++ b/backend/middleware/tempAuthVideo.ts @@ -1,14 +1,30 @@ -const jwt = require("jsonwebtoken"); -import User from "../models/user"; +import jwt from "jsonwebtoken"; +import User, {UserInterface} from "../models/user"; import env from "../enviroment/env"; +import {Request, Response, NextFunction} from "express"; -const tempAuthVideo = async(req, res, next) => { + +interface RequestType extends Request { + user?: UserInterface, + auth?: any, + busboy?: any, + token?: any, + encryptedTempToken?: any, +} + +type jwtType = { + iv: Buffer, + _id: string, + cookie: string +} + +const tempAuthVideo = async(req: RequestType, res: Response, next: NextFunction) => { try { const token = req.params.tempToken; - const decoded = await jwt.verify(token, env.password); + const decoded = await jwt.verify(token, env.password!) as jwtType; const iv = decoded.iv; @@ -17,7 +33,7 @@ const tempAuthVideo = async(req, res, next) => { throw new Error("Cookie mismatch") } - const user = await User.findOne({_id: decoded._id}) + const user = await User.findOne({_id: decoded._id}) as UserInterface; const encrpytionKey = user.getEncryptionKey(); const encryptedToken = user.encryptToken(token, encrpytionKey, iv); @@ -53,4 +69,4 @@ const tempAuthVideo = async(req, res, next) => { } } -module.exports = tempAuthVideo; \ No newline at end of file +export default tempAuthVideo; \ No newline at end of file diff --git a/backend/models/folder.ts b/backend/models/folder.ts index 8da5d74..571871b 100644 --- a/backend/models/folder.ts +++ b/backend/models/folder.ts @@ -31,7 +31,8 @@ export interface FolderInterface extends Document { name: string, parent: string, owner: string, - parentList: string[] + parentList: string[], + _doc?: any } const Folder = mongoose.model("Folder", folderSchema); diff --git a/backend/server/serverStart.js b/backend/server/serverStart.js index 3cb8db5..9d7963e 100644 --- a/backend/server/serverStart.js +++ b/backend/server/serverStart.js @@ -1,4 +1,4 @@ -const getKey = require("../key/getKey"); +import getKey from "../key/getKey"; const serverStart = async() => { diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 58a4e9a..449afc4 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -1,7 +1,6 @@ import mongoose from "../../db/mongoose"; import { Response, Request } from "express"; -const conn = mongoose.connection; -const DbUtilFolder = require("../../db/utils/folderUtils"); +import DbUtilFolder from "../../db/utils/folderUtils"; import DbUtilFile from "../../db/utils/fileUtils"; import crypto from "crypto"; import videoChecker from "../../utils/videoChecker" @@ -23,6 +22,9 @@ import removeChunks from "../FileService/utils/removeChunks"; import getBusboyData from "./utils/getBusboyData"; import ChunkInterface from "./utils/ChunkInterface"; + +const conn = mongoose.connection; + const dbUtilsFile = new DbUtilFile(); const dbUtilsFolder = new DbUtilFolder(); diff --git a/backend/services/FileService/index.js b/backend/services/FileService/index.js deleted file mode 100644 index f21ee9b..0000000 --- a/backend/services/FileService/index.js +++ /dev/null @@ -1,899 +0,0 @@ -const imageChecker = require("../../utils/imageChecker"); -import crypto from "crypto"; -const videoChecker = require("../../utils/videoChecker"); -import mongoose from "../../db/mongoose"; -const conn = mongoose.connection; -const createThumbnail = require("./utils/createThumbnail.ss"); -const Thumbnail = require("../../models/thumbnail"); -const ObjectID = require('mongodb').ObjectID -const NotAuthorizedError = require("../../utils/NotAuthorizedError"); -const NotFoundError = require("../../utils/NotFoundError"); -import env from "../../enviroment/env"; -const jwt = require("jsonwebtoken"); -const removeChunks = require("./utils/removeChunks"); -const User = require("../../models/user"); - - -const Folder = require("../../models/folder"); -const sortBySwitch = require("../../utils/sortBySwitch") -const createQuery = require("../../utils/createQuery"); -const ffmpeg = require("fluent-ffmpeg"); -const temp = require("temp").track(); -const progress = require("progress-stream"); -const fs = require("fs") -const DbUtilFile = require("../../db/utils/fileUtils"); -const DbUtilFolder = require("../../db/utils/folderUtils"); - -const dbUtilsFile = new DbUtilFile(); -const dbUtilsFolder = new DbUtilFolder(); - -const FileService = function() { - - this.upload = (user, busboy, req) => { - - return new Promise((resolve, reject) => { - - const password = user.getEncryptionKey(); - - let bucketStream; - - const initVect = crypto.randomBytes(16); - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect); - - cipher.on("error", async(e) => { - await removeChunks(bucketStream); - reject({ - message: "File service upload cipher error", - exception: e, - code: 500 - }) - }) - - const formData = new Map(); - - busboy.on("error", async(e) => { - await removeChunks(bucketStream); - reject({ - message: "File service upload busboy error", - exception: e, - code: 500 - }) - }) - - busboy.on("file", async(fieldname, file, filename) => { - - const parent = formData.get("parent") || "/" - const parentList = formData.get("parentList") || "/"; - const size = formData.get("size") || "" - let hasThumbnail = false; - let thumbnailID = "" - const isVideo = videoChecker(filename) - - const metadata = { - owner: user._id, - parent, - parentList, - hasThumbnail, - thumbnailID, - isVideo, - size, - IV: initVect - } - - - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); - - - bucketStream = bucket.openUploadStream(filename, {metadata}) - - bucketStream.on("error", async(e) => { - await removeChunks(bucketStream); - reject({ - message: "Cannot upload file to database", - exception: e, - code: 500 - }) - }) - - req.on("aborted", async() => { - - console.log("Upload Request Cancelling..."); - - await removeChunks(bucketStream); - }) - - file.pipe(cipher).pipe(bucketStream); - - bucketStream.on("finish", async(file) => { - - const imageCheck = imageChecker(filename); - - if (file.length < 15728640 && imageCheck) { - - let updatedFile = await createThumbnail(file, filename, user); - - resolve(updatedFile); - - } else { - - resolve(file); - } - - }) - - }).on("field", (field, val) => { - - formData.set(field, val) - - }) - - }) - } - - this.getThumbnail = async(user, id) => { - - const password = user.getEncryptionKey(); - - const thumbnail = await Thumbnail.findById(id); - - if (user._id.toString() !== thumbnail.owner) { - - throw new NotAuthorizedError("Thumbnail Unauthorized Error"); - } - - const iv = thumbnail.data.slice(0, 16); - - const chunk = thumbnail.data.slice(16); - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const decipher = crypto.createDecipheriv("aes256", CIPHER_KEY, iv); - - const decryptedThumbnail = Buffer.concat([decipher.update(chunk), decipher.final()]); - - //console.log("decry", decryptedThumbnail); - - return decryptedThumbnail; - } - - this.getFullThumbnail = async(user, fileID, res) => { - - return new Promise((resolve, reject) => { - - const userID = user._id; - - dbUtilsFile.getFileInfo(fileID, userID).then( async(file) => { - - if (!file) { - reject({ - code: 401, - message: "File For Full Thumbnail Not Found", - exception: undefined - }) - } - - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }) - const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer - - const readStream = bucket.openDownloadStream(ObjectID(fileID)) - - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service Full Thumbnail stream error", - exception: e - }) - }) - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service Full Thumbnail decipher error", - exception: e - }) - }) - - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size); - - readStream.pipe(decipher).pipe(res).on("finish", async() => { - console.log("Sent Full Thumbnail"); - resolve(); - }); - }); - }) - } - - this.publicDownload = (ID, tempToken, res) => { - - return new Promise((resolve, reject) => { - - dbUtilsFile.getPublicFile(ID).then(async(file) => { - - if (!file || !file.metadata.link || file.metadata.link !== tempToken) { - reject({ - code: 401, - message: "File not public/Not found", - exception: undefined - }) - } else { - - const user = await User.findById(file.metadata.owner); - - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }) - - const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer - - const readStream = bucket.openDownloadStream(ObjectID(ID)) - - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service public download decipher error", - exception: e - }) - }) - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service public download decipher error", - exception: e - }) - }) - - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size); - - readStream.pipe(decipher).pipe(res).on("finish", async() => { - console.log("removing public link"); - await this.removePublicOneTimeLink(file); - resolve(); - }); - - } - - }) - }) - - } - - this.removePublicOneTimeLink = async(currentFile) => { - - const ID = currentFile._id; - - if (currentFile.metadata.linkType === "one") { - - await dbUtilsFile.removeOneTimePublicLink(ID); - } - } - - this.removeLink = async(userID, fileID) => { - - const file = await dbUtilsFile.removeLink(fileID, userID); - - if (!file.lastErrorObject.updatedExisting) throw new NotFoundError("Remove Link File Not Found Error") - } - - this.makePublic = async(user, fileID) => { - - const userID = user._id; - const token = await jwt.sign({_id: userID.toString()}, env.password); - - const file = await dbUtilsFile.makePublic(fileID, userID, token, "public"); - - if (!file.lastErrorObject.updatedExisting) throw new NotFoundError("Make Public File Not Found Error"); - - return token; - } - - this.getPublicInfo = async(fileID, tempToken) => { - - const file = await dbUtilsFile.getPublicInfo(fileID, tempToken); - - if (!file || !file.metadata.link || file.metadata.link !== tempToken) { - - throw new NotFoundError("Public Info Not Found"); - - } else { - - return file; - } - } - - this.makeOneTimePublic = async(userID, fileID) => { - - const token = await jwt.sign({_id: userID.toString()}, env.password); - - const file = await dbUtilsFile.makeOneTimePublic(fileID, userID, token); - - if (!file.lastErrorObject.updatedExisting) throw new NotFoundError("Make One Time Public Not Found Error"); - - return token; - } - - this.getFileInfo = async(userID, fileID) => { - - let currentFile = await dbUtilsFile.getFileInfo(fileID, userID) - - if (!currentFile) throw new NotFoundError("Get File Info Not Found Error"); - - const parentID = currentFile.metadata.parent - - let parentName = ""; - - if (parentID === "/") { - - parentName = "Home" - - } else { - - const parentFolder = await Folder.findOne({"owner": userID, "_id": parentID}); - - if (parentFolder) { - - parentName = parentFolder.name; - - } else { - - parentName = "Unknown" - } - - } - - return {...currentFile, parentName} - - } - - this.getQuickList = async(userID) => { - - const quickList = await dbUtilsFile.getQuickList(userID); - - if (!quickList) throw new NotFoundError("Quick List Not Found Error"); - - return quickList; - } - - this.getList = async(userID, query) => { - - let searchQuery = query.search || ""; - const parent = query.parent || "/"; - let limit = query.limit || 50; - let sortBy = query.sortby || "DEFAULT" - const startAt = query.startAt || undefined - const startAtDate = query.startAtDate || "0" - const startAtName = query.startAtName || "" - sortBy = sortBySwitch(sortBy) - limit = parseInt(limit) - - const queryObj = createQuery(userID, parent, query.sortby,startAt, startAtDate, searchQuery, startAtName) - - const fileList = await dbUtilsFile.getList(queryObj, sortBy, limit); - - if (!fileList) throw new NotFoundError("File List Not Found"); - - return fileList; - - } - - this.getDownloadToken = async(user) => { - - const tempToken = await user.generateTempAuthToken(); - - if (!tempToken) throw new NotAuthorizedError("Get Download Token Not Authorized Error"); - - return tempToken; - } - - this.getDownloadTokenVideo = async(user, cookie) => { - - if (!cookie) throw new NotAuthorizedError("Get Download Token Video Cookie Not Authorized Error"); - - const tempToken = await user.generateTempAuthTokenVideo(cookie); - - if (!tempToken) throw new NotAuthorizedError("Get Download Token Video Not Authorized Error"); - - return tempToken; - } - - this.removeTempToken = async(user, tempToken) => { - - const key = user.getEncryptionKey(); - - const decoded = await jwt.verify(tempToken, env.password); - - const publicKey = decoded.iv; - - const encryptedToken = user.encryptToken(tempToken, key, publicKey); - - const removedTokenUser = await dbUtilsFile.removeTempToken(user, encryptedToken); - - if (!removedTokenUser) throw new NotFoundError("Remove Temp Token User Not Found Errors"); - - await removedTokenUser.save(); - } - - this.transcodeVideo = (user, body) => { - - return new Promise((resolve, reject) => { - - const id = body.file._id; - const userID = user._id; - - conn.db.collection("fs.files") - .findOne({"_id": ObjectID(id), "metadata.owner": userID}).then((currentFile) => { - - if (!currentFile) { - reject({ - message: "Transcode Video Not Found Error", - exception: undefined, - code: 401 - }) - } else { - - const password = user.getEncryptionKey(); //env.key; - - const IV = currentFile.metadata.IV.buffer - - const bucket = new mongoose.mongo.GridFSBucket(conn.db); - - const readStream = bucket.openDownloadStream(ObjectID(id)); - - readStream.on("error", (e) => { - reject({ - message: "File service transcode video stream error", - exception: e, - code: 500 - }) - }) - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - - decipher.on("error", (e) => { - reject({ - message: "File service transcode video decipher error", - exception: e, - code: 500 - }) - }) - - const tempStream = temp.createWriteStream() - - tempStream.on("error", (e) => { - reject({ - message: "File service transcode video temp error", - exception: e, - code: 500 - }) - }) - - - readStream.pipe(decipher).pipe(tempStream).on("finish", () => { - - const writeBucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos", - }); - - const gfsWrite = writeBucket.openUploadStream(currentFile.filename, { - _id: id, - }) - - gfsWrite.on("error", (e) => { - reject({ - message: "File service transcode video write stream error", - exception: e, - code: 500 - }) - }) - - const initVect = crypto.randomBytes(16); - - const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect); - - cipher.on("error", (e) => { - reject({ - message: "File service transcode video cipher write error", - exception: e, - code: 500 - }) - }) - - const str = progress({time: 100}) - - str.on("progress", () => { - - }); - - str.on("finish", () => { - - }) - - const tempStream2 = temp.createWriteStream() - - tempStream2.on("error", (e) => { - reject({ - message: "File service transcode video temp write error", - exception: e, - code: 500 - }) - }) - - const ffmpegCommand = ffmpeg() - .input(tempStream.path).outputOptions(['-movflags frag_keyframe+empty_moov', '-movflags +faststart']) - .outputFormat('mp4').on("error", (err, stdout, stderr) => { - console.log('An error occurred: ' + err.message, err, stderr); - reject({ - message: "Video Transcode Failed Error", - exception: err.message, - code: 500 - }) - }) - .videoCodec('libx264') - .audioBitrate('128k') - .videoBitrate(8000, true) - .pipe(tempStream2).on("finish", () => { - - fs.createReadStream(tempStream2.path).pipe(cipher).pipe(gfsWrite).on("finish", async(file) => { - - console.log("transcode finished"); - - await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(id)}, {"$set": {"metadata.transcoded": true, "metadata.transcodedIV": initVect, "metadata.transcoded_size": tempStream2.bytesWritten, "metadata.transcodedID": file._id}}) - - resolve(); - - }).on("error", (e) => { - reject({ - message: "File service transcode read stream error", - exception: e, - code: 500 - }) - }) - }) - - ffmpegCommand.on("error", (e) => { - reject({ - message: "File service FFMPEG error", - exception: e, - code: 500 - }) - }) - - }) - - } - - }) - }) - - } - - this.removeTranscodeVideo = async(userID, fileID) => { - - const parentFile = await dbUtilsFile.getFileInfo(fileID, userID); - const transcodedVideoID = parentFile.metadata.transcodedID; - - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos" - }); - - try { - await bucket.delete(ObjectID(transcodedVideoID)); - } catch (e) { - console.log("Could Not Find Transcoded Video"); - } - - const file = await dbUtilsFile.removeTranscodeVideo(fileID, userID); - - if (!file) throw new NotFoundError("Remove Transcode Video Error"); - } - - this.streamTranscodedVideo = (userID, fileID, headers, res) => { - - return new Promise((resolve, reject) => { - - dbUtilsFile.getFileInfo(fileID, userID).then((file) => { - - if (!file) { - reject({ - code: 401, - message: "Stream Transcoded File Not Found", - exception: undefined - }) - } else { - - const fileSize = file.metadata.transcoded_size; - const transcodedVideoID = file.metadata.transcodedID; - - const password = user.getEncryptionKey(); //env.key; - - const range = headers.range - const parts = range.replace(/bytes=/, "").split("-") - const start = parseInt(parts[0], 10) - const end = parts[1] - ? parseInt(parts[1], 10) - : fileSize-1 - const chunksize = (end-start)+1 - const IV = file.metadata.transcodedIV.buffer - - let head = { - 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, - 'Accept-Ranges': 'bytes', - 'Content-Length': chunksize, - 'Content-Type': 'video/mp4' - } - - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos", - chunkSizeBytes: chunksize - }); - const readStream = bucket.openDownloadStream(ObjectID(transcodedVideoID), { - start: start, - end: end - }); - - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service transcode video stream error", - exception: e - }) - }) - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - decipher.setAutoPadding(false); - - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service transcode video decipher error", - exception: e - }) - }); - - res.writeHead(206, head); - - readStream.pipe(decipher).pipe(res).on("finish", () => { - - resolve(); - }); - } - - }) - - }) - } - - this.streamVideo = (user, fileID, headers, res) => { - - return new Promise((resolve, reject) => { - - const userID = user._id; - - dbUtilsFile.getFileInfo(fileID, userID).then((currentFile) => { - - if (!currentFile) { - reject({ - code: 401, - message: "Video Steam Not Found Error", - exception: undefined - }) - } else { - - const password = user.getEncryptionKey(); - const fileSize = currentFile.metadata.size; - - const range = headers.range - const parts = range.replace(/bytes=/, "").split("-") - let start = parseInt(parts[0], 10) - let end = parts[1] - ? parseInt(parts[1], 10) - : fileSize-1 - const chunksize = (end-start)+1 - const IV = currentFile.metadata.IV.buffer - - let head = { - 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, - 'Accept-Ranges': 'bytes', - 'Content-Length': chunksize, - 'Content-Type': 'video/mp4'} - - const bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 - }); - const readStream = bucket.openDownloadStream(ObjectID(fileID), { - start: start, - end: end.length - }); - - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service stream video stream error", - exception: e - }) - }) - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service stream video decipher error", - exception: e - }) - }) - - res.writeHead(206, head); - - readStream.pipe(decipher).pipe(res).on("finish", () => { - resolve(); - }); - } - }) - }) - } - - this.downloadFile = (user, fileID, res) => { - - return new Promise((resolve, reject) => { - - const userID = user._id; - - dbUtilsFile.getFileInfo(fileID, userID).then((file) => { - - if (!file) { - reject({ - code: 401, - message: "Download File Not Found Error", - exception: undefined - }) - } else { - - const password = user.getEncryptionKey(); - - const bucket = new mongoose.mongo.GridFSBucket(conn.db); - - const IV = file.metadata.IV.buffer - - const readStream = bucket.openDownloadStream(ObjectID(fileID)) - - readStream.on("error", (e) => { - reject({ - code: 500, - message: "File service download decipher error", - exception: e - }) - }) - - const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); - - decipher.on("error", (e) => { - reject({ - code: 500, - message: "File service download decipher error", - exception: e - }) - }) - - res.set('Content-Type', 'binary/octet-stream'); - res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"'); - res.set('Content-Length', file.metadata.size); - - readStream.pipe(decipher).pipe(res).on("finish", () => { - resolve(); - }); - - } - - }) - - }) - } - - this.getSuggestedList = async(userID, searchQuery) => { - - searchQuery = new RegExp(searchQuery, 'i') - - const fileList = await dbUtilsFile.getFileSearchList(userID, searchQuery); - const folderList = await dbUtilsFolder.getFolderSearchList(userID, searchQuery); - - if (!fileList || !folderList) throw new NotFoundError("Suggested List Not Found Error"); - - return { - fileList, - folderList - } - } - - this.renameFile = async(userID, fileID, title) => { - - const file = await dbUtilsFile.renameFile(fileID, userID, title); - - if (!file.lastErrorObject.updatedExisting) throw new NotFoundError("Rename File Not Found Error"); - - return file; - } - - this.moveFile = async(userID, fileID, parentID) => { - - let parentList = ["/"]; - - if (parentID.length !== 1) { - - const parentFile = await dbUtilsFolder.getFolderInfo(parentID, userID); - if (!parentFile) throw new NotFoundError("Rename Parent File Not Found Error") - const parentList = parentFile.parentList; - parentList.push(parentID); - } - - const file = await dbUtilsFile.moveFile(fileID, userID, parentID, parentList.toString()); - - if (!file.lastErrorObject.updatedExisting) throw new NotFoundError("Rename File Not Found Error"); - - return file; - } - - this.deleteFile = async(userID, fileID) => { - - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255, - }); - - const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos" - }); - - const file = await dbUtilsFile.getFileInfo(fileID, userID); - - if (!file) throw new NotFoundError("Delete File Not Found Error"); - - if (file.metadata.thumbnailID) { - - await Thumbnail.deleteOne({_id: file.metadata.thumbnailID}); - } - - if (file.metadata.isVideo && file.metadata.transcoded) { - try { - await bucket.delete(ObjectID(file.metadata.transcodedID)); - } catch (e) { - console.log("Could Not Find Transcoded Video"); - } - } - - await bucket.delete(ObjectID(fileID)); - - } -} - -module.exports = FileService; - diff --git a/backend/services/FileService/indexnew.ts b/backend/services/FileService/index.ts similarity index 97% rename from backend/services/FileService/indexnew.ts rename to backend/services/FileService/index.ts index 7493857..ad2a642 100644 --- a/backend/services/FileService/indexnew.ts +++ b/backend/services/FileService/index.ts @@ -15,14 +15,14 @@ const User = require("../../models/user"); const Folder = require("../../models/folder"); -const sortBySwitch = require("../../utils/sortBySwitch") -const createQuery = require("../../utils/createQuery"); +import sortBySwitch from "../../utils/sortBySwitch"; +import createQuery from "../../utils/createQuery"; const ffmpeg = require("fluent-ffmpeg"); const temp = require("temp").track(); const progress = require("progress-stream"); const fs = require("fs") import DbUtilFile from "../../db/utils/fileUtils/index"; -const DbUtilFolder = require("../../db/utils/folderUtils"); +import DbUtilFolder from "../../db/utils/folderUtils"; const dbUtilsFile = new DbUtilFile(); const dbUtilsFolder = new DbUtilFolder(); diff --git a/backend/services/FolderService/index.js b/backend/services/FolderService/index.js deleted file mode 100644 index e60e94a..0000000 --- a/backend/services/FolderService/index.js +++ /dev/null @@ -1,287 +0,0 @@ -import Folder from "../../models/folder"; -const InternalServerError = require("../../utils/InternalServerError"); -const NotFoundError = require("../../utils/NotFoundError"); -import UtilsFile from "../../db/utils/fileUtils"; -const ObjectID = require('mongodb').ObjectID -const UtilsFolder = require("../../db/utils/folderUtils"); -import mongoose from "../../db/mongoose"; -const conn = mongoose.connection; -const Thumbnail = require("../../models/thumbnail"); -const sortBySwitch = require("../../utils/sortBySwitchFolder"); - -const utilsFile = new UtilsFile(); -const utilsFolder = new UtilsFolder(); - -const FolderService = function() { - - this.uploadFolder = async(data) => { - - const folder = new Folder(data); - - await folder.save(); - - if (!folder) throw new InternalServerError("Upload Folder Error"); - - return folder; - } - - this.deleteFolder = async(userID, folderID, parentList) => { - - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); - - const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos" - }); - - const parentListString = parentList.toString() - - await Folder.deleteMany({"owner": userID, "parentList": { $all: parentList}}) - await Folder.deleteMany({"owner": userID, "_id": folderID}); - - const fileList = await utilsFile.getFileListByParent(userID, parentListString); - - if (!fileList) throw new NotFoundError("Delete File List Not Found"); - - for (let i = 0; i < fileList.length; i++) { - - const currentFile = fileList[i]; - - try { - - if (currentFile.metadata.thumbnailID) { - - await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}); - } - - if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { - - try { - await videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)) - } catch (e) {console.log("Could Not Find Transcoded Video")} - - } - - await bucket.delete(ObjectID(currentFile._id)); - - } catch (e) { - - console.log("Could not delete file", currentFile.filename, currentFile._id); - } - - - } - } - - this.deleteAll = async(userID) => { - - console.log("remove all request") - - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); - - const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos" - }); - - await Folder.deleteMany({"owner": userID}); - - const fileList = await utilsFile.getFileListByOwner(userID); - - if (!fileList) throw new NotFoundError("Delete All File List Not Found Error"); - - for (let i = 0; i < fileList.length; i++) { - const currentFile = fileList[i]; - - try { - - if (currentFile.metadata.thumbnailID) { - - await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}) - } - - if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { - - try { - await videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)) - } catch (e) { - console.log("Cannot Find Transcoded Video"); - } - - } - - await bucket.delete(ObjectID(currentFile._id)); - - } catch (e) { - - console.log("Could Not Remove File", currentFile.filename, currentFile._id); - } - } - - } - - this.getFolderInfo = async(userID, folderID) => { - - let currentFolder = await utilsFolder.getFolderInfo(folderID, userID); - - if (!currentFolder) throw new NotFoundError("Folder Info Not Found Error"); - - const parentID = currentFolder.parent; - - let parentName = ""; - - if (parentID === "/") { - - parentName = "Home" - - } else { - - const parentFolder = await utilsFolder.getFolderInfo(parentID, userID); - - if (parentFolder) { - - parentName = parentFolder.name; - - } else { - - parentName = "Unknown" - } - - } - - const folderName = currentFolder.name - - currentFolder = {...currentFolder._doc, parentName, folderName} - // Must Use ._doc here, or the destucturing/spreading - // Will add a bunch of unneeded variables to the object. - - return currentFolder; - } - - this.getFolderSublist = async(userID, folderID) => { - - const folder = await utilsFolder.getFolderInfo(folderID, userID); - - if (!folder) throw new NotFoundError("Folder Sublist Not Found Error"); - - const subfolderList = folder.parentList; - - let folderIDList = []; - let folderNameList = []; - - for (let i = 0; i < subfolderList.length; i++) { - - const currentSubFolderID = subfolderList[i]; - - if (currentSubFolderID === "/") { - - folderIDList.push("/"); - folderNameList.push("Home") - - } else { - - const currentFolder = await utilsFolder.getFolderInfo(currentSubFolderID, userID); - - folderIDList.push(currentFolder._id); - folderNameList.push(currentFolder.name) - } - } - - folderIDList.push(folderID); - folderNameList.push(folder.name) - - return { - folderIDList, - folderNameList - } - - } - - this.getFolderList = async(userID, query) => { - - let searchQuery = query.search || ""; - const parent = query.parent || "/"; - let sortBy = query.sortby || "DEFAULT" - sortBy = sortBySwitch(sortBy) - - if (searchQuery.length === 0) { - - const folderList = await utilsFolder.getFolderListByParent(userID, parent, sortBy); - - if (!folderList) throw new NotFoundError("Folder List Not Found Error"); - - return folderList; - - } else { - - searchQuery = new RegExp(searchQuery, 'i') - const folderList = await utilsFolder.getFolderListBySearch(userID, searchQuery, sortBy); - - if (!folderList) throw new NotFoundError("Folder List Not Found Error"); - - return folderList; - } - } - - this.renameFolder = async(userID, folderID, title) => { - - const folder = await utilsFolder.renameFolder(folderID, userID, title); - - if (!folder) throw new NotFoundError("Rename Folder Not Found"); - } - - this.moveFolder = async(userID, folderID, parentID) => { - - let parentList = ["/"]; - - if (parentID.length !== 1) { - - const parentFile = await utilsFolder.getFolderInfo(parentID, userID); - parentList = parentFile.parentList; - parentList.push(parentID); - } - - const folder = await utilsFolder.moveFolder(folderID, userID, parentID, parentList); - - if (!folder) throw new NotFoundError("Move Folder Not Found") - - const folderChilden = await utilsFolder.findAllFoldersByParent(folderID.toString(), userID); - - folderChilden.map( async(currentFolderChild) => { - - let currentFolderChildParentList = currentFolderChild.parentList; - - const indexOfFolderID = currentFolderChildParentList.indexOf(folderID.toString()); - - currentFolderChildParentList = currentFolderChildParentList.splice(indexOfFolderID); - - currentFolderChildParentList = [...parentList, ...currentFolderChildParentList]; - - currentFolderChild.parentList = currentFolderChildParentList; - - await currentFolderChild.save() - }) - - const fileChildren = await utilsFile.getFileListByParent(userID, folderID.toString()); - - fileChildren.map( async(currentFileChild) => { - - let currentFileChildParentList = currentFileChild.metadata.parentList; - - currentFileChildParentList = currentFileChildParentList.split(","); - - const indexOfFolderID = currentFileChildParentList.indexOf(folderID.toString()); - - currentFileChildParentList = currentFileChildParentList.splice(indexOfFolderID); - - currentFileChildParentList = [...parentList, ...currentFileChildParentList]; - - await utilsFile.moveFile(currentFileChild._id, userID, currentFileChild.metadata.parent, currentFileChildParentList.toString()) - - }) - } -} - -module.exports = FolderService; \ No newline at end of file diff --git a/backend/services/FolderService/index.ts b/backend/services/FolderService/index.ts new file mode 100644 index 0000000..69de743 --- /dev/null +++ b/backend/services/FolderService/index.ts @@ -0,0 +1,557 @@ +import Folder from "../../models/folder"; +import InternalServerError from "../../utils/InternalServerError"; +import NotFoundError from "../../utils/NotFoundError"; +import UtilsFile from "../../db/utils/fileUtils"; +import {ObjectID} from "mongodb"; +import UtilsFolder from "../../db/utils/folderUtils"; +import mongoose from "../../db/mongoose"; +const conn = mongoose.connection; +import Thumbnail from "../../models/thumbnail"; +import sortBySwitch from "../../utils/sortBySwitchFolder"; + +const utilsFile = new UtilsFile(); +const utilsFolder = new UtilsFolder(); + +class FolderService { + + uploadFolder = async(data: any) => { + + const folder = new Folder(data); + + await folder.save(); + + if (!folder) throw new InternalServerError("Upload Folder Error"); + + return folder; + } + + deleteFolder = async(userID: string, folderID: string, parentList: string[]) => { + + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255 + }); + + const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { + bucketName: "videos" + }); + + const parentListString = parentList.toString() + + await Folder.deleteMany({"owner": userID, "parentList": { $all: parentList}}) + await Folder.deleteMany({"owner": userID, "_id": folderID}); + + const fileList = await utilsFile.getFileListByParent(userID, parentListString); + + if (!fileList) throw new NotFoundError("Delete File List Not Found"); + + for (let i = 0; i < fileList.length; i++) { + + const currentFile = fileList[i]; + + try { + + if (currentFile.metadata.thumbnailID) { + + await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}); + } + + // if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { + + // try { + // await videoBucket.delete(new ObjectID(currentFile.metadata.transcodedID)) + // } catch (e) {console.log("Could Not Find Transcoded Video")} + + // } + + await bucket.delete(new ObjectID(currentFile._id)); + + } catch (e) { + + console.log("Could not delete file", currentFile.filename, currentFile._id); + } + + + } + } + + deleteAll = async(userID: string) => { + + console.log("remove all request") + + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255 + }); + + const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { + bucketName: "videos" + }); + + await Folder.deleteMany({"owner": userID}); + + const fileList = await utilsFile.getFileListByOwner(userID); + + if (!fileList) throw new NotFoundError("Delete All File List Not Found Error"); + + for (let i = 0; i < fileList.length; i++) { + const currentFile = fileList[i]; + + try { + + if (currentFile.metadata.thumbnailID) { + + await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}) + } + + // if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { + + // try { + // await videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)) + // } catch (e) { + // console.log("Cannot Find Transcoded Video"); + // } + + // } + + await bucket.delete(new ObjectID(currentFile._id)); + + } catch (e) { + + console.log("Could Not Remove File", currentFile.filename, currentFile._id); + } + } + } + + getFolderInfo = async(userID: string, folderID: string) => { + + let currentFolder = await utilsFolder.getFolderInfo(folderID, userID); + + if (!currentFolder) throw new NotFoundError("Folder Info Not Found Error"); + + const parentID = currentFolder.parent; + + let parentName = ""; + + if (parentID === "/") { + + parentName = "Home" + + } else { + + const parentFolder = await utilsFolder.getFolderInfo(parentID, userID); + + if (parentFolder) { + + parentName = parentFolder.name; + + } else { + + parentName = "Unknown" + } + + } + + const folderName = currentFolder.name + + currentFolder = {...currentFolder._doc, parentName, folderName} + // Must Use ._doc here, or the destucturing/spreading + // Will add a bunch of unneeded variables to the object. + + return currentFolder; + } + + getFolderSublist = async(userID: string, folderID: string) => { + + const folder = await utilsFolder.getFolderInfo(folderID, userID); + + if (!folder) throw new NotFoundError("Folder Sublist Not Found Error"); + + const subfolderList = folder.parentList; + + let folderIDList = []; + let folderNameList = []; + + for (let i = 0; i < subfolderList.length; i++) { + + const currentSubFolderID = subfolderList[i]; + + if (currentSubFolderID === "/") { + + folderIDList.push("/"); + folderNameList.push("Home") + + } else { + + const currentFolder = await utilsFolder.getFolderInfo(currentSubFolderID, userID); + + folderIDList.push(currentFolder._id); + folderNameList.push(currentFolder.name) + } + } + + folderIDList.push(folderID); + folderNameList.push(folder.name) + + return { + folderIDList, + folderNameList + } + } + + getFolderList = async(userID: string, query: any) => { + + let searchQuery = query.search || ""; + const parent = query.parent || "/"; + let sortBy = query.sortby || "DEFAULT" + sortBy = sortBySwitch(sortBy) + + if (searchQuery.length === 0) { + + const folderList = await utilsFolder.getFolderListByParent(userID, parent, sortBy); + + if (!folderList) throw new NotFoundError("Folder List Not Found Error"); + + return folderList; + + } else { + + searchQuery = new RegExp(searchQuery, 'i') + const folderList = await utilsFolder.getFolderListBySearch(userID, searchQuery, sortBy); + + if (!folderList) throw new NotFoundError("Folder List Not Found Error"); + + return folderList; + } + } + + renameFolder = async(userID: string, folderID: string, title: string) => { + + const folder = await utilsFolder.renameFolder(folderID, userID, title); + + if (!folder) throw new NotFoundError("Rename Folder Not Found"); + } + + moveFolder = async(userID: string, folderID: string, parentID: string) => { + + let parentList = ["/"]; + + if (parentID.length !== 1) { + + const parentFile = await utilsFolder.getFolderInfo(parentID, userID); + parentList = parentFile.parentList; + parentList.push(parentID); + } + + const folder = await utilsFolder.moveFolder(folderID, userID, parentID, parentList); + + if (!folder) throw new NotFoundError("Move Folder Not Found") + + const folderChilden = await utilsFolder.findAllFoldersByParent(folderID.toString(), userID); + + folderChilden.map( async(currentFolderChild) => { + + let currentFolderChildParentList = currentFolderChild.parentList; + + const indexOfFolderID = currentFolderChildParentList.indexOf(folderID.toString()); + + currentFolderChildParentList = currentFolderChildParentList.splice(indexOfFolderID); + + currentFolderChildParentList = [...parentList, ...currentFolderChildParentList]; + + currentFolderChild.parentList = currentFolderChildParentList; + + await currentFolderChild.save() + }) + + const fileChildren = await utilsFile.getFileListByParent(userID, folderID.toString()); + + fileChildren.map( async(currentFileChild) => { + + let currentFileChildParentList: string | string[] = currentFileChild.metadata.parentList; + + currentFileChildParentList = currentFileChildParentList.split(","); + + const indexOfFolderID = currentFileChildParentList.indexOf(folderID.toString()); + + currentFileChildParentList = currentFileChildParentList.splice(indexOfFolderID); + + currentFileChildParentList = [...parentList, ...currentFileChildParentList]; + + await utilsFile.moveFile(currentFileChild._id, userID, currentFileChild.metadata.parent, currentFileChildParentList.toString()) + + }) + } +} + +// const FolderService = function() { + +// this.uploadFolder = async(data) => { + +// const folder = new Folder(data); + +// await folder.save(); + +// if (!folder) throw new InternalServerError("Upload Folder Error"); + +// return folder; +// } + +// this.deleteFolder = async(userID, folderID, parentList) => { + +// let bucket = new mongoose.mongo.GridFSBucket(conn.db, { +// chunkSizeBytes: 1024 * 255 +// }); + +// const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { +// bucketName: "videos" +// }); + +// const parentListString = parentList.toString() + +// await Folder.deleteMany({"owner": userID, "parentList": { $all: parentList}}) +// await Folder.deleteMany({"owner": userID, "_id": folderID}); + +// const fileList = await utilsFile.getFileListByParent(userID, parentListString); + +// if (!fileList) throw new NotFoundError("Delete File List Not Found"); + +// for (let i = 0; i < fileList.length; i++) { + +// const currentFile = fileList[i]; + +// try { + +// if (currentFile.metadata.thumbnailID) { + +// await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}); +// } + +// if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { + +// try { +// await videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)) +// } catch (e) {console.log("Could Not Find Transcoded Video")} + +// } + +// await bucket.delete(ObjectID(currentFile._id)); + +// } catch (e) { + +// console.log("Could not delete file", currentFile.filename, currentFile._id); +// } + + +// } +// } + +// this.deleteAll = async(userID) => { + +// console.log("remove all request") + +// let bucket = new mongoose.mongo.GridFSBucket(conn.db, { +// chunkSizeBytes: 1024 * 255 +// }); + +// const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { +// bucketName: "videos" +// }); + +// await Folder.deleteMany({"owner": userID}); + +// const fileList = await utilsFile.getFileListByOwner(userID); + +// if (!fileList) throw new NotFoundError("Delete All File List Not Found Error"); + +// for (let i = 0; i < fileList.length; i++) { +// const currentFile = fileList[i]; + +// try { + +// if (currentFile.metadata.thumbnailID) { + +// await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}) +// } + +// if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { + +// try { +// await videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)) +// } catch (e) { +// console.log("Cannot Find Transcoded Video"); +// } + +// } + +// await bucket.delete(ObjectID(currentFile._id)); + +// } catch (e) { + +// console.log("Could Not Remove File", currentFile.filename, currentFile._id); +// } +// } + +// } + +// this.getFolderInfo = async(userID, folderID) => { + +// let currentFolder = await utilsFolder.getFolderInfo(folderID, userID); + +// if (!currentFolder) throw new NotFoundError("Folder Info Not Found Error"); + +// const parentID = currentFolder.parent; + +// let parentName = ""; + +// if (parentID === "/") { + +// parentName = "Home" + +// } else { + +// const parentFolder = await utilsFolder.getFolderInfo(parentID, userID); + +// if (parentFolder) { + +// parentName = parentFolder.name; + +// } else { + +// parentName = "Unknown" +// } + +// } + +// const folderName = currentFolder.name + +// currentFolder = {...currentFolder._doc, parentName, folderName} +// // Must Use ._doc here, or the destucturing/spreading +// // Will add a bunch of unneeded variables to the object. + +// return currentFolder; +// } + +// this.getFolderSublist = async(userID, folderID) => { + +// const folder = await utilsFolder.getFolderInfo(folderID, userID); + +// if (!folder) throw new NotFoundError("Folder Sublist Not Found Error"); + +// const subfolderList = folder.parentList; + +// let folderIDList = []; +// let folderNameList = []; + +// for (let i = 0; i < subfolderList.length; i++) { + +// const currentSubFolderID = subfolderList[i]; + +// if (currentSubFolderID === "/") { + +// folderIDList.push("/"); +// folderNameList.push("Home") + +// } else { + +// const currentFolder = await utilsFolder.getFolderInfo(currentSubFolderID, userID); + +// folderIDList.push(currentFolder._id); +// folderNameList.push(currentFolder.name) +// } +// } + +// folderIDList.push(folderID); +// folderNameList.push(folder.name) + +// return { +// folderIDList, +// folderNameList +// } + +// } + +// this.getFolderList = async(userID, query) => { + +// let searchQuery = query.search || ""; +// const parent = query.parent || "/"; +// let sortBy = query.sortby || "DEFAULT" +// sortBy = sortBySwitch(sortBy) + +// if (searchQuery.length === 0) { + +// const folderList = await utilsFolder.getFolderListByParent(userID, parent, sortBy); + +// if (!folderList) throw new NotFoundError("Folder List Not Found Error"); + +// return folderList; + +// } else { + +// searchQuery = new RegExp(searchQuery, 'i') +// const folderList = await utilsFolder.getFolderListBySearch(userID, searchQuery, sortBy); + +// if (!folderList) throw new NotFoundError("Folder List Not Found Error"); + +// return folderList; +// } +// } + +// this.renameFolder = async(userID, folderID, title) => { + +// const folder = await utilsFolder.renameFolder(folderID, userID, title); + +// if (!folder) throw new NotFoundError("Rename Folder Not Found"); +// } + +// this.moveFolder = async(userID, folderID, parentID) => { + +// let parentList = ["/"]; + +// if (parentID.length !== 1) { + +// const parentFile = await utilsFolder.getFolderInfo(parentID, userID); +// parentList = parentFile.parentList; +// parentList.push(parentID); +// } + +// const folder = await utilsFolder.moveFolder(folderID, userID, parentID, parentList); + +// if (!folder) throw new NotFoundError("Move Folder Not Found") + +// const folderChilden = await utilsFolder.findAllFoldersByParent(folderID.toString(), userID); + +// folderChilden.map( async(currentFolderChild) => { + +// let currentFolderChildParentList = currentFolderChild.parentList; + +// const indexOfFolderID = currentFolderChildParentList.indexOf(folderID.toString()); + +// currentFolderChildParentList = currentFolderChildParentList.splice(indexOfFolderID); + +// currentFolderChildParentList = [...parentList, ...currentFolderChildParentList]; + +// currentFolderChild.parentList = currentFolderChildParentList; + +// await currentFolderChild.save() +// }) + +// const fileChildren = await utilsFile.getFileListByParent(userID, folderID.toString()); + +// fileChildren.map( async(currentFileChild) => { + +// let currentFileChildParentList = currentFileChild.metadata.parentList; + +// currentFileChildParentList = currentFileChildParentList.split(","); + +// const indexOfFolderID = currentFileChildParentList.indexOf(folderID.toString()); + +// currentFileChildParentList = currentFileChildParentList.splice(indexOfFolderID); + +// currentFileChildParentList = [...parentList, ...currentFileChildParentList]; + +// await utilsFile.moveFile(currentFileChild._id, userID, currentFileChild.metadata.parent, currentFileChildParentList.toString()) + +// }) +// } +// } + +export default FolderService; \ No newline at end of file diff --git a/backend/services/UserService/index.ts b/backend/services/UserService/index.ts index 4e0232d..a3faeb6 100644 --- a/backend/services/UserService/index.ts +++ b/backend/services/UserService/index.ts @@ -2,8 +2,8 @@ import User, {UserInterface} from "../../models/user"; const bcrypt = require("bcrypt"); const crypto = require("crypto"); const NotFoundError = require("../../utils/NotFoundError"); -const InternalServerError = require("../../utils/InternalServerError"); -const NotAuthorizedError = require("../../utils/NotAuthorizedError"); +import InternalServerError from "../../utils/InternalServerError"; +import NotAuthorizedError from "../../utils/NotAuthorizedError"; type UserDataType = { email: string, diff --git a/backend/utils/InternalServerError.js b/backend/utils/InternalServerError.ts similarity index 55% rename from backend/utils/InternalServerError.js rename to backend/utils/InternalServerError.ts index 5556ea5..89e1441 100644 --- a/backend/utils/InternalServerError.js +++ b/backend/utils/InternalServerError.ts @@ -1,10 +1,12 @@ class InternalServerError extends Error { + + code: number; - constructor(args) { + constructor(args: any) { super(args); this.code = 500; } } -module.exports = InternalServerError; \ No newline at end of file +export default InternalServerError; \ No newline at end of file diff --git a/backend/utils/NotAuthorizedError.js b/backend/utils/NotAuthorizedError.ts similarity index 55% rename from backend/utils/NotAuthorizedError.js rename to backend/utils/NotAuthorizedError.ts index d28fd6e..d35791e 100644 --- a/backend/utils/NotAuthorizedError.js +++ b/backend/utils/NotAuthorizedError.ts @@ -1,10 +1,12 @@ class NotAuthorizedError extends Error { + + code: number; - constructor(args) { + constructor(args: any) { super(args); this.code = 401; } } -module.exports = NotAuthorizedError; \ No newline at end of file +export default NotAuthorizedError; \ No newline at end of file diff --git a/backend/utils/NotFoundError.js b/backend/utils/NotFoundError.ts similarity index 55% rename from backend/utils/NotFoundError.js rename to backend/utils/NotFoundError.ts index 128205f..4715120 100644 --- a/backend/utils/NotFoundError.js +++ b/backend/utils/NotFoundError.ts @@ -1,10 +1,12 @@ class NotFoundError extends Error { + + code: number; - constructor(args) { + constructor(args: any) { super(args); this.code = 404; } } -module.exports = NotFoundError; \ No newline at end of file +export default NotFoundError; \ No newline at end of file diff --git a/backend/utils/createError.js b/backend/utils/createError.js deleted file mode 100644 index 6e9efc1..0000000 --- a/backend/utils/createError.js +++ /dev/null @@ -1,12 +0,0 @@ -const createError = (message, code, exception) => { - - let error = new Error(message); - error.message = message - error.code = code - error.exception = exception - - throw error; - -} - -module.exports = createError; \ No newline at end of file diff --git a/backend/utils/createQuery.js b/backend/utils/createQuery.ts similarity index 75% rename from backend/utils/createQuery.js rename to backend/utils/createQuery.ts index c4f6751..98d0aed 100644 --- a/backend/utils/createQuery.js +++ b/backend/utils/createQuery.ts @@ -1,6 +1,6 @@ -const createQuery = (owner, parent,sortBy, startAt, startAtDate,searchQuery, startAtName) => { +const createQuery = (owner: string, parent: string, sortBy: string, startAt: number, startAtDate: number, searchQuery: string | RegExp, startAtName: string) => { - let query = {"metadata.owner": owner} + let query: any = {"metadata.owner": owner} if (searchQuery !== "") { @@ -38,4 +38,4 @@ const createQuery = (owner, parent,sortBy, startAt, startAtDate,searchQuery, sta } -module.exports = createQuery \ No newline at end of file +export default createQuery; \ No newline at end of file diff --git a/backend/utils/mobileCheck.js b/backend/utils/mobileCheck.ts similarity index 98% rename from backend/utils/mobileCheck.js rename to backend/utils/mobileCheck.ts index 67876d7..2072520 100644 --- a/backend/utils/mobileCheck.js +++ b/backend/utils/mobileCheck.ts @@ -1,3 +1,5 @@ +declare let window:any + const mobilecheck = () => { var check = false; (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); diff --git a/backend/utils/sortBySwitch.js b/backend/utils/sortBySwitch.ts similarity index 78% rename from backend/utils/sortBySwitch.js rename to backend/utils/sortBySwitch.ts index d0c43c3..f59316f 100644 --- a/backend/utils/sortBySwitch.js +++ b/backend/utils/sortBySwitch.ts @@ -1,4 +1,4 @@ -const sortBySwitch = (sortBy) => { +const sortBySwitch = (sortBy: string) => { switch(sortBy) { case "alp_asc": @@ -12,4 +12,4 @@ const sortBySwitch = (sortBy) => { } } -module.exports = sortBySwitch; \ No newline at end of file +export default sortBySwitch; \ No newline at end of file diff --git a/backend/utils/sortBySwitchFolder.js b/backend/utils/sortBySwitchFolder.ts similarity index 75% rename from backend/utils/sortBySwitchFolder.js rename to backend/utils/sortBySwitchFolder.ts index 314397e..b9308e9 100644 --- a/backend/utils/sortBySwitchFolder.js +++ b/backend/utils/sortBySwitchFolder.ts @@ -1,4 +1,4 @@ -const sortBySwitch = (sortBy) => { +const sortBySwitchFolder = (sortBy: string) => { switch(sortBy) { case "alp_asc": @@ -12,4 +12,4 @@ const sortBySwitch = (sortBy) => { } } -module.exports = sortBySwitch; \ No newline at end of file +export default sortBySwitchFolder; \ No newline at end of file diff --git a/package.json b/package.json index 3712115..9022a3f 100755 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "@babel/preset-react": "^7.8.3", "@babel/types": "^7.9.5", "@types/express": "^4.17.6", + "@types/jsonwebtoken": "^8.3.9", "@types/mongodb": "^3.5.5", "@types/mongoose": "^5.7.10", "@types/node": "^13.11.1", From 6706b751e22f8a3b4a5aa1556a8666e38aec0c1c Mon Sep 17 00:00:00 2001 From: subnub Date: Tue, 21 Apr 2020 03:27:06 -0400 Subject: [PATCH 016/129] The whole backend is now typescript, I still have to clean up some of it tho, and improve some types. --- backend/controllers/file.ts | 2 +- backend/controllers/fileS3.ts | 2 +- backend/controllers/fileSystem.ts | 2 +- backend/controllers/user.ts | 2 +- ...eServerUtils.js => mongooseServerUtils.ts} | 8 +-- backend/express-routers/file.ts | 2 +- backend/express-routers/folder.ts | 2 +- backend/express-routers/storage.ts | 2 +- backend/express-routers/user.ts | 2 +- backend/middleware/auth.ts | 2 +- backend/middleware/tempAuth.ts | 2 +- backend/middleware/tempAuthVideo.ts | 2 +- backend/server/{server.js => server.ts} | 54 +++++++------------ .../server/{serverStart.js => serverStart.ts} | 9 ++-- package.json | 3 ++ 15 files changed, 39 insertions(+), 57 deletions(-) rename backend/db/{mongooseServerUtils.js => mongooseServerUtils.ts} (50%) rename backend/server/{server.js => server.ts} (57%) rename backend/server/{serverStart.js => serverStart.ts} (85%) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index aa2e50c..de5b0b4 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -15,7 +15,7 @@ import {UserInterface} from "../models/user"; interface RequestType extends Request { user?: UserInterface, auth?: any, - busboy?: any, + busboy: any, } class FileController { diff --git a/backend/controllers/fileS3.ts b/backend/controllers/fileS3.ts index 690d2a7..1ea5ec7 100644 --- a/backend/controllers/fileS3.ts +++ b/backend/controllers/fileS3.ts @@ -13,7 +13,7 @@ import {UserInterface} from "../models/user"; interface RequestType extends Request { user?: UserInterface, auth?: any, - busboy?: any, + busboy: any, } class FileSystemController { diff --git a/backend/controllers/fileSystem.ts b/backend/controllers/fileSystem.ts index 01cd58d..4c9ec2c 100644 --- a/backend/controllers/fileSystem.ts +++ b/backend/controllers/fileSystem.ts @@ -13,7 +13,7 @@ import {UserInterface} from "../models/user"; interface RequestType extends Request { user?: UserInterface, auth?: any, - busboy?: any, + busboy: any, } class FileSystemController { diff --git a/backend/controllers/user.ts b/backend/controllers/user.ts index 6533b27..b93125f 100644 --- a/backend/controllers/user.ts +++ b/backend/controllers/user.ts @@ -8,7 +8,7 @@ const UserProvider = new UserService(); interface RequestType extends Request { user?: UserInterface, auth?: any, - busboy?: any, + busboy: any, encryptedToken?: any } diff --git a/backend/db/mongooseServerUtils.js b/backend/db/mongooseServerUtils.ts similarity index 50% rename from backend/db/mongooseServerUtils.js rename to backend/db/mongooseServerUtils.ts index 4a4adcf..114e7a8 100644 --- a/backend/db/mongooseServerUtils.js +++ b/backend/db/mongooseServerUtils.ts @@ -1,7 +1,7 @@ -const mongoose = require("mongoose"); -const env = require("../enviroment/env"); +import mongoose from "mongoose"; +import env from "../enviroment/env"; -mongoose.connect(env.mongoURL, { +mongoose.connect(env.mongoURL!, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true, @@ -9,4 +9,4 @@ mongoose.connect(env.mongoURL, { keepAlive: true, }) -module.exports = mongoose; \ No newline at end of file +export default mongoose; \ No newline at end of file diff --git a/backend/express-routers/file.ts b/backend/express-routers/file.ts index fe554e4..a467c5d 100644 --- a/backend/express-routers/file.ts +++ b/backend/express-routers/file.ts @@ -69,4 +69,4 @@ router.delete("/file-service/remove/token-video/:tempToken", auth, fileControlle router.delete("/file-service/remove", auth, fileController.deleteFile); -module.exports = router; \ No newline at end of file +export default router; \ No newline at end of file diff --git a/backend/express-routers/folder.ts b/backend/express-routers/folder.ts index 72a4de8..7afe61c 100644 --- a/backend/express-routers/folder.ts +++ b/backend/express-routers/folder.ts @@ -20,4 +20,4 @@ router.patch("/folder-service/rename", auth, folderController.renameFolder); router.patch("/folder-service/move", auth, folderController.moveFolder); -module.exports = router; \ No newline at end of file +export default router; \ No newline at end of file diff --git a/backend/express-routers/storage.ts b/backend/express-routers/storage.ts index 231fbec..7bc10ec 100644 --- a/backend/express-routers/storage.ts +++ b/backend/express-routers/storage.ts @@ -6,4 +6,4 @@ const storageController = new StorageController(); router.get("/storage-service/info", auth, storageController.getStorageInfo); -module.exports = router; \ No newline at end of file +export default router; \ No newline at end of file diff --git a/backend/express-routers/user.ts b/backend/express-routers/user.ts index 3ad5d1b..cd5c271 100644 --- a/backend/express-routers/user.ts +++ b/backend/express-routers/user.ts @@ -17,4 +17,4 @@ router.post("/user-service/create", userController.createUser); router.post("/user-service/change-password", auth, userController.changePassword); -module.exports = router; \ No newline at end of file +export default router; \ No newline at end of file diff --git a/backend/middleware/auth.ts b/backend/middleware/auth.ts index a2e1ac4..a7a2c3e 100644 --- a/backend/middleware/auth.ts +++ b/backend/middleware/auth.ts @@ -6,7 +6,7 @@ import {Request, Response, NextFunction} from "express"; interface RequestType extends Request { user?: UserInterface, auth?: any, - busboy?: any, + busboy: any, token?: any, encryptedToken?: any, } diff --git a/backend/middleware/tempAuth.ts b/backend/middleware/tempAuth.ts index 9a0c3eb..6e173d3 100644 --- a/backend/middleware/tempAuth.ts +++ b/backend/middleware/tempAuth.ts @@ -7,7 +7,7 @@ import {Request, Response, NextFunction} from "express"; interface RequestType extends Request { user?: UserInterface, auth?: any, - busboy?: any, + busboy: any, token?: any, encryptedTempToken?: any, } diff --git a/backend/middleware/tempAuthVideo.ts b/backend/middleware/tempAuthVideo.ts index 99e621d..07feb4d 100644 --- a/backend/middleware/tempAuthVideo.ts +++ b/backend/middleware/tempAuthVideo.ts @@ -7,7 +7,7 @@ import {Request, Response, NextFunction} from "express"; interface RequestType extends Request { user?: UserInterface, auth?: any, - busboy?: any, + busboy: any, token?: any, encryptedTempToken?: any, } diff --git a/backend/server/server.js b/backend/server/server.ts similarity index 57% rename from backend/server/server.js rename to backend/server/server.ts index 4fdc033..cd46310 100755 --- a/backend/server/server.js +++ b/backend/server/server.ts @@ -1,22 +1,22 @@ -const express = require("express"); +import express, {Request, Response} from "express"; +import path from "path"; +import userRouter from "../express-routers/user"; +import fileRouter from "../express-routers/file"; +import folderRouter from "../express-routers/folder"; +import storageRouter from "../express-routers/storage"; +import bodyParser from "body-parser"; +import https from "https"; +import fs from "fs"; +import helmet from "helmet"; +import busboy from "connect-busboy"; +import compression from "compression"; +import http from "http"; + const app = express(); -const path = require("path") const publicPath = path.join(__dirname, "..", "..", "public"); -const userRouter = require("../express-routers/user") -const fileRouter = require("../express-routers/file") -const folderRouter = require("../express-routers/folder"); -const storageRouter = require("../express-routers/storage"); -const bodyParser = require('body-parser'); -const https = require("https"); -const fs = require("fs"); -const helmet = require("helmet"); -const busboy = require("connect-busboy") -const compression = require("compression"); -const http = require("http"); - -let server; -let serverHttps; +let server: any; +let serverHttps: any; if (process.env.NODE_ENV === 'production') { @@ -34,14 +34,10 @@ if (process.env.NODE_ENV === 'production') { serverHttps = https.createServer( options, app ); } - server = http.createServer(app); - - require("../db/mongoose"); - app.use(helmet()) app.use(compression()); app.use(express.json()); @@ -61,23 +57,9 @@ const nodeMode = process.env.NODE_ENV ? "Production" : "Development/Testing"; console.log("Node Enviroment Mode:", nodeMode); -app.get("*", (req, res) => { +app.get("*", (_: Request, res: Response) => { res.sendFile(path.join(publicPath, "index.html")) }) - -if (process.env.NODE_ENV === 'production') { - - module.exports = {server, serverHttps}; - -} else { - - module.exports = server; -} - - - - - - +export default {server, serverHttps}; \ No newline at end of file diff --git a/backend/server/serverStart.js b/backend/server/serverStart.ts similarity index 85% rename from backend/server/serverStart.js rename to backend/server/serverStart.ts index 9d7963e..d5b6ddb 100644 --- a/backend/server/serverStart.js +++ b/backend/server/serverStart.ts @@ -1,12 +1,13 @@ import getKey from "../key/getKey"; +import servers from "./server"; + +const {server, serverHttps} = servers; const serverStart = async() => { await getKey(); if (process.env.NODE_ENV === 'production') { - - const {server, serverHttps} = require("./server"); server.listen(process.env.HTTP_PORT,process.env.URL, () => { console.log("Http Server Running On Port:", process.env.HTTP_PORT); @@ -17,8 +18,6 @@ const serverStart = async() => { } ); } else if (process.env.NODE_ENV === 'production-no-ssl') { - - const server = require("./server"); server.listen(process.env.HTTP_PORT,process.env.URL, () => { console.log("Http Server (No-SSL) Running On Port:", process.env.HTTP_PORT); @@ -26,8 +25,6 @@ const serverStart = async() => { } else { - const server = require("./server"); - server.listen(process.env.HTTP_PORT,process.env.URL, () => { console.log("Development Server Running On Port:", process.env.HTTP_PORT); }) diff --git a/package.json b/package.json index 9022a3f..87a9c42 100755 --- a/package.json +++ b/package.json @@ -38,7 +38,10 @@ "@babel/preset-env": "^7.8.4", "@babel/preset-react": "^7.8.3", "@babel/types": "^7.9.5", + "@types/compression": "^1.7.0", + "@types/connect-busboy": "0.0.2", "@types/express": "^4.17.6", + "@types/helmet": "0.0.45", "@types/jsonwebtoken": "^8.3.9", "@types/mongodb": "^3.5.5", "@types/mongoose": "^5.7.10", From 1fb0b350ca181030898906a0a1c125ff40606ad4 Mon Sep 17 00:00:00 2001 From: subnub Date: Thu, 30 Apr 2020 16:43:19 -0400 Subject: [PATCH 017/129] Finally seems like video streaming works correctly with encryption, now just need to improve folder deletion and cleanup the backend --- backend/controllers/fileSystem.ts | 8 +-- backend/middleware/auth.ts | 2 +- backend/middleware/tempAuth.ts | 2 +- backend/middleware/tempAuthVideo.ts | 2 +- backend/models/user.ts | 6 +- .../ChunkService/FileSystemService.ts | 42 ++++++++--- backend/services/ChunkService/MongoService.ts | 32 +++++++-- backend/services/ChunkService/S3Service.ts | 31 ++++++-- .../ChunkService/utils/awaitStreamVideo.ts | 70 +++++++++++++++++++ .../ChunkService/utils/fixEndChunkLength.ts | 6 ++ .../ChunkService/utils/fixStartChunkLength.ts | 6 ++ .../ChunkService/utils/getPrevIVFS.ts | 19 +++++ .../ChunkService/utils/getPrevIVMongo.ts | 23 ++++++ .../ChunkService/utils/getPrevIVS3.ts | 19 +++++ .../ChunkService/utils/removeTempToken.ts | 13 ++++ src/components/Homepage/HomePage.js | 2 +- src/components/MainSection/index.js | 10 +++ src/styles/components/_Header.scss | 14 +++- src/styles/components/_HomePage.scss | 20 +++++- 19 files changed, 297 insertions(+), 30 deletions(-) create mode 100644 backend/services/ChunkService/utils/awaitStreamVideo.ts create mode 100644 backend/services/ChunkService/utils/fixEndChunkLength.ts create mode 100644 backend/services/ChunkService/utils/fixStartChunkLength.ts create mode 100644 backend/services/ChunkService/utils/getPrevIVFS.ts create mode 100644 backend/services/ChunkService/utils/getPrevIVMongo.ts create mode 100644 backend/services/ChunkService/utils/getPrevIVS3.ts create mode 100644 backend/services/ChunkService/utils/removeTempToken.ts diff --git a/backend/controllers/fileSystem.ts b/backend/controllers/fileSystem.ts index 4c9ec2c..da6e0ca 100644 --- a/backend/controllers/fileSystem.ts +++ b/backend/controllers/fileSystem.ts @@ -14,6 +14,7 @@ interface RequestType extends Request { user?: UserInterface, auth?: any, busboy: any, + encryptedTempToken?: any, } class FileSystemController { @@ -314,6 +315,7 @@ class FileSystemController { try { + console.log("Incoming Video Stream Request"); const user = req.user; const cookie = req.headers.uuid as string; @@ -442,8 +444,6 @@ class FileSystemController { const user = req.user; const fileID = req.params.id; const headers = req.headers; - - console.log("stream request", req.params.id) await fileSystemService.streamVideo(user, fileID, headers, res); @@ -465,13 +465,9 @@ class FileSystemController { } try { - - console.log("download request") - const user = req.user; const fileID = req.params.id; - //await fileService.downloadFile(user, fileID, res); await fileSystemService.downloadFile(user, fileID, res); } catch (e) { diff --git a/backend/middleware/auth.ts b/backend/middleware/auth.ts index a7a2c3e..c0971ae 100644 --- a/backend/middleware/auth.ts +++ b/backend/middleware/auth.ts @@ -22,7 +22,7 @@ const auth = async(req: RequestType, res: Response, next: NextFunction) => { const token = req.header("Authorization")!.replace("Bearer ", ""); - const decoded = await jwt.verify(token, env.password!) as jwtType; + const decoded = jwt.verify(token, env.password!) as jwtType; const iv = decoded.iv; diff --git a/backend/middleware/tempAuth.ts b/backend/middleware/tempAuth.ts index 6e173d3..663aa58 100644 --- a/backend/middleware/tempAuth.ts +++ b/backend/middleware/tempAuth.ts @@ -23,7 +23,7 @@ const tempAuth = async(req: RequestType, res: Response, next: NextFunction) => { const token = req.params.tempToken; - const decoded = await jwt.verify(token, env.password!) as jwtType; + const decoded = jwt.verify(token, env.password!) as jwtType; const iv = decoded.iv; diff --git a/backend/middleware/tempAuthVideo.ts b/backend/middleware/tempAuthVideo.ts index 07feb4d..964e47c 100644 --- a/backend/middleware/tempAuthVideo.ts +++ b/backend/middleware/tempAuthVideo.ts @@ -24,7 +24,7 @@ const tempAuthVideo = async(req: RequestType, res: Response, next: NextFunction) const token = req.params.tempToken; - const decoded = await jwt.verify(token, env.password!) as jwtType; + const decoded = jwt.verify(token, env.password!) as jwtType; const iv = decoded.iv; diff --git a/backend/models/user.ts b/backend/models/user.ts index c83b15c..a6a3d94 100644 --- a/backend/models/user.ts +++ b/backend/models/user.ts @@ -267,8 +267,8 @@ userSchema.methods.generateTempAuthToken = async function() { const iv = crypto.randomBytes(16); - const user = this; - const token = jwt.sign({_id:user._id.toString(), iv}, env.password, {expiresIn:2}); + const user = this as UserInterface; + const token = jwt.sign({_id:user._id.toString(), iv}, env.password, {expiresIn: "3000ms"}); const publicKey = user.publicKey; const encryptionKey = user.getEncryptionKey(); @@ -276,6 +276,8 @@ userSchema.methods.generateTempAuthToken = async function() { user.tempTokens = user.tempTokens.concat({token: encryptedToken}); + //console.log("generate temp auth token", user); + await user.save(); return token; } diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index d4d408b..3cb156f 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -20,6 +20,10 @@ import streamToBuffer from "../../utils/streamToBuffer"; import User from "../../models/user"; import env from "../../enviroment/env"; import { removeChunksFS } from "./utils/awaitUploadStreamFS"; +import removeTempToken from "./utils/removeTempToken"; +import getPrevIVFS from "./utils/getPrevIVFS"; +import awaitStreamVideo from "./utils/awaitStreamVideo"; +import fixStartChunkLength from "./utils/fixStartChunkLength"; const dbUtilsFile = new DbUtilFile(); @@ -209,29 +213,51 @@ class FileSystemService implements ChunkInterface { let end = parts[1] ? parseInt(parts[1], 10) : fileSize-1 - const chunksize = (end-start)+1 const IV = currentFile.metadata.IV.buffer - + const chunksize = (end-start)+1 + let head = { 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, 'Accept-Ranges': 'bytes', 'Content-Length': chunksize, 'Content-Type': 'video/mp4'} - - const readStream = fs.createReadStream(currentFile.metadata.filePath!, - {start: start, - end: end}); + let currentIV = IV; + + let fixedStart = start % 16 === 0 ? start : fixStartChunkLength(start); + + if (+start === 0) { + + fixedStart = 0; + } + + const fixedEnd = currentFile.length; //end % 16 === 0 ? end + 15: (fixEndChunkLength(end) - 1) + 16; + + const differenceStart = start - fixedStart; + + if (fixedStart !== 0 && start !== 0) { + + currentIV = await getPrevIVFS(fixedStart - 16, currentFile.metadata.filePath!); + } + + const readStream = fs.createReadStream(currentFile.metadata.filePath!, { + start: fixedStart, + end: fixedEnd, + }); const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, currentIV); + + decipher.setAutoPadding(false); res.writeHead(206, head); const allStreamsToErrorCatch = [readStream, decipher]; - await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); + readStream.pipe(decipher); + + await awaitStreamVideo(start, end, differenceStart, decipher, res, allStreamsToErrorCatch); } getPublicDownload = async(fileID: string, tempToken: any, res: Response) => { diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 449afc4..3fd9633 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -22,6 +22,9 @@ import removeChunks from "../FileService/utils/removeChunks"; import getBusboyData from "./utils/getBusboyData"; import ChunkInterface from "./utils/ChunkInterface"; +import fixStartChunkLength from "./utils/fixStartChunkLength"; +import getPrevIVMongo from "./utils/getPrevIVMongo"; +import awaitStreamVideo from "./utils/awaitStreamVideo"; const conn = mongoose.connection; @@ -243,24 +246,45 @@ class MongoService implements ChunkInterface { 'Content-Length': chunksize, 'Content-Type': 'video/mp4'} + let currentIV = IV; + + let fixedStart = start % 16 === 0 ? start : fixStartChunkLength(start); + + if (+start === 0) { + + fixedStart = 0; + } + + const fixedEnd = currentFile.length; //end % 16 === 0 ? end + 15: (fixEndChunkLength(end) - 1) + 16; + + const differenceStart = start - fixedStart; + + if (fixedStart !== 0 && start !== 0) { + + currentIV = await getPrevIVMongo(fixedStart - 16, fileID); + } + const bucket = new mongoose.mongo.GridFSBucket(conn.db, { chunkSizeBytes: 1024 }); const readStream = bucket.openDownloadStream(new ObjectID(fileID), { - start: start, - end: end + start: fixedStart, + end: fixedEnd, }); const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, currentIV); + decipher.setAutoPadding(false); res.writeHead(206, head); const allStreamsToErrorCatch = [readStream, decipher]; - await awaitStream(readStream.pipe(decipher), res, allStreamsToErrorCatch); + readStream.pipe(decipher); + + await awaitStreamVideo(start, end, differenceStart, decipher, res, allStreamsToErrorCatch); } deleteFile = async(userID: string, fileID: string) => { diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index f3f5606..c82010c 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -20,6 +20,10 @@ import imageChecker from "../../utils/imageChecker"; import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; import streamToBuffer from "../../utils/streamToBuffer"; import removeChunksS3 from "../FileService/utils/removeChunksS3"; +import fixStartChunkLength from "./utils/fixStartChunkLength"; +import fixEndChunkLength from "./utils/fixEndChunkLength"; +import getPrevIVS3 from "./utils/getPrevIVS3"; +import awaitStreamVideo from "./utils/awaitStreamVideo"; import DbUtilFile from "../../db/utils/fileUtils/index"; const dbUtilsFile = new DbUtilFile(); @@ -159,20 +163,39 @@ class S3Service implements ChunkInterface { 'Content-Length': chunksize, 'Content-Type': 'video/mp4'} - const params: any = {Bucket: env.s3Bucket, Key: currentFile.metadata.s3ID!, Range: `bytes=${start}-${end}`}; + let currentIV = IV; + + let fixedStart = start % 16 === 0 ? start : fixStartChunkLength(start); + + if (+start === 0) { + + fixedStart = 0; + } + + const fixedEnd = fileSize % 16 === 0 ? fileSize : fixEndChunkLength(fileSize); //end % 16 === 0 ? end + 15: (fixEndChunkLength(end) - 1) + 16; + + const differenceStart = start - fixedStart; + + if (fixedStart !== 0 && start !== 0) { + + currentIV = await getPrevIVS3(fixedStart - 16, currentFile.metadata.s3ID!); + } + + const params: any = {Bucket: env.s3Bucket, Key: currentFile.metadata.s3ID!, Range: `bytes=${fixedStart}-${fixedEnd}`}; const s3ReadStream = s3.getObject(params).createReadStream(); const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, IV); + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, currentIV); res.writeHead(206, head); const allStreamsToErrorCatch = [s3ReadStream, decipher]; - await awaitStream(s3ReadStream.pipe(decipher), res, allStreamsToErrorCatch); - + s3ReadStream.pipe(decipher); + + await awaitStreamVideo(start, end, differenceStart, decipher, res, allStreamsToErrorCatch); } getThumbnail = async(user: UserInterface, id: string) => { diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts new file mode 100644 index 0000000..ad31154 --- /dev/null +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -0,0 +1,70 @@ +import {Response} from "express" + +const awaitStreamVideo = (start: number, end:number, differenceStart: number, + decipher: any, res: Response, streamsToErrorCatch: any[]) => { + + return new Promise((resolve, reject) => { + + let firstBytesRemoved = false; + let sizeCounter = 0; + + decipher.on("data", (data: Buffer | string) => { + + if (+start === 0 && +end === 1) { + + const dataCoverted = data.toString("hex"); + + let neededData = dataCoverted.substring(0, 4); + + const dataBack = Buffer.from(neededData, "hex"); + + res.write(dataBack); + res.flush(); + return; + } + + if (!firstBytesRemoved) { + + const dataCoverted = data.toString("hex"); + + let neededData = dataCoverted.substring(differenceStart * 2); + + const dataBack = Buffer.from(neededData, "hex"); + + firstBytesRemoved = true; + + sizeCounter += dataBack.length; + + res.write(dataBack); + res.flush(); + return; + } + + + res.write(data); + res.flush(); + sizeCounter += data.length; + }) + + decipher.on("end", () => { + res.end(); + resolve(); + }) + + streamsToErrorCatch.forEach((currentStream) => { + + currentStream.on("error", (e: Error) => { + + reject({ + message: "Await Video Stream Input Error", + code: 500, + error: e + }) + + }) + }) + + }) +} + +export default awaitStreamVideo; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/fixEndChunkLength.ts b/backend/services/ChunkService/utils/fixEndChunkLength.ts new file mode 100644 index 0000000..df87d0d --- /dev/null +++ b/backend/services/ChunkService/utils/fixEndChunkLength.ts @@ -0,0 +1,6 @@ +const fixEndChunkLength = (length: number) => { + + return Math.floor((length-1) / 16) * 16 + 16; +} + +export default fixEndChunkLength; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/fixStartChunkLength.ts b/backend/services/ChunkService/utils/fixStartChunkLength.ts new file mode 100644 index 0000000..ca34370 --- /dev/null +++ b/backend/services/ChunkService/utils/fixStartChunkLength.ts @@ -0,0 +1,6 @@ +const fixStartChunkLength = (length: number) => { + + return Math.floor((length-1) / 16) * 16 - 16; +} + +export default fixStartChunkLength; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/getPrevIVFS.ts b/backend/services/ChunkService/utils/getPrevIVFS.ts new file mode 100644 index 0000000..fbea067 --- /dev/null +++ b/backend/services/ChunkService/utils/getPrevIVFS.ts @@ -0,0 +1,19 @@ +import fs from "fs"; + +const getPrevIV = (start: number, path: string) => { + + return new Promise((resolve, reject) => { + + const stream = fs.createReadStream(path, { + start, + end: start + 15 + }) + + stream.on("data", (data) => { + + resolve(data); + }) + }) +} + +export default getPrevIV; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/getPrevIVMongo.ts b/backend/services/ChunkService/utils/getPrevIVMongo.ts new file mode 100644 index 0000000..0a47177 --- /dev/null +++ b/backend/services/ChunkService/utils/getPrevIVMongo.ts @@ -0,0 +1,23 @@ +import mongoose from "../../../db/mongoose"; +import { ObjectID } from "mongodb" +const conn = mongoose.connection; + +const getPrevIV = (start: number, fileID: string) => { + + return new Promise((resolve, reject) => { + + const bucket = new mongoose.mongo.GridFSBucket(conn.db); + + const stream = bucket.openDownloadStream(new ObjectID(fileID), { + start: start, + end: start + 16 + }); + + stream.on("data", (data) => { + + resolve(data); + }) + }) +} + +export default getPrevIV; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/getPrevIVS3.ts b/backend/services/ChunkService/utils/getPrevIVS3.ts new file mode 100644 index 0000000..3caa34b --- /dev/null +++ b/backend/services/ChunkService/utils/getPrevIVS3.ts @@ -0,0 +1,19 @@ +import s3 from "../../../db/s3"; +import env from "../../../enviroment/env"; + +const getPrevIV = (start: number, key: string) => { + + return new Promise((resolve, reject) => { + + const params: any = {Bucket: env.s3Bucket, Key: key, Range: `bytes=${start}-${start + 15}`}; + + const stream = s3.getObject(params).createReadStream(); + + stream.on("data", (data) => { + + resolve(data); + }) + }) +} + +export default getPrevIV; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/removeTempToken.ts b/backend/services/ChunkService/utils/removeTempToken.ts new file mode 100644 index 0000000..3d30d01 --- /dev/null +++ b/backend/services/ChunkService/utils/removeTempToken.ts @@ -0,0 +1,13 @@ +import { UserInterface } from "../../../models/user"; + +const removeTempToken = async(user: UserInterface, tempToken: any,) => { + + user.tempTokens = user.tempTokens.filter((filterToken) => { + + return filterToken.token !== tempToken; + }) + + await user.save(); +} + +export default removeTempToken; \ No newline at end of file diff --git a/src/components/Homepage/HomePage.js b/src/components/Homepage/HomePage.js index de3dfbb..747e7c2 100644 --- a/src/components/Homepage/HomePage.js +++ b/src/components/Homepage/HomePage.js @@ -8,7 +8,7 @@ import PhotoViewer from "../PhotoViewer" const HomePage = (props) => ( -
+
diff --git a/src/components/MainSection/index.js b/src/components/MainSection/index.js index 386219e..e64743f 100644 --- a/src/components/MainSection/index.js +++ b/src/components/MainSection/index.js @@ -74,8 +74,18 @@ class MainSectionContainer extends React.Component { document.body.appendChild(link); link.href = finalUrl; link.setAttribute('type', 'hidden'); + link.setAttribute("download", true); link.click(); + // const form = document.createElement("form"); + // form.action = finalUrl; + // form.method = "GET"; + // form.setAttribute("type", "hidden"); + + // document.body.append(form); + + // form.submit(); + }).catch((err) => { console.log(err) }) diff --git a/src/styles/components/_Header.scss b/src/styles/components/_Header.scss index 7576da9..04b5dc2 100644 --- a/src/styles/components/_Header.scss +++ b/src/styles/components/_Header.scss @@ -6,9 +6,21 @@ border-bottom: 1px solid #dadce0; justify-content: space-between; /* display: none; */ - position: absolute; + position: fixed; /* top: 0; */ width: 100%; + + @media (max-width: $desktop-breakpoint) { + text-align: center; + display: flex; + flex-direction: row; + border-bottom: 1px solid #dadce0; + justify-content: space-between; + position: initial; + width: 100%; + height: 80px; + padding: 0; + } } .header__title { diff --git a/src/styles/components/_HomePage.scss b/src/styles/components/_HomePage.scss index 549d692..50bf44c 100644 --- a/src/styles/components/_HomePage.scss +++ b/src/styles/components/_HomePage.scss @@ -23,7 +23,11 @@ overflow-x: hidden; @media (max-width: $desktop-breakpoint) { - width: 100vw; + // margin-top: 77px; + display: flex; + flex-direction: column; + overflow-x: hidden; + width: unset; } } @@ -36,12 +40,26 @@ overflow: hidden; } +.outter-wrapper { + height: 100vh; + width: 100vw; +} + .main-page { background: white; height: 100vh; width: 100vw; display: inline-flex; padding-top: 71px; + + @media (max-width: $desktop-breakpoint) { + background: #fff; + /* height: 100vh; */ + height: calc(100% - 80px); + width: 100vw; + display: inline-flex; + padding: 0; + } } From ee7f5f42d6747b100f7056cacacdf6cd823a3744 Mon Sep 17 00:00:00 2001 From: subnub Date: Thu, 30 Apr 2020 19:17:59 -0400 Subject: [PATCH 018/129] Added delete folders, and delete all to S3/Filesystem, also removed the need for serperate file controllers, now it only uses one file controller, with the chunk service passed through the constructor --- backend/controllers/file.ts | 115 +--- backend/controllers/fileS3.ts | 593 ------------------ backend/controllers/fileSystem.ts | 589 ----------------- backend/controllers/folder.ts | 16 +- backend/express-routers/file.ts | 21 +- backend/express-routers/folder.ts | 28 +- .../ChunkService/FileSystemService.ts | 72 +++ backend/services/ChunkService/MongoService.ts | 74 +++ backend/services/ChunkService/S3Service.ts | 72 +++ backend/services/FolderService/index.ts | 368 ----------- backend/services/UserService/index.ts | 71 --- 11 files changed, 289 insertions(+), 1730 deletions(-) delete mode 100644 backend/controllers/fileS3.ts delete mode 100644 backend/controllers/fileSystem.ts diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index de5b0b4..6e71547 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -1,29 +1,27 @@ import { Request, Response } from "express"; - -//const FileService = require("../services/FileService") import FileService from "../services/FileService"; +import MongoService from "../services/ChunkService/MongoService"; +import FileSystemService from "../services/ChunkService/FileSystemService"; +import S3Service from "../services/ChunkService/S3Service"; +import {UserInterface} from "../models/user"; const fileService = new FileService() - -import MongoService from "../services/ChunkService/MongoService"; -const mongoService = new MongoService(); - - -import {UserInterface} from "../models/user"; - interface RequestType extends Request { user?: UserInterface, auth?: any, busboy: any, } +type ChunkServiceType = MongoService | FileSystemService | S3Service; + class FileController { - // fileService: ; + chunkService: ChunkServiceType; - constructor() { + constructor(chunkService: ChunkServiceType) { + this.chunkService = chunkService; } getThumbnail = async(req: RequestType, res: Response) => { @@ -40,8 +38,9 @@ class FileController { const user = req.user; const id = req.params.id; - const decryptedThumbnail = await mongoService.getThumbnail(user, id); - + const decryptedThumbnail = await this.chunkService.getThumbnail(user, id); + + res.send(decryptedThumbnail); } catch (e) { @@ -65,7 +64,7 @@ class FileController { const user = req.user; const fileID = req.params.id; - await mongoService.getFullThumbnail(user, fileID, res); + await this.chunkService.getFullThumbnail(user, fileID, res); } catch (e) { const code = e.code || 500; @@ -88,7 +87,7 @@ class FileController { req.pipe(busboy); - const file = await mongoService.uploadFile(user, busboy, req); + const file = await this.chunkService.uploadFile(user, busboy, req); res.send(file); @@ -108,7 +107,7 @@ class FileController { const ID = req.params.id; const tempToken = req.params.tempToken; - await mongoService.getPublicDownload(ID, tempToken, res); + await this.chunkService.getPublicDownload(ID, tempToken, res); } catch (e) { @@ -356,83 +355,6 @@ class FileController { } } - // async transcodeVideo(req: RequestType, res: Response) { - - // if (!req.user) { - - // return; - // } - - // try { - - // console.log("transcode request", req.body.file._id) - - // const user = req.user; - // const body = req.body; - - // await fileService.transcodeVideo(user, body); - - // res.send("Finished"); - - // } catch (e) { - - // const code = e.code || 500; - // console.log(e.message, e.exception) - // return res.status(code).send(); - // } - // } - - // async removeTranscodeVideo(req: RequestType, res: Response) { - - // if (!req.user) { - - // return; - // } - - // try { - - // const fileID = req.body.id; - // const userID = req.user._id; - - // await fileService.removeTranscodeVideo(userID, fileID); - - // res.send(); - - // } catch (e) { - - // const code = e.code || 500; - - // console.log(e); - // res.status(code).send() - // } - // } - - // async streamTranscodedVideo(req: RequestType, res: Response) { - - // if (!req.auth || !req.user) { - // return; - // } - - // try { - - // console.log("stream request transcoded", req.params.id) - - // const fileID = req.params.id; - // const userID = req.user._id; - // const headers = req.headers; - - // await fileService.streamTranscodedVideo(userID, fileID, headers, res); - - // } catch (e) { - - // const code = e.code || 500; - // const message = e.message || e; - - // console.log(message, e); - // res.status(code).send(); - // } - // } - streamVideo = async(req: RequestType, res: Response) => { if (!req.auth || !req.user) { @@ -447,7 +369,7 @@ class FileController { console.log("stream request", req.params.id) - await mongoService.streamVideo(user, fileID, headers, res); + await this.chunkService.streamVideo(user, fileID, headers, res); } catch (e) { @@ -473,8 +395,7 @@ class FileController { const user = req.user; const fileID = req.params.id; - //await fileService.downloadFile(user, fileID, res); - await mongoService.downloadFile(user, fileID, res); + await this.chunkService.downloadFile(user, fileID, res); } catch (e) { @@ -578,7 +499,7 @@ class FileController { const userID = req.user._id; const fileID = req.body.id; - await mongoService.deleteFile(userID, fileID); + await this.chunkService.deleteFile(userID, fileID); res.send() diff --git a/backend/controllers/fileS3.ts b/backend/controllers/fileS3.ts deleted file mode 100644 index 1ea5ec7..0000000 --- a/backend/controllers/fileS3.ts +++ /dev/null @@ -1,593 +0,0 @@ -import { Request, Response } from "express"; - -//const FileService = require("../services/FileService") -import FileService from "../services/FileService"; - -const fileService = new FileService() - -import S3FileService from "../services/ChunkService/S3Service"; -const s3FileService = new S3FileService(); - -import {UserInterface} from "../models/user"; - -interface RequestType extends Request { - user?: UserInterface, - auth?: any, - busboy: any, -} - -class FileSystemController { - - // fileService: ; - - constructor() { - - } - - getThumbnail = async(req: RequestType, res: Response) => { - - - if (!req.user) { - - return; - } - - try { - - - const user = req.user; - const id = req.params.id; - - const decryptedThumbnail = await s3FileService.getThumbnail(user, id); - - res.send(decryptedThumbnail); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send(); - } - - } - - getFullThumbnail = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const user = req.user; - const fileID = req.params.id; - - await s3FileService.getFullThumbnail(user, fileID, res); - - } catch (e) { - const code = e.code || 500; - console.log(e.message, e.exception) - return res.status(code).send(); - } - } - - uploadFile = async(req: RequestType, res: Response) => { - - if (!req.user) { - - return - } - - try { - - const user = req.user; - const busboy = req.busboy; - - req.pipe(busboy); - - const file = await s3FileService.uploadFile(user, busboy, req); - - res.send(file); - - console.log("file uploaded"); - - } catch (e) { - const code = e.code || 500; - console.log(e.message, e.exception) - return res.status(code).send(); - } - } - - getPublicDownload = async(req: RequestType, res: Response) => { - - try { - - const ID = req.params.id; - const tempToken = req.params.tempToken; - - await s3FileService.getPublicDownload(ID, tempToken, res); - - } catch (e) { - - const code = e.code || 500; - const message = e.message || e; - - console.log(message, e); - res.status(code).send(); - } - } - - removeLink = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const id = req.params.id; - const userID = req.user._id; - - await fileService.removeLink(userID, id) - - res.send(); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send(); - } - - } - - makePublic = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const fileID = req.params.id; - const user = req.user; - - const token = await fileService.makePublic(user, fileID); - - res.send(token); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send(); - } - } - - getPublicInfo = async(req: RequestType, res: Response) => { - - try { - - const id = req.params.id; - const tempToken = req.params.tempToken; - - const file = await fileService.getPublicInfo(id, tempToken); - - res.send(file); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - makeOneTimePublic = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const id = req.params.id; - const userID = req.user._id; - - const token = await fileService.makeOneTimePublic(userID, id); - - res.send(token); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - - } - - getFileInfo = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const fileID = req.params.id; - const userID = req.user._id; - - const file = await fileService.getFileInfo(userID, fileID); - - res.send(file); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - getQuickList = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const userID = req.user._id; - - const quickList = await fileService.getQuickList(userID); - - res.send(quickList); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - getList = async(req: RequestType, res: Response) => { - - if (!req.user) { - return - } - - try { - - const query = req.query; - const userID = req.user._id; - - const fileList = await fileService.getList(userID, query); - - res.send(fileList); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - getDownloadToken = async(req: RequestType, res: Response) => { - - if (!req.user) { - return - } - - try { - - const user = req.user; - - const tempToken = await fileService.getDownloadToken(user); - - res.send({tempToken}); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - getDownloadTokenVideo = async(req: RequestType, res: Response) => { - - if (!req.user) { - return - } - - try { - - const user = req.user; - const cookie = req.headers.uuid as string; - - const tempToken = await fileService.getDownloadTokenVideo(user, cookie); - - res.send({tempToken}); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - removeTempToken = async(req: RequestType, res: Response) => { - - if (!req.user) { - return - } - - try { - - const user = req.user - const tempToken = req.params.tempToken; - - await fileService.removeTempToken(user, tempToken); - - res.send(); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - // async transcodeVideo(req: RequestType, res: Response) { - - // if (!req.user) { - - // return; - // } - - // try { - - // console.log("transcode request", req.body.file._id) - - // const user = req.user; - // const body = req.body; - - // await fileService.transcodeVideo(user, body); - - // res.send("Finished"); - - // } catch (e) { - - // const code = e.code || 500; - // console.log(e.message, e.exception) - // return res.status(code).send(); - // } - // } - - // async removeTranscodeVideo(req: RequestType, res: Response) { - - // if (!req.user) { - - // return; - // } - - // try { - - // const fileID = req.body.id; - // const userID = req.user._id; - - // await fileService.removeTranscodeVideo(userID, fileID); - - // res.send(); - - // } catch (e) { - - // const code = e.code || 500; - - // console.log(e); - // res.status(code).send() - // } - // } - - // async streamTranscodedVideo(req: RequestType, res: Response) { - - // if (!req.auth || !req.user) { - // return; - // } - - // try { - - // console.log("stream request transcoded", req.params.id) - - // const fileID = req.params.id; - // const userID = req.user._id; - // const headers = req.headers; - - // await fileService.streamTranscodedVideo(userID, fileID, headers, res); - - // } catch (e) { - - // const code = e.code || 500; - // const message = e.message || e; - - // console.log(message, e); - // res.status(code).send(); - // } - // } - - streamVideo = async(req: RequestType, res: Response) => { - - if (!req.auth || !req.user) { - return; - } - - try { - - const user = req.user; - const fileID = req.params.id; - const headers = req.headers; - - console.log("stream request", req.params.id) - - await s3FileService.streamVideo(user, fileID, headers, res); - - } catch (e) { - - const code = e.code || 500; - const message = e.message || e; - - console.log(message, e); - res.status(code).send(); - } - - } - - downloadFile = async(req: RequestType, res: Response) => { - - if (!req.auth || !req.user) { - return; - } - - try { - - console.log("download request") - - const user = req.user; - const fileID = req.params.id; - - //await fileService.downloadFile(user, fileID, res); - await s3FileService.downloadFile(user, fileID, res); - - } catch (e) { - - const code = e.code || 500; - const message = e.message || e; - - console.log(message, e); - res.status(code).send(); - } - } - - getSuggestedList = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const userID = req.user._id; - let searchQuery = req.query.search || ""; - - const {fileList, folderList} = await fileService.getSuggestedList(userID, searchQuery); - - return res.send({folderList, fileList}) - - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - renameFile = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const fileID = req.body.id; - const title = req.body.title - const userID = req.user._id; - - await fileService.renameFile(userID, fileID, title) - - res.send(); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - - } - - moveFile = async(req: RequestType, res: Response) => { - - console.log("move request"); - - if (!req.user) { - return; - } - - try { - - const fileID = req.body.id; - const userID = req.user._id; - const parentID = req.body.parent; - - console.log(fileID, userID, parentID); - - await fileService.moveFile(userID, fileID, parentID); - - res.send(); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - - } - - deleteFile = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const userID = req.user._id; - const fileID = req.body.id; - - await s3FileService.deleteFile(userID, fileID); - - res.send() - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } -} - -export default FileSystemController; diff --git a/backend/controllers/fileSystem.ts b/backend/controllers/fileSystem.ts deleted file mode 100644 index da6e0ca..0000000 --- a/backend/controllers/fileSystem.ts +++ /dev/null @@ -1,589 +0,0 @@ -import { Request, Response } from "express"; - -//const FileService = require("../services/FileService") -import FileService from "../services/FileService"; - -const fileService = new FileService() - -import FileSystemService from "../services/ChunkService/FileSystemService"; -const fileSystemService = new FileSystemService(); - -import {UserInterface} from "../models/user"; - -interface RequestType extends Request { - user?: UserInterface, - auth?: any, - busboy: any, - encryptedTempToken?: any, -} - -class FileSystemController { - - // fileService: ; - - constructor() { - - } - - getThumbnail = async(req: RequestType, res: Response) => { - - - if (!req.user) { - - return; - } - - try { - - - const user = req.user; - const id = req.params.id; - - const decryptedThumbnail = await fileSystemService.getThumbnail(user, id); - - res.send(decryptedThumbnail); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send(); - } - - } - - getFullThumbnail = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const user = req.user; - const fileID = req.params.id; - - await fileSystemService.getFullThumbnail(user, fileID, res); - - } catch (e) { - const code = e.code || 500; - console.log(e.message, e.exception) - return res.status(code).send(); - } - } - - uploadFile = async(req: RequestType, res: Response) => { - - if (!req.user) { - - return - } - - try { - - const user = req.user; - const busboy = req.busboy; - - req.pipe(busboy); - - const file = await fileSystemService.uploadFile(user, busboy, req); - - res.send(file); - - console.log("file uploaded"); - - } catch (e) { - const code = e.code || 500; - console.log(e.message, e.exception) - return res.status(code).send(); - } - } - - getPublicDownload = async(req: RequestType, res: Response) => { - - try { - - const ID = req.params.id; - const tempToken = req.params.tempToken; - - await fileSystemService.getPublicDownload(ID, tempToken, res); - - } catch (e) { - - const code = e.code || 500; - const message = e.message || e; - - console.log(message, e); - res.status(code).send(); - } - } - - removeLink = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const id = req.params.id; - const userID = req.user._id; - - await fileService.removeLink(userID, id) - - res.send(); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send(); - } - - } - - makePublic = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const fileID = req.params.id; - const user = req.user; - - const token = await fileService.makePublic(user, fileID); - - res.send(token); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send(); - } - } - - getPublicInfo = async(req: RequestType, res: Response) => { - - try { - - const id = req.params.id; - const tempToken = req.params.tempToken; - - const file = await fileService.getPublicInfo(id, tempToken); - - res.send(file); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - makeOneTimePublic = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const id = req.params.id; - const userID = req.user._id; - - const token = await fileService.makeOneTimePublic(userID, id); - - res.send(token); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - - } - - getFileInfo = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const fileID = req.params.id; - const userID = req.user._id; - - const file = await fileService.getFileInfo(userID, fileID); - - res.send(file); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - getQuickList = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const userID = req.user._id; - - const quickList = await fileService.getQuickList(userID); - - res.send(quickList); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - getList = async(req: RequestType, res: Response) => { - - if (!req.user) { - return - } - - try { - - const query = req.query; - const userID = req.user._id; - - const fileList = await fileService.getList(userID, query); - - res.send(fileList); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - getDownloadToken = async(req: RequestType, res: Response) => { - - if (!req.user) { - return - } - - try { - - const user = req.user; - - const tempToken = await fileService.getDownloadToken(user); - - res.send({tempToken}); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - getDownloadTokenVideo = async(req: RequestType, res: Response) => { - - if (!req.user) { - return - } - - try { - - console.log("Incoming Video Stream Request"); - const user = req.user; - const cookie = req.headers.uuid as string; - - const tempToken = await fileService.getDownloadTokenVideo(user, cookie); - - res.send({tempToken}); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - removeTempToken = async(req: RequestType, res: Response) => { - - if (!req.user) { - return - } - - try { - - const user = req.user - const tempToken = req.params.tempToken; - - await fileService.removeTempToken(user, tempToken); - - res.send(); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - // async transcodeVideo(req: RequestType, res: Response) { - - // if (!req.user) { - - // return; - // } - - // try { - - // console.log("transcode request", req.body.file._id) - - // const user = req.user; - // const body = req.body; - - // await fileService.transcodeVideo(user, body); - - // res.send("Finished"); - - // } catch (e) { - - // const code = e.code || 500; - // console.log(e.message, e.exception) - // return res.status(code).send(); - // } - // } - - // async removeTranscodeVideo(req: RequestType, res: Response) { - - // if (!req.user) { - - // return; - // } - - // try { - - // const fileID = req.body.id; - // const userID = req.user._id; - - // await fileService.removeTranscodeVideo(userID, fileID); - - // res.send(); - - // } catch (e) { - - // const code = e.code || 500; - - // console.log(e); - // res.status(code).send() - // } - // } - - // async streamTranscodedVideo(req: RequestType, res: Response) { - - // if (!req.auth || !req.user) { - // return; - // } - - // try { - - // console.log("stream request transcoded", req.params.id) - - // const fileID = req.params.id; - // const userID = req.user._id; - // const headers = req.headers; - - // await fileService.streamTranscodedVideo(userID, fileID, headers, res); - - // } catch (e) { - - // const code = e.code || 500; - // const message = e.message || e; - - // console.log(message, e); - // res.status(code).send(); - // } - // } - - streamVideo = async(req: RequestType, res: Response) => { - - if (!req.auth || !req.user) { - return; - } - - try { - - const user = req.user; - const fileID = req.params.id; - const headers = req.headers; - - await fileSystemService.streamVideo(user, fileID, headers, res); - - } catch (e) { - - const code = e.code || 500; - const message = e.message || e; - - console.log(message, e); - res.status(code).send(); - } - - } - - downloadFile = async(req: RequestType, res: Response) => { - - if (!req.auth || !req.user) { - return; - } - - try { - const user = req.user; - const fileID = req.params.id; - - await fileSystemService.downloadFile(user, fileID, res); - - } catch (e) { - - const code = e.code || 500; - const message = e.message || e; - - console.log(message, e); - res.status(code).send(); - } - } - - getSuggestedList = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const userID = req.user._id; - let searchQuery = req.query.search || ""; - - const {fileList, folderList} = await fileService.getSuggestedList(userID, searchQuery); - - return res.send({folderList, fileList}) - - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } - - renameFile = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const fileID = req.body.id; - const title = req.body.title - const userID = req.user._id; - - await fileService.renameFile(userID, fileID, title) - - res.send(); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - - } - - moveFile = async(req: RequestType, res: Response) => { - - console.log("move request"); - - if (!req.user) { - return; - } - - try { - - const fileID = req.body.id; - const userID = req.user._id; - const parentID = req.body.parent; - - console.log(fileID, userID, parentID); - - await fileService.moveFile(userID, fileID, parentID); - - res.send(); - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - - } - - deleteFile = async(req: RequestType, res: Response) => { - - if (!req.user) { - return; - } - - try { - - const userID = req.user._id; - const fileID = req.body.id; - - await fileSystemService.deleteFile(userID, fileID); - - res.send() - - } catch (e) { - - const code = e.code || 500; - - console.log(e); - res.status(code).send() - } - } -} - -export default FileSystemController; diff --git a/backend/controllers/folder.ts b/backend/controllers/folder.ts index 33961de..530f67f 100644 --- a/backend/controllers/folder.ts +++ b/backend/controllers/folder.ts @@ -2,16 +2,24 @@ import FolderService from "../services/FolderService"; const folderService = new FolderService(); import { Request, Response } from "express"; import {UserInterface} from "../models/user"; +import MongoService from "../services/ChunkService/MongoService"; +import FileSystemService from "../services/ChunkService/FileSystemService"; +import S3Service from "../services/ChunkService/S3Service"; interface RequestType extends Request { user?: UserInterface, auth?: any, } +type ChunkServiceType = MongoService | FileSystemService | S3Service; + class FolderController { - constructor() { + chunkService: ChunkServiceType; + constructor(chunkService: ChunkServiceType) { + + this.chunkService = chunkService; } uploadFolder = async(req: RequestType, res: Response) => { @@ -51,7 +59,7 @@ class FolderController { const folderID = req.body.id; const parentList = req.body.parentList - await folderService.deleteFolder(userID, folderID, parentList); + await this.chunkService.deleteFolder(userID, folderID, parentList); res.send(); @@ -75,7 +83,7 @@ class FolderController { const userID = req.user._id; - await folderService.deleteAll(userID); + await this.chunkService.deleteAll(userID); res.send(); @@ -215,4 +223,4 @@ class FolderController { } } -module.exports = FolderController; \ No newline at end of file +export default FolderController; \ No newline at end of file diff --git a/backend/express-routers/file.ts b/backend/express-routers/file.ts index a467c5d..596912e 100644 --- a/backend/express-routers/file.ts +++ b/backend/express-routers/file.ts @@ -7,18 +7,27 @@ import tempAuth from "../middleware/tempAuth"; import tempAuthVideo from "../middleware/tempAuthVideo"; import FileController from "../controllers/file"; -import FsFileController from "../controllers/fileSystem"; -import S3FileController from "../controllers/fileS3"; import env from "../enviroment/env"; +import MongoService from "../services/ChunkService/MongoService"; +import FileSystemService from "../services/ChunkService/FileSystemService"; +import S3Service from "../services/ChunkService/S3Service"; -let fileController: FileController | FsFileController | S3FileController; +let fileController: FileController; if (env.dbType === "mongo") { - fileController = new FileController(); + + const mongoService = new MongoService(); + fileController = new FileController(mongoService); + } else if (env.dbType === "fs") { - fileController = new FsFileController(); + + const fileSystemService = new FileSystemService(); + fileController = new FileController(fileSystemService); + } else { - fileController = new S3FileController(); + + const s3Service = new S3Service(); + fileController = new FileController(s3Service); } //const fileController = new FileController() diff --git a/backend/express-routers/folder.ts b/backend/express-routers/folder.ts index 7afe61c..b775c22 100644 --- a/backend/express-routers/folder.ts +++ b/backend/express-routers/folder.ts @@ -1,8 +1,32 @@ import {Router} from "express"; const router = Router(); import auth from "../middleware/auth"; -const FolderController = require("../controllers/folder"); -const folderController = new FolderController(); +import env from "../enviroment/env"; +import MongoService from "../services/ChunkService/MongoService"; +import FileSystemService from "../services/ChunkService/FileSystemService"; +import S3Service from "../services/ChunkService/S3Service"; +import FolderController from "../controllers/folder"; + +let folderController: FolderController; + +if (env.dbType === "mongo") { + + const mongoService = new MongoService(); + folderController = new FolderController(mongoService); + +} else if (env.dbType === "fs") { + + const fileSystemService = new FileSystemService(); + folderController = new FolderController(fileSystemService); + +} else { + + const s3Service = new S3Service(); + folderController = new FolderController(s3Service); +} + +//import FolderController from "../controllers/folder"; +//const folderController = new FolderController(); router.post("/folder-service/upload", auth, folderController.uploadFolder); diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index 3cb156f..6fd8be4 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -24,6 +24,7 @@ import removeTempToken from "./utils/removeTempToken"; import getPrevIVFS from "./utils/getPrevIVFS"; import awaitStreamVideo from "./utils/awaitStreamVideo"; import fixStartChunkLength from "./utils/fixStartChunkLength"; +import Folder from "../../models/folder"; const dbUtilsFile = new DbUtilFile(); @@ -314,6 +315,77 @@ class FileSystemService implements ChunkInterface { await removeChunksFS(file.metadata.filePath!); await File.deleteOne({_id: file._id}); } + + deleteFolder = async(userID: string, folderID: string, parentList: string[]) => { + + const parentListString = parentList.toString() + + await Folder.deleteMany({"owner": userID, "parentList": { $all: parentList}}) + await Folder.deleteMany({"owner": userID, "_id": folderID}); + + const fileList = await dbUtilsFile.getFileListByParent(userID, parentListString); + + if (!fileList) throw new NotFoundError("Delete File List Not Found"); + + for (let i = 0; i < fileList.length; i++) { + + const currentFile = fileList[i]; + + try { + + if (currentFile.metadata.thumbnailID) { + + const thumbnail = await Thumbnail.findById(currentFile.metadata.thumbnailID) as ThumbnailInterface; + const thumbnailPath = thumbnail.path!; + await removeChunksFS(thumbnailPath); + + await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}); + } + + await removeChunksFS(currentFile.metadata.filePath!); + await File.deleteOne({_id: currentFile._id}); + + } catch (e) { + + console.log("Could not delete file", currentFile.filename, currentFile._id); + } + + } + } + + deleteAll = async(userID: string) => { + + console.log("remove all request") + + await Folder.deleteMany({"owner": userID}); + + const fileList = await dbUtilsFile.getFileListByOwner(userID); + + if (!fileList) throw new NotFoundError("Delete All File List Not Found Error"); + + for (let i = 0; i < fileList.length; i++) { + const currentFile = fileList[i]; + + try { + + if (currentFile.metadata.thumbnailID) { + + const thumbnail = await Thumbnail.findById(currentFile.metadata.thumbnailID) as ThumbnailInterface; + const thumbnailPath = thumbnail.path!; + await removeChunksFS(thumbnailPath); + + await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}); + } + + await removeChunksFS(currentFile.metadata.filePath!); + await File.deleteOne({_id: currentFile._id}); + + } catch (e) { + + console.log("Could Not Remove File", currentFile.filename, currentFile._id); + } + } + } } export default FileSystemService; \ No newline at end of file diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 3fd9633..e888e6d 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -16,6 +16,7 @@ import awaitStream from "./utils/awaitStream"; import awaitUploadStream from "./utils/awaitUploadStream"; import User, { UserInterface } from "../../models/user"; +import Folder from "../../models/folder"; import { FileInterface } from "../../models/file"; import { Stream } from "stream"; import removeChunks from "../FileService/utils/removeChunks"; @@ -312,6 +313,79 @@ class MongoService implements ChunkInterface { await bucket.delete(new ObjectID(fileID)); } + + deleteFolder = async(userID: string, folderID: string, parentList: string[]) => { + + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255 + }); + + const parentListString = parentList.toString() + + await Folder.deleteMany({"owner": userID, "parentList": { $all: parentList}}) + await Folder.deleteMany({"owner": userID, "_id": folderID}); + + const fileList = await dbUtilsFile.getFileListByParent(userID, parentListString); + + if (!fileList) throw new NotFoundError("Delete File List Not Found"); + + for (let i = 0; i < fileList.length; i++) { + + const currentFile = fileList[i]; + + try { + + if (currentFile.metadata.thumbnailID) { + + await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}); + } + + await bucket.delete(new ObjectID(currentFile._id)); + + } catch (e) { + + console.log("Could not delete file", currentFile.filename, currentFile._id); + } + + } + } + + deleteAll = async(userID: string) => { + + console.log("remove all request") + + let bucket = new mongoose.mongo.GridFSBucket(conn.db, { + chunkSizeBytes: 1024 * 255 + }); + + const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { + bucketName: "videos" + }); + + await Folder.deleteMany({"owner": userID}); + + const fileList = await dbUtilsFile.getFileListByOwner(userID); + + if (!fileList) throw new NotFoundError("Delete All File List Not Found Error"); + + for (let i = 0; i < fileList.length; i++) { + const currentFile = fileList[i]; + + try { + + if (currentFile.metadata.thumbnailID) { + + await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}) + } + + await bucket.delete(new ObjectID(currentFile._id)); + + } catch (e) { + + console.log("Could Not Remove File", currentFile.filename, currentFile._id); + } + } + } } export default MongoService; \ No newline at end of file diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index c82010c..928accd 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -24,6 +24,7 @@ import fixStartChunkLength from "./utils/fixStartChunkLength"; import fixEndChunkLength from "./utils/fixEndChunkLength"; import getPrevIVS3 from "./utils/getPrevIVS3"; import awaitStreamVideo from "./utils/awaitStreamVideo"; +import Folder from "../../models/folder"; import DbUtilFile from "../../db/utils/fileUtils/index"; const dbUtilsFile = new DbUtilFile(); @@ -316,6 +317,77 @@ class S3Service implements ChunkInterface { await removeChunksS3(params); await File.deleteOne({_id: file._id}); } + + deleteFolder = async(userID: string, folderID: string, parentList: string[]) => { + + const parentListString = parentList.toString() + + await Folder.deleteMany({"owner": userID, "parentList": { $all: parentList}}) + await Folder.deleteMany({"owner": userID, "_id": folderID}); + + const fileList = await dbUtilsFile.getFileListByParent(userID, parentListString); + + if (!fileList) throw new NotFoundError("Delete File List Not Found"); + + for (let i = 0; i < fileList.length; i++) { + + const currentFile = fileList[i]; + + try { + + if (currentFile.metadata.thumbnailID) { + + const thumbnail = await Thumbnail.findById(currentFile.metadata.thumbnailID) as ThumbnailInterface; + const paramsThumbnail: any = {Bucket: env.s3Bucket, Key: thumbnail.s3ID!}; + await removeChunksS3(paramsThumbnail); + await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}); + } + + const params: any = {Bucket: env.s3Bucket, Key: currentFile.metadata.s3ID!}; + await removeChunksS3(params); + await File.deleteOne({_id: currentFile._id}); + + } catch (e) { + + console.log("Could not delete file", currentFile.filename, currentFile._id); + } + + } + } + + deleteAll = async(userID: string) => { + + console.log("remove all request") + + await Folder.deleteMany({"owner": userID}); + + const fileList = await dbUtilsFile.getFileListByOwner(userID); + + if (!fileList) throw new NotFoundError("Delete All File List Not Found Error"); + + for (let i = 0; i < fileList.length; i++) { + const currentFile = fileList[i]; + + try { + + if (currentFile.metadata.thumbnailID) { + + const thumbnail = await Thumbnail.findById(currentFile.metadata.thumbnailID) as ThumbnailInterface; + const paramsThumbnail: any = {Bucket: env.s3Bucket, Key: thumbnail.s3ID!}; + await removeChunksS3(paramsThumbnail); + await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}); + } + + const params: any = {Bucket: env.s3Bucket, Key: currentFile.metadata.s3ID!}; + await removeChunksS3(params); + await File.deleteOne({_id: currentFile._id}); + + } catch (e) { + + console.log("Could Not Remove File", currentFile.filename, currentFile._id); + } + } + } } export default S3Service; \ No newline at end of file diff --git a/backend/services/FolderService/index.ts b/backend/services/FolderService/index.ts index 69de743..6f72758 100644 --- a/backend/services/FolderService/index.ts +++ b/backend/services/FolderService/index.ts @@ -25,102 +25,6 @@ class FolderService { return folder; } - deleteFolder = async(userID: string, folderID: string, parentList: string[]) => { - - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); - - const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos" - }); - - const parentListString = parentList.toString() - - await Folder.deleteMany({"owner": userID, "parentList": { $all: parentList}}) - await Folder.deleteMany({"owner": userID, "_id": folderID}); - - const fileList = await utilsFile.getFileListByParent(userID, parentListString); - - if (!fileList) throw new NotFoundError("Delete File List Not Found"); - - for (let i = 0; i < fileList.length; i++) { - - const currentFile = fileList[i]; - - try { - - if (currentFile.metadata.thumbnailID) { - - await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}); - } - - // if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { - - // try { - // await videoBucket.delete(new ObjectID(currentFile.metadata.transcodedID)) - // } catch (e) {console.log("Could Not Find Transcoded Video")} - - // } - - await bucket.delete(new ObjectID(currentFile._id)); - - } catch (e) { - - console.log("Could not delete file", currentFile.filename, currentFile._id); - } - - - } - } - - deleteAll = async(userID: string) => { - - console.log("remove all request") - - let bucket = new mongoose.mongo.GridFSBucket(conn.db, { - chunkSizeBytes: 1024 * 255 - }); - - const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos" - }); - - await Folder.deleteMany({"owner": userID}); - - const fileList = await utilsFile.getFileListByOwner(userID); - - if (!fileList) throw new NotFoundError("Delete All File List Not Found Error"); - - for (let i = 0; i < fileList.length; i++) { - const currentFile = fileList[i]; - - try { - - if (currentFile.metadata.thumbnailID) { - - await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}) - } - - // if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { - - // try { - // await videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)) - // } catch (e) { - // console.log("Cannot Find Transcoded Video"); - // } - - // } - - await bucket.delete(new ObjectID(currentFile._id)); - - } catch (e) { - - console.log("Could Not Remove File", currentFile.filename, currentFile._id); - } - } - } - getFolderInfo = async(userID: string, folderID: string) => { let currentFolder = await utilsFolder.getFolderInfo(folderID, userID); @@ -282,276 +186,4 @@ class FolderService { } } -// const FolderService = function() { - -// this.uploadFolder = async(data) => { - -// const folder = new Folder(data); - -// await folder.save(); - -// if (!folder) throw new InternalServerError("Upload Folder Error"); - -// return folder; -// } - -// this.deleteFolder = async(userID, folderID, parentList) => { - -// let bucket = new mongoose.mongo.GridFSBucket(conn.db, { -// chunkSizeBytes: 1024 * 255 -// }); - -// const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { -// bucketName: "videos" -// }); - -// const parentListString = parentList.toString() - -// await Folder.deleteMany({"owner": userID, "parentList": { $all: parentList}}) -// await Folder.deleteMany({"owner": userID, "_id": folderID}); - -// const fileList = await utilsFile.getFileListByParent(userID, parentListString); - -// if (!fileList) throw new NotFoundError("Delete File List Not Found"); - -// for (let i = 0; i < fileList.length; i++) { - -// const currentFile = fileList[i]; - -// try { - -// if (currentFile.metadata.thumbnailID) { - -// await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}); -// } - -// if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { - -// try { -// await videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)) -// } catch (e) {console.log("Could Not Find Transcoded Video")} - -// } - -// await bucket.delete(ObjectID(currentFile._id)); - -// } catch (e) { - -// console.log("Could not delete file", currentFile.filename, currentFile._id); -// } - - -// } -// } - -// this.deleteAll = async(userID) => { - -// console.log("remove all request") - -// let bucket = new mongoose.mongo.GridFSBucket(conn.db, { -// chunkSizeBytes: 1024 * 255 -// }); - -// const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { -// bucketName: "videos" -// }); - -// await Folder.deleteMany({"owner": userID}); - -// const fileList = await utilsFile.getFileListByOwner(userID); - -// if (!fileList) throw new NotFoundError("Delete All File List Not Found Error"); - -// for (let i = 0; i < fileList.length; i++) { -// const currentFile = fileList[i]; - -// try { - -// if (currentFile.metadata.thumbnailID) { - -// await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}) -// } - -// if (currentFile.metadata.isVideo && currentFile.metadata.transcoded) { - -// try { -// await videoBucket.delete(ObjectID(currentFile.metadata.transcodedID)) -// } catch (e) { -// console.log("Cannot Find Transcoded Video"); -// } - -// } - -// await bucket.delete(ObjectID(currentFile._id)); - -// } catch (e) { - -// console.log("Could Not Remove File", currentFile.filename, currentFile._id); -// } -// } - -// } - -// this.getFolderInfo = async(userID, folderID) => { - -// let currentFolder = await utilsFolder.getFolderInfo(folderID, userID); - -// if (!currentFolder) throw new NotFoundError("Folder Info Not Found Error"); - -// const parentID = currentFolder.parent; - -// let parentName = ""; - -// if (parentID === "/") { - -// parentName = "Home" - -// } else { - -// const parentFolder = await utilsFolder.getFolderInfo(parentID, userID); - -// if (parentFolder) { - -// parentName = parentFolder.name; - -// } else { - -// parentName = "Unknown" -// } - -// } - -// const folderName = currentFolder.name - -// currentFolder = {...currentFolder._doc, parentName, folderName} -// // Must Use ._doc here, or the destucturing/spreading -// // Will add a bunch of unneeded variables to the object. - -// return currentFolder; -// } - -// this.getFolderSublist = async(userID, folderID) => { - -// const folder = await utilsFolder.getFolderInfo(folderID, userID); - -// if (!folder) throw new NotFoundError("Folder Sublist Not Found Error"); - -// const subfolderList = folder.parentList; - -// let folderIDList = []; -// let folderNameList = []; - -// for (let i = 0; i < subfolderList.length; i++) { - -// const currentSubFolderID = subfolderList[i]; - -// if (currentSubFolderID === "/") { - -// folderIDList.push("/"); -// folderNameList.push("Home") - -// } else { - -// const currentFolder = await utilsFolder.getFolderInfo(currentSubFolderID, userID); - -// folderIDList.push(currentFolder._id); -// folderNameList.push(currentFolder.name) -// } -// } - -// folderIDList.push(folderID); -// folderNameList.push(folder.name) - -// return { -// folderIDList, -// folderNameList -// } - -// } - -// this.getFolderList = async(userID, query) => { - -// let searchQuery = query.search || ""; -// const parent = query.parent || "/"; -// let sortBy = query.sortby || "DEFAULT" -// sortBy = sortBySwitch(sortBy) - -// if (searchQuery.length === 0) { - -// const folderList = await utilsFolder.getFolderListByParent(userID, parent, sortBy); - -// if (!folderList) throw new NotFoundError("Folder List Not Found Error"); - -// return folderList; - -// } else { - -// searchQuery = new RegExp(searchQuery, 'i') -// const folderList = await utilsFolder.getFolderListBySearch(userID, searchQuery, sortBy); - -// if (!folderList) throw new NotFoundError("Folder List Not Found Error"); - -// return folderList; -// } -// } - -// this.renameFolder = async(userID, folderID, title) => { - -// const folder = await utilsFolder.renameFolder(folderID, userID, title); - -// if (!folder) throw new NotFoundError("Rename Folder Not Found"); -// } - -// this.moveFolder = async(userID, folderID, parentID) => { - -// let parentList = ["/"]; - -// if (parentID.length !== 1) { - -// const parentFile = await utilsFolder.getFolderInfo(parentID, userID); -// parentList = parentFile.parentList; -// parentList.push(parentID); -// } - -// const folder = await utilsFolder.moveFolder(folderID, userID, parentID, parentList); - -// if (!folder) throw new NotFoundError("Move Folder Not Found") - -// const folderChilden = await utilsFolder.findAllFoldersByParent(folderID.toString(), userID); - -// folderChilden.map( async(currentFolderChild) => { - -// let currentFolderChildParentList = currentFolderChild.parentList; - -// const indexOfFolderID = currentFolderChildParentList.indexOf(folderID.toString()); - -// currentFolderChildParentList = currentFolderChildParentList.splice(indexOfFolderID); - -// currentFolderChildParentList = [...parentList, ...currentFolderChildParentList]; - -// currentFolderChild.parentList = currentFolderChildParentList; - -// await currentFolderChild.save() -// }) - -// const fileChildren = await utilsFile.getFileListByParent(userID, folderID.toString()); - -// fileChildren.map( async(currentFileChild) => { - -// let currentFileChildParentList = currentFileChild.metadata.parentList; - -// currentFileChildParentList = currentFileChildParentList.split(","); - -// const indexOfFolderID = currentFileChildParentList.indexOf(folderID.toString()); - -// currentFileChildParentList = currentFileChildParentList.splice(indexOfFolderID); - -// currentFileChildParentList = [...parentList, ...currentFileChildParentList]; - -// await utilsFile.moveFile(currentFileChild._id, userID, currentFileChild.metadata.parent, currentFileChildParentList.toString()) - -// }) -// } -// } - export default FolderService; \ No newline at end of file diff --git a/backend/services/UserService/index.ts b/backend/services/UserService/index.ts index a3faeb6..fc09e63 100644 --- a/backend/services/UserService/index.ts +++ b/backend/services/UserService/index.ts @@ -93,75 +93,4 @@ class UserService { } -// const UserService = function() { - -// this.login = async(userData) => { - -// const email = userData.email; -// const password = userData.password; - -// const user = await User.findByCreds(email, password); - -// const token = await user.generateAuthToken(); - -// if (!user || !token) throw new NotFoundError("Login User Not Found Error"); - -// return {user, token} -// } - -// this.logout = async(user, userToken) => { - -// user.tokens = user.tokens.filter((token) => { -// return token.token !== userToken; -// }) - -// await user.save(); -// } - -// this.logoutAll = async(user) => { - -// user.tokens = [] -// user.tempTokens = []; - -// await user.save(); -// } - -// this.create = async(userData) => { - -// console.log("Create"); - -// const user = new User(userData); -// await user.save(); - -// await user.generateEncryptionKeys(); - -// const token = await user.generateAuthToken(); - -// if (!user || !token) throw new InternalServerError("Could Not Create New User Error"); - -// return {user, token} -// } - -// this.changePassword = async(user, oldPassword, newPassword) => { - -// const isMatch = await bcrypt.compare(oldPassword, user.password); - -// if (!isMatch) throw new NotAuthorizedError("Change Passwords Do Not Match Error"); - -// const encryptionKey = user.getEncryptionKey(); - -// user.password = newPassword; - -// user.tokens = []; -// user.tempTokens = []; - -// await user.save(); -// await user.changeEncryptionKey(encryptionKey); - -// const newToken = await user.generateAuthToken(); - -// return newToken; -// } -// } - export default UserService; \ No newline at end of file From 796b9ad2dd61f2155fcfee1cf5b4055a2f76a716 Mon Sep 17 00:00:00 2001 From: subnub Date: Thu, 30 Apr 2020 20:21:37 -0400 Subject: [PATCH 019/129] Started to cleanup the backend code, removing some of the 'any' types. --- backend/controllers/file.ts | 2 +- backend/controllers/folder.ts | 4 +- backend/controllers/storage.ts | 1 - backend/controllers/user.ts | 4 +- backend/db/utils/fileUtils/index.ts | 173 +----------------- backend/db/utils/folderUtils/index.ts | 60 +----- backend/express-routers/file.ts | 12 +- backend/express-routers/folder.ts | 4 +- backend/express-routers/storage.ts | 4 +- backend/express-routers/user.ts | 3 +- backend/middleware/auth.ts | 6 +- backend/middleware/tempAuth.ts | 6 +- backend/middleware/tempAuthVideo.ts | 6 +- backend/models/file.ts | 3 +- backend/models/user.ts | 69 ++----- .../ChunkService/FileSystemService.ts | 10 +- backend/services/ChunkService/MongoService.ts | 10 +- backend/services/ChunkService/S3Service.ts | 10 +- backend/utils/createQuery.ts | 15 +- package.json | 2 + 20 files changed, 75 insertions(+), 329 deletions(-) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index 6e71547..df7a213 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -9,7 +9,7 @@ const fileService = new FileService() interface RequestType extends Request { user?: UserInterface, - auth?: any, + auth?: boolean, busboy: any, } diff --git a/backend/controllers/folder.ts b/backend/controllers/folder.ts index 530f67f..f101981 100644 --- a/backend/controllers/folder.ts +++ b/backend/controllers/folder.ts @@ -1,14 +1,14 @@ import FolderService from "../services/FolderService"; -const folderService = new FolderService(); import { Request, Response } from "express"; import {UserInterface} from "../models/user"; import MongoService from "../services/ChunkService/MongoService"; import FileSystemService from "../services/ChunkService/FileSystemService"; import S3Service from "../services/ChunkService/S3Service"; +const folderService = new FolderService(); + interface RequestType extends Request { user?: UserInterface, - auth?: any, } type ChunkServiceType = MongoService | FileSystemService | S3Service; diff --git a/backend/controllers/storage.ts b/backend/controllers/storage.ts index fc8c5be..db7bb48 100644 --- a/backend/controllers/storage.ts +++ b/backend/controllers/storage.ts @@ -5,7 +5,6 @@ import { UserInterface } from "../models/user"; interface RequestType extends Request { user?: UserInterface, - auth?: any, } class StorageController { diff --git a/backend/controllers/user.ts b/backend/controllers/user.ts index b93125f..9178f42 100644 --- a/backend/controllers/user.ts +++ b/backend/controllers/user.ts @@ -7,9 +7,7 @@ const UserProvider = new UserService(); interface RequestType extends Request { user?: UserInterface, - auth?: any, - busboy: any, - encryptedToken?: any + encryptedToken?: string } class UserController { diff --git a/backend/db/utils/fileUtils/index.ts b/backend/db/utils/fileUtils/index.ts index aa5a0ac..57a6c74 100644 --- a/backend/db/utils/fileUtils/index.ts +++ b/backend/db/utils/fileUtils/index.ts @@ -2,6 +2,7 @@ import mongoose from "../../mongoose"; import {ObjectID} from "mongodb"; import {FileInterface} from "../../../models/file"; import {UserInterface} from "../../../models/user"; +import { QueryInterface } from "../../../utils/createQuery"; const conn = mongoose.connection; class DbUtil { @@ -37,7 +38,7 @@ class DbUtil { return file; } - makePublic = async(fileID: string, userID: string, token: any) => { + makePublic = async(fileID: string, userID: string, token: string) => { const file = await conn.db.collection("fs.files") .findOneAndUpdate({"_id": new ObjectID(fileID), @@ -47,7 +48,7 @@ class DbUtil { return file; } - getPublicInfo = async(fileID: string, tempToken: any) => { + getPublicInfo = async(fileID: string, tempToken: string) => { const file = await conn.db.collection("fs.files") .findOne({"_id": new ObjectID(fileID), "metadata.link": tempToken}) as FileInterface; @@ -55,7 +56,7 @@ class DbUtil { return file; } - makeOneTimePublic = async(fileID: string, userID: string, token: any) => { + makeOneTimePublic = async(fileID: string, userID: string, token: string) => { const file = await conn.db.collection("fs.files") .findOneAndUpdate({"_id": new ObjectID(fileID), @@ -84,7 +85,7 @@ class DbUtil { return fileList; } - getList = async(queryObj: any, sortBy: string, limit: number) => { + getList = async(queryObj: QueryInterface, sortBy: string, limit: number) => { const fileList = await conn.db.collection("fs.files") .find(queryObj) @@ -106,7 +107,7 @@ class DbUtil { return user; } - getFileSearchList = async(userID: string, searchQuery: any) => { + getFileSearchList = async(userID: string, searchQuery: RegExp) => { const fileList = await conn.db.collection("fs.files") .find({"metadata.owner": userID, "filename": searchQuery}) @@ -157,166 +158,4 @@ class DbUtil { } } -// const DbUtil = function() { - -// this.getPublicFile = async(fileID) => { - -// let file = await conn.db.collection("fs.files") -// .findOne({"_id": ObjectID(fileID)}); - -// return file; -// } - -// this.removeOneTimePublicLink = async(fileID) => { - -// const file = await conn.db.collection("fs.files") -// .findOneAndUpdate({"_id": ObjectID(fileID)}, { -// "$unset": {"metadata.linkType": "", "metadata.link": ""}}); - -// return file; - -// } - -// this.removeLink = async(fileID, userID) => { - -// const file = await conn.db.collection("fs.files") -// .findOneAndUpdate({"_id": ObjectID(fileID), -// "metadata.owner": userID}, -// {"$unset": {"metadata.linkType": "", "metadata.link": ""}}) - -// return file; -// } - -// this.makePublic = async(fileID, userID, token) => { - -// const file = await conn.db.collection("fs.files") -// .findOneAndUpdate({"_id": ObjectID(fileID), -// "metadata.owner": userID}, -// {"$set": {"metadata.linkType": "public", "metadata.link": token}}) - -// return file; -// } - -// this.getPublicInfo = async(fileID, tempToken) => { - -// const file = await conn.db.collection("fs.files") -// .findOne({"_id": ObjectID(fileID), "metadata.link": tempToken}) - -// return file; -// } - -// this.makeOneTimePublic = async(fileID, userID, token) => { - -// const file = await conn.db.collection("fs.files") -// .findOneAndUpdate({"_id": ObjectID(fileID), -// "metadata.owner": userID}, -// {"$set": {"metadata.linkType": "one", "metadata.link": token}}) - -// return file; -// } - -// this.getFileInfo = async(fileID, userID) => { - -// const file = await conn.db.collection("fs.files") -// .findOne({"metadata.owner": userID, "_id": ObjectID(fileID)}); - -// return file; -// } - -// this.getQuickList = async(userID) => { - -// const fileList = await conn.db.collection("fs.files") -// .find({"metadata.owner": userID}) -// .sort({uploadDate: -1}) -// .limit(10) -// .toArray(); - -// return fileList; -// } - -// this.getList = async(queryObj, sortBy, limit) => { - -// const fileList = await conn.db.collection("fs.files") -// .find(queryObj) -// .sort(sortBy) -// .limit(limit) -// .toArray(); - - -// return fileList; -// } - -// this.removeTempToken = async(user, tempToken) => { - -// user.tempTokens = user.tempTokens.filter((filterToken) => { - -// return filterToken.token !== tempToken; -// }); - -// return user; -// } - -// this.removeTranscodeVideo = async(fileID, userID) => { - -// const file = await conn.db.collection("fs.files") -// .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, -// {"$unset": {"metadata.transcoded": "", "metadata.transcodedIV": "", -// "metadata.transcoded_size": "", "metadata.transcodedID": ""}}) - -// return file; -// } - -// this.getFileSearchList = async(userID, searchQuery) => { - -// const fileList = await conn.db.collection("fs.files") -// .find({"metadata.owner": userID, "filename": searchQuery}) -// .limit(10) -// .toArray(); - -// return fileList; -// } - -// this.renameFile = async(fileID, userID, title) => { - -// const file = await conn.db.collection("fs.files") -// .findOneAndUpdate({"_id": ObjectID(fileID), -// "metadata.owner": userID}, {"$set": {"filename": title}}) - -// return file; -// } - -// this.moveFile = async(fileID, userID, parent, parentList) => { - -// const file = await conn.db.collection("fs.files") -// .findOneAndUpdate({"_id": ObjectID(fileID), -// "metadata.owner": userID}, {"$set": {"metadata.parent": parent, "metadata.parentList": parentList}}) - -// return file; -// } - -// this.getFileListByParent = async(userID, parentListString) => { - -// const fileList = await conn.db.collection("fs.files") -// .find({"metadata.owner": userID, -// "metadata.parentList": {$regex : `.*${parentListString}.*`}}).toArray(); - -// return fileList; -// } - -// this.getFileListByOwner = async(userID) => { - -// const fileList = await conn.db.collection("fs.files") -// .find({"metadata.owner": userID}).toArray(); - -// return fileList; -// } - -// this.removeChunksByID = async(fileID) => { - -// await conn.db.collection("fs.chunks").deleteMany({files_id: fileID}); -// } - -// } - -//module.exports = DbUtil; export default DbUtil; \ No newline at end of file diff --git a/backend/db/utils/folderUtils/index.ts b/backend/db/utils/folderUtils/index.ts index e48450e..4e2be4f 100644 --- a/backend/db/utils/folderUtils/index.ts +++ b/backend/db/utils/folderUtils/index.ts @@ -1,14 +1,13 @@ import Folder, { FolderInterface } from "../../../models/folder"; import {ObjectID} from "mongodb"; - class DbUtil { constructor() { } - getFolderSearchList = async(userID: string, searchQuery: any) => { + getFolderSearchList = async(userID: string, searchQuery: RegExp) => { const folderList = await Folder.find({"owner": userID, "name": searchQuery}).limit(10) as FolderInterface[]; @@ -62,61 +61,4 @@ class DbUtil { } } -// const DbUtil = function() { - -// this.getFolderSearchList = async(userID, searchQuery) => { - -// const folderList = await Folder.find({"owner": userID, "name": searchQuery}).limit(10); - -// return folderList; -// } - -// this.getFolderInfo = async(folderID, userID) => { - -// const folder = await Folder.findOne({"owner": userID, "_id": ObjectID(folderID)}); - -// return folder; -// } - -// this.getFolderListByParent = async(userID, parent, sortBy) => { - -// const folderList = await Folder.find({"owner": userID, "parent": parent}) -// .sort(sortBy); - -// return folderList; -// } - -// this.getFolderListBySearch = async(userID, searchQuery, sortBy) => { - -// const folderList = await Folder.find({"name": searchQuery,"owner": userID}) -// .sort(sortBy); - -// return folderList; -// } - -// this.moveFolder = async(folderID, userID, parent, parentList) => { - -// const folder = await Folder.findOneAndUpdate({"_id": ObjectID(folderID), -// "owner": userID}, {"$set": {"parent": parent, "parentList": parentList}}); - -// return folder; -// } - -// this.renameFolder = async(folderID, userID, title) => { - -// const folder = await Folder.findOneAndUpdate({"_id": ObjectID(folderID), -// "owner": userID}, {"$set": {"name": title}}); - -// return folder; -// } - -// this.findAllFoldersByParent = async(parentID, userID) => { - -// const folderList = await Folder.find({"parentList": parentID, "owner": userID}); - -// return folderList; - -// } -// } - export default DbUtil; \ No newline at end of file diff --git a/backend/express-routers/file.ts b/backend/express-routers/file.ts index 596912e..a4a3306 100644 --- a/backend/express-routers/file.ts +++ b/backend/express-routers/file.ts @@ -1,11 +1,7 @@ import {Router} from "express"; - -const router = Router(); - import auth from "../middleware/auth"; import tempAuth from "../middleware/tempAuth"; import tempAuthVideo from "../middleware/tempAuthVideo"; - import FileController from "../controllers/file"; import env from "../enviroment/env"; import MongoService from "../services/ChunkService/MongoService"; @@ -30,12 +26,10 @@ if (env.dbType === "mongo") { fileController = new FileController(s3Service); } -//const fileController = new FileController() +const router = Router(); router.post("/file-service/upload", auth, fileController.uploadFile); -//router.post("/file-service/transcode-video", auth, fileController.transcodeVideo); - router.get("/file-service/thumbnail/:id", auth, fileController.getThumbnail); router.get("/file-service/full-thumbnail/:id", auth, fileController.getFullThumbnail); @@ -54,8 +48,6 @@ router.get("/file-service/download/get-token", auth, fileController.getDownloadT router.get("/file-service/download/get-token-video", auth, fileController.getDownloadTokenVideo); -//router.get("/file-service/stream-video-transcoded/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamTranscodedVideo); - router.get("/file-service/stream-video/:id/:tempToken/:uuid", tempAuthVideo, fileController.streamVideo); router.get("/file-service/download/:id/:tempToken", tempAuth, fileController.downloadFile); @@ -74,8 +66,6 @@ router.delete("/file-service/remove-link/:id", auth, fileController.removeLink); router.delete("/file-service/remove/token-video/:tempToken", auth, fileController.removeTempToken); -//router.delete("/file-service/transcode-video/remove", auth, fileController.removeTranscodeVideo); - router.delete("/file-service/remove", auth, fileController.deleteFile); export default router; \ No newline at end of file diff --git a/backend/express-routers/folder.ts b/backend/express-routers/folder.ts index b775c22..5b23795 100644 --- a/backend/express-routers/folder.ts +++ b/backend/express-routers/folder.ts @@ -1,5 +1,4 @@ import {Router} from "express"; -const router = Router(); import auth from "../middleware/auth"; import env from "../enviroment/env"; import MongoService from "../services/ChunkService/MongoService"; @@ -25,8 +24,7 @@ if (env.dbType === "mongo") { folderController = new FolderController(s3Service); } -//import FolderController from "../controllers/folder"; -//const folderController = new FolderController(); +const router = Router(); router.post("/folder-service/upload", auth, folderController.uploadFolder); diff --git a/backend/express-routers/storage.ts b/backend/express-routers/storage.ts index 7bc10ec..abbdc6d 100644 --- a/backend/express-routers/storage.ts +++ b/backend/express-routers/storage.ts @@ -1,9 +1,11 @@ import {Router} from "express"; -const router = Router(); import auth from "../middleware/auth"; import StorageController from "../controllers/storage"; + const storageController = new StorageController(); +const router = Router(); + router.get("/storage-service/info", auth, storageController.getStorageInfo); export default router; \ No newline at end of file diff --git a/backend/express-routers/user.ts b/backend/express-routers/user.ts index cd5c271..fd72c7b 100644 --- a/backend/express-routers/user.ts +++ b/backend/express-routers/user.ts @@ -1,10 +1,11 @@ import { Router } from "express"; -const router = Router(); import auth from "../middleware/auth"; import UserController from "../controllers/user"; const userController = new UserController(); +const router = Router(); + router.get("/user-service/user", auth, userController.getUser); router.post("/user-service/login", userController.login); diff --git a/backend/middleware/auth.ts b/backend/middleware/auth.ts index c0971ae..75ae995 100644 --- a/backend/middleware/auth.ts +++ b/backend/middleware/auth.ts @@ -5,10 +5,8 @@ import {Request, Response, NextFunction} from "express"; interface RequestType extends Request { user?: UserInterface, - auth?: any, - busboy: any, - token?: any, - encryptedToken?: any, + token?: string, + encryptedToken?: string, } type jwtType = { diff --git a/backend/middleware/tempAuth.ts b/backend/middleware/tempAuth.ts index 663aa58..1a03fb5 100644 --- a/backend/middleware/tempAuth.ts +++ b/backend/middleware/tempAuth.ts @@ -6,10 +6,8 @@ import {Request, Response, NextFunction} from "express"; interface RequestType extends Request { user?: UserInterface, - auth?: any, - busboy: any, - token?: any, - encryptedTempToken?: any, + auth?: boolean, + encryptedTempToken?: string, } type jwtType = { diff --git a/backend/middleware/tempAuthVideo.ts b/backend/middleware/tempAuthVideo.ts index 964e47c..5c2cb50 100644 --- a/backend/middleware/tempAuthVideo.ts +++ b/backend/middleware/tempAuthVideo.ts @@ -6,10 +6,8 @@ import {Request, Response, NextFunction} from "express"; interface RequestType extends Request { user?: UserInterface, - auth?: any, - busboy: any, - token?: any, - encryptedTempToken?: any, + auth?: boolean, + encryptedTempToken?: string, } type jwtType = { diff --git a/backend/models/file.ts b/backend/models/file.ts index b209f94..3649c40 100644 --- a/backend/models/file.ts +++ b/backend/models/file.ts @@ -74,7 +74,7 @@ export interface FileInterface extends Document { isVideo: boolean, thumbnailID?: string, size: number, - IV: any, + IV: Buffer, linkType?: 'one' | 'public', link?: string, filePath?: string, @@ -82,7 +82,6 @@ export interface FileInterface extends Document { } } - const File = mongoose.model("fs.files", fileSchema); export default File; \ No newline at end of file diff --git a/backend/models/user.ts b/backend/models/user.ts index a6a3d94..c824fe1 100644 --- a/backend/models/user.ts +++ b/backend/models/user.ts @@ -1,8 +1,8 @@ import mongoose, {Document} from "mongoose"; -const validator = require("validator"); -const crypto = require("crypto"); -const bcrypt = require("bcrypt"); -const jwt = require("jsonwebtoken"); +import validator from "validator"; +import crypto from "crypto"; +import bcrypt from "bcrypt"; +import jwt from "jsonwebtoken"; import env from "../enviroment/env"; const userSchema = new mongoose.Schema({ @@ -66,7 +66,7 @@ export interface UserInterface extends Document { tempTokens: any[], privateKey?: string, publicKey?: string, - token?:string, + token?: string, getEncryptionKey: () => Buffer | undefined; generateTempAuthToken: () => any; @@ -78,12 +78,6 @@ export interface UserInterface extends Document { changeEncryptionKey: (randomKey: Buffer) => void; } -// userSchema.virtual("files", { -// ref: "fs.files", -// localField: "_id" -// }) - - userSchema.pre("save", async function(this: any, next: any) { const user = this; @@ -132,8 +126,7 @@ userSchema.methods.generateAuthToken = async function() { const iv = crypto.randomBytes(16); const user = this; - let token = jwt.sign({_id:user._id.toString(), iv}, env.password); - const publicKey = user.publicKey; + let token = jwt.sign({_id:user._id.toString(), iv}, env.password!); const encryptionKey = user.getEncryptionKey(); @@ -151,10 +144,9 @@ userSchema.methods.encryptToken = function(token: string, key: string, iv: any) const TOKEN_CIPHER_KEY = crypto.createHash('sha256').update(key).digest(); const cipher = crypto.createCipheriv('aes-256-cbc', TOKEN_CIPHER_KEY, iv); - let encryptedText = cipher.update(token); - encryptedText = Buffer.concat([encryptedText, cipher.final()]).toString("hex"); + const encryptedText = cipher.update(token); - return encryptedText; + return Buffer.concat([encryptedText, cipher.final()]).toString("hex");; } userSchema.methods.decryptToken = function(encryptedToken: any, key: string, iv: any) { @@ -165,17 +157,16 @@ userSchema.methods.decryptToken = function(encryptedToken: any, key: string, iv: const TOKEN_CIPHER_KEY = crypto.createHash('sha256').update(key).digest(); const decipher = crypto.createDecipheriv('aes-256-cbc', TOKEN_CIPHER_KEY, iv) - let tokenDecrypted = decipher.update(encryptedToken); - tokenDecrypted = Buffer.concat([tokenDecrypted, decipher.final()]).toString(); + const tokenDecrypted = decipher.update(encryptedToken); - return tokenDecrypted; + return Buffer.concat([tokenDecrypted, decipher.final()]).toString(); } userSchema.methods.generateEncryptionKeys = async function() { const user = this; const userPassword = user.password; - const masterPassword = env.key; + const masterPassword = env.key!; const randomKey = crypto.randomBytes(32); @@ -187,10 +178,9 @@ userSchema.methods.generateEncryptionKeys = async function() { const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); const masterCipher = crypto.createCipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv); - let masterEncryptedText = masterCipher.update(encryptedText); - masterEncryptedText = Buffer.concat([masterEncryptedText, masterCipher.final()]).toString("hex"); + const masterEncryptedText = masterCipher.update(encryptedText); - user.privateKey = masterEncryptedText; + user.privateKey = Buffer.concat([masterEncryptedText, masterCipher.final()]).toString("hex"); user.publicKey = iv.toString("hex"); await user.save(); @@ -202,7 +192,7 @@ userSchema.methods.getEncryptionKey = function() { const user = this; const userPassword = user.password; const masterEncryptedText = user.privateKey; - const masterPassword = env.key; + const masterPassword = env.key!; const iv = Buffer.from(user.publicKey, "hex"); const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); @@ -230,7 +220,7 @@ userSchema.methods.changeEncryptionKey = async function(randomKey: Buffer) { const user = this; const userPassword = user.password; - const masterPassword = env.key; + const masterPassword = env.key!; const iv = crypto.randomBytes(16); const USER_CIPHER_KEY = crypto.createHash('sha256').update(userPassword).digest(); @@ -240,10 +230,9 @@ userSchema.methods.changeEncryptionKey = async function(randomKey: Buffer) { const MASTER_CIPHER_KEY = crypto.createHash('sha256').update(masterPassword).digest(); const masterCipher = crypto.createCipheriv('aes-256-cbc', MASTER_CIPHER_KEY, iv); - let masterEncryptedText = masterCipher.update(encryptedText); - masterEncryptedText = Buffer.concat([masterEncryptedText, masterCipher.final()]).toString("hex"); + const masterEncryptedText = masterCipher.update(encryptedText); - user.privateKey = masterEncryptedText; + user.privateKey = Buffer.concat([masterEncryptedText, masterCipher.final()]).toString("hex"); user.publicKey = iv.toString("hex"); await user.save(); @@ -251,33 +240,16 @@ userSchema.methods.changeEncryptionKey = async function(randomKey: Buffer) { userSchema.methods.generateTempAuthToken = async function() { - - // const user = this; - // let token = jwt.sign({_id:user._id.toString()}, env.password); - // const publicKey = user.publicKey; - - // const encryptionKey = user.getEncryptionKey(); - - // const encryptedToken = user.encryptToken(token, encryptionKey, publicKey); - - // user.tokens = user.tokens.concat({token: encryptedToken}); - - // await user.save(); - // return token; - const iv = crypto.randomBytes(16); const user = this as UserInterface; - const token = jwt.sign({_id:user._id.toString(), iv}, env.password, {expiresIn: "3000ms"}); - const publicKey = user.publicKey; + const token = jwt.sign({_id:user._id.toString(), iv}, env.password!, {expiresIn: "3000ms"}); const encryptionKey = user.getEncryptionKey(); const encryptedToken = user.encryptToken(token, encryptionKey, iv); user.tempTokens = user.tempTokens.concat({token: encryptedToken}); - //console.log("generate temp auth token", user); - await user.save(); return token; } @@ -287,20 +259,17 @@ userSchema.methods.generateTempAuthTokenVideo = async function(cookie: string) { const iv = crypto.randomBytes(16); const user = this; - const token = jwt.sign({_id:user._id.toString(), cookie, iv}, env.password, {expiresIn:"5h"}); - //const publicKey = user.publicKey; + const token = jwt.sign({_id:user._id.toString(), cookie, iv}, env.password!, {expiresIn:"5h"}); const encryptionKey = user.getEncryptionKey(); const encryptedToken = user.encryptToken(token, encryptionKey, iv); - //user.tempTokens = user.tempTokens.concat({token}); user.tempTokens = user.tempTokens.concat({token: encryptedToken}); await user.save(); return token; } - const User = mongoose.model("User", userSchema); export default User; \ No newline at end of file diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index 6fd8be4..0d3ed65 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -119,7 +119,7 @@ class FileSystemService implements ChunkInterface { const filePath = currentFile.metadata.filePath!; - const IV = currentFile.metadata.IV.buffer + const IV = currentFile.metadata.IV.buffer as Buffer; const readStream = fs.createReadStream(filePath); @@ -174,7 +174,7 @@ class FileSystemService implements ChunkInterface { if (!file) throw new NotFoundError("File Thumbnail Not Found"); const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer + const IV = file.metadata.IV.buffer as Buffer; if (!password) throw new NotAuthorizedError("Invalid Encryption Key") @@ -214,7 +214,7 @@ class FileSystemService implements ChunkInterface { let end = parts[1] ? parseInt(parts[1], 10) : fileSize-1 - const IV = currentFile.metadata.IV.buffer + const IV = currentFile.metadata.IV.buffer as Buffer; const chunksize = (end-start)+1 let head = { @@ -238,7 +238,7 @@ class FileSystemService implements ChunkInterface { if (fixedStart !== 0 && start !== 0) { - currentIV = await getPrevIVFS(fixedStart - 16, currentFile.metadata.filePath!); + currentIV = await getPrevIVFS(fixedStart - 16, currentFile.metadata.filePath!) as Buffer; } const readStream = fs.createReadStream(currentFile.metadata.filePath!, { @@ -275,7 +275,7 @@ class FileSystemService implements ChunkInterface { if (!password) throw new NotAuthorizedError("Invalid Encryption Key"); - const IV = file.metadata.IV.buffer + const IV = file.metadata.IV.buffer as Buffer; const readStream = fs.createReadStream(file.metadata.filePath!); diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index e888e6d..141cb47 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -107,7 +107,7 @@ class MongoService implements ChunkInterface { const bucket = new mongoose.mongo.GridFSBucket(conn.db); - const IV = currentFile.metadata.IV.buffer + const IV = currentFile.metadata.IV.buffer as Buffer; const readStream = bucket.openDownloadStream(new ObjectID(fileID)); const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() @@ -159,7 +159,7 @@ class MongoService implements ChunkInterface { const bucket = new mongoose.mongo.GridFSBucket(conn.db); const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer + const IV = file.metadata.IV.buffer as Buffer; if (!password) throw new NotAuthorizedError("Invalid Encryption Key") @@ -197,7 +197,7 @@ class MongoService implements ChunkInterface { const bucket = new mongoose.mongo.GridFSBucket(conn.db); - const IV = file.metadata.IV.buffer + const IV = file.metadata.IV.buffer as Buffer; const readStream = bucket.openDownloadStream(new ObjectID(fileID)) @@ -239,7 +239,7 @@ class MongoService implements ChunkInterface { ? parseInt(parts[1], 10) : fileSize-1 const chunksize = (end-start)+1 - const IV = currentFile.metadata.IV.buffer + const IV = currentFile.metadata.IV.buffer as Buffer; let head = { 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, @@ -262,7 +262,7 @@ class MongoService implements ChunkInterface { if (fixedStart !== 0 && start !== 0) { - currentIV = await getPrevIVMongo(fixedStart - 16, fileID); + currentIV = await getPrevIVMongo(fixedStart - 16, fileID) as Buffer; } const bucket = new mongoose.mongo.GridFSBucket(conn.db, { diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 928accd..d9b4672 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -116,7 +116,7 @@ class S3Service implements ChunkInterface { if (!password) throw new NotAuthorizedError("Invalid Encryption Key") - const IV = currentFile.metadata.IV.buffer + const IV = currentFile.metadata.IV.buffer as Buffer; const CIPHER_KEY = crypto.createHash('sha256').update(password).digest() @@ -156,7 +156,7 @@ class S3Service implements ChunkInterface { ? parseInt(parts[1], 10) : fileSize-1 const chunksize = (end-start)+1 - const IV = currentFile.metadata.IV.buffer + const IV = currentFile.metadata.IV.buffer as Buffer; let head = { 'Content-Range': 'bytes ' + start + '-' + end + '/' + fileSize, @@ -179,7 +179,7 @@ class S3Service implements ChunkInterface { if (fixedStart !== 0 && start !== 0) { - currentIV = await getPrevIVS3(fixedStart - 16, currentFile.metadata.s3ID!); + currentIV = await getPrevIVS3(fixedStart - 16, currentFile.metadata.s3ID!) as Buffer; } const params: any = {Bucket: env.s3Bucket, Key: currentFile.metadata.s3ID!, Range: `bytes=${fixedStart}-${fixedEnd}`}; @@ -238,7 +238,7 @@ class S3Service implements ChunkInterface { if (!file) throw new NotFoundError("File Thumbnail Not Found"); const password = user.getEncryptionKey(); - const IV = file.metadata.IV.buffer + const IV = file.metadata.IV.buffer as Buffer; if (!password) throw new NotAuthorizedError("Invalid Encryption Key") @@ -275,7 +275,7 @@ class S3Service implements ChunkInterface { if (!password) throw new NotAuthorizedError("Invalid Encryption Key"); - const IV = file.metadata.IV.buffer + const IV = file.metadata.IV.buffer as Buffer; const params: any = {Bucket: env.s3Bucket, Key: file.metadata.s3ID!}; diff --git a/backend/utils/createQuery.ts b/backend/utils/createQuery.ts index 98d0aed..bef3472 100644 --- a/backend/utils/createQuery.ts +++ b/backend/utils/createQuery.ts @@ -1,6 +1,19 @@ +export interface QueryInterface { + "metadata.owner": string, + "metadata.parent"?: string, + filename?: string | RegExp | { + $lt?: string, + $gt?: string, + }, + uploadDate?: { + $lt?: Date, + $gt?: Date, + }, +} + const createQuery = (owner: string, parent: string, sortBy: string, startAt: number, startAtDate: number, searchQuery: string | RegExp, startAtName: string) => { - let query: any = {"metadata.owner": owner} + let query: QueryInterface = {"metadata.owner": owner} if (searchQuery !== "") { diff --git a/package.json b/package.json index 87a9c42..dd434c1 100755 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "@babel/preset-env": "^7.8.4", "@babel/preset-react": "^7.8.3", "@babel/types": "^7.9.5", + "@types/bcrypt": "^3.0.0", "@types/compression": "^1.7.0", "@types/connect-busboy": "0.0.2", "@types/express": "^4.17.6", @@ -47,6 +48,7 @@ "@types/mongoose": "^5.7.10", "@types/node": "^13.11.1", "@types/uuid": "^7.0.2", + "@types/validator": "^13.0.0", "aws-sdk": "^2.657.0", "axios": "^0.19.2", "babel-polyfill": "^6.26.0", From c5633d68fab9d86f156ee63669e0fedb7285ee03 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 1 May 2020 19:01:46 -0400 Subject: [PATCH 020/129] Cleaned up most of the backend, moved some of the utilties into their proper location --- .../ChunkService/FileSystemService.ts | 8 +- backend/services/ChunkService/MongoService.ts | 22 +-- backend/services/ChunkService/S3Service.ts | 10 +- .../ChunkService/utils/awaitUploadStream.ts | 25 +-- .../ChunkService/utils/awaitUploadStreamFS.ts | 42 +---- .../ChunkService/utils/awaitUploadStreamS3.ts | 2 - .../utils/createThumbnail.ts | 20 +-- .../utils/createThumbnailFS.ts | 56 +----- .../ChunkService/utils/createThumbnailS3.ts | 85 +++++++++ .../utils/removeChunks.ts | 2 +- .../ChunkService/utils/removeChunksFS.ts | 20 +++ .../utils/removeChunksS3.ts | 0 backend/services/FileService/index.ts | 31 +--- .../FileService/utils/createThumbnailS3.ts | 169 ------------------ backend/services/FolderService/index.ts | 4 - backend/services/UserService/index.ts | 5 +- package.json | 2 + 17 files changed, 142 insertions(+), 361 deletions(-) rename backend/services/{FileService => ChunkService}/utils/createThumbnail.ts (86%) rename backend/services/{FileService => ChunkService}/utils/createThumbnailFS.ts (57%) create mode 100644 backend/services/ChunkService/utils/createThumbnailS3.ts rename backend/services/{FileService => ChunkService}/utils/removeChunks.ts (95%) create mode 100644 backend/services/ChunkService/utils/removeChunksFS.ts rename backend/services/{FileService => ChunkService}/utils/removeChunksS3.ts (100%) delete mode 100644 backend/services/FileService/utils/createThumbnailS3.ts diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index 0d3ed65..c77ae04 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -13,14 +13,13 @@ import File, { FileInterface } from "../../models/file"; import getFileSize from "./utils/getFileSize"; import DbUtilFile from "../../db/utils/fileUtils/index"; import awaitStream from "./utils/awaitStream"; -import createThumbnailFS from "../FileService/utils/createThumbnailFS"; +import createThumbnailFS from "./utils/createThumbnailFS"; import imageChecker from "../../utils/imageChecker"; import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; import streamToBuffer from "../../utils/streamToBuffer"; import User from "../../models/user"; import env from "../../enviroment/env"; -import { removeChunksFS } from "./utils/awaitUploadStreamFS"; -import removeTempToken from "./utils/removeTempToken"; +import removeChunksFS from "./utils/removeChunksFS"; import getPrevIVFS from "./utils/getPrevIVFS"; import awaitStreamVideo from "./utils/awaitStreamVideo"; import fixStartChunkLength from "./utils/fixStartChunkLength"; @@ -28,7 +27,6 @@ import Folder from "../../models/folder"; const dbUtilsFile = new DbUtilFile(); -// implements ChunkInterface class FileSystemService implements ChunkInterface { constructor() { @@ -232,7 +230,7 @@ class FileSystemService implements ChunkInterface { fixedStart = 0; } - const fixedEnd = currentFile.length; //end % 16 === 0 ? end + 15: (fixEndChunkLength(end) - 1) + 16; + const fixedEnd = currentFile.length; const differenceStart = start - fixedStart; diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 141cb47..7d1ccbc 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -6,22 +6,17 @@ import crypto from "crypto"; import videoChecker from "../../utils/videoChecker" import imageChecker from "../../utils/imageChecker" import { ObjectID } from "mongodb"; -import createThumbnail from "../FileService/utils/createThumbnail"; +import createThumbnail from "./utils/createThumbnail"; import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; import NotAuthorizedError from "../../utils/NotAuthorizedError"; -import InternalServerError from "../../utils/InternalServerError"; import NotFoundError from "../../utils/NotFoundError"; import {GridFSBucketWriteStream} from "mongodb"; import awaitStream from "./utils/awaitStream"; import awaitUploadStream from "./utils/awaitUploadStream"; - import User, { UserInterface } from "../../models/user"; import Folder from "../../models/folder"; import { FileInterface } from "../../models/file"; -import { Stream } from "stream"; -import removeChunks from "../FileService/utils/removeChunks"; import getBusboyData from "./utils/getBusboyData"; - import ChunkInterface from "./utils/ChunkInterface"; import fixStartChunkLength from "./utils/fixStartChunkLength"; import getPrevIVMongo from "./utils/getPrevIVMongo"; @@ -30,7 +25,6 @@ import awaitStreamVideo from "./utils/awaitStreamVideo"; const conn = mongoose.connection; const dbUtilsFile = new DbUtilFile(); -const dbUtilsFolder = new DbUtilFolder(); class MongoService implements ChunkInterface { @@ -256,7 +250,7 @@ class MongoService implements ChunkInterface { fixedStart = 0; } - const fixedEnd = currentFile.length; //end % 16 === 0 ? end + 15: (fixEndChunkLength(end) - 1) + 16; + const fixedEnd = currentFile.length; const differenceStart = start - fixedStart; @@ -303,14 +297,6 @@ class MongoService implements ChunkInterface { await Thumbnail.deleteOne({_id: file.metadata.thumbnailID}); } - // if (file.metadata.isVideo && file.metadata.transcoded) { - // try { - // await bucket.delete(new ObjectID(file.metadata.transcodedID)); - // } catch (e) { - // console.log("Could Not Find Transcoded Video"); - // } - // } - await bucket.delete(new ObjectID(fileID)); } @@ -358,10 +344,6 @@ class MongoService implements ChunkInterface { chunkSizeBytes: 1024 * 255 }); - const videoBucket = new mongoose.mongo.GridFSBucket(conn.db, { - bucketName: "videos" - }); - await Folder.deleteMany({"owner": userID}); const fileList = await dbUtilsFile.getFileListByOwner(userID); diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index d9b4672..e51cb0d 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -2,7 +2,6 @@ import File, { FileInterface } from "../../models/file"; import User, {UserInterface} from "../../models/user"; import s3 from "../../db/s3"; import env from "../../enviroment/env"; - import { Response, Request } from "express"; import ChunkInterface from "./utils/ChunkInterface"; import NotAuthorizedError from "../../utils/NotAuthorizedError"; @@ -10,16 +9,14 @@ import NotFoundError from "../../utils/NotFoundError"; import crypto from "crypto"; import getBusboyData from "./utils/getBusboyData"; import videoChecker from "../../utils/videoChecker"; -import fs from "fs"; import uuid from "uuid"; import awaitUploadStreamS3 from "./utils/awaitUploadStreamS3"; -import getFileSize from "./utils/getFileSize"; import awaitStream from "./utils/awaitStream"; -import createThumbnailS3 from "../FileService/utils/createThumbnailS3"; +import createThumbnailS3 from "./utils/createThumbnailS3"; import imageChecker from "../../utils/imageChecker"; import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; import streamToBuffer from "../../utils/streamToBuffer"; -import removeChunksS3 from "../FileService/utils/removeChunksS3"; +import removeChunksS3 from "./utils/removeChunksS3"; import fixStartChunkLength from "./utils/fixStartChunkLength"; import fixEndChunkLength from "./utils/fixEndChunkLength"; import getPrevIVS3 from "./utils/getPrevIVS3"; @@ -29,7 +26,6 @@ import Folder from "../../models/folder"; import DbUtilFile from "../../db/utils/fileUtils/index"; const dbUtilsFile = new DbUtilFile(); - class S3Service implements ChunkInterface { constructor() { @@ -80,7 +76,7 @@ class S3Service implements ChunkInterface { await awaitUploadStreamS3(params); const date = new Date(); - const encryptedFileSize = size; //await getFileSize(metadata.filePath); + const encryptedFileSize = size; const currentFile = new File({ filename, diff --git a/backend/services/ChunkService/utils/awaitUploadStream.ts b/backend/services/ChunkService/utils/awaitUploadStream.ts index 9526ad7..f0c2540 100644 --- a/backend/services/ChunkService/utils/awaitUploadStream.ts +++ b/backend/services/ChunkService/utils/awaitUploadStream.ts @@ -1,4 +1,4 @@ -import removeChunks from "../../FileService/utils/removeChunks"; +import removeChunks from "./removeChunks"; import {Request} from "express" const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, allStreamsToErrorCatch: any[]) => { @@ -19,28 +19,6 @@ const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, }) }) - // inputSteam.on("error", (e: Error) => { - - // removeChunks(outputStream); - - // reject({ - // message: "Await Stream Input Error", - // code: 500, - // error: e - // }) - // }) - - // outputStream.on("error", (e: Error) => { - - // removeChunks(outputStream); - - // reject({ - // message: "Await Stream Output Error", - // code: 500, - // error: e - // }) - // }) - req.on("aborted", () => { console.log("Upload Request Cancelling..."); @@ -49,7 +27,6 @@ const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, }) inputSteam.pipe(outputStream).on("finish", (data: T) => { - console.log("await stream finished") resolve(data); }) }) diff --git a/backend/services/ChunkService/utils/awaitUploadStreamFS.ts b/backend/services/ChunkService/utils/awaitUploadStreamFS.ts index dc8353e..699a49f 100644 --- a/backend/services/ChunkService/utils/awaitUploadStreamFS.ts +++ b/backend/services/ChunkService/utils/awaitUploadStreamFS.ts @@ -1,22 +1,5 @@ import {Request} from "express" -import fs from "fs"; - -export const removeChunksFS = (path: string) => { - - return new Promise((resolve, reject) => { - - fs.unlink(path, (err) => { - - if (err) { - console.log("Could not remove fs file", err); - resolve(); - } - - console.log("File Removed"); - resolve(); - }) - }) -} +import removeChunksFS from "./removeChunksFS"; const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, path: string, allStreamsToCatchError: any[]) => { @@ -36,28 +19,6 @@ const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, }) }) - // inputSteam.on("error", (e: Error) => { - - // removeChunksFS(path); - - // reject({ - // message: "Await Stream Input Error", - // code: 500, - // error: e - // }) - // }) - - // outputStream.on("error", (e: Error) => { - - // removeChunksFS(path); - - // reject({ - // message: "Await Stream Output Error", - // code: 500, - // error: e - // }) - // }) - req.on("aborted", () => { console.log("Upload Request Cancelling..."); @@ -66,7 +27,6 @@ const awaitUploadStream = (inputSteam: any, outputStream: any, req: Request, }) inputSteam.pipe(outputStream).on("finish", (data: T) => { - console.log("await stream finished") resolve(data); }) }) diff --git a/backend/services/ChunkService/utils/awaitUploadStreamS3.ts b/backend/services/ChunkService/utils/awaitUploadStreamS3.ts index 4b8f9b0..8b457a8 100644 --- a/backend/services/ChunkService/utils/awaitUploadStreamS3.ts +++ b/backend/services/ChunkService/utils/awaitUploadStreamS3.ts @@ -7,11 +7,9 @@ const awaitUploadStreamS3 = (params: any) => { s3.upload(params, (err: any, data: any) => { if (err) { - console.log("Amazon Upload Error", err); reject("Amazon upload error"); } - console.log("Amazon File Uploaded", data); resolve(); }) diff --git a/backend/services/FileService/utils/createThumbnail.ts b/backend/services/ChunkService/utils/createThumbnail.ts similarity index 86% rename from backend/services/FileService/utils/createThumbnail.ts rename to backend/services/ChunkService/utils/createThumbnail.ts index 66bed98..165ebe4 100644 --- a/backend/services/FileService/utils/createThumbnail.ts +++ b/backend/services/ChunkService/utils/createThumbnail.ts @@ -1,13 +1,13 @@ import mongoose from "../../../db/mongoose"; -const conn = mongoose.connection; -const crypto= require("crypto"); -import env from "../../../enviroment/env"; +import crypto from "crypto"; import Thumbnail from "../../../models/thumbnail"; -const ObjectID = require('mongodb').ObjectID -const sharp = require("sharp"); -const concat = require("concat-stream") -import {FileInterface} from "../../../models/file"; -import {UserInterface} from "../../../models/user"; +import { ObjectID } from "mongodb"; +import sharp from "sharp"; +import concat from "concat-stream"; +import { FileInterface } from "../../../models/file"; +import { UserInterface } from "../../../models/user"; + +const conn = mongoose.connection; const createThumbnail = (file: FileInterface, filename: string, user: UserInterface) => { @@ -15,13 +15,13 @@ const createThumbnail = (file: FileInterface, filename: string, user: UserInterf const password = user.getEncryptionKey(); - let CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + let CIPHER_KEY = crypto.createHash('sha256').update(password!).digest() let bucket = new mongoose.mongo.GridFSBucket(conn.db, { chunkSizeBytes: 1024 * 255 }) - const readStream = bucket.openDownloadStream(ObjectID(file._id)) + const readStream = bucket.openDownloadStream(new ObjectID(file._id)) readStream.on("error", (e: Error) => { console.log("File service upload thumbnail error", e); diff --git a/backend/services/FileService/utils/createThumbnailFS.ts b/backend/services/ChunkService/utils/createThumbnailFS.ts similarity index 57% rename from backend/services/FileService/utils/createThumbnailFS.ts rename to backend/services/ChunkService/utils/createThumbnailFS.ts index 3bafcb8..e1d414f 100644 --- a/backend/services/FileService/utils/createThumbnailFS.ts +++ b/backend/services/ChunkService/utils/createThumbnailFS.ts @@ -1,23 +1,22 @@ import mongoose from "../../../db/mongoose"; -const conn = mongoose.connection; -const crypto= require("crypto"); +import crypto from "crypto"; import Thumbnail from "../../../models/thumbnail"; -const ObjectID = require('mongodb').ObjectID -const sharp = require("sharp"); -const concat = require("concat-stream") +import sharp from "sharp"; import {FileInterface} from "../../../models/file"; import {UserInterface} from "../../../models/user"; import fs from "fs"; import uuid from "uuid"; import env from "../../../enviroment/env"; +const conn = mongoose.connection; + const createThumbnailFS = (file: FileInterface, filename: string, user: UserInterface) => { return new Promise((resolve) => { const password = user.getEncryptionKey(); - let CIPHER_KEY = crypto.createHash('sha256').update(password).digest() + let CIPHER_KEY = crypto.createHash('sha256').update(password!).digest() const thumbnailFilename = uuid.v4(); @@ -56,7 +55,6 @@ const createThumbnailFS = (file: FileInterface, filename: string, user: UserInte readStream.pipe(decipher).pipe(imageResize).pipe(thumbnailCipher).pipe(writeStream); writeStream.on("finish", async() => { - console.log("Thumbnail written"); const thumbnailModel = new Thumbnail({name: filename, owner: user._id, IV: thumbnailIV, path: env.fsDirectory + thumbnailFilename}); @@ -77,50 +75,6 @@ const createThumbnailFS = (file: FileInterface, filename: string, user: UserInte console.log("Thumbnail error", e); resolve(file); } - - // try { - - // const concatStream = concat(async(bufferData: Buffer) => { - - // const thumbnailIV = crypto.randomBytes(16); - - // const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); - - // bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); - - // const thumbnailModel = new Thumbnail({name: filename, owner: user._id, data: bufferData}); - - // await thumbnailModel.save(); - - // let updatedFile = await conn.db.collection("fs.files") - // .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) - - // updatedFile = updatedFile.value; - - // updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} - - // resolve(updatedFile); - - // }).on("error", (e: Error) => { - // console.log("File service upload concat stream error", e); - // resolve(file); - // }) - - // const imageResize = sharp().resize(300).on("error", (e: Error) => { - - // console.log("resize error", e); - // resolve(file); - // }) - - // readStream.pipe(decipher).pipe(imageResize).pipe(concatStream); - - - // } catch (e) { - - // console.log(e); - // resolve(file); - // } - }) } diff --git a/backend/services/ChunkService/utils/createThumbnailS3.ts b/backend/services/ChunkService/utils/createThumbnailS3.ts new file mode 100644 index 0000000..6e6f922 --- /dev/null +++ b/backend/services/ChunkService/utils/createThumbnailS3.ts @@ -0,0 +1,85 @@ +import mongoose from "../../../db/mongoose"; +import crypto from "crypto"; +import Thumbnail from "../../../models/thumbnail"; +import sharp from "sharp"; +import { FileInterface } from "../../../models/file"; +import { UserInterface } from "../../../models/user"; +import uuid from "uuid"; +import env from "../../../enviroment/env"; +import s3 from "../../../db/s3"; + +const conn = mongoose.connection; + +const createThumbnailS3 = (file: FileInterface, filename: string, user: UserInterface) => { + + return new Promise((resolve, reject) => { + + const password = user.getEncryptionKey(); + + let CIPHER_KEY = crypto.createHash('sha256').update(password!).digest() + + const thumbnailFilename = uuid.v4(); + + const params: any = {Bucket: env.s3Bucket, Key: file.metadata.s3ID!}; + + const readStream = s3.getObject(params).createReadStream(); + + const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, file.metadata.IV); + + readStream.on("error", (e: Error) => { + console.log("File service upload thumbnail error", e); + resolve(file); + }) + + decipher.on("error", (e: Error) => { + console.log("File service upload thumbnail decipher error", e); + resolve(file) + }) + + try { + + const thumbnailIV = crypto.randomBytes(16); + const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); + + const imageResize = sharp().resize(300).on("error", (e: Error) => { + + console.log("resize error", e); + resolve(file); + }) + + const paramsWrite: any = { + Bucket: env.s3Bucket, + Body : readStream.pipe(decipher).pipe(imageResize).pipe(thumbnailCipher), + Key : thumbnailFilename + }; + + s3.upload(paramsWrite, async(err: any, data: any) => { + + if (err) { + console.log("Amazon Upload Error", err); + reject("Amazon upload error"); + } + + const thumbnailModel = new Thumbnail({name: thumbnailFilename, owner: user._id, IV: thumbnailIV, s3ID: thumbnailFilename}); + + await thumbnailModel.save(); + + const getUpdatedFile = await conn.db.collection("fs.files") + .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) + + let updatedFile: FileInterface = getUpdatedFile.value; + + updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} as FileInterface; + + resolve(updatedFile); + }) + + } catch (e) { + + console.log("Thumbnail error", e); + resolve(file); + } + }) +} + +export default createThumbnailS3; \ No newline at end of file diff --git a/backend/services/FileService/utils/removeChunks.ts b/backend/services/ChunkService/utils/removeChunks.ts similarity index 95% rename from backend/services/FileService/utils/removeChunks.ts rename to backend/services/ChunkService/utils/removeChunks.ts index c316099..b76befb 100644 --- a/backend/services/FileService/utils/removeChunks.ts +++ b/backend/services/ChunkService/utils/removeChunks.ts @@ -1,6 +1,6 @@ import { GridFSBucketWriteStream } from "mongodb"; - import DbUtilsFile from "../../../db/utils/fileUtils"; + const dbUtilsFile = new DbUtilsFile(); const removeChunks = async(bucketStream: GridFSBucketWriteStream) => { diff --git a/backend/services/ChunkService/utils/removeChunksFS.ts b/backend/services/ChunkService/utils/removeChunksFS.ts new file mode 100644 index 0000000..299b682 --- /dev/null +++ b/backend/services/ChunkService/utils/removeChunksFS.ts @@ -0,0 +1,20 @@ +import fs from "fs"; + +const removeChunksFS = (path: string) => { + + return new Promise((resolve, reject) => { + + fs.unlink(path, (err) => { + + if (err) { + console.log("Could not remove fs file", err); + resolve(); + } + + console.log("File Removed"); + resolve(); + }) + }) +} + +export default removeChunksFS; \ No newline at end of file diff --git a/backend/services/FileService/utils/removeChunksS3.ts b/backend/services/ChunkService/utils/removeChunksS3.ts similarity index 100% rename from backend/services/FileService/utils/removeChunksS3.ts rename to backend/services/ChunkService/utils/removeChunksS3.ts diff --git a/backend/services/FileService/index.ts b/backend/services/FileService/index.ts index ad2a642..7416776 100644 --- a/backend/services/FileService/index.ts +++ b/backend/services/FileService/index.ts @@ -1,34 +1,17 @@ -const imageChecker = require("../../utils/imageChecker"); -import crypto from "crypto"; -const videoChecker = require("../../utils/videoChecker"); -import mongoose from "../../db/mongoose"; -const conn = mongoose.connection; -const createThumbnail = require("../../services/FileService/utils/createThumbnail"); -import Thumbnail, {ThumbnailInterface} from "../../models/thumbnail"; -const ObjectID = require('mongodb').ObjectID import NotAuthorizedError from "../../utils/NotAuthorizedError"; import NotFoundError from "../../utils/NotFoundError"; import env from "../../enviroment/env"; -const jwt = require("jsonwebtoken"); -const removeChunks = require("./utils/removeChunks"); -const User = require("../../models/user"); - - -const Folder = require("../../models/folder"); +import jwt from "jsonwebtoken"; +import Folder from "../../models/folder"; import sortBySwitch from "../../utils/sortBySwitch"; import createQuery from "../../utils/createQuery"; -const ffmpeg = require("fluent-ffmpeg"); -const temp = require("temp").track(); -const progress = require("progress-stream"); -const fs = require("fs") import DbUtilFile from "../../db/utils/fileUtils/index"; import DbUtilFolder from "../../db/utils/folderUtils"; +import { UserInterface } from "../../models/user"; +import { FileInterface } from "../../models/file"; const dbUtilsFile = new DbUtilFile(); const dbUtilsFolder = new DbUtilFolder(); - -import { UserInterface } from "../../models/user"; -import { FileInterface } from "../../models/file"; class MongoFileService { @@ -56,7 +39,7 @@ class MongoFileService { makePublic = async(user: UserInterface, fileID: string) => { const userID = user._id; - const token = await jwt.sign({_id: userID.toString()}, env.password); + const token = await jwt.sign({_id: userID.toString()}, env.password!); const file = await dbUtilsFile.makePublic(fileID, userID, token); @@ -81,7 +64,7 @@ class MongoFileService { makeOneTimePublic = async(userID: string, fileID: string) => { - const token = await jwt.sign({_id: userID.toString()}, env.password); + const token = await jwt.sign({_id: userID.toString()}, env.password!); const file = await dbUtilsFile.makeOneTimePublic(fileID, userID, token); @@ -176,7 +159,7 @@ class MongoFileService { const key = user.getEncryptionKey(); - const decoded = await jwt.verify(tempToken, env.password); + const decoded = await jwt.verify(tempToken, env.password!) as any; const publicKey = decoded.iv; diff --git a/backend/services/FileService/utils/createThumbnailS3.ts b/backend/services/FileService/utils/createThumbnailS3.ts deleted file mode 100644 index ebe96d9..0000000 --- a/backend/services/FileService/utils/createThumbnailS3.ts +++ /dev/null @@ -1,169 +0,0 @@ -import mongoose from "../../../db/mongoose"; -const conn = mongoose.connection; -const crypto= require("crypto"); -import Thumbnail from "../../../models/thumbnail"; -const ObjectID = require('mongodb').ObjectID -const sharp = require("sharp"); -const concat = require("concat-stream") -import {FileInterface} from "../../../models/file"; -import {UserInterface} from "../../../models/user"; -import fs from "fs"; -import uuid from "uuid"; -import env from "../../../enviroment/env"; -import s3 from "../../../db/s3"; -import awaitUploadStreamS3 from "../../ChunkService/utils/awaitUploadStreamS3"; - -const createThumbnailS3 = (file: FileInterface, filename: string, user: UserInterface) => { - - return new Promise((resolve, reject) => { - - const password = user.getEncryptionKey(); - - let CIPHER_KEY = crypto.createHash('sha256').update(password).digest() - - const thumbnailFilename = uuid.v4(); - - const params: any = {Bucket: env.s3Bucket, Key: file.metadata.s3ID!}; - - const readStream = s3.getObject(params).createReadStream(); - - //const readStream = fs.createReadStream(file.metadata.filePath!); - //const writeStream = fs.createWriteStream(env.fsDirectory + thumbnailFilename); - - - const decipher = crypto.createDecipheriv('aes256', CIPHER_KEY, file.metadata.IV); - - - - - readStream.on("error", (e: Error) => { - console.log("File service upload thumbnail error", e); - resolve(file); - }) - - // writeStream.on("error", (e: Error) => { - // console.log("File service upload write thumbnail error", e); - // resolve(file); - // }) - - decipher.on("error", (e: Error) => { - console.log("File service upload thumbnail decipher error", e); - resolve(file) - }) - - try { - - - const thumbnailIV = crypto.randomBytes(16); - - const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); - - const imageResize = sharp().resize(300).on("error", (e: Error) => { - - console.log("resize error", e); - resolve(file); - - }) - - const paramsWrite: any = { - Bucket: env.s3Bucket, - Body : readStream.pipe(decipher).pipe(imageResize).pipe(thumbnailCipher), - Key : thumbnailFilename - }; - - //readStream.pipe(decipher).pipe(imageResize).pipe(thumbnailCipher).pipe(writeStream); - //await awaitUploadStreamS3(paramsWrite); - - s3.upload(paramsWrite, async(err: any, data: any) => { - - if (err) { - console.log("Amazon Upload Error", err); - reject("Amazon upload error"); - } - - console.log("Thumbnail written"); - - const thumbnailModel = new Thumbnail({name: thumbnailFilename, owner: user._id, IV: thumbnailIV, s3ID: thumbnailFilename}); - - await thumbnailModel.save(); - - const getUpdatedFile = await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) - - let updatedFile: FileInterface = getUpdatedFile.value; - - updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} as FileInterface; - - resolve(updatedFile); - }) - - // writeStream.on("finish", async() => { - // console.log("Thumbnail written"); - - // const thumbnailModel = new Thumbnail({name: filename, owner: user._id, IV: thumbnailIV, path: env.fsDirectory + thumbnailFilename}); - - // await thumbnailModel.save(); - - // let updatedFile = await conn.db.collection("fs.files") - // .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) - - // updatedFile = updatedFile.value; - - // updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} - - // resolve(updatedFile); - // }) - - } catch (e) { - - console.log("Thumbnail error", e); - resolve(file); - } - - // try { - - // const concatStream = concat(async(bufferData: Buffer) => { - - // const thumbnailIV = crypto.randomBytes(16); - - // const thumbnailCipher = crypto.createCipheriv("aes256", CIPHER_KEY, thumbnailIV); - - // bufferData = Buffer.concat([thumbnailIV, thumbnailCipher.update(bufferData), thumbnailCipher.final()]); - - // const thumbnailModel = new Thumbnail({name: filename, owner: user._id, data: bufferData}); - - // await thumbnailModel.save(); - - // let updatedFile = await conn.db.collection("fs.files") - // .findOneAndUpdate({"_id": file._id}, {"$set": {"metadata.hasThumbnail": true, "metadata.thumbnailID": thumbnailModel._id}}) - - // updatedFile = updatedFile.value; - - // updatedFile = {...updatedFile, metadata: {...updatedFile.metadata, hasThumbnail: true, thumbnailID: thumbnailModel._id}} - - // resolve(updatedFile); - - // }).on("error", (e: Error) => { - // console.log("File service upload concat stream error", e); - // resolve(file); - // }) - - // const imageResize = sharp().resize(300).on("error", (e: Error) => { - - // console.log("resize error", e); - // resolve(file); - // }) - - // readStream.pipe(decipher).pipe(imageResize).pipe(concatStream); - - - // } catch (e) { - - // console.log(e); - // resolve(file); - // } - - }) -} - -export default createThumbnailS3; \ No newline at end of file diff --git a/backend/services/FolderService/index.ts b/backend/services/FolderService/index.ts index 6f72758..3a6da05 100644 --- a/backend/services/FolderService/index.ts +++ b/backend/services/FolderService/index.ts @@ -2,11 +2,7 @@ import Folder from "../../models/folder"; import InternalServerError from "../../utils/InternalServerError"; import NotFoundError from "../../utils/NotFoundError"; import UtilsFile from "../../db/utils/fileUtils"; -import {ObjectID} from "mongodb"; import UtilsFolder from "../../db/utils/folderUtils"; -import mongoose from "../../db/mongoose"; -const conn = mongoose.connection; -import Thumbnail from "../../models/thumbnail"; import sortBySwitch from "../../utils/sortBySwitchFolder"; const utilsFile = new UtilsFile(); diff --git a/backend/services/UserService/index.ts b/backend/services/UserService/index.ts index fc09e63..79f3a39 100644 --- a/backend/services/UserService/index.ts +++ b/backend/services/UserService/index.ts @@ -1,7 +1,6 @@ import User, {UserInterface} from "../../models/user"; -const bcrypt = require("bcrypt"); -const crypto = require("crypto"); -const NotFoundError = require("../../utils/NotFoundError"); +import bcrypt from "bcrypt"; +import NotFoundError from "../../utils/NotFoundError"; import InternalServerError from "../../utils/InternalServerError"; import NotAuthorizedError from "../../utils/NotAuthorizedError"; diff --git a/package.json b/package.json index dd434c1..47463d9 100755 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "@babel/types": "^7.9.5", "@types/bcrypt": "^3.0.0", "@types/compression": "^1.7.0", + "@types/concat-stream": "^1.6.0", "@types/connect-busboy": "0.0.2", "@types/express": "^4.17.6", "@types/helmet": "0.0.45", @@ -47,6 +48,7 @@ "@types/mongodb": "^3.5.5", "@types/mongoose": "^5.7.10", "@types/node": "^13.11.1", + "@types/sharp": "^0.25.0", "@types/uuid": "^7.0.2", "@types/validator": "^13.0.0", "aws-sdk": "^2.657.0", From 63ed58b9908f3695c7f6390d3194c0f9dbfb1222 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 8 May 2020 16:41:58 -0400 Subject: [PATCH 021/129] Improved webpack config file, and also improved the way env variables are loaded --- .DS_Store | Bin 6148 -> 6148 bytes backend/enviroment/getEnvVariables.ts | 23 ++++++++++++++++ backend/key/getKey.ts | 2 +- backend/server/server.ts | 4 ++- backend/server/serverStart.ts | 8 ++++-- package.json | 24 ++++------------- webpack.config.js | 36 ++++++++++++++++---------- 7 files changed, 60 insertions(+), 37 deletions(-) create mode 100644 backend/enviroment/getEnvVariables.ts diff --git a/.DS_Store b/.DS_Store index 1bee93502d9db1577d91a9ffe873236cfc7e5d4b..863a1dcc238981dcc241c299dc67d0bfd4767a49 100644 GIT binary patch delta 76 zcmZoMXfc@J&&aVcU^g=($7UWDE=KNThJ1!RhBSsuhV;pDEd3lt<|aA{M#e^ypR>wN XzQm%!%f^7DWHT!(BhzMfj=%f>)e91I delta 33 pcmZoMXfc@J&&akhU^g=(+h!gXF2>E`Y#$gmHZU@7X6N|J4*;cp38er4 diff --git a/backend/enviroment/getEnvVariables.ts b/backend/enviroment/getEnvVariables.ts new file mode 100644 index 0000000..7f071b0 --- /dev/null +++ b/backend/enviroment/getEnvVariables.ts @@ -0,0 +1,23 @@ +import path from "path"; + +const getEnvVariables = () => { + + const configPath = path.join(__dirname, "..", "..", "config"); + + const processType = process.env.NODE_ENV; + + if (processType === 'production') { + + require('dotenv').config({ path: configPath + "/prod.env"}) + + } else if (processType === 'development') { + + require('dotenv').config({ path: configPath + "/dev.env"}) + + } else if (processType === 'test') { + + require('dotenv').config({ path: configPath + "/test.env"}) + } +} + +export default getEnvVariables; \ No newline at end of file diff --git a/backend/key/getKey.ts b/backend/key/getKey.ts index c77429f..ef6ece9 100644 --- a/backend/key/getKey.ts +++ b/backend/key/getKey.ts @@ -9,7 +9,7 @@ const getKey = async() => { env.key = process.env.KEY - } else if (process.env.NODE_ENV) { + } else if (process.env.NODE_ENV === "production") { let password: string = await prompt("Enter Server Encryption Password: ", {method: "hide"}); diff --git a/backend/server/server.ts b/backend/server/server.ts index cd46310..6f4c5a2 100755 --- a/backend/server/server.ts +++ b/backend/server/server.ts @@ -12,13 +12,15 @@ import busboy from "connect-busboy"; import compression from "compression"; import http from "http"; + + const app = express(); const publicPath = path.join(__dirname, "..", "..", "public"); let server: any; let serverHttps: any; -if (process.env.NODE_ENV === 'production') { +if (process.env.SSL === 'true') { const cert = fs.readFileSync("certificate.crt") const ca = fs.readFileSync("certificate.ca-bundle"); diff --git a/backend/server/serverStart.ts b/backend/server/serverStart.ts index d5b6ddb..5935c7a 100644 --- a/backend/server/serverStart.ts +++ b/backend/server/serverStart.ts @@ -1,3 +1,5 @@ +import getEnvVariables from "../enviroment/getEnvVariables"; +getEnvVariables(); import getKey from "../key/getKey"; import servers from "./server"; @@ -7,7 +9,9 @@ const serverStart = async() => { await getKey(); - if (process.env.NODE_ENV === 'production') { + console.log("ENV", process.env.NODE_ENV); + + if (process.env.NODE_ENV === 'production' && process.env.SSL === "true") { server.listen(process.env.HTTP_PORT,process.env.URL, () => { console.log("Http Server Running On Port:", process.env.HTTP_PORT); @@ -17,7 +21,7 @@ const serverStart = async() => { console.log( 'Https Server Running On Port:', process.env.HTTPS_PORT); } ); - } else if (process.env.NODE_ENV === 'production-no-ssl') { + } else if (process.env.NODE_ENV === 'production') { server.listen(process.env.HTTP_PORT,process.env.URL, () => { console.log("Http Server (No-SSL) Running On Port:", process.env.HTTP_PORT); diff --git a/package.json b/package.json index 47463d9..89589b1 100755 --- a/package.json +++ b/package.json @@ -5,26 +5,12 @@ "license": "GNU General Public License v3.0", "scripts": { "server": "live-server public/", - "build": "cross-env NODE_ENV=production webpack -p --env production", - "build:no-ssl": "cross-env NODE_ENV=production-no-ssl webpack -p --env production-no-ssl", - "build:dev": "webpack", + "build": "webpack -p --env production", + "build:dev": "webpack --env development", "dev-server": "webpack-dev-server", - "test": "cross-env NODE_ENV=test env-cmd -f ./config/test.env jest --config=jest.config.json --watchAll --runInBand", - "start:dev": "env-cmd -f ./config/dev.env node server/serverStart.js", - "start": "cross-env NODE_ENV=production env-cmd -f ./config/prod.env node server/serverStart.js --env production", - "start:no-ssl": "cross-env NODE_ENV=production-no-ssl env-cmd -f ./config/prod.env node dist/server/serverStart.js --env production-no-ssl", - "clean-database": "env-cmd -f ./config/prod.env node serverUtils/cleanDatabase.js", - "clean-database:dev": "env-cmd -f ./config/dev.env node serverUtils/cleanDatabase.js", - "backup-database": "env-cmd -f ./config/prod.env node serverUtils/backupDatabase.js", - "backup-database:dev": "env-cmd -f ./config/dev.env node serverUtils/backupDatabase.js", - "restore-database": "env-cmd -f ./config/prod.env node serverUtils/restoreDatabase.js", - "restore-database:dev": "env-cmd -f ./config/dev.env node serverUtils/restoreDatabase.js", - "delete-temp-database": "env-cmd -f ./config/prod.env node serverUtils/deleteTempDatabase.js", - "delete-temp-database:dev": "env-cmd -f ./config/dev.env node serverUtils/deleteTempDatabase.js", - "delete-database": "env-cmd -f ./config/prod.env node serverUtils/deleteDatabase.js", - "delete-database:dev": "env-cmd -f ./config/dev.env node serverUtils/deleteDatabase.js", - "change-password-database": "env-cmd -f ./config/prod.env node serverUtils/changeEncryptionPassword.js", - "change-password-database:dev": "env-cmd -f ./config/dev.env node serverUtils/changeEncryptionPassword.js", + "test": "NODE_ENV=test env-cmd -f ./config/test.env jest --config=jest.config.json --watchAll --runInBand", + "start:dev": "NODE_ENV=development node dist/server/serverStart.js", + "start": "NODE_ENV=production node dist/server/serverStart.js --env production", "create-indexes-database": "env-cmd -f ./config/prod.env node serverUtils/createIndexes.js", "create-indexes-database:dev": "env-cmd -f ./config/dev.env node serverUtils/createIndexes.js", "init": "node serverUtils/initServer.js", diff --git a/webpack.config.js b/webpack.config.js index 53ad704..196be09 100755 --- a/webpack.config.js +++ b/webpack.config.js @@ -6,25 +6,33 @@ const CompressionPlugin = require("compression-webpack-plugin"); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const path = require("path"); -process.env.NODE_ENV = process.env.NODE_ENV || "development" +//console.log("node env", process.env.NODE_ENV); -console.log("node env", process.env.NODE_ENV); +//process.env.NODE_ENV = process.env.NODE_ENV || "development" -if (process.env.NODE_ENV === "test") { - - require("dotenv").config({path: ".env.test"}) - -} else if (process.env.NODE_ENV === "development") { - - require("dotenv").config({path: ".env.development"}) - -} else { - require("dotenv").config({path: ".env.production"}); -} +//console.log("node env", process.env.NODE_ENV); module.exports = (env) => { - const isProduction = (env === "production" || env === "production-no-ssl") + + if (env === "test") { + + console.log("Loading test env variables") + require("dotenv").config({path: ".env.test"}) + + } else if (env === "development") { + + console.log("Loading development env variables") + require("dotenv").config({path: ".env.development"}) + + } else { + + console.log("Loading production env variables") + require("dotenv").config({path: ".env.production"}); + } + + console.log("env", env); + const isProduction = env === "production" console.log("is prod", isProduction); const CSSExtract = new MiniCssExtractPlugin({ filename: 'styles.css' }); From 01f3ce8176930441986138ec836c080202a0a1d7 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 8 May 2020 17:44:15 -0400 Subject: [PATCH 022/129] added return statement if no root path for storage is provided --- backend/controllers/storage.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/controllers/storage.ts b/backend/controllers/storage.ts index db7bb48..221bedb 100644 --- a/backend/controllers/storage.ts +++ b/backend/controllers/storage.ts @@ -21,6 +21,10 @@ class StorageController { } try { + + if (!env.root || env.root.length === 0) { + return; + } const info = await disk.check(env.root!); From d4354437427d44bdba47997a5748d42f7339edfe Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 8 May 2020 18:54:36 -0400 Subject: [PATCH 023/129] added better heroku support --- backend/server/serverStart.ts | 16 ++++++++-------- package.json | 15 +++++++++------ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/backend/server/serverStart.ts b/backend/server/serverStart.ts index 5935c7a..53ca0b8 100644 --- a/backend/server/serverStart.ts +++ b/backend/server/serverStart.ts @@ -22,21 +22,21 @@ const serverStart = async() => { } ); } else if (process.env.NODE_ENV === 'production') { + + const port = process.env.HTTP_PORT || process.env.PORT; - server.listen(process.env.HTTP_PORT,process.env.URL, () => { - console.log("Http Server (No-SSL) Running On Port:", process.env.HTTP_PORT); + server.listen(port, process.env.URL, () => { + console.log("Http Server (No-SSL) Running On Port:", port); }) } else { - server.listen(process.env.HTTP_PORT,process.env.URL, () => { - console.log("Development Server Running On Port:", process.env.HTTP_PORT); + const port = process.env.HTTP_PORT || process.env.PORT; + + server.listen(port, process.env.URL, () => { + console.log("Development Server Running On Port:", port); }) } } serverStart(); - - - - diff --git a/package.json b/package.json index 89589b1..f120c47 100755 --- a/package.json +++ b/package.json @@ -1,12 +1,15 @@ { "name": "my-drive", - "version": "1.0.0", + "version": "1.0.1", "main": "index.js", "license": "GNU General Public License v3.0", + "engines": { + "node": "13.11.0" + }, "scripts": { "server": "live-server public/", - "build": "webpack -p --env production", - "build:dev": "webpack --env development", + "build": "tsc && webpack -p --env production", + "build:dev": "tsc && webpack --env development", "dev-server": "webpack-dev-server", "test": "NODE_ENV=test env-cmd -f ./config/test.env jest --config=jest.config.json --watchAll --runInBand", "start:dev": "NODE_ENV=development node dist/server/serverStart.js", @@ -14,7 +17,7 @@ "create-indexes-database": "env-cmd -f ./config/prod.env node serverUtils/createIndexes.js", "create-indexes-database:dev": "env-cmd -f ./config/dev.env node serverUtils/createIndexes.js", "init": "node serverUtils/initServer.js", - "heroku-postbuild": "yarn run build:prod" + "heroku-postbuild": "npm run build" }, "dependencies": { "@babel/core": "^7.8.4", @@ -33,7 +36,7 @@ "@types/jsonwebtoken": "^8.3.9", "@types/mongodb": "^3.5.5", "@types/mongoose": "^5.7.10", - "@types/node": "^13.11.1", + "@types/node": "^13.13.5", "@types/sharp": "^0.25.0", "@types/uuid": "^7.0.2", "@types/validator": "^13.0.0", @@ -51,6 +54,7 @@ "core-js": "^3.6.4", "crypto": "^1.0.1", "diskusage": "^1.1.3", + "dotenv": "^8.2.0", "express": "^4.17.1", "fluent-ffmpeg": "^2.1.2", "helmet": "^3.21.2", @@ -91,7 +95,6 @@ "cross-env": "^6.0.3", "css-loader": "^3.4.2", "dart-sass": "^1.25.0", - "dotenv": "^8.2.0", "env-cmd": "^10.1.0", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.2", From ff5022af4b9e7d4d3714f964da5a434e57e86898 Mon Sep 17 00:00:00 2001 From: subnub Date: Sat, 9 May 2020 14:03:01 -0400 Subject: [PATCH 024/129] Really imrpoved the mobile UI, espically on iOS, started working on making a docker image --- .dockerignore | 1 + Dockerfile | 15 +++++++ src/components/MainSection/MainSection.js | 5 ++- src/components/Subbar/Subbar.js | 49 ++++++++++------------- src/styles/components/_File.scss | 5 ++- src/styles/components/_Filter.scss | 4 ++ src/styles/components/_Header.scss | 15 ++++++- src/styles/components/_HomePage.scss | 37 ++++++++++++++--- src/styles/components/_LeftSection.scss | 12 ++++++ src/styles/components/_Popup-window.scss | 20 +++++---- src/styles/components/_QuickAccess.scss | 3 ++ src/styles/components/_SettingsMenu.scss | 1 + src/styles/components/_Spacer.scss | 7 ++++ src/styles/components/_Subbar.scss | 15 +++++++ 14 files changed, 144 insertions(+), 45 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7179ee5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM node + +WORKDIR /usr/app + +COPY package*.json ./ + +RUN npm install + +COPY . . + +RUN npm run build + +EXPOSE 8000 + +RUN npm run start \ No newline at end of file diff --git a/src/components/MainSection/MainSection.js b/src/components/MainSection/MainSection.js index 3545864..59d3d16 100644 --- a/src/components/MainSection/MainSection.js +++ b/src/components/MainSection/MainSection.js @@ -26,13 +26,14 @@ const MainSection = React.forwardRef((props, ref) => {
{(props.quickFiles.length !== 0 && props.parent === "/") ? -
+
: - undefined} +
+
} diff --git a/src/components/Subbar/Subbar.js b/src/components/Subbar/Subbar.js index 7c48ef8..1b764a5 100644 --- a/src/components/Subbar/Subbar.js +++ b/src/components/Subbar/Subbar.js @@ -11,38 +11,33 @@ export class Subbar extends React.Component { return (
- {!this.props.isMobile ? undefined : - -
+
- + -

New

+

New

-
-
- -

Folder

-
+
+
+ +

Folder

+
-
- - -

File Upload

- - -
+
+ + +

File Upload

+ + +
-
- -

Folder Upload

-
-
-
- - - } +
+ +

Folder Upload

+
+
+
diff --git a/src/styles/components/_File.scss b/src/styles/components/_File.scss index b71aa27..292c7d8 100644 --- a/src/styles/components/_File.scss +++ b/src/styles/components/_File.scss @@ -26,7 +26,7 @@ @media (max-width: $desktop-breakpoint) { flex-basis: 28%; max-width: 30.2%; - position: unset + position: unset; } } @@ -116,7 +116,8 @@ -webkit-tap-highlight-color: transparent; @media (max-width: $desktop-breakpoint) { - position: unset + position: unset; + overflow: hidden; } } diff --git a/src/styles/components/_Filter.scss b/src/styles/components/_Filter.scss index 0939195..6d19643 100644 --- a/src/styles/components/_Filter.scss +++ b/src/styles/components/_Filter.scss @@ -3,6 +3,10 @@ justify-content: space-between; align-items: center; height: 52px; + + @media (max-width: $desktop-breakpoint) { + width: 100vw; + } } .filter__folder-wrapper { diff --git a/src/styles/components/_Header.scss b/src/styles/components/_Header.scss index 04b5dc2..8a3810d 100644 --- a/src/styles/components/_Header.scss +++ b/src/styles/components/_Header.scss @@ -9,6 +9,7 @@ position: fixed; /* top: 0; */ width: 100%; + z-index: 1; @media (max-width: $desktop-breakpoint) { text-align: center; @@ -16,10 +17,16 @@ flex-direction: row; border-bottom: 1px solid #dadce0; justify-content: space-between; - position: initial; + position: fixed; + background: white; + top: 0; + left: 0; + right: 0; width: 100%; height: 80px; padding: 0; + z-index: 2; + // background: blue; } } @@ -155,6 +162,12 @@ display: flex; flex-direction: row; justify-content: space-between; + align-items: center; + height: 50px; + + // @media (max-width: $desktop-breakpoint) { + // height: 60px; + // } } .header__input__suggested__item:hover { diff --git a/src/styles/components/_HomePage.scss b/src/styles/components/_HomePage.scss index 50bf44c..00e8fd8 100644 --- a/src/styles/components/_HomePage.scss +++ b/src/styles/components/_HomePage.scss @@ -10,7 +10,9 @@ -ms-overflow-style: none; /* IE 10+ */ &::-webkit-scrollbar { width: 0px; + height: unset; background: transparent; /* Chrome/Safari/Webkit */ + overflow-y: unset; } } @@ -26,7 +28,8 @@ // margin-top: 77px; display: flex; flex-direction: column; - overflow-x: hidden; + //overflow-x: hidden; + overflow: hidden; width: unset; } @@ -38,12 +41,25 @@ height: -webkit-fill-available; display: inherit; overflow: hidden; + + @media (max-width: $desktop-breakpoint) { + height: unset; + } } -.outter-wrapper { - height: 100vh; - width: 100vw; -} +// .outter-wrapper { +// height: 100%; +// width: 100%; +// overflow: hidden; +// @media (max-width: $desktop-breakpoint) { +// //background: blue; +// position: fixed; +// top: 0; +// left: 0; +// right: 0; +// bottom: 0; +// } +// } .main-page { background: white; @@ -55,10 +71,19 @@ @media (max-width: $desktop-breakpoint) { background: #fff; /* height: 100vh; */ - height: calc(100% - 80px); + // height: calc(100% - 80px); + height: unset; width: 100vw; display: inline-flex; padding: 0; + overflow: hidden; + // position: fixed; + // padding: 0; + // bottom: 0; + // left: 0; + // right: 0; + // margin-top: 80px; + //background: red; } } diff --git a/src/styles/components/_LeftSection.scss b/src/styles/components/_LeftSection.scss index d431f41..fd36ac0 100644 --- a/src/styles/components/_LeftSection.scss +++ b/src/styles/components/_LeftSection.scss @@ -35,6 +35,14 @@ } } +.add-button-2 { + + display: none; + @media (max-width: $desktop-breakpoint) { + display: inline-flex; + } +} + .add-button__img { width: 30px; height: 30px; @@ -108,6 +116,10 @@ // padding: 0 140px 132px 36px; margin-top: 52px; box-shadow: 0 1px 2px 0 rgba(60,64,67,0.302),0 1px 3px 1px rgba(60,64,67,0.149); + + @media (max-width: $desktop-breakpoint) { + margin-top: 75px; + } } .add_button__option__add-folder-wrapper { diff --git a/src/styles/components/_Popup-window.scss b/src/styles/components/_Popup-window.scss index ebd79c5..4cf1e4c 100644 --- a/src/styles/components/_Popup-window.scss +++ b/src/styles/components/_Popup-window.scss @@ -22,6 +22,7 @@ @media (max-width: $desktop-breakpoint) { width: 100%; height: 100%; + z-index: 2; } } @@ -60,12 +61,13 @@ .popup-window__image--loaded { - width: 100%; - max-height: 100%; + width: 94vw; + max-height: 70vh; object-fit: cover; opacity: 1; - max-width: 100%; + max-width: 94vw; border-radius: 6px; + height: 70vh; cursor: pointer; } @@ -94,13 +96,17 @@ align-items: center; display: flex; margin-bottom: 50px; - height: 65%; - width: 99%; - max-width: 99%; + overflow: visible; + // height: 65%; + // width: 99%; + max-width: 100%; overflow: hidden; position: relative; justify-content: center; - max-height: 50%; + // max-height: 50%; + height: 70%; + width: 100%; + max-height: 70%; } } diff --git a/src/styles/components/_QuickAccess.scss b/src/styles/components/_QuickAccess.scss index 0925d44..b9931f5 100644 --- a/src/styles/components/_QuickAccess.scss +++ b/src/styles/components/_QuickAccess.scss @@ -9,6 +9,9 @@ /* overflow-y: hidden; */ overflow: hidden; + @media (max-width: $desktop-breakpoint) { + // margin-top: calc(80px + 3vh); + } } .quickaccess__item { diff --git a/src/styles/components/_SettingsMenu.scss b/src/styles/components/_SettingsMenu.scss index 69a1c27..c7bb3c8 100644 --- a/src/styles/components/_SettingsMenu.scss +++ b/src/styles/components/_SettingsMenu.scss @@ -17,6 +17,7 @@ @media (max-width: $desktop-breakpoint) { width: 100%; height: 100%; + z-index: 2; } } diff --git a/src/styles/components/_Spacer.scss b/src/styles/components/_Spacer.scss index 7b32b87..e9f92ff 100644 --- a/src/styles/components/_Spacer.scss +++ b/src/styles/components/_Spacer.scss @@ -3,6 +3,13 @@ height: 37px; } +.spacer__mobile { + + @media (max-width: $desktop-breakpoint) { + margin-top: calc(80px + 6vh); + } +} + .spacer__title { color: #5f6368; margin-left: 22px; diff --git a/src/styles/components/_Subbar.scss b/src/styles/components/_Subbar.scss index 9e00ba1..92fe980 100644 --- a/src/styles/components/_Subbar.scss +++ b/src/styles/components/_Subbar.scss @@ -41,6 +41,21 @@ user-select: none; // overflow-x: scroll; + @media (max-width: $desktop-breakpoint) { + width: 100vw; + display: flex; + flex-direction: row; + align-items: center; + height: 7vh; + min-height: 50px; + user-select: none; + position: fixed; + top: 80px; + background: white; + z-index: 1; + } + + } .path__block { From ca1e313867ef245a3bd88708b43e3ab367f41fbc Mon Sep 17 00:00:00 2001 From: subnub Date: Sat, 9 May 2020 15:53:13 -0400 Subject: [PATCH 025/129] more improvments to mobile --- src/styles/components/_Header.scss | 8 ++++---- src/styles/components/_HomePage.scss | 18 ++++++++++++++++++ src/styles/components/_Subbar.scss | 16 ++++++++++++++++ 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/styles/components/_Header.scss b/src/styles/components/_Header.scss index 8a3810d..3b4d4e9 100644 --- a/src/styles/components/_Header.scss +++ b/src/styles/components/_Header.scss @@ -163,11 +163,11 @@ flex-direction: row; justify-content: space-between; align-items: center; - height: 50px; + - // @media (max-width: $desktop-breakpoint) { - // height: 60px; - // } + @media (max-width: $desktop-breakpoint) { + height: 55px; + } } .header__input__suggested__item:hover { diff --git a/src/styles/components/_HomePage.scss b/src/styles/components/_HomePage.scss index 00e8fd8..fbc83dc 100644 --- a/src/styles/components/_HomePage.scss +++ b/src/styles/components/_HomePage.scss @@ -12,6 +12,10 @@ width: 0px; height: unset; background: transparent; /* Chrome/Safari/Webkit */ + } + + @media (max-width: $desktop-breakpoint) { + overflow-y: unset; } @@ -47,6 +51,20 @@ } } +.outter-wrapper { + + @media (max-width: $desktop-breakpoint) { + + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* IE 10+ */ + &::-webkit-scrollbar { + width: 0px; + height: unset; + background: transparent; /* Chrome/Safari/Webkit */ + } + } +} + // .outter-wrapper { // height: 100%; // width: 100%; diff --git a/src/styles/components/_Subbar.scss b/src/styles/components/_Subbar.scss index 92fe980..f021f1d 100644 --- a/src/styles/components/_Subbar.scss +++ b/src/styles/components/_Subbar.scss @@ -66,6 +66,12 @@ flex-direction: row; align-items: center; cursor: pointer; + + @media (max-width: $desktop-breakpoint) { + height: 52px; + max-height: 52px; + } + } .path__wrapper { @@ -104,10 +110,20 @@ /* height: fit-content; */ padding: 0px 0 2px 0; margin-top: 19px; + + @media (max-width: $desktop-breakpoint) { + line-height: normal; + padding: unset; + margin: unset; + text-align: center; + } } .path__image { height: fit-content; /* width: 30px; */ // margin-top: 7px; + @media (max-width: $desktop-breakpoint) { + //margin-top: 3px; + } } \ No newline at end of file From d497799c7eaf08050747e1743de0a000a046b3f5 Mon Sep 17 00:00:00 2001 From: subnub Date: Sat, 9 May 2020 17:36:45 -0400 Subject: [PATCH 026/129] Fixed more styling for mobile, also fixed the context menu not appearing on iOS for file items, still need to add the fix to folders, and quickitems --- src/components/FileItem/FileItem.js | 11 ++- src/components/FileItem/index.js | 92 ++++++++++++++++++------- src/styles/base/_base.scss | 10 ++- src/styles/components/_ContentMenu.scss | 7 ++ src/styles/components/_File.scss | 49 +++++++++---- src/styles/components/_MoverMenu.scss | 1 + src/styles/components/_QuickAccess.scss | 11 ++- src/styles/components/_Sharemenu.scss | 1 + src/styles/components/_Spacer.scss | 6 ++ src/styles/components/_Uploader.scss | 3 + 10 files changed, 149 insertions(+), 42 deletions(-) diff --git a/src/components/FileItem/FileItem.js b/src/components/FileItem/FileItem.js index bff1cdc..9ea27c3 100644 --- a/src/components/FileItem/FileItem.js +++ b/src/components/FileItem/FileItem.js @@ -37,13 +37,18 @@ const FileItem = (props) => {
{props.fileClick(props._id, props)}} - onContextMenu={(e) => props.getContextMenu(e)}> + onContextMenu={(e) => props.getContextMenu(e)} + onTouchStart={props.onTouchStart} + onTouchEnd={props.onTouchEnd} + onTouchMove={props.onTouchMove}>
- {props.image.src = "/images/file-svg.svg"; props.image.className="file__image"; props.failedToLoad = true;}}/> + {props.image.src = "/images/file-svg.svg"; props.image.className="file__image"; props.failedToLoad = true;}} + />
-
{capitalize(props.filename)}
+
{capitalize(props.filename)}
{(props.rightSelected === props._id && props._id === props.selected) ? diff --git a/src/components/FileItem/index.js b/src/components/FileItem/index.js index cd1ce06..7b404f0 100644 --- a/src/components/FileItem/index.js +++ b/src/components/FileItem/index.js @@ -15,6 +15,8 @@ class FileItemContainer extends React.Component { this.failedToLoad = false; + this.lastTouch = 0; + this.state = { contextMenuPos: {}, imageSrc: "/images/file-svg.svg", @@ -95,10 +97,42 @@ class FileItemContainer extends React.Component { } } + onTouchStart = () => { + //alert("Touch start"); + const date = new Date(); + this.lastTouch = date.getTime(); + } + + onTouchMove = () => { + + this.lastTouch = 0; + } + + onTouchEnd = () => { + + if (this.lastTouch === 0) { + + //alert("last touch 0"); + return; + } + + const date = new Date(); + const difference = date - this.lastTouch; + //alert("Touch end: " + difference) + //alert("touch end: " + difference); + this.lastTouch = 0; + + if (difference > 500) { + //alert("Context menu"); + this.getContextMenu(); + } + + } + getContextMenu = (e) => { - e.preventDefault(); - + if (e) e.preventDefault(); + const isMobile = mobileCheck(); const windowX = window.innerWidth; @@ -106,33 +140,40 @@ class FileItemContainer extends React.Component { let styleObj = {right:0, left:0, top: "-38px", bottom: 0} - const clientY = e.nativeEvent.clientY; - const clientX = e.nativeEvent.clientX; - - if (clientY < (windowY / 3)) { - - styleObj = {bottom:"-190px", top:"unset"} - } - - if (clientY > ((windowY / 4) * 3.5)) { - - styleObj = {bottom:"unset", top: "-190px"} - } - - if (clientX > windowX / 2) { - - styleObj = {...styleObj, left:"unset", right:0} - - } else { - - styleObj = {...styleObj, left:0, right:"unset"} - } - if (isMobile) { styleObj = {bottom: 0, left: "2px", top: "unset", right: "unset"} + + } else { + + const clientY = e.nativeEvent.clientY; + const clientX = e.nativeEvent.clientX; + + if (clientY < (windowY / 3)) { + + styleObj = {bottom:"-190px", top:"unset"} + } + + if (clientY > ((windowY / 4) * 3.5)) { + + styleObj = {bottom:"unset", top: "-190px"} + } + + if (clientX > windowX / 2) { + + styleObj = {...styleObj, left:"unset", right:0} + + } else { + + styleObj = {...styleObj, left:0, right:"unset"} + } } + // if (isMobile) { + + // styleObj = {bottom: 0, left: "2px", top: "unset", right: "unset"} + // } + this.setState(() => ({...this.state, contextMenuPos: styleObj})) this.props.dispatch(startSetSelectedItem(this.props._id, true, false)) @@ -167,6 +208,9 @@ class FileItemContainer extends React.Component { return } diff --git a/src/styles/base/_base.scss b/src/styles/base/_base.scss index 3707c06..e0d0ede 100644 --- a/src/styles/base/_base.scss +++ b/src/styles/base/_base.scss @@ -3,7 +3,15 @@ } html { - font-size: 62.5% + font-size: 62.5%; + // --webkit-touch-callout: default; +} + +input[type=text], +input[type=email], +input[type=password], +textarea { + -webkit-appearance: none; } body { diff --git a/src/styles/components/_ContentMenu.scss b/src/styles/components/_ContentMenu.scss index d2ce286..f37a412 100644 --- a/src/styles/components/_ContentMenu.scss +++ b/src/styles/components/_ContentMenu.scss @@ -16,6 +16,13 @@ width: 99%; border-bottom-left-radius: 0; border-bottom-right-radius: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; } } diff --git a/src/styles/components/_File.scss b/src/styles/components/_File.scss index 292c7d8..1652c4a 100644 --- a/src/styles/components/_File.scss +++ b/src/styles/components/_File.scss @@ -15,18 +15,19 @@ // overflow: hidden; position: relative; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + // -webkit-touch-callout: none; + // -webkit-user-select: none; + // -khtml-user-select: none; + // -moz-user-select: none; + // -ms-user-select: none; + // user-select: none; -webkit-tap-highlight-color: transparent; @media (max-width: $desktop-breakpoint) { flex-basis: 28%; max-width: 30.2%; position: unset; + //-webkit-touch-callout: default; } } @@ -44,6 +45,12 @@ max-width: 23vw; text-align: center; font-weight: 300; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; // text-transform: capitalize; } @@ -65,11 +72,26 @@ flex-direction: column; justify-content: center; overflow: hidden; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + pointer-events: none; } .file__image { width: 100px; opacity: 0.7; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; } .file__item__wrapper { @@ -78,15 +100,16 @@ flex-direction: column; align-items: center; justify-content: initial; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: transparent; + // -webkit-touch-callout: none; + // -webkit-user-select: none; + // -khtml-user-select: none; + // -moz-user-select: none; + // -ms-user-select: none; + // user-select: none; + // -webkit-tap-highlight-color: transparent; width: 100%; height: 100%; + cursor: pointer; } .file__item__listview { diff --git a/src/styles/components/_MoverMenu.scss b/src/styles/components/_MoverMenu.scss index 97110e3..b680cf3 100644 --- a/src/styles/components/_MoverMenu.scss +++ b/src/styles/components/_MoverMenu.scss @@ -15,6 +15,7 @@ @media (max-width: $desktop-breakpoint) { width: 100%; height: 100%; + z-index: 2; } } diff --git a/src/styles/components/_QuickAccess.scss b/src/styles/components/_QuickAccess.scss index b9931f5..8f8e506 100644 --- a/src/styles/components/_QuickAccess.scss +++ b/src/styles/components/_QuickAccess.scss @@ -11,6 +11,12 @@ @media (max-width: $desktop-breakpoint) { // margin-top: calc(80px + 3vh); + width: inherit; + height: 153px; + display: flex; + flex-flow: row wrap; + align-items: center; + overflow: hidden; } } @@ -37,7 +43,10 @@ position: relative; @media (max-width: $desktop-breakpoint) { - + min-height: 144px; + height: 148px; + min-width: 46%; + width: 46%; position: unset; } diff --git a/src/styles/components/_Sharemenu.scss b/src/styles/components/_Sharemenu.scss index 499998b..4b7a7ac 100644 --- a/src/styles/components/_Sharemenu.scss +++ b/src/styles/components/_Sharemenu.scss @@ -22,6 +22,7 @@ width: 100%; height: 100%; top: 0; + z-index: 2; } } diff --git a/src/styles/components/_Spacer.scss b/src/styles/components/_Spacer.scss index e9f92ff..57d8802 100644 --- a/src/styles/components/_Spacer.scss +++ b/src/styles/components/_Spacer.scss @@ -16,4 +16,10 @@ font-weight: 500; font-size: 13px; margin-left: 38px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } \ No newline at end of file diff --git a/src/styles/components/_Uploader.scss b/src/styles/components/_Uploader.scss index f166de7..4949335 100644 --- a/src/styles/components/_Uploader.scss +++ b/src/styles/components/_Uploader.scss @@ -74,6 +74,9 @@ border-bottom: 1px solid #dadce0; position: relative; + @media (max-width: $desktop-breakpoint) { + min-height: 50px; + } } .CircularProgressbar { From 843c86a56fcad298a4f118765928233455056ba2 Mon Sep 17 00:00:00 2001 From: subnub Date: Sat, 9 May 2020 21:40:51 -0400 Subject: [PATCH 027/129] added favicon --- public/images/icon.png | Bin 0 -> 13364 bytes public/index.html | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 public/images/icon.png diff --git a/public/images/icon.png b/public/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9c6c5bf5e2da012e780b7bec91ebd6380c65ea84 GIT binary patch literal 13364 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 + + + + From caf93aaa8fd667767a5d05f826bcb114dd9d98a6 Mon Sep 17 00:00:00 2001 From: subnub Date: Sun, 10 May 2020 21:42:32 -0400 Subject: [PATCH 028/129] Added ability to block storage requests on frontend --- src/actions/storage.js | 4 ++++ src/enviroment/envFrontEnd.js | 1 + webpack.config.js | 3 ++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/actions/storage.js b/src/actions/storage.js index 8805bbe..cf9db98 100644 --- a/src/actions/storage.js +++ b/src/actions/storage.js @@ -12,6 +12,10 @@ export const startSetStorage = () => { return (dispatch) => { + if (env.disableStorage === "true") { + return; + } + const config = { headers: {'Authorization': "Bearer " + window.localStorage.getItem("token")} }; diff --git a/src/enviroment/envFrontEnd.js b/src/enviroment/envFrontEnd.js index 12081ae..bebb4b6 100644 --- a/src/enviroment/envFrontEnd.js +++ b/src/enviroment/envFrontEnd.js @@ -2,6 +2,7 @@ const env = { port: process.env.PORT, url: process.env.REMOTE_URL, enableVideoTranscoding: process.env.ENABLE_VIDEO_TRANSCODING, + disableStorage: process.env.DISABLE_STORAGE } export default env; \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 196be09..66d7061 100755 --- a/webpack.config.js +++ b/webpack.config.js @@ -75,7 +75,8 @@ module.exports = (env) => { new webpack.DefinePlugin({ "process.env.PORT": JSON.stringify(process.env.PORT), "process.env.REMOTE_URL": JSON.stringify(process.env.REMOTE_URL), - "process.env.ENABLE_VIDEO_TRANSCODING": JSON.stringify(process.env.ENABLE_VIDEO_TRANSCODING) + "process.env.ENABLE_VIDEO_TRANSCODING": JSON.stringify(process.env.ENABLE_VIDEO_TRANSCODING), + "process.env.DISABLE_STORAGE": JSON.stringify(process.env.DISABLE_STORAGE) }), new CompressionPlugin() ], From f6649f5c2bab181c36f9f9975b176a242bb609bd Mon Sep 17 00:00:00 2001 From: subnub Date: Sun, 10 May 2020 23:58:55 -0400 Subject: [PATCH 029/129] testing video playback issue --- backend/controllers/file.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index df7a213..72dcfc6 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -368,6 +368,14 @@ class FileController { const headers = req.headers; console.log("stream request", req.params.id) + + req.on("close", () => { + console.log("req closed stream"); + }) + + req.on("abort", () => { + console.log("Aborted"); + }) await this.chunkService.streamVideo(user, fileID, headers, res); From 985ef2dfc3dedb7cfcda0bb4e5ae160aad305b01 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 00:20:06 -0400 Subject: [PATCH 030/129] still fixing video streaming, issue with canceled request --- backend/controllers/file.ts | 14 +++++++------- backend/services/ChunkService/FileSystemService.ts | 8 +++++++- backend/services/ChunkService/S3Service.ts | 8 +++++++- .../services/ChunkService/utils/ChunkInterface.ts | 2 +- .../ChunkService/utils/awaitStreamVideo.ts | 2 +- 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index 72dcfc6..3bd6259 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -369,15 +369,15 @@ class FileController { console.log("stream request", req.params.id) - req.on("close", () => { - console.log("req closed stream"); - }) + // req.on("close", () => { + // console.log("req closed stream"); + // }) - req.on("abort", () => { - console.log("Aborted"); - }) + // req.on("abort", () => { + // console.log("Aborted"); + // }) - await this.chunkService.streamVideo(user, fileID, headers, res); + await this.chunkService.streamVideo(user, fileID, headers, res, req); } catch (e) { diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index c77ae04..7ecf86a 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -193,7 +193,7 @@ class FileSystemService implements ChunkInterface { console.log("Full thumbnail sent"); } - streamVideo = async(user: UserInterface, fileID: string, headers: any, res: Response) => { + streamVideo = async(user: UserInterface, fileID: string, headers: any, res: Response, req: Request) => { const userID = user._id; const currentFile: FileInterface = await dbUtilsFile.getFileInfo(fileID, userID); @@ -256,6 +256,12 @@ class FileSystemService implements ChunkInterface { readStream.pipe(decipher); + req.on("close", () => { + console.log("Destroying read stream"); + readStream.destroy(); + console.log("Read Stream Destoryed"); + }) + await awaitStreamVideo(start, end, differenceStart, decipher, res, allStreamsToErrorCatch); } diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index e51cb0d..c37d0d9 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -132,7 +132,7 @@ class S3Service implements ChunkInterface { } - streamVideo = async(user: UserInterface, fileID: string, headers: any, res: Response) => { + streamVideo = async(user: UserInterface, fileID: string, headers: any, res: Response, req: Request) => { const userID = user._id; const currentFile: FileInterface = await dbUtilsFile.getFileInfo(fileID, userID); @@ -192,6 +192,12 @@ class S3Service implements ChunkInterface { s3ReadStream.pipe(decipher); + req.on("close", () => { + console.log("Destoying read stream"); + s3ReadStream.destroy(); + console.log("Read Stream Destroyed"); + }) + await awaitStreamVideo(start, end, differenceStart, decipher, res, allStreamsToErrorCatch); } diff --git a/backend/services/ChunkService/utils/ChunkInterface.ts b/backend/services/ChunkService/utils/ChunkInterface.ts index c335077..1d48fc5 100644 --- a/backend/services/ChunkService/utils/ChunkInterface.ts +++ b/backend/services/ChunkService/utils/ChunkInterface.ts @@ -8,7 +8,7 @@ interface ChunkInterface { getThumbnail: (user: UserInterface, id: string) => Promise; getFullThumbnail: (user: UserInterface, fileID: string, res: Response) => void; getPublicDownload: (fileID: string, tempToken: any, res: Response) => void; - streamVideo: (user: UserInterface, fileID: string, headers: any, res: Response) => void; + streamVideo: (user: UserInterface, fileID: string, headers: any, res: Response, req: Request) => void; } export default ChunkInterface; \ No newline at end of file diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index ad31154..4374f8d 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -1,4 +1,4 @@ -import {Response} from "express" +import {Response, Request} from "express" const awaitStreamVideo = (start: number, end:number, differenceStart: number, decipher: any, res: Response, streamsToErrorCatch: any[]) => { From 48e57c4edb37310b9a87fb882c34bc07dbf890fb Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 00:29:09 -0400 Subject: [PATCH 031/129] test --- backend/services/ChunkService/FileSystemService.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index 7ecf86a..284fee9 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -257,11 +257,19 @@ class FileSystemService implements ChunkInterface { readStream.pipe(decipher); req.on("close", () => { - console.log("Destroying read stream"); - readStream.destroy(); - console.log("Read Stream Destoryed"); + // console.log("Destroying read stream"); + // readStream.destroy(); + // console.log("Read Stream Destoryed"); + }) + + req.on("error", () => { + console.log("req error"); }) + req.on("pause", () => { + console.log("req pause") + }) + await awaitStreamVideo(start, end, differenceStart, decipher, res, allStreamsToErrorCatch); } From 89b4f730484c445af3bcf8a43ce4dcef7971e9db Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 00:32:05 -0400 Subject: [PATCH 032/129] test --- backend/services/ChunkService/S3Service.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index c37d0d9..d1b0053 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -193,9 +193,17 @@ class S3Service implements ChunkInterface { s3ReadStream.pipe(decipher); req.on("close", () => { - console.log("Destoying read stream"); - s3ReadStream.destroy(); - console.log("Read Stream Destroyed"); + // console.log("Destoying read stream"); + // s3ReadStream.destroy(); + // console.log("Read Stream Destroyed"); + }) + + req.on("error", () => { + console.log("req error"); + }) + + req.on("pause", () => { + console.log("req pause") }) await awaitStreamVideo(start, end, differenceStart, decipher, res, allStreamsToErrorCatch); From 45837b6c16ec714f8ed7b63c3bb4afc2958348bd Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 00:34:14 -0400 Subject: [PATCH 033/129] test --- backend/services/ChunkService/S3Service.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index d1b0053..149f46d 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -192,6 +192,8 @@ class S3Service implements ChunkInterface { s3ReadStream.pipe(decipher); + s3ReadStream.destroy(); + req.on("close", () => { // console.log("Destoying read stream"); // s3ReadStream.destroy(); From 09f8b782c346726818cfbee4b5bde331687b88c0 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 00:38:05 -0400 Subject: [PATCH 034/129] test --- backend/services/ChunkService/S3Service.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 149f46d..9fafa39 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -192,14 +192,18 @@ class S3Service implements ChunkInterface { s3ReadStream.pipe(decipher); - s3ReadStream.destroy(); - req.on("close", () => { // console.log("Destoying read stream"); // s3ReadStream.destroy(); // console.log("Read Stream Destroyed"); }) + req.on("end", () => { + console.log("ending stream"); + s3ReadStream.destroy(); + console.log("ended stream") + }) + req.on("error", () => { console.log("req error"); }) From e029a6836f244b5471c41e4fdc923019ca40c3d2 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 00:48:35 -0400 Subject: [PATCH 035/129] test --- backend/controllers/file.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index 3bd6259..74244da 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -379,6 +379,8 @@ class FileController { await this.chunkService.streamVideo(user, fileID, headers, res, req); + console.log("stream finished"); + } catch (e) { const code = e.code || 500; From 0b96a7e950e6d722bc34afe816caf54b1ad1dade Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 11:16:26 -0400 Subject: [PATCH 036/129] still working on video streaming --- backend/controllers/file.ts | 6 +++- .../ChunkService/FileSystemService.ts | 28 ++++++++------- backend/services/ChunkService/MongoService.ts | 6 ++-- backend/services/ChunkService/S3Service.ts | 35 ++++++++++--------- .../ChunkService/utils/awaitStreamVideo.ts | 32 ++++++++++++++++- backend/tempStorage/tempStorage.ts | 3 ++ 6 files changed, 76 insertions(+), 34 deletions(-) create mode 100644 backend/tempStorage/tempStorage.ts diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index 74244da..ae1ab14 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -4,6 +4,8 @@ import MongoService from "../services/ChunkService/MongoService"; import FileSystemService from "../services/ChunkService/FileSystemService"; import S3Service from "../services/ChunkService/S3Service"; import {UserInterface} from "../models/user"; +import uuid from "uuid"; +import tempStorage from "../tempStorage/tempStorage"; const fileService = new FileService() @@ -366,8 +368,10 @@ class FileController { const user = req.user; const fileID = req.params.id; const headers = req.headers; + + //tempStorage[req.params.uuid] = uuid.v4(); - console.log("stream request", req.params.id) + console.log("stream request", tempStorage) // req.on("close", () => { // console.log("req closed stream"); diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index 284fee9..a6b6a6e 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -256,21 +256,23 @@ class FileSystemService implements ChunkInterface { readStream.pipe(decipher); - req.on("close", () => { - // console.log("Destroying read stream"); - // readStream.destroy(); - // console.log("Read Stream Destoryed"); - }) - - req.on("error", () => { - console.log("req error"); - }) + const tempUUID = req.params.uuid; - req.on("pause", () => { - console.log("req pause") - }) + // req.on("close", () => { + // // console.log("Destroying read stream"); + // // readStream.destroy(); + // // console.log("Read Stream Destoryed"); + // }) - await awaitStreamVideo(start, end, differenceStart, decipher, res, allStreamsToErrorCatch); + // req.on("error", () => { + // console.log("req error"); + // }) + + // req.on("pause", () => { + // console.log("req pause") + // }) + + await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); } getPublicDownload = async(fileID: string, tempToken: any, res: Response) => { diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 7d1ccbc..0d8a2fb 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -213,7 +213,7 @@ class MongoService implements ChunkInterface { } } - streamVideo = async(user: UserInterface, fileID: string, headers: any, res: Response) => { + streamVideo = async(user: UserInterface, fileID: string, headers: any, res: Response, req: Request) => { const userID = user._id; const currentFile = await dbUtilsFile.getFileInfo(fileID, userID); @@ -279,7 +279,9 @@ class MongoService implements ChunkInterface { readStream.pipe(decipher); - await awaitStreamVideo(start, end, differenceStart, decipher, res, allStreamsToErrorCatch); + const tempUUID = req.params.uuid; + + await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); } deleteFile = async(userID: string, fileID: string) => { diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 9fafa39..1136eae 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -192,27 +192,28 @@ class S3Service implements ChunkInterface { s3ReadStream.pipe(decipher); - req.on("close", () => { - // console.log("Destoying read stream"); - // s3ReadStream.destroy(); - // console.log("Read Stream Destroyed"); - }) + const tempUUID = req.params.uuid; + // req.on("close", () => { + // // console.log("Destoying read stream"); + // // s3ReadStream.destroy(); + // // console.log("Read Stream Destroyed"); + // }) - req.on("end", () => { - console.log("ending stream"); - s3ReadStream.destroy(); - console.log("ended stream") - }) + // req.on("end", () => { + // console.log("ending stream"); + // s3ReadStream.destroy(); + // console.log("ended stream") + // }) - req.on("error", () => { - console.log("req error"); - }) + // req.on("error", () => { + // console.log("req error"); + // }) - req.on("pause", () => { - console.log("req pause") - }) + // req.on("pause", () => { + // console.log("req pause") + // }) - await awaitStreamVideo(start, end, differenceStart, decipher, res, allStreamsToErrorCatch); + await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); } getThumbnail = async(user: UserInterface, id: string) => { diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index 4374f8d..300cc86 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -1,7 +1,12 @@ import {Response, Request} from "express" +import tempStorage from "../../../tempStorage/tempStorage"; +import uuid from "uuid"; const awaitStreamVideo = (start: number, end:number, differenceStart: number, - decipher: any, res: Response, streamsToErrorCatch: any[]) => { + decipher: any, res: Response, tempUUID: string, streamsToErrorCatch: any[]) => { + + const currentUUID = uuid.v4(); + tempStorage[tempUUID] = currentUUID; return new Promise((resolve, reject) => { @@ -10,6 +15,31 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, decipher.on("data", (data: Buffer | string) => { + //console.log("check", tempStorage[tempUUID]); + //console.log("check b", tempStorage[tempUUID] !== currentUUID && tempStorage[tempUUID] !== undefined); + + //console.log(tempStorage[tempUUID] !== currentUUID, tempStorage[tempUUID]) + if (tempStorage[tempUUID] !== currentUUID) { + + console.log("New Stream Requested, Desroying old stream"); + streamsToErrorCatch[0].destroy(); + console.log("Old Stream Desroyed"); + //delete tempStorage[tempUUID]; + } + + // if (tempStorage[tempUUID] !== undefined && tempStorage[tempUUID] !== currentUUID) { + + // console.log("New Stream Requested, Desroying old stream"); + // streamsToErrorCatch[0].destroy(); + // console.log("Old Stream Desroyed"); + // delete tempStorage[tempUUID]; + + // } else { + + // tempStorage[tempUUID] = currentUUID; + // } + + if (+start === 0 && +end === 1) { const dataCoverted = data.toString("hex"); diff --git a/backend/tempStorage/tempStorage.ts b/backend/tempStorage/tempStorage.ts new file mode 100644 index 0000000..270004f --- /dev/null +++ b/backend/tempStorage/tempStorage.ts @@ -0,0 +1,3 @@ +const tempStorage: any = {}; + +export default tempStorage; \ No newline at end of file From 5282560ce19267e7b88d40587cb697a984852f45 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 11:23:10 -0400 Subject: [PATCH 037/129] test --- backend/services/ChunkService/utils/awaitStreamVideo.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index 300cc86..456d2da 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -24,6 +24,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, console.log("New Stream Requested, Desroying old stream"); streamsToErrorCatch[0].destroy(); console.log("Old Stream Desroyed"); + resolve(); //delete tempStorage[tempUUID]; } From 50ae417c8097f3a4ea0afe3aa01c1e303f4fa328 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 11:33:13 -0400 Subject: [PATCH 038/129] test --- backend/services/ChunkService/utils/awaitStreamVideo.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index 456d2da..56de951 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -22,7 +22,11 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, if (tempStorage[tempUUID] !== currentUUID) { console.log("New Stream Requested, Desroying old stream"); - streamsToErrorCatch[0].destroy(); + + streamsToErrorCatch.forEach((stream) => { + stream.destroy(); + }) + console.log("Old Stream Desroyed"); resolve(); //delete tempStorage[tempUUID]; From b0a2b171fe675d8a02829ba45ca450337642a180 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 12:26:29 -0400 Subject: [PATCH 039/129] test --- backend/services/ChunkService/S3Service.ts | 8 ++++++++ .../services/ChunkService/utils/awaitStreamVideo.ts | 12 ++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 1136eae..4574e59 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -213,6 +213,14 @@ class S3Service implements ChunkInterface { // console.log("req pause") // }) + req.on("close", () => { + console.log("req closed"); + }) + + req.on("end", () => { + console.log("req end"); + }) + await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); } diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index 56de951..a086ad0 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -21,14 +21,14 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, //console.log(tempStorage[tempUUID] !== currentUUID, tempStorage[tempUUID]) if (tempStorage[tempUUID] !== currentUUID) { - console.log("New Stream Requested, Desroying old stream"); + // console.log("New Stream Requested, Desroying old stream"); - streamsToErrorCatch.forEach((stream) => { - stream.destroy(); - }) + // streamsToErrorCatch.forEach((stream) => { + // stream.destroy(); + // }) - console.log("Old Stream Desroyed"); - resolve(); + // console.log("Old Stream Desroyed"); + // resolve(); //delete tempStorage[tempUUID]; } From 7e14d245dcdd87607939b606add97b17221fb4d5 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 12:32:15 -0400 Subject: [PATCH 040/129] test --- backend/services/ChunkService/S3Service.ts | 3 +++ .../ChunkService/utils/awaitStreamVideo.ts | 14 ++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 4574e59..915deba 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -215,8 +215,11 @@ class S3Service implements ChunkInterface { req.on("close", () => { console.log("req closed"); + s3ReadStream.destroy(); }) + //req.on("") + req.on("end", () => { console.log("req end"); }) diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index a086ad0..e943187 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -21,17 +21,19 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, //console.log(tempStorage[tempUUID] !== currentUUID, tempStorage[tempUUID]) if (tempStorage[tempUUID] !== currentUUID) { - // console.log("New Stream Requested, Desroying old stream"); + console.log("New Stream Requested, Desroying old stream"); - // streamsToErrorCatch.forEach((stream) => { - // stream.destroy(); - // }) + streamsToErrorCatch.forEach((stream) => { + stream.destroy(); + }) - // console.log("Old Stream Desroyed"); - // resolve(); + console.log("Old Stream Desroyed"); + resolve(); //delete tempStorage[tempUUID]; } + console.log("stream passed", currentUUID); + // if (tempStorage[tempUUID] !== undefined && tempStorage[tempUUID] !== currentUUID) { // console.log("New Stream Requested, Desroying old stream"); From d44954f3873d04721d0e6f3475a43e9809b8a692 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 12:40:34 -0400 Subject: [PATCH 041/129] test --- backend/controllers/file.ts | 5 +++-- backend/express-routers/file.ts | 2 +- backend/services/FileService/index.ts | 6 +++++- src/components/PopupWindow/index.js | 4 +++- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index ae1ab14..df11140 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -343,8 +343,9 @@ class FileController { const user = req.user const tempToken = req.params.tempToken; - - await fileService.removeTempToken(user, tempToken); + const currentUUID = req.params.uuid; + + await fileService.removeTempToken(user, tempToken, currentUUID); res.send(); diff --git a/backend/express-routers/file.ts b/backend/express-routers/file.ts index a4a3306..748f6bb 100644 --- a/backend/express-routers/file.ts +++ b/backend/express-routers/file.ts @@ -64,7 +64,7 @@ router.patch("/file-service/move", auth, fileController.moveFile); router.delete("/file-service/remove-link/:id", auth, fileController.removeLink); -router.delete("/file-service/remove/token-video/:tempToken", auth, fileController.removeTempToken); +router.delete("/file-service/remove/token-video/:tempToken/:uuid", auth, fileController.removeTempToken); router.delete("/file-service/remove", auth, fileController.deleteFile); diff --git a/backend/services/FileService/index.ts b/backend/services/FileService/index.ts index 7416776..9208c0d 100644 --- a/backend/services/FileService/index.ts +++ b/backend/services/FileService/index.ts @@ -9,6 +9,8 @@ import DbUtilFile from "../../db/utils/fileUtils/index"; import DbUtilFolder from "../../db/utils/folderUtils"; import { UserInterface } from "../../models/user"; import { FileInterface } from "../../models/file"; +import tempStorage from "../../tempStorage/tempStorage"; +import uuid from "uuid"; const dbUtilsFile = new DbUtilFile(); const dbUtilsFolder = new DbUtilFolder(); @@ -155,7 +157,7 @@ class MongoFileService { return tempToken; } - removeTempToken = async(user: UserInterface, tempToken: any) => { + removeTempToken = async(user: UserInterface, tempToken: any, currentUUID: string) => { const key = user.getEncryptionKey(); @@ -169,6 +171,8 @@ class MongoFileService { if (!removedTokenUser) throw new NotFoundError("Remove Temp Token User Not Found Errors"); + delete tempStorage[currentUUID]; + await removedTokenUser.save(); } diff --git a/src/components/PopupWindow/index.js b/src/components/PopupWindow/index.js index 78d8e38..c689b05 100644 --- a/src/components/PopupWindow/index.js +++ b/src/components/PopupWindow/index.js @@ -91,13 +91,15 @@ class PopupWindowContainer extends React.Component { componentWillUnmount = () => { + const uuidID = window.sessionStorage.getItem("uuid"); + document.removeEventListener('mousedown', this.handleClickOutside); const headers = {'Authorization': "Bearer " + window.localStorage.getItem("token")} if (this.props.popupFile.metadata.isVideo) { - axios.delete(currentURL +`/file-service/remove/token-video/${this.tempToken}`, { + axios.delete(currentURL +`/file-service/remove/token-video/${this.tempToken}/${uuidID}`, { headers, }).catch((err) => { console.log(err); From c0fff0863124829e7341ca69912a8aea26ba6b44 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 13:28:09 -0400 Subject: [PATCH 042/129] Made it so the backend cancels streams that are rerequested by the client --- backend/controllers/file.ts | 2 +- .../ChunkService/FileSystemService.ts | 19 +++++-------------- backend/services/ChunkService/MongoService.ts | 6 ++++++ backend/services/ChunkService/S3Service.ts | 8 ++++---- .../ChunkService/utils/awaitStreamVideo.ts | 6 +++--- 5 files changed, 19 insertions(+), 22 deletions(-) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index df11140..791326d 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -372,7 +372,7 @@ class FileController { //tempStorage[req.params.uuid] = uuid.v4(); - console.log("stream request", tempStorage) + console.log("stream request"); // req.on("close", () => { // console.log("req closed stream"); diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index a6b6a6e..0b100a9 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -256,22 +256,13 @@ class FileSystemService implements ChunkInterface { readStream.pipe(decipher); + req.on("close", () => { + // console.log("req closed"); + readStream.destroy(); + }) + const tempUUID = req.params.uuid; - // req.on("close", () => { - // // console.log("Destroying read stream"); - // // readStream.destroy(); - // // console.log("Read Stream Destoryed"); - // }) - - // req.on("error", () => { - // console.log("req error"); - // }) - - // req.on("pause", () => { - // console.log("req pause") - // }) - await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); } diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 0d8a2fb..e60ef4b 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -279,6 +279,12 @@ class MongoService implements ChunkInterface { readStream.pipe(decipher); + req.on("close", () => { + // console.log("req closed"); + readStream.destroy(); + }) + + const tempUUID = req.params.uuid; await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 915deba..1f770c2 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -214,15 +214,15 @@ class S3Service implements ChunkInterface { // }) req.on("close", () => { - console.log("req closed"); + // console.log("req closed"); s3ReadStream.destroy(); }) //req.on("") - req.on("end", () => { - console.log("req end"); - }) + // req.on("end", () => { + // console.log("req end"); + // }) await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); } diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index e943187..b6dc976 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -21,18 +21,18 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, //console.log(tempStorage[tempUUID] !== currentUUID, tempStorage[tempUUID]) if (tempStorage[tempUUID] !== currentUUID) { - console.log("New Stream Requested, Desroying old stream"); + //console.log("New Stream Requested, Desroying old stream"); streamsToErrorCatch.forEach((stream) => { stream.destroy(); }) - console.log("Old Stream Desroyed"); + //console.log("Old Stream Desroyed"); resolve(); //delete tempStorage[tempUUID]; } - console.log("stream passed", currentUUID); + //console.log("stream passed", currentUUID); // if (tempStorage[tempUUID] !== undefined && tempStorage[tempUUID] !== currentUUID) { From b0e5316885ad275519b3e02e730356d535d35767 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 16:03:48 -0400 Subject: [PATCH 043/129] test --- backend/controllers/file.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index 791326d..9ad58cd 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -372,7 +372,7 @@ class FileController { //tempStorage[req.params.uuid] = uuid.v4(); - console.log("stream request"); + console.log("stream request", tempStorage); // req.on("close", () => { // console.log("req closed stream"); From 2481fc8a7fa456d33072cb2f83e7a54e5fe28856 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 17:48:17 -0400 Subject: [PATCH 044/129] Trying to fix memory leak --- backend/controllers/file.ts | 2 +- .../ChunkService/FileSystemService.ts | 11 +++++----- backend/services/ChunkService/MongoService.ts | 10 ++++----- backend/services/ChunkService/S3Service.ts | 10 ++++----- .../ChunkService/utils/awaitStreamVideo.ts | 21 +++++++++++++++---- 5 files changed, 34 insertions(+), 20 deletions(-) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index 9ad58cd..ad63c29 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -384,7 +384,7 @@ class FileController { await this.chunkService.streamVideo(user, fileID, headers, res, req); - console.log("stream finished"); + //console.log("stream finished"); } catch (e) { diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index 0b100a9..32abca0 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -256,14 +256,15 @@ class FileSystemService implements ChunkInterface { readStream.pipe(decipher); - req.on("close", () => { - // console.log("req closed"); - readStream.destroy(); - }) + // req.on("close", () => { + // // console.log("req closed"); + // readStream.destroy(); + // }) const tempUUID = req.params.uuid; - await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); + await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch); + console.log("Video Stream Finished"); } getPublicDownload = async(fileID: string, tempToken: any, res: Response) => { diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index e60ef4b..8f2b766 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -279,15 +279,15 @@ class MongoService implements ChunkInterface { readStream.pipe(decipher); - req.on("close", () => { - // console.log("req closed"); - readStream.destroy(); - }) + // req.on("close", () => { + // // console.log("req closed"); + // readStream.destroy(); + // }) const tempUUID = req.params.uuid; - await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); + await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch); } deleteFile = async(userID: string, fileID: string) => { diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 1f770c2..f05d541 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -213,10 +213,10 @@ class S3Service implements ChunkInterface { // console.log("req pause") // }) - req.on("close", () => { - // console.log("req closed"); - s3ReadStream.destroy(); - }) + // req.on("close", () => { + // // console.log("req closed"); + // s3ReadStream.destroy(); + // }) //req.on("") @@ -224,7 +224,7 @@ class S3Service implements ChunkInterface { // console.log("req end"); // }) - await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); + await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch); } getThumbnail = async(user: UserInterface, id: string) => { diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index b6dc976..665b5eb 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -3,7 +3,7 @@ import tempStorage from "../../../tempStorage/tempStorage"; import uuid from "uuid"; const awaitStreamVideo = (start: number, end:number, differenceStart: number, - decipher: any, res: Response, tempUUID: string, streamsToErrorCatch: any[]) => { + decipher: any, res: Response, req: Request, tempUUID: string, streamsToErrorCatch: any[]) => { const currentUUID = uuid.v4(); tempStorage[tempUUID] = currentUUID; @@ -11,7 +11,18 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, return new Promise((resolve, reject) => { let firstBytesRemoved = false; - let sizeCounter = 0; + //let sizeCounter = 0; + + req.on("close", () => { + streamsToErrorCatch.forEach((stream) => { + stream.destroy(); + }) + resolve(); + }) + + req.on("end", () => { + resolve(); + }) decipher.on("data", (data: Buffer | string) => { @@ -32,6 +43,8 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, //delete tempStorage[tempUUID]; } + //console.log("data", currentUUID); + //console.log("stream passed", currentUUID); // if (tempStorage[tempUUID] !== undefined && tempStorage[tempUUID] !== currentUUID) { @@ -70,7 +83,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, firstBytesRemoved = true; - sizeCounter += dataBack.length; + //sizeCounter += dataBack.length; res.write(dataBack); res.flush(); @@ -80,7 +93,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, res.write(data); res.flush(); - sizeCounter += data.length; + //sizeCounter += data.length; }) decipher.on("end", () => { From a3e63460a0b1db3e7fd4c96ea61369e7a11e8bca Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 17:54:29 -0400 Subject: [PATCH 045/129] test --- backend/controllers/file.ts | 2 +- backend/services/ChunkService/S3Service.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index ad63c29..0978fec 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -372,7 +372,7 @@ class FileController { //tempStorage[req.params.uuid] = uuid.v4(); - console.log("stream request", tempStorage); + console.log("stream request 2", tempStorage); // req.on("close", () => { // console.log("req closed stream"); diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index f05d541..7e09ffb 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -225,6 +225,7 @@ class S3Service implements ChunkInterface { // }) await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch); + console.log("Video stream finished"); } getThumbnail = async(user: UserInterface, id: string) => { From 93f4980f5186d4238004fe50f0268e900a2778c0 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 18:08:21 -0400 Subject: [PATCH 046/129] added debug --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index f120c47..e1e0c1e 100755 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "create-indexes-database": "env-cmd -f ./config/prod.env node serverUtils/createIndexes.js", "create-indexes-database:dev": "env-cmd -f ./config/dev.env node serverUtils/createIndexes.js", "init": "node serverUtils/initServer.js", + "debug": "env-cmd -f ./config/prod.env node --expose-gc --inspect=9222 dist/server/serverStart.js --env production", "heroku-postbuild": "npm run build" }, "dependencies": { From a7d1f36ae4bfe1639c58a226eb4c8a827604d7b9 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 21:37:35 -0400 Subject: [PATCH 047/129] test --- backend/services/ChunkService/S3Service.ts | 6 ++++++ backend/services/ChunkService/utils/awaitStreamVideo.ts | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 7e09ffb..80f9374 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -193,6 +193,12 @@ class S3Service implements ChunkInterface { s3ReadStream.pipe(decipher); const tempUUID = req.params.uuid; + + // s3ReadStream.on("data", () => { + // console.log("data", tempUUID); + // }) + + // req.on("close", () => { // // console.log("Destoying read stream"); // // s3ReadStream.destroy(); diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index 665b5eb..125f3a7 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -69,7 +69,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, const dataBack = Buffer.from(neededData, "hex"); res.write(dataBack); - res.flush(); + //res.flush(); return; } @@ -86,13 +86,13 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, //sizeCounter += dataBack.length; res.write(dataBack); - res.flush(); + //res.flush(); return; } res.write(data); - res.flush(); + //res.flush(); //sizeCounter += data.length; }) From 2d1594d4d09622050ec7beff63505605e5be98ef Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 21:44:52 -0400 Subject: [PATCH 048/129] test --- backend/services/ChunkService/utils/awaitStreamVideo.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index 125f3a7..e96f0c0 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -6,7 +6,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, decipher: any, res: Response, req: Request, tempUUID: string, streamsToErrorCatch: any[]) => { const currentUUID = uuid.v4(); - tempStorage[tempUUID] = currentUUID; + //tempStorage[tempUUID] = currentUUID; return new Promise((resolve, reject) => { From 066694113ac6649bfdd77c2854b73e0086de47d4 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 21:47:35 -0400 Subject: [PATCH 049/129] test --- backend/services/ChunkService/utils/awaitStreamVideo.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index e96f0c0..7ce1cc4 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -35,11 +35,11 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, //console.log("New Stream Requested, Desroying old stream"); streamsToErrorCatch.forEach((stream) => { - stream.destroy(); + //stream.destroy(); }) //console.log("Old Stream Desroyed"); - resolve(); + //resolve(); //delete tempStorage[tempUUID]; } From 6b9995a399d22ba313a2932e80127b2eeddf182b Mon Sep 17 00:00:00 2001 From: subnub Date: Tue, 12 May 2020 18:55:11 -0400 Subject: [PATCH 050/129] Still not sure about memory leak for video streaming, will probably create an issue for it in the future --- backend/services/ChunkService/FileSystemService.ts | 1 + backend/services/ChunkService/MongoService.ts | 1 + backend/services/ChunkService/S3Service.ts | 1 + .../services/ChunkService/utils/awaitStreamVideo.ts | 10 +++++++--- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index 32abca0..5bfa9b2 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -265,6 +265,7 @@ class FileSystemService implements ChunkInterface { await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch); console.log("Video Stream Finished"); + readStream.destroy(); } getPublicDownload = async(fileID: string, tempToken: any, res: Response) => { diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 8f2b766..f18cf29 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -288,6 +288,7 @@ class MongoService implements ChunkInterface { const tempUUID = req.params.uuid; await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch); + readStream.destroy(); } deleteFile = async(userID: string, fileID: string) => { diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 80f9374..694fc99 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -232,6 +232,7 @@ class S3Service implements ChunkInterface { await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch); console.log("Video stream finished"); + s3ReadStream.destroy(); } getThumbnail = async(user: UserInterface, id: string) => { diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index 7ce1cc4..f9c89a3 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -6,7 +6,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, decipher: any, res: Response, req: Request, tempUUID: string, streamsToErrorCatch: any[]) => { const currentUUID = uuid.v4(); - //tempStorage[tempUUID] = currentUUID; + tempStorage[tempUUID] = currentUUID; return new Promise((resolve, reject) => { @@ -14,6 +14,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, //let sizeCounter = 0; req.on("close", () => { + //console.log("close resolved"); streamsToErrorCatch.forEach((stream) => { stream.destroy(); }) @@ -21,6 +22,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, }) req.on("end", () => { + //console.log("End resolved"); resolve(); }) @@ -35,11 +37,12 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, //console.log("New Stream Requested, Desroying old stream"); streamsToErrorCatch.forEach((stream) => { - //stream.destroy(); + stream.destroy(); }) //console.log("Old Stream Desroyed"); - //resolve(); + //console.log("Old Stream Resolved"); + resolve(); //delete tempStorage[tempUUID]; } @@ -97,6 +100,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, }) decipher.on("end", () => { + //console.log("decipher resolved"); res.end(); resolve(); }) From e96d8a5b27b32343fdaf0d9f8481b2bd04210112 Mon Sep 17 00:00:00 2001 From: subnub Date: Thu, 14 May 2020 22:10:15 -0400 Subject: [PATCH 051/129] Docker image is now working, updated the get key to hash the key --- Dockerfile | 5 +++-- backend/key/getKey.ts | 6 +++++- key/getKey.js | 6 +++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7179ee5..2d256df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,7 @@ COPY . . RUN npm run build -EXPOSE 8000 +EXPOSE 8080 +EXPOSE 3000 -RUN npm run start \ No newline at end of file +CMD [ "npm", "run", "start"] \ No newline at end of file diff --git a/backend/key/getKey.ts b/backend/key/getKey.ts index ef6ece9..787a6ee 100644 --- a/backend/key/getKey.ts +++ b/backend/key/getKey.ts @@ -6,8 +6,12 @@ const getKey = async() => { if (process.env.KEY) { // For Docker + + const password = process.env.KEY; - env.key = process.env.KEY + env.key = crypto.createHash("md5").update(password).digest("hex"); + + console.log("Docker Key", env.key); } else if (process.env.NODE_ENV === "production") { diff --git a/key/getKey.js b/key/getKey.js index a65d1f5..0fc47ff 100644 --- a/key/getKey.js +++ b/key/getKey.js @@ -7,7 +7,11 @@ const getKey = async() => { if (process.env.KEY) { // For Docker - env.key = process.env.KEY + const password = process.env.KEY; + + env.key = password; + + console.log("Docker Key", env.key); } else if (process.env.NODE_ENV) { From 40bdb18f78987b21aef58c2a3a6e1e30bbd310b3 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 02:10:16 -0400 Subject: [PATCH 052/129] added ontouch event to list view items, and quick items --- backend/key/getKey.ts | 2 - key/getKey.js | 4 +- src/components/FileItem/FileItem.js | 7 +- .../QuickAccessItem/QuickAccessItem.js | 5 +- src/components/QuickAccessItem/index.js | 68 +++++++++++++++---- 5 files changed, 66 insertions(+), 20 deletions(-) diff --git a/backend/key/getKey.ts b/backend/key/getKey.ts index 787a6ee..deab46d 100644 --- a/backend/key/getKey.ts +++ b/backend/key/getKey.ts @@ -11,8 +11,6 @@ const getKey = async() => { env.key = crypto.createHash("md5").update(password).digest("hex"); - console.log("Docker Key", env.key); - } else if (process.env.NODE_ENV === "production") { let password: string = await prompt("Enter Server Encryption Password: ", {method: "hide"}); diff --git a/key/getKey.js b/key/getKey.js index 0fc47ff..c0dbfe7 100644 --- a/key/getKey.js +++ b/key/getKey.js @@ -2,6 +2,8 @@ const prompt = require('password-prompt') import env from "../backend/enviroment/env"; const crypto = require("crypto"); +// NOT IN USE + const getKey = async() => { if (process.env.KEY) { @@ -11,7 +13,7 @@ const getKey = async() => { env.key = password; - console.log("Docker Key", env.key); + //console.log("Docker Key", env.key); } else if (process.env.NODE_ENV) { diff --git a/src/components/FileItem/FileItem.js b/src/components/FileItem/FileItem.js index 9ea27c3..5afb308 100644 --- a/src/components/FileItem/FileItem.js +++ b/src/components/FileItem/FileItem.js @@ -16,7 +16,10 @@ const FileItem = (props) => {
{props.fileClick(props._id, props)}} - onContextMenu={(e) => props.getContextMenu(e)}> + onContextMenu={(e) => props.getContextMenu(e)} + onTouchStart={props.onTouchStart} + onTouchEnd={props.onTouchEnd} + onTouchMove={props.onTouchMove}>
{props.image.src = "/images/file-svg.svg"; props.image.className="file__image__listview"; props.failedToLoad = true}}/> @@ -27,7 +30,7 @@ const FileItem = (props) => { {(props.rightSelected === props._id && props._id === props.selected) ? - + : undefined} diff --git a/src/components/QuickAccessItem/QuickAccessItem.js b/src/components/QuickAccessItem/QuickAccessItem.js index 19996f5..fa29010 100644 --- a/src/components/QuickAccessItem/QuickAccessItem.js +++ b/src/components/QuickAccessItem/QuickAccessItem.js @@ -6,7 +6,10 @@ import React from "react"; const QuickAccessItem = (props) => (
{props.fileClick(props._id, props, true)}} - onContextMenu={(e) => props.getContextMenu(e)}> + onContextMenu={(e) => props.getContextMenu(e)} + onTouchStart={props.onTouchStart} + onTouchEnd={props.onTouchEnd} + onTouchMove={props.onTouchMove}>
{props.image.src = "/images/file-svg.svg"; props.image.className="quickaccess__item__image"; props.failedToLoad = true}}/> diff --git a/src/components/QuickAccessItem/index.js b/src/components/QuickAccessItem/index.js index 60907c8..f32b001 100644 --- a/src/components/QuickAccessItem/index.js +++ b/src/components/QuickAccessItem/index.js @@ -14,6 +14,7 @@ class QuickAccessItemContainer extends React.Component { super(props); this.failedToLoad = false; + this.lastTouch = 0; this.state = { contextMenuPos: {}, @@ -62,9 +63,42 @@ class QuickAccessItemContainer extends React.Component { console.log(err) }) } + + onTouchStart = () => { + //alert("Touch start"); + const date = new Date(); + this.lastTouch = date.getTime(); + } + + onTouchMove = () => { + + this.lastTouch = 0; + } + + onTouchEnd = () => { + + if (this.lastTouch === 0) { + + //alert("last touch 0"); + return; + } + + const date = new Date(); + const difference = date - this.lastTouch; + //alert("Touch end: " + difference) + //alert("touch end: " + difference); + this.lastTouch = 0; + + if (difference > 500) { + //alert("Context menu"); + this.getContextMenu(); + } + + } + getContextMenu = (e) => { - e.preventDefault(); + if (e) e.preventDefault(); const isMobile = mobileCheck() @@ -73,21 +107,24 @@ class QuickAccessItemContainer extends React.Component { let styleObj = {right:0, left:0, top: "-3px", bottom: 0} - const clientY = e.nativeEvent.clientY; - const clientX = e.nativeEvent.clientX; - - if (clientX > windowX / 2) { - - styleObj = {...styleObj, left:"unset", right:0} - - } else { - - styleObj = {...styleObj, left:0, right:"unset"} - } - if (isMobile) { - styleObj = {bottom: 0, left: "2px"} + styleObj = {bottom: 0, left: "2px"}; + + } else { + + const clientY = e.nativeEvent.clientY; + const clientX = e.nativeEvent.clientX; + + if (clientX > windowX / 2) { + + styleObj = {...styleObj, left:"unset", right:0} + + } else { + + styleObj = {...styleObj, left:0, right:"unset"} + } + } this.setState(() => ({ @@ -106,6 +143,9 @@ class QuickAccessItemContainer extends React.Component { return } From 95be8ff7c0cf62def20738c769a46ffef2803814 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 02:22:42 -0400 Subject: [PATCH 053/129] Added ontouch to folders, fixed some issues on ios --- src/components/FolderItem/FolderItem.js | 10 ++- src/components/FolderItem/index.js | 91 ++++++++++++++++++------- src/styles/components/_Filter.scss | 6 ++ 3 files changed, 79 insertions(+), 28 deletions(-) diff --git a/src/components/FolderItem/FolderItem.js b/src/components/FolderItem/FolderItem.js index fce7027..e5532bf 100644 --- a/src/components/FolderItem/FolderItem.js +++ b/src/components/FolderItem/FolderItem.js @@ -14,7 +14,10 @@ const FolderItem = (props) => {
props.folderClick(props._id, props.name)} - onContextMenu={(e) => props.getContextMenu(e)}> + onContextMenu={(e) => props.getContextMenu(e)} + onTouchStart={props.onTouchStart} + onTouchEnd={props.onTouchEnd} + onTouchMove={props.onTouchMove}>
@@ -33,7 +36,10 @@ const FolderItem = (props) => {
props.folderClick(props._id, props.name)} - onContextMenu={(e) => props.getContextMenu(e)}> + onContextMenu={(e) => props.getContextMenu(e)} + onTouchStart={props.onTouchStart} + onTouchEnd={props.onTouchEnd} + onTouchMove={props.onTouchMove}>

{props.name}

diff --git a/src/components/FolderItem/index.js b/src/components/FolderItem/index.js index 1e82711..ec8bcde 100644 --- a/src/components/FolderItem/index.js +++ b/src/components/FolderItem/index.js @@ -8,6 +8,8 @@ class FolderItemContainer extends React.Component { constructor(props) { super(props) + + this.lastTouch = 0; } shouldComponentUpdate = (nextProp) => { @@ -19,9 +21,41 @@ class FolderItemContainer extends React.Component { || nextProp.quickFilesLength !== this.props.quickFilesLength) } + onTouchStart = () => { + //alert("Touch start"); + const date = new Date(); + this.lastTouch = date.getTime(); + } + + onTouchMove = () => { + + this.lastTouch = 0; + } + + onTouchEnd = () => { + + if (this.lastTouch === 0) { + + //alert("last touch 0"); + return; + } + + const date = new Date(); + const difference = date - this.lastTouch; + //alert("Touch end: " + difference) + //alert("touch end: " + difference); + this.lastTouch = 0; + + if (difference > 500) { + //alert("Context menu"); + this.getContextMenu(); + } + + } + getContextMenu = (e) => { - e.preventDefault(); + if (e) e.preventDefault(); const isMobile = mobileCheck(); @@ -30,34 +64,36 @@ class FolderItemContainer extends React.Component { let styleObj = {right:0, left:0, top: "-14px", bottom: 0} - const clientY = e.nativeEvent.clientY; - const clientX = e.nativeEvent.clientX; - - - if (clientY < (windowY / 3)) { - - const bottomSize = this.props.quickFilesLength === 0 ? "-126px" : "-190px" - - styleObj = {bottom: bottomSize, top:"unset"} - } - - if (clientY > ((windowY / 4) * 3.5)) { - - styleObj = {bottom:"unset", top: "-190px"} - } - - if (clientX > windowX / 2) { - - styleObj = {...styleObj, left:"unset", right:0} - - } else { - - styleObj = {...styleObj, left:0, right:"unset"} - } - if (isMobile) { styleObj = {bottom: 0, left: "2px", top:"unset"} + + } else { + + const clientY = e.nativeEvent.clientY; + const clientX = e.nativeEvent.clientX; + + + if (clientY < (windowY / 3)) { + + const bottomSize = this.props.quickFilesLength === 0 ? "-126px" : "-190px" + + styleObj = {bottom: bottomSize, top:"unset"} + } + + if (clientY > ((windowY / 4) * 3.5)) { + + styleObj = {bottom:"unset", top: "-190px"} + } + + if (clientX > windowX / 2) { + + styleObj = {...styleObj, left:"unset", right:0} + + } else { + + styleObj = {...styleObj, left:0, right:"unset"} + } } this.setState(() => styleObj) @@ -95,6 +131,9 @@ class FolderItemContainer extends React.Component { return } diff --git a/src/styles/components/_Filter.scss b/src/styles/components/_Filter.scss index 6d19643..5a7b22f 100644 --- a/src/styles/components/_Filter.scss +++ b/src/styles/components/_Filter.scss @@ -18,6 +18,12 @@ margin-left: 22px; font-weight: 500; font-size: 13px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } .filter__folder-title-wrapper { margin-left: 15px; From 832cdbc22038a14b05024471fb862528fa997047 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 02:30:34 -0400 Subject: [PATCH 054/129] fixing image sizes --- src/styles/components/_File.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/styles/components/_File.scss b/src/styles/components/_File.scss index 1652c4a..fb5451c 100644 --- a/src/styles/components/_File.scss +++ b/src/styles/components/_File.scss @@ -171,6 +171,12 @@ height: 33px; /* max-height: 30px; */ border-radius: 5px; + width: 31px; + opacity: 1; + max-width: 31px; + height: 33px; + max-height: 33px; + border-radius: 5px; } .file__image--no-opacity { From f6db4c45fa550af0a23dfed7022e6ecb5f671af9 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 02:48:02 -0400 Subject: [PATCH 055/129] Made it so changing to listview reloads items --- src/components/Subbar/index.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/components/Subbar/index.js b/src/components/Subbar/index.js index 1b6d37f..453dc10 100644 --- a/src/components/Subbar/index.js +++ b/src/components/Subbar/index.js @@ -1,8 +1,8 @@ import Subbar from "./Subbar"; import {showSideBar, hideSideBar} from "../../actions/main"; import {showAddOptions2} from "../../actions/addOptions"; -import {startAddFile} from "../../actions/files"; -import {startAddFolder} from "../../actions/folders" +import {startAddFile, setFiles, startSetFiles} from "../../actions/files"; +import {startAddFolder, setFolders, startSetFolders} from "../../actions/folders" import {enableListView, disableListView} from "../../actions/filter"; import {resetSelected} from "../../actions/selectedItem"; import Swal from "sweetalert2"; @@ -103,13 +103,25 @@ class SubbarContainer extends React.Component { showListViewEvent = () => { let listView = this.props.listView; + const parent = this.props.parent; + const sortBy = this.props.sortBy; + const search = this.props.search; if (listView) { this.props.dispatch(resetSelected()) + this.props.dispatch(setFiles([])); + this.props.dispatch(setFolders([])); this.props.dispatch(disableListView()) + this.props.dispatch(startSetFiles(parent, sortBy, search)); + this.props.dispatch(startSetFolders(parent, sortBy, search)); + } else { this.props.dispatch(resetSelected()) + this.props.dispatch(setFiles([])); + this.props.dispatch(setFolders([])); this.props.dispatch(enableListView()) + this.props.dispatch(startSetFiles(parent, sortBy, search)); + this.props.dispatch(startSetFolders(parent, sortBy, search)); } } @@ -152,7 +164,8 @@ const connectPropToState = (state) => ({ sortBy: state.filter.sortBy, showAddOptions2: state.addOptions.showAddOptions2, showSideBar: state.main.showSideBar, - currentlySearching: state.filter.currentlySearching + currentlySearching: state.filter.currentlySearching, + search: state.filter.search, }) export default connect(connectPropToState)(SubbarContainer) \ No newline at end of file From 93d4e9fd90175f9cbb5c0417b05a95bf0ae38bf9 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 03:41:37 -0400 Subject: [PATCH 056/129] Fixed issue with all items being loaded on mobile, fixed scrolling --- src/components/MainSection/index.js | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/components/MainSection/index.js b/src/components/MainSection/index.js index e64743f..d6b1b61 100644 --- a/src/components/MainSection/index.js +++ b/src/components/MainSection/index.js @@ -16,6 +16,7 @@ class MainSectionContainer extends React.Component { constructor(props) { super(props); + } folderClick = (id) => { @@ -56,6 +57,41 @@ class MainSectionContainer extends React.Component { } + scrollEvent = (e) => { + + const scrollY = window.pageYOffset; + const windowY = document.documentElement.scrollHeight; + + let limit = window.localStorage.getItem("list-size") || 50 + limit = parseInt(limit) + + if (this.props.loading) return; + + if ((windowY / 2) < scrollY && this.props.allowLoadMoreItems) { + console.log("Scroll Bottom Mobile"); + + if (this.props.files.length >= limit) { + const parent = this.props.parent; + const search = this.props.filter.search; + const sortBy = this.props.filter.sortBy; + const lastFileDate = this.props.files[this.props.files.length - 1].uploadDate + const lastFileName = this.props.files[this.props.files.length - 1].filename + + this.props.dispatch(startLoadMoreFiles(parent, sortBy, search, lastFileDate, lastFileName)); + + } + } + } + + componentDidMount = () => { + window.addEventListener("scroll", this.scrollEvent); + } + + componentWillUnmount = () => { + + window.removeEventListener("scroll", this.scrollEvent); + } + downloadFile = (fileID) => { const config = { @@ -93,6 +129,8 @@ class MainSectionContainer extends React.Component { loadMoreItems = () => { + if (mobileCheck()) return; + console.log("loading more items", this.props.loading); let limit = window.localStorage.getItem("list-size") || 50 From 37022ec39174b0a7a0eadcb51149923001e6cb6a Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 03:43:04 -0400 Subject: [PATCH 057/129] Added mobile check to scroll event --- src/components/MainSection/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/MainSection/index.js b/src/components/MainSection/index.js index d6b1b61..e487569 100644 --- a/src/components/MainSection/index.js +++ b/src/components/MainSection/index.js @@ -59,6 +59,8 @@ class MainSectionContainer extends React.Component { scrollEvent = (e) => { + if (!mobileCheck()) return; + const scrollY = window.pageYOffset; const windowY = document.documentElement.scrollHeight; From 93f18e22e66b297da6f37dc64fc5338708b33211 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 04:10:43 -0400 Subject: [PATCH 058/129] Fixing requesting items multiple times on scroll on mobile --- src/actions/files.js | 5 +++++ src/components/MainSection/index.js | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/actions/files.js b/src/actions/files.js index 8e3e452..7239a6f 100644 --- a/src/actions/files.js +++ b/src/actions/files.js @@ -6,6 +6,7 @@ import {startSetStorage} from "./storage" import uuid from "uuid"; import axios from "axios"; import env from "../enviroment/envFrontEnd"; +import mobileCheck from "../utils/mobileCheck"; const http = require('http'); const https = require('https'); @@ -87,6 +88,10 @@ export const startLoadMoreFiles = (parent="/", sortby="DEFAULT", search="", star } dispatch(loadMoreFiles(results.data)) + + if (mobileCheck()) { + dispatch(setLoading(false)); + } }).catch((err) => { console.log(err) diff --git a/src/components/MainSection/index.js b/src/components/MainSection/index.js index e487569..a32d93c 100644 --- a/src/components/MainSection/index.js +++ b/src/components/MainSection/index.js @@ -1,6 +1,7 @@ import {startLoadMoreFiles} from "../../actions/files"; import {startSetSelectedItem, setLastSelected} from "../../actions/selectedItem"; +import {setLoading} from "../../actions/main"; import {setPopupFile} from "../../actions/popupFile"; import mobileCheck from "../../utils/mobileCheck" import MainSection from "./MainSection"; @@ -79,6 +80,7 @@ class MainSectionContainer extends React.Component { const lastFileDate = this.props.files[this.props.files.length - 1].uploadDate const lastFileName = this.props.files[this.props.files.length - 1].filename + this.props.dispatch(setLoading(true)); this.props.dispatch(startLoadMoreFiles(parent, sortBy, search, lastFileDate, lastFileName)); } From 2155732d1414e451b4b5fc95514e50f51871bb1b Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 14:21:36 -0400 Subject: [PATCH 059/129] added webUI for entering encryption password --- backend/key/getKey.ts | 3 +- backend/key/getWebUIKey.ts | 53 +++++++++++++++++++++++++ package.json | 3 +- tsconfig.json | 4 +- webUI.config.js | 37 ++++++++++++++++++ webUI/index.html | 37 ++++++++++++++++++ webUI/src/index.js | 28 ++++++++++++++ webUI/src/styles.css | 79 ++++++++++++++++++++++++++++++++++++++ 8 files changed, 241 insertions(+), 3 deletions(-) create mode 100644 backend/key/getWebUIKey.ts create mode 100644 webUI.config.js create mode 100644 webUI/index.html create mode 100644 webUI/src/index.js create mode 100644 webUI/src/styles.css diff --git a/backend/key/getKey.ts b/backend/key/getKey.ts index deab46d..ddef6fd 100644 --- a/backend/key/getKey.ts +++ b/backend/key/getKey.ts @@ -1,6 +1,7 @@ const prompt = require('password-prompt') import env from "../enviroment/env"; import crypto from "crypto"; +import getWebUIKey from "./getWebUIKey"; const getKey = async() => { @@ -13,7 +14,7 @@ const getKey = async() => { } else if (process.env.NODE_ENV === "production") { - let password: string = await prompt("Enter Server Encryption Password: ", {method: "hide"}); + let password = await getWebUIKey(); password = crypto.createHash("md5").update(password).digest("hex"); diff --git a/backend/key/getWebUIKey.ts b/backend/key/getWebUIKey.ts new file mode 100644 index 0000000..83bd914 --- /dev/null +++ b/backend/key/getWebUIKey.ts @@ -0,0 +1,53 @@ +import express, {Request, Response} from "express"; +import http from "http"; +import path from "path"; +import bodyParser from "body-parser"; +const app = express(); + +const getWebUIKey = () => { + + const publicPath = path.join(__dirname, "..", "..", "webUI"); + + + return new Promise((resolve, reject) => { + + app.use(express.static(publicPath)); + app.use(express.json()); + app.use(bodyParser.json({limit: "50mb"})); + app.use(bodyParser.urlencoded({limit: "50mb", extended: true, parameterLimit:50000})) + + app.post("/submit", (req: Request, res: Response) => { + + const password = req.body.password; + + if (password && password.length > 0) { + + console.log("Got WebUI key"); + res.send(); + server.close(); + resolve(password); + } + }) + + app.get("*", (req: Request, res: Response) => { + + res.sendFile(path.join(publicPath, "index.html")); + + }) + + const port = process.env.HTTP_PORT || process.env.PORT; + const url = process.env.URL; + + const server = http.createServer(app) as any; + + server.listen(port, url, () => { + + const fullURL = `${url!}:${port!}`; + + console.log("\nPlease Navigate To", fullURL, "To Enter Encryption Password\n") + }); + + }) +} + +export default getWebUIKey; \ No newline at end of file diff --git a/package.json b/package.json index e1e0c1e..db48b65 100755 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ }, "scripts": { "server": "live-server public/", - "build": "tsc && webpack -p --env production", + "build": "tsc && webpack -p --env production && webpack --config webUI.config.js", + "build:webUI": "webpack --config webUI.config.js", "build:dev": "tsc && webpack --env development", "dev-server": "webpack-dev-server", "test": "NODE_ENV=test env-cmd -f ./config/test.env jest --config=jest.config.json --watchAll --runInBand", diff --git a/tsconfig.json b/tsconfig.json index 5d5c7f0..33aa9f1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -69,6 +69,8 @@ "public", "node_modules", "webpack.config.js", - "dist" + "dist", + "webUI", + "webUI.config.js" ] } diff --git a/webUI.config.js b/webUI.config.js new file mode 100644 index 0000000..1be3a22 --- /dev/null +++ b/webUI.config.js @@ -0,0 +1,37 @@ +const path = require('path'); +const webpack = require("webpack") +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); + +module.exports = (env) => { + + if (env === "test") { + + console.log("Loading test env variables") + require("dotenv").config({path: ".env.test"}) + + } else if (env === "development") { + + console.log("Loading development env variables") + require("dotenv").config({path: ".env.development"}) + + } else { + + console.log("Loading production env variables") + require("dotenv").config({path: ".env.production"}); + } + + return { + entry: './webUI/src/index.js', + output: { + path: path.resolve(__dirname, 'webUI', "dist"), + filename: 'bundle.js' + }, + plugins: [ + new webpack.DefinePlugin({ + "process.env.PORT": JSON.stringify(process.env.PORT), + "process.env.REMOTE_URL": JSON.stringify(process.env.REMOTE_URL), + "process.env.ENABLE_VIDEO_TRANSCODING": JSON.stringify(process.env.ENABLE_VIDEO_TRANSCODING), + "process.env.DISABLE_STORAGE": JSON.stringify(process.env.DISABLE_STORAGE) + }), + ], +}}; \ No newline at end of file diff --git a/webUI/index.html b/webUI/index.html new file mode 100644 index 0000000..adb46ca --- /dev/null +++ b/webUI/index.html @@ -0,0 +1,37 @@ + + + + + + + + MyDrive + + + + + + + + + + + +
+ +
+ +

Enter Encryption Password

+
+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/webUI/src/index.js b/webUI/src/index.js new file mode 100644 index 0000000..46f5f29 --- /dev/null +++ b/webUI/src/index.js @@ -0,0 +1,28 @@ +console.log("Hello, there", process.env.PORT); +import axios from "axios"; + +const formElement = document.getElementById("form-submit") +const inputElement = document.getElementById("input-password"); +const mainDiv = document.getElementById("main-div") + +formElement.addEventListener("submit", async (e) => { + + e.preventDefault(); + + const fullURL = process.env.REMOTE_URL; + + const value = inputElement.value; + + const data = {password: value} + + axios.post(fullURL + "/submit", data).then(() => { + + inputElement.value = ""; + mainDiv.style.display = "none"; + + }).catch((err) => { + console.log("Error", err); + }); + + +}) \ No newline at end of file diff --git a/webUI/src/styles.css b/webUI/src/styles.css new file mode 100644 index 0000000..c07cad8 --- /dev/null +++ b/webUI/src/styles.css @@ -0,0 +1,79 @@ +* { + margin: 0; + padding: 0; +} + +html { + font-size: 62.5%; +} + +#main-div { + height: 100vh; + width: 100vw; + /* background: blue; */ + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +#box-div { + height: 30%; + width: 90%; + /* background: purple; */ + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-around; + border: .5px; + border-style: groove; +} + +@media (min-width:600px) { + #box-div { + + height: 30%; + width: 400px; + /* background: purple; */ + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-around; + border: .5px; + border-style: groove; + } + } + +#input-password { + border: 1px solid #cacccd; + border-radius: 2px; + height: 43px; + font-size: 1.8rem; + font-weight: 300; + padding: 1.2rem; + margin: 0 0 1.2rem 0; + width: -webkit-fill-available; + margin-top: -17px; +} + +#submit-button { + color: #fff; + background: #3c85ed; + font-size: 1.8rem; + padding: 1.2rem; + border: none; + display: inline-block; + text-decoration: none; + line-height: 1; + border-radius: 2px; +} + +#title { + margin: 0 0 3rem 0; + line-height: 1; + font-family: Arial,Helvetica,sans-serif; + font-weight: 500; + color: #666; + font-size: 2em; + margin-top: 24px; +} \ No newline at end of file From 60ae168df1b70e205cab063c85b5406ca44db941 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 14:29:43 -0400 Subject: [PATCH 060/129] Added server ip address --- webUI.config.js | 3 ++- webUI/src/index.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/webUI.config.js b/webUI.config.js index 1be3a22..0b32d47 100644 --- a/webUI.config.js +++ b/webUI.config.js @@ -31,7 +31,8 @@ module.exports = (env) => { "process.env.PORT": JSON.stringify(process.env.PORT), "process.env.REMOTE_URL": JSON.stringify(process.env.REMOTE_URL), "process.env.ENABLE_VIDEO_TRANSCODING": JSON.stringify(process.env.ENABLE_VIDEO_TRANSCODING), - "process.env.DISABLE_STORAGE": JSON.stringify(process.env.DISABLE_STORAGE) + "process.env.DISABLE_STORAGE": JSON.stringify(process.env.DISABLE_STORAGE), + "process.env.SERVER_IP": JSON.stringify(process.env.SERVER_IP) }), ], }}; \ No newline at end of file diff --git a/webUI/src/index.js b/webUI/src/index.js index 46f5f29..c0257bb 100644 --- a/webUI/src/index.js +++ b/webUI/src/index.js @@ -9,7 +9,7 @@ formElement.addEventListener("submit", async (e) => { e.preventDefault(); - const fullURL = process.env.REMOTE_URL; + const fullURL = process.env.SERVER_IP; const value = inputElement.value; From 794ce8a85e67cdd68c6db56117be9cc1249ee988 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 14:36:49 -0400 Subject: [PATCH 061/129] url check --- webUI/src/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/webUI/src/index.js b/webUI/src/index.js index c0257bb..15e4649 100644 --- a/webUI/src/index.js +++ b/webUI/src/index.js @@ -15,6 +15,8 @@ formElement.addEventListener("submit", async (e) => { const data = {password: value} + console.log("Full URL", fullURL + "/submit") + axios.post(fullURL + "/submit", data).then(() => { inputElement.value = ""; From 705e76ae9dee225461de79bba4bc4fb6376fd8e8 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 14:43:11 -0400 Subject: [PATCH 062/129] Removed console.log, webUI password entering should be working now --- webUI/src/index.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/webUI/src/index.js b/webUI/src/index.js index 15e4649..b644665 100644 --- a/webUI/src/index.js +++ b/webUI/src/index.js @@ -15,8 +15,6 @@ formElement.addEventListener("submit", async (e) => { const data = {password: value} - console.log("Full URL", fullURL + "/submit") - axios.post(fullURL + "/submit", data).then(() => { inputElement.value = ""; @@ -25,6 +23,4 @@ formElement.addEventListener("submit", async (e) => { }).catch((err) => { console.log("Error", err); }); - - }) \ No newline at end of file From 6e19632d43cef01b7bc473be5f94141d62e88510 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 14:57:14 -0400 Subject: [PATCH 063/129] changed ip back --- webUI/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webUI/src/index.js b/webUI/src/index.js index b644665..c9cd8fa 100644 --- a/webUI/src/index.js +++ b/webUI/src/index.js @@ -9,7 +9,7 @@ formElement.addEventListener("submit", async (e) => { e.preventDefault(); - const fullURL = process.env.SERVER_IP; + const fullURL = process.env.REMOTE_URL; const value = inputElement.value; From cdee4e03da3ae02f9f8d6a1bc9c8cd6da5dac3d9 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 14:58:50 -0400 Subject: [PATCH 064/129] changed ip back --- webUI/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webUI/src/index.js b/webUI/src/index.js index c9cd8fa..b644665 100644 --- a/webUI/src/index.js +++ b/webUI/src/index.js @@ -9,7 +9,7 @@ formElement.addEventListener("submit", async (e) => { e.preventDefault(); - const fullURL = process.env.REMOTE_URL; + const fullURL = process.env.SERVER_IP; const value = inputElement.value; From 1d03d5c740c72762e789f1ad4af7224e9ef3f462 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 15 May 2020 16:06:51 -0400 Subject: [PATCH 065/129] Updated webUI to host on localhost --- backend/key/getWebUIKey.ts | 6 +++--- webUI/src/index.js | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/key/getWebUIKey.ts b/backend/key/getWebUIKey.ts index 83bd914..096b516 100644 --- a/backend/key/getWebUIKey.ts +++ b/backend/key/getWebUIKey.ts @@ -35,14 +35,14 @@ const getWebUIKey = () => { }) - const port = process.env.HTTP_PORT || process.env.PORT; - const url = process.env.URL; + const port = process.env.HTTP_PORT || process.env.PORT || "3000"; + const url = "localhost"; const server = http.createServer(app) as any; server.listen(port, url, () => { - const fullURL = `${url!}:${port!}`; + const fullURL = `http://localhost:${port!}`; console.log("\nPlease Navigate To", fullURL, "To Enter Encryption Password\n") }); diff --git a/webUI/src/index.js b/webUI/src/index.js index b644665..7fb8931 100644 --- a/webUI/src/index.js +++ b/webUI/src/index.js @@ -9,7 +9,8 @@ formElement.addEventListener("submit", async (e) => { e.preventDefault(); - const fullURL = process.env.SERVER_IP; + const port = process.env.PORT || "3000"; + const fullURL = `http://localhost:${port}`; const value = inputElement.value; From d379e9aa24ac66b7c69b4f8f33e43a75f3a5b3eb Mon Sep 17 00:00:00 2001 From: subnub Date: Sat, 16 May 2020 21:17:43 -0400 Subject: [PATCH 066/129] Updated tests, all are working now :) --- tests/db/utils/fileUtils/index.test.js | 76 +++++++++++----------- tests/db/utils/folderUtils/index.test.js | 9 +-- tests/express-routers/file.test.js | 25 ++++--- tests/express-routers/folder.test.js | 14 ++-- tests/express-routers/user.test.js | 12 ++-- tests/fixtures/createFile.js | 2 +- tests/fixtures/createUser.js | 6 +- tests/fixtures/createUser2.js | 6 +- tests/services/FileService/index.test.js | 40 ++++++------ tests/services/FolderService/index.test.js | 8 +-- tests/services/UserService/index.test.js | 6 +- 11 files changed, 110 insertions(+), 94 deletions(-) diff --git a/tests/db/utils/fileUtils/index.test.js b/tests/db/utils/fileUtils/index.test.js index cf24ed3..6e521de 100644 --- a/tests/db/utils/fileUtils/index.test.js +++ b/tests/db/utils/fileUtils/index.test.js @@ -1,10 +1,10 @@ -const User = require("../../../../backend/models/user"); -const mongoose = require("../../../../backend/db/mongoose"); +import User from "../../../../dist/models/user"; +import mongoose from "../../../../dist/db/mongoose"; const conn = mongoose.connection; const createUser = require("../../../fixtures/createUser"); const path = require("path"); const createFile = require("../../../fixtures/createFile"); -const UtilsFile = require("../../../../backend/db/utils/fileUtils"); +import UtilsFile from "../../../../dist/db/utils/fileUtils/index"; const ObjectID = require('mongodb').ObjectID const jwt = require("jsonwebtoken"); const utilsFile = new UtilsFile(); @@ -792,55 +792,55 @@ test("When giving the wrong temp token, should not remove temp token", async() = expect(updatedUser.tempTokens[0].token._id).toBe(token._id) }) -test("When giving fileID and userID, should remove transcoded video", async() => { +// test("When giving fileID and userID, should remove transcoded video", async() => { - const fileID = file._id; - const userID = user._id; - await await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, - {"$set": {"metadata.transcoded": true}}) +// const fileID = file._id; +// const userID = user._id; +// await await conn.db.collection("fs.files") +// .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, +// {"$set": {"metadata.transcoded": true}}) - await utilsFile.removeTranscodeVideo(fileID, userID); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); +// await utilsFile.removeTranscodeVideo(fileID, userID); +// const updatedFile = await conn.db.collection("fs.files") +// .findOne({_id: fileID}); - expect(updatedFile.metadata.transcoded).toBe(undefined); -}) +// expect(updatedFile.metadata.transcoded).toBe(undefined); +// }) -test("When giving wrong fileID, should not remove transcoded video", async() => { +// test("When giving wrong fileID, should not remove transcoded video", async() => { - const fileID = file._id; - const userID = user._id; - const wrongFileID = "123456789012"; - await await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, - {"$set": {"metadata.transcoded": true}}) +// const fileID = file._id; +// const userID = user._id; +// const wrongFileID = "123456789012"; +// await await conn.db.collection("fs.files") +// .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, +// {"$set": {"metadata.transcoded": true}}) - await utilsFile.removeTranscodeVideo(wrongFileID, userID); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); +// await utilsFile.removeTranscodeVideo(wrongFileID, userID); +// const updatedFile = await conn.db.collection("fs.files") +// .findOne({_id: fileID}); - expect(updatedFile.metadata.transcoded).toBe(true); -}) +// expect(updatedFile.metadata.transcoded).toBe(true); +// }) -test("When giving the wrong userID, should not remove transcoded video", async() => { +// test("When giving the wrong userID, should not remove transcoded video", async() => { - const fileID = file._id; - const userID = user._id; - const wrongUserID = "123456789012"; - await await conn.db.collection("fs.files") - .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, - {"$set": {"metadata.transcoded": true}}) +// const fileID = file._id; +// const userID = user._id; +// const wrongUserID = "123456789012"; +// await await conn.db.collection("fs.files") +// .findOneAndUpdate({"_id": ObjectID(fileID), "metadata.owner": userID}, +// {"$set": {"metadata.transcoded": true}}) - await utilsFile.removeTranscodeVideo(fileID, wrongUserID); - const updatedFile = await conn.db.collection("fs.files") - .findOne({_id: fileID}); +// await utilsFile.removeTranscodeVideo(fileID, wrongUserID); +// const updatedFile = await conn.db.collection("fs.files") +// .findOne({_id: fileID}); - expect(updatedFile.metadata.transcoded).toBe(true); -}) +// expect(updatedFile.metadata.transcoded).toBe(true); +// }) test("When giving userID and search query, should return file list", async() => { diff --git a/tests/db/utils/folderUtils/index.test.js b/tests/db/utils/folderUtils/index.test.js index b143337..3d209b9 100644 --- a/tests/db/utils/folderUtils/index.test.js +++ b/tests/db/utils/folderUtils/index.test.js @@ -1,10 +1,11 @@ -const User = require("../../../../backend/models/user"); -const mongoose = require("../../../../backend/db/mongoose"); +import User from "../../../../dist/models/user"; +import mongoose from "../../../../dist/db/mongoose"; +import UtilsFolder from "../../../../dist/db/utils/folderUtils"; +import Folder from "../../../../dist/models/folder" const conn = mongoose.connection; const createUser = require("../../../fixtures/createUser"); -const UtilsFolder = require("../../../../backend/db/utils/folderUtils"); const utilsFolder = new UtilsFolder(); -const Folder = require("../../../../backend/models/folder"); + let user; let folder; diff --git a/tests/express-routers/file.test.js b/tests/express-routers/file.test.js index 39a73cc..9dc3e3e 100644 --- a/tests/express-routers/file.test.js +++ b/tests/express-routers/file.test.js @@ -1,21 +1,25 @@ -const User = require("../../backend/models/user"); -const mongoose = require("../../backend/db/mongoose"); +import User from "../../dist/models/user"; +import mongoose from "../../dist/db/mongoose"; const conn = mongoose.connection; const createUser = require("../fixtures/createUser"); const createUser2 = require("../fixtures/createUser2"); const createFile = require("../fixtures/createFile"); const crypto = require("crypto"); const path = require("path"); -const env = require("../../backend/enviroment/env"); -const createThumbnail = require("../../backend/services/FileService/utils/createThumbnail"); +import env from "../../dist/enviroment/env"; +import createThumbnail from "../../dist/services/ChunkService/utils/createThumbnail"; const request = require("supertest"); const jwt = require("jsonwebtoken"); const ObjectID = require('mongodb').ObjectID -const app = require("../../server/server"); -const Folder = require("../../backend/models/folder"); +import servers from "../../dist/server/server"; +import Folder from "../../dist/models/folder"; const temp = require("temp").track(); const binaryPhraser = require("superagent-binary-parser"); +const {server, serverHttps} = servers; + +const app = server; + let user; let userToken; let user2; @@ -431,12 +435,13 @@ test("When giving tempToken, should remove temp token", async() => { .send() .expect(200); + const tempToken = token.body.tempToken; + await request(app) - .delete(`/file-service/remove/token-video/${token}`) + .delete(`/file-service/remove/token-video/${tempToken}/1234`) .set("Authorization", `Bearer ${userToken}`) .send() .expect(200); - }) test("When not authorized, should not remove temp token", async() => { @@ -448,8 +453,10 @@ test("When not authorized, should not remove temp token", async() => { .send() .expect(200); + const tempToken = token.body.tempToken; + await request(app) - .delete(`/file-service/remove/token-video/${token}`) + .delete(`/file-service/remove/token-video/${tempToken}/1234`) .send() .expect(401); }) diff --git a/tests/express-routers/folder.test.js b/tests/express-routers/folder.test.js index 9b0df30..4ad85e2 100644 --- a/tests/express-routers/folder.test.js +++ b/tests/express-routers/folder.test.js @@ -1,20 +1,24 @@ -const User = require("../../backend/models/user"); -const mongoose = require("../../backend/db/mongoose"); +import User from "../../dist/models/user"; +import mongoose from "../../dist/db/mongoose"; const conn = mongoose.connection; const createUser = require("../fixtures/createUser"); const createUser2 = require("../fixtures/createUser2"); const createFile = require("../fixtures/createFile"); const crypto = require("crypto"); const path = require("path"); -const env = require("../../backend/enviroment/env"); +import env from "../../dist/enviroment/env"; const request = require("supertest"); const jwt = require("jsonwebtoken"); const ObjectID = require('mongodb').ObjectID -const app = require("../../server/server"); -const Folder = require("../../backend/models/folder"); +import servers from "../../dist/server/server"; +import Folder from "../../dist/models/folder"; const temp = require("temp").track(); const binaryPhraser = require("superagent-binary-parser"); +const {server, serverHttps} = servers; + +const app = server; + let user; let userToken; let user2; diff --git a/tests/express-routers/user.test.js b/tests/express-routers/user.test.js index a5b471b..709bee1 100644 --- a/tests/express-routers/user.test.js +++ b/tests/express-routers/user.test.js @@ -1,10 +1,14 @@ -const User = require("../../backend/models/user"); -const mongoose = require("../../backend/db/mongoose"); +import User from "../../dist/models/user"; +import mongoose from "../../dist/db/mongoose"; const conn = mongoose.connection; const createUser = require("../fixtures/createUser"); -const app = require("../../server/server"); +import servers from "../../dist/server/server"; const request = require("supertest"); -const env = require("../../backend/enviroment/env") +import env from "../../dist/enviroment/env"; + +const {server, serverHttps} = servers; + +const app = server; let user; let userToken; diff --git a/tests/fixtures/createFile.js b/tests/fixtures/createFile.js index 235684f..efc9d67 100644 --- a/tests/fixtures/createFile.js +++ b/tests/fixtures/createFile.js @@ -1,4 +1,4 @@ -const mongoose = require("../../backend/db/mongoose"); +import mongoose from "../../dist/db/mongoose"; const conn = mongoose.connection; const crypto = require("crypto"); const fs = require("fs"); diff --git a/tests/fixtures/createUser.js b/tests/fixtures/createUser.js index b6479ca..4585d9a 100644 --- a/tests/fixtures/createUser.js +++ b/tests/fixtures/createUser.js @@ -1,7 +1,7 @@ const jwt = require("jsonwebtoken"); -const mongoose = require("../../backend/db/mongoose"); -const User = require("../../backend/models/user"); -const env = require("../../backend/enviroment/env"); +import mongoose from "../../dist/db/mongoose"; +import User from "../../dist/models/user"; +import env from "../../dist/enviroment/env"; const createUser = async() => { diff --git a/tests/fixtures/createUser2.js b/tests/fixtures/createUser2.js index de36b71..16509ca 100644 --- a/tests/fixtures/createUser2.js +++ b/tests/fixtures/createUser2.js @@ -1,7 +1,7 @@ const jwt = require("jsonwebtoken"); -const mongoose = require("../../backend/db/mongoose"); -const User = require("../../backend/models/user"); -const env = require("../../backend/enviroment/env"); +import mongoose from "../../dist/db/mongoose"; +import User from "../../dist/models/user"; +import env from "../../dist/enviroment/env"; const createUser2 = async() => { diff --git a/tests/services/FileService/index.test.js b/tests/services/FileService/index.test.js index 625edb4..fad926f 100644 --- a/tests/services/FileService/index.test.js +++ b/tests/services/FileService/index.test.js @@ -1,16 +1,16 @@ -const User = require("../../../backend/models/user"); -const mongoose = require("../../../backend/db/mongoose"); +import User from "../../../dist/models/user"; +import mongoose from "../../../dist/db/mongoose"; const conn = mongoose.connection; const createUser = require("../../fixtures/createUser"); const path = require("path"); const createFile = require("../../fixtures/createFile"); const crypto = require("crypto"); -const createThumbnail = require("../../../backend/services/FileService/utils/createThumbnail"); -const env = require("../../../backend/enviroment/env"); +import createThumbnail from "../../../dist/services/ChunkService/utils/createThumbnail"; +import env from "../../../dist/enviroment/env"; const jwt = require("jsonwebtoken"); const ObjectID = require('mongodb').ObjectID -const Folder = require("../../../backend/models/folder"); -const FileService = require("../../../backend/services/FileService"); +import Folder from "../../../dist/models/folder"; +import FileService from "../../../dist/services/FileService"; const fileService = new FileService(); let user; @@ -87,28 +87,28 @@ afterEach( async(done) => { }) -test("When giving user, and thumbnail id, should get thumbnail" , async() => { +// test("When giving user, and thumbnail id, should get thumbnail" , async() => { - const thumbnailFile = await createThumbnail(file, file.filename, user); - const thumbnailID = thumbnailFile.metadata.thumbnailID; +// const thumbnailFile = await createThumbnail(file, file.filename, user); +// const thumbnailID = thumbnailFile.metadata.thumbnailID; - const recievedThumbnail = await fileService.getThumbnail(user, thumbnailID); +// const recievedThumbnail = await fileService.getThumbnail(user, thumbnailID); - expect(recievedThumbnail.buffer.length).not.toBe(0); -}) +// expect(recievedThumbnail.buffer.length).not.toBe(0); +// }) -test("When giving the wrong user for thumbnail, should throw not authorized error", async() => { +// test("When giving the wrong user for thumbnail, should throw not authorized error", async() => { - const thumbnailFile = await createThumbnail(file, file.filename, user); - const thumbnailID = thumbnailFile.metadata.thumbnailID; - const wrongUser = { - _id: "123456789012" - } +// const thumbnailFile = await createThumbnail(file, file.filename, user); +// const thumbnailID = thumbnailFile.metadata.thumbnailID; +// const wrongUser = { +// _id: "123456789012" +// } - await expect(fileService.getThumbnail(wrongUser, thumbnailID)).rejects.toThrow(); -}) +// await expect(fileService.getThumbnail(wrongUser, thumbnailID)).rejects.toThrow(); +// }) test("When giving file, should remove one time link", async() => { diff --git a/tests/services/FolderService/index.test.js b/tests/services/FolderService/index.test.js index c963b5b..4c44c25 100644 --- a/tests/services/FolderService/index.test.js +++ b/tests/services/FolderService/index.test.js @@ -1,13 +1,13 @@ -const User = require("../../../backend/models/user"); +import User from "../../../dist/models/user"; const createUser = require("../../fixtures/createUser"); -const Folder = require("../../../backend/models/folder"); -const mongoose = require("../../../backend/db/mongoose"); +import Folder from "../../../dist/models/folder"; +import mongoose from "../../../dist/db/mongoose" const conn = mongoose.connection; const crypto = require("crypto"); const createFile = require("../../fixtures/createFile"); const path = require("path"); const ObjectID = require('mongodb').ObjectID -const FolderService = require("../../../backend/services/FolderService"); +import FolderService from "../../../dist/services/FolderService" const folderService = new FolderService(); let user; diff --git a/tests/services/UserService/index.test.js b/tests/services/UserService/index.test.js index 0dbeabd..5473676 100644 --- a/tests/services/UserService/index.test.js +++ b/tests/services/UserService/index.test.js @@ -1,9 +1,9 @@ -const User = require("../../../backend/models/user"); -const mongoose = require("../../../backend/db/mongoose"); +import User from "../../../dist/models/user"; +import mongoose from "../../../dist/db/mongoose"; const conn = mongoose.connection; const createUser = require("../../fixtures/createUser"); -const UserService = require("../../../backend/services/UserService"); +import UserService from "../../../dist/services/UserService"; const userService = new UserService(); let user; From eabed0cc0be2b8080f2f87873a73b6e77968445b Mon Sep 17 00:00:00 2001 From: subnub Date: Sun, 17 May 2020 23:26:10 -0400 Subject: [PATCH 067/129] working on docker images --- .gitignore | 3 ++- Dockerfile | 2 +- backend/key/getWebUIKey.ts | 7 +++---- docker-compose.yml | 24 ++++++++++++++++++++++++ src/actions/auth.js | 1 - webpack.config.js | 2 ++ 6 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 docker-compose.yml diff --git a/.gitignore b/.gitignore index 5111ece..cbff4b0 100755 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,5 @@ package-lock.json ._* .DS_Store dist/ -rds-combined-ca-bundle.pem \ No newline at end of file +rds-combined-ca-bundle.pem +docker-variables.env diff --git a/Dockerfile b/Dockerfile index 2d256df..ef06fc6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node +FROM node:13 WORKDIR /usr/app diff --git a/backend/key/getWebUIKey.ts b/backend/key/getWebUIKey.ts index 096b516..42c1791 100644 --- a/backend/key/getWebUIKey.ts +++ b/backend/key/getWebUIKey.ts @@ -36,15 +36,14 @@ const getWebUIKey = () => { }) const port = process.env.HTTP_PORT || process.env.PORT || "3000"; - const url = "localhost"; + const url = process.env.DOCKER ? undefined : "localhost"; const server = http.createServer(app) as any; server.listen(port, url, () => { - const fullURL = `http://localhost:${port!}`; - - console.log("\nPlease Navigate To", fullURL, "To Enter Encryption Password\n") + console.log(`\nPlease navigate to http://localhost:${port} to enter encryption key\n`) + }); }) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e57c087 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,24 @@ +version: '3' + +services: + app: + container_name: mydrive-node + restart: always + build: . + ports: + - '3000:3000' + - '8080:8080' + env_file: + - docker-variables.env + links: + - mongo + mongo: + container_name: mongo + image: mongo + ports: + - '27017:27017' + volumes: + - 'mongodb_data_volume:/data/db' +volumes: + mongodb_data_volume: + external: true \ No newline at end of file diff --git a/src/actions/auth.js b/src/actions/auth.js index fdbd909..0a719cf 100755 --- a/src/actions/auth.js +++ b/src/actions/auth.js @@ -43,7 +43,6 @@ export const startCreateAccount = (email, password) => { return (dispatch) => { - const dt = {email, password}; axios.post(currentURL+"/user-service/create", dt).then((response) => { diff --git a/webpack.config.js b/webpack.config.js index 66d7061..1ed98b9 100755 --- a/webpack.config.js +++ b/webpack.config.js @@ -14,6 +14,7 @@ const path = require("path"); module.exports = (env) => { + //console.log("env docker", process.env.DOCKER); if (env === "test") { @@ -29,6 +30,7 @@ module.exports = (env) => { console.log("Loading production env variables") require("dotenv").config({path: ".env.production"}); + require("dotenv").config({path: "docker-variables.env"}); } console.log("env", env); From 58f69153325c50a9902f2ee461ccce6e4495001d Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 18 May 2020 00:02:12 -0400 Subject: [PATCH 068/129] increased ram max on build --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index db48b65..6128a46 100755 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "scripts": { "server": "live-server public/", - "build": "tsc && webpack -p --env production && webpack --config webUI.config.js", + "build": "set NODE_OPTIONS=--max_old_space_size=8172 && tsc && webpack -p --env production && webpack --config webUI.config.js", "build:webUI": "webpack --config webUI.config.js", "build:dev": "tsc && webpack --env development", "dev-server": "webpack-dev-server", From 9147720ba1fe653d06235f0c777c59dc3f364cf1 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 18 May 2020 00:06:52 -0400 Subject: [PATCH 069/129] increased ram max on build --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6128a46..999bf6c 100755 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "scripts": { "server": "live-server public/", - "build": "set NODE_OPTIONS=--max_old_space_size=8172 && tsc && webpack -p --env production && webpack --config webUI.config.js", + "build": "export NODE_OPTIONS=--max_old_space_size=8000 && tsc && webpack -p --env production && webpack --config webUI.config.js", "build:webUI": "webpack --config webUI.config.js", "build:dev": "tsc && webpack --env development", "dev-server": "webpack-dev-server", From 8f1729b7dda00c1f2b639fd3d2f787edc06c147e Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 18 May 2020 13:07:30 -0400 Subject: [PATCH 070/129] trying to fix scrolling android --- src/styles/components/_HomePage.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/styles/components/_HomePage.scss b/src/styles/components/_HomePage.scss index fbc83dc..2f47244 100644 --- a/src/styles/components/_HomePage.scss +++ b/src/styles/components/_HomePage.scss @@ -16,7 +16,7 @@ @media (max-width: $desktop-breakpoint) { - overflow-y: unset; + overflow-y: hidden; } } From d13a4804891e198073c9f8764e1b1ea4cf42fe30 Mon Sep 17 00:00:00 2001 From: subnub Date: Thu, 21 May 2020 22:52:26 -0400 Subject: [PATCH 071/129] Started improving the setup script, the docker setup is mostly finished --- docker-compose-no-mongo.yml | 13 ++ package.json | 2 +- serverUtils/initServer.js | 148 ---------------- serverUtils/setupServer.js | 340 ++++++++++++++++++++++++++++++++++++ 4 files changed, 354 insertions(+), 149 deletions(-) create mode 100644 docker-compose-no-mongo.yml delete mode 100644 serverUtils/initServer.js create mode 100644 serverUtils/setupServer.js diff --git a/docker-compose-no-mongo.yml b/docker-compose-no-mongo.yml new file mode 100644 index 0000000..2d89b36 --- /dev/null +++ b/docker-compose-no-mongo.yml @@ -0,0 +1,13 @@ +version: '3' + +services: + app: + container_name: mydrive-node-no-mongo + restart: always + build: . + ports: + - '3000:3000' + - '8080:8080' + env_file: + - docker-variables.env + \ No newline at end of file diff --git a/package.json b/package.json index 999bf6c..1fcb413 100755 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "start": "NODE_ENV=production node dist/server/serverStart.js --env production", "create-indexes-database": "env-cmd -f ./config/prod.env node serverUtils/createIndexes.js", "create-indexes-database:dev": "env-cmd -f ./config/dev.env node serverUtils/createIndexes.js", - "init": "node serverUtils/initServer.js", + "setup": "node serverUtils/setupServer.js", "debug": "env-cmd -f ./config/prod.env node --expose-gc --inspect=9222 dist/server/serverStart.js --env production", "heroku-postbuild": "npm run build" }, diff --git a/serverUtils/initServer.js b/serverUtils/initServer.js deleted file mode 100644 index 403d280..0000000 --- a/serverUtils/initServer.js +++ /dev/null @@ -1,148 +0,0 @@ -const prompts = require("prompts"); -const fs = require("fs"); -const crypto = require("crypto"); - -const initServer = async() => { - - console.log("Initializing Server...\n"); - - await fs.mkdir("./config", async() => { - - const getClientPortNumber = await prompts({ - type: 'text', - message: "Enter Client Port Number (Default 3000):", - name: "value" - }) - const clientPortNumber = getClientPortNumber.value || "3000"; - - const getClientUrl = await prompts({ - type: 'text', - message: "\nEnter Client URL (Add Port Number If Needed, Default http://localhost:3000):", - name: "value" - }) - - const clientURL = getClientUrl.value || "http://localhost:3000" - - const getClientTranscode = await prompts({ - type: 'text', - message: "\nEnable Transcode Video (Default False)", - name: "value" - }) - const clientTranscode = getClientTranscode.value || "false"; - - let fullInfoClient = "PORT=" + clientPortNumber + "\n" - + "REMOTE_URL=" + clientURL - - console.log("client transcode", clientTranscode); - - if (clientTranscode.toLowerCase() === "true") { - - fullInfoClient = fullInfoClient + "\n" - + "ENABLE_VIDEO_TRANSCODING=true" - } - - console.log("\nClient Into Completed, Getting Server Info...\n") - - const getSeverMongoURL = await prompts({ - type: 'text', - message: "\nEnter MongoDB URL (Default mongodb://127.0.0.1:27017/personal-drive):", - name: "value" - }) - - const serverMongoURL = getSeverMongoURL.value || "mongodb://127.0.0.1:27017/personal-drive" - - let randomPassword = crypto.randomBytes(16); - randomPassword = randomPassword.toString("hex"); - - - const getServerPassword = await prompts({ - type: 'text', - message: `\nEnter Server JSON Token Password (Default Random Password ${randomPassword}): `, - name: "value" - }) - const serverPassword = getServerPassword.value || randomPassword; - - - const getServerHttpPort = await prompts({ - type: 'text', - message: `\nEnter Server Http Port (Default 3000): `, - name: "value" - }) - const serverHttpPort = getServerHttpPort.value || "3000"; - - - const getServerHttpsPort = await prompts({ - type: 'text', - message: `\nEnter Server Https Port (Default 8080): `, - name: "value" - }) - const serverHttpsPort = getServerHttpsPort.value || "8080" - - const getServerUrl = await prompts({ - type: 'text', - message: `\nEnter Server URL (Do Not Include Port, Default localhost):`, - name: "value" - }) - const serverURL = getServerUrl.value || "localhost" - - const getServerFullUrl = await prompts({ - type: 'text', - message: `\nEnter Full Server URL (Include Port If Needed, Default http://localhost:3000):`, - name: "value" - }) - const serverFullURL = getServerFullUrl.value || "http://localhost:3000"; - - const getServerRoot = await prompts({ - type: 'text', - message: `\nEnter Path For Storage Size Check (Default /):`, - name: "value" - }) - const serverRoot = getServerRoot.value || "/"; - - const fullServerInfo = "MONGODB_URL=" + serverMongoURL + "\n" - + "PASSWORD=" + serverPassword + "\n" - + "HTTP_PORT=" + serverHttpPort + "\n" - + "HTTPS_PORT=" + serverHttpsPort + "\n" - + "URL=" + serverURL + "\n" - + "FULL_URL=" + serverFullURL + "\n" - + "ROOT=" + serverRoot + "\n"; - - console.log("\nServer Info Finished, Displaying Results...\n"); - - console.log("Client Info:\n", fullInfoClient) - - console.log("\nServer Info:\n", fullServerInfo) - - const getConfimation = await prompts({ - type: 'text', - message: `Would You Like To Save These Files (Yes/No): `, - name: "value" - }) - - if (!getConfimation.value || getConfimation.value.toLowerCase() !== "yes") { - console.log("Exiting...") - process.exit() - return; - } - - await fs.writeFile("./.env.production", fullInfoClient, async(err) => { - - if (err) { - console.log("Error", err); - process.exit(); - } - - await fs.writeFile("./config/prod.env", fullServerInfo, (err2) => { - - if (err2) { - console.log("Error", err2); - process.exit(); - } - }) - - }) - - }); -} - -initServer(); \ No newline at end of file diff --git a/serverUtils/setupServer.js b/serverUtils/setupServer.js new file mode 100644 index 0000000..fe1c251 --- /dev/null +++ b/serverUtils/setupServer.js @@ -0,0 +1,340 @@ +const prompts = require("prompts"); +const fs = require("fs"); +const crypto = require("crypto"); + +const awaitcreateDir = (path) => { + + return new Promise((resolve, reject) => { + + fs.mkdir(path, () => { + resolve(); + }) + }) +} + +const awaitWriteFile = (path, data) => { + + return new Promise((resolve, reject) => { + + fs.writeFile(path, data, async(err) => { + + if (err) { + console.log("file write error", err); + reject(); + } + + resolve(); + }) + }) +} + +const initServer = async() => { + + console.log("Setting Up Server...\n"); + + await awaitcreateDir("./config"); + + const getDocker = await prompts({ + type: 'toggle', + name: 'value', + message: 'Use Docker With myDrive?', + initial: true, + active: 'yes', + inactive: 'no' + }) + + const docker = getDocker.value; + + + if (docker) { + + let stringBuilder = ''; + + const getUsingMongo = await prompts({ + type: 'toggle', + name: 'value', + message: "Include MongoDB In The Docker Image? (Select No If You're Using MongoDB Atlas)", + initial: true, + active: 'yes', + inactive: 'no' + }) + + const mongo = getUsingMongo.value; + + let mongoURL = "mongodb://mongo:27017/personal-drive"; + + if (!mongo) { + + const getMongoURL = await prompts({ + type: 'text', + message: "Enter The MongoDB URL", + name: "value" + }) + + mongoURL = getMongoURL.value; + } + + stringBuilder += "MONGODB_URL=" + mongoURL + "\n" + + const getKeyType = await prompts({ + type: 'toggle', + name: 'value', + message: "Use WebUI For Encryption Key (Recommended, Selecting No Will Require You To Enter An Encryption Key Now, Which Is Less Secure)", + initial: true, + active: 'yes', + inactive: 'no' + }) + + let keyType = getKeyType.value; + + if (!keyType) { + + const getKey = await prompts({ + type: 'password', + message: "Enter The Encryption Key", + name: "value" + }) + + const key = getKey.value; + + stringBuilder += "KEY=" + key + "\n"; + } + + const getClientURL = await prompts({ + type: 'text', + message: "Enter The Client URL/IP Address (Must Be A Valid Link)", + name: "value" + }) + + const clientURL = getClientURL.value; + + stringBuilder += "REMOTE_URL=" + clientURL + "\n"; + + const getChunkDB = await prompts({ + type: 'select', + name: 'value', + message: 'Pick A Database To Store File Chunks', + choices: [ + { title: 'Amazon S3', value: 's3'}, + { title: 'FileSystem', value: 'fs'}, + { title: 'MongoDB', value: 'mongo' }, + ], + initial: 1 + }) + + const chunkDB = getChunkDB.value; + + stringBuilder += "DB_TYPE=" + chunkDB + "\n"; + + if (chunkDB === "s3") { + + const gets3ID = await prompts({ + type: 'text', + message: "Enter The S3 ID", + name: "value" + }) + + const s3ID = gets3ID.value; + + stringBuilder += "S3_ID=" + s3ID + "\n"; + + const gets3Key = await prompts({ + type: 'password', + message: "Enter The S3 Key", + name: "value" + }) + + const s3Key = gets3Key.value; + + stringBuilder += "S3_KEY=" + s3Key + "\n"; + + const gets3Bucket = await prompts({ + type: 'text', + message: "Enter The S3 Bucket", + name: "value" + }) + + const s3Bucket = gets3Bucket.value; + + stringBuilder += "S3_BUCKET=" + s3Bucket + "\n"; + + } else if (chunkDB === "fs") { + + const getFSPath = await prompts({ + type: 'text', + message: "Enter The FileSystem Path", + name: "value" + }) + + const fsPath = getFSPath.value; + + stringBuilder += "FS_DIRECTORY=" + fsPath + "\n"; + } + + const getJWTSecret = await prompts({ + type: 'password', + message: "Enter JWT Secret", + name: "value", + }) + + const JWTsecret = getJWTSecret.value; + + stringBuilder += "PASSWORD=" + JWTsecret + "\n"; + + stringBuilder += "DISABLE_STORAGE=true\n"; + stringBuilder += "DOCKER=true\n"; + stringBuilder += "NODE_ENV=production\n"; + stringBuilder += "PORT=3000\n"; + stringBuilder += "HTTP_PORT=3000\n"; + stringBuilder += "HTTPS_PORT=8080\n" + + await awaitWriteFile("./docker-variables.env", stringBuilder); + + } else { + + } + + + + return; + + await fs.mkdir("./config", async() => { + + const getClientPortNumber = await prompts({ + type: 'text', + message: "Enter Client Port Number (Default 3000):", + name: "value" + }) + const clientPortNumber = getClientPortNumber.value || "3000"; + + const getClientUrl = await prompts({ + type: 'text', + message: "\nEnter Client URL (Add Port Number If Needed, Default http://localhost:3000):", + name: "value" + }) + + const clientURL = getClientUrl.value || "http://localhost:3000" + + const getClientTranscode = await prompts({ + type: 'text', + message: "\nEnable Transcode Video (Default False)", + name: "value" + }) + const clientTranscode = getClientTranscode.value || "false"; + + let fullInfoClient = "PORT=" + clientPortNumber + "\n" + + "REMOTE_URL=" + clientURL + + console.log("client transcode", clientTranscode); + + if (clientTranscode.toLowerCase() === "true") { + + fullInfoClient = fullInfoClient + "\n" + + "ENABLE_VIDEO_TRANSCODING=true" + } + + console.log("\nClient Into Completed, Getting Server Info...\n") + + const getSeverMongoURL = await prompts({ + type: 'text', + message: "\nEnter MongoDB URL (Default mongodb://127.0.0.1:27017/personal-drive):", + name: "value" + }) + + const serverMongoURL = getSeverMongoURL.value || "mongodb://127.0.0.1:27017/personal-drive" + + let randomPassword = crypto.randomBytes(16); + randomPassword = randomPassword.toString("hex"); + + + const getServerPassword = await prompts({ + type: 'text', + message: `\nEnter Server JSON Token Password (Default Random Password ${randomPassword}): `, + name: "value" + }) + const serverPassword = getServerPassword.value || randomPassword; + + + const getServerHttpPort = await prompts({ + type: 'text', + message: `\nEnter Server Http Port (Default 3000): `, + name: "value" + }) + const serverHttpPort = getServerHttpPort.value || "3000"; + + + const getServerHttpsPort = await prompts({ + type: 'text', + message: `\nEnter Server Https Port (Default 8080): `, + name: "value" + }) + const serverHttpsPort = getServerHttpsPort.value || "8080" + + const getServerUrl = await prompts({ + type: 'text', + message: `\nEnter Server URL (Do Not Include Port, Default localhost):`, + name: "value" + }) + const serverURL = getServerUrl.value || "localhost" + + const getServerFullUrl = await prompts({ + type: 'text', + message: `\nEnter Full Server URL (Include Port If Needed, Default http://localhost:3000):`, + name: "value" + }) + const serverFullURL = getServerFullUrl.value || "http://localhost:3000"; + + const getServerRoot = await prompts({ + type: 'text', + message: `\nEnter Path For Storage Size Check (Default /):`, + name: "value" + }) + const serverRoot = getServerRoot.value || "/"; + + const fullServerInfo = "MONGODB_URL=" + serverMongoURL + "\n" + + "PASSWORD=" + serverPassword + "\n" + + "HTTP_PORT=" + serverHttpPort + "\n" + + "HTTPS_PORT=" + serverHttpsPort + "\n" + + "URL=" + serverURL + "\n" + + "FULL_URL=" + serverFullURL + "\n" + + "ROOT=" + serverRoot + "\n"; + + console.log("\nServer Info Finished, Displaying Results...\n"); + + console.log("Client Info:\n", fullInfoClient) + + console.log("\nServer Info:\n", fullServerInfo) + + const getConfimation = await prompts({ + type: 'text', + message: `Would You Like To Save These Files (Yes/No): `, + name: "value" + }) + + if (!getConfimation.value || getConfimation.value.toLowerCase() !== "yes") { + console.log("Exiting...") + process.exit() + return; + } + + await fs.writeFile("./.env.production", fullInfoClient, async(err) => { + + if (err) { + console.log("Error", err); + process.exit(); + } + + await fs.writeFile("./config/prod.env", fullServerInfo, (err2) => { + + if (err2) { + console.log("Error", err2); + process.exit(); + } + }) + + }) + + }); +} + +initServer(); \ No newline at end of file From 2b6a4d64c1cad1e7d545d9f9ec333b26c2b948d1 Mon Sep 17 00:00:00 2001 From: subnub Date: Thu, 21 May 2020 23:16:32 -0400 Subject: [PATCH 072/129] Added setup for non-docker images too --- serverUtils/setupServer.js | 265 ++++++++++++++++++------------------- 1 file changed, 129 insertions(+), 136 deletions(-) diff --git a/serverUtils/setupServer.js b/serverUtils/setupServer.js index fe1c251..b9b8c3d 100644 --- a/serverUtils/setupServer.js +++ b/serverUtils/setupServer.js @@ -102,7 +102,7 @@ const initServer = async() => { const getClientURL = await prompts({ type: 'text', - message: "Enter The Client URL/IP Address (Must Be A Valid Link)", + message: "Enter The Client URL/IP Address (Enter The Client URL/IP Address (Must Be A Valid Link, Include Port With IP Address If Needed)", name: "value" }) @@ -190,151 +190,144 @@ const initServer = async() => { await awaitWriteFile("./docker-variables.env", stringBuilder); + console.log("\nCreated Docker Env File"); + } else { - } + let stringBuilderClient = ''; + let stringBuilderServer = ''; + const getMongoURL = await prompts({ + type: 'text', + message: "Enter The MongoDB URL", + name: "value" + }) + const mongoURL = getMongoURL.value; - return; + stringBuilderServer += "MONGODB_URL=" + mongoURL + "\n"; - await fs.mkdir("./config", async() => { + const getKeyType = await prompts({ + type: 'toggle', + name: 'value', + message: "Use WebUI For Encryption Key (Recommended, Selecting No Will Require You To Enter An Encryption Key Now, Which Is Less Secure)", + initial: true, + active: 'yes', + inactive: 'no' + }) - const getClientPortNumber = await prompts({ - type: 'text', - message: "Enter Client Port Number (Default 3000):", - name: "value" - }) - const clientPortNumber = getClientPortNumber.value || "3000"; - - const getClientUrl = await prompts({ - type: 'text', - message: "\nEnter Client URL (Add Port Number If Needed, Default http://localhost:3000):", - name: "value" - }) - - const clientURL = getClientUrl.value || "http://localhost:3000" - - const getClientTranscode = await prompts({ - type: 'text', - message: "\nEnable Transcode Video (Default False)", - name: "value" - }) - const clientTranscode = getClientTranscode.value || "false"; - - let fullInfoClient = "PORT=" + clientPortNumber + "\n" - + "REMOTE_URL=" + clientURL - - console.log("client transcode", clientTranscode); - - if (clientTranscode.toLowerCase() === "true") { - - fullInfoClient = fullInfoClient + "\n" - + "ENABLE_VIDEO_TRANSCODING=true" - } - - console.log("\nClient Into Completed, Getting Server Info...\n") - - const getSeverMongoURL = await prompts({ - type: 'text', - message: "\nEnter MongoDB URL (Default mongodb://127.0.0.1:27017/personal-drive):", - name: "value" - }) - - const serverMongoURL = getSeverMongoURL.value || "mongodb://127.0.0.1:27017/personal-drive" - - let randomPassword = crypto.randomBytes(16); - randomPassword = randomPassword.toString("hex"); - - - const getServerPassword = await prompts({ - type: 'text', - message: `\nEnter Server JSON Token Password (Default Random Password ${randomPassword}): `, - name: "value" - }) - const serverPassword = getServerPassword.value || randomPassword; - - - const getServerHttpPort = await prompts({ - type: 'text', - message: `\nEnter Server Http Port (Default 3000): `, - name: "value" - }) - const serverHttpPort = getServerHttpPort.value || "3000"; - - - const getServerHttpsPort = await prompts({ - type: 'text', - message: `\nEnter Server Https Port (Default 8080): `, - name: "value" - }) - const serverHttpsPort = getServerHttpsPort.value || "8080" - - const getServerUrl = await prompts({ - type: 'text', - message: `\nEnter Server URL (Do Not Include Port, Default localhost):`, - name: "value" - }) - const serverURL = getServerUrl.value || "localhost" - - const getServerFullUrl = await prompts({ - type: 'text', - message: `\nEnter Full Server URL (Include Port If Needed, Default http://localhost:3000):`, - name: "value" - }) - const serverFullURL = getServerFullUrl.value || "http://localhost:3000"; - - const getServerRoot = await prompts({ - type: 'text', - message: `\nEnter Path For Storage Size Check (Default /):`, - name: "value" - }) - const serverRoot = getServerRoot.value || "/"; - - const fullServerInfo = "MONGODB_URL=" + serverMongoURL + "\n" - + "PASSWORD=" + serverPassword + "\n" - + "HTTP_PORT=" + serverHttpPort + "\n" - + "HTTPS_PORT=" + serverHttpsPort + "\n" - + "URL=" + serverURL + "\n" - + "FULL_URL=" + serverFullURL + "\n" - + "ROOT=" + serverRoot + "\n"; - - console.log("\nServer Info Finished, Displaying Results...\n"); - - console.log("Client Info:\n", fullInfoClient) - - console.log("\nServer Info:\n", fullServerInfo) - - const getConfimation = await prompts({ - type: 'text', - message: `Would You Like To Save These Files (Yes/No): `, - name: "value" - }) - - if (!getConfimation.value || getConfimation.value.toLowerCase() !== "yes") { - console.log("Exiting...") - process.exit() - return; - } - - await fs.writeFile("./.env.production", fullInfoClient, async(err) => { - - if (err) { - console.log("Error", err); - process.exit(); - } - - await fs.writeFile("./config/prod.env", fullServerInfo, (err2) => { - - if (err2) { - console.log("Error", err2); - process.exit(); - } + let keyType = getKeyType.value; + + if (!keyType) { + + const getKey = await prompts({ + type: 'password', + message: "Enter The Encryption Key", + name: "value" }) - + + const key = getKey.value; + + stringBuilderServer += "KEY=" + key + "\n"; + } + + const getClientURL = await prompts({ + type: 'text', + message: "Enter The Client URL/IP Address (Must Be A Valid Link, Include Port With IP Address If Needed)", + name: "value" }) - }); + const clientURL = getClientURL.value; + + stringBuilderClient += "REMOTE_URL=" + clientURL + "\n"; + + const getChunkDB = await prompts({ + type: 'select', + name: 'value', + message: 'Pick A Database To Store File Chunks', + choices: [ + { title: 'Amazon S3', value: 's3'}, + { title: 'FileSystem', value: 'fs'}, + { title: 'MongoDB', value: 'mongo' }, + ], + initial: 1 + }) + + const chunkDB = getChunkDB.value; + + stringBuilderServer += "DB_TYPE=" + chunkDB + "\n"; + + if (chunkDB === "s3") { + + const gets3ID = await prompts({ + type: 'text', + message: "Enter The S3 ID", + name: "value" + }) + + const s3ID = gets3ID.value; + + stringBuilderServer += "S3_ID=" + s3ID + "\n"; + + const gets3Key = await prompts({ + type: 'password', + message: "Enter The S3 Key", + name: "value" + }) + + const s3Key = gets3Key.value; + + stringBuilderServer += "S3_KEY=" + s3Key + "\n"; + + const gets3Bucket = await prompts({ + type: 'text', + message: "Enter The S3 Bucket", + name: "value" + }) + + const s3Bucket = gets3Bucket.value; + + stringBuilderServer += "S3_BUCKET=" + s3Bucket + "\n"; + stringBuilderClient += "DISABLE_STORAGE=true\n"; + + } else if (chunkDB === "fs") { + + const getFSPath = await prompts({ + type: 'text', + message: "Enter The FileSystem Path", + name: "value" + }) + + const fsPath = getFSPath.value; + + stringBuilderServer += "FS_DIRECTORY=" + fsPath + "\n"; + stringBuilderServer += "ROOT=" + fsPath + "\n"; + + } else { + + stringBuilderClient += "DISABLE_STORAGE=true\n"; + } + + const getJWTSecret = await prompts({ + type: 'password', + message: "Enter JWT Secret", + name: "value", + }) + + const JWTsecret = getJWTSecret.value; + + stringBuilderServer += "PASSWORD=" + JWTsecret + "\n"; + + stringBuilderServer += "NODE_ENV=production\n"; + stringBuilderClient += "PORT=3000\n"; + stringBuilderServer += "HTTP_PORT=3000\n"; + stringBuilderServer += "HTTPS_PORT=8080\n" + + await awaitWriteFile("./.env.production", stringBuilderClient); + await awaitWriteFile("./config/prod.env", stringBuilderServer); + + console.log("\nServer And Client Env Files Created"); + } } initServer(); \ No newline at end of file From 0e4f19688cc1c596b413ff6e389caf422e8850b8 Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 22 May 2020 11:43:56 -0400 Subject: [PATCH 073/129] Disabled storage in settings if not using it --- src/components/SettingsMenu/SettingsMenu.js | 20 ++++++++++++-------- src/styles/components/_Uploader.scss | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/components/SettingsMenu/SettingsMenu.js b/src/components/SettingsMenu/SettingsMenu.js index 1cf879b..5c403f2 100644 --- a/src/components/SettingsMenu/SettingsMenu.js +++ b/src/components/SettingsMenu/SettingsMenu.js @@ -1,5 +1,6 @@ import StorageWidget from ".././StorageWidget"; import React from "react"; +import env from "../../enviroment/envFrontEnd"; const SettingsMenu = (props) => ( @@ -27,18 +28,21 @@ const SettingsMenu = (props) => ( {/*Storage*/} -
+ {env.disableStorage ? undefined : -

Storage

+
+ +

Storage

-
+
- - -
- -
+ + +
+
+ + } {/*List Style*/} diff --git a/src/styles/components/_Uploader.scss b/src/styles/components/_Uploader.scss index 4949335..58c7eb9 100644 --- a/src/styles/components/_Uploader.scss +++ b/src/styles/components/_Uploader.scss @@ -14,7 +14,7 @@ box-shadow: 0 2px 8px 0 rgba(0,0,0,0.2); @media (max-width: $desktop-breakpoint) { - position:absolute; + position: fixed; left:0;right:0;bottom:0; margin:0 auto; } From 81a79fe25e2c8ce082c025a2a4712f13b45e1d2a Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 22 May 2020 12:46:49 -0400 Subject: [PATCH 074/129] Fixed some styling with sharemenu on mobile --- src/styles/components/_Sharemenu.scss | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/styles/components/_Sharemenu.scss b/src/styles/components/_Sharemenu.scss index 4b7a7ac..1d5c822 100644 --- a/src/styles/components/_Sharemenu.scss +++ b/src/styles/components/_Sharemenu.scss @@ -44,6 +44,10 @@ font-size: 13.5px; font-weight: 200; white-space: nowrap; + + @media (max-width: $desktop-breakpoint) { + max-width: 80%; + } } .sharemenu__subtitle { @@ -126,6 +130,10 @@ display: flex; flex-direction: row; justify-content: center; + + @media (max-width: $desktop-breakpoint) { + height: 49px; + } } .sharemenu__image { From 98d2cd8002adb5e9ca2156bdbbd41a3540cfdd4b Mon Sep 17 00:00:00 2001 From: subnub Date: Fri, 22 May 2020 12:53:59 -0400 Subject: [PATCH 075/129] added SSL option into setup --- serverUtils/setupServer.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/serverUtils/setupServer.js b/serverUtils/setupServer.js index b9b8c3d..17ef0ae 100644 --- a/serverUtils/setupServer.js +++ b/serverUtils/setupServer.js @@ -181,6 +181,22 @@ const initServer = async() => { stringBuilder += "PASSWORD=" + JWTsecret + "\n"; + const getUseSSL = await prompts({ + type: 'toggle', + name: 'value', + message: "Use SSL? (Will Require SSL Certificate certificate.crt, certificate.ca-bundle, And certificate.key At Root Of The Project)", + initial: true, + active: 'yes', + inactive: 'no' + }) + + const useSSL = getUseSSL.value; + + if (useSSL) { + + stringBuilder += "SSL=true\n"; + } + stringBuilder += "DISABLE_STORAGE=true\n"; stringBuilder += "DOCKER=true\n"; stringBuilder += "NODE_ENV=production\n"; @@ -318,6 +334,22 @@ const initServer = async() => { stringBuilderServer += "PASSWORD=" + JWTsecret + "\n"; + const getUseSSL = await prompts({ + type: 'toggle', + name: 'value', + message: "Use SSL? (Will Require SSL Certificate certificate.crt, certificate.ca-bundle, And certificate.key At Root Of The Project)", + initial: true, + active: 'yes', + inactive: 'no' + }) + + const useSSL = getUseSSL.value; + + if (useSSL) { + + stringBuilderServer += "SSL=true\n"; + } + stringBuilderServer += "NODE_ENV=production\n"; stringBuilderClient += "PORT=3000\n"; stringBuilderServer += "HTTP_PORT=3000\n"; From d2f7da592c77023c3aeeb99583def3c62736dae3 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Sun, 24 May 2020 14:40:34 -0400 Subject: [PATCH 076/129] Update readme.md --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index b55a53d..ae7b86f 100755 --- a/readme.md +++ b/readme.md @@ -1,3 +1,5 @@ +# ![MyDrive Logo](public/images/my-drive-icon2.png) + # MyDrive MyDrive is an Open Source Cloud Server (Similar To Google Drive), built with Node.JS, Express, React, and MongoDB. From dc523d4aa9ae008f15e67f520b1a9dbb448d579c Mon Sep 17 00:00:00 2001 From: subnub Date: Sun, 24 May 2020 14:42:53 -0400 Subject: [PATCH 077/129] added github images --- github_images/mydrive-icon.png | Bin 0 -> 23345 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 github_images/mydrive-icon.png diff --git a/github_images/mydrive-icon.png b/github_images/mydrive-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..33e5568cb3a5e9e0ab69f4a4d2e08c6f7ac346ae GIT binary patch literal 23345 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 Date: Sun, 24 May 2020 14:44:59 -0400 Subject: [PATCH 078/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index ae7b86f..88e07d2 100755 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -# ![MyDrive Logo](public/images/my-drive-icon2.png) +# ![MyDrive Logo](public/github_images/mydrive-icon.png) # MyDrive From aff8ca12c59e3f2a662c76b9591240228fd75864 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Sun, 24 May 2020 14:45:22 -0400 Subject: [PATCH 079/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 88e07d2..c4d933e 100755 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -# ![MyDrive Logo](public/github_images/mydrive-icon.png) +# ![MyDrive Logo](github_images/mydrive-icon.png) # MyDrive From 315f598fa10b81c9016a500725b8a7bf75218ea1 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Sun, 24 May 2020 14:55:33 -0400 Subject: [PATCH 080/129] Add files via upload --- github_images/mydrivelogo2.psd | Bin 0 -> 113704 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 github_images/mydrivelogo2.psd diff --git a/github_images/mydrivelogo2.psd b/github_images/mydrivelogo2.psd new file mode 100644 index 0000000000000000000000000000000000000000..4287497c52c5a2cce39bb269819237d25cd2f83f GIT binary patch literal 113704 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 Sq@d)j3;#8|X9G9Z@BaeiAP3+8 literal 0 HcmV?d00001 From 03704bc328f67ed8e5eb21812a4df62e0db3c940 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Sun, 24 May 2020 14:56:14 -0400 Subject: [PATCH 081/129] Add files via upload --- github_images/mydrivelogo2.png | Bin 0 -> 11868 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 github_images/mydrivelogo2.png diff --git a/github_images/mydrivelogo2.png b/github_images/mydrivelogo2.png new file mode 100644 index 0000000000000000000000000000000000000000..97fef902b3cfd26c975e4ce412bea473551b4674 GIT binary patch literal 11868 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 literal 0 HcmV?d00001 From c65b8c8764a12bf0a93bb6db5faf3f8e021a167d Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Sun, 24 May 2020 14:56:40 -0400 Subject: [PATCH 082/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index c4d933e..047b556 100755 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -# ![MyDrive Logo](github_images/mydrive-icon.png) +# ![MyDrive Logo](github_images/mydrivelogo2.png) # MyDrive From 6ee2c4d8b50e91a72cb3f31da7bbbe85a622a608 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Sun, 24 May 2020 14:58:13 -0400 Subject: [PATCH 083/129] Add files via upload --- github_images/mydrivelogo2.png | Bin 11868 -> 18503 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/github_images/mydrivelogo2.png b/github_images/mydrivelogo2.png index 97fef902b3cfd26c975e4ce412bea473551b4674..c68e63751ecf96d3330757b256783d717d85ad95 100644 GIT binary patch literal 18503 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 literal 11868 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 From 332046470b2792ea0e28fa15a8bcb04b1e868e0e Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Sun, 24 May 2020 14:59:10 -0400 Subject: [PATCH 084/129] Add files via upload --- github_images/mydrivelogo2.png | Bin 18503 -> 13335 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/github_images/mydrivelogo2.png b/github_images/mydrivelogo2.png index c68e63751ecf96d3330757b256783d717d85ad95..1824ea9fcc91f7b82329c2c3219628da1e67d4ad 100644 GIT binary patch delta 8680 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 delta 13888 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 Date: Sun, 24 May 2020 14:59:36 -0400 Subject: [PATCH 085/129] Update readme.md --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index 047b556..e58d4ab 100755 --- a/readme.md +++ b/readme.md @@ -117,3 +117,4 @@ Contact Email: kyle.hoell@gmail.com Twitter: https://twitter.com/subnub2 + From c64d5764ee5ef41420ba25a73536c49632dd3efd Mon Sep 17 00:00:00 2001 From: subnub Date: Sun, 24 May 2020 15:00:51 -0400 Subject: [PATCH 086/129] Adding images --- github_images/mydrive-icon.png | Bin 23345 -> 0 bytes github_images/mydrivelogo2.psd | Bin 113704 -> 0 bytes .../{mydrivelogo2.png => mydrivelogogit.png} | Bin 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 github_images/mydrive-icon.png delete mode 100644 github_images/mydrivelogo2.psd rename github_images/{mydrivelogo2.png => mydrivelogogit.png} (100%) diff --git a/github_images/mydrive-icon.png b/github_images/mydrive-icon.png deleted file mode 100644 index 33e5568cb3a5e9e0ab69f4a4d2e08c6f7ac346ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23345 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 Sq@d)j3;#8|X9G9Z@BaeiAP3+8 diff --git a/github_images/mydrivelogo2.png b/github_images/mydrivelogogit.png similarity index 100% rename from github_images/mydrivelogo2.png rename to github_images/mydrivelogogit.png From eacf96bf3d2a2fe00a4c1110997b8fb53908cb6d Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Sun, 24 May 2020 15:01:59 -0400 Subject: [PATCH 087/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index e58d4ab..3d93cca 100755 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -# ![MyDrive Logo](github_images/mydrivelogo2.png) +# ![MyDrive Logo](github_images/mydrivelogogit.png) # MyDrive From 28400cd7cf50dabf65542c545179344b6e529e0a Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 08:44:33 -0400 Subject: [PATCH 088/129] Add files via upload --- github_images/mydrivehome.png | Bin 0 -> 403629 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 github_images/mydrivehome.png diff --git a/github_images/mydrivehome.png b/github_images/mydrivehome.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd52c64fbd764d1b1adc2d1b650537f3756c4b5 GIT binary patch literal 403629 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 literal 0 HcmV?d00001 From fa9466f7574b065c93d241e76d98154d7869f325 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 08:45:27 -0400 Subject: [PATCH 089/129] Update readme.md --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index 3d93cca..069ea67 100755 --- a/readme.md +++ b/readme.md @@ -1,5 +1,7 @@ # ![MyDrive Logo](github_images/mydrivelogogit.png) +# ![MyDrive Homepage](github_images/mydrivehome.png) + # MyDrive MyDrive is an Open Source Cloud Server (Similar To Google Drive), built with Node.JS, Express, React, and MongoDB. From 3ebc3e9eb4ff83409659a7dcdbcb147c385866c6 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 08:50:34 -0400 Subject: [PATCH 090/129] Update readme.md --- readme.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index 069ea67..843b510 100755 --- a/readme.md +++ b/readme.md @@ -1,10 +1,14 @@ -# ![MyDrive Logo](github_images/mydrivelogogit.png) - # ![MyDrive Homepage](github_images/mydrivehome.png) # MyDrive -MyDrive is an Open Source Cloud Server (Similar To Google Drive), built with Node.JS, Express, React, and MongoDB. +MyDrive is an Open Source Cloud Server (Similar To Google Drive), MyDrive supports multiple services to store files (Amazon S3, MongoDB, the FileSystem), and is built with Node.js and Typescript. + +## Index + +* [Features](#features) + +## Features Demo: https://mydrive-demo.herokuapp.com/ - Note: The Upload and Download Features, and other core features, are disabled in the demo. From 2dbb4a36e2482a1972f01e277993d33b7395b89e Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 08:54:59 -0400 Subject: [PATCH 091/129] Update readme.md --- readme.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 843b510..e62d782 100755 --- a/readme.md +++ b/readme.md @@ -2,7 +2,7 @@ # MyDrive -MyDrive is an Open Source Cloud Server (Similar To Google Drive), MyDrive supports multiple services to store files (Amazon S3, MongoDB, the FileSystem), and is built with Node.js and Typescript. +MyDrive is an Open Source Cloud Server (Similar To Google Drive), MyDrive supports multiple services to store files (Amazon S3, MongoDB, the FileSystem), and is built with Node.js and Typescript. MyDrive now even has Docker Images! ## Index @@ -10,6 +10,20 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), MyDrive suppor ## Features +* Upload Files +* Download Files +* Share Files +* Mutilple DB Support (MongoDB, S3, Filesystem) +* Photo Viewer +* Video Viewer +* Thumbnails +* One-time download links +* Move Folder/Files +* Mobile Support +* Docker Support +* Search/Filter Options +* AES256 Encryption + Demo: https://mydrive-demo.herokuapp.com/ - Note: The Upload and Download Features, and other core features, are disabled in the demo. From 6c73baf32170dce68e814e8a9b27a887bf9136c4 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 09:04:15 -0400 Subject: [PATCH 092/129] Update readme.md --- readme.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/readme.md b/readme.md index e62d782..b899db8 100755 --- a/readme.md +++ b/readme.md @@ -24,6 +24,13 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), MyDrive suppor * Search/Filter Options * AES256 Encryption +## Installation + +>Create Enviroment Variables, Users can use the built in command to easily create the needed Enviroment files, or view the Enviroment Variables section to see how to manually create the files. + +``` javascript +npm run setup``` + Demo: https://mydrive-demo.herokuapp.com/ - Note: The Upload and Download Features, and other core features, are disabled in the demo. From 2170bd794cc44168c7b4bf000fa962e7a406cc2f Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 09:04:57 -0400 Subject: [PATCH 093/129] Update readme.md --- readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index b899db8..6f218a8 100755 --- a/readme.md +++ b/readme.md @@ -29,7 +29,8 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), MyDrive suppor >Create Enviroment Variables, Users can use the built in command to easily create the needed Enviroment files, or view the Enviroment Variables section to see how to manually create the files. ``` javascript -npm run setup``` +npm run setup +``` Demo: https://mydrive-demo.herokuapp.com/ - Note: The Upload and Download Features, and other core features, are disabled in the demo. From 92b1f55a22a73e6c6610f692d075d95453fc26f8 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 25 May 2020 09:39:51 -0400 Subject: [PATCH 094/129] Updating docker and server utils --- Dockerfile | 2 +- package.json | 7 ++++--- serverUtils/createIndexes.js | 4 +++- serverUtils/getEnvVaribables.js | 10 ++++++++++ serverUtils/mongoServerUtil.js | 11 +++++++++++ 5 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 serverUtils/getEnvVaribables.js create mode 100644 serverUtils/mongoServerUtil.js diff --git a/Dockerfile b/Dockerfile index ef06fc6..8cf94bf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ RUN npm install COPY . . -RUN npm run build +RUN npm run build:docker EXPOSE 8080 EXPOSE 3000 diff --git a/package.json b/package.json index 1fcb413..eefb267 100755 --- a/package.json +++ b/package.json @@ -8,15 +8,16 @@ }, "scripts": { "server": "live-server public/", - "build": "export NODE_OPTIONS=--max_old_space_size=8000 && tsc && webpack -p --env production && webpack --config webUI.config.js", + "build": "export NODE_OPTIONS=--max_old_space_size=8000 && tsc && webpack -p --env production && webpack --config webUI.config.js && node serverUtils/createIndexes.js", + "build:docker": "export NODE_OPTIONS=--max_old_space_size=8000 && tsc && webpack -p --env production && webpack --config webUI.config.js", "build:webUI": "webpack --config webUI.config.js", "build:dev": "tsc && webpack --env development", "dev-server": "webpack-dev-server", "test": "NODE_ENV=test env-cmd -f ./config/test.env jest --config=jest.config.json --watchAll --runInBand", "start:dev": "NODE_ENV=development node dist/server/serverStart.js", "start": "NODE_ENV=production node dist/server/serverStart.js --env production", - "create-indexes-database": "env-cmd -f ./config/prod.env node serverUtils/createIndexes.js", - "create-indexes-database:dev": "env-cmd -f ./config/dev.env node serverUtils/createIndexes.js", + "create-indexes-database": "node serverUtils/createIndexes.js", + "create-indexes-database:dev": "node serverUtils/createIndexes.js", "setup": "node serverUtils/setupServer.js", "debug": "env-cmd -f ./config/prod.env node --expose-gc --inspect=9222 dist/server/serverStart.js --env production", "heroku-postbuild": "npm run build" diff --git a/serverUtils/createIndexes.js b/serverUtils/createIndexes.js index 8056617..35adcb1 100644 --- a/serverUtils/createIndexes.js +++ b/serverUtils/createIndexes.js @@ -1,4 +1,6 @@ -const mongoose = require("../backend/db/mongoose"); +const getEnvVariables = require("./getEnvVaribables"); +getEnvVariables(); +const mongoose = require("./mongoServerUtil"); const conn = mongoose.connection; const waitForDatabase = () => { diff --git a/serverUtils/getEnvVaribables.js b/serverUtils/getEnvVaribables.js new file mode 100644 index 0000000..ff38277 --- /dev/null +++ b/serverUtils/getEnvVaribables.js @@ -0,0 +1,10 @@ +const path = require("path"); + +const getEnvVariables = () => { + + const configPath = path.join(__dirname, "..", "config"); + + require('dotenv').config({ path: configPath + "/prod.env"}) +} + +module.exports = getEnvVariables; \ No newline at end of file diff --git a/serverUtils/mongoServerUtil.js b/serverUtils/mongoServerUtil.js new file mode 100644 index 0000000..5a8c31a --- /dev/null +++ b/serverUtils/mongoServerUtil.js @@ -0,0 +1,11 @@ +const mongoose = require("mongoose"); + +mongoose.connect(process.env.MONGODB_URL, { + useNewUrlParser: true, + useCreateIndex: true, + useUnifiedTopology: true, + socketTimeoutMS: 30000000, + keepAlive: true, +}) + +module.exports = mongoose; \ No newline at end of file From 0c57eff8c45c03b6ee848efccb43c7d6193b44a7 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 14:16:15 -0400 Subject: [PATCH 095/129] Update readme.md --- readme.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 6f218a8..57a3848 100755 --- a/readme.md +++ b/readme.md @@ -26,12 +26,26 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), MyDrive suppor ## Installation ->Create Enviroment Variables, Users can use the built in command to easily create the needed Enviroment files, or view the Enviroment Variables section to see how to manually create the files. +>Install Node Modules +``` javascript +npm install +``` +>Create Enviroment Variables, Users can use the built in command to easily create the needed Enviroment files, or view the Enviroment Variables section to see how to manually create the files. ``` javascript npm run setup ``` +>Run the build command +``` javascript +npm run build +``` + +>Start the server +``` javascript +npm run start +``` + Demo: https://mydrive-demo.herokuapp.com/ - Note: The Upload and Download Features, and other core features, are disabled in the demo. From cb489c87df37d662a4694455494d4d831d56ff35 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 14:25:59 -0400 Subject: [PATCH 096/129] Update readme.md --- readme.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/readme.md b/readme.md index 57a3848..5c6dc9a 100755 --- a/readme.md +++ b/readme.md @@ -7,6 +7,10 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), MyDrive suppor ## Index * [Features](#features) +* [Installation](#installation) +* [Wiki](https://github.com/subnub/myDrive/wiki) +* [Demo](#demo) +* [Screenshots](#screenshots) ## Features @@ -46,9 +50,13 @@ npm run build npm run start ``` +## Demo + Demo: https://mydrive-demo.herokuapp.com/ - Note: The Upload and Download Features, and other core features, are disabled in the demo. +## Screenshots + ### Wiki For a more detailed list of myDrive features, including examples with images, visit the wiki here: https://github.com/subnub/myDrive/wiki From 7266fe1d32d934d0c46366b957b8ee3a01f421f6 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 14:29:46 -0400 Subject: [PATCH 097/129] Add files via upload --- github_images/mydrivehome2.png | Bin 0 -> 285102 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 github_images/mydrivehome2.png diff --git a/github_images/mydrivehome2.png b/github_images/mydrivehome2.png new file mode 100644 index 0000000000000000000000000000000000000000..c85aca97c0bd735bf6b66220a16a9ce9b4d02751 GIT binary patch literal 285102 zcmdqJbyS>L(>MqO5+t|=cbAYL!8H)v-GT)gcWB(*H8{cD9U6jL2<{eK8+YB#$oqXe z?_}n;=j=bbaQgJabE~e@t*TqMgb;aIab!e%L?|dIWQh-=icnC`bD^MM8Q`Bo-s}|( z6GB0~GysT*$V-TbkjmRxe*#z-LqUBANl1F3t~7w-y`89xp-Bp(C~Tem0hyG_A4f>A zn3SFjfifNs(>IhzL)ivQ9*WJ7y|ahduZi9gW^fb+hi$B*-4i&N8tq-)b_%*_YdTwb zYw|tK{_q>f8EO=;K4jEX$P5J>cL!>_yf&AXqz^mCLxX~Q4UOG+0*CmDhJyp~>-frJ zO)CfmO~tL}z43nEpZiOw)(@m{+s_1F`q=Fc+`PdKBO~bl z;ul>|@=j`4N;&Pz7Lx}zf~|HxGE_9cy^R+M3jB%I1RK6OiwN8ot&=Alf(1qNtREVN zRS%vE`ZT(=HH1C`c@BDSi1f(&+xP3S3itvlFEjx?#LQz-IqOH~ zeTNB(yc(GRB}O&f#%q9;L%di<3?0I{P+$pMI{Cmhm1*yHTsq-(c8-}rn%@HGiXiWvJI?K9qF$)f`68-pjh@YQCtU$Fk44 zbKDqwm+-_9Jx303shsCeOr%2%o7fpT#dh4- zXwbM3xn81ndQn)q>q2DLn6dD*&wJsnEzo||KcgphT^8{mzhb9Owl5#UAC z_50}9HP(mYI1clMzrEaj%P+8U^l?HSDXZnI$VFuB^;af93?uQ@ZBEe%@$} zd@+JEvn_{GOL3#m-}XsXg&Mn@y_~2#lg)!vkBv&NuA>ptSZOns(Uw2#Svw3ljvPH6 zxBuqW-WHk)&-jLna4KBH`T zW5_>G^iKGQJPXC)NA!_%_QhTYnGInY%ytKr4f3MTegRP{l+F*P9U(M-|55bk2I1*P^i~i3WsogE5jLzr7!fHtxqa!c>g7_azjKq%et5-M~48+7)~h ze#Ab?42|oaOPdyRjBXKO@1&g!j-SW^P=Pah&xWc z7IsH&dsfkvdctu1tQF}=I15u6;XAAzOw{YZ==YzcY02U->(NorWILB8WnH8wF_J~y zvN;zc=(;V|*w%#CxYvl+SPd9X(5q5K$zR2#Nj&D_VPwY3(UX-?gUN}gbg1j%mgDOB zaf~?a@VF8fsc>V426zU<`;!Lb2KcaaLYaD!FhtN5^A&NF>gDn2aOuGD#Kpu@8GCXv zS)Y`)YN(RbLz9<)yY;$hV~1I21E7O3+2^(mUrL3FEh_s zW$1vG-nvn^Wq5q?h(JYeHMHxgNR1zsFUT+w=&fO;^TNqamH(NBmoBek0V3W~S zcYBfB|8=)Xu)~L`XaZ(7+(;=OsfZ!JFWh=c`Bqk3?C`=q{Cnb#$YdbhT>o3h{B zbMf8gVU;2X7ulNdu^}}s^=sKUxR_^&@0&-Wo8KJ+stIaLpKDZV#>)|fj5FR;UI90t z+W^Q6#NBGyIsuw-UHM2*X*h>8XW|ae-@#wwj&kFEd~rH_wX}Vglo_TMxgy(cLUAA- zEN1cQq<>{F^Qe8Goyi+Jnz)iRi)r*tG>JO)_3M7_4|ugqJ9K?9al>;xz*h(OjHvu* z_mTTU=^cDHz5)J0@qxAedqLEJ

~>PuPjrs+iN*hp+gV?$u$*$ln+Mx{)(p$$c%^ za*Q}9<}x(0r(}A=Zzr?SMO#1%R9>fbnCw>=5?_j_k4O}o>GQ_Z{dW4RG#b zzv0>Q_fWo%9gmijl#yIYoaf_kI2fz~12Oh&Cb|6yD@yn|r_R|3o8FVuBvfdzf4i7qEg2(z3}`pdMTGg>akb+%;V?0{zU2g38CGeW z9IS~81UxA#W$Tc$G_j6YF9+USyARwa!W|;1vRo_DGxDizX{zd80=|4)ZOROK(mt_2 z%KrAADGY>Dp(m_Ou4Cr`_%Tj2be@RK>{jbOdD@I!ik-)>T$)ySYSAQq6R0w&GN@vS zt$>YOVyVia@c@W$8Lk`rG00~wGsCQYXO(WVw0R-4Z_fGIl6K+PHpggvSY|bKulS&N zkQ0*=*TS=!3NW-=c2G98AYGqedDp7b46+nojNCFi+S^Od=fR!HVjoP2)B&_GgHh&| zTw#J5; zXei_|xUik}x&hyJb4>0>2)Xy&E`M-cHr<}-ZtpX@=)OB{**u#5+IQotn-yMg4~}2VrPb~jZc3KhaoadNK@SmqsriSqhj-Rz%a^ST z9@h7seJ?J9CP?B0_`%8dA?HPFHS62GEHQeAms=N?gV%PRD-}@B8B&rFzOF1lXB9ww zZG??NFq|@JYx6A}De{1Q#4H&J@aRGEE~|l-CwgJv3w5vH{X}}K`=WYJjgJgI>+tZI ziV{}xp_Q2yo68zm>k-()@;Ouyy7$QG@^XeF2$Z?{3cCgFYn8-aO@1-j>fFbisL*mC zp7&AME#a+9_)3G|rq7G(wg=pLB0pIWt@Z}w(vfJaF7Zi528tf?3=ahdjRExx@&pa} zg@VS1g8S_m3Q7{1;6Klb(6oQRz(7F-0ia<2fYF3}|NM!Dd?46=d_Ri~gn9w_3j^}; z&w}|A`gv~Fvp=6<86a&?LP{bM5|D2tLpx(*D|=IGhh~HW56BAyn-3cHP*6BjKR?hC zij>DtP%w@FWpxL28EI}qYfEN*BWnX=W*1AFpZ!4bx^P1tEsY)YNnI>0tn9g6_{e{Q z;D$W^e9b~m`WuLYIUl*Yj6A7`wVg33J2M;eYjS=>Qc_Z0JEKqBilSnFphN!RBR6$$ zu;FH5adviQc7DrjZD+#5%EiUS^7;+Sn>S1l2qt@=m4m(ula)Qi@16YFkEpS|p&h`+ z0bp%K`m7ortxirLmO*|Nl^&_qUP$Z;k&m&)*T{0WQWC>Y@M$rafd$ z{BPcHz54_0uT6i8s_{RltZZy={x|CXYWiQOKNrC*X9s}HRR1Rx`B`~c{_EXe;T4VT ztt}jXf~!~o9QYx_{D$(E*MDH~vi#hb|Fu!SbHQ(KA#A{p$jkB{mf}Yoq!eR=f)a$1 z5EW8(fj&rok)|?L_cWvI`eIi`Sw1>HSRJiO|G+><+?ow|M3rc&8*7q6 zm-xB+v9ep;@C8F~C@Cp<);R1g(Wk(tN3cF}(0=-0I#1W}lIJ1c_CfU}|4PjW)m*!V z`L+epzy~yMC|FV`Xm~*=m|r{=Qo%IU8R6FaqWOQ}2g9P}eun>7xH?HFp<>k&1Hxa8 z_@6F?Lb?8NYCi$xOCY0~VYBp-{TnD`a?k$1J~`5M)iT4MgcD>!pRKn{-4*fuul+Mh z7nF_M3`9lvgT6k+n1a#8+ze*IP%sz%U$>aFEcd6&RJ9cq<;1#Q|8?^}%8^H>#+k#x z0jCQqNA1w^FLT95KoC?k@2|{g{RqU*8}SZc1XCby=BO$G6Q33cyJ;U^csVsq5d4*s z4x|O8%x-|d=~@70mztRghqln~Y&MSm5w*xcx!(^8c8|&@JKJDEQQ03)g(VZk?=S1A zG(jIFk;K8qU6@Ae@q_(?Q3W?4n@(>ciVQE9m4P;k-%Xpwy+6?P5$~`2`*D?pTINYF z;cpQCmf_tq1ZUw5wXUQ7PZ8opyoquLp+z`;U;9TI7AkjZTqp=}FYjjA{ z{FP#Vk)n?yRNka@+x%{a|0b?R0fL^Yt`ZK4ii)v~^K}zxX@nC&f0FUPnDozu$a^6e z$wbfBTWVoN+1bC{kKc6KXE6|a{!bbSGXF~p7!CB?*zB=Z;F-n4?M2JM9A&D|X`tPyX@whEeD!Bmy7IDH9kd>)@S{*Z z&Zi$%$tY-TYkpS zSb1;U35>U#f?jBHsLPU$LLpcz*3Q)%{kY13&R$LY>*}&l;7wJSSXlZ}I4w0_fF`K^ z;O{GP`F&!=&Xa?h5i$Cno*q?Y<=P>G_;87X`AU61WPCPSSKR@Tz5BC~sBGnf(!@4x zqY|pK&jG(=fZx{`^L4UF$#Shb1VChGXJ>D*pIA0sp(jAVZl(;1qD;aTG8@Z&U-!ll z3(@9mYna34hv41vRU2;CRk}?l!mF#;Sd)0z3dr93x4RCMB)E0Z{xeC@Y+%L(iM{S^ zTeecnc^SYbNP5@8;qo(W9(T2y7gTQxertxq$7)q+L(7==+KT72;lfp*l`T<!>ma@D#-L&N)tB6DK_b=%Q!_``8^Kiy!Xq5r_s&Q-8B`3|zI@NKF z)6e2)10|+<#r2^ZEanUz?yeeAt=s07A?tmYeS1n;;vGc)&+2ND6&mpB)amxP3)OP@ z9;hHHX@>0icp^@+P;ER^s*oc#Mn~f~Tb(0UqFQEgxY(r7bzEOuV(-EKaITcfWuGt6 zSUfcOkvF#*THy;cl@mL?1r|y9_p`IJq1Kve*5|kXOzV$Vl%&uS9HccRvXDhz6KZ%6nIqxf%4v0`e~;^*_IHzj8GCX3=CNCcKSEa#1A z(j8(i4(28{jB0FFh20?92pqw=TnXX8rSjHONuG;IrJUqkn*_6l`tllz4;~pxmP>M~ z2U}a4Dcwa5m|5A-l>2HI`ZKvQ&8(E*Tn05=mA?3L(83Bf!R|rq3m*%NV_@36Nq7tX zW6Z2l?7L&;BRaX%JO95G(0&|fJ!h>3D;=z8%6C6`*J(T5xp&9HB+WK30wMt!p0|KI zu(g-DPP0Q*B9oSC;rqs6)NOaum7DL*2So)L)nP1c??M%>R=nC}KELj$oru9GOo3i%qw(rP-R3!u|u3vPrc=W z=0v{Cx+tyOHwE54l@e7ATM65jn1vFBaA$ke4LJh|%$u8=Jp(fkjopZ+whufKUju0`cw=y;9)ojpIAL;lvW~&U#4ErLh+H;}u2bfarCU`dEl@3N%gEVWl zhKnbIq6~Md^G-IKcCy0`@>8us4N{Z9Y^2Pj@~8+q9-nyuv3w+t+#koX;p(}Azgo`M zBaz$aV-?`TsZE0}_e^u5xTaBF@wbX)+wir5N023sO1q7go=B{3Ktyhf2u_m0G$p(V zF@HS?|8vf#U`9)mf7#tF$f!5T0QPb_A8K!XB`?wRi+i^Tqf$*%rf*gzFs0vEURa(uI-Ow)+DC-lJ<)r2@qe>QV8d>&LBc zuP*0HzI@m5iaJ`~F^sA!TYV@UZ&4U|l}n_1-B(swsnFP7n`iW!#s7EAGe!Ah|B)oH zU-W9xP0j%$Mo>8+x6Z?|s>+}zw2?)*I->SD_-$UiY`^66RFgxH)l%~uQ^TS`j#xxB zt6^_9`-4T9{SpJcu-onmbnrE)zFqWx0$gyS*guar$3yQ0`E@eU78wLDs&l9-D8V1E#r{6ej!*; zuxs4e(`$7oEJw5flO+yI0*qsT6}K{#@5yibWO+}zXUk1SGHk(~5POEhus7UP&OCiM zl{1Q14ZHjtoxLES$?nZvMhG52?CkK)L4>1{iBGCEr~bxuxXpP zWj&JTAj=P>+VkNyp(w{n&f~UeVR~6Ll&46dw8vepSZxk(BB5YD3FL6mN)m}yhyXo2 z1DEMe*mZib@B~G`Yh-#)Hj`oA#HC+RPf7`3E?$n7uRo51yPRz&u8R_QqzzRr(pBWQ zR?#B?aQEnU3E?&jrgjzMx`tYw-~G4GMBf{(uV8#a`& z?y|ftHqdfhtUoA9pI4h!b(HwUVLv;8aLt{P%_v8uJ4k4dAtyEpA!uT?wv5-&mK`|Ekm;_Tcysk!Ke#I#S8A8zm%%#uRhz!pi% zmu4d~tvT&Y(j7KX3Q3aPpzvS+sLl8QF*R!-W_-8IH-3n8rn`QSZA?eRz}0lQ>@gXU z-J-HIg*j|k@pKxXO6q3id%8cnG=o?8dDM3YnAXY7OJxBNmbCG2+0db%_jjD7j>jxt!m ze5M@fbZk3Llps%q?0Lzh%FqZ)@N%>(=VYdT+GJCi`$ZBaY$fD~>3vA$uvq*U02iRp zXhqP9ec_pBUa}H*oT%j~R8cQmNrRGbnLiM;H zA}4k2`)Sb`P?7d}QgA-2(~)lTyFNcEuV{wUfZE8`ljBr9o0wYW6xu!JW_B z2$xUhYF1D!ljgT%QghHKp{3ig#fkX1+bABBkb%G(1-zD{WjF9KMHD=7l*hq}93S@b z4cuzFhPmF|ZBM;5+UE=i`LADo&>mu>RgW)+Se`|hy&5-^&1G|ZLI+6Lv zR=)7`^A54UJpY`giGxN~(`}L@#OtbMrOvP`;}Rps-I8xW0a(n?mjqFR`uuH~oyo4i@!J$GKw#+DZD@b6RDJ_Ww=iAfzdNXL>cLj)e#qXq z*of2F+>IUdfOh@y)u$?yw~-Q0B3iS~EMduELM9(~eIrgTGPHDXQh zrExVm%y4W0RMiSj^BJ*I&P_F_38%$uICgMevR@d{gV6fdem0XiE|YvjZF32 z(Fo$Qy4#$mkhU2{Z$&PDhSwvP+v!Q)#X5!vh9s#{TX#j#DoLh>&^7;&FH+~x7+QOR zx|-oNBfPoS(?WWOqjO{gubJ{ryGX0`#l>YjUH&6W^G2!y-i)4hKl7h1$^W{p(q?*3 z<6x5?jZ3jac!hfoF*STXhYER5uXJk9W#9i+GDD@UJi|=G+>U-ibG<)?0{q!9vWh0t z{mtd7*M|)4hPZ~QM%(pLsq37xW{9TH$Sn_{M5O^TNg#kYUEcK*eE4z_@2)stxHcwE zQU~D*K4xzzw9q)}Z{kdeL&!&ucSop5(=`WQpP`29H?)@FwCK5k>vrB#jZj=9H@oPL zF){RRd}cMY7$=Am4lc*8DyA-PE$6@8$-xtoPc6Usj2$U$IN?zg3CjtR$5?uV?6bIn zly7`&Z{bN{WG6Pg#Id5{+`9hieVYCE5Ej2lZLlNNNNFFj+qduB`=!_901MBGDl$E^ zLTKn=jbZcQDT*jU$o0|H^!^DhW;2I$@4POfV`5}G|LLQYg95>@KGm>DKyNC}*6G95 z5~hV?t&%Ly(#90+$oqr}1mX`B?U%)TILq4w8Sb6TFFRvlDdrS|1%P56g#HVxde^=Y zh{WRa+f1$UZ>+jd`6h`Uwka+rG391o)R-gz)o;M`X_>q&9D%Rh3o>l;k&*AT*-;+$ zIE4XXXb~jD0{nsaynONdZ7I)Bm^f#Xz#*8rh?xkNqAu;1%Pn%rv-w_^h+Q7T$!9|M zLt)lBx8R-kd2TAP*Z1GvK1EvUxm{rMylsT#$x-)V`IQralnJ^l2LOp0@6lwq7&u6e zJ<4l}%%psYohF&7&?8CL#1bm1-Y~aM?;^=Dw>%|zx)z^A(~gc+&oecmkBbZLE^O8` z6pt=G0DNlH_Kl%V6&|IN*f_}z$(JCHk(9^~ClJ2op^`~ii#0Hx%1#(C+~I7$k->7L z9IXXRosh6M(M$0I>OLT$xNfEwcQZ)f{!0WA z4+ryCDXh31>K^qgUei(1i7*v47HL98J><}@=&LL*BgGOR~kwBD)Gc|n%Y+1RZh)%eAgooYqah`1F_YcS({1KlEsJ*3?WXj;#+K_uN^{UE|v zm-2GPIfZQ|WQJ~A7 zZf@%z;kCC1a@hsTzGQk_&as+lRF_tto$_YZ1{T1ZR+nwK3L0O&(TOBY0Awf3PQX+X zH~ZrOKej$S-q}`Zt~SQkeq}oP;&HXac}S20`W&xaI)3AMcZfSwn-m92fS{ORB*zS# zkN!rZ=SZF8Ux1@ur8$5*S>~{rpf<18u8Gh8O%FfdP)V}w9iqf+j(8N__|c;M z2-DfTJYP?n`&)nUpI*aknuJqbuZN39>-aS_&zm7V<}=xt>)idh4iQn`_(M4$CA^WZ z_g3k0-?}UwrtlUK9>^C5Zq@PAEb5-$>zR$=^Km2=^)pfwB6Qv&%7YzHLZcFz=T|D? zc68n>6ok&PEFr(4ZjC4Xq_2z}fZ0kBi&FyYZh4@`-33yHxJUNrxH)YI`e)}f;KIKM}Wg~-k7K+94aZ(6_rBX1L!=TUL4hGnLu zsEx5=$i7@{Y<}*`O&x4}8`S@V9#53FCa(sg(SEFk*{pVv_l78}laJkO@?EF{{e*Q& zUu8tZ&0iuk{}V8vr^;gI(rcL^X>}XNPkS8I@wzTQ+oLR-%9E;&I~b{$m?|6Qg)N%T zO*PO$)eh^`EIq{LeZ9fO#^oYFE1HR#mw~56{Hz7EW4T? zH(ry5YH2bi4i=f`dFqd~sO+oKQ54=QBK^?JQngFs_o9oZK}CyD!JMWki!72@)__=T zpO>6hJoH&oMzY`KvkvBS$STE#W#NplAF6fga!H=F^GQ!(T$ysg=SKM8WdOE;(RP`F=wG%oSIO7LHc^9zdWW}Z`PDp-6i z7LgPXVaPu6Z5O*yAy^x{AFD#Q~;2T=QV|6-bM=OdmTze9WPg7e~hTPH-F?Tsgxe% zP=!gKml>*j$M^9oRLkS-ehz6Knu{djDyQvQ_YQV$v<|Valq`A*rR4m!#Fu?#>X9!H zhwFP(I0UWJl-N-U)ROxj`U*?A68jlAhnr*st_Zn<%{E(@98+yk3dET6qB6ddwYw9( z1-;N?3nKdMwJ#Dl3u5bVe2UPJzO+m>+btH|Hfl1iOX`4%p7*4CqkOY(AgBTeFiqzIJ=K znCVPI&W?iBoUzWGdd|}vKif(Lum1iE>Re($OgH23)m#U`zTe!DIJ)GC{tT>w*?KRs zK4JR0TipE%(Fgj0$W{t_d+c88AX>(SY6Wd=tgC8CM1?#iXZI4FQ$9#U0*zStPGNJ; zb3AwS{Tv^6JKI$MFC|A2-jq)!lFE6}Ry_Q5zCb(+qB$_*{KXGDe1+QAT+W1$2A&7> z)|s=MinyWty&((;P|`CIg`xlWA6k$B_=ym5`JEeq~P4)aW*Tu zw)MWKhMMo(C5-18@gISHA52>wE*E4BbWYpqvdU#$ za|wrKs5SwfH-r;)p7%i{uBPAIZ0?`t#8)d`o__~pw`Ooy!MnYOdv@x*H(#f9o)Q|U z*ybysf6gE4l8ff<>Qx`$xeQM}O@S(4vEOx{n3TYqINxAS0xF{XUi@_ObR{_1==7$j z${IK1!ZWum3M2j;Wl)Qu&Vq(#Q^(&e7FQ*?GEq}*^n8qrEHGi~82P`<(m(wDxfEHD zu!rjn#1U_b%6BgBz&ysS_ok<=t8y#fvHbY=^&Y0)MAwgrDH9eKnBaVAe1y0^fVkh=PC);s@lgGIHJ(LDj*OMpf69CgO1l zC+nyki4~7m=WOH?nV#{qn#O4r33yDt?UO+WP$F?i6E8TsR)K z=rk5*$3uE^ii`v%0ew_EQ9XxbcRSNhhCIP3vcVGQ#-r(mt{t9^L> zD;psi9Y)j8{iFvM{PUimWnoIRl9Q0 z*yX%=MURaxh9xAT_*+26@o1V)Q=(zE)YnR%RU1=vSxgFtg%$V;AV5zA)RkBq@0R2g zGR(7U+bGJ7cKvCxCUYutsW1#rKLCXFfSU=dwOQJ5d5`pT+L>#r^b&;8qj_)+ppQg; z(NrVYRPA0N@UHr`A1mal8Fi20eCRPo)5crKR>iX?1xP&mpQGRtUKuKW0HwVqi5uAG zM7+3|!|GNFSQr`^s@q~pSqQu!FgQ?|i>HZ)InNsuNBq)Y)8Tu~Pyh0xt|^b#W9xMi zVooHnWl$s@`qLL$x|nM%j7On)Q@EZyt6Hskf7S#{ZWb=t^u9JKVordCo!}y*3+rU0;h|%B-XFbmt?9R`*xwy)T_Xh=cDuN3{z2 zJfuM78@wU&q#}2Si!P=#kVp?pHJBTSwgic<*{+$w(DklgvD~#`bI@b!j3-ZRL>DAz zU&L<(p&5`sBD+{Ml#~+J3W}g&%1n!t!qB%xxgLd-u2XChysPm021oH11k1cDsLO1)58dJhgQbP|rKG;aHf$_UnlF81EpI)m`Dej7MC7*k; zAvkUak~ky0!-!Aeu*488!Z07p&I3cPCKgW;$I1r~H|^NM$cinm`_{+gSy88zgE;MYS#8_NTjc{fZl=ynS2j($)Q_mCf!i{W5msH#6;z#vXT<5h!$;ZZoQa69sZn zUgykZLgpFRAqt)(w>eG-8n`+R3bS2pO5djOYGU}0RuUp~ua5ceSIva9_i|!!0@-~i zd(TNm1(-i11r6XPY#L9tdp*$_fNu9n6wYI2Cm>O=*~vRw9G~${F)mm~ULH@N`Yq4>a_i+D!^xE}u>q^fG3v)#VrLiDL^WCdU+FtY zNr}bv@#$E6@-Ct|1$`g-Jq4XRbcH8(F9AkQmeg#D7b4q_BQNjFsYgW(82Pas@;LF|@ug)XQ} zrDWQcgaORJ{^RQp89dz@hoI@Hit$k5^Qud~A7fMehqwhznIy|T z<5$v0TPPuePtdPkwIXi^+yUJNv9t(03D~|{br48jvDO<^;4LmdwCplu_*g*P4<`>#EA+#RL(PESR;+7b(+~5RFQ(NLUsV(y|ZDY;$ zIOKG5KDnFQTxz`rsd;&#GAUVPw}q!&Ij>NK@pu}oIZ257n;i7ek&h^JN~);d0y)+> zn4`TQR^L1TlQr|D=cLVpcJU6nI3YSsRCkUp$n|{`@{~lnDgBJ_6@hgtI;he;7Gm0| zc@WEDSv;<5(H;9C&_HT9mr?F76P)qST+BVvE8SR)5iAvf+6Mr;uUM4l1hZ6 zFLVvIb}Gv`PFg9e^Qy%jQ`+u@zx^IeOfjfL+a5&Xsb1i;XxsNbb(#6oDVz^J#;DtC za`;Y2UP)NzSZfo>{DDS|#n3d9ZCgp}YZq*G^W|@mh{9#v`OG>k@6|LwsIGdDkYrA} za|hhz!P}>Lh(9TmJpR#4h$Z^bC)#8(i3NhDh#UrSc*k~^dXh12HI5#h{4l#45ho7K z{)`W>YCvVK$EZX>eps@<(z!frIhyx+xW>QRn_;P*7{MdhXVkeZvP2eEoeOJB_gSU^ z&D;(JSLirY@ts^73N5A>)qENbzo25?&)A5db9?pzIrNh7%RCDtDP*A)5NDD{coCHw z04kb(kFHJl%Zyn_PGapP2l)YwmykMcE5sqZo*|#w$(=Smi$x}}A5+pr0x}OHNH>2N zi?SNmwN+1 zO@&y~BZqBwhu6obyvJW@KNMw9M^XDL4%DYF6lt#|&Pz@z7V_Z6#$Gxy6Qq1S6PayA z>gsHyHU#dP2;3#7yPpmi6H9U}^kqF7_4Q#cSgV!tjzksJqatLya!vm9J?&Lrqw}l@ z4f`(t<8hF{EF{`&rl#YlQd(jY$e>ypY>+HkG{oHU4J$ty)<+us_)6MfjK3q*daN@* zAxr1gRyyp=Cz;fMQCG|C!pSPbKH9*&7uruYw7Z2~So8ke1sP7wM0~e+N(%uCF`clZVf5Nu_|%CFSY-UoIST% zC6Hjb+&a)4An()OeA7_X7Dc5x`?$Fti@P~n^Sypu4zI>T8>vhIE#wN3Jh?Z|)|~LR zFyfI_>9NA=Y{8{sV1+bUm1xQDv8wsl9JgoXS;+TI(A@y5Ey~~9{XTr@-qT~Xm(EVt zhUY(h&E zyWkVBVC{Cif2D2*+4~}TC&QkX9%LVk;f;(x)mD}SXk}vQ>fOu-OE14nf#pYc_ffk@ z$knB$3Cc8|VC`{j1=lZ>>a}|suih$W)P4zJsCWqm=I|#diz60w(+40B^10Uj%zm?F zG~4$mY@;rXjS}D1J?xugEsj*oY ztejS!xoFxvuF~OW7tB(Nil@LmuYn&k%c>lZi0{$cX#|ciKbg9T&zb>zOYzDDl)+-R zObXv-V==%;Nslb#M&j!i&G-v#Lf0y%wz&jJ%Z78RdYcb*0iKwYP6Lq(!GXW_E)7y; zU9gq4&=r49dt18{@hGSr`D*3yvcb^*H5j>q$>ygIF3?oErp)1D6Ux%cQr9y zdC`Z=xrjy)4M@#^$U2K%+_!F#VmEWIgo3c7;2Ft8Rci;u#k|;>DcS7i#RY>&{v2@%H2u-{Wec* zD~wbC>E@AkeNN(OgG41F301}RQMBHXY1KMo-HH)GofLL}fu6oRMru5Lb=jK`-CN3i z>bqdL5S9d$9;dxVOzL;POvj`r&ANDsljWv!WdJPc?XQ6Rj&ti=souYunC3v`zs~w; zd-Ig_6{I9E0Tl)^grSSm2^Dg2f13Ma=thI_oR+ueR|l23^K{t^T?9Kyx zG%#fli~Na0Bn(QAJ$5acA{-2*BWZNB>P{{PnkBRn5?Ufo=L-_eg%^&A}Jvp`R*Ja5q zIYHZZ+_#X-!&eQ}3fFvGNiIz*$$NBq+#QeZIG-tGFOd(uEN$0j&Y(XF-(oj)817ueT|-O z)9FwR*i!kBCElMu0DnTkAb#6TC-N6L55IXLe3oLoD-z5F=t4vXE^aoso5%|QEm4pJ zqC6cvXC7{P#FW^IvlgOVg!ystn9)7O@bOvrIU2+kiPMl;NHQVBf0+sYJ%AoJj7$%M~v#ty~E zb_VO0;lMvu>*tLmxf!8~-d$S}pQZ>2#Huu_wO+QOJ{6UT<0=sWg;e6{_e-+tlj(;- zNvB3Hp9YZK@TZK&DV1aKAQyfX9!N??nN$)pYX!e_@jJA(U!`{a&Lf4a&;hdx5W@=M zgVn&EZ@gX$GlZ=}WSH{nEQMFJ!&Q=O4xRFIt2jYB?V=nNrN#8JGqWhxLhC4$z-S;_;(3Z|JmWJWsGQQo2_J%c}V(sif8y2cdc29V#|ek zW8e6F_+5fYODk2_BFHtFciC89{|n^s12$mGos&ZHQ7s|H)pUVerb{^i5;}3sDV7KM z0Q*txglyO$@X%vx^}hNI8n@3sk3Nk+tDVV@Og2?ax(PEFj81Xz^w9of!nx$2biSq0 zV6}vDl)V(3ZScAcVtY7Esi@6C48gVjeMR`w>uCJon&k+aH_E@dbpD<-M^73Z&Wn2$ zNe?L)cOHc|Q;Eh9>4=TCheYtT6cl29rc~Ru=agwRsCqX(VoTi5)dJ#lY~6&IEj zL9=&YVGO>D+l2qCBKk{z^wiN>wzgZ61hL)|(T7y_a(GgIf%q%;lJfbKA}H>*(EMIZ z^4I1+rwJK1>kFg;$ZSXM^Btt%<{#i7<&V;k+N?+ts3npAh5k2>K7q0jz%K&&hp4~0 z@BHCAg`{M|7IAw*IiUUv0r0sYfPs(xO#=VSQ>5~Jkm8@cYv@tFzg^4MLupbIXJTH% zKQi=;BA|Sgr{yQm{}x)%j~uP8&=PqsvGLXK;|f}$L&~L?s%IgGAFr7e7EFtPkFT%$y4TLp<46q8AC&mBs$*0h zegk&9u+!H!(2i&E#qZO~QbpL9DRvD1N%wwIpT$LO^Tooi99GK)3xnk3*CDM1_uA>r zoC(`NV6&lJ^uTRKW=es1Lj||);f3S*>ExRcwe-FCqBffL7wyxmfSI$n%ec+Kt9>IP z>+QbN+mlOAWsin+Cq9;?x(0@$&-3-<3laooNrW|-G*QJl8yr#_SO|S4Khq6 zW^H@G%z>N**)5md|!i^j5E8Y<~PBKX#kJGHptev-S0Lxn|$Xpc+EG*8XGvXC3O1TIJ{n6|&u9f?|wS~xLh zk#i;);H@|UPkldg$Vka-Rc$Irsh60yCm59CliLDja=W%IDDaG&*%2iuS|)BC-lv=O zNyRxWdG0AVDxKZWgI$P-Ja{wIbV=ytsI6%hBope+PRHkY_6k~L%Tm94zNt8mL_$Jh z6c89ew)?X>APWYDYeBd;D~1aM2;;Gbj#h zhR}yi{@206KPUhHgplxxfUIb^f6>6C(Oi(Cz+}S^s(;bIP(ExB6+A9T_Dg5ipDK^k z9`>}sav_n+{NFdnTM*IbJ}oURo{{-q${`_#7-Xt9`_q>FY3z*uN_s)k0KvyTB%A^x zTZDfj0hG@-^nN;edIQX&Zzul;Jc{U(W=WQ}@qf~BIOM?iO!aT&g#SO}0JPjUeHi~{ z%|O8bAT_ReKEgQvsu#9?7Q;qT{a4N6f7vPHXoAs_&jJ|#m7Tvqj{HGFsefmsTr!BJ z`F~j@kqXG@g1-GMfdvub`W5TJ+S%b;u?YP6zX0s^X1wu`|CuPNN3cc8t8^EdBaAx4 zBX%QH(O6&Httii8x80bj{-JVL@PRVRQAcl~tOVVR2+m+RqrkC0!QkIt1QME=)1^L6vL@;?m@ub#f z8TXE znuB79`&tIvYi&soU-Ji>rKexYJ+92GcG+`z^y2m?vYCxqwq0m9sUUPY{EStHaLgXz z<)YY1n<*y)ZU0cm%Nzrf2-4f{SK4~Oe12D;1GTC*xIWtc1Kg!GxEs!HiznYtsV&UdOCK+tEe zmt41X>a-b;%ZCc-jrvTo5*Y5r%=s3w3Q1mGiONCX3wmnNV2@q4 z#BYJwjiu1VU#zVtb-nD7E5=uD$WFSc!!dm;z%0mn)s#`oUVZQrxv*e#)2`R;|KS6g zGtLBFyPUeyl>{y@f9rd_Gh0_fV%yN&lO0RK9p7JO-pr8KP)jY1_y?=#H& z2oLTI`Hkv1y@9EhMMZyl3R6>5)X4ZoNh`FLQlDym!B`A>KrN+M8JfRo6SQA) z$a~VJbzC8>482s>9eDeU_vvG9F9OU0JVtHGY0vlC$);|o!D%6afvM6!4dhK5N>=Xu zek_LxiyVd`%^jND50Fl4gylp@D`@d?5fF!u6D4r`XU{Uqa}VE-#5CG~F~$TSjgbfh zx_s;WGTd4fA~vf4TrIyf&j1?a7Lc4i@ILbk5r+6fJ<7ejF5U!i@|4`Cc=E0A z!CPS)c_Hd}Z3*ol&VA;FAC1TsEHypsOuQ8Z8`)$Bc)c>Z@?%S!&tkW&fp8rad6-o5 z;JXk3lgvbG2wvJsPux4iSYhGkJiud)VbQJT^c~f%cY#H1I3)x!f{e`NyBR@GqmbY7 zgpZlG{}-K-goSx&Piq!FliK*JKK^%rapZS-K6hP_Ea0qlezcYLk}k}$$?JXvK#}_% z!^!jfatoS|q}Omu!BLP<+E@r;s{ryYalYBU)kp8&Pzkjh4aPI!rg;g^Q=Ci_LyRKD z?`Avr+?CfAnlIxPUa^!G-iNSr9EP>3TK)J8Gx zzwL=Zg(lUQ1TAA_VmCuBbt-)dx15)b7X@>iRK*)s2fZGH?2HUs9bW6R{8QR3DRal2 zy5r3omG>hhy0G;Cx@3P+5o8IFs7)5vmIm`~&`$wmv##6e%R#vrEbQ{I(7pWnYUeum z9sk-7@6^okNCxGFOT-z_wO0ai=~%V>7Lg`U(=3OoN@?2+i>C7dOe>wM4(I%g*|MTE?2Y6wG+O)8LM$GWfVu zAw`f~dm$3q;C3lHtFRtU`GKMHm6WuoYzV2q0&GJ)qR29j+A8%dvP@FoUE8DcWj6Qc z_ZhaX(`!%nS8tTr@9LXLZnRLdAAo{2&Bk}mn@}n?94)H03vXrTuOC^kvphr3TquRu zCJ;S*JEE2~P05~=FQ=6{6(1b%p@&IW3|t9{poe0QP`gm0gp!A{pz!cijjA-O7*b6Y znZEnRmqSJblU;wSu+Ppz_cWvA@ckOvZO=EZjPWa(9E%o1eh|mSLhZ~eRksrtB0UBn zO=Z>9olrtnyRld_kGYRzj()A{X~!lW{TtKv(>dj}dGsYvAAJ`MuZ^dE2_Vv5Hz3ZK zs#;AZu8XG@h0|IUT7(^#&QzBJJ_{O zlr$FYGXH%Q8)auXQ-xP4m4YF;<_TxFZ)kEwI}}!rlK~R63wjy76*XP`U0yepsu)$c zWsa_uGQrz?X>s*ZJb}nDAwz&NnFVQZ27Y z;&-Y?E@99rZIpDg1|>sruG9*2OaZ~H4A3gZ!ED3k9LQOWt}R~?{h3#9yU*}=Sg86m z6+78VMv=9Ao=qWgRODNDyfhF~lK z$9Vjv_nB~hpEoU9zK5Gj)#VS(c&q6%-*M=#&Ps|7 z1F|np%VD|I+-x+Pz9mrRgxnB#kANy;e6rlUd(tG{R`NbW0|kjpYZm2Ht+9&)>~qtMWg8!_Lu>cV0)bmu;H^j_i*E4 zqtt@2y|ga7WLdW@yNfK|*$*Xdx=H5DHv-kmjj@J`dszH0eHm1;nh^yxecieB7J8%mGmzh(K)F%JqSs_-*&TjF9fbu6s zk)$P`7l>7d+Qn-=VfVjaQ9*Bb`QfnH8A-;_An*EDAmv~6qe_ZL87d71)z)NrX@1i{ z>zE;&hrVa};&lIA(jj83eKC>8#z=st%~5w94@XrHI4vY?Y-l;tTVQHGq(MNw0d-D@ zkuDGYuw6WljqeO_kpPw=4fL40j(>f)>^H~h(Yk3*t$bK)x%J z%iN7X?0jnO%0$5V=$qH@jkE~3Agsr4LuXkZLRrPvHE?LiDh8E<8Hi^y)0SX8Y#y@5|95Mzn{u(3vpH9;RA{Zez zNm~xEC_z&|EcQoLr4lH|j{xgAAs9%8v$M>~06Jfdi5OP<`A`mLGT8;mU_M!9da$5X z@?IJ*$hJ=}GnM_?QGoN+_c8G^u_0-z-Es{KN=&*;fiRPv*r#H>>pBZjwaJ4c zx}_%H>%c}F7`@Rtf=K(N=2-xzbPeWQ=4C{gmGbJJBql<`Edmz3+VSnWV?6{YzU1OK zXq;G7Y5Pr8+=S|!4ohy#P{N`(<3VPw929ZZ-m3z$o2?s%fWGN@KEY$#eEo3yb1>y7xdfR@mUDe7BB z?~1h9yeicm=V^hotC36%&+Mb0Oh-AV*It3@pKzMG#RW5h*+u)8zhdod@>_qt+s9j> z&rz(OgsKnO^a&8OtkN9Y0A-flq;v%B1mGFkA?6wyZj|gtfD7H~8eHavK$H!#l=%(! z#J$=AQk(J{lL;V9*t%gLf#h~=<1CducmLtD@lLvw7sm=+Ju@nEf&B5*cT6`YS97f9 z>i1@sUi@@Mp6AvtcWM8+1jM3oP@u^EyhpRpNxTJEz|2F=jFl>|??f0-BG8h=KWY{E z298YW@`K8%=zIuwPfjhOXVjlk|1pB2NJ;J?5l~79#g67 zyL?03kN8IsXP-`yYnNlx7k8uryP{r}>sA%?l6m{eMc3RuV!^(UM#{hgpHfLiGI@M@ zGB6QYrW-m);r9aP*e{TPLH~v@#bYs97SQhfgtz1DU_Anwdr$)AmwVz1D!MeV54|Zu zLYPoY_BYl`QV5U{%YCWxC7Yu&y}Z1B5k%>$+eaQx%r|*kT%7DFg~o$vFO5%A*Q7eU zR?;i-k<2%15y-5PgoJj!?)ZgS&9#*3SwRx7h{q(3O4bO4t^UwwJw~ZG3-quvTaZod zFr+@4;ZIAbqdG`mzLaEVeAs1c*DmdPJC;&Ib=Scw%psVvi00U7u5l4=9lbdVuNF2|$t5u%D_oGaid z6Qn)R(S2hiRr$BYPko{#$D-c>*pyg;4*mOEA4$AE*$lIX&}yD*@m3bu2Q!H}E1V2c z*dP5-(}TIgYL-^yz9_%BY+R=qYu7*Vb)1{Vy%j?7oTU9>r$$2%?Q;2gqA&)QtZyDd zWtE~8?Uc_o`)BH;d@MgGt?XIAmwJ6=ppd?4{^4R1e==&noSq#F!ezEr609ozB=JoF z>G2jwI;@4A@~3}9^o)V#+uxX|9ay|9OdiWeIqap{QYD%Zg{6hvk=C6qnUO0vwI}#x z77u)D?1@p%?v6j3-o%S2`}HebHg?9s(!=xr9yBE@2V zg)S|pFBxJlO3>)zlvDRCFGo)*+ASONs>*~8-npO>foxmgq^BpE7R8b2Wmpk7V`uT) z&2C1b4kxm)vIctPHAK4QRoQ9X{-)!vFiy_QkXbg@{(&((6b(nbZqp;xmO@kQZ4{z0 zwgfaV8Q8c;Lm#BQRQJc8Yf8?f{2{d)L*CCb)xkGq&-4Op)Zk)}d_`jsMxGOkZ4!L0 zjxG$*$OjoJs&H02Y#lKJ2MY2%)t$rWm&b?D4c%RbmXMn6x|i~|Z@NQI59fQP2s|2| z#$Pd^e#QGN-n9k#>MH8S5IyyZ>4F$oiX}H!2QsE@Fhee34RsiZxrVOf0Hv*CgMN4} zRU*hJMZ4w9!S4x4v(5Nl_Nag+6>}^GmR|^E9KlvY3OAcwJk#e!&sR*eXuE$W8Qw!F z7ba)Bc**$?WwZJR9)YjGkoDocXR~PV>WiivAMIA^+qYRB_UAtGEmvxGaXrEM*_?du zCHkUI6D4n+S!Aak0Iwmf2wJ&R`LGD>4c0Uk^~lW2$jEd<`t@q%O!l|TyuEFR?ZaGp#ye*h?rqo^T`uVOxAQKvJ0M*FK;dW z{Lg&ke<_!LP@-t5M-jeq+?^-XV_WzCX~Xj%PpiDkq%WD|bpWvX823aYC43!dYd4m! zO;G1r7M*L4qYfe|Y2A--^Ix+&KpmXw2bFl2m(THCpA-s?Q{~A?hCG<9y|9sew4BMC ztWUg%t-!80s1bQ~h)~bDeqXc$v^-bBH2gsOF}-XX$)_#*m%pE0V6{dPb)_%G3Xn!Z zurwYV6m_3u6tCebGG;GGGj4(Os2P`N>Ra0Wp69sDaJ%qH>L;b$XFU&vaGWGy_l{ys z8^7OrP@hx(5IVDZT7l*S+y@xTa*CX_ut1V@jq`x&c?Xm5wH3MXGUDliYGZ@reM;MC zzBV`C;je}Y++RQqL@t?H-P83 ztub;eLXXm28k)bhJlLHhP?y6y0JZq6>x$w;x>12xjjGk4u1-uY2~9vpz%MB#FbcA!tC#0WSEeK)|`qb}=&e2dC*^y5j-DF$_t= zm#hawS@h$bOy;1SylEoa1j|QtmE33RdD{mKJn+k;o-iMf3Zw@H26Z)e7T?joTWf}Q zx)e&p;3*v;si%xg4nHX#vXL5Bt^Z9AJ;I<*Uw9&7*8WguwzTUCef{aJg|+Y{-Mo3u zS(IPIe({IQu`cICcl=-TWc*@0tstwdnv|&`^HU#Hw2@ z-W~y%17u9>!&l2G@k|bdtMz0 zUGEEhX~+WZ3hia}`ihDMH}0k+pM|geTc+N}%lUXk3K8z8gf!6m;}hv*py9pQf+CMj zVRxN~WQd$+?cHA%CS+(OnMjiZv>|}Rao+RB(6k1y)l)HZ`dx8+BH5bgcsjd?KU)t< zkB8?bEyy|z?hmzDS|2Jq3d?PWQN3+5igJCk+QRX46PWy% zx6{>tg(X&gX1TgT^6Fc*eZ-Oz%uI8`PQtFPp<3{45;zZTkyq^UVbVQn zQ943gshQk(ANPzN|7*l^U_z;x#xjrq=d3)Nt1@&Uu84iS9%hxKwd&&+!DGb`AO`_7 z-e8nrEcX*JXJDDNxOB3ga{Z#^7*sELvKLt&4+Phjtm(=RLdBjGgDQfrdWOM1U8QfL z^n*6YWJd09N$eu)cAFo588jUP{(w&hY9~8$%|P#IJS)c-%ViM{Y)bS7x^KE__WJbN zbRcll;t~YT8Prald^tH@@s+uKZ`q?O=i7R<7X%Ozy=z~y`ndbXZ!fzxDevmHAC>RD zHXqXfW4W}@1>?ZA5nw&L#*n@pDEgZbUT!|t=7eLa^D&%codC%QMOIgjR*km4n<NQh9{9zAT@y8`Hh1OV$We>CN2%Zug&b z4RC|GB_;UbwR{q994G2b=5N|9q1Wf$6I|vi%+A1^X|e8jeTYs{GJ(T5@Wzk@Q)lpQ z_~od}0e)qkN@yTADQR%{pP-g|cFV<_4r2|*R}OszrOy$NJXP!{h;dx}_~Th6!*4vT zB8ix@iXvh`(ta1A*Sj^uTTRDYqrX3ECPbg|9PKCsS#+suo9Kih$DMkMTURzJC(@C65 zkx@HcJ4lxEvY|quvV<(i*RkPW?Xc|Ae%_MsU>tEL+a0B!rV>^|leTXDIwJr*g&^vI zvWb0R3Q&O=^KxHXU}!@GGuB)b4Ra@%WCO*3%?vv@Q0yBD?q_K%I=|>=YeuK%T=shj zy%Y|YX;d{dG^%@L=NbCwc^ag~!rlco?@QZ8q(MMiz4;%VlEW;FUEg7WQe$gIwcj+y zNax|!l$Tc4-A)-sHvSjzZ;xNvhL*nGR4C(-QWDwi#2DKs<^2PNAIeC0T9^{~{+!~1 z8AJtUez{n$XGCznWmMm7WK<>_d_K|2uWkc3yE*0R2}AP z6jKI5;>U0B4LxO?tjNM$FYDv;gCT{*DqbbxiD9f3070cfa$U-;&^uS_lU1cVk3wCY zgqkydPQMd#l%KwLTdN4H$xn!KYV9I36jDf!*mw>62qR58lv2j)uX1ek-zq4-Hj#Ew z5>m}(`iTG&lJ8FlFu!Lmz57OBx4V34esKedg4ri$L3#I(Y4cYMrEi10ZeUv9{gs}q za*{s4Q=B1x(Hucy(Xp6|#N@jml-|P@| zTv`*~HsZO1Y9Hk>8dt72-Qe!-JP-UnZ!EYFoi%0->Qh1o{bHlJ>V=E}8a0#Zs#7(3 zKZ<-NxmLj-@VoheHTpnxUBz_RmUB6N}WuK(7fm+Se^p8o65TOc#j5vsdVXtH{7) zZwmh4n=ZLm3VTq}7^%1cw4r$Z>0Y!cDSwvRGB1BFmC(ZvKnM>iaAB1)-N^(1sQ7@i z5N2RD52!@xbxaqMZ!D6Yz#mYFY z_Y^3V-rw}BVf}a+3VKR77iDdQm+5#<<^EoRsdzQ6ex3g>+xmdt#V~^a&IOErWIl!}#lf|I@&w!p}2m zDOXUz6;};wz!VO*XZZAFvXIzrXM6pGoCEM$t~F|QMq=Dl5wWF}+wzsCK$yqZr}-3P zes)XM*rqvWJ-TfE8{!%vqveT82iazj*_5eVvnko(+-UM;^X>KD$+|?cFUN~r>q+`K z(V-%;NVgnw!gVlnN4rYh=SWv;xwUDDzRiGzwhq zsiXn>zGQ*Lff>R~xrAq8_bN`WH|x+0bXv==-77wh1T9-uy=#o@m!X&Tpf1CPh$5ln z6ci*-kFT{~-;%O5K5P(T^NGQBLPzaLYdw&s=VJN&Q=RzOaw2@BdwavZ{)4@mIwFd> zlSy-#?+9q(B452qaXvP4sCPDDZ0opjx;6!tbnU&lm=)fKS_|lo&tK?QJ-rjCOMVyU z)|aOxy1|RYpF60&Q?bq|s0_-pD%6mSl{%YMSHDP26w1EMJ^A@gSp))R$V`17CeP`u z%O%mdQPhHx+oIzUFJ+*C4d>%j7@EnV8^X1JD%;HSYkz)pwt6avU8QU!?uqF=} z1%-GMALhQerFn0*f#wV6yQZMIDVcLS@0`27a==Xo_hHasBc3wVwEZ6@o(2-5qCMn! z;qFJL{Mj2V5Q)aWq?Wt&?le3F2oVqt3^(Szn%;Nr289E4l;x zO5f$A%0(buNfNy7_NjU}4+pz`6A*!mXojwgGK5_wQ#psmy3*L8E zH99^4C)=2n6%+05bs%Z4U>^9WQfN5NCHq%hSC{3cXwD`ZW<=NNoQ59HcA`c+5wc@b{O zw%AB;`?mZ)JJwSkrH&w71-r?E@Asn}%^_3Yx8Bn85h*8M69Md1;<#s|O~6=ci7t$t z^M`+576#~6!x5&w)1O-&TZ8(%6KtxXStX5q4COmFadzUF{h2*ofZuK zk{iz20C&+e2mop~Kv5^a<}J?wYeg*CX@dbcl-D)>(fp7^1HMc{Xx+Cc zq+I_#)DH!U!zmRPz?qVHsP5*P3t;(pI{eYRW}7BW@HpzVz zFI8FZFvF@F^JwhUMZ-)k;nL5)u+zN%KGxYr1!H zwL?#7*J^Rc(<2mLi!BSNhRVmh-DgT>RCzI*PyYFFfJPDEH)9J{ijMjg(iEWjo(0&8Y|_G0B4)f^X1aL0y1$L)Fo$d zmgFLVq%bZrI(m{oHZ6t0DQjuu`R(s_?w46 z{iTFv-IF$gXU~o*NLQvFcwYH)Yh-5UYFc6xJIkv#htHOFiK{tK7m^s|QJ=BLaD(I5N@)W2Rgg=&tbIG?{c{zAXHSc97u zigxNMm`H_c@hetd`-)$iG=&T2$PufN3Uem_TbyBr@ZVt{{1ilfCK1e5a@Maco@#)3u{X5pC?2Z<(~8pbygB=qKgMs*m)FqA#|T61vy!VoK47yWv8f%s4z~P>*U9V zAR9!w*zc(r2hWb%KjJLgFWDK){5!a}1T}KqXLwX}E^?ySAtw_}Fe2iJpRr-5Nb2dm z+k!|fEx)8Q*g<0nb`~P~jz0U4BB={U`RKIq*qg3N;J=)SHz-MIYXaC!clfx3jP=FG zLK&HvBde>OOf4-d!Yh)Mu()EyQCgBb2uz5HiQyvLwP?F~jqzr&B_X22pBtJ#3H|f$ zHwr&pD|E%r|{Gjm<26~QZ_tmJ-Hj7Kl;vb`A@9*#Zvn$5JQ z=f8F?N|k4y^1&lPbpPM$Lj5ui{QwdQo#}*0Wv}6>iC_*L8j{!lDw4{{&4t(1xoX(O zf2Z-h!ue=n5e0;@Q*|N7cV@9F2E=k2q%?#7Suq&kVXq~TFDDAAL_si=8Kst+WOB&K zw4%VUuu1Whq1P9Md+z;QbdL>Lp8&>zuSY}WSiU|RMN%r(aXswqy0fRAQXNGH|Gys~ zElwDSC-5j9)xMKan95X+#$V^<9ZBGlmXQg9pL(8?V3dogmZWptF?xO^ow)eb6ZK5w z&N1h62B;Z?6DKOw3#F-!OqHE6&-5z! z_}p+zge&%+tLK6GAXZokZPIy*Z>f|vLRy*{=O*j+_Vz-@`pI7>n7_}QC^hbh#U!qs zQ}W*5{c2{uQ^fVYBuG*$oZ#=0Yn+bbtiavr{a-P;x!j#4%iVD6Pw>d7NU5Jr4@4uI zoy@R5KD8efm~%zMiT;;UDdsI)#@5^DQA75Fn~g#DEu%u_7L!Uym|9ZXr`EtI-XzVR zORI=UXtw7?{dk|mY|)0?eRh9&ykzSp8_ucSZ*YSkR z$1ao=tDF(y0Uf7*GxM9A-U6^U;E+ z*eA0JghFl|Fqu=q&k86rI36-dIkDzr`4J#TO0~waSDUDKF0~`K^x9oRdc_$IpS{1e zJNch|y%s0jfXZNna}Vjpk{yewERFy3WveEoXZCsYgvaH{mqmIA%wQS|hT@h}Z-*G` zw${bX*QvV-eE2ZQL4{dC0A*%UNhkGFhdzWW^q*^Kfc|u?lKeh<7uM|CVQq2Uw>?aZ z7={oDhEHV7nnt=l^sT}uEuMF_&Ha@?zK$6jglZG#3*XPyU^W?2&Jajb2@}p4Ai0>8A(XbtCfWW1;Mkj zIz}afR+cAR5%;s3tZ2-s|L4>B-#*T#h z$H&QS?Bmn!UHUXJ^V52Y(9QeMPd7aN{=MYm0Hvv^X;dIPJ~U5M_JahPk!Z0Q$o|E(wpGic4=qlnzD*=X&akT&ez=1Gto{m z32Le|5wr>r1!v!j7fW;7GQ#)j$gyk3J{J~fma3^0YQ7^?G&Y8>;HzedsxS-91t@uD zpBW?{o3fF=dic+O;10%n?2b6{`!(7@P>cY&g~8ED#@=z2ShJ5GL)&~Mo93?%Oo!6J zjf^wtKQuyvm+oRLc?hr6sVXZ|F{u@loEN8;i9;X|R8bYfdMAnH_MV|W{xng;q+lFy zp<_?W;I?-+Za6TPMw>rY<9A@x1^8KMHyn$Vg8g z*({2#bZSb$m};aV-bydqyPCPWfBuKa@xS%T)cph~_b8=)-qjOtCM6cXyB`gq{$#-* zyXbcazaUcne)yPHN92Xao7aZTZ<0jw`$vz~<*|3|4&W_4eAeg(w))fug63vs;g5;A zAr^A^utfP(B+>p+1le zMXEZBbnQ?;jGbhg%rUiX%!A4}D<|WXHJmYrvZ6M$lr=u&D7JcMVWM%tg=EPCq65EP^R_m@KOo*-R=b3a!&v7=M|R5{T*c>Wj#I-_eR^3A0$M ze?Lo&9Vsb9*Jfd2Xsouw%D&nrrLgXoF9$znd8~;-QJ0xm^gLwo%2ZtmQ(3e^=52}C z{mfXomKd_3>=P9ajy(o)6Ql3+j^YwfJtaL4BxU3r*2H$H;lGO~>X$v}j{?b;;|{20 z4Fg~AY%PfU{=!h*jf7;a^%pq%Kfx}G{FD;46Xs7cf_y&moR| z!|iDMCZvngXiIO4kl6%|olT_-sSDJjK3&Si94uTSwj6(@kFy<@{Lm#Rx{8;W{!4s# z^vqKPKfRxU4RZQ!=e1Av#pg#M3=Ol90V>!z&@Tb$8QIwPcL>%0JZi>k`AB6jw2>_g zC$%;dc=9&!jWLQU#MZhQ7nL4ARppx(Fg1N8km?bvr@=rM2cDjv|&rj+%y}7*F zXCEwJSDTlzEgrKTj}}fr=BmZ}*r!SeWU)w(KaCti%W1NtMiHR|3AOX-tJvAtJI5Wt z@0h$@85RAJ)W7Kd%a-$`Dr!Mxn1jn2V(#hQr}LM$9Ksu*@k+#w>RSCu_?^=jQ&f!W z3zc@F$rg?a>85wnl(yUUjM zVcJ*IJ9To2=Oy)Szfa%k3%*i#>8foiuzYA|xZ`b=uq`KRz1%y5p~?B@H!YtE1*GqC zC0sYbdqH`Z5O&jLR-_2;!u}kOAMK~#zcsZJN~7BUB40K%BFDXAWfX|Jga1u|Y_YLM ze8Ld&1HJ9EXF7x)MIH*V!$^%B%Wz?%5Iudrshk=)qYi8`Se}GC8%#$CTcV#FYbcEF z`nOF*d)^-74GwS!Ie@PN4f@sKZ034w#{Linx}xCs^8uMVlo1Ww91MycUDVAsI2|OO zKL|mGMV+fw7zTPf1}3JkY*ke#pkE*=ezqCR)|cHeN2fH9`!)Mu*vC|V@2b7}%M|WK zyl+-YU&IzgXUT0RF)gVv6hEDVO_s}(@fB8|w8y=+S~Mwx&*+Yx*#!miq_9nl)AONy zV;i~rJk3faNZ`ZwP9yKL^YS8bgM}oY2yH5wN3xaXKRa_t;2!JPal3xY&=JzfBXm}e zm(#dBR5Gz^3YY~^`)*D@T^6!Jy5jWDAr*N7Z7{yqlPOGv^=h-O$F4lv<7vweQ?5Uy zd@UwrGNioq)P3VX8TdP>kNLP|8B&}Co{0+dwV!ghEyCxn|C+&$eB41<74X8k{|b59 z_a}OElnb_8KDInEHWytvr%T-(T^QPzboRV6q;*iaq&at>@Nxy#RAA#V!k{x!!%#4* zWL0~Z92tWj*B;U5CxE0RPZ2uWf@C=iqjjryQ*4yuKQbXRhAw-VHodc2ojIP3pi6es zGm%SS#u7xv2Aa1+V6eE6m{ab~N{VsP@lCn<9)9}Ot-s@b$;kVN-kz8WpJ2XECLFI) z3jLgK-+|~TEt0?@>(3DFe-=Xc8lxw{A%*{PI>>t7&AB`7Ln3Rb$)C`R3m4oFd7gDt z*p*MrQik@GLc!?}3-5RRxJ1Y1J+EggQQSDPK+j#HryT@?3u+jgS~RvY{FxOCw5tcH{>%S>U$K3)CiuU(dH#p8%YX)9u~+7T@oK)6>kjw6dYi&3{Z!h=_@e7u(FTv*^e2MYrsvw6(P- zEfs||Yb=wNTg#jl+f=*2%{ZR|g;SoxTz8j=hOaU<%(6r|zAT6*VZNOEFk#l9H05|) zht>HLZ7Wmx2`S~OzGFb`39_433icPxr*`Y??15&3VI9zP&7$T7OjdR()5_>^#{coY zK#W<1f|{ahr8mKNbG(?tbOF`k`VF;Rr{C2G!bvB8@|yh}W4g60oP)*ID{4i8xTrpQ zwSRJw5w|TwJt1nNRdu#i&(*s^4l$E;C_3Jv5*Tq%ZCufdx#x3h5c$6s(vf{7$pLIk zeJ8nsljT!dN!ZItBd2D!19Gn1DnlAvQ^M(2-nE)XqW1k4jaM6`SsAHv2~leLh1VswY!-= z%i5o!RvPDyb{*H3$81)$Z*w@eah@7kg@R$VhZqz`z;G#$4R^a@ccmznXR=Wog9WnG8(&Cue0vchmVMg^=Ltr_=sq zXN?)`c~bWU=_=%8!czHh41^gc8Y61idLy8{(^UV88+W$G|Gq0}z~Em@+W2 zY*BuFj#q!{AffRNHaeDvT>SrOvj{y=Yq=F|Y=ZK1%C(MSLGMDRP?3DbIcMRhM1l7V zufy$plf|4{<>6?eXrq(zTM~Cgt&6>I?5-Dfo1L`t?JW$|wG_lR4v!^e-ia6|T)+_pCSRLL&J{83#2WNA<;UdykXt+*)Mh}T-ZyudlMWsJ#n zw<(^6?b})J_4P$npE*@+`wBg*ZNdIeT4}2y=p?mS?I7XSp*X%gbmCc*$?Osf5n#B^ zMc4r$(*&|^Z$;a>iKZbMH&{?~yLLSU*)dbu(c5qiuPxhsUA0uw4QD8K8?ANTj>%jR zV!Pf?S?#*#Finj$2TOBVen{8-T%SjVbg24vh}obBy9WMSVW8f9lnGs40**L*^ z(OH*sl7!~MU%vT|F^+S|1~>s@XLU)4YRwpoo}MRMc& zX2_A!&8e_I(lbDR^+7(Sm5ezo<@$ghxAUfVtDJGGbU95|=r~=yl=>WeXD8eL==wrm zmmx*9kXE+a?=as)O>UTr^i%3{q}%`lN`fup?=d~+mJ=>cu1>Vcm>GvSs<-aQMJ_lQ zGAfH)BUAa2ml9vK<|2W*`uMJ&yb_x%?-7dl|mX{uE#)+46m9zcMBt<6e8A5XbY*H-F#u95~G3d1{C~L?Pub(o(sT2(%9` zj(+kWXH#3d(!>OYXuHlfh+rFWr^uethwo33_$E6KQ-oBn7C)>`Y3XX%!+*F@m*f}=)XxfK-*%sZl^*@U59?#w%)jr4EI^@#Uo*M4X?#?APPZzOTzm2qWN&4#TLhB+>B1;P1s?qbrE*XKt9<|Z4I1*+_!QQ% zy4TqxyL>DZkd5ua``Vwuh5uF0eUSyXJ9upUOz>!+<-QTlh9CV%e?NJ{*|l35slNGg z-7&$$q`U?hB5qY*%_{o=;vRo95{Xo~n4muv+70y>%F}#hycuh)Sz!b(CwM+!i7xVx zpq>)w0m2i1B+IIrnP1_ubyj_Fmyze)LwzrUmREK7$9X5N<7>qgB1)abLg>)88DOtj zh)E=7ZH~2L)Ou@lGw<*!8+eLNu11 zG`b%B+15^BwDY#}ct*&1SIo6spdBX9SJ6XSEnVGQ=`#*&z|`2gYt06eg)E z(>oN6joKfpoiutA*;SL{uDzJGE2g_BElTC#4vTV?UB`XZJ)`A;S&pb*vUSE3L}Py{ z4<}hKWZDX3I8|*GI>f6-?D!c=)qPScEN~`u6hE4__`n00n0a+k8~FDr9xXf(ucQ*P z|5fm=TzZAgaTa12-)L7IjhnITo%etp^KUWT73BinjB)Gdkey|1I)kiKQuWh4*(ul^(L>mB*i zV|^V;jRefQpFZ@()0}TrhV;09sQQiE?`bpraILca%RG7VGpRw;yS9!dG!lB{3|WpR zdXG4%Ty7opdETYQu99lGGnr}npBB;csrVfubn!>%j6mQSsmi3@*?sLKceU5&Qvw?@ z$yUDmfKn;KX){l+RIL?v;4muCF0kgEtr=gXFCJ?8@vNK7Xn`(WacrPc?r6t%?m5bx z+Jo25y=St%S{w~btB|J3s$*ZJTg@&?zr)t)($3qB1H9lP6XffMFM~M zJk4pJej*FmfQyFt23Yn`ft77$G!jRTffSIL1T{*2^TR>beP19Suv+I;`{wZCAzLS| zf)LYNm!+4vZ1kg!3e5hx4m0OJR3f7~?w;>3m45ht82iegyt=GQ++BjZTX1)GcXx;2 z1b27W;O>Or7FJvq0+QI*^7m9;bN*H5S$|8G@a1s@IqE$?XHO4^OC6vp_XrcwQ zXdSv=YS->tp!b?Ph!TdLc$Tdfb^h5bv|r7pRBX#zei-~R0>Lpg%O>9CN=lA zhx5{SFMOr$m)zofE?B8D-$w+`Y=bZsY`rXAU78K%P>G%+Jc%Y$vRO+N-lM*nnFJt)?nd-@xOKXsH7H+}cS-aozd+Z~QgF3ZhyP<=gb zI=oQP*0#1jLguUg)cVT;(~e_Idy{*1CGs?)aq9!DWU;$y6HtZ_G`r+K)Zsn6Xpgq5 zSg+ntk00A#{3E{M`)m&!s<1ytXP09?UEG6k?k=(@T`c4^h0oL<$Iox}!d5TRo*0^( zXUgId>vHcYXp|CRLBSSpM|agiyyR-X-+gS`Ug$7?S((3%BtuHS^tm~0|FGyW4jstw zC8jE%S?JYuTz_oG?|jvT)&z5md-E;s?AwC@B^$~6D7G5YbBEr`;p#q8&QFI#IR9`W z=X{@+m|1!Ho4zkN2mig-gMb2{ip1Imd7;X|vMBy4Z(?UcbS8jal2jW5JXg6)cZ8*R z*=*K93hJ6Ag;Kd*+!N`mZZD;Ixeubto|aTo`ShJ$^@Ql9*;O+%d&FaGEsf>rY6AmQ zd)D?Ywlaezj|cYq(hG~6<HyPF%Bygc1k502DX@6W3u2i;q zj^?fOxG^llg2}3`qC&c>KP^k%BU@fg+4kwy8Z7bWqBZ3ID;AP^kA?b5{_;`S#}Hn0 zRz|p8QE;5*h7RLqri-e}xibyRW9oViC+9SZObi}hmb;B~uDDnY9VT6ji(1^6iT-Pq zPbp!C{~uV%1avSIuAp9T9Fk^Ue=@_NL&UVpUs|#58FlC}yzvEuH^?G|m++M*6@p!( zSU+ZyyYvq6Ampn5TU*U21udVLU51gb<1Zvourx@Yv?A$*QFExo)8LDx9F9y#s5FhhWCGvzzc>^>^z*5_FwPg|EQuh zpyU&$Lc$gOPo8y_3}Tz3F~xr^68}4~ z4x|SbVIJ5={Xcnj4K?E6C&oY5yO$*djo`jyTPr_H2n5;*#3(Zwu2R$?FH;CUNQe`s zeHw|tyFR)ZewoY}1+Cu`K>Ecx4U%6XjfM>d5jN~%1ruQMFSvry5;}~V7506X5%j5D=WK6a+EFyG@*th9)<}1XAhY_ zI-)0kgx_@UO=$QL?>f&n>n+3HHwkh)t5RxN`o}%1TGq!1-ai}RH4H+|1`i9=Z9>m_ z@m$!x=GvLd2K$Emcu0#re`UvjlO@MZ`=ccn1qWZ8Pb`?@nZNp_wmci$8;PA=)&+nI zK5TQ(WxF5JDsswiTDV%gWFD@v<>NG~Lmk7s<~myD>^G|uK6)n)uTJa>VBLA)`QS~24YYE@NkwdQ|ssC1MV;NoV{f5eTI;=-3H zL$>MH!U3!zA0=SxiyA6Vu9OrTZfexE3Q+Kz-W|!G%hQhZMw&l%DbJiNkmKT`3PhD5 z&ODnsR5A${2>;W=hO+8Xu8}7iJAtMVO4~OnN_P9xv_&dES?J)ffceR@+!fl7@Wc)$ z{%^~0mIhqKN9&mn@BZpGSqSKe+pXx?nqcsekBvo@l;;bXeC2zYzmCI6xvI zkB1wY zo7rN9jll<7^+7sDcBPb;;ty|JZOedi-kUO2{O1lEd7uKfUuP|rt}M`U>4TYDfAf713|SL(UkQ6=F5#|46{T4#IP8k2#rviH@YV$=IdedD&?otYVw(_ zsY*F?j&1EYH#;CwH z4@SWk{Tm-Q>j7R@91L7IzvB?aBEIL4Mj7ZwJkWhimk8O4?>BjWsF1F$?ig7?g2|j?o0T0E>=_7{7O(l(9xQ

a6H#uLW47J(M|hYnkWkn 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 A(*OVf literal 0 HcmV?d00001 From b423c16781a3563e5e4462a26f5c43b94445b50e Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 14:30:09 -0400 Subject: [PATCH 098/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 5c6dc9a..92f00a2 100755 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -# ![MyDrive Homepage](github_images/mydrivehome.png) +# ![MyDrive Homepage](github_images/mydrivehome2.png) # MyDrive From f37e6855033fdfa6b7ef7dc2386692fcbfbf4ab3 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 15:07:31 -0400 Subject: [PATCH 099/129] Update readme.md --- readme.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/readme.md b/readme.md index 92f00a2..5faf228 100755 --- a/readme.md +++ b/readme.md @@ -57,6 +57,34 @@ Demo: https://mydrive-demo.herokuapp.com/ ## Screenshots +## Enviroment Variables + +Create a config folder on the root of the project, and create a file with the name prod.env for the server. For the client variables create a .env.production file in the root of the project. + +Server Enviroment Variables: + +- MONGODB_URL (Required): Sets the MongoDB URL, this should also work with DocumentDB. +- HTTP_PORT (Required): Sets the HTTP port number. +- HTTPS_PORT (Required): Sets the HTTPS port number. +- PASSWORD (Required): Sets the JWT password. +- DB_TYPE (Required): Sets the Database Type, options include s3/mongo/fs. +- NODE_ENV (Required): Must be set to 'production'. +- SSL (Optional): Enables SSL, place certificate.crt, certificate.ca-bundle, and certificate.key at the root of the project. +- FS_DIRECTORY (Optional/Required): Sets the directory for file data on the file system. +- S3_ID (Optional/Required): Sets the Amazon S3 ID. +- S3_KEY (Optional/Required): Sets the Amazon S3 Key. +- S3_BUCKET (Optional/Required): Sets the Amazon Bucket. +- ROOT (Optional): Uses a filesystem path, is used for storage space. +- URL (Optional): Allows to specify URL to host on, this is usually not needed. +- USE_DOCUMENT_DB (Optional): Enables documentDB, this is experimental. +- DOCUMENT_DB_BUNDLE (Optional): Enables SSL with documentDB. +- BLOCK_CREATE_ACCOUNT (Optional): Blocks the ability to create accounts. + +Client Enviroment Variables + +- REMOTE_URL (Required): Sets the Remote URL for the client. +- DISABLE_STORAGE (Optional): Disables storage, use this if you're not using ROOT on the server. + ### Wiki For a more detailed list of myDrive features, including examples with images, visit the wiki here: https://github.com/subnub/myDrive/wiki From f021d7b4a7f2dea039752f4da5804a87097dc538 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 15:14:47 -0400 Subject: [PATCH 100/129] Update readme.md --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index 5faf228..82e1c25 100755 --- a/readme.md +++ b/readme.md @@ -70,6 +70,8 @@ Server Enviroment Variables: - DB_TYPE (Required): Sets the Database Type, options include s3/mongo/fs. - NODE_ENV (Required): Must be set to 'production'. - SSL (Optional): Enables SSL, place certificate.crt, certificate.ca-bundle, and certificate.key at the root of the project. +- KEY (Optional): Encryption key for data, this is not recommended, please use the built webUI for setting the key. +- DOCKER (Optional/Required): Sets the server to use docker, set this to true. - FS_DIRECTORY (Optional/Required): Sets the directory for file data on the file system. - S3_ID (Optional/Required): Sets the Amazon S3 ID. - S3_KEY (Optional/Required): Sets the Amazon S3 Key. From c78691e9a2c29cde81580dccda02299782470d4a Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 15:17:01 -0400 Subject: [PATCH 101/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 82e1c25..a90c833 100755 --- a/readme.md +++ b/readme.md @@ -70,7 +70,7 @@ Server Enviroment Variables: - DB_TYPE (Required): Sets the Database Type, options include s3/mongo/fs. - NODE_ENV (Required): Must be set to 'production'. - SSL (Optional): Enables SSL, place certificate.crt, certificate.ca-bundle, and certificate.key at the root of the project. -- KEY (Optional): Encryption key for data, this is not recommended, please use the built webUI for setting the key. +- KEY (Optional): Encryption key for data, this is not recommended, please use the built in webUI for setting the key. - DOCKER (Optional/Required): Sets the server to use docker, set this to true. - FS_DIRECTORY (Optional/Required): Sets the directory for file data on the file system. - S3_ID (Optional/Required): Sets the Amazon S3 ID. From dfb4664bfacc2e0ad8addf978e04ec3d7476ac4f Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 17:19:34 -0400 Subject: [PATCH 102/129] Update readme.md --- readme.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index a90c833..142d086 100755 --- a/readme.md +++ b/readme.md @@ -2,7 +2,7 @@ # MyDrive -MyDrive is an Open Source Cloud Server (Similar To Google Drive), MyDrive supports multiple services to store files (Amazon S3, MongoDB, the FileSystem), and is built with Node.js and Typescript. MyDrive now even has Docker Images! +MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service uses mongoDB to store file/folder meta data, and supports multiple databases to store the file chunks, such as Amazon S3, the Filesystem, or just MongoDB. MyDrive is built using Node.js, and Typescript. The service now even supports Docker images! ## Index @@ -30,6 +30,19 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), MyDrive suppor ## Installation +Required: +- Node.js (13+ Recommended) +- MongoDB (Unless using a service like Atlas) + +Windows users will usually need both the microsoft visual build tools, and python 2. These are required to build the sharp module: +- Visual Tools: http://go.microsoft.com/fwlink/?LinkId=691126 +- Python 2: https://www.python.org/downloads/release/python-2717/ + +Linux users will need to make sure they have 'build-essential' installed: +```bash +sudo apt-get install build-essential +``` + >Install Node Modules ``` javascript npm install From 703d71af5026a4dcf48d66d79949bb911e1a5136 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 17:20:26 -0400 Subject: [PATCH 103/129] Update readme.md --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index 142d086..4bf9718 100755 --- a/readme.md +++ b/readme.md @@ -43,6 +43,7 @@ Linux users will need to make sure they have 'build-essential' installed: sudo apt-get install build-essential ``` +Setup: >Install Node Modules ``` javascript npm install From 138ede96b8e3255b14a2d24cad476cb5b1dcec90 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 17:24:15 -0400 Subject: [PATCH 104/129] Update readme.md --- readme.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/readme.md b/readme.md index 4bf9718..10cd1e2 100755 --- a/readme.md +++ b/readme.md @@ -59,6 +59,11 @@ npm run setup npm run build ``` +>(Optional) Create the MongoDB indexes, this increases performace. MongoDB must be running for this command to work. +```javascript +npm run create-indexes-database +``` + >Start the server ``` javascript npm run start From 524eaf48b8344c336ff1a0713f389ce7e4e8837b Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 17:33:29 -0400 Subject: [PATCH 105/129] Update readme.md --- readme.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/readme.md b/readme.md index 10cd1e2..04c6ae0 100755 --- a/readme.md +++ b/readme.md @@ -8,6 +8,7 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * [Features](#features) * [Installation](#installation) +* [WebUI for Encryption Key](#WebUI For Encryption Key) * [Wiki](https://github.com/subnub/myDrive/wiki) * [Demo](#demo) * [Screenshots](#screenshots) @@ -69,6 +70,17 @@ npm run create-indexes-database npm run start ``` +## WebUI For Encryption Key + +MyDrive will first host a server on http://localhost:3000 in order to safely get the encryption key, just navigate to this URL in a browser, and enter the encryption key. + +If you're using a service like SSH or a Droplet, you can forward the localhost connection safely like so: +```bash +ssh -L localhost:3000:localhost:3000 username@ip_address +``` + +Note: You can also disable using the webUI for the encryption key by providing a key in the server enviroment variables (e.g. KEY=password), but this is not recommended because it greatly reduces security. + ## Demo Demo: https://mydrive-demo.herokuapp.com/ From 2a4c167ad1084d362c57c442c3b271fdf815cc99 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 17:35:23 -0400 Subject: [PATCH 106/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 04c6ae0..a4ef951 100755 --- a/readme.md +++ b/readme.md @@ -8,7 +8,7 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * [Features](#features) * [Installation](#installation) -* [WebUI for Encryption Key](#WebUI For Encryption Key) +* [Key](#WebUI For Encryption Key)(WebUI for Encryption key) * [Wiki](https://github.com/subnub/myDrive/wiki) * [Demo](#demo) * [Screenshots](#screenshots) From 8d6277a2dbb10913322190055defae9737ec7fc1 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 17:36:48 -0400 Subject: [PATCH 107/129] Update readme.md --- readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index a4ef951..32cf9a7 100755 --- a/readme.md +++ b/readme.md @@ -8,7 +8,8 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * [Features](#features) * [Installation](#installation) -* [Key](#WebUI For Encryption Key)(WebUI for Encryption key) +* [Key](#webui for encryption key)(WebUI for Encryption key) +* [test](#features) * [Wiki](https://github.com/subnub/myDrive/wiki) * [Demo](#demo) * [Screenshots](#screenshots) From b15e6970aa8c79f16201546acc280b37c147385a Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 17:38:11 -0400 Subject: [PATCH 108/129] Update readme.md --- readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index 32cf9a7..2144600 100755 --- a/readme.md +++ b/readme.md @@ -8,8 +8,7 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * [Features](#features) * [Installation](#installation) -* [Key](#webui for encryption key)(WebUI for Encryption key) -* [test](#features) +* [Key](#key)(WebUI for Encryption key) * [Wiki](https://github.com/subnub/myDrive/wiki) * [Demo](#demo) * [Screenshots](#screenshots) @@ -71,7 +70,8 @@ npm run create-indexes-database npm run start ``` -## WebUI For Encryption Key +## Key +# WebUI For Encryption Key MyDrive will first host a server on http://localhost:3000 in order to safely get the encryption key, just navigate to this URL in a browser, and enter the encryption key. From 2ecf6ff2bc0c3573dc31d238a6eb5c101399d41d Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 17:38:59 -0400 Subject: [PATCH 109/129] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 2144600..5dbec3d 100755 --- a/readme.md +++ b/readme.md @@ -8,7 +8,7 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * [Features](#features) * [Installation](#installation) -* [Key](#key)(WebUI for Encryption key) +* [Key](#key) (WebUI for Encryption key) * [Wiki](https://github.com/subnub/myDrive/wiki) * [Demo](#demo) * [Screenshots](#screenshots) @@ -71,7 +71,7 @@ npm run start ``` ## Key -# WebUI For Encryption Key +## WebUI For Encryption Key MyDrive will first host a server on http://localhost:3000 in order to safely get the encryption key, just navigate to this URL in a browser, and enter the encryption key. From 0468a4f7fdc65f93c60aa1ce61d9c124a373453e Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 17:40:01 -0400 Subject: [PATCH 110/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 5dbec3d..45ef776 100755 --- a/readme.md +++ b/readme.md @@ -8,7 +8,7 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * [Features](#features) * [Installation](#installation) -* [Key](#key) (WebUI for Encryption key) +* [Key](#webui-for-encryption-key) (WebUI for Encryption key) * [Wiki](https://github.com/subnub/myDrive/wiki) * [Demo](#demo) * [Screenshots](#screenshots) From c533c99f7d77c4e53d882b1f4059b00dbfcce0d4 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 17:40:48 -0400 Subject: [PATCH 111/129] Update readme.md --- readme.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 45ef776..e719fe2 100755 --- a/readme.md +++ b/readme.md @@ -8,7 +8,7 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * [Features](#features) * [Installation](#installation) -* [Key](#webui-for-encryption-key) (WebUI for Encryption key) +* [WebUI For Encryption Key](#webui-for-encryption-key) * [Wiki](https://github.com/subnub/myDrive/wiki) * [Demo](#demo) * [Screenshots](#screenshots) @@ -70,7 +70,6 @@ npm run create-indexes-database npm run start ``` -## Key ## WebUI For Encryption Key MyDrive will first host a server on http://localhost:3000 in order to safely get the encryption key, just navigate to this URL in a browser, and enter the encryption key. From 9f5ca7589ecb3b5b512d170443ef97b2d4086440 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 17:44:33 -0400 Subject: [PATCH 112/129] Update readme.md --- readme.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/readme.md b/readme.md index e719fe2..4fd8b50 100755 --- a/readme.md +++ b/readme.md @@ -9,9 +9,10 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * [Features](#features) * [Installation](#installation) * [WebUI For Encryption Key](#webui-for-encryption-key) +* [Enviroment Variables](#enviroment-variables) +* [Screenshots](#screenshots) * [Wiki](https://github.com/subnub/myDrive/wiki) * [Demo](#demo) -* [Screenshots](#screenshots) ## Features @@ -79,12 +80,7 @@ If you're using a service like SSH or a Droplet, you can forward the localhost c ssh -L localhost:3000:localhost:3000 username@ip_address ``` -Note: You can also disable using the webUI for the encryption key by providing a key in the server enviroment variables (e.g. KEY=password), but this is not recommended because it greatly reduces security. - -## Demo - -Demo: https://mydrive-demo.herokuapp.com/ -- Note: The Upload and Download Features, and other core features, are disabled in the demo. +Note: You can also disable using the webUI for the encryption key by providing a key in the server enviroment variables (e.g. KEY=password), but this is not recommended because it greatly reduces security. ## Screenshots @@ -118,10 +114,15 @@ Client Enviroment Variables - REMOTE_URL (Required): Sets the Remote URL for the client. - DISABLE_STORAGE (Optional): Disables storage, use this if you're not using ROOT on the server. -### Wiki +## Wiki For a more detailed list of myDrive features, including examples with images, visit the wiki here: https://github.com/subnub/myDrive/wiki +## Demo + +Demo: https://mydrive-demo.herokuapp.com/ +- Note: The Upload and Download Features, and other core features, are disabled in the demo. + MyDrive Features: - Upload Files From 5aa9ecc52d6d6926ca2d46469d621f266f975482 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 19:27:43 -0400 Subject: [PATCH 113/129] Update readme.md --- readme.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 4fd8b50..72e46b9 100755 --- a/readme.md +++ b/readme.md @@ -9,6 +9,7 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * [Features](#features) * [Installation](#installation) * [WebUI For Encryption Key](#webui-for-encryption-key) +* [Docker](#docker) * [Enviroment Variables](#enviroment-variables) * [Screenshots](#screenshots) * [Wiki](https://github.com/subnub/myDrive/wiki) @@ -80,7 +81,27 @@ If you're using a service like SSH or a Droplet, you can forward the localhost c ssh -L localhost:3000:localhost:3000 username@ip_address ``` -Note: You can also disable using the webUI for the encryption key by providing a key in the server enviroment variables (e.g. KEY=password), but this is not recommended because it greatly reduces security. +Note: You can also disable using the webUI for the encryption key by providing a key in the server enviroment variables (e.g. KEY=password), but this is not recommended because it greatly reduces security. + +## Docker + +MyDrive has built in Docker support, there are two options when using Docker, users can either use the Docker image that has MongoDB built in, or use the Docker image that just has the MyDrive image (If you're using a service like Atlas). + +Create the Docker Enviroment variables by running the 'npm run setup' command as seen in the installation section. Or by manually creating the file (e.g. docker-variables.env on the root of the project). + +Docker with mongoDB image: +```bash +docker-compose build +``` + +Docker without mongoDB image: +```bash +docker-compose -f docker-compose-no-mongo.yml build +``` +Start the Docker Image: +```bash +docker-compose up +``` ## Screenshots From 55d517ebc6e6df562eaf94a6d25016ebd61599f3 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 19:31:52 -0400 Subject: [PATCH 114/129] Update readme.md --- readme.md | 107 +----------------------------------------------------- 1 file changed, 1 insertion(+), 106 deletions(-) diff --git a/readme.md b/readme.md index 72e46b9..04d127a 100755 --- a/readme.md +++ b/readme.md @@ -2,7 +2,7 @@ # MyDrive -MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service uses mongoDB to store file/folder meta data, and supports multiple databases to store the file chunks, such as Amazon S3, the Filesystem, or just MongoDB. MyDrive is built using Node.js, and Typescript. The service now even supports Docker images! +MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service uses mongoDB to store file/folder metadata, and supports multiple databases to store the file chunks, such as Amazon S3, the Filesystem, or just MongoDB. MyDrive is built using Node.js, and Typescript. The service now even supports Docker images! ## Index @@ -144,110 +144,5 @@ For a more detailed list of myDrive features, including examples with images, vi Demo: https://mydrive-demo.herokuapp.com/ - Note: The Upload and Download Features, and other core features, are disabled in the demo. -MyDrive Features: - -- Upload Files -- Download Files -- Create Folders -- Share Files -- Creates Image Thumbnails -- Photo-Viewer -- Stream Video -- Transcode Video -- Create One-Time Download links for files -- Move Files/Folders -- AES256 Encryption (For file chunks, tokens, and more!) -- Search For Files/Folders -- Mobile Friendly (Including Uploading!) -- Advanced Filter Options - -## Installation - -Required: -- Node.js (13.9+ Is Recommended) -- MongoDB - -Windows users will usually need both the microsoft visual build tools, and python 2. These are required to build the sharp module. -- Visual Tools: http://go.microsoft.com/fwlink/?LinkId=691126 -- Python 2: https://www.python.org/downloads/release/python-2717/ - -Optional: -- FFMPEG (For Video Transcoding, Does not work very well because of encryption ATM, But non-transcoded video streams work much better, I do not recommend using transcoding yet.) - -Setup: -- “npm install”, Installs all dependencies. - -- "npm run init", Asks user for some environment variable details, pressing enter on these fields will instead use the default values. - -- "npm run build" or "npm run build:no-ssl", This will look for the HTTPS Certificate, Place this HTTPS certificate at the root of the project, with the naming convention (certificate.ca-bundle, certificate.crt, and certificate.key). -Note: If you do not have or want to use a HTTPS certificate, run "npm run build:no-ssl". This will run the server in production mode, without SSL encryption, this is vulnerable to man in the middle attacks! - -- “npm run create-indexes-database”, This will create indexes for mongoDB, this is greatly recommended, it will improve mongoDBs speed in retrieving files. - -- "npm start" or "npm run start:no-ssl". If you do not want SSL Encryption use "npm run start:no-ssl". - -- It will then ask for an encryption key, this can be whatever you would like, this key is later hashed. Do not lose this key, there is NO way to recover data from a lost key! - -- That's It! Now just Create a new account. - -## Enviroment Variables - -The npm run init command will create the needed env variables, but if you would like to create them manually, structure the files like so. - -Backend variables: Stored in /config/prod.env - -- MONGODB_URL= -- PASSWORD= -- HTTP_PORT= -- HTTPS_PORT= -- URL= -- FULL_URL= -- ROOT= - -Optional: -- KEY= - -The KEY variable is optional, without it the server will prompt you for a password on startup, with a KEY the server will skip prompting for the password, use a KEY if you want to use myDrive with docker, or similar tools. - -Frontend variables: Stored on the root of the project .env.production - -- PORT= -- REMOTE_URL= - -## Built In Server Tools - -MyDrive comes with some built in NPM scripts for server management, this includes: -- Backup Database: Command “npm run backup-database", creates a temporary backup of the database inside of mongoDB, please note you can only have one backup at a time, for better backups use mongoExport. - -- Restore Database: Command “npm run restore-database”, Restores Database from backup. - -- Clean Database: Command “npm run clean-database”, Cleans database, removing any orphaned chunks that do not have a file associated with them, this command will automatically run backup database, incase anything fails. - -- Change Encryption Password: Command “change-password-database”, Changed the encryption password, that the server first asks for on start up, this requires the old encryption password. This will also create a new backup, incase anything fails. - -- Delete Database: Command “npm run delete-database”, Deletes the main database, does not delete the temporary backup. - -- Delete Temp Database: Command “npm run delete-temp-database”, Deletes the database backup. - -- Create Indexes: Command “npm run create-indexes-database", Creates Indexes for mongoDB, without this mongoDB will need to search through every single file on request, run this before using the server. - -- Run Tests: Command "npm run test", Starts unit testing. - -## Video -I created a short YouTube video, showing off myDrives design and features: https://youtu.be/0YKU5CZHG4I - -## Security -MyDrive encrypts all file chunks, tokens, and temp tokens. These items are first encrypted with a randomly generated 32 byte private key, and random 16 byte public key (A different random public key is used for different items).The private key is encrypted with the users salted password, and then the hashed server key (Acquired on server startup). Note: Running the command to change the servers key, will generate new private and public keys for each user, and will have to re-encrypt all chunks. - -### Using myDrive for personal use? -After you create your account, disable the ability to create a new account by adding the following value to the prod.env file (Located inside on the config folder). -BLOCK_CREATE_ACCOUNT=true - ## Questions? Feature Requests? Hiring? Contact Me! Contact Email: kyle.hoell@gmail.com - -## Follow my twitter account -Twitter: https://twitter.com/subnub2 - - - From a43a423f418b88bbd28441ab977351bc466c42fb Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 19:41:31 -0400 Subject: [PATCH 115/129] Update readme.md --- readme.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/readme.md b/readme.md index 04d127a..cfc297b 100755 --- a/readme.md +++ b/readme.md @@ -10,7 +10,7 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * [Installation](#installation) * [WebUI For Encryption Key](#webui-for-encryption-key) * [Docker](#docker) -* [Enviroment Variables](#enviroment-variables) +* [Environment Variables](#environment-variables) * [Screenshots](#screenshots) * [Wiki](https://github.com/subnub/myDrive/wiki) * [Demo](#demo) @@ -20,7 +20,7 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * Upload Files * Download Files * Share Files -* Mutilple DB Support (MongoDB, S3, Filesystem) +* Multiple DB Support (MongoDB, S3, Filesystem) * Photo Viewer * Video Viewer * Thumbnails @@ -52,7 +52,7 @@ Setup: npm install ``` ->Create Enviroment Variables, Users can use the built in command to easily create the needed Enviroment files, or view the Enviroment Variables section to see how to manually create the files. +>Create Environment Variables, Users can use the built in command to easily create the needed Environment files, or view the Environment Variables section to see how to manually create the files. ``` javascript npm run setup ``` @@ -62,7 +62,7 @@ npm run setup npm run build ``` ->(Optional) Create the MongoDB indexes, this increases performace. MongoDB must be running for this command to work. +>(Optional) Create the MongoDB indexes, this increases performance. MongoDB must be running for this command to work. ```javascript npm run create-indexes-database ``` @@ -87,7 +87,7 @@ Note: You can also disable using the webUI for the encryption key by providing a MyDrive has built in Docker support, there are two options when using Docker, users can either use the Docker image that has MongoDB built in, or use the Docker image that just has the MyDrive image (If you're using a service like Atlas). -Create the Docker Enviroment variables by running the 'npm run setup' command as seen in the installation section. Or by manually creating the file (e.g. docker-variables.env on the root of the project). +Create the Docker environment variables by running the 'npm run setup' command as seen in the installation section. Or by manually creating the file (e.g. docker-variables.env on the root of the project, see the enviroment section for more infomation). Docker with mongoDB image: ```bash @@ -105,11 +105,11 @@ docker-compose up ## Screenshots -## Enviroment Variables +## Environment Variables Create a config folder on the root of the project, and create a file with the name prod.env for the server. For the client variables create a .env.production file in the root of the project. -Server Enviroment Variables: +Server Environment Variables: - MONGODB_URL (Required): Sets the MongoDB URL, this should also work with DocumentDB. - HTTP_PORT (Required): Sets the HTTP port number. @@ -130,7 +130,7 @@ Server Enviroment Variables: - DOCUMENT_DB_BUNDLE (Optional): Enables SSL with documentDB. - BLOCK_CREATE_ACCOUNT (Optional): Blocks the ability to create accounts. -Client Enviroment Variables +Client Environment Variables - REMOTE_URL (Required): Sets the Remote URL for the client. - DISABLE_STORAGE (Optional): Disables storage, use this if you're not using ROOT on the server. From 387dc196929766865345fe4ac0811ef833aba841 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 19:52:04 -0400 Subject: [PATCH 116/129] Add files via upload --- github_images/folder-screenshot.png | Bin 0 -> 171164 bytes github_images/image-screenshot.png | Bin 0 -> 370547 bytes github_images/move-screenshot.png | Bin 0 -> 240931 bytes github_images/search-screenshot.png | Bin 0 -> 299380 bytes github_images/share-screenshot.png | Bin 0 -> 64154 bytes github_images/upload-screenshot.png | Bin 0 -> 350174 bytes github_images/video-screenshot.png | Bin 0 -> 579608 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 github_images/folder-screenshot.png create mode 100644 github_images/image-screenshot.png create mode 100644 github_images/move-screenshot.png create mode 100644 github_images/search-screenshot.png create mode 100644 github_images/share-screenshot.png create mode 100644 github_images/upload-screenshot.png create mode 100644 github_images/video-screenshot.png diff --git a/github_images/folder-screenshot.png b/github_images/folder-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..13804812ff6fd9c11998783011f7d562085d375d GIT binary patch literal 171164 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

75r&Gfr}{#Z&j5wj|k@ASt`ufvgrjyyQ=B1+>v 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

  • iZK4nCtZ@G- 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%0DSP_DMhOd-gV--wkK_?O#EKK{F2{@>ed_a&R7 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Μ+}$NZpi+ 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 z ^N`A6uVSs+G3w>Z)y5 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%0DZ0EKZY)7=z|B0A0E9y;@E~ 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]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 D4-ZJ; literal 0 HcmV?d00001 diff --git a/github_images/search-screenshot.png b/github_images/search-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b54c2788ffafa466775d8071bb2280beb2214e GIT binary patch literal 299380 zcmdRVbzGF|);1s|5{jgf0@8zYNQ%`)jtEtEm;61=YLqj8wmwT>(hK8MkhK6|; z7aO?qo1k7{WNX3HR$M&E?f?fQHhJneoxA+cqNKZQJ~#@3_OHKh-dBdIdF z9{a`1|EqZw!FGYH@Q;6-Alq5E93WPMO2U~%h(ibswC zPBj~eQ}%_+YQIqYFM+7(M-bPF8S#V!R-(|+b@)EX)t(uX*=;U^4$`yb_qZ-z73mmW znZIPBP|r0~%-X4=&6KpfIi9J@6^OhodBLbW))_jVh`{NAbieI$H0M7T(vN#s7Go$S zpia_h)4j~FzqG71+mmf^R(ac6V(-xQx>v7O!WI1khS6ONJ;~cP*h#omzB#$oZTA-n z-M^yI_DYf6MJEr>@qX@T8cAZZB1M0CKL(ctyBq7|C`1xH&YLExs2oIBU0$DM|D4bj zLzw8fpOI_%){gd%fw=ZB^XT_d)M%-V1y!y&d!D>|I+J26Wgf>G5)yJwx|) zma?iS#Yxb_M{rtjDjNCRt-+2jx0b$TsP&JZmWHGs*)LOl_>r1sbI4Lg636p___@QW zS594Q9nyzXTc&*=a%M8jx5N?0tt~V2LOCO#BK*?iern`)kBWIuW%U$&2~9;sw%)C` z=ub7jY8x-Vr_E`&u26Blb3Sq>tj#$yK9Z*RdaS|Ej=A#30K;Wee4SZ&Cm`t z+WWVDJT;x9^2s*y)iB9QSSq@M-bUd3BZ3Ee?ehbn&mZP|$ba6Fq9X~zr;Kx}j!yL}U1|P_>Lx=Hd@a6+1KK6V+ zSm&=H@brCajyC!=DT!&#uaX-?=AUbpoJ5rx9B+ouBh?Az|H|x%Wz!*2NhEa7@(0Hp zR@oA+=sofuu|JbfpLr0p-74=$-D5w!)pF<8v#k3{w+AszF(RJ?M!iTF%?%uM&jh>?wfeX_lYeX4z8B*r0}U5Uif_cZb}$TaKJ z98WFBW*D@MZ*Rs_dTc>|_%R2JS zQ+4{}0D+#MQttOm`fQ*%#voBKBX z7`&Y*LPBjw9Wm&d{w&=w{Yr$~MZ|@*>1~sdaodj4yu!SHlc00+5rtdFk=fz?A=&2k z*wf+@rOX`reA*(eF|LWl67Off?%gui<88o4HwT&DSz*kc_py3u|CzT}fQ5GoI&3x! zF0fyJm1H5*RWb6j;?=|Z<}=)|Z$@ioYvOAzYduo0{e}FW`;*}pQ9HwipJsoNk&=0o zt&uGzGZ`lSpgK%C+$k*a!Q{h5-Y?2&N;0WR0{ZrjBRNhLUtYF<@%xhNe?rg(4M`D6 z?oL+Wows%SQZxH)j$=;gb=}O?d;NUjQPEz}S&x9Tdk2Jf0$=z9beaWpsfQvtq{)Kf z;YBa`tD88KIT<+O6H+-0IowOON{LHDN{;pBtMd%1OL&zooM0yle z3S#qPrwT_lKJjjDAvhdNkaHsMpLAM&aF!d7dI;hpk5Keg42S!F{Ps~@Iy7*C$W!>+ zYrV~i+zu6@i{;IY6jW2!(cqh_C59k!0(+|K`qbFe&!r>VMNj9&zIi6N`(LmVSrSF} zxJ9OB;18*19EhfhO1Q(^`&zAAMOvUOqpg!}i!UEmm`~rCw)DUi{~})PL3rlz^JstI zWFC2um>Fssv8d8+$*?8+LB^JHuXnLObGN;(ozsUjil%})i*uMKidK*G^hvLX97PT1 zI%`jK?7(yvjB@J%2a)*Q%Lo)a{fiixU%>mIxWJnCn?a8Q%Wk*Qz9vl|)ww@Gx zd8vm<|A@y7(n*j(srtEi%_aPhM%diKiII~>+);V8gC(B@rnSQ2Jl3lYmz@u<3r~=l z?D3&6`L>_rUU^&@Yv%n>nTq;pljC7*!;-`3ib@afGIQr{n0M;kv$p3*zfm}ecQL+*8HrL*P*#{vm=P0j-s-R1hGamPAd@}Qk*Pd8 zTduKtjVnZ|!^xjBDKD=6_(|6g?A^$zQJ_9VCI=Yqq!dOLV@HlN@Zgox!w%T&o;;-QeiKu~n zI_qS;ZwMZ&BG#W}T$E>LcIjh4%#wUCOZ!B>h<4p#swTqXts%~W%TmDMDj^Knzh-sQ z%+UlXxui6`+#LN{@wIgHC&Uk;Jj$6rlzjaX+p;?^x%XRGvT}8aCFziLCbhVG57lN` zns7ULBN->V8?PYD&b(58Z);grBH)*n<|pGvT#ejA_6vb$ryhNm30OOKbhu76*f_*= z*9>$_jv*gkE;VKb{W98f+WqwH1!rh0S-I&mqesS$o{%3S)bPUuQjmL%$Jl-oX$fgA z`$9=t#lCH$>{+1pn0CK5lvJIRpctydrGEtpcO9th|IsgIqdW=HyRb`tGmkiuLfHr= zL0M*hI%Hd{3@9(9ZWe77^$Xq?B)9ddVuHXoO1DbKXO-&Wp%*R2O|4MbxrjCE-ObJP zyr<-oS^WJe5yp^a&^F=pyc$ZQ8A9ZwI&D&++jw%uwb5?0NZwcuk#P6kF0X4Z6ZjiLFW>uYFYP_+)w{2Tc-7Gn8mSgZLc1Ym;97H$w55mK zD_Mz5dCWI2%)Qn*zV>~9lbJy^LzwjKW+!BDBir(Fh)M+Ie*8oDxbghJ1c?H0rH+)Qm7R-FnfU7n+&;l7EHrneg%H`#VK&uqR=8k94ew8I#-WoDI^1}y6x z?OU6S-!vl!x0>HK=bkw4#xDxCnjQtM(7MmG%n(Z8!rm;sy6kuwi5Y1ksv~+mW^(!d zI_I*mYjo4nZivw3y^E2X_%ZC_&U9$TV2s4kwb8}M5~AE2>&oS$jgsyK`&scqJ9(Rc zSL;=HPio%I)Xs(d!NPG1yQlr7R}ao{&?s%Jg!p#yW${7@_UFY}^sIce&kdN7x6Q{b+uHmJh6+6~ukRNR1$cJd@hPoFSEI%;^FzB- z_xVNl(*&n#Q&)^0H*06-mbNBI@{XOgA)o6qear5)Clnj4@Se}m{=!0rOKWT95+!Lf z*5^w3&FZ|OyGzqAvm-;wU=%*Pq32ZR%3+K3k_ca%)3z(}I%&d@X zRz_n3u5r<@(23D*0axh28x8#d8rC1zXlM%P5C7*{1D)lsG8kxRK@c>|zseW@-#4!) z-~-hD>-$zrAQ}$vix~L4&%*deY3!V=TmQJmybC--lhTxymj}Kz%^ksDJ0~l9=b^7u zRltqgZ{+ly(9p=3Za(Pp8jL^D&@fyeT6)fU%1R>U_E69(3wtv#$QAnLrX4gNrSBP(a;HzHhI@7}!wz2gPhJ6dva3kwT#J>lWv;o$^Ia5};4oL{+e z+Bq@&*~mZIc@B0mcZ9rghS=ND-L(74%-+RW?9ro}j{fKM=QzQxkbm}M=k(XKfC+Nl zJmKO7J>mLK)tn)(e^c$|$)DB!nAe}(iQY6OqU{8Bl(vUL!FJB#|CG4sA3goAhyNVs zpB2?0u3%fe=MbQ#6EG)n9$tQ-zpDNH(SNL}|Ie!2e0)6rTJ>KZ{Y%xGNrRsMGSuUev9Hw*JG3-zZK{Bajh193c2 zuK!Ufal9U%ALnRjl4$bJrL z;mzGmtbCR_WhOt?ne*IteMG~8>PiDGXSaYRK4_S9Xz0JW)cPRl5^(s5?EfeRv?GJ& zPeP9IUz+-(FUc3TUq%(Nn8Zo{Up>E!T7K|fhj!Cm0Sh|525DEQ<8Oxl&-vkN7~T5s zQw7SBGWkdqeR5SN{GB-d(VmY~h|T{s0m-aSm`~)iNx1sy(R>x|>Q%gy8V>z;LF*Y| z^09$!n;O6prWw0w*F=qg2TcNr{4af+u_RFT1={Mo+QpzE=n5^`KqW&nriTf4x|cl zc^pq8>9ur&?B<&SOj_Ms&f7+%{=OPk-k27yBNQ&jThkxg+CUuDha(>?hcdRyKi1&> zsaeAjxG$ruW$m$*ebF!#?k9V3}zi|JqHfX-bGFe5f{2z}0Qsx;-U=M9?5quQ>x1#@h z5?R&vKGTg)FQ}j2`ri-!Z72Ny(xh+5gB&srz2TyHDAcobMkr3|-=^|6(`Z4wo{&6) z7tBMWt*wpK<%ArBVujNmZcSHfA7)|xUsf_}8&|874$)oE7t0)kDsLAza@)xLC>u%h zv8=3YS}aywk&CkS`VuJ-G$1hhEzC%P;U5O)f9vSK+^zA(D7A}nG#^7|def+gpRK;x z>mm;t*EJRUmdx9OugEE-VQdV=F1$q~`o!qnyvwVVaKUbtapI^rV59wQa{tn-WR~>3 zsQDM=8eh`g75X@KT66^E8j&NM^>b$31p|VMqDtu^{D(X9?$PHn_4bQTY$i(Hbl#Iq z>KQ*rl}D;uM}N?u_^;CNJyywLph)e1HC2RNcz%9PXPeAeqqS5vS7lgBl&NZ=5O1j0v9t+IhE|OQj(gp zA>;Jx1QWN7iU|XofRvP!7X^h?FAT@&5X$lQHv5<}Ypyadi}?LGd}d^eR5QhwO6wQ! z+E2T7-+_N%O-OQ7*NaniC%atm)zIqJ-$loYPWHtO^eo zYk7HNQ`PGD+RV(%6SGcS-U80*Z#?>DIX8N0MTY(h)HyuQVT=14FwKG!zv&ps&-Aj! zubY1T&}lB%x4~&3h}MhZ^G1GSl;Gv@8uok?8!PY4CN{eT=*7bC{>s>vOwYt^WU6e?EV@%Oc>tPE-%baDL3@ zMbmV(CAk)pzt+jld`Bo(n-w-I*sW1d&4mOWieQ5o-6JYg5SVhYNp1tsBcOKDWH#1- zeO+E;Zop2kf}Yi_a$$?w5N#9Y9%|i$#|r!V${91I|Cx zAPbCX!BAviB{^bbrtP8~Ggfh)wsmjj(MGJQIQNyE7Fz+w_oWS5@5@T46A9AY#JvKl z)kA=?>Tz?jNGj?qE-M4sHY^1$eF_EPsfzBs{|F(n*OPURwBo{S5<&m$-jWk>bbfg-)N!%fZm%Mgk!bTG^#%2WbkWFri>R27#fJ5EOMnQf zL!}hYHp2Jsd>nyFN&uVzhP&SU{7>VXYJcPrz~QXzkayK z@ReAR<5f2^XU98KX?-9v!+o%hJ7(Y!wMDhs`S3^Sj`r&#u4>2@Fp*ciQS?&Xg^}Xt zETX?I4_;lK?!6khi2Zu|*Y5j@FW3(`$P96Kb2i>_z1tysuFrV%T42(Q0-k98*}BXl z`nBM+O5-^KzobixMEOJ@VKnoTLa&b`In$5KOwf#H6T$CAX;r3nuvOlE?Iv^>CEd}_ zUQT7#yj?fk?)|F**kS?P=H2i6OqB?k(>*j!e|8Xcq}Y_{JMNgCTfkir@w#8P>lbMV zMSp&NGc1LZY&jk-xInSfyeocCaeg?e3N%+r6-Y!&V{KzIJI4|rRTLcQQ#zewL@_`x zz(2#M+otE<|9yqrotwIA1peK)gk$5s0j6)6%4a09{c<1vW+OK-FgMX;rX@4M$Wh)< zWw*}I{?1BwIIogTX|0Z)bz$z;G-0Qd&d04{?#K9m>`h!xmx4L~BMt=z52|cK zZO6U(UvL31JRfjH_d4&t+M23-%@G6rj6~sZ^0MIT+kHs4>1%ZiQ!mpY6c}MrEk2Sd zBi|$+OHF?!l4Dx;AzsIT)d-l!tL$(AJob_bKXPa+g})ZN+3_72lrW9Un0lRj(s6j> z*;*>^q=oa@koW~hn%idK(ysR}_u-W2NU>wRDUX8zXt-SCG(V|xwERx8WybAn*+|0T zvL}I;#5fv>fn$r(riH zd_4x!qs((8M}BF>rknuIS)WE399Nd5C&SQM<(H;%xKAfbGL6GnJ|)df?f5CWax=qy z=k~h=n5EF^5C4JUez>+sH=Q>9*Cv+3Zfnn;L{qQnk~GLljHyQq?0h31Ixo`)QiwW< z!B@U-nodE+_-kb83l1&5Wd`i^a8vZ+<(iouzu8uWF?Y$02Y)9`md8KjwTEfvu7-vU(q;y z<9-#)l)%!A?|0W~2y>2Q3p&w7ME0oKupllARDY~fW9^$kh5 zU)HqAW~iW+`l+v2;mlf9B*D7fwf!J{_r1L*$`Dpwq$fW9{<07SXJ*7%Ae$@}Ra6ww zZ^^I3j-VeF!MuEMh|)r4tnphIm-ip=h=8J=NV0Y?6HYA^qJy!|gpfM9VCaVoIeVc)I)!A;t6o021}5LADqzn=4lEuD;M| zqgU`0trJX|s8ktQ3%AuTxUoC=KWSYWk~s00avoLQ9?*62cqZD~X{w_MPsWV|PZ+k4H$JL1_9L_}2mdZ2&nLz)S|^m5;Pe?cDLPbk82 zh?*Q)<&)TuGQ@$lUme4w<61JX2_B5~vgGpcJZ~IWUX4{9M1>)r8rw6O;cLWarL2#w zy{xhWHE&fd<)zx;?Y95&daaz&>jlt~j+3?%F+&a2XLf1d0|cNme5n+P#l|95t-ZRY zp8Qrk#x}}sjWubR7cXk}x*rAs)|x#Hun$WB+~8)*gjd~mKTtr-$O;BjbBIQ-UN%+$Mpx;WqO$w?4(8Pxedjr_@KCjm-lx_k<7zPXd@y)>TKpiNnvO=DxphD zh6#(Z)nZB`irX5n1qAQr9Aq0-V-)=+K3$#-dE51*w6p^#YU^igW2BJCQ98>Qn6tOi zV+i}TLVl*HDn?p2YuB8mx9_HW)n|IsX8@7*U_pjbi zm&H=1i{<}+wqxTuy z)X&HQ92WCkAyc;X(89m%@JN58+b8Cz>g{LR-_lq(@$ls*KUmIb|N1%&%#pxtDXSc;5tXrbpggS?q9FdV;teH?WlF z+aLnWIF#dB&Pe$H{4SVI@wh!?`ofUJU9~cj7QfPrY*Ge{{A<1MK~6l zYG4JNt6el~+9r$=XSMQ$kEG$47>*Msp2sY_=^!}B zH1-5pRE$S<18j+!5hbN6*h^6hFzr-$aag+>Kk{Is>BH~*G~YpaNv911W2NFC2tO~@ zKxy+q@Upn)dD1<3n4RvhgGhtA^=BXSHC86of+^Qr^U~!T)tEk(5>MPkjGVK%LPPZLtG~GnYSuB2w&%%0cufF@~~J- zCy-6q%O>+7)=+iqa^V*Q(&4 zYNo51bN`p|2l?=OKL;-CT8}1LxD`wf&$s$}i@B_@JQwDuCyWi^%fM$AVIwZ(9)cp! z$}X}sC=(^jnAO$z?brXJm-prJNTGJ>gPh{^AeI!`M0I(mNFD`#=H5yscB>r?H~wFR zO=LY(qS%Ec@A61ToY6P@3b%D_Xw)xVNYXJ;*PkyB zN}}G4=g7z6?K^|~BNMh_>ouLEf%w|ivxx_Bdoyv?nMOwzEHeN+L1Roz=5;-lPcfnL zDI_;<0DIgAsiJ2u`J*}g<4O_@_En@5r_OTf7Hm0P@+-PGZKgWk&0mTeKvb|Eg+FLD&S3r@erGJklCtkp{P6UTLE8)@-0 z=pIVkc0ZYar#vy6&on?XVQ4RA*rcYTyFHMdmHTbZu#v>x54|d^S>QN_|ehK|!mXh?wDvW2X?eQ)9y!t84XxAaR^R58+m;1>*}jR*M0tJamQ3Swf>k3+EDH?`cL+)AJFh zUl7ky&j_ia+TgXrje)V^HZQ3gN6B{jDW`XSYZl3BGUKiI7M7aT3{YLuIkvx+N&qF) z;%79|VF0-aF2LDx!SX@QebSKa+R3^*qdfifveN+||73ir6lYyEcW{=5JK*fZt5*9z z@~#n#_?jIl{$OsOEp(e9Qq*jNM~<}sWICa`pk>{TuXXLVmTbA7VF0mb*944o4G((z z0^;jtrf&(`WslT8o_)(+V3%D@ZEToC%%r8(5`cKU4_kSj%L8%P|LjUN;i6~SkC90L zK|8Ng0F-C|GNScE^bzI2ILi0*VyBtQ10Wj0?$VwN3Nhn~QpE}3v=ZW06{p%ijO|0McivaUFK<0Ipb)T4qRiU? z_zSOAUx&OR0t^#^Xjb1ilQ(_`-$@Ipjvjrlv^0G6h8l4il&KD+3OnU(=tFDApABV* zm3Eo5gRZCOv^V|60$Smq=J$Yu)dN~(N;Dcdo{g4LfM1`v#T)D^Vb^|?4hp=lA_SxZ z5VjxtsM-(VbVwO=L0iNVVksaS;ymA2S(p}L(WxC3tvzX1S=ApK=GT&I@&57OLudaZ zH{(Q~p;}eIEvY+iSpO9I71-Yo*9OyPaYJmetC+&5pH9?G0>m;*IA1PkNYSlCSV7p$ z$ouMOZSE87qDH0EEDxq2ChGn33r>*Jpm0y!_wQ+KD9G3c9hJ}0Me)Afo6h&vl@o$u z6DBlWk?HR^u5Y3S00`MC&h(u!G#YKKV>VAHNpUP5?aD=5dN|I-39Lju z?#Y#2Fm$}CjykB&cp9Qym0vtuYlFDPL;B!%IaA@U3tf8Fs9<_ z@3&Siu9dj@K}ddvn>9dp{0RgqU=WN9##DgNJk~cuacV^#nWXb6?gejZT zyC(4poM=o2L^>9FDG=xLEV)nx!lzpm0GbL;Ir=IOIJup@2;Yk`(DGA`AEJaEV%u=B zQpVP-WpiZVwYA4RE*`~Z&4rXR>GP6WtR{=NSpSsY0WhwIBSjxvDj6)%v`$*HYN|*e zxgbuNLsC*4n60j*+7rH8^n4dJAQ?fQ z>$i`1o}G2(HektCP^K`{XCB2f7Js2xoAu?#qmEIatX=m5%Iq5TX(=3P3mSzYF;w_* z&BtJz?=jCN^Oq@soVKu;?@XaT*IiIyp$9I2y}-$ zb2^D#(?;H#Z`?ge==~BzJTe;wG$-{A69En@56r|0CI1ok{3|-}&nRG%06I*xufcgt zT{a+^K{im>X)O+OnUK|BX4l^P!m#0o-yK^7-vGS*e6v_br&xs4@SLmE2)hi3watX- zKHX`^-qsu^>t?C-XSx{Km9fc0Qu)-V#+AhG+r?N0h~`e1dS5*Okh}Ohb8~gkq~qI% z(3)td(DCP6L`mv4p`3Lr20BefnLQ&Y8mgIQ1snMt06AU<3`{l->$7HRZGLuvH{^JJ zTqSb_ASKYIymdk}cU5>Qb`5kVbf@vT`0Ur~0ljOakCp%`0c=HdJ7CZoxeK zR(wWQ!NdSc`7_FzVWz1-CXC`$nG4U12N3P4BQX^wPX$G}Oc*m;jTmMq8#Jj-jGA4@ zLY55|D4OKJKh=l33O%#!+OOUkDr!KQe$>{72X%%ag1}uPg-xs9bBMl7TV_(%E_ z)=dgkQPOD>&!(g@kn%lWJ4+Agz{-VDlLg;USZV1w&yP?}(oU*#81p#Zj>AbZ!W5i$)^s8YgKz4|uqcn1It}o@N(LuX z27A=%b_+v)u6dr{ zIQ|JGxtEN^iTK7dC)b^(85A`GYKAyKE}0H=EAki;6aBc21)Gq<%0wg4_^tjF44FPq zI#`^THUZUAJ9E|pI4>0A5=i#o0~TL;fsPb4`GR#NqTi-GuO!Pe&Fi>2GoXX;DMv}g zSG>o|_YY0%D_ia6_BS2bw!pRIMS9ii6%tmJBZ6+ND?f0Cb*tDPZ2=xYX#(Dmuc zcF=S9nMK=5%6joIpQ*{~Fq;;OGMew>wiNj|5Y&Z~Ir7N$fd~B`_tekYJvGF$EzC`*vY5=j zPYJQ;)6xTijdu>4(l)OUT;32eP1S0QK3bT6uUt;3N`?{-VXps(#oZWY-3bjpo3h5& zLg(w*0|qE?E6tJ9x1`qCw@1}tP97U=HEAt5Wev+Af55btfo8r60RRh{Qve)y+{AKr zg4tHwT1B}r*`z*)7u!kp7iA}fm8pBaLgfyXKXlEN2Is`0ghE;VJeTlKi~o;Zygq~J zaY4nI{%%6w5`c;BY5%=c`?f~P9KJ*@oO_5xpr5tz)!9Q5hWtjkY22Ii$W1O~+8XNU zHw^&ez#T=ys9u#U?S96|2><|^*$Qi3#b%ndTFEr2epN|&@+FMfPY~Q6_u9%z;!_h{ z)5*G>;_wv^CC2NaewRiW)ennx{-^{b0~0njC(BL0I2t#h9me>w3e3pu)<8zL9>p#x z+@Hfcx)T$;U1UA$u5j@^&3QzA>0=NL&$~7YHc<%TD|magU(mceOi8iuagTQ9WHP9@ zNy}t=;)VXKAa@R@R_T@>a5nyc&uLA`CjWfvNbgISL@cvvosG1KF^^Z@S5#mFzC#S% z%gLjf^4EcFt?mIkef*;te&X%NFH$+(+bkA=$R=1(r*2u-&i$FB;XefU7p6Kx zFcL41Mk)p-46($%p$^QAAK<13-4IpZ$G00wmkx#`>Y=VR?@cDC&e+RahzCUvlz7>W zb{7|^G|Uhwp<@a32DQqLK~#=%zS5x<+KF|yVxZ63wW}mLosufs6lm(p_2(6iYY1H6 zda*7`1-JJ@Ld3FL^xY0>RV+k$DRO@z5={efXg!8SOLPn%x!BwTKC&_l#?QMpp)3_| zJo`#Ql@W+>ZH`_w9k$-yJY8X_ZKZmCxSUP|$bzn-0r2K5XuB9eWELc#qcb+02RPm>||Au`#HFeKN#PfwM9q8nF=e-*{4VYEl^D zy1NIPdzY;d@t|@R&ZT_14o#6xFe6e#Y<|d-M%=iKb7(J$&A+bw75Ky23x#;r1muR- z9t6W3NMS7jJfwOO$jVa)%)H5tQN(GA@Q_Y{sTFw?ifWr<=PuWk`6V=f!ql+zgf`w| zUdleZ$PtU7vUESi+(gFLEm8$+p#RYX96If%-;9+B; zJsik=anIQ4?KLDBVU5<-kMItOnlGpqt;K1o+-8uCD0vxP5QuhzL~ZLw9UpTA4&czb zw@mB5NxP$Aicq5qJ|dtJ8a_V;ST5Q24Yo*^o3wH)!bwR@lqgBL}2YOwd z2Q)e%>tc5j7V(v--t8`kSxt+UHctU66ZjSSgBwBRez<<`_}9estI7Gd{1Mhf09{*8 z!aQs|9(voegk0Y_wF=w;s!{#xwl zXuH^XSO>(CpI8o38CDgwK9j4~p{+4mxJe+@%{eNfq?MHi%r^YPGB^KUiG&Jc-2$TTMv3UQBy z+TM$agn`k3)mIKijcGft7h8w%Z^NsoDcS6e_7``bg zJhAvP`YYn@;aXAazRCkWt6?*!qikao89O7}A4ckTDHO>pFsA-UNNGsjPTXKOt{F z+C!XkM|x)pFXx(MEH%cdmB#)1>D;WP+o!jB68AkbcEP0XDe=KGl<-bR2REa7c!T)U zq1um<_4$aI6%kR;@b2~=PoX$0-67dAB3-u0WA3;nqk$-c9K~&{e$oFueH`iB*ihzd z($u;kkav_nn>vwLUaTb%BU(Orl)uuFF?T_pnLqmj+{!8P?#iUBaLRdYCT(IDY@Y5w z{Wh&wvxmlL0c;FP-$m+I)_1wY$EasaE>*%&a|dFjT3h=%-4fD`Lxz=(3o?-_RbEu6 z+8Qdsp`nm?GMvd>2a%!Cl_t>v@QSD^JE@|0X$L}V-dt6;q{g`krID5xd}tZ(Aj}?h z$xYqJ<7LYeO_Nyb>`j!~YtNV(6M3PbR*o9#GO35Vo30#sm}qs6mQc&jJEXaA04I!k z4VG3_({@EhAPE`YgPfaVk^mulK#49H+5#$}k=o*(b`Vx^SaR6OM@iYZa_0b#>A=x% z?U3X{SoSk@F;MF37*K3tD0Y>}V_I35PTNw9&Hnj*Qww2wv&z$m!)~4pM=Y?$u9S&D z;*Oi>u}35zrrg94S|oo=_{{FP@?(ZpD^KBRzsmxTG?S8Ry~pBjwXh(;#1bb$i^uEd zeffYcCD4z4P?x!QI38d8dGw%CP{dABL4cw7rv>K*laqBUa&vdr%cFubZZ$ zkbjueQondVhr!zPiv!1fYC$VDlfi?PsUx>7*n(H&=!QrnJO?pycD7IH8FFONhZs%S zw29jlxidrBnvb>7h&KW@OZG4s^Rm|!cF=*Tvg?SmOQ?j-GE-y0D7Tg1?yU}u&IW1Z zwD}0U$Vz54;9VHXxxIoR6=X>z<3jvRH& z*l`eV$3!)F-zf1>9zt|}#q11gW3P63QpQ7Bw#Njd*`CPxT{k`w-rb|$G$JFh>=pAO(=MOrCJ{{TLo;Ejxm+oU3HV?FLgmg1-k)M8tiI)Z+EB6(Z$5 zTS8tHt+X#5{uzie2m(%}Pb_^P0|pb1drIJLV4Ma@)$-V>%E)W@5omf`Y?1Zy3sk?+ zSK8M|g^{}Je0haKI5*cNfh~68`?3?a{I&kPgLkS%5`8nvHnhrC##5P}n|%?rC!{C? zQAUun>$0^ririUMJZzUNlbapoad;YvAXSWn3tR|IMt*8a?dPg~Hk$cxU64(~4{R_o zyWx;#S{3p9NpTodI_g4Y&m;1nDfPQ}JS&T-%rpk9ye7;MWWX^vmP((NXxJ&DxY36M zkD2Od$jt7GC?eu>MTz@|NfC8@AJ226uCId2$72Xs^NE6$uHQW_<;eEPa4`^gx1i+} zZKnJzL)6|J{aaD2% zn*^uns%Wui_=tuJf4pf<(MX>>^)Za)_+dQze8J9$L26)up1`hPC_72^Eae)hDuJ+&}P}(sxa>AS})zgmX}3 z^D!a@ANC>ckkE8G?m2waQgPv<+rP}~Zpie^I%QgJPA+7mF=07a2 zs<>Pv(mic*KJ2*5t;B;8{BYb-VZXNilupw=u&%|35<0+=p~{xaoSB$twRMI^onw`937{)Y~Y}=ry%QjCxyvZP`fP{sGixP3kfkRKNf%Y!NWXn}zjz zo1iiO{Nck5$TJh|TzJkN*iCD;|ox=kctGTopg* z5<(-5AF&S{^lwPFdB{9GaMQri2k%2zr_J&a9s*VU0`(b6)XK&-gI`yk%U8OMZt#fY zj*emHPBNQIc4=#mPjK`#+S-=vo8MplE4Pq!hZs2AkG1IBgztMS_t}1;6?*1GKtil~ zv!H=MiiJ_|l-?QeX6=qqo103aT&RHHf6uFvKDzrb!R>g9^0Bg;#F#UR3^?%EC&O>u zvbn$Kz#v8Z7mGCZ0qg}>ot7RjffcwXuoE>m|4Ph^( za68$dCL5bHJZVvyn=Gjj$~6BsuT_#8!%i;bKup=en1|+SeI>HvRF;;2y{zIH1)mkf za9SGnAhOA}az&4;=TDXj{1pVvUrX0Daf1PKM%Z`i&1z4`RfBkA-(>h@R&F95ZTqRZ z>v1FUS-aQOGvL%Rv40#VZuH@kN&_bFvYP7z9Wl}g|KDtA@BQBG`WngqR1-cuGU;kI){dp1-artIPN^OB_hQ+-_lvnYnPQ^u*z_%@m+@c$Mv3G`nN zLd+#54CZ+FHu4rCV%JpC&%r>T^Ib>H#%L@r!Y1iQU}3I25DvFp>u9)&~m zE}CU7xgo$+&scLP=H*t_BVJI@=6>t$m+X*LzHf#NC4T=XldC^ zk$4Ma5;|1K4Wo}*2L7F2+ac*){oRgi)F<<`xueTY5^tv)Xe8dYibNu+_p2?;h0A*o z%LjTYN1e#Zmi*?hdRCQ050A2y8l#d?1i~65;|T+6Tmn;y7b*djVt{o3(d1)Ukv7Fh0 zLm`QT(1WU(WrSI}Nj|DCMjm+vYa*N^?TO)(1%ThBq3jTrMnl`Fg{O}%TCUeNVjM}!t|NCs zKViBx1&6gNZ$!1g^Wf)=W<-@GBO}{t1|0X1?5gxC2j*RPY!7MK2f)r$K^hw%a+Icl z2TlDbV$?ws%9=o%pFgX=C8~0=;#_hJ&Lve$Eb%*O*2^>=1e5k0xi;l*7=3{^nn>uH z7+D&D5~9ge--mcwC`LoQ+tZfR?d8$xAVrBCMv&8l*p z-Q0~5drZ2A#3DvV!7eoLv&xlQwKNn8U3jX1&ElPWy*hWRo0VDWPyIIz2KI5; zq1~u1ZjCgCovX&^rJln%lmFP8ohUAO_wZOnwF2^w7WOqh{Cjh)z6!K ztRb_gM6z@WucBxYkIoOyWNracT!Gw;a+zsWx7>a3thINJdMW z%-hOLDsjr0O=VTe^A$mv`LT~gj2FO8p8}wv{cA;iCtVH5{goEIOlLM0(=P{RXC=q- z0s-7jZm9*$Z_BV#1ejYSr_|<3`_p`I54k=kU5*#v) zBi&qVMR?2*^22bX%EKeU2^*e9%t@5UgFdFOjd}bv%xp*(R-HG-G=e#6*N+kXje#v; zMXb1#2q$H3?pW16J%6Y0dV$cvc_`OFCVkRv6u;2JEVFe)JP@DZfr0u4XLO@51NgN z8I3M_q6vx))=$|nYSde}SYuNLW!rgsx2QYN{y)OLI;^T~YhMvTKmH=S0}$5~uO2 z;r19w)7N2k{?)JSSG`wctgr5pxkiIHyfT86FwZbv?j+T{JhA5RZ;!M-JKDz%)fqHf z;}=o@CCZcUI=li9J=p>c*P6@JBsT%lN|o8vNQD@y^;($Kp}pA^I1FB&F^?v4j}Vd( zz?DLRx-ymqS2WpL*Ms1thwL;$(MLw3YsHyvn`@+Qt}+XTyd{GP(t!t8V~d7X-Cd#Z zg+)W&g+s%AJ6CrS@Uc}I)rM=D=Uq`f;oZ`K8y#JJ(g$p?eI05BX4L|i3)rw)bl;d4 z?Hr8jg4$tS_}$&o;D7MO2N1w4wVdg6Vf%xwgDZC9r`$}VLoNVM5|Ur z>M)X#wVRX-F0u<1pbLawg_vl^pRVT`482X5&=_v7EEb2I?L+K%|CLg_LZlR~m1_*h z6NFxeay7kh78h~4o`v+Q;m+Xtq-VL=d$)!8HXil-J7LU=SpuqU7(2*zP%-7s7BXC= zs;5jkNUB7%k^$F={wvqkL}R=(*~}A2*9W??3mR-b-X*OBPTBDu*YKF96W13K82_G( zLE*R^MD6rUWZ})H{DQsRwtu#UR$CBS(*>@W0ug8$w&Z2%zFe?Phf`jRfC2t&%L9XFLoG| zW?PbM%qUGT@Ca1k-36WZKc2B}6yjJs?}gjkbG(K0nQLdN%=u$w5H$iP`X5hswF#N1 zE&sF8cn4n&MnuZSA3vM5c6CPd ztwsrp+5N?_)~gUjpaVlZ3ofL`=@XNDFWt!d@1m)E_Jv_io&LI4<>HLf@;@&GaZUZ# zXvS`mF5d|kdC?4i-|K1)VxtT@CwYiM?>sbpuHpnmfvfz-V+cnMAp8~pbC!~HB>H`O zHH==?x)m#qKpCx(hg>#qA*jN1PxT0MrT$^w!ul`Ope}5RiuOZ}~DI;;i z5PR@D;z54vFf)ms47xvacFw2$Tfvnx77+ni2$`+0Y-92R?Z=}uz@;XySXW&=hGf(a z$Vi`idgx~5CXkuuSTyYps|Tyv{%5AHv5CxHur-sfeY$x-my&Ve#+j6#y@n4&?=PL4 z%Ih{$y3O6D*ldcFo1^6aTrNjEq-hk!@rK;PC=alTTVEPqibfKZH*&hE#s?|xSpXrn zzerBOlk&uj|D>|v!at1 zX`G;oWar$_n@H*V%536PTn9%-0UJ2pL+;%h4}hb=;MNONO(05GoI2gT<{sfs5wm-KoB5nxH_g-!fa{b4} z{k=id{{Z1HfNFyz2Uc_<=_3o4hILPU%bV)`j(^a6H@-xg#wY!~Fi;EZU6b3xleGq2 z(K3?J7_!$c8qm*3^3G{d=K+XBqR@(XX{_ybde3xrj0^r;rWku{jXKV8ZIlw1v*0~?$o=W19uDPw+{E($^00u?Zi%( zxf;xplzv@}9j!ze@xBI-@1QdjR2kw@NxyTu2*ey(7=#6>7V9{K>K0bQs+Ye0)g1U^ zjp8L5ck1Aaw-lVMx<-XQ*IL@In}G(8u^>>D^nZ8WQPkE>;F7M^Yd8V$ufXiOjN^x0 zN1@O~g!J)nYjRYNc~s@hen~~4x@4)V)oSHmxbO%iSd$}-R5Y+Asz*Zn=mP79ra+OQ0z^6VbO=llVImRZ+6B{Wcp3 zLN?e&RYNxV0h*DKF_)x+HC+cJ7}3j1?9l^v-XqvA2<|reua(|!#PWd6htS`C2Kstl zeRL&V-Bh?qCOvNoY2Ia$Q7b%C4_>f7!bgcvkT-^Yrw!&*3^va)joHmm&yK4>H?fOzzM`TQD*YZ$p0WdWlP>KgV zXJN!7(iPX!zc~=P!DX&LH9Yt!o$Flf=vwR$Gx}yXC$|6{2+U-Zyd%5u;bOdhd(#z3 zZ#Ptu3VFDX0U5~FjAyy3I)=KQlL>+|)eKZ)4ljCF1$7s_Zh&2c0U&Od7JnoSdhH4b z+um)M2qk|HIV@gR&zH1LO~c@`yZ02sIuJQlqRt)KehcC=5Bzjrh%Mx5Kc?Znx}J;4 znA=WW&n8@poh!f$Ia!9|3_{k9(^O-c(tC#Kh1HE?@p?w1+W$E9PJp_rH zn##Ap-+usbx6WUWIgRQb*z3FRiJkV?c;H^|`U&~mdB9D+>LqlfWR&^j{n!u3ebm3= zQ5Q&xRCy{)0R@2f>21sp>&pbQ4)nR*fICn@^_=}wa|n8SL7s2R*t-L81Gy0L-{V&) zSlBRq?@ED_Dfs%~IlsP(YwHhGyQFAAXBU`7QO*+o0(STJy#2*PjikRLj8OL5Ttsq! zp2b_pCm%0$lreCRUHl;`Zgb%*cWZ`v$+! ztD0Us;}%V)Vb$g$gXT>gBTN_ZPKUK{8D`eLr`;V_O5=cE%bV!39QW48^>9EU{}K?Q znt;g$j(8}kRg%PhTM4g<9NS?S*C2TAxPbOU^@9EiTm~m)%zc?0ZKoN)?;C0GBX#XK z%(?^;bMv+=KQb5Yyzjj=B1vjkf~RjDmyYVq@3oU+rE!v(7!e1T)&oK6<4m}M5G5lJ zr;At(cHsjFz4iw{R&5q1wlbbES)g5vscrZr!T|_ZyFeTGTQoQi#D45X(d!}Y9ISUj z{wg*!*uklWA4~>Ad?Qi}q#wOWhYT`RK4B;lM95t->tr{leoQ@pTnQ;uLL>aa{^e-y z4t=?(%zM)~^!)h(8XAZqC{kz?7%ZI7_b{y`iZ;$4Q!31 zo;%smV$;@B&@w}Kr>L0%%5|mP#~^+p4AWucyM(dE8g%8CiEX$w4Wl1~+nAYJ^Pz`` zH)1}7Z~LBtz>!KUux(%(wu82P-F z#lyhp_K}DY@^Bg_gJk9U-Y{uohCtr0+f<<-1v4HCSCZ|%oCe$1U?aaGT0_IWld30o z4a5aZ&(lS+CXNJMBZ$kduM$l_dubugN?12Uur{RZgV0M?ZB+PulWuam)`_mS7-8yA0U*XRPq}X7bDl;D{=I%v6udqCZbMM3yR#FTYO)8E zV%`SV{c-$(Ws%3Y3j78EN91wQ^%2ftFWt$QAs##1#nDKB1`Zh1`JEe~LE=KEKd_oW z6fl*!>@4j#`oOuyNj?@N3@fnu`Kkuq9Aj^s@Et3Oqf# zPCsduW+*ha=-BXYP7-kSb)JE=A6{?Sc)qw3TlsXF^Y1=0UTw&iz{j-H%%68FEuFlN z8jA>bRZq{C_%7kQGX2OPjeX%kw)b^7EGeou%~7>b$DM6g-D_~Q7=V>n5;aOjSbeDc zWn{K1JiQ(|ooR&pCp5W!K=nHW(>|7c$fmOPu ziTd(+pa3n+#EN3>%jv%HsP0S#Z1EKJLOtsGuAE#SRMHQPNnt|~VOlYIR%?<%zh-Ry zsKWm&KpB~l*ly98q6uONE)U;%D?Pf7hR()34HS^eUS*xs39+c*K_aM-lkXKJpVatQ z0ngSWWC?_^2k*W)MH3pR=(%$AjzGTOe^ne4v5)6?Q&<ocTZE+wKT4v5aV zYbnMGSvMy)*U5yi$jstE)Iu5i%2^M${ySD|(sUidRLx&s{x}ul8LbjUc}BSTXljg# zr*6ojT$R7<*DOLq9s#eC%oUWt8m ze0x99d0%ECR{gBz8jrzL^M3x42cWEvRkJvyc*WnB({k36@#-Ll^*}18?7J_u_K8T= z{iMB1tsJ^tXyrui@U9^|Qx4i_yCts?88WBhFm5E94 z>|72_@7}pPJqcU`uIDp_uFMcl3J0nCq~Ype+ehUDQEg~7$qhhr^Yd1^yh2;%y0eb6C)7R+)V^@v}is!P^<cvR|okfStZls`Z(X7s1Sq)%+E=meRBgD-AUM{ zDziylet7gT0CjY6#p>a^8=Ok}9uN4_a^7PHk*`lv3Yb~>skm@>x$dZJH^Jq^<(v$C zR!5qd1skea1JA4*^fUw;huFx`fh|M%Rcxy_7bf;m8IY5Lt7|j)kK>K2 zsA_;tR~aQ5sN+V$%Oy6!v8?^f&cV)=(WO9 zuoAttwzh>4?h`kjP^)d)IAUOQm_oWXvlKk4f z`+%HO=&xacxQ<6Eb@#A4aQitT6IYwxvJhs46Yo|_X;uEJ89Zf3aNEG*ldlrv@7fnygFY(xWVRJa1^IZ z>#Z8Y>8h96=bt<rG}&aHlWBccW}ZP z@g_!SPw_&2iRD)dkLs^otNbK~J)r%N7qX$zI0c2e3y94M*u`y+G{cyjga63RNY$?Lbl-mEg=e%b9XXCsAJ@G&OijL$82-V>x=#5 z5z8*@1`;33-5ho@4f8@e{XpF{()9M}kHg}EZt}i=3#P4Tr;yU^MQ32(u?w=NyDq|K zklKBY;&ez%2+#6kz7f&_016Z>o$2(h7)_;h9+`*Bb&r{`$(Ilju;b~-pIiYGz0jVG zjyD;OSo^huRV{!q-J~0#OVnVYlfwFW!hXS@W&#~kOG_u>9eUTv@tV$zwkw;if=l;m zhWn9()i9~5E5+1F$RPJp2W9B}x{JdH=HA3RI++grGwPtQg61!fR}{++ryW;+mA4}Q zja&*(KHPPo?4bf$?U^7YHt1<{f2&q1D$(U_UqiN}f>{A@K0oY+ml|Hl*8?A>Wk?yw zV#jP0FZrTWGs4Y!C9s@Uoi!MqnUN~CWrAFJ?D4ACL#uD|48*Nl12)CSZ*_ojtq0@m zY$dsJR@3UXJ#Yz|bWh#k&|LH2gp59{to>>nsfa{hP!R7Ye&_6LM?+(8ZPc(6v z^{p};V8Mq;s$`NQaUaPAsm5R^Myg@LgL6+eVk&Vx&|Gal{3NnKK-YUBl(C-q0G<1z zFzPc!%f>9&g$J-L@dbcbXOP6XJFTg3MqMiK0a2{k_`szpzKAGiD|MI5pl-k{Yb=5s zG@TEPV8nO0?rp4zR5R;?^7rl?r6_nfF%kKCyY>$u&wsa+fYRQULtX<}t!X!uGL$UX zV)5dG++ZhMDnik<|0Lyx|53=ro*gI3NL{_7q+WzF!X5_H6CQ64SX?FLPFCw9bscEF zvFnAYM+9l1=g6?gp(G(3cK}%AUoPSMG?;^Z4-Yjz6)IrL;cIIYxnE}^c#Ke3StU;* zq+$UKx+u?&Bo?E9EREt+^nP*42mpHA&(Hhuc%!5L$OyIqMJ} z^x-&sbgJ^$d`NV0LS`S!^Hj770BlM^!FhIN;eCHQ# zXKeSL0IdaeCJnhf&(b69ikB8`Kp)wK5)9zr6ahPzeL9+zX=r(L9_OQ(w+U81Kf*9c zVA{-GgDF(JhenxDDz*@z>(e6OD>NSAGf8dHkc)Z#aMYgAwdv)>Yr5TUHjhvLr{S#E z+lONS*s;Qqa}zN$L6QqH%NCU51!prg=++Lmwk_21jq-8z!y<-G|aS8Cn z%1-*uwN5iR#b6!hbos!U%=X1#4S8QifmCrUB~~$%vI-+NkWP z%NlI(>$2&Fo)6Oq{7OL;Vg@p9s2}HH0$tkp`$?;J2OlQLq_1KYeMwd9Jj`=z>)87; zFOUci4uu0rv8#9LFE;0~T_`qgpMZEqetDQFR6eUyScwC%;_!|nTC)i=l+zfYdUJT# zb@_|xG4M5(q85S7mq|OKe#16>E_<}0ZZSIZ^H-Y&apQ5AQcgw!(=-hWJyvUdIzLeH zZv}rW(8TOtAj2$7zSlYrezTP9`7qs?QbH&?*3^ygX#?41^40SPPk4ut zH24u7LK?6i$s4MKe^2cC*>6v`1Ki?**L01~1^Eg9j_5VBBN2VTOUIRayK2#LPyggzfyPqb`+tsW|W*)ezaWdyz0Ob&q>39Aj z6f9Cp2L4zsb>*Q8Yw15@w>$HcD<_aJmiCPV^m7iP1#1z)XmtE$Q$`9aF?OP9aNuFQHpt2NRTSQUT zvCn2wS(Itrkd@k`aAt?$=;O=T#53Px z8lW+~!YPbmq-DwrF~p`#7PdF=5ZJKLrY~_TQP2!c^8d_TjW!&dRUqdXRfyd=LNTW= zK)T^3+J4IM_ zG$-TDE+AJ$E3!2l>Ya2cNet5|JWtCcjby3jrqxy8U-f?_V4`6eO0(7v_nlzWa4k#p z^%y!@Ea(e9looGCmmbARuT48-PaDgbEtZ{n@Gl_q4`5;+&6ETRb1jPu+wM7XtlVye zpG?-w#w6;+I}X-WZ!hAN8Gj9W)o?Mr^YegKm(w~pl+T!U5K@QQb7hJQGN0ESyXl#u zNBevJ$3^`f#PMU{T#=(`d$Db79^1T&8W81gcKt00>jUsja8m00xD0nZe@w-UOO|`J zcPe%Sq71Le&q3U!eAagy+cq(N5B+c31#_rX+GRKf_%{r3m5UWO)PCcoL7X_NUC8de z@(hO^+^MKoWo3!?S1Hf*{B8oU7$%UF1RjavIbRx6DU3 z4?fNyho#+-raljHIE?F$uP)tI_oG4}Qaa_jSf5O1w^dO#FyPgMhJ zhpYAh6P(1^%&v|8S4qU}{6KU0Z3vUX?{&*qChi&ap6vLt>Y7PLljRZ*al! z9d2fI-o}>$out2|)Yzt=qf}_U?(v6W$f6a8-HN3jQ*U1Ha z!`k{g71_zS3q7Whij1i;3Mj&am(V(hrA3M%el+@HC1R%X>cyWtlM{j|So<|xw*w&} zS4b~%sw^3Icwy?ikJ{}s+*vR8DojJO5Q6h&TIq!25XMN3{LiQ(=*v~p}ZsbVCfH*=*qnZMyJQ*}$P2TF{V zG|GYK7?)PH=RBF;!!lnQa%C5s>Lr8XTp@jsIOej6}mZ2Pcj0T3N)-r)a&7` z+6yJERQStPd4~UXpwu9D)y*{G2B-hMY!jb$pSX$$Lo+AdTx3hu5iN0AxB(n;jDdcH1H@Y+OGym+uS zNVWFybrzP^!ZENnd;rjmyFN>%1`lQ%q}lqp;7wWlw`*FY?@ef_?H9v)y7T{Sj>O>6O8;<3fl+q}dsa@XvNm5bVO!?9YW1@R{81mFl0SDl zwzOCR?vz-QI|?X7H&@|uFA+T}k1^vioA3K9pe0pX-1a?dmXZ*f@W1M9{(?b0_mX-K#9t$vgd>kC#tZ|0 z`x>U?$L5{y1R=VVM)YdnvoZ+NkEa~^p1Ys!Qg1M32r<-&q0rIgD9n&>aPAOBZ4wT% z*xguL7^w{Uv^eqcJ>&2Ga4qzmG5cFWV|b^y^Xmu}1{Y~ngUIzMoA*O}H{rv|c;Na! z^oLIRpy65?y@4dFQmmpXE8v@YHzHb>Ii~A=X*gTLG=FRF-tszZ(T05~Qx%9Z7jpgG zPkXb66Xs>+Z+v~6l@>xj9tMlnqVIU~0(9YQS5y3=BZseL*j}3HQ`bq~B{aZ)_W@L} zI4rR5O>M+BBuO6UYqk?+nV&)Hxjv7&TBHlp++#*%9+)ioAY8E%tZV2@S?B~hSiIFN zN=++7q;a!3?GiL7%BSL@1>ot{R#pxD48{HBPK~QWBQ1Oi5H@MKIJV&eeL_sf=FKGK z$M<>rE)uu>iD4reMwpYxiV6azuN$TB4rh|JtEy?X7O)iLOMew-`TI@&sge+WM-DwJ zGwVcGXQMEy=S)(77Y8xM_eHRFi8dH7aYhAt#{kQ*xBW6ACgqQyE3hSm4N+@FOymU1 z;sgQ~>4|4Ekp{_-K$Dub6*y6*te?2ejv}0B!Ag!-pI3o$Iw5Q2T~tIOw+*lZeH*Fl z!nBn69@tI@tj=GLp!cvzW*c1R$lO;hq3u0)jdl?`T7wrIYFcpQ(FsVs#>skGduFCv zwXqhLVr^aGuh~l}eGxZ&T!`joJ;B8|*}!Y&;BEPuw{wRV+40GSXjKc&Rr9Z3-n!pD zoR0gkNx}7A^S+NO5QS|V4$bNdm=#~2Z&YfwS7%Jz=fL~l2}X{#NE>;j@~gwS>XdiB z2GQ)_8oZWdd%ji8nGZI=joJRq4F1Ny}8EcM3vCh3n|nn5d! zyB0jA3UHQf^UZy{V@Z~sF=5~^>E9pT`JO}b;9HWubRRh4iN!-m%-q!Tf#%&{p~b&V z4u#G}KYM@a7e_Za)#n_I4R-VF`ti24>WA$QUxg7BO zYwj9M;(hmfGGbG8dRW=dNn|ls#elPm1?9|!*S{+{To068t5G`?TVm7ws-V7FI-?Is zUK_^uvdCegeU19R?+FPS@;=(nplLRK>=1C`Hke~IL9h;{M_?gbVZEc{;i4-5!%?7I zjM{v>e|R=r=wZ@5Bb9ldAB=&ps`XQ0qpO8_c)2{A2K)#dUB=%A9I*XgGG*FPTl~M`gza?E9ET14=TY_7PQM9i(XIQGU^DzHn*PnO^r6l)AIE+@};t<#)K znu_fG-J9p{MHqEcyInn9Lch0Y%hCMRA^#uvCHN=rn-v-hE3hNqsv~;_XSy zE&}AF?R$24a34kogE)6BVzQsI(f2`{7}%QUFfnCum*!``@3c<4wuoy0{TRMvKFhJ^ zlkzPG2ZV&EU{;Mr-F^v<1dp95TJy+#%pFNwqG64@t;NnNz!tmf(}2&pSeIJ&^0Vk} z%}zE*DK1Smk5t~`S!b@*B`JRP*&}NjV-vqZPy@i&Zv!pvVGp@TwjwC|sMWjiX@@MlRy@QQ)t877zf{KbCP6Zsq zKFs&ZIBx5XmPC(ITYq7b?2+NW0lxApg=hAHc~;YJ*Z->}26=xRS_jI&RG4apK}7Vj zxfcJv{k?rCk464AOmUl}ygR>aP@0K;^t<{F5=&{7K!)wZ8+Nm>k_XRvDULeR>!R0l z6NFfP%H$cAmzSGpF5?$N9{C9aY%(U&?Xu_F3%=@J+%%QL`N9vBS%0ze{zDiBmc54E zYuz}I0;{B_$}hanz)i1sY{}hvvM;bR6TU)4s%1T-oW$Z58*Q<6cJpqB|5iGE35U*e zFA}_0uZ$l#yh1Kr$azfQgr{5jeLWtuA>PR65<3oad|y8N>4MixPk|(^c)OFQ`F>&j z3x{|axWN4v0*$gaFoDX8nHs!$?P--^{gok{yL31q6-suZg>1O#MdUv`-@wsL3Tg;9 z1RrWVL?bWTr%EPkRj)6*UOHF|(0Cgqh5SnRzkaO~-zHFvO^~b4%Iq7>AcM${F48Pg zpPf2|c!aLR1XbqE65!)&Mn?v^tOILh7S)GUp>s}qeKOK5pL0P<_!-Ou$xJ1{i;AIf zO7*p&$4jTpYsk74ad`T?r9AG_y&(ytU}6q*u>r1?rn+?e0Oh0N`kaV+Uq1fVuRKX) z9TKxgE9Ph#YqlZk1_mkL98y{eO#%W9Fn{dK*CiiZNWy0wf={|%%(Vu7tgHcwMjwM_ z-_K_Q38N+Ve!T$Mz;mmKvPkGKW4o5(8C?6N6*f#djr=pkXwi?C4WDJI0!QUBPbGw$j3yDB=!cdLd&kaMQA42Jx?tqquYBLv@E+OBQ(dCl~hpP6%`z z2Pn+W#TJ0)%BVpw$H+aQo6FKK zeE3|M3u@Ei!72?E);_*BjknxX@vALH3!-!jhAlv}GyiQP1LmEOO_W;@)PqS7&+Qgk z=AvJh$DIK?V8({ytw}$GeIY>m=o~l4STi->mJ1#DpOl=2VW%&PIpp8P=z0kzYdC0q zbe9376PJBsw}G%JGRhSOjM(l0@(*VMQLUrp>ksF6-aJ$#nLbXrm++W)@+Le<;m97Y z`wy!HepD{kcoZ_xn_08=T5uUUS!RX{21D(6=)Drn$GqyfYwGvb_=qQ9W1Rrs@ilz3{?n6x1e9{ z9bm57_BzoJ2izR(`NdG73ix!569&MsGJE>m_(Pbx_`$r1w^?De6?wCOL^NUm+B6(# z_{b@Uq5#n(zwOm^^vTj>zuIEfs9We=;LaKX#Qwk;c(Cx{!K8gRQ#0qJWyBV+voBN$ zOMOm`cG+TtdE4I^g4v zTV6cc_XT6s-_1lfaxCBy$j}L1=Oso0Nf#We8=p)TmqE>>{7Z)j0V%r8(~VgT24Q*MwGcQxGl zDloz`j5hP7WO@S=UP!Z;sZS}t&zl_chz9Poog3)Ia{Y@gqQ}I<;F7oT(@M$572F0a z^ncp(;O!M{#C#DOcyu;K_2i0FI+B!2vrE>DdPlBJH+skF0q+RGooJ&F9_rtAf>;(W z-t|83X3lE|VsZAdy#{ z%((q#CQE&oIy}s|;K}VoB^=LXL|0bgr~9%X)$AMZQ^>q}cwstq53)&#FslFUOUy|_ zIrFKbmiGs-pJyD~6FAdl`zk0rTdaj)e5{VP_#o}PZZo8&r&d$9zxeBoN zxxQ{7red+0@6P?02M{Z#;JA}s1CDWQmkTfh^Z^*gq`Mw9 zv3LpX_>9}-8a&g_rr~PjIQtyDH$hk)?BmE*`Q;;QuLY7AK0UTm5@vm8Ov%kD(@ftH zrz}561gxx0zIV~*B6C6xYPmZvZ0gUb!w61(k31NCK}e$=r+#?w+#l2dsje) z8rgb9YN`6!Kcq7I3AYZ4WQf^%rqyV^!Fnn=7Ye~E59Y5aJP>NHc0Tr@r=vpy0NIxn zc{DJi$G7^(VzR<2>Q!2L5j({pM#Z>+*wLgooSKM0sxTx<-5; zn(`VJY77KsGQeV_1W&|IeYu+ZKHkGqNdzUEw&HaG0baB|L)KR!RlQg79=?e=svbTe zz=4seANqiM?qeg0B`&q>^GXPCwUv0|Py)kb&)V@k71V(Mp~&pbb)~;3g86LB`+oDW zcrXzjf@c1jTV30VgRk!hglrmqFm>RVP^l9l?RpJPCQF3Z?} zdT6LztU=tK2b8hint{YjP4y7|OqAliIlZs5^|B)dPB3Qr%>SBwf#5Pkh4ixzC)_Zg z;UsOeUFd?lu@f76%o&8K^d zq6wTMfI)sP|QP{VnGE5P&Qh0I$_z6d$S~B8$9-BdaCiv7Aov znmkY0p9(@Q2ioU=v5<7ue>Sf{x|WFi0RC z?TW6Q$$#S=-cBP;7pwPRdR@0M$irFN{1ROR-5{Ft-BvEM>Pr*6+Yhn-+m~03Fx2ot z@|g(|MF1HjDY06s7Gn1dJBGk6u1~Hv`+#)RnMB~!ZNV+xBiQkhcZEpho}mXsldR5t zb7iPdzo9?-b*3$VR^m*3P|@5~H@JF|m>dvco`t@Vl;f>&TV-SSrzJ+DkS3ryNo&(OOLFJ`~aFL*RzIR?QsTWjNO|*$2amqy2?hdY&?1?%#DzCpL zh+*Usw8!|4Ua$v#QhAL_g>IiN`6G(u&h4k@Q3rsO69f553dmEoVAR_LK_H8;3Fb!& zFct|7B+N>ygRnptf{N{n7*kVbJA~R&W&C7Wh83WIafRmd*R`(k&Es5;hSziM+~HxLvWCpw@*&h8gJl3$sd4 zRmJJye_I#ueXk{1C?ioDb}XEF6D0G?XpD3?tc4+JUJ}odk~(7BX8@7Br{mK`=g0ZG z;sm6mZilQ6o-w3-g*TvwjR8!tE2dvGq>^}8xsb+1wBI309r)%vW9Eb)G6c7RG|hSe zF3pf{>`R-kRgNA^#DV^SD}mpoq!?@mCg<2@37W^;w$L>+1gDdGxA6`*p`S!c9nq`C z;WN@Q5Tq}NGIkUbX>f9J24%wx)Exaeb89}S+)d2_Y1$XUJIqxZ`|NATgmM z!PFMCgBYuJ>bW_P=2tz;w+i)UWGS$FKo&`x?mn*TPQv%zlHSw#<^(XhCwN%+K0R`i zb>Yn>UOy!sizCP5=?%2%)O^j%uGTKdM2(S!ay!~19da5)PxyyG64o0gy z;T$)P*d3H%`HTQx$e~W#Q{zFeV@GL7Q5c63cn!ZaIq_#al~+1JOhAS!@Cj^QUDSyJ z9gZl_Tt$y3I;)9vQ9Y(_%=L;RTEZ5hP%abnznRRXrgPJT!^yYeeNfb@;?ot&-R5P| z8UxnATqejW9#cj^{rURG9SI`M3Spyo9NlGuY9ASa1yaw;J-R@8g5atKP&dtkX$4%} zbW9~4c$pNz8*3^K4i8%-4pRB=}ja!QS!F~&>p=*yU0Otu%v!I#FSIgXnw^tXLQ zs7oWsVlafmcy)N7dbL?|XN@tiQBWB%0^tLA49zY6xXoaQ2Tm_gJWAh9+Otchk;O^i z2(-S-_x?UON{b+AU8zn9s7Ykht|Si=b}{|qD4GZmB@8Aa0|i6;u$ln4YHGL3()q3l z%*o)hNCbR@T&oZ7L8wn4|NJsIOsw%4jz!)%zNxlt>HFoV#b!2h+$31YKV_hb`e;?; zC1A8i!sFIsHVXvS27cFx)7XL$9DmR3GuIrN%u_Cw`Q zdOE~J^AQj)}1kR%= zvV4PfSw*gK;rpWyK%`Vcq~fyWEtbq{G%qxfer|%lgHjL7s5qNM>TZ{eCg{(~SiO-tWpeGkS|1pJJzd%E(}z6PHmP2RZKbtTfqQKiGGH zZ)~?Y#AksAuz$Y;vEkwF+Ph>FPS4WA)PPSJ_(B@rq>?dvcAxrlFL~8v+OGIvbFLeLI2(b5L+MU);Jai_l~{V29EyaS2@_7MPU@1ASYh-g9{G9g)p=Uc;AXq7Gyf9 zmj98k-ru*2{>uyCe@|iGxM1(P*n=@oS8A$}P0Q7QIOq6~D&i>IpGgps@I{7R=irb* z8B7y_X+C@>W(!|2`RRDLZ{M?AU{oFR=#o^3na;yXr;l0E#TxIZ2z716+%~UYyeUZ_ z-d8Vy-JjTk3di9s`(w|Ym@6GIqfa(UkAhG_V#%!CjkID}9lWZqDItt$YG$g~^0P3P z)hSMNy}iIC){X#Ve^G}*e=wdbzjA_|DRk51MB9AhOQZKqJ7P{uJE_}mjVq^a zcO;pbYSm(MrAa8MKodx5opCeS1XzfO^q=L$PE=S~bUwuTiXP*JC2*+tVP(r%cCHCV z=5>`e<`8gUdm{0e&G<_-$|e}G0%_|Wz{yYzijtB988c2DOIxnr?-+E>FX_r zpGQ_n)tqE`J-RFmd#S#7orui@z5K{f;iLT8TNYy2013=`#WeLIcY-b?dE_~}qmN{Vm&}m z=pb+JuoKkq7wBf8dYYcB33O#f`wmpY4T&i^%c_>ZVqHtSV&V) z-WA!tTwI8CKjRUiE~J{3D0IYMj-tS0BK^WwnA*`IH%_GRsGF8a#(7{8tVLQ26 z-gX{(2~YL(m(ftxYU##r?~S1;{dryUy$&&!aI*|9j~L0k%!##;ZEQR0_T}Z5S7Ksf z^WfOWJXk1g(#nBC$&ZM@0G28+4jD8bZSVkaRT_CAaQbx?;I!5&#UV|)WNQXrmkLfh zVz@Poo`!)Z;QZd$n};#|UX%bvpkn)VW2K|Vqx9OR!^Qi#RsXyjDT-3DJLn~qgsB(0 z^)Z_hs~yxM*+$Ro8z1e_YR~afD1n@<2~4GgPRUcX9wImet8J5p)RLTJvveJcZj2!N1lR{s_y?Dkp9&( zfO4W4KTOw2rzJ=y5+5)uK+aASKxIs#mQQ?an_HP))EvSWON$s&m~bJmK*I#XF2Ihr z29PhX|BD2`_)n0aVj&;9HEqoz`r8k9euX_pl-r0|CqNKLu?cohbiTHs3n5}+HqsCn zpxo5)l~T0QdV2H4*~7}Js zm)Xn;BA{J0T%nkJts)7MwLzFn;}+=-+ICG}XyT%ll#~=ggU}3Q%S2!@HGUi5HZz|B zu>ReJ2#3u~ViuiUr{J^eM|cFE!MVogGz~wYR2tQM_pKj{=x$wL%x3ntR6DKIi_sjI z_<214GBUXD<^L7NUO`=v@p02*gPiBRPc$U)@bSfDz7iTN=f$O{D&xL}So zq*5K8Te#OGY4RhP*o;zkPZ|s3<)gBNo20krN2g^mRb-D&n6nwz)<#?dXRc5W{dm&D;A`g+eK0UV>*<4Z*U(ysqVvZ!w*frdt znZ5CUhMmYSj~DTC($qGsjsTxv!nsi_yY_Bsz&}+hppX&9yazH~NjNecqhTtos*Vmx zhC(ta6HJ=QeCXC`NmbO!+dgJNE@Ux(MHvMM@C>0|H+U*`;T!`ga>QtYDX2RCLw^kM zBViAmj#a*1YYpGI)O@A1HUmJSF_52<$uWzd{@@XK%!y8+*l>@WbKpAjl}Jtz zv|s0#BWNqx;kfS0@R89~PPO@B^k*3vigC{9W4%^_e=2s}pN1)grS4bED)Ji=eu|P) za-39G?C*a?hfL?MbT;^EKQoD0yeH`e4H$ph?W5kJp&2)P!#USiUt^dytA8Vv?fXxm zQc(a2G_I0koiMV&f!beXR~8=6&yzP;51A|d-9SVX{@~2>6Avc-{Hf{lr$|PF^+h;y zA#UG$fYBj>Uba0|H7Y>{BG)w?$&1?>_5G0jkJ%_i5w{mrjb5K~VWc zlaD{HTx7Uv?3Y5Z;vNFSr+A-HKc7oAdN!lne~fJnh$+v3y~uOV z|Hs~2hE=(>Yr_%}(hbtxEz&7Sr*uh*C@Iq2DIh5zT`EYINOws$NaK`{h6$7U#$3-{ zuC@1bJZtao|NC#sfp9a%xW^dRd7W`{#impD;R6fEuY33&5Z70MD6ID36J6bB#I8C@ zQg8ohYo&>UFOzrgnR&=s1AGhCN*X>0J&4VlgrBG&!QRSSc@vLaM*s(HR>F47dU=4; z@EzLD9_;Ee9u@7VD2nSbtrT2ajIr#0>kCI{zHNVG!)<6SC}4nx^gg3>1x5hMNuTZs zb^imD(Wi{4e8x?5mz8N9Bd-?iQbE9e`oU0|D0d9G;8FlD>sK+PDue1Elw9kiX+uH* zv~L)L%Yso5tC=dXY?beWRUL$G|D1iCuE5ATH{V7U8&d`gQ3fW>sebM0mBDYM@F$4f$BC~^vm0x!B_ zkap;T1k-j#H~M8IXhDPgiTT>le$GpG7iE$VlAhF1K|gkk@;EN6^6nYY*5ojCrqs|2 zBA1RqJwBr|m8A7?JSTID-C5_{*M7Fo=L-}GpGFTMj&c^HaLIL-DI??3RVL7l5~rNx zsrtYn!A#d_bhshLPXMnzUuyF70KjLbef{@mdBn~PN>hcpIaU8qYfnB5EakfFBc+Y% zH;7fKAnv+;9knj&3(R~vh79;SBi_%1P8YhQgtFxX_b**&@}BGtA49ZKWxd{=3yqTj~Jcqu=&WD@@wNk_)2yk0D(UX#6OsNSuIRIfEsXy%nwqn*T;-^WMBQ84cZ4 zaWVIENprae*7pTm`|?jCz3aLHeq1lWsWTwwnH=^PC_Z@?F%9PG$JKnLyg)seg1z-j zIog}gq@3gPMy(yx=DsN7eznSaw%s9LGOM^lT@(N2`o$K@pA><3QAB0q#(hfMSS*bD z>5S4~yPT;}Tpwj}w^C`lzL>YAqRB`c>9NEMb6{Sk!|$}_Ah-4*t46Yo48@H} z4<+MB;`P`IQJ&db(B=FkSX+0j1^a8mj^{>hdfMv@C|744M!_Rf43}Xi6h$g& zRejMec3fk8;cJkvBdr{PJW~&U6wXD|L>-{?S z@?LtbEcd=(i4qL?ewc^xwy4|gYy*pzR*y$NA71K%NM$qg)Z(-lL4ZVQr)S0WR+FFp zz7gf$;11U z-6VxngcC8E;2@So*RS;r6@g*B1LghRhbG3xdu8S3cG?a+>y+2sPsY-G7~|~-FrAc? zm7nBI%8{5@B_54P-ZrfY17n!a_MRC=nrWUFepiRR6+ovS0xx}C*Y_Kqi6jKG(naw9!bD3?6eu}W~Pjcf~(J5r1s$N*7cxdJqfxnJGF zZG+&jzwlDE%E|9prLjRyc}|-=6d5^#fMsuQV9 zF^_E@wOnkaP?YTDSl7M@#dQZP3Jd^n#7FM=IkGtr4J7)-N!D+?Jwa;_g(tCh0wW#y zR?aCuAx(lGACXTV|G800As>a@@#TO80%Q{nOmr1G3s5#0{v_!o=g^%8=S>iIkP8Fc zTS>}E7~pmtAB(eIKq&#Igb9VV$>ZQ=A)fY8X=}q+5BVHpk3bA6DSInmJp93?yeV0R zSl;iV=*r*w{xuvfRHN`YXkQIPrK-59Sfiuz^pM~vod>M`P84!GGhdm~La;>;JOr*3 zP9x$_eFLECv)nnxj<$R~0s(Gc_uz4-=%yYyLVMi3cefj+(_a>r9z{kA1^{+)zic6# zEZt)Ua3Q;Mus$s}Wk-)6fCulc0AC9E_Hcn?5s2F0kav9}T}%7?APAk+{Bsy+>XC^v zzkgz|zm@-D{%H5{JsHhi<0LuhPaJAPDUUT@>^24ezpYne+W6rs=hjx}`TJw2-y0XI z1Y2*hvdW{RbE>N)D+>Sp86i4_!=n}Ft3FTveW>T+## zzNZ+a-0wnM3Yqwf9xoFx#BB-8DzxeBK#~3IG?*o1a6>I~0AhaNRskYai#Xo$Ijfv) zwcOrZRsb$cQE4e|Y=u5N&emRY0$xFH2YWrm!`p$&^eR#D!bd+F2@-gSxbNBN>VQzY zK006d9@&WJXr{osE%{Aqh1NXqruyXvD*=t1mZ{KgZT;_Y**r_78E_Gx)3_qDf!K{5 z5Y|2DS+M)%X|W{)Jw{T6&nM9Ar?cykKWlf9fS5BS&*$SN(LOC!x~EOaoe#^m!>Zd#un)-)n*}Rohap# zHGcIrAUU|f$r88k5-{`TbSbo`$B$N84}(##_}qzinM1otxVTB}@WmWUyICf{Yx|;1 zaMmbZdJQh#3@R_iAYZgwd4-gHray7=bF5QWi77M+yyD}Ft}8vkQ_-dAU9F-HQW5*@ z$2Oxe`V-#uOSuLU&w9{_ClfDM;xMpLCT=prMu0mLp1ycw>m?ZAIbC;H!0d6K8wJ(( z$plm=6a+eWXi=ej1&p24N~LLX>NAiVt7cZq3|Xjmbku#WLg67URt`>J{}iT}bU{Zd zH$X52)mIFvvIg@#z%j>q(X-CTvAK5h6ac_8^X&li zv9m73I#6-SMch}x+;TJof$cV?&Pz z98h^0LoxHS^YG|~a$4$SAM~A?w0+KO*TjfrPdW{(Ac2=?Cy)xRj#rT@*J`jGxFy#) zxRBfj0hm%dND0fp0cq&X5-_+kKg4^}kWJFwtj_cBVj}y-%6jce52>Zf*M6%PKSJK? z#K7QA#6izn=X(w?-1LezI*&9nHxO5QH$)K8)BV@{6l~V#?7@~Jd@EZm%5db{;aj8- zVP0eXU9NA$wrPFYU8nX(loye@>r7X|qQSnm1Sds;+oFOEW(?TX?W*IR7AW)}S# zFK|pIQ_Em z@|^s6L7sE8C}?yz0cQ+kV?8I|so0Wv0bOi9p5uq=o_H#7RF@n#K_dIGe0ZQ8a26jX z3pyTEXWp0?8sb`*r%bNruITr;$h6>;)j~z}tE% zP3DZuhhiqW4s<`9afY0eUx7I6yRsr(TsRS#SzI0W5ebow<=0ve;Tf}sYh(lwy)QJ! z=^BiPkp+%e*tqUBNCt+dE(}@qEB+0wRA>3?8n7772@aV5aHltCcreepcZHnfgrqZOPy-Ze6W>jv=wu zYmuKxgrl?uxVH$7lOLKwh!TrhuOH4ceNs|t49V+wE~kUndiE(dNsfj;P>;?I0E#lM{b&K{Z`P{GDI-5ZX{}Fv>Z6+tou?m+QYeTWhT!a^Us(1Ln`^%Ms- ze}-(86Mi0|5PZH7{B+GSw`<^$ESE7*cer%n$s;dXSEP?2-K@fuCDlVRrRF^SN~&E1 zy2@Tah?8pY$Xs>3On^nQ1DhPb`aXV71TQ8Jo;YbA--`8tf^a`MZFs;YP6qK4y;v&T z0u};tMsHuz8oF6pCfK%CTx$V6I}_RL+R{c0|1g?Qk2g|RFa40#+C zZFuBrAWp8r?fy1|cd7EISrBC+J{k1qX5IhE^~ zboYg`Wv{_41qLHAmS@iLV9OKznu+kUO9Rp_I`(}6FCWmFvvLYv zA_oocZB&A7FrM;+qTcNxc2ek}=ZY@!Sd|Wp=g7z$rT+7k34D*s@^q~#NpURjP*3{( zu7ymt8Y25#T8zaj`|*PQ)tz$GZlYhC?A`qxqBzQFnR(GtwP+rw2_H2}&%%28Ux@tr zY$VUi=4M9Tt7tXPMNs#;!GQb6uSP?%?V={SwtEsN5p$-PPOpfbr`Fi$o}B^`z1US> z=f?tr+=zz2cLClHao*d+>uPCP1hXyLh~3Ptv+_oH6hsG%IfESBpja0l5~s^RZ|pAe zZD|wqjj?*ir!MO@%xlzFT`rV|-AHA-xDq~hz6FpT(y~6rBf;Aad@daFK{iJW)6_Xt zTKqyq%0n8{d9@$4Pydo;SVO%7P-dQS2`5+(LhuSm-&y9aBd`|(2GB#s$2t&CO0S=} z4+EfHbn|BYp&F0Pbl8IMEbdz*)st<9>fi+*1DfB^T9pV<9Tys2Dqm&L31Bl;37PhQ z;xpZvEJc;;F?mkRuI(1JyKWce@n!T_Z#GW`uznZEyk6f{=i; zVP}1A9F>NeiLL4VB4i(KIJ>aV1wDQ-mKU0wXw&1u@FC8O^sl;13Rw%ei8^)n_(Be5 z7a@iwi@bPQ2`Wfk{fA>u^Bq;Qi3CSa#L*Y!TccZeF>-%W9|=F99(7Q-${kVnJK5yB zyI*Xns7@ns?Mp06i})6Y8y1npEWhZ*f7XVCu!o2qAwR^+7@Yc+SIm+gmWRAAnn-ND zatz!JE!G2+xxO%*L}9F=agY`)r?c`1O2M+86$yzj{|U2bxF9Oq({37g$p?(Q=12&{ zzC+CXI-n(zeM_`_ssAi`MQly#g3$5^yO|_#5$__T@r_=w2Q6)`;u`ww|Mw?J2 zqbHUZ6cwO+8!0*gBD>-<#U%dSf`89*pjEOa~xNY zwgE#n#QceM7rn02(Gt=He*_awOJYIq_4`Lcij6c3*hrc;%}%_*()7XBC^PyuG<#-b zVY9)b8zr31ia`QeMLwiLodHtw4M?)_bn!TlPxo0w_b_||cA*`pOcKrkEPVm#5NR5! zMf0IgS{#YSLKe8OG~JE_Grn!Zz6}zJDA})bBrG5Iigf#He+du#QVijOT}k+tB>|g^ zVO}URnjRw~JAcbAM@n!csZDH^b^czhEA(4&`8ZRq}{=cki85= zvj1snIp7fvTo6KXexjyc{eEZ;msB)nE6eq#bm zgi<)RJp8$zNchDbjS52j8ne|U$GI8fan^~B7(KGbjxCG>Yp(zi-M;K=oXGZv$sqP4 z#m1XzWVRa*PjTvT7u}O~XN=(%Be02KmCD$ z6O$ON((0#JX+{~GJs4Nx0Ui7F5ZR^-Azd=gWJ8-&LOU5^LNt?4s#7l{ShPG9G7^v) z$Vi9C#W_ojUQZH1kQ5k@jLXi8XHP17)C=?Q9t*L+~_oNHk4dyaiJ1Ih%j@%tJ{Rqn?E_ZM}qyYey_!*QkT zr*qWDP6t(tj_c{SRGLiNy=@Pl(D=IpQ?14C=>@%~M3q^~fE~+u&)a@(L$+H9XUXz9 zQjVAc-7n5J!rzHMB9w>=4-Z-+!=T%Os9Kc_I>?wY+JiB9eGFaEM$B6mVls! zjo^fZVE2hHvN{jds!Vp9-Y65-*5|(ts0b;B72j8-p+3tDsE;J0Z;G;uN4ld|t~Fy% zI?rx9Z_Ecj*I|NIM(QcFV%$cP?9v;5{4&Okuag=U#er>k=v=hotI>lV0(XyH)bak3 zaM1*a_jM~Vhsad-amO3fnpyaxTlMWyF(<=?PN*x<^7oZ<{MEAwOIV1j%=_aoq}*-x zY{zehr=eETB(?=TXuQeaCOzxkm$?cUC6CMXjRb7uF^u(QTx5h^7A^hlZo2E0A6X2)4 zHyFH@w0p z`X#>_d=I)^X&#|pqW~8%Z3lDB(tw~9;hDWvHa%4fNrQ%q9+6Kg+D2zvd^-;@Z&L6+ zIX5z&Py18P&15D*bMc90Z+CWT#QVV#rM0u7k*^iQUkkr_Lt;VL9(P82bLhoC+B1ck zB8#SlW(L?04g>z;9Vm2Ud+W1TLQf>#TWYAApqbiSRy^>h6NG5Z*<&6!WBm+X+HfR- z@&>M05ZoMoKVlVEUBeSoKc|nVY!?_A9C<=*iaGq+F+vVo=@1Gy_ux3VN$YjQC$YgNPD+OU!Ygok8{Qzh z{7zys0r5~@Ll(A-ef`k#_5KJ~S(&Bj&rkd2ouGf!gXE~12xq@;JVvKP)5XM5iJ=?l?- zkNGWxewhBp!I5|o>3dp2!X7y!%%-xhdm`kccr!?4*JxX7cx8LI>Ovz?-JRH?L&mFb zsX7p+bpXcj#XuY{Rf??g=TRUv6hC|aL9hl&92MX7o_BNQO78G^j}6i0ANK5eUD#_p z3b#km-1a(*NGc=Y2y9Ss;BKFyS|lcR%SM@cpq`jY0u2O4Rb{H!@m!Gp4Ehlqgb#qX zoWfX!OD1+~^aFbNw%v`->@bq2&uo4NO?`;~+JV8X5@}?OK@5X1V;OU3F^z}e{aS+y zTELCCKDqaJwGpy!U8K4)kE0iI%?@o?kw~%a#BD+0$0Eha~B^Wu%WPG_ZJ4NAB)8R@~4z zr=GN5I&nC7{g|`q=o7j*YoWXth4_IkQzsmQU3VnbsXUL6;B5yts_GHdm^`(ZrwJJ2 z3L}FhJ+}Q|Uy)%=C(2~0xIdR~fO}QdaSWMp%$gzJw=97A1F!gm?d&H^ z>IB>v9NWh?!qC6L3RzNW$gEM_lG8UhzS6rfJi@vZ%;My|*f4Ew}MXaN1|x`2j&8yJa1#5&cJaO z7&bmg^>?$p>SR-;4uJ`m3zj@$C3ir_Yjr|bI5-Dh%VrH*KQe~IX-*H0Xw1wrLtjec zV8)1>Na{_|UwpBC0u#sd^SuKaw~zpx`+L7;nWL{f4tK%wpLYU9WJs2{w;}#6^Id9L zHhu3oNjMWr?2+BES6TD$JQJNcZJ68#)CT?!%s9)+0n2JZ#i&ouVqew!8(V4xP31`B zKq%HGfHOJ8vmT<41@adkQG4bhkPe;yPhI_roMl$QUr=-_YtT>DqO59GC@Ta|r2wa6*arpWHp;IaQ;oDHj z!wmvmwMA$ChbwX>iQId=QxBq-o%s7KI9mP9j8}ZL7hm2JoH`NR60OD|ieBuC9+?|o z6icBr-vd0^>MHN_81EGqr`Oi12NI>ef3M^4^@Uz01zT-J9N-Ab-=Dp`EOZc4?yYA-(;cs_`l_5cmR*p4Up8jBxT)JElB zewcNrn9e7NQ&1vTYS|`5A<_foic@coRD83KQ|&6k45`o4^Xu==^WW^&;8bD%^p;xG zvrqbRCA8W_ATv|jm@bFifyd5NnM7;W-8IkyH&%gDIDSy!I`4o4hN|T7jsBJRWv`=4 z5R(B!Lwn}9F;kOp98p(9)UGwSF!FiNb?KhZN+7CTdEQh13xP$?napQt)!;}q6uYTl zCf1b+kwXd6+>!Bs+jr z;|hlGbRnV#-UAJX>DJw)5I`n3hIkA`C z&^^jtTK_lK-}z(4;5B=U@2bf|rj*>9-{|gSgjDb>uYS;RZlStl8Uulgl?E|$<-0zm zNDNIgvsZ7_h8Mpy{g`K%2K&t}f1Cd8m zh0xpQYZ40JW%BG7XA;Wm`8cGR$q@bu?bk9zr@e>0ZCpnBx!s@n>Uk^CAtZvH`?k5l z4cDK0V6C=CH9f3I(`SQh=0QA{{TArT)J2|@y>!Pq&i}c!`Oy|u!ykgt^$zYGH*c#t zp|Uj67TwOU79Wj+R*%NHq1rs`%%ZqA3Tr$Mbs6LD1>H_#4b+dY{01~w&)u#*}6{^*S`D0S-td3 zljqQ7V|Aa*jBZjRfJ@k@NiN?{bn_JZST0b<>B6SWBlMEVPg5bV5QIGk*Rm zFlt!(%O=J&_o2@HZzaO1LQe<2jC;iW3dMU;yu5a+d+EJD$T0E*SK_jE!zQj*xHT&# zqbZAZc-$Dum!QU{?IuCSZS;lj`#xkmuAo;~rfQce?zkW7!(`RiJL3JNsxURC*IR}U zM?K>>E9_}pwx!@Vk(axu-KK)Cf8eqR&zGzj)8<)=K{CZ+r~9KR#Yyt}f^yVMg~N$f z9gm=aM+XaS!m($fnzUxeS<5KsTFTH#voyQ?WM8$`l&mL5UPr#xhYcw)8NYnJ#MJr8 zTB}_AzQrCw>2F>pescG^zm@%^cZ8N|?O8}&%Epf^!3b}LVPLSpF`=ZSboF}sW->BL zFsqDuqWoAGwEbO{Rd_=(X3fscD#}u(aTN-)evg<;H)+l{$*hZ;y>OT6{P*T8qlSS$t0(707U8(03-+KJacrgklTnB|Ep%^P|Nx83?;fa zO(b#G>0s&B*@n+fnh@(9X=kCKrt|xV*s__5FhxVTq#hRxrFCT2?xJ01zc;2jY`)DO zdy(}it?~%zw33R}tST^6-C}+fSJ2#3!y5dYa}O_@&9p|q(R-`cOGQOzkRS0X3+DK# z-UavItC9i~3w?Yj0%B%@*7s zDI?--Dr9};$!TOO?fc{SEF9v;`n0qv)}QEGMfGFMRpDUktu7vS8k24D%-bDP6m>yy zM{WY=#F;Az^H5+fAB4sgD~9jNJ5-?aEpZ6r zO1jLj9XI!%_d}@`j>;AICtTxFODy?Xjf>KT84OZ4E*Uq|I34Pa)5eb*{8V}>{hZ|> zv!CCWHg_p*hB0aA=u3`;MUXtDihKRsravEk@%kW-divmFMh6hzp)LhTu(u5!5a9)(wW zibn0ITV29=v-jwH@kz^?q=4!>>yG&Id#3?X7HhRKx_lU{OWrnP3yJ<`hRh?E!jy73 zO2}H0JUUUI6;9)&9=`p^rAt&_)Z$sakN2ZBZZJMcuh zfoAKH9-7wH%d_T84TGfxoB2Qt{r4qL8MMiPSlC*D=E70E&MvX_(cD@o8ibWOL!5gb zF3;XHLEhy46VL{X<#?KkQdspMTej@fiSD1zm4l6||075{L9q^733l;G1)phR>JlbT z)2!-&<-A@@gDAiluoGoxU&;ii-+OF?+bDta&yfbJf801ij!I{uG{QD7Fq7*4hQj?O zoq-P^8FNr4-cUd0$h}{YKf7y9>Bt8r4txI;d6M{O$8+YHeKTk6%NefH)*F~PaCfeY z!}Z?Zprd&OXA-XF1Y_T8(gS~@YTLqj)v#dNGWc~?o+qY%KK$RvD{w}s*#(|{F7ihP z6jcjG+n>#V%3g+kKpuSX9ZuUkXh#hPa2~fx8Xx0Owq$FMK_$spljku!YqAs6Y%lUe zJh$9G_dHMj`ycQ>K1)$DR&?Cca!o3Z;zXp=2uEv>s)5svbo5LFFe!v8dJ37pRaI4u zf}i_`T6Kky_fwDlKmSB#8tG55l2SxZk!5p!AmhGmblrJYo?cw{{2qQj@n)|2??v+O zA1)N7g0%f4+@}nYWoh2r>Cm)CuJ8EtrY5=QKg`D;f6gQkB7VX4K%$l~*x+6y2ZZDs zc9(SheY5*JJr{gFdN0)}R^IyQ?~Ca_G2k@@kr@=G_{~Km)Bnd* z{@Xuaqy->skw=^p+2 zV)&n5iQfk^vFVMWas9s!SxyQVvQO4+O8@EA`rCXQWrCUTaYXpk`o9m^Bp(>ET1@@^ z|HDkQfSE|%=af4AKMa{66L@J-5ZHfj@Beuw`rN@x95vtlaPvP0=--#{|69C&jN|`X zy#LxK|9>rBmLc~$|9T~a0`FoFpD(acgUVK8vmxp?cmLlP91Y@y5_}Jo@Pu3B(a7DQ zy=VThaV=pvTS>$5pZ7#!S{msWcoZ=B!S0A`tis00i3L2ShV*^oI=fGxaH~LCc25aQ zIuX{t-2wjX5j^1=3YDafjtMe&v7;3TnAI@h*_Y>lK&$HX>0W9_ULKD<$a@9M^l%fm zIk`M-ogCKK|NQDpE#ZUrxIWI5h$QfeX~kj^K#rXtm1x8X6p^8TQOs+`s$;Oy0(604 ziiu32fbACo&&)d6nc)VeghqMV)+?`7|MP)BQ;z;%XlK3zz5{wH-!YHmvFM6806y4Z zz~y8vq$nsTNMo)=v-XFxrfMy0d(CowgW8TVs zY;sWi^bd!Llr`9ubso#lfZ5#^N8m_zYOjBwtNMmq5F5@y|Nhk-2avAA4Gj9VJ}n6n z>1h17k=Uk0cp9O%KxCwQG3h3r)bi&vNPR;C`!|{7cTPj96P!Q20Kg3e2kjl{RL(Y0 zyFIlGF+A@Z2SmZRke)7l(9qJt=W06WH~Fh?CoVqLn*98re z)uLB_iI1dA=qvPZIlQPxR&8xDVQ}&I_;~!D>FD4( zlK8Fh6g{*Mb%g%<>IkOd>7hgXUftR`Vdhi9GrpUsgQe_NRf>?K=F#y%okTC4daS}! za|6FHMOc@N>ruE7*Z4=ZrN-ayd1|W@aS&e`A?VmzdxN5ethTla{1Pd!qRsz z%GWJ*lKO~`apH{c*;gn?yu|{v?Tq9M2|ce1@Xb>`Vk4gl6w^xXa~nuD|2~`gumU?4 z8S=H^FDZ>bI?o-Mq{gkHj1Ca*NanQc4%(6nQZ~RJsn)WneR3Svay0B^J5XypG$y=T z4s35jf!}F(*j=p7E6?N3B-SS#bqfyUu|QN?0U8zId3kw-iV{G7NKZ&Y65i1v!@duQ zr_^P@W6x=;Fg1NsPj#?WJ5(`x*VP{$8`~C$)CuC~hynA~p(7B7NqiVM33LDg{&S=q zAP0W@g$a9Q-G8fn#|8M_|It{18w)YHwR^~6nl1r>cPNk?bG`mKN^1;yywT1F9)e3A zmO$-jAOu{&NLICz8&_lT%NmM|-v-Yl?{|R?ED2Zh?s&zs{&WGa*y8uEqI^?9I?PJp zk2<<)t-0Sj*ESad%$lP`8XmRa6KV&ZJOv(56Q>Sz?pt%4 z904g}b_Ynwe&M_Q=HYx_4}mF_WWqFWF9pF3Xloc6kHguY=fH)k6VTi!fmH-~-On+4 zyT*Q|Y1Gq8mUUpF+6i|Pg-6kY@Z>_kS+9pXH!jSEdQ{Tsk_-p{+t&l&#t{k+xc2`7 zxaWa#T$acj6`kw#sPSgYOP zRa2oJUVRl`5ky*;tRcm^Kl>cyN7S~z_!L7VciNOFzZQ32fDLGC6YHaA?=!A@e&^Kc zrfwaUZygpkrD}5UJ2~Duyb|lRYV1G0$*KXOfD9*i`X0Qwrd}MIC5hzDL^|FXRCNT| zyYTRd>pd>IhI?VUMO`Jd@2vHnT#B3Q9YXsp`8fTvo3ecNXA*liT)D|d-bcm&21@^j z=qBi8)8dwV83C^KwP>5o@TI_Br`O0p#!Ufxd`kt09!?L{+?oFT`8Ezs z_BM0nng}@$DE&K-Szrnr5AvRlj9serpQ8!F&8^5C8gdJRHM*h$?!ZlX!hxUgg3XPG z1YAv4iF(}wr`yAp(d5w7j@LSbVNbeF&*72sQnE&XCc?=%(C@JYER3pO|AaUa?etnS z04Ks?m}O@e76ynp!iFmma+ctJezbdF^;L-&w0_Q`hQiwrG9qF+r2yfc9+7Xb7^A^# zij&X8TZZd}-nE6YbR!D%=$?c&?|xL;dGmVaAD#P2kj+dSy!06+tXS%J zVdLyw99lUsvEt$ds1stT+TYm{`iVhY>Da_!-AdtsNO87$>&QBDT*21Xv+6yIQ05f% zQodhH&0ke%JhHMMH0* z^k#HIOx7V%ey&7gRwZGt?EhYARpyF$o@&ELcsiI>LUKF58L5cr@chKwLq{7j!9QVraI zcEZ19NRIU2|B>TE7wPMkxC#~^|J#UHRc$d|@i*DGS2oq#%#I<@#tqh@O&MzuGVlH?;sumMLr?zNL1A4o7SVYbCjg#?}wZN+mPntk)m z!U8%(-S?R!>56xZc@t2qm2tXkYT39h8eebWI|-kIIW9ywqFUZr%ND0*BK3HzA6j`o z#by$ikwo{f85);W1SJW<-L7k$=if&2)Zmn9O76+ukt2PTi|)?D^UNaHOJnB3IVjI{ z=b^6uQJ!5=xGipM4R;onitS)c=E=jy2$9P3HAVyKU!2BJnFro;I#Dl^3}g{jHc>2w zUy^J;N^?H_nJALq8x#9<*KA}Uo8Q(c()5*BB zkHML=fM*_gLvgJ%UbxtR>A$(DrxM@6eur3pBUFHNvk0eo?pcNbmA>My>V1h^P3Qao z{qT3Spue0>x@l{ngHjCiy`#t zn{~6biFI0V%gI1Mnr+9*8v?3AVtqUh;GUe$jTe6cocdyzeP^tW(T5Hk&*cbH(rJ{6LcJd(b;Bvp&u|(8apf}(+2!jjl z^48q{>pl>d)*$4ja_h+-J*$9QZe=LE8kI(!lQ4>SUEX@wXrfH*w3b1QQH}L*u}xQv zj*AZ+o&ck5LP|s5qv04^TG1sh4qX)qZExCVL|M-C`enr~*dP7UA4KbF<9Ei>rpsyvGO~Tx>)X?E|4?C6fy1d&mnKw~_D$Dza@TF;6Fl5L* z<5DSarN{BkGEsTla{k|h0h37q(3kovvXWh#u}zMTU>rs57E71B94RtahrWfl)qHo= zGvpq_iIm1=*j;8O!yGLWz-?dapFCSAgvLU}b zOJeAG8^eo_vC$-kW*PHR|4NP~tN2TQQO3K9ZbYsimns|>{h#%4JU@VjUWI9)1EKT= z1_DY@1XcvMN)*5Ja5S_bSjtX1=F>Onn6G!N;=84y0x6I*x?;hao@N>{*a~MP2^L1& zWa2`^Liz@eJoOo~6b?#8&%z@7<7bmbY=1t_(zaU=LC5UKU{O*$YnyH^MS;c zftfYo5HF2%6!_FnJX7tewsNuMDDZfEzTUeQE-gYp6;AEeV9@m?+h6wnKz9hLC++;< zuD`)Q<-54SfLP-p(nC%NL z?zJJ_!%MiR#39@}5u@(G;`l+269o0_jU#uwwuY@C_u$4i;2qKC$fhSQMOc8ZK7S89N3G5ZquQ(fFgM#;w1 zc0PSD!&y4#wA@h;ipmj-Td@-5f3s1&PG)Hj$z?Dk)a2Ipy_tjL z>Xn-^t?)`qUmo^jtXXRI6x=Oi@C~-tcgC4^FGXR}Pz&MK{l0d;CvCR7M)F`&m;ot> zu!CdK8R?ON&EBt{KyJ)mBH5Z9i4RgWcJ7pL>e3MiUi-!UT>_;Y9$+N=WmBCG3np>$ z9XA3EjrAn$C%yTY>N27G=n2wRI6SbKRdDXa=sYHrh>keW4-?Ytxb3;n9VLmT#nE9w z`=n^)8mR8@6oMs45XsgFg1AeMTL`WnY{RRn`Ml4dn>4gmd5*RkvEux#OTv!{tL%#& zf^iY^`dg;Glr4WgrdRHPUF!P;^KTAuC|Fv*K87BP{03<@Qlu_+tsEw_U;GQ~u2r~$ zfKD44$Vhx2^9a|}=}WlB$}|<`hgqj{V82`uXlZVY*NlM&tw#x^gb;C!%wZ8%3N4HJ5RV2oB!%#k$m+gz z+ZuXcC#P@1=A$GTsiW)g3ZAb&=3m+|vO@V+iiVnSrJeS}Fl2(NWs_(<{35*cy}z`r zLYy%=Rx+DNW9U~7c0Ein-;pG7@~pz`q}7sZ*<3ft=m%)Hm`tDsxokJ_%t+qI%rXh0 ziR7gkay11lNvUTm&Jj2yvgBPX!vt|8hfOz2R6c8nKSCHBWywQ?I403laz@?K7-*=1 z{pWe7^-E7O1>JLhMxS>M=*=e;E8eIyRIom@%dBP0TE&?W$DZ~q2v=6p?T1}hQ6%K3 zL`3?KT;0DQXo!QP*SxOA`0L!DK@_H2@g;9;%7?;9WJ>zI)(Vk+}zI>pH-|VNmPy*V}M&odI{*aP0cY`MbyIT ze#46+JHPSecq7EB_yJD!LMHeLSF3iXo)Qp*L+lp^16X}4eg?A)f7QY5z|6yAXRa)e z8G0p1wgr8HFfLVkFcsD>ggNaa1+j?5;ORPUz{Iaa=@@5Ad*;>B#jMI*FE@M;E`&zS z<;9Tik;V1m!Umaok%j4a93i0$O#s-{{N5a+8D$ZVgkIqVRp63Kn)?VHb`d-wHtK>lWIZmTA3=x~Ha;-VecTu!Yf7>w ztwBd~2T#mIa?KB4FK}_4-HOwqo7z1T9%NoD%dXzbj9zg?r{TcSX}r6U=9$B}YJr27 z*fua7Nx+=0-_v5n1Mx}~LPvOHe1Rtvw~|zom$#es(7_nk?>95nQID@ll%hFL^twkx zrVk*V2696SB?;yQJIIL*{|-5jBR7@HQIoc_lKspWRe$x85f;#*A0d$kHPI&wsgtsx@B8ZFt0kWE)Q>K@vYVsR%Nt~TJ7sYJfd^TS*^h5PxM$h0P!ZWbfFN^<^M9v>&oVm$0?PA{jerD2cn!?Yvl>Se>Uxi0w?(P4Dk@%$k27xP z;$ZG>no1cbsR|t~FWQMl@&j>)ZPG#M94<^g=i0Y>6HDuBJ@L}@qKBZX!R%|7xB3n=9S4xr6okw0-pVcbg%_ zGwhAko!3i%+I*+mB-v^eA77mQCpX*ie zQ7gXqFewi0{HJMR``1*%p0|;5lE^S;s-fuj8{z@e$m|6 zE+m8c`IgtRlH5xUflWUzt8iGZ`MP+|))?cnP+|Hf?7|RVk=Do5G0oy8=W8O~A$&dU z-TdBPU@b=d5AZ7Vf66M9^JA1&OuN4YqX7B*`{E2Rdk*79xRJ&(v(Q!HYVXVA^tGaGIRE3gt zR$}VKCl7y9^;L!F&tN$urTY!c}#*ZK1jnGTSg13ijvMKRrqoIo9$Lomgjti-N0O*+es;B zxqCOGO)*{_j!|%~)~Fd5vMr!%2=QalG|bv|>hkzl zCK2Mh6|{nAZ}D@h!4H$fp@tE-aDzNVi|ps-p;0X=PC1|jF`n3L1MW0hK$gD|OFa8N zt8LmdMC=6gT1(i=QzJAkBwS&Mk#SJGk3CLwZvOGe}=7HYhRYYsg5#aqrD6x=XzYOoOPp(KfL#{uEl^(F& z@MBTjRveO(th7YBGAD9Qj}yD;uzOn?ct#- z-P=s-j3Lyyai9deqj74>p!fmR;6J~(!vliOQ zCojJg^wtI0)Vl%s!^DArm_QVk0IcU?$Slvdk&V1l`RZ^)2X{8>+iK6Za1kM>!qXFoX>Oj_YDP-i z1Jv@wLmT)pP5OA=# zzkEC~U0VeV=l&ABAp?3r>OM9C6eJyu-{_7y zf8ZXFzP}Osd`79C^mmhi&HgkJ+%ls(?YoMuW?Y?x?AKezEGNHP$-AV)TB@_=xdMJ5XcfFLKF?2%csq7|DJBL*Nl1HoW3x63?P`7Yq$$$CeYTe(UBv7&I_(UBlmoo9-*ygl=0ptApw4M4HhCJw-Qd2jC5f>BKRU%*$LU?5>xrja?+Rl!3hp1H|6@NU z5h6BoJaz8R>i-O^2Oo}LHknNg^;yyDf!ydYCU}&f7dBBLhCkaw&Sj`bIGJWSDnBaM z0k>H6>otmzu1M^ec?3_5II>Bn+uo0Y`NSA|--U%JVO%+yMtiS?g-xB6TXjn`41&{s zuRNnpq*m)W)sQ$Pi?1F}c?pUF=4_M<4ins>K zFUbNaaCOFiRcs-J$gpV3A(LDixU&T}{AY@u*1{0t$dh{W9(LpNS*!Ku%5wXBJX~m=aKTm4i zVz!S3`y4sDk`vc3DUXuFU<+$nZ>sRD2GPJg=EB0)@7^Yzbu*b# zvz}~}Fx4p;!ND`rJ=YwU%xLYc-U5i;m9|&cw^vfax3OeE4ZrIXt`tjTd=Hv(WEJ6? zex($w&*j$bH^cTMzI$}XxX7ehSVsH!^TMI-)G>kp+I^$E)(hpi{mO?J-6^R2DXJBc_-c?a103Qwrcrr5d3pZ{X6KePTbIzeXko(jc|_@ zk$;T7TfdLIqFJ6|^QPKZW$2YqOXKKlX|c+%yCOM!cu5q$dTfU5aMphGyp ziEq8~=}#bcVogE&#?5{GSgG&vZt^isMUl6A8Q%!7_hWwx#?!K2UWCV=k;i9`ZUEto zT3*ECB0KjhV_Kw|k}M-oXM!*CoI9-vMrSkM7B8R|!$e~AEf!L_|K!+rBu?N=aR}+1 zw{A#}FsEU-D}e{?Lw)LBd6J6K3>!IEQ2Yb+Gh?Z zD$y7p{ptHw{B0*00;YMoOM)%W@EO?0*7Bg=u+{`=#O6Q%uNF3q+v8O(5SAhKf5CPc&8L=(s|kt1wl%WpMSp&_st)y&ba)U%NE&GMmKHEEU` z2%yC91azM!2JKLKng3}D@cwVaI#!b1dHCN6hl^Hp@-G5lu+1?=OJ)UreLE6_{1Xsf z=-A?R=q-65Leti?CH4Qoixpu%I zA@k!^pmR`wPRsg{WLnBkPx0Vscc6hR>u;o1({VvIp~H7{6e*6Cha5Uq)y@Id_NV$0 zBH@_*?xA`u?v*|zzr5Pp%c(YBDlFf)+m~<3EO&%Nr?GuYcXMCf?Fe&#^szkMEh%<+ z9NlrfZwPN0O6Tw0`+Ri|g%2DUWY6P)cKyQ>iG%ZhrY9{^+!2>u^PvaWk!L?*on-gg z($F+iHYPDSu9>~@66u=f&+q&8#np1Gzvq_Znw{4Wr+dbQ|EMPC`~u@huB{E4{GKh$ z1gD39lqF4*qHQ%!NtLK&KfP|z>5LfyB@|d8*hrrBxH*HeC3mgVa}0KcIB(yGopc7j zr{UpMI1<)&8wrK7dq`;h{8dh#otX*Oy~)Qj!qbcAKUlRj_;KWb_x19q5yaC$XrwDM zv^qT@j4g%NTXf(u^hj8DajkPN3~c-?pxS#-G1&oX5AR!sYihdn2;HEs zLo5!RrI;R+E?bcom3n#zz(0@J;pjes4@LdkRNs7d@#k$>e zM0QgdT^Kh;62W%sb!hfnMPU$BB$=cljWvr%E&?b|G@1Y>@?-+i2*7Gw+Ke zRFb(rZQ=@z;I>=!OuUSQCTw|#Ai73PNqovMCwzCqVQy|&l=tbd3;ePNng2I9)qc)T z2uuOi_0STqkAGk*l#J%aSO`1`rtPE~lHLk6ds_k#*t~h2u??3UjRsoXiZiwl04W9v z_pCGOTM#=o8kq8>tMDD}YgL#!MX!c85Lq|}3gdnvU}DqfUTm!BhvY#~wR=aY{eHbQ zumOjT?Qwwgg&WeRU#c$(lofzELauW|MX`QwmF02-G$8)djizM709J&%MTaU9az)}B zN~KlMHQb!mZm?DJ%e>iig@I(=s>cJHM~S+?rHzGba3xwg^V4iu`M3yA+7Ef~_?U)_ zZ!~zqQ7C7N_x)&N=!4o|^V#!%Og3;DAo*iSM`4!z{xX^Sj1WH+BO8t&HM9BdIlzs!1G4Y~koQ zVGit4&Un-Q-SlZo=-lBNH2oQR6~HrBdf4`T=)HX0UVJI9Pf$>579BL@;6ce$o@3R* zU@3svqj5U0v5`pHHs89|LyG6{Flgz_=jP?ToxELugL(a-S9_o4Bp|fcjek4!Zfztp zy=?sQTu>Mp{lK&lKv8@mFIO0M2Y;U&0?3`Wp|5Qu>RSJoCynXWKNG&cgL5 zr1WIkN{qh3VkSlEe7xxeTxqr*qi%y%yY4Mx5E~n5if#1X36Ibh|8xQX#|}BShXB0# z$1&)j349XAGcu-CV-cH<7&M$)JpHRG;n4z>lR#ikA-YB~b=hJ^N?b=NBb~w^AELGw zI&vK&@Yu0E$gML|{z6TOk9y2qC?tpUOTKo}U1g#$l0vhiuWy;DMo#f>DeqDjJJMec z>V)QbjX&aPF){zLWbpo{@3NNNV%K&;QZY;9maX$@v&Xd(1-#Oa70A6a5u|5&gV9@vWypFXer~uo+<*Ns!&a-v zc9?x^U~g-!!j9)?8*GI1S9`?9o_&AJNy?BOrim20{deEpke&KH=yTsk$(IALM= zzy)!(Vcuvy?RaHVvmh1eLY`)ToI@6-Fqp63`Ij~N^MwE7hX1?*cI?rZl;^c%rm%Q2 z1zA3wPpuBT<)BK$nUUW-Xl}Sh)MqfN``=- z17NR-+d-$IUYb+{l6adBrO{K|^htdLxOLU?jZaD*$ex-0oB8~DIdLJxO#I24Ed)L2S;a^{+3d61k-G3`f z1iZ70a#f5TK{`D>z3crKp}zWEG^5F#$_S!={mlP)RpCK}1^;8XSSW`R_+JGEazjTS zqV#^pcPqSY9WFM3f12cf7+=ymjOhgcwb4DBwHtYX=*s9`L@9DmI@NjZ|6YLfL``}zaJ@roHb3{^ciL${vEkuz+}V~HRV+N*Kh5ZrSvny>n!Y!AY7PQTx5c2 zU;__;i46`i%l~{Z6(8O)WYSD6{lmXt0RP8c4ZB{#8fo?cqNWT$E1L>fH{%5NEp8Ag zw^Xe5-v-l>{~6ewxx2N)1pd1*;3D_~^gzX!G)eCNF-vY5*dvg%BQ^iu2ZSJH2>b*j zQdUv?Z3!xwFM1*(zuS@dx$^CcJYKTKUDiAhEE`j;~F^eca5m1k+xOm`JR?3RB z*5HN+TDcXd_Ik6X77{z*PEvb4wSO#NorgkE;FzJf4{p?p36PW)QcUdaW%Ugi-*pn2 zTAW(n0`XE@f$xh>pSJ@Bl9UE}$egCVzVZFLd;7ymmBvjFLp~yhIDJRF$;Q&O&zl8U*Z!Q+PY}c?@elv;t^Z*PdtSg1YEzCj03^pv zSY%Y9+o;^s)RbFWtH#I2_YshXa5|{$9r(h3WYLKpt&+@3IKpJmrVBcaFd%Br$ROXC znw~a;F9XuOdiv0H!a<bRLM8yF@jB^$k!cYgaCIEif1XQ0A05L?_rsig5 z1Ar2WfBoXqs3^PnNE&vqsRzl?86phWv}D-eP55(gUUN{CxEJ}{nht&BC~`HP{_rtu(Y>N z1WF?`d8OR|U51QWs=Bk+e$a>W0%82?4{j$f4S>!4YhvqxX%%pTB+JnPkk2rU@G5{3 zJ!lk4PNOiq70^Nz79<7CqdXrlqg=a10;pvFVKV>rWZ7sUU^!%oR)6frxfwDSqRzaX zEU+?L^*Q#+Ommsmf_!mn5jPu3qM8a)ws>3wh|QAD07qtK6LATs>3a>3D!-vL=#F+C zxzgbQ?T&1n*28EA;E>2DVMRwV&^63KK<#Pkpc>4rKt*WN;M0w-(Fbs?RTzLOk2B#^HZ!0R z|5toQ^`z-Z7)Ps<0Layz1he)nEMIa@Y|=|8Bk3R-kCMMEeSA26tTPW%W%cNn`#60t z2RT{q2Bbt1lMExgj{w~+2q5jH+16@9@MA>BL?!1#8+416N8tyIJ(n@o;t3!ktan8f z7X2LHq-hx3Ob4J7g=xMIH?G-Qmo3|Z<*%Nf+1}`qqS#hP`y7}!{X`@r0t4(UHDFw9 zxCj1^K&r|L0M^z=k?#N^roFc1m*NGVdml(w1c}&5s{4m&!{#YBZne3qH_{&|f)yZACvlI@vi5jG#0(z?S zg+-pCY6EDuTdHdS4~7YPA4ZEhs9wT!PN(-Djsrs#vDL-LJF~UlsrHq;C3a`(??q)r zgI@+u6>BUAXw(}pvK>zyj@V!vI2#{?*$6xqSq65->NT0B;`etgKEs?6U>Ng(#APy- z=+`!tT(9N?eC-5y)5acFk%Z~SDnk4|l)gku74)i`69(25eFev8EL&R)af+ZS z0t(dnm=dgeyTA93K273tDVl3iGxTSVNnET@Kb-@ErY%-4+6``21R7ZC3%meyo`?e9 zCjL6zp%Vph2~rk`IV%V~=?cCA*5P#%fGq_h;)fHzSo>0rdJ}1uYFqb4r+#CC+oQU+ zKJAB{qvrK5TA>f?053#GA7i^<;f#0~*4+Fu@o{@FSglw+{xnB`fs(OsI$_M+=K!E; zAmW4KAxQ-kN3gAa5&4y)ck*Wj^1nUu|K+qH;zxK}u-m+HU-kwHeuOIV0%+++*=;

    0FnI;m1YTbku69GAJ=|_dfFi~WXLujlGmvgt^7(Xq+f?0E*Q4;r1E$CCU2}&7 zh&g6XgChZM$l;w3P!tt`8h0=^=yy2*@O`ZpNI^T|6jf|BeWPDH-Iout-Bq$<8bJVK za-KWr8~%nsfl?;RK`mNyHDxkZLW2&71G#~XI#_AEW&N~S_$lxktp0)LHl{>>@b;Yr;QKm(7lgxEb2 z6+mT9=t!>2g6BkqyoMYOu+`mnX zIJ{*m>NdX!T$s=}q+1Bb6s}|W$p0?#tn<+0)d)a>dIi*|pe_fTfV+mM?EufGLKN%7 z(TeGo!smt1`Ekoiw1g{Vrc4^I1OS9fNE4vQ zn1Afx8QjvBi5e+hMvRSnkD4F2(I5qbhp}kTD_BxrYS38o7E2l(O$p)Ie}9@fZYdpr z+LwgyIaI-pqLTDkI~|#bAL`2aFD3z19{!p%Hsp-78JHIfWBJ`^;Id$^T2>sUTN5n- z#r?016cqy#z`#yy2o=Z>R9$rPpKM~e{>?PUhlyTjC03h;aRn67%jzS4WsCQaXddD! zm;II8b#~BlZo{!Q5Ovmrsmm6)F6hOyByi8`{JSqg|NP}yxf(^D^cu_`cq7_z$I(fL zFzuAm`tBIfR>9o+K_vz+J6&hCWujB7u@thS$zeT1++z65Hank$Kz+pTs(M2bil z)(HQrM}Yuu63_wb>*qZ>0N^2Gp9QqAOxJLSDG|74i8xbdt1znvS(=f>V%DB}e_jBB z0l>N9QXZ)q0Lw$Jku7Ei>|SlaC&ljUq0`zYtzCQ00$!Sy@!jZpsO*t|P-lHz9XHyU zyJ=825@wfc{X{mg{~REZQEc^jmKu~}*|k-JTrld;36tl@N7;-h{LMQQ zReH>ZDRAP4(#Rk)mtbdttgP#!Qh|i7jQi+w+zp+u@}6)FP;Cy1dWcYtl|?hst2D{tz>KUAbvEPwYyKTU5iyy2q9-?b%*^?EvP zBpjbnc3Y4tt;nqByN$j9K$CZn0W^iQ<3TKa1C?dDVKAf!IBKw7Q9Tg?bfGr^`Yw+x zeb5mg9-i(E_$`Tm+^WgD>~Cl}JMG9-io9ER$-=&EDDAw}m_MiQ6!{f?7ZdDC2b6ls z68s~2pDjc_VaJCQMrk9)y8pYObbLn6t>&R5Ma%B^+^;|hFTB5N?|YXja5JfraOO$K zo$bv0!bbQGS;4PhZ*|LMt@G>U<)uOq2nx+#J2_!PP_~;@v@eM&*f4*;1e{{852R$# zev-HZ5J$z>zG}mUAziiDhTb_V-s5~6y9Vb? zV)CV>B}gCzw4-iUr@gSTj3(1zNMQpXEf#=$KKL0sJ><6#c{>iRa%1kzO@)-Z5y&A6lNH{2&&o? zf5}n)b)TKB!Ilmv#F9cUecd+cw$b^TKq(YA9}2XJO@z5pb$XNQ-4V=u3m1Zb^Wdfq z2^EI^T)cT{P5=JI$RjNH0{WYe2LOen(xR*DM!ff$jo2gCTx4Lu%UN;#tEQQLfQzoB z=H=gT0#^(ZfMRJ_g*WNF(E=^2l~!RU+Lf|x$6FitTs5z7LA2dtg@=G5Mdk4k2Vt~7 zB$7ye_+_`bwqrn|mLpqLLnBcD5X`6o!juJd*y`SG!n!)Pj7o()9fl=iJtk6@KW@Av z$wkgyxhQj+n~kW$^I5t1m&2Aw1py*DvUusD)iNGU-}jU0-#8*7hVs~j`9$$x`(DmU zlpY(ve~bmft1%~^X)W{qW6%}9bM9yT!Rs>!PZJ&!`1Lkhwovc7v%S3_RSN-sxranj72%N(9+MY-Z|#3eEu_@?bay$~X_@>2Em}l3?N9 zH(+tu0a`~-TDe_oA%c#rs5^r0YxBUVF{D+?_xY+xXL`PklhpVdD=Y%y|RMm~ZVn(>_e$VjG0uB!F=(-3Ey- zPfBIJgf7y#SKhB6315rypCJT*y?=Am;Tv-4GisF8*gonGZp#_meuar)Z&dYJB~Ou( zAZ=&*ws`~oX##NK4Yg=ZmYO9n>(E$GR;Up~bQAT$FAN5C?BSQY2ak!JeJ5;1w$>dG z)t?*3I^-Mzik>&4?7ed=wcSAi(E`mAD8u(#)k-9wno$!h-5S+ z|L_X==SGf!=raMPK^ zAr7!6=&jcluo6EjnC3je;9#+nO8`b#9o2_RjqM8r z?CjiMBwmC6WRy;&{Mr;KJ~F*s|4h9JWF9LW6!GSj(17foKd(;kON*YYAN|vyV*o+1 zZIKX(kFGaK-}qf=Mg;w{j}f863rVZ@oDx#oumpWrDl%IsJU&-YDHynIqf^f(ggGw% z#$-F1C@Z{gQ13}vCHVLYFj&@i7pJys_dA`xckk}+Gnx{M%Gh=IcPnt(j@oFm`TDmU z*IXs5PrynpbJNgVfGUgav7uoxhWQVTCy4qgE_$ml?STwro3h5=B+Vggbe=5$jKV2O zNFvZSYDHp8a^xXJrygzOWBm51FAw0GxS6XpS68dB0HU!vY?8&OYovrazhg%Z>sR!{ zd+T&8cqkh>RZ%kp3)8`tPCL96+;-UV$ZzXNy}gZoyv7vGIRx}vVqm}r7Pc!4 zxwYL0T?G#p2wl)GNMb3x-D9dda{kzffxs;QFLdc)2K&8H!EjsZ(t$AtN1U;s((zY zjR1o8*imIKMRhcd`EZIQ+KsnJGT3}cLDBiDXYgjWK)|HuxyP=Yfz`shNs3gD$J9avx7A9zQIfgzzMp;lbmSb5M&pPQWW6rY7Hp*O z@Z4fFu-sL<(h4D1xEn}u-HWl52SJC|b> zi3ZX$h5~$(-BFN8l3FyI#TP44!0BU+0Se<{UxRPPt#`$!!}&ri?~eG0|m1j)efFLtWnrt3=-}l zzt=?g^*dnN)^LNj{?G_#k&GvNeqn(TRy=2W-@}n~;vxi3gg}*)wk%MkV@jmc2L#tX zuSKytS%U;EZVfdJvM{*wPX)5l{hrt)>bbr_rw`&wg25RuVaN$dV+90xEGw$(p9;xu zmO%$bPnQJjZDjh0Rfy_#769;5&OmW&NUu~xx%rw^XaIqH$mDDgyMMd>h=(tiXE48M+UdKSvFFM;k z6Ug4sAPDc5RLhf&Z$xPviBodv_dQzyb}k|=_y_i|LqgWb=Rw}YzXrh!f>K3FOIM3$ zgmWhKdcn4Ei`Q~7!hcPq|8vy=^6hJQAq~?9k5H?|Mejjoh}e>1X?0<67umF>G>@B? z&`Ih+&l{rmWG>?d0e~dkiLwZ~l%iC+Y8jfl&*bMe8Bgk@fnkd`{TpS)sfU<=dI?>` zNTWg8Ys9()9^1AiE9&sN>GX`V(iA_Ukvpd@EiM==X}Ccp;%j=KS#1{OAoQY>u10dV z963k-EM+EXl=$Zvz-E?Dl79paw`v9FiH&F}6aWYzFMI}u4HqB&0Y16??JXK%q(ie| z_)}q^;V6x-&nC7?H-O>zm<}@6O^UjNj72f5QT~;U@RvPa(!aw>Z_x_?zcyI}@3w(0 zJ0bA=Ae*^P(*o^+>HG%DojJkhg?YAJAwlBOR-P4wf;YuRf!jlxgtAXTI_OSn%J@_K zT)q(KM6BNioTY<61s_!?xu=E9wQ90(9lX~}^RnqO%n3UrE0#_9bA+J>`k}?WWeh*N zfEDudGhz-)fa+hP9rp{M~YHIfr8!~jT@<^bw^+#uvE!XGgMH<2!7z*0|teg;b* z0WmLht2bEXL2Q?MXnQD`8HwUkmcYrXxYI9QrC?QtcOQrdsBCVKFxx7$sJ znM5~v*)Z~_Yj$q;?Ch;+*aJG=v)qCLT1-EiQC0TK7^{a2i%LJudHLL0nfAiTn^4dY z`!Dxz%b+O|viAY8*X)%h_V#V#OiqENQqJvEC~BkAs1$O(gBk|qg?yWuRp|~bBsFD) zUTyM4YQl!WKc4rt%Pe4SZ2Q$=V)EE9_w?0!TBeU2#`0xi;`c+a#GLDg9faxV`Ht+~_$(EC<#%|k6|7J-32quuqjL-s$g}5odlWWqPR$dN`=6$H8!NjdcWJ8bg0%quyvL+bJLYs+Go1z$w?Z- zW)>G;F}EU?>T-I8rV0`L38I5zQ==-w?UtF!WUqRH=qO0zK zlQHxuUEA*@Y~(FCf3YI2M^ReE_xPx8y%0Pp9BAn)=@cWH5+1cj+P7<8s;fIuNL9d< zZZPpSQpy~TAO+DsC-*Q?PL+Bu(-1r`-v+1EQlm5d=}JzgTG1lHh(W&sYE?0MTc0|` zQqBK$lHrs~41Mg^L1v3(!)5$~6h%Vk9+xtmB0}0%Rc33eZBTz^%s1MMH>;`M5$D}~ zh%bwqzapi|uO{9R<`mlJ30qn|E*t9*Ckdfh%Jcen&qD39Mi;8pgJsdjf3QZ>`SjC; zE8v$;I>sOlf4Qu~-caF*clj!;A=kvN$d$4NwWGgw@Io3*O7Ds z23uL?0$1OH!NaxAtidkpMrV-8nps*_OC&x(yOT#2I~$syV0p2Ab#XDc$7OvHm_=WA zqCMSG-A8>&#^T+;reypoCAKpi(^ar$Ln>}0d(H2<{o&$67bjS!p_c-#2X~}$&a&V| zty1Cp3iTXvD#nW%Y|YJ2jm-pio)!!@WtinwyK1*v;KqfCiyNir5#M};i5n$u2lbpQ z_lwzm()J9_EUNSabtj0+&B2_r4YqxFTRD|`&TxhMF+6=u?&7e0IvSb79irFJEtG%; z!!gqWxguXQwLzucYZF=`5kb%o2pv#)9aM&vnq$?`Cj)(YM860F`ddJDRd!Ch!q6Xt zw`d6})+lGW*~nr7K5LXExs+(2|CHKH>~!`x5}J zRYptvGHM>y0AkvNesjTnEm#(@&$0J~xtJwqLE5oq{7cT<9@PF-Sb&)$>6d8#tafpe zb(8$dA**T3Syi-OQPw;I^DWnIz|GlV045ZwEY-bEWaME*+A|!qnQWdgFd>&PIOMUA zyTuPNs!qd(u#xGJCp1eLY7yu%>*pD4ITJti>FZ)#dOaUdv*ZxWx#Cfamp>980-6f) zSC3*f=bm+jysHoFcGvI5m6!0XE$n(#xF)&~bLv-Ch#e40GEKM^MOmZ-G`wQzOJ{tx zIa7=VQI$cV?G9Zo4%|8F$&{fvELFe+L9g608Nf@vncq-s6KfRg3zm<(J7si1tEX;! zP`3D*Z()mNyN8LqgPxmiN}mSP<-9)1L|c8F)5vRbm>;L(SG0}YX0}Ka+;;1WRR2Y| z$?6k~qU2sNYVp8aI_|r&H152GIDVCj`ZP5qFMG6HBW2YO-S^fsoWQ-}m%wwnAcGkeNNdk&TQkq=zixfOPyW=j-ZZdN5m4lFk`z%P;HgUeKc67x8|_o>WFB*~;at z*);}NS#_tXYVR@*yj7!W6-UXQypCePJ37SCGNSl!ofVit!>LPToNqp58@Ic6lt7-G zf0=Q+{wS|hzj%rqIxL3dtK4JgoOgaA({qzYw#%CDDIQ3-(537dwtSYB@$C4-)zdpH z(4TxmAS>HOF=9B_vHq+x+TAcKh0@byr(t?@F-tF_Qjzcsj|ZXZHNm?NUDwma2ijaE zYInUNnGZrW+}bS<`uC6wRPvq}Txsov)Lg0k23uLt46Qa@ApF|ym$COuN6`!kYtusX z$EUayI2koCO)afw%f@S0yCCWL!R1K@p^k@1;xAM(urd4@6R zv?=$Zrazug3y8{Z*`tDY%|ljP@88H^n&$Nfe|WGv@?K<#z`_LJm=2&{ll{D8@(j&J z?(uhQ7a()o2jD1-0OO-f7YK7qJL%aY3=aWOlsemcKrp31f#xwbR>Y7UaALQ3kc=kl z+b)>-Ijq(?gU8FPwIT>v6JSUg#2(0tUWy{tK=nP+0DxB=hE5yZ3Dup8tLy=_C0y4+ zXUX6lDSrNVi(dE%fCY>g{*xLwHm6D9o+&&Ni)^kWrqrTyVg1$$5b1me0bt(6k(oW}AxjK5E zi!~~w0*5JyhJ68Lze4LkztXdm%?!>tBl2V=q7qS{ok(h|B*DLiPdM(Q^!7VC8t>sB-gYcgU9*sjQCkp52 z(m6Ip22bM~d#m%#jJ4l!lBdk5^03MIWO!QHj3W;B=ri_;WGj(;q8hnm4$33l-g3?J ztu-%jAx#-;V%%`&YdjQKx~v#5zbdz)u9!IZkm*TEehthbyeT_NmC zmGM0PylLVKg1(mECR4?_7>h$WL>G(aFG~~_@@cYT!iBH1EJEsDPo5-0; z(llc_AI*UsQtpIO$~TI3D$DPpb0vbf$)5G!cKOS?ecWoz?wJW5li9AZoc6tL% z#J?ko%h5>CL1b(d&Sd@j{YW9X&(^r%BHaw<3%5)nzccmcx}&gqONaJt4bi=bI8*SB z`R;y6j{%-HlG3U)PG)fzVrFhi!h9B(pX4u!xgqnTPr2GEi{QwXTS2U6eC)E8y$<&P z&in4rO?n}D9$DyCjmV-R`h5aIWgX`FK85RgyooS;95Q*plY3ee5t5G?ppV^zB_WPl zspL4!0zJrZJq4~)PHV;`88#-JL_alqdO&WI<|pZ|TJI9D6=FiqQ-9f;-}+P;c;CO+ zqNbc50V*b(w!yzn&7+T@E!XkjBZ|x4QBMxxtAQqrgH@)3Hi|sm%U9z_R;kLnmN`(G z%EEg9Z(Qc2+1c3i+8xg;Vt%{eik&SFkPBxYSqV~=MX6c+I}oG*x7J)z@6(tB zP2_jq?^6+MsKbT2L|g5`cGY#icpZVZd5vVwLvJ9!R-^DYuCu~~+l0~{cN#!6tMbU~ z)uQMF(j`JW5{s}n%pQTLkLc~vwX;yi4H_w{*ii^M3AExgG}<6&+q+nBgJ(J9E7yL< zh=#L5QTBK)+A-6*Jc)_K6b{dMYQAzDDyi~~ik^QUGb!IItAel$mM^=qrFCCa3qrKC zu@q+U8|eg3C&o>T#hlmiDPm_bXP);>72#ia-M`fDHmr)rDe{*6bZA@XFLP85-ptYf z6VAErGjEL&zOcD7oLGi_kMd~FMPHBp869wvlTklsRWlNJ89QIuH+dN#Z)-A`H2FK7 zwWhU64QF1_)`Gyo^ZG`DpFntr^mK@b}Dzcw>t8_B|4flM&`ed~v;^%PMh|B!R59?o( zY>wQzgKzDXOO*%)=lJOC`7iJ?o3@|h%)ijVn5&Drc$c=yxf&#r?N!S1#Tx0@++I$b zpi_B18THe}3RFQe@9mH1kZOtVsF7F?7X0>h$wdKQ^bbv-WlvC<6ZvVPg!_B%Vy2TX z$3mVdC~XwPB5C&^wl0VXqdnBPyzt@_E|aksys2@El2p~}G2T-2R9jpw(z)O|=jv0D zQ}6Su3%1*u_>MGaRVo|(yVjuh3GNQwUG|%L)kaGab-URgA%#{HAGjltVwZ3!7Z|XMrEh`c(?rX=h5q{8)B^2mMV(|~=SE{fChx*#k-ACe{-TZr^K%J9$RbVB6(_ z*Bx*q^McnM`$NjLDt?FXm$s@YF<^q16!nI|U6NId8wC3idh03Ya-C-P-z)s`10a?n z)>MOZxlH3#-TKMxLe*JCoBebz z6D91P+iF@FsJ?9=-GwFE-j;LeIoH(E+NIao{!$yksdYQJ@1d>C>Zo{DW9!FgAILKi zm(SUw-~Z&0;Absh9`h2)GOfI9L&`ngPL#>9%HgU~pkO*T^H8Z5B#2c3kGp=X1N8q4 zOU_rr45%6VdV=^~>N;vXZX!BD3b;RKJimYMLFcQduk?@?>_k_nVoOAVLGAt_lO~B{ zPgIfKDYjIHq_n6#RHORr?U8FUi6CgI(^=T9`OupobE!QSkoqb`jt@hunDMVcCTj+Z>iAM^lIQx1W&4 zfIg!A0f=Z@{pK0dhrtQ-m_kl|#HYAqD1+-yMJoc!$JPv5b|~f@M#)5pB(yg%LFZvO z#5RKAe57il^1i#ZZ$xXeRoTqo3G;SG*>KtSLO|!-j6cjGcOD|lOXyO5_s^?TD)1t% zy*Baqpv{`*_%U)U4UlKK>$49GnEVc3NTc`4{yo*`lZ|@WtEPC#ZgK8QE@jDmItQgV zD)xM4?S&jv)&m|k6#u^Bs9@P2bDSnO8U)%l>>p<_A#$7+X?1l@EZUtlrKNi91A5u# zmSb^bSc#{oAk$9GL2@31ItFjCYYoofVTK(Qo6?fkOah(9nAeyE{vOeQ|6D8bUBu5s)Sn~8Zwk7j+3Gf`gAK1MJ{S4^dVO$I z767f&>AHx3+Nsfvo9KQd*(Fd3ezxK2$m$KO2TTZVO6OwX2F zUZYQVQE|d{^3L)S@plx!aW&7Caux;M@IiW(-Y% zuIH8k^X_p5KVHWb)>(q$W?48;;O@S8WLjC_t2!eYeOvz4L*i+5aq?m1)q9OZp}S)| zZVz?hNVNf=Lnk`x%bn^N&>@UUSf^<<++s<*kf88;-L?rPmX_ z(I7{T|H>v6d^M0`Kyi!Il-Js>lkZZRuq~fyrIRiMowV{08C)pcp2MI2rqM5_55du@ zwTeGAwf^vk&NST0^zpnNh_uM7KVt)6%SPCf&lK5=O}L-`Jx_k;5Gw_C}N~*F!Qr@dBs7dJ?`noRb4Zwof_(STbmsi|`yD zN1n~)h<|Kk(H6>So)Y}7bGei+R@6RQr+E9cbc~aSJNDf~5!u$c&0u0v(#=w=}&w#zmwBMgaTSYXh+WI z1am8o9xbGIMOH49Ji)Y+PJDnf_3P)Cf?bJU$D>awuicBpXPnVVvu0K&x0&Pzk-{W? ziCbP|6Z5@XkNzO+p49HClflI{#W>h0n@*&IM^KHeiLn!*;t$y|W=Bb!eO+ei*7?n) ze-rG{BI`yT+UL=NQ$6&7S>VcueZ%U7d2{uX80Bt%+sLeQ0}0pIPmNoGKB&f|C>NBIYN)K;}aI%46bA+4ezn-p@GO&2oP~;ihS7Z<&Mt zBhq1JwA-hF&Z#9xK^u#Qcb1&`1w(y4x8PN&sJ2UsZQf&1R*n+Vxjz2wEJZ-$cbUc$ z+FEoh?>H(0T_RlB4|aK?tGyKCbO=`3fwCRfIo!eOKS|6#aZx?VDVZmjCI3)uw~$sf zOzC*1<`*IoUi!Q_UdrCBJgOdf@cB!e_g|RuWF}mQ5AKlGrDIQa9y$+ z+s5sP7;f8I85!!5Cc#K|-68$mn+n|v!rT|{Z!ow$VzsWmdZj8Jdag&|F4H(6EV9-+ zZWEqI#wIOhu83W6NWEEH`e&|wKk!L=Gjg{6X}CroPy2-e@2&!EGUZf+<%vtMZPif=e@2?v0UzyxWlk5(PAmA{q?|k1)%4dU1`k-`cGF6BcZ{fScN?QE+ z2L|VzKJBGf&-$xJ=>MbZEu-3QgSFolO0iO)Sb^fjtx#NxI}`|Bpv40Om*Nh^N^y5W zu;2uT7IzQsZh>OK;qW|L-hJM)&*yyjuaz}xX70JJ`3qsS_}jX(Mx_Yw)Z2f-TNM#VTS#3N^-TV*Mzs z&c^)F2N~y+RRi(et>}28%?AIfnatMntuK@Pl!fYrvPbi9h`MYU|G;1(cKPCH2tW{* zK$eI^Uc;K%cR&vItLS?Fy7L(P2ocvFW+IX`m!uf52z(zDXAo*oGDFcT4KfBB^|bz0T5Et2-3rF{{tr(U-K%w>QH#Q8CN+ zib>~9wsa`p*Fc-n10JK*cPGI)A+yHQ%*Ghz@fQgT4 zvP?Z!vmNU_9$_x2^t<`wZVB+fj}tZ_%?;&IsUweOKs`JbDRqCK`P{+20?R9ki1Sns zv~CY%fnIpXQk-#YD^O{Cd0K+|=vK92=7S<;+Zq}jU>p%e#iil>f|s~_6jexmemYd~ znU4@=M6E^>Y8r7h#pzU`WV*H%dHUoetJg?YUPsZ(RCud0T5mMB<=|d5yhOHfuNZvl zkA&B;_*>gr#lLRVCwlZHlD^>AME6X5;hcoi4BRKvR<;^z-koUCjU~0$`cbeU5TlLd zN~k;=_BWfaJUcy~K0o2Z9lFEwVE+p=Mqv9%B}G^5803cEWfcd!iUjrCXY}Ar z{jT0|4dONV@0CU^{8j$YmE|Wxvwk-+g-i7F?fB*^-Y28uI%nt$sb&m5Sn}04N`V#Y5&hS+8lR^b)P6}vv_$h zaU#7FwP(tCrSF9cOUB~Z+a~fd>hLY~hd$oTjQ$d4t(W|uAd~f8eJ%`lh$a)RGND^FQ*rcRTl=^6AT83h7`7(9-r6g9v#C&c0 zUWZpUR_?CJ7c?T(08L5PN^5KaPFod_AbHbEPLJ`JExZ4z)wjM)bo5|PaTKz^!L-h=${M3kB?CJ&O?DP zz=4UTZ%d%LL~$nNoAB-J*uujs07~x3wpB2>tO|4xl|a4}u}g&pDBltgRHZJYrQ2Q! zOkI%(P}-NY?nhgU2}@$kSDW7ZdXXG?WUW005YOy5l3fCJn0JSV-={5pPDODyKC zP*40-GN7$S%N_@&&J|Zk)KvpyB58Efu-LhwrlHE&f||VuG;Y@cwmpE#_y}@uVtSbw z(IjeIYF#~NU;SFd#}J3x9%g-0)C{D%BpTq+HF~DcpD!Qa$?QbG!ZTup!%)itQJ^CHA7Ru9LYu#&6m1vVH@OtiZLrZPTs|{T-<&$j()@CI|72rB35fpr4AnqP zuRog=T@=^ZFJ{NhD8<^>|Z2 zii4e%nQ})X_n~KuuTVvMCI^?cdjm^2jCkwa<>RgKNOPxo(`9MotHG5fX2FaCP@~j_ z35KslFPkRP3Y$P{DkS=eT^tyC?r_(t_nTw>wI3jn<7B_VbD!5VC4??)uC7@cJYaSQ z?hE^YcMj$fN&A5o=qJ2J#@Tl2bu&lRqsv}%bLwow*MSBc?>b_TiP&*he~u6biCN`F zdR0!~MfXQkZg9R-R?SQevxLIiEyNqjzeCq=Ld9E3u9GqI6AF*l!U`_Kc9c5fAmH3O z73@EXppKtg3#Vv`c-m_u{>4?GCdJy#&z(44A5@b&WIpv@nQoh}{jK(-{S=<_@#l?g z?S5=vT-dl|$sVtpYO*Ydis8!?w;omf)t<#kjpZn+5pyQn=SM@UQC z7~?&i{%i;3k=~`wIcDOwR^;_Js;;U_G1CQZfT+=q`(3>#zJ8TJu?qrr_n<6^LKIqr zC0L-|CNB38B?=o3dwk{EKC{$+Om! z!%)+=*M*sT-QRyWl&jZI(pB6?-+Q_NvXSj#sd*hxsLLy1t7#s=uhwB~EW6uoHpxo% zk&4H>cFlH50xGyW>2rKaLfa!rNkpuhZIa1lfB>iDtcwC++I^&tP*zE0k=oh94#m=` zERbNIIg+{eYTX3;^JH1Irwn>x>>$;%;paaZ&jJ^+FX+%)HV7m+9qiibLP>R%h?RE$4o443#Sm?J4NABPF9 z9cDN`K&9@cYr`I!{BCG`m{St^%ttudbon^!Ck}i)WM!7-SI+_fmyaQe;y_`rf5F9* ze|+3M@MleJ^y22|ksG;?yUzSb=l#9l;nN)Z-;IW^+_X)LFEUZ$dsJd0Wdk`KPuzp3ECTHIE+vb z)fo^T3nBcYN4S~BN0wmt_xn*1deP*EPh=!3rMI@lu#qIpqD>trkllHB5C?Gppo%-)o-sT3U(MFzQogigDh? zNUAz&Q=RtnfCSFhtaMjX-2X^&1*4rMjiuLHBBu^dEC8oVhc#6lVDh?^e;plreSMwF za*Sq_t(Wk7UsRncis*OFCYqJMmw&G}U`boKW8~Z**dV?>)6@F4Q?*R5SVW7%EO+fX5D$*7hpu_2;1S_amMzRF{4hC-ifad?!%utMeqO-sDMhdHRdXO?P- zZA7J;ocF9|AWg{nSfPF#3x*^|xt;=Q~ zh7H*3Ig3{55C95kblx7k6T~+AbI5Mqgq0&ysI0XX|ImXMHXbEFMuNk_4r}5?o2Ysf zYe7bJ4O(OQpsV^O-a+0pIEFW$xv5to9o|Fwf$iZTI#g}!HSMQ%zAsSIS2tlcPi&P9 zR=$f>WT=AAnR2)9DBwe(=lh{-?T*P?r>jlF%02kL* z@4Q1v#AdyLLH^yKEu2iB!|9;JXwC*PzM- zjG0q@Ggo(7n(k+RZKIu7hURS9Z`XXp2Ey2kFt4=5SBS>0wawMbUPBOEX)NgYbtpV3 zU|M4#r5zKN1v(+>PPY}{T%Qt-HYBMkN0c>>t?uUZThC5-!B2qorCMaI1FsaU2%TQ? zV}yuT=4u!WWfrn1mF~dTw%_x~vbZ=%sOrVZgszo^uBe3R9WOM%heo_Jxm*ZqNo)M8ipJu0ukkSf z7MS;eW!<`8;u7#{RX zLAVNbKUK;`bn!I*6C1vLS}a%II1Ojasy!JTp_uyKHHzaJNwsG>p&RRjVL32akxC8d zZcXxo=^Pv!t0QQLrmW=bK7EJIOLc)_#ejPT^b4=c68$pxrI0qD*lX0mS{$UjyK}{E zA3Fsq#l-Zah0k|Tq?1;33GyMax(L)H0-s}1gC53lEVbbRH6=nMMAIlu8)871qAD8q zc+3VAgg%)J};1rVd334GhXT9cD-F*i&@2Q=069X7X zHEUFxXPCrzt5(69Bz5!bN<}V0`AJ;WZl-X4RYSkMS=N50oH0E0p`6-ZWur2Q>eaIX z)s6Gotu9v3b6v}G>e2xJwSg-@5Tw{LRa>q^!9W1cQU^9F z)lb4sJp^}4CNXG6Lp-vexNk*AyQb0a>!Is^X9i#S?yusnC5sZGjtNyMREs(*?SUre zsqItXOt|7T8b&UCf2zAX&|o=AnW@vS6B2^70KB#pJsoxx*364uEB8+QVDVU+a?L-# zI383HfIkswc0_H6_R*{-7v($Qh5ilC^w5fW!$V(DjF9uPVcoWuB+kzIT4=EW=1Snp z5-O#&o>H)Sh-6y&<^f5jtb_P0_`qlG{WO25ZY<=Z@U6b)GZ+Yl= zK8@(hEh+&By_UqD>Vk0DikAavHu0+(R@RXS9zE}CVV^6E*_IN|Q=jN_I{&1LITYi- zJ58ON-<}%g0U>dZmNO+;Wq>f@`lm!@WttGZ>;NkGdqOt%#f^(ytV(rCrxPv|=N z#bLc0_t+~y+kp%5jc=P;?d4P|qgmQ?K3aS;gYo9(^gG~fh zajnR3>pi#3lfwh(>sljra6Vk(0dLku`;wNDsRzD8kA{JUpBo%;QS&f?<_$FJS8YB= zv(vxZ)l?~`9EM>1CLWrTggyBiU~}twEWv4?olh=9`3%*rb8A)@qtW*nq-TCyh3L7zc-f2j zfudzP)3oay4$9Y~o_Y7FfX=FsrvtA&B%OTG_{$?Rse24>@DXFy4EAy!-`O8C82(4t zOXb)e@y%gTZT&Ob3J-Y3d72oXao^$6{;=0!B?qZh z&g2M5RC0N)t|Oy2rxEnKW1n4=IN36?BZ^J4do`}IJFhbxjl1o87zuW@HC;{zHDH{v z*`P=$m0T*hWjOJB(eY3A`_pZNfd9bca3z^7IS5zelf`gGF0jDK#5oZ&B|*G{$-%+TX2wht z=o9eXTpCTMR7c@>lp{I7#+MC;-4icqJ3LNvqSo6s!L1Y56osJV$856XqrO1v`R!GVfqD@A~mLNhwgDn7^GEzz;@>w~~fn{^9-cB9uG^_KN<4G*9yg ztbF9mIc_SKj+-sTucR!Z`53PPwR#>njXLKGndphqxFbr$YAd@C-+tvR95SE(ic;t$ zyUyAzw@Q=J;E%shsFvw2(*K_9(8hhUyMke>FEqmTTT0hwvOQN>5;TW3W!b+l2Pa2SvSUmvMf7VXmd6K-EYjQm!erWAjQkk`D z1kCvBr0K@#=ksjyyx-8cCH&_?XrK7^(7Epzx?Zr8-?uVTy`D3n(VUp07u$81++%Tb z$MSV$GJfTuidX+Vq{4h^TV#~}>FzNDK0Rn;6Jw#*WQO6~yl&D}E92{R_p3)YopQrb zD&5=lgV&~17I>S?Y`2flBsnC`!tb2hS2 zz|tzt(#Vs_hKV?b6A2Q$Ifsa6lXrjiuBT-bR%=7F>Xc;fPw2|}^hvzp(MA4tT9xTd?xm#HxVh{o-A@ z7Z5blkBVI#4WL-?+L(dlcJksX^SuH!JZIraqMt-DATPM%U7#iX>#}MPR@{RtepQgf zlb}#1U=AS8jsln!?HaEc5cB%UyG*TpRULwkCcd10i(73u@M$qGvxA`B^XyZGCs3)I zVZ!qXtni9tTVbM&3&T%8UB7mv25PSUQ6Wg%%`mlm5Q*M{|d$aY5jbWp*r`DeugSy(c$NF0GQzaVoHxBMKcHu?0>vgoY8o6I` zE7WgXzW9Bqzi;+)tzZMCafq@{g4NJu68G5(PP!Y2z zzPJ(gEG6AhDSK)3>5zB7LfBw*Z$Gf4t}cVaedlDl*D%tuuBA*(sBYcUz>UpjywMMO z=XvG8=g6fU((S1%wsmQ3UXf@wr>ntkB531PQeUQ(7pn80Pi*QBz<)q>1;zVJPkYGM z)W6zybyU|&6RW4Y#_yNPiR&lqb@emvrZOH0QTx0^J<65cyLR+3bGPVS=K#FM0nvIYWcKIURTVu-qRfZpl>iurbWVSepDX`aXu zN%o1YgoClLd-AVd!sgh9O|hdqswv56s~x`_Z!((yN@3*Ymn#-9$<<`_Pc;`B%)2zV zNmg2Y9VhTkFeBJmg01)Cj9v^!TPbq|URj~!rG0}(O{@*Jq^HfBA3TB2 zDC$>KVCn6p%Aj;G6;*8so+9(b4hobBCa-9qufZWRK2X8eqG=9BfvoRSy!cRz_R2a6 zc$3z$mXDeT{7&CN<8CSZJ}08r%BobFY6xoCOg1ibrL{eHtAv^T=Fis-`lsCtkDU2C z!EA{(IBj(1%2$p-4^P;lySy(8oyBPCWd4k~PNAMo0hzSasX-7&OD}pr?BB~Kx8|%b zfPComv{Tcfp&Hr6*wnfnJLkn;a{Dy>YbfKA=Y}?`7qr0~l&>#6tV^mQN{aJ8n4wH7 zcA|g(V}g}O^GglI_PG-Q>+i1*-X|6WgR3w5R54L&jV*>JWxCgO9))fPXVmqI%*%Tx z=xzGnvK1+IFkwu61a&8}hpp)p@IOy%S{mc{kyNyl%(H56WH1J;A+s2bmtBe**v=&T z`TGa91R+WuI^`EO{@9zm=N$3s4@$wtbp4=T%$6=FJR5 zL6CVi?D^gs=;LLnMS?Xq^GZPg*fhoM-3@0ZW=8y22;m+nj@wIsl2WrZKh1kq(HP|lQbDD7lDw$2(_^^1~*B0}%)_sA(-TCalSOAxO`g=+65>oi=LeY)_ zuTrTso9n^XrfMxT^OB?BHtqE7VucXhCl|o7|4)e+>qg%?6YyPIy;fGj>$#oA(fE-) z=gptZM+sUi1=f`mSbyZv-1HZDRDo^E8ww%bqS4hM*3yWogRJV|q=kd)&mVd3ffG|R z<$^PWMESBrWL(-Q+a$k$YrkWluR!OTg$lEfcEaM-aHc;1H?=)4vC3jj+P%!*{bm|f z&~rjza<@>KKQtV3M{oJGUra}S(lajS*BFatMlnLSi(x)f=o&idTz(gZ$+_~rWP-{1 zzso=&MsVmz5?2h)6SIK@lE{UtJ5gjN z2!Ai~Z6b{rEw$z5^y?ckdZAP6TG+FpcryCh5cxVKlT6y6+U@kD9|Vr;HX^$6(*kT= zC$_Heg21A% zp?r*pb0c)MH@>ng^|hT03E)Qro+Bnu5;4mGZ{hcSCVQ>tw;Byw`oP_c;!iC8V>aFf z4sN&8E>%1=ECt_b+QRPD>TNF3zZ z>zQg8ppnbql}adND?JoH0(WXGgDHGq;4G|g069}80l0&rhy4nO{?S}*Uc?cQ7U5kY zf%X|{B~$#Yttz+Z-VBxSUZIy3&Mm1k@SyA<+q4_tG(t$oEZ(}$|9ej3rdJ%eog725 zbx}Hn|r52iQlpi!A=4eFj2!OF{wr~ucI(tT?#Xgg+c^@!}N_7(g-{v}o1 zJ@@YVXhFl$Ui*)RR7H|$G*&ghpiH87%4n+!rd|jeN!k&yq?+@%T{4$_(hG;IlLL&P zjbiYk2@y?>(r^uMvD71}l(KHfIhlLE+6m2A^tU72R49+Eg*Q5#zsO^J_vdB6HemPE z4S3B1<&3< z+4J$ay3Llxt!NzbB`~DFS`Q{YiM@f-+r8fjH`3aC1 zvY*a3HPr^MS6V;YT@NF;Es;?r9YxdA#2%Yfkj+d;2K5ubXXerJcsPh%y!^J!`LcdA z-REVH-UsRr&wltY%KH;yYS7A9=Sy?t+Ri1g%@u3V_H*?5Nk<|8%q33m7&)Gv7kwP` z)rn4o?0oF%<+w-pk_@_4yT7o6-j_Zu+uaN>LWSE6Row+M;9qaT zv?r#b<1VFidR1_*=Wf{=Z(k^$DwAzhf1%)a@nF(`X_j*iI;1epIIskHPw^>Ilh)BU z-WnFX6ZETMU8ZX!xG<+oyrg8NK(r3j-;8`c19`Xnj%a z?kPZrzcH3Q%;QngU!Caniy8SsEni8nB;(w)eRhpy8aTGLXQs_f8%`RIsHEW@h%A1$ zB4`_<1NC57+EcjnsnQ=p$D57&p)4AZ1?Obw;4`_0tq0nJgM$o9ckUn@lzig+O?aeWBf*X zjf#q*qO7D9FKfGLG3fn?Sb1O3XyjKR-g-03TNML+ve_{4a|mqKT5so2!Jw=jQ2+OR zi6Wv{0Rq`ARrKmHdZ;!)Os5~gdM&l82oWaM#@>TFl~EjJIRDz+|g8B=cm zU_BC(ymr6eXAp1hR8BL8r0(n`V8%vSxs@m0+vxEpySEn*Rxjo|Z;DXZ8o;y!f26Zo zLIppvGJ=M+b!HA{{Lb2E?H`x3XP1`-HT#QXTkRNCv#R*TZdh)Q_}j;~EiAz^q_Us3 zU?3UUsuv`$9p8-XxyrEIb<2rcJnpYNRNpVbEA&9O8A<5xZ*rBduJW^6sG3;g)y=5U z!+^RCcDeaV60&Qu95!n8&-bJio2KHVjZ7G~cGbEVhXO!`p#@?7To+Lf8Yr=)0BCm)VoF1=i1 z9u8wJO@_knstT?+fc6<`6cwV2%HnjGD?r}I4vuK|J>P&8h!z+*B2*W0a%km%6=zrC1yoOVJ49WcgKe_Rae}kml`b9NCBKY#< znbP!%M>M?cocZ8@Gz>Tg4arY3l~4Ga6D&SW(cGVS5c13MJr?7hqg$S|?4Z+715ST& zjHO*DAKp!_@lO51G(~Nl_f%*YK5lLH6jj@$+F|nJhP?o3NT(+^yzU&HTEptLG5B+K z#k+UGcIGHkm2zwAs`|k>PQCjLK%gaC)OXQ$XUXsDWW#qt1z`GPWd3ZuMh3k&YQ zm1F5uzYKU<>)067u?v`PXJN;jVZ>4>-oLE}Hj2h78_H0* z>9NG1@?kb5dMJ*o;>rD$+LAsmkQ2Mkk>+IYnIUeBx7HYn>EYe#@6-;Fhye1qj4u9h z@~6NTX9g>#2&Zs*3yLQWo>{dK4`^~&qawrm@>V_^3+)d_K!4nUSoVRyV^tewlzoCy z*6Csq(-oLc^U~y^MYHzQ=moE^;7omu7QR`8QyP$Cp;%&2tgg+@59ZWEc`yb2Sl|0H zqD)_N3INgJ8dudO@m(M$2IY8I8{z}7LWsOwOD`=!4sJbmZ6_&9t_!U&Q;!PdPmRyh z`o>CEyk+I!JL}a#3oMg5SCma=(O3U*obbOSk^fZBf5Rg`;c4g`H%BJ@i;!`EQ?LFs zXsMhRFKKtqewP@IbeN%2m8a);C$swd?;J&?hI0FjnxeU(LTJBFpXa=^tU_pZ&EdW@ z2_w_PT0$ku%zlTdw)lf_S^GIEOnm`l{BUTAc)YG#sSat>UMm>6*;6!|il8l`&h=eC zzAsw(-Z|*qSaIk-GB1!!1236RN9*OeU#E`i$Xt$deoP$|vv}Nlyj8iq7x&J_sTG-4 z!Pb9mGp1f3MeEHiHdk({ejZf*S6OY3YP8Wy54Vv(r#xBpNR4xk*7aU836!u!7o`cE z1QmRbIfqrHuvMD=6y5<2!7^_ckR@XGsMtQ_`Pz^-j;~*g;0D}v$F%8M&0(#iLNc=Z zvuPz2uG!dU;A{9Y8jL0V?c*l0CL)ky4gBElf^p5R^@!KB1#i^f-$vQ+@b+XHoD>$^ zOukF#@r`I>(cdZ{Lc(81Ki>wYZKLiFdCm&!mkC?NwbHehc1wOS+wZpTA;?Dha#?dzb_q)ejXbNW4>yK}wU%A||iiN!#; zrMs0KFx){$)Y`O^vhPI&=Ey3R2G9sgTPEgp_1dimrTwta8E^T(tK26I4Gpq~! z!B%Ccjc$6MjIo##K_HDCL(KetC5eCEqN_4dPXWQXo=k4|?_H-=#ZNhh@)Ui4=9lYM zwzrdq&z0^7vE$!0WMneM>JWvM3F`>#4(+s=-MX>O>1={q z!Sgj9ynw1VAvPj2V&gG+#+wtCIn1|it)pm3<{oat$>y`4sPy!*TnCR)4L6b>(`I3fKLwvxhu=&*sDA-+cuLEH1>eh9t6N&*Uf5<%`Oc{YbG{I8C)0_zvMv@U z-`@%C%MVRjDYb6=LloUO;JqX^Cu+mXu09}U=MIN0z!FLKW)NrO6t@ThwT0f&k8W-Y zb~4WF23o-yS}8asEQ3xzYV~R~Wz2L8?#Tf>e$y6+&ABWJ!5b$p#2{5&5O&zP#s0LR zCKc~d>3n=d(T5#ygdI3F=o0O#!Q}_1f4b-YPk@x$y$Jl()U;w;EB5bir7r_EcN1$| zS0qXg1RR)>u@3D!i+i14p`ZD+oHjkCSp&I3&4C>1Ss{ThbJp zW54F74-&~uxlM1RiSvj5wM#fu6@|T=79Fo#K5<`wh#`q?^Kqf`>w!r_@n?LD`cuE8 zF84Mdhe@V03oG}+;_0rJbKHp=N`ft-e` z%OazAx&%bA)D~~=$icRjS6LB@>OK?G+!ioo)P-Hc(#?YV%`MXgUp29N!0&6C)!?6P zy*xc{AAO2&iKZ`^w}XRD#%H?55WpC^69AsrF9Fg1{m=AGj3rFb{_8BHbm7;*!S`mG zD^)Mak=`wY1?tNOpmR}8vDhyj1s|v!et91=;eS@`Q>=r4QB$dkEX_K#Mm++l$tg{| zOVZvFbroPrd+}DC=U~tr0JE9d4R)pV+V{MqeTv)djs-pDwTX!jXUj8@!<^oo%kJyx z$hiZzc}3@D|9Ok(k2p41lUd08K;)?vw`)rU__r zl@W&cv=iug?$2o==jAACsje4}D-T{revR*VN*!TNKXdxVUkjKYL_DpL&ut*({O){j zp^rDs$Pi9ncv3QPi;qApk=M80%>u&?y-3ig0%KZ7fF_B@cr78RR^Ql=XRYYB03LeA zu=l<6BR;S{MCtDYX$DW(HWVA7E@8*{Odlq|0iMlHwwEOCdhU-Br7(*!4cfcH8SS?b zO4J|Fp7*S<#LC=^T`ga8i;{)m8l#x84fa~fB3~-a!pX%f-Wo>rw#icum`^bIEX~rM zfRiz4E2K5>6^vx`eFR4K3)<>p_A>Dup}g6ns-BDS z8CpK`^Z8Bby_(~yL&gV@XRgt@khoRSB3$d%$g36}Gx~h^9uAxV71#A1HE!88@7*LD zloo<-wKb?TvQz1RU&a~hIAi@LPJG(lUtZE@My7b%_1G2suTeqr?w_~HUmZN0|0p)y zF`wKpwvBJ=D@3iK*C0M!^d&Jr=v1cgiei!#K z$LG>u*~-f;5`Z6&@NP6eX|u0LS$6#OW%$7K99-*m6Y?;yd?DO!>314{Yh$0-#Gah= z!t76lz5MZT(;SUGH^-8#o=I4UuS4g@a4}P=s*OF%t>n$}A9ju#y1$J3Dia4tutG8* z#j{FAZsnR;rZsl7Q`Mk%>#!>8Ao8QiER5nI;gX{HNVGW_K@Dn$WsHL3P+WoGk7#=+ z-)Q5)T2ra>e^{*BlriaB<(Thz-j@&dRm}W&rx9X+C*i@iW1monAEGr?X2RB~qrMrB zLFV(Dt$Qanc6V(xIEoz zy#i6}p%|$Uvs^+l26#G7R9(;}+v|>5ScKoy{@zR61VTh{VgE3CIZJNj*vwm66M-fA zO*H91b5;vFGT{{=GMS~32`@qDE!yBNBUzfaR)_f(h+f*zJ`Vw+%a*;JkwIAdn{{%j z<_m-d77+jUVYmNR5h0;Kk&thFl8IfI{;eOZ*Z~UM5!0^ag4V-eLv6#`l8o9rAu3C= zQ@!;*bIel7O%m_aRDVaAOzvV0w{IpPsD{bTr+vX@3n2MT1=mV|@z$0QQX!A`q=|8+ ztUVX47_hBrY(LkJQ-h!lX_Dsb`|=7!)zhmR^+ui{Z;!7{@ztqLeez+EKNLrH7xSl(<%jQVUfJrk9pKzl?0kE4IX0Y3 z8DwE;3f`jZ}(HVg0t<)ro*1V)|KD*neddW7^mrc4TQ0RUB z&qXuXB^hag3@>4?x96jk9M+2ws^@tT+tS<;4wvV#T$bmU$rG!1YMZ9g&CEcdv3fA7 ziIq8MDGi#Gv{J@wqG;w~fIZqTn|bVPJ<-rn7#D-1H4*e{!dv3LMCL_;ES1@33GV1^ zG{w(G9{No`EzAP3DUjJt>lml<1VqmAS#m|k-f!{?6?@@AkBkBJ+Q^pZC`ohS7g*83 z3D#AQ@i#3czGXI;e=K~`wGM2MxQ`IyYQLKpzpmx$eEa&X%;rN9zY`sV)}@hUP-+R( zX4!TCWAH(%+1kC?BFx>`{&MAkOt|SX1sSUO=oulTX>M58Tb1W%)NXg`Gmr~M%h{Fw zA47}(lO4Wu(cuM8MP4IhSN?4|8c^`w3Yuw}{`g!;&%WS(l>*PciFj9dRG!fJR*s`h zQIs*(*unDkQl|iS;tpTI;i;r7zVg`*3N=r+M#`RkraAv8A?oXkfhpt8hklsrh;7l~ zZ`BI;;aSA5{ej}9l3yqoC8i4tNQ65N;^_E}W5F50_4GaIPF=GEvQGtQ#VwXo^Ydvw z`;*yK;vSFL5kGF6y^viB1}W)v;BG+~ohs#7rg26z;#ouM$y|$ZDpB0qT(4tp6ng73 zF%lhKxZ_)s0F7Ac@((~NY5qz#+x+yLsM-(TG(Sb< zEd+01=8G59XX~V5ZmzBzv0P=A$y+t{0N3~~0{+2pSQzxhIHF?Ay&4m#G&sYBP9MmN zK$FRec>y_e=5iSojFLJzpMQo&N^QKcHS`5e%wSSe5g5kZThZ8Rdy{Vp+18!@m&x0 z*>;YZd*ZZ<-PYjxEoOOdH?VUK&GQL%gfIVg6ieMjkS6-H($*jcfUihp)poI^-`sCx z@kB)_vh=U1whc%fHcavtduBI^l8}bHMhXrz(5xuS=IYc!zpFKZz5unws#RzK)*y8| z{$7^|dSjrv0h{Fm};NA{JoklQz2abB5ZlcM;- z&{XXR|G4OLpN|Z@dD6eQO7Zb!=330C#y_im&CP>J05run1ZLdDzT?p(?x-`a--Un)3!_lo2|9V5`Gj*w}F-(c$6Fp zM+LWhE#uPK@jLHC8n5qCl%kA#&wFdktTgcccMf(k>Ql?Xfj*%A&xNyprlwA>2h(>8 zP+zYtp_f&FZ(n9VHlScx)IvmGFKjY)^$Ls`v1wxBGt&!F%DA@@|1`*&koZX@q?P%H zhLPS@r+g z5>vXow8F{(T4sT$>if)4B1&oHJ}ysO@Os_tSt9c1>GoqDu27NvYJMa0`mb$eV?RlM zU3D2z2NWYuJ|eUo0+wb!w>G(9;T|TL5q2|o$>_Xh%#Z6EO+`9!vmE4A&|L@^dW^{R zWO{aKSv-EjtiwsM@N1}%tsi$^>!A2w~ppHHIklUq!%plZ9` z`jx3GwP6f3!LT%7GKX~tV3#9bVMDcO|G1ld=e2;R{+MZh&2gLjSZywTIoVE&VjpJc zcRz@DSTM3|hEa^4Lgww&X!KNb)RSLHJe|hcAtiS->94|hohH{fu0B(M9y_aEYo;Uq zidyoO?N~8ZZzyukhUZNz`k&q*HU8X{sem=FT&%c-3s$1PQDWfpsJ=mlM%J$XeP~im z{Zzxu0|Z$x|B0|waP%j)bp~$5tWU9OL1^qTuA3G%B1lK?pneJ6D=bF_3(5C%JA>y6 zldjk_p6>)0Vx0w2wfZ!9#)^Uo=tU&uDd4VpH%>;EGj(@_t3e`X1+Mn3z1B0V^Ook_^M3aVw?m9#phsl9aot8; zC@34KYg)dA$oP_lJGmu2`E>JHT}F0ktSh$^S**h=*w<I4CJ67Lu6SKmTTbdPvY|X^G|}ehVPEFl4ut^qFu||yKm~6 z97yz@Es!wdU1{U3qM9O9V#N((6~!zLL~IUs=|JwnLY^?^-s&Z9#B*VntIA5LDQ1kBwZ{a4xm(xgnXKY+ir>gJ$O6L~9p#gDDY;80_pZJxyw|7o7zk$HYJmZY>$}mS1YD;T zDhk%#H^$uO`P7nEN4Y^ODoQCtW2T)V3>sJx2 zXZCkF_v_;Jvwl}#@p`Xg&k)3ydHZ{q!B$%BHQd={bk zQWX<~zI}N#+~Bo$^&HI}cV>@mgO*_U_!hOFgpQ0n@Pe(SDsZkfCi-xnMNkm zz)%|CDpBx8dfL?KrJpW&Nv$}$fvC)Trjj-6?7FlhnuIXDpHn}VDtvSwcIeKKtdQXc zWg8v#{#X^i(Zs9#I~A=5?bH>!kfwlOB{2c|SA8t3fnxxp_hRH)TSr~~7ATv^( zeO3stsZrHF{igdP^IlWroLBlqgAg*pr6|K={$)(doKRS~4&aN^U$1YO)u^QCE>HSS zARbd2DaM{>O|E^cRr*f?R;^gh!HB>n=3wwt(80XIWGzqK|r*nA-?m?fZ1LlOr#r_AYb&7q0Cl(yaN5o>--S-YzPFj$7+2 zg}@XK$jicxniun8=6PEv|ZvXw$Wt|>f(VOl)v4m+bN37wYas$OZ1!{>oiv;)83(=^UU+MVK1ia! zBr^Y$u5h@}A@1?3?k;EcJ=ez>CFBS_GLidsHuU<`s~?^|pq#ab&F41IHLTBFDbrkq zI4w}|Szb9W3Y#K4&OWM&jk}3m;Ctg)gHOj2-b%Sy;>ng786`P)%Wi}B%)EJa5S=h_ zrq|QD`L*tCk}z6d%f>c^B+09-f=eH_5AT@q8t`7cecSCmOO(5zu;I8ff^b{?{T$&~ zE48BCt(y5nWQh#++)p1BSff?#Od@jad{9Tlrvy_|@~dYxQ%6uw$6lPXOa1*Dee2Kp zk`T}w24v}_^C9$^bEH*xfu*#;JPx2DzuCT}^`_1fp;cHBM+NUIg>hGF6yTXt#}*|! z#%bCav^8bex^~djVJ&5--JgH+0d<~v?N^L`pws{d{!)LI6Xa87y{seieQ%{_;J1r~wz}&cgrX8ue(ArQgTAxLn>N0PUp7yy)RyYJasx@S^%57bJ;E#)6F*J#l zQcHwbsfW$0KT=pbCp?iwPVo4f`&()4qqjVM>y7iz z$XZP^tbro9loz%8{w)`!AD|LPIoaImu1_n6w%VyK>vtJo#<(V&{DAd%#k4Y5vbFI< z-nOhlenJM63BDqc_2X0Xv4sB2sNoUFugtBxd{=y2nci7-Byg92XEaQk$~hY&?^jX& zF_nm%-u_Zsx98CU@Wl&e-)$&k$NSaaNWp`7>)P!MjGQzB+`)*ipS+8C8N*(F5c8R^ zP75y-E6{!=r_l_9Pi$?`XPuEp#=WA&{HaqelWQ}=`o#5a1iG=fE%kMoj93ShjF9GR zpj{;15+#-oN}!wnvZm~3!%bp4+1LEmRiR+dyicn!*PG_T;X|O+-S`j#X>u@#bU!kQ z#D=+tm)~!3an)hD&d2ZGkD|fvaIw%lC158&V_`m-S3pp-$_l9GnL1oWb1EUHRuCbSW1gQW3SFNewGd``yPWw6H11@ooT%G6t#8yDfmE3^61OnD|Hbk z((ivA;{Kl={OE>dQVugn?yMa{B=!l*n{0FB&*5wfO&?J`E zE*fPg1cdy*)5&sjbovst2!6gm6^V+@zzWe^+-Vk<)s}W4K%alOfn?ZLHZ|BJiqBnH8MIm4&gK;| z@ytZa(a1NC4V}nBM_rrs;MHzL+xHzJ=DJ>|^Ul;MGWCw6)iTbv*5D7(dr{?C#dF}w zfGqL_zepM=%f;^$z(ROoyIpMi&$zY=kL!cal-_+K*#`O_ZM20V==TT@zQ=U=N06yv z+uBNFFz0qZ5s(z!NFVxD8y`3(H;Co(z$%R8HhL#q&4D`Ta8#p#tqr* z|NTAu^`O8aJAVgBo2@j1>;L(G3JzML1%ZimP(nM%W^d{4c|3vWCN?4QX2)EAtPsV| z&t~JhWWvPD$_DR3PeI+!Qf2xc2h48hc+*!y_jIP`laz%aUt=_|@e|(3uU8IIBOfMv zSGs4%zvLNANms#Sx__v9ScSP+|MO(i+u8A*SA@M$^120G0wfDgeMEt)*$@%uiWc#b zesIGbHHhiS*gsbv9H&>W9|kI!dan3ps5Z|j>M^9A?bzlSIm(X<*bcDo-$N+$`9c?j zQfKwcf==6JL_M#ow1q-l{0nW8Tua*)gixct=+31ZPru{%4B%+{ZGC;a)t{Rd`(Vo3 zFX9&=m0_(rb2r8?k_cb-b%jTt+9JZ8}RE8FVeLf*mX z}E-VkV17TS*buSca#2Z%$k$M zfljnGB-ajHv2;P$*Ap)i53!3=p$Rga7B&*+t_r2_o^urOZSWYGDHnbV(F+&>P_9<3 z-XA!H4VBKfT^_!g*PmUQR=3*0*M%#Gv#5p(IFB7Q(=4QB*y10k-&zBH>48+n<&-_% z=$W{hASKd_1*idy+m{IyiJR-f{|7w$&CXBI;NWVdyjrdLbEgpXm{6fZz559x*N zU3yr8j_PPw4yzY(+F`!KKK*56e-F=$w$r7ULS=dnS<>A0|92mFe!`LCV4G?s0U> zq|@{=yi_Lkg)5f3tw-Qig!)pS{G=GROk`N%`v9R>c|JV?;qkU3eyd0rPip25f1>$a z4(;sU96O8Nk=mx2kAll_Yy_+iiVHQEp6}*~-|j1~X4n=K--hvxJoAQUAR@h0R?8^( z8}SS_40bbmynp=!&_kVKe<eaDeC2`MPnkix`^fIwO&dpV3JvRxg zg=TT3gdT-XpN62NA3WY2k?ej5;V%>Y7O2X`FsWb&6gUY^@VU^eNO4Y`%9Noyu zg^F!?>Z=p6vxQv;0js#LiaU0kiZfmi&EgU#+mlve^Y6zGde)%KIbIXfFH68efSJ{M ztaX<|>|VvvcBJtxd+%t#3SoHcn^_cyEPdiasWo9-A)j@`MQ_JlEBlhifEB^By6=@q zSMonaCB8BlQ}AA`^v6)Vw$^u3Ikl&8^W0x54y*DJ4ZLX_rTr{%s+>-L5{qV>Q~mbl z(St3^fzpzTXuM4e(sW9%;iLMeM?T5ye4ui$52V0`;ljy|Z_7bXQ|t8fMg5FvL#01Z z9#@OKwA9}W=Aws;Q|)yg>9mTI_ucGxF|0Se00iM%D9FX|aDEBnSSZZHM=r#_z>I&( z&j=ZS9pTo!P#JAmL)oJb{#U$*y2(Jz|4>QnpVPy}#^{4`1R%v2O3hd26PRn9W*Z-lu#Ax@F^Pu=ka`1)bZjf=uQp)E< zjG~AOSr;>QnBH#Xx>Qg6q(!l-TAtYztY}u>TiPYlmFg5JL=FC^#Sn^v&tJ>byJ*dF zfqPNz8tp#u!Bc^1rn~0RVj=SSuq;`f(7k0)R&rJ!Wd37$NNes(h(*$EPa6C;5P5J#>&b{j)cEXG4ZuC; z<>VKgx7dq!%b~zq9eqvhnuR0ft*NH;uq{A?J$w9{(;5$ZFOdXWH2g~R3!Z&V1OAn6 zZ?`safQ0>cPr*fSy6#n7T})U7=I{%)(jqR+VO-glS!|O%%$bPc<~lsiOdthR3YS z@D75QeHNXm`J1*$t=TCta3M0Hb-!i5`vJ4=aaY90T&g?*MUO7tgK@wh=Oo?S&jIz$ zRhXM+Ys~JTm=D`Kk5HO#Abpm4j)$W=Svo6^4E6RUa=~!tgT48z?m?JxZZ#6JgkU{` zNw~yH#PK7Cq_4hngwVepY|>=m2s}F9<+%K8t<@CNJ);*Yls?p*R5dYK5*`cL5)}b4=>dz?>fo0NUs_N44RpSB zQfpkbY{gfL$=5M)A0#OD*R~Er)F^->X$(IE`kRcB4tVOb11=h~L_8F}EOmx6vw0EL z>C|t4_?xcC7T>AawI}y|gB4X8IDxG=J5B{!4#&7f{d|YF>g3EcP8sw*5{wkH$Jmr- z4V2mCfA=>Sds~5?zzaD5a-o>ymn@nCAvH4@8i+W=_bz>e_pvNc$_U2?2x)-Me zx*pLDz4J){wysBe^W-y|2=h&LO!=re<8W^RhP$ZKOv;tqRO+G!vi4iuO_*hn-dzkM z8sv#V1mpC{n~wU0Y6|hOLmnR5Gs8YQAvfR1ia95LINd6rx#*=iP26euAq?XpPJBny zRYfK;imoGKW0RnUZxvfeLz#yue&F0|kRURzz-MjG97p8CW##b4x+k zQ&ImR0n;mAQk&w+@oY_6#6ae|mpm#(^1kgDc{|@QMLqWwu8Hn%C>J#Du!ANAL{Q)Z z|CiW%A$)rOZsDuTve8C1n2(W};_B^;$fPS%3iiqAZ7rhqL>aWLRY8U$NO$2}V!zwv zh~lPI_zx!Gs-RbG=0o8~7l$y<56tZ>d`%ajhGqxzKOfC5mJ2QervtkU7X+X8g_UP7 zwN^Zjfq*V{PTF$$3bB($ML*8%*`>*aac@D+XwjWycJq`9MXuG)rzPA8qxrRKLV7`z zZl~%Qno~OV1uQb<1sEj-!^48^Q}Qa(7S)Qc@^q0uWT4I{N$G#7vc^9#emlLaJQh$m z{a1FP3@fjg8FP<_lhg3dpM}!JvaN!aJF^gu^?L`E^?jj%vriTZA(?q zLa~-z*d}64<_2DAOHiyWvI960Z$0VjK6Q{>JRNC;(VS93UML5!PXRE%B@>X{xF?(_ zw4)uXR|pX`dUPELkYCis-2Y*ai zT*6Q97tf46M-olyRp*UYr|Ow0C%71Ab!kiXoOQ7f(Tb~fx67zIt7`hc=?Xn&)M0`u zmCm`=J}AKOLY`{8XaNtfI=`ndJ0s{zqD>>p-yoH?1NlNy4k*6$P=A)ot~JZryGaLXUl~ zBu`efg#4bk*!$qA480R^vl!7yS&nW^GlIoUNuenOk62esJG;4Zmh*;`rM2QyD8bNi z*6Aaov6?_cWza;f^vd?So@Eh=Qayj4K`ZJ};|O9bbOAX!l3r9tO1z%LI#eEjjw;qe z`JqCEd`Zk&x%DnHzN;4jGflU57W&Z}qyx~)C@r(_A|}Qa{#&IPn6L{ah8Pi=KOei_ z9<=bl?1u8bZ$@ASXo@Saub6bfnrutpAfTEJ>Jlfd}wu5^wKkoZg5;CTnx&q z)9$$3#iz?;CU`?j5-y%mr3z>6W*^RyqqdXF58i}KaqQ}67&2&BB)u+YL4KOUvB+pAR z=F45h=F%Z$J9NhEdU?ivSV;_^@GIMA)sly$Ehv{#X>*2N8P%k0%TNVy4^h%^$$jMr zJ1?(M%fpC?OdC9Xdv)iJcpW{igC?^=o1XOJH5Fyc71G!r_C|@SJQ+hn7X=Xy|XZ%`a~D{k-8}}LI*>X z?2zihILkGlS>z|!9$<;b2pibyJj{K*ulZ&SNRw+?yon^}_-?0#fUFcCbsWopz6?$6 zfbM!~Cb$LGb$pLGx;C|nz*!aHtJhL9ai^S`I$lc1RU~Zxf&*sc>2~fR@le9k5)ReL- z2KKtC5=!z2Rvj7bFA9Www&aO;UO2KYn%Q(>rfEZ1sEJkA$%@H?vcqwjqP7ZdZZnhfNkq+t=1kd18WEPkba$juB9*jSQZET-4kNxM+2rFYQ_pDe>d{r-q+h2X|UZQw3e7!2nOee4H^6)6)B1xN{8FJTf$JLT?^8AM-8;Q<93CIX6(~B%3KSd zOwJe)r1jAkpoyv=dej_N+c1LFlB)YjFO0!hpJ$;j0KnFk;?ZO!USS|H!44&`)SMSG zzYSfnL14G7I9Pd>k>A}-LrZcgzbcR767$Q^I=0iJ|CYJdV{C?$7g3s&()iCOGGWiC zIl`O5u$$E|Bs=y_nS?tg{EvL-wl3a4)Tk^~;TnmFIhTeibWSYNa=76`u6wKeel`yU+#Fn#+ebhM%3)6>&Ydx>Z0|C^}b zco_`6UudnG`2O!Z(3wwBB!!r=LbVqZHFf8~>v>$!fA|9dyq$Kc3;e9Uf0ZBf^Sv$w zKpv%?i10H}upq$J8t@geZR2D7qB4m=Im_wpva>~EQo)nY@Dlhf@f-)_VG{G8se%_T zYF9EJW_mQUZc%ZUM8ps27(;->C`i9Ql7MFWx>*g1V~N^NID#nb)l z1tBLs`H(PR<+zx6Q<%w&7pmFLFl_PEh|JcMHOeBy%`~8=QEwjLsNICgbd|X#uN5Gq z-m)B%S!i-ZDlk?&jrU$QO>W_hQYZ$QP!)xP5G;iyqS~;Sm8ayp@h}^XM%Gtyac}U! zvd>t`Ug=ppFd;JnRH?k`)-XUh%|8*{ zBDEGG|IXGH3Q9>SM-AA22fjBtohZ)oDOh$~tOqXM96c0Q{6Fg?YZFv&E?i8~NxJ^o z9`95od6@a-CN#j40__RUy+;dK#OD2u*VD?IFP0|a^L^@GMn}`Dl{+*S@d=4i7tW09 z9b^fbAwlEHWIA7qU_O~19^}wbX$3-ovC9*B(q?joSe*&&dB+*b`tq?6O?Bu8ysdi8 zb_ZH~iNv6y-5LZa$t@u9E^(U%TxG<=9hLhboEJXNpkJvmn+X|O?91kFi@^kWEg-$_ ztIjLhIOf?&5^03`E~8E^B`wq1;cp5+t}xefRIut5zP;WQcn820-oTeF{~#W(EsiOM zLApf*>hIodG4IDh&7nE?zdf1!mlr^WfTH?Lj~M?!>Xe_v=%#SoiBDi&8=H0tXp>fp ziP9EenY2|ui=c_m?9rf2)g0;&^Suqn(7ydVwf-?~52)jCc@o%ixR61}UiVG7-qItN zoPQvIfM-sedmAu9B79`jQE(}^4Cu=;Myk3FjhLr1O|_|Iq6M>(2WN?TE&S{bJs3*k z#lM%_QE|GOUY6Lx$0!CX#u|dZV@lBe+hpml=fhYFeJRCV*&bu#pVx%b7JYC;?&H9S z9!=I#@y-t1=FwHW3j-1J?w||HQ|aq=rR<4n0DBxgk-r=CQJT%<33_4pydV566;v07z#jdN~ z$MyoGH1CjyHt-D8O~$(DXv}*F=0tEpCXS+WOwxAk*)2$MPWU;%!dkTH&efBIF+6Gz zHbYID@2gEANAOfOJWMvGT#G{^K;qtxVaI9epjlQBwNCR?o~?l|a5GAmUtX8wr|Mh7a1~q?Y;SGtul@L34}o;$%qpck3>L#~ zSR`-R1R41Uim!G&PWkSmDgXB?{x`DaR6!q!sRp>ixTn7#{H%NZlZj~e$;WyBG+J6z1 zu(@lYv%qMTkT-bV$B!dKgqCYzT{J%2gLJ zyx>mATQS}vA)kl|w}PZ2i?Fkab7M;Z(jly|%*1VxiY9X7(;unSDlE}@$TXU~xAjh3 zIPWW;;bqv4q^?k$ghzBS#OvrruVS7D&Bg?H{$9u+Am%R&0H@QW%3rYJB>O18On&00 zC^)4q^Si4cYWl@uM3Fd7qdSJ!ap$Az z-2q{2g3Rm{+ZFbp1o{%>cM7a02H`3*Qm15)a?(f*Vf}QHC@|JbZ#>f-wKzuD()|%_ zIVGHK&_aBF3rTkYzm02M65ttZ?yk3NN?`*Go*~Z~pS_rV`Kn2bp5dC?fpjzSkvN_Y zofD}=(yABm*6%K+j`FuajRNdc_!r>z7Wyk|Qtyb;XU|Od14l}PJ(Y7H#?&54YVF-Y zF5=tc*tnZ|FyArSOyiOrh-4NGKqke8sts_>M$tqvgpq7zFf$7?T`6c=-Srg~Nfa`r zC^83J)2=fwo(Yea!!=VBtpv)O-dIdcOyrUayUO{EIGhILQ(a8nsGR-$9k0me+DEEN zeBnnZ>bo3WZ+}GsoS7wH?p@KeJuK48N2lJjAm9zras>D`4{W=UKCN_3_vhH|4WRlX zQ&5gGa%!74Jx!mTLmgSX7W1e(->|di48lf{dr$;qG7jxHc+&ClH2^JCyDOty1^24 zUn^4rWsCpn+3-A>A~rHIAsU~kD*!zN@=e@tZW;~21>Nx6)B+25P73MW@zN48^2*N& zlF3u(wIc1RxM_06RKO#nz0AYPV{%OH5BI(NU6ThAB zp{9Gza`*oU_!=EB)b5FQEK4O={@EY!E~bhjZ*J;nSIfx^9&qa-?ye4xVu3q;z9#nr z9*j2_Y>((0slzU>v|Qq-@30js_pzc2GPt$mY5dE7(~S29BSK#&oRmMyaS%%`eBFGg zwJ8mKM)}ND)c;Bn8hYNOCxW^7HJIi-!{Tv$GQ6q13`R&wpuwO;E7Vd^(M=cPvYeFY zvB|;d5CvcIk%S-j1=a~vd9Y8;`ur9x%grZnD|G&FiZy6Kz@7?FP&X?WB_IAsfKnzs zK%bcf%!f++7QXJXrmS(2xXU}A@e|OtpC5|4khcpf8V`ltX+6Tc$;Q~v<_y;NKSw%V zRXnAsxw+0LA|h5@A{VM!z1W{;$16g(5x}v0HhB_9QwMo62T}N+rcTSmr$W^Y$1P_8 zF89WclW-Y@D#F*;PG1Sg3;q?)L`{y&@tCz=9sF$uFJn{4;y}=lv5x+uhFP^ybZd z_%Dp2hrXm-G?IKzD|x@rKt?QoZ=%042&qUUJ2703BKMU$Us|m0pE0}tEHIl{jZ_R= z^>vkK!Pf<#R9w&WEl0%C-_1UUQ^-*>w{d+JOlhEc6^-5Nls_&9xg$9<*o;C%?T<(kFHoOyK#|#Q_CoO=_ zL|oLKXPJN~*b*7IB!b;O!lKSTsVJ`^r=Xso3H_x?@O+#eOp<5}WNNc_swCU3(5GQu z_C`TBH>xqmN)_|vEi0n(njh9_1Fzcw?P~3lCD<2o#-g#B{)srk+bRbDBh~vXiUds` z)6Zw`B{qbEMvW&0B_J8+r%T(bO)SH+!?ZkgOxr~2?EG$2iXM|$(>UrlH?|c?^oIeq z5_PKG63j_KF5T_bW`92Z z&=8yjVW(WojF1TwwRKMtPjizV9g+r=ls+Uzd=U@Qw_(IAgsf{VF-W5bDI$tsv6R+b zbtk-e|Czvx?ZBCsW$z){LaLfmJj zHW9y9<$vy9{HtuQ?MYK%6qjzB$gBQU4H{W+U*BW8RZI&X* z;jI2CZ(+XkT+L*2=Oip;y*M9Z%xWE$WjGnTp?dxR} zuQ>^~Ew5JDZBb$mcl#qZ3VXL6snN6372EP)F9*PtN2z7aV1(*}gQunjPNjZl!mb25_4?CfZ=D1P9v4uTUT|k4Z(|m| z`KiCEi5508Bc1bjS}~mvaBcZ$>EvaVE)d`KL6*{x{!5bzcTtZ33qkf-5tbeTlg`91 zvKdKDAK~bUXN(cSPl3uoPF&dpuGg(!-)9lMF)Mn4mhw7SEXO%uadE|JvB9aq?01M+ z6$&?ZSl=mcNZj5Rs4iueuD161Fchby%+AgpyfFLysqN6CvL@#Sn)8xpZ!f5O{PVv8 zN`=$-{Exnj#ou-u{@0fkdgxzaXVN5u&-&lHQZPJ4=YVLF`?$qM8rK*Ew#3U0p~QF zea~c06P~#9P`30hGVI3)v>!+oNyw@O`UV)>Xk5lKgr z{wWR?Edx~TgW*hC>HQG@W4`Bj+T>i4czZ>*Y?r+{n9UxdzHlq~MD~nEmf_fq1J*^c z)oU?MS+V#Xo;-Y2oUOo#138@Wd#5%)rA;FFzU#5+*jiG|S?1{rZWa_qWqtXuPc2*9 z^d3387*DIXZ*t_D5^(&PvX(RG3Pw?`>^?d)6gB$D2hh~j>>|$>D(nXY4uglW$b{Yr zE;)a`{T+MX*mhA@SqEIK$8n}hS5rWSz zs_#N&RY-rJcG8~NzJWE{imr{+4cd!Wl(V4(N9zZM&Yxh}w{6dsolN1+=+ZrC>C;)J zj>LyJs}2f=*YGJPaJ8_(dI*tmLOYlq9!D{zgq=qbqZyDqYT|sqGnc@GP%*^bcw(aL zK+U(tT*(;$acdJeT|+q{F3QzbL^Iob=tmhEN|@?A(_NnkC~nMw(h3XHh3qZ3AXd+T z^>+mgM)w2J8*h&R=ao0vCoLItSqYhU(JTBO=i%#dYy(W8;($^7;G5+F+_(h|CuEE~6Asg^*Zn&o$eYrBbo~VDmz<_;?@@5V z9pkud>laq|iMHgqHU)QYyVjqJ#i&{L;HA`_jcKHlAL5crRMZ~DqSd2F3e+?t7| zcLrUwiv`OAu4QLtA+FJvH_g)&*Lj#EH7v}E^w%6aEYtC{wZ|q_UDgR?GTF4elB#O*qvA`zfF_UwrHA_GDQkjn}w@!!{eCmPUY^ zJXoky3?G7DkGQ?Qmn^cXG*^%IV?OkGo${8#yyd#dM)^ zeoXZyo3fFyEA%sZ)5wq3r1Oz^_{5myODtG2+*|${)n+UY?Gr%s@L{{JMhrPfZUxR60sDTVDt^#2UU=)X$cVc(x{BID_=1`J-X z8JNz<$8;0+LoFrq=wVYrV$Ur^NQ1^i$E zo{v8JrsQwvi3LY_*G_weXTOXcUwBVU0ZIhR(mlRaCd+Vgm=42iy$6iFO;CgtIgg=)y zM%8)z;4|_<;o#8}4Z--<4;i#sL})%74`ET;K7=px|L58LQ@kT%{Hf)mMiVhloK^Fh0kCr51b3bz!YlDuSq{{?qpD<>c@(q+v22Y`}JZ{c!k z+dc!8w%;6hgbP0BueZR{PX|LLs^)Im0F&$~8Lc_Bqi%pJ39|;suyIp;`_=}|iK21z z+Stx?Bc87Ltz)kz+tE~YKS?qOF5e<3D5>9eRpM!>6>C$FK2TIwSD&bPfEgwk)>#6l zseb`UNR;hXeI5>m{hU5gT^HGPi&Fv?r~IwVye)-S0< z&rx~L`!mhql}F=5Q9JXNECGhGCI;8VDUqMV#zutQ&5Nbf@~vT_Mgz@&|3&^Oqf}nL z%Iz0B?tguqf*s7w_>t`6Jhc!&fttvm#&)y_E{C#+8dtv~0|?nR6M0;8Phbqf&CMGF#m1D7ToJG1^?H)o-sKk(8v;l^DNVZbbKZr| z_9>v9Yt5e*&k?}YO-;?s%k9?)d0ly}&7Nzuc+HI?b5M_jj6Qe1cpbYH+hN)$ul(S?B+poqorUF{MgGvrx~xS{1NG6EM5>IPyHx0}r&S?Q zfYnV;;icR6&0lhcf^d2;*Yjd1-J_YDaZn^HeRu>~5yrEX5AA8)%X!E({%d_Q zbt-aOYE4CP?Zb$;zONZL;NP9hUvcB)_!CE$w$UB+zdq};p$QQRGmw`s^E~HyZVhLW z4qOux^Rh_FOu%{5$Qvr)oC-;ayoeETo)R$am_&xg8k~-<0+Ts|7M`fHOK-DjU8t;o z0klIQL3ly*q4>&0uSSJ<+E6oZ^<-L|L5^|PBjXN-&noBpSXw4+65-FQ7uN#q7U?Ki z_CSHh`^`(NF3df&qdQ*zMyB*ljK+vDVW^y%R{g)zs%KCZpb7y>b*bad(r$#9lcJ-!>#J8Tt{mT2 zZ^F)T=^wYQOz*xio2V8(aWChNV$V~o9$VO%Pu}N!i*08aw>+cao=~15SQZqS z+*-s;%H~*efpUPrbC1@zE9RFxd#dMiL5k9BKtqR3S=nsq3$37DQ1++rH}mDY?L#u4 zg}5`SPY_3rH47c;(Prc2uN8A1ixb3n`WO*%x8ZiIH-+@VK1~w)@jS%xmCF?tj)c; zw7_ZUs}}M00y{WD4_&>UwrTY=;2Hx;3})SAp#g-!VR=HU ze5ZOeVhYW>jy3^28=ta^!I=u9XYZ3_MF-t>m>8EaSqu|u(J-Gr>}^%iFsK-HSnPrT zSKAde&5JN-BL+N87q|?(4|#zuG};dfE1>5k`NgZE+O7mqIm z71bzEr*_Iz|JqOb-LDEIpPAekI%&i9ZJ(q(&N|<=Vz23QcI=_c4Vk$1CGP2^J=cVC+Hf7aagi_j8*@EKY zaXRvTNjl<-=Oh5{OKbzXI5LebMh$C|&EVwAQX*-3)%QP*a1sXp<=U z<_jqhnoobClN1`oGUQDta z(*5RAd>9r`r#Swo1!gp&_%GtM2hzUL)Y8U)-JLU^-(YCyjzy&4vuV@NJJ zwFb!R{St%h_TafCJZWl(X3I9o=X=(OYk4){pDxL=z*srh%KS-zM`-7E5qm+#EoDnY zp8LlG=IB{O?zUKU5CM7(r|q2iOIaCyZSf&Ko*i$(p9QsJ*N9QR=7CTy9a3M&_`yZl z^tz;S=YZ&rZ(ybCimtL!QyZ~ z|23M-f7l+aT+;e~qM6_Z`SM5(9ni}oE$vB@+6OJ#g`IsbRl=ZW1b>a`r{Q^y#^6I? zVy$Ex?m)~?_g#?J>6Y|pY(-1Z@HQs2?AI9M#h=A&>sWuz7WbL zy67qSw|WCyWa6Bz>QB2HoHs?cjGP)o>swnLR8>_MoOZut3A=eZh-H>WsEzQN8V-ZP zGC*5TFZyA;!vmj6YVC695p<;5&V(^$ig%J(u4=IUqnl8L{g`Or3Du)1^R^`F5~ z7A9T&Y#nB&DC12fHZ0+Ihv7)pk0}a)lw3-1VTJU4s>UZcwpz+xw12HU*HV4lpfm@# zP^{G|nYMT1h3fIdEj$I_xcfO3Eu0+c@N7D0s)zj(xBuZ}|0F60$sai^A5-_6ztgs} z3CEd7=I#e7sA+P>0}XFuJn?LQOsG%h+8i5$fbWP%Z+tr(%#{=f#~&02O!QVzgpo}6 zYRojBow>#Z*(s{Y$ zn*NrFZ;4*t+l0D6&CeSm~73+w%&t)y0dq_hTmY3|-}Z8^9Se zLx!Y}>{hkSX<^b0+~nq5mdq9J6I^M)4B@Q8A0PLjc7tH;oGB#yx8l)@sdw35`TNzW zs_4-Gb~{E{89CJ*=Oaf|t2d(^*4Prxp;> ztjYb8K6>4?ldNIOzHJrxhkKwD!lfxsO0XKnkkr*1Ic=|ZkuP4*^m$@!mj^S%KD5C4 zDUV#eV%RFHy-XZ9R2fcLITcQ6YZ0?F*K+R`+a~6+%?rnE0$omKdo0H+%%Rg-G#Sri zwI+-j(;<2@GwsP{0qRai3)VQ{5RQ#%N_N=-bp241tr)TpKAMCjg19$)|h7{6=Vd*u* zTUNxmhJRcSs^COZG2Ncxys(=0nrm)o>+)S-Ep4&xINv5BBea~+Ityk+y^U_u8mpc1ryOT8WGXXv# z3yBjxGoLXPni#?k6*8zRixhA>n~^u%wqLDvWzyQWm@)n3BQYIpuOaLsPUbI!M^$^P zcpTymN3(XE{AB6yVEfD;A~%smK$}rSKbB|W6l2ME+oNDegpZP(UZrA^4stPWVE0!C zersvw$?Zk%s< zmMO92FD45mAy<8Zp zJGXY>(PC3TLmi3RbEk=fz*^b+-)7t%>ZQIVYOM|U#sp=yhutw6k6*(MentQ#E#C)@ z=$}zH8XRhz;>H_lsn>h2++2Q25YE41lvM8kOum;u&+%&qI}Xq5toCekEx%Rz?@9Ok zPtp;*?pFGDt$Zz_X`+cMh@*V?ja-W!kl@g!M%mLVq{%bf=gt#>baw9QZ!F}ilL3tG z|0Wxx?h&DJ9s>>=2E~SDXI&3DwyZv}1{mJ{;xs%(nAI<6n+f_M?X3#4tM?Wn&TL65 zbZ<&*u?vlJM1dw-)34AI`P!H#daqbsvv`{eS83LkKLr5YYr64A(w{s zh#j)#AHLVv29};9PYgeovGW0%Z3PJ-?qU4QTR<>tBCCOALOYZBWI z?HgPbgWP0R&NUv(5kEOCVuRy8YauHRu)P->6&lsf-gsl()NW|9G1Ji3krk{R{+*tDL<8O^(Fes{# z8)5vw`Xk5pf#X$x^YBs8QfsCeDF51mc3bxO^Or_JefzqSOI4o*^Xn%I|GPm3ief?e z?oiHXYX2QIsbDEj2&!?2`-$32P~maWoRP=Yg125qp$xcCr>Iqx1QHT!_IK3aIL#+> zC0Jf}gZA@8rM0u=G@nXbZ){7&Pccg+Z@=hf-+i@UEL)hbN(b$b zxVz(MeI%zLg+nb}Sj}E>Ua2lK8z%-Z#ycMm$}esk#2b3xe$Zu)oSxLUdJ1bPD;+35 zT={He_|>VZb@7SY>5LO!z8Py6T{8Gb7akfQ%UKK-@MQGM;s8DZJ#i25V6?^<_J>}K-eeYr0_7hwtT~R+h z*s`<=0dpd`KUg^5=iBT5$J$#)#nohOpa~(NafjgU0fN)GySo$IT@oO;yL$tH;O_1O zw_uHh;MQ1hhug_J^Ub_7v(~*o?yp{_<@Bkly?0eT`+0Wd+@%a+o;gW-iYUCf(|$=# zg?>CV>PFdNyc$#4(8Zk-|imw+)z#z<8IXxvGh_j2cP{M$#y8GT3qX)@K z<>8vCyn-b&Bu3*QOF^Oq;8{ef{=FYLN~F$;A6=NU%XIEBw1OtoIx{TnDnwmlQp*iW z2jo_W1nB_n)ZlY?ri>?P#F;%J8+H@h+ahce=GE@CE?r%9*fg|Nux2-E zk=5Y5gf1=Wf26oFAn$wX1|cb!NijKSIIGRrLIv_feRJmGKyrCmvl)L*F`6IZgU zKZd%+DO162UO7{AbEWO1LTgq@{_ zbmuy_pQ~CeTNxf*Hr*sF3Ai>dENW}L6J+b~xXdZlAgAWymBioLsyWk_(j5G(Y}Q_b z625ea?i!FazFtq+N|%N{q8^!UO3GZcKwmwVEy_Pcv9qM*GDHbpHIAw|H_vIPP{#+C z)y*{Y=h~$mT(Bm+t3(l-XQC;TJ;`$IRL@;D{Uxq;Q%SJ~;D(9u``b%5k5D&!iQ9|P zGFMo_my+G+#RUF3gAU~=D3SuBamt?b&1!ScQaZGlWtnMDj63yuDSo-~QBfk26%=f< z1%e}a+fFJ}HB6?9&W*x8uZec%)Ca9HFvJ%jXX+cpI;sz^cdg&*e#zSK(K-Cimh@GW zN=(8E>lJo&svYS!?wF?DowOF6*vIcUMAD8k=Tb>g5pE?%7}Gm*8yb-;c8ski9`C9t zAbv&mNV2Z;GKU$|WwKdjwq#zxu9|k5_ny`%pXHq4GZznikY2 zxD(ao8+}FE_S?K>xpv9d?C7JAY-p3nkhBT40MQR;Lea!P{%F~acvStMByXO{G_f4T z5#v|^mjGil^4R)na&hO{b4tapbTjP9G(n#t5+;R_={Or?tS@UP1zY9PLihDK-gLCu zCgqzIR=XOIdKiED)vn5jBF5cqiC}URC_t4JP+cRufBQbvwAhE^6?Vz~A)8@;Wr+G5 z^mGTd1|#|%QtDY`G5(U*qZ~`6%{n{|snohCLvdhz<4vTyjY2KnRi6JGtlvXdP6BJ~ zJ6DMUZ4ilcNDRH+&Jn0{xx>9ul&>cl=ws8 zjbnB!ooZPps$_0Up~Wsf+GTX<96)AuL)n1ZkEUjBi)b#*VBDrJ1>l7ngR>{ntduf* zzP91W#AL9ye1hc_x#Wjv^fd$OM_p*O$-~-F&UH4kk#~4N=k~EIUPT$16#7MU-TQZF z6uFWVO5o=EhP)TGgYQbE-DLa)jIWXwZ?!_v#FV~=ft6rr85j)_bl8*S^kqw1Mc|#O zA~`6s&qOm|*yF?s=?cm2h)(FSrhKKXT9cB@WIe4zFlOU((DzD|`(hf{4`}O9A=abG zOsEI?=nVrI+R5sz208Y2OnKD#>eE1gx|4tR^kEQG9~e=8m`0DBIrkPzszS(8+w6av zvn?7dc^4&@)br1hf5xRaSbrT!M0rsX zp(qu-7GGbRM#E)S;NO(XYI_MP!bn#Y^58WvRiz%d{}s&sxW_-d&E|Ykyj0MBr;_WrEx~1GyVySCR6$49rKI`Ff@|^*iAHiUi2wcB|NdY9e&x?00*&7s0h0v0|0`PjSG@ldLXck4+9{;+{|4WYi{rLRX+5F;e_cqHZ#=o~2 zj19AYAX9VT_E&dnxxtQ%l;zjf>P*k5Qt^)y1(n5oX@Yi*{~f8HDh3>3%<#sBaXOzz z?K`b%A)Q8Bx(c0!1c_+;;B$>C0iFX@8jiWu;8IkDgE|E>vx215)PvQmi(lF~-d=`X z4$ym#=9kvek5RcrCwb6PP?!X}L98>i3{+Gw04IlshYfkm%Fj#OKfg~Bd~zt?k`)&Z zPD)OeHaFj4by=A%kTrucYu8T<5~=0E17_|-e_t;!2z7VBFuWL4{1e}*JJI|+ON%i) z_OkX>9KntrC!x0q>DhTP$(LsS*S|f101-xlRX&qb-oAPL&3=s)>i$Yw(_#DhMC~wj z=1^tZG5sX}H3$nE`}H8z<-Axqe@r(#CiT$6?fJY|R+GLgKuCf-5Dqm31R}iMN>uEv zNe+GW>>?W?CpD5Jo&P?sV;&|sL-@-8q>g!$gi=X8o^}wTp zs;-pwcD~zID7pesorq&m=*t63#?R#Zxo2}Ml5W$8yXoxUYgSFhQ7<2}_NQLIfg!f}+7T|DdU zTI~>E*n+@+TKh%yn(nKmnZx)rvk3pvz#QzxnC&Lt<7{^9T>r&)zMjHwclF{d8iTH% z5JcZQJHdkAz+A~a-fYI6HFZ5Qa<9bzci!G^l04JeE!D%vt0)RS)+@QsscQ~nYwD3{ zYin~%<^iu%!d$0A=Ptx|V={P7Jz&~^f-XC9`_l!Hd^c->&P!HBbM@Qp4P*fbS;H49 z%%_A$--(U{bq1FlJDIX(OJdW0w%XR8n@3(+=rS~Q=3N4D`@10voSqX)R1%rmEtjgA zU4=7^Xu)B?Vk?Vg6?;!xn>%2r(!}7miFx%^$nDj2?2GH!y{WIS=)||eR|ca%_o+ik z(C(F%l`VVO2XQ1>^oG_#Q(c72vCk6a#qP~4EdtAIcovtuWr!e}>YDpq(Z(m%&Y&BR zF8@rAQ=WePrpaB!swID(E84Qe5r9VHm)YIen}fj&v3m=W@GJR6S>_I`omHpJ0qOZl z{lJc4$Ta6t&ZV^ea?=wX8_|@D22R7v4vie=WiEY?BK4FfXqS5l_g)z)Y-B+>7>!wE z(ykRV_Fm)s!(Q!|tE@{@Vk**i!E@7nk@vJ>euE)``i^%NQ*Q)daaX?-a?>3A9V zl9x%P#1F$(OPc9-615HGDotkCEZ%O5pv;PiSNzf|u5;=Jcn6x9HiD42Fs^*myIvIA zp$~@3ru&9j)^@6;L7CC$ZPT+U&2o{S#Ua%bq|(0*bRzy$Xh!45*{s3W1U5O z>9V#S)b<#&{0h$vYT%^v zf(ODC)ZjWL-r&}mTvD<3R>3h( z4QdVNk^iV8!$@cDwy-2{XS>=6=Da9)qy)zg{Qxe8ul0A=U00T*{&QbrlT-okz90o?YD~5d#V=t) z1wYEw(pj721{8JPZCa!vY$+C{EKb+im{@^H^`&#^hm|CXi|>iBsrU)UDas=#BVvk&S4Hip9*^ zm7KPGy)&1YeAW9m)7l4h8aSJyBT~uz)_qM~?@~5I^asUadFyRRk!xp6la`vom*(=6 zCEm4K%dcNv#dJ$V`2qJk@9r2pphYwSUL6NvDggGsa$8J8PdK|hFnp#*6?~}XJ0D}K zy+3Z7=k_R)OUIbzM?d<;!^o&p4{%tl;|Qg7_?d`PDj7@6>V4-*CayjhLuB@|-6I!q zTHO2osHt|pFf)XMmlg{DKP>F*?#hOu5Q*RmgNn=v&N0xThe1atl&BWT7#SITm(36c zch;VcXK=_?=PKq1aC>Y!R6X@W&^d3>%D0FFe%vE*weM@vR12|9j?be zfO~a5c-J?lo38}e%*OzCVeGFAC-9ETUtOM03XcA0aS_c2*!bs0UUtiAx`H%9Rz9Ha z)Ej|J2BPBaS6W}gtj`2()Ny5vb$Cglb62UQQhA?z|8fgO4WQLb+zh=eqv7VuOP`@i^x4 z25+_0jKOL(*ZY%?JnrO17&=9-UPzXq_hqsxWR`ABxi176aZ<8@M7pRt#WD+yJXr=9=qRf{$q|$8O4}C5Jb(0G<9)m<5k=_coI>xjFFlxP* zM1S4SH*%-5)(uCdPUJ%A0`K|uRf%pi;nsqyGOG7jMLi8N#r$sDNhjhYuS@^0^}as0 zjf}^O8AT&v7`FEa@mj8>JT07SeeGjzJ4^nU-jZLPN{F$m`xSQRc5rvzEwOc-HNg@s zM16<5nSq;6F}cXhx5y8@55e+@#AQZt+4`O<`YPt((d9qFbJOqeY=7!@^d~%*bHY4S zPJACKM#n_ljw+%V4r4|T=h>^5e>?R+541e_+_K#~F`X|gLF!6;KdFYtZ5i`~F@Mf@ zA-_6|pD@cJO3YhYaoC|RJ3NYZd$$|xeDykUtC=lxICVyLd)^^ZJj3eKbi2%cv-c~H z$EZsGB>Gq}86!A!xqcn@qtThIQE2-9Lk^$EQ6?1+Cx45WXnID$upp`fh2(_;BeIK% z=}kU4aA)lFYSf5KT&}R3DzJ{T>(!K5bH7MJ;IOWK zdYuSK#P5v!%-{-Rih>=~wFoo^M@_3t zTq~}s+zy8M1np0E2R74;>u=3$FP@?QK0HX`YpcEuUEHM*IJ7(AS-6f5Q}V9)vtbVI zK0mHL4@2!RrKJCkt6e*m4eS0RbaA4DYH^Cl+^(d0Jwy?U#JSNd?igU;v7PL^>U}*o zYZO`>{PCv;P5GvH*U+*<7vl#ItwYCU%3;&0&r3F`0!d;IQ(*g~;PdB}n~lgo)gJ@K zo`*M3c`Lx?q5W#f=4@B+S=$HiG4f)$#PBVg=?2tLZRC61HkOte%n4EHoIGj@ecAoH ze?XhP9m9JJm`|bQJs5@DxNiz|9~b)TF+;U$1-&wHO_mKk0fF_z`I< zKf!I;a^MU#Ol7rJ`S zVNbthc&6&RYm<6BpT_#m?)hVRZYOKP(2aAa>pHX@aklJa*jPgrP&j`fv30Rb%wb>X zeOeE8KIym~S+vL@ntkspvLp<{f|`)PO#ho2|7+uA5Q@tJw8^wy$1O#KpMUi@UjZ#f z8GXB`_5y-TVuII%Z`xj^I|7zNg6Gb__Eq%kW z`tJ_?VTJUIf#5$dF#lD2m}Ul2e;i!RA@RTq#)YYV=W#r{?J@$-;oUo+RTuTyNNVI( zLDkOQayhxfXMWu`0{pTuN2^K#?FB^-?A5V+-twAOE8Ox5K8_JlH*PgNB2wc;hHa+9 zGpmd#PZez2fnJ`&Uh`LRCQq|s)HWnlsOh*WPbHHdfIXqLR;p$V)1})DEd6I|RzzE) zx}Kw(scz_2*-XA(?yV2+1;D5)TgUNGW7U0!oLuj@IU&Do(s19qsS`0qml!Gl!k$Ln z0DXFR+&|m1Ip4nUKHo0LD9CNP8j>abZMfv5rihr#nkfeD4M_~(aR!5;r`6vB*h z+*itdt%RV#+~MWD-#aUlSbk2zb1>hOMB8Dl>?heLsM{ht%$blVtVA-k77w&U^u;w) zkbWiYvXs0)N71vd&B3NakIWpd3zAQ3{%Z@ta<6=YhS-LRX|g|&bNkn1Ik|%O$d{H| z6&9i?2rTGt&`MxqxHX(=O(OSSIS}@UnWOXjc|*Or2#JvUy`JEqET?%MGFl#H+(rEb z+P;`q7}YNd`i-3D2aE6FM`qg@vg+FvT&oDCSO@Xw(lGvWUB1t2)jRFzS%+=5p8?gC zRIDCnTffE>GT5bW9LG|27mnSAsD@~d56DDAVKLsG!A`dtcKNLTG-e7Q6o9JX``Cug zhdQ3NQw`sEqlt-aFL)~e??~Ip4EAGh0Yqr1V@6UkpS=~NOtay#FQHbh1>g(pQwX*p(1>G)CfmEh$rp=G8N}q!7)LlkK(^jbu%?q6#2>B?)r!C#g~} zuZ_cAj+MqqPCyUUyl^N{mL>P**^x?-FeCDw7xQ?EY^fbJzcoth4_2Qpvuo7z(8Hy( zM0auJoV258^5rvBg-ZeC&+YB^J0E-xu3fqEa0d5e<(ovxxrv3@PBUqSOyW@(D(d0a z0WB|>p>U6uDy(BRhOk&ZO35q)V~5lQVIzui4%@29@#0hi81OaiLXP_}4A5I+dyueZ zxy9&74jOB**d^`#v`p-AIj7l&1IG{#04U6>Dgea=phL0tc0f9Mgt+&c{P z^dgXQ(;GkF6ngpN>nTZy2zajrQd$OUJT%aM<8+6KE^z@UflUktp4iC}h1K<;@V*lZ zS*sSGfG+6Y3shcDNfI&IEj7k}jRoqU@a%nAlN(?P@`^lNf6t}c3;(>dhqk6oX{T2U z5bX8?kg>wS-1fkcAWb4o!tbAj#>WH_&{eRThx)PuLw(H3OkLe5`W>Rhx(M_2j{|~ z+^qLepeV~-C+*~rD*QY5FzzE-`T%HP6k{m-?%HpN3E&YX3E&x`-BH~UuZ#DFpojN= zYTjv26RyX)M!C+5{Ifs&r%QF;2}6VE#r7`_1azYXi8qu z`EZrm;&xW?Ryw2e88+{Nn#xCZ^E(wh);zJw@3cko%ex~98(OVp5fNC6wWO$3W$)58 z>F0Dn1G?QABMx1i(fPp=irCgX9b;qc`=w%WdnF0ATFX4q+jbWEaHU0+vf_=M1!l1wbl{o}jRB+)n3PpT>J7%NmH#Y!=tRjaqlz82@JgmcITa(I;t z6|(|2%FU-stqQRi%^vCFLt1@i$(FZ9=lc-*oU*QN;D5Ue6|5sbBu?nPcve)nj3ana z_Y~BZZi6n+{y3?7WE;*I5Jm3X18Oad9HJQ^O>|rksU_uhl$Xj3(ki6_eckJ|YMm6g z4;rEYzvzh%TN|ne03gN`V(7+GB4RhB`5$V1JnC{dl+Xt3AJa@&LB*SqLu5ancI7{V zvh&Ny$1!6L6FFXgDWK@HC&zTe%EU~nna<`qajIYDmMRE+^_CSrlo?$`jD4*+_yr6X zXlGB;^h46d$d~pm}s4?Nd0*uBQ>~Rtq zRRI-;$)fwR-76MpqQkx(S?dZ?o}4z@c7S7-lLMyFxAWddVLXzZ*FzRzc0&l+%tP|o zh~$VZC(Wq~BCKdVB9w6j`)nKi+3?3Fm`T6P>?n?XT`}ZeEei97Ssp99vNAh5h~^2+ zF0dhayxuo;!SM{MBumzF&EkP9^T=Gu2`iZhPBKmsY?}K7%8BlI$@jaWH3X++;q3S8 zy@DTKz@s=v+!v_{ZSnUA;skRZmhUmF-!{~ok-u;ubm7rbQpgbt!@_^%D!O93ARNe{kN1Q6-}dmQqZJH%HaXzae&%HM=hu2a$!dQmL~;#S z_)Zd(v|q%(d%Lh2Wcuj&7YOoyM!qBtHS&hYA{&=KSbGJzl0m*zJVIIW`wJ|eQI0Zw0nT~=%-?u#xB1>SSoO~sD%SV-jz`=v~n76Ef?_bb~P@;kPd@`jGG0 zPlt9Mwl&4ngsIepxS^ad(&iIZF$5ej$-4ZmL6 zahdm00+@s+;M8P1JPEAVB9z$Z#A3GTLL1dj$S5AaUJwwTLzhd1hbn19d4fljt)fnt)Si?*Hzhe z_V2jCybKpHCE7woe?JVX65R440Dm1%=N$33eJDCS#Z2ti|{FDVJ{% z_c9M7EB5QXMyL}@jzm91o86RL!8~>DE8~6K;-1W$FCnX>Q$?5o)ixOny3{OoP$q}B`J<@e`iC3$MBNN#5c%7&3~e9L@+gmI|m9~Hvh;4YQ2K( zMK!%VGS9a{;J?^QeQKO1*@Qf3X;C9P&s@TF;?OSlp&nXKSaGa;Yw}dnqg!mfQf<8p z0n*4^72l_K;KOfoNY)VD_Ym{qmMN~nK#v#fu56VOk4VB&g`wAlFKYIcn0AB~9Dyl| z`x5N!?n(f*`+hfyX6#v+SF1xkrs_`Lrh$8;|2tuSiT2)tAci-xu?G*a1Y;-WMl`Yy zbCAK|DzPxajZ=#&ILS@y^{G3Lg67DSxGq?y<~C0NtgSCaKp511X@4cYeBQ_#u(>#) zi?_X(OGv}ft9!m+uQ1CV{WB`!l7LZnQQ*!B4n2?}8Nf*R^Fwb23wMrFUSjrl(ANux z#&jPS%ES@GP`dpKfjN%cd$S+W-?ID9fjnZjgG2MT%^R!}7b|Ms*{O zG6kB>ESE8=mz<#c94=hl;?no30;0ZCTh7H4&-(QR&}zMt6RgxqC}rDqvt)Bl6v*ea zAD4pH5B*zRcZWeL%Fdf(UW!1MjeKM}LFsLaYhyKDN zSxU#m)5aXK4OrsYkv_khGqN-_JoTMf%(c^Gm*9m{7R#qYH;W4q3$8uJ-oGMkksinI zpaxIeeGsT)t()I@038xaZ<4gp>m`cS91!}NF`U+u{5_XiP6PWXbfy2VT<98Cgiv4M z9gb}x)~!=S=PBOD7p8Rn=Lb>b`);RF9vcnP30Y+h@E^zGa*C3Ndh_U`*=43U)YxUD zeG?Ty6@o*!no=gwg%Pc1PY}f+ttj0;>&3Q(>7;8iMfu9 zpVt>C`>|lLCe&2i;!97~LrG9{!D3`G!vn9i`?=9vo}j6>*!46gw9AW<1O>6oc!em} zVD9+vd{P8tIZH(>m?;f06}%pk`M3j7{xA_2_RXZ7jJVb)OU%Z#kvk4^)MkHXk}FNh zd@0d#)l<1FU9@tzX`knY(>YbtUnzsRqPN`8;3N+ ze;OeD^loEldUmk`ne6=M{Ymg1!3F1(I{@~*&FfRS1s7pTto?^~86(*Yhow!H>Qe8s zy>`BY68q4W7r0L>?!xwVy6jH)Q#RdN>GL5j$Uoo88^=e+osCgN%?p%Q47S5NVPj`j z(Z15mwu8Qy*gr$@9MOwi=f)}+xxE0}d_gJKAzCTg9eM*t?p=^euil8>elh_KlW4vZ=lI~PNd_XWq($O(&zviKC^!E zkc*G?hhRzEM28e6&ClGDog{{|Ex;01MT+?Bd(+0DAI`(-y`?Uhgh2Z;J`Z=t-1gH; z+Y+VPA|v}!Iglzf>gO+XHc5Lx>mqZAW!T5`NH*GBub5=O2qlKBZ;{C$G+VG8{IO{G z*Qx9;QmbI=xrzjBM&{2vveaWti6Qvt96k~yKkk2yp?Ne!F3HY)5s0E-|EgX=yPs6G zEA>36qsDtRkwPG-LwbUe#n8XhQy;v2_7FN_9HizB*e$g?@Pe)Ys+Rz1sxeYDIN84I z!MMFkOx!n8;h~#20TAeZ04t0JtYI{c{B3FDf};oi6Esg8Bs!7VHv`Jpc~^he*bi@u z@26m#gKdak*DVb}x@4uU*S4WL8VeOB=ZS?Fq<4 zORF`okB>ilYKEfJsK|er1oFAtH}b|PvyV|wd2`kyEd%LnJ8oqVqu1(S?z|!A)|ZwP zcg+xI_RB$+UsEK>$ECoF zNHs{PF&PNCPq_M#Gq2|&A7)^ROo4eJ^!{8=3qih3(Js5L)!fh+xXWlf3UNRD&N7x0 zi8H98ogiTU{fn>>@g|VtUAYfymV0Go#s2#?+hvC$pIrE~x5EQzVMx4NaiTC&Cg*jR zqZulIK|7r$_@E^8U9?5$vfGw4pR`lHTyR;Z#co`H*BnuLoKRd)k0wv(qu9`UVbTcdD()y9TvObWcV>`} zjP${^cncOu!J`%26_a%sD5Jz?W~+bttYLUE4)Mx?A&?}Sc5oG_e0QBrm%}v8=`vDa zxclx_=4++i@4$XU=0|}-^P^^vm|zGS)Pbf{9xp}-Lsx_rLssyPH9U-#Fp|c`^!rde zMV~-SKNJJhB9$klDvsQIs{+GPD2k z>Qb@V4T`%X+ei>OcE2>T6$5raQ+j7mJU=AK=R(#SEZSqGaDnNb*o){tMuy?f;oObR ziYhV!Dqk3MGm=|#g3>i$2O+YA) zaqtpC*6qARxF5gGl^pde|9ezp|CX)ISizL9u>w43WO3i)06$K~n9I#VZMzuXZNDAJRs63vbje98>I3VaB7VWH1cO=?D03(b*-0^?dXpjjJKUxKtmDQwGc zo6sbiXg%#^PgL0SD^$MfkhdhBiARso&-+ z3Z8pKs^{-ou1G5KEsFTuCT6b^3#?u^Jj%KZEB8j8Vo)`lxXYVamJ!}wECY@7%U`a{ z&ON5tDBDjmPK+cY{jM@S1)&%aUq43dG!*sf7uBDTl5Z$TmXQbpQ&I zVR1cyaES45&{Xm}H;#Oz@TUi$=^qyk1$9swG%;jI+HC1Cp>ekr?XB`-9rVp;jNo!! z|D!%>18wLU8P!jykupIC(KjrHHT2yUfG*21&KS|5LG*CVamBvvXpbHcbLe%_p^1Qi z&|7nfiWkC`bUMXlyxS|Bz|5;i(w-ihc$KVa7~lSbZ_&1H97b8p6(c}lIs)C>{~V9E z2Z4seX5>B7fC%i1Aj~7Y!NbM6K5o(oM|M%-Tto{xSezi716LOJp(asOes=B*r%Lj@ zExri{ayZAsfRk~qRl<=LVruT79O(RsHuYLKY~gK13{j5jw6sz5I~AIQiBa%?KU%#_ zuK>z!tiT;DcQ+YUPui>&cl!9PeXDny6WMpeaG5Y`3WS8{?EC2Z@Oxrs(5}x=92tj8 zPgzwv{i`cNG=N<;eD?kMgdlT%{{2Or;;WY<-XDLX<_TH5!vIxsjP#-~1WG%itv7CD zULJ*vPX!?J^18;6u! zMM5s2#PPlQ7Ft5eTUK3ean}QAYwO2;Ah`2cKoLTF(q1h|gj&KeX@-#>qCpA#b#dUa zmvL561dn4RV|HQ$@d)uPDZ50=X&=M%M0h^#6WVf}t=gJI>GA63yjP3yWiiYp$%6+T zR`-cq;GZK*C5d$(*G&qLjfDH4?-c$)_N)DIMGVml&_1I%JanvivZjh?=;#he(+lm0 zR`Q;cZBjx~4n(o&OO(*>jO4#Lk`(*=AMyLoH0XaBC=~JZb=*MDP>|n~`46&UD+Wk= z_2DTXnAPi8#A>NDk>@q!jo)RWN^-e!jwz{4xw*S}goL~m@e|c{LSj0#Jbpes5G#^( zgNvPqt%1>Bx{hO8U)-#L-6n|)nZvWR{9Ov;Dx{c1Jc~B(8@j{YfaizI3ag7^RTY_8 zKVq942!jUir~3vS1ocUd*r<35^Q2Kl-0L`$aW>cJQda$QI&~dR1zhmEB17^#)@k-f zl1IuYiX~Lev8hv}N3-~Ps|>1T20Y0}Lj9dDYE7vEKw;ur*X+-{)lFFS8UYG$7FYO8 zoo=u`f`Glpiixg%mm*nv_l$bG8JV2Eh2@(v)&Zw3g_MD4e5uGCdCdiZ(oAm^_VvU5 zQ%jU-Ge|MI94_~V64?&g#cqOKLdnr;-qJvmARkAjv+(RtF*1yoy&>!}QWu|Hb2y}{ zXQb+sJYE}4HL87O{<*}Z3$Y&YAZ!Dp9)-R5>Yx&US0Z|E)EDwvvbX?W?ps8nzk(XBjlA%C=xIjZ z$esO$F!IR4#)L>VIr;Tm$hEW%B8r2H<9MQI0YeIeCkrOm>h;+t4sT)UFDepQHmPNV zi`+91xOJ=OP@a>Q^X7W_s?{jWsO3QPD{by77Cw(Z9qR83D-H5?)8U%u6USdqd5VoW z`Z_yMCtB)f>q5>Re%X?NBop{)rW$jn5jykS$mB`Kt5<>m9|HiK6GL?GenkFZ{=;$m>)H?N8}BvC zSBUj8{{?wJFjFXX8KOOpQn)VvAyD0rh>+&bBF2z`8X7`yQ`g31CF#w~>MQ1?w-V6}lqDlC0}*N2^ye{^2o!Iw*^kDa+#RR-l;i`KaH$*klj# z6DlXZSC(YhmdZmJDHpsNH|kG8{T79;TIFiUMSNpM1~VLn*Myd-#^wE1@6r3@t| zT_rbXLjTfo${r(Oc78Q^1JOLyUS6jcZ!PMIfcISy0qsFL=Ocv%y{1-$z^D zbz^HMkTNFSQ^R~q+qk2cX(AUBuA_p=1jPuVt=q`$Jf2R_fH}x@V2yq&Jo|DA9YkY{ z!WyCWL9C3dkd5$WULx?t^{d`X!$tmX4=;C8w5ad!*LpV}r4KvV`IAJy|Eh6s4E|B% zu4a*BnrpYgmZ@cKH#OXON$@7$a8^<-_R?%p`vGxqe+BFL<@#QJ{kLrgVr$+q?!%IVAgco5MT)$h2G*7+))n8deQ|0wp6 zp!UjB$==g0I}*Y{P~i*VoMky@sd*aLi1~U{PP`jVX-3@Sq_b>Ebl08o4VdEWN_mxN z*|dLF@h>C#Juxpy{)UueOKkoqnm#n3uSs@3JsB#HhNFcMQ_doKH5jssm!o)=>mMR1 zAjY$oSq7il8SB@H`?kRusTRX(E+&jDWGI!E$<4P$@KA4*iU?krtd7{)JPM^XIAqYF z9?z>N_&SyzdM|(4UuM+w(JNn9riduepR{ecEsjY@OvWLvhrC~&y#qsyMB~*+X zbZm{3;uwpLN>7am7eh_2ndm^w8ejk;$&AsZNI?*@Ybf|MoKD-fkU7_CuaCSLI;o3T zcUa~OLpJv)F%aOrmxJC`fieR4YfcwhnZ$@ml~=;kKA6-iT(mdT@o*9|#Eu`07O`>= zX~eo~;PA{a&-AmnCve7L>Dw}{qyPgnIZ+7b^NA@|aE{1wrB)^LvFYlx>fj`KuNJh% zP*&{;0hB*|83-CyXxvd%yO@ZQ=4WRH;m^J;N#57gX0%GXstf|Yerp5^=uG(J>1#~h zg=aUhLd5RLu}LSDyuamTB`jJUrS^y+j#Kkaf=8-{ujshEDt^TD%uy~7=d_haF>WjC zPq`Ehj+9p#8E=PQ9xgx@+r_r@Hh{dG`nLOnOU|}#7)SNakmkQ@7NB}3sPaIN+v~5H ztsEOR;pSz^jBXCkD2I;l%R7M52zaQNztMqunU*d&r;P6IVtei_UPHhD19z~&P~EGK zb`-DeT(&EonUdhyQb*inWb8UL5f^JDO|0h0bt!5bGs=bHbDW{zK8FP9l(c4QZ!2U@ zJzGw3wg->j(2&T8N2^czrSZs5Q0!85?IZT$5D#PdR}rkh;Rp!yq~2SocxSG`Cl7iW zqU1q!EQR}8x4#jh|7?rPu2S&qhw_(TD1z?@lFI>BTrb&FRpX392~ULJbSRH0t5=7I zdkK1Q$bqSv(DyD4Y=6^hJyxR23dv>llFag|yA-Me8g0D0yeYZMxvpAIx69;(%1TeS zWSU09na#T^lgltZ6Zv=GTULzWi8-^;k%{@aiP8TcpEAO9hRnA1&o@9Z&2EVpKj0Ch zEo9aKj|tR0=R{NebQ(4YTi(*YC$CzI=p3>3s#R(R%Rfm|ZMLvo`#f7Okm8rFgiyF9 z6#zVsuhL~k2~M?}YTDJDE#l=!{A%L6dU!YzQ<3e!#Ro%Rj9h{&2w5$BEr9ySSrw_< zU=CPVePt+WJ??k`{=baR3HHm_xVsJmZIaYKertp0Z<$f96;RqR^Rf(9EqO5S%aB~y zF}?gQE=AFog5TR-Xr}NUz&)iFSpr10k=5w5xY5?-Ei6c`(2JaRgypn{&6^w_hz^SV z`S-1g$?pVe^tQ}B_h0i#G&ve=5%&oeRV(;C#k_-Sy?x4`C+Omb1%IQz_i=iwCZLQ6(gt3G$(Ftw3AnGXqf59Hh>`%CYpBnIDdJfqhCvFWw&I(RoQ?kTU(24vQm0I(vf-S5xY{k?iDPP*r0C|cr)C3 zSE0CksU2#go0?w;X10Pc*-q429g+97?JVx7D*w?qtBA!A329`7fZe>y74&y8?@u=` zBVWviDmGWf>jvDjcvj3;sh6!TM;vqUHjy8ddF5mr&)Id6XM%TthwQqE`xPe~TtwlU z(U4uejoWVm@{0AKTFYh2tkw(dt|@ortj?3a3B#0pq1{s|sA2F&a^~+AZ zEvp!xH*F0qzna8umW#iWPd`VhqA?M>=Vl)wWSn0a9rIQ(gonpXR~g<&h2b#NWvX{+ z#wb>Gn`dV({sPHPKZ`th=_Dj6*(klhT||I7F+zsOSNyTk!`-}e&Ed^1{?rN~BbT9z zM}Nd+K{3$}U*(>9_KqMkvs0VmK|D|2H}32;U7z|KNoFjweqCG;y>`l#>OTcH_yYwI?sr`c6z{hTpdg_`2t zq1i;zN8{Aaz@P{=%tL{QjY6ii4fTg19*cL9q^CS7NlCC2wRLrUdM3N`4Q4gCoGBfH z8by=Iiv%5^nv%~EOXadF3=pnU!ndTuhb*5HvSerLYBx=J684*FTQ8_)Ow7RGn1gBM zRZq8uYv;eYufN%E#ilmj!_aTj^hXYP(RE5jW6oF_=imckSXHD?i7iT&xqh?H`XNzo zG1q}@{|CKSR-(#{9U05WNb+PjFR=z3R)&b)=erd>tDls*oCnjS3n(l-Z8v5zDoDfv zislpA^y&LD%~l>6tR%_F>M~){qzM_Eqbd6LoXM_KoW@LXciJL^-ElcPvIYtv7e~`d z;Th^y`dtDLRYX=AS@;%Ks$`7ZZ+YxQ7sbQktPav1QGjWY5i8ByK+9D=S;0jXR>e^W z#=!k%5V;ljy{HbyFw%lBxfL9%-YD+7cgR6XMU5WQCE^;SEqSfI4bxr@cZUUMx4&*- zLIEwojEg!yX_-Ym?GuGIBmzs@dR6x8V?u6S{sM;cLdh6ht*ySM(a|pM(dM5 z-m%9Y6PO6mu>BUeAn91?6|AICMR7)=y4OR(-s0zO^wkY5el8l|mTS zSG{R4X%xzxtX;A!q2eH3s6_1}DMLhL!2(D^{w_^w@#YLgLUVBmk4EzX^DHGf*~v1@7qKYl1o}H=c$@s2%|$ z8!B5^^#O8FNX8(Y(`^a#vh_anhI+9xGb_47VYq4z?@_vvuOAKO&3oLVG|z?s|iaFEyFXUjWtP z`jPlHR9gz)pY(=rd;|;|TTIFySPQskH|-1s?tB*{;8T?fVUf%}b1Puo;PE=R6-%;% z^YRc{F1P7eeT~9-UMB-0nyO-dS`tko6&8f^T@Tyhads-fr>51_58zx1P12Pntk*G^ z{(!RKKOU+8w@>%aCejL64PrwlnNs`lsY29BjW5zGICwUA!46V(Qu=mROL4cXH>v#z z7|*hyg?nj>T<}M?GH5fIO6_At%{WfWV**S5+vVchFGofC)gEa_5mrj^z>yZ zl0VblJ)RISr*^REDtvYevAv9)I_pP0$HL^G&WpQ`Jz%pi2nTtuo8sjz#2P5kQS53A z9SGu%k}1k1x)2l7Y?=!Z7Y=y|GA7h9rBNz==4QLF_+Ast2QpNn``E>=`gHPrnAO}m zp2rWP^08Lx2D-=hvx$ZZDtUYG9-xTf2+8w}WXrE!!~&1HowHEE2VvshjN9(MTS@Qx zweNLTdmnOG@0C($-769DfX8V0M6FH=U3ZW&|EOA*dPAxXr>r>Ks6e~CFJ1#tc>Yr9 zK$k+k%UMBGqEwo~kjcr*CS0$IS<}Bv~RIVch)p7D@SAP(epR**oaI#JK zWV@X!?>1&+Z8l|>r*J`<6i78O3-vRu!(|}vWMg%;(!_82{a#*V@9y){$@3OeXNl98 zY1f$kPOmx6dUOFFVZ-pkpYQ&#P8b!%Bj{{6kp?acN`X)3gC>-n!P*wX&~y=Tn9zje zpu@dG`)P=tW6$fJo|w(s-|89P=lj*3snJW}<`k&xAn_2I>*g@cXlOcO?uttBzFMTw z^NQ?*kAAcXB=5dlUvfeIqY_Z(wQALpIcI^_J&e)S1bMqin1U#jtd_Hd zf>$EM|9}ZwHaw*dCbRK!(7h%tjJ>H&m_euhu_A!69Y|M9acWU$8{>F1R zEwcaqxEY%r=IeXa7wWX9C@}^qF{6LTU7tBK6*yl4hWr1|p>QVTl(wGPKfLh(s|Ti%8p_Y&@b{1fKN)eeNw;efyIzcmd0osU(b{bjgH zIe3`x6$k}qf}lCbHHf8r&ikS!AicWHHw1$&yB(r8R!b4s-6WU1GSsX}=8ea}(=_z_L(EV> zWcd5hB*T7OwwNSxe0*Z${yk2S)Aon0>Fs2jQa-05)`h4(EAs1|$etQ|G{O5yTA64j zDH5zzb-XE(vq7Ixv(T(b;)_BH>_alGB?J?cUZ;?5MjRo)iAuU)P^yveog6)XbauyA z_L`~y;+5FW0wTryqb}OSyv*6o(&iW8-B0H7lsV)h;*zsXlG35R_~c|pB1@I!x`yJB zgLOPO?y|^bMRcQGx#V<&@%>I;`2{I0MLGrKZFZAA-nN~Ewwq&)Oki#Rv{E(wdXGRh z3Cu(!T4wu~Lq2Ah-Lg?6gK%T~*WFT+*R_(f)e>z7Punx{`@AHc(k0!s1)VZx9fS@+7KxP-wz+P{`WbVPl2ea#r-? zHusO{Lddm_@B2N8R*`0d*>=`KtXd<8m53m`{S#dt5tV4Ztdtrh#*h@*0a1ioa8~gW z^jFcDIbRF7!$Sf}x%QKk^9TJWNIgRw0kXpE;EHfuZJ@Tzct&0NB#B5jTs(4|)u@fW zcpFirJEY#XZK!7u7tQqN2r9=6HMWoo>JldD+x?P$>cOu}Cg=Avtrgd1V?4iPXPZ~o zg}gV=!c3aX=Fz^*;G8k1D5q<;_pD-kWOSBd-QL&_{7i%M#jrm}& zq8wKeyayzL2G3S)XmN##XV_!T`ktDtuKs7Un%vJNP-l`B#GVncFxtmY)5}*OIhgKS z6Kcc`x`iR~0UTJIS}$uds^P9233w8Eow4BXeyh!L9KuoK19*F#H<`EQ9zpn91iX=Q zJ15F=!o8;xWVO62%k!zOwAjll0>Y?9EG-Pd2T8mvK z(TJkdNZ?z=0IpIh{+f_m+q-&OeyPq}uj!b%07Fs^!L1R^CT7yu2T!xgESYLCjS#cR zPjDIr+C+9)%_aMW;@NIZGh(TE0RS1DI8#bp4`YgosWGUwwTkSWA+=hZUSHa(w1LMh zQK%Tv`EsvwyjrCQ^pIHLyz_aV1E*nPOhjDhm^+Xya_vS#t#mAG6%?0E)1}>v)gm?> z+)v2NrGRL*BU#o$#z~lXHb50qwZgXMQ!T5GtCtUtgQpk)zH^%Dl_3&H_UtF5WRt8~ z!*k6}CMVN@6=+F1!_wR!88gx+LPs~4MC!@z1nEY>k-V6P?>v9hLe)EbD7mtRHQHoT zy?Y)?R~vCUDaB7LHG1&e*;EpSUHKBjVPU3>FM&8kx{Z1e6fI%B^^Ua*bmY0Q8q|sG z-n!+qzf=>8a>iL(6L$mjFQsgF2M|6L+S@9S`WgBG1EbD5KUGv~zhr!$hckYrVf?d1 zw8q>mmHmdoMve~YfcQizqgUgibv3G^R8aDX^xj$~*5x!X=edm;kZsmr{{^J#e&|pu zBqNB8jU$#0C)Wic`s5ECOPHX}2o!R@oHa}dt0Wh(_rn2`(B+1a3AiDt*ql?oUOPzb zsE~8})q@t)xSF;t#t0s1a`)TKc-&5Ol2oCf)pETlb6}Fj_b?zeHFcbA%R1*oaB-@X zC_)qt8|8dxRIiYX?>*{WLVwIiV5xGNi+0c3jWo7AsKz$%jX0}Pe+aV)Db#a!D0;wy zS+F-PjBfVn+KvCkF^v`ZMDQfe2%dK)@&^`cxCL51Y`&5AE&xh8vUZDGG4;bCKR@*d zY6NdY6t=WR zAugx|lZoNl33KRC7#)wO=9vcSAvqcbb)?3JycNaKG@aZdg|iC2&g<)NuSG z+z9Xx<;%bP9cpl(M`{#&7~Tde3~5v^m`im>d_=yFYf0>J0Q@q>wp3?4tY8kJHX9=E zKIb7#A-T5xp&pRC@C_qBs4LaW;d#knbC20GIUE7`7t|cGmojOKSlP;P3BJfmqc>h@ z-b3D+yYX*nukCK7ILGS8 z13`x|EVo%K<{4GRC>OKT!N@q zvPXeOGqewQMJErxL%X|i`aWfheJq6NEUAHEX;*gTaP$bzGl(PLfRQm(L@$>lm6uNldFIY8 zu*o(A4X=P>e{;h{DOoIP?5!z(|lPoj$UlxvN@#~7*J+FXGUX-2+MWBnmY5W*Ze8L6_WccG{mI0N+*j4^G(Aip%{|z>^1Nc6Yq$(1oqLHTLA*yWhSL`Mi`iLaf`&;V?hhYS5AQ4d zw#(bEN`tP<#kBnJz@I|7GN}Rr9Fjg++Kjs#31{T8P2X;B(M{_T^aocC%{_JN*;SYE zq$Xt2m2s=hNfEd5b#ws0lGn{FN~*iD#4dM>qDgx14h_dN_AcN`?n_seC`saXDRD0^B0Y#!T_uV{c)|m1}MGlsw}UY9CzPl5D3QVK?3T z58h?3$nVQv1sFu-C=&F?ACD+bL1%Y6z)rGf<^5%WaB+r`-$sopN)TWuwK+y9C#u*N z7Ikcg-~|*U-Yn^PF%-%L{2y(XkcF9O!7Zr=^h9}{M z=OOMOZr8|!B}o92;4nd_xvy^BiP)O>>0!x<<{?4=OFnCCh*h>T(TDrFYGy0EKA>V?U8i_1 zc|GpxBp`4M3IV7Pf59%L=!0*6lT2V9he5BO0}3-{P$@(;(WLLstW7|2<)u<8GiODl z^Kbm$Te4P_i&a`MHpFDW^N=~h?67T!@L@h-lYv-)_tpv5(h7YheGo(Bew&{HNo$Ib zPo%`HXSHjt)^H#$AjW#U>)~dcX`Ew8hfLj~UE%^P=v4k?7=%aWiDLs$h)$v67{7co z3vb-T*-GE_;XV2h*ncZZaKLPnM|iw)M8q0w4xbM>8+w@ZHU8`9o$xo-N1=YXTuwe- z?Ij&=*|3u!YHig#eU}7E^laXi-y%JgfoAVFhz5Ah;G%ei=o<{(jWQdIi%*gnjgC~n@s34-5{ z)n<{$;dZvwh8sb9!ZmP9$>xLvun+zyyQVTxxlIL8jm5}INls_%eT<~uZK-PH;zM&( zw@Cew5J~9kaD?fa>HgEkQE$KUiSRbZnY!@9zUukZ_NdaGOilf-)C?QcQqf}J_xam! z#P`1s_|#J~O!qujVj9A(2L7Y6a`73LgSbaXJWRN+rL%2v%lIH=)R$>Zw7qFG;j47{ zUiDHjH0$o$0Cyxbx@7tbv7MJ;KH_(=(bNXc_-CokteYzpkB13lr!69_pd=em%A?fW zYMF%i;o*m+NG97dC);n{v<@kc>ODEe?c*?8GZc(2#*Ws_@qTyd`piC8?fd7T} zwu1N1He%aOTD4MZqj0saSoZKLdxA4Eg95lzI9!$U;W+w!*|wC`c{*lT!jZw!fB0l$RvW6$=0&olHKpui zH7bAV$8eK==0QSgKZtz3neP52@>46mc(s9}35d!iLe|3AYM;@`SKD#cZrUv_AO7Y# z<#g=&PW{zljda;OlhSEmo51wcHzv78{+u4^eg(Dd^L5d@@Q)>QC6t}Z4<@Y9t%@)4 zI$b`4FKC=g-0B4ljJVUH1YBh-tWu-Hqqxy-Kj)P9&*yj~wPn-4P~{-Uy|h~2;L&2Y zH;9s*bUz#B$xM6gcg7x!JDa;DQF_LF_L8)naYScHNiMQCrrV-9p~f$^cI@Ks1WvA( zB$uXdYcZ-moTUjgCY)CvU5_VsZNMT;A&`7T|SprBe`aM;f$nLw4qCO#a zgNm{IaSY+bX%I0-VEnMiJXuAeoogP4*?EZdu=%h7Kl6(~dIzmr)Rf%jhuQAPF|xCL z+nwXTej%N|SZ5UdbxX4#qIInus+`&^@%A?{VrOKoEx)b1Gf+h}rXzImKUx6Ppsus= z{*>=W!x;!FOcDSVdh%DO0OW{}Nx3K-PpZoke`iH=5tD3B+j7fuZ3kU(3Je#1&MLLc z0y+cd!4+X(<<1cn+IWStTg0p5@{uzoQB4DGF(khHgg;Hcdf>aC&>N{T&+(w-8m^Lc zc?DH$MnI@i{1>(zXgm;fu6au^_z2WFwSiQ|Q=fOVeu+Zt4M&J?7I5zJ%qQngqy^-%xOMLCKm!bW_ z2CE1R{wsWuewce0@HL2G35P@%&-v3Mvq}G78ukIWK&Vwg>;kNWjKhp>k^n&d*Km4@A|3C+9J1y(pr`;JNLYnq*MHCS zoPR_WmJg`2%-eW?>#~4e7U{947ca<++_!wLq`)ZgMgy4qsrr1f}i0uuwU8hhdAMUDkno z=vJ_7CpE}<=5mxrJrxqhcTN;ln!;=kx#sy+M|MF9x;V~L&RuH%-`yKk5y5q@e`))1 zf%iZ`V$y0Rt#YyzW+-ov(rA8~`4rx3-de2YB?=c1pr(ntO#X6kuH<0|%!}%5aM!T6 zP&6!JpO8)LYO$@JOoYP)E3)^aonw0%k}a|w*P)p|Dz$ny)UPyADoa4$&sdc0P$d=D zgj%O#i0xA3v6709QqpxlU(tFhsB0}%QidoVEqiT@?_P?IpF^QeEU$-uep@y2xJs(d z*9k{cQB5d0MI>11iC%jug;I%qEg-2+ObD7+E}P@YN0a4&tq{?gK}ueuFw=Ck>p@SzNx#Z zkU@t7Ri~nqLK>-}AF%_*2mwJMuW!e+5aQDYTB zIEG_9!&++y!s~EsS|3yLu-RiJ*CM0eqh7m(*K(C!cj)*YmRkho<6c{^7eDM^O}26L z!kKPZG7JJUe*`ihXar`28b68`g)7ISA)6W!mL?2|6ot6pNZHswfDCh())ufK)#4o! zPDsiM#~Q(z6&SS@{UOAJ2p{x0UV=-9B;qI)rR;+dB#i;6OR^B~RHpgU9-q@r~U=KJlhKxED=OprCj)xc2nIbM`&G<=6yhGd`k^^Cz6 zFVI#}0J<-54l_F`kRV2>BS(?GZg2%!WJg~uW)}l|CLf*p3l$yBDBy0E2o>Qkfs+`S zjYHK&%v6jxPe$NjnlJzk&k-O(&SHi?t2d;XN37t-uYj`gIHNJyl{5{*^?&J z@kIdFh{6ZLX2KB;M9lKUYitknf+56rvTb6k4u1;J*W(oD4?j$E0-q=_Xr}O|XvjGp zS#OD5Umh=sRu;bSSuhiS3_byq$M~kc)xv!THo&0%e1jPcvb{sXF?9vX4&Me;!A@b2 zBhc)9Q}fUZ%ULrVCJ=T(aR!u~F?K)g0G{E%25*7oeECs;f!sEnJf<9dFSD=B=5zT0 zN4XypG1JVWsk-)I^wk)~qGvu^+^qJbYFPEimCvgI2D!^4EDy|bW5g9xez9d;V|YNe!T{dhqH}7O&<^{S~l6tt}S`|>5@!6KN_62CSV zbtNlUqs2*~bcrc;CgENrE?uG_wOU)1xwlI6|E zP&{QB`HHhYTYgrJ&!Jo5F5;%-NFFaRAvaNJ+BBSwEYhA|qDBBn3PY>OfI7((0zzU5OE0r+hfu+A4ZP*LX$7f3G6WuH+VR*S!kvFTN zqjELNX>g_YOV_ofll8h0p%&+1c0sKmGC$?yM(4tBti#6nid+W{qB~m^({Le4T5%Ky zTt9InSH3E73$;4*>`o6XOBSLY{xXaRL?0%3R|*Awx+CV83cuK;4zeLO{Y(xkCx5an zO5Q$#pTXryLM|f%69i?eCNUjuj914}FE1cU2S5_KLv7Av#)M?8)NZls(;Q<#Hp0*D zY(fbEFm>9>n}8v!;#YHVOX|Xs1Un}kQEoh$(;w)Fr!M!uFmTm{vlD~EnKNRe;}{wj zR~ZVeV!+86;V=BopmwvxCVJ355x&~iDPldn8@(5v_&WYI49FjK+x>cp5aV?fSlL*o z;Ts1PhZ2?T74|W0+Nu;cP^Tz}dwH4b3{(q1FHz`aG;glZjf4k5t(RdS93Rs66+*Vx1P z@!|&JO5)@zQ-{CW3?MHG8)uW|NFPW>Zf$q(b(<3gRt6wytFoXChnc&uQeJq4Sq(wV zNNtKrk<1+WV|^mlw+PgY8$jW`5(H8Jb#szu6Mnb5;wuyJhFJv11*jYvpYn^b)LpaL z`tKC+{GdMUllQRyegL`P*wVyCu&(hj7dx*U)MNhSgGgPz&YBouZlzpf;kC z8BAx|4)P-z;n$rAo>qJL96+=JrY|r?hoadX;Wwr^X4OI{L>(7q0>gJOB!itkCuJqa z&0@s6Bv*eK-2VrFYmxA;ydxjIZsI>x@rr1_560AuY^VK$se@6)c7B!dAsmu^iUoWM z++$W}pR&6)=d36$^@2Ed-)!h=pdF@tMVh zMFNX143q2}#AQH)M$;S$gPc&k*DkRA8u(3N& zT*l2qHpV@`QEcXsNi>hs@vlyM@5*~01=^$6Je-OW9mQPpz#5*-jAA5*kVy79i`?6X z$<#mJzv$z#kEL`-V2&w=HmjS%u2{kJ{$~3;H#3(a)x$G13Z;E8s_kn@bDTj|C);52 zbt|XNAGX4>NVcy~ZaZlahr_PUMfJNE7W=ey4RSW*w1QC3>V(+7(`$)yk#Ks+@J2@d zsp@g&X2f-@6!fn@->YTjReXjoW|f9y=@K@w@ubixnESw7wI3%^rT@(8@V`06pEapA z>`_|sU8EvXj4EOLAztwaPViSuEN{|_SeehODqd40wTr6O=QO`i!YQ$RvFZ^m-Y=c< zfg+RN=t->x$@pmfr6$Jl@_9Yz9Bll&4lRf|BEbJsIBQ(zzOq%x(We;}cwrJ9*1tW` z5GKe7l6Gi|LVnqr_+n4EaWD)g z=M6aveMpBYz?COIO-(1=Vd`3H{#r=LbMV`EZ`nKtX$C?xa2m!EtP1)5m)k=koGZ>@ zqC7uM;g?-*N1JACJUqP9ky=JskgBur9gb_b=YZMb5@`m6Qlv2~*(nikEdPmxhv77W zzmAMJ5LE3(y{IV_we2^XlfJ{8vAL5zq3=i~meuv~f)zvq7(&iWI47O8qpd^swSt(o z(8BQji$T^XWkM!Khm+YLRmiVElEunEUc*UZKB9P50MUd%91o!T&Kj*NmKx!)^h6A1 ziun=SGhC+MF30;M&4G{rm}b56>ekJ#Z7m>RckwnA^75pJmEHWmtq8ar0u+-Yk zQ71Jn;kK+K2mYsXJ@--Xkd(Jq@F~Z<{2@242(iqDGok@}1dXYZPdQo60B9$<$ z1W1GZ&VzA2H&)<`#Qij#3fDRZV~HRUgP(WkHTt)|?obeOZ+-85`hTJIYCZo7OnSC@ z(EY1HP7D5$so{3HDmv+9P#*Q-8s9j>?zNoZheS%ETcAvP|9JCb%FL3mS;`fS8V4gb z1y0;T`~6onDhqcJmf9&U&||hqx0u^K2{288<%8X$qWAH=Im=5y;`w0sxn6(wbKCvh zML>m^2Mo>PQ5jAKBOn0^nYvZ#E;7ju-^C`K%sBboYL!>JdA=zlLbV2(!D5V87WL^F z|EuiOp><=N4E=(Ok5ut~i8ZdEE*_~m7CMnSy?qQ_e4v{GMBq+xubB^6Rc3ktchhD% z!k9@S^4FKe+F~%35aZviq|auGMU5(6E1csA!GESUJU*!@n%ci9BnqN=UW$2QCULu1{k?rj#FG~x$bZ+zpHK$sD!D<7nqJq!IL3+Xn03b=wpJzF)*wNb}K*Fa{ zcMki5b^f08FKca^Sr5a6~ZQ;k?fM2SMK7^ zx2DE2CAFLj?Sbmyb?S5UXGwqP8n7shQdB`q-GBBH(T#JNc8MXRW5(P zKEgB%)zYy|dMFc3OZhW#k^yCSuIMRD4kBt(^7SIyn>clrD>T%^Rvm~h_$ zi5BJhJ~<*RYSiNT6+!AylYHa*J-i~fPnX0r9YpdH$&mmEaP5bOQIkpA8~RBfb9`c5 zt!DkJvgI_MXgKJ@pdUT)=UlODLz6kP;t3df1EAzhBOaO#N~V=jr*#@TFM2Det6?aJ zXEFH2w4aGY-K-SLZn*d7Yvfz^`S4tgV351@#-?;QPrOF(*I z=TkokJ+lL1+D{37rch62|7h#JC2t{}Z-TjifZ^!NKF_Q5wmxAbYeYj^qIsloKFDfi zb8O@c6aoEK{;SNvORNBur~B|%2+CLQ^AZpR4$6nP)y<)*UsY?`3BDhZp4|`(ipAyW zYTHcn^JhF_qaG1kM3d^wKQ^{{(5X*(1D?Nc`t}^{ z3S7RKADM#7KUNXpiAx;jxL2<$6GM7>GzMZ3zTBUh_w(yuB4ac6eyrc{mLdpaT$s1r z!?}_`#`0*u%uW+E#xl@*gNi3xKl~|gwm+f)dPAhoLg3_r|G8?XAnVP*9@?-G;y%HF zuFsfYGIs+QS`1Co9#1zfP6z1YdlliQrfuzGtHo;k6`V!m9h;T$uN$&Su}pR*r^JTY zRIr4UH%D$I@G2ax*?H2j(W&El8uUFCuubCYSMRLu9f)40;S(C^q;<5dNs4(!2M4EqiDYO>saD}K9Ntxt`uZA|P3Wi7j-K$_Z$zkg+(xRBhI9ADr4kkm z8#pJvfDs;R5n7|^F0<*`EplU3Nnz-oNFE$Nl%b@IQ-lrzSH+W6MQNFQc}VpLUmTJr zG&)6em%{1ijlICmt2Zq{B43K0ywZ!srOBGbmC7uqhs&ck6Tg#bx6TuyUqZ_wT=+gF ztIDNxF&Za5JPHdLEL|&->$rZgc&VAZ>!av|o zwUuZI2!}?-wyI9|KTfT7h_=gqVOdKe1j&mf1L%ZBT)?K~jyLJ=XIYMzItmzWuPseRFrQ zzPe}`V9hWO@u&vyXV!$vqZa@}uYH<|g~8NukPU6QogtD5Fsh>KO!j?PHrGxD9f46l zy5auu7(>AH&9MLFdYA~Ms}4m75gdKZ%Fqa1O>wj0l@9;QO@ST?;0=UyC3nb$iDZVn zlz-xfYzU%&Gb8c;=<8Yl^_FZB7B&01!8^b2EYKo;Z+(K0Mw4m&GAHQ+Dii@!Jt%4T?)YVqwREsqFTO%(j0Ftio{0t!D*-cC< z|NPkQ4t)I#4oRc2B$U;6iSe%4W7wtJP|NIey$yozaY`#x(gbfZ`ApSv3g^D_AHM&x z#OoX)sa*$2MpBml(5)5Bwt(r!@==Bb^x3z5K%=+E!wf?%r8<}&=HveSa))4q7~^|? zvTy@pD=kZZdLr=bxIbBBLr~WEA#~-G$2)5e?Hb7TLGVfXs{c9zB-^)WbENqb3;TP*m8{yexvJUn6U#)1;Ey|UO~2|X&A zUN9mo^iyE4JVjI1^Kg3f{zD7e9<1xQyIP`!hdxwUgVyj!52KCU{tKa=a(8+reKt`# zlX^=PJ(+52yLOefU3Y1-&YwOl%hksEMtef0Kl7~{Qw;IjREtTsF%?XIx@*(lUVF4I zcMv5toil-rS{G+(e{9{e*EQ@s8H7A}n*|vyRVDTG(@10Qs~EBF z)bgYmKn>}YWqiQt^=Vd+&sJLf8n}2xn9Hs{-lzzzpsSaOzs_2FLMMxFs802Jw`OcZ zlyD%iQ=*m+-%WM(Wj^>alr8Ntx6D#=bTXZM1>@>M1hraK-Xy4O9z&E&42Op$6@65H zb1>$DQ#6bz;98*b(6fItit)<@sfM}?Ltih(ihzpfBZX8~d#EA~#O{d*Z|WkD_%o~e z3I8dT`({7j-095tcE1uc*(8bZ5~8bo1S8OTgyOO)K_5>w0r~{_I-@yxFAOzuug#}v zzozRXj4BPphp=3xFhZYD< z3EQg#x2cG%CTVGP9nyN5v>shUKB6ek$PQ+I5rUXr3BGs4lObIJo&2kcxH{XQw#MHW zsTk@p9>tVp8|E>9Pis&*_GEuQjkB)ZELp3(uPb*ELYl=If+}L$552c3a+F;IhYtj3 zz5$8YrtgF6>p=!J^k<>3z#v@P{+iXzwM3-=F4RlXE@$J#!Mg^~oArM$0H0tJV3&lf=(} z6)!O{tyFwHEz0}j`S6!(B1hbCD1rP|YKWv(E2aq1Pz(W`LpY2zcqI=w2{c$ffc`UM z*PRlMfKMl!Nv)BeMev6~z-Mr{AnZG$#KN@S!P3kQUw5O}Y>4cN00!QW{Gd|}5{qRs zwX)cnnO?va4I(9-!ot#mBy#Rgmk<^egm~%248Z&)wX?q94?#9wt?V z-{bT+2g``~kEDjij$X(n?oJ&gpwi~5!;g-8t>tPp5F~U$ zy_UMgh}`4#rsn7?iv9h-;FUozD41??xxs84jw;7sczZ{!wr2a4i|}nS3u+eBqc=gX zdo3?TX(?%CGRp4!bMm6@GbN@^S17yz>RNg7uB(?2$Q)&j7O#O*nUr6$vvGFmbio?~Sy>e!&B1caR@=$9aU(pxNe! z9p`+zFmyeAM41oudxiK(--;-D<+9m-f<}rqS<)ek__5fBSp60N_V`+4l^uQ??&dh< zeKSgByUz6Ikt9u^m53Ln?`eyF<&nR)9>w}y=o_L|Vm{#%I{mo!f1Di1+xdHw{kZjb zX&n1k%%(sN`L^vfcR((=7Dv8t%02^gJ0eTcoi*7dqy<#H#nrg0{GG-ax)7Zb(v-h| zkzMVaPf0~x-5%K8*Dk&OYa7h-Qqq)4ltDkk z5rMl@O6^)MvHGHdgB$DD9&g?iK{dYMRPIqb&O4!ar)n4Hbbd~e*3%h0cslkGZG%GA4U>o4@_ItC??j_}jbu2KS8cv?iG7QvPl^p}wUw$x`Ruc|*vD@L zxemTqMb-hq8z;!@;dj}z+^Q->kw@m=1hbE6t&$fIMsyggpk=a5EZP=MmC1#saDFx) z+|w?*LT=N}wtbSw3bbhYh?tLQiR7iWx2a;lxVYop?d;?DL1aw3bI0@Yxs0zSRvX|K zrmog(r%}a7F)sP;=_;J~?X};0CShNRf?v&Qp)$wVqld}R2raSx+Z-X-DR!Udr=^%f z|4;s-Vz6Y}VD>Wu1O)Vm8JxBmzpBu0`t!jU&zZL);8bNU3`w!BYy10u5>l3stQpKs ztqU90qdC?h3x17#zCSrF(6taud-9+I}cG;>~_AgNEBvPiqcO6zT$T(+PdDKq10#GfM`g> zC0}b7a1Sj?)OfgvYIpyM1nzw6+(!mY0)8vFxj%OOcIOG8;9KZt4d$W1KZ1ivo<=|P z48$hNO1Iu%M#*xe&|gJq zv%A&&^mv4Ai$BJOrpz*-)};u4F+W_7&ZB2D%o;ky84eE4%~r4zsYl!qnPdxcs!89t z^+OT!5xnOkFniD*IVJofQv}xs!2$vty&6v^xAo)t^=gy0GFE}fM;$=ouujGl&=S4L zeIZc_^FDNc&;vG}HX!kIA9<-q6$A6$_x{PK<&jDQhX%4yo25K|J=Vcq zukvxpWk1A=m>#wdKu>(L)e`(bDW7B052&on3Vs}*T|l|SYi{k?*4f@bxW;vCof3H) zCW;|?B)!9VJilsJpc>n9kKl)_iWELS=Ht-a%z@kZ!uP9%OC5Im5jO0^Ahg~GMVwy% z`poOfXUhj8yzUS}`VH#R+Ti?;+*1$O*Za}aZ8s(`0U|t3J2mxQ?Q^}lFUem2&G?G4 zKS7nv`aoShN%}!XB>4%%?MuW7OWfh;5nVKhVtOxz_Qml7%-@CR1v6k^S+@JZ$F#r7 zHq^fm7(t&1YRZT923=;D2xB~;hJLqzaTU}N^nn%DL$(z!$MTLyf+0r73~SUhmOTDov!|sVVS+b_=4Pr0(L4aw07(17?q}?S}enrx>HaCq{Nj=N)BNek=zQVvlsJJN&UCrT@6R-W_3TW`-#SuouHNI82A(g62e2)1yWeM{bmZegj&hwHsA6u%Zp zl+tRe$n6JQ_r2Q$KkiD)xkB#-zJBFM-rN*`qz&5utQyEBYp=Hzc?jGj4&P!vVD3hZ z6x6N#;iCfz+>EynyQZeF`cx^z(K4844NLwzXMYtZzEod%sNz4M{3jUxjRMZk1R-P) zD?wg?be(gsAc2My2NUo~r`Q8F<=#a@(F1nKLvJ3e#pT<}Fr?q%XqnzT#ux+(?7}5Y zWcv+z9Fma=vqm7cxux_1VJ_LWkRv>3Y17I(Kyq*j$HUkBw`dJ08MI2-T0h zQ2057l}l9R3O%VP#i7Hy9ZOhiC@ErZACNTyDkbk4@Qc+;{vY4EK+e(rXyE-f=o}+Z z4Lld4b$Gl6dq43}k4nRfXG8qy@qN3l#$H)xY0XD)oilvNp|ONgt!Zco`Iznj#Y9vlXO5FI+;gbvZdmv_O`-G$zJqA8h56+d zH_#9Azt@M1U%-5BI&;Y1TgdR>{vPq(7xH?hWJRIF!M+kyq=Uiklaxr`4~Ti|{5Efu z&AVSP7n%ORBjgiSRg8Ecxpb8*Ubi!*R43<`N0uBeo`ay3pkIvD(D%WO)L?!b`QDW6 zg(1Vx2YFV%8XHMo6W$9v?rYuh0XWNDzh+RS2?)Ff&)5}m^CE-KAD86XopwI0kmsam z|FH>RKO;odV|??nyT@=_@we%yjSarXK=OZY6DQUE)2An1&cn<2#xr)PYOh9Ug7|t( zVkjW&vm$mM|AKGBsnkB)mrbzf(Z8bbjM43EHFtW~JkaCy-O&ccWOdN-yG`K#41yE{ z7`#%^HvKI&$QOae!HL2zwW6abjHAWx*lImVpM`cwDjoRO?7d*0$Y~b?kCz*$+Wr=* z1mgi$UPxt zU;!x@8Z|bU``3N+VW^7WqQBEZY!2>|>+gzn$??_M2>x#^?BAE*HTn-?)whXd(tqys z3IRV6dQgiJ1W|?PlKP{G`y~!goCV!D0Jn(AdtWDnzA62t_&?$|FfxS{{Qu7T|KE!r z)Nr7sF4bO{`9DMS|M_`AYTz~L|764eO^g3uFQ}EkKNm)PW}>6|UqA9s5H)a@yZUn&_K@{RlEEdG|rZk3T9J%ug&ZYTXl*584~<i?va^QoKevc75 zg}<8r{hw|rkO&H$D122uqk@a;C6WCR#UGnI^T+M-KzlIsF5Ki$^2Z45k*v|wc^;x2 zHWVWD_^J%pb{#fc5*m1iyE*&?#;a$^_1kZ=b!)C-8j4gzltf5)pg~I#!>M}=xLTjl ze|Iv97|>3J<}T$S2)YGB=3j3*ezF%m`Q>tq3%g^OKmHROJ|v`@xtSG{n{=DgKKxqd z&HngkwQfh{+Xt*R)Ws)+1kgwBAX!=6j>+p{q#tBHUsgcJI8o=u_p$sE@~vMMLgV@b z`Tfn`>(@t=C9>esGWmZ-N{|Hr8Y9HGWyrsGRH*egHUJa9o8~rXDgP-*jED=G2eGlS z&9~Di)2dY(Nb=_;GUyZP=NHh9O=jb0Vf|!){%a#oZ2t4}E@eMo)6@*Ndnb2Pwtv zzem7Rm>;nONQOrnJC){C)FQlR{%4VqgX5fFkaBRy(yB8)rBNz%MUnl-hPduPw#t1s zMG^~II$Ok4e)l@W;)9|RWyHz(DF_ZFV!kIZ&z8oIz#rIfCRI!=Y`Rq83*59;vB4@r z+zK?5Qe)*!3lHa6)QqqKDJ1?0a-T2}I3;yxtP{TJFE!u2CDVyXYiYF?7R^bO7wWU| z@}p71`kN4hZVh&(9UTRHHpltT67xp`xl$E4{x)8AP_h&l=vVVgfr4Mo&9pF+I@$EA z7+qQ5E@B-Pxq}~EuWs%J-mFrK^up8A`w8NrRak6fvTSC{tnH>xyon(iwI<}16Jmb~ z!>SD)miB0~-Keep&Gq)PF`atz=mCRvLRAui>T_v;Cdk&MxWHPGHaaaMe-5f)R@#pK zx1ufxE(BU|0qm{ve_fIokeHHEi)dm#Tg_=UC)`L&5`)A}O%^=#GuRqdKAl>UMs_ES z#TDFPx#|wNa*vJFiqdqs256>#K%)9#2B#X&&bdn^z$-1351o=b_O0E2#gt)HuRvpx z)NV;n{v1Rbp(GcojYho=$!Wh#+o6(FUjB#+*&U$XUIRnO_iu9z0+|bjT+rrUFZ%-) zZoX7ccK)-lQsS58%t5i=pDRFd1Q#T%0ooVuVa(<9W?ifKQmYF-1Q1OX&K$DxT&c?n zW4V?^viTBN*BY>B8T_|{-~dGLts-%DFRs*W(Ys{XFZ67p4R+#PXv~49m8sHg>CzkpjZ70xv63F1GEVLF}9h%UZ?T9CePou zCS-o$J1b3Az>}D&gm!NPu`(N%r(j4aEHIgk3zaY4t1Y$(Rtx1B)_4HHw~r9qg$kgl zE}7Y{6;UmwGbWi7Du0nAKY2jGYj`*w1qFxf$wC>8>G;JTGGcndu@nX}*VFk~jUs zBXxX=QzP~Am9yl=qv%kDvE|7iyYD?~Y>x_M?BI)jp_>z(_H-lgeD4cm3+JtN=;3%- zb=FRoPN8ifYnTXisba#?@oMEt|73}JwQ$mf*@aR|wiQWwdG*WIY_Z%qu3q_cb8GYu zhA^dyC31M3qxo{p^~D&tmfoEX$>5M|jQCzK@;Fxzt(cgCV}U-^ph=;}&Q`aeT8X($ z;ju*|Y1T_N7=HggM@<>(>d5Ba9Le@AB$FXrA2dnev6)hn!R$z!yDsm+1F#9`9!?yM$4uR)(nZbC8r zs;TmOT9XJ4-vB(_3N<++g)#HK2up)eOhQ7Ez!f9PRxy;_7OVPo3zxasDXN_`dWpj% zAAV5GK=CpA9<-P5<$fCC=wNk+%Q3zR&<)WtQm;a*v3n^`r<0FRd^R7=`nv~#E(P4b zVM(-k_OJ}d?i5h{phT2r)s{0V(HCAY+31UCRi@$aF^b1N_j9AbEcDg0kt>YBo-K|V zYKWSe6iN?Gs+1{oXZ=*Iu0(HAok;k>6x*>gpXWcJUtVdL|hbhFNN@-PhToSmdKfV9%A(hl_9!;rQl}Rfv z#Z+!xGSHU0a^57J)ncLhyE^bAp zgg+)0fieX3IIs%mGiBdxkly)#pkyvICVC>F#s>;rPQIC?hHvmNr%bK z<+~T=u>5!5-kK%@#YWRS=4UJ*Zv#gWm$!(nf&CqHqHVkEoU6XuiKyE_ZpQA-z%exmN6?02g5JQR8}^} zpgyt(!k740&XyxIYrIf6MYkVIs2OQNkVD$BcEk%sd># zB!JlLKON!y-IDJxY3H=rf){{La` zt)rq|*EV25kZ$P)=@g|KDQS>yRHRdo?gr^nIz_ru8UbMhl$0))IH$0l0q@6h5QXd`8;+kZJ(0peK; zmZ6rba7S~87e`3LK~?Cp1EHnO`DoeA*ySqAh*=-yBb$o7gLknELc-dE;2<3j_UCzr z)=xZ|dS7ktN`^xUGmKN0t~xGhc9FKx_mkI$*pw@VG8V2VSl1oqrHQM(JLOqbEibfn z_Mg}f=v3yozccWv+89Q%``Geux2=`Lgph z;rLsDMe1wm>Vjwb&$fIsiQoAmpazMZyR#wn+YkhEES(9>o1v~ftj5LVJ3u(@_2NXg zz!XA01!ng5M^+XBqbz;`83aV=FwYMj?IO6}#POzkbw7ZB78r4F_~r%j>-Eq-9NNF! z+A{qj+JlEKU#z45_%7hy$l+Qw^tY7wu|6QkvBAyn%k37f`~8`!z`k893jD*h&|s8* z8MMEJYXALCkT{4YO;lc!|M#!{`yGA|vn0}z(EsZ+{yd-m>B++fAlVHPk9GdPe0UWk zu*xIhdLlO z`d>cw`>+20i~QH}`2YMx_JangqHO}XcfLjMAf!fi^Yf!}A>DwT!P%RFQ&+`n6ck$7EOi{lT;6EW1!6gTcna44 zZQ&(|z>9FF#UH3+(|mqXa2cM{;(r`#3Ns(*aJsVOM0?hWf0>DY*`7a)5GFr7F)?w~ z%Wl-_n7+~@>_;R|&8hHNG{3Wvj)Z>@v$QO-o~-E5MG2S04$jHR$GEDAFotcW`jXepLPn(8g7HUN}CNlZyjXbEvGjAd#X5joIqv z3=Z`eL9jsb{Xx{J=8)nR^Ve$mkFBa=56@0zz0hg^K))HKIiRPD8d#LbqV*=isKz|D z#{4JE>MffdP1{2zI8h@Q(Oz*`libT!uM}ki#Sk5kB}~rt=JGX)H61%q7-Ta=yd-Xj zh23lPfiU)Pxsj+F5ad$SKE4zJ`o1@hz}Q|&GmwMjay?l5!5_SV*x@+(SrrQSnxDUX znL`*0dOdw$YLXQwwQxHyHxH^v?*U7YpbZjSxt+o_zrQT_f7k~x(7)SG+1M~A=Cw^r zV9`>l;K3=e4#uKnx3I9FH>4sTe~c~cKhE1>XzWFOz3<$_>1X2#+}+_-9B;F=#briZ z9L-39a`JSo6$C)~cRc;b1G@oF{*=nB&)p47C8i(n)LAdo+s;|e0D&F}>Gwp`SR&_H z>B?!m1{(dt?{+3lX4v%VCJ83s%fdhtUoM(Ln6(U$+Hu)0igj?qMHB%cYaK8)3E0Hk zs@{|F4_^j4>TC7e9|j=EA;RjC%TJG}{!ADCWBte)-=T>4`b#Nt0@Z9JdiHe3ex?rd z8JEgFJc)&BCya=9Kl|!42xnAog=5d7VltaO!V|VIBxwRyq6C%pzU+&HMMv{?a0&|> z0NpiPV!?MMv-VvWU~Jas?Jm-p2RnAH?cDTNX>AE|kDbaY!54^yRXPlV+iXT6R_??L zOP%{bpSR}p$N0kSX}xvMDv(W~hDmydsWPNH#p#&1>1l>if)z%WAvT5U6DTD1N3rC; zHY$~$1noUlWS@#aiFOk4^8i6U1Z{bMvXV0vzQ6QM>XG%KFhBp)unGBn`P5pg30;F3 z7wcq7pKH~5w{`N5fQ#^vo&0V5K_K)zpnCwo1SH&4l`Gh`kwqmCsIJ@93MGP2>w-AP z8XR6VuExpdIj;4?`=PEQb_@~DveC@CZK5lx06ctJxY_PlrV@m z#bC5)D!JIKF<8rAp9~4nf?C8=`82!M3+b(~Vg?|Sp7GRfT;Kg{j}3@Sr8#Z<5MN$i zQCJkC6Nf{{!AD30qr>_zS}2HK!8`H`K(fau7Zhr?0N0k~x+=t?QS{nMlA3oM?wNft zL&IbMKED1=B!Eo}J6`%`1s#Rk1Ff}`gS9eJhxCRI;Pu<6BMj>IexM-Zgaf>6(;#nj z(m$H3@IYTZ#_pb;6gu>AdO2BHWE53%r@1C)$6j)mZ!G1_FTKQw1CNG8jR2byb#=-G zAbT`j>I`xOlEB{{_ma^b{Tiqih_M?l(V^GvIGF+Gt2ik}N~rJZS7Wze2*4Rka&YPt zaI@58okbQM{)qHM8l}2pa*aPioeS98t{o%30I8rgFwcOM9&)f{LXK3-jgW?fP~O|R z5t3qs8HPC_5`V>M#uzH_Jn~=aiE<8pacyCQfI%Nge$t{zeK4?<@TTrP3le+OCHkJ71zmyyVQw z%aa8;*T74RvQz0u5;{I*`y0ZVItk)Xf4+&`=~}c#N2i}?>vpF*Q}9--2?5x3&fA*& zN8g{UeFNI{mH2nqeqXUJ%QV63r}gwO7qQ1eP?G`hg>#{JFGF<=yf z7~Mh%@gCa`Qkl;>jVP*>>T(N8ih>Q;DKgsw?EGM01URU^`&dF$FFq+$x`q<(x81c~ zgIlU&rDU@};fRPt=v@J3zVWwwXZYKsF`biwe%=AnE+WW56BVEMxgZ$ze)cje6Yt;| zOmOb|00jaQa^!s^O!RW;y6r}>cDDoQdDO{Qs&`8qLhW9Zh=umd*GlkosbEvZd3n1z z{m+|9Wf|GHQ;=`dU>WlOTa*e}roxj%!09szrqy`KV-}`{r7Lg?)+p=e-Xsa|Db&{- zo&>6}yLwaWn+#;<)_J==8&(3gkpao!0q(3%-BOpb-nc%0Uk*|s-sj77}e8!#v=k+ zKj6~ky2J4m8JmDE9E@F-pkcylr0FEneW_F36<#tf7=tvWJKm_vEYqv5-JMxjSoqjO ztP#)y{A4X(RKx5znn_l>TtcTpA1l@xVjb&LJr{-?1sAN4k$D~e`~}@Vow4KP4Ywa4 zL?5$K=QTmI3Iv|;`*^IQ$uJ_vQ1k-3|ALHAh8|ePamrcNeWH>S)W4@;x7h7Zcpl`t z-RxSC8X6g{2^nDyUAp0$3H&V%Yp0fM@AdAUGgV0W^^}-mC*q95id3PmHCn6C->te} zZ-IAoo4SCfbLHksG7Bg|jecD4Ho+y;f3QDX4U z*fi+U_@pZ){a(Y%U3!F_mFx4&h3cy0^CRApIebDwv(ASlKe4apQTA>wPpTULZ^B5O zt;yOhwd3ve1r+p(bp(9sgZ(HUsT3iD5|>6nDv~^`fCIRP$KXIn=RmdVn@#rYv@8-<-oAu5@!1m3*-;;j(%M(y} z(kpr`KdpaPZzDf0Vmn%SC|&*i8 z=e9ffJj#?V*$wLSxtw=e+>YMd$TL5+LI_3V;~DkHf}f2tF(B3U;v{25I1SI=h>gI| zrbTYs1-u+xfnR}ie76AlPv#H%=`QoJrF!)#9}pbwxAj?!e40vm(c*qm)g0Oe$YIx- zw#%xU2^!a50g~5YFsE<D?xGg!Zv2Cl?$rp~-l2?A^J?+kJgKHAqn5E`AD2Z4rUq_EMg=lHt7-AYZy5DOT zJHAY{jn~_6n0ZhY3w56gi~l4$*M#xSMOEOf$HQ5zC^M%;$JH?ff-(eqD#_r z{gqOpnRIK+y1aZ4hB-_H$!`9d%%}<~;(f3rGij@%#clw35);HAChhlL@ng;p;`>_E=wMYo@WCL!eX*aSGi=)^QPS7*tpxzc?| zxuTrZMLHv&;J2AVzZ7wNw)MLyX}V5dVqb|uMF;EedJ zuGz!$IHZ0lK(CzR!`_-OrduqQ&u<;jKT@M^<$LV8O?5UD4qoxHEq(j0?Dd|qU0J93 zT87D{ELxCiW%P-YP|M(+oTc5Dvoj?Q_sMgU;-{+DzcDeSW0Q#Hu)k+BnQF6NqOow% ze!=vDU}eg2s;IA2wBvmSmcwL-De`U8v5?5qsHm{8*juxV%mF#`%l8YfZ+ZrxU)yXG zMOvaemY!FCiUj3AXm+c+;L^%kT2EI7)|zLtzWhXlpGS=~7P8^v`uwPSBUvkD}wG_z2DKr;A6 zr?n%I4quEdfm*=@XUKs@#)_8kID7T6U>S2YT(pRLO z_J-oOe)hw(dk@l|5VFRzu(yakI2P@Cko9?hQnFI>txBhObHVQH$LxTy7Od8e5cp;( z{M!m#)@|oS6qhd|qe$a{n8Nz56bgo}4E{C<+h@%iU)IIRD7<5aj@(J0kN;jZddT7D zR9iJ!x>DWjA3epHF>;|w?(?Pv9p8}s1Bd7A`hw~w%Q5CEH;5*_cGYZ~Tchkre!+gi zhYiM$^~SM}9`1U-p~X^e8AvJ!WK&`RoL> zsXkyGx>{fmJpQIPO0DJt9eE=TSu3#pH6`C(o_cq^E=sUD5#D>{X1~p(EkwO|whrfp zhl`tM3Q6L6`4#yBkg?GfpSX;IJO|Jjgqt3@A0S>t^DQHTdvEl;s3kWy)oM@2h;e2sjjaB-yR;zb9_-hSa)`9KC<})pM$2@A!Lk&gJw&zG>x_H@KLvI z*>j>qXC#mjSr_>O-a*yU&7up;cguqiv`@HRhzk~iGU~&7WN<%jmpouQg#_ww45abv z5wIKP-R@4vpIB<-KVOj^E}dDz)u^PYl0hd5rKhvOY5p1Je4pxdt@%$0ulWe|A4twv z=7a%DiN%_blBwzeLT@^+CpCV$cFtRqsyR7T)06r4=TY#yahfrL-M#O;K9y)U%00L} zaneI~2@^T^o^cdXVvzdTE}=)3+`#(mpzDiV+M>`f!X!%i3HB;m{zC~^*mc#XH;_=>S6=?ypIm-^VJMJ3SyXd zd`RL)zG=Cs{&<`1)9iytBJHS)jaP2ho9hE(a_g8juk|~*bYd#h*oA#!^xv-iV6CU{ z%g9FWoUYwo-CWN|){^m|PuJzqJY<$T2(}J+SDN?6*^9+iS)@kPX4=W^xX{eBCr!%H z=`5;>$02}KuU4t7_}Y1yp8u1K+4G-BdF4JC^k$jf&9kRxq$hBK+ls?pAf~Pu#{MAcuV$x90dA$KZR> zdNF0eHw!P1zMHdoIzcCloVzdkk2il7MxMM|h1m5uYb7P8Auzp{(kf9(*e<8A++I@{ z=T37!6_R87lv65%04hgU;<`L`%yTEE1^eFDWAt{hp|{ruBM5FgeP-5V?oQF{RTgjK zu7#YF&_#A#FRm0Po*UEx0t@{%@r<99hu`kJAI(iaP5kh|{P}zajj;NvMA>xVE9|g(7)~jC}H7x*|f?w7gx* zO_Y!bl-pwdbH-?)#G^!W|(&t*NIQ|CM&!2aUZNWS`8i9EVSMz4^cEGzS3R7n*`O)WKP8;#{GMOS+Rh?X>YAs9^9(a)X5rG@#dj_n^BOR;xSu)(dE7CtM59{uhks= zC|*&q5gbCwB;3|i0MHy4-Q!Ke(Q;VUV&gXc@xFmx|LLa{B+AG{thRG$isqFE{7dI6 zqu<;7J@2}rp+6ZiXYSY5e{nw{aa-P0#Vy`bpC>x`Q1i2%ZwYnnh@&+@wY=HpCGNBs zR^_j;(apBPd$kI!6lZZyf84eY-GG|Gr!wPr5P4;+WX#=}J|(YvKq2AK@mE&%u;%s` z>u*vxlfRcaGy?n;QP?>$~^jXhxm*Crt>z5pV%jxp|FR+6_VueO2I3B_kw zZCp1>dT_Gc-?rZhVEnr?F32S*8E#7&ZtHVD9p`GbK9aVb$@nl*dWnD;9DW5Qq3m+q z8?6|lvAFFq-a9i2xWy){Z2zX7Ew|aiU*cKey4o#=&}wLpo*jhph~Qf;)|}O=wbj*K zW~VVVRTk!_p&{lx*PF>}Nmd+*BbVtk4u=jv#zewxt(JG~5ND|G+1ZVJ3bzf7&-ZkO zJBr(cC zNk}Uxx(bZrknlU^!2};b;xds|^`tcvd2x1$Ov0Q5%uMOrf!JAjxYf%;uzablbjvc` z1!&6$k4Hb#xn5&f{yR?&sfaUaCZSTOuWwX|oIo z1=kCCXp@`29owq4l+u_YC<&Gqy~a?{^3L?S{e+^M-P7>wHvq@)QMA1ZuK937_UyZ( z`NxJq4SdeZ6Z7N#ozn`)A08T&CrJ}|j2CIJtcqNsle2gqj#;VEwT72E!)rMcVZH2p zxOdGda)NRaijl!jdV0PF694OEIa`kfS9^K%%Y?JE57jdrLz2 zMZrMKnaG7y>(#kbt@_q$ja)YEgF6AYqH8{r9DVy+{$C>d>qZRyn+%i;0YhX|4waQj z^=(mwghkyGyrS1+DJ3$ZKOfBQQ;!zw^+pk1)t+cqXre*e@kz#A*tF`>8u2`}5X>NzxcLR1ldbQ+omM3dMSUAU~e&RMN!N2IjsHqS$;=e-D!KewtB6&jJ@noVxnNh zXV}cYlQ1t$m^HWc?$*N@avmZC7L4P~$;3Ld+|mU+duI}>&dY6VHVv0>?N^^c5=LN` zzAjUVZGV`pTWbmHkW4vi7pl>DMSaIDYQ|$%FlnJq0}AETu5LrU!1scFh*%#$!WONj z$y1>G=6+G&gkIZDet2YdTbnuSbTgKXWa)vbC60=PubBGuu?xdCuXW6Pi~B|Zr@qT; zHuZ>*&U5C&;ZiGxkHvPDwm+WxeY&ipqacEq&$&*vr)DpBajP0+>c7Fe*V@2Dq0;2E z#b_6O`;{K;AS<#qH)_}ELnE&r$5l;@lgAT03A}M1-Q2RfxVX6Q>wNPWHWNjSpxXWY zGQb_Osh4N)#c8x&Wg+Iv-Hor){y^_Ge6gl4tm^*f1Bo0ilvV3y z*U{k4qMB7ro~Q)yoebz+D6-`((x9)%hmsJgAq_yta%~=emjds$VD|iV3nYqoZA1q?6kO&23r|Y#pl9q_8SH-I^B7C!zYCkQW_{0NZC&)rG*m5Jur9vv$(t142lYPt%@>8OtS7-?svVUM zLm4vP^!B4`9h^RAZk%V_%VxxjwD{)D>h4Jr?cJsEE<9XY(K&sh(GpHW^UAk2D`#w% zN+0=DV2ks}(f9BYRHdA)jr3BsA#af9*QJ~GG@=J>26Wk8zcb}Oz3UpH6e894IvL}# z9A(7I2d$^r0X1g*8vDmvpedz3z75k(a{MVp_>pLB-R;h!m*h0@p8j*1MR!Ly=4Q<6 z2M4{sUriM#3|V!t{z2w9ko%R?JuG)LtQm-d-n zElkacsJzq*H^;?|Y~pkkhRl>2gY%;b!$=En$n`d!*}or)M#A@L58RG*@=C=cPiD7<(Q}#=AD0q5v9;sZ2r@5C0{mR1<^lI?-4{!W zlS6G}9Q#ohl7=_?S9N=%#Fqrjvp3x1A#X)$rVAJUh6f-^K%l>d7B}CH3qmi>;`82k z(pk*cWY>%zGM6m6Y)}5^b*z}}bv>x&=L zlD&AmB(?`*Ti&$xq4+`H1@yA>;dqp8-YeT?>%?phjZJ1XwN{Dogvdw}XR-(t4Wr}f z9INN1Ue%wiDMjX`UZ1{Fja9m1DL#2rW)$6HdKib$xZ0npAj?v|P+#y#{wUb_^;wxh z2gwUkje`J4hXA)#;PjCIOVOCR^IA%FNd!$6dD^pv%`aO;#S%FWS@RcLvBr(Cd$D7% zOn&A_y&(p{-REuhlLUE=mQhyQYuyTkYsPo*-rm>l(W7wj0Vhu{Pw<(rR(@|R%E7=P zbSpwoM%e2tSrp05XD-1aPPB^yJfXt3*zb|hh4dw5q>5D@nxV;E&3w2$2&or36q~6q zBu{-LCTv=RzU9AgA=gBq-nlhU$N6;lIvWw|kv1!F>mg1^y~)b*%U$ucpCPxoNy>@} zKZdP8s~Uvt)b#lQV>W%CdH&v9DLayImPk#QJE#B{M2VI~>%17qc%ntGm_f5&I3spG z*>+VnbHTa#1J>aAE0??XiieQSGj6&!y&}A6{Z=O5A=e%H>up!Q*O$5`!xwaVEL%o* zZa;b=MfSS*PTr4P_BpiN!H{_UWbdy&Da0xtcjx7?>8-YU?4vfk?W%EYpJgmqiDILy z5)qJKE3<7lrTECbgH>C@QO>?h(2s{zUlYf(7kCmICG+^U1ecJ5MYCl7%0DT}?x!*` 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

    Gm@tgh4@tDUgv-T#; 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%0DpW{Wd-YS;xTR!6Ya6%}XrNw`_mAp}w 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 literal 0 HcmV?d00001 diff --git a/github_images/video-screenshot.png b/github_images/video-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..5a4b7ae071a86a09a14e391e80316be40a560cd8 GIT binary patch literal 579608 zcmeFZWmuJ4*Dwl*5{f7xNGsjay#VR%hK00?TGA}Kkw&^fx+pDYmh8CJzU%+QL`2MV$lcL&aE^V!7cSp zG<-`~QC7d1@PodzvOC>t1@T;N`$7>inbEI7v#~2k9gueWE^7m}OHPd_{Ne~LL3RbK zuV(Fwq=yTO%F`Vgh8LeuO!*Iv&2Kx^EBPJa-y>*0K~NV!F?$e)T;`dXRo;X-m*?C9 zN8Bm+>L)hxvEwd`J zYRv;%MYOpuY-%Fdv(OsJsVOz}N+!j(G~^nLnHaXyA#2d_sr=iELZZ^r4E1~V@H~Z! zo@~c8P_&bQXA^63k1I$o^gvC0Sk_1H{Icav!}K6RyivRYeGHe(6b(9y~lbE87x0nPK%hdWkm?%w{+ zqdP(1k)iLY2u_Px$bSgmgl79al=;ExXFSf&?`J%4_U{RjUX z!yNZ`)dNHRL5xTA8?=8PBa8!Ui~<@AT_}Pkej^ zpFYqJRwt=?&$8%O`T>p%E8z8FI2IXU*Xzvp81bRKBHiIeop^?riXqot1j3=DCLdIn zpB=(&2;7Q-(s3n)(BxT09~1hODLlptph#O9q_f4)eE%#XXb`mmb=G(MW5>|ZI$H&r ztEasI+(=7Y9Qmr(Cnknx-dXzbaRiA0(fTXu*s4KnEtIbJ&04uXp>sYp`A#=;zjy(e z_bJZz$o=^9*Dh#H_exq54`|QtH9Wj~orWom(vPT%5cbM1TqI7K>O~Z0)zimMWLsuO zWgVr+Fye)s(>Z2BsK1&ovM#<}+V7bBI@vn;h8xF@+m5=9u+2+nDPr;dV zY9=&?IG=HpaeThe{q^0`dj{$(HILv87z`dRk!8$!ynO@x%+kqD#q!N!P=C-U7rL$& zXUN%BI=o-1hmUD6#RTisUe#X(t=g@22pW5HdJB6$dz4RT3mfFg_#!GO`Z7Z?gHLoK z7=%|IEEHlB9E&%BKhN?-CP`W}QJP%?YCW83Q~Kpi^B1o#S>9)8O%{O(-0|)4vMjUa zPG2gfduQloq>ZblwtX~mxJGz8d8b``FPA6-Lkbdc(V(pt&S7-#EG}SFf@9W@%Qd zEc(^r=0?I+UE4|jyPE}4e;hO@!EJS7Wa8(d;hlV*S-xJ^7-#P*T67ci4;@Zni7Af; z6jF|O6M6ZaVa{ERrj6VU77Zhf6HfDQ@JkIQA5NOMAcMYu%3U5`xa^-C_MOeHUB#vb z>4whBHk*)ci@g^$e}2$8-<`VG+|^9)fgMg%%9KVw$Q(|rj(z^BlUp3Of_|O4<3nWM zWE<@HHXa>1=*e~HR!{O5zGq&(KK@aD6+WB(6n@1hjl{;-G1#h@qEYxr97AWT(D{va!kZ!U}!@|&kVAbS#G7up@JzdQQ3}mD)flWhE#>bh)#5P;DUP( zV+AYkM!Q4XBMwBw{#RQc^~8HfD;C-FCbC(+(sBLJpbem<&r~-raVLJg8kl zmm7@#oLb7C9G;TY#Bzhl@2A_g*ZT zZZ&$!xxacYT3hA#&}xvvq6t4VzPQqnmF_=Hnwwdk;e#zV95;9?xl&znF)+ZP1nHrgB#VQ6W?1(mC>TK@M-Jos=?_7^LkI z>fUUQw3N0KjqF3bATlHLIRo*xZyuPmXUBK;2FJ^k7n)!Xn5GhfoI40MlajcaacZB@ z(>k$mz$^_uX&h`Xit+p2DJ!Mxykx9p8i3CEU7WjgUB}$teW=QKu1G`2r?#r83OVKzwV6&IrD?%UC_^d?twf0LLYgfqkVZxr{7;FaT3YXEtI_yI1EZVukq|!t4 zTCod1l~I*$6$@+yY_tLkRYr{)NQh%!W%u`PJ~NpK2K6h;f9fZe`?O#oi@_1hxnIAwhosq{ zxyj(9YhJT#llRF^cDum>(JTZb9$5l_v}_49u&_dpiog_PNcx&TAXl zG_f3bZ0BRA?F2f7T|Jx(O6iZ_Ke^Su8eUi_ale0K_t8vR?TYrIV6GXbiQTR7CZr=V zd-vP!74&HCw1L(YdhOPMbm~7s9LW#biN6jw&RZ;BT5D(gpu2mzdUD!*ZtXT-0{4J6 zAs*%P{4{)84&3Jr?tF_WeyuiSw=SHxS)f&pLGwuc@?P~b zvQ0I<7szS5yZ2O-u;Op9Hmtxo0n7Z&ByZ-*?PZFEu z+4)ZvCf{U)1s20_J@$ew2`*)V=c@%)Jdw_uZg8pyy=5Dzw3h*=BgRNw!dONIjs|!} zhPw}s0e260f(QP=!Q;W*|LqwLP7)sfKhKKrRDbkAfP?dgz#;z8M-%w|@fQw!0O&uy z??w2*ApyTIfR9fa!k@h#WTxHw^BM68&;}={BqSjLd@C7P8yQ*JyoK5hv=Ed5FHqiz zYuLcSJtP0|ftOGu+lPZgu!AV8+p5b*a~nV{81xLG`bG?n7VmzH1IO#g4Ln*H+3Jxv zT9{kfa69t7{H+H!@ciR7<4cm?y4afWy;PTxClP{L8p+)H0D+m z7X1Sp_{I0~t*z}lZbn822L}cR76z!b2_q917Z>9zW=3XadY}ir4b0M3&yn8JhV=JA z{v1cx$i~1L^3E0lwIum5uAV;B&X(`x%O4Z{=kND*8aYD#JCmi&A7}vxGX7{`WMX*5 z_`iYKLX3X__M_!@u;1|deLCJBgK?|a7+DKJEi8;IZ9)H~IPY&W{iX50>--&19^zf&BFP4=7&79~<*OHtKgS`0Xvg1|U>k#{aMs2(`oG z`z0Kl0Gx!dpt2+Ub}~|$O50e~8hfDR-g^WZ5qV*OuYT&KZvq-!KUL#S6NjYYnb9$A z#tIt*H3}Q-wa+DX>uI%2>y{KKe`JBa{Yp0 z{~3%VTnPbLk*iH=<(~-rTX$r|-v5IAVqDK8460tpj`CxmCkYZ_U{Fx&uu+esDVPWy zMjhg)y{RyXm6OK2F-*_261JvPk$S}xuVRJTb(CkdU+HRz%M%b)0gWJQp7uL9G$eITt;v$+;7@x;Fr6f?E)HPg3cWte(oD7X9 zZAmt&HrZMcl^AfxbTM}w1$I;ODeXI5$MxoL`UbXZMHE~&chxD{7@P7$3zmf%KIfOq z&Z+viWe6&nUSiHtqX5GqUg#uu9WTR7QyUA3BVl&C2X4|ba$q$IxomEhXq5&ell2K; zDZmuW46u~m$laNvOQ!garRz8b8LN%qNLb`rikg`3C{xVWm}{9;dPd!{;8bUg=F^Po zf~`^RNTchSFfh2o)~d^PAj7~EKP4tu%@wt)CL&JvE@mP-=i*>O5j&N9S~f;5C8vO# zjZZ^PjD#ucsuU|7Wz(h>ht1(+Wu0~$Ij2Z(q?FW&?Kz9=kR8Evd1Wmq2O?b$ z&ZRpH=M4E$_~VN???aoHX>6ub!0`rkr^@|HH*tjp%r^(tT^XCXy|@k1rim-jMY+y1U;qI3h($-rXTe8%{c z!k&SfxZYUa5-Pso9bxt1)!SwqacBFa(7i8Pu`1 zWl71c%A}}~L(8<;2gZ#|Hk zt!%D4iE>&tB`1cSQ3ggUd3MR0O3XJG7QYx>%<3zBltEVMvx!ZkYMFz)YXLZH5 z#mj5340aSAtE<4MY8iz4yEqh3dKq5L>zB>?rX3X?nN=G>Duw~=2#4+w?11h=yH(o@(Q?*;Tei)?@)f0RCclgj0&60 z8Yq8`ZAjrk5*?35{patWR7`F-+?Ag4`}dE2Z}$Y$2HF2r8~>#$pf1a z5!#oxWS29D!-6Js9CSD@*E3ov63sD;`;#_?#z4=ov3>79eC9J=q~(tfZD4vt#EYwt zKgCLo?CB>4Cz!wBYI2PGSN$)b^umK=Ot}ft{yX!ty$Dwk%&)28>`dI4hBl))?=?Ea z@j2U5(a}AUilNJsATBBl9y$z9;DCbHC(BK0t`B=!FSkl`mz;VE1T0i13JMyWB)s7e z^JRevH+!kzf2L=p5YS-HIf4qvZqIDVH{*pG3z2dlrXuoW;};g$1|6Y#vvw0`_wV07 zd8Ql9P=0Wy5BEK@5s%GLJ(s zBs$9fC(ipBZ{$_N*EG=JKSVTK7${h7$juO7LfX z`kjAkNy8-s4p%N#d*cm4%n~zwAL0}bK84_EYV3NWgI)nE;TFO>ZM56!euh9q~2ZURN9PdnD`d!)W4KmL149e{ZA%o0tq}$x;ELc={wj3 zOz`fAH9&#?df$7JstPQ0qnGg2r-BPQ$jYkg}6(X7lP?T!Vb9Y|| z`S}!-G;s&xbM!YoO~tA_I~m0IXADC=c(D4{+N}ANG+olrsh55hCJj(PEf%}JJ{r(F zT<-cP70d8q_Edy{6Z_dSO;FLRoH7Q*4Q>6=3JCvXnOjc`eE~}p+PDzS#Mk32@pT$1 zDr8Jb*@~{gGNT@573PVZeld4qxRDlICXYg&y?=~Xq-9V#O+U+mH3u4 z-*P9}PeJrr(Kre*i|z^1oJ`X;+Q)LDC|)w_$n=K0X002#sWGc{N4?KAy%iq9mW@0q z43~G(+cagHJ!shN4yM$Z{wkOT!rZ@Tv?gBCQR;IxUa8x(lC~WS>903}f=8E9hS`20 zL0R7-l!;4~Zz2$YZ?^O-`|#o6(q+ZPM@}dIDVB7Grbkmg|NA)T4!txl{qkU8C06(G-Nk@= zq4eHdW9#=X-hE4^A#CHwv0x|2H`@^zndAJ@VLB6m@NPt9eCKGtd_0rN@ul8)7K_8q z)_j|_{#A;#lPn^m?Q!n#hd2xs0l6sIEARz)s{^Ufo$Rd=ikizZK$IjL=GD0_s#PUJ zMzS@C?Yxz9+@mf0U7qC1Aoz-i=vmI-?w1E(E^_COv}{k7_tBQwZH<4_nYPzUZgLfx zDAw6=lXZZO8SC1N#iXDsE&2IhKHZ)yh@G9^7|-Zaxf=b2pX-?|`evraYT>Ylkpo_0 z%42#fi_&&)Znn5`8Eo{G%7ij8Wi!G;sU@lc$+f{PxukYAVc~QdijHqlp`h-1GS)M7 z!fg!$q}EHF)K{8e2j2|B*p{jq7>FFddsdh+JKd(bT~a66^m8p#OPK02)F?B{Vw_TZ&!=w?;mYf3XS7+jg3#9?RfoL`G^M0Pa zhJ9dS|Bpics`=)oI@&^Mpr?a3CtV%H{y8a*FN;&Txq4IBSeilxK^1Q&U-kySv=S85 zTgP&TtD4s9cxAXAF0ZU^JusTXG+Mz}*G#V3d^UIfPR!-O&B~(G>%E$}LbvtfZIYiA z$A9=~^2PV6Q)tr##f;sA4h63SnPP)iD8tJvGX;BISKg9s2QbBj7c85*g73rE{G3!b zZrRqt(6o`ehgkb4a3E<5>WszMnqIK#Yfkx zQ^D6GJ}8*o6jo(TYpL!a?RQ`9FWg@3qStTN1+BAQBOEJ!pR4ZUF_M!fwn8bj%52euHY%t zt#yfS%pjMb9-_~hx|L?J3=4D4yC?&^H_GZff$g*D_1h8Z?R)df=VZ1p@z`BRUWXx9 zmP(F!HnU0|Pdwl&kAbp6!_0mm9|h8UJP@<$_nLT)1GP+)MFk>eM%D z6=h&vU2(MVl3Pr&39QuD=SyLN_LhM2nWTSZ#vcnw!U3lJbe^5V>4KQ03Z0{=oD+wE3n5bhWLt zsuGm-Sx$6i#M^D(Pe_tzGmMwOErqG|kkUEJC86hXok;b0+lJdn$4I1+?e0N$N!Y9$ zIm&5_&+v$^;SKkMI@YnVcdUe#L!sQkT*>lH^=qE2ii$H8Ob|Pn=B6**Oza+Ia zVg*LL4;kS!pir-PqSX}bxw+D{T@Km=rw@*|CQ5q!@~nSYh2Pw+cKVh!7yOCYbp)K{ zj8N}i+&5wu*}yELrKyo&QmQroN-A#Tt)IYs>{|j@?8a$sTSe8qJY9%+Q4N%YNTWlbIOjWCIb5v-y zCl|DGcI6Bh%oM>l%vZ6vu{fHQmYByB-gEE59itxArSQ8q-MpzVpB(OQ4uLAKcbFxE zTo>om=q(_EV?|+`w;-oC-9m~|PphC447S0}T@X30yN?p%#LmwS^@+)>Aq0nWQQ|qS zmE0ZH1(l}Q9SXyD*gaPFe>P?RG&Gg{1XAC2)GtR!wfN$Iaoa-)&9p861B}E%fveHw ze8GPqzn~ZuiOBKITkIVhRLkno+N#G>PFqEN8zNOwMG@n*HYU?f!W%@&qW1igXqCQ$ zfGcHW*X@^Ak$E%RV|ewRB-$eV6UfyHBQw*|K0tKiYPX)zT>FhqlpyHYcF!!tpg4Yy2u=AP z&@7#;`>x$_nODy~{wO!!v;Z7}M=aR`$TsPvr#a>QRrdPun2GJ}c5lZR0~Bo*wJ=P} zg^vBSS?Z1~>v!JLrqVb<2HQUL0a}*OvU#WK6${9K)s4?!%3=M<6$@SPoF$J|iK^?% zUus7cQW8P&>0NF6NuvegyK}Lc(2YG z1(jsTDe?dpf}dEHdn0py&>P)%e)|-^r+^>S#4+!}vRyGEy8!5{$C`NZf);tVBeFbw z#Ww?*W<}VyfQROvyaWdAS}6`WHqeP7EBkt^M*E~bR(J!!-t)~rsf+0$}i< z^8@_(&7t{5hE7rE@{2~z8$HMEA+gpVtB~=N31Y1F?S`NL5MGCaQd9Z)-ORyWsiby~ z%2`zjc|jF9uIo|XgaVv%&)4kAbV}nAu$GUCn#R~Gab@SzjhxmIIX=kZ$TQMv)-c*= z*E7ICJ9n5ziEO@PCa_u_`lyQ)*=TtpBMpA}B5cBFAIJ`fbNsatSDGcXS)_+0iuep zS0t7(h1(6HRR+ICTWMQGqfM1dx_C?kFoGQj$|HBkPZom)5^)UX9T_*=cE%gEq#2o?=4+I%TDdWnabU4lV_%Cc zMaQlz9IJj~cS4g09_Cv)Tl9dx*TN#lk9~VJ-(h~yZ;`GR5p!Y&M8nQG=jxXhS@gbA zB#JUQI2^q?=0~AWl>{ zHqP#LC#Xfb>+fLTVx#YZRVf<$jm&m)hWu9Gw$A0_Cgm?hMKmc1ewHc@K9_YSOmaih zUO*QjamsHo{o<*_mrD40@r$J@5exE{l+P#E_+&LyN>r`zS&V}%h?lFb4O60MY^(!F zqA?4}bxSFv>ubzoeG&noHNs0yw(EF)d$rdJhz@*Fk&;Zdj8AHj!h)Dmf-6-4V0;XS zp@%H0A`R^qF{xRJUd4TDdxbB=wP#(ll5_ZT#euoa(1ruiZ_vA&R`>%_1(_bZ+7Gk& zeYAPn`Guoeu-AF+649zXD06`EzxpDJ7d4VX2DO9Oy#Yl>GgWbE9K>~)Fnk`yy_x%N zDTKohE#1V=k`)2bT0{U{lkeNfEB@{Gq)REL2CZ6FMDC!C^8G_8#;NN_IF>h`Ki9Y` zJ78LBw%2aX31gJIy+8Y2;|Mj~XxOQmo)ad^x^n%-9jHWFO<;5c?zyl4D$KOn(uj~1}oVt4aeT@tIc|6sI43g@ZmIOWyihGa(<<1&Z$4K#8>|+P?Tpn z!p&64EQP7dY% z&KI)Q(%^bjUH2P1MFG{kgapS4xO z^imZs{OU{bsUf8Ts$8a%Trhx<;n#5kt(ZxBC~5ijEP(EXwA6z+z!De|;Is2pC6|Xl z=}vSXxcaIsrm&+r?^LR>eutWHL{Kyfm%5%#cJO9f)-3p?eWG@Bw*NwmyzJp2Yye~0 z{j@f>fKGYGMBsG(RPVdfR=i2La7H4u?uGWnK+h6EGp)<*1sNuUmC+7eE{T&#I)tGd z1IjI8rFP&{EAC> z(^FjUH&5v7qE3%Ga@+2E2w^Nj;~>yqjF~#Ku9F+9X0U=5=o-f!_g%F<{pG%K!xyP% zlHhCS)6ZChXfDug$ScOH8fq!4=k+f}WWgORnVOZ|&(2oM-c4BjB9xzv$P(osD48DS zEYg)B(X-T5TEKYK^LAf#Fv8iAZoKj#=n!ML42G(iB3JB;5v17DJ)M^?NF>+A-q^rf zQW2FBbEx=kZ1gIVlRq|hMSpriS1#0*P}BaX0XvpS376NgG(=4l8aDmI!v9`mdm<<( zmAr%7$OeQN;E%2k`Euw!@IUE%0nayRCwIC%Nz3q}){owfQctx<)s5Zi^*Pz@(W(7$ zN&@di!Mo0n{;?>Zol3XFgzl~u{P$YZeTUG-SIgbR7w_=}a$>|Q$L?|vN+my(F}EB_ zhhcfF`af5|0^{wW2MF>H#63N$NWcSK?t4>F&?8%DRp{s~)08;pSzuYI=~OOjd_T)L zZA$v<+Bb*p=NNXh8yAz@U{~uvdmxGJ7RT#N*+Tpso7Q7&hf2PsrF`OyDPAy$aac*C^ zX!n0U^qme$wSz+LDVg&65LmHHpka6}`4_Q{vw3&^-UPNDMC!4RS+~lvJ(pc^#q!Ys z87K^UDDy|{Jw3GPY9-*+PYYJu#;A2qvA{rF=#|s)dKw$eN+py1wt7&kf0Wl$g#UZ5 zN4rZMVI1gBQjeKE3M}NRF>eJ({1LT%tQ16#RF4$S5>La1H489A0kt=H?@Ub4)Y@^Q z4F_;rcTLVZfEq%dP(p6M`o*TVnly4f3vKwIA%g(^p4V57cLT{hjBcwjSsVTj=^)cpI+B}# zu?#d>AeK?r0Mon!nwzao(>)~9Hn7bv93W3Wxz8db7CAN}G911=4E4QLTUJ*!qPe_v zF@*cIHI@D`yHb`Lk(p@?sAU_FG3LotqiN}>XLby0&o>@XCfh3huwA?f#0+E4ZppTK z$GE(di#yw$bPR{u4Tbz3p_n9D`OzPZ)jL2jvspioDN9^Loe9^al_3$@$~!Lj;+T(o zBC`3d^!qdmPxAxP6}R{s+XA4V)mfz#4RR)myvo;{TAcOr|Nwaf5JDO z?NTAfOTf${zTHQ{%v=^dx1Q-RzN^_zEm7kF{3py&GW%p8?A+d7pm>9Ubgb|$_O%?~ z$(myhHpG19;cxOJfs(>VFL@ccHa(kXcBN37r*}#XYA)LGTdJ)#q-P5bACKPfQSRPU zK$F(YiYG@9Gb>)pZiM;AoM;imPDg$}0c>WUX=o!G*4HCJg$hD0Q`##*2Lx~dTS(cGK0aQ9(%_ zQT1%S&W(Rfm)c^qx-(ss&hia}(s`~m0@A}<3+8H1Nxat!@BMQ4=kd#p41ac=u{qsLU3mThg zix<{*Km;0la@fgL|M-1mw!?AoaFYUt*AF+o=acG8hlrr)awgNv(sCOKBiVf!Wtdpw z&FQp#;~b#5)8mT^ji}bb5J~TkeNY{x>AF% z%&S|ZLKhSlVaVFn1|nJHf}pd<8vfIoX!z8vU+%moPR zvTtMt(?oITH8K!N@v@?tmo*=>Mbk@XmHpV`+t>{)75)J}cntg4=K>N$-( zbR?HNjyTYjy0F_G9g3lpDpI={LCdYALwVAP4L_^avp6S9$YYP1yc7`!ZDL|L4oKho zPW4#g>k#iT5P*KYF|DASfD>E0O?clBcAsVdaHxc0&)HkP#p4>cWD<=BFhXEEl@p&pKtAUe8lEKF8NpidLyhf> zRfn&j)d^W6oh~?hM>h0@=G5MgNQ0WTm9NFUQG*krg%K3;P{yeQ%8_CBJi8tW>gkLm zm8w~Lt@4fuKin+0DD$bvDbnI{u{2u?`W?(H#&aNZ9CFps0GX4u?uc|w_6m~QzysU# zv003ip@Yszc<-){C`=`0x|LP!V6JY;ja68>yrz3Jwf9W>y5R3UxSleE=(>kc-Suvb z8=FqyNJ>2c;cvy5rD-EYdPP0DYIHg&L+xnG8pbjto9GBxsGhM7+7UbHWf@SfdkFqv zIU5FetQH9;RA%7v*nWFw6X1IO1*xURs>Gkmikhd9aF7>O$f>}*5g(5G+Zazp%}=3w`;cD`A%XHwx2>lyxaK5KWN(_H$n>LZ5w2QUd5o!4WV zR+HU~ix{zc9WoE>be*2VJ0{~|7(Qho`a^kN z_9pXC^4`wh`Ee{YW>-@NF28r+t^gQU^QCm3~a?S4$;6{+YtX{aZkRe0Q=r*U*fc+fkAsPlb*PJXP}q)dYObNHv0yu6BpR80d4X2*l7sN zSl4r^9#7&71bvlS1(661!J5(3kwv`NVXRv8YzI!Pd1SY}A>d~i+Q+_T)J@&e>@rUR zG!D(fO(Gi@GE=g3Oc|{iz+iJTDO2lu6Q6yv`P@5E(n@wIr9q$S05i3OW)&9Z9;zaI z!3XxUi0(IAx_$49H(ksbXu1SSR<0T9x69rEaa6yjq@swm*iPr%40`qepC&j&*FSW^ z`w`IeSk2lkun-GlACi#T)Ug?hwvuQ>GY8YipzrUcZxwz`1d^tH$qut)G2d+9RqTQT zTeez!AGRC~fbfg2*NpT&e?IBOl!xMW3Q6!|XjxX;edFwRh#nCGt7KG9gJv*&r?o7b zs2>IL<6&g3_Qx9#`PnQUc&zhXe7Pc4pXQi#6vAb;RsUu@J!H=>cX5h;L?&&N?kw%9 z>Uy{J)po$)w2M514PxkDI$Zv zW3*I2N6!zIWa79FJ4yTSC2o}Ks*CDI!DZ-R_c~5FKmcrs7&J7zW}kXXYJ+~v%5T|l z&_2GJ>@Wwp8h<-d!C=+Jx)WyG}H8>`ded;Y4!a? zXcL-JhJWOyDUg3|K=<>%y*D1Be|TvGmZizzW}h{;(F)yLLgx>3R+nM&gq*DF^XQNC z^~yK^d5I;y;Wjtc?14DT9lEgBO2*Z}Te~ zBuyWotgVZpdL>5d0g7Tt`^_9s0-%+BUtA!9P*+guvda%hXdy+b?PqjsQSqdh-(sX! zXeN3k>CB{1f85%6d&hfoJR$>?uNyX{1?sasDuQe0-L8rPWV<9@kXANi{vduSU|Jvn z7bhPb=F5w-J)kZAQPdP!Lmb?YSW%quP_gT>k}!{pT{nON#JWA5vbe2ZW4C2b!FPIpAnao z&B3r9pl<2){CSM<0JyPb*s)P^+dl=pXemYU4pRqGIg~aZCP9&}cCuA&=`#K;F1;hV zp*W%K;H?}Dio&IW63-mviJY@sfOoUe0wiB|ZF2+&mJ?o{Y(XuyxIXkoZX^A@i1QD- zUcd>#QfVZH7brm~wD2UI{%(@$YFx!t#9)6irj}^XHEEJ+Axl`c)w8Om5T3l(iq8M2 z)gK+5W9FSVSIyf2YKyHGl+P{dZNBOG`vUGw-nNL{o}7rC2`Ql<4L+9C);^=`;)j^g z5d|V#B17ppqgb8Zbvi-Gb`x}Fw=g`mZeDtB+x0g?;8cd?*)*9hEHYE_trHi*r80d* zb|thn$qBrOgzp%kneQbDB+&wS7JM+x_4E1jKDyuCvNPmW5;a(yh%vZv?=~Fu(+11H z_)-B*X*?N!2UG$iV(_pq5VLbLBvRmf0X)~~8BCxAn=tfA=Y7uzn8xBJ%}}0e!7p|?Ye`sT_qF+nw+q&gp~_N{2Ho|x$NPwcCQ+fsI}PdWS^wd zW9COTN4%({VJU{Ld22K!?8_=yCL!JVXtf8~w0jpvhleAlYDS~zD^hBpO4s5Szp8mW zM0rHW&8lrXB(e~rWr+e5_*8IZo!fJiwNmS7eeW!gsH!~_rk>oc@S6HzK>|^C#u0?$ zh$|xJ?WaIq5WhXdc^0fXF{jX-Q>UEGE(A8O(AOx6;ERA)eJ~!j7@>k8w>)$NBwN(V zY;U@=Z=wPduz{%c4Qmomw7G!pel8TRP@T>wfhm%LF%>J)4k6@wiy$5n^^SD!A^PPH zSH_|pocFOQOwlTMAT09rO2ysqbCaZ}V3z|Cn>DHASInRu%-8cm%(=~%U_f^E84@KI zG+dG#NZ!bzNh%ScC~hFqhDZ@d)0YsA@c=6O)zMn~(3L^n^O>yux+k$y3=>bD!1tYT z9Z5DI+lY|OE|sQV@lD1WUUbJCF*~hhPB%zwL>JLc;_#nc+UZ0(HGo3@Oq2c@2QLKz zI8e=Y9E3zMEe!bI18?%!2vftN)7NiRDs0)UAy`1ohnwR{w3>M|If@eCdje%1MN{^G zv+pPLn9K0K|Ff0o5cz5NF1P00x~(ax?JjQ9EdumBg76siNXx}sY8VX}Uq%B=CLwd} zLx)tbVmRdxKvd|QSf11k3>=^yKXt-unIvlxrwXIai1+d-JM?N0I?j`p=U2MI!@&zW zJ)crBq#aQ^WF3RbaNxu6#k# zQ4$U8zeo&iIr$ZMwt^6O=~)xX)w-9Wp3`TK&ko94Dsh-1B!6J zpB|1LNYaKQXVF8kDzL+$XG^f?;;@Dc7h0ldsUnt>sh)||r-C$?7P?&hVeyA6ufUP( zMb&f615|7_fFm_Mr_E&^k^ign`@0m)MMBgTwiet3>Ye+(6?`BS^Ls|Gsa_Y`6IUCG zVf|8ELR^80fq@;npU-XcZ7`c@m4-q&UUZ4XLJYmu)B{7HdTMsZ;rPa`OqxrLK}yki_XWP$4DhuAjujC=2g5|@ zm>P24(gZH*!-uWM8zVnz>RM$uX0a}hH4-c{w@tl%NYczUefCBcpoTjZaU{_MxG zzCvg_Xx7kbkBv{{STb6Ca5^@m^Mei1{5(p;W2;&fVd*R~t`l#{7{s}Pf0Szf$aNQn<%IJ5%(v#N<}?9(|R*Hq~_xgVMUxLKwxpC$Veae1T%0HMr_9&q^kiaA|Bgn8sx#hjG?VoaPL`>=cm*@(A;A2Mp z4X~5mvqf8_WM#!rz;fNw=n(IcL;UVv7}N}b3p11T)z_rDTPFzdKXMj4@+hC@b=@8U z-#_!gkJH`@lz!tKRrh@RRV?IBD}#^3gG2?r39;_aqxs)N)?a7AWBGyW^$s)p&s*}> zekAhfKMK;l89f>PR0F>l+Ou66D2!)vuMbB1H@xow8*uVnD(&G<8}KuBX-t>`;ikRw z3}gu@jx5U*G+`*ONi_qSdvd`NEKedc)uEu7vXdbJQA0^*!+rc!shp!j!L} zprGF50()kbMe{e51^STJo0T3uL|x1&HO5xJ`yGM7PLzGA$7|7= zoOBv>SbF(PuAhSM{}oSxdld5W;l!G(&}ZtS8Sw4_w!iBdQ(pnFOVB+BZ%siNQeZh% z$aEoIqY+s>UPNHJ_u=&UqxXIe{;H76ho=$;2BK!*wz(&(MiXBA#&>BOPXT&3&2y3Z z{c2zTAWo&E2VbTsHb=-mNbTRmTlSB86&tQ=!9U%r_}loSGyubBw#gX$+n)V@SR*jC zs?`YY&r;|oMtkc7aDT#_L;w4KK71YmMHm9%`6@H44}PZSPis#2AtAEQl3Dcs#tDDL zTfP98`u`jtSjBg1B=2S4uq{$;M87GvrUOuh3i8~dNTkqjCF zcl+2TOHw@l<=(XC6mauNg(nH}lNkCN30O4%Tx3oQOuqlLq@Qt1v;QILADd`;{%wrE zqW1p>8RgY=#hP3$4lk$JE>$`Z4-XGFYmivc|BvpoyU;YJhujkz@Jib4q(LUfBs(pWMY@i-5HmXEhToh{|{ep z9aUA-^^Gc`NGQ@E-QC?F(%lWx-FfH`P`bO3Zjdeo>Fx%l8|j9-&hw2s?zr#k^Nq3p z!lSs)-fPV{f3@B#D_Kcucg!5tkxP5(xI}ea=6_QojJxXImz^z0l1-ZJH%B6fwH~0o zvx2Ye#(7vk+?1Tzwz*d1#*jMQ9U80{Vx^H|=I)_v&AI2hC~931lvh6d-}ch~?+KZ6 z!G43Ag2T1*-W7+erdv^}{!z_f*}TXpv8dZ4HVFtRMRhR5C~cr%2vR7^TMIR+*z9&~ zYrUS$!wB0Y?=5*7cmF0-sJNMoUP>v>wy3p8Vn12mBQvXTKe=N6dc1Xv8Aquy&LaK) z@;VAV5dS6_gW|tQ`aVsuZJe|G3H*@x8j~Dg9?1cSVUume!UZp7gD>E?Ils&U`$t#6 zOT^BJeCfOqCA^JIRSgYn;MhU|h9k6Q*TeT(b(X3#6|>5iiinhTYs8x+X+3#P9hm6w z@Pmn>e=IcN$>5dWe)xfKn)fWQb_tz(XfD`RC5M*m5bJ#3Msk-ir5nI>Kn;MK|3mg3X z{nH>Xf&*c>#f`JtGJl9Wvag9~b1g2iKZ+uGs)rmUeT|#~{i8z;lTTV>4zALhs!c4#!cRcJCW_4zI z9^pWB&7EI+(w&v4jo$HNCerB{au{|OTLW3{p++L5Lk%zrIk_st?Mhpu4O2z9pTA=x_C6F)RqJ)SSAcG z8TIghQ4bA}gT|0?1F&BeY^5uxo}k)8$}BI`ijK!y`(G&H$whH$*ri3ebonhB zWQx1sue}9;n~3{qKV=uNu;DM%S(zaLZz_(@aR*C%D9|rXm{_i8UAa9@_&!Qglk(SycYF~ z>gxwEbTvb+-BZtBeWih#b-50zx;`}6E)TKpbYtnWjZ)@&M&oPn{CbI{^NykY+AvH2 zYPto^)0z(%QVI_=Kx}vy43_Qu>A;cB>`$9{!N+T(Mu0ANS`=nr0u2mG@LT-%rbEdn zD?WENXRZst?kDo}_#pdj!qKa=qS-PTi1z9CDNiKzR0(~q4c-+3r=1q0`>=LY;18qk zjWpLrvyjOdR0*aute9?$;=HD|V2p#o#{+|Mz~@+z(dg_1;ob?N`~|;4y%ShpFj7 zp1JH!bbriuhM2HkRt?aU8kZ?UzUlY1ml0*;F$9Jw#!pU$$ee=U6$;ba(L-9$HP1 zx-vDSVhDdl*@)w*=1Z5q;@*>w8Vihj`cJp&JBtl=VE;{pmj)_pWv-K7Xv1leBRIDE zYMit@>W_MD9zkewT*OczM*V#bU*QIQK7VaR$I)$eTge3T;H%*Gh)T9hx(w?U#n|NR zN`~=#N(=QCacVh(V%xjN&yJ4A49EPmmiJq$eqjqU6(%i3jsg{2r86tH)Ix z)}Qyll@fTOSMrV9p5N=(E8FKZp7PPXBG%?B{qoHi$lgUT1-WJ~4-xH2wbWvwBIdhpd(XO(c;j8DqwOi<98dx$O z>%G?+@LM8$LQfIERPbR*bZ<+=P=qQz!M>h?gE@_*31|4~9fuI^j?&&;TpBKs7RBJ(=&8iRbcekr9`jcf$WUhP8aq#?D9)2rOMUO za=9u3>KWmcHqBm?~2IbB{QJ z+;O*jEVHpUo+sW&>>+od@20!xJFtJ@YUxo{9}>@#`$^yV-cb5iQMY2W7P^+G9r~}L zR3G;EQI6+__|x?^X$tSInBxkkQ2Fv}B9d=wJ_^}ZLjmqaAURaiK;{H#BX393I2p}f zbU_u|mon1Bv&oegxMa_zJiGB-=M4VT3^LUIxfP_a#lgqeHsSNNA!K)LbAFgomj92V+4*pR-RovE=?@S! zAn_i4kBbn@kl1kT9HsOoxCFj!sFHF)u`@BC@Xme7l_C>Z0gSi+TUeeklEE872`s97 zHyd&Fj7h#&dKCq|mJkWZHu&;TM~g%qQUvIyXL;IFvhD+{7K8^xh!$ZNKFSws)|xHW z#Gdqtl3Jr_2Jy%T0zUTM6L|XV&)p}EE)*vvTtk*upF-Tje zjfOi7V1dhp{fk1@XSWt+-uZFE>u0HJg04uFa06@8!_A zm1+guf`^=jgQ})rRPoa`XBomzo_4QyWiwl;a;;trUd(7S-tWr$vZ(L9kD{$x*ZEgZ z>+kVFh>?Ky{%-XN=mMOX{CjLPYx*U^J-|0dKU$_)OZNa6Bx*D(I^xHehmSB*fJEL^ z`~!%u+N9>X^03+6uLDm2p-z#Nt505dYkPbH0NPxli*JXx>`-2Y#)Db%Q|!?igyllE zo+StXv}~<_ZZhQ^jGwhJGyD!1LTu&gJ>b`Z2X2xYX`l;`53(^W5!CgngQZqg!Rx?# z(>}y%sdyf4x!gR{T{QP{{$wK9JS-kR=9z!OYjeBWloJDT`C`70#R=E%6t7?pZr=N1 z)8d*w^0DS|ChSf01~E(*6CQtuk+9Hv5|*Pcw0fD}LKUZeD^lnlH3_kln2j>lv3wlR zllFW6{qZ)@8@QIf%i_Dlyit^TnAG5P*+ZYv^E?dKm5LHMfA_fbZa*RX!^9t%l}e*<5j{UmAk7hIa>S-q)?w?mPc{@@WHgRYMejf0J2w9sj^ z)aj)zbd-TIJO&AkoWFr7-1dYfkC3gr;SRLU^GdF$HVb0NAA^iD`mLrLsM>#Iv)qOV z0q&>>y+t|R zHRPLH^CY!>T*Q?KKh5T!R%O6xO;?*87Z)}$2|W2ebzc*>EBd?n^v$ZiUS|nh-!4ac+kLz&Ji)lr^TBAUL<%7@vm*WU>lsunmm5D|MJ;%-4jM`L z@;p+d`VR@P)GkAUgKJ47q7FarUz#H6m?XsJkJe0AhwgpV{rXPi`o7oXPk+O9kV)7& z+1J@r$5h7BI)>LRNKri_GYd=YWOkx1u`AB6%?b7?tS1Xxl2Pmq?#+?v(^z^eDycI( zGYdq5VrDpD9$QsAVz*c1yCJEqHnGAM45qE1LA%`Q1zWO_)u?UVw3-2!L)d1QK^a)| zavP;MRQ#5|3$3Ms8VgB#px!cZF1LH%EeOcM5qedX>)#E~R(^(NKIk}fW6XS?sa}Tq zF715p7BO_bOk*u8qdI@TEcclL&M1yj5f_{4Zp`{uwk}7!jHHakK)tiD5W{7XsYLlv zk%pw?Yhip3rTXTqzVC96`_GqH$+(R@jX)%r#83G>@fggF*ekwI-cFRWi=>9t!yJpB zfoG=Tpwt2L_F>ASH3}#huV*_RO?LNthDm(S(pEn+^G3pJhc9*ZXU`Nj zQ43%Qs<{u1Q=bNNl3K~+*`QCNR!HII=?({J8~P)djusrfwVHvy=!z3pOVnmitROq7 z8xEPERmoLepPCpY2P+@$&3og^7SKEQUMgdm!7HtFd;~$-YCwpJXsLlFBz-|2E_Qz( za9>7atcu?~bkqIk`U)%L?_dp;U7`^3U}A`(6?%}(tEBfFs^yvY5%GSjek@y- ztE|**9?{f#PNK*(qmvRSOl7Zxgq$X>HYU@D(7%tA+U@K>*nG)7mcX;3ct`#CElv(W zUDrkR`lOezt7$vaN|O<)6dPjho%3i89b2Tt(sho39LNA~%l%cy(;HL+vI_I%d8i3; zh3Y?%J-}^V7TNLiaJ1<2u;j}0f3|`%uu)hD?TS-ZYMyY~;?)Ar|Q>?BS2lmVI8B*;z{;MUlORzy@=Wl&) zU7eH{Y>Ra#zl*TutqHW4=Y0v!2L*8EJzC|Yzf4;(+Cj+pfoc|070b5(C_p*5ARNWM z3!{?jsv0>Rng{8#+A33Yz`s7K_IkpN3D_jG=f%DI)QY|nkq0LGp64@u6|2sdP81WZ z_8t*ZF^vvV{QQ2BMsR2}%lN=p8I?Pynsa6X62nAlcWn+)~s`VPeW!~zIojW--7HWdOP4ezlTn{%$6!k z*MGrEO@q9FWI`>pK3|?zpYD9?Ib(gSG00MPLc~eFwt5Nxv1mVC<6Wik1X#?cyR)V@%6*8ul|-n{w0}T6L!8YUZ2Pyzvp?>GkB)LbjQ$g`O@!u zuyv#aCF;4+1oyr8o;uO9F?`?9OGu?G4t2aoc=qYgGDpCGco!1sEAC;{-CYE_D~519 z?iy?BTk&yF!Q|0;&$l9a3Va3-We+woDD1v(tf<@)1cP3-e$~fQn?}(t`yNO~s@||4 zx9{7cz3LAAC-wH8_jy}c`EOUUj24^0N$2vY)194@fqh1}J7%1uGUXG@-1g|9{qZ_T zI#v?Wl+x!KEDH-^{K-r9eB~Ndi+e2_aoQXAo#mDWND!pCw~!YT6H~+Uv<6kY&Ayx* zsTPN&!!gUe`;8qBMO&V6av4(iM^#P1gn3s*6$Y$d(Sw1&{6}X?h0^NsQS z{PZ~58g;&|nUU=XW;DUQzPur2NrsWrtyn7ZQSyBCe4p)NM}%T=`rSezc{Xq4{_0&g z{XsaIC1Cuo?}#5^w|!auRC@eV@AONW3yt;naWRTldpd^MAycjo3zOXc%9ir)5&LmS z=reT<5->vn#V_`Z@RP6*3u-E1@r;J1maMI^<#eI z>|mms3eL78P_oTG%CBY1;?#v_?ak<^uk9L@6tz3=dYGDrgL3ITmfE~<*DvB|E!6`0 z<6*1)jX3$Y3mQr`wB{Yu@TRDkao*g2f4t}d!j&Pk!Tk+D?f>txm-^m+Zy{KTJHdJ) z_Pw@X<-?}=h1?}&`B6TRww{T5qqqGq`z%{pj=nbe=Kaa7cD;F1KnBfxmSdZ9XtF9u3#Hk9R77L3A)G`0!gy zV`Q^9KoDxwU$B{{m>XkFU$0*j?|=jWqug{ZC_+_#z6{0`i#nb#OEyKdk4ABb-}&* zTmToZNQSgb{EtE=vk^RA%fLRt$CD^w0s}2XO<;{XlTEX8-J9zF+)iIV*Lh0O!5Q}Z z-xheGJo0G52C7pc-Xu?|rnde`7JU9JYbgYu3~FD?R=po;Ed(_NB4^FcWeU+s1=kGT zOJk*Tu+;Px6oKnB`2*<_@bAp&V81hL4>jrl-}tai=6>*`Y-w6m38$TrK_}N5>Fp5B~n|8#jP%I6Q^g4{lY^H;7f2qYnmwzS7!Lu>Wokpp>-_c^mK)G4v^w z%{IkL8~t&z5}pUuy#WFkFUwm>iClqLHIjbT4fK%lhYtB{5SK&HPEa_KFXttQ{gZH% z{puG+Q?u#*_e@4S!GTx9lAuyVT>i`{;p8&*#_~?5)D4nFCMKID&?d!bch~4e=c7B$ zm7bzkHlv1DBTjQYxQmfcY3j*(<$19_IRD@e*`jP}SlxBp zHx(+?=$tNbQp7(? zKw7b7sbJY&Y2TjKYCt%B&GXyug>_1c^Hp5KY@T>jY;H$8l9HqDPyM?6i)QS66PP-= zip0GZ(A&s{qq5qS2GG#TxF+qcJ{-9T4<1;Q6|bw4Tgsn+DW0xWd97i<;^xPHP{twx z5N-rrTc1HP8FjkHUU7YT?$dP=#s=&^Ar40v+x3%a&)9lA{p#Kz)O>2+=GMoWx+D~i zDCwEqLuz^)eXQiV(4+u8xmoEQt!b(zB}In2Z{DL9F!gFT<1_*YS`U&LQ5%!rQ)t0caucWgM5{iEgs^-g>?2*gEKR?0HhCKC`8d;zhA{g&PWhMWn z4fjWcc@yA=sKjbIRP}g!e>rmJ^br@I#$2-nqqCARv+SMjG$K4B0;(0ql6{wB*d41} zN{M4HdGD5C{H2K_vy}AuE+P3mdfrqo`;3N2$aQ!hBDnYB471xfYwduB*41T4Bk0g>6$w{iMnnuRhLK->)=PuyZ6G<1T_9nKBEDSqzung!nOD zU7kbZhej&?gLC|M8& zL9wVLduW6Ro^O4l2@5v?O&uC6sORR`B(@Hm^DjBgJ}|%^z-`PdE_9%1gbTK ztye3am(+~MJo{zJdX93F#?q5vGYgeEdQu?W#o?OUmU%rB#Dqd zfySIS+&VZG|7db*r{~w&HMwN87HWj`U=mi^PdZuGTpCHCI3Ey{bUFTU!Xq3Zl##Ko zuNXcjDv6p=&|;c2`&c;G0OHhVZfj_r{)FKzIBgZ7^sbM@U+KBznYyrGI%wk|pz2b} zI8W##Ugw#$obG5DP5~U>Sa9w(NAa&&hwjwxs993vVtluyam(9L-$$b-i7~-vQ&{jE z16R_EuQ&%zXO*V!Zv`RB_@_Ky93+pg<9iP`(40CW=KZ=NC8&ObftBjZbe9Z zPE^Faqqm|-e2iW&>xXIh>!eEntOm!)@$~b-kjeaKN^b~V3BTg&U*MOkfIubSki&Gy zR*I>60t#lHaje?#=tEEJTI;7r7&Jpf<4+9b3ms9Z4IkgUqssF0@$#ZyI(16?wg)F= z7kQ1Rb^xL}2#>-9NuZMcCdPd&+xms{zknC2_707=17id;is&{$?1g)JBms!c)+#s$ zju!4d(j5@VgY5Cj@|cWXxv)WZgQC1GAN}!mwqrpWIiYQoFYBX+TiZyzS$xBv4sWdn z^--$`{eT#qB;X$0w+BM%SBJe&7fe#bVR2z*ja9_qXEZq~&m0jw1+d=T8v(#v{+567 zV!h%o7>z=7UFW+;#3S)6#2*v|(aF?gvpD#DP<}r8ufe2{pZ=4SV1t3FaqHXP1?g>! z+BKsg{ zBYB4uf3EMZHTF}aeFl)mP`Z{e>qLnV07@az5Axna#!1Th{KJQ#J{cBxdRg@k??zSg zbaiM$Y=HL!!&Wh-c;s}AwM2UFi+~A%l5}E_TDjJOUu)c^s*IKg49gE6Kta_rCnJrR zWw@w;aAFP6O5#soQAH#)L?R_1Xm!LyYs1hR&qY1OnWcUfT!w>SEFCl*qSSG+!<+`E z<8h*t$&9hy09|>*cI{SaK&0dT1AqYVlj2)=?meJ&D#g{=^YSrH(=jr3f zu^%YpWtUkIJWQ#J^x#`(^*qZVHj>WGK*dfs{M45w{cz4-Ky#aO?l@3bUHTZt(A>AO zG$(e(+)HlNaf!65Y^%qZ6nu>ibx~A-RgpsV&8aEK3L*r_ClAa#*76zc-Qoj~ z8{ZvV%x#IhWpr|W&7&tRvBRqO6}!5Nn|c<=E8Q8(5z)+?;%WS+2JlUc-vKWI7&UF@ zrCW>F-FI?AWQ1ZQCJSV7wR0%gqxAPT4I9d>aGDVr8h^y8@mR{Af`QsA|9atzeOj`$ z3CK)tvw6V`Tws59@}d@`#}^XwNZ>FUh9d|CSDFuIQ*Mth*=^{Fg{3@GJAl?#_|ENS zB50*j#zlo(pq$9$Rh4--W2E#seN@j!7al3)@gM5OE@rhaRCle7`WH)7OKZq8KvcDX z*qU(Qt9g%bTQ3=Wt5}F=977%5tSTkZil{^TU{QsqP?mdxdK-z9P&NYWy+G1cG@rq_ zS}%xWvjjPHH9WqU=Jd0m;Y%hW&(RjP@W?zrm}ix^hpIJXke-0ey>kKT%sD?qYj)l> zG>klj=$@{O7esi-kq0(Z5(>kctVH(SL3yIYBU}P4!BFW-?Fm7WDdY%Q!O#+s!P$$w z>A}wl#-0iM>MeU6x1QY?>dAe14aPO(V%$kklgmePdWRxkbc_#pE<<}LGDoCtRI_dijt`EXu0z^(^M*+-FhdhLr;yv+C1lRCPx^7CKVTBUJzHB}9_CFEN)0_lq@iO$xbwu$s?iLSg)AbNR>Z(|V~;7MjZF zGUZKGF$V&>l)arOST=~mZjebi$5fs;vbLrKV?vAUK<|$3xz*-$*ree%hryAe-@BRm z;@f-xv{`&=vzo2gk{~@U0?wj->regn^IY<@5}IbYu=zxz?_6~7ZC6@@x=#vCVcCk= zPfU`hWJz8WUaD~eHYmdBTsF+{({3=6s`UV+Vu4{X8e@teyQ~Y@q>HX%rt>b%?7KkQ zd%y$D$0h`wxV}U5X1sj(b?5)gUk4>RJC`tO;MJx+h}%#fsJK%c#pO5i5RDPZn#y*@ z(v2@@ZI4p6)YFwFa*CnTZT_5-@T=@z|1PKbB4*KnW$qzCz3onFUFD|UW>G7FM?R8z zUe0B-+x>^%^GnH@9N(!gIhk0u{qi-qT5=kSuNbo#%a_U1z z?r+Y9YNZ*akO>8rnl~UWe~bWIP+9&Ze!)y$y){XB2`nocZN;H1!Bsu%SyybR%4F_S z;F~gp(KIc6mrB-VuOi~RU!03cVu0WarMww0lIVN;T-FxedqG^vGaA}2)^n#=>Jy}> zQ(kY3eH=KCF<`@qy@@^Hkyp?9l{}@OhhGfAov7o3>6XsgJjI;iC$45XB^M%^g|%+) z=2oANrtZjOFShV0H)^|w@F|=o=5VQp2;|9xe{UIriy|a)t|hR+N@Pgx}t}i zH}f-azarFb<_neX<?hkCL9ARJ1$e_qxmWq;|56oK%CDV*LxyZWA-CBSD2XhKzMp}+bUGMviMfy0Ydza6@E#gnm~&G@ zNX?PaoA!1+6PQ&X`F;Z#igr&{cIa)J$1>CM)8M7l*R0iAk-p1z*AAU(N{mv{rr~w} z`$@ZmCWTTtYu~dKdviPCb;w|yj>)cy6_Qcu@xiYCG~wmu1J}2Le7(X`Im&Ezf`sWO zmY~x;2I>~W{?pUSzRZFEz4yL-BK^h%+S5EA{o(({Fzbqe~Es~`(TYj$}J_# zTFT}4Rc$!2ZtBQ;s(bOV+9T`TY<$N-zRDua+T401GG)d&oc4_TqL@mLY5Y)L+ddR| z`5V=k@e2y_aE?v*X}$dm%DTP*?N{q4D{>IYJvhF2Fc`Yt94-pVyh-T`)HqAjRxd^2 z)X+6PRS!i2NiE@ssiIgt%e_L2Vl9#A>MPJ?yiQes=1h&fvR)AUICy#3xE?8-7N^Q? z{z3NEOR4eqJz}R#!?Nkx7_d>7zduwxeYjc;0ocSOx}5%k^zN*VlPr`%r_1_CuCF|? z=nLAJE`W~MCOINc5m2Dk-S_CVx>uJ=7IW0eOat$7rb8ZgWo-`L1^;Guf8Hj>#ewuT z{)|G;2f=^6h(Dgpj`^N#(hOV*HWVzKzk4118TN$|>@Exm3_^hO&j1Oce|=Fb^3W`r`K*T;~)pUgkV(1xzwo4+iN16F3D~37C7YO;T2r1-5=Wh;ffF2##hA zKLQG8+NO4xqke3I&8~>&a?WU&s#}yKxq-5_YFHyXV0q!wm(KZZCNW(wuDQ0~2jklA zK*5>@FkQ5OMrAcJ>GzUvQC?~1KK8e4>>ezY(4_KMOG^&YkLoI+U%j!z^t>C!hxJzu z_U<|SiYnXQdhA)Ir|~RS{+1dcX2lqL`9M3vb#=dJwcJWRZCgGnuH}h8P-bE6fF?HG z7$G*3te8vcF|pUJNd!e$x{e%N(d!QvLC3NLjj*_p}_5U6b}+n z+2;l0IN2o%G)@QUB)U3PIVQHB*XP$pQ7xNE@I8wF&a<`uz4Hrfj) zx_JaRmC8e`ua}*lETG;Jo@f^a1E zmS?U!U7E^VSO~OPD_&=^i!W{VrizaMz{aeXyxu!vQAG=dIF3s7A4)urJy)%kP1-hh zJWGTJ8v6DEdXb;c)K%Dz!RL*%jaJy}d$>mMe$q(L#>b9dPz{-VVKkLGJ$J>#j49+> zPDpvoVCyK@ZkIyHre`#f;aVJQAE=wUJ*SF@oBN z{==U7Wr#D7>NG){y2q-&a0=$ni0n?*x{nTOM_r-wb4D+|TRJaL{w)KxX$j~WZSDki zdI@(Ql#kqe@7D>JsSDE$eY2T}B5+uHI)SjQ3@4#X@$pR{hE1muzt$e8&g&RXhp}&{VkCV0zbG8Y@rGGMnT+O zcuj%aUUTr7zK@VvN@&3Ak#g2;JT9-Rb%S$dc0zG}J~y+(4RUosSh@eO)%_2Ri4C<| z`f)YaDWU|Cjl);_jTFB2Q=u3(aH~8YL{Tk;%p7V3MM|AKYD#i);C<0G^xPJ08s`5P zRJj^{UFsFMtS-w<91%Nm6EPROui$#~@oVC!Xkn@T>Z#bOq6V z$~g?u)*5En4&8+Q+ogi!4`QEJ7hsIw!|9XVdRmS-w6)iD|!+5(3i4>1DkC|cqfTO z(U5rj)D!60_deV+k=#sEK6bS62xM~L_e%ybtLO6isqpV$Y=7+<2wy8*E=FC?zjEzL{vi_ z_(2oORlnYasHUbNe-eTmvgv~z4|0%;-uwkZwqNz{b($RWJwbVwef5gk8tXOIj1_#_ z&9MIODqTW60ZOL~JoT@rZC7eA{TB*>*$qBEmJR>-lAT{ZA4Yb5DZ2a4|MN2>%5>7+ z8!R(}l7i!7IGH+n)h1 zk3e0q2eE8o!Y@Yod`Hj{$vD`qZC-LN^bLd7bR@#^vUG9h?~TD%0x#^eDo(OQ>dwC} zuYMx?j4cDzgq>Fxl2VmISM;p zb0AEN7smb5?iTqvx(EX=P)0!3u_~OcHI5@C;7@*2`e#{eOL?~SV{gxL z`M2hlOUn;b;SY<+jL_ZfGYQhMdl}4wT(ww#{-&ps z_7-;444i*etP`T;D3&(nI$4aliT(yhZT~WL?0|w@Wf6xTe;mGLI&^wuSZ`^=-V`1G z!waj@r8yM#ij^y-Sq#&p1LU$|$1^w&{1<3p>fCUI0`5q#)>&79g!e!20Xty2@pIw_ z=rA~(E>P$)p$CiH1Lbj3VW!W(pTC@w+vQYM#W!CraBdy4aW11jJA}S9lQ-ZM#O~C) z9}P1tO9fJ2lVjk^wgo-C>ln`4m==IM9kkM5_g8&DI0AO;T5m4;3Gr1eajb*nCgCOV zyAs=S=}-BbABVN8`i?cj3K5y!$ErG=Nc`rKl#ZI5DbGJgpL*e)GdfX5Ib`(Sc#T6T z5|X30hh&nBd28T<_jdE0oRzeeN1{$ql#R(vmF+-~g+cPo-R{k$wGw|J$1+;zSv zMN!Sf_*Nv~BG@Da^S00IhAxXInK1EdS9n*{UHGZJgGX$$EpPH$!3y3X5v~I?ll9x0 z2@zcfoQ&C?;oL6V5bT?76;Bc86m^H)siiNW_{iWIh_#+`gKntf&| z3WA$4iI}GE9~2@j{{ER0`<#Lmf>JmbD>)g$V&I{b>>Frj~ZhW9T)&O&az-i~HL7M~5MHQXb0Bgi8w)`2j zh@k8%3yT|xK%>RA+qk8fD}{D;7u{tCU4!&L3hK$2^LyA#Aq`y1%(Pe z8sZv>x0)Q`%8>%jpKqpcwnA85*D@k?jXF-D&HQ87Lro6tS5cTw_gm@hv~U|FdJxO4X{x zE?v^htASej9ENW{tMSgFG3yx<4bo3@tThNXK45LpYqd_j`OEt%LeuV>@0iyos)DN5 zUxeV`?KAP5=KGO!ZYT<-^}6es$rYg1?;7Dwdevh= zgp@;3KAY_1X}Gmm2cl~mwn+-mQMmMs&WkPex)B^)F1SVuYS4})mX;24a@6M8!3i?x zWN>2h3+9bKT(9KY-h^T<-Xh;tvsecHVL!4W#9yNbKYhhW*uad9^lQqFY$m1@t@-`K zUU^JlT!1xinhFEqD}sY3E|)zOH_#e4$@`qfx$bCbd26T!9bQ*8Y=XAtprUz?hE;B! zP*3IAi#NU!8r^J`Q&fXNc;PB@j>n+qcSDwe{6Nx~n?QcME&gYSI=;)**PgNCzQ*Rw zHP|jS@U)-CVHV>8=ig6u+qLdE>^N6@6z{);#bngnTghM*G^cKFEYY=*bw5F&H!tcPj0!>v2HP~wIsENbd3Lq(q`xFWM|Mh z`hfIgH(O%fsPnaj#Smk>cnVub-sXfehSXpQ+^#cTQux)ktZBXaVhw@Kh5a}WdH#wAGqPfTk>fpN z3z?P#t#E01bU+Nk;&mHPw%SO2zzm5oC~aF<&is|p(M1g z9_A8}7jJ(G6PEvElKW}EH~@~T>gNYmE6m>K=4{T2Gc311aC^MHPNZvFuly@Y5Wzv1 z^x8+J9lWbi$Hp&7FLkhtDCJ zR+g4a?>d6?w}*83R|V_-)2R%I5-k#KT7BPDlWD$vija-4^(#HDas3peywIIuab8RF z*&7KFeTGBWQ5WvvF&WFr2aZ>pzpg^XN=nT;F_Xv~gTd&_D|~El!q>Io)kUT6viEft zp)0g`S~Sm#m|>OxStuU$JQjc^JObW2Cuo}$=>IyTGAJ0`i}>+=ThLAa@ieLY0@x3e zaa!jR9M*fdt^2P!5g8j-@3%Oi-Cbf(ZO#sezNJJQ0o|M~$VRMZu^Q#S8me4D*f&a9 z*{fw79$xX=jzDP=3|v{juWNY$`>8d9*Eh!dvT+=b=i5)4s>hvH|N0j+s{d-yK4wR~ z`=RFD75vu0X^Z}EuMyovTZyC7)<^^Wy?uLp`hR-lAI-1&U;1H$p@{24CHR+$Py8)(h!FcubxccPOa#UXmLhBAs z7mxi3_izP$TJw!u(ChaD1WYMh3iRlx-*owg>ulbOo;on@%wKII23Df>UG*}6q-I-kz(hZ8J`f=6%$1S z!ass!H5VvJz6?a9CZ#cr9yAPY;IzF3ntcBka0@BQP?f4pO9L2W7xj*hT8>?zp~|@Y z9^XCJPAHdvZ75Dq1i@t-%5K^Mr)fn_&QCy(YafBrO6r)-9Mq;k-uQOad#kxB1JmdQ zz>^K_h^Dk}7zN4X`A(})E(*kAJhV@#U*sn|dnEZ3u2XHOD&TNlgyKrS5!&w+{BOAB zA@t{BLp_*Jo7E=^aFlpa}2dRC&F0tc>>#?$Wd>&?)9ufk@UcXH&rH(Nvt zGM2OpFca;cjhYtX{bQ@xv4g!%zxv_dzw{hQC0Y3gq7y>8*^Zsgls@#seI(KCIn<`Q z4;UC&(8Uw6V(X>_3d3WxMeH@j(v8)C`A=38O{@uAPp+hNhIX03rKl$ z(|{N4o#p}Z?_h%Pod3`jgJ7g)Xj!%ewh2f|J1P-wS)}Eu7`(Noxi4bB zw*GFxEy}wucJB;6+g!p;{}HRHs2}lt#Hqg%3JLh<9PyAO)VBJ@V!FgQqD2yysvC+WmtI2XC^4J(_4Q>#>LBfI@H4G9 zcRy|c1;)A-`sa_j#2B*)mcA&O z)rR?L?4Ft0`%jr-NQ9Q#;&t@-$^RJp!Lt62ntXAjBN)=WGf&}(ZnfLZr`;ZtliF# zjgL$6J6KgIpU08Gv@rlrfO994%_6pKjpvhnr|(|)*+Zf3lu&R@_X6tvVT41KPQ4eT zhKIr|nUwRkty@Io2$7?N|0dxa(?LTz@gA2AZ3w3iTlqz|4$Uq-w^hm?*reqLfMy7 zQBYB{JKpuNNj&$%`Bp{JBi}PSJ9}qyk~lx(z+$O#`S-`RQC7y&(nS4o>A{S;*nX8P zxh;Xc&$}MqIx_^gia)ZVCg0V{caWa@Wd7CGLVdw7$&;sU0{wUY*LBPIe1zFgh->s+ z@Es%mg%0#rqe`$#qzIEXq`uO=GzhB)Sm8ow%(PW(*NxUJ=DE7_o|`_|kF0&$yPKK&kyTY{itzaCMUn~_J4*XCo3y!>rc4K)IM{=tiRu| zzkZ|WofEYu!t;EIsPj*1u*roEc>>u&%gXHhXZ6;pRgRD@D7CjzRNp|M*N>sp3-m@(lr7UwGA0g}hPQ zmG3~m&8G?EmHVG&jofao@%TJ@U5@|U3`xdNU@og@3Ekgp5pcncqh!#KLYJGjKe%6- zRc<@yPGheKefj{WZ?8C!TuW!mTtEm0YfNT)bSK%2g7RkYG!N(Zih(!9vYjuyQin`# z5WfI`%+h>xdm59Dn`W+L9yz8*0>97D^6im7g;OLH^;?GgWUF?@^hmpyt5JS z*(WHD5Ur@}j#3LS-DdeZQVn8!r#JR2tsR_RO*Qr`k-(LOM>~|XW{KF%M5a9pKLM%k z%>_LaobJ~|c3$O9>~j^PQJy%t9%qGV%asjQY^8}eMn?5qOmm^v?l)364WSL|4B#pPL;HLXrM5u8n#!d#Gs(jQ%+8C$1eyvw+ z806_T(qh{eOj1hI;a#2UY-!3fhaQ?_5Wq0mVXt4i7 z(qRAV1E=Fg-+fSm$-rS(-)HX4H{vQSZ``ocH8XGqjbjEjCRbUR>K$1BUWU8fKlrc4 zPE(R;zehdW#!^5q7!f3{ z;HFTB2FqZl5;ioGxI2vOelOLMSG^GIHJt8aLY(GfM4S)9oXbFqv!J8Vf>?l)-`WlD z)GO=bn8Nt$gvCh3ja}^GoCoI7=f_ew4(rl{iS%-nfk<2RbQXTXVnwCY;>AVt=y#1k z2ejAXSq3XqsmF{22JIMQY5%U4@e}Sa49l)WA<@ z_bTmS?o+Z+Hkmi{P5Yk}3i=cIXJ-gpA_$RANPlk-CfAwP{<8y&sl&$`M;mU((GO{j z#=hTaIKmb1YSeD`YATPjJ5c*8#T{J)mJZ%14a>?_^n<-_D8tO`uMDP^B-=H)q}%`rn{TZ*!0 zvXt8YyLz%&VNs3Hk8rO8>W`ZBcVz}u|MN!!lG)3w$Bp)eo$WpHOGYq+i|Opw@DG2w zf}2umO`94XAbigE)jf?~C_9oc*iqOWOk!>Krz%zhRe!pcvVZ!x#IKfA)>q8*up3|R z^aRwDdoUAE_XV@(Qe;CxOxs6Gu@oAvbwNCvmmECFyi2Vp%|KU>C!u)hmIhWT!d7+czIZs%lr22;(&fm>=N1c$nFkEqe6Gy?Qaq!{Mx1qtovU1;pB3Yt{6v1`C85pDfqt2uDl50wG zGv|4Az}s{0mU4rcvgLSbmoFiMz_`A=-jCSb^l7!E^5CIZtCgB^1f+W5iH)mLNwD0E zI?}N}cAVz*?f^q!GFIQ3*J4*MKMr;CVhDzLiIG7D^_CO`(wENH81D>iX0 zRe*gpfxNl~lD)r+9r8WDUmcDT0fFTO#rMj=iB^sWR`8Q@iHVG*@Zi6jn8GrVTZlJM zUXBCb9Ao8p9=jA$w)H5a{uhM9SNw#3wK;@!@in*w64X|Yx&euL1_Tj^zEMR6fqd$~ zN)MAhR$_^P;}-d|Ui_@m9`CM!_1x}!lPAmBt%$@NgVfg2KfT~bn_L6g%I21m@+FK$ zZuK=58i*O9{SO+RUp2QQhgC=qa_$@-pMsGh4)5{m(+yW`|5pv5aDzaN`#_4%t-|s# zU8C$(=;AYG%$;idcNOHX_SpJe8QHk{(VjAC;g`WvT9xu|-^K*>%UcEY_P%1Rw_ex+ zld9+@m?J}PJZWUyg%(y@LclN2fol8Vm9=aTzfacIH6H zi7umtgv{8}zhKwN!o#tIsoj}J?G&UvIp7h#H$Zkj4thW6EZ#O5?AyC?yEz&apdn=t zpLNnNG^iSq1(L0Gz_s`lrk9Qv(%1qjexl{K_J8WxE1Yi!AL02yhUENC=wi}+I_=FX zRe0(U-jK)kSFFhE5DPhst{338L)o>mi6lYf(>?$@M)#j^mu6|R9vIZv&nQZI9XU&a z7-as29h3Q6pKAf5dw)^>d=%tD7+$I^y!BPj{6^S?kfZ}WFJS&-NBQ%j!U0?To8tCY z-*x|Ko-}ERtgU>vDc}#eb2DyywXyR5TS#;GQZc9Z7(Ohx3bkAIh2gXvirqF%_LE}_ z9qF3GoB*2h9kyJ4#dS?wSeJvBFrVlEM`L=0PPu=|vqR9ZcqF9m8=w54{K)xR{T8Mu zu{$VS<+C(Jueb}m`EE|JBRRTuELD|%m`p+DX1syY=9MGBEbJsjWzF>lbbBs{QDN^n zLIZcjCXbuXcqLAf-_M^g)%;7uH>7ltWnN@lXQxH9ddE ziK*aOUi&lKxLO|JE#=R6N%~(X0*}75839tl-UY&fMSB3U6&;RTEsQmdbDYebo*^wi zn5?} zS7&^+C5qugKNE`NJ%DF^{BTx5EK>0Q!{F)JC!4Fa|9o6MZUd{yKK7m(RKlNZe7*{S zl#hGZCWE&FIfT#$pA0Es5$RwkD4AKiyl|LBCK(5x#H5>4eLUSr0Y@*NGRMiMj}Aa% zZ_)K-{>714C!9(pjAe~?nPil~3(-$tp*(ox9Q>?x`&l0Q{Jt#Vj7#1vkCxR*uvkq7 zXMXd_Fo#7w_5n~Vlt&y81eRQa9}AGcGzuGIQ5aJctUVbJFV}If^KzRBmC^O3uoZmS z;CuGa7(a7dQ^%q4{4B87^m%Rg!Nk)BvgA&$mvwYi&B3JWnBU4O;8BNJ{vna~lCg}#magdYz=5){TTF@pAm`T`aq!aFw@}aU>bZh=2bXeIh?#@7zPL2;w@il&pJRzw%jw5r7~@4=TmbV z2OH>XWdd`lW{05xaL!vShQKL@pX3GORcvO#D{mT~$bzF9)JJabFYL41CqP!RAmcFn? z`2878_c`RT9MkR$oL0=d{faAya2YkDE+{O|#H$0>r~RlgHb?er>FY`BX)BC>SC;aH z;i(Ol;8pR7atEA1ImRLXFhQWjD#-POIp)^dkBIz*1s9nepsvxW#nm}Vu0>h$Q~{g6 zihB_}QcRWh-KW`8qBMGg$ax!W-c{SM?mef~nyh5^vHJHCU}72H%3itYed2cP zi4V6bt0!iSo$=RCWpDn3x1D=&XAHRP{VsWsy9dx~2|SbJ4V!bZK=Z|5BW)K+yGfaS zprT`Sl1V8Bkt|q=I;?d`$b@{jRQp#*7r$RUsfEth-}uQvvfw(eCc{1y!E1@<30>^E zdXA-ZM4UrJQy;#1x=y)V_+#tin{Ckc;oVvweP%{m*b38Me?aN6=dK_*GV|lPXP5RP zQX#i+2o;VDM;$Ekx`!C<3uRj+c)mk%s^lIl7Mu#C3|EmSP31q`?RtDgx*P|Tl5xZq z-+E(D690I%u#+C)&)9`O3FdP_|G*RqECimzt^evExO=#XuV>Fu3m!Z>d#5+gdq&%= z^Y~!K57xeWcGJE`;oQ_DD%s88r92Z0v1BeWkUo&ks6w^VaKFk1fM;AO8g|^+-34FGh^acwL$u(W2*j1^K$B*=m z@r1T->s3>y1;@>jHArk{aVO15htZkIlscaN*vWyC5kP&@kn43Bzc_k|;b9Il)QLKyd|?_az;H=0yhjOrWFVv5F_)|e7; zss2WXtlwocFvI>xg&1c0q}IC5W2)U~%+q}k!uf*WSS#G!2K?4GRvElujf!(X7u;W;i(VMlK zWy_iI7)xPn=$lQjWe?Yf2RI2K#m(8t#XNyDv;0*-MKk7l^PjWs-D73jL6 zFZ$v26~Ed8H^ZqgKm84*gF}GEb4+$`$<%hGG^g3uJ=F)~FpeCc2twCPL{rR z>RVCW7l@}ToE9Ie{hJ$kg`39nE`3zgKg}91p}~uALh+OLbLz6TbF_uFd&(DTt=fYh zpQ*T?j(OPeWxG;N+N1kmN5L?xm_?VP*hz%rMG}Z}V*s@iS3uZ?#VG_mC;-1U-6G@j zYcGph#Y>&EZo@xcb*R8*=S;V3K%V=@%gw7kwq2s;!aunnX*buq*S~ zo$SH>9roSbyz)F+=lj$DP7KpdaDD7SMRAyksv7x!8aY&Z1jwZCs&4 z7@iNaRwp$%6jHRb*)tWPuj25vUWTbj0>3uegEV4u>S(C!*9D?RDxUMIhM6~{RCIg7 zKQ`VS?_|lZg-R_j^@r6Me?^yX#i`!=(x^>CCr9C$B$$HDTXKx&FNNC`u0y=qKDK`A`z|sfJ7q_UqS} zOfyDde~!|yv(K?f z?5HPDfZ69_5w86Yewr42>Eh)hKWC;<_}+%pjMzzUn75gY@`OHfU{RQeJy?d7c)G8a zoUdT>)JT!3`l4&iF&lQ4347HvSC(mEBYqngYPmA%+xs4aJ;!dX8d#N(vk=u&TR1C{ z9HgrM8*T1+M2OkeP@%~EJ5S%?Bs8!JCuBTfnhujW8)<%hb#M@2O0IX{o)&rTTmD)h zjTQak?W>L4uS0qF_A**(rngV&0!n`PlFJ)!m}0vA7#J;jMW#JUrQUr0oSddEtV8*{ zky^uftRsw0?(|k2>rIk3X*}L$rU?VX$Impi$xtycehI@9YNx#S-}X!|n~KP@ducx; zy7A#cVO*7uy=(lH2D%zIa>fYHks4|`js(qyXc;$AD0T;Vm!m`LvCjYlzK{nqFZ6w4 z{ttLd)nTjgSJRv<`nj7M7qr}rcln`R7k&ADBP^~qn``o8>p#1(mD57)Pe9D1A`Sq>< ztJXkfxUqg6#;LqkO)N4c^fC09*z^iU=x21*h)L)=IE<6?by>yT!kPbUq_hExSmb_Y zq^~a}E-f6FPQOZFUZf7wYW8geo)OzROv3SM<3AxP@C7KK?b<+$#BVgf$xW#+3h7EZ zKam`YI!w{Vs*R^4BaKLi>9fo08a)LYXDr0h<<A&HwXL~Gx#+ceL8;(<*d0mCRZ2(PiSLcqqdtFbV|q73)2x4D zzy`!muZek&8;X2w&i1B!eE0*R-WtE1;%I{8=c)XAQ%tAbD0ytzcK@GwiAqWbU&SP079-zeBn8;Sp|A;>BO1oBl6vvo6n0Y zJonH|*LgK>oOT>?sHZ^Xuq6>ZqSDrb8?iNuZ_Q|M~jd!WFaKqbVdk;5XQzcfI74^)ID7?3Qb`t16C9eEF)PFtq`lLc z_gPEK4iZC73cYu8Uj)B1M9gtQ{3wIjwbhCJ=;iqB)6!&cIo`C92rOwcpXfWPrNon@ zHq2KNWquZ!9GKdS@o(SF59U%BH2Ly5aDx~>Kj}U{5G-0OiQT2uBWgqwbMa9=rcp@V zr0Kj!En~cOyjGQbIAHl{I^+b+4GVcR=iB|IS@??YZA$*qk%tH6yze+^r~;-#E!^Z0k>$5()*>POZs4r_GTddzwOU@uABEVXFq_ac9%t~aa!e~Ve6|cOF?x(DWxmk@88_z zKI<`Oo!fs*=$%lfiVBhY_U(ryIsfmI*!mHXslZpKhh~F=Z8x%YlS5^Gz?%_!Cbcnr znkC0%1ZvL45L}zNOq9%oUA14<`V88O4zpk1zYJG)m`zVkc_jI_c)Lng$AJ>FcQa7t za`0-#yhQMmVsnuE;%cF$H%TE^SZzu_wWYhXP92T-9{{@tlTmyJZwQ&9wlAkvWYf;~ zeRc<~y6Md;JYIi+l0kdWJh$RU?|bUIDO3+zO;JOffzVlypQw!O3L(y+(t6c|zHy0a zk!!Y!+RNRLAqg%NzI|MP}?mvpo;gNL+LcdD~ez&v?P{e_rsSk-YNg!tS z*~vD>@kJ9tTKmQ*O3YOV<>SP>vEX~+3mcO$Yj5SPN8q`HI5B5q@|F^Q9R{10KfO{?yz$0PEN$1N#wl^g3vDlM-hcI({~G4?d?#wR3O9Lj zc=3Wm7jY`Y-Utp`YO<^PbC$P<$V5)Eg$Gev$k=%u zLFdf*Ck44D=$e87W-+qk%K<@yaoq7yNtt2AJ4(#*Pd8R4KX2)+AHq^cj*7-0PvwF) z{l!}k8Rs=gaRNJnUnOa?jS0(#kmDvML?n^8x5ohi0Vi{0UEyzi$w|U-Z4M7h?em`7 z4-fo(9+ygp(2n%EsDq6Qw?4j-!hFU1EZ7oXX9`7UFk`R)mD=8-TZzmHdnK*aQnS0D zhpC3{WJwtwS3HB_EQ{Cf;qJ(5@PX4y*14kZP(yobm?t8yuijk`u3VoA34RLEO9`6Xm?o_WnlU*$c^EiD zMWwg%efZEwHtw#mK>7?{UOduPP(|pezsLt0>O(0pHo1EVTc=v@hYxV@ch?^@*MFD$R!)Oan--5Q#V>^;-KK?Me7+q)d81L^O#Wy zTf{9=?4E)5;XFnV%08zc#UfC=Q^qSRM=c=GQFNh^1lnb5RmeY}HCNP)+Sw|32Wfy8 z)X~soGTwkK;5`s9w@(^jXU4gya$BFmv?bW1rGV{@%`If;s^ZZDOUWyyzZv^3#%VL+ zb~qyz!n;d)@wWMT4j2Fv>#38tC#a*&8o*5m_JnNzDHxf`y8b`MrV6Zt6EDI|@-5{B zVw+*qJCAtCc#jjy+#kaCamgO@`<#RcL?0@DI=nOU7Yua>j|fawOTKf7p5B+7_ia&d z)-ud<<2JS{$6KLVRw|S?&cU0IN8NkBYHHM<4Rd$aoiq9HmqqF0Zw>N#H^Dtfv7>wY zDJ`V2^II+ROtpX~6E&KC6(CK23P3gcmH*?*r8p_4Oy);pOJP@62VnCtV(rJG)@dp& z;?4b@o>QrIGiGu;M-^+Z=gH|&+}&n4%uv*gJVpz01JBK-*S1&KH_8EWF~L}Sa2LDI zU_tAW@ra!N)qzyjcY4cTVIdE!?X;xQ``_PXLz!VCp5LD+k}D;^UCt#yhBu7ri>uE`z&x($~p#CkxMnZ`F2uy2|%CgZMJBevAnLzf?=9lgvMA%kCC-RJ&yEy zR8SY{$rBJ|5j70}JJU-8t&h0Y#?g4WD?}4yA7E}qVCjng$d2yOcSP766py{7e?30* zNsq*FwFX##H)y>xk7{Dp(av}nC?;nfewFesk?jBIay1ha?shKVNFYYY{y3i6C=DOe z`c0bs_~os;DUz4#+?s!0>;9ntjj-Z>Uf|4|==|Ac*uR7cPFB_-RP`64#rQPbVSqe^ z-#-P@JC~6c#O4p;NPmYU47~U|`ZgmJub*at)&d-TmpNB3Q$6v;MBTTK0)bm@OK)@2 z4c%rg(PbFkY1jY=-mquQCF#TF!Fy#B9`T93s6XjFZ=28RdbYMYg!OF1i8&kA_CUmW z*~14twupsP=tx~^tvE#O4fo6ypTZ(GpTiELaRxnWq{WTmAJ;eS5NQ;aBVVZ2DU1%@ zdHFPGx&T)e9hP0~bUM49eIRNmOrtwBtJ*-5L7)3@21g-*HDgqxmILAzMX2=>PCpZP z#&mAon4wIjACqvHy|bTxei}XDYE0h?aE+DBhlwk|gWawS*#GK28Qo8MDJk!oH`}oI z>vf4BbgKJ^-cXzNQcIMF_U26hrQT}U?p1+(w;_YQ`7N@Igf<^0Y0IKEkMRH;q`6xj zoED$IdjIFG;UH`xdm4HBhP9CQuO)8cO(xQo_YGHj^vLWR$O5?4vdXDZ^)?HX2eU~-5Ujpw6^E`Z4@iSRuK%5X>McJv)|8}FeBa37FP1Zn=(YXy@JFxq zc1iN-FT9sfCYejBfi>&pqVLQ+e`+^F>_(V%@;(FYxjVHx`t3u1k7 zXz*4n(>{QJN6I{M1$FVZI-q7R?GmBapjz@XsTcAR@To1;;Q@?V75eV;QFx7FX^qJ$ zBFWsJNPkMH<=#0StNUzMK0~~ZJ3p4kk6GhY17|Ky!GsT--k{C-%W6$4G@n~EYKy#! zx_VGBA`O`B~R-5nPYNd29}@b3|43j7C(Iyqe<=L3lr??IS0q}pxLZsUa{0p zk5aw{-dZtU&Z{!9tZ56d9JUU&UP=i<4f1QTr})4GOdK1eiD zJ2#u-_RN}eTEK(=iplkRXlq1T?Pfd&?64e-j{0KMnp|tP*~DIR5c-ipKEuuGkQtr$ z*^`y0R3z#)<)RoeN}O%g6e?$SYu3KDp8oclV7IgbjF78y{;Z@<=e|AAawi@_Nf2BR z(=+}opC*UZ+gp3CH+l4ahwRdS4jT2}#H)z4L}s?%3ZYx3mH;p?BUC<3_@pXK{+ulT zHv1Tf{2EH;WTJ?Ayzg@Hzk!{9?~!Xa5p;p~ zE7Ez)x&NN`-Bk{;_Bu3rJeeSN0dGRQAJ^^KT#P8{e5M$@ts54_q>aRbXH|bdNkGLf z)g`m7wx6{Bqb2x`HUVMa_GjZcvRYw*G(S7_5Ou9BU{xmBNT-D|Hm8M{9n{oI6paV` zMcMK%-zH$82EkIR-e8yfa{H16q8{x($OEs`2j@PO9?d$yD27OqX8g9MKjcFky69GX zKamJW1`-e@0NF-i{0xbOU=rwq_oj&<2zYT1O+)u3nO+`mMs^_OenF~KyTRsBM?jJ? zMkO`m00a@bRp>8km8%6MgPmzAA+MjX$C@;=@W}%M{x#0a{-X^3NY8kL1Kq74GUe+# zHo(^j^LZU;WBlJIn)>H2jz~WERV}EE<_KPB)V92Ik)i{gPor=ORM9@$dR$ipJDbcS zc8&8tPlp}TTbq(_amLP$iy=ZA=lP?nfI@YsFZAqpuPsRT)snw#%<)d?O&_#hgvz8v zW-rJl1GDBXX(=P$1zRX*s5^2{MhM0t>it=g zXj+C;5Yt{j(6J8K@REs$mr(3s+dngw$iNF)mu9|%tRkSi4YbYQS%xi{wCx2a-Nu{O z=>mNkx+ojWC;5pc^flrwL={sNWZqbM=&Cx(FYu4}T482<9I7^@8LH^QnHfm;TlqZ{cI- zV2C&x?d|hpJ8T{BdpcuI{VjZKZBa~+$G=&LdSFY5;+BsMu$-K?d!Ab)`2rZZ|ojhIpb{_m}4W1~+gkvW$<$OKRjX_y+ zbPO872O3@y`|+@!)d%4P#!i4Bl=KGAAh|ctb|L_C9MQVGnB_2T-gd*_KkqX~yh7AD z^3$1{?rY|GJcCoA@M>KL)UyUohJy2GZdln`y;koel|0IFWu0gr42hQW9MP0~?YCQ* zSId7Au^nsO7%>m>*ivQ5LdDY1>a;v9J((sET&a*Q?)r%B5g}3yHd9s(8OxBYfq!*% zH-Z%0PKCakAJljN2T=Ub{r4@xfCO-Sj|Wp~=lc)Bv@a1}q~V==Flg`*+GXGYyy)|4 zfL)(}PbgJ;^C=llTm2oqly>LEi)319Jr@|;Q8uLgn~4G5rsfpw$Xq2Rfa_Dbq@$Fo zEf3l5QMj0V9|oAo>;_xdYm>V)ltQV{RV0h2XTcJ0L%DF>jdDfvoHX8(7gNnvcCojO zkQ^rmE%NIiip}HLb0jP2CF5$dm7;Y^phMth0R4Mo3a-m$_ICcYY$u6mHI35eF8>gO zb_@thCKFeq1q^JbV*E&kst7Kw{C-0+CF?emN_=q88O8{6oQ7UFt$Cm-i^nzz7E2ZH zr~U15D?eQbe(1IZRYn8%T94X^zF})c5)GOdX{m!_B$EWP;)_?hLL1yAfg5IudWxwdTj2Lvi;~i{Kya zqGYXAXgTO2hP1|Y)7k7s?%REpR7KJ4T8s5< zyi;N^(gCdca7zuH))JYHW*hQt&L`hYrK}T!^7qii<<(Tg^44V}IEWnYikd0W#4nB9 zKzB>?xEQU1tiG2&@P-`|co4qx;3uzK?~~5!+QMsY&^J5vQHAfwBd`A_N~I}5D5@Go znSTX8idK*yka+}A`Ya{iJsj7@8#w`5wi5m)e=%XO6gl30aMJI0AnwA8%nE9btZD~4 zF1X^c3QR$3ql6iL+IrmnyvD@qXyT7|j1kh0UIv)eBUyiJJ_KUnye|Z4O+k!{Wo<~qFJTgIX|)g_W?<~jtei_`V&e7qp-IPd zB!5Fzl1Dq{+D{#Q;9?8UVlRlpI&<|g^`bbo^uKT5bVes};zE8o}> zZu`gROAx@K55X}TWK{k#4`aIk#_i|HG5 z&Ntov*xQZ-eQ)?QCjGAOwWH0(fe-1GctO}{67^3encL$l#0*zq@C zMc+D@_G9bXHSy3W)7bromaqf+_a3tT?X-Gu+IRQtxVWq9@TX3)+l(Qh+@ESUyZU4J z(P?0;#|^-#f#EMTOx|TzhvFgq?!k&ve#*b=-%(fh%v?Wn9J%4<-lh{PULo5&|gLadY@RwL6^~u>EJd z`unG^oQ6Wgs@ECUIz3xn!MB0~Zq*~bWqPH1A^0cc-(O3ML?^-&f3->f=imNsf8m3H zQl-5`>kA&<_}{){z-z@J|Le=Z3)=515a$%nMmhe!pX&ei325+dO8nn9{a>%Zf3N9( zAF2PYsQ+##|LYa_?|%CKo8!bo);Bsj+Hi`*1#q=R!AW_vm6cobAC5%D)i-?I|5V!dK)F==hwLet zi-?;11C64SJV#WYQX&$O3o*MNMd6Yjb?<>v+~ZZ!-59Z7ulxR}8R$qC_u(oPD;_tX z+Qo#`HDZY?fO}1}Wl{38XvbEK2>k2woL4ALADce_Z;*weSiT+^lNn@*Y8MHU>!{Os zK(QT!x}{emcJ#>AVnz77b+kU-3umOoPg5?2nHwVdzk(~frEiJN4HnfJH1ST@bB<&=~ZJLpO03JYjV>@@xWrdr9- z4AILg_F7&#%WFBcv7vx-FFwGWDF!`)0IwdExsOrTBa@?Iq73s+9lW0}lkH|M3)~bO zXoR-z;vJP7bS7D`wN$ z_bG~fn7%#gve45ccT0~3@z$oz(qgrs)4bxyj&?gc>0Oj}bf_lr%;Wi4M~5HbNs8`8 zNpQn#==M^Ku25tLdDil;&ugk4oTsR*`#HG-TRM)G%a)c%y^r&O#cO1N9*y>IoE0!) z<`jcbnK70-6j9yn5BTGw8DfO*@(B64=~k4AN1L;IWtO#c-(byR3@Xd&>S}McSw9ZHC@YpTJ9m{Y zv#_FKH25t@Uo5Wz9K#797n!A!-OG&q-Gwt28NvfdO)l^whN)pPuHE_?py`FkIj=fz3=5DPN z+bx>fEeeu?3t6a74AL0CVx)I$%roNUJV~k&wd|~LYd*$k^Z14n0a>-MQ?$)5ek~HPqFyQK zvwJM_bt6279#m-ZJPa~_#J+`;?kEv3TZ#>I(!7 zDjs>%hxTgJyCM@rC#){0O--I(7O_Xy8Jlwg-GfU6W|4?rDv10}2bMV#HY5~TUalXT zq@Mhhq;!8ae{czOn<+~zI!Uuewm8*$McLgy zCs1@pNhmSM~DF2~Bg^I8)!v+&_$G=U9a|+fA@jat+=v&C+L|j%MzVGbGA`>v`pM4>0=|B-( zRz9DrH?CWvN`DZAJf3`i`EM>?uC7ga~SNCFgv)p3C;T}hl z7D?ZP&JH4jws2m}=YJAE?TtJkZiO+K5Q%uPjiJP1U%L@pV_VKEnTFD98M}$QWtrDF zGy5&%a8kAEZyZHc{U}rIgO^l5w|CYse)ux=w5IOp70wW9)l8D>Fh30U z3tGLao6RMd5FOxXZ|M$pP;KD``*7bNcMd^;Fob?AL$tbMge$nGc@gtLhXN1eqb;OQ z5Mf{oRu8o-(${*!$+%GD85>YJ6WfgGQDJWcJ76H(fRDO57}ywQ3q!c%g(4UN^~cxI z0xr#t@B52na7`y@Ho(OjiwF?SlNSht>;Dppymw7^s!=pQXEmU2POP-mq!bw^Q+CT|~K%SoOaICT4+{Vl^$L96PI zOQuRz-uL&5qaV(tPGZc7kD?x}Qs%r4(t28fI=kt9Y9(o+sm-HqF{RPS;AkHb65>@; z0<3L@S_X5U@4FdQJhoaJ`z|}la1+309Esq;Th@;Rz#<3X>6f~1-vw=t-n|f0tQIM2 zJ3UT(Q8rK*{`ntV^gn~pn4TyzmW1Q5wj#V(evk zB-o9$79m~&Wx;9b)-S(q$5d#)qLjZ<93sq|ye;nuF|pNo?SQDI3tVs@F{2QigmNhU zFz`b}?Z;)`{d<()h!%uiIRu@4%Pw1xtm2)rb__Z5<*gMgm!%HWTNuJ-rso`DUsf^S zn-k#WRdbKdfVqkbCR*-13aGlzK}mJgh~~a3_?)jmJ~^2J?HLW7pDD2oAoDZFwtfls z*^Wc9S@Rd`2wCUOAD7wlGG{(wY;Q2n;H|J>R*2r!snK}(VXWEFQm&)Ln=eQPk;~f? zR;oB3p1hzqiIj5@5e!}I|1`s<9Z<;!%i`|4cbuQ?Q&QaXsl!a?j!sfd#{3)yti9P? zN@QC*$)&hh(WUrDRNGy?ZkdBaiMfkNTPz$~|8&Jr#qQzrY*9$dydG`odu3|S~j+)<~pOWnRd`^tBDSJYYqs^XCT$nFbto0Fmi;ldd*Pa9Bzxa8!JPIAwt zp_PJ7PKA$b*WU#WfrWZ3^XAC0kxe$KMGRo()r4Yh%NBJz=7k@sc8AF(w;qknEmH8F zl7D6J7ueBF9x1wZeFg*}h^B7~<&k`_rnuB_B7q!Oj1r}k)2FBV{PIk;P%oZVJM!bz$y3I;X~iOVLU#vu18^kXE|#nNlX&OruB%F60Dy+$P$%unuNm^*#PpZ7AnM-Rdhny0XY2&>hQxdM&AN+v3=^pc0slsF_)vAvF^K(cE7 zaj0V|1Xl!$5r~F$h;=yzm$m#+8{He=(gDrvNA9`@=0(Jhg}{=Jp*=$C=7~ij4Ru+z zk0Pk4_O|Rg9$Keqy5e_jlRenbz;66 z&6NXk@UaYhFNNfk9asy^r**qE6(0!nCI{4079dsqiqvosLsS{hhyko~1Lvg4kDmaf zn2?GezQII!chubF|1v>-p3a)&+h8;PV)a>7=c)H}d2byx4Xo}>Ol2M{#DP0oK03sl zW`AF3{^g6BZ;!`r$9bkkUND<(kSo$(TJ*WgJKH9FJK#;71y=Lsv1Zo`z|b$q?NOy# z4W6HU?SJTCC{>~A`iHZ}9QW>`*p!PEl?qZwjJIPIIoTZ}NMkJf)JUOpT*vypwnh$c zV&3!5sZE$@;cW(I4yGX7ycS_K>y|1#^5Q6*vQfwUx>B;EL&EY#90@FRP2D8_(9$6q zY1kU??(S7V}*rou8JQ zJqyyC@zI!d&DbW+Ip`NM>bRlqM3|kE)5|kv(Uq{Ah081%h+e9TjW>t&aY^nA%=@F=-a~7Ek(Q%O&i5h?PcKxD6K%4oJ>AQM zDTntwqM|#&PcQ#62=O#l&7U^k2el3{>LBT2OS>S%*q8JeaJc@I8TZfY}{!8qP1+Ce*>rdbwDk64J0k)%(rK~ize`)F2}%& z*yfk~enod&@3m-@NxMd(^q?1@i@RX0t3qxarbkSG%!t@-rP^+(MW`fDvb%zO*>b$a zC_WO@z@drWrnw17=hxsuJs8=&ku>$hyhT7VDRqRu_1cb~a>m<& z=_p|pK#SC~21t`Hg43v&zS@FNPyRqm0x)~X3_P@Xdq{dL`)WvFKgj5$A(gTP>J)t3 zsv>teNH<|ixO(Sv)!gR?hThS!c}-_A)SUyFB@%FQc$Mc2#h6!Pqm&tZv4;XSDvwf{s>#k z3c^Kg&2omI|6BEHw?0kmkqZcvC}o% zF%y(>PNilCcpAoEZsHP%(K6CzIb>?gmcJ{JZ=~Zhe9z-+f{*PZJI9-8wWOJgx;O4R za(`~-{A`wzvoMz3nk8EH>{?6|<37O-Wt(b8*#z&L`Pj?lJJ+(HK9UAAYU=T4{vj{I zG@oc8^668pS;s6J5+AN!y@J9bqYlb!bMow;e4NJ|h!j5*b0ULE>KtaW!i;`v*A-kM z3%K+Ai@kn%-)xQ85bX80?_P(s6GQ1PO1|Nr_87DM72UP-(&#%4c^xKRFsQe=B(E%` z=?mqikc)Fh^8<_=21r_gn{fSXwbf7y)FD~58y-R;3oaxS88oz7>ns6qL>`$M9k?#U7&}Mw9prqxd@odi8KE)YqJEc4uc!r+{*v?6oetU*ohoaXhK} zXRUhZOQ%oQ&0*=q#F7QQV>hlT@@rI+JDHNpSL2GFD7H)6y}@DwjE=t>Mf`4L--9P! z6X`y<#*lP8zDOnPR!{MZ#nyW}e$~Gd=*X9S?=)zf{M2~A4|uuW<$z3?oNST1(?!WE zf!D@B@FHFi0KGO9O-Ocyw|uBJ^L6v&hXAn!8WhY7H{Q7;?2!$71?h*83G+l8}VByB(g8vR`sT& zPo}BQQbzrX&Sr(r6x)<9hh9tY-m~y|T|WJeBJvt8otAfc`jP6pPb0d|f7og>c6$t! zT-$4uKWY5dsn>VfQG4FVU6N@SuUwN>DG_j0u;Dp45Kz^ACuZ8rblf z+V^Tao;vpqx^YN!3dF=y8~(g9x3|@xswZo6N|%;G`q_Px!ll=q^sp__;(sGfXs7vu z=$=ZRR`Lf5d+vRl`F0>|*Q2pp6|h4vMyT~QZ}RZ}A?mH7+JLsT(F(N1i@UoQcPPb+ z6?blb+JwF4?=-y%V@r|B6R^@8oPt=DlY$W);O(iz?D`}R zDNIR~)V?uT3Wn+nt^ow9r+&#!fO^&KxDWZ^Coe&{7{3zx3p*5WN{nqIl7%U|cz4s? zc_Pz1&gam=KXjV>lt|BQ{-W#xmKx;zJgwD?pRS!6{rO&(dChlbe#!En6^Ckr4$|Cm zk2mo_@%>Hv;avZIoOD2SCqZyv3r9y73j*_0R4e8LyDaEhmvsnk%of&vV3yaxS*lCv zyw!X05ZhEy@k zC=Pq1&d!RrdEy3Cgnz`?q;+U5I5|^#Sa&pU;^qjl77QR<1KIDRpVUyuH7qfsqWhC7 zTTLLw7-=q1jtl{*1OpND7eYCJK9|4D5IK%)g3MV`gFL^9O|A{&d!dhQu4WV}#^r-@ z8>aIm_HwtWB}a|BXZzI$__gsd@$5Q42({1|J%DjC#@rDZynZGwl?+id4a{kBl~#u{ z$6@06Xd@aK<06FgE@ z(Y3HAGFfq70l8{3^;qc~EC7_zNcl@dtIq4& z`$700--PG5L#+3z3G}}5#Y;&01SW60J-6|GCBE&Fqj`oU*nJW{^PEtj2*A`y-((7`BEAXlIKW~;=uSrmZ1gV)GBqh7T~@@~or@<8@=!Ln43>+Xol%`qMWTtb zKB^4x#p!F9K4}(AAvjD^{q#Hg?)O%Vd+Uw^Fn!gO%(JK20}^Q<_*r20JknHC$7eel z6o_mSdQtg2*Fn&}BhW4uUN8Ymf8bZ^m7%KgyG!x+Y=k+`T=~Z|slrd4Qd;PY?qNZs zUeMFCXFDMV2VtHoNVe45gx>k4<`Q-@H2Vxbh=>eXY$q9(s9DSy>)nr$)m7|pn^ zy&~WMDx#w0tjAqiSZ_T$Vm9e*^pdVmJdp>R~2k=c2(&Ncj?mXMK-I`9%FR+JgFx`IR^39$(GTP$-NOl1y!;UDSI zF^J1;9M3xWq4EoxSQeD7nZPW#oE%T_iw>|3WbRRik#-4W$ln-Qeg7m9K33CfU4y`q z6XLaoW%g@&Pltt=f6f-*_oT@-Qf@jPPjI zo8aBLmoY2qnO;9*rB)1RNHIqFRBt5wQTm>g*@#4F%xTG*q&~nd%XySWYl|rh(2nFN zBG=X}1sUN~E%bNsKa{{Ks_k0zyMy-FZ`-cirQSGrxtUk)9* zJokG2bp_Q)Hx{IC&BHshpO(B$FhzETXoO=Gc2pyH&R*s>?sdNZ5Q0tQ#QHZiDF;-8 zk@{B@nc8U|MNd0PbfI)LP5uii1)dgMH{&lP?{ zy7RLRM#9FG{D!K8%opF42H*4qR>9^NDPpJZi2mU%dvk871_?@3wd>G+9#ohID3exm zkt|#~H@ti2@%cdHspz|EU|+aEf?mdE&@C+C#6hEf^Ku!-RYB7e1dkcld@Dc^9a5B?+Impx2O9Af}Zz?oQ6)fNfgDzl|?>h zBUZ=w{u{Xni;znq93pHeytf+ksL-i$t-~n-z_cF)2GF-$JO z_BbF`j(-N)=B((f+QSgfyrau-s+`W>E@oWr$!g-=YVx#Wtn~V|S;$zvmOA!uNt!tV8Mb0DoLaV577F z$*@(Dnuq(jMkOWmuj1XAR|6YPQ$$)ixfe zYoC32W)B|%=J!`M?!C&T%H2wInv!GM3fli6v6d2f>l}eZda}<6v-;<*;?qYi(rR^e zbmlM4lP%}j>{%>)7r+g!k<~GFPsMy{?fbQk3I+WNCbDjF=?mqVuKdpUBfstB?!hOL zwWrO?ykOR?-+Nx7A3_hIYr;B*G$9bh7C))OM<7H;Y3kI>7mlTgN^$pmMGm$&KPAdh zD2XbEM{e+My9{C#Ds?0n9ilsiv?!f(%Nuf5d0RX2M-7m-UnEuj z9in>#47jx&=_wAS6v3iayTNtx4}=ol?2S@el@HC8zz;HC5|jX|#NHS(v3^&1)KcBy zQYb9g*_+$FxI=VD4JOnFz4Y{mMU|=ki0oLjWtIg=@Dbp0h!Tqq=3 zg9l$R{HgMm9cRE;WS3pK@rij3fzg_Emr@uprdSC2!!M87FDkKO`E4bvgEvlI6rC1> z`d)DVJKPa((%m4wWhr?$0ZaMv9UO;ped>~lI_kE2W{zzfP|J-MHtdMvdkWK&B{DhT z&Se}ulVQN2SKrq;RR23YE-#JMvBmuN?C`HR-tBK#l4|bcshUe=D;3>+a_bm)>O4FSRQngg^L)Enn z|3nsE(jn6@6{QfxPql z@2lMT!ba=monZ0d0^62)75Db_f#-eP=8w9Z$!dh+W(H;`>+MzJngyONDfg3Z&2C6B z8y{~q4R$UEA`7GXSabA3Lt>KLFoh9)COVGtHl1%Bso(kDtABI)@r&eejq)Mu_VM7{ zMC8U~S@#9zImjJz%BI?KMnWLvUXY1_Hl%%hdfIsL4bX9Omra-XIneK)?$X)eJkD1{ zlXG#Yn&HD(bH(Soy}fZ6Ak0dI5;O3Uy9IG?XjwZ6fq^7)6wgl-U*ffr8fjO>%8z`v(mnZDpSY$nzUtpL_ zt~lUG!Mzzs;{6fg?tkl^w8}P-dZpE44;%Kxn_+#JdWt4S_Q37~I)&|OZq3lY{tmtY zU6eHR{;-KCe*um*pDy`Ny^unbV{TM;>$MXnMb(luAA!k%{>`VW|2r9K=$lA6?Qj)- zXqw?c2||O8t>kt6V<*^C_+9F{6N~bcG8h1Gz02wyhJfwm!l}72%4t5bcy5HXLPW#>e=A75kt#)XNDM8hF%OVU~ zo*YhD3FKKGgYfb%5jIUuB<5CU7_lZjjiE$_yJrd|3L%{R8sSHN_N%}y$UL@8U(aDQVbL3FUP`-<-?#_n^1Cw@^zC__HP(+o@04Y0p~isIWam zc)%QDm4SEnhxDGj8d^?+@!7WBzQyO*gp|;4&)rX|DkEyU7tw5J9)jr;Ncf*`Y}%}K z*ywvO<*0BTre!A#>OQEjf9$va`&XlN8@mU#zW>-_Jy7dn=EkFpC5QFYR1};6Wlb*6 z2;!r*cq-@w>+LR{oFj$D{&?t8n$f>C_xD83#^lU^YHN7ZZNL)KNVC1}klR|#wfVyf z>f=&PV(2RUpN_CUE-PF#f=#h~5Mv#$4w%rnTlHX&L4xg*m731|Eo}9+(!Ipf0tX_o zOq$$JzQE>_7D_vtyaq*kxC_01SND_UxBvfLBhrLZFq1W=)gub==O6Yv0e^7y7~Pv` zJcJrMYXB_&4LbtNhZ~U9slwiuDJSJs&F*0atQ58hK@mE)?p3cZM}um6icI6%-?KVw5uhEFi1g^w_B7gS>x? z`n)k`VOGdjzGGLDW`6~Riwm=I$8bOD1#F7IGv^0uAC+pk6h3}d5iLrY`?Ra;q@mQ) zR(wPtU7weFL~hx2+gb$Ye&viJZ(;3fj!`*?D|Cb;mNQhu2g1J6JTEjOmMPWzQH|v? zSMW~$Dvnjqnp!eaaHy;f{g&O%hwjX48v#w^pT|A?_!h&Ra1&`ZR)82!)>D*e2Y>5X z;z9Z6U~pq&#iI%U@5@OBV%ow@iJ@(7nMUSn{aJ~`gm9f}JDx^7Glx^52j!Eh&OeY> z>6gfRuQ?_se#pMW&j~^ks})MuCJ=)_pZ5IWEXiA`PC~G4`vweinzQ;m!?Z)tOsdgu z@eHz^>1%RyU;ZbbN^eu%lJ1><(6O9?>hnfW11uG> z2L>cP1c(PZHzuqk^;}R5%vK1u;p?H=p_J2}tbq+iNRn zGoiaRtsR^50DrN$V|0wWR#4t3a7V$Oyw~UJv%#F#!G92(|DZTMl%2Oj0D~ev(uuE{K|RW8Yeepzpa)!$DpGm;pQFXeJ%GwO?IJEG~l zpT=%Z#7;sLc*n4ZADP=*P+Jn@vmC$u9ZZ^GOrFw=Pz=mC+_72y>VJ(#0u^$@jE>%~gK%p)ytOJ+M-!TTRyFvdg9P9!}8@+sl#PwXOvwj0c=r5wZSZn^ZsC7p;glj(2Px)OpyIo$j&@`+;^ligK|7(noPf$n z8!BDwyPHR^TFQ`gFtJh_ooQ&gUC#mJ?VB9V8riXBL6K_mhH zJCry9fHN(I#DV^O zEXqH64?FYU5v(mK#?CS>;pUw`I95O>HO_@&c0*XKrsh}DJM8KzHXQmjD2_$uZ>lTN z^h=i{F|Ob#@Kq8W2-w?Y4T7XI88ojFe}wTB?<9_)s|w?`V}y~Vn2Pl=ME8E>(N;nb z@K&p%Xi-8b8vK>(*chkIWY764I$>T&Exf^FSxZ266nRe6i-*}d~Z!AB9SWGxTn4AcuGB$TYin3;HL`b~z#oW<)zj>jh0)uT`*B}sbG#VQ( z2F^*~5!9Xto)Jw?HX#y=ZMbkfGXXe7Zji%7y22c{&iMs?W8o-?2bCj#}Dfhg4orRn?XYy6lrqxa~S{el8zyaqxgP?$UOy zp1Y)Sp4L6i=bMB7cb{H=&fvYRk7!gM@rfMtt&iEmU0zn^RxO!|&pIeGSEpC65|v4m z|MHe#^!n43txasNYx(cy9I<)O+~*l=X*SHHT$8*6-B zeLQ)&Gop}wH?jCCbnc!#!WrCD9Ux`4CXSX}Z7W`#i16Dl~uRjg;2hJZMwd7UQ3#xw@ZbXXRfeJfyVid z>*V=#3t8Reu+O(rvo3_om^=5vI4$RL-d~hEeYgjYnI-3X^$;EwU&1t_;p%MztIB1N zbCLGQ*PlNc7D~3W=GO|K zq60S63$1RUy8l@5k}}I!o9ID*WiE&=C)@syxnM`YCcGUwmuy^{)>cP@P1SyeSfN7MA)b$-qGNF ztOeD!J1V9@EpOs|W)a?}a9Y3G)L%10mKlPcKD@NgJ*I+Ml=}mTF!-vk0O(9D6F0=w zpCl6`CuzD7UJylD@7~z`;>M!Als_P3%IVLR(`(MO|Ia7t{zsJ5!&Se(ba^b)kxNPK`)SHOoVzpwikmb(mWfmpI<&emPMCtX*;P3USl;T5^ zz9eDOU3P4K*UavKkb?_$gj99qGU44UV;|=NPELmlGvrS>kgF|8tGjBo)$V$eH~_=$ zBHcvpF=Bx67a%(Hb|fRXoNRkfRFAh9#EbOdIYsnGQCOxXPpOZDDLcbP`M`p7du;Zh zZ{|M*k(^H+!)UoIESJNhT=TQCoaH@|{l5A{HxovwxAJGMv7KCaZxs?B{~0`+`Gg3^ zXE)6+-t<3Ph&*V?oIl8B&{#zZ*Mfd=0ce$<4=bOom2!oKcJqf67Qyj#TT|YT;~0G| zD<;SpA=?eX()^GIDMeU$Q5jmS=ctLb(|B`IQ$fF<<7?pG$a|9NL3@2>>{#dUkI@j! z3D~9c#jqlcZdBN-n#3op-VxsrI`dR)x_%`npqn2>if;yBYJ#m`R-Zr1qpTf~V5vLe zWHuL(7zH?}^tx>9*Z(`6lIWA>fgOv0>JKUGcIvi8nZ-|jyA+%7=rJ}sHrzjJq)13p z?=b3?%sy4JU4x7O3X2SGHs$g+o1y5m-gV_6N*)F3EuB!aE@QV9kmY0-;h2KA#KUaX;gfte*e9Oc{C;`$cipyg# z0M!x@?o8sNhI`+?98IJ{MFrfMUJD1An&$;(H-8EQr=&$3_`( z&h2Hv6UHzBj8m~xm_4-*9Vn!#end9Z2}K@XWZ&Uo#UOvj_xw)f%W%RvBP&Sdd}4O; z3%yQ`8)Jni+~9qlpmR_bn-dAA{U2cKESLNc10Fo)gI10N5hFFm2dzP?{K+;j)dC>=W6G<($vmOUF0(j;boe{F&ct3&}#wTz7!mN$}B? zu%Mu(H?=L9FKi)7HYim=9YuGSIaRe{=I6dtYuoe2?2wmg#GT->_%Pn5HfIyn zJHf`pgcA*L_X=L~GMTC+8wPkbENi>vW^z!0pUld|WT`)}6|FR*p76RmAG^rsrL5UK zcWp!-(|G6=N^N3MZuSnss+HKDZcv91XTXz_TfndP8!r$3kubRJWk7r>qi%^ZI5T zMCKa*zwc!$xI^%8Vr$L6$zc#+cD1Om7#z7<&-&+fMJf8{&2QYySb4A1f4L{^Hju;b zNO2#cn4g(uVe}3q&nl=AoxiCg-l+*fVt|K~`E;;4Td&)F(jKKE48h2&@4{(6O6Wyc z4qtRgIdM9aaWme~^Rwj0Lb+?rfDX?nQ&mly+XB#N8@FZ2XtQ~lF`9~sGhMb5XTM|+ zh8N38#-}1SG zD|({H9Z&@SxyK)hhB)C415i-?T!`REYTaRkX4pV@+3Q#9cVjJ$s7Cyk*ysJ&kQa!^ zbLe29R*2~=+S4Rj$wRHkLv0X{&6x@AuQ#ls1Z~2jpCe>M*lX!)%`yK%Q_Pli^s{m| zm=yLqcm=Qipe3!o3NnyiMI5vGH5y$C)sB%mtHvJlwOL#arIG$K$+laJt?n?uxTo@Q zxN?w!b|we(4+fI_NTDKy1?d_4Y+sdi+?VyhARQrUNU|xKKs2VY-|V))#@+Z9F#B=$ zeB8ZF#cty=>vr~W=J&usRczUVy9Y(pBLlzSv#a9&5MNX!IIs@VX-mIaLx~>vq&_z4 zerCc){p6Yp=PgZ6TLoJWrr0H@6Gwpb^sXmwu<=5%`Dnmm$yJDiE`;1G?3c%&N}d|x ziPP`iw$mk|jyhCohnX!#k0i7Mo}k+W1oWM?|k> z`(2q2y2J)K6%m-yQ($y|#+&nwC?h$^EtAQfDNKmjVTK3iM$<|V05nr@uh(I{iFOC+S|&3iqOyc-xYN{UT1H4g=dM?6IX@N|m$tf}+ZO}Q zGp&@W8c_sd;&UNjjOEgw2GO9j3&sKdB)vxs{{iJ<{Q+Lk1(Q8EuauG4Sqfp9c$qN$ zhFKfg^>xyAxGID3ZFFZ;^aj#FVRHJ^;DGqY-RP;zFA>xZ^l})k2kEPEmI_sIb3aYm z`X~*ZTImaLW%_cabe;I`sT3q)`9HD~Mdk(Wq#-*&RY~`7k-`_g>JK0Z9bL68s;fow z^yV`=O8(ijmXkhV;ycXvCJQD=U#xIszVh679_Ute^CgS{-~-Yb4?tt0`pOz$?J(Hp$yI)eV^$s&{VR0juQ8PZ8%bPcORX*33*?DE3zZXg7P zGIda!c@Nfk)V+-O-?3tc3@j^E39$ka0=b)E)fCU?jRQgz5znI&k5LMmcUWp>w$+Y# zglm@2SIy2AioHkB4@h5iE|@}{>aYHJAg<~Nn)hOlxP`v19ZcxZ%=cLNa@{c-va!vl zbZygdW208zSKKSMN+t;%^$~(872=DixM7!{7R~>@$iMVi@p)Gf6_)*_?zfZ#JvtU^JN$v)RTV+Z5Fvo$1y`A(A<=(knkS@U_27o8y zU0(g#X!QgPXf8@7X)cQ){=X z*6oxxRqICxu)i5WJLbaWgnB(@?N6a)Q;V(XpRY;LE|;Wm#h#38MDYLlg$YoQtA5M+ zHJUcfW#`jeHMHA}$uzMzB2DT(e%4qldn0K$e+~iUd-46pAJ*UdP@duh(yQ(u#c4#H z>2Tp#cq)7~#ceo)i(~|&p=4;Cu*EU^q=I(;V8pJq9>wB$UK5DDp@D0Y>nqb@%^;Q1 zeVXEOVn`wUX}hP^-q9~N9LZec)csvA&~q!xMFlchIt};r@{c9M+3J{oBA~%p_(j2J zk$qrwk}&J>JgN;dPQtwFUwUf65)htB{dC-AGZM16!#nNz16sX%yU?z+XKA)7&cBUj z#QVthIvO9C+01$jKpqlNC3h(dT zi{*uOHz;iP&jYGZi8Xd^bB@ep-EdMHze?wHTIUrqR(DQs@lIi-IT6p7A}^Oc&M>?P z22(-2_mphRj zS^bNIE!YSiE4kU!5kZSBUj4}Wa>07!7>(vN8FUpkoJ`yGzST1eby7TZ-3e~HsMP!a z!J_-7yl?{K=p>~sul+&I5=8*Fbtuxu7sxV`6s@? zDjaoyrIGQ6xW_~g?j&7Bc_Fd$@zHR8VgkZ(J#cAD7GBP+L+x{Z7ph;$rf6P78XTri zJ6uK>6}G`3ZyyaZ!&Yz@w=JdD>|{WkZhanM-8qe=7qaFR6GwQUtwr5bJcrTy;s`8u ztNA0Gg3V!09)!qb9&^_ubqK*w8_!JrwWO@Gck-gW(7;G))DDU&KKK8!0IZ*?Y-MZL zcG3BqOTvo~3Khk0-hClx%DC(uxtR^|o@vhUUVEd7g7c^@>O?*{9A@9r_eWVxZI@bk z_t5YH8Sd{%lFy?cYDIA6N^?A8Icq=W7&sTq1auAW4oJ9O3 z#l4jphKzh)@uwuO|1UthvVkPPO`#rj{jE2Q$i2aMi$Q{gK>>3XL(W_GgcJb^qHF(H z-0{bS_ExtdSPj^G4pp+Jhl*d9wuFwQF*|NSmYtdF*C={O0RJR(}UzQiugTe;G$&ZFTSf zb7a#Kkr=tdWN~8EmuC(E13Tz4$4X(O)no^a6>-OokMl#Rr!al{2G{*4TlkQCRos@N z&*){dhnU4EuAWOgI70k@_{?Kq>s9AU65s)w_68qU*I}PSe<*Hu$1&m3_|DbD>K`*w zIiP{vuE*j@Wj=bSrcGE7eIKEuhXZ#F_`j7P596(UBN4Vg&xLb)P<&9-gu7Bdpw+B+ zb7C$9USdtvrKX6hD}8zA{bh3k9;FDNR*ST5Tly%rKFeePpCEmzqDvz^t-m-cv$4ez zQvhzc_z(M>jNp+eaSmibg5QNx7>`WB%+NdLM+N_6L4y81kM*z54LOkmCeLxAvaYs; zmmRFYR89;vET2h*)|K8kiwZO^7gCCW9a)}vC^LCW)OW9+`nrcRQBvmTeJX*Iz&{_+ zKA;G1H#e3TI@|8VwiL$-nvPnn^Z`F}r?}>jTiX^c_k*t$(zdkeO_1L47yg}DXpE?5 zJZkJ{SD3~2Bt#1FtmslsH^iX`pIYv>xhi`{Y+%V#FdXa+{sIUrkN`;M? zzn?jODy5_t4)msra{}d_S=iTuegt>LajoBL>K;!X_?y4~9>{vvoTp_#Syz^Km=Vu| z^3o}V1DUI%@5WcFL|?Hh!d`AQ*!8fmLi)nz&FtF5EM1NSwLxYoBf&ou{Oj$uYUC*N zHnrccn}0MDPu7=}cht{qL!F|k5m_Uj|Buw>CPgO!)o(HKCdj^&i1rXd0>LY`Az{!A zY2;0ypn4C@I2`k^zRxK3f-$H9=Q@%Z+}pj_3(9ve2LEXbCP;e8R}p~S6oGtuzMTY1 z7)U3aBmSN?*<)4rVUTY`<)stt@n-`2t2Uapz3a7gvi?|mR}njz=i$Eg2jcd7%5`|_>5vghvO%O)xE%jw2bOP7hxcU!^p z05l@M(>*^sk7;05J|=*QAO-RATSC|`ykN(MV4!v)n%{Ylmz?p4jx{E(2+jF$r95f; zC!8U=VPy=+Py zuNN*uSqRo>=clQ2BgAcgynT7zD3H1UrR4nwLL|7HZ9D!y>TJ;-4$A$58}k;4ZDA&5 zwXr0NLs7~gy+Sr*kL1)$%u;13xI9f>Ek(DY?u}7T%E>qGwGj2tLE)+kiWH`p6Z6si*L^hD@@#kEU5(ffA62*WXiXrK@6P;_O{LRB!jO&Z*8=O(IeF_zniX*~WL_1JCBmCg}c+G$g z*J>9k)4QDvlGN~85|0(Ob?$X75mBKx4-r3~0a0j!{`OLj**oM2&jHy z;h3V2G!th}>t`q(*E${4KD+G?Egjy_m@{b1e`UK}@VNVze}R&2-7>@qjSh$ra6_=M z-wx0ZglmLd;xZr;6*_O1Gfa=K9sbtgRXoBNZ^*RZV<#D7iY$ZgW8(Z$2}2a~A5LH< zg6{;7;?9oS+h={Da4tnj*!z7ub*AIUZh6`O_!A^V;(MFi&?-Tj%p2Tiuc36o(OPh; zzrs>92$lbvzPd~EzG#dD*5`)0abLbs3jEOl`=~npNRczjz2I^8_SyugqXgs4Z9>{2 zUg8iz8SDh{N8!25QA|YrS9MB+1%!4$Cj%nitj%|7#w&{saZYEaSdJ26B`Byb?>)=tqmtmw2#& zh{(2c`y7lIU_N;*w2eE=q%*ykcphdEv%uMJ=tAboLf!S<{++KY>T|XJ3(`O}c>JD0 z7ADlxqU+-Xolo}x@cIv;MXlWE6MC+E5c=BM?Cwd%J#3!L1M2Q?MlPWN3JEMV?&!=LeUQmq5B|qC@=>50 zwJ~0j*!ZWoQ~w>UR=(1XPiyK9Z3IU=R>xb{iwuv%Pl)HxF&Yqx^06o-1zcb7tx5w- zIaWK3$TI-zK^x>d#_HQYdipJl$6t!|;;n3=;G-HB@Zs)IngRX3j6&(N{Zh}ub{pZ> z<4f9&oy%XzK8XBiwBj^Id8h>Nwh>;3sR>s~-B16PwJVsD)X#_e+~RGwEpEOsYcvH% zI9ltWaNAUU!FQ!0e$Q#?g);S*U#3j6&+U*5>*YwPl-W&5QYPYq%^`x}L86D^$IpTz zG0`D7seDES_42_KyQ!DwpOJT@YQKe}{=ph)4EYO>?N&;P!kvfa)8_WreevbDz?2he zrE)IE*W(&Mse%KF**Alkw|P@Kl&+tK{sQT!ll?>%SEp2oiUzu3@OmN`4JKkHz=JCZ ziJ^Hxfz0{~jqpGUNW zuC)uW{_fseGfloypdG6O&K&gU0~YYkYLdD8u-B8TxIv!v!w`GI4fL0*9oo>Bvxy3l zXXpi#g!rS#xQGSbsaF}W2Vn2y15LK)<xDNW9u~S8`zS zc{t&|;Cjq%AZgIT@VFuOsoi^%%xdc6#3nEttPoUf7d3MAHU2mKPbTySX!p$W)=K*W zfB9!WvyOc!sn{7xa%|e{nD|k01gwrH)l6G?d}M;4A9`ViYDHUJOq?gy<_6zEB1#mL z7=+nTAQA(i8xs*K4FnPi*BB`!_S#FK(8TPl4qS|u_*`}l3x}t6Zb<_cSQ^D ztV-AqHWyQKn@`=xTF)qK4?j2x`<88L$`n}hj>fNU8wgrqUv2afxi z@_DW%I@)-~_lw!SlqZS;av#4w%T{?4fle>R4BfX_s$V{NDBs3Ta(Tm{s=;~q8*BOV z`H@CQ=>kW|t-AK!D%8Zao?9i)J3i+z(WnYKgz9@TB(u0EW21-|D33iFrsj`Q0dov3n1Dqx^nm;~*4Ec=^+`s zDA8DGtH6DNk5-O4wwIbz1J|TEZhn~J>nQ_4dS8Oop7Tsc(jVq-?qV131qltBt2S`X zwGH?Xz}?}knTR_Q+3dFk_XO;+KIkI=)|z5o?pfy+W;=VBVEpRW>{eRrsr-L9t4=Na z0AG8CjHD@kA;{Q}ka4DkA17LUYc819WQ|sjrh;-${n25CeA& z;|9Y!Xt#}l(bWdT6Xc<4aOmoaJa4Ia+La*D^ekVHL;Tx8h$QID4A{AdajBvb>vrZ*8VRNsW+E0pd>PC}pwc&CS|*!>P&+-WSP zI5p-la9YW56QKD6d!FUO%>;7^VK$*Vs?Z8aO55OKB)^=7;!!&aor?{(vYs$M!67r3 zurI7U^P7pUCHt0Aps*I9#Q3;uuZN5AHZyBjujn@xnL5KVX4D8R!*B&2e(lQ71Wm(= z_~q;eOLo zNZ0q|lwl2iUc!)V{bcsconit1_=+Sz4C}3ecCF~R#8&3HxRvwwh}-p>x?&a z*_LKSzKRV1Hn&EQhvBq)^s*gq3uLb_-n|=q2kV`FU99a{YWAL`MDC{o2Jp8ZR!ML1 zfhJ(y-wh?AFo3wf7$mz=Gz@MOfPibR;$f!SZhjoa)*Aau=T1x?1* zkCG2kX;AsknBvvvb~aEVm6)y)LPg z0Y`p6#aF!g+!y-0BvDCQoCw-nIH@*qU!gSYDC4_8sACEepLx0$)orP#Cl`UfQ|a&t zZitVcc2CQJB({49TltAerk;&>iqo&msd7FN%H31w;Vr&HUYloa9==hE#K*3Y7wJg1 z$SJq+n;nq$Yr=cywK$WFH{dxi5iS0vsBjzoFC?#BLw_hwa|g-pQAwGhKgD3O{Np52hH>Q(ZwW3RQeMw2{e(u zsDix#S zai-TVLE4JjFwH&3ST7xPce$JQ-0rJS9w!eV5b0vHtL+405j&2_)%~Ejq3{!LySM=R z`@@)LbbY z!uI8(J|Z5Kp9dCcQJx#)3Dga^7H+?xcShx{>fu8KRwcE$c$IbgX&l3Fi_q2AX6C;$ z9#rUU=CQ+#Ip`l+SCjf*Dax7ar+HZM69}?3jA>|E0c|V&9PFHr2OBZz}Ey z^x@_uJFi^xx0MT|g&gW=*mugk96&B}SC zrO!SXfJuzcS_4AlXL=i)@!UW7?IYgQ4um#d3n}}unx^xB>ebC7m3O|SRsA)J@$!@#kXpQrSUhhqr$)W`$n{5AIO%TF0=a141p76 zb&|QHl}fQ@Xf4-9D~BE8G|LI7X9Mrp<?vXJ6L!37hUAx&+|n8f@75k6+T3`Hc`c2=v1(=f5veE!jJWgkS8& zKOVFQZee$Hdv}9Xw>I_bPCS<}=DVH$d&+{X?ojcX)qaM@gplF^rQ&Ren{uQCm z0Z$D%rO*)B!ueumOhuP!`j~Ff@8tCAIj*?{Y)o*LV}QV+WFv-CG*#bT1ptM7~QJMS`$ zqAos+i2l;1JfuDuh;^Xkx6X7O@iT`op<8{nkI`}Vo+Mhjg;#w!UA4YG+?J7JA^lco zsk$7L3!hM_5ZWhek~o?yz9)X|xyFOM{lhp>m4mid(x{>EI;uAP5u;-tjFkK7E1?0K ztoBE-ousA#c8GxM%)^-DjjgluzKwXz-)WoP`QLW=?FN|#?@xA){=3aaQgpgkX|x@x z0nvduUb~c}B`QjH#ADedG{$YtX_T8y-kD!7CjDxal_+Cp+*Zx}%}%f^2#w#ib4q$_0J zVT;@i0^@aPvI5Z-zXv{Sn7)@Z9;xAzVXn-K%qbh`*O^wSnLJ|Ik+TT>EmZ?b&Mo&V z)1}gZms526qH~Ad(#&mERuuh&gK6EkdD0i97sG2suY2aiW9LK02sLRlXF^%3k#JQm zzgQOUvXmqLWaI;{?X^lEfN97t@x%CSoTJM&IrMvea2(G+QEZ3fIx&-;Og}*qR-k$T zYC>lL=@@~JiPAtYJLt<)c@32Akg|ofUxwPQ;O8rML(!(50f{ew1H;ox0JNg zdP-Fk-hSKg*^X1M0gr2rPH1u^k70)ET=Xw|rIyIU5{FCWKFl%1O`zf$5Ow%cX86YA zGe(q7AE!}C^3-pKdmUOYq5~`yV@H(>IYf31Sq z;t79Zci0w!x^FSI;Fzthquu`1!Fylz#C+Ol#8mQE#(?7UWk4nC~yeu_3dl zKR@(PH*+tlyNS!XMd}VDWn3(m3s{;3h0ozw^bKxNpYxC34)z@F#6ylbD*`zDP-$7~ z_0)T-{TD?R!c6Qi1+PV7Y_=4MCbMGFi~vr?SGXKwAZV)q8^{ z5}vyW0nNvyplQhO!eqx0&cp~3HAdj}Y99iaPA5RJLK?o*XvNZL75LQ!(aEJpgC9dy z%k+Fe2&yKsyv%89Wt`jjVNP?k;$dRHS0bQ@(Jon*zYTpraBisdB0}rvNI%uq{+c@%w#(~mW1EKzS#p9j88kz5gtQ~s_bl|gvHbRvhL z*OjmqyjXpp1Vw3IO{?`!bBX_tt7{C7MBCPJCYji_ZQJ(5ww;+wY&)6QwllGfiEZ0< zUgw;9&b{@jtGcVZtCJsl@3j{`kk~phq@=E1QaigwfZ-3tHgO@Tr~e8oLb8;}O$^jG zP7#dl45Ywf|61^?VpU6h$wFbS@lTNC47NR4V@Fh*1JGqoku4Uc+Msp0Qn;4J*Kd_w zP<=MwqzbVO%+u5$OzMwJT8C0(mIOx;&d@+aB%IW+*1!ccY_XKvq8NcfG_OSMnmHjf z1+(S;VP?97#oK6V8uUl-B%@+B-dEpjF7sqOG?#y=rDr`n@D@&?6AbDeo$8B^);6pFMQ|9Eq2jLO)cZ#&+DccXR4l`?TU_j) z^@S^3y6*+7bBoi1xDev-F8sJv|LPX)FI@EAT2Jg|_BU(o6bsnP$^2+4R8HX(dJB8%zIRkDEw`BzJkj&5vT97k05EHf1 zE&T!$DhGa0CO~vmko=~lV~su+sgeJqbsx`IuL(B112XZ<*zcULBVJ@C>+mwTvrEFDuND$;GNB+`z{9GzKi_zt*TZdqeUW;FJWJEBq6K)7BI&n zjawH8%!!bm5NTk<#`=+jM*L*MHx)mouU zq0SU0G$Ob_44&3u+!eZU57p6j7bHW{6eX&3Z0wPM)$SKbj9(YQnE=g`Z`XrLL^0*U$cZsjU^2Lry!m*#O1wpXJsPTrRxlmJaUM1VsIGi|BA8de>V-Z?CQQZ+9u&TQ5 zu8*_YMJV(E%`ohEk(A}G7nTGr6vK&WVgU|RBd;4GK&wSnq}qAD!3kcBrH1M6AMJTl zuCQv8Lp2BWlr*-&!Y_H3#49Qu;Z9DDQ?MiAaa?w|vdEfQ(^6^#i1M_p>ex7oXFe~xOwRe9Z&1sCz`QTBcg8UK*h zN`rGby|H`WuuB=oMzjE&RLhlB@!t-`gUR`yhI{3C&mDRr>Dv^njG>I^SvmlHkiRa$ zPpt`n+C(35*I*cK)gxZ(>r^kO-ke<6Q6ja=O?z{`pejsxomrp78W0<{{F7)~gbi-? zAf5-G9wqQx6ZLNHs2DVU{k8m4D!wNl0&Wo-eZr)$YA`_kLm0v_{+eSVI6Mw27OjpV zy!8cE-6EK_q1a*`NqZ`8gK5fXSbSR4jx6ye{+w8=(^$Q65jz$^h$(D91{b!`%CTfi zZAqXe-SRoI^5;-%m)bNaNUcLH0F!T!((y}bKW~jfbX^koNQ~bZbDHyNF%-au#l#<9 zx|V0O^nP@a=Gg5pHHm@wB#vxIM&puQ><(%;PLT zx&B)}?PR@a$c2<7e!pJ@Wf%mjr`{o|Vk*_8HbYSL-i+%lHdgH=c|oX;3#?MSQI5h- z3i=}y%tgB2q&l{8>6qoSK~8H}y&vl4ZWD@z&a5zB{c9n$${o)2!wM?}+?RiwNYbC# z_*Qf)8Xu<#-kLWCo}U`-*BM(?>OL`3Sjk#RE7R*pXqlEu+7Tm{SxQb3awX zy%QYXT#dg#8q^t?f(>|kx{1J%fq1>$ee-0vIxGH+5osaE3IGDl@JH^FUK4n*Gmtx@dhgelSsyn5 zEakH;Aano3IIROgv_yNJ8U?3;|EbNpf7g7M>)=1DocrG$qe&dIqShSC(;lovohB=- zB^6rTf;dn;21>pBry$bm0r49qtmz0DA4Wf9S_$!}XE8V0ncK+m;WvtsEJjwlQ)5t%c`g4ZZ!ANL}qH=pBHLY69etEKdve@JzddQvc?-@A*K^fnzc`{%>oG-8=d|9;1t%A9*;Y79tyw5`r1qUW%T+{SSY{P2BDEUMK z-whX^!yrOBxuB4Vn7s71R~6a}H$Iz_j)`*v*T!?8+N!`WH(Le1B4;N=bV zwnE>L$70f5|EqR^DwQqou_X983zmSWZ7z4%;To5x{yUnb+#RU)$o5oSj(e8uD-muubt@j0@~bM{ks6KY;K zQa7E(|Ne*6ur9b(x@y%bi!ide1A=)?ERkL-w(BGs*@lKc`1uwYD<65^k6G{omNWQl z5P}2ZQITv-4md*DI;Dw&4F3F{h;a@?x|I<#S-Ev%l42tDCDiyL>yg{4qGTxJKmZEu zy`?yt1erLBMMz3|Yk&yfOmXvFsrd%jq2_W6#j80c)_7G#Si%Z3o?rxP%uUq)&rjak zs`~bv3#?=+y=51@j>js_$ltqISZEEP+P7U{N=ZUP2ao1Jsa;ZhP}cc@K&gb^3kDpB z_!6=>yok&f5fsS0{NhOW3doZV%@ozxmFH*EhQO>VD`dR5fRAOs5p0$zUn24Q>yO5$ zMun4{n+q-|0LLFs1Hb(&I zT#_(Oprz6(XA5~it2o28ysdikOXu*CU*$e7u}FCOvcQs8i7wd4_@fr-@WyRwGey>z zv#-D#6kTjt%-q-0G!`e^bz-vt;2)6fzcIkXuK>yI`d=o+5-zZJ6acaKsp*uE(6Svy z9rTG6=p{|k&K19U`<$9wzCU#8`LqyxFu5xE3(S`9C}|BHU*4 z@CwB595ll&yaqPJ65NF>u@z4-{+r}L;sCQTuS9PCZXb81jz3#GUY-d8;U-ip-_h*b zlzny%Z+je0lvq;8`NKicu_BJs%lnWpGHI4ii)N?~1en^=sTvvMk+n%Y5C33DZ@w?3l$ zab)+g6jeBAMMt)W$M12aMNi|G%zTi$Umh3qOZFY5;8qly zQC|J=rzo||H%R3$t@(k@i1ONx8t}DrivB&)0OWfDfbPuI;pFl0;QevA()qU1v*X|i z!1Nwne(D0c0^lIU8wuMisGXR1aY=2)k4YcbdT{6i7s6|s5bPL#Nd*E(u`>WSpVz2_ zE4if_h)v^}^FRMIraxbqc|feYtZu5UpLgxi*}MoOt52CNg^7NP7Kb-UwEW5jXRaBv zvErzZkTNAInl5`X2b)@+-4Tl@Ag%V%SgQ>!-=TX{$TO`=!q_eJM2Z##*;7X#Dbk7s z_uZ9xFHkl~AKEm_mr9PwOe|f9VTG|}03}VxE6C-Mvj`_!5~4sQi4C9j8!ASSX^!^i zK6h-?CrI>~qx6jV(~&wWfucS+#5#$_iB*f~i4IN)HVl_i)Q#U)?=|n=t1XDzCyQIWKlW=-%JC%2s36d7$XBkqGwZ!Ep=@HhVWRd z1{Nd4V8@b6*>fnf2j!3;4)^NJcE@CdVS^2axh#XhBjsD-qJ(~ahz33<8X(wo(Sl^k zK%3Q<><2RyaVcrr3?I&RyIp0x2Eo5V(jjR}Es9PhDZ2&%8%V4)(iGmP3*mHNrM@50 zyJ%N**7X*?umOS0-?0%{cG;zK0s$uu#-<%TQwh3d60 zkFB(wlr8`@MEAciv>S=fi-UY@pMsBEoGt*&2#mbjbbQb!UR6qL?Xw;N$cQNO0%)@s z9Jt_T1aXQHzsd7|b06SV{JRM^Q=_|_>Fvc|zSXnMTQi%p=UmRxRi9G)_8bcABePnQ zrW5*_t9&>5dM41dcPH z|B@>%Zq?tGLPJ2J^vh;u6}7w=3EtIQGI}6CRK`&&B}AMdf2vq;m`83tH0^r;cXOa& zS$NJ*Upq+cMyMhv0pR#?nDYLbNFqL8hG;iQ@!MRA_pzwkKhew93)^2wF8$40{KSG? zhM%1!Y5x5Dc|&oCB#?Kebz(jzO}yDo*R%6@>LMU;uJ)s%0v8CrZ(UQI&FB=R3pdCS z$aiIIgU-c`sCq|pu~j<$Bcl4pUFH970edW>&3u%i?2ZTb&L5ATz0H z9E!K`Q2C?XYBTpTO_3xI?`3iD_(vWb6J}uh{R-mS|7Z%ifkmlBW%kWqB5^a_4ud;fWh zhwmqaYx8>fi!4krgl}yGkW4B6=|6w;hI!k3)liwIr9Q6*-Rz5(>d{`isJ@ZbOMEbHjvBI1v zm`}8pCB^~DmkV$H{hNahX1zi#tqJDW3LK5hIKy|)yu;Ka){~sdS3_8su#?lsA1^HP zw%<||8ZxA)U7It7^1k&zK9_1``uIiB7i1XDEua-HQ*EECrD%U4x>*;T;!ShubJNR# zY@do1a{rpS;g7ag>c!|oCmV%XYChQy7jS6B%i=uLlY?k-9u29c!W2WP>8Hu?^^bZ( zR1gCpi|DHmvvj@KKzv9Cooj(jkw%uSc*RdR#8#Vn2h`Ns$YoVadl2Wevo#MA{TKSz zm%Y0Nm8$YU&(zWj|0g0CltG&;pB0sOd1e9mt%&qB+>~&vlhCN%l0Q3cuj8E1h?ilS zYWRVS&iIYEzVDgUXCa?Nkyft7tK zL(=rS#my>V>Bt(3+YUZ)p=^tZNl~U$=7MS#DY_}Jur*D^a((JQtv7}xra9#Ydq#{E zON3+YVnavCa>2#B(KJbo)4$597@+9TYID-rZBymAx#Z87oX)k0F!w z+ige#mcBQ(osTT`sj9{XA-ZqCqH|;QnyNY@s)yrR%xc2N|F&oW^|6N4d z{}K1Oc=0IWcG&K-|9IK(b_M8TP>^>3tl8ifTIL&W(-gA+dY;ZqVF9zOu@ODK??W9{ zUbN2P|IHVRXhE!rP2#}O7wxsy)mvIfob>A+^cwdyucW}rM1@Kauu_&`GTDa`ikU#& zKofQ^e;xKD#tTg9N$RfMKj+8 zm5V^6cJ%$*Y-nVtp>+Vg!gpE&zvP}s-x|&uJZRMKD3t5un!=gUr6!`-tr`Zsbj7$l zLA|eX3xc2qP82>3l_=QZM71@g$uWVFkT5G{+omFCoIwHE>IG<_zmrR7y^h#-jp^13 z6fm5`m%WBC<#(GJtc9h?Y@ywVHzi}zk7i*j8A}Pj5GoI<-D>hnwGw;_IAaa_a|R57 zL|qk7#g+(Dt-8~0J{*X9mskxKl(?nmc&UGiOFJ7OH-1Z)Qk{p|b#4>gWf3XxR_?CZ zemL;S9r%36sewrd0hCp<%JwJtKVFyLUk~{C|B_p=-wH%mT^3{m^vMbGR%-tFfg2d0 zS3Vm#Ut6JeU-gL8W*Z*8E4P+?>y@;fh^QvZV%lAVQ4s#9o4yIW##e zYZzN&aFFN`qp;4@fGT8-gZ?am+#DNa+JHaJ(;^QH%Qd2n7tl>*nOByt^d&pZN3jvy z`*2i!J5}dsUl|+HRNHsLydF(L<|0k?^4f$fTUQ$C`Dkw*Zg6zy=O$iPN<$f0OwAMf3?+&Gs_+5RbcB`t{_ z3;QUKR_?V-b@~C8FB2>lu?ILXgp_JB+Z{*{{ZC`9=0aGj5{zZ9iXoLv$|8uSZ`Laz zjrRu}=geP?+*y?T8RMeV%Q_O58D<&#MwFTyD^!`NWADBSvOj;J^NX;Aob6$Pf5Z7O z>H)^&N~qSINE`4{=G?&>5&TgExM9t~MqWs=lKvs{a9ks9-f(7Bblw)w z!vZF4(!t_9+lZi{6msI8pDd6^07_U3<^#ZH9sHy<^<1VO@R&87+1Qm`4DCE@odxFr zGC2I1sKtMyx4oFC{#EM<(NwQ3d$p4l=9Ow7uLb&4Ue;?ZqlM}0yl~*}Z{0(%<0z{5 zn0(Gh^3Q}Vd?BRKHhQ;RSXHmtV*Dk0QTmL@ZHI}GM^t4Sfw8%wUxRpM@vcX#R2*&c zyINXN)KbjJO;@ihR2^>-srv(lFxRs4qeQ~sEeBzn-9+&}+BPaT zdqtX5-f?q;s6fBMI3o)2g&FFZ2PVL{3RbsmBSIW~6(D$K@bW949p3bW{X_jr*gwr) zln%F8h2*SqxpfU>fErUO9O$am}1H;I32lClsKCv9t(Ik*g}8A ze#-YljMi!}zenhH=!ox$#`PVO@P%XJHjwfT^tUibef39t*6o+peH`bIom`kaHCq~R z?@OA?7&^STSix_jc%?VrK8S{dxSdqq^sn_dzl+Fzdl z0`_l_uHoX(fmtu0Kj=uB_epp^x$*>LXRn)(@BqQ+Ru>(>D6H2??`8SX)?@Ax(4hX& zw035Tt`~akz9raKMxGBxREk^o-+X;YgrGCG_G1)}<|SvHdLF`MEt?8d>MF8Pww*r> zTPO63(wbdVq?=$6`~a8r|lm3Ba3IJ~S<2$q}k5WmlG2G+ZSb!aA2 zuB6=-L_COy76XAgn0ce0(-u*faY&?t1#rqZp^FP*`_VzDme$DfR-orh+IX-BG@ZqE<I(pE)>T+QJ-n)Zj5jHHYHol%m}5L zDuSDn8R5Cyl`OKU8x=kWzG^6LqoOhDX~x^QLW$C4e3_5C1RkU^qdCuP0RSyGrg@XxnG)?Ztn;+$v;m zKeAu{c>oJ|6a4o~0nqjv+5(Uvqk~`8A3AzXl62U#-Hr-+KeYg1KF6$oVcR~%w0E3- zdZ6?8OziGquUkYavakOe1OWSQ?@M(k-&;IHHtnxfAQ(9hvp-c8iB2}27c;U)(#d7@ ztJmmW#qx-$vKI(GW*t^rONzb$aUfR)Gst*TyXMThZH6Hk}6m8M|t}_7hSw4#L!Yd*PW(~A5(l?$J^io%|M+{ zCRm?brORju-W-{6#RMfOu8sL(N@6|D1lXj63U}aqHJJ8-y#c|+SK>=jWy>2CCu$}+ z0o3UbL@ih>M$Zyry!(vNicH7*?43{c6YlFyu7Dh#-2*To z$L0f2j9@;AO9eL(W<0`g{t{x0*dE{~|D{F)I!7_0KJbXGx>nzhZ*vT4dy)N>h5X#= zd<)O!c-79{YQ>BHEY|*P*uqQfgZ7zS;8ga+VPBS=t`_>aIt0S{oNJMsLNcjPRp~yO z@ISZ?@zJZes@lAG@VF0&n`7s#Xf z=#${b5Z53l&Aw0$u8rQVNUBL&MI}$dqU&z55|@0`GlR$qMH;k#l`q+PONu%sM!GVY zpTGfa%EAgPSu0J=8d@yL1l^v!Wt)+(-MUa{4gTj1%Dl#mJe*3UITGvaQr0sZ|M*#j z*T%25ITWY1Ta+ z@V&(%{AVNgHkpq+uM$v(!2w9l!3hy=J;<31F%jEW9tY`8g0dYv@_kAmmR*tmyKu(_W_k&b268loy zIw)=SCM{tgwl@(RsN=!N<+j(DIHtm~D6Mns!QhJO(Vd6-oC`J&`)z;qIe&CGmG(`1 z_{#h29o2_2;hf_pS=gEgS0;p^1fsNzwiDqMj=sbOK`jXOn3dKL?PX#QZWtA1Phb(h z)$Ook>Z$A*T0$*va%e81%Dl*kI3z;!Ke70@Hurh>&gf($DJGe7!CEQSR@^xb15UeR?vY+X#Wnjv>Fz$)7MnGAb0 z$@-Ii?77}MW=8D!+P*36{m~)$6~qH9rIphD{H2?2dr|I*+j*$4EfNW}cZ=3eAvL46+LBZ?0+hjd-C6QVKbuhZ=r+PDi(>&nexL9%X+Z&y9LR9T^{_V1`x6Dts`{_T5JAjO^{xexu~) zC)Z0(DORO~O*ULqcE{rb_d3p^f|jrx9@qWO!wsA6k1VX$Z8)Ryi}R3&){)w7PO3L% zv0*=m{>|K8VZvj(cwG<*MVM9-aZ4~x4+_!l>5y%PP`wiWUDd*BDZZvO5fm;6;v8$S z@NDdR_}*`i$qI#4TdPLpfIliW#oO|W-754qUrtd_!0Ax-SuvcJ9XFh^7bnPlIDyTC z%rX<{Q^r<25ZX70?N!AI^dwt1P)T%4+y4*~3D2K!?TiGsIchyt z0A@&jD({2j^n#tb0nHuIeqDx?g1C&_y1x9hJP0wY41K zxFT3)$+{p3?IaSS-RvlQAu5Wzj|nGRSR_9JTf@E~DR30dR8|}-!EYWgeIqddH{B8L zPjG4`1F)MN6!vGDM>H)ZY<+8@bVadGNtaqKI{L~9v}^+^1}dQGu)NB*iu4gF99+H$ znwv+>g?yLf)2O&66uJ6}8VxP!0xL75{-X!pO;!jPMP}t2?uUFUNq%*A9#ld?*zb9z zp}PA7|1UoW&cP5^Nne^P>*xK-S+QRk5mOzNV(`>UnCJW9k{^S3bs}L;7RC06{dHHH zawq9!?|!rqh6pKt`AIuv(fX@H*$8=Oh-P>R!y%?CZt`PdeT8^9@pdR@t??k%D8YhF z%$H5284`MSkV3(oC5={L8@dUp16Ls(+#X*WgtT<#Z57uZjOg0f^xIn7M@ZEP7>GRw z0tb0rhtO(yEp0r({XRnJlMSR~iCQ|$0Ic$D8l>6L=1{NPa0zjYy4M=^$Xn0i3>o>h z$MX&{nHPA8knbzv8~6=;vE{>o#l2!$QMDR~2Plu->iB`BZrAb_>0nRf?N>FRiGiDs zsAKoCb!}AmPS6fwTlWq|1@YB@Inw}-;yqRC11d_wsTJIqrdYJ{n;1=KIVPJ z`^B#FEzSGJ?lOK5xP4U*uXXRH7-H4SGbyx zsQBFp@^-M@t!~+VCFt(p6)0)1UYyuHW5_)h$Q`B1xiw1^ltWqP;W=eu(R&zrmfMC` zzXC>QVGjb+0kA&F|7-w(Dj@h+*DrUUh_ClE?^o}SoyL#1&X2}-(^>B~z+|rR^O@BP zrF$a9?wP;-RS}$D2V_ETW3ZF*j{oD}PtoeRM$&M$CG0d^dWznd3d4=y)ih)SG^ z;L|_~T$wqW6G8CFTil0?MSD-Wh6%>TMor5m8tyXX;Z7PcN#Ht2{tV-T6v( zcEFFfiSyhrq#vlo!X%JD1`8wf^%B5)U5Bwfqmf0*5IggX^-P8nH4PCa?i({c?r`eG zcJ&8t1D6;}V)b_DX4RdgPna#K8`L9$DV5hN3>t`&n^>zqSj990jovFvU_kwearwv( zigVjD5ZLCO`e3nnoRQ!;kJ2mN-?A>|D|N<<@i6lCaVU7PvrR%!|{Hv z_rCFQz0&#e;{CAF`2kS&X#5mb=$*hg{l)Xw^MUb^pmU-)RP>!8j*PInW}Y=6<6J%2bQ5 zsIA$-lWF_f&w!V0G%pku6f61%!#AFH88*x9Nt=C1uvQ-b061UyU)RJ8h1E z?JUupk|79tJsa&ZsR=!&P({=)pgSZ>JIAuKWBxSI35d+wE*w8u{wl#~37gWOD1bG6 zzT`F$Fe`B_jV%yG=v6f`yIzB3l6m)&syPz_<$4TK!_ga{H378 zA=87u|CxI^OZjT`cvMUHZjaWIBMjSC3#SX6b|Y>kT*%V}D=GR$Ye37vZtEG5!EWh7 zivfS_Bx(2ETyBT`e*%U|7r)W9!ZDz)|DkSD(}8k<;!1J%sXj?jHL=G$g(K07#4P`x z+eKxQyvipHDzniRJE4I8xSG#kf8dEW4(qO3nI0&Wxq5yQttJ4KX`4!S#e8}axVNHxh}PMziA%z$ItjD+oN2+axBty+ zPpG&5utTTACoIWr+m`dDYpX{He;=uLJ?C;Ow1SmBSc%ppK@Cu5TISU8Q&L7pM+sk9C1- zEsm8xnmCcfyRqRffc@|s$ymMY!A-v5!>Hm69V_CR)c3?>tJ0)Ep^H#-yh(!lO$%uh zZUO}@P7du@Y2n+FkX%W%#8cpdFp<^f+U@m+pnm(u>rj?5@Ei+Ni_Etu{5 zZvnmIxmC^_=z+o89{5IY@@6wk6<1&If{d4t$0rQn+2e?7i|E^3$O^%^X!d8WeDqsC*$e8Nqi0>;P5kjv=h6w9Yd)pGVI@rwKjV7L0rHK0MgzLg z7S|x9-mdV+`!Mo)m)}&D6;+%x^89t(II}^_okJ0kqUDO{0|V#GH-kqYq9p#lNa2z; zP7x~bgYL^m3{;(hTx?GvgRlak^*|f2QVJF2MQJ65f){fWRB{vc@f3JbzUYNIH18yeV(6@PjSro;}m4Y5_ zJM8GWm__#iiOgW=9w9b5&a{)Wn$oGb!`oc19XBJ+Bwtqynv?b;0&7h%-JhuHnmc>) zm^b)bgV*)Kr|z#6GT)P@J#(O|yUN-2sh+1oh}Xe;peF#ffaaM@^HscjzUC%Q{_!&)c>Wh~<=6lG&qzOY70nHU=T& zygMrHo03;w<`t+l6re1RRA>5<+B?-0sk5{asWU@KjV(C!qZWgBV9CyOw5b_du0y%; zN}DE^X{+e9++17MrMtSU(y?j!Ojoy^JkFDDzYWp=xG1b=6xRz~jYA)7XHSm7&Lz4QqJZMF@)96ox2{p0G!#ok~akvXtkaoTtk#2#$QS zZ5+68n>(gW;J6=yW2l45aF)=Ftm#_q<+S-NZoe)owvj zSu_UOl{fl>l9_B{)Af3G?N7Yan)}h?*e}NOJDvAHY>U6{Hy!{u-{|L;UF`82_6+vU zU#2un9jyMrN0C>ssIFcg>jI7f9bgBDhKc`NSIVmTaQR*%D_m)*|5+ZrT##4F_u&aY zwpP2*7IpFAKcMW~?R+QV_)mmnjQcTs3-ed{p;;c&SWITRM-QQqk2w2NjK8dXjob}A zTO?_Q5wPL-3~RT*46y)Y8x5TD_XCAmY$50c^=>X z0v@4`SMH!aBJ-l4zDQy242uToDBtlnq5-vNr!4OGi8_9_KOuJafEZ5sE`jCps06L> zakqlc!wr&Pa40OrC#@Nzq~eBW(MurqU8?InG&t(}kpTi5P>(XQH$5y8hecSY0jh`} z6$4#*?Bsg{GUD$@v}LCR9gp8+c9_al1W>!PXQaLQOU!F!=fnLaE7G1+^z*9C>uK~m z?t*LjAky@zTmPr-7pK$hBe$?-{64IOjwLjzz}_Z6G5 z@|OYdCeMRKsky##5NvZllW&7Le83gXyua*{@)3uwiG%hzgs5eK=O*sl(%M5LvJ-S4ZNo>|31?FUFWePTMcizraY!{1vKQP zog~BEnd(Vx3NQoL=D3>55n9e?hDXO>uwY;xRu!O@*hV5VnXWKn)DE>?F9{%n7uiOQ z6#=@rkiH^F;M*Fs@*eQ7+1AJO4yKwMM)|qFH7pBvOS#!V@B$vC%}T^dQ(}X5!aFm+ zM~adm{4#E?G6@Mwg{U9dV&3Hsr1XA9042LnVLx z7jkZ7U6Mc=LIce*JQIzy6O7b}2A#@VDN3gwbZ&A#&ESIHUsIjZhMgWKZ8J9N#-z=? z92`v!l^_*d$(|&TF}~~G@Umy*=d1>8NTU*Hv%N#SSu z-`KZ3i>O*9F|j)-;x3{}S7^LjUrarghc){b53_=ZxIawHa$vi!T+FU?Oo%KQHF~_D z-f;bJsN6^_XkV7AFa%q#XZnRO8;$j}edy{q1&jVXOd@*d=g{w1r`NSlym3n$?367< z4+f2?_MPVLvS{2Ry#ho;_&r7>OUww%CYLcoto&E>7r!Fm#2u=#vp@UtkWvL)eO2F2 zEL>cZm>rwQek?R=ubG`0Ezq^c??zO~xwcrJaCcRn*Lq^^i(TL#k+|>gylnn4`BTnT zVTvdA4rP{^d!p}H$EV9s=rrT8pPx_lqa9ta|3M|gOlbg{U}pA(<$Cvp(8diNg+ghQ zd_TKm$vx7xQ(wA(=J!#Vq(m1^FlCB9& zU-znhW$#MwdAG5S|3oEys>^%mG2hu0E7qZZ7mTN(E7<$g7`djdu>tFsEq!TCi_cV_ zww08ns42PK4j3eVoygjCtId-lGR2n>VyqlnhwExdNJY-@XoW9*Lv)x@{rQ=o<>rq{ z-&Jr;p^)L$sej_g17t`J=qfR|;xUO|7WH>`%y*T+Cud(y%8f=X`u+J2$I>ZxbbkGI#HY$IgrH()y%jyks@17zVNjRYq6({D>ENVg5WmpMI* z4&{HHCd|;q_%uys`Iy#4f4e4MhaNfFQHRTSL0XibAa!<>OnVDQ7TX$%oDvQ!uwUBFFUPJlC2}ju; zU{1eceu6~EAif7Bp5bSt3e35q5Vq)sm(%O*5>4TRA-~kZr^d5vaOh4vu7{EmMaYAI zjK+M6f*OVaJ=<;OO;8OtlZzVCwE}z?&5n0^P{-E$yiTYuvCM~q#V(K2;`_rdp+&qk zNzr$w+kDi_5Qn6LR?J%^>nh6g-{|(wZO{36swPU-ALagOpXma#WJXo~O8oIG75)B; z^KGc%rLIP_mSFc==K!35#pES4{?8-bFT|A1hr&***TV7;cOC|L(T^boG;!5NB?dHa z&KQ9~m8R;ygs&&Pj|52!@j!u#JSYwFPvw;mDP&SXi3z$jEtPJTvS))??U}9?avUaY zWwL%UK!jTaM79^HBe!#n(TKiuHA?Uiq&tM?B2h#JWD=tuxQXjkpk3LV)`z0hLYuW6 z?5=|R&`LrkL8Vu}A>8&K)Owg`veyZQm_#guR2JG7$h-}9W;QRy4h)=EnEInPk4V+B zTdvNcf7sk>-G1{6`Rr%5pf$MV?lm!c@PWFGT9Y$1=Ch_cRj4#g5?+zVj@2gH4|*(s zu9ajlQi=_y9h;%1h;SNo2u2!Q*SWY>qgG;OK7!O>11LBEYg*7j&>^lc3#>3X9NhUF z>)&jB!8}Pi2TilPLO0%!S0aoPNXVY$VhhbgTB?Fn2m|imz!3N#34HAiWYgt1IevlB zNbKAem!zj>roFd46m9Jr%2Pv(I_xEH%Eg-xH(%O~ipEs}uXPBw=kI)c(aqa+S}49M zzTUbM|Le!e6V`Ym1+Uh^{?tF~_-|#Ts|u)!+%zbI&HuCbUU$&9-<6Uyk{+$c+o47C zhWHLnA+Ya8(bn?J38u0VIc6PDSd*K+xDjq&Fo6s4Dy+nDB-{6Um*t?f@tALKzCv~! z3Tad*f`|8(W=lnlP4F7w+N@kv)nmVR2>%!fnYM%MoLr_oClZ=D`}E;|`6 z@bD-rKkglRCKWE6{yeDIcwh0CTSSKzwpNE-nWQvW=?Q5^424Ie>FI?;#+kKIQXD=A z1L8oJu7f(=jU%;lgli6vghp|Mf&TNR5zl4&fJnUy2x7~@Yf`M@nVbrA3fvYV(7v>p zaU=DOY6)`KLC0ptIAN#b>RUuFuf~BrfJh?5{5cMGRb9GNdWLy~%{gik=J)(O*y!^;Iq8`MxP;qE=6kFP-cQYhHW$ z^^!~0pdYu<-zX1;Fj`H~A?je}F!V5dC$y#)MYg`dA$vL3v=^#5g0YTZH{`--d9u?d zGUts|d!A)w!ozcWe7byIKb5F|Xx9=Gr;4H{OAhg=1A|y&&M>lJE2PL7$wgah z-`CK-9@dpK(ephjzi99{^HB@#S%v ziZH+*W0AH>w;2bmf@(J+S3M6cNlLSJjVo>m)afpL zf*l9T7GjzI7Q_EJx^3B?tLsMu*Z-dnUM*2K2_>EF&hPEbhw!48`F{9@`g`Iom#-tN zv8g%Z-GxHL5&7`<=daUz0~3*C zO|HCO3+iri`wf}LDPnP!UiYp!lr#tqW86SenplPo8BcBn705u2fTuW)n4TL{?Wm@P zSMwBxyjJUC)TD&Yf(7S~s^{D(8~VBrWZeW}%S2>4>(sh|N*yz2-a)fkpaq2Z;T={? z568Igq;bPgY9?b7`Egpf2WI{;Fb;g-qXQ4py}YiX=*GJ!E@X2*{^%(68wbaWovPwE zORoSBL^x%d(@qa4lczRL>T{BTU<^-z2Z0Ka@;p{+iYxSqsF$4MhzOM?97}w=gj;>eS8KE zwPQ}$kUc~k#j{>!ST4$@3&zn|uNJiYpV4l7wvky8Ka;9jg>P;Wzo-Zge3RZ-wMD$- zB(#>%j*Fqc|H1hf*}uHv-C5$$C=|#`^pS2k(H|7nBF4s6Md53u6~lBcvRAh57T(Nt z8)v;I#d*R;^MogpDF6Sc$G@c|H!X;Lfn#fDoZ0`1b`&hou8_mYh2_iCERuJv2LYSc zc9kgLW{iQo2TvrjSopBv}G zKnyVUJ3(h;2)#SV&-c*@k)dJV+K&mDAv4hkSt=yP9;5^D2i7MT1Xg&wH+YvZcSoEH zu5C)sfx2Pcjvbj)*IM62@|Cfvgb8!TDjl^4FS_XOLwbsn=Djx^(Zw~xH~jJJh(q)| zd@&ul2F8NAP&m;hs9&#|zCeG6SKIwKEYQAr5P`P<1rI15tVVE1nY~04V57F}51dBt zr=iD^5W))UHXsgzBWTu+-1ga3$}#3#IB>yK!?W7hE@M^WQfQz$C$6}Se(`$WgUQLl zpi3cm-Svzu1HKCB4-8d<5eb{UElXcJj$ZkXHAgNF-|T(kGjRK`oB^yYtF3yK>2D~( z7=MI{g{dDdXb9c>gbFPOqiLnTEGkR()r0b-CqV1x`CS6@n6c#wcX7{Zu^QtFp zXF9VAz;+Ju|BkNZpYgr2WT)z1ZL(4wg!R|?t;Xua@!g7EEQSc_{!{piRiS;9sG%EB z?P$x#E)1;1il$gC5H2mjf*p-c`Yu5K33u^r(8s32D`%$ilOZVf?9oJmz{FPTHW4ji zkt9^Pu??mUAK-V`4%)4FR8we@3@iLloT6=D_#ESvZ)Qc%(5+1J4C!{q&@BehkAq6Z zi07mq>ta%c->l;9ecyL}`W7#EdyCM^anZmL3Evs~)UkC0ktN?3@jvhA<39R|bJm<{ zm7^E6yNhtJ5v}N&DKO~MO-XPEEXXWD9a+jBku5s$Fh8DPbHAaJf=}g5fkjd7_8f-j{@Kj4WrISFULJd8tFIgX-k@)iJ#3*@`)H{nLuqQy$cr$3-Bw z(UYT*PJ`{6?k6g`_yXUiYiLtkIU7_}L6{spz^&QH*PAW#3$@&s-=QGN&<2U>{dB0C zfrDIYEY81nO+}vUOP_iID`}pYGYG?P%B+s&Kz`_tghxl&*hT;|kV zn)85@RHS9J#jScHsgiDjQK~JZ@?Ms=6$b|`z$Oae7!aX<)eK7DvKQp*pL3M(%fI|? z-G*rptV944=y1JZpQ=rhiX3DZWbUciU2N8105f(Fr!~99?&F>97P4ar?Kn^Qo9CKh zD4DPs!nNC6tko-b*5NsM3PbB2VGDzwHF-05c+vMwa8Qi;{Bnojs^tWWW}>Z_VWy)Q zPxe&oSMc?F>^_4tl1~ASmu(ZDhurJBL*~Csnm)}W?MHUD;gJ4M+Tq0rS)bX@)um!J zizl1^$qr~eKuWmTS>R3?4!~c22vnV=#3Q?0INM^8)m*uV-l*RHna7M)|Lfs9`JLd} zk8nA<%Nd22MDN&5J=Rj(_<0RUPB{;c22{?P}eh{ z!PvoE*Gu4QJ$Q~Sg>b=az$b*uUf`$TD@y2>9uuGH5=1cj`mR>%$@XcZsq36`(@#na z$T*%3WY_xIBN>q+sqqe=A;IRgSbQd>dz86LB@?j}zjh}^6cw+m8DD=>3u zHJ*vYKYtb4sCMQz+xkrJovvzmx1BTR9T-2Ffwr)f#KVCfapp-G6u_smfj0B=;{b>B z_O>2G?MpngE#xI&(*LBttEr?DRhXTDkus7s<~ACt*3OO|UJ{>zkaa83e*ylj2;Chb zJRm|m>|s&VEhssGp_S3<+Y|is1jU2?={3MBrYH;JNvztnsG{a{NxWj~)H7X5%Pb4l zYYp}geo1t%GkpTfKf`(8v{QII_Kfwx2CAnh*+bpG@Z*3V6LyV zUHdJ`Q)17QUgr?xz80kZeN092iCE5_BLJHQtaVPTZlG;n=Z;9^*G;QaI9TzSbr0Wl zYI6yU6WQ938qvv#+AVn@A9*6+Nhgll45x2^%}6qvWg()(46g>#8r+0WB*xT;6V1i7 zQ_p2W9Vl<%XlMs7i@Q*d{0*xEaX8~mRKPZp3eK#PXP@Jlo22Pzc41=smT0YVWXQl` ztjg0nXi*#F>Up8)LY5UdxWwotf}-N2#nQWVc9@i!J~Ebi2RiFQ-vg4Rkukyh&syC_ z&xq@hRh65L+o=~?ob@>yrd^~0kJap%C?d|qIY^ct~XXX9KK2A zR?8i?j;p-UZUFXLxAlg}fu$$E7%Sp^^9D_M;J3TV7pBp7KkU_O7(faKsvWow%C#Q` zl^J3DVtjda^In!56F*w|B9<=)>***y|^T=lYotT zzvqHGf6sAZ{dPE&BZGrbf!5Y9?-=f)yqs$xuL{M{=G#lZD4t)z?<|~QUC*GfH>;Ng z@pR=zU~18*JMJu+l=neTv#aYKREtFw$|}7F^iU&X&^Fl%MRY)sqZ8WBMvZgEuA46V zLw%$DgKu|TzGYc<3ij#jkgpWQ)u5LNi^&-BlQ(nQV;y@6+z8pv2nBm9IOiq$*)f=^ zU8aT$>q~Y%`%A-Y)BKP&V1-T-eSvt@sKzA`mPtc=&5|}Pjy>LE4Ek zh<3?3jOaVexw-1imZ@9FosZ8Lcm;L~M<=p?Gx9$1*+F^dwr`tT%6RgZ7bnVy<^YsR zIjOA~vaj-+2I%>3ff@+%l!#w=5<8xiD8rJL3{WE?CCO{AimG&HaR02wGnzLCuDEhGM6|Y>%-%1$W>@sP>5~v8NeGWSJWG z*#kdf?i{ynJ&^2!jZK~xN$N(PKv3Bx_%hcA^Rbmm0LHR3a+1-KU5q-AryVJ?h805# zemmBmwlzcG%xMsRsm4|p#UYr!HTq+iS|kQW_!Z@TonVj{uz6&f`g6ekJbg7HIbasi zdX0;}HbB5VOSZ{WQVtAzL_qqmOP;=QH82yB%XgBcNlrRkY*BUNW~Y~fHF96CcJeXM z1lwqOeY3i1#&l8Uirj2~m497}J`pVtEWK26Pm##=DnO22>npdyiNW;j$-wQv2QW`SE< zGm`aK_Wi+q{Iqf?&1wp+uy(tK0EOCgM0Gw*Ai^8JX<#GDKcXTBF&{Xw@=k~^&Ln#X z5Cb}Abo2HhY^@u;*IzHZ|KdHdjjGW5-t+Nz&N2OyF~O zD5Jt)#yNt}h%BH&s+#Y!NT#f=0c8I*mp9pu8sh4F;6YE8#%$`bv8t-C>1S*D>5i z4wf+|`hV7ne_a=5e;8yl44mhGhF4{XMOgP+H#tucYjT|^>B+sYpvP4FXq3`K0M16; zxj}wgAMK)1ECR2nk^8Cm$yDYEg*;nuoD)fi)vstgV zZTwtIq$OKe`ScTkReG3JP@C}H4PV)xor#t(3O)7G-A16B3f*@M5f~CmBk1GzVZS$m zbUZttxV>nCi`3kkx0uw3(Bz6Q()qrav^_Fj-(TDBKD*M{^>HL_Tz;JKeJ0xfny`J> zRQWUj+awWmQoe4vET z^B)88PkG+N{WI{iD{N7o{`JuV3N7#$b8yJDqSC@CbZCDWV_j!ds>3okc)70!lWp4BuQAgg7#X*@F}=N%1;*JxQp+DyQJ`KH=lWz-El3O8}aUTLp}N z;69kq=HWH-uM%5cWa`;liXF|IP4h^MU1ogT1r@g4#ZaK*xT6($*!Auuc|%ka3;M#E zYBx>Wb}hQOo;t&K;<7$6@}$3d0=Y(V7%CVn8~(X68n7 zK{LNK*}Z`Y6W{gm1@7p~zGPaIeazv#xxyn`r-+xf%5mM&s?+5)Au6y%1kwQSJXs1~ z(%|k>gH-QgY+M#3(WX4t^46E@m5jz;=_^3YCtKf35M?CqH&XEB3cIy~I*0X*MVAPY$s34b>6M+Xx1?kiZ^km+c0v`7>VKoXS(a4^nnHYls~;^1%%LK#oj0(z-UaEd9)dks3E!S;iQyl z*$2M4a4%f1m;i4{?%P}*PfQqN|AS9|ivfVPKMl6hb;4}muL`~STq1DCKilsyKT=xW zkzE9n?jfDdg5>ZJyi=G12$jD?llzwUv7Afa2?c_b&nNf-MsWoU5$6^<%BL`UaL|dA zfZQLH2-T;Sc7V$G^fJu*u1VRnm^>y!VZtAJST;?7t((X$GaXEVlTig7RGhcfN8qrz zR}*C3g}n4Fi?>^BQ10UmO)b%R*6kG*i|q`WCdKj}Bc#^aN_5^xPyzal58{I-h$jv} zJgX(+BwHw3=791{>!Q(^78im@HV#&hE5&hEeR;8276UX~&K?&MvTH1kWZ!)z(5#Qyw(|5`#lVb@ z2fLc?Fen&$L~8{6)MR<-Umb6}5ORmyF>)_qju%tYSL{J;t#61 z;G`o;0iw5m@&<70E?w%{=6x}j=WT1BYcb_f?kYWD}D`UKKVyPe~|ctjQNiuGp+yNDkVR{d{B$2`l98X^0hl|h3F@h z8~57@*H|cZVxaV(_t=vY%I%BZCnlvRhJAtq@hx+`w=}-jF{(v(&ORg170!*9gySA6 zlq*om$c!Fp<>6owD+^Q98M_0yPG%12s$Nm@kFRQ2uJL_13pe>?8*ayt)2aLlcBN); zSfL3Dht zP){KnH>u~=eNQdr%gCANy0SxnsL?w`d|)ikX=xe#$bO5}Ef|h)&k|xL?D$Ow>S_WeSRPzk8M>5ly zRJzv$G^G4S$Qbp|BdJE`1m0!cIEf^;4QTo{9-V&np|(ewO}6^!Mn$9FddKooB8e^nLm@+S|YeUQwc{?0?FU!T&5TmgzL z`SW~pEEoJWg7cK|+7LVe?N0^u-uv3G9zezjA!Aezeb6zapz)pK65D8yvWRUa(V`02Tfz zxPpOa1B~vdAst9%dLWna(z5OlZM){V-_pB4_SzX3g6m47sK>(Ze&qM6jIY@?Epy)k zMW>S2%Y}ImMOo*K9>hep3EHJz#u;9=^}x}Qg7tbM?aJs}B_$_t?FiDF%$Gh20lDTB zi|mj_!hiTG+WXZiUv443Us$=7tpB8x!LN2psyQP(-IQyqFiY%AbDO2Lx6|d;HE!@J ztjpTE#HJwDSk9Scf`ryiHH2f5d&K+WLb3$Y%txqzi8MJJi?01oArm~p@LvC!A~qWT zC~lFqojfVmKY=x)kZ=tacbA!hFuY z2sQ(E*qEnrGP$1nD^GeV&*73^5|mk;dq$veZuD9-BT7cVAlTk~XVr74=yUd2du#G1 zD|*+k`xMVcPN^Jx!a{Dd5b#+(^)WCetdOoJP9lVj$)_2;vw98$6_Ml4`knm{oMij; zi3CL$bk-|SdX3A*>8Qp&TlPXD-W<-~b8avnWDPoSuh6g2pT>Ni_h<5*s2^!|xca6= z1;M1~O6&ZoF{xr|c@k)SmZqSTI0uhGl6VU~Zt$9wLxi#WMz1;ryxf$<``4JLxC}Y1 zXu*qHi!hajO9ksuJ&Mb6ZrAX!aqI`h;)F9z?v%dw1zR7*pPKT-CNeIbXLv&n zD;{r%S5#vAv1~3SNQYROrdAsr4Cs5ewd3idNfVE^3c>a?z%n&`Z(A=N@(*+C$#2}E z|7=OEe`)5;nuvdX2!DE~R~6`SqRD%&jKfjZrAho5K~h3(6Wevfd6Ty-R($&Vur`ay zx9N>Tf$T}HlECPq?5E%_XvfYEWF5f0wCtGap9KQQeDZM((6+9^O2)A~vf>rSH9Sk4 z^RkA&XpQJ8OIlfJ=5L~UY7fmIJ?*&DS@J%&zv6xF=WSj!-JCfK9>J+BFcW zWV&BV7tTOHGeo|n4Qq)GYb&!_C4{y4gQdug$EU2|fj*-!t7*DAi6IpAJ?!r3}K5QDSf`E4zL29>Oizi(@ zq1I$G0kPRXS#vS5TATgbd9}t$HReZvB-+YS%~_U`9{Q1`Yd5DNzHNexL5HU^No}LF zkO|=@H-Khi?ZJwet-t0ytAE^Y7N-g!z_?%R1f75?VxFLFT%y(*sx6tnUE9a9cU{+P-V}B1tI>7aBWYu7>h)@^V81NEfSS4bZ5Z4y(k|zafW$ zMmYJdIliHF>`ONPU^5F@ZFAhUGS2xX^TokyWbxejsuAhR4L))$hp;>J3VSwPB-_Dh0_QH{q-}I^jp{?L}FU7 z)52BUAHgeZ>PoK*PM=5EI`r=9CdgBpu1&@zv#`8OwDY|ycMD&-ecAxk`_FwfT^wi| zu8Ik8ftz$X^djztBXaW&bCUOEJW7_q?2d$*+lJX;V3~K{z4}Abt6%VnY(UYsd0$$~ zQ+8`=nvmumSDn{~zo1e0Olee2v+O97EIYoYX|y4FaPSw+{O zcq3N7tk5W-+#t~V-*B@ruR#CZItNNVtPO z!+cg79n#Cru^UNc#?`2`2gjs+%0&|=^Yr%-AopRPo5dfkcj0zO%yT=}<1QUp+sVpG zsjB93O*+$tA_Y3d+7qARXXk5NHu_jIWat5OVzcB)RrWyD??b&Rz1)%7%4l2M?Xnjq z`zUxWf;qmR_O>??E@-SSP$VjDt!GxF_659PCEVW=HgK*w{Sr7iqE~_K&s_xYkpN+O zmlu0_gGKmi!wW#pA3{bJZ^|BAY@cKu8$au?I2y>l45Pe06XmK#TJME*jLbBJ`q&ZT z8chouy_<{{Gd_$BFpiF!;MRtki@e@h@`YZ>(HB2t*JOV zC}8zYP}$wc^Z|x+Gc6-`!4(5+-zsXI8|v#bYXhrU%&1DtMzu@Nm6uE#oucVUUH|n>6yrFZ=ut9M5mK<#dwZijP)>*=u}ICSFM|)%U4;viE0!I_{|)`(c9b zeK;S{Z7G`bW>+ATVs3aHw|D348?^DgobV6o4p)DMcO#H^JwbMyb-f_1%SA#JAVwys6()^1~65ZoUw*Dm=bh0g!nwa(Heilbmr?}^5fV2qyUCN(z6D>kActO$iYTz?sz8 zFOS~ncMU|awem=;bYyO@5RxTI(Bh`j4rf5Y$`XWyL#e(sU~ewc%HHNejCyr12+Y@s z?=kOH{1)oYa5JKff9~aSzerld?OQCi<)M=tOz6FTt{`6@|(P`L`%f$7psu}WS zP0lnN(GBz@WqJOc)^ufpYGx}SITE&U>dhOVf~cE8bp~VD9*ifxA5yTkA2>X?H*ds<*Di@ zw6ZwFDI zdXvaqiAei+n`;9i_nt)xc`FJNy#Yt5QbTb5ss#PEFE6lPUi?8OsHnon(9Vmdz)Ub3SB!&V#4GTqidH03lW2D8PiZrPWmW zpsOeo@mKLTO1bPJMO-9iD;roB!eOS-?OR$?RW!&hs_@YUZ<>7k{9Ef9;C7|9bzj>R5vi~}>P5AY}> z8H^J1Wo>N~0 zsxS$Yfz%bKplS=APbwm2^7JYjg-g1u!^CLzdAt)@q&=3kUn9O~`L-ls??iU4z86D)`5V{{cx=dUNLlxW`#_mir(8MVf}!X#e_!qF)d4 zhP+g0JY4H)WY&qD`!9g?AOB>h^WiUUt{5@@H*&bDo8Q5}bfS()>%YqJ|I%AC5!AmU zUUI3B6aJ15rC_kb#`rZ)pWuWR^$EWNO9HR9t5}y~|t zO{Rd+d;qVS=$R!UX94wHK%i&m_;Sr{Z+wSPvOWc|>=Y`?;;A4zDIq@j1P4Kh8+MWhiawFYNe$S}p!OyQDk$$Ztm{U>1O;{k zPP-!>D&^qzow@&n>2a*6>aI&VLb_Ey1CSUU;Xf$28X-tndI>K?sX$e6`Mq6+QoTr! z&ai%QgoAh&-hyd-@43SF9McB-g7hN&;^&^@olSX%<_x>he>3ktIcWC>P>qL;di?W2 zmU8D=*fZmO=aXNb_l=Fa6j)EnI&`&-k)s&Iu+%doV1ooPE3Z#{NiU+OC)2905bttn z)5v<8k;eFSjXE(QS^S~M=KFMqKGLA|?+NyYg2(bVV>5{L``BZ8*A(M(7=NW1K^&|S z4qY?+R5Mv-CKo+iy_!&|%g;gwr8%jmXqp>J>nD=xc!IsJk2#?@iLC=@?-j-9#?PI7 zPOvF&?WrUkXkF}2!u#uQ-3;+7e0?O%=RV}Y^eZ#2>;e(#YoDuPyuk{U*|nEwK0i0R zTQfc)qC%hp)}MvNw5^FV3oP+sOV#V8x;b=WF^=y1FjZ$8gfMg&$$tknUxS7}qh3%- z8tfb{brN-&{6Vq3WJk9(J4_^w6sh!PAa5|0ee>0USj*ba!8Mpz z5?uKWR&5Jub^kXSvb))08TQ4d=<5}1&P_$LS$~z+c$DpHTixyd*4F=?b)_M+Ka$mf z-1J|wF^38fPQikFUEC~q_*vHavcu{1p>^W;`D(J7 z*yPlKG?#C5yx-_&m%DU5omFA1kyU%NLX zwd!@<__k!^sss6Av)f#X!{Tw*MjncNX(8-~m@ZR<26*+S!ir(H`#Dr>5};_qS;%rg zPBp~YA7SK96?^m+F($_L0-F*&E;8LKS_SI&u*2QFp8$d5e53asc6z=2Zy`*#AMlRr zv|~;>YeWniiX|5RnNGU*moJ~RzJOx_6PSiiymA~C!-6c)4p~7_t6X*jsdP1I$c&p) z<%?v5cvQerUO?u_tS3(pZ(3zlAuR}e%)%OczX=~&E(A9Srljr_S>%E9=h!+^bYQH^4MLfcQzEu(t!V-kNeLRXVcEJ3ikt$IS8%j(E|F4fXNN z89N7V!b`Mor0q9fla(H3$S~+-_V0`NRa}Gp`YRF}kOn(1?SAY$Iy5`j(~LmMv~i|v z(n999hMfrVRs1}Fnq>NW%=wSSkcI#h{zdpZHJDZYJuR`&cCwGJj9 z!_YYtX>G-zZ_0#IgQh>6z#|5&2XBeiKc%v8m9iiT+>dxxH63X{6)VjI>#0shKgU-r zDHENz$MyL+SBg;G)4DTf>AmY-bZS%E?0-r;59BoVwTy#lx0{7cV$HyguC$M8l%#87 z3EXS6mFy^g1*rbevLi)6FTr zA5e$I3`g*%~jms_5|d*#f>tK&+MF~Y*Te5GHuLw-|d$ZtB7B$JGoDxIP#mJ zY)fHrdT{>HoXFu-)n@ta6yUkOCu?VI(1v=vw%gM?O6w5rHQpR}m%m^rtC)Md?G!@PRp^4)k;%AM%k z;t|S=*ub@F>PlfL##p%(1w2Uz=Z zyppBZDoQ3$)IHVHuT|8ANA3NZ^pto8%JE$1_GFO;X9^XC0Q;5b?ib~BNsbqv5`=xb zfAUZi^@UWpIR>Jg$mk_XVqIlk(!>sch8$}c`pbe$OkCLbr~6IdomwK}!4in}ZH}6y z%AIm;mlUzfC!wmn44DkGI)RqIa5M5^d}2LYI`<;Ac<0>Oa=dNvUix+DDSccT{Vn1SJb<(vLV(#(4|s^|{1ADYO;IS)-Z1hZk>jBVAg;s(%;E=%G$Z~Szt zog^szSAcQIPZV-{qWD|$91F++zS*lQi1etG8~Wy1u0ybB<+MV;gvW{x_?wDoyuLN9 zaOX&`H7P&$_!{z*mWTU zx3Pnx*Y`DWSLvnyh$IuJ>A2A=JXKv64a$d-^0C5uyAgZEz0QU$bfNTvxkzk%R^Zot zgg#qvSH{U&F6{=HWtkufwffYxd#4lJ3Y&^(Npj@Vs%iBAfHc(&i(v-Lz`pc@ymH_4 zwm!~K3u#1COCl7#w+h!YBHa*1Y?{cDOtu}dGr1K$SkisWnDvCcQ9BQMr>PmfYDIp2 ze}4iAyY`ae@1&sU`&SlB{c9?oS<7hqcd-DgSm13kstCs?%kdd^QS zN~QiNPwsGD1vrSL%F&|g6OV~n`iqdcg5ZW?dkHyc*J)6j1dOVxs5x4*25exf*AU`s zYmI@zC3S)k=z^%?B^TNd?J}`X!ac3{JKwkF2$&O*7L_QD?Ym`h2dABP{F)OCTv zaScxQ7IjA}chXL|ze`LFdwWK<Y3Kx{-lj3hS>)b7y4dA*xcy$-m@Oa<$}i)LxBZ4lG$ zJY0}xwr!paZpYgXp98S%gZ}g`%yfFvy9)o&I_vq#ukYfay}_xz4WQfN-}@3{>m}!5 zc>@eT7~rdh`gOCc?cS1+W^`g8y>LsT!}rrTs?b$?_DdL6gC)p1)$NaFE7$&9Kwr(? z6kYAL2lxvPd%=4Wj!&j?!sr6DGlyu$NL=*6ZACsj0C9XtcXp?29j)@-^1=;a>Ek4^ zTHns|tmeBo&)t{TScfd_f9I}+(mxcq=Dnv2&tDT7Ukm7Mz!3&o#8kdlNb{9fw$1a0 z=?f{`s_F=8B)Xswp-Z7%urtJho;G@pJGPwz?vtyFLA=pnnzc27c0*>l34MJLcdt0h zRY6JGk+vPfP{&bdK7P+*KTTx`*?z2d_2dO=>JPPema2<2bG7k%=c2w*URqk6QJ>xK zx8D6fF`4!&J(M2GAH(pQz!ktF7RF-3Nkhq^Sw0a<(yTm>9#rxQt2KtC$bP=+T^l0H zAXy44Rr{3Ii)*W)M_b-Xk9x3iYT>zIvhN37jX3JLma zK*#HI=|Q(JxB||nQTF*~aY)^aergb%oTdRI;7*ge_>M@kn+8g&+WCNFNVlL_A~+An zvK_;0mipG0RxmYr=vSg(<$8(!zH0(r)j9_5LZc4XyXx`Pc}E$5t_MN=g0_IUbR731 zns}7MgRj1BbG=(3-;lMshpkdt>wO%WVSz3afE{}rayXk;^L(>egZfOz6XVKFWsUKS zk7P|{U72Ohv)j+B72FT*8T&!hQp)@~=dF;#&?via;g>+iND^-cI~pGgz=fo{(lcjE z(<@c7YbbBP@umgUm%b!$=ojB;T}&rcJuYEaOI^M<al|dqhjp;0zIcx< zV9s_60d;q#;EA#g_y@e|Z@qf_7N_Hh^>X$@%)u`^s^W9{fGR<;hqz|aRP0+?ctc83T&KMxV?C*ZzLjqTl{!0u#D)9m)o)>#(pH8Gm z7^00+D+y)H*U6fLX!oqqy3gYK>$UO|mO)DK%M>qs)Wf)Y`3ob$PJzxGvixhm^ zC2NC>;_Lba*VWO>u6aiA(c9G*zSw&K|K;mi?x2O%9P1{J zE%6z_4e?k$N~@m({KU&ne|}}P@!pSsqCtARo0Dbe`EV@wAGG=~@&fz6J5Y=sohA>q#6MAfRQ&l2 zcdDf9ppgPYW(rhmlmyPJU18`L*fHMfG%R7J9JvM|bf52W;p$iWR$|YNs@l(WJPO}8 z>5&K6-0KY>KnOaovz!xU|91lGA36G^_D`6z@8-w*{|5TWB?7FF+4gD&d!K=2%WK@8a`JT%i^#&R zkq+-9(F=1xrGsaE_R&_O+6`0ed(ASLPt-5ei?b)Xtc7^)@^cyYYA71Z}_=sQo6OYTEGv6-%T zb4X&?dRfW@TB#EpjrN{)e8$H!H5nNmsyVf~cs{R~*`-3f!}b$>c5`v#s+^_ST^T0q zK`hzd+ZGJRTW@j3coP*DdG9pI#U2@?#A}6VWGxVa%yG>C-ra>xCtOtc-favtsr(Bs zS0L!U*ss2@I2ZS=CA#rF6J%U8veWhsHZsm(+%JN<88A=^0v7lq4ceJF)i1$xUkk$Q z`C}j6vHDT)H3pFk@d~=vi3L3z5yZi43|iWUGDR$Ov9aR~5*%lf$|v!By|31^3E>#V=`e`8(SLrTjQX?cyPdv&wMpb%efy4k%1DXT0D;`;QI9@!iOkJ`dzmVUd_~poTr@VJ+c_iQ zk^GB%`l{&QmJ#YK=5`VpMuR@qNF6J9{^&RZlfS(7D4uuOIb~V`jR8Ie4^&(%bXfC8 zL?P>=ywZ7v`g}-0*f}9Z%`yYB`VqgSjAKP^hdfN%QP*&~#9C^B(v^0K=w|Q$yWxAU zP_Pm{R2yGtKD?cu43eQ14@lExoDZ4|QzInT-rFZnYn<^>KWwC5j)EHLfjVD%$uZqW z%Hd{HUdz=*E*c`wL3HWdsp>?Nli3}bem^>=s9y@+!Bs1%&(}NHE{2jRD0Po>nq)@& zrZsp1_-D*0-5$Pg690}Udwr7bxU)Dedj5Sh{^Q&;!sP!YS%E!&ZI3o;vBUgrWXP@o zEqmXN8h!OPjlSmF48*)GONmSKw@Nnfd*|DVN3OLWTYc@DBp%=^kN%8MDvyR402z@% z1d)yF7lDxvZm=+Xmol`o@0Mv-eA(!UZtA+B+S>?XW?Pw`4rR@L(>+xjxgSoaOc)qF zd=w^CizGa-tir=|v9V*knOqTV|8q{Z>0LMI*Bz8kO{^fo^c8|tE$dFI{w#Agb*mYI z#TC_lB4LDcwsi+I9>Tt;=_ymCStQB^BR%TLR?jM+Py^@lKy`@yS-shIlw0j2dM@1)<4D{gK)IY)a^!Bd`}v&Z&T@eD&oNzsoqk)K)TRz%{w zG5v&?IBXAOyu8e5=^*yEK-d{hZY{MO!3Ma+PcG5mqTIao9!S>LG7s+OB@L#&Wt$+X+-DT9DT2Actkj+_vF zs-LLOH@iuMRZ2<-;!Na82KAy1blvwRIHD$ABTZtp@F9VLzlE>tXQ*)lkcgtiRtYSG z%3hZ+N^hfnx55hZ%yo_gVm*RCH+##^w{Z(NlmoX0O?+&I8%E{8DQ?Y;5u=HW(qS7x zJ>Fh&G`X(-ugEI-F{u54+75O2`~ToBH#vx#8ek2@h$r-g(Z;nAho@+EX>4DSa_tGG z*zTzFVO5fVw|<#{27*$Gz^G|bu05)?>_1Gtj>Z5UP6#Og7Z@Z(1EEb_O>BP9jwGBP^GV`?9Q5DlD>y zHn)8H*@g~80R)9PEQ@1eid7spE|a{ln0r6+j8~Q#BlK9ltf@02kNkh^^xZl)tO-&pCU$!p=vEVAibi{}Sn%(B}RmY+u+|JvDgw93C?h&qhh;uP7D9h;_h$6KYWn z%|M>qwtom)!%=@sM{Eru?@7>tJ{2n&rS}n0*1}FuY4-l z7Vlqqqd2gfVG$x@^QawKq#gn^#VS`6w?fnz@O+D6ocNF%edd!M(p>8#vKZVw`^)T# za<4gdc+C%;Tal+*)P8aQT1!*gL%@p8TdhgJ@N_6>pvFvhED7X;xV!eI>_#El))Y9?p@X{V`Qo@?Ka*epGTolWj*mqb4%-sh)Oxpt0hC<2AJ&T z!JOH6?irb60w1&Pm-Fu0JC&vN)r3)n_Ph#LwnG}Avx9`zDBK^tMYku{d-UQOj@s#m zYoyRNnxZe1kc(p)ma;gidPRZMi-V7J!mW=U@Pt$MUnBgL+EEw=aJzIyrY{&3KGkN! z0ae1n{OQf*gC&PZ{k!$%D%5@Bx;-U{hw*ma)f#Wd<4M<{9^)y|va};`dieh`(filG zWaq|)Kzj6ldp)IL7lFC)i`(_MgpzREIwYnHAtFf$F{Pj3QiT|b^;n~uz5tmCK(}HX z$d=!(zZ_a$9+e(R$(U+Ue`kxDZQKg-cb07pC;OxydB2UdQc9j+g)pe)Rt_%=gR>{q zy;*D)J@fqsl!3|=z8TMtq2`8upHA+X@K)CwvatH!NF&h=^YSe^hm)eH6Pn*m?3-!Uwkt4L&SUxHtXCFEg^fTF}(JKI&3 zVs_9BwxK>O#dAy?3|mjJcXd;70PKax`?XS5oe}QcTIxZlxlY?)2cetCHk6Cdw&}9YnjX2kQ}8)e03tmAUMESI*k@ zmh4(EKWIGjw%^D1?U(s=nuQ^4F?v znOHH(*8w+T517)JY8Di#)$v>_j8FPMedf?384-KGqAd3#-stzdlnW8{-;0zC^JTFXp17S*-|*xlL8dSt+;1elYc649-FTW>6vJ{I99CaI!XjvF=?F$SRG05I{YNN5ziF&=R=V5v|=z#ga+wh|iEi}80*BsSE zmx`v~Te|`7Rf;yED^<%R3S)$ghd9AQ)<9MZ?;)YBKvV2ej6a;xqp`ypvjA{4?qvx@ zJ|a9!TR!aW7_>e{B#C4~&B|w>WFdCWDcX8B`eJU8yPAYuCu1#+Gi5^U^Fozdwu8$u zZ!sm|8!gk_YF%qZlYf)-nid(=5cYt{czb6Lop%tzR^_|Mt0!+!iiG|)1ToDhN2mkK zdhhvXwk@<%w$kQm`>`vUCp<8P@JsyK8?D&!Tpegh+IqvPhOF>Kf-djN{c?v(mcSj= z^eXNoie!b?wQ5=p;0&k-v(Nof)x&1BAyCWL`adr8-CbP1{4=xId=yFQ9}ojg!r8ThM!Oo;Btgh>773|Y(aFIu~viRB3)$s%&Z;sl*~` zrM&sL&jxf;YdMB?EXz_?<~#5A==jC#&ymblc&IW8N9oqIh5g2pZPSPRjDVq z3T^yHZ0k%|e@jhVrZVAcPhBm9vA++_8g=ZPHdg&4<5(8jQooYEhO&V@|^nxuW_noJrAJ3GxZ{^y?pOeZn(Vv37@ z9DX5%oHc9W$;2w61BH1)dsGqH831KdFk9W|lnCAZb0e99tRzB#EUYP}#^nkaU2a&q z4v6V!PSje;@ms&jz#ziT8_hrYTMIu4OJPeW*y_@~@Xz$pn$VcE;n=k!GX|w?t7ws# zsxDV!b)2}-Oe1qwGlE0WkGYdS{*G=F9KiYzDlf+!<}S+rARc1&-RpuCB<4i1IdU$B z<=DQmD@I#je9_{&+I?~zzZY?pSU94BlRk=B!}7+8-TG4FQGa`Pc<2FJB&2y)cXqAB zewfX+;mFSKCTi&O`Y_Ff9k9*khSEMtxp-3f=SGrK%vZ<>lK7+29_)eK zoU7crG-L6(S4`f{ZMP(zmt~}s9>5kE0`E;!im|+(L!V3sf#=;EdF)8Arf~jT;rC$; z28)qTn%rtC8pM+(Bz{+<(Ezio_g2fsaTTn3Gs+r$%u=~eQG@5`Mn7yPoQJh>q)n#z z%dp_~8_v?l>~zB$;3P&BU-oRP-1930U?hp#tEi)#qywu=q_$fUIYi|c{X32w0F6f< zu1uNr6GZn1Cd+OAY|rj=r$}Imn)=fe>FgMLCGVlZ+BqRTn!v#i2dvmeNv)u+E=H@Ahg(i{JYZy^-!G2d+%vNlpTepZCJhhs|I7L z@-{8pX%uZ75|NvH`uFxLPYUZk6|G29HZoIN>8DS10fd7E=V7=ul(2AJKRkc+Zm)hs zPjx4;K-fS=7rsdMbig(wV4<1e7FNJ%W6+vFY)taCf6yPDY~|9^UT+ z=9ZC{9Kfdg-frhZpFQ)Alz-J9c+A0S*-27QyJsYWXUv$oN_P^-$Q>H!Br#iXD^U#H zz!RiPaO36+*xLpt7vmqPmkYlN4Yt_f0?)KbbOkN!hPnj;;y$HMoXz?5jR=*U2Bh|N_wWls2D2{A_B)|dxOG=2l4i%ZnW zrk818eV)kZ0Ci2oM;~@5`mZY){+2m&@IjQ)3Ai_TSe`mBG}QeZ{W2X+DbNlpdpE>W zwXYgO3C+<86sr?anOG^4@AGN(`&kS3R8eKLO1xH)pS zZ;fD1B!^vo%uULtwU@UyuM0|bRpqgU4lh&x0O2|}iwWg&ib^4=-$>lO_&Gnbg7~9t z&S`QOVdO6Rgo>OQVT08O?Ia~|dVe~pGk&FQ4<%a4o7=@1Y0Q5CTI<4Pw+qNs&qb^2lqy*sgxTVe7D=*?pJOddc=0_As1#^Emx(GcW{f!q%76q~5 zVHN08_mcjpmUcIQKV1&6C`$}f0k{I&8jZ(v5Hjt+*X_vl&6p%>d1W^yVe5V!2(q~Q zF)IhRb4=x;V5_K9Rs0P5M!8UPnb2cq-p)7bu+W! zop03UJYP$1%7`@OmU0v#3qP?Ox8`W&xH!MjJvbdCcj7TU@Pc*D zEPU!KZ*WkWGq2UH#F2^_njp(q(FC)3D)AtRp2Zbg#Qq1gpC4ecB4~apf!L4*!NTRx zr`eoL#0`fhUaHIpoeQG}?>KtWohX}qJTa)FE?zL^#5R}wm=PngSZjQ^hx#H%{M1ul zdzmw*b5D3WdM@{o^_mDOb0+|zGb-_e?`p{$DOgJAjDtr!5lKMqv1$5t-Ut=h?8g#; zA@^w4)kD^VJUq+lq($Bd+7b@>UX!dXNPMafDts_T@Gi-(y_VNgbEH685)iTtA?g~e zW|$?T`{jA9TH6UN7sZfWuaLsRw4B2g!rZ#Wjt$mg04qS`R8H}bat231Iv=Uakw*7!1ud0-Ux90>w}QL6!MkiasclNs4(K!n z3_Lo1ja@$91Pl+z;l&!SQ*BdX;^ekYN}`;+g@7=lVxOCR)&}1v2Rk<@QgX{l zPNe>v9y8ko^PJn&+*{Vu;oOlEH<~g6@>>!!WD^3vuf$snxKBHOx3-lDpGqDBaPv~q z^y#%)iCpRR*}0u@ELu# zV9`kDw{0`k62ZBNVTZCRk_lEQ8dAlWod3mGl=uGGD z5%c=1l(Mj!NWgX^sA@T`gus2cV1z7rR%Up)@gw6sA9grq;Q+IEDo?k00Td?VJdA@PQV1^Vh)QpX^+HOUp+l^?!Ag? z$6c14Sa}og{b@z5>Gf>uQgPR1iVp=f1B;K^p=#eS&uf=^;P8`8ui~ zuz~w=sq5>xjH)`wCBkL*k^$A&npSG(pzoZqLplYs-h|FnBgnF%+{u zSTIu&!=HaE?r!4xO_40|9aS>(jzSrKn0`PzFPXy3thRnJfS~4i+AuGu>G;A(VL;pz z{9{BT4z>VCct>ZD5=kJ5W(XjXOPL^+d4Lv(be$?UI$*e+&r}B)CgIGLg=#&BGQ7FX z!R74CQV5#*{u1D-%stG|B+WO>dVuGs(~-@;uaCbP!c&U+iR0-T9mv z>REYs)Y`M{)q_++{%Ycx`(&pjwf-U3^Sm3{yWq9q#7@ENAHVRAZ%F!PU?=61h*>|k zjQv;cYp^dXb8*bS1>ef4*48#dQ1RnjwXRTn$4H|RgdNf^#I^F7*QSi%DnGO)d10WA zhW>(t8DY})20184^SV#xyY&{0>~&;ZNW12aM5rk~ygzB}egLsqCN&oAKA*w3BzP8CS4{xR=L!qU*+F<{sFjp; z^}LFb(?RVyJkNNN%`x*hBr622<><)ZZb0%w48A}Abb=*5Kx)94Qi*jb`OjFwId<9( z6<2PJcGF0-UA_%s?fGvj%`&KD1C<45YMhARva?NrEo$7Huep7S!#pJIWzXEey+>I{ z8nu)w;WGdE8|8#{eKy_h$(xD{{?Zg=p8L7JqoQ-E?rp3;oGxerD+a?elvdce;k%VAheKQbBM3GqPp z^;V89+q-%t#&VoEsbm7sDBXg`&JO9RpNmPqlR-WP|50NVu1bdG*XV@;Nt)8vZ%2Th z5pRtY*<$RmbdH6v;_FG_iKZOsm+Dq;0q;ubgYQD%wWWj6F1|Y_;69(8zSndI)W4!% z2<0VqY?W1-z4x#6>uW-G4R7h%bxt?KzDD6=R?2%{8pehw@Ugr`8{|tgnNLw1IbmsSIIHNbU|l%D*=OWR<|UYWuXDrw(vN7`|#}9nxV# zT^%Jxe%Z}E{_}Ah+KHw%zS#+~7*q$&j_z))>S4eH2wi@xCDFipxh=eqO3#osMcW&z zTa*A6mQc0NiuPH>7C-lRRJgnUKe zvltB$xtpq&O@@`tGI1Z``s5L(_~89j18l0Hqtdk_R=$*Oa`6J;^na42`flpkswO9{ zu>Z=RE+|inVLp;4ox8-z-u%X70d#Bk_z|JuiS5UNocFd+Z%xeC~$$Z2}WBpm;cay1>QxGExA7SLCh4%Ia2YHJgs_8-jiMUfPhs8Tft#Q9MAbEmiRz zt&TpH=iU8ZmOG+Td_vhqVj_XY{j*q4)ueTmYKoJ^24z9!o6i@DJe6FC&zIJT*GS$! zTQUs6L)v@hNF`1o=_A`Sze#@x9naR{w5~EXEtX}0of76sFl|4ZopTv`$8*LzI@BeP zVLYUVaas2}vd{_IenyN;H&L-9O)f5Ve&GYrDKf@rW7{h5`? zUAlpKp8C6@Z!N7o{^RC1r?6)_GI2C*6@Q^P8SI#yzLZmRFI6L|?Sm3y?=()Cn6oa8 z@N%OgTi0+SKXcgP4b@%_9QcDQC~ZRGu>@m3dvDe8KsR!gj*4-+JW5}u6gtjLP)Exk zNpgSzGh|IW%cq{@a$mPHe7L6)>w3|(d_VFynE@0unB$HB6l(^BSTrHALjAdBG-K;4 zIp^QhiKk5Or7uR`JG;z3h2cbc1ov$vT4DkT+o9^O^B92xx zRUZvljn2=t$*e7~%ic`B_G$S1yeeLv5iO7f(uUFKMbI%ydXByGZW z8LtR@S>B`*p11r`2rtdMjwNfyLkDAvirqnly4hM8OVm?miquudWl zW9xFEjr_pC>D`nt*qulS<#OcMW_nJmfT{OKt>#To<7SZ7ttjO$sMp$i@L28~)HmtW z4A!uhR^qJQ2yPY_;^w!E4@NIGCW5Lk!l{&yTmA)mf4`SsXzRF&UZqytX8uh8Yjpxn zS^zzXgk>ZN(h`eu%WY@Y@t! zhRwF(L(13>=|P_RR4d)z@_v;``n2edeFT4R<~1c6JygpoXVN{e=Ip41+jriZ?xv)w zaVVPf94e81-^pgtkNX?GPlDgQST8Giih&)qT)c&G(uI5PmpzgB7AJc{j2P{Jm`OCE zX)B#6p{XOBMi~8d+HgFMR8+rCwDHEsIvsP3<|OHh(M%r+-KTC=;O;#Qz8&WSCR;ln zNAu)^WGEP&E6Xk|Eva=RM8mvzIDu06xIuZ#tA3*Y?gB_qc4*Ize7^NlnSz;T-s~ z2yA&Bo=l&9HS<;S6)32YUrEiml=uCw(bN5P_ddmq%}(q8W_B>x8h)<#@rgLjrZ#>T zH2B;vXP-ejA9l72Y_!6@A{^fr4=I5_Tm7+hppf1KhsPppCuS-Lp(`b-*L50OwHR)w zKA?}SBsz3l>u-j>^w7gujsYTSX0^ zMkS7HO((OGO3cbi#hgaO?kHgw98EMy`Fx5u+tCLph3}MiMLfR=In~h^h0bY}sL;~M z)q#G*a<)NGzQR@?mVWPqx1+07u?=b13V&Pj=px-65hbY}DQpE#cgr8b?;^A3#u$18 zC4X1g^JdTXt=9ByeRUPCqf|3L$_PLevOjU~UtKMj>Zx++NwFX)M=HN3!8R>`>&(&& z5}bS|V~)p~Rjh3=`JG9@LDf^O*4sOy91wqu{Ou>RVqEO_My~5cg6bY2>0(Q`N_phH zhNqSr%xsGhypRLR?curuBCU!JSbK|!>>IYNl##-O$jGui3d7&}@gJlK#7ssFCy|xq z8a^xd3lEIqS*~!fQqRFgd9x2cGXfT^uB1`HQkPNyUCmJSg&isdYevL zYq$J|!g;r8bnIn9WfG-5BIAFQyUA1mfot_F<8en&;ew0T9@BtRvuws-GyrGKJeu>f zmqk?kig&sXry8|+bdm`-;$P*76S+O2`PFGg!QB2_S|V9{aZsRD%VBXj!~5w zg>j+0woPF8B?YpFgn7H#x+!(Jn3(r)G9wB)t2Mr_Mn1PYK-k}mb|1Xmh6`&<;P5Ii zg1)OWYs4S!cToEEFs7$9L<9SDEnyXobZPqc^%3pn$>r|a4eu2P!M>35b!pvbnWKp- zyQ}cH+8zwZ>LUx`A0tkmcBiYHkJ<98GIyF~69AnPI$_6%4-K9G?;7^dTCoQeHOH^| z%7p5Mvug1e2xI}i&$D1c!QbrRs7^%OW=kynNodPbHiP9I24$g$pCW|1{Ya>UsiU#@@5txpeIczo$fo z9rp`(Ucg*@xC`Q7M44*QeIFg65MCT;s3}k@Y;TygYvwv+_(f)CNXryR?BK3!%jL8> zjH?cj8s5E-rK`+sQrj8$J{92lFZOyzU)_H-y#ZdkNdGr;>uiPc_P~!~yCNqTNm`oK zsWSW$-9w!qrsGa_@Dn~$@Bypf6swDo3P0>IQ=YW2ifJ2OSOp1ih`SulVaIE46;iA9 zI*9dsH$Q7Kq07NYurs?j5OcR5N?U=#IG6!B@T%A0@tXn^*Khvw7Y0HHD%T2UL9`_v z4E2Vy(|jyJT}RuD5|n_w4S*qHV?=|(8^q?aLQygZaVCOhZSW#w!k(61cflwC_z9eV zDRS><8K0SH4M<&?=6dWyTZ<+J4>TtkZRfob+*#09Wn0ZU-HD!8i<9)NUB8`j>iN~g zI7-yFS_~-Yd)}C4KqH!mN!$Kt_HpcFn~`qc(V&_QAe!?n2g{joh-r^h;(+r*H|Ihb z4`krGC#6!G(I>EoEq49T+Glu@zD0dEb32mGDGnWJ!<=XNsDm% zeswJ;%$lIIuX|ToCZ8Hy4@XN;SHdP~OgwAg6S~W@xFPAR9GyCK!KIe$s)ZsTiU8q3nLOxuOP7-jf0(0+|?8_RFeC$7W7=cfRbwMuKddmt6 zOb+Bf58P#1e~{=x=3;iPkvdZR6>5fukp;5|J?$Qd%6rp}6Ds$e$T4(ZDx2yZAC=Ga8mpLD>DcXh05=U`o4|22ks_u>YSzIE6p=M5@l;G6wpGr@np4UM*S0Ac#B zD&2@*Qq6sI!FRTevR%)4o2Aw(?F{TYWiXgC4q?mb{$ zb8~iNE;ct$N{WU~dHCwT*0$S8b$m+dPdI6Mb~h7N%%ppEpZ^FPsR8tYu9&K*ByFA* zzWaP$!0kF$9r#iMQcp4IIQt(S^PWREMJ~7V+y*zf{e#H#v>_Q)>#uGnqZWNtchc12 z#P+|svOh@e4x`_;1r*`F8>>hJ)1ID2qyq-Th)aRrRf|WHL2!t&W4OLA*_*h*Hu+NT zpbREkKR2c-(kSskWH!G89%cZLpN+uSH5mlA-j;|RoNuHY4BB^ai#ZKwaKPz!a@xfy zg;(vv(|m`vGi#UNcxp$73}dbx4iu^iBkiDZNca|tp9C^KE-G&)Uj{W(MKW8C4f76sw!s$PMt>anhJ3SIn9MzF3*l)Ti~E3;$AmWQA#f#J zZ+&Ay3=WstOvZthkLsZ1`I&113Ourx4dnu+OLJk{xU>!fs+5E9V`316?B-{N);+1W44A=fnfKyE z2=mO#_vk+4IY@z$1xF3Vaco|rv1;P5Rf9lf&tvn+63k6VuixP#>MKX5wU9fS2AIWD zE{y#+zJYrIp2PJ%%lDHtSfTAR9NDH`>4y(16FZY1#Y}!!j_{dUzBQNb>>MsUS)TG0 z9+y~MAiRJNb)|EQd(2GjGC$_pJjN|SMg`U8KDL}yug`ojZa*Hp7#GrNcFM9E%W396 z0SdIZ{wGEIi`6#U|FSdfoWC3X6YlNHggZHImYRn)d?Rr=s+piB(DjR79w+L1${6sO zHg$SIwMRP}+rK_wKzNf;#lqDTJD`W{Xrw(~0ej+)z>PSQ;bbJ)F-y9fQb6)tS9U0c5 zph<;~`V|yIzQy8)JpN{wg$Do&1Fg89c-MPLSHI_cXo2>P|DjTDQDyRw2Y6j%ejIbu zhYyoh+e1yM;cgu`v(Ipc!ZqQ~{(zY))+|TEk9|~ROSTo#VSg-owA@coM}0bqmkzD^ zv!is(lc2a|yQnm>+7mwcMofg<9FW0=C`CkI)lV~L(#>Q765$S*{Q~0{XqSTq-v0pV z8}_E%+A8dHD)WvQxIcxeQ(xJ$&q_Yst%LTW>zHP>F312_N9)~b7TY<_ca#wo2CCHC zAFpceQ}^_ylRx%qF12Abl+m~|&lJYWEtMF=wd!ST875?=z~tU^?8h2wjdZ+Z!8_mA zAmKZzvLPp`GX(A&m-!7q5H7Jlt98?jD3tk0AFG?4V9KBDsE9h;iwQnIh8!%sz2?4M zA^h^IRiFgQW9RG;bmrV?dp$<>9QU|5-0l8r;(v)3J=MQ-d_{vz>Awi=LL1U{f3UJT zg{Ts3RkFW>V95;hSQ%0m&vR!5(2s5oC=%pMwLahs<1DY^#^VL-yy3v%*;}d5co~Hl zTW@Cy+F!X922Y$yi~@MNwZ0_^bOv99DGzK^)~?HIg80Ah*iMt!O@@tuedQ`BQ$IvE z8xX!I&}W%ft1}aCds~!L_|&1Qjj-yHOne1&H@xo@M;nquw6AH@N&LhoLGK~n{h8)P z+n?$;UTtajEFX!X+Rm3~ZG(erbi-WqPdHw1NnEV%>*kEA&jIPh9>We2JKhUyVdOsI3VN;M zj$=a4CaQCV=oTUQKv;91>H7+$za^j7u;##J^m5>s=1P(&QAteA?5rfJ^ss#NLCrkY zQ7Gd6!AJs~&;wq=_mz&a^k8zDH=tb-c=lSo@s>>m^9}BBT%Umb9z}?KpordNcQ>4G zzp#|hss5L%d08lRQ?UIvxVK?%K2_@{wl#0V zet31Is@a^6;={#ebp|!PM_uM;XKbI>A>1?2P8zGa3HN>hP@%?mf5LD%99hEP)Y#`< z(spo2ou2A*!ZVpwICMm{@%=deEyC#`)L;N&BSk`lH~AoUJwV&6CD>i#<)hC^&S&P- z$fO8vAsf()280}gB}}%wy=_SZoI0dXg(QFZWijLX^0V>~@BYC|;TRx_$o21BOHx40 z5)vWM4JHzREmm<^IXM?sBD7FY)r#Z8&?KH#TDt9+TC??t8QH|xXCtWbxP>puu4YW0yGiSB>wFe7Ste(#0` z-NGoe?>5Ie)nAB5Lpp6W3In_Iodsys(G{;8!ZA?0jBn<8 z=WFiLT!_%NLYS{B|gC9m4y(yjPFYfc~ign_z8V0L0Cb;2 z%Ox@Pj8(>l_OF|;{gtu?ttbWn6KA)p%9w)6%S4XYb15=K^i;m!h)(*J2D10g(z8-5 z4xxPV*c2Mb@bcGOg(|U&VNxXA2Ryr+;uKN=2!V*$8Gs8O-eVDMo-SAn_C9#%|0;HV8#kZq%3Uo;$d~jJ-<*H6!Lb^&Q>em0dm2QSMU1RC zh{0RO`Z(3BG~0OW{5{L-k5s1+@7uAt7nr5woB=I92#-tfyTgF;lzw)F{;!C&V#sN) zaUJ^|^$iVLEe99nq_}RJ(@m^j=6v8I6?`Q1OBc~25z7ou%&Q7e>j6|Y)yR!GW`5#X z(k=mk8M8HFRVnKPvJ{vT>-~>RcrVjVri%%0yH9klF7^Tl2VNzER?2nr2Z!xYtkUSh zz_VU5n_!E5@RUsD3Q&1dKyj%N(#;#`>DXuC5Ej!T28ej5598y?$bV)@8e2;FD)5Z? zzIbb=-6z`11~^E!ERbjhyw>XkTDvi<`R(ht+5Wc}(*dR5@;Bh0bBAPOT0L}wRrv2^m;hB#y z%(FX+TV-`gQsQD~^ONika^Y}rHL1q4G3|mWC}A`jl(@JM=)Wx4hFr_k8I4yE7sDfp zkX8pAEv zPLVL$IdiirIg3q@hQ_y^HZz>Gbpq(i!~FF1m+*5^)97>ZJf4gc!Dm*Lb@vYLCmC-~ z6;HwVXMqCw;h9GN%iT6@Vedlc*D-AV+koRw*X#ECs+};3)fjLw>-lzDptpTisvvHd zr@%6XgP1%UG_7-=?lsz0pTDVdDeL>_RSaJ8n~@|w-Gk2jbM)d>e0V{!LX~2lV8R}o zU5ksb#KI%5ofuJZRjqNOdBIIgM|P0HZ{ii&%Ma8VP9AeId``|zJ)N$6nh~b&QB=zr zz5a3R0yjsIDcw|4@!n(k*ha#+{RPp79v~kIxiSkb^FQx#$X?3;2{#|0zu~Mg)1R|% zK8jLBki+OYbf02i#0GRxG{yBg>u5R1^}>%M6`gY)S_bv&G^xbZUfR2!ku4j@tQZxcNI*Hx&2Ff_|kRr1Ti2C*_9 z5M~uGO6(*NTV5g|44$fPTmE<>)y<4yZGaFsf`kjw7`godz#mkpm=Map9L&POtTw!v$9h; z0zOmWVupLr*ZL(;{eLYGx&gHsf3q%Z;Og|hWsyx(RsV~b=W_5>Wm%e(Esn^xmz_0& z(uMlT{6s42rAB##!k4{$EH&#guBF2yXr{C40Ty2ggXre_q)fSMu;_B!^Cv1jY8V%9 z(>|7XBnisN{q7TL!tWj5ScBy}qpQh(Mc(#9`m7Zf7hIJ+OLwZgN{v(Q~Yo z*6i7QijN0;3ETOKTac}GS0#yxZfQQNh!`q367@#>rxxPt!#Y82c^dd-rFKa_=9b@a zPmMSZ(Z)bf-aJeW4Cm#2Wt5YHIh9&K1E*r|V4Zmp6hUR|Ve<Mn8(2Z9XTTPWbCt zDtSLpFE^_n6F+WCpI=xNv8s14j&SBp61w=%R+yMWE}=nQC0#1{vCQm)8$_T@%k;}S z#gP@WC(=UIP0-wjBS==pEip*{+-kbe?#1-n$XO9h)(8u>nGeU+i0~YRza*_kQ0YEv z1sY1RZ3APHZ?|^82rjYljxBwrrLs*N_HK5u5wOSIl9y^Z?)WC08dsZdG23eIeJ1-T z@E+pUu(`XkgxtpYI{vFEA)UWk3RCDs>G?P4{h;jye}75vWNct|Ag=pE?Gr0@hc0Zy zvWx4R)?N3k>ht(RUZW1l+1mP-Awg-6J04QZod)Ty`#p_DFp|J`P8&%J5f&^A5%L`W z&9q2R!Y@Zd<-8nBWjmq|6j|QU`2qSXlt|7~-$$RoNUNAftc7k~l!yF?2#~ytoL*gO zCz(w*VibzXK*Rdf+}NoEWER5QrO+Xa)w zinyu%5fMDolYmUF!Tim;qYuZAtt=mX_XhxZ>a2)4TqU~Sul*mR2V##AtdNNEl5^Zq zFeh__bV)zu4Aot!DD~vOq4sV(gOZ`aoq!~~_LdT6ybe3c2s+pc+bZSw zN~tktwK)W+4c^k^Ip$GBnt+=cdt{+P0tEuRfvH!u`kIt=#3bmUQ`Rk_WfM3DyUY=a zlIcgO(873wdV|zXPRslBkSwVm9YB*D$4Mw&5odeVeAyfz|3Vya3ikPav^Huq=~13% zqafrgrALz|HGuu|LV%!hJQUH7ypsh z_`h+_uF_vW@zSXm%V{e{w=>=#AJvXUt1y^S&-~u4)I3a&l<~u?pS2_`@uRG~pIIb` zKqU@B<1@Mbp%Gi;)eq6_SR$MVd9~C)rm;?`vWM{eYWSjAJ5xZSf-wqrth^6JDuS!x zJc2I4lnK_$2t}38!5`@sX4TS?Ms5TW#2IHhtY(^_M9!|1LvFnT>pyed=vlZN(|zR^ zYTZRpVH3BXr}dGvGnE)Fe2Y0;B3w?Cq3am;&=AEKa&26yxhBfZF$lB8h44cH6dQ<^ zF|9}DbGHeqHqwqT*2W4C2;344zcH46ES{==!2H;IR9Jafyx%AQF4w>n4V)Q_Md3G2 zqnig@g<NS?4!|w_*hL#vAy3+QLlUW}K*S=@N7q!Ck)ZRF6rJPVo5?z{)_&Ty z3Y}e#Aj9?lSjj)WGEO0%)myGLi-P&`YaY8ED_`q<{$%Sb`->Ok+@|;T<4g|@b7b2R z631Y`l3$wSEkd$NjUO8b11&jL_eFhN-yvtxLm&aj&C}w3u|QKZ1Rg!cXZsBRR`zab zZ(x?W+;;A6Y=arU>^q-0`if5fFUW0PRR3)y^a7scto)m-%+d9x;@7TwM1(R8ugPxn zq1XT#mrC=S6fy1C`};`g6}Jmeub$&7Q+7uZn7H%7X@FO9h#3Dod7jfFGT~i#TZ54j ztZbf8j1RN%rHfI67DfcW;I9X(nS;Be+v|3uAb7xbk7z$( zTsI+I7WZ6jS77iq)W_)Pp)O3bV#65`Bl^xmI+D%{|3z6s4{f&6DI}w0= zH)gM*t5t)d=rC9`f?9NOzbJi z$M20Qx7AB`+D99b{!xHaYp$S`1@uW=0c%INB%;iRE>aXs@>q5V@XAC>V)^2H%UT!Z82dzL|d3+vk%Amz(%;M zp%F|Y?<%Zw<^Qn{e;EkIzl1U)LgT`J)6xU%`|_b)4eMP#8ZNSX%WF1l7el+1=^sPd1qR`@i z&=ut%8kX2E_8(XsL4)4rbHV870j1vg$44}^DOooBn%06Ifa6{CczxH2A!UoVrw|{y zQ`x=}VAVFQ{`{^q*rpB^xR{*$acZwMnAy~+Gfst4vl{#UwA4_o$SW_s0H-w zn$e#70sNnD(~4?4j!qvuf3jvTPkntsLHUXoQs;UuLiq&_lK(K>4{ba1*Y+gp#&(? zUeUCVO60sr&iALF8=yw%tdpeCd7g#~T8T#z5R1iKBp^_al!VW|anWBKZ1l(I5Hh(* z8Gu9ZW4(iuzrhT>Hr@jk-yOES%`F|~R?ftB{)c1ur!AoKFV}pq;K=qb|NOjwy;(`C zFV^MEIRjdk(L_XDYhVme`3)2jQZ0H z-#aj`_{jzcQYih#T7DbEpTMBeqRbetURB~JK)xTO(JJP|^+IokHy})b z&lPv>ztP#&scKh9ye6D&<^5up=iPpy%~|Zp+Ih~cuRCpVxw3E1+rd0TnT>OIC7xvL ze)&or1}VGv{gdEOJPyk+hzvO;4JgPTu zB&es2hM}weG(R4>KoSpgK#fPKgtZ%W6d)!yRLo-4mK22i;e_2^W&<@;xsI2bp|Pz8 zsx;Lbr%mVVq?9ARbH@$v#`Ql;3JZ3BAoi(?P z9k=xqH&{V!SZ{|8KlUCUA0e&snBV^)2;TE2lz*y)Tl5z^=l@g{_{*VmM8`-{rX?yh zQm;_^oz^S69UZ<1CR-HtIQDJC_8Z}FWg4Nwcj2^bhp2i&8B^zOP~e#2HFd!fy&>uW z!ZcrJ!<2pvAfei)wo_QK)~Ov*tK|MaiK=|hA|KZB0K&k;utEOQKikxP{=TG`$$OADNILPt_;+?o4SQ(zB^^)%-WHS9Pr zMn^HfDoubk8v(2+WRB3Ja|S?jMr|e*|tG6gC4v6t-KJE z@G&qM4b0-SUwit5Dj<7>M@0Msu083Vp}?0T%=xi*_sD| zQEGWa9S}>A6dr6D4*omZ@sC++{`KU76Y0wy|MvNLZzF&{BTQ)J^mmlK-t()Kwibag5#ye}W0`EX ze!!g2sE7DWq-MT+LMqffvmHezh_xe3=JS~tC3yPlcR)~EZSo#@ym<)f-RN|(A(8hu zW210Qvxc?zU9?!)SQwhjQG}s9NIK7l90@tMl!lASorz)EY{;nUM+ayD);~^q3pMiP ziNyL1?6;i!SS&MnkT(QHkAoCI>ce@wE2f*$0KE&XjcT_cw9o?j5jf{6*uJaX?_)Wf zb(`AE2W_XTx;fO-zyzG~)I09135`q^h2%Lm6Ph+y8ny1sF^pLQ63pSH8lvd7oKRXO z44OcI*gqzyG&Qm7qLYnQg+c#?^2+nSh@Ol;e>ZBNXJZQB#uwtdAm-^@Mxe)j&VzUr#A z&RT!ZUX7!>kCxx>TEg_*MR^J!&Y8Se9TucuL*M`a7fG&7W=ozb4I2KU57h*!WSPT3D+*63H zBev6^t@ZWBatZV!epJKstM?5>yxVJd4yV}p<2eg1{e}V!LVJP9X52^Hr1Pma;Z;eq zm81!?la#wLy&;a`v=n~3p%2XZ2p<>slot;li||{S>TNg-pN#0$0aL5**(XGoHp*iQ zVvo3)zw+Vd-GdF9F)SS+zrfzp%0lwf_6|a!oeW2B|!O*2MZYp`?(1$ULH# z#3PL{>6(7qb%ZCLcFXSgK$nDn>6y5c_~1(%7&-6-i-SC~fAaoUDS&4=-SFBGM``Hp zi?_TV<;Ou0iO=q?ykjgjT${^L9&cZ0WGHgYr1cL zuJ+P$e193ECL44Mz83Y-j5Myn020Qq9%@%C2LVx9aMa4yw^6MSpm6fHweN$lpkDGL zPiP$9opa-Kxhi>JLt}@pe>8IX!F&6!b>s5jPqBaDZ%~&^V!<1bUZ-@Op7N5y0@6F& z3MQ5CrrOf6q9ptjV;j}E;c~#mSg9zj)nf+FhP94A~NZq!lGzZ z0M8_7LhdDJcR3FU%aQYqm!~B0yEkXoF|S_-{&7nT0ytx%h$GPb)M$e9sG|eZf>V=1 zinP6?v_Hc=vmY7j^|j2QT>z-gYd5&H;p;p7`Ayf4iX-eS(Q$yw%%U(0AVQgPBntE$ zKDyc?e@U5Ah24P$gh`79WW>(bJf2KxM;&r}eO*ZdJFXSBpR8>+H>o{Vw6FWw7z-*> z^!{ZWU>gk!YV`_Hk=e2E9VIc?aR-N;M8=~0x11m@fOS&8bT-;Ci8dlQ=3!}~K`oj1 zRRB5ZH?fxQhTQm2^NN#Va>-90x+<6S>q75hklCQin8B|rDwFE5JRAS#ia(uk#2;sz zbya?v{VoF+3hRMbezqRW0=X zN?pqA6}H4S1uX>}63Ojz*YdWbeSVUD15Psj$D+USLoA)ujKcPU(FxvRdzUAK5;umV zmk*~24WM-=HwKvG-p*hD&idf0r_Rf*BOjDzJuC_1*j4V5e+~YXmh!gEdQCNKvlA## zm&(D+A;c^$#LKy%dPu6W0Nimw;X$rKr#CEgD=a$SA~pjezgY8v%mw{YPQl|lPDTs6 ziOJ$Lbn-ixB4EF}Yj)Wz3Acaw0NGnOJ*r&Et{mnz3nTgm)6JBp(WKW9%n&?3kBFX!amHkD6fX7@4Gxo&X6m4asF3( z{-EGk9EFU7IJKyB!6A9qC}yccLG)!L@nAX!RM>N6e2g3qL@Ajsj@qHwrE8R(wV{b2 zdpd%0?Z?HkdYH_>EQQwJT3fF?+K8RJmY6%b&!I*21_I3%CL!aii~2Dg+o`qvW}2f+ zvZ68i$I?Sg&{lqK?ne)q4nF3gHa8ER@9$9;+1_bBH0UJKdZv8EnK(`w_9SopzaaY3 z^be|$_iLs3KR-UOlJAMR=jOhAXy<+xdv48U#kmG74@~1uy{PF+YJFvj0Fq_Ub1+9p^_#Cu9FODUB*~!Ws=w z?xomw{FRoP0-0J}0^ylyAX|+zKmXRl_r2I7vknQQw(?iPi2mDm!Nt>(SX*t)i{x8{ zWxha|r;}KFa#bmMz-WQn(ILH#W(v6a@Ceja0u-UPAQ!7f5kU>%eO{i^DXk0NXk&}c z9bVQQ&n8}cNu}q;TsK=pRt%J0hGQqWDqWk6293TVq?V+d+Oi$Pgu(YTo1gWZg!e9~ z)&g6eJ*PX`j_j`I$G8D&3F|Y%4iB($I0G3^vrQ+FUS=0KwJz=)G^|I9t{5s<rCeCqR`p|d0=?AM22j9@k~9)x`jL{8@c zJH>_E6h<3y2QHtLubNr=twh=>9t=7+opH{;d7408wQcR*scG#zMss6N#;9f^-r2(z=};)_oM{`jQMz!^r>S;mdU+vMvp_phsc zX1c|+9;f?Ra!MO}?#bp%7iN$9R{g<}dQ6^#1#HW*!OT*-#@|Ui-Q2(ftKJLHE?-=Y zd1vRr5Qdxq$C>WlRb8r0KXy!w>#&Uq3+XW*C4XL!`<)Hl286k?40&6R4b^X+9(Hem z(Qd#n@Gx7sbRrdPxJ|ERf+GfuoNsp5=Quf-;<2ZazfeiHE^zCbNT)i$gSE@diGDi) zas9sQ!JZdLwF|!M`wLfqb?1$HuU$`uDNJJ0&7V=e<2BPaCtx{;JJc!M@=%>2nMiyE zEYfFi>BM<6Wg>>$nRLvxzM&bR0u^~|H^J6+;KSu)0QK^b`$pVtZ5vz^a5IK6$z3sf z7k|Tfot2|48wl&=4t|?3wS6>~6bR$e#!9!n`X`3|E0>jj%=d-*hE&I26>w4VrDs}` z`RP)u+LaRpO`$0oH&$bq+cw1PP61E<;}+VggHG?Nu#=rK6Aom7aADyPS6B$jNH_bS z$Rr9eT)@9%e6Q2Qs52YvHxdh0yHIT(iSZ5=rYrOhnA2eS!|=rZJK=5RuNj=u=BCNW z_Yt{3DJHZ?NFW)P^#xj-D^ob}ypKv=z<%=J1&m&gMBNk%D0@ZqV&}m8^ zN63mK!Z%OB_(HXI+doyN5{Pp8@(_Cu>>|$b&j#B9UW{O3kyXPEy~mjQZcpAPfU2hY zB{N(0g3WTJV=Wej0pj4#T&fo}FQ_Iw7NYpeut-qkc<#$~vYU)$H2e$-hRh_wb_uXw z=I6S=(0T7Fxv~fqm!q^7MUUTHWr4O_2f{IN9Cw!%J59$($yY!O8t`($>2e;pGO9Ef zcrv~+FgZG=qNNB*_n42g4<|xNWC87R-3!%z4$>#E%l3C}KPbRIeB&PmP%C{l7{e6X zG9@xDfKE@sAKG>7g(2(LvxYEMtJuP^?%YNw%2ejLhZ+ZnwHsC9`^DN z`Y&+Wn|;5|t8xq$-s0sSnCzY)qU3atKR1R-B&Yb_VP+CbzVZ#N;1;uKrTlx$Xu@I zr6L|60=}#ucSJ?v+uKE0*U)*S_Wkld8RL)H#WImbjByA*@V1OD_`Vxy0u3ZBMK)qXW)u}zqgV|J_VTnTz!xwAEdBZxsr*mneZev5yWj|j5f2NUpi z|Lk;wM&Ia+=xvZM7dTN+_-Fv{h}f2qpKE~#%H%5U}Mmg3=mzw5V_c# zG_PjTdl>VSnv9z^a$R#azQ4H}&(?9Z`&|THq{*vH3E}{`wJaX=CIqSpxS2Bx{unNMcHPucRK^6f+p z+K<71MCJR?FZdZQgk^CB22F8#6@^t*`_6H&JNht%f!q+N zHAKG3`4dOwj8j_i3wb9R8Hot4@+9N=#GLyYa)Y(26w724p-*QUXyBSlaBo__tdgw%4N)pU1K{Q^A+3%_<-7 zcb_)89SM%^LOc0X4xAo(G7uEba$|iK1(PqCUPsA3-$_2bl=#|bOWH7MLG5e{$1Y?jLK5}o9p}t2$ z;8rniOwx52?Xy;IR42zk2<7Dw#N#p0^RrEbUm9CJoZ;WX;s* znEC@R9WDolPJDutW1e(sQRL~G1NlRlAOetzkh{zDlU#}6iXz;7 zo(~2?hXn`)YqG&#RE`+xSCSm!;9_R?dtdzEG*^+5M`6|zIs68^?5!mE3#YCho)x_> zulSS7wx_x@*9ee3!fM!gu+CS^qFf|d`e~q0x@I+zrGeDaY{#fE4E-NKrb;+1h;JMsmd30>`5o) zmm6HY_4(g*KK7v~bS-af{^ z2h=c1Eh@A!nA&Y5^YdOL7hncr7L#2tzQ|s?{+f_^^Ga=7t>h(V5 z;OKuIOKzUf#M)YTozRqcIP?s%*t$z4&8akE7Fp*h-9V9UM*DyU#(T*%!FfjEwd)7{ zPW?WmA@cJ^VH5VKYT`M<1b;&C0oTo6qKFQkaBeytAdwj;c&TVe+!@ilIWB~&zHIQ= zA+nD^c&lhvfiv%LkKwg92vralHYzL&ve)b@VNxrRoAB z%18$HZU==yjDRc3V}d0My;9NlY_N#9`G<+tK&hTKn>fE%M4Rwl0$LC~)6)S8=ZqVf zRYqD=OWYB52|Sp?0))aVH4zL4qGQeQcPnrh$m4HjGo+CcMFipJp2aBSI}U3Lym=sO zGAn5yZRaRG5>Zt*9T}Iqi(6KitIEdb8n;MKc(cD@8e#t}{{4A3{lSr~l}uLuVi(Tf zr6BGFeLZpaIN9?^UpLx3999pV?9fDF-5zxh+`lTs8(v*SPo5#Tmlr;E{ma>?ewdWC52zzMSqSU!aWM9|_)|3NAFvTpr%gRUj zVs_`~m@}ER;C##{Wx`FHBUU>et_?X?5I?b{Wb($_oiK|;zSK$J8$Y?zN~!6D@zu7h z=YR+IWdr5BBx2|X7RNiZUZ`$v$pzs_Pn^BK*%qWqTWU`z{b-4XvhQ9H4xcViNGThz zsT1wKDkl!yT1HIvBFpsk>to9`XX@Eq2=!%Y*|x3J+qPI6(`&mKPDf`O(}eSXYeq|` zt{#7Ij8%(f%)fWtAqC#-Jft&U6x8(kg0G1)P4>Bmv=4f_-#CGRog|TGk=OiZlhBic zUT|aMHBwt&(T~pF9py&`zIXH!uI>o~8pHl%Vm3f>u<4Rb|WD*jF-8TjITfYJ72ZDYZ&h)`99umK%J*|Y$TK{h@7}L?Vw^o z!!S@hQBS202ft|sX(sdq^3feI8xL?vxyYt>xJdHSsbr-ze`5#zWmSQt%kyiS<$$Jx zxz~4W2G%m#s7T$Rai_eq4G!^?1`ky2BD*2E9YU1hszXNwa*!sF!>Xw45j$jH3R#1d ztD3%77RiL~tCvC;MW1p8Q%5D~PSR)11)6((4#@#&{%6tc)zLtHYbi^dZqyymsI4^E zhX_zpICh8$rZ%wd=^bj0cArIQ$}8f@?M}c9&;B zWRH9#hK-hPspTz_muvIRxt}1P2X-+V1Y3Q?ex~+Fq_f^Dp_-~3mAy9oe>lS`yF~sO z6jm&7N&g#Kc4mWUs=kCqCT^4{ z+*;A8LAlIQ(|re{au@w)aBY^KdS%h)_H94~_)(9sEkL*R0Bty<+;;R!hz`&$vgGqG z$?IKU_bl$gGe+DZM=f8UC!isR0nQJ2mHgX1hz)9gj{L}idy_Xs=bfqgs1$os=_nXz zmR5LkeC#u~_?@?ehl3kYa@tj0!A%7Q|htBpciSo!jt=$i)_mSmU9!~ ztPQI8Irfp-_&@>YeltSYTaDez5jGl1GVj>?fbL;4pOX0SNeFLZVEn8KzGnVO5h(q^ z4Up3@P+Iw1=D{mmzh`q$EPMv2CZ_1Uv||FibT~+ABIsy@^pf^s7Kotnr8|Zm)mf?b z$uxtxmWK7C*3U6rGGun9hHO0-s|KY=tQ!N^hpa0cRG^S(q)Iii9*rT*~jSMWqEJ`@w_3B_NkSswD)599)`>7Go~gM1qrhWJ7C0;P zJcct3j#ne6^ta(}=@1s{CWe=1t1(S%+K$GV+u0VF}$bqGasoM(r%f9pm-$@JD@gMjQ8 zcR~}|;t&@%w$|Zjg8!iQ)OB)HT!k$k^TLp-O?iSIVuZ$=Qq)(6^2uW)gRQS$O;AD5 zjww!Tyz+}|Rlg_lI(eanIS;td243vS^QSOz(Mi^teUIbdKLA%9kN1x?oJ84408Sz^kqAnWv}JWArTSu&MBuXW);Z_L*GA{-l3`zU_RHeDC4lQS9LI;W@@C-XyPXy%b+{E*FPBWg+U} zVM?azEcYB+CE_g0S$lK&SCT&~SvZ(NqSuJ4a^m{ace&OBms$pvauc{-cNO_qoK2p# zN_|#Q%Tpi=T(A1%p>%n*@Nftt;W_Lo88JP{3|?C_xwafZ-u$1SK_|+yZeX5LH_hPjvexSXVxG2KnUpr59EikB zY%moyx5RvuOBXyIovkM9;9;I^c-qIHcE;fRS|DAL*f<PIj;cri0~86c{wuOsAT z7dz8Ins;7=x@HWHAu}ondLk!vJTP;1*f}!b{Ey}m#F_2Fl3*K|Z&IXjk|5M&A}UxF z;G}iD{6L6sTL>OoECHN4w27C2L5;6qIo)d`gy3yOS@q!=1 zpT?(MI3l{9rnh5aCK%)fG8^g0-2<(kkmcyh z&olU{j~oSRjkTZrCiA*Z{$#ra(E=}#AwHw1ITV$XK^0>+CL}kX0X@xkXF+DvRR!{L z@$numMGGOOqhOy$qG)D&+Hi5DvRXHYk9h*#f=@j+0q^RLyX$Ov7o2>E{)1ZpHDGVh zaKZ_^Z`P!Onj?JC|4|TXsI+j)W=8TA2YSH+$HI|GrO^B``J|nN?)4sA_D z(!WqxD7%8yaAD<`SB$6a*d{)rO_on^T}Q4%(t77@ic+}f)EX;wm^%#NOy*-6{#xqrC$|EA8hdks&Kd` zivA+XX86zb{y``HK`1Q#2`nmZ8tVSTK(dSa(+H0~ZO{kv65}Dt~moM*o z&aT_0Nc!NWoc^iw{mS_2Wp{?+Pe^`lm{t6Y&3ogT8MPVVpy$tTF2hFR^t|yI4mq7F zPV7D_^E3tyqMRTaCr+|an7#}v?1mZhtI-3Ru>0isf&EUU>Fi|eXy4s7+<2X&ecqk{ zNoWh-Metc6+j>~)>1f^X?gqj16#mJv`@;cMIcsTV7V3m+OL+{Ov?k ztenn)Z0!}=N3P=DI|z}j#kf!&n7E5le+gi<4d@IG9^Rj#4W6_%4Ry4g{Gg~HWrO#y z9c>A{$;BBHAs^Xe%5sFtj%q@{w`={CU36OLF>VNC!9@1$Cyx`XNXnXZ!jlCXX7Bk{ zs*l&^sr)4PI)DtT-K<<~aDi{`q%||vz0mYsP=_(b<27|v5BnyU?mT1n0b@lKhN-=# zq=VD<5SaJ7t*%T{X7B_xN-e4Hq%4&xHZMx4uo+)pI^^~$w%5`rHnEnaV_7)q*&HRF zf#85!%vWQg$Nm9{`6Q7;kRk_iF!)=?lUk?cI*7hZ{^H|fLU=KnY+2qzrN(^co*+6x zAgmt71KlE%TSISNYGx0%s`j&f?o}BrMbaly zqD*K|gXLz}6(@u)AVwQ!m#M*4Q+?eTGqkI~o;kAGd93Kgid90LqWs|6>@4+g-j0z1 zxs!}}ODdf`^sJ$UD@#SMl!m+dMQ`(Ii#)a)q|^EwUT=3dSw0^R^zvb_MLv(i&~w5b zKlebqJ?+WZ3JyP)$aD5fnXLYPz>KH7JE-wk8U^36aZ z-vO~u^tK0;e%G5}v{5@+d`T7G^Z}`w*bAtVC;|q^D2QiJtx~f~VQCT_MyR2lZnXGmErEK+Cx1in_Kt006u}Dp-K+WwxGL=j0jrr&qbkF4H;jFGQ7<3sTdCL>+v!GOh&VX~wu^C`5ps@J!vx=QrcD7|;9= z0l55yJw00v?$jyNGPgDrzY4G}xsuNp;;jYi86{PyKz z0m`jj|A`vC-AK~orXW0x5Rb3KXBulMULP&eJRnr*ZN#3k8fNV23*Y?CK-wVADXE6u z)R+6D90Q9(^6UL0l~P>j^?kB#v1fg1AEiQB#gmpG{UC6xuNKr=h=hy|)8zYWKSTQ; zNhmjQ*uoI0f8AF-!b(mPI!tr#u(nG#c>x_1;XWOaa;~Vr%N2)BLL9D{)@As6FA_Nh z)-F$Ii!abe9zzrbAArcLN!a6f4#%m-g;hisv^h*YFtQtw>4)mTV@36c-0Y9nawV{h z8Dhsu`{ltD8QZLlbK4>{w5-#kxLYqqpyh=em08C=l@xlM7lsDfgOT?S$S$_edv5Js zz@ru27*En;yu$eFq?dKUkYq%L{6t%XuJ2EKJ}exQN6ipRn@RF6`B?&#(5tVK!lmkr zbJ=NiaEsdoklHihQ)^9iUpO0SyZc{A^3OTsk0uC; zHU2ww`N@{?UZT_CtHIk*Zqdy!e^cg86-^fs6L`x4{Cmu^Oe4Eqb{D+-+?L2?eq^8@ zhn6YH&$Lh0zCd!j1_oUFEhF%jeoIY(Jz{(wChXUZ>2Ye3a<%j;nI&8Tz0su`Tu^{q znbF}W#CKlqY$FxtWz+0{NSvmHmf{6Bh(wEo+VA)J`KJpGzJ=+RO=XXlE7IB z{;$X+S7MaK?qw&T4qd33l**jAFLJdi6j>-T*b^>fBz3#WQpx-a8RR+a&m5=M@kp#v z{dGISKBB!7?&gF}(cRxaDTeJsCRwU6xHiFGo85rP^~sR{{6?7a%Rk*>uRpuzkJ59{ z7mp1(gtuX}IS=(iq__vdC>#~9^v=?HVlp*?@^x&?s(rS7bH>{0K7b_)2sB@R2GaNH zkDtVE=73T6A~3z=xaK+HhLVm*rbkG0)ff%34eTCIb{Vx1I`;6Mz|hRoo}W7qN67eB zvh9pTYh(XP5s?{mw186>%1q;k-_$HY%lMckNCQSJ*3B)S*0)TuSM_H#YGHkAfwZ1^ zxHPGCKo#566kjmbIr@2Nm2xEvB7W6HexI`7LTj$iJXT85yxiG*bs|U~y!+agw|>j0-f7C#|#8tuMoOkmy4#G>br2 zoo=pq1!h7_;Z-G_mm_nA%68*BHkY+BmeP0X*m>kBLQ=Rj)Pc@otloEb<4Mi2S*0d2 zAOFZpxmsMbmKGP_57i=v2KQyy*l{DzuZ&wS7uO>L*x~dCKsJsrPEiRXO#7y9u;Iir zt@9)IrNRVa?Z{qT_Yg{lBBw-HfdNj{Gn#s66f8c&^$HWohnXtE3uhAjz&>CrP@$B| zq0JtfnOvV%epFDX=kcq)*ZwrB*t$~UFN}0gShcDt%qq*ihHoVR4gfr1^>iUUUTthN zd$BiAnY-Y=$pSZ_KLCw42f6ILsf!~_*kln87(!`VoN$(L2gwHyPq?)Jex->*U6^>j z2?5XR&88*K$if+%w+*CqY}IHJxmng_=yR^&-%^7!_{Kl8xdR~94}X)!3q?Oyv0ad( zvqcuV^0$TD>EbA~)kg^S_vBuNOws2OZQ6SVWevhuxLtL_g7*FRaGBnM<@_-_Iik9_ z#UIrX;E#_`yYo%k{oQS;=knj^o|bs_M0#$I)}kM?^b@m%+7ID}r?qu|Vp!Ca93AF4 z{0dzlPiD7f54i@Z8=pyH6sxUMchlRN=dhvy&XeIKjkSsxu12=GUcTgetvl>|{4L)m z?X%rE^sN%~d7&W-T}q3KgH(&Y@N-ite{5^iq#<2pD)hIu15B~S4%qWq14EF|&ij~n zfXe0%0_BEbkk7Ub<6-V>*jkLLRtYXQy#!qQZJMU$JxSNhr7i<)zF%Cx=^*@9J`~ot zevy!`j=1XmHqr}FLjkC;@%sG!)5^ROH>V-y9Pp)2rNnVJvJ`la^R8xG-*f}X=k8An z0EEDb*aCi6kzzyn#0&S^ko#&93|Bi+0&DSYcs{#}mhyQ=a$R?Yo%BN3M^r9wOF-8w z?<@Nbt4k^`tn2rP>acVGHP~=U)051F%fMo z#E!Lh>XG_Tk7Z8J#CHkR4Ef#l1z0A1EC7+sQe}%4b!vBu7Hsuz)c2n>^8aVfKB->y z+G80cU|JoyPgkpssZ%++-Zzi}Xj#UcPTws9jK~U4`kj2m8r{nPuhB%bTU$~bA*2IH z#6arQ6Rp>p3{h`u<9TCNxvy7OsU?wtAr7ufj~?A%#_)}^^O~fCzkv2T8O~v+{S<2u zvyA+Tv5vOltGXM`Sjpqg?9vEYcpBvfcdx(cYbwKGTecQmtS-)M7HIuU|0O(r%F7#y z@Us524xOM|IW=$tWCW&yvK8|Z$}H+I$hr)`2r?^8q>YOHYf91&oO-nhKvYt>ndq9> z@egn&StWpSh2FtNaF~&fR=_LT}O~bVBZHe*EpZ|*2NdXdz*gpLYAjSMxmLkBjg39W?0Er zwZW6@_uvErx8sw?2m&YWH|KbBtTkKDA;Vf0!e}Xd%_uW%#ahRv+9Zbbh#L-cd^@u# z)relem~nd8-uLIH4!OsHjNG{}Q@(pshQ6~H1IphtLO>Y`rRoUb+HsGh*R2f9V?=Qz5L>9)9e626ix8amd(Y`G!W+Sm074-S!N zp4HzfARt1J3(4CO%K*AP&-D~eamdd+<3z6!EBsZgP=1*o3}u?>_u#g+h`~56T|#^6gMxsUE3v)j+!@U+xns#OO=5l{ieIC`FotBMaLAr z7plqDX`^m9b&TEKh-JPGqIH63=(FQLHcg(&*ilXs2?4p8Fy6)*j>STUNk76gEI1%f z`55B1gI`e?t-~HH9(R$@qlrb0XSKC9;B4+C%IcZfX)#v0CUr8UIQ=*9*P}QZx@RES z3t@)`+APJ=T|ai;x3$77&$r(%k7AUT%6M3wH&~%uT(0qUm$qWIYZQ+eJGhH>l-Z~^z8T->BA=ZKGQt+nB>(C{}S1JqQQOtpuvxOr*r=) zIU0jkSI1s7&)N%6z2stlNDI=`PlOY;INvVa!e7k(ENvPxmL-x$1L!d}(-5xJeW5a_ zPD6{(IQ=Y9a`u%_P99w53ViECif?vJFjbR~rQ^w|)r1`I&mu$_XzdR=mNZZo{WjJS z@;u$O;FiOjB|7_xk4ADd2~JZfWj~!7d6UTXG8Ysy5aX^X(9B2*Cp#0u;Jnv5yQ1WY z?3Q&@_@b3(T-xhvUyL+YkDUFKWY5k`q$G8C;Tt2AlzuQh(&}_>^$OZP<1~@d!FvVX za`4N!u*@P9#L;a$@K;uZUn*>8qwLNxzB2BeCa|e{$5Pf@;wZU;?3#S=RF#$)+(ft_ zw)S_-3Dyv6>-fXRa}JwPh`4a>nXIKC30WyTxITr7c8IU0dspNbEe~C3sGVh#ovI4= z`B>;&C`Z~jNVbRWN6$q|Fs<`dV7tFp&Gn8MfgM9m0uF;k0aH`-tG;Rh9h9?Gm?m;} zTB=DoILf$#8NaV>Ztv|ladjrdzG)G|n(EAmTlI8EJ z{`={Z$FK^a1rR5#GeVdz2U zi^@WMA7eJ>2B_!&wpeAZw?0@wTK%HWg(3tI0eh;>Sdw2`q-{BEr_(sk9sGV^7hOK? z>&TJq9MD(ZIyHyCGtLD$s4(}Zf)7$VKnO(U>CZP>q)GqRL6}`cMai z2+e2?{65ZSn-FRA423c&#pk0JoQSgzPYdW0X0FuYNoRSOiej=qf-Wdx`TehhV@g8GVKu{+uHNrJwDbe6)FnliI(?4%u>1P3RS^JWAlPhF;mXiiIq{4L>;v@b(9z3G!t@D_H4_oE$T9mxT*)3ij%M=b){Tsw zoz5JU!IG7HkjC(fVax7YaFb9&V&1wmc-@>Y}b z)e5Kn^)!pRq6kdobj>5cxjat}^|@e#*|zx5)lkPgt(7JM*aq)G%z+T%$bmb?g24B? z#`~$Gewe!=DTL9H`hKhs*$y=(i{1AU-dri|78IB}vDMD0pb(T3B|a$qPL$n{Z0lJ+ z;FW5-ig*l9eEbnGiQ{Q3k*6)WqU*S}RJ2-}paO;?m6jhS z%;{zbwHe0xG_Vb&ve>l@(-Lguzogp}J-o#khGYALkV#r%)xPa}n>foCGenzC4W;^t zZ1E_vycSowURE-nGe4zEDzViruQl?|44YXj_sRu9cJ-Chh>EM*u64e=c%jrdsSO6HYrNP8{01`x7rmh%*rCO7 zHGMTP&D(Bxm%dm}w6AV2J=WG=ewP^oohGp@lL(L`g1gm~LGF$C=99M5AS){Q?-_{^ zKub?P(#hwfjrtoA_w0 zUS~jJwNz{cj~Gk@Gz1C>j`zMd z$(eQ}1#>xsAge?o6@d8OkwWBcV<7C*s4(lZTA-C+Q`n&#+E@#$RE6BJ^GMG?L6M5( zSJC3722P6)(L}Klg5s|kKVyG*GD@+UVMidS1UOE|X|alt@e~Sfk_**Y6!?P|ogwRQ z#;q@_Bwg1YNu0nX#$Gr;iXIT6xo24RSuIT8yJxGv38gX|@M<7?Sj-lh7LhpwBrjr# zHEu>^;4&%1T27sH^7(*8N(>}=$J$)f=@(Cl|5iOZjWyz~t97-n_+~dq<}H^3c`DP+ zvLEVOGk(@fn$zbPKLjl<2?m=>6Y|DxZjerSYlhJ=(D^T7v6I)B-rfep|X&~b*5w>bRBBjd%vK3ei4bSkEc%B`jbG~bb$&I2)= z6E82GK%em2Zj)pwB^8_9wtft^xlN!u%!(9@rgg44GXf`S7WXlt2K7Ly9zP6IR^imQ zSWA0)#Wfi$3ksG>s0Kme3dG|_2d&-a#)ua$t9OOPMgz^LydrS3RfIY$qXsfj7~!*k zA6SO2`T%XNp#;j4Pj($21Bc_oAMLeaWvqS3`-luVj0QeKw$4e z`#=JV`nx85q-)fhxasc*H$u}*y+HcGcpivOiJyS2M6{(cn4UGDFINB9gFiOm(<&4Q z>5}AYuSCH3{52lhwqS{wYDd>I4%JS_4i#)M*|KJM%%(MirX$h~1jxx&mDr*Jj_ghz zf@@$0AK{_Y$MlIX*4>|MOz8&UiFfgtL(Q(eQRP?~C%%P@))*9bLzUQvBtIBoPG}Kk zs=ZDo=WB(yeX%-c;smrH36t2a%0=vEl1|Te>e7e&G1DKf@}w@rq{-~;zVhP~mnO&)9h9ayJj>un%iOUXj~D{R2#G#Gn~X84u9)kjb)pu6RbEL2?qp}Z4cgvIs)>oce@I8lWsewz* z`G!Y`yqLIhp>pLKicQNQ}yVgNC&H~|n|*}(t8 z!G-;S3AucJXpfj=`+KfEJMeICuj%bfi0kp$!(1v;l~8gu^;Hrwu_Qcr+ z@B`bh;qSzcWs5;W4ICQun+B;@mYWtd7fPOZ6DSxH%wm=AO|H5;EmY!=wj0x;>B+0~j)?6|aS49+) zs7PWx5UgG$GZJP|3#Hh$2CoCqJh!V=KTu2hHljEfX$8y>Nr*%jxtTb+<+TdI#ItMJ zyEHKQPL8cOT9{@B7QGY9rt=MfWddk8eDpe@41C0>MsWno_Kp;^I^(54h4ptRN6=fY^CW|(C`g1#N4r` zu>h5-?JMs7#H%GEazryinJ!7?{mHSv5hhWD;G-V8Q@p?FDL5~((fCiwxpw_aM8m|KJjbbaC=V*{I%~9YB7@DlF(5h{& zS_unMs>Gyds*|+FW|+12fFRZ!mbW;=Y@n(O_eS-mjKnEw=^mff4!fZ5g7-q>ZNkq4 zU93(@t=)L=NMg#eN>pjl4nNuDBx3kKxoktkfGPn*Uhv~1VtmSD4pB@NMjhW`!dV@OrOx z?3VTQ7;9_H2pt5<(gX+FuTH+Ju86;O74D=*7zH)<{y(O^DZ0~U`8u|3dxD8Gv2EM< z#kMB4ZQJGq6Ki7Iw*6(!`+vW4R^$Fe0P!R^-j5DKoy6s%-LGcRlpNO2daChZD{< zswm0^2{)%fNZ&a7UPo%~rZnua3TEPE*gtEIp5WLCBxPmNx)!IqH-Y=TBwNY}2giQ= z($ZgAngX_%KqfI;hi0X4#0~Lb>w_1-xhy8-zCPQ#cFAMzmUs?Mu5!pCc7h~5=I+uER=#YY(HvU z+mRRaI~WFL)yY^eg$W^g?1J`05olb#;)aZhzBf13$L{(OERG*1!jcjM9;!XrJI-S& zY0BkN0Eml*?%iWa;TLMb5Q5~8B6|$YhiL1ggCo=^VW$k%=hXxh2wzf|R=rmR3J;4*Kz{gA0mr)XA#wmd; z6{`5xM6);=?5xgIhDRp$L=juoK@l61IeFz#KxZk`p8J|5aA&CkoZ0_o=Gnv`q{R1d z0{F3{Ab%I11K5+7Mh@e0s5f%-58Et@F@m@HPk+&8-%)1yUUCERXvsNN!m3OVBpzE; zO&dih7=Cqez1=t@uThqP-*h=OVIyX&Ro~T`IveH za8+DE7CG*4$;H$sxDi=K5h`2gm_YWWb(dAoMsa(Zt^NZ2yb>yg#i+)l^`axqVAk%r z;8-&ip?B|t%d5|CHAAweE?aFSX=_7REc6vuKtZ)(CfBu&l6?pX&!~XhRsVoo(dEzS z(5Vk;;^KG8Rht)r`twQ}eAski0Vi!r&v;5UfGnHBxDn%Kxv+p1p=aqBK5RZL)`#_s zr$L8r;U+yxn#gdW)rf+bLMYVO3*gKu3X zu_PCpIY^}yng8Gi?H1>67Z|)*SxT}XsUtuoe5FuB=kRJ^RR*Y^OMpR|ve~sH#56BE zi&JOX>BRb|S->Dlt_f~h7id=DjAO-T;x>e3^7%OH!Ko?j9iA<<(1=GlGm$kJVmhN~ zunDJ5oJ0WakSw7*;nu4-!UbX-vYQs#GY(s=;EevH>R0(plQJUB%!5}EgcH0!;8apI z;?Oy7vmA3eG2k7&pp}+DY~9D<5vubV>;zY?Ydh&}Dj{DO0=t`KRLy3NHdCZpC=Jd{ zS(n>a7^cTFv|;EslF6dss1?pw>VClKbf4q#CgHQ1)WrtlTy@!OjEZnAJ+>Dv(14;3 z%11m|9DYB|h}+!w0};hn4Nt$aQwk zr$PrWqj#w^xjZPN32LR&~Ka}8ly+CeL4wU)ersJ@z)_DBX5fzVkA zeKS--_eRMs2&eScHAA^Cb7*sh#<4BW;OdWP+_tzkxi5?h|56)*z2BNd)P)?jU)!V` zL#n!C_?T`EHlGREQ11WM+}S_=`t>+4!PWoywISG>*O*RHJGBrASJG6}+M6^&E_o6y z=W1|Qc6U==g1m6fS5ILq;w*FR+IXY^nK<-86zL6AJseBGdR%#4bk{;qUDnwh0xr~@ z52(MJO#EQIBWqwvZiO31YeS9$Q6uPPp|;ZRW(~*RmTOZO@J?Cu62JSmPAAn51)pI6 zq723!0HjTai0iakmKZK``KcwNI)q zSe~Y9OBin)SbD}c&-MguF3j`HL#3krgaA&fZ%15~<@lY80}zKOBWuE`K%%}b;Mi-> zzSR)XQWgj4yvHLPdPlMcjZ9DsxdRXK9!RjsubrSER!8gGnijqc4}>zoM%MikWK%S3 zWd|3Jad8T-c}ok~?<~H*Ns0VfZkypG7?FsFq5*tJ#9K+;!a_0?m4Ml<4>E?T6-zAV zaV1O&@v_`~q!^yu(5Q?-|2oWuq^wPgD5@ij7nwr_@gv57}Q^PpC+Q)ZrkfLn&BN+J`a8*cxOav|$R z6D(DBLmJ(1E5h1-wrrz^jG((K(QTvcKo5h(<9;^1vS%xLWZ7LQ7cHZhQs@UbSHZQz^p0uh{?+PM{yq~1A) zu+kPwFz~&)NZM!ki8sM*hB=GuG(GFpCZtW3gK<8x3l-*M1rdnIW#5rN!GM;UT`4ga z1^?~DEbhFdqd(3K8bH7X?X_CG*u!#&hv^kNxokfrjL5sL+?_zYZbBSvib)D~9ByX@ zAWK3V{jJ<{9+M!R>+k8k0buOJN^yFZKZH4|E5xc zU~g!eCoVNGs|M}`=J3R~Mz9lhi6*#+9eZ;!{06mR@af@Xk|(SUB@mkS z#c#1DNM%gu{}hX4*_Y$|Y$TmX&z+T9aJLMZ;-UKWj=2!tghpfPOisg|jR# zn-jf*{tk=src+Mfh?%8hazcrSU-; z1}o%6cG4mriIu%yZ;u-<1O9z?Kh_7Vt-_h);yC7=4 zphHgnq~I6Atbt zdV_EMd@i7I!07y-u?38ACrwgv%#|zvhYqeurroH@`B{#4+@r4-hEAPSh<404-Y$oa zIxd+p)5~x~gmFK!pX4V&t5@t4qtm)BS6qzkVQGwh^=@appc{M-+ua-%@nT=+OwzJC z8^2g=A4!@e^D(`&+PCjR2j#j}p^o=rMNqVMJ5k`O;k@CnHkrctR_f z(9NzyPxDVVd9>S~Ev09_KTJO^cgAC}|5N4ut#q-F-KhVbgA^vzz8GY`ze^3-@1D}S z`$HV}R%!9G@4kG%u(2eMlLDi4C6NHg8fL zG6bDxL-DB&-K*3KrBX4`Tu|sSU{MvcnO&)sB$a4pOe)xQmtJ+feHCg1OE8Y>b?}Ky z^00_H4qE9-Sr|3rkB{dOa9zgxb)Sge4|~RauyPvFDy1hz=a4bz-@-|JAhp}gMqE=VX>lFke{~IGJcC@e z$*pZ}4f&IQm}*Naj<>I^rlM=MEc6p#DSeNyLQt?_7mtWk&j`Ep47|0%MD6e^`svnM z>r%!GvCgs8K%G=tRj(_=w8cDmk;W!~seD~V1M!hcyi=0yM5FpS_l+g?6bURS0_ube zU(3f$r;=COw}4{sf%|DPU?p;ZLObEO*>Y0xoE-}BtRIh0-jluQ?E9*w_UuzKfBj1Q zc<%rDe{#bIra_?m63}dlN&SN#iTH_$(7!z*qlS66s)5u zYl+SXq5~!n*jLqj!f){NIiPObVf>Zfbr2RB}IAMc!XCR%{A?Si}{8*EL zET~~JD0QrzF60+E;X~aI$_}oJi}=aI^ED{8DKujpHmF|^svQKn0YiO5|G4fy`y%!i z;^C2X%hpNokB18&FL}cj@Sb=$isOm~(ZqurqH3Gv(s)@Z-c7!dkSd^CL5RK@A?N*; z9j5`(B*C0LW*GY>o;+p^5a;tlTFo#gd+dtX9Mg&&-x1lx8j;g+s3i!uR;!rw1fp(^ z-i#;MQQS>2Zk|3;2~py3S~b>xP4F@R z5gK@zrn6+DCUk2_VF8(d`-z39!^~+aQPfG(xGAlt>c5SW*}Wpn5|`w05DMNkOWR`gwD$p)FFS zX31VItPi=K6Jl&B6HmY^9wd6Lx}Ry`I<0HD6~; zcEeZK5jwK?rI`E@LmOCIfgaB$9r#|RfdzRN#-{>Bbk?BWdUpU7q#6~ZKUkq|sgLgb zYZ|m#iaXMf&~W?}BFlg=5D&n)s-sBDiT?%aXn}4=Jh-e!29@b828%!Yj}2qr|<0l zDax*dM1VS|e4MgY@m9?fiXaND#^>m9P(9=^vtbrl^I$b7GH3oIhCV#%f;6k{9k6-P zPFv}#7+NeTM~Ppd1ZNSqzo76bMt+JE%9cMsJ&E7{6!x0!FpdgaoA{gMS7V;~wv z&VM4+XCLZ1V$=^(1EHoa5i6ae8~CWjJhUhM)c2nqA--7z`gX$`MNm|%%fkjk_83S< zjwC}lJp!?g8c&mA)$f*8(qxm&Ea{SRf-xstj?tq*-=e zUnQ~_lqxSqRt2LGUgh?a*Y76b&^DaFaMFKq959V6_gON`kid2+BJ_Anf`SNAm-qZw zF7jf;aK4i%kftNUDft@WLU(?r-HJW$hJ#G zXI1V&1FvRg*7;9SzfXMex+g7`5=H+Fr6Rs7=vgm?p>r+(^G{?ZR&K`rWC|GTHIsda z3%t|QcV^6V@w#*V-%VYYa^Y^;J9!0@Rx?7I^?|?=6w9V@($9;bHpub)wKm5IrW|z{ zuqMx-)T}~_ryDJWCOA6fLDf&j7>FKqL-(GzF+vT^J3D_$_4L8GFDH*RD_zsJ!fRz_ ze`T+?Fz~E<-*)S~D<{7q`*a|~N&V~Oq#z96{-P-L2S#qp|JZ+rG&h8aTR~3S7dA^VS-lZwXsWgR5#{%Ku)SGM9PZU56{aMNktl3gKnNU zhss~wF(?pwx$==`HM(Qy^x6_{+jD*ER$bc{acF-ja$DFn!62ogoh<7}D>_rR|N3f8 zBl()x#)^nwD{vH;?dccrSzGh5@tuLpq}crsM);)R5IvQ3d8t6itAI)vQf7rqoS*K! zB?2iR&|ytdRX^Ygq0*ECy_IBSBZsMmZd&_x&w?o!`OH-Z@ zYnNsmYZh`BC+dVBLOoWe?L2!NtM_P0IltDIOf^1QMOhTWqDHYqD5hb)GQsO~9Aa73 zrLCZzJzOUleX087@62C;JlCPX+(u6gqqoAddq1c}@Mol3E@#-0o8H+7?rAF?X7$3y z?zW*}26y))vce(KK}`kl?UH_00`aA zESEM@3+vnnGJB7 zs<8gLe5!z03bp{jU}?lWnjrF^d=iY|snJ{;A#EW=wq0l%pPqhWa^lmWiX(*z>NfS5 zGfoZXg4%2(vbg3`dQMPqiR&8GB?>jdq5yDsH;1ps|8vtg_pswfw+t*e0L^W!`lSvv z;j+hX#`dJSJ0d#(e{E{*isbD|xGb7Nuo`maO3JcX*E)}GhU%Gwl9tW6im97CX$`Qe z^sZ!*zc&j8JkDgAl&!C@{nYI0A>1Z^!HI+q^F7 zHtj_6;EsTvX%!g1Hpwup&vbs(WE!E2A;0J)k>wtiUnprZ{1Y=5a{wqUdWYa)P2r=EKZp}qIR8yrhjZ^k8>TUCQee(c(SQMgG0<3qi`*H4qW<>P$5x#`8w+a$XtX2x_0F3sBT3FeZ`ux(# ztzdQK@~dy*|r>X=ZL-C>id!S&8ciRR_+fgj?@Z!!1eXq-zGfBYv~k_UEbD}W9~q`y>R({tMQ{Nw z%$x;1Wu#$)g)Q@v<<%gy3|p1q#6e5W3YaxUQ9ZXn1q-04n!p8gs@{OKYbchTv#GSe zIeA_x3;W~qkI^Cx<1J?$t+P+Z9artkc~h^YopFAP!rowGjy)R1c4r_F^+?o=WXC2E z*n{%7CZ5-(H!WT-wCCAY1|w!42{htwFUlGWwkr?Ox=>}*HP~WzB)pDLXnr7TBXtFksb1`r_Hi<9l$X)yJPYu=UcL=G3 zCzZn$>_iTR_QW6oGq^0irzRi$T01>)RDP%IJH_d}a`|s4-TsS+gbdjLqW^=Jy#*p) z32om&IqQ9%bs~nCczUcpQb>u+p=zEt{Vpq!As)6#k(P9nS%w|7p`XnAne2xlj4{G? z2B3xcSc|mYX7sH-kh~5ieWp!knpMc4C*VT563urWY0zi3=511oS4iMsjE|1YXIOZV&xN}g?7XU2SG%>L1(j{D@uIaVz<1LwbMc9Lyc`5<$mv&;XZ#*cOAyXoNIuFJW* zUczRa{-&{~sMuTf25bStCM~A7>!HP{CBX<>r@1|*V!)5ED)_V$RyKh8q+4{-i$R1b zwYsxNDC{v?9d?r-V^rU7$|YOqat#2VRO@5sSs)~cP@uTKHml1J@)t|o$;|l7oaxr)2g|Wusa)0hv=<#O zQ(Hf_AzlhWEqMKN(A{*H3j=h5^Tj=`S4a*8H7it9MF z^V1;nk1j$w7w}j1u=|?agNq~C3nUscpR=WyhHoKc_gi2bLbzEDWaSf6&bGA!E+R$>5EHWJJa-}%8UCs+CWzRUvi&6&OM{A)T(u6U-5H^xD0NbV z3BL>2y~k68Fxp>N)uv-59`R_uX$0I=JZn?`Ns0NMdSezRs<10kbS0$nKpiM-7!N5z zrY+7K%xg4#yqJMT;69!HC1LcHvT;~`@4JsL(X}tL4cY;7;wL#XGs1BPiXpT+a0?0UUVYk3L|fnA#gGer_QR@Zc6+@38CURTRqT!i-M z0!{^LL|g8KPdwq*eNNANb*?WpmgZ|zQ?HsS{;s#qbK`m=a{nhZ?=YUZRY~t5KH_QAb`$PicKnDooxLV)`7>c z8I0bH&+%?KoxYk55YXL|&-(`5CmL5MqtS(ObgBXh`Ek!YTw|DMh*W8jP9$JsZ?%KF z9!XCJQI)~Ic}^qSxU@VGw{5l2aI94_naH#mjb9aMS z@VGj_3s`&op*H@}d>(T;&JNFE6R%?+a5q8JG)hI()go0h@IA_Tu=)<6VrD&8ak$n{ z?U9ZX&r@etdKJ%K2Dn)WQb$o;m{F9N=d65OaElMlK%pXk=6G;>6uO-lWxcQohY9Ul zp2jYQAXxZy;`vFBM-GgXsZ0r{)H!6{!w6W_%D46JY{v@4KCKFrFo!>5(?0qi8agfY(N zb+QeC5Qb;Ad_(!^;1TZj(MKk8;{m~uf)nabA-?mBqyJJ|p*=Q#1IGFeOX0uA!>0%8 z3ORgIVU>WVBu_{&LnHS}LK>()bdZ8*Ojf@v37s8=BI|Pcji76PX^%1CgWnfN#i{XG z?5uYF$~=I{Yf83chgOQU4Y|wCaTPaS6Ejz6-FHz|Yefz&qrP-(4X`2u93F(O8O0<9 z&mU1apJppOLqTh88gHV|MEQZUhnIJfzx|N8_L#q1!nyPZ`Nq+$pN)6~XQ;3}n}4{| zCuHfyM8N5{X?u2^Wpb3U@3$EEBh&jen?1o~x5SaInvrwCVIZJJ-?U5v@x^x`!%Lu- zNWCcQpLgoX(}&E~6hBz)ks;g%;V3x}L$)mC;H}*iESj^#DMWA`21y01C3$L>HX+N| zEfU61+w#amL~K(NWM?Hg;dz|#EEDdYG4Tf}H_cA8rg~QgV&qw}Esji9o4?_>X`(j9 z5PIujQKsU51X>^G;;)whV=w0dzUxTke9uKyq%4?1V3eN<=AEdG)%6CAvy@?B5-NQ_ zt%(j$6sZnZND2zn8OyBnUPCuh`vDJ%xwZPJqv8wk<0JUd$qr`WE3rB(HYkq1sGy8i z_4hU01Ac@dk>}fSxtj0B9Fu%7To#Nx*+cxN8<9D8$yM+rUeg2(Mrhoox(4qfmT6 zu|dY#)OazSw2a;Hx&!^gZf2zhg2!jMZ{SO?7vc__aW`gvct&p6czR72SM58`CJrGz zu`7QLH46Gfm`To586o5{0(eW}PdY`s7Nc$v+c+6LCT3Ru zo!l784Dw4cQHZMSDe+*=(xJcb$!!ga6QcU5E1e(C`TUd?UB6L2IzK2=l1X|>e68WEJZec|R)IHAj(P$G(iv$FeJJ@>oBq(=av?un ze{!{nH^60S4-ELi*}96m0(kJoGHjML+QTr?%fc+J*p`Y3U%GHy`liMYye|Fc1hfl6 zmVdDWHFl^Z6)>tz1D@!=93tCl#cSAwiF@ACifOl~iRWu7`nVVQ#lyjZJu?S&mtbMM zx5TXg<91Nz>j}jV!_*Qs&W$HyU!@U`jJ=1QkzNTQwk=y72BM?v{Vm!GKUq%iF~fYZ zlDxP$#$jPSXe#O?u=)j0yy@}-A;b@vN6l#llG)QYH$BU+%4GyxIh`QO(^`F&&f?kY zT%F~-mIFR;>B`@yrua&ZlBxNa_$oF98(?Oc1L+?q5#+$&UKA={G5mZdrD-UvLZT>8 z1>GEWR6FDAmDIF?NU?Vw(2KK7!=xZK+H1*5)^8fGsq{(JJ8IGQ??TPu66Xps8RNOz zHiPiDX)G(A!nt}V(u}f=WmV7nnPAPj396n%9$l>nP+LBfv#qAJ!5oXgSoSW-Iel*6 zEC|dggx;Ozl{oD~lVvVk#-o?*(V^f9azX?7CZ7if5WWenQ8}nyR`@*EkV+07EdLtP zr}Zz8iO61L#Q!h46%!4V({~fB0&ypbOsIQ%tGPMJ`Fku-<{YkF;zI0jpJVSK*j|lM zTGU!-!}@Z^zFM6o%No^_6I=mjSrA3xu5he)5o%zGlI^kWxxG~AOm{;uP)k8agH*f? zbyVl(k*a^Q5ar=~c?Yu$7BVGvvoBx=h@IIX(iE5gj5p$LClqg`*ge%bRq|=Xpv)4Z z-=|Domd$S4Ok;tx>(%pBV84Xk1){ZXTE#L=@=Zs2GCX70%{cZbL8jeDkUtFK`>+zz zatTHcVk@--IQF=hjAY)}4m@}Bp{@o-@-V$giKh|47!pnZJ!2^=sR{}_({+N$S~R2N z%3}q<6s&7IT}Q^y^aqUd4Mm)dm(jW6m>gFI8ci7+46`e)+LXZ>X*U_)dCVfIvrIwv z+#zCwrO&XEE@!Dp%((H=x+bLU1wj+f*r>W+3l~$;mXPsbxk6Ib%`pQfpB|1Mh!l#5 z*fGh^9y?wZykqBi@`e#wb3hOiqDarNlZFW@XQn>;i5?b7jHpA?PEpA z^Cpr=Vf62>>Q7Bk7slTM&8Gd?mCO|$?%=U-)pr=}$l*YnZagEx>Z zZjOsu-Wa%EepK;fw$0Ut!+Pw?6_2tc->WaM-lKC=#q~9sA|Ql;WQHC}#q?j<{$Clk zW%8Gu)E(r8WBB(f)|CW%i!BOK)V9zI+$l0&KI}hmOe4G~hkEwp*)r`3zd>bt;b@)I ze-Kzl(T~9ON3E9-xxs)UpQhm-4+#a2$Z(rRXO37XL7nMrMv`<{(p3g0jj-|8+okibmgs^Kyu3JTC7v5o zIYccuBT$Jp93D|t%muA>1hF5Hw%9BhFqjgF$$K&D{%WRLi(7cqWF-!=soZ~O&#buBz>T+zVFIOv3-(_9{{)qyQ1Y-NfX%Y>B{6-h0$=#Ela zG$!9-&g7@<`I>r&F4|UYK<+-K!o!6b=);XnSxrYlH(XslxKh_V#ud(PIOkou4sir| z!a-1O^rxf@k`;O_&oKtoT~eMHLQE{=iHcW!-9To2ZKLwS_EJ@BX^)SW8zrXOliD+8 zv0z>f>&Tq2-u5)mkPxjVoDOHeWQ{L>+W#2MO?fA?%Em6{7oz^ zY;4F8M1e1PyEb0iI)pX?+iS_LzJMFxktR1Ue>&lZ>ku4DO3J4n^Xa!96n9krh7eMa zRg$mvv{e$8r++{3Nq{{OB?p(gAic#-K(dY{mT=xpZv}ia8J_LK!#zvDOuddR$^PyH zZK|hHR`N;f9kbaql=W)GFklykfG+S;4tY|}T`^~iEFj{5c6FrjYNY)Hg=H*6S`Rs8 z@mLU80X&BI11j*mu!mougmWXLXf6FTm< z>Y4%Zc&vbJj*mBBae-lFV1fsaQ)x_Cs6% zw&5yIFBlr*J_th@QV1Un3P6Xoq71apBX1#eE;>kDANO}&mqOJEpZBikviD0IH@qQX z45yL)Q$ZLLtu$NJmE-ku1lwDhFsHX;v@gn96@8a(HGQ|&G{om>1A7I#?M9_+Z+FK) zS#pP#v}a)P@rvZc869 z8>j?>Aul`;jRmjoUw)7S_ZWbOZy_t-fN6$- z-UJ@-6(UJ<4{7SFBV2#n9+tb_%$K%^ zV)`$>r}Y=#YvF(|`Qbe~txs{MDZw-y? zf-1yKAe+(fSLNJow*|x7@V=+wE2%I)#wNjlb#5WK6FJ|HD7`9JR!(=Y5f_Ll2d?>o zn+m?6*C5QS{ZX%C@z7`!@W=js_&tykbXgKqS-A9)H8X3e48HT=VJo2=NO+Km-=QIe~Ne#8%r^K38_28vdJD)aVvU?|`GO$`X+Jxe{ggkl~jW zv#0D5C$SaRprVX!BHpWMr9^Q4$qtGQhV|XMMw_V_N?|!)47-~)(a?Pw>C`*LU|?cd z#4Gogva)L0uBXk;Zs9EcliK29#aPBS^1?1{-Qi8GsTf%~RWWf8JUny_kW)JXdhUVW zYCz1`&Ow9};Pf>JYK!9E6JId~uewp7hu)$Iol*n0e|HEl!Fr$6GPF4Dj~WsWSRrf!cRRnEU<1 zI(G|p_tc;oP=eo)`xCyD>jUl^RcBWE-R=n&krL$3ZpqM4WLv`f-cP=oC1Ta|V$puJ zcJ{Zw(0mXtj3662`Zu{nHF>zW6ti`+pG+(x-)+uK7MOl7_=m&$`z)yz>8pi96Kb63 z-`uzJ57b@=SJR_=eFb6`9v9kear|%K^s8k45k$n!FtvS|m{uH;VFCR4mS~{EytDu! zmc~D2x?eMjaTE1`h%_>y!X`_6F?Ln4h67XCVrhPb^6j0dmAjEP7%IC`kdphcKG&9N z2{g0*^oq>uW z@g9Ps2cs3J?;pkJ_%?HGsDT;?V-j#N=?H4zn2OsgQ$Hx5>{oulyn<4rpQQJV2!H^h zmt+n>MPk_F-phn6^yt z_yt z!uE8n>^r-tzG_eLs$=vua{45 zP6tk2VB=|PM;C!^$S@KhFE_gvEf+8H`ewhkEV4`TX69@gW1JBZ_sL$HQ_Iq&#(#!M z#KWNCz3JsBDc9kgcA6q?Azu@hCaNzP>gKeRi9plPvPFs%uUh2yecoehS`4Oqh8X~z zh>ITW$3XGtUkFH}pt@sXV)}pXuXoH(Ymt3Y?dHqMho<1yjiW9$QYd-uGWGU9p$9_6 z81}f|__j!kUPGS#EIG-HbcheXM_~VywLjSI%@Kr~!_?T<*!+~( z2=v3mtem6b-1f}4;4Ks2X`*k)khioMFJRbP#0;~SCU3X9OqLI0lIBe@L2MGTA{GVb zv%s1(3cR1gRF&(9kqXabgT1voaxHe@WUNj5-*clFR-!-lh7q#mW1^*;AfJce{Ratx zuO{ALA3Z!Bw0dFuAfpSgdA{Fa2c|!m5(lWeBPH6x%deKz)4A7dP~hqwc>)W%{b5*M z)|YP1Ep3wd(Hs>7vATDiz4xt|%9gA0SwVpKRoeZ*-OJD8EMdqcNg$`4_N6orNm9A! zcIp%*6h8jar5QNgu(pS-W*R)%NRVm-iEA~rL1a7k)Nzrsuz*9hsAb#2YVIMXJ3~fy zrm=F*tyc~~tH>2-VfK)j{z5GPEUfPJQDWa&-BBmoDbAY7kJJlE+)?Xv%6l#po&AyW z@f%R8BY6F?%#mDs!W*9T&WAAFfRB`PZ*gE@?FTI#&P(JzG28jGMJpFs{L|I9 zxvyw=gTs=^X%HX&h-wmJbB!-g*-|mvphRBT#eV^G*K&ARfjXD?tGjE6Iw@nGRZf)H zp5Jq*L>!68{{H@Uaejy)M@{WZlA&;M`(#niSLgla)i(as1CocVj@S3C(L-o_R;j88 z^l40Oapch^{TJB%r5U*wZ-4FpYVnXssI;fm7s6$! zT7~=7-l|u5`h1)^1H(NF$HvXhix=cHOWAc2MqE~ z=*A49QhSNu$Y$c@WD-FKv3mCO1F_x50XTb#KY3Oj#lf^m!|soF#=<4am^&RV?~aU} zA@I9YFQAqv#Wk;AOF}0CLG7d5;}aZ>&ILIFm>2@fHYdx?B`OW?6@nRzu+z1I#P& z>3Oyyl<3#OrVk{b zg5Ea!+=PH{@|6bcRVqb~;x02Hb>P5EYj-6$?3YsUK-SrbzkQ{Zuamsj?iOeEzdc{1 zX7-w+A8oAZk_rS}CjGX2IB@z$$}QOoJVtKR5x z4**k>kYAhfjY=Bk?iKd^PVmtIc^c_BA`G9B8Lt*UgaeU-BevJayHAuajON`g=vAF| zm5br_(p9YTY(twJy#r0RUJgdVd%r9?JwjJKJAQ6oSC5{W&V`!>%;lUc}I&nrC7ye4xbQ2w%r72pPN%C7zV0G!M`YeB-9!5 zSDw5=sxI^oclRaH0T~69)2008HWb2!B)%wQwtZ?Z<$V(#yqDjms}YK4R3K4rKkOjU z3`2dY1&D5rYLOUfugQ~T9KWz|OV5&CuR5P{WA@W5p8o;ck+dPees@(+oh93RDcQMY znPA355D(740Iz_P!E+S-ZrBWk$?V)u=Fw21S8jr9EQX6w@sXd$M(-{^5rxLIoj@$Q zF2Zkr21r+8no5nx;XCczSZ5z!F$OJMDT9~dt43fqd-uY->3k^mR1}K1cGo%B_MlY0 z2JbW+i@>SkS@{}1R|0fXyhDG1rZj3#Ur9=aqG4JKYjm3gjes#}e=Ngxi#J;hW6|<0 zr%`{guCQxOidS)yFSsR5Ct`KR*19;O;4-SB*3lNp`EPJ1I zW*68FcFrgg3^zcAbCZaUUByC!UewK}itVmNAyL2Dy zl4mS7ECXX)WD~b}c_Q=n-uR`in%8w0TWalZ`IK@9cRN`KESIcJLhaCZ3Gj!K%ew-b z17^E_9%cT6mq6w*aduv5U| zxeo9rQfr8~=sM6NSV?iHd$2L8gG$9by48;H9QB(AWH){6)Xp)cp*HEUU4J2x*Zb3P zjyNEz`s3kMZ|@LVPH~#ht?!l*k3_Fz=n`tDye(k8Q_zh>x{P%}-SN%lTXY;WEX7Xr zchxSKXy_QyZ0>x-t5XVIDP(l8V<1YWCmvzIE^iTUfi%}k^|vR@cm?swIAE?usZZPL zRE}O(Jz|7L=Z^zzi6mIEgAL*|*DeoIUi7ri?K0*b>b8SLNCFZ8A@6KXBf;SMOr9*P z1jN=_03AA>^S=JIidUE&+(lk;Us(+WT7d3{w+MJO;gm^$ATa&&vlJ_8U7?u?{dZS& zTXwgs0>dESgg^Javra>h*B;_M4yNiHtCFdPblw9Mcx|!>j3H*?XViZ}n^2wKS~eLM zC{UH8y>y5aUXFJ|<_AjnR8vZPd)G)0UMy=hLKC)t3s;BsrmxKq#VD21n(2(sn zayD@;Mr|AH1HFdUJeVbYDHQAeqc!P5^#AeoRbg?pTa%5`xCVDl7)xOy4sd{VGTa`sB*6W=yP3ZMAc6N#; z`UoY@#p3g0tI;f<)Uz4Z#m72%Ogd~1#ob+hvu=sjBRE9iJGU~bA2|l}M zwm8GgINS0RTYT1BKS)DCK+2u&BU~8aq<&_7EmtNV?CS_v)3*|T9n&a-V^Drw<*OU&7eJ%eoSAEfScZ{+WvjlG~-O$1e~v2VR!)?umST zx6w}uk~*Pu3NW4N#iSUp-sV^l0>x4Gn&R7n({2VE-G~RxGhZGyJ9A`H^dfIxp1tUh zTD|M_eC{J>AJ)kQJD4B#GH_VK5pdZdM9yL9B3U%`GNSHQk+mxu`2NMe+Perghw4Wo z2wuPmD9%?z2AV<*FfXUXom50pzzsN0$JZ|*MC^w2mR~*JA0s6qZfz^ zCV?s*TV&lAeXWLg@eTy zt&6fhkUGZ?5hxN>i;=yC0_;ilEA=>=BT4;2JcDju{)^EvUXgJ)|ek(78_} zB9{n+PJ}ku1RKP3a__Ky5&DqfQ`R9A`RV?2eD2+aqW5LGe=jA(HDoDptLnG~ns?Uq z?Pw8bEF+ZU%45k_GFWw@Uq<6EmvQ*(UIDrO;QKY`TM52anX`#DU-CSit24f%ZJ>Qe z=2%^=Hzqcl-;5k~SC7I)&=YZ|v}}6AoVog3s>PaxUKX2WS9g&MBh}zYx*rv%rX_3A z=S%^r$vrJRUTeO?o!Ss5{cnMP#k0#;R?5gYIog}iR1fdkGlO;;e#kM_Mo4LII7mP< zCX=G=T8tPh zmvJXTIyc^njRSb{Wk_!mU<@qBa8SmMS{>~=eQUVCH@k+> zqIbt%5_v!fpxcULXyXD~&ng098nS5KF+w7eJjnV!V47%xm`=d^P(UU*DT^Lw#qCC#?(Z?RQw;IP%~1{So^!N)tmi_EW57 ziYm#FlrP8c&Nf$nwt>n3`u7Z$lhY%%Fc(dejySA}23)a={aZ=gw&lG@!u4XBS;-sH zlJhKS&M2%8mU=E|?djZsNj4VzCpE79$0+d;Sa{8x<@E-qOtTiQwZtoW=18JDQwpU! zbI|tms7jaJ18H(tbYBM3G@>M@UzqtGsmF{qQx3uOT}PI#YI%CbIt=T-7@HJxxjbVc z2n%{L36D%DG(!3j$x6kJF#~9If@hFJo@h0V4lhq(jKEEI8~^}vei}BEl%RL8^@n}v zgfp*D+qIllrFsS>{CPKDRT!*(k+a-TyrJ46Bb!DF4N!>Bwk~O1aLj$ESScmKl{{n1 z5*Gq0Oooa{;ha_TGN6X2F{mnDYW7ub9Q>M`U;0AegQ3_tc#Kv4S;i27)0>R+^WWr; zmp@$&DHFtrefg27xdi+{ThK1X)zskRDORO9|B(WeByLERqk}_zgOpDwE`#6WprHc? zP!}Bk**KKm|K;vVe3hVkw&L6wPnr4oP}HyNB{X=3QR#R|A14-)X(q!??VpetM>EbrHqgHBnfQ*)Zzgp0|L_t5AU;ex^E47=kMo_3$7y^ zrNc3N!T|ZMPK{?c{tN}Ct2fP@uC0}Cw9nRq)4H}Mu$An5{Eu>eT?6I#eKoOLHxI(8 z0^|7j-heXxogw&c=LNmTsYvr3r)BS?uA#`KP~`w4sKq$e8PxxBliHdmqWv6@q?Ge@ z0JuIbm!IU6sRNrMN1Cm-K}hJE9V^&-Yxx|ZuKIfSxJu=hdzVeK-*ste$T8ye_lb!2 z{-Hxz){cxSA(UnD01r&n!)n}X`pz(-PZNf-y{D^Q$p$8_Kb22b`nluu^x>JWdE*Q@ zLbCZL7UQB=Plc;xFJijk{Ekod1x(cqPomtKMIAbXy?n;KLZ{UD`N%oar!_w=_Tp2Vn*zUhSZgRWQ?NUN z6(s3*zpY;-zIYc`d~^4#s_FiR!o)E~lO_e`Vl{BvNv361%U}3^nBU(2!wIQ4f*}6~ z=zfvIi2Qw?L!c?kP`3Q-%|T0sY5Jf_qL_GBqctEwLjgIHk}-Wcr-_}b>*4wujPun$bpev9?Y@`7>RhHth@kElehM?L zr{u$*W?ALn9jnQ7Nwt|{-4}yyZm-z5#M%aO2a40!7nR+UK0GYPxbE;B{~Etbw=ti$ zN_n!Sn@_&W%xa5|iI#))l|}h;e;;p*Z02)F^@EteeW}cq$b=3m*)}+TweWWmH#4&R zYlaRSHQNcSMgK;F0OmUnwI2`^v0}7+FX}d6bB<9TG_QT2e+;utf=;up1 z9M#uL(bCt)%2pcfZd}#6Qg&H#pN>(mp>nV0n0U^rW+ASY-wUHKX@=Ux23pggGJje~ z@D%IGIA3eCVY5`?E;^1m6902Y!HA5nCYF-^`6pi)*&Wi3)X_b^zfaL!L@hNaaxr}T z{oRry#c>pG>$3QcM!4&rf1PNPR+=9XpxeoWNi+%=`jm2Anj2v84nHnZz4dR7x36lB z!Ig2F)>!or0RbNhCQEg084y>{7?eXc*6V4i1o_-cAfHyiP)gXl~uoT~Hf|qG%z5Xs$B(yPE z11W6BW{KCeu;4&c&%Hw4X5>k7dTCPG^fOe_o;d4RaJ49Ma7)-B;bE#t z9;dAu#=gw_Uy&YbfOw-gbtJXkW4h4q;t6Nag~h+N_Go11f1Ge^l;4H^om5g7kuPUq zai2s_XkJ5KxBpJS(^oPNZFY>=LR zB(a%I9y->j+3pVV`sPM~dFuHv(y#-hK(q+@Y-NMcj3beo0N(2w98cLxhXAz)2r++L z@^8WZ;&T2IBYofcD~}$0(Toc<6MtttLuXfK`U~p-KRWd}t@{vRIR`&G{KM@!Ep~a^ zCI9RlYVgzjSU8sbVJ>k@L$Hq3;-;QsYB*g+-*E@4=EOD<@xs%4O>TXZIFlRx8|Sw= zpb%aF;dHg$#$37NLVcRcWqJ*>ssLqDIY@;cKLeOKqOKda?NEARx0!uGl7O9Fg=b-4o(*>V(_aIUo! z+2*w^cu0Xi;^SAbUlq0*V+ESQod$c*nOVi?Ai2i-%RpYsIqq&$pYf#FE(O!!9B$*ZQO$44L&&VH$;A9rx*-bgsWUjh)-k{?m+?`_4i@Q@t z(8nO3zl)%-Td`KBa8%&b)7!j4GL%8gsww57RXh1=wX3z-dWqjel0DWwO2m70|NOr9 zZUv->o~Y4fUM*fJC&9UiCHkcIr8-D1o|#q%dbLpkeSLqiwRhXvhXnfJD-{T%9XM@1 zSA?P5j4`H3`HqQCM4AE0~hW{8-;}OMPCqkFY=iweWw1SUUN44VoWpGzP~S zrM?`{Vth?=eh8kF(Tjx0Nq9jHo#0yC)%Na=?+?iPsX>z~lvUq@@wQ&?cl|V8pJrR* zhuWDJz9#Ns$zg)r2{p6S9-f60@n!nN^~+i)L%n%OlgPaPtPs$0uyNEnt*PArUJEwd z$lk<>t^#aan%-#KEp}0#F7LH#Us>0^=}{HoN%f1h31r=BmnIT+jY?+LQh@I`|NsOPL%A3FP?>n>D|*WwJ{hfnLRj!|fc z}m_agly-1ug+f&i+>WMURN4(1f_;? z-)85tiHKm8#A2eOBfN~Df2X=J3A7biUjM9&Xq@OKqYSWTcWvor(z_J-m+pfa)USLJ? zlHBh>jw)D(k)ObGsR}9EtS}h3O_7I-KQ7oI59L6*h90#&sAfX=gW2lEUP9p zIp?0&L|A|#vd?&Z81kSzGn%vZA~RDu?r zcgoAUJAw-`(l03sbVhON<6L9wa06-86#T9O5EnBdO)Q9dCwvYjV-En<7Vq?aNEEIw z*l&iO*0q>p)#8>OWBVaJ)0PGnWyT$+jZxqz!N^p@~_^D6RtiT?Tup|m^&V-S9S zxNRC%`9OqH`s{lhI6;@hhfgjQ=b2S$HMd$ieBK=iA5oH2>3~kdG0q@*XmE$$Qm{E^ zFv*=a&l023DF;=%I_uL(vCz@W>gHok{Hm5u_x1%!vGvJ$vxF?7YTRmGCoY$F)*`FY zH_{a<)!-!7rC*vjC_s#CcxuEXGED{Yvn#wrq^5GlTVTc=q@*KB^why|4_UMrTD*GZ zqoe@Pf4ZdL_i>KE{giX1)5t}uvXZrVg*}7f!Y<;gqwm*s%P1atspRM0ap3oy^D6y* zA8obn3Mj`)+Y%pL-*GDjhH;B1fWw8%65=WY!R?p8O@V+RvN!BUzY49amw;R~tFLiQ zpA)UhbeYcjoyj-7-p0L(dw;b$B1<%ol_fLwhLpI((vB|Pw(fZqyaZ|9>2J`^ASijA za}N`>bViu8^jI>r@Sa{F_hV(wHAoq6p+4gmEz-lYVG znNA=WoFh^8yR&2pfzlYdM^h@}A0I_uOFVX%_n^u5k$+QpRGh!fNkHzOHK*2vJ7(v; z6_D)!ow{jB-o@Ko!oO24&N8a-;EarDE_Ij6!^t>{$i5URRx*l<$abP7xPLbE#$TsO z)Z3N0i)CKpc*$f2!Fu3CZkh(hn6S~G#{ZQtR-uQ+cWqdc__g0^wwEP3a(8K6Tt`FB zT>=EmZ1_1rxc03En?kJ|ak3yz57*H22;m2hfG$vylY$!9^8O#?s?)vt2-e9Vh5~k+ zz9%+<6J*O?wIZ_iDe6&6T?#GcFw%@7q*T>^-K)~@wK8vx z*4kbR*?;#JlJIw9ogHBq5Zz%soO{U*PI@DQgfo|HtCJU(6?5A^yWUoGMdW4@zP`Vb zELQWIvWNP9DaJZhDC$VAmB5K#DtfrW#r!#4mD~KZ=W$N@dw6EHfc}0;`Cvko!rM-o zc=53N&kmo>?ZeKe`F`Apit$+hDCAFykNitzzXH6RZ2$o^+u$wXSzGa9$D~>Hxp(=| z-nw+8RhEwQs>v{sbU9jD z3eD|bB0M*l=FxDxS5{SuF}NSE89Tx1Oz?O)dpapcMUt7G#NaP3f*vnKkl}IRds(_C zQ~kG}aDodie1ithkTVv{C|zkStReNv;Z@C&cm&DDDR(F`d05XguFr(hy(Xw9RL z@TY|3{&UuY5H$F!QAVr_g$`E=u>?QG7apZr{6lVz@dsZ9GyO;X-59NP({E8Nd+k#` zBm>QQ;jaweq)Dxza)@?khU*1`_)3RoZ|P$Y8W(TBd{dzEdZtNdcCoSh!R|Xz&q9)i zUi+_sJ9s1)WA_6w-n2Zi@mgwXsE4Z|Q@f2aLngS0>Lwzb7jpQfrEmpM$`OP{%w;i>(l1Oe|iPbFIe2-Cc1c=Q7T_%8bds{NfVhBV8I%%9Z;z3 zq>fnTK3o#Jg6lb60`Rno(NYxB3X8eadjw=d}N(xCsR%-TYsbE$K`a|hBEQ7 zpOkkjcB}f3K-LzNUwR(y2Btba>`q~=l+wd0@`j<4b`oZVxz7;6+yagi(zmvYV)7cu zKS{sA)URP>-T)j*F{R-Kq%u=i<4f7-o$R5vl*6+>npe(YD#O;eR^)Z zl(uEE5x08VZA#WVsBW)7$=P$d(%j7-e-)_M&2-fE?SD+TYh;_O>@i*u75D$)awwFQ&Ibb&XKum5UV-KiEpjYw0^_I9|w1W@?|r^1}XPmmn5ujtg~s$ z1v3#RQ^W4{%}Ez*&@kQRGW8*QK8V)%>`uEvi4lh;pqe%*$Zy$4iA1Ttp zsaWiO_fx>;jw_&0GmmQAF)Da)){E8$`az7O@ut+eDLYyqkjrM}urUkT_1-w>FVc?$ zDIFil4u5)oku!W}g`b((n|OH1{{5%A#uFhYXWuNA_I82qKyqyHSk%X87p*Umv-Rx+ z*&pxEazr)$k%TlUR9mGk)>2nTG;o*SfICfJBnQh58wuX>sO)K0z5h8Fw($KQc zI9q(QUwy?VBI(nwgq0OM^*hK}xT&DS?l=zX93_1H_!8eF%sIXI~2$Wx?xE# z5v1MCbloN)k*Zks0W9DM@Pg#M)j>Hzo+?1b0#%X{kaH;tmkVI=BxN`)L5mk^H3VO( zQK5~@h{ao4JMMWj&Bb^k{MM8^MdHx-q0w>i?%lT^aa@o8r zqI3GuaOLoEXb)EzjZ=JJGKiuIBQ1X8_Q!MN+o&_ zfs5XMaW~~3_u^m`QRctCZ4p@av9%gR@@x5ab&{Mg`OiU1?^Q-IL7#de=()<|1DNo- z=zoHcZUIZ<1nA#M2FvjKxQ$EH`TC5KzVtf^M_p?fS3hh0n9Xh7{3znfz>Al(>$0n8 zOY}=Y3w6BuN{C$YFJrZ|J`H5$G7I~+GkKNo-eZ|y__vWz1bzDpEY69-vMBJ<>PP!T z{4>yYyH^5sThs6gge0?k5UIhywF~<0OEFq@YS^jEElEF7zTEVeY6)_`yAK-P&L1~7 z8rlh}@@$S&mTq?81>RktGi$s3F#0mpu}L?m!X~f8uR42>7}w%LWN-6vHvg_hrcfWn z`S5g-wh}z9(IGcXE3jJdA!8;`uLpsovoQSETCGR2nUHf+C~RJNv`~bmZ(E5yh18&H zpOm3fK+$^HVT+h+(@|-XN$d9r{q8+^fx^Ia6WD+{Ol3dPi-KO5307GUN5ogm9&Cdu zx8O;6BxogSCdcQ*z)HsNIHRi^dF`g1WH^wASh7so^~0m^-hB8`gjN~k)$SmL!Hl}O zzF9f?jSHb@j0Dp68(TLt1|^}BbZzDxhsY7sS~^*4UMcPVIq0M z`w!3TtrFyKtDLjX*X-VIxQ3Ir>!N-YO5mc_m)TQ!oTvMf%>!aB3VSeycic2mW@f!i z;2MoG^5-UVNLr`5fh^0}W6nstf=86;)G3nRxb?CKRn<9?5*lLwtS)4|>s0q4vH-`B zJ?v6SmOuH_eZmdCU9{!p3@d^m8*Hq03N4OTxfF_lstE}6mL9WxFb;b&WMs#CdIe4z zojp$?(W-M$$UviMqLV6b)YahD%@TiR;xMfexnRPOa=btCKtXMxOc8VmmK!#E$3c@DJq3Md1qlvvG$ix!rX5@Zw z4=cb{9`k8#mc&7<#D}a|vfmBfhm3lYZP6*^I8;>pGJsAAwxw@a6IW86;rEknT>Oc( zUlVev&%W#R7OXG64!NTSIy(=Ynld>A@*6}TvBcuPoHw?J7`@c<-VKO>szj*gZ$m`5 zu;Fbg&f%gHBKWeCH$BSZ+?%Od{i0XLU1E})k$#n)Ds(~|$R_<_>oadU++@U4fs8FT z32<9~-K}Ef^jq>z$qY!`F;?cg8NE9q1lJC@i4MH@dlxhQUil^eJCN7``v1&mqqNok zjfAI!bzf==3VXr9z-01#5X;Gcv66}IQ_Eu^X*$a*WKt2+2{FVklch^;icmE}Ijpak zSKw_;Z5G@klsLhaeI{2GXX<(@Y!H3Wr5R(T@81Qkpcug@^oe-ZmJ$=(qNg6R{#`OD zc!<)%Ax2`uYylf{khXFde=G|ogTs#t)|XM7r#0lO7GKfw7iG3?1Uk`-WGl3TYCcz zd!|6U-E;s$&vo-#EA&@zbAnkf-DX>yV6Z}1Sx;N~)tWX`e_vbR?nJ|*uZlHiupgE2 z0xwiv4*rL>OHd(`GoOzgmQb8Psi?M4k9pJU=t^Vo+>DFca_LXk>59h^Coi^Bk|cH@ z!$vWB5JOR+u?#kRJ2(8BvKbODt#V}X5sQQuAE7;E;RcZyA*l#mN(Ejt2n6z|*wwgQ zTxtB-vT9$(qcPlUb=r{Wls)(;VlAwE%(DwMi5A#_IvuN9zgS0Gx(uuo>FW$Gd~|G4 ztMyVAt^#479Jt!#CB@Z7?2%Xn){L++12`My4)4Vh#gmPtCw-8TvFEkQmInZV|uW_k2p(R!Mb zkJ z@CiW6CNc2L`D4ztMB`edIr?!@%IV~&XiRcoQ9W04wjn$0M~bmgVB5Sv$u)csghD=E zjwI}E+YvrKOgWq@Qtm3cToyOX)|!N58fi59(`dFZ=Gty}AJOtDp_?qpu7Fg+0@glu z+xW@g>@-1+w@wU<;127PX;&=cI-m!1H%dtz09pl&z~p3N z1~lvKS{IaFLKxbaRMG+2{{FB-IKg_Ko0MhG>jIV^ZgAdgW%fUpmzSZKtv%85#7J6P z;g_{~G_bs|x`C3}#oKV-u(bmfI$_Ku!33#u)P4JRSd`Nn8h3Lou*t!_;D!qLbiKNa z%;rBBtNuK+DzzhVP7Wf}7w96R$&n28A-EQqUfr4QylLi6X)9yb$I#i(L-1)}N%r?b z{p|I^NywFcNc)@9G@&nUms}W3hwBJRZeUwJF7V z&c~x^7;{$VaRMDPIaZNRP#oboh0aw%U+zwD)^OflolTnK`!xyWewxUIzN)7WNg*E*JiY#J&?*xUIhE2P_PT?;0vAGZjC zs>;e!KmJw~feD>3@VG$nl*<)QqvW}$6Q=0TxSjGUFDR7EI~r(N^kh0)X*OcIPvm*n z+v{`aImHdhyr}6}I5@saGr=I)1-qE8l%#LA6joYTEp#t0@T65cp;S2YRt82SCsL^#x~#wrkKAJ?@U|- z;KByr^p-8Yh&wnU+YXd6_1bJjn0@~W9T%-%p*3Z+p zb$Tu%5GC@>=CWGX60S)p#nA%ZWwlCrkWk7A&}it*l)l|hl|pF&QU+eu0R1nK0f?pn z7IgmXZP@BR=8MOb;!HrKFb~b)orWtU{rA-Cv!z%pUIo=N*>bMsE``;G|Kf&X|=Kkuq-_x#O zo-6gsdDL0Y)QfwZVyT}=Hz{(GCNO_VE`W0Tcs*k_u-)gyeBme$U~>ni!is9Ss6QB? zYT{!5dBh z^o^KwR~gu6Q>HNpkc3r!*g<*AgKLTIX#k8Zh>9Y|A9gTs9^u7b*l@OUAD^)f{GsmK zCWg>h4ebfE(|xZFFa2)YHE&!z-GS1!fb)`%3Db>mL`+5_qkqQo6s0FwnYYRvCOr(~ z)#pf%R;!|MTRDc}4z1c&ur!SC{sb`-!4^PV!fxUo*2X$>IBE z8$BjJr(7u3PV&`naerlpPL~9Ei+bx_55tuXnU*6o=^E zp(H#Ktk$&<3HRO+d!qIYt$8t&Tn|bhpuRkbFw0`Ht!#IY`T;O3{3u+NiPFe^kZeow z%&io*j!ml?P5Z$mL85wNYlNd2MBa-ml7RRyS<^q1c`Kn*)y{=axiAxQNF~vt8{cNj z{}wPMzE=}poZ(2ljt@|oc&`yifHrcOe3DK&>n&UfVO0JT zG6On{-BKoBVkcJ^q_VHZ4gSZHQJt-6B&Qev23Bghtkr6Sy+P6--xb)z;v^lHag#m2 zS+91~heT+$Af%p_u#Jv3@8l_)CbQK~obeKf6$Rjx=1Chkj%;8Yn*j*ItB>rja>d5} zWrv}3cO5;PwFgM>e~1(b0|-t((5V`BT3N<$@*;7-TWpkJMpF_SYM2*T!4dr6g=wh; z7_b3+5VO6y<5bmP^@=xZtZuhB@{1Lm>M)FGXpMtMPoPse3Jm#wx?p zi2zqDT(0d{y=DdDYLc?Qp3}-|ei!+H zzt#HO{{KNm_kU1vvoO2(f1qOi`e2El>zv*>MhA(34fR%!G4F-iKI+ibW5gfp`xF<0 zfYiT>Y}bvt;AI(_r2PAQ=ZyS(TOG~uF;+yA_T}uwE?Ff(O#_aK zmTo^_;T3f*c&V#){bN;+focZd;;uQ-U7*ZAZ-r^oHjk4Z7F2KrT!6;nMSQPo5D%5+1WyW>or%yY~vW)lqzA5gW(T!rI zj%<`{bu~{zXae#6l#8!_^-t*$`*kw+y{;!sS;du<#7}$ujV2{^@yV6Q;mw?b0`f-A z>SEba34`$SU$m-4EQ{HiDC%*>GwL1}JhzM9%dpmpqQ0rM%WAUImNN5F;b-fyU+#3? zcVh90=-eL`<#w|%P}Dxs`00JzxWxdnR$0oMO)#$VR_JVGJWfqaVO$c_Bx(ZLtcyt(1-*5DQb9lN4QHGd=^?};x+R*}t z_^u=LBc0ter0Z|BjHWrcIaaLA1w_6F$OaiX(_o1 zMrlUS1(D*hyReY|7U=)#T2(^8WgCs?I9H(X$Dk>Q_SS)e*P##ro*ir-YEIjGU+A_w zA^IB;3nMBW{GJZqb1;zE6M(bP>Y0h^_iz!*dG!B44`6*OxSZb5{!`Ns-~a&ovq}I$ zvxbiePfx~Sau>B-P~bUX3(mcnM+tR!2TE`AwPs?N z0f}^Pz+4MF0WRG&w$*!{B>+ZFGG?bmu(dw;b7$O5F=}y-l4C2GJQzsrL?6JqeSZth z-;@}k#R=!^&cv1tYtP?X5cR(%Z@S)US!%O@7C7v zr)z91NL}{Sj&)5SdNxvY)W;H29m1e~H|z{AH#PskkL{=$vtM6u4e z@+@-0YvK+ZL~cZV5-^VW`%b~Z{AU+-)9&4EGzARhKE<4rM(s-k!6W;j=6+R` zL`}75#XM3&OGTM4O6u*?1f6i}Q$#I)WE=?U<)~feHSEdlaTDfi+MRz~o zb0`Lux|i^MU#}NPd6Dg+_Z!%AlB$JsNGx4+hjm2>7aRzUh)cUZA^8mde6Rv9_KgiF!gJm#dUT6OYuz;kX5N%TVc)w>emnYY_a zcR^#qj+yUiT!xt86(Sttvr<8El0i0iqGWN4fJjiDmD`#Ik3aNUh9B37AT@hHie1%5YMZB7Yvgnk*l%u!<41YJ#+Txr0xi~t3MZfux{ zYvtIB$sVj>7B%m&=c2-?pXG934FeS_a^7e}Jzt~@hxCGVeu9Dw1JuQrngPi_yam`0 zZNQbdN2;sXxik#Ffex?&ZGKBfG}8cW<}*eUr^p;;_@)%3%5LeNg=_D-7YLB~sB{_dhX>MUqnJx;)B@MB_; zfU^%N*V{fv;kb_4s4sS-J+Fji5s7o*G45ZEyC?iL<85pY-ge!#|Bf=pDqMa2`d|W5 z#bd*625qItY$JlyIA7jPV(|-VTgvSSK^k$2)hB1vKEqZN{nQ4Vx@lcpd3AeS=(Gmr zaRZ$*K1vidn|s}%ZRmZ4PfJF(VVv__2xf2krRu}ati4!)it)Bz#CgfeweL*j3wcfJ z_j9-9^6YoWXA0yldlsQ7lpifEU(6nC#$!#saOEkrY$PgExb?Bhc*}50?{011N)OZy zWxc;}>8sN?w#sI`B(eK+Kh6D41of6%+A9jI0!@bt*KbJ+MZjf^Y1yhDobA_KQU4@Y z8UxK=D$TEWx}`&q$K4&_3FJDqNFKUQJ?3_O9BLW#+TWcis#S3uVHjOc(py+AFYO2S zD)S=+=HhMFx2XK6mtU^g(W$NXlwUt0d0~;}qM)Mq)-Wj`QBHDMql(iMBDR;G-NH6i zw58xBLFPD6Y{NW;*I}NVRJZtIa5#LYW*+^W(0r`X1={g~m+r*=N%v-z?9=w&&afDp z==#M`(&kk>fg^OJ5CrKy7Ef2=)Z7m0{nd)_HrZc4pKMQi`Z_4Q&mJw#+H+AW-rWQK z>T=6RiWcDHp26ybPx(gOoh4di)13^$QHug}qB(S6xE(tU)+De;**JMt;nR1;fktWM z$5?0G$zG^76YN;R)Y29MZOuWQ9AamtpZBXhtFIY&Z)E_u%wt>FYn(ipl**Ywk~xc# z09#wzuy2jokMM0^@m)l7VswY$dsFzmuSASTGcW|MQ>a=OC>-nE1UZ_UCTf>3oWedg zzjfvjy(y)Z!byWtcO@Oq_3K9NKP^hCAKQpTCVRsw;*Ml`B0%Yox6|ZcDWW;@O`}y>fs?1j3jwcj=gt0eTs=(T`M#4| z_hDAj^hD#PTZ!gE+Z2mONjfUJ@Oe)Mm?|i(LZhj3Yo}roVua!uVDBO}?&0qym7^xc zCs#z)PH2QKJY{?pJ8Gi^|j7-zvHQ8X1=9B2!PoO4d? z-d2^2)Ch^NP1ZdEZ50Tkg$)o)L*U;ma4XCdr`m^LlL@S+;%HY&dSC-;V zbdgB>=%ZT7h+y*JSstZae1WSG$*^F9l`zzkyL`+hK)1w<-b_2s?pZ_Xl4P~J>0Zb0 zOxKutvUkPd<9?}UesQm5<01E5Vw#t30qdtwQ|*4o74^OfM!rM8hEAacJC0U_ylaVt zYb-K>(5BStgA6Hl4;FgENxwr>vpk+Hou6fk0OjAx;OS*oSt`*e4d#|-r)<5E`6-TK zrn*C)%JP^5v)jb7)ZdRcX`IJ%iyb~ZOPOI~X_2RuU((g@1!|MGsv+fTvFU+V<4YB3 zjjpNJkFFX6Kknbv>!w%G;}vZU`f;1sx8$LwH!^#yB8-{Y=16_oOFD}7^pMh(+e>j; zTKKlTwLcRj5@{?P8oI`6V|kF*;rP9j${f?dzA+EHU=CK4({oF!zQx+Nfa+(JU>Z;8 zmQ;7<>x=lNMmqH6zg||)ji@u`pe+Rzm+Us}`24JjzvsnUT%T(7D3puxM}mQMD8f<^ zOVq9V%_hgUFVs6f<3g1yyV(n1Mou^awffU4h*I6PYnc3fDmX8g5ci(8|^7EH37;^PY}o! z-4ggD@!d6g4Te%kdenO4jtItxYz>#DGMn9351ntu>TAdz!*v<1;x*LSHv@pT3n1^E zvqNcF~Uu{AH_B}vc>LyCJu1os0t0(}^n@)TN(gJFSKqxc{1!QT_} zbD}Vga69^*HD9V0r|BXRwyy?4%8s#Bzez5Xw)Y2)cwt(7+7dL z47g^nU(TNx#8Y-9iHM}O(-Z>vvnP3A;dRAM1=}W2OcFqMe^Ad{#e(Oz(ALm1;0vU$ zJfuD@L0x_JA@i*zXJw16CJqVuKol^$NxP5@2kgLQO0>JW-7o`qm!KI|5blZX>^Hf& z3{f7EN@!(DDnE_QU+JwCUK7KzSWRWvI~)bBfqt%^3SK{krO_JRNnZ_{s2;O_H6Y-W z))T;7;LoeX_x>!Iq&!^h3C#gsnwjRt^)do7#x06&xpd^o-q#p7oXkJykS+K8b-lfz zW*Ymm$0g9^7xnP;7T8*5rJ* zu3Q5rHm>*DgjtU}){?r#D>3|uJ`Sq39IiaRqDu!;U6e%PBgfE##h$LkvY)5f=Zv8K zie@(M{J~3e8Vw&4G{3Crpg5myGVr+QdM9RLZ&qAo6DOrJ_w72<{qW_ti^m6qkR#jf zDKC;y&9M|eIfK&d^h}cG?a<|z&@_0TuZ=A_HW-HSjkZ~ycX~P=A@x&<`ZK*&RhJBNHa814zo97RxRsy1&2wwzQh|`+$1h`{6TNF1%4l z#x{m-17rJ!n*t*4t6j({neX#sQD+KQ?aZbJ_TO>LhJYW;yimMxGF&P;mw)KfF+K?kqZ!c7qO)+J&RyYlcuD^(QT2-{7Q)m3aSbPpunkP9f{|(+5zv92!pdo0poNHwX&%oj$I-x zg1%Ow=ZbVw_|@LU#qRncrd`4vk7?ZA4N|E!16KU?!l?e+lJbc zW|$M%Lglf1#lIu;SpMvyk8}O`y))=wx|BeY8U`L_sZ6i@VPD z*dH}IwnsK_1FGhB2*$Bh=V(SdXlDvp*%2;*F93Irk83hx=f<`;P864?O;sHlntVj_ z?=w?*ZXgxomXeYPvizi)aaE%pLey4=glD5Q`6(%YA5f%rW_5bOVqM9UV;d(#ToXNj zDL0cMz;TFFA0U`kJz5#A)p|D=UMM?QOrNGX`z=lk;I%N|2OAP-eYmG*G7OB@&*vLa z=?u%$#fk~908{R6ZFs#fQf=B;!Tx4zV+5UioB9Ut)@OfxhoX z4-muoR;9R;lixJbcKlbIUbV!$@}F|^e0XfX{ofG3219;U$Y3Dqj&P3NNARsFf8bEN zrXD8)=683!QcKm{q#jU7+xF9!%~?nGXv@dLiKPc9@#jI0*Y^hs_S}gl(BRkVk>;h3 zgBU2cAj<<^%||>Zb-AQ3f0~(Ddp?XGe+Yp!U19X-); zKNVgAuhcmoP8Gq4RHuIYlv@5x*^}#6{brV#xy&I;ith8LKB2hJMkZz>)==$5PxVg| z^>sc3g7zp&;;M!QB|?Xo^{JlmhaVSt78jPLmyx%m-MJ-_GJWL|99uTh7e|VJB$TB}OVmPka7>lYO{yVig7VPpH-3>pzMYootfJ2*PfcbFP=jZ6}7_SE* zDUv^`!{;F=qQv!hsf+`^|8S!sR6>TeO!l-fc|`=vcvt_PbUI1wks;rNeZIEW|C9a1 z2YSJ8HN#f zd*I4Abx@2@ykeR-|EywT3ztfA1G#-J?#(4RVcu7rpKhyHA)M79BAb3xFZj?Y-P?rt zixbA;{HYNCEv1N$UaX+`L$oa{C1|haj|b^m#D{(C26DI)mdRBj|55WCZ;f)%<&t+1 zzSyR7i_4|8p@-99qatOs(Xen$a|je`7~lc zZztb&B6)wIVo4lU*pGV)z)ewvuCGhFbL>U|B-HqMm+NT2cY@DF%ad+#WY89n#%h(jc8fcXvv6T|D1+?sNXW|KGLuUTKl(lF1I;0!=s!z&xvh!#!IK^02XN z_PIGX0MSt?7$TouFhf9u6x8Df0?qR3Ar4w>9@Z%X`4k7|Iy%fUG?rdpKMBq?HXMjL zWdM!tjkWs3A>AQFqM0#jZq-Bpwn4kP#Lf-ObcyQwWh9=UbP2H-mr8lf-?$T+{(%{& zG;*i+8<*r#cwpoEvh1x7ZQzkiE+Tgt@-VFCz?+hX<6#ymn2|ldjT}T@{qi}!nWg_j zuC0^)yV85|6oU``S4;i_+wSGoRJ|z^dhP$7g}00KIfg};$&RZ~=g+_E1S@OO>M9>2(d?}HmWEacHU;tSgHCI=SFH4!Y`xbD`G)J~LljbG zRd=ga7YzG-KJTZ^te%-uT+cMzyoMXIvcnsr<6vttrVsY+Q4AZ4Rf{f2;A~H! zEEvcA?nBL;A`>}T5&I%ET)SIK(h;cn&Xo`o#g=Vn(MEgSY6j|T%YIs1yKNPy9pU<3 zSzso=6Su86uT4pg2xgGDMkQgI>rwBpsq6f`aWVdw9TP22Fa&&?J-1c*&d{DmZ(bB?GA3#2}N)8Vy$(Kni- z8&h>%=+S(Wo)Tt=TU310E=7Ce4J1sbV<@cKhsmq3CI}yTr@_m2y3;$jmh(logn++U zgc{Okq0KS0wAN>twLo7>+)yk!FX2=a8~An8@1sT3@c@Z~s`+I^IQHw*7#WEMBwH!6 zY)3-O{()aS#-W}7gF74KW+k;h#OebqXT}_HfIlz$5LK@wAfVOlnT-+>-iq~ZeszI@ z&m4CBsOI4*jHN0&bUzbzOp=Xh9oe9lS!9UF_Dye~;sEAYNVfw%i$PUs%(7%(24^azAZCqYb8kHidkeR49xH?=T%EGR3l9(ixl z0rHFn>JoZKICJU7w~}OfMssX?R41(MoFWvTQ+bxmarnuE(W7nQ?77X#a60+D`6!yD z6uSo~E72&2>YyC1V|xJMRP?dO*tPL%IaGkhw1|3TQ|LnsF ztPVw(kr!GrvP~yJI0=#5*j9Kx!&Q?SddPasD+L$o7bCGUFa;0Pn5|^Yu|Ox2%9?{@ zdt(CBE>wzs_6l;%t%Nk}57&=*AbjJ@|EPlX^6eF}U&$mQO7#bhPcGBVL1dfs0mhB; z;!|g{WSV5qN+s|?#~3z)Dviu)n0+FgT<4<6=vbxE*pk`hGMirc?r-JpQ~t^ie!ktWVn}@$_S_GR`t|D}j-ynt zUqD8IAK!EfcG#j@wwi;H7|9JXGY&$tj=EvBiSGx^dske3xIw~NCwdYCV`s4!fhQMcMfxiUN=t1;FqHL|$j57+Z{RI@{b<=XVj!N4xL z^S%ljT2$S3$Aq3;k;|YG2BFZRZ>$djfI*GPvmQcONH+JN&Ryu&ks> zxgHimT)UT5yQs;Vn2tJS^*LD-; zod(2rxV9u5i82QaXHG40hRb>=DRfu#fTer~9~~qj)>?-B#>YFrSAp~>7R^tq9y&T6 zI!ZbFC;;CB+Z`zhZlO}5A(`qD!!ttbQUHT}0$}*b$w^$vU%)G4kLDMDzC8h>qyd|9 zJ2eHD46%|{9BVGE!GT(E+DV?bCyV|!&pQRO!zn5NL9WY_{FyanZmdg`9&D^V0^XWw zC15i0tI}QCxz|+};>;y&6l^OyXBL)XYTml`l2$1fp!7X&?m_r|rYPkgI&cYYG%d_{ z5}63dA)s5?{&ax~$>|16z@5B_hdG&!Zdc`CgOo`HG7qj;$W+KZw$9WlNJ$3Yr@v-b zAWS;z;OUQJx`y3Iu)+oaB5!aOUf=MEpm(_}OI>ix&&!`zVi>t6y|S7Vb9qTP^s=u{ zRmV`oi;n$IRIuMQWzHnTPPq`;!bhZba$yQWE@6OYm2dZ z3P+6<8V6Q7At8x&up`*IAjA&Q?%I{3oZ0l^u+A7y5-FX~kdT$Dd&Gsj*E4R=liRo2 zdo<`J-k(9$n)<&7yvsjaIC(kH_WUo8XOM{KH5ZZ;xw+czI}Ly9>Sa;6Fi-x|qrISR zB+y0Q$hJjw{OrdaBT0U1tLu6E)6~wR6u(gAdySSPT@>8Ky`k2&6T|7{s7mS6W%Q1P zAdk?h4brW#>z&qu52?70m5IL0{oJ$byVCC{`p=!Ub5OtQp0rIO4Lvv|Y6r}oHJs!h zdm{i}o%?UGl6Mcr8dn+{I83h_QBAa-POKKbMsgon$}S4l2aiTJiiF&< zuINUi+QIahZKadRqAw3>OV052mL5m%-;a;U)i?)j+j21+z`*|(7|=$_gq zhnAUL62ajMzDe8(BRP$ma>mp5bO$HwOXDZzi517Re+R9o@3r$)(oUXSinvQc`)Bs2 z5S$TLUOu{E6g*J5Svq*x1#XD9^j7HbubQ`-jWt;<9;K#plDv1QrzX*^;PmFqC+Pn$ zbKmyou5#XxyDcL|34egVdlL%JfgM|oEUzUnB~;`7H|QD3eh}9Six&pd^nuS0%{Xzh zjLs?5%nl}MLdrI|MaixQnk?rG4I#?RP^VQ7PMF{f02QB+#%#Xp?ArgZAqb2&rc4m1 z1;0}?d}v})c>?w!eR0S4YRZx`088aTqia(n22RS`X=YY^(iUo^Oh*0^=g0t%U8JJG zdFpxgxfr>svaseK@rnZ9!(am%3>{$zwdd>JX^<;Yc2fU#f#WfDir*7C=~zIEHuik> z6vMTF$sxhPyQ0a-hKnRU6(}c#MP~wbo)}H-W%??$Q5u*QUMmp#0>$G6%0Vmin{X->ui1A|cw}*?7yd54g z%UmLM;R`)%&I0|q??~iEPKh-IFYoL43oyW5{=$JC%wI>ji3B5Ri?4!3MrUu{$LQvX znaD%oiO+|5J2#NY!(0fnsR7Odzps{ryh)U~^Vf_igVZ!cQAc7dFxn{5s2q~=Cbp;` zWTyqFX#i=oWU@ku^>NPis3V)0fvN}_fRu@@zCWZ|i@v`SwJcWyTBl#77m+pv&Jey? zWUm|ua78!gtx*suqn`ZKT#&qahND8#!G&yw{NuQL~<5HR+J-1 zwd$$A_@x>Jo;R@+PW*N^GF25G%J26QI{@07KIi9-?7AH4n|BPtS~e2!L3!b802!2f z!R{KyfIFosfB(|fJrMriA3N)|)9c^Q?zMKs^uL;$eJP@w-83R4qE|_FvKWb zyJm1KiqanoA(5u~mbM+%(9CUFCQaz0ZgcEuBtKVgm`T?xi~@W)J2?XQ^=(%)cStgl zT{BkiFwB8tIqT*}Wfv^3JGzFJJXJP)EBEq^`^1?<=2DFW_+|Et^VI1 zk6LQHSoA-QPq>!qxQxf7a6)wjDJEl%E?VW_uhF?-o z|GMaDwM+b-POv%>YFB;B#2gYH-OSZjA6G8D=W9Vol$C2Tp&w?~IF+Q(%?2EjvKsXytq*D<4Rq>V-RGg4~qT z#5iUhkX({Zizj<-YMf2izxdER9EWnDSIWdO-8+rL>HGr-uT7z^*wIYMwVhlOH`{j< z!pwyC1LV*>K*!wy8*eDbzmqY;Zba4kim{h87uaUmO5DDQjx`p%J6H6c1)6&+| zjJmRhVFt=q-FIv*sOiX9@AvbHU3I*Brl-FaAl|nm%YxC^95Mg!fGwp7$1|_Bf=*Hi zj0<1n>-SN@pz2JtSeu`x^e`736K;mN(?Iwby3d^BCtxg9wP9{ZrWk?5+W8);%NDwa zrt~GwnDW=nt<;(e(X${$`l_Tt1_+^5Tw}^@D^II0U3;LFpshkk_^!r-ov*~j=h$;b zMS1;1z(%M+VnUoF*cu zr8}U@x~9kuo;Bo-bjO!TYFEFv7rHF(Z*(4>%}09-;q)3(iIH0xNIW11vPJWvvzJ-KK~<4vw`L?82%esYckLR&gGl6t!*S!o7WreWNX#K4-PaYX z0EUZ%q3*xVsO(KYF7O_OZNOA9*N&<4oLVxCVYd+Je>Zz?bs3%j+wrUiY7cZ2;kbjh zj!5nfo47^7oCYEPWvT#m>f*U(kkqvi$U!Y7PU{g5@vmIi z=|jeiaAHF3BK2Bp@4lD`rXB_rRJ(gOA>=NH{(iRP;Ffj0T&p-CEl+0_fXrLbuqGUu zAh%lyi^Xw#Egv(GEzZe~P9?SPTEg#8d)x1wY@Z#ob4i5C3g~mE22d*eN{=#GVU=7j zrL+RGB+*^IsS;6K z`cXb2e>y2$4#W{lO_pcEbiMj*4Bi!Ae}S~%EQV&mF8Plns=3JUjk1eb6R5SRo^i!v zN#yg2<5F!lEBUMwm1{Taol1|8L%C*#X9A2Vq2FY~&00bbUFpMuLAa1;JcdGgQhsYr z`9}`Z19o>*lKisP9d=!m#!G!V>o7TrU5?>m8SN}n;qq{kPqVoZQE)l2yMkVfnRv|Z zDoKAnCym!FC9^Glkh>V%lfCq*^>L+<<7IaZ!g?V7Xu;O>1s7TrbGFdeQ+G7}bIjl9?tq~_pB_Oemp zHe9l*p4Y=KLURR6gMESq%B5Zu{q1(V(zU;QM$jU*ovW?zb3)9SP-L~dul_OF0ePi9)^B{e#o9j5DXZL z1|hp3%Oh_hy)6*LU)I=*m2^*)OSuvh698A40ai5O(19A@dgzu0q}{U$pF9N;!KZ#! zEE#lg3zq>`%Dmt0K9iJDihDpt7#HXK*(6R$+8}c;|WJ<;{u31u^`-)a>1>OcTk zYIT9087rA3#WF>f3D*-Gt0I}e%TXGR#DD+Zw0phUmbCA_^ZGPXlHqUuI>yA6()yD2d_1y*UzK;Y|toaSXP?3Fr_$V3arWg4PI+J z__YwEw`XWZ{E!cxTM>%QF#CZniQP`mK7;5GVXkX#@(iAR?gCgF zgm_H(miUt0Hk^LZydnG;!Sv4dzP^{{uejs*$GoWR^H1(M=v_YV;|$+Nh3g$&lKM{B z`7t0lgBHU)<_Z!?GSW^ZE_@olaKixW4O}9Gn}AZEn0&|_E?3W6Qb=xk$1M#C8X5_X zy!qtGhO{gAXW}ce^lDZmuUjs8`i{m>vK44h zt$*Z7R~>v<2i%dH&9WDER+?Xq&|g()l6GQxd+d(FT*v@08TPf{aCvvVNV>4OSNj2~ z5+cX~NYW8mWLUkqMnFpFFle!V)Z_ITjmQ~D0A$7t;)xrmZTb+<35+AUc!~TCvwm(K zM@Khxg&d6~S1XCq6u0((MwvDa3;4Lcv$LR*fm)9eLJlxp!@ui1r9JJWI497__60~) z)r`1*^H-DM{Ea26$6e0V*@fY*ZQ2j;0o2fJ<%t8AcE z4Lc^l>0}7{5M>P^8=o^$PTdps)(5=`I$BB9B|;%SxYJnX7uKx7EkioUU-*JEkZFpz zbQU6=Jt-7_3d`bwOZo!ZxW`k#CbA2z11T!tyv(rLHm>*8VReuz1^|L~nw=?J4A?=J zcdv{y4I&&;fgJ)vuJy;qSBJQOn8Q2QswbpE4#E~)6QY4F@>cVrAfg1ZgfkGc#<{d} zB0ZAM!ekxDbo9#}HiURZ@zf5pkCsq-A)J{^r#kX>x=M7>ldThoOn|T~57~6Hu#`k9 zK%;!3B3~EBIgLw%`@o^%b2pfe#*B5K91Z>UC}cX6P{P5T2V!=b-17HH@VsB`=tU43 zi>bWjgGQ39CI^_GZTNa+m+++{w9^3VLVXpLuVMLI*{`jQh<{+2MfYw>`PIl|1kmRrywp%pE(CIyh&4* za^{~_mqji%)m|NjhCLYmvXs?v@-a%LKG}3h>#;pLdY3Y+)j<1tW=m`Zi9uaket-W^=+S_U@q}C7J)Jyh z*t8;&lFAaZM0hl-!RNKC{_!rAx!EOwui3`Y#;qrE6C;B5QZ%6RTS?GAl#Z=jKi1rOb9o9VQ<9Eyq zG}B9^gE$HdQOG_!-cFTXYv!_tG^m7}o6)*sWUrTKnr?@h3H?D-BYN4F^uAaaD}T<$ zd>&?~ZerxxoFJ`Pm|xCqn@}HWunxqY`>q<-VOsK7J<9MXJK^%YG`^42*Q|BP{pY(C zTwDHVG5by{H|6KUiv*kciK(aj48$bV9bC@QQ!7K7o96{tGyar_RT)Y#S@_-A${68a z`y5)8oFhcj?~F|tnyq;qMguof-(B`--B)HQzAk-R;W`x1?m`g^|2 zse7`Bf*29Du8Nm=zwV;}`vxP$ei#qSWZ{O1N^;X6x(a}b0m5$EN(L;G{lYyVafZ}G z@Vs$aEKyg6E$4`CPKmU+ASyvRgQ+@3aRxy^rKa8oa8l`npkP~X3rmfP z6ABi*;J}?97l9rtWx!&emAJpHQizOLK@`hPeI2*Et~{&b~zD@%Q} zVGza0@11F15X|`^LvaI*lAelE-4kkWja2r`GqF{PNXWahb_XWdMzID7|hh|#{D zq5))N4^B=a{rhFSI5;yrT|FsEuP)UCVze*U<~_HJfF0pIygn^>$PVd7wWw zOSl}_H+ZoxHj9pv+!`E(dY@cZPD{i?b>6SYw_H!63e!b0+GOb7n4XSJoG}ItyA3RV zOl{ueZ68%vS+>(`5`SfqbDV2tW1kZdW$Cc`TjQ3I;qEY)>3TopFl$Gwz8{o5d^zs1 zKlp<8mnimK<8q7lszG|Tit<3hA53kJ?2qOPYG<@|Ug!8%xDmW*GYV|>3YyNnGq{_x z*r^Sg-s2p-YD3&M6bNnGVc-I#R4$DK+LsmOA}p!<;=u-{>1M( z>8eYtt95H3BEebfxH)sm!P%{hYYCnMjya!tdnm(oLr~sd-U}w*Zd&cJMjO2c&~-hB z)W+iCYEeuEJ!-U}4pa}T zcHx!B&C@J`K4-yuXJSmd+|-t^-IC+RL-(xC$%Yg|Iv#&j0iZlwSnG3PV2GoeOB8y@ z2i~Xw;;uI*No0(m=-82_S)8x24Q-Br{LeC8KpGD)4|5*-sRrBy!+q8L@el?D^(tG? zO3s5TS4$RyfSq^^Ih@j39JT=k5Dw(I`N@I(Ln}gV6{93jou%|`ngaX%*yp!MEF^(b z1P=(*Zl#9>qguU zSF((Lq->qN?qc|2zmUz|VvtS{bpWxP=r-Q=rP25g$x)H*HdI!Jnnv-f4#+ zGk(clT4o&z>rP+&-Zw&=x*r>RV#J1A-fvM<(l^7-9s_N_A(~@BS!Y7(<`IL{#A{em zo)jD%He>i8&W~KXE?OWjbf51}qra$xOW<=jRMpL2$zL7DN*-7fY^DDNUoFV z9c+eK3~idutuMj|QnlX)h|UaE3lC7JzET@Z6Fo#=;ymeOTW`lY z6!35u*;`;e%2x-Nx8!pIOT;HxNY#?&n+@Oy8!|Vn_6F$ap_y7+Wi?<0GQ{=W#rI8% zfN;zoB-KF`A$^m358Lg&!?s;Ra)%b6=jPU-g zv@1kRV|i`6&)0v*KV*5`>Co{$^;|3U`Mc*+@vxBjypZg=H^~6Z)qkGRkGR2S(Npa> zy?t&!Bzx)hC0Jw1^t$+Z-TyLARx0#zw{`gXwD?NF7g-;1%w~03=yOv=8t zGC=k-vw~K+aSitMD)VLPaA!DaM*k_yx7y?8SaZovy`b_R*qn8ryjc_xaicjgKdM0iqka!B*NN?a>eVoToxcqX4 z7J0a|;M``iI??br(goXmwv%@60o6LS>C}C0NE|hCN^ir@TwPlJRqee$Rn*Gu!8b#^ zXp?DrtLwmx+eT%Wh;~|Z(Y1N$b#5Szft!56iRW4|R7mc<<((MuS$)jq?}byPxeWY@ z#F43XAx`RIn6yt}gH^kU`4Dw+ZpF8RK$mVb3a;oS5X~KyS1m#U%8=&*=!zH`+}r`0EuVwoGB%9( z7`Zbe95f{MJ`q1ziJ2jpPwUhywn#V{>Q_ypWr+_qp~wGW za_8~)TJaD{&DD8S3gWPd(-3e~e_#fni4bzlvLr412IuOr2ClsFV3EL zB7p+43r}PUL3p$z-w=|^Fw?2BOyLG+XU)8WCb%rN_lM)X3np*?6F^0B4^q=Nfnd>`TE$hXgC811L!`W=m+-X#XHa8#*DpkqrW^ z^OeluC@@}ph)!qWWu__wn=ah(Bq={%ovta_wpO|it$iz-+43{!Py6;}D6Cvz%y$u# z(=vN+J4A*kAY+dfJ z;CPV6Jc67Hb-#xSX!pJEH-cM+Bb`$c`+Cl*zkZtlJcc(MhTCiBGmo1|ccO~4 zb`g=&kk3$2jtD*M=V~k!DCuZ&puAg`7YW_#b_N0J1YFTz>^(?l$HvePo~6Db&3B4@ z8^!^Quv5Ns=c=27uT;2#SkcY;j!3;s?E>az>>DL~At(49*1!0_4=czfimHPN3UF8_xYyZPyI>jV;tRaK&TDckUGTQpz*kK%-lInG(b1 zpo(1-tbH*f=f|vY(Z1KB`<$iQBr&P0a^o6e<2);3VZBrs|D>qqh1}Xi(6N#I0I%o+ zj-SFc-3!U2ONy8$>GtCiZ;0JetuSXyb(kOgbzS-VB1a5SLBVg!+z?hY z$Z#H<=(TyC?@P?GqTQBG@h_;bZakhTmr>CjN7XzD1xq6^FFosFv}Y~X)mmF=Q~+BY z1X#_!r6BZ}TTH0YF}TaX{*l-@Dcfk&c}-~-8&LVf$>fe#$7_vbCKTIYc(SUsnnRJX z!M|-{_pEtF!*o0V(y(xgtv}{A_u_fc5MG`NT9*-wh)|N#LgGeSbka@JM7fcmv9Tdk z`Q45x{*l^~uo^_Nhd<$fOuk9RS=MRt1Lfy|(bQs5c!=e<5V`%MHL{wuf^PG|<2DOR ztqMB}NaAm+47Q*5^K+cHb6TOrmM6JZTvNuYaD;hBYia!-a&KxfVI!%rWu0v&n?c_gF=(~a`_`6h(JAZoOT!4n8RpG!C?zlJALdh|xj zh1Y;S4TcniNQ2rwh=d&MKY=_8) zU-3+f1Afl6v{-MGifR?3hYV?%IIitiz#bEK)rwrrMi*r=^tF%YQlL!(!i>x;*rKJ$#LHtd>0m|LO#FP7y-lA<^`35e|k6;&9RJSgQQ6 z(~E+FB{zDf5=70Q)REUyg%^`=g6>++v%^p+PdDZC9J>%Ab|1rn|R2(c3bHD zpI4DUi2dF2Jth3wpHF_g;g85*wQ^WJH*@1h#HO2QI)53wNF zc|0nESAG(H=`myWVK>g+(BF~O_o0H0*J)k8LPD_d6r0Fvgi5BNvYD){q%zV5{YVt_ z!z2AfSrJMi3YmiNCOTpLV;uhdV&;S-c=VTWCIHW?OjM_kXJUvLBh!KoHz3!5Vx30nnci-q{0Pih~p|yMg#Zf_0{~pixc=tP=uTE076C zI$M^A`gKYjNcl>rBg;333wDpr9Mxvc!DXabQPn@Sv5gJEcySC3fe_F~2$fT{^YBb` z2bc8M^e}$!w)*UyKBdoeJi5MCJp8-Os0u$%36mTttPjwY;6OHCpE6$^&+fgOFU@I( zd`wE(gzpev4XDpdTHabiIy%n7d~+WX^j{JVp|AJC`pl*)B12>x%gB!(+!BBPl&pk<5Y z1l=aWkfhqX08zji3iX^2^o#asaoBQ`i zHT^|yD4Kroh5+IemPrI?2iK&@DSs!6`$+{u>~GO37%-6Jfp;)_nrrr6VKLbTV=^^B ze#5m5dMMznewfj#-q2ynn-M_xEbdzS&}#aW9Te4)QLczJGH2CVtQY0q-m zEO_YUbTBsrj#vEX>;ILV$B33=zZMt2ZhT4!bJVNOIA=U@!)A$Ex!M+V<3T6J?_61< zqf#NPVk>>`d^w`bz+QVzDu!FfWoX6zV-b$w#i_y}0zlIsfp`*Ja) zpmvt-FtLR#yJ&;SmZ@}t2#pn3x{M{>iJ)V>2=0N6bCQSahM<8Pl8Kj4wNLn4YzHQ^ zZ?;Z9uzghcg?+VOcV6j1RPZE7eM)~R^fy1^kii$Rj;L<8yI~tFD#ZMm$HKx_uH2^I zhr3hGu%Xjz7eR@YTzZBwb<1QeY@co_N7v7QVCEyHiFA()*IIC%yEYIP>jxWWCKwfY z8Oa1$I$}YQ#6e9y?G}#bd%dJS0h>vZ56PM6J7d@?BOH-VN7qE4rrJ+B&`fFoTifc# zzEB&GRFH@+U?={qR{eL8yxP~%JEu}D*gGtAci6KnP0@l=_TEK!CzW$|gb5gksMyHF z9KxQk4S8LQ!$DU3`QOhL5q{m%HnN`R0?7z}MjigP5HoYij$>2@qO1^_+mliiQ` z_gHc;gkyM$Z)=b@6F)e7^pdVz(UEGcn?;V7SLZ8)Ue>!0AIZE&?&LBH=jKNct~B__ z)?q1ErMld@pmp)Pr67VLU669TgDG;tH&;E}iq85m`) ze8CEm+&|%oM5Gn$ZT`NPF`S3PQi6NSoPQVDNH(}S2?C1bZ(M$+!E|ctM7Wct19V7Z z)nfPQ5bZp^^c%+~V;SMhK2aQ?D*zv8t{hPSg|>S~AM_)upqIHinT(iYa{LjF-CoRa z6|%$T95d!l1U{&l6Dq#mo`Q<6)mnI1ey^9lFVGMd?C6V{QQuqv{=?JfwhsJ*TiKPp zW+=l>8?kuOgbIv`4;ca8j;Upb{$ss%VT|&)!@xF)T2)lp1)BKSj@t66-7M>EyR#TJvc8 z6$F$8zgVp}lQ}v;KXN~qHJH*a%$IZ5RDY&`+B6f9=qB0%tJ( zXg5v;#TRdw<(EczaE&T{Cq57&?T~vZwVrBd{4lF-t~Pgz%<5b&H%#ntWPVVb%MfSA zU8Ayww=lc>{9#8*eL)j}Th0mxi#J@_XslU$V@cx$88pcp5=6aCss-fT*d6Bw_9`!Ni=jG~? zv#TGG&>?YFDl~FDTCFvbuwL!weH#k0^0ku+JREW`l(~tEo1LwEEchX0diS&1Wtbyh zXEmYv_?weD&ff>wt{|2YFWFH->2h#t2Sx*la=1`xWE*_xI{E}Tga8afXl;+4GzZL| zFXC18^9ipV>8DPz5xZkZvML7qOEt}xI(=w!b`Cwp-&zp;wA?&GF z?n(OA>n=hu^Khe<7t8JswtB>h;n$vl>`AePYS8Ko?FwZ1U%DC6DTH^g8UOt9MKAgg z)7~fwHhL`NPIF;(y^KQnh~$GhEd(9^on^wbw*nv*j#YrcGA^VH-decngL*%J4=Qzf z8**i#O{|TjWbb9K+E!3_$v(yi17I^6M*8p!nCWR4V4{bXIZ==PEpA1tPc#Z>n>lVN}b7V@ro<+AZ=12g*Xpa(3R;ofI} z8$(*Q_LqSaUN^)IQng96uuw`WBMb3EN(OEV# z!;x#e7; zhga~4_-PNHh_g6m(CatSU1hW{g`!Tguj+Dgxd%atPH)Wzt#o~WzmJo%hweqX!m>{o zPX5Q$K100pLlZByFBWF!EAg#}2Ocd}?Y?feTP0m9#5(0Nwsp%(HC|n+Szg&?Ejw|} ztCn`CY>nytTbQ!cGH<89Oc&af+)Gsn6O~Iu}XaiO&N`?Sr1< zWgH&1WweX2jhvrXC1@3Xd zO3C5nIyV2#Bk?!9`Z|{PVh_&VU?8ZTxT|32f{`A2iEOr4trTqTn7?T&jMm2KcY|(4 z{(eK@`qSFJ)C@}9g}7_i5}V*}a-OM^Vl~Qot{P6~&=~1E5muCO^sH?N9Xj*}HZ_GU zy>bPz6yuiY6a^`Ey3t1{HkQON0R4~8aa`XH!l4u^68XRj7dJN`*@bfRXI9!B>MNSE zY)a%YFCd=&Q8uL!&cJYOH7KBFdHku~<)*UlK-x6i}B7VdSS!@8STR5Mqp zuht@l-rJ;4hbgAn$xJmp`{qa|-kr5}wJky{8hq+mkiJ`Va+i=JM6MD0kqXVX_@Hn; zxTpUXle4W9MSNF>3;`1Z9K$%@+K+I}xgNe^N>vSUa>I!IVx_sBCBBEa-+^JgAvRG` zk9)sJ)?X>I%+t_iN(#!z3}VaOc*{3OmxlY^+VL_ zxp1Vam+ytb%OD_6xq!dyX=SZN7)J5!`%6C{H$41dF!N~;v-(8cXGguH<7VzfOHA*1 zLij;)E4;X(y?ynK)#-GF!U~dKucTi3^!%49=Ek^_a6aWmPf0Ch*cxsb9gKD5zNq;S zSYc3JY5LPr<&vg_MRu(RZ{@u=e(%C=-kaNne~0f$DLuE;)W&OicFmDurX%5mMEi?+ zHl4HUyqOxFC(^4d^_m$aF>Li?FDoj(oaS7o;YAp6C(V{IUl~bdcpN`_=*l`57Nkixjx11AU=@#&`X>N_03*u z@{+B*=y*-+rA5Yd*fapX)3n)IettI6uv2GzpvS9g_*hN8?S`W4P=8ye`z8K&gIFyh1OZ*4 z=U_(8?`HrK8DsRu=ukc*sdSR4i&1yBqIXvH^gZQxm#|q|XM>_#7c@OxtYx+(-n6I6CF(aJ&+!eINBFk|$I1mVkV4HP~PJb0+0|mx{ zA@<=GUz&MxU6={_34|j6c@-M4rGO|Q7UHGU?}_-s*^6sSh}Iusl}|xnP|W68FH!rv zct&k-Az%UkIrpzdG9x4b5A^|?;Rqv?*{E|MnSe}#n1k1C-7H4)dqT)G3Lx6z zF|k^6{+s=D{Z{jL&( z2Ix^zm3xbLV$H3a)}LlW4{ikP&^gNa3@dIYT;(%;=8#nH>jZo*etW!}_s@K4cDcPR zRj<^Gb~*jnX*UJ?%Vpx4m@8MtV95QJu`UE#6iN@+qHZUx;nJyGG~|=)53L0p5^y&l zwSPUVBzuQ(M|zI<(n*G79HDk0OYc_*6?!at;C|g*Qx(2-6qfw4Q)>=gyC058u|0hw zh&sBl*P9GZj%(Xr`d{zJW>}slS>TtTuTRj+W5Li1yO&)%HQzgo*Nq{^LZ2J3FIT5- zmvg08=1=L@iT{C~v47B$o_gWa`CsUf#OOf{CTnc-8s|DfS&)!VyxZvZEXwO#=@8)@ z?X^idHEe(F!K+EM6mQtUV;oHCxwU6`{H?2ND61_SFnQLn;qpzTy!fqnyJeEk(&h3o zo9jlPvyA@{t!1r`+trepzyTd)lBu_@;KQy>owjP*H!2f3%A1Fl{wUxj)|4*~66K%|u(8YFGUhYb48! zkeC(-rO1y^qT_pa-cX$wVfoo=uR@8$g>#31y>)O)P;83%^aXb=K9k5}2;Z9fZDx?0 zu!0_IG+%cvuUL890z=yZS&a%+Dpvxoha$BrSj_bUX0ZdZea*X9nA8>@Fq2LV2wjSt zoYMfuQ))X%MAR#@nA>^mi2vPSU#k_s^o&0m&FL;lWb(n}JcmGk!cv}{9{$s)+GAD!Y>FLD9eQuo2DUm;>t zl=EX!lKt*q#fS(gDCa*W+dD_9B(YE>{4xl<++9#363lu2;h2RE_}RYftD>7>-#+#5 zsdLEGS%6~kC=Dk`KE*0Jg?b0@8}2ju{IsC4<0~gQlz}o&7N-$m-J#hRw{`F8xpyz~ z8-7|$-4IX{Ho6r^e-5JqNXAUV%sac?+se&7#NkSc0^$YbAq&9J@k!eLV5Taa{b@vm zZBy$X$qp$2uB+w6w~~Je0uhM2ga{%+u<*;E&XnJg(ka=@QgH2~O42XE31HlG%+Vc9 zokD=}7dD3BwCcby@izkkjZ=B-!-}tyCAmGhNTj3`rB<3QS%x9ff$CLX#Y!`? zfuN!d>m!Mpf#v)q-MOndtgdZDc=(x~ALX1Uo zg;PA7$W0IN;WN@DN&mn}k9!S*q-^1t8?`3Q+buXwUj^QTpIyUS&C)THj9?ffXHh_h z;e>U8su56hKqD(-UuSto`!y-+;py$m>Kd`j%X7!;ZE43D{>zv8&n3!KDXlM8Z*n=L zIZdvQli|zZl!9>i%gvi`HlgS9)T8hucKr|J%Kph;Gy}9=jVL z7gS@jF)O#z9QSL*CTR2U%Fel@&A|J#cRwVmD%&_Dz5b-Zd2#8J?8WG!j!G~-OO1;9 zKm$s_FWWQu#`gZjw3oH~;A8_l4k34Z-NwPgqY4GPjgE7C?}7esT)sp4)`E`VVYQn= z^tO>zF`ZgLy<0-B2tn>dW$^tE-=*vS$JaYWSJp*aqkHezsfumeMuipIwr!`9R8kdt z$Eet@*tV^TZTsds|9@_4_vNm)xmsIoJF%z`Gz7jBF_x&Y4xlKyLKtC$Hr4*ns((uX*MTEo? z9m;XYU@+2ye>RM+9f5MR?6hI`mtSGveqTCHS&rRIl(mrYyz-!YCBuxo0DT;~JH-cv>Gw&?nh7(?l7&d#dUZsnS%-g>#?O|47j2^)NyrWyc!!_j?Q0q!9v zoEnr2*xD*ch{@(!9~LsEFJjsD z)m_Nc4>~uPseT60aK!h?G5w{lk zta$aAceT2WtF;d`;IL5#*ESN8#c*<-L>X(L7(h^8@&y4RKR0xZ5mS>1JbyQZ`w$QY zvs4X$p79&m67W4jtk|~Z%3GqPSzu-`b$`;;$_Ah}dU(%Il9x-`fSY~+v{iiYx}^U@ z_s2TYxw*x#jxaOGq>xvquaF}0t^?Jh>+30--9O-s;P$~+!5>9zfw{AJXtoCBoIusT z3(Jp58hkj#9}7ZIVxD3F5~gQg*Ij77vyr!iT2{*VGg3;ZZ{YQtwyc{96!|b3+uUzKwDsCNV*BPw0ORS58Rbt&fjrV7o0Q`J( zuyH}Cb}U(GU5Y5qyMh#kL$z@3$N8?4UkveCgr(?RAtGMhgbNNdV)1jy-?6$C3X+D) z15~5GcQ=BJQac6!MxS%bl7WJDIW|5KH}UrmrJu5>3?4xXh*y>z_#?Dwzi;)QQ-5v7 zejj{?Q$1?!Hsl!K%hgLW9E<%$b+GZP>h2EZgsnfN70zZfsYSbD%c6@hYrNNG(q{#M z`5>~PL0oJ`GGB}R*bYT;lA7#eit&9Z`l=bup)ciga%uoB4aQ02)AjPLhv1|QtH2(7 zV2lZ`0I5ji_YxP3q|RjMd5 zrgqXQ!0$!CP;~=$vc^K}t)la;k+kLL;p2VN;BE2a*`W84=%t1z;?Bx!;bm0e<5ofA z<23uN?oocYE`QfePRQ%J&sg{4KZyGdJbY5>Jn?v|2w+d4r{3lMk!Cm=4ub5Fq1XV-5amcfw`KYKtZNsgN13$fMAgA>G&S_Gb zY)4+=)c`@kA#t%jv~FSk9_$@Yb>d9LKr#9^pMuD)W_V_+W<^aUT%M!H6VG88bKTUy ziwUQY_X$|#8!?FC67922^IK;^Ty-@DGTxd{@PdzgzM*ZgB|$g%8&dn8P0LUGe8zUG z==6JoG6rqlK70#j_MM6s1!I@VgB(?oin5(hJuX;+ev}I1K+a;$ixN`1&p#KjrClVX z(YwIcN7f-MPYNvCP;f=2RJ;hz(X?*nZPZ?1>#%g0Gw3pLu7vNeJbbM`$kG_P={8sh zV||Go*w^-Rb1gvfQsBIhLdY}|RkEMwcuRz+9&aeiqULfgsY+tF9jBw6y>9%8>>)aN zU`ePWc`U(kW`oBYZePz8d2?8i)kx#|+z}Igi9u8#Pzu-LL94`sqq;WK=MjCUr9oR$ z5j(lvJ|{%Jp z!EUz#>w^hkNM<@RLENRFmJl1?|2nM!F(C578TVacOBd*kqvz5CT~0hrdeW7fRU=rr zme~JJ^tSO(HXb$pD>@wAMofwzA^HrYMb@2l&R_ZW@FUhGN8aE(PC5$qlPRgJV7oW# zLLoH+I6(tABFf9m{**xqMb|#PC(e6xNLki88}H5r4zfc{mOCo`a-0Z9%y7DoWLabMnA!$O**(u z8Mq31BV;0g3fwing;hL`4=%u8gq%7-6*l|r#R|2F+o3h+-&g`QzzD&8{oB|LfXm<_ zpE#||WI*(lXMj8Qrp(Ce$gSaFAC?FW4*Fkf;|p$V)SQ2L4$EOCGuTg;$Gj`M8^oeF zR;DCZxW^{GnexO2<_*(qd$-#q~}fhwI#xrnx}`u>A@YN68u` zuWmv@HBX#NQc}OPWv&YPIT172`b9$Gr2>L`-rp=LXYH_F_Os<=XV_SHsv%cZmU+ zuvXq$s93d~CCrH$VB`raC5`@iEY|!hShbho2OB9`D$0)yjQycI|9x*twY;4YqPgWs zPlY#kFJfTsC;jx{iSRx3&!lC^e@Y|oyH)>Hhq8@WT-OaV?a7OPj~9L+uFh46j1YVB zxqxSd4;t0iq|WP4lIj-xK9ksTkPmnx=-ly86}nRqQhO^4xT_K|7?EeWPx>GCh2{Ua zFX~lRQOf_X`yvU(cr{0Hf+>$HfQVtGRs3n)(Q-G@PEFhLFnqXoR7;lur6I9I2Uo;I zqIz_y-8!w4?}ar@L(jp6>)x``3y&{;-shEcBNwK^^f+QDR-?Z`DymD?xOZs? zl4?)gg6uhJ%^6UzZuX=XsodCd?!)nSmlvT%;yt(2+%=VK{(|C=J-C5*`a?9-5zE0w zZ2D(Ew#)3iok`}b`-$=~r}pB+0w%njmbZF-Z;IO4t@Y~3accmke8dIPaev*0yzmsf zK3}rIOW|W)cT6kOeE(xha0W%1-)5LcvM)F}GfyF@!kczEaWhYETI(+LCSKYCZi=&v z=lPs-jdg!!z|aPIwiNbf1Mtijt%+7<~qv$yIv49+y*sCc-dB%}_%ztvvrGFkaMihRxdWPpSi$y6M2&JJE&g2d$ zdGh$9wvY*?$$e0ruCLtekr;=v?Sd{x5FU~9`e0)oW4C+cYN4E-eU#gCdS54B6?1yPEzAk6DX1tLcqia0AQ8vAgXOq z_l#AC6a}(k#7f2OzA`;TX2JnRu&WOc(Uq8O2y)D!_~e3%kk8yq0*r2y8fyN28ySEL zL?K4}muLkE{@ud@wH9*gH{k_vS~5*s-~}XDd@AeXzes~9?{gOpi2QUjE9}*o1`y^? zc9^Q26#W2?H6n?lG=VFS2J~ody*=S|(U{l|{V5z!zv?Zc`7&(1;8wAbb096ue{kai z)6NNqdg_8c2{o%b$PdS8G{8D;oNyTcGX>`eQQ>Mfyl z=`qyv3(uda`T2Py_Fv(}zW}7D6F;ETyMWbQ9M%0$)!kmgbDDF7>TtWLy?B1r!*<6P zCTdDpDqJpH0iwjL${e$@YT}xokJwrB2$2w*;k1jU{NOFqcQ;p&c9Vly6GA`yP*ITs z2BYe4Oo;?$f`x>Fu~2SLM!K?;RdBNpAj1o&MKeL>w>G0~)4xv!+_0|jvYE_-AVW!z zL?B0y?F9gcwfoK*@^84Lx!zMf?hHW?xR&x_b9U3aU9W4<96gaz$2yna!8t}?Qq;)i z;virmkeQ8fF$CvsH^dKM1kT-!RC|hvkVj_Qn8RI~YYL&@$W+d=WHaV$1l|=enXSN) z+W~@8EVGbOC}i_x`E_v+se4ax!X2b+2g*)Hw^uJZ`k}Gy%5|~}zS!7GarY0O);4MB zu_AZVudG&0Vw#|LB{d%I^t0e8k`x z;D3J!__)~Bq`TpLTi<-sOKgU|C+K*2JK_B3 zP8?KgSLkyZh&8N~(0x#m2%m&MBqbS%eNVs*_nT(VXVF=c`e@lq`H`h)w;qiCir28SgxFI z5MZnj^W+YGzLaqmF_Uq&qK$Uf;c8`nBOgJ&FASsI$P7aGehF1wP%ZK~ zzIiI$!)s|^0k;EUnhqgAU9xR|`@PxsnJse~tLE z6@9K$*;<;92Trx37E9ZrsA!M(&?Ht6Jp!le_&4_bIskth4%9Qy2gb2q&Z%;F!Q27w zmvL8EluI`TFv+Ys)pR3&AsrL#{W|CP zcaB;=?ThlZrwEb1)z$+O8uZoi2WoF2AIu(&Ld@!c{R+Y^eq7x_hA$Nsvy=CuX5ila zwZK!9J!}yt5}=Pc&`iS8+K6ApIGur)AI76XY0BDoF5(i_U>go0!Z5$Pc_ z&;N1^Wm}@MKOAK$9GQMHq-FY!WndcxohM>;)ByZr7xH_jK1d<9_P z@NKB~0@-BcST38dg?tGbj!8Mwfu-!P7AWDmv65vFC#H7{5E2U6j0UI2sdoh*fUO6R z$V?B07e2x4s(wj!s`XPcgy5?5gO5*V!DfUh}roEYm^Xu9&bAs^m z<&;}fi}WYxLpq(?GY#Fueerd@FB+;k26q+*9W)Yb&?oKL=9>j^W?n7P5<`Cnkx}^9 zne3Ik@);`f=Sr47Bdo-&-|Fi)Rm%>xLT}45uekfYxr^s}d9$_Ct5n`%7ra#z7#GW5 zlrFBOV~z^F*IqECSSd5YsNysBj(B;BY3Zoi=*#akST_P@;#L!AyjAV;^p?b5+Vp-s z?uCVi5tdpGYGlO4{7n*2Qr9b*t*ljTbgO*cpnXZivy*ZEQ}j1DqMC=xS3^k4Z`~b? zZ#Eu)a{o)bvlQv$Tt&KBP0B*|LZzvUzfMQ|X!91eV8YtXp1>=;l=Q9jpu!(9PL{E& zvQ*bE7tFM}7q+KlL1GxpwXrBEDwtGsK+%;p7wGa;;Z90FPF3UglfjSC7ALZeasM9) zQ9Q_2xG0K_@r=c#Lk*IEF6L{`HiG0!jI}6~4io&udb+}jU&TUEG z`Lad>%9HG3=7MyUckw1!d_+LBO{&s#>do+ni3@+v@0t?iVp6i;A&*D6Waz&{IOa&g z-|pkn-&wy=2GZJR@IBc7@qkpj<%%TjO?zT_h#xB%x(h+(dM~Qxr>u4~B_x=(csd~e zm=|(!m&0atIeUCqzz*DIpiej&$&lQ21ueljMl>*>)&Po)jmg*zLblL^Ny&AxpIt;A zz8w&xDIOIm#)Y|$Zn zlMOisyuI$Ri57m5mTy9#((TLqF}e9}cXj%FvhAZOxCoGd=z;{cL|dZRSOWP**R(R( zM2Kb@Nnp5q2OhiOxW(UL(^~^Eceosa3m_+c;H88?8A8dY8E&RzsE@+^4bx*zxSW0r z6T;}Hb2f?_v}`is8080D;-o*ozR}#~mKRoa`osPD?oS8EtI`)_nqab&B&yo%+68L9 z_G?sKx)nXnJ_s=*i)>j5*@y*T)1E_&RY18IeQzVPeMh24IWhHgZLI?R!i`}v`VPmK zG)97&VpxBNy&3wXeh-lY4xEz_#74EriOJSSl|IECNHJUwQS=2VgM340T8-^I5v#ka z1NOU`jiM0;JwbroJhIrsn*d`$8WHR)5O(UStm46E*cn$bn~q59{wdM0KL$9FQJoPLgHO-PFUCk9=iI%#Hl^cH*gVYh=&zgYHH-Gg=;w zWXJ{m-crTqHBlh;nq$u^`+sB%MzwCAjQeYP&#Mw49KQ2eK3O}$o>__g;_?C04}%i@ zc0nS-N+y&uDS#$=y}|z!JmQ`?Q2Fnqh0O$}CqMoJAVDyU@BH@8QFkv_0?cmdv9@^I z&}rNx*WEU6h|=WpIO#^cXJ=`2;kIhIt=n0sYyoM*ijtzbI9^ElwG|o#&G!~RvIv_F z{?!SE($5`{8ru3Lfk?}3-67Eoqvj}iz35)YA%yQZVJ&-h`RRHIS4XSF}fE3Yj|BGFxFLuB~cX zN8R%%`uib)f2t9FIY$LNZb;`tlu$xh0PHC_Qx&h>vDBoj8bMJTz3S;y!sur>_yB(A zo*LC~mSewQfGIS^EDGwlwt#bLq9Eyg{_y~Ji* z*hs}*GjEpM!l`)j%pQ>#Y*!4|dhESYz_>&7SV~$VBjhMWSxsqATchn3uK;y-A&4>F zVmS)liD}UdJh=^%IOaQw^f7x|!y#TBm@@R^wBxgt7)@cWioqV$(CC0y=X%)d)E>F4+2~B&K3!b@ z@=+7)J!N3eZNIoFMd)ZYyGF@}=r;Y0`g?lXNPjEeVAjUu9JyZJ;Q~lRhMRw&9AdyvwHy86BUln(4uB4k^MNR4 z#e<;#X|NOt<;q+&i%x6^&@mHR5?&mMe@e!osxybZbVi8XlO#6k^vO+=qJ}|F~PM4rc`Xq6`$M);OHvSBk^>b+7V+b2Jb;o{6V zPU&EfWfcepYJ;!r0dgCiUJx<|5M7x50Mj(qWH@?~R4Iu4ir#1aQF>5uYsi)>FJ8h& zOaEPzA=m~xXGho2JUIDygB2qMf;4CIUD+4SLFa}0fQ#PTsrEBIKOD3PZ{XOn#TBywd=@wO8Sq+L~m!) z*LAUUXn`b8S$RSzTM_{%hP11yg5?@&ftjY2 zSO<0lS-~(j_bspnsKUV)k1{9UbNpLo$=HJGTH$bU?ALZ=7!gUxv^Z~l%3oKG6o0k2 z-1ELg?UEn-kA`Y_{L~@{p?{opzBO)dzO@E`!=I4ILMSJDH($p$=gcZ$E^caDuHzye zQ6#62mVMRsqopq-k6wR;|84p2f|Z>Lvl1ZSZ;rNtT=d_10YWGm#`ozZBv|PC3E4gM zV>s4b3wx{ZUrb5r74LhBzvVaa4|&pq$l`w$8jBrk#Q%q|_Y@#fKNl4|Ee(A|V(qm?W&&W{#b|H zJrYWZq3gFgl+Q~Av~zo30_c9qGu&)2b>wwEhG&DCJ1K~vL_?75d+}&5LR)yt-CTUT z3tJ)yejudcL%ecX`(+r}9g3!@ zdVn4%Vjc-ddh)Rcq?m4&10;F%1`xgz|06*diM6w+_E)d2GR4G(w?{-JhOIVzAOBVl z-S-^6raB2k-~Tvy=x^K%kPHAg?iy%U^FvlX4>1j0up59vYxYgY#sDj?D$Owjcq8)F zY|hlc>WWysS>!~fg%skL0G)ux_rerFN;%v&%U`X?Cg`?q9b@h6r^6XWdV~<+Q-*Mc zY-YN34;uY@FArZZ&+9FU1zvEw{hw)_*(xfle=<9nVA~^{ey#ud>v=tW6WG;_YO>b( zerJHO+2wx>vHQ9Oua5jCNM@RAgg6P1g4Eb(f6DblAd|(MiFG3x6?IoI$oX0=v9PQ} zBrH9J8tcfv&%=K4<;EES;V7oo&k)D&W}FGM#499#qP42mE6m1~`Y+E2<7F&jtffEx zj*5D~g+cRJJHCQKW|&2m6g|tvT|7k`zz!fwl||e4gBG^16ac3-7en@&FKYDn-+=os zgQlXF>LG92ny@je^xGnNTA|pr+Mj}JM>AxMd* z>>FzAMnM6xxm>^&h0Ra57)D_K9~U{z>3F2WoujQ4gZPBej87LzXtgSs_!y&kJges1 z|1QGd%F@k9#xIP{3xuQK^Xe)PyCfMpiB>QBpl$no__LAsVdHy!4Q4XHbO8PmP<}G_ zxHI@44SACqCKrrv!2`AE)7!zvYj&e+ehb80J?a0HLXrIcaX)#(wqY~>m;1Q@Ho|uF z)f~tbu3-PWOQ8!b(Tui15I6F5OC$C(Aj{(Gf}d z#lervSk|e{H4U#W8~9(iX}d(36FI#cMra@NK84nmafUywED9zQxFm&YSKj8Iei0oV z@DO>*ScInwj@Q#hcZRulDteP_>M5+(7yR3pJyKmy_Qaog!$QI5F~8@mPqp0gs{c)| z?%~fec}0x5m-3XZPVxmUf>)9%gp_w)+w;hxnSRFwuSz3@G1klJ`d3*lSSqj8!h0iY zUy5#NsRp<|T(s9ulsAnkGUu>Y*y?{lqup1`@8cFWG_t0H5_d_`L=?5QY${NdMDu^5xn z?D)msErR|$Kh`N8xtPl{ntvN!VMkANjQ{4$F#>yiRc$U1fJM9!9qN0MOXLZYIl#di zsCGyO1hD!u%4cmwxLsvk2C~981iYr9`tN4(z*x?O)w-C{R{)$K>-WdnpQ21NGGkwk zmir?BJNrwsIPSd%Wtz&>I{-921EBQVl|uJt!e`~VjH**#ld1VIa;gV5 z-rqIDFyTbv1g}QZmEoX>>Nt8^Eydbs!8R&~loQN^Q*5p{0LbyIC{-3ius(QSMp zP}gK11OxFMTk4QI_J06XPx$D>-=%}{@xcn?07fCauaGql{(Cv-gs=XTohN~_*g7YE zlOGIjdd?Zk{1S8QT9sYl{nIi}AgRStXH~+lqNx1$h3Uz}h^&3l)!blV3IU;KepHLz zU)vJPW7`b}xQiyQ`d|V(WcpGy7bSz)zxM^+wY+B6PCf)?BTl=EZr{|hc)y=9Y#dYJ zUM9UJOqB2o6}8Oe9w-RS9q;$wx0KnBj5@W1T-eeV6spwmc; z(mDJxQY9qulq|58AJCb$F!wfxl>}+x-L*%8K8da|UN|l&ZPdZ`bJw=-4-qj`U z9SL#kxNOa%(1{k!?^&DzZ^J{#Fg3^*ssEzcS#9SQ4}I@5 zU9@s8v@oB{_L7c~HCy#rB!y`=m^$HE~h9y+QPk%|Wo|5S>+b=(U3I@u*;{7(*55zUm zWYFV0Ivc(8+Oifd)EVtckB))l0W>c~Vj=R9=q}@Qg>|V0erNx}y$m4MH#+dSM$-f7 z>Oly$JqZhv2?w&_h}pi6zJ!0Ehu4fAvS1|(@5JLP;B{4u|AEP2i>mevg+jND)gyN? zlY4BUun}wZ24GLdC}(Nbc6 zQ{3z$5)YUe>9gIqk84$_1ZDyK@c<%l|3+qJnDn}+foOMdvZ-a#nB(|F6Zk0QRK26A z7Nw1bg4HUhW;LNDKN(a+p5zX83w{u|vwI>VL|z(=^}amWv>5ef;9zE)WOq|TG-+*V zd@JP0N$SALPi3_T`UL`qn)?EKi&0?7O{f3^8>rQA>R&mB?X?lX%s$e>MT@-)s~G8* zJuqqHTAgkGf==W zYhSKm?jZaNREZg;+aXplvM>r!t*}L4u!^k!getruqCvn*kx+jIg6|z{-Vz_}H};!| z;h>p=`vcty&HPHAZ`6z7pX~tjA8o5wtP5@Qr4IgAa!yb~9uXg7nfo`6vIZJssex3b zz|K?$rpH4Bmq3jEi0x&jfS)MYP-SN@*FNoD4Bz2fr4^TcP80qgp!n?Nd;fzYv;>w= zahGA(eXc&?#GoE#P2uvAfc^h)S(Tx z*wNSgN}P|}%4ezN3YMg;JJwRBT8^xw0?L}$QYbXq$LA%E?754Z@!XE}hQB?1y5G!h zIywYP`4_X%cgZ-lR%a+RYWxx)M|oCoJr)*CMBO@UPk3zHi}+jN6KGp&x36oL zx!KlAo9spuv-~6P-8O9F&u5>$@g1_K=KA{EwW?yaJi-f654t55K*PI;;aKd65xnvd z4=?=DpX1Wyik`~#H+5!tB_f$$TH_)bO^iC=a@fRhfUDw^Tzi4TTdd6rwMB0|Ixl=; zNbe`$JPrdIcY8asWup{}vzW2@{O}D!a^!klwn1JF6<=)}hB4CR_*XCCJX~6ezBAyS zee%6!8Vm3xbM6=lb?2i%@m1scamJU=zGd_oHRlAxs%epWV`@($nhuq2L2_fRlo1mh z@eZ30N{*BMa*&_E%_k6u1X3>!2LXd(Wdg{Lu}+V+K9FTmUuvWL2%Mmue_Lho6oq)M z#_A5oI%0){;{o)6cZ>WD`Q1HUJCpaI=AxaV?)B9}^C-w44UXNf$1 zh-cJIU+llwfcr-3>1xqMq$^d1W(hNLkOdZ(5pon@xWC9;RTyDBhl6h6CxQzqHR3O)?pXltj-?Ln zBp5mQJL|W3-hVad4h;hS+z~klcl5EC6M(VQJ~VxfX|o-Iiybm_ejNljhuX8-{t2jy z(!`1|^p^{6Cm$-Y!RGE-&tQ(OMl@2cNCxooe^l0yki2;^TaPOCT=nODSc2AaFjyUE8*S?-q#5h=+{KT;zczTy~FEi zdfP(jWD*4UM@tliLf5UTb7QF61GkZKE&G2-s^G>bZZDMw7siTdOQ^`fYr>wSLUswLT;_cJuC#I zi?&z~54`31t|Iy#oh%n0Ix=@1eIyk3ag_Xb;EC~jFRz`n)s{X4)rALr@nuHE(y#XJ zcRUyAE(zx*OXD>@0iXR6_MKVRBT-wKeM&PF0R^djlZjzTqS*ybo!J&Qmm(I7!O!S) zQCo}VpPaA139j%0<*a0f+nDcURwLf2Jd_$r{4(g4Sg@=NTNiXT*rWI|O%!>q4t|sMS=+f3?NOo{P}R*f7%_&PyT**o-ny^K;l(3@w?Vze{3@_5?|`U zcz66H&`J%y1tK}!jvbi#7v&mVV%Gr%5rtSCHTeU%Y?t^hTsUWo>IE=UNN|Z-Zz)nt zCI2YDZW2P$nZ7K!Jz{M{3FmxBA3sddQ16-xWuyHN;amq-G8}X}zY0=>tfe$3LKqX~ zW56!jBISTyiXjY1G+8KZmsNvnZg`Bg+2L?k&)!t+GZt3~iA0 zOVytv-np`-2WnCtr139z(E}ZOGZfAJOP}^ByYRJsH2MjPy<*yO4-nJIep;<=NrkC; zv2Zyr_aZcQGjIoW5ps0926!aRCEoKHCxf~o?rP)aruXQ3i+TeYhkNS*#m-Wa@{G>L zIG~wkEb>GQtgQ=b9nb{@R z!sNG8G`;4202Z}Yn|lh>2HkH}JJkU|nmygo{nf9x5b=l^ zehBFs3jM?3!~soDMK=N>D@7Mgs#{YOZpz@a5kmEP5?$UH{U#2_Vng?t*h03Ti2uB$ zBOvxZI+}DoUZLkSz_co;C*>r|_LD?*eL=E6V1~b%MITu5g%_4tC3(jofKX(WuY!8I zwfO&lz<*MhFz?bNoBsuY$phe~mM`6N%8q{PDbx_y)1Zf2gr1YXX;^HV^62}4WtZHL z1DuWu?P!Dw-=11lBZ8u|-gNCL-?9?kA67`;i1C;yFqUuVi8+zfUWfAuQ5{)B#h|8M z{`Ek$wE_E!e|a|fN6mq$fwh6dl#-%c_X5wb6Jt6jhABv)#g=zhDoVzNnc`jM#2RTY z`Dt@6*|0brui#O|$1}~>S>JlT$%CM8jgqdt%5;{8<4r2FhHc^3&QnjAo^Lr*yjN~; zm22mP7kqOJzQW8~-1v!k*ve(BZY_oBjNCc|7SYL+?qH?O?Q?5K*{I$&kqV~CpREm& z(_`PNOMe90ZCQJM|+o<%G(*<5uZiWxwU#_X}M{ zy`s7bYl9^gj3dD(n<8@zM`AM1X*0G(xobwis5kOs_W(0gcfR2&;Wy5<1DjHTQw4IFeB?dqnz0_s^A0D_Z{!T0$L*~oo8cf)UzoT-40f!5xYzL`zX%u$w z`L4SY!>>d%wwqtvrl%h6`6tENXd%mB-0C3(8LVEt8<_!g!Uy`2`hG0Q-kL3!ZVz&r4Gedl+m4kQ@4l&uODZ5C zUFs@q^P}eR-RD|x`apw8pH(vCzIVf=s~BVJJvn4y_S2|n|u4H{2(nFB1a**(B!xr2@KgAAPRdUW5i(jh*zdTem08_6j`df~)50XHM+(fQB zRK#x|U`vNA&B6_gv(dVBsCnE#_X`S0|1tcKARJ~q^72>Rb!#HA9UWk*ip%hxMotrHnDw{JT^;1bCg z={~IC>k4X&sai&v#niv~>EJ%+S#mb+6}A2nDZMjsKb8A04~KA>S|5MqT0|7ouolDo z&HT=+uM@etB~=Mt)l+ZtxBA)*O8&6U=?qrs>bw0K-;!C~L!xUB%eXdg$dnU}|0CTb zSTKMwRcGdFeM6Sj`!ngxir&@WJm~@=kF|T!%)04kmA5@DS*hHh&w5D4^}-T2`Wl*# zb~hHb26pUfvVqWe%V5Fu+wd`-;3bZf%O9XugWujmE28bnY}@AiK8=}_!ECg-SIcGr zU&FZBA9^)*Jc@1!KmT+w<=HmIq@OowL2i5J5mR+4%l1#y<9l`QwWBRHDDQa*+A%(!9=BlQxGqVvhRmp8s;GR^_ymfP#yaIStd&9Jy@%gtcG(`rFw~0b0$E->r5j%>+R7qMsF&YsGm(0d zo0jbp@<-PL&QHlO3fasaPSrFDnH*dcI6wW16RT&%@0;5BRkPR+D^lVss=o0x^*-U* ze_by)3KLh<^pcuO6ek^4ApOG68I~vgc2;^jthK!4!JqWB@QcmGXn^VPgnexfbGMJ+ z-QD1A(m?#tJ2r<<80S{_Zp?ll{Xs%$dS{s2l`GMtbIa4033(G_Mx}?YCS@%5%mMp!<~@@B5+nD&;~kVr6B?kO zwdNjCim_D{a}vuH0a(}a&Y5aY6N0747{6=O9KG)@Hu-SmVR}GN!pJ-XHvLbO{#X>GD{pIU}Pc z$Qg$5%=TLNtXa~i(!x_T-2lIyHds}-=R}yj1@TQiN2V?$2iQz57j~=GpXWnS;~0sRC(11|WtYMfp4i9e+RlrezqZKEy zkg}7hWuKJO(-y63IpWW->Clw)Ef*Xo5IJi;@6@qrE{?hbbTE}M{Pqpch%u63y5H+F zxD!6-@NSi>f1ZM#F_0cdA?Ul{*!~vT@@Lv|fN6M4XPYg+{5H5U{4k4iMh6G^+qu~u)IWL`=SOqYc5|B=J`uaS-D2~D` z#r@oyPGqbnW+`)Qia(<44V^%{q^?_gQ1OH;>g^<{{ zqGNaiZ>|RLUZTRLYmNTVn*V4!BrYM?#@J;QQxq7R6e^I&K#6#_b=`suv>m9+XIshp zKiZ4`4u1T9pNdr8E~$#||3?v~jl#bT+)VQz>=^dl{?g)CH*xFPUM4f@i(^knl8#HR zC&ieg5vA<3#(5mSp-YKXb1@g7Z{ND_H{&+-lz{ui%XQUD&gaw$KCMlBV(DbL&3P{a3RtfIN78I4*ZG8wR{W1` z-mE@g4*lmk$a5-12NPFbDKb1B#koHFqIV>dao1r(el*|#X7@;ni%IJkB0HQZqvN{M zCxifv%(JuEaNA3(j_c-1hVoth0`sHt=%)Qq7vAG%RmIGN=!$J!O##^TkE?QR)mo#f zk+iV0x?1uX`q7I7&%~>}W%rVbJ1M~jg?J4{JqM0jBe&fa<HFaH#>QllL4DTdkflB|m4{!?Nq4stvl4|umtAYE{irozIN zJ9R^{n`82v95V0wZ*+g#X8x(AcM^2ov>o=#!sBXM4Dm(FKe~ilU8+Z^rg~=5qOi|m z0tcd`UBn7o(kBSaYC&wrcJ5>TMT%9af&PUJRK5dbgJMBVtcYuoa*u?~37o8ghcdB6 zREj|{P#%zokYtF%n2h=Sr`^b+jos^TuRY^;ONJgQS;4|~frz_LwOPY1Dx3Ur6c7k> z1TZG7;7JOjsSLJn={8*@I>(q}d8-dW4j`xmo1R`EbotTj-Lx42B7mItwkBoR`5Pe~ zw)hodm*jqI*E~lH*zXm0yvcjLE1a*{f!nBhSdoJkhV+gS?ZPS92Jgojz)+sbol!i! zK%zMaSa)~CR!8KW;{hDlY;k?c^Re`L-Em`nG8fB=)P5wMmP641gxBX&Jv7eg_lY4d zSLm|u?X^YxFJHviP!e}IBYc@y(36bU3XR3+I^E&#)W{0_d;4xq^nV+bgu(>5RRTd70$4nlGiYw2*5{LZVGbaLilSD^J*Z7MuGh^`u_i=_7)&u zygwD6$gZk%|JUKt>51~_p0vR+!{aehS=;8n+2F1As`#>`3)d}+@L&&ECOLoIrR&3+2UUSJSkRIlMe~t(!To1C!KxY!WHetsXq+;QSHd zm+IuDr;@PaeK};i9xn&sneVq`3==an&#CH7RNI^^$7_|qm}me0u=Un&Q3c-K=*-Y1 z-QC^YCEX2DLo3}OH6jAi-6qVH~cuTvRIIkr2n8DKXu>5U%=6s!JG<5w&vA)QfqoGeS4h zm8cZ!@tJ|VzGK4qHUy=0n^k8(n6r4yW#FA?vI|+PjfymV1OMP0gM&-fiT9JOiiLeA zd!llSr|vhe&9%iBD#MBJgA72_?uf=B5 zv6o(sRI`$us(SE$|1W1};-Ofkt_hv6kdCb;9XLFyC!SE3*bgz~;s)OFgWd-~X-lH?iq4u2x3Vo-u}o*Ija$|hZ=m%@nk;%R54!V{Uh z3YajuCRi&HkKM{clGoM}>L%bAJ!KJu>{wMMNVXd0zZDKfXTMm+XmeqJFl8CF2r;nb zWF3d_!7cH?N`AldAZfF3Y3;t8MwVPb|B2aJ

    6mD3G1)K-O|nvbK`uPF?XKw68oHjf zOM#0Z=|5Ws*rKeM;C8F45Z3CzkH9O#Gr;P9f`{KDD@uKnxJB|nd4h$gLP}% zT)2RJF@#^pB?K?<@!@Csa~VD3n!!1z%n#XNwKwuy8AQAVd#T)<$2$mvlR*7yK)CbZ zBEklyzGhm0KJ8$$#fd{e2nx^_T|ta_l8?ZbjF{q4c&6=7U`@kSCBD&h)9;;ii#YZ~I&J z7IChvs?Z=KVIp5p7@o$tzVjS71O7alGD*{2T3bY29e&WX4I>Z90BL$a)n!Q#v(Q#| z1(CZ9r9p09_SF{Gtxu+w8il4uK}Q|4sJw z{}La(aVS%%EJFB>4s$lhQ3@-Yq z{Sq-pSpB*tzZExC#p9Q6rc$;w^*4KAGVkm9e7pMAQ)%_ho2hJ&EBmRhw^dBBe9Y%S z>>lClofgiDJ05<2&&rfsg?$Mvsvu0>j=nW(4_ikQ?cBFq7jcIaM;_71c}PY1Qj_%+ zpXao|jkZz>oYJ>4wcmH&`vYnp6mGPLGfx6);aIHV0|tcG{U@)BjvE#2J1*7Z?cSk_ z3*_|QgK7On2fb=Bm$1wR<^4+2Yf;3!;nHGGEJFWY;*(K*Q?nKfHjMzT)cOS=3}bl` zT%#}J5qwVc;isFeF`h4By*O9|-B)DOKxFw?;f_)|wVf zC2pEzQEP{=@0Ag^^2-*xaE_0C(HE{saGet0j%f+X=XnYgR z6OE-3IE~J3xH3X^d*3QWEbY)o{6m8xu3&p%lCm35 zjN3EEVrSgA(fZUziabF>Nk7(+ZCOTqNltwcAqbDHt-ITLJP8nN{jZUWMfPL_Ok0D! z{WnZ}5YD$TlYOMiCS5F-b}&hX6g4pxcnklPAv?$8MGQ}K=R-*X^bgd;JUhol_D@^0 z`VrbV-3+%Jb}5BE~OWLhDBJ; z`$L4Slu(J?+43P@0(iMd)k%hbl)5ExutPe~#*WR0PXBgU*+6^E`6&!aA z!R;At^aK-DG69A2fW$t5gEp;Q#sC)SY6=f*zh1t z?<@khkEx+67Z<`06~hV)kO8sXu>Wf>@cYkR;I6|u_unGm0vx74wB>i$dq;SI(VbMm zRIJ75`UI)X1mKJmNR}OZEKm0$mJlI{1RdtjxA?lW#*Js z(9ay>uSqie>3kR`@}w@4n|0^64qU7gE_x?nCg~X($NDwt#H^>{r-d=Qaf*UZ8(h6W zfuuv8Y9Ui>>m5Th6)gat6%4?iXWfJf=0YP+O^+h=CB9%{N}wK7%Yg(b*01g z;YTqTB5YFP>S$qFhyAq@w^ge|Ybz?m>0W#_lcv94D*H|Py3Y6nzi!;4bX4f%sdb~{ zqxGj!-A5FXqLb)5tKgQ0zwlPAW$U)zBP!T#GZtp6XXPx z1g=Fx=e3-G)t)c{5;?M_!$f3z97BzXq(}vdo*XyOype59;Xu(#(UKOtpP_?ih2gOI zB!dU~1zlau5u^9kaW%?ibJg~{%&|uj&(hM#a0{*k$joiVm6V=n9_0g_>QFZm=p{{Z zW^^`m`{TcwI)D-)QDuP*N_FKqil*A$<|6=FN2j`J3rDNGf6Zzoi?}Q-{CS!HtRDQ{ zoG11?qu{{$=Q_>@)xqDHw*%Z%Xppa!%wEU=USwZAiE|1H-i5@WGcNWB7e5nwnXC=U z_fVx&mI9=Qp?r+b8CzdHip`9)ISMgIU#}2O$R6<&BZ}pgLtGs}24Um4Odl)@sTLcq z4!kH~*d3r~uFh;JXv=0G8n3;~Mgb+VhL4(g4)UsP9#2rC-fa{hG(VyrOP70XBeJQH zBK{yknzUfx3b!q~qy0iY(}nE_}&4*x(G#lS`0Lj5@BH)~bZ z!`l7u*Co=R=hZ9pEQ!Av>&C;_Fr#0 z|9Q{rz32&$&Ejud#+_a16iv(AeYi_hQWP#=llviZLt&%TBVAq=BDF2JES^=&DnE@Y zmE_e3!1Gj|0@R1b!NeS<#&5pmkmgFuQXb6$?hZ9zT4}-wPEEfwWEUnbX57SFKw@D? zVu)KNzx4r5h*G`}r%qfk);y?qa=FaUpAN+rRixjsWh7M-zZ{v2Mz?2d0L1!1xQ4s0 z*1oZ?xPUwi;d+iSi40@uk=<>#@iK6{gF)?Ft$*o|-2igfQuYJ;vPrDqm#Ww&vCHHx z1~xFj=H5QSDJ;kYCwGd>HYDR9l;fme(aXVqF;Nn&9v|VAMlki*67D##F((;n;T7w2JYkM*#f(K4^c51~+ zAI<&B-_jdyZ4}atQ;N%%M&uaQ!&Mg;OiLdBX^3mdXfJWmRkwB}eAnmuX9f*^iEni4 zM&@P=IU;?2Ya|MK3m@y*Wo;f!9afITcMs{z{Yl%OolzAA(jG>KlH1h|WIspWwk3`} z%WM6NMIedZ5oG9mTC+BGIWqmg}r#7nIWo-YdR%0>)_q# zS(uixDKs*3wsgmw;VX!EBpn-gvD0cMv9i>7W#v!cnD?plnl(4q83`$a-wVWL9fn9L zI0ogR4}X5ID%2lV*F{;09yZSZc%P+WIEH0q1*I?&4C7sOJXaxhjSb1f9l>vs0D2?F5JKle(j7J;t~pGAOZ#gKVXPI_yU+)BXG^Qx z_<#_x5M~fK%>0ULYWmLzbHOz781hG~D`p5llNxO}K=Ct-|0G%R^&+k}lhsI&%ft|E zazD`<{+0DJ+Jkw{4v}WRUoP;T?S2g~tO_wi)|TvRQ>%Yk*L85(?GI4LkLbVNcJ)KIf;QXN#Hwl7pnIA)h2j1Eu)Bz=}`m2|1BR1p6%Zb`s}*xrAQT zhE~xF(QgTu;C@bW08%k9R4b(RSGLm!Y<+|utH1=n57RgRz4NVdE>&-MHZdHbEkD@kcIrYvRw-2VtA6 z>9(y%tE11lV;B|`Mh=XDeFC78UHlU;J6B#(mf(P34H4x_qr(3XjExjRbN{@~UO!7e zwEd4B35DB-$!1>?##K#Zl@yi>lnFUE@NmwjOe&ogPQ@`Pn})wUP@Tk&TC0dJv_l@1 zC0z86{fjn>INLuBGmtM7)20-Aumu11>!|Z-`-53tj*vHJA2*8R`3q6Aa2al=jkHkD z=>Se-j?kk+Bi+72raJM)^XwHPCPJ|AP*ALG*()B6)qyosRKHL;$i>F)T8n6~B2 zaQSsJv>yt%IFz z#hkA(6MTCfnI{?o)|NLmb2gxv0aHom##E?k2x%zJ=^iVqy_eCv>9Spi^2^3?3WfGM zu1LcOhn|u_H4l_Iu;8_mdJ(0vyhFcw{EW}8Uj#t^1t9e$MhaiF3A;XS;`xBNiqn&RMEzpn~RUt&LnedTqeZ2srIQ&--=^BRwN z2&+aC^crqSM{xYhYaa3rM4E${gWPgp*iJ+%E7u$eF0@$vtj<;`yv)$^0!te}M4Z9T zkJ^5)=4@kt{{=6EAdXSNz#6T8;r0ia3_TwI9G5H6wCGQLk4Uwggj7f)mL$TK^eeK| z5j@le*_8qOBamF`JFOH8rtHi}0hHcL>w1oxyaQTHnsN0tdDrHx^YgM+KA)MnDgETRAbTYW0507lWt|02tEJoHI zdr|!PEFR85oYMWq3xb6f7?ybMpw)MlC`1A&Rf9wPmaSq&5!+T$%tl)8ejUsY4PZfd zdcpvXEYm*!jGdv|4F^+}YV~v$6_7+p@^ktlFWl-YJM6f1}Q zK8CcRyE^jW+Uepq|6YUg@&Cpk;r~gazq`<8o&6sSQj8QZtLQ@d$Kj7^z)F4GwI}EO^z-P9WKA!e$$Wyr2Pe+l z#%b2Z=}6qz`)7kzeb*;NCe;rDv$Dg!+MxXAPWuE1{mX1anrdh?dN9@mkdxW$&8+iV>B*6}64{`awnZT^?X z{%Q@~r}N_aSc8`4UO}p2gLvj~O8PfPReR!k>+np)l9v5FcKQDqSs2Z&i^#2zvyHtenL2Lt#Vmtrl@*XpGm)0_VtBKm!FgcATV{K2OCo|?kW zbj0vt0mG_$hdad$*T$2%7Mrqqo#@so%ip-iB6Vf=hlE_Xp4PIk;Kk}+>rzw>VR*^W z;_94B!Dp)7LH~$E(eD!{9jS_1ldr*hhKX{GSl7VejJgZw$(*IF*k*`RqbW15DdE?Y z2YVufW+Cq@*D_WJQMHW-$`*0Rlv<#FOnl(5H?T_kp66y&Utpd;zwfaGk*7!7qk-RB{ z{00?^*(rjrKck8~`!gFt^f3e@n*`@w1dObC-UT_3k;)4ddb#~rE;M8YRFuZ?P{`={ zv;=oZGc}Dv5WkgVv2dN!aJoj^tf2{lgA4e8wgVLU<5L{Av=A;JKxH>KbHNS8X^RD5 zJnhlqgpvS4vc2KUz%by>+D0^x5=?(#ln8f>ymgG6h0*2XFv+;m{jWCWhwqi_jN}(J z_ba;5OcJVS)h4noctnj~ApR!VK- z0E6|NXmG?gcSRoX8y391XKX>6N7Sb zgJuEW%;(cgvqqb6eYM3`zgw%rA?(V+f$=rB#evNDKpjILM%g8$Ycb-fA63W7Saq|; z2@NPc6x(T-lznD-7{q}*`S3C-ha5#s@Y=q3=X3s}9 z|G#czsE+s+sdDFn_;1Y&qzzl&nOItH<>#6^3K8w#xNB2`MM59tiqp{$1;-AD0elRH z3(wwVl{g}WcIK!Z(eEWc_{`2)9F;&wxfKOYH|f_-_yX5@e{b({lCA%G<$6eM57bniXk;Wq*b|B{-QV2#bl^_)uJ9y|_LSr{i1-A^vSQUq3zsOb;B81bXc?aO8k%zbYxnf+yl zx9ajpvZBm6YX46_*^y3tkQg~M0%%2oMW9gJQAb6DR!K(mNgP<|n!k-sOnQq9D!XIP`~HwQU6^FU)a84F z)02nO?LvTF+hDgx2~xxf;8{#n&2xaXIy_Uw(___Vx4#ZgeZz4&<{XwDXeg_BL9e?p zdJ}fQ9mIr;au-~}aAlZq>NU{e5(JpH* z^J4A^PrqvQ*NI;%mFYTPv8@DtQA)9v;1T|lFij0r7WbMnvD|BYP^X8|Cpjh~XLpP$ zofv)8iMoWh(R1=D90Cvw>4*90f@hiYr$gf->mT(i+lGPiZ#*0}M(O~NjR1=B1R>W! zuIaBwya3!zacs7}Qwa~tcdSMlAyFU=o-*`VCbUT}E=0xS-!*_F=t`o*Q0=5)I(Ge3 zd~jgEA6_5+ZWct|T(#FyjXA-#FLDBd^5D7ZDa@%5@KTtG702xVUJo=bq|g+_2aKy6 z{|7j1eeorA@!cs9#NMYYclo*EMaohhM5&jCrt2hQSO2A+F3}~sxPC5pgYRStHL={k z`zMRog^W>bhdrSU%Yj7o%Z}U>t+lwnm9WBmW#>bv%T4I$;}6~2vPYlhDKxA28G~gH z{_4-*<(ICB9>-24Hr95ZjP^i9eacOLt4UJpMMo;f2{{ruJ+j1@ViM7szLm)x)YJ(5@87Ps)EfpRmGTeze-zy==$ccub>4=4C9> zy4bmgJ4NPWykz4g98%8nl11F2ml5;Z#TVK5)VFfUW6x_O%pZfLK-1tuor1BENz^n| zrZ!ePt9Y5)y*jbP%;00Y+k7)i)NPpsy}q8Xb^i=XdGyk`?SY_s`}k6}dHolM^fvH( zZJDDYpP={G6j}2voS<-&)BUk}EYDhx+k#J+fPq17Aw7UZee#w+{F59*XmqSQ%J9cg z#~M!ldXXQM)k`siA55db%-z^znLxJa9e~iVINK2yIpj7?AJ_n!kJA#I2pFQT1g6c76i7Cdi}ZW zR^$6{;^&5*b zT=VQ%-asptG_0snu8-~2=8%MA$_-0SDWc;oWGOCy3!i#f}@ zHAG^U1Ck27y3DflhP%J?mtsy=58EQ8z$J*2t9hvw?p2XpMTsTDrI-%?#f^%JvSX5M zl^2H^ZgHSq=ii;#Am57UiF3XJ<;$F%@|AnXI@m*o)mP_1ur*O(#~Dd{e0&tX$OQ$T zZ=<>L)hZ4i|2h{#04sJFACPO>secq(eEf?F*0m+NUAH_)_sHXKfaX$+*P=CjtYsiiE5un*tdz}`l{lIiY2cGt_)(3l6yt1h0JdU+PVX*3Ha+YKN+`K3_xrayNI8)4uuEY0#T_J}zQYY2F&6x5*}Jp7Z5#iIntXqKK|LtdX35C32$G2L-*A%!H| zh0&eFq!uyFUH5O7zOKk}uzBFpG@o@|BB!ZY%p24>8@8UR)2^eZX9%aicJ_g_W95`( z)#iXBuw(Ct2k-2+=~T<+30gkt$3Ga!@h_V!uoY!1!V)8}z)%_0&kl%VC$^{1H%yrEzs z8X*}^sURZLVrnRRqvWHRozIbBPn$>UOzZCK+>-w>r&_!3Kh?BNrmBVT+tt*7zU`R>$$q;G5zcxf8zuX@T zgZYROFh6OlA`ih#D7Q7@Sxy2>JA2=M6ICRD6Le-k&|$Sz&+f#go}k@$pgjy zSj7dpvEequ@p+X)aY)hRj$R#=`5aE_a2n1M91;USH^7h9_&HdXu3>>_&m>zhuPDY` zdBW}(o0GLEuFqHL5`gW z(~+)_CAQ(FUYG}LRLnZ;q~lMF8}X}c;D$GbLj;)2q&9+vjrJINF*<0BbILUc^(E_p zT5CuGS5P({Dv39^764ZjKIr`|@8VJY)xt(q`R@O&>BU?Zp1)DjGTHlmM^ zd%|copCwb)ubX#@DL%`QnQB-1WlTTC`nA$Uw9*L`VcE7VGMN=BT{acYf zGdL!#ojy<#O6sN^Ux-LjIHZle>Q*~s9is*8dcle+S;p0a)<|R-dh}k0)ecw6&J)7S zf3%bMh$q``Z5%L!85&V-onIFo9sI!v&SZBdq}$YcbFO=tuod-lw*H1Sc@h@D7eelw znU$w-`<{@Jgk~(pwig}<{1SD}-m!tbg4tDX3kyMObStC`0&V{tUIuZ|LwRjwN%up` zzv{t3E$(}U(cZ7xH?zE@_!xVvoI48BJ++dWK$r!ZA{v6r!Q|U(0DQzHe>ya4)A0oW zxvqEG$(mK#R+L}t(kRj|S2CWGrO*Sihcu!d(hD9l>!*O$(7!+??Ck}x9-GVZbzUuX zYYIO!a z72MCZZ1%nfqMrxfk9A6;#S0vGpx-Zw)91xOF~GV=T%U$b?t1YVAVy)!g~Z;wRtrX4 z^{s^HiCR`m%>b=h)BHbsdvXA)f+@egTiSpEN|W&VG7j*~H9(sK1%HXweEOfr|NSQ~ zWh!E|4Sij%%|SMf%o))en}r^V07;O#tvO*%AT*xZofi6IoqlsqQt(R#wFjAK*%>9>VYn0M zu)DnMx96UDWlWt-03{k%4px8{8RD9DM$rGce~(}fa>LT?Fu1z<&lWtttBDnYj6=S?6gs;F zJx8yZR3cHtZ(}%Qx0y_$EDxt!Gp?MW=HGt~FjcMTVa-hs zJpU&@Rg1KPVZG^~*gRIJ5k*7sq-&UF-FbVCa64VNEZ|Z~vN?U`rO6-Ja#t>W{ryDt z(S6;F(a6X5lw4n6Fkx@EXS|scb;sskN!0OZ#f}K4Cf7RSzTYm=zr-|=o^#1B!BQ>_ z{1HLX`QjiI(a~F4QSbh=}O{{ zqIYrqQ&*s+($N;~d_XE}K7UtNxcF90ucd+V$i6KHlxLWpU4s$KtiZqUYcIk=lJ7PA z=%dNo=})Ey-sBI6!65XqLlg55rbGj(PpMxbRGGrHu$^@M=L~KN*A;=36 z_erF)D}|NOkwlz4u)4aKJLfRYS_3$;G{AQ%S%CI6JrlL8!fOh8=DY5M7k;aT9*3Yj zwYHhRgUv8BeNRBCNLM5~f|b2k$1esWWyVHIJW6NhNS`wcEOwM9yAyuT$@42;#PpEF zSuoeO&mi;tTyJ--)gJ&_YnwB&)Fp2Wm>WeZBS{IW00%OGJIrh_lEg*^Cz(V0OvJ)W zcq!*@_^Fqjt1WO$r{9NP1WPoa7Cp~D@JbQ)jrJ;QpW&<0GM>P5St7fBLT+LX94#W| zI%DK=gfCPK!c(oJRc%8kI)qAn=w11ckjzG;c0ZIYO-sxbt=2OJ;dYru#!@Vq{Ke%q z-rv?%)t5EN3V>s)#g!_-rkX`%>_Ujg!6O6Gn3`l0Fa`#Ug>W@);!{ncgB41~`KdRu zRiqd3ui8=Z5+6>7OMp^^owLHs9NnL_0$wW2@eTkgAn)o2?x4?C{iJ<8UF;>0Zwe4w z5&OuX#qQ&e=(|h+!Y||tqp10N!mpx?i@(ta=XNsNz}Y-K<4>OBeyEy478q-nohVqh zhITpuF85LlY*2m=yNslh%k>URY2;3Tzfn!B#`)YQ-o~7(iXQpHl8A?I34}1Y^I7IW)``2?ePzD1?t5F*WUvbKR!nha5vRCFfmJ_tP=cgcYwz*pGl@&{VDbTYGU~MpAa@uM>)RZ z|M)WFt{^o`-9=}9dKYTUW@!}D6g-%7XO;Ccxe|q9^9Q3I51u)D+Ke$zoqjmqJqkn8 znpP-k^z!hX_^Vu4$mf|c7zN@eu8gX7J$Vv}~$= z7C}xv$5*LFB@~ly< z6z2WoJUPySUNz}IJ zmZkNv1Z?jtYMm;00?((<7UKk=NMc`OGDdtt^!%J?t=tW@KQFCCJLIvBNx<%xygMGX z)2!}KhB%7L#(DEPT?DSBb=G=g%ju&J+DKO`ff+)*IF_;|@)PV5(bLY3@Mww;%ki2+ z^t*`MqGN9COx8@If`8WE3k*f)CGO{&xsO2=TSH^Gesm8pTybZufdH}st7i{#4M}HR z)v=we1jzAaooKF=iHq_#qpz;24h!$OV&F$x^E!kv!F(ruiXhc^t#5=h2FX_OZL@Hm z#yC-$!bX%lT&*FfUpe{;{*a>V*7GdTspA0LXV=c1y4j&}}O6{lz=JZR>s5-v48g(1aJSw z@# zJd77E5`YNzlTZNLi5_OABV_~H+HGPkOw6tln&|SGpmbSNwcf9>$GBgr@V!hBt)}?D zGl$Nb3|@gZYVaK%uJ_oUkFIL_7Smidp}twWtF(~320-H@z~Jjar8un6VUoTN3AJ^U z#Tbf}Oz$Jw&sZ6pM{H#LGs=&jZ4=_f`El8X9hD3vgcL`6OLtmn%V}_h1f8Ln5?H7o z059k@=f3Nq&BH>T=45(RTInZUc6_0C=!P*8%S)FhJn;Gc?D3HW&|a zAIMTK)?R^nb*Vd~@`-Gs9Tvzu(1Nc=I(GSb++BW2*KCl6Dx}@j{GJr`_h7!9Nt&@h zvG2<|S24#M8)5Oqt;5?s!wHaF1Tmn`;jJ0Jd@ERVC_!a~?SYo_4XsOk?8+*fvbytN zN;iHIU81iyZwslyR6h-_()&z&hF56Hn7$X ztEI|H(F<=~HkdrXl?CDg?~{~!Wog=u;<_hABF4rCr$1RRz$tILbLT~6%{muu)_XYK z3ubVl39Q)Uu>s7iom7`=bL+Ur)!Bjf=o9-4d|4yTTf1=mC2bFXOIk_iOa-pi-&53D zuo2Cdj@R142{b-&aY?DrRBm>tEd6`H6u7H1;Fio)x30#4Q*n>v?7@HS`;DVB(d| zrk9F~#-l2{hv${k1Xuux-w!_*J`kxPrH*_M{!-;WI4JmBY>9YI6>p`;*V|T6fl~R7 zq|Yp2z46Q6MsWWdDwP~RNV{dtJZVZnst?OO9W#Q9ijLUgcHC$HSs4pmRIufuB}OWW zjZ7AIGJW&>9V$IMd#%dC$lt$0eLZT!6?{lkpYKk^EC1cRENcKLasYGTSvPw}6DDq9 z7~@n+!jmoFAyJt{6eb~c>Pd-lx|{acNkcSp0MTOl5M)g~Q0y!!h>gSF6N2RvkVBQb~D;C zH3b_;4*88M zGF9-+VF&#QFG+1ZAo9Gb8yoA0f^dL{AhB&)e*DFNaS9Ha3F;itJgS#Z@lwxb?Z2)Q z6GBrh_CWVr?{84B+kX5dg1X2ech77kd!ejG?4OVj&ONW61sRwGyRz?UENSxWws$3VdCQ6( z%=_KCI?4HJTAQ-=wpxq5#;_NTH4y*^ZkON38(_`Z>AW<1Ig#~0i-M%_pFb-s$u2r; zyif6~&jF`M5!*jZ^yy29aPjW-IdLy={e1a9;f)2jxc@jQDBLuS*Z;>!kv9U@o$yz5 z^sX$hNrTnp7PtN3a$IHcwJ;Gyx>%c(qtM8{;s+y{fCpg(U;dn4msHqB*HNN4-}=!C zVo;(w$L^NIh}^u{Kv{3nWcS?XWYfL&t79Zxmei9~dz?Yr6wJeq6%tWMmt{=&JV>9M zwK4xl5UT4GM^9-dF54$D2okD;@~*N;Q;*eN4s3$|EMnx%wV3>JNqQ}-J{DG!$vy6K z-`KsY(0aA%5Xxw&*&N?ve@Y5i&y9*-w~sHPka$8DyEUe8j;smya++Tl)XFqxO+Fs2 zX~7HF!T4Ng-1GZDM>niqTl#Xb%Z>kL6-EmyDzn{uN&WmZg8F+C<-*a>VEIdgD(W&; ziz66Kq^rA~ZKIYsU;tK^|0{9A!9!vlLBn!p?3cqp!|`43B?he^tSqSmEk$6D`mu||F^F{ zHgZ&y_Tc*cQOnxfFdY?^98ebiJ$xQ=hUB2;E5-j8pJTOF+(CMt6m;ZwF`R{%N0k2MTxQ4QfKV=sz;hs+Pn#*l;0bgAOwqIN%8p>(vkKg2dT_?zh8{ z1zX_BlJstl2ssT6vUdLd3yD^u$oA*pe)v0pKz(UwS4}%aw?eap@0f`KA>&bKB)m4+ zQn(`ilZOi_etW8UZNI;%3I1AE>1HH2+%+`FoQHjN73C77Wm3yA5iF3g0gt98kV;i< zLHtE8WM#4EK?F)daIQWA4syj5sYmA6?lV~crl26}%Tw_Vq zj9dGg+|uwr5msBKWvhnzq1x}Z1Ylpk8VlbFF9FoDE+FR)POUosqOr&hKD4zz6wj4} zdB#l5Zyp%AGa%$zkAFh)+2)-J@eZp(56kz89>~_GsP+N!%d#KwilCW>IMrXkC%I&( zNXuWPs-^4nvK;t)$*sUND0oU0(+gY*{D`(SZen};m*`+uxRNfHF<@ic=%hDS1Q82I zY)2X#c<$Lw0Q_p{*7|$NLr$iLTC# zj2LrBS#!bfCWED=x`#9qL92zuFHajnBr}~(#Q!KFPko5_e$cMq}YVW??w<4Je^@z$p*AX-?YC~7)Ac%g(U(|@{2%K`dmB|f!l z|Jy76tJX&fDP@R#jOV@?k|RcZ&g&vz*3;(j(KNfiiq5HR$oezC;P)2!r+qE^{5h$z zFWPX$h_OGu;KYkWHjma9BPwGglQ8kS#*l0o&`H)ZP{PPzLe_0G_x+fAU+@{uAe4F? zv5KT=RhpCkboHua=ZD^=Qcuwh)nuiNZ@EsK{P-hlMeVq&tc?~k1!83rbB1*Z$p%8D zmfwmT+Qzep9UM=*i`MBD6fJ`a-42ho81a~rV$IUf$cOS?(Xo@PYQ?dABW6A?#px!K#q;i$FIRs7EWMsq= zs>oLHJ~yR$h%X<_1b%V&omYy@lmKjbb$hAvc98I_+VpZa`_yfKF-~SNfTFi->jQ0z z^F#^vXBW%Pv;N7YuP z8abAdzE+C2Xf2eZu(XZcrvGJgKjmbn&7*a;pPjTp62t2B*Co#}+y_*V4)`Rcf3Na; zg4pW4Y&3IF^dMChzI7q{5G~Q{84W)V8iyBj->-;A7!I>CW*LXN&qD#z$DKpI}^6vUJf=Ipqi<4M~~_l zv0`h}*ZRVzK7J{cp~F2fcqCy_(`Zp9C#O4a~7ww0GS-Gwic;Ii~QSN;H;;LvDfR2 zy>xge!g~Z0ua~kc>AS}0HjXL&FF%*E4tvEt5lm4-r%3P6$!i;bR991Snj)H{u){QU zKl%OV``7&M;UN1lAHL{aK~cTpe-8>}46<;<>Rr3hgz^tdd3m@j8Dj3}qeU$Joid+` zFi=m*C4X*l&X^*7`f6{`fQo{p$VEFnmVi#^g`OK8v;O*p)J zPIYe^^PyKR=r-_uY{iH{&1Jh=p7nQ;XD*Fh(nf5=>I(d^iti+f%Gv3D&)>NftO5y2 zuI_+%@RG3Jm-+@ykPmVkCtBlvv>c8hT|pPLs^x-*=R+K_W4MVvvkD+u%t5q@S!2gI zZl!VXvaOd#%J1_vYosSFw%sL4F;1=kYgW(3T|lg}_K@mDDA30W9fSkjlO*oP@v9SF zwz&{ELfs?1p4kX2c?C2vu#k%A4K<8wbI8)_+(6*Mvj_?VUpy6NPpBZG=TfL}i9cV= z<=}84IlZs0g=*%T*Evkvf)BtL@}bB=ss<#lg+K*Z-}y1=U4B?0S4sW_1z3x^44#=k_ikA-VI2IXQtQOP3fXVk5DlZAB;=0-TLn#qh|qyooLFFrZQo$=YAv z(9sDpT+l=6lHgkFBK*7eKP?GEkfbnri8?NaX_w`8kP)B}o%n-nRI{MzC3_c83G&aq z$_zu!_K-rCu{pOW*zb@1%0_T&_I=veo&VZuJu|s99pk!lcx*Di5;vlAH6gSzw9*_i zU5B#8%0VlZaSRWEW`EpcydtU*kzDv{NRf|16xt7bsMhirrbAU?hT9~Dxk84*#>}1 z^{0h6Dpt4; zH^Wse!e3$i*a>7()nAllMTT7w)ocKq@l+W4DI@F%yUB$Sc{si8r-r3VnCJEaBb?(PO@=^i>oI(_lp z-~F%m`&o0=nh(#}`>Aaa^<}JSjW=1FYEmZ{1N0NHP;>^p?q=a*(7|r%&O(4Xx4D@( z6uZFXg42~xljL@PxgtJops08Riq@H?5A>s76Tb`*-?)-i6fT-{T$No__a6r(-dG%s z#A7u2mX#kkB8CdQ^AJDGQWJPx57xsD9UmiziFQH_N6T1DwpE79{{*~k5tv^LI_%ps zTEvReP%*?WPcJ7T9`*8jb8+xt(VMAeIjmH15!AHOfMx{&pwe$E+ig@s| z;kiVGFIi&!n@t|Srw0uC&zKeU=$}8cSjd@pEz{DL6ezPL_zAfbJ9RyC5k^w36^i5u z-x-WhRSFg#)67ga&FI{eCXZl`Vs0~qCZxlz$$G2);Bj1&-Z|BvqWh`z~UTjWjY~epI|0QrS$ss*$|C>cd#ZQa40Es3xaYbTdAyTUuD%}K=L7~lE=cx{ z9GGOgd=ku5pK?7Dw#(nT%F!Qr|0~?`;>}+Fn>u6O0`Ke4qaNSc(c0)oiMd~KN9#lA z(ZsZWv*h+!(1WM68}-PVrdtq};rIim3gFFj(s0#`^L$iff{XQ>zEFw`}m96#kDbguSqpvz}yFaJ9T5CH(#H^JGqEP(U-w?Zn&1jBpX1aI{VZ3rj{yGO0q7Dt_X-^DZ*i|b$RDtB@S#zO53HhaxB3~DIumI>>viA(ss$AJfYgP)G7$)0MnobTV zO#u1a(t4d30KWLHeAhbC^Iqe$nvrgj7`kJp27uF-%(sKNhtr5hO{X6=+t}j(1 z?c8TA^ojL!fY(-*t$_wL9cKHs2qq+7-%+bN%2N;D@mBVd;xtg+Woc_yLS8QZfLQj` zT#kp@T({l|;H2)feEd3G4~!T)3rEOo*-w{_;mJvD3U#2nrN^))rKVq5&1K#>+ITbh zK(Z@m5z9uW0ls(5Y_-&%X{o{xAcB5MzcoE2_>0zq9(f*OXpq-bxlKRBkZu(sU~tw! z>So};5nN`ouW_k;6M~?pr+2(;ZQ@xy_msz$yH21`7>dz&jGKx9HqT^$G27u{jGE>( zE3ano?-5n&D0m^IfRtp-(p zW)y&nM2Q6K5H{xS^(9Q`%@llQgF%JPi_z@e=gewgRGp<^^=Xdnp>x^c zrh^@H(*DzP%W~a2QiYRzcSf`%396Y|_9P`Y#$Ss`THxM_Hfg$rJ-;WJ3&d{Ome=gV zWUG-Y+ji0P6ih$;oXK_W7>MOv1bEy*U8%?)Bhl(wT9V66k58Z)0v$8Mx{)(nNh09w z2fQPhNl+D|4jDi#qZQoFpO2x4irw_~b#h`C+KXSYiXH`*Kc?GIHgMoG*5SbGr2`Yg zGhi7isqy8>AA_8j>d(xP%Unc7k`dj_0XFTAOv?E4PORXhAmz<(ID%FPv|pThlsO3A zYWocM*ATwwjaZJLE(|vG4h7pDiBHD2bJPY&uX4{9iGT_DglK$jQM@vW)TZl~LJ8oT z!#6Z$(YNhyQNwa~#)xz@-)Q@GWmAG4n8TD{YJsE_%REE`5Jeahm%OX6g%6|YUq0@l z%CZ9%Oa}Bnvr~H-Q6W;}Fq`iNnkM(x0wVb{v0u>ko!a|-3_}iRgGxO@B*s@><)pw} zbU0A3(lkflSnTP*mBYMR5;v48KE3q37&e=0V?JPuEq9|j=^r2)65lQ{QEh^yvSlfN zK^qXhYfO<@fTPQdAfNy+CIh6CHQf+EKI9o6e+?*z{*rl!PQwMsw%c|@+WZ)WY&yqd zr#z!YMRDMzlB42V@5H?LouV6kZ?31tEmD|{>2(esBnKl#Y7Cfhfbc$Go}K>w!ZVsB!nVl_Es5{H@)T2_H(jz^O6zF|(_lmXe)%;)FCL@&b9xR$ZT zPtFZ{HGp)Ak9D-FGe8g!;8J$Sk+c4zHU>YX6dh2XvFeKhK!x+4&Y^YTN)?huQrt`g zyX>V2!tf0B$N;idw!jTpM<-Hhd6+E3+}M}~!l^;Bk-QNd`L=tS@~9mfGJ{c&z(jWx zBNo8doeZVSr5e4xT6W7lwQ$w_I-VrH)ln^5dMsrsw&T^0MR~&3wMO7tUR6PxOxWTk zc5P6pl;_YTzwm+maD>nnsHUVTP>ivFJh|I}ccw`+pJt;P@}s(%bbm}@MMXl7?QE3C z7shxK<2)LIpO`M=akoIqRR9IQZiRhppmC3|QM!gC?12$OJu_rIM30#R7NOzQ4SL7K zH*M+C(Dvw2g#cKA4Kax?!*(a}th?vRIH^2r{Ax(3II4a6xDXY+U&L6Ic;+!E@-r$W zb)sANm0EUx-M&LvwZ_}@VCvdLIc``NuZjoF!&#c{el zO6F|3>%PkRrIvOsP!3s>zoxd!FG2=I;fzMF6SG7L;<$9Y@(vHCQqi| z^X2FK5oM`k;`}jdq?NdVWH7(REOOuJgKMXHyjv&F;J3!FD^r7xjwqKx#VeuCf9?YV z2;96N7vAQ?Z#nf(HSceyO{1nvG1D7+#}^HE7>dtYezX^pHrrdDm4VP(#4n#YW*7Mv zp8kXf8!#n|P#ObYl@eD*DCN7}luk_VyT_)^Rl%=A+hdJFY?&qLJ(bNPtcxYn-_7?w z!kZ-2maWBtqA42XB3F6ueA@cJ?4%c`PaE>4V7`QS$h~v&X*SQY) ztkRd-qqAa;z2vid_CZ@#C1}hJ^SPEEECfEU@<8c*7lM{DmPRn7`7v)+TcA4(0U+~xxY&jd3t8|twbSSW z<`!i|+68J}ECA#{r40#$Z!Sb2r|sco<=CO$FOfr+(c3AdcR3;QYe(Tq|OcP}CpS>+tSZAUGDL*Kt7K z|KLesXX7xd1u(G^bC}z3eMR~ac~19Wj$wg=h$U!;074++KnqYdS{wbilm^^}VrP)e z5AKW-TOaXYX2}AS0y$fDXJppll%J`)Vu@T@>+7YCb1(qh^~Yn!2HnZlj&|g%2EwG4 z))d5EHtBtKB^j8w15QZ$VHI9&u?&~gsr24QaKBebE@$Xns4vC&!l!^R-8h#%z){b@63BMg zjm-v4&^u96JMbg_;aHEdt>S2)Gxo|uSqi3ORKt8^RKJMhxU0eb?e4Cb+Ge1tpl=z; z>M0FVLKw@we~2G)zP=n1ku*M7q0eqxC%p#U?!Eb+w zFPlUh@_N*Iq3~C?TSup}#kxN1%RtH}IR5NjbPbwSJxQl%9d;FaZ{_+6Xjvc?Z0T+p zZr=48I-d#2W?R-w&-x>FjXu>Tgz8=zQ8reB^cm;9=%AKrWYx;P4cJR6=7SF=9@UV= zr=S`MR>?ncF@0I$ZigDzUl_%VQ?<)%?!HobF|`8V8iE-rK3fDq=Zsv>)iJ(o&y%!Q zcH*P!Zu16Zv@|ZSAzf;MZ5rlgJo$ z1tLKm*oWv&veBC<)`x`!iWt9x;tS4q(j8Xs7Ds69Fh>encB!tx)|O>z)so9=mB%{2 z9^E_NM_Zcwcp|_l$;%4)8XR%ci^&1<9JaEVt7!0`-wu|&uiA1WhrbR1KIL3947+{E zM7y(I{c-U*?)>unK|`WXm?7;tqjGlf#7~*POaHzp`TVqgm$5!LLr_M;%(?Pawso;l zztVidTk>}=w5^v@QNmIf-&**N>{7ZT!NgLv>wJgS_2mk9n6j?(3>*(Q5S#9bYE@-u zjl9@kIBj;%V6J46Dp6N#HJ*2Or^P`@jW#jTp5f22&iKWzDQ8+%@iTPCIT$Ri)Qz2( z@7?j)xbDiZw@r4%4)Y>V!_ha+s?!vzGe2-lggfBHkx0TlU3SbF8^d+@d6&Z zPDx=jv#(Pd%zGnnEp&5tOqjgollZAM=g@77@D`U)_lp5f%w~Ilp{r@(xnACnfwPkn z@>u*fJhLSr`O(Y--+2bno^ctCZ~0OI8-#|CtIvWGOk62pda&VqiWHeCJTm7LEQGWC zmS}3xC8o=w8-mk}vB0LE^7AJLQWZ6sj4*4YFB!m=0PuZ>1QdTkO~$N0#!aPOr6!=I zRa^d5ZxJ0b%%>=lrXHa%1hP_6?f%woFj#pPEgT$ zRQ<0Dpw>P~)51K{d8X<+Qinbq!59ld*S(u&okg}UP2o0G>*hQ;+0GeeO`$qPu`zr6 z$VR>GGgeETx>0`grb|oMj90jF+`4HcFAMUjl+qXNk3h|jAM`p(VxwA)z>!DcMxItz z8DW$>#hgz`SNZmVx-xn-0_9(!Vh^D-^VvVh0i>KHQ6B4V@$HcjvV!~!)({!%ZBFsSbkJ*(+tA|CPiH+6j?2RTdFAAXyTk5XtudzH8>6y> zt*nS6n*&Dn0qF|Sh<-%N51ir-IL9rM&yMdYr1|92d*6y~XfjDwpS@A= z`@r*vZ*w|I&P<1hXP3HvW0nP>&Ti7@xCCTGhmQ@5sq*#U_fndslFgf)>TuLYaGYb1WSHP(~L_FOc0E~@0h8~-V z&KOf`=i5E)YI3bOz)dP~)RC`e2r=s^0*#fFx)pnZ*H$p?5EqmLTe!5LWc&wYA3j+- z#o0jk!Q>Yh15*JceW_2Q_r)XloI))7zQ7y^;zI+E@q#TvD5}=}ciWet4YfJAAao%J zM-l=6e78G9uhM*?WRQogAr~(-Iokvpr$lmF7XttJa<)?^m6(=W38>!~{p_;uC(U4F*Msf^3e&)oUR=s%!>L+xB;cFN6a4lg6&1sVggY}y2eMt|6)WJ-z{kX4Fs;sH+PnUQ4391GP zfcZMdv(`Z6Vdt68r_Zm(lDq4^V8{i?n;N3|pfTL-J9Vu3+I#I>-)(}U9FS93w+Va* z#9qO$Kny3J_O)XI5fSPGRT)F;-F7cYt|3wN?cd7FDyocT#dFAZeBFy(+{nu$vS=vg z3OR_yUAvhf^j)8Xb!`V$@#!Rh5lVt-C*?nF)BH+~5C{XO=pq9Y1x>wO?bpOL>#BYny&qNzfDjUb|cTk$$XPs-eN^gVfh|b#x zr@#4(;>-_yj1qBA<7bb`*Jpp9&ldkaum2SVE29y5gEpqT*B{o7UyKM(sMN2LJQFDB z!SuIR>wllttDk?WbHot0Z6Gg37(H$+kQE$AT>nGW8jsG0)${wK&gY|J;R#P{y%UxQ zR+eOkf6Dg?57uwDO0oY+;Qy1rtYMth+Bg+2Ib#%@cqKAAt2B~fx>ddexIA%2gxy=J zWC}W2?)5g#WThmbqvU=s={t~lp8eW#)>(1dIRdR4MleVzhM0<^w_?mj-cd+n^cUCb zv9&0A?!2wFepwd~MHGXx_AxJiTj`{dGSf(%_I#qM^;hN=ZG!&G%}Kl1^iALD4_Qft z$C~z);if0#hu2LYkD_sVXfAwq*tlP@rS{C#ccDeFRA05i)gbW((2kWIB$sppbNApE zj4fX<3QaRp-qV2^W14hOpX`#EzVFhBF;kLwVfVU_K}`x#m;)aUbpa(3_#60{|2A*a z)*C}BJRxX<)YA>Q8JJUFEs_1R+iPks7n2?IW#t4wP*B1P93TE(ik3PVZC_#0oGdeg z7|HXTT;m~(5i+jo?&XdrJEjQ3tVw7A;BN-vJWa9h+;@lI<#?@_QcW}zZ|t6-*HhGz ziw*>4w5;Jnnq7AgHd1ofp(szN^3A($DkM2{HnP7}ep|G9$NQLbkK+RqxGuE;@z$P?|gt!=ORZAgRL?GCoL10Iy-%vSjaC2tgQaEIJY$Wb?z zW}osn9vf^BGyo;XQJ(rQMjH>M0M-$8akFGQ9U1?!&(n^jLm7(>uW|%TB$;VNh*N81 zUw!ZhZ&I!4HIvdTI$JQyX^#F_M$F&!dYpyWnf8gu#s>LAZSO}X{}%scb}uvbBFk07 z5yy+>*-uL5M@{tlGwk$=A^{EbyM3Sa4FC%B-@A7IyoMA_fRhX<8#6)psPGF#u0#Gx zPo?V;?RJ)39b*G^zj3rr1rJT&wjcKhvVp1--fI^KsV#e1-X@vtaEde3-v`?MSK76W z&xd-Z{-fdek@0RJX#U8GV{$3rEb)J*e5_kL#o~m5EZQeb{ z`TH9O_^H`4Le4~%S%KW%8Qc5@7xm%v?D@1w*G$7@-o^FjlXZ&; z&v6$uEl-XY6>mde^566ZO85}|e^{r6=#c|@ln}e+5xYmU{Vk&#F<8-CcWz{3x-$^b zC+?uiwr2IZo?AYKDnS3j^z{U9W(ufInj(>cGAO{fYues=FeuT=2BOv5u^nCnZAo zkO58J#4K4oG72b)Hp1;g@T|R9r+wmY6g2Lv?76OmHaQ;atQnii68OQqw}XGcsSKM^za%9ciD!l@rcb&WdN@S>P zXPjJ`2*+AU)5sCxy_Ne-yR0I`Ds~BrRMZEs5viH3RqC8C`FGIm6mBejMy~I#k7VHS z#xS({VV%eWQ(NYrzq8DJ4#wHG&T=Y0xkVFq0X<2V4q~+cI)^;pO6pdFuL8zHd(}-j zT;tr$-LQy$x@s9YZuDK}`ZQ@EVJ`G6NMOO=Yg@)-iQ@1U!{+%;P&G=P7+e;6QN?IOLrNi0 zPo#cs3A+m72jLFby9?y@Cs$DWno!ZLvm}oMpdQd<2jl^aMEr`V>aft2 zIVFH|yr}58X&C$H-V=7)L|jM$CE2(}QYYBCh~t?3dFP*sNvziy9-_ zq`(eygPtyvPE?{|Z=8o4-JMh<;=R%fr!z6b7T2&RZ7hho1r@z1)-7f$0&0Etg~EJP z1#-4zhnOpS(a}gag!5tWi4FQmktYD5`<*`l*rrUXQ=yDt{`hc7)+DI z{-33h=T{2Ff0xD$>{*!6y?tM0RJX^7=zCh9>YqufxPB@2?)2nheKtk$g70NyHosbt zKSPx|u@j04DE@?g5Bl?*R1_t5G8+QF5xM+eb;))2&ZF42L}HETfVAT~)#!o&hfE2# zmohwKa@?vrZ$Cr+>N?wO!)!+YIT5&DyS>^9GOd&3iJ# zV}olUXP-5~?BIkf$%JX_L+{5stGihh5vth%sk@Kh-Xh*fYc<`Bge>)~9Bzk*4Je_4 zInLp4_Yo>G?MUlbqL!N_74m_B$KmH#VVZmsMN0CW;5cxtpmtFo@f9D;=JJm)Q|R|} z$pG9@tKaq-#yrMCDF-!kA8Gjo`*Z~b342Lw^(7)eci&&>-THyl8t&;tpSoYeplP~E&f*k1`p;VYiY`Hl1QKZ zn`>nh3Is*Xk^#<7mbLrJ8?t$K$s7+wGmA7K_&I7Q$vQ7*c{n!7JMFiWIaZV0LJw-) zt@%Z7HhLHN*hp4ye*qaeOoxn6_7~Dps(BEH-mo#v_5M&G4tshl0#B7X%@pyn%-9`l zt95skn@51s^$Prn_WlZkjvu=m0E5Uo_>?Q22^sv5@Ok^l=D(F6k26wYQ|J`b8Lf{0WJJX0<#$zqfAfzo*$X_HXH8FyM2lc zn2^W)yNj1p#6c}`6})948&4RZQI24kE4hlmvF{hhU4)U1buBC%S+5I|=nR6}a*Ddl zlR%0s#Hd`8z%KGHSMUB*_EIjJMOI+l#Mr+j+a8528CSW@6;!wQjDuUpgv`e)0hSoQ zC-)E{H~<3Ox>B0+w?q~9v-~AkRd+l#&(9C1KYXvzVINVdTEy%fu=>0#TrxzxIgnn> zp5M+EN+e}U_>u}{ML1=T^eb($1I38%Ofhjx#XM29S}da0FCX_LCH1$_C=Hq%X&zcT zA6k#;IX#DQo8mL;F+-nz8D0FUV&NRLOtx*Vp9-)$+|a^(8^#)>4g)(t7qTlLocUWPbkkDaD|;ut7f@&2OFSnhnA`@7npWH5dGs5;D_9jo6F zhj+I(v6%=sA|j}TIKG^(BvhK!LBBYUrc98X!4@|Kr1Hl~|Ped--gfmj655l#sa5=ntRyN7xpj7_#2wTTeL67lo+zr#v{(uTR9PF-N7R=Sj!0Jh zIp#Wi+-4a1RvQGkY26<SZnEbiK02(44c&lle!5n~%^{50^)P&IPn>4l3zI>{6i3LMQmr6BPQZ%80 zz&HGQr2w$!F^6hsD#2wDwmH%8?~k+<&Qn&k+{UHig8zy{gn zBWgPX21g2EZSDc17Dw(Q)5k*9u7Tn*>x|d1WV_4B!CPS*`6Jz2$8vxI4K3&Huj(O_k~|L* z(HajVG65iAP6N^h21v=K7Ho!}WrNw&Ix9s{Y_+Dp#f(D?sVBqeVY;4t$<%I3E4l@N zr$ulU*`TuXossZEInc4bNuFw?Q%EI}ULPrb-npDh5JMpXD8Fd$AJyKSnka1%laudM zGp8Mf5nS5mxu7*?WT*q;5_{Jk>=?AzPfz=WZTI6qY9#6a$8Xv68WM`eBW4KHl_qs} zU@|lRFVdD545m3ZMCiiCWlGlaflvou5gSCt)>hnt$!H=?Ll(R*H}79H0GLE_7BH?I z77I)dg%iO*(FO#LQ&k+BP*;(9!zIlTi3 zF@5nBL}z*3B<9{V_G+I}n|PF~_7ne>bFNBB&9SqiZjM4h%7e;7rxy~@o+hP7Ajmas z@7$*I+6Kt*)J^p$b^V>VooP$9{ZCTmn8e=;N&j_Yu;lyQgfZG|v_Mr#p5(~+OLL=Z z^F>pthlS&Ri`DBVf8U+I;kQb=;;8cF5uKJ27io*EhUejcYBsuso%7p4Nr{I!ho?Em zvzveW9#CEeZZ!u>%AG&#( z>j~%3Ic+_6mc*tZ>IhX8CG9U+dj<_LMYXzay&(}pW3J>xG57R%hv&NnyzK!T@t+g& zDs-~<@>|<=)vtF>jQP2&qkiyBP+H@wd1a9jz0fA_MaM5b`wuQ&<1K%?U6Hq=dvfGd zb0o}MIPKz!|JX{imv@=4{mxYRW}ZFOOHDGU*Ihk+K39ZbAe!d4Mv+Y%noQnq{-uT+ zor5Dmp$RBBZ$iUbG3%(E-8~7XW%6}eeEfb(U~VgLk}D>_7ZK4GS=#v&6BCBwyBG=j z%~fU7wkM&3t})kC*{s!75D+Kak`Lo{cJ*Xr+A1us*4?W72_!U=83V%52*LA((Rz^8 z2DDjJd^9g7Jhp>dfWx5oIXcHI*LM}us`;Uc z0RK<#yHKS}eYe-OXPc?tP?ffTyaOr(a=Pb0_9x&Q*Jy;`?)APv z8yxdY_EcqnYR#BHoG;egB4LZLu)j(}sEs7t-40!`8Z>to@t4CM#beR|S-25uV3%7+ z$`c$%D4az69o!O#g@~GhCs)Lx5Zy*<^F8pi^|BLjX0ZA=2k}ZXS80BT&86k1P>Vq> z?)#9$D`x=$C?QnZ1>p12U0pGxZ6QUxYDUs%1LAtm4gyGx z9xg~bzLj0C8{^cfv48bT4{<>4>v`iBf5lY=j*P3p#E4_FA`3IO&;dsVavI+;v(f(N23>Ogi{+4(H+vaDg zQZDP@8?uN#CiTAv#Ur%d*4B4#n^u zY(^yxDMQ(t%VgErw+V7%uo-*GfC=2hbI&4KxE&R@N{yngjjYwQP0(MFufu;;9wB9l zcGl=3{Xh~%9zd9-U0sa5`{jUFt1P^*cY0JTJcn{3g1xGK|KZY;LCFp~(?cZCvm)zH z(<(nyUkt}oV%Tc>YAt>3vS4iCL+5Xd&e(qomgTjK(WOka|3CoQnab9i+Rsf{&(CLn zC3v+G263Jyab!rksbkjv2CYv#!zG_-ucthG=RM3jZ@fEGo?f2wyJqzN!?@VGc2xl= z!p||&L(q~)cs{54%e|s9vNnyiv%LO%eazai#adJ7KRiPV(&Cf&tZ=n{H|}BaGG}$_ zjgcDad8F+@{u2*z^!{i5wy(Tn`oa7^KRA4@E9y4bES(fE;O}Qm_a4P)<)XLFHIt|E z+*Uo9LspN*G<7i8AS4v-8?#P)D3d$@B-<*qj;x+ksMBuBb`)N_{~VVaN~9rYtXMNE z#XqRmvUtLaK}W$r&;7_g}fwy{w2;d}Y$G3eC=Q(2(GfG-~36q|CxfK!xpw*?^8@xWRPyMYir z!GKz4>jVGu$V%$gg=SvWO`rs6Z6VjC%|=o#4egtTezpN8V2~jSoW~sLH4>V8zNOP? z7xt9hg0c+5h${fBi44iQ&FYEm^5Kh;``gmGOgBFH3Xmrea@(S;W(#=>v_4eF3@4ujAS0$W)FA7D+~?ytUc#OlI(o#G zLv#>gC}7W#6@{9XiB{AOIeF}QjA3I=U*IK9@rrhWsv(f**r-4-=%1)q;>QU|uqm`dvQVH(x>gqs1raX@45OarW*^10rz~ z?!uwx&uXroz&BG4kdk&H;h}cKb)D;o~!Pf^S7pe4Qlw2CC!CP zaCOs<06pnd+Z;w6U_joVrmWrA>JEr)%YM=x1;jp^zx=3|Kh;@cIpmE@+Mg5mX$V5f z^xe~$zyGzS(Us=8t>>>&!=(1BatAEO!xaC!l-kDj6T7iOf|iHhF5}|I=V2;7ue*NC zcRpV^{r$&gr{yGkEtACQF8Vh^VG|`!RL^%@*Dva={YgF+^uG`cQZ+9tLShoX-_Kio zx>?U=?!|fR!ZD+|pZr?0Cvnr9cED3$c=2uCEXH@Ey0;+@aV@^=pZu5ow1M*s6=O6H zK=1Iq?WG!jzK!`SwDoa#E1umvgXKZ-N=CN^(B%1(X{Wf4STT>*Z6ux6rt5&5)Hg=Iwan2BEB`5BT+SXEgKq7y3R5DmF^jQx zu=sOZ`$=tmp7yBfDSvbpcoX*)?hXE=HY|Eit`IMH#WmYcN!v1KE>OJYCxZ2|MQwgd zz<5K*kth5RQEjR?Cm*%h9F*&h%ymfa#Ldymw9q48X2ZG~dm!@Df4FFO&$Nkad03Z* z^v3PSj{uz%y8*I4laA!44*)3A%Q!5}MThZ>lpbCi0@c;P>H@I<1eCr8ET(b&GeM4lNVV)mqm_5aJ*=qnUG;zr40Qx9L2S6S`ZT;Q@Ms6bajts7~ zB{eU@2K*4n34-%y#ljN)@|8JUI~B{3wP-KD{FA}a$W+D|VN!g6Rgo%LSH?z|F7T&PSC13=Z8+VdYe;CmT;>e3S?qPep`869InZ#Ta5Xybl(7 zkAOHZe0H3l&Sr6pw(5;WfaNJQ4vE?55+wj)&$mkk z+z==A={gq0TAZD1hXmq<7e;QHp|uzDvX%pc1ZMWLzQDQ~OLNU(7QK)9Z?qP@1AK9e8~wnJ@Lg#in=3I z;T<~}eHQAhi8m7%PR57uJkJ;al6PN8k)0W+NKE|Qk9lVDz8f{7wA=SP`&H@Zc3oyE z&U%=-Po??U=Sth(t*X#$#}iz7DB1xRePQLO@i+d|_R^NGGfLhKJ2`Z~X4fBouJ=6& z`t%C+QHG`W=*6E0pimBVY%6r+$0o=;Iou^X4Et@%`O)2LXzk4QS7bZHJJ@@>GSZtP?u(ScMi-O(x z4@}p7nvr{s_Y-j8=D*IK=X;^IB^R;vxJ1mjZA~|#!4f)?g@6}HoRW0SO;W2@-nKIw z`VI0WgqK8P0OuQhL8R5FNEu#tIjG{%thJ8okqqUf73fQd@p7*5GX?`N*4XF_CFsDymL%fKkC#MhTfAU)k9!vLo8bLV&fBt&Ls zPO@0Ooo#-K^tT*eNy=ofP;R7c{p#l}Tq~<>HK6&;oqYd|Kr%FmI^fB=B?T)Fuk-7g z;yjd9Ep4T=*}!IB#kV+}0+M5&w4jSR8OM*5W4=gw%z&3UOC-~b{79g)-?NKer6wC8 zjETpPa5Tg{3Oo4DXru>2AIZ(t2Bn@}xfhj+_EUVoGzHj^cq?%0_EXHMVqHf%jU=kl z1P9LMOptaH&)4c+f$sORkEwC7WpPmJqZBtFG>jrvHQGojwsKV(&8!v7y6ScO$h_sF z_ls}jM289=ImF=V2NlZH?})M>nbqHrWaofY9Ka&GsRqn9qajD~zj4#Rk;x25^6oXl ze+tMbcCjpQWPb~r@UlaZ8~}60%j^JJ(=_IYNIHY3;8uygN%kM!-$zJY%1hQMIk=He zT?1&2 zi7z(ueYtOJo$uj0dg~&qZ!|)E+f>Ut=!4*#keA-ULM96sy-w1DC^2LL0;?BuJ|OFq zddtt}xw!72V{-iYm2K1SyK&!Oa8ofMc#{e!wsCbKNKSEXA}Z1b`nqB1`cYEMr`jyD z#w=?iA_xlSai(zZt|E7D-gAe{B(ZAOywZxo&jzU8t%Z-K^=#ktZMDBn+5tnW8a z&^j3|Y|rijT8)reQPPKhf zmeiZ3_`}73!D;>Az}L^>Gdx6iiRaA;t2T=-)}L3)N+M)F*k03+ z_Fx)cdd#g9r{3UFE*@7n1L`aLJ0zqPFsa$y3MNrtb~XZTB8Dm1B55-J?m-|cro$!0 zxdno}F$>?=#WcOqgx9RYFYXl^K*8639iK2#AD$6V1yty)ChL;MZW3IKB<5t19yyQO_! zJ73zPsZ)e%c{6D@^B!F35zn=5tFtyHyA=M{R_f*whp^DYH>R{LXP9wQ3C(rhtrK5ObpF z$-~}p(NXb2N^IslEe_lutpbg6&BqogQ^O%P8F!*I7Z~|&zQ{M8k@WrU&ITW~Z{qE` zB`)=I#dQtX=T>)EtIA`i?$jl_<=-;6akdtpk)vzSz%i-g{e7w$s=t+QJdgTHMzqSq zE9;?j_FHQe(s~2p1RvI3ieB-$;!TZ4MDWSC=sydqh#R1^cvR?n3T+dx5iU$CWtFiH z=5VjJo3XKVbDO_{x<_G9l6WhA5Eks=)ul{y=}^fQCNQnRTHQz6KlEC@Dpo!M7@33_ zI@Ao9e-tpz>VG!&MIBe_9mjX&?VQNs^-BdLnno>H?5j^Mi!TAnl7btU2=E)fOZ4oQ zh}rXE-TM5#d!CB%<9is+ejEl^n!QWg{fPINX#Q}Z;xF>>t@7^M@k@@yHj-MR6=WK= zhn!$@TqxMKi3KEjI-Yp8tty>%jM$;NNF99p2SxI>yZfVg+I* zW;l!E#_?)$H#p1&z5of{|I}_t~Q`<3pat_?oN^7?kB0ik<6{?UoW2OR@b)s_I6=i89sTglp)%j>L0GeaRt?s&P#ai$LRcs+3JLvZ%-0i zil4%9Bs{kD;M!4J+#XV=>`|%{2LxPuhL{b~WQYw36dUk84DK}j zhii(ZfUS`_Y!5g7gPGzMJ0LH}1j;5lpiweq%$--&$`!#qMl6lfZ~izZms;6P3=Ay- zrWsHKtF9~=I1o%C(nJd@)f&!hPgr?piD%u|lO_Y9^DD4caEYTuEJ=*Ut9U4afWimJ z>Hd!AJ4tiep3X`B6<;6}6~AT1EA*zeuvz5g7ml(Y&1|`@)?L_+c3U zF!!u8XxxuBO4lV{L@YtexssGD_RF}Jp{b^7>9R~ z8{r5P zV8vLdVRS!8tL$9R;nh=V@m@&Ihgh-8A{GN8kXV$@k#R9M$-qJpl4#|TB_(*J{2YS8S<)mt8iF%v#TSz>{9CID? zRf9cvJNPrj77z>wNsqPXLH*Bi0CM199GKybXJ9sIPA_$crgf#2C2{ca!*fk>#-;`nF56s)1#OI;*-jz!elk|6Y>qpTC7B}$c<*3WUlVOaO$#f)D|{Tnhmy# zTMkL|U5V@;Mc)>sJ(>F+BjU&3Ixo0RMVsN1DN^sLVmYYisa_b`7Z`Wsg=@E5M<0jN z(5as@XML`JG&ab0c!ouF%9~{}Ek}sJBKchoGJkN~Zh^4a3K0tSn6nQHuW|`#kTL z@hyMMQ@et1dI=~LUZTs6zt9JIP^Y7uoPpTv;T*S-c^2WBY%S4~Hi0}If~iPhND&QY z#kTvzY18`*ZLdOjdyi|hnJS4#Fb6Ob%$;)aHdqEins_MX!iQ+5D0;smGUi>wyIl70178) z9v>b6(ulKZUFU|7Uo=TEoEB8nmmw}!x|Pxp3MpV{CI<*Cm+kh| zbFL&qbc<;%V8VEbx1vD1SN7XQ0b5IwGE@2s`Lm0)&1nk?pc1Fmimml?WOLCOK;2cW z*iRxr@Kcj~2qw=zY$m=z2&2}p&!1v_ZP`OIG;lWV%nA0Os8vL?c>J~6&HT9D0FOCOGb;sH` z>+~4{fW|K;D90V%@lSneY14k|Z)R^D)a5CSySNG9V+#c;H8-)b0J)4~fi-{{8->L$ zSVu62!WYP@2)ft&oX|l_kEeJ`C4u4?1i(CGuvEeKWnXqT37T9v3~IGhDwXZxNcUZ% z-dQzep0ephcGokpPUR^`w!!F6!DPJpx^0QB=Ek*uya<`G!4$oE4aF>1@@XP&!qiB6 z;oq;Ss6v5cnsdgQdqq~&=>Hu zZ}G5oY<0R#^Bde-D%g87blPExdwJMFTPyBNfc5tY@?s@9M?xB9Ut$%O~157 zeb;pSsvD8+qMiEwrR2>1{j@7&({U^Ma%1`;u&hNQC%9m;GjjbujZ)ix8m0cDrsKT- zT_(=4BHti+BNZ2S60sZCJchSvD|WNFB&$3aWI;-}8+{ZcS1@JUq(MxzG?ANbmWaqz z;R+4>Znq74`n;?d)IDZ4qR9}MhsOfxiq{MrlJ_Rptt2KlqR#WNr~JH4S2&Kt9{5Oz zI=4M-nxhdSD1R;L&Sxtr%I+ypszUpC82U}vq@3|Snc@jDiNZ9Gr!HlHuNHYyde}WY~h_(8%99yS+1kSWkBs#A&dQQNQX&L7!D-y}S#y0jkhOY2!A(34T5du;EU7F61P(n>oeH~iJ-=@U5I7$Kr~F$|z}M`JU{upE+kA9S zNE4${MeN8#raj(iQ58v!FdcUE?pDpAmb`-5YI=>5jowhwjn`1JIa%WGc`?G8t%4i9dq**Mi;_%`_>8dZ$k)Gak>0}{!ogZEZ=Aj9E^SWO(7Qfimle3 zJa^K)A3SZmK1;Yk^nh!-4%*-~A#bE?7E|70YE~0)pMZtY(#vNGcX4(xztnQLN=7;& z7>GspHscdotq$8rSp2#lwZ-T~C$7E?38wo#-K|h#q~;!}Y%*V)a3z>c-0^DuE4;^{rQfqtfmAU5AjK7J@1@m;WY4tx(5B z?9zzo%cY90U!~HB)S1u3mc9rHPZs;$8{4+)pIotfB{cRIiYJdEjNpR{PjktDec3m| z>;HMnck!Lcpc_lma0xgvEa3Vl442)w)2Z^+f$Al~GkkcPU;P2zR$RVQ(FiK9$~+9i ztNjmA73xA@3JGCKEQ9Ti%}3GXA#saOLzBExu^iu7CjMt{&HxLnd}&ehf17jXOXWe= zX;+yhfr*#PZ%8|yj(ERR?04t)#7}d4Nk}|3rCax#NS`p-A(Y<@4>Hv?eDZzXkZnIM z*n3?1cNb|g|8|h?3piC`3+?9E@U-=tM5X)Js?d9q6`7l(PD+3Mj+Zd!cNkkW@g*o@ z)VoQ7hlNp@OmiYB@yAM7@dqkA`HRxo+#ieTJR1O2W*&VGHMb&RI=3uIHBYqJT#d4I zQn*5aJjKY^qUAF^sQj6)Yjp3hlB6m;B5F{G&_td^ieLp&psO;aO3(GqE+hVtqRY%J z!8M#iLsxdY#ovk#COfyO7T(T3Vm#N4|BS0ESt##qktY)H^0J`tXFjO!Ax8anTiOqv zsC*KRGAS{;$Tx`c^J!vYhnJ_NdN#V@)A8)sOs#t2 z-5;u6u*EnNDjguYd>4>7dJ-ris-T3vW&Th4pWB*+l_`fUw4;^tI&Vs z=3g^oeZK}xc(w73vi`_4ml*q-|2#s$wq#{aH)L%HYMKUVt8~=Oh7q9l`HUF;Kb%~D&8JpGrji7b< z=4j_))BmX^bu!wIeV*>FlHktD!{Id~4g7?cG0cZSw1#+1S3nbd#mM)Xwr$d~NATA5 zSk?*uXrGxSo`a#S2>`+o~q#@#yA;#o&(13WtugXfAe~c&N zHaJpGE=w~x7e&Wf|NafXoLcl}(*;tD1?(i*FD0FoTAN<#-F^kN>(#dfU{l&mm_`Kb zKV)y+Q(Y|SeL-OD@DBs|CHe;uoJrurlEw#0%kp2479az~67Na;PWf=0=#w72aQe=w zWzqT9$3t)=NgsD!9?zs;RkB`qef^J1Ri~Q6rweN7y8n^xFYIzH6{&JKM^gT~kG$cb zgLp9#*M)Oz_%&MGEiF(2{j#`MRaj=8C#ap{<(p>ATeWSsq|y@A!a zli!(AM*0qq<;$zG%&bwW%wn_$x4J6tWOlfy!!_ipKfj_JHl(rsw#7pP^c>wf7i1{Z zxtw8WK9N5^8V$Hf{x0KP`HO zp(19_s(Q4lmA1WE{1q6A0s!wKVF$}p zmZ@-Kdggj<0c*8!XWK)0Oz?YsdMuF`H0>@8mr-VpUOpy(GPmdg57+^k(wC@bVo-#H z(NdGft>;2}CK!M=ysrl9Q|^END=g!kC%y9V_K@~cBmn^2`%TMhvLr&EFow-@&SRM{ ztnaP2Ob8fYT8OImQ5q4n3u5%toL|Vr*3*z<3bqTjp(3@Tf)`7|(O^gmb)d=o3hn(d zJq`C+);LYwC~m!mhJlmY|rclKd|ToG^Mao$>n0XZKY1`GqDY zcBZY*Xr%UO-q{57?5po;))6A|O2LkK+FRZt1Ht?VY&B($>buE2KP_z`t0;9`S7UnC zynZq5j4-yIk;~v7YTh{Zy+8t6-WUA>Y?@LrwFi%X&DI7S^dWerN`fR#zqoN;s`J5d zUrP4L=jZ6y9JtSXS~jrqyDsxpD~kc?YXn{71)VI1tmTi5M@HurX!`z+ON=`}e7c^ZcRKCl-R()O($C$a1Cnr-~U$aFMvw^PW^H~~F zZpctkn-NA>K?C5@@&GNW^-IwbpTq2mG?!r;Xu~q5J~mSRxaHN1Ah1y|*&}e=#@P6o zWy}LFCTg$VF2wUp0oz5pfSycur8>^(kdvFLG|SwyQtm9;Zt7p|OW;ADduhDVo;gL* zW=}2IXhUqQL6kJ;|LG!-Oci5G_w~=@xaLzRS{4vvCE@TeIcXJ}b$Q zFb|lZ)E=@w?1S_B$Uk1S&yf@Uw_w&rzpEt zZwt!^YUGoUo#GkSo4xn75i6x*kY9+*yGe@`T>Jm3^he;wL}*$x{W_#m0etmT{Y_p0 zIU|<0joBdYw0w^yfAC3#z8Ubn3jG9$^sAX6TxJW>>)8Fvpf{mL@}Fn=E2sJ$eH&8P zMH@i?9gf}N%fZCDTT(Gkmay1m9XYoNsKy=^Zx7?a6+qyr z4QtH@oSwOf>w!-CAx$-Yze8^DF2qO;Q#~ydIeG})F+NDPyJ?u+3;}j9*^1_v!UQoat4mtP0H0{ zt$9meu|V_tEhCBK-x|AJHQ4)}j=ebNwFJ4l$eA|6#p^)C0?EK|1;TdF|4k&Uf02NxY zwlIQ7A&C0^t4O#bt1Y{8as(t0Uh+Ml-ReZ8@q%xK>2@v7+U^1RgaoxixIhm&I**ly zj~zvv67KL`5VSzL@yaG=jg=FVEZmm>^9-V^gn|iz8X;NU-shTt%8m`a{eZdEm6o4$ zTqzEgGp#$2MnL6O@nmP?fj=@T(4;Njfp;!eQQ(j_Lt*HQG|P4IB2ZCe{0ZP)p~to) zu5e)&;K|Zh1i7moi!`2xB&JII6cei{g&?A!cm0uEimpAOseJU5_3QM#Raw$Qv>?;< zjtQ02Evs0zWT4c#nvdy!F71=@pz@r<#;TZ~mj8{?I2Xwa`ZLjOK@C$KAlZ}k_mkYM ztZEhs-1vQIVPvE9c1FQ-c{^79{nv_aOJgnni>F#msMpmck15M<(Z)?4r8fR#r9Y>sLZwgHc3%FD zu_sF-u_GF{O2ZkmTUp}cN?T;g6lH&4Tkl=+TI!Is+C5z!HEGUl7bP3%CzyvZ&oFkP zAy>qe9mSPi-&yA05XLtQ%*+JfM_rva``2ekR5|hui6>i4Oy|gv?W@k2^?ow#M{f!4 zxY9ZP@?T6g#SEq6CnI4t``>GkI);b<3z%ARGk+HG z+mHN!Gw0MYgKW9+ah4Yr*-1YE1xklKgJ=u=`xAI`V;ymK_76;2)KzHSm59QT!Vbyh zx0mkq#{q(iIRe5X50}2gLIJ$-peE6fMNwMGEo^#GnH);M#hf#@Dh>XJn9d-(k*?eWR<|G4`?ayy3r{BVf;z`&Z(ajmN$J)UBxV z?-Y{M5VR6MnKg?tF(AdAJS=UMq9S@2+abeqLH_uA(3Ame@~5_}a}dL0rg^*fR4lj* zf@E#UgMOGP?iNgH#Dp;UZEgPj?_rL#Z4=kkn%<|?M(R1e;=!%#el_X}4t%6SQ2Mc9 zx~EbJnX%yaiw)~Vl;Lg4!Q7gFu3xS;N*s6UfYxgc*xTk&0fG}AD%7`#XKV-n9zLsNDhW~Sa ze~>OS`p?Jz=IHp@g2A)RX0H^6{?&%K|g%12RcG^YT=MKUXS9rr& z_Vm62Z;f4sHIT}568MJ8 zHKM~y$X$hHivTicois=aMv{$5H#d4i#u$J(!htzVA~YWn9b(A(kzSa_bvw^b0&DtS z0?TYrC%%TJAx0z=C^GzYN^e&NTiR|hE?z$7qQ$=FJ>`XqWBCV)U`C*@8Mx{i=_eq{ zR#J}_iWRI!UPfO;cy(lB_4HLl-b`Po|I3td4zjPlQe>CLT9;yckin-gd7D&u2LENv ziAALg95T{YH@j{pDtU*k`#J#Kj|^2nt{@nL=XIoCgg-3HJBKQSNyel|_8$qtLn^lq zja9G)=?#@g%mh{!U!S&?1jfA^0lK2(D`r1YD>U2C9g1=O6negH(X@M|s`9qCjjAe(0yMMW#1+#2Ag zmMJMGUi$SoPhkStwwTkZsvg%Dv7nR2EcL7qGH=+VDf>m$Gr9?Hq~x@Xn_4&3dAebO zEJQ^YqI%7oo6xE=6Yxj0qJoig)^nl>6E?>U#)+x8XOJc^35I%Lc-t5jTh}`MQP$B< z6@Y&$+Bg#3h-nwbSshvTpehuo?|JfW0Fb74Isuq4FeDwTi9rc^Sv;LBA1k`QCH=A# z|B*%QfvHEDi{!gPyl*~^)B&=4fYpJ%TE-8lV4jDx(^Dw^OKoXN{>lWkC`Jg0Ao8Hc zWm)`)lsRjaU-@h_UK#MsBZX=wOJQw&Y*W%BvY9x-?RoeE-?+|pZOXAn?ZGmzBt(Jx@7@sSsoNA;$IC ze&WoEsJ~nsVTrdE1h*U=qZy%d8dgmDW#u!l|M?e_ZDF)BP&0@(hap3}xHrsmC6y1a zI4xdodBXUFCE8K`<}jP&>3wEXD%A(I>#A`iwgblbK-g1qPAWSOaNV=Pdfv|2^-oR2`4^h%Y~`b=z!kfMuHkcYO|5(RT;S9somrOGBYQ z%)_7Qm!&>r@W>;N;p_^B)wm@BItG=|e@y;`jnh<3&W27CeCwx3(%Hx_pp8%3;(ogtVp@b1@ zTYfNmxr3h2?L_9`*!3makbZW^@Po2d7+Pto(h;N12dm1x7)-53mGJnZiPHb%mUnueVHT`tSLkB#zEJ`vh-vF^`y#-T z7Ii-)uO%Ln$9{N^feInZ!l>cR7SR~oed=qfTefd)6L&eH^yD4!Wf&W8==XYBVccWX zetMdpK&d~pc~V_;7G`6coWG*o48iYHlB>gh1n4oW%<@nt<0BFy)%IQhDuiPtV(##^ zP`o}>afK9yP>8M|^5?3qEFV#6Ro$==#!7iMNFJt4pjJNU<}Qq(nBn5(8@6AV8Q}rb5zac zw9%;6U9vzh&GWeSi=mDmI+$e;w+y*Si9Aqv)K;5d+W!56CIq1S{YJZW+@-g595+4q z<0;c`sff`)qfq7dj6v>8nkg$L$Oi3E*!QV%g+c$VBU>7v*22`MvJC!&|EcpQhurfH z;Uq|tBkl3Tz6}xx)o{lQ~x0)MqsFnJv0zK zTE}{YF})S9uK3 z5O})FxC@Wt)kYnoinT&gfxgHnx`b7#F*hpq;Nf38lQt$w#d zhw%eF6S`&qDrLalG(UN12X8-;4I4h`7E*L>`#71#Wy2*H#u0kI+F2nGX1-3j+m(sA z6mDL-1PGTpE{()~5qSvhnmXwQ1g}}B(F75aaWOH0z9TmA8JQ9RED7}Kb&0PK%_1hF zOZan%-ytoj)IgADU25N15~%`cf8RXF?$Xf^i6;W??5~KQO4;>3a4a`tS5^yv0%r?0 z@sKvX&VDnz{jIzdFpi)fuO2sfXDwI?6lTsi`oPHrkpxQ=wej&YEP;0eq7p)ZMf~Zy zQkUE;#Z7O^DIGW*UjNwi6tmxm`=*@`j89$&Hh=>mz#;I!7!UpGSys zi+6(pkt|ppzo0g~hEMU?0wgb}UE^IRwA#Mph_OgkHgDcy7Bh>nqDZXO+Rrwl9sza9 z|CXLMB3gohwq~ipwDkWKTnjM}gDq~(#can$E(tG1>`E(B5~}r8*q~^ zX%o)AVn5_8TYo4`IEV_GuV^^#6RCjcowa0D&0TPO6lHVZykEMU3DG|CN&jQlmGe@` z9b%Z#NktMO-riIiZX=D@=Z=iq_dt9%0ku`e>(0L46j@&(8L~rS)R;AVY;U40^)zEr zcYR;$v7D{#8F;p!2X)ukJv^bbVTS?K{3$08@b}BZWuI?QTr6?kNMcHxhh6FJx$*D$ zWFmb(A0G)!i{#vB)S25w`F2k;NpDL~!F+i5MC>{}MrB{5Cfw~tc~sH(%W2t(RB^_d z+fII<$5m#*Aw&4W47pk(j+6T*W*G5|x9J=~oVMQ?n2U1GM^TDY9HxtTF#jgwEb`n* z_?QZ@Q|P`LoJSJ@P(uoDP(Td#4DnZnkg4(z7XU3|>};qhme___P)Uw4WSdz~pVK-c z^~3mDku2VaKUfE_W#BX7cuQFf2@luI%d=&i;fBSZhdqYJ4+VV;Li2=ftya2v@p)l@ z?aOO|Jk~X=cndw-FyzTT#J>Q#Fsp^Xxp@N8K&Ug)EWml56xu#`C&J%ED?WvRN)w#^ zslS_u^WMo$LV$*fLV35AkuMp-IP*gtXB~fKgkJ_++Nd3Dxw}j{QT`%PC>Sq}i%i|2 z`o#GvTyu}b0ft^2{?W$p!nuwuu%-3oisy(eVoRde*(&;CN^BA05nlQ1pkmA^>r=*b zZfengRzJ|B2l>U`=EP&BiG`ww1MBwr;(s`(=W}-vdPHLZS&pc>$YiE@ys8>;GQugr z!MdR?No0JG4pOzykger5-JXsLDoaA~cMC)@Z)Ns^Uf=$E$s184o0`9eJ01f7EYX0d z2j^Kc>E_5L;>9DB@)1g#iZ{mB;IN^(XuomZ$WcTFZbte6vPMfzNPSl9pgNIAnVvd_ ztXHle9h6U2s-`OLK-(3DQS0b;#|d90-r-&cn67%)1Y_Uc@%7*|0Lzf~1uxa667Po= zd1;fR6Wn7aOCvHi62(;gydB?B0E^Ll0g`dCoO*kBqFcuu_~%!`X8y7`yT^>Aj)WM{ zA&{q(Dhy~%@L2iv6e)g8f#L5qZNU(w)7@!1VDR4j+DcgCMfQgg$ze6}KDkIyo&4^K zWdLa3QX30q6@1huxoZaaG<;0Gy1pKS<%^Q#;F2nGv`v=Ii3I3 zP+0xsg{n|(%ael1H7lq5Rzuvyz|=KPu6g3;KT&c63zI#4SwER3 zz9C2bY}ZN8hC8oHbtEl_&L8~Ck2Lvox%%N%AG&fXzG*xN# zo=~*Epy2n$K-MD_w*-uHfNrR)VM>&fC1Vhe!k2}S?OXdDDg6@wu>v}xLpvR@fudjRx1+M44or{#k&T>c4!+G zZ1xY6fswROd%Xti0a^*M9+m0;mJkIGjl1+~y{kEy7xW2a-y6z=In~ual2_0jHI^(K z=2Ac@z&|plkl+k_%4<3l#=9U_K6*l953!ZCHMCsCN%JuAEls8)+E#b;>$yaa?&Ue4 z9AQ9MM>)jveH`n@&`ba~Kr0-8B;bxFQORE;n6m_s4y~tX<(%cI*o^R#rJ-X{dsGvC zoQsd4ga|PyXpP3S$k!ZosrdY+I2)mc{bec$^x|jO&R!?Zd?M;zdiT3~5qt%UV*&tz zsk=TQKH)7AjA}?pNJB*$Nd3Yu7YI zu6bo!S>#M)8q!&FW6M}H-ld7Ohj4;REuJD@ceVUCc+TIN^(LBC7Ci*!<<1oazrjc9 zB6m*^$qZ%%Jo7eBM@_8)6o?Y0Z;#a}Ht8ITur``&Yn7Yccazop_T4qgul%Bhnu2K- zF0r2|^uf=n(>8vXA%R}8tr`eNj^fJ%B6Kl&NLZl{QD+RY_J~?B^pPV)qsvoxB;FH+ zg{=mwb7&O%OMreanvN=Gxcw%r!Ot`Qr?!Xz@#IWfu+F9rdb7)_XZ2Zb0B<9Chv6^l z=eGpE#`%h<&)Dz$Lo`x!{;)p8xyH8)(4!CoN~KppuHVY_gm&typEH=$;1EPX+tg<7 zBIwxY&#^}<0-s%|m4pnc+9b|Q+>P7XD$b#)^hEuvyp?nFKLpR>w^T}q|E(iixK!eF z;{Wy9|LM40sa}Zy>?o9fQyP4GYv;PzPMth9FWyp_EH2%=VYf0&EMPV*gJQHxsk;*f zRAlGCS{))cgdQ;lSU~v$I}9WvM_Tu#H5g)TDYiDOQl)_hga0xFDYV^t=F+3^=R0sKs>(g3kk@us;v8LsR$rn^ghUoxbaJ4^ zphPT~BlppuxDF60;vwiNN?|>E52A>y#_AIS!MH6=*ZlcrvACmZ!Eq<{88?mu$WbZ< z;W%$V2{cdv6x-=iNwZ^-`vQLyoHs3no>E0ZJpb&mqv|V&)_Z8sWIm4Sq=ZAGSm#(yET|4C zw)5Hrw6Cy577nruEe5X+S14cX@qtlcr1Kyf&6=<##kV~J4AtC}) zx#H62l0m4kUiOK8tCoV1HuzH08ThsRouWh#v%bn{7fj;%WZg}?tBf^ZR1f1{cj65L zz4~iM-h*1oNY|fJ&2TRO*F5R%sNH0d<=Kh#E4~9)i_0 zvqji`8e*$rtKmQE@ZjpBWFknxmgUV0R5;3jFSdL)dJXW4ak2BI+q!duolbD9< zswial#4nG>ES6N8CR+F1XrI7z_7iG{x__sc@+s{Ow(ImTB}C5+Ar!Bh`@?kne~0VB zpmKo(KxsK7+5Rooe=Bni`aA6Y^2ZltiO0pWstcssOoig83h$ljPYk{n6jx5vY)S6I z?;?ahSrv*?Yj!-?PW|auXZ!PO?%#3^(Unp8LPk|xf`^maL{hG+T8@u=6;FF{7X5QY zuomY_i;UsfGF`H0r)!`M;}bDq^0q&Qyt?c<47qM*=bL2Wrim=g{x8)OHH3Dy+ zzj6+YhlfAzY7>mowTw?Q;}h4jT8$-Bga{6`@Rw1n?!u#;bqy9ect6mJiAn|z!&q5g z>QZXQQwvzq5BtbBn}+S2`m6iVq=EP|3bq#j6-YH(Zn6B(zUc;VxKXiL+3bx-!D!sl^n7Y&0z?N!Mq3|h=52kr=l1p<$g-_F%DAZ+30gOaiP)Nyou4y z0*M%a`93;uN(_)5&=N@GnAf~Cu^G9?V5a&^xN)C!VfA5Fgr&2h%#vIT!~D( z+p>r<$}+E)Ak*pq)(#e;Pjg1_Qyg9WzI5&saE$*cnTFYcg+>4YQ)^*46|4po%w^zX z166-zZ`8`QcINrG-7KR14sA z;t$$>W0?bYB0DIy%Aj2|3JJefzn+LP$^eZY2`m;?58|7o*U_d=aw4*3u^ zPfJUKMf+oKh}Y4Ex@@K%UwZZf>=JN`*-FylrPd~8sWF^;Sc`lJpNy}}!fc$%lO`Hv zhBMzVz${N$moyQUYJ}_2_I8&+%zXwzKSa2fL9mte4uZ@4PmNzhzajs(=3hBQh4Wh4 zWy$~Voeq1ADVm3L>2h^8Kb)Mzcm)287kU)jZn2*%-!?gTyW6}!qfllG3zVw@naa;zMJFNs>A@P!Dx{a6gLK;o2i+rem!A zFy%&rNV-Qe(EKxJHjbMX;?BlKxLX&cN77_z>=soz9I5*q2jY8_SNm$(h!U=uJZTO3 zF`4W$8S8odg2~9kUD(p;cox_SpqeWS2u&l(CB;mp1q?l!{NuWguB8ZDC}>An8t1IQ zla5B4=wjQ~#SPQ&gEBv&#CL0UPBF|_!TH0R(t{ZEck!+{X8&+OkOkgJNlRYA2qH11PG=N+^ z9Y7c?00E!3!?MN}=Q}4DBc}2eZludWsz0m0O<jx7Zw(env4{XW(^{a zU*!bd!$|O0JjWPr07$jem-z(q1NG%}NeyJQGj(iE=qqkxqf4HPbYH$TASV#yy-5$x zRr@Z2aY*&eR7tp}dX$X;6?FT)@Ex3f(KgGOns|~@d(9cc>m!%n`FZ;+a8a7Xle&S2 zG4;Fq$Sp=|@#wYhw7-EMA+LYhR^N_+b=Sjg$sR4_Ix%O$c;jE)NH zuLi}}J6w^f0$xBLk;dZEj@YW&@EvKLRQkW=W?XqvpuePJC~541S_v+-T_nZn*lj`= z9ryB%y-w{ye5lLE#CE;dv8ZMy)2dA?+Pb{4z8t7HQ&7eq26e+wu8M3re8uzb-{+t z)+?dQD|8jqQ8)><08(dCjfGGB^r;u@^Iv&J5r3Xq6*%#nBER{~G60?OxJH$5v2)Q` zr{I%rYEz%b1L*tE8PP)O#hhku5sYWZp&T29G#O>=w+;A(^ma7=R~x)oZ>0};PYP}R z+s7**lGwwm8YedKu!GAj_t<`dd%n(%KMvbH%lX{9`O9*Uh+BxZy2h2eR~jdV$*oaj zHX1J*yO|K3MLp&p5Y3HCN=}%hWN~nfH?V!EaL+0*>eSe>_p`d3Y{1l~zZ##t0Y4 z-T({7AUOzouFB^K=WaFw);Fkj?@G;T+;fp#S?)*`p22HrhDy7b5YXrI+dtCd`b?s~ zAlC7ye7k?&j&`|WkDz!d5@?jk4+>>neG|2usAG2ks10tI{RkEf#+dsME&>k*PKw%7 zzkXBbJ-=euo0FDsop&|5si?+x@v?8WdU_H%v1ALQjCdI`O);1RbYV;YbMOJCWpbia zsaBtx@#}g_zXFj$J?#X@7ga*BlKi9GnM#lw>!<}X)J-O$K~`o$04TLvC-nY@k2|KU z;P>`d?I0AHuzVOSqu3Ydg=yFeAw#{SX}ovNL?P9HqB|YBOQMCp?*zw4#5@WfmBq)Q6 zaRzB4<`xCNknr-|F^+P1$PE1u5efSaVzvqV86}Nf#!HxU{2dt_X&aWC1C4IZv?Tee zYB?Ap3DU5#jihCc-he`rZ?_FFDw_m7<~xG2$+^=(yjDyCsPrUIC4$_mP#y4kFiTiE z|Cu&oLT{U%*%pZS#Gf#9sW$AOF{;GhxhVtGO z?aP6=;TYRdPu8Q+BMF*Wd&h!TLPJ0JxU?8>iWMaGlEb@`?wK;s4P`rl5B508>4|?i{izg2{OtYd!O1d4~GNDh!wtZr=rD?8s&Kt}zs&IMrd%$j_ujm*Z<^rABwRgrf!m5`uJ!f`l*zh@=CgTe?%aQ~Krpz0dvrp7)%cv;Vf8owHrn^~qzN z*b`W&rF88JlF64WW)N+~(;UIw3(u?xywU%Aa3hOw9J@p{7(vTLwz}xcrbBwvdYJ-X4_F04Z>&r)X>x>4xmaGJ4pSPiBpYq<; z36U`3L?)lUeM4Z^Z{t)&daYJDXjN-E_H?W5x{ZZ@jQrE*g$%Nn*t*f@J7Z5p0{Qs~ zgH1~!!~#SkP27%=b<%S#>V1D32U^Da)Gy4tO`4M1uqsiC5z&5)XEDSS`-i)nRIuX=;u8Ym4ZJcOIl<4)F_?kzh34yH**kC#?xEIiZPUa*;f0Gs z`2^8&x838v>zyj7=K7&WL#eMTiD*?!qXf{rEntFS4s9eN+o;FDW35t9dG~?X z+T(-!?ghZue>N6I#4etH((*z09nK~Td!gn##04E1WuJIbjA5lfrH0wnXo2?h1;dHr zop1;`qpz6AiTj7}q8cuPu|A0YfEvZRhpVSEtVflC@y)yD-g~M1T2rDE6x>#B$zhUW zrDYQDHQwwceLqcc7$yi^8=k>ZO~*VP$Q*?gc4Lu=KWb74DChC~d@p#r<5-Eoffe1_ zkPx_?3M~&N)Yr-pR8i~%JqJ1s?;H)36^Tl{CYAMj!o|#nppB-T9Am7ooIKXSd-=RW z`?dI)JgFE`Z&O;KP517Z#(7LFEA=RV?}r0~WZHVhJPH!&(pHb(j|U+b{JBr|DBkC| z662m<3(4q7>0n3XXnK9&u*g$2$pcNp7CWnSJB4R z%Iu6fV^oZ2AO}eU*X=Sjyp~)mc41WOpe#Bz&)$ZDGT^--39ZET-}IxKG9@`R+e*Lfp`5;KfL?v$P&dq8G6G zYTcMTaNPEj2S#RUq5Ne zoM9)_5AEg^5@$3_Yp6GNIhW>HMWnt%;*dsc1s{vcxSVRB`Jz>SE!0 ziV~TP%!&5cd*;~EzgH7H`?1xGChmOKjY|RAP09vJ<4$>#pO$AB^IlKY8dpv(iBeYQ zVhuh2ZfvY*>t`HHyQ?-l3td zahOsi%Se%$)Y8^21{;(&9Yo!_IX%x7$U;j=9L0PY5OV&cVa!kq-Fukd;zA59>u-c) zH6l>qWbDi3#CXW6+83(go-L$weTPBoj&w`z@g`#8O+LttgFXg6!c^=7YY;VKue!o0 zZTt{}c04usiRY^UqE80cO(4?Jx+miGb*OpM3>p{fu&!$RYQ1^SFe4KEaAF4|A?Uia zB*{yh@MG>Q#JUj{ zANyfXqDD3&Ld0|V5pNu197 z8SXxEbX|U1xN*fY-dEwd5#+g_@QQ;zh=@*VLVN)AqOnmXXX-_$Va5bT64GesQ1I1bfhHgJMGpjLC&61*7h(zPNdww;# zHmuhMkmYm_VvDrMeb9F-y@&gl=Sxfg0pc7)ppwEfwBE@nr_8UhK1^mOFAL&mMFNTGLs(XA6gB!a zm0Jy#<>I&YXm!J|ZR23P^9H|pH`JAN1%AZ0TB@}93e*d7 zZdxt8-5m*6S;Jzlv4G1US~0EH^YXLgh#Pb4S`<^lNGy9)9jooIMQrkXES_bombOE) z0aZqFOZVqL`vT!rl905y(eo#xFWe2`j;f4`M06Eyc;9?I!O_u!>$|432~1&n@r)zz&@tB`LkHV&-o?8Ga(3^(PmioEk+&JE%pS8q+UpeG>sXkxH-cJ6(XO=Kv_EvV} z%VL-^AFO;?4{=Hrea@jM)AMY?p>U(dc}IypbZh0xB%trZ;P*pkYN3N0N=up_`ac3U z_*weFshzo}@7;-qU~>%1=$v#-e6I3xz&%n*js9iwfKW#XQ@t&a;hjpzH-ImKt3a+s zlCzvlHfWLCGxKd#9G4n@&RqGE+=Qw=IFFT}ay5v!R%dY|#QT|_yR+NsGqIs0K3XGo zO9OI4IkE;dT<;DOg`a8cNn|b_O_Mv6a`-e<;tQeB&jRwa(*h5&@levgsRISp!f2M9 zZK>#!6o_+}?FRxt)1MgTu!NN1+!!P)IPZ)I8f|s^C%RPUZYC+)CkjJ+n-!FZwPwqh z{YFCS6&?O-Q5MH}yYNXmb+@G4P+@(2EO5TbL-HxAz43)i78zjKamj+qA*>ia7=tPpFbwf(DEiqI?}@Pe z3>Vowoj}rSYO8O7Jc#}ASa`f0h!w=+^~}Y^1&d|;Sxw>IITEyMtX^LcR*wkQ$rHMdx4^_N z??vOoQa}R*V~Q7;XbG{16Ka-^XXNFQXKl@}_vJDdlXy#dEK|}eOpo04WI%F0##T~$ zuYuwAY=f}Qr`Dq8qsn%|=rJfF1Z-HUF0&r&-ftFgy2QHtSQB- zoq?T&$4HQ!N!`a_IYGJk%(;-oxQw0j`CT>eH6C^GV}agR-(mryQQbPbnn~Du!s?yU zHyQ62X@U!J((Hz{#l#sg`Stxg)A8}eL=AOpb#$WK$-Su+RjV3f_pfvNP!)0=QiNNBP6nCz8vWws zbwABqP;cL9B->D%Q4AFxBHoqvdOBPXcuSjq+w;#k;MbpIr-OTbrl`p$Lz4}rbt9GxlpZ751lkjHe%cN`{s(zq@@hMq zw&D#U&0j^6EWO;O&Y4@I>+CFC%ra{*jEpSrqpY`=?)z(FMD^EZI)xf{qoZpjqj)?m z#-^{RkMPO*e23Y^+cTp}naa0!Lq0n>i&tAO7X|7D4MRB@zptNVtc+2nW61RIMnspb z0BQ62h4t^-gTr!dp=ls5Fi5|Z>`8JyQK7LKLzAn?8M_t7 z{8P&h>zB>$2WH|&M5A28AB>gaDJ5;@f)f)s9twN&8srmo@MK#VtNptQ*thHVW#m(7*E|z3}uu-{82)SO%go@9^CI*PE zXy43;M;u``V2$F7;)_19A1Bk(rG91{XhOYQVp$|n&4UzHhwXwe5K z`&sw<1@Di>LkuP;*_&_S49`Jpq4=ZaD@|Rgns~)r_H2dyQj&;aVQ|5vhxf{kGd0aO z7|BD1>@{2tnQXE7q8^HoWh@yHJd2IBsg-Lp`(52RQY#o@Y8H4)1du8|UYGc2oj+i) zfhDJyAH1U?W!t6PXY)a;N%#ug(q6Vh)qVx zSQd`7HBW_RVS|XMUpI`C(Qvq zdf6Y$(xJFF=38BV{t={WQ3)6*!a2@3(bj{)d!~ooA($z~Q+1U|+bKp4qj6$N3B->6 z3ZZ7HkFFEHT4lgKmUB(O&qRZ=cXlLQyQONhXEO`?<_ry`p@LC#0r{DbM*G>+k>|H$ zOIpms6`>5q5t?(;3z3hN<&+!J6Rn)@VFH0o_u_!#A}&`K{LjpiDEz~YqN&RXRxtg{ zYZfk&#i$mT4)lT!`Upw+Y!`H=XCowN9$Fn99(S9qza=lrh$q&SNop9rl!2b{}+LSJ$*pn9G{AO zefi(`M{q^IF=ei8bf}iqsl-MIl zx0_HMgFcr#O_0w3+cqHcRAE~>=tey7Rxl2a;rmY~_L}rKviDS0*#{^_Z||XumHB#=<+}&Q2y;k$>TfUQrq*?0)aDOGX z{hNG7HW=(YlW2k=O3Bb0Pb-I0&d`27ZY&h=)Aoi{!=?Sbp!-^FMtewU&l?3|%&{|T zZLGuR^vZqJJ8OgQXeEVrTZ5Fj0AW;9Cz0Y>YlH(G4yhxkK=*F6-TYdkO) zx&Vkfw|A4K2&U;_Ki~oRn=wLOtLVg5U!Is7HQWd>NsxbfRY(_{Ai;2Q;XNw3D>mD} z1wc~qeH4X#SYBy>Kf{pf6@Uw_3THm@)Lg5JT7vbbUuWEK`?+2*)b5Qeu7x>zD#zOJ#y{{x^09;j>d!bN`}gU`XQ4b8ErYDiUg zhVU5Qt6`XgB}-hZ7$??Z8h#0@r-G2P&@)|NiVN1{0LkD&$%rO$h{ycmNv;8gs-Sbu z(sz3GS#1@%A3I$CET&p;pp;AGdX!_dn!_ZptjkQOO_*qfKVGh&r`2P~3d*y750`-M2H zPX>CZ!bgfFim~3$_jPSP#w7+NA?a88aDb#v`Bxr$!7glQviJ+JTXG*8I;CNsXi;bv*n;UAKM_gjnt+?ob zFiJ5RcUa$T4+`C4`CrNzgZ~KC4Y;|bHU4Ma=XQd-1qL0hsMH_!RNhXIn+NAM#n%0> zQCkWkQ&2M4+WL6DadAbJlFLlR*bo6L$1u~=<(33b~0)8yo zsx8^}fzhVk|7DnhF6ngjtHRAM^Wnau~FVuX1c51~tM7v$3B#XD$!Wq*LTv_&Jg zZUMJEg-3jHCS3Zm@O((eHg*u3jh=BLLFs@wIV-9P3oB=ptiK@SK>XNbpa_YgaU(~2 zK2Z6h*oHK%&_{7IGYb~;IMZY>@@Q54;ETrgP&e*IS37o3oE|gsZ0+LhH==W3xQ%kU z)Klfd7q%J5{MCe>;0^`IkjMGv2VAn$?;{W0Mg!naR2CGWTsYl=4|Rgs##?QN+*=1Ujy-10e-94}3gGUXl6FgfyLKpYs42=kQOW^uI0dZ=8Y3i3}R5*SWO$ z-@$ELaFaLXtE-)gomBl{0l!uBtSXC{mTfrzS6*0F>KvE%9`78Siym3s?&@A1a7`uDpMH_6a8Sp(Tkk^f7;bVQTB3*;4txYIZ1{Dtrw3=B3Yn z$@iCZhfjuy7(@Jwd^i@hChHa+HUZ8<3dNk0zfWTZdEUin^Si#C7Ek+r@^~-CHchwQ zFjpjx!m8Zp_Gy{^g#6`I309lU(#`D(GqsbizBoaJBe^Gk1d()LaA+I#cw3>*OEB}{ z`;ESr#g22`1Fvyot9mU{E8VP-V?8Iup{Tv5&c9!jQ{-hDTpArMHKA6fjXh-iNURQz z8Yx0GZZ-7&Sqf8ZyiPi<92{~SaUQXg61cEpk3U)CMsN=X3@E+p7|8NB>kaYkM{~Eo zQ0o@VZVp!P&*-xyiP~##?(%RU&LHnq5g#R5wj<_fYHOYQhB537;-Ukz!(O4V!@hqR zO@Avy?9I_<+Y?INI}$7LZIg##3SlZdml_Yt`L$l{aSKkM+OCz!*Ib|mz_17)O)hLn z3%j_1`d{OT6GIOMJwmQ}E=UD~)yGiw`*#gduG}0Amuno$ZqdYn8_8feMJP?qdfQ_& zC*{ExC)%C71)!a^w~xjikva`0u;ST}zkiDVsE10}b|DTULppex0+6W1U&7dZDle&6 z)dP90f)W9D6$#IOjY+h_D-Ji;Cm|)cM2=C}a1UK7M~gzJywq!9;v(*dNs!O>jm#33 zc#^O`(;l;JVEO6-8L=0-jtBlcT+7pMf5ArDeVd%%JHd_;NnUe?#Tja~c5dhT%2iD=?5)yafTyF0R62&V<(`pROmzEL_$%iB0@4jVA5=Rj zIcSDjB3c=XC!5a)}+>frw?E;RdycSo}Tj!AsXlJ2s6~;``DuH1nCZ0zTl%Nl{?Vzv$)5BO2bCi z6z6ZWi>sThkvBc<5(6v$ugpB~ zEepaNDrhsp1lH!sde6vkKz;ERu8sVQby3bmICAk~?fCN$Pn?3+A6gBaL)6G7PX0#Y z6EycO`&8a$D``y2g_Lp89v(qo|H*F9|I)!CEB-^vRTRB${x2;zJ0cgv{-h;!evq{8 z&(7<$;!A=~gOS)wbKMY~bx(uyb1X0X9aaanoMd4&$L|8PIY?DS@Y{ma(*pE?U{hUZ6`V!_87th&NwE zdA|(%*0M_)nM?Vk((+EVAHhyQ$r~5BLc7 zY^V8|2dV%;|3_n~T}rk!4)iT?WE_-DCMB5n0U0kBZh>j%PqW^Q`zLfXyXkp^bXMC` zslH#k$Gm8lmK%D95s4W97Mq{|&^_PDb7o<`Xj01wNMZZg5+|AT`Xt2xL@Xtd{fuo$ z2X`GqS@u?iQwSpg1mHNPjR#$CYTDH=Q`uC~@VeQ9Qk_ZyJJq@#Ik?IM?OV(-n)did@*gw2!{Xe7P*if0r1hllGn_QhzU9f~ zX`D-utfV%_19--Ul_+J%KP>TD>PdP1R8~%#t9)y3+!MT6YKC$Us%P_2(?<)+17I5~ z`h5|$;hSAdeSg;3XS*y4cub4{833?eH5W zpbr}00b3u1r71DwhJU?{e`Z?29ajU_vXfNbS8@~u>8>-eNTk&^1vs|m~Si%?$= z1#X3FW~2ZUvkYf3WkX)UHGUya3heRDQ+f@c@2uKw@|7)4;-|B5wSBRhA0jen6 zd6%yA6}IO8n%H#znb>qMU+VpLV!Ik)hLF9jX!*?zQOTy74Cqr}t`61q#Jin8HP3(oFWfdml8$5%@OpUKgbK{eBOUAv@Fmkd$W z@zd@Rqbd-cL!2FbrWNNrJ@>ogN+<^h{VJXr-t#j+$9kM*Py?otD6irQ7>c7*#A^l& z*vVDl@_{ZiwE4mF#068@d^*!~iK7AXuKsf^D{imnSM;L|_HyMu#cfMXIf5Omi&u z69erFt18n=Q;DY4K!vjS>8ILps@<754;(na4nT&ft-1UrlqF};BeL|Mr6pZze?jv^ zmOL2gbzWQ!O_k%F*aZBkJB`kzOZe!;|_wsIUj(lvAzZT zfRVRT1TNX(=N40v?St6#MTGSDfNNnjEsAGH(D$=RShN7p|C8z(iTB_yg}Z{dtJG;F zbTMn_Z4;`Z6g`BA@U%`Sa%k`S*3eCjR zZb(r=|1pH` z*z=6P_@6twTV$z@tmUJBLy`dFNY97Ul)j6idvIj7u%otF<}B@3ZPNIw@%7ZoRO!Bp zSP8SoCwfB$#s2eGWqXxgL)3eOBzd25GN|>{NchL##977?FL!)xiD*Y}^-4W!@iug2 ziZ{1I_{%(u8-6!|i8;JiAbe~;yB+_XV{nkN!Cq+qMzt1Mk zS4-+Su2_qCOiSLO3E!(1el79VRbUVXF(Ak!wZQ(HPK`UeB^V7C98w0fLCVWPX*q?M zrikP?UQmHVeJ0q#phNJ<&s7!9cnyCLixCNm*;|$T6|olnMx`_9>KR$)Q<7k1ZkhJ) z%htsD6obpD&Yamt&?aoKlw%FK-7r3bgei`M)62t`Tt9tmV$&tR5vUe`o9_e%*THbG zRumM`k##hJZ^}Lt2kVZ|{50&0O2Ja*?H@|CrnIrKho$}7jIO}9pT->w1W|ZxPE{6M z?6+RAXfdOR!YJAL1=*d=F@JP&@)36Js%33bK!A;Z47a+V3`ZAIA-O_9Se!&D)}v>? z*+>#sCF`>H{`BB%9{UG;E-@yGo6HjMy5vb-bWrqHDvQn1n-)Pubi|0i(tVn7O&wDjbAz=J}N&7+OV_K zw3xAr$hDbR1B#Z3MtIP}CXsZUiDzUck5sd@IbjkQEDxPi7_!)hERd<^b*8}k%LtK9 zv&Hka*w$x~5up^z3*Xoem+2b!F=8-mbmSmKL!U%(AVOHATUBOpT%$H@g`Go|ZYut= zG?rmdRP+p-a{C4C-ei+?beIgRAE3E1ao0Uhu)xhpy&}#2bYv4!2)i24X!{XtYbX~b z+;3`*AP)9Mn#zBw+EIOHiXI?dW>~z=JLriA#WZYQ3D$oG*ZQ@+X*hTbw?#;#MB1lA zIeXqAlStdl&xHKO+=!-YtXgIHB+C*&f6RhFoI@H@u>oyZEo>L$=i0a#IZvXp;z&|S zEzYx}_+&wJp+&^2bY@4v_h)Z54I0V4h30ZBDAVL;<2J|9zI=H@LIOROFmI%@m?JX%&u1QY-kCCyVl9rqZtMSDT3)37O z(a@*k#hT$^rLq^?S8PvpJNl&9nV6`cwbbV^r zR9NCneB4u`IH7+GBuAFtCBFV&;C$)jf26A~DZdi@7dW>e;%n(z=uRVUQ8|j_4M~ae zkFOB8yrPWZt@$f;nc_N>$MLD6+$*F{tWKAe8dV`uS)4d{=XNqY>p5SJ;Z*W%OtZwkM;3AJ{NU|I4d0*R?Mea9+rGODw4_54b%sBv`w(E@cB-;7cJAEW!jl`I7;z~U1N#6Zfiqj+U^`Xe z4#s8kqA7$%nSLfz!K#4r8Yo1fG^bo9{XrTOfl>3Z zN-6r;gqsldKRKCcmav#Cgk-oxp;EW6qd2uKe^y_8Ja!Nu^8>JL=;pe%jdqozw_lyJ zp?8qQa0*~zQ(VbGzow-RA<95x*OKF?R8BFR95eNk0bpN3FF~xe+dzTmKWi0_W$J&g zOJt(&G9ieiVvEB!a0l?;RUkmiW9kwJ{M7Ts1shhXUa-NSOIp)?Hqw?_zQGWW69u}# zpXvSKNZ1Lfv@#T(iT{=+_i8PfATS3vnp&cAju0$kVeW8EBpPGEF}^3b6f=V_U$rv3P zTz>-?#Zb5-H#u`&;Fk@1=%`6nKPB)AJR3K#;F`ym8yo)M;tcT&0x6s!pUTU1dAy#{ z%<(nC&KN1l|6X5+_3BoV7wur}Ck1l3z$W-B{d=KpkdGSq0hv}IaiPSmW%Sx**I2F; zUwrr4iol=Nf?-P%&9|W{N$XK<;mSpXw(&yatK|UhC5jnE-#HuRZX>3|z{&qBw59gh z(xUVKvWxq_dXT<*GjZ}Q z6I*VxI#N4eG>46P#N&+heT7OD58&!1`G)4C4A?UUFMTtbNpTSnse$mO)^VvUz4TKGjuL-(v;%>hA`$T;wTPAj2PwA4e zY~I}emwjDO%cgZbZp=oiIY+e*)gD8mcxo^e_RvawVxUKSfcy7d_)BtyZ;Yg#P9(Nt zGK04dAu2|6P^Y6JoI?&^#Dxq6wmW#P6F9<2n}wMq763y~3M za=;VvKM>z_w=2+Jca>>mNZ7$VHl>P&2m*2}pZdEZC38-pBgPT5ri5LtI#KQZHJ(Sp-;RMys<1$OMoN`L1j0FtV28ew z#rS#T9D|!jhBw+J{KfH4(FYxqs9QjKD|*rq%Nb0`mDQJMfr@Fz>S*bUHgu& zOx+;*+dQ_`G2NK(R=u0&G3l^SF>(2`ljWM(2$Jl&Bp zMX={;xzzZmZ-87A6A1L@(gl@+I#p^wr#sb%-`9PkyhH6MmvL7R z709_~E#sMy;^|_ci}<~R>uo9cS${qVkF~HA_fVM(rZo6`Ch$~z2a}>_ZDhTsfC|i? z0g>)4eHQN?Vz2EKlgF3;@S41KH3jCKq7lZ1_9cLQFcDJ~q4KAQby z^(i%>65^i1$4@j_0^}MkBHjJs9%J?%`Uwd?(AW|g?|P7N6(#U*n0-KXh1W!p7`F~n zvB2i~2~yzvlbrV8%RlSZj$|?^zFuwM1`_bjH|NXiFcCYo(0P}1OUa9aRxRg5=7WgD zuh&MDYGW5EqRX(b)0q(PZpCu}CG-6Y=mB3Vj5Z{P_#m^VeV6fm^*;UrgERI2_j`YE zk=Bl-@IL+@7ikd830)b;6q04SVL0|AlTy9+;#JrAXXH)!w|66#P#=NqLKD|_I~w2T z_QUs}-rk{~ZbIQ4?AKwZnA0Nq1|n45_9wBw|VIF zT^<-OiPfRpXxb&nX;z6+iRfaZNF@$j=j0bEsK_HA4g^s_irr6#Jh1u_hlO`#8Jo|) zhU;ryGMvY;gridikC*tgCS`Pu#Xmfh5iwL^Kxm1dkhme@bcc@^(7kO1{IRVYF56o- zwHnx5KUTLACk3CfJ3zypKGHa&vgn10vvlF5CYBfPbN2Jh3ga@a1h=(aI;;Mx{%)GC zU^>MzCd@I5ryr%^)Jilh!QPs2#CI$RVh5PezcIAzT_CtV(RWwkoAgj5h_b)1aHPh= zmarTQgj+k~DPWOD6%(P!X|-55N(F&1K`Z)wwfc@%KBWerK&k9Pz62<9Xc;+LRB^As zEc-Gd-pZ1aRzI#Rd?DZc6YWyiJ3qnml%4nQ(eOvbUQ>|G3JmUz?S2|Hs;v3|+v+zH z8&YdJkG=EqGv&stv7&85AZz5jvoP1J0asseqmzBN;xP+RKjw4QdOFsB5)g~oIagaUc!B4YQ64HHG!W_2K2 z$%r8x{tcxA5KB)(?_cyFeml2nb*+-=Afhzr_Uyt|dP)}q(t1jUg_)meAt~v*iJ2R82$Pzb#hdPuazftec+>Ykt_ZJGqJioNV@#v?Y39MF#~mfi)?Ry8O;4aWmR+oEAfD$-6Xu(WKCjh zN>MO%l~8WO;)V`#pE7%q2&*k`@E02~L%(%Y;Fi}p=U9pC-*3fX@rXKnchLhnZ<}4r z_4&~VFWYT2OJ&>z@iAV2-ho0&R%3^d`t0d1FBgku;^S6+dh4V9+jWlx!yT~A?9D|rRq!R5)#Y`% z;1K=6@x+$H1L1{M`VVlXl=la*DS*%Jr5Jx--{$0+FlO*e(U$lJN?H74Ud&nl|F9;-Q?9wb8> z$;ViI!iFO%m)Z>)bmCt@&R?CCGvmLZOWJgZa`%g-vd&+}H9oZZ5=~IHUUd}Phi8F{ zOZnhbe3-OUL{cTt)Z6B7C;kzIlXKdXQ`pdGAL(nc_w@y(kSJRd>W^#0@8pPIf~Sj< zr;w&$xF~k8n|`~t+XmFr=g)LPKNVvS^pMd&4qc4#8oC*-9vMfrPK^6w(3)0v;d(9+ z4lS?~$q+;4BpSfJV(Ro>(*CG)^M@V_(}t;YCjUwUABbRZe;hB6$|9%X2GkLF$vp+5 zCO?wnH$j8PF(EgDoSgFhvd{M(Au1O*f*A9aND$M4d+UHZv^NSai|`>&C&eRuMtYh= z$#H0v-$+$(%u7kDynyXgsKxnWw0bY@VDR_Ye_t_*tkfY-~-0M!P31$a8O@ zS%q=h7XI2XRnQjl5pk;srvRwW07)swXEkLznxU3HSMR#{i^mJ=b@bUb zOVr6`)r-R!t{iQK1PNnD>JF=6|w|-%Cbc;H2ysck(J7~&QMVvQnqMBJV>~6Q@iMc? z@akwF9#n%ao6uIePzq2MAe7W~zTGDc=c#%(vbbVe0HWaIIpb1%N!sV(yas(9NJn5& zPwczW^4frv(8{~&-nJ~u1^DSu`S2w#Mru^yPwI(MlWHTAZ|=SfCLp_DX&!rKUVAA6 zerkF+X>c-6Y8ba9$TXCzamZ8A!Zs%Jm*Njt-h33J9=7gY`#<6SZ{;;iavYTu@X4p0 zp#@5=wX9BK)MzZ#4-9&ndV$^=8al|I3eki3J4<((8dq9pUPr5Jr0btOQzhe9f~GmF zNKAB(K6^q<;+tRF8HEhy+hiGkH}JNq?^5!KJ^rRNztTcevFT^DkF(0%+jrJvHeoDf z_}ySkbK^h6n8`!L+soAdH>mL;I);eoA6HhM`*?Xx-~DDEVLgAgajfiuKCggVA*Jk1 z7=x)mo{5L{O>KZut&^;NzRwkLtH9Q+uB@-WQn=2Uz}7|hIvG^QrQ;1>i|$C+e-szeZ?*Ht!$s&M#z9qU)fIYYgxjtlu*7Q5hlu)Un{Oo4t4ci zD6Z%1Vx#_U{0OLs?~oe$6yS5bq2Ex@*0=VvfYtR&)`mkBVa`HP|EbGGht?}b0fN5k zT9dAwvfsRu=I4z+f0ph!-g335MEj@lN08Bw{v@^dsE*NHRXf^kR#YCj+7u;Rhr2Wq zcnBx85pVSPw;h)tYwmt^#p$`?Tc|kiry8-|KFw!nO(V)UjR8jSdgpHx)BvPdWbTH9 zkNSacMMA#cxHOBEH6FKD<8yA#PLw?D`}{M3LF!aswEM{C?xB-Rs~#8AYM6O_x#edb zo_BZW=c0f#YxqMoV8f*gVAX&!5%0?vf7_IImT`^4$83`l$|3G4B-7u@Kh6E~s+dhX zBAvaKVi*5q;u#*PBi^hdn>%)*HGf6XE*Ha+)wD)`U07je29G+QQe>h%LJ3nJ;E-qX z-puX-*t(+N*hm9w7oTp2Q5Eu-qt#?;0BM zD6?SYkfQ7=ZS1MnUB>kDn|0WSNB$&-JHRdG$2f$JLYH7vQh$Cq)s>AojAcT&9tQ(7?j%^k;bV8J zDh1>Qs)&VX_h2hpZa5pML3-uRN8`-%$BM48wYi#5cpzYe!E)L|0?;}u1ddj4Kd_3s zpJCWa^?U3^{cIW57{T`ZhO#J62xJ#7r4I?+p1K7?Uh3;6AG+uO1Scx^yq#{a-LH(S ztUaqr;?O-En2Hw1Iw52&_BSlb^~1H_0WJ;qxB6csUTTa%t%)323p z;04(wqpaC^fL(iV)L_4uZ&(QDlyg*l&!#6c<3P6xqWO)$Ia99miCRy3tcmmX``|K- zxg=1g1?IC4ff?!RUmnF#aWMgMwRnO&i40E7ScS-F`}RgWY5b4)rGyAZvX!do8D$M+ z=K@M_4V>T>@!E3GC%%{ZP%8USfwQ$s)dm>ZQv~(7!{AbLw|T)YEoBop#83 zzd~8&si@%TU(3)wm4JQ)&b%(OP8k8{-DTdrMBqW-Vpi~kU9kQQac%Aa-QHZgU~E;4 zU`+MU!_(#H(%8*Ir*a>e(4;cMxzU84_K@Aa!@+INJ`>O6Nx=UR^lLahsPu}@lJ@^g z_*IO-&BbpXl0})tZkvmxzS3{a3fOH&Gmq5C4sQ9^+MnHVjyo^@4Op;VWX21Y{_e_e zxKgI)l@%Luwkc*@=xnViEO4KP>xUsH|oTj{3bk7_BHi z@h5%#cFZC4ecW~)M0G}>9s6{d2AbtQIFYHRFq6bifVLz!MBY!i`vS_(M6B~H4jm)h z2&4GrhSKfUvqo6I7QWcf!Y`@7l*6?)#mmNnI%B*Y_wap^4&?U7f`FMsnRpUSyxR?i zB%J$#{7`ffYcJMU@9mv_a=9(71rST}z_TLew<>mOsUD7SO~g#rkZ2-hDn0j*wRf1A z6X@gn^v$_n_ZS5P#_&hDaOyZ#^e|3Mk9-c8iux8wCG_(R5c{AHmjrZg!?(fT4b^d5zv-#K)JV$+m8*gehetEEM&E;*Y%y3mQT8I= zQq>sIoR<-eqGb1V9qTH7+@b~jY>x4pu;}O|71^$8o(>REOioXuyDeSE4Xz5Ix~t( z8>TI*w2Ibzm08e?w;rG&vt4?*e}xg=(R zq~**u4Ru}u^wq?-mx98N%b8db!Joh9%$N7o#{CGM@WC5~8bh|R0!zoP;tG>?BgXoN}au3;L=0_tgO^sD~9x96Ym(*PTZ z<#dtozACNNUlBoeJ%0N{Yu?tC*9)uNMT$}`Khvo_utUl^jHpF(0r3BI(st{-!ykY) z#B~4ht*p6hTv37R{5ot*f?gwk`gZ6E;_c0Fw4v}~_$#hkOSkLzS6$WLLovk3Qf|l1 zZ^w7L-raP8USFVwF0+SvT9yb~SpH87`#@OLf3@bVxZ+144SD~ulPyk`hxkUmDyVMh+H=5c3|;F{d_C$ zZfknuwsNSiW$o23j`i1ZrW1M(*O4mSlH0E@5&so4Jv@VcSrkOx7&B0J7?l0f_X~YH zQKIAeW=tUMyGfF*Djj`;vOX{Ej2&9@B5J$FL&7e{yx5Ao%`bc%|8iH0 zxR*q&pJK%m==Ub9{O}KQwCrgAEVSVj^HS4o>lhl&zin3B6EpU=DE0tR?6_9?hBwac zuTz<)x%W!p%8bf_N$q*@wo2i~T30DkE_qdQx_v&R!ICKUM4daTC1zi`(sz$DHo?;0 zl*#KWN~0%B#_+Ye2ZCu+M4ODVVn6t(1Yumc|;}YQ@ z-2aEIw+M@);i3kc#@&Ml3lf66Yk&~kg1fuBH3SQu;O@aaxI=Jh+}+*1k-ziK|IKV> zTbtU{bL!qB_p~b5lRgYDbYYXqee&)d80E?Z14NE^0}$;9#iI3jTl-i*OhCsVdRU}D z*ld5(u?^zb-0w{A5HmDt1Pu<+=nbsgUBiCfqF~gx{bh{*xn>m=ay)mfn*cP z8#ZZymyG8Z@A9h>Ju;Fe8c{zAlwNHgf4hm>}$LzPK%@%|M|iCEEw-8qbQnS zW6MF@*Vt#kXBb{{U#SK$sqU21)l5PIQSld4w9-#fT~bEQBfbaMocH4#$;R&fXKE$zuWM;F0`nQ0G3G!iMhaBo1TbPz16&FS#cSK$< zpK5>CwsClFbb;`|RuB5_J6#*5xC~uD50E{`O8$oRV2A-!h~zkphgYCsR_b)%cj}G<^q&xd)=Gw zO*q_6)E+s#Awn?0f`1j37fwbN!+>8;rx1OxM3kdFqq;TQ5 zpRqQAmwtI@3*YY;AuMFz288Dqnu}|p^=qNU*q4RakZSf+|2+$TTH!ZHz}xxBKhV*F ztVlkezrCI>{sR*O-jcl7yda3A(m`a$L1b;K$GKF^IcY4k3SK1ABKyuN``!I3J%IiG z?|s1Ay@kk)ga{rOE{{~laR6-4)%290_?S>Fu)je`VU{iOGA%;(f<){G#W^=Y$O-t> z_D+Txvbz4V`hb+-*URH8F)Dkv=ixW+VfGKW@ZHQbyiWI}{dc5+I}D-?B5&6sn1(|U z|FAF9Zz$PU=8mNEl7tfc?}1t8)u&D%Y{FY}uml;(nio>b%i`O$h4THq|J!|S_S<8& z2)w>z;mv=#GG|<;-7oh44S2s0vXIfsAtAJH-*3!6o6ChoGiwYO2x}5qPxepMOV(^z zzkOO2u4*i^_U8EQm9@sg2wiA>ey1x(6 zeawXS%I>S1eNDc#f6Pk(Ghx=b-_y*7bZDH9kbU%l&biEKVC!~gkwbo~jS^1BpOg5R zS8WS#Mq!GUQTyBi7PuL7G3Ut~yROCeH=|Bxq88Rd%7MK?ZufnKTVp>oXcj@yo zyv`3NZQkw1Mt1;)W2wuzmmnowECse|8SE7jAK{zqBl_fw<@@bF)R?#!!`;Z6*s*{& zrBz$B6IR$6QS{mZ3?m&fQiUETX4ZqzF0O-scc7VZ=Fynb*1} z)W#jI_YfYCv%2cDxVFth)u{-J7(fzcM{r?IGGU4U5HG?OuNlk0G{Q!?VVI!eWD>rQ z*bxD`0D&<>n8{oif$^m|gKd4!Fjy1H(QJ*4$g*KEMb!atAX9){eIpD>`c8C^&|pft zK8rvW&=Z~lkr%l~TTCO=($+8;Jw-On1G#`o9^|r=d?-oS3(FII^Zm1EOIng#D4qL|bsB$Yo z0v=v;h6(JP+D2$SC)%p;<_-V0;7%bZ$>>&}?xp}u;={<&=#WR1ce2nVz_o%Rwp`k! zLw!Oqy58P?rdD25QQ`)980p)sdHaF^&<6d)I7%)57j6ZHf^M^$C?pDk{?)$bU7P zT_z^%WcKa+EgB2tK+>7%Cy^q%=j-cAc%JgpR`SUf;M{BhKdwFMWZ^@15*8FE&7ISN z5&E9QfZH&9EAG&fmP?7%)$|hSgWqAYzZHO$rTs=FxE(U*@G=J|h4Y8A5?p&Z^B8y} zf88XnjeRPPMY+rGR7FuL2H2w*4qE+p;!7)MGp+#ZVfnKNHKRc zg=B z$)9q&?4b zX|!a)x`)2&6o%Gsiq22P{GglsA&@+rEnz#d^C1#;!b9Qc=-&VQ-ni1>G0`CPrG5;&N0CvdP`RiHXTHf^k;1Ez^iu6C89vqDD zjN>|c`FhT;cK6$|&RfrQ=Q>Zhxe^=+ab9g==8EudHaN|?=jDVsPa65cuA6^AHB6STX=5;5BWH8mw%Aw#{5!HI4qsWO`M;(|2mr& z=BhyK$&Vh~t-sdS+~DIC?~Pw^>7GYX$8Cg#m8|U@-sZ`fAs~b?YR*O{e5I!C5hiNuk znOvr_1#OdfB9VycDfIMd?+x;Y8^ZOBFMCba>{%N#^Z<+#%)Q|Wo6NR`&2m4)E}8Wu zr{Gzs3jt?lPog_937&)Eg$Iknd{{1O6oN>D$mu=y($~T zt7@xTFv(xl`MOrlv493D8A<_Cz^t*SG(f+O;xBAflyc1T$`b&>+WE|ldF3M-yP1AFMYZDk&-bd)@ zGW& z-)(`8Z2@4{D?1}Bouv1#tZnN8YnL%db&s)c53$P37dIkr`)|5)HSM6J(JBvE?e>>b2k3_0%H~E^G_bxKRq3$!Slqvbreqr1Pg5{4hBs%o|JD;>qN@(&;YLJo!cDG(@Z##!> zTWmA9J~x+pdEb>=ZfNO!*<}zuIwIvm)rs{pAw!8^cUUja7yLbcww_lGP3w+0e=Yo4 zIC8-_kO9XGkbST?%aG=ET&EBjrL>J=Q_yLz41Fj`4G6tX(dFlNar*;*kpDfUCY0A3 z{m`s~FxJ--1i0bZPTh#sZwXIpt1pyo+;19K7?qJyli#O0g+Db7lXKICeHeVkp;u}L0zH0)5cmi{ zUf@(W#p1p2M?<2a=ORYd7V6oQ- zHkwp0tg~}7`cWZ3!w%Y{+c5+*i>&fj+-)^6ddADj{o}4RQt2}(+ zPSWyE*yKoi*GlNb*aAm?2C*x4htTphn{pwy*aAPyIkgOXJ5`1@*MWsc3$X79%IQsQ zYTSdAfw8sG3V`B2g7Z9p&!+e{*AoqBeDv{PuUq8lIg3-YKJ&qT1OyHfKT~Y@l+QvE z7h_HLy6}$J!IPtKZSyGnzW;S5CAIQJ`IvVm7Hv(e{7@}U+~l`E8i)ktnY~ZxGY7cWSY7WZ z@UWZ>yqi>#yv`w1SF%oaDTDGLdAt649?rsZ1Uoqh_TQNyrY{1BU3Yq$odDLF$@e)b zs-nbX%MQUa*M1?Vs2C^>s2|d{$1+@`Pd*pLok|=fSKo6FK&`8Iu6}@TVHMNX!sY@A2oXY4mMi zIek`^P|6Suheg6biosTvGscov+71`PQ@+8J{v19{@&f^X#&MVS+~${y!g!Xq?zO8( zcG0)n68+YJ_SXADKlfR_GL4E-gO||#`?4c_uth-j!0BO8c8rIMX2msRV$8ilmE!iy zqf_9h!NI=Dd$w$Ab$$76%-`(v(JL%2uk-S_^Jm-ZZB=ZW+PiVveD=}PQ-=VbtE9#@ zvp0U2-cqF>cfda;)Bs*>`b^75x%xp_GpAbg zr$nhHYzRCGD&9MK#tTa=3dnH0|BG;T2c(es)ok6raG>6KrCH)B-cM$^DxF<9M1+@c zf1j@RM;43c7r(w-S$mj$79DDWh1p1LTFl(zeTPIz6ILWr-kRO>5<(q&kZ+BU^T^pU zHLBpokL@M@uF}X6@+5fYW4cD4>f04>0ne?3Y~7LOyu}tLKXZr^zri4^R@l3>?T*3Z zUEe!_!TaYD-8x9?HxHH6mma!P&7Y^_D$D_lBt4XUTT4v?1d8Lwh3_*D8}iw|aQ&cc ze&va2wrFVlMV3HGlR3|ODH{qmJy|&wEbA&&R*O`KJ70>1#V@Z$r<6a=Om@nD?9Dr= z#^lMEvC)PaVtyk}=jXXpA`uc&8cN8WJ@$qxiU61tD=}PPCL3tTm+Ijk;2lTz+rQy- z44?OGMuxj7PCjg9h)ivcco6LUsVm8sN3CPXu{(<($OP+5h!X*=J;Hz8>rR~$rTK=# z3saXvF9R>_@#C&Qh`-WeMxejB{YOQxqu(|DWO*q`W|EMhIP$?e46m3n<`N(s(EN}$ zIYs#mu5jw?8=@?$KWQe`caX~*S2_$lA7(7latdmZ*z0d~ap4jb<@T*d%XGG0Daa1D?DN^i`{7167-qB#a6b0tWE1vzBTR+@3g zXDo@hB2Mk?i*l3)I+RqTJ10!E)X}olFH@37xbmzA+~z3N3@s4*2zJquX`^r+Qm&=@ zlKt*pvyBkd1%qJc3y;5f=1qSaoPvEu5(rTYrR3aC1i2M6ATKvdsZTE!$@lC%dbM?6 zQ?O*Jb|(*$%n7+E9Do-tg3jugSy}9g?!Q=i9TeRwNlYLEtc`oka`LLjZ>i8)hBMr& zhvuev;#Y&KBgzArH?Pfixaul!A{A12Q-EgHqHA6XwIqsdtcTO{tv;EAB&o&5a_T)x zlbNQX>%lC!?yk8m0V#@Kb95}2)ug@Nh_391EhwW5%||&z&2*4i@i&p0J4;6!McHg) z^bRHI5k_1azIfRGW~*_F}qgPhQn+v}gFKwjy--7nfegV>=~osM>Y$?%x`j z>#O4Qp|}QPbMoKJwNv5XXA@j?+q6OZoref8vNUpZr6)PX<2TJi(|Li~iDmRUN@+GY z!P9;yuYB^4rpq5kyMb1VzPXU{MCB}#tX+g6jqM91!;okH2nG6reb#Wzf+dMEYFQQ^ znD&38j9&PO3s6qm=wGKjw5Kojv7gz*d$b?x`A4;V^M7sagtR_ne9WokXL?&w^s@te zG}5WThXR#j75tgx%ze_wn18UP^bg340>cbpI=^N53+No09A#?!!7RKoD8q1ZHA6qo zmVHYR`5p3Da?%qoyB2`F%v&jfnUDFnMm|a2nj(^T{>^>dI)>zHN9xEQa=$E0Dv`?T z6BD%nv3@5#1GP@@G(x1?;{ND|$Co~5|GA$6Z#e!7htkf^VHgFx4@!)26|M2_6v~^Q z$MAXB^+wlDnII6!g&!{`UE<9zLGMLOuWNa^M6%UQCZGL%8_-zJqqiGgrXd1WRxAd* zH?~|ED{p>}(A$TN>Zl#-G*zmLbSqnoFva?1RpIF2&Oqfjfq8qOuYz>k zJy)4r+CCWAd)eAh>C%X2SP;1_OXr;|s4S5aFT`E0lfCV6`29kzGXNdFe|YLED9h7V z9Zm!NH>w2(g*DnuE)_1bGAyWs1!0@C%0F3G!S9N!f|>5v=6EwfDiSVEoG*wh2X2V? zP23MbQ`w8XpsKa>eG8cv>@2Ld{p#OCG|n!o3h__hP5F`R^54aYTL`dJvV&u-NyuD) zWo)7ndbHKo`?In5|l-WMI*cVl+64jYIF0bdJKY9)bwar zu}hQB3p-oI33U+ z3)#zm>vt=R!^N*9PL-2O31)eK^kVdx7&?S1N`&mj&-yfi>UR0g@+3%cx~8y42QXiP z9hj-QXQQ|#&ppKPU3Z7;P02zua0!d8zvj%r2BldP!*Sy3^I_~y^EJF#RWb*rMgkUk zpD^7pZ06%Ufxic<$L z8;vV2<**!4%iKV*FllSDrF0zOc7yWgih&;mU@DXfwN9(E$I=y8rRt zP88OKCU2&X+k8R8A|zVrHrCj_r?v(}((ql^UORh^a?4f3PN?_qTms zt9*AmSMvi!3Z^0Vp5FtYa-(y*^pr>vmCYTV&xbHkg5#<%#>Q2!`u^+R=;+(OZ4!#Q z0Wdb^99~x?MOKZDADxqRpT+_NH)(x`M3oW3Gc0CBp+*tNmasEZD&5EBVEI>*pno)= z!hh`8Fi`}vDv#fR1bIYWmCx$&)~a_qkL@(q;kB{T$Z+uo_M6NIxAQ;am-B#tt{jcFEqrA;`1P&3e{#qU=qYu_;dRde2WDx&Z)G6l>yYzhEY&;a>Z&D4 zirw~<#OtQ?JEtfh&%n!2_VdsWKirJPq@$wI-%c;tzN2TVEu5t{`6q1(okCdEtoIp3+mU6}D)BDJ68jq_W^`-1C*@v6A$UeL+t^n4+Qh+LiV)FJTB?+l|)t5R1secbEn4}RpocW>TqUVV^^*L&aTx<_{nsnHk8!XG{LrVn7y z2Ol(dxU#Z`Xr4XVfbY?80#yc*(0(N)rj6sGxEH=lm25RH6NbZP7$&+Cl*zY zm2xr$Gt5E`tY=S68SMPC=$?x*8Cy@cT>$k5Vm~rK@l(b%u{!n0X`*RE)OGr0@b{<& z2HqN{`~lf6T)%>}k1;zi)i5{Td&xquCO+5yjp|r_Lm5BXoh>Yg&JO^Dr{={lz!vJF za&736BQC@3Z-zGj)oj=0Lvszq)`PbVLgMaRqxid>LauA?GX|0_iKN?QXP&t#86`qW z;FcD-ZVaqV6pCW_nBC?4xr6mki+s|P<4mx);pm;ledQQb;MDYNsi1d8HFP6i&}18> zTjiI;Az}t!gZE4nhJ&?G=_wKl-dH(d2(TeYW=#<-1#&{Yricds^RJay!`0o-QK79e zu`?AL!xg!BaGGSD!I8Nd_yEXZ5#X%i&^V(;di zsxjaNd!|O+fi=k61cpb3>e<`cs=4o!zWWnz)s#bpnr*=vVb+!^TTx&k9y=&t9YTQb(Z(0%n{^#}{lKsDq z@%FQ&*NO{#PoLWKBp*KnU#4_Pi1GrAV?rwE=hW7s0iitE{$GEPQEnkYrHLE)jzYKsM5E#XJrevPys0*PB zfvcM7xOo1sXZZ7pqC=M{8Z!H>U7D;P5|&_fQFpaxNSaFttB!JrZXc&6PueLc)PC;1 z(4lcQW<)SjX52UJwuR}zF6nA6N|h{}R)2$=xT%w@{KIYHY_Ho}&32TJ9wof}Olw3T z&}C$l0xjA|j;LcEAO>}6N3-UjX%wd47l6|Wz0)Dl7rwsk3Zt0ruziu&?bC}tZqJ|a zzIrPX?Nx~h$u4*y6f-3fjWmt2Ww99v%zZl6DBOE@|AV4bo=_4}-QGUdgiZ||#8!cq zt=|<;OxXz&ZWmpEda;n_%QfYC*X{o3zrM2KUwE!RreYq(z8=IhAx7y*Y*n))>ks|B*Lysje0ZwBtACOOCjFg@$i2%D=F0>o{Kccl zPSDdLRJQO$j%z!w=uJ-F4}dfV2sraRJ{AQ$6~&)FW}Q3n^zXFZ`!w{O=RP9NH>M9; zG?oWcI#Dh*#^Vl;c|hvEhRe^I+P{tu&mXf@fj5%CLB^k;1J{N=DxODwJNN%LfOWZ; z!@P0&RyN$kF3vFhIwfCCws;Hob3Z?rD&lofn9ay5yk^QPiOFcNRk{Wm&7B1Gd9>og zJL8*Y3u)Mfz{gZ~86C6e@cUBwy6cTqfs^zZSG>A;-M=hSr}^4rkaJJ;W$E6rG2Y!{ zzmm%CbGkT-n2gQ}801+oJwA>l^3@^_A8fitZiVT_izKWoR`KubV~6ZvemL}~U8(r%cg_&p_d2gP%b`h^An%*;cYE;V>hWeJ(uAQa8dw+FgSD6ef2wjUcJ+EEK5%K@+Nb5Qrr_tLbkT_7+Z-RWIedXpv?F87`?E+W*sLgLsY*N zF5)@X$`W=d0hMERho9vE(9Y+`L80E~irO^~Elk2dH)O-SEN&Y^gg9{>IMUNlCaDp6 zFUKSjpdvg~>MTHa3E-o;52_B%6*pbs57C(k`*8qCVU4WNlmK=hd-cQhFiZoRl%L0&||qKP4KF6o2exQzYAasg2RQ zIy=nZ!Amn5Q?n_-!WKoDi8yuEp-@Gz%T;hiNB+c-vkeJ&-4CG6zW2%|n7BuYkd`>u z<(Z$3)W6Bwf%@Gbz%N3NJMm81x8Q$M55k99g+?^2zA$QkQ?s?pagShe)wmCEBMtv7 zZJ302s!)^1kcMxcMsUzEHTmP04DL~b2Cdlp6$7X^D#aID*7Q_){#2=?Vz%qM)@){7 zaicFcU*Trz_)%x%J#JD73J2!Qh{5aCAe$L84A?Tk;T?|1v2PmQ*t zm%0BxY?fp9yA8~Rg}ctOlXG3iUQCsjHt=O4vqr4RkFz3^>V!8G-j|=B8a?$guF}f& zF-eWXURp5t2;6k1$fe!xCpOIy3D(JU+!;xVvN>AGX1{#9BVDW88_zAxiwLs_lqh1- z`5MNQeiG!F9WWRp^v6ECUTh@$PiFmi{L!az0|nF!r>yP!cRb=NsLdo)Ix4R?k$&r| zHF6E-11ns~eH8buL;gj6_Xf|X_~t;me&hRrC>zY8GrJypyL1BB{qv|~FMGHTWL-S~ zL^v39e=}8Q6awD zJosHqJc`N1Jx4hH@QW`a!$2R1(jCFlJ7!j; zD>rit#ALo9&Xmv|Vx~}wCXYX2d~MVT=8Bq#otdZR)bHZo8@xPs^XT0yvs2qZ;(;eM z>lYz|Wqwp-{arhB*}@#Gql6=lY-|Du4F5ik7)2GR3P|_}=(?q0Rf?u1#OZ3naLp^t zK-nceHC_UJfdx%+G-jE1oQGCOEDmV%tjp{mZKXv=e_HvVs%Gr7K*|+w^Q&21nQr2W z*o7RKF$o>g-`eFyB1(xzYNU~96MYN~?8bJ|;m)p#3w@90R+Hc@)r!7Eq2nE{ z^fm6Qr8ZeSy~!JD?~0>=|Fuj_VXk! zb)KrU>ZthY3~M&P9&>>Gvb^+pY>r0ly<4c?_N&RMbM&2KB^;9-*~kjm?+mxQATx$F zYBbV)?vnAZTWGL6&|#D;$4AAOY)ZpOFDl-fv~%|k6m%F5H%POP&rCMcKv|%_<&RcK zQ_t67CoYS^tuDz|MWa9N0bk#T^VmgvBb`%7Wn+mnc)-F}61tO@7xUg`xZVeHS5Z8_ z|5sZ0%1Csc`*AVpms`dT?zt7dO1THwO=+82|Dou4&d!w6JDGtjeAt`+BD15T8e++juL*FqZdt>%`ZMUnLp3;7XAI>E`D1 zyMI#UP-d@k)*MBXyYG;Cg$l%#JsxU&Dsf=Q7fO^t>;&2N(j6 zp`D}jh3t>?WywDd>)#XRVc_f7apUAj$8M+M;o%^^&|AJxN8nyRHqF)i-v{0eg4O4D z@B}ftU=i|ruvwE4Z@EkCPw;@T_kAsspiVP*@v^Q%rw`ukzFf~sci3W2A+sye#dDB2 zLLy;A!K!#+U;1?+gm@x!yv1uwd7dc-Qtp;r`0Ul-Hsd)yl|4{ydk3M12-Q6-a{UTu z@bd4pHUD%vj%xAx`pa2cD8p`%YjJ=7NT_pV>;B4E`ovY+677phMV>}$#J280?NKy- zS9tCe8nSzOz+$^>Qz`TKopNFk!p7&Y)<+ZZ_V2hJJ)e49tlkUlsFBA--nnt67RuZP z=Dv)I6_|jPbgYm#u<lbTkn6aunCbMvVz*sDL+w&}S$}vmf z90rF5e>>hb-1a0%m#6z~idY{q%$6C$;Lbp=4JXFG=H^cFj+sB0!HQ_V$p}8=Q~nU` zOOB0O4!&bC&k3!E$5~uFiW$cE(*XmLtuZAegeUJ?4}PXYjm%mVfZO4Y36x& z^Dm3)uyOz2thObkrf5nTK-FM=+&%roAJ&+OoE*c+AsTF|H^@F3%Ai>Wc{P(XC4pJx z-&_(Qv&#sg0E|C=$cZr?n`T1k?-s;7&c7TS|JoOf^6G-Uvc_W3`{EBa^)H8QG>3ey3zAjEGxB zObu2PWkL-&r=dO6|Aapyov6feX2;>)k85K;2O#7Sp4$n}FcdHmmo|3DRhK73@$K93 zz0=?C$kX49*~TmV{N*zsYD06QVEXv%G<_7`jg^)kf0Ghjb^e3$JL#=mVzrkIHl9Q+ zCj%F-k3&#m%_oMoG_UbAHtCngmZ%jSVH3w%8=Y+2pe3AvKOV7hQ))u*q<8ZfBDyIbgS^(Xm+U@oQ_)rU36j`99OVA5eTV&L^5_Ko*( zsp@43Db*rHc-|Qy=U;Gude}UU4pv1G>)lm(x}BLH)-SzI|IB(z&xINJinNh2_BDdi z2DD^4q}mJ<$iEl^NO{losSg?u*x6+Xc=YE9?$#yE4k=&1BwPR4cC2^)wd3BWlV`?I ztNXrfU#P~$Q(P=@n0DF8#W(w!FB=!K7+W5YG)6IpD0~sP!y&xQaR+&=iS=W|w)VTT z2yo9kU9D{%Jo>nXiYj>ajvh3#-2sfa{J&gP597vsYlytVaN$eOuUnq^Zr%hk55_Z} ztoxH{1CS8cy0gZ9%&6?&<>#l9pb?w6m-oW=0$!-u77p*sN6cN-1P?NF)jYs12he_# zcl)d&nU7vtDNlYbre?MG`NO9Mjv@lr(0`$Vj^xd5Q>35=C7G}t=6PL)pRm2|z1FFT z(_&A?vHHv;(Vi}EqeCojYEq3a-k#9i3$KWSP_ohTd4HS1{ml?ii!$RJgq+CBzcw~B zH4s?gJX8iRxLj-ytW4c+rO7GS4+6UM6)2Q_+(pMP+V(*>DZccGRH)EuQ@h_tD{NNc z-z-o)Er=gVwo8FX^@$(-?Vpqt>FLkVSj4H&e2@6&Hq;sgv3(vHcT}rz8|=cLSuxPY zV=S}Lx--g`ILu;F@-~_XZ^u!LYd7#G4yab1M6Q?Uy zC}aqvC`QSc`nkS;{r-hs)tz9!A$QI7ChQ53MD>H4oQghO{q`XagCf^g@(?K$QxMl) zd7eSTf|$@u{(Ga~KVtjPlOlq!!V{S|qO8tmh5?y(L8+9Yqw)NdMGWmZ%6jyblT<%^s$ouL4y@qm1gBGxSQ8?}GA| zh#q)N?U1T;x`^y3=~2Sv+nrn>j!5}PIjKCu@Qf~YIwHI9JEi%-{_0=|X@m?%H3j(N z-q0%&vU)w-jd}YcW0&j7cZMUh_5JDaXxh`FO|p7};6=3`;bc;6ZS-nJ86=L`%(=Xr zh}yUm?F!7rFfNUL797K6GbC&Z`(@*gfcUlba*}1m>tLsKKpE8uZ37nTyXD<_P-nU> zYH6l0)WI*r|1|E=!7-zheIt{N$B@<7erxCSY}2u4v$d*gXWw}v+nIor#x6Ov{(QRr z!NIeaWNSske^(=~qcyYbw!%Sv4QfgFPzq{u;ON2&*%M*MiWjRm$rupXRTZXrd|7{c z8N9!NV%zr6C;iKa;(hSz3HUBIj<5Vb!!0x9sOt5|vX{;41ySUoo0s_kTf6=3t+Ra-V0WE?u)HO1z~|KB-GGY6o8II8UX|LTd6b%6Dhl?Rhs zXNRJL^*}2BlvpN_YTJyk4E{g9uS*XRUI!tFUo#(jvGs&pge+P%_^fW^ganlyejYGq zwt;rB_2*#wJ#T~$9A}METaIgAEwVFL`cB~_gmI23MSj~x(M5d<7%I7|^Hx-EqQ9wT zbOeiB@!GCkyCe&opBKYcc@;7J>fAAk-u>%-p!xhgFeK>uwO`3qe0v3d;XrVW#$b3% zr;(Z`cp@jZt~9K-Ggh^Er3X7|+P_COtQjEYbHGWy4Itk-QK2ammvH2QS3@c^BrNfA z>OGZX@OCr>vdngR}Q zsm#!f;}Voy$9DMV+6*Xv>k3n*$(}KfwSV)cQF^c$CdL^L9nb*6pW*5GNm`ABRIu&y zH9+m#XCyYm$>GF$rC9lq+k#e9L8|fvoEX{68!jW@5lMDglA_DT1hZjDsP(Xtfu3#s z^5U*!40-0AcG!4HOsR=UvZe08Wi`k46e~?mu45^@W)S~IlcJrm&C&t-;{wo>khBPnnE{0aE(+4+ zxgTG^UhH&gqnO9)mP%W~CAmA+?ET-$U_ca5J^jmaj22?(pA+;JWpLbG15e}7<6o^A zjUMUrnq+ML39i2*TpU-=3XH2DWi|weMf=U_grgd9^$0}i!o>d5IqH7eBmge3u)GkU zIP-DF+N6#~O@?~rD{M}Dj%}9>GHb!tFJG)G>Ca=4_`;{`M_;~~y%5!oPy7r$QB5^p z;1@$ikY!jQ_v>2bK3$gWok#X6Wyo=)b;$8_!MFoC<)eTSVo-E}Esna0+L=#uL0{)P z-E%O`CGc^+v)h21^UA$yd@)-uRUH}s;=Ur=+RleK6wBWC{!QA}1&C%ztbHQuZ?BKv zdtg&5q{LFS9O4LmCEBtbUNVuX^|DZjzelc8vis{InMiN*tG+_}4|)!lVxr5rHueNE z75wkAPh~?GHXiKl@r+fBuz5b^x0!>84LuftYQ?ueHRN@x#Qjv8i5klz{v4i+w@EsP zx^40pkSGJ2$`9%d4Y+D(Y-f6GUx&2s$UAteiqb(Kca5DwUZ*w&BzkW_EDu3DV-Ef< zR1{DDa-1Lr@dv0A)gbcvU%u#<@AE)_@72FF`sL$nmA_k?MQPzf9E6hI8Q0KE=iA*f zblZ#nm-kc%{tR6oS6e;ep$^&g@I0vhK7i1=Qm*FaS905j7y;T|6!YdvXtK%w!=>B8 zo@VDJNeAWQ7R&3_4r0IsB5V%dyK6b*{grZQ-o3j`%mCiC^~)HK4;>iGYB4X+$fni8 zi3bvqBX72~);@KT@xQ~N|)A!X)>M$_#Q^qEqZ2X7(9ZTNACC2*{^Bh1bkjwA;s%N?{R;`B=x(%>qUMrhL=dw`Q?d_hJ2K5K!tu6 zFIdH+!+zmUgqFixA+9Ac-q zfBR?N3TLZT1&fOpdGVIPF!09RJNBmw^gAV}I{}m#crT839Bbv<_OaJS?-}M3o#GUg zB+(Aek!ZezOgK*yzrcMp3Uu7!Xd=`o3}Qf9K25z2tJde*P(b}sTT`2*+w4t72l>$4 z?3Uif6}*zark=5BwnUzXz<})UYQK#%k6bbJTb#buJU)X%9AGOOTf>CmBG=m1lA+t` zk3Jy$82?8|$pW!Rq#Vv?1_?F%bTAn=7jWoM67fCrS@G|DKEUN~#(^h6rDYYHiQ48Y zt*w4pM{vA8d`etw?Kl~CWlpsI?z=3oT$@Pt?D}+ulYX zzdB~S4;$E=3k0!c2dR0W_(0C3@_cNU&?owO4=y&eId;*0t^#fQ*cIha;ta!S{?ZTp zWTJ)R?Gy0acOXGv9>X?a^*9<4-3)8k&y68IO8|@bPo$Jm$IR;C{o%n!r>uvQCb%#0 zfdCfu=g$YCPo01M^gRERK+{RICZ*WH;2KIohyEL2TZavTahJKhhK8 zbLxO+noU(;nI>JV2L@R}mJnwiyWO-f}-SapbFri~tf4CY`+CcOGj)Nnq_ zXl2QYN>~`3$t1x1Rax-XG3;${huzcRh~Iq5@t7Bij|p8YTi%1M0!wVGa3qx7@A7i4 zcsq!FwJi4jmq?*L#E&xqyYSe7z)pV`KA(w`Q1C%D&ag zPJ9Nx?FaN5sw@5%dhfUzcFS6?1t&qEXE+{rxT?IyUai23bhC<3r&cEk^n`IN9V28E z{5-lt=f6ewi{&YgCBo4wi6eVv-fwlDW?qTgJl(BW&U>3=o$y}Md;J2C;^2Qr?%DP< zn@uWB+Bq@oZ@SGRx1Q`fl>DKG{~Uh+nhAR<>m&xtz4Mu|BVVzd-uLMs|4;4QSo;DE zD!hJttbkH<)w3P}_a4$vxo2tgow5wnM*(His-ZbU8-ELYgpdCZBwo(|7fr_RPj<;k z&Wa2?A8`gcDP-Sn_jz9vO&m6opJi$rT7I={{IGbt@XAV~58chydL>$}6BZ6@DVgBEeu?Ie zaj<+lc^y~QnlNQ=+X*6XRa(W5paakA`Cgy${z0W_OC)&WaICj1k;Rr zy9dd|H+Q1%%Ue#Is{~ZD>rfOP{g+zmUU}md*2yQ@a%W0*t6e{%%DRK-1pvXq6p~oA z0~U!u*o;4=`3Sr-tymF4Ga`P6u(v3y(Vq&&WXsQmT_$#EgCxdxr;ZR9Qq9-^UcUi}#jP#NtzF6bwJX|` z1~VvL5yMeLIxyn2)D&obM=&M`fRc#Z1uy(ak{4~3Af~v|gw2r6+*ieSA4BgoLd6^ zcSPeuedz5U3RxTrhH5i>P*^7V;@%QIJ--3f2!Dg~a!Y&SiTx=~78X1jw>{2y#n=EspATf_ey!*0-j63L(PlJ^Zob|Y`rY5xs@DaZ4P+2$tE>=nNYAQJWvL4 zUXg<9>y(soRA8?xt0?aikBw7xoyXAUnB(r@d9siO8+w;kq!Mp}2s-``RbLqv#lywB zOLt0l!%8EtfV6}lu#|vwBe`@V;LSca#>*)U+n-is9NmKQ4)D{Dwg3-mNkNFFT==3 z@{9nh2HC)s*rSSXU?`E)+%sUvI#j&lOpB-0L?7kt8Bvybev(Hc_k8i>i*F^neiMrbHuC0pJG)EnO@@!2kG}Mpa#;G>mm;db z*1tcu9&bEDJ=u4+)nw*!O*u<C&qm$$nrZ> zuIM?_t@hZgTgYLJTf*y>WJF>91p%LBS@6tP-mQ@>cIKO|Om+{3x!!NCSUR}hl#@8kl{iR;zjZ0!$I_qDS+KmEl& zxSiGk9L@KCr@tn24`=Kj*yUg8F2RG!u#L3&iC4V#Gi>}+@Wx3ax3*47_Px&Hx_a>RSefrm zqtS1KRJZkOPOc*Stf%pOzVq6LHet;o`o7pCehrMBZzFs+(!by(ZTU86&j@1i6pzr#=v`7nt@vJnDMrq}KxeD}FF z>#YVI@e+>7l-!RWbbzw`MAOB?nZnNoY>oc>Z&F*$du)bL!oFTpn&oC!(F|a70?B_M zp=G1_5h^AhWS)T0Tp7y20tUtr0nxR^k?agfc)y2+XN%BgslcPSmWU1vCtGT4GKs%V zAodnUC$fCh2+qO#kL=V9jpLjP$a|;@eD7Rm$%TIWrNDlnodT%dcWhiN;32@)GBA+s z4j~jh;+vqw)e78|qv}~rve5){UXWi66LFUT_6wR@c*4)@ z)l7u4k#NatZ29gK&ug2Q%F&CY_zFjG^)X9F8r28%YLGaoeMSUvC0yqci$g31tY{ZRw10NB&X*89X7fm__#; zu%F7{#(q9v+7aK3yaAIGyDR>8@u<$K<=PAhWX3GETnC+araWS;%)$`|8q_aX9Qln< zg^gxsOQyL2JX3x)KrUyUd0t9#>C!&9+)?)-3cDjmz4d>>n2Ux!9#~YV~C?cBFK=nyDW-5`$Xd z{qb8j=xWtN&LjhAblhv)HK;K4HJvUk?7uG0im3FYZ*V`6vriOt>Tz1r3Hu{H`g@sM+7=)xqfY~Z=TEQq4o5v2KwFnv-;Q@U);m{J&W7_p84WIO4a$8md1To!A+C(rPU-*F+p1QY zt}wEbYJ7TVc2mF^KaPD?mzisT-?AH5tib&=X>X9)T`GsqGleA4$Ilk7%$V{@vfh7k z@bO;iF+I%n!o}hG2iH^1TIS_in5dLBhY=f~=Q-;LU*X0kv(}zn9|~6`-zF$M2{!{- z;cS<>DC$D`2`dYi^#cyij4BYtnB%L+vORh@Hk-z+apy&9005j1CL#j>21B21@})SI z#%?S6CVaH)UukpHVus-~lw`;vYDH2iouqP+4K`lP9ndJ@&nV(jk6sfaA^!&6>oO3i zP$n$}egKys8@OXRfv@^GW`f|dY)!iZGd1wu6;%g7!gg-np9NG!kyFg1!ObH@s{DGQ zHEoJS0%n&DlWid04JJIFYlauZ3wwJ+HUEX=G2{Wp?TG!|hAv98TRhKblYjt?G=$+J zAOx~F72I(&MT(@#pcKn0rvcu}RvVev{|u)cWTQST0BDjRf9*MiHvtU6%L;^ZYEvjy zMU!8T!22>|>f}9>!3@VvEw9;FWsd$X3i6WN=0*4ZoZ-~VS2@?tA+G#UGy1DjX zLg-Og*Sga2Ms_7Xhf&k>%<#ur%&*R6>pvS-r<2-oY$WCH18Ak?@KIAe$lDl2MCr?}WhIMto-F=xFP6RN^I%F5ENdjZ_-{ z(N~#$>FlnFtN1oE!@2;N6xZqVhJZ3-!dJpY?1#cx;rp1Q6N!g2BnKRGPq|rw8@*4_ z*?ObZH7Z*4;uG_&YRw)Hn))@{G3Vj8R?iOe$9kJfL_fVG7rN%o$a~}X%Y$QDch*Q` z4jPS+PzJ?Smf_j2=jaGx8@}K33(2ZurSRJnZ7Er1UJA*~mfik*#P0S_!C*$d#$xs6 zhK~08JJL{5>BxNB&llgbP)lCLX_{b0RbFQA9TQIl?dpz>HJC%i8_2!ujDXe?g{=(+ zI{v5L-|R?iioYm9%f?xe-i?^yIej+sMd94&_&X99Vdx>w?HHCk8f$53IL#S-yq$1n zgb>&)IG{PZ?YH4>(e0Tu6Gfw0;CBkiU37j>) zE;lj$@yKX@y%!Q0Hz|vKEU6GnzPu&C-uKr28VOtE z&IU&){4exdX56rxmE0p#j~-tiC#eeD*8x*u>_}xGhy~JuI>l}w{a8;mo|&=ci}%{) zxKDAdR)MZ9aeYg_K83Op!?Z*k(^`f~WpUvgD5UT#w;XJ&$`(1C3Kp4<2fXih1sZ9C z@DN)3DCCz2dbM z0=s8gCuEqq25{Pq!rmg=kCo{QrYS`S<=;Tz*ivwKN0}4r0`i+h<7HW!d6KH<6 zstfMUJy!Y{KI`|-DTH14A=pw%1nl9NAg*Vdfosua)DY1HbNl0Vt4i52Gq8kVA=5X; z%e+oF;PVgi*_f$dp<}zadlB9$hW~m2h!VR1wY5)p14?BS&C|q5Y%QsOBf;HH1K<6g z4wzRDD1UX{a>?|IQ0jKE4ok$k2j^0FJWDL_#pwftu_>L6JN(M>6Yc@2cf@}8bv4jn ztfDcv6Zx0DsK&g)ukeL=LR-92fDB+HNGRXok`gyl`;z>-tG*L1s^bq>rR$4n(ivZVXVqRXE?Tu@yWb;H2178~Us+Q&*~F zi*yW?%1_$zk==GTzcoaU4)<+{^Rafd6S&Y%e;OO_f*TOk|32vMdFKxknTM~K!>PtU zS}DLx*HVFXEuN^|pmCT8C`<@buQ`lJDLMV`E{^v+O+DTG=d=!C?=-OEe9;j{FQJP8 zbO!ww)-p~QLO>2R!}RJsW<&YNs7>BPrw8xv{7bW^lSI4zUs)hroq1uI?A@g$=HDfg z@sSK`WuA6Njz3pdn+kR)^FEIG(3pLa4xGe23u8FaRorz|LoIea`G6h&w$;$yQsO0I zplO~C86EgGSbo-8hFg|0wocZ&r&F3@aEbNZejfjuszKKv4-ia5+xz3%OIklZ#GGEe zX|r48&xb8UadXedpy7|B*@J;}9{PyYHSc*(S|P5(XAxaG7X(l~`dUnG{Xg>G1-%XR zN1?>4Y#yt+On(V*M1a$!^5dnQm|x`qxwtT$6Zl0e#hvr40oLc;0T-=LQ2wI6&flL~ zJyBH0<=lNw-?cUW2w@_deUuTnqifi;Xe=XR#$N9s_dQ01pap_^oC2(=mz{d%gOwQFm+Vb_u{+s=tgbZmh#ld zaIew#&VS~dSJa4;C8^Pe$mi5bztR_>aDGgiK>_7|Q78^dRXAn!bk?O}#KZSL)GfiI z8IlF`OQ9;pV=gzE25jxml~b*5#jA2KkZGSwi%n}XpuwY|@tUb1f<7}jJk4uVoyXho zT36X?b(~}X!(N0E31x?Xb#PK+J5q}lNeH@#`xdqYyYcKOU5us-691=i3Bto9b|#!~ zUWeZ=Wip*(YRe)&Q+j%^ztd8HjbPq|$S5cXnorloaWf9g^a70)>I!X3j2MnnBgv_c zfGf3$k?Ft<6Mz?C9=XtzN;qrn&v17a!{Vp56~IUP`>BCYf)_abMK0;C8y0po`SPjqG1;YASjG+`KO)L5-~5qRDj1I@NDUx=tOX>+I6#5O5NS*A zS#1*G#1WMzA_+@t5PSe=wR2gRuPks#ku|j$9k*i%ouNJjoFK<$HIvpd1`>+cpajAL ztSYe`xT0g=fAf))z^p@< z3%n}G6gRed!3zi0W5mxGv1Sq31N<5e!57k zeZR{yh;RQALE2QcT`1r+L0en{;r?1y9|iKg>3%hZi4F@gjeT_rK8KXl#t%Mdag-2E zA_5P)MriVg&4sdZkLr=*mym5SCs5*mBAF)`(};ovv=R3p_3CvNnFq`!EydYGl_lWH zPjuJgzntf5mlDzO$z#plGdRQL4pCMAB?Mw&XZ0hY#*0QZMb`hf3qMOR-e7MefnBz- zGbN&kyPC71w?j+0)5Jdx`s?U~zV!3A8r_9lr%kthA!|I^q1JH6F_$3i)MWENm#B=D zh5P&AS)vWE@eB{)k1_dQ4rHmhR(=jtUkpM&X)vFhPhOX-KFu1xuF&le(%EZ)N4g^H zgZjO})wc~v;=6u(Q8dl(xtgEM*sjmt-F0=3-yxPi<~ZNYi&th>He5b#50TcFtq=fP z=pdG-yj2_Ijz^6(YnZ6PJ&ai^o2O_N8;v~9W4tc1hb{}EgW6*Id4gJoEd#)pkENIM zb5`snO5oHG%1!F|kH@n{pQq={MHB4UOOBl}(Z9BSDIld@70p)$`=y{DA%Ib6<m}Mld^gg!b|EXu#iBxTB$jD>QXzQ9Sa?rZs(!P^j=ez?BCbR(Z-z@tdcr8N zim`>{IMvZoGXGqh92RHi>xB{?BD z7vewlHB#tOC`NfF@Hy$7bte>VqJJsg1RZK#=9nT7icOD-1c@-vR+wnW%?7JX?EtuH zg&!h2jI!Kw4C4&s=``GRVG<2A6Jp)LrTnI7+8)xsAra0rvHpnZB-O^RH{Up9uim6E_!W!f!oS@ zg%-1+HpnN;99>~^Sp+biQH%K@idy?R+uhDfaWgz{D1f5+;-EAqwrQs=(`91ZSE{Fo zCM%53PO3PiR(YR&KSB_T)7%A_{UiE(asD3zbD*SlVZSTxof&MA;0_X(SM{n;;x?8d zkhNNPHePD-fW5U#np~QJ!~r|VfN5%2k-r>t{x>Wson3nN>Ydg?w z0Y9s<$92VISP^-V;>bI{ympHazVoO>K*X4!+#dN8*62O3`{b zG#~kP@azr5K26xR*LqgWPDiNVn09m9okxHgB>$arZnlRWuj@oEg{3X&FHnfXuh)s&*mReEQ*{-gZKVY;k-Qzm|VAIfrsE$ zZGks7LI!Pcs%uepRd(}m!EdtZexgllN-iOgU^}X#oqoRcXuO+%pFp886tjCWTS6ZP zI(Gx?5$ezR-?R#!bvc-6Y8Yz#_L$c7XW%=Pi#40iDZhJ=BXMx&&Q9ON77RTF#V9P$ z;0w;@f9ZKI<|`H@LlLL!lD@w zPvQnN7F*6x?SQ|C&yHSM_;!o36=WcZhk_rJvuZS&CtPQx`nupH zjcX7MQ*(r%OsRUB7vY8FU-L)vRz8Sjv^1-GWHfXEQ93* z1F)Vm^^D{|iFlHDyVwrUO#C^{WlmG&&rln2HYFCHwzYbWor08L9}X5%FW$^F$_^K@ zHT8OJYN#a@q&ZKe9lVajEIa8kU^=7*fevE5zc)Yq=8TiSr$ zaav?ml~n|fj)EJhJ=F?nqL=Q^=d7bEVN15yQx`jlY6Za+3hZr^cHNkP=SEQb;1f}$ zfjteeQ<`Xk9v%Sg_On>k^lo2)$Hj_|?sp;94xv%Gk-ni`jQ1BN@0YW!s=j~q%9256 zezDH@b+jmL#I)SO(g=Awj%`EOV1)@8&`egG90 zbLim?r=Wo;=GcH8X+zvikaM)x{L{?0k!z#i zxkM)|zfo%so5omKil?4f?~NzNO-CUbT(Hl4l7GjxSl)FZnveY+7cMO&t-m(lbKv-2 zk8*EdW&4W?nUC)A*&%ZH_`6G8ep{2gID6Ix3?WI_PWVvuZx7Q|n;T>MkIwl%dU-f; zzVKI-w0gMAb}sWGv^n0KImOC$t9F^7)R-xXe$*QAcGDwMiBmyXeohMy{4rmav zv=D*Hh5!Q4PAp^~Al6VS1mV^@imXwEZWAPgb3#V&*~kACRNMA_b)Q%!NDRtI6^qL! z4UQULo%x<$UGRNM519ce)}7{Z?%?|^8Xh)_x>%kf6@t&wc_Xs{?n>sRxvp$mMllj? z-A^sElgQ_`5LoMgQ~|O)07}#&NODy9}7zme; z0?&ZI+I&M}G+SlJ!O!lp6x-11G-GYh0c(-@d-eUKKtA^Y?Q$S7bOjr&T*!r#LZTW! zuRK}n8qo17dn2qX8DhVviW*FB?-r0rJ&&ddFonIc2x#)`VW+-X`(Wz%LaZTzVXBtP z1IuQ>Mr*g+C1NT}`$85q!NoC6amn4k%t*t%=+JtoLgt}*wnq`CMu|=PD{i@QPYID? z9!q$e&n~4c%><@Y5P7*-be(3+P14n^<4`X~6`8A;(tGv0vdBZEZyM~wSz;4_;A%@P z-)Ob{O?p(}ls*GKk2B=WV-vuuD{_SP>Xfd5wFEzj(DnS?+ZM|fm3a|eE_+6;`f&)^ zkI=7_e+wqRcFK@gjD3&I^f=GH2 z%?Eq)3oKMp^e&ah-REd(iT8DTt%6^lC5qnU@G4&|UazW{a89MPfdF&X64!jJ=^`yZ z)ednC(kio2U#~q0^trf5%rRb3?A69OFildpifmj)ca@#iJ2}im;^xr7ziADxc6bXc z0%$Q+QDGc;t}*GZT>hlxSUAw|>~Wr5f5s#tA?yO2^aF#t;|-2v1BUM=$l7U_n{Cf8 zG((L+J8kP6PRzn?j%Pr}I);`tgKz-MH{?4RR^!(7zbJdzWZYJgI$&{u$_dH7rVS18vxZq4eXMNvS zJ(@Z>VSUDilfiSpsa-#L%Hw#4z!z!Oy_S~DEr}owbyXvat-7pC-nE^t^RQoSttV@t zn$SIzBvM)&L?_=v^?1P1mb^d)_vz9l7A$rqcIH|xgo&5pwbP>S91mK8t`0F|c&@nzfZbfk-I&8;&D45SE*MeiDZ zIm*tEFioH*Nt+fhDzI_q=#8BBPFBMe!rU>fE8&Gh_#uUQZ1?Zbgnsd=3f#jH2^YWC<<6qXLzmR!@U(&Lh>T>nQs+UYI$eWYsgEtNkhSF%N z8}i_I@}*edSadHOOzcXC_q8=?;)fZ0(sl@%a2$F~I0X`;g0vD6D5V zCQ723Q!yT*D;BjhV4|jeYR$qmFEKZw-+k>pwk*y59mZGwF#wL`PJU7IZAEzaYzCFO zOc&FuPtUY5~vm&%UScw|1ci!5}hAPR3>fg8>q-IgVRn0QpvmlAn#337AU?vrv))9wF=z^ zCW`tW{CFfE+H9dgt_XR|?~!dK_AaVzm>O;3NE3LSXY$?MZlW0TNJ%d4kV@JlD&QM; zBHlK^E7OzTYv(!nxTaB&G^SY~o;yTmUX|=-|B4DA9*HSe~th9uE1q}mlKQNbf`do-RZ&JBJA+~hdMhr!E5@hlAxd)a|G=1W~8f}vxT zyz(b=vJQxIKKD<5`ku1w*IKDe@8(k9f1$0_-A|OEwJ+_B732qoV$H(T!yms?s2L!u z@(Uf--k+{=kYuS79uFXy7rkZ`ost%=oVEtS#l*PaF?twSo=GI#s`vMf2Qp z$AfI@_J4D}|2_7C7W^~fE{KSH*53W+$`n$-u41 zfqIP?3oxymUO4)KySaG!y2SNQC6IPvt?vWVqPX9BVL`AT&9&ImBEHWdU5LY)TA${D zfi{VHzq5l)7f5xVe`1y&Z%rj@vK_7k{du~Ua%oI0-y92UWdPCQ|^DFsexV#c&Q|1X!@-kY8rG=hauK{JcCSb0{C&63|$%E4qWJ-duO};ut3hy24r3@y05cH zRuTf70-*c%7pawf*7Ea`HzBm;TN3Dwhm$^GYonUeU23qT0KUridB>CGdE=m#w6sjkfXH2*4?J72s8|j-Pl&~m)n|BM; zrC&vSd#f|>_e&$u<il6ygXb45eLQ|6CM&fZty7x0 zH?7B5loRWD;$S?UE!zO2vhW9_49tAoZ*ZSs+c(6}48M&P+*v9sh=->DjUOla@hp$k zGqfnWHwXyy7?P;{PmoluA$w_w3Iv5QxQ4m~;=-Fr@gsh(Lpic2&MzyTu*uirN zP|Z6Tv7b|p1_(j8mCPV=T9lvVZ-uL*!(2WBwH{k;ZefPd?Zr2kGraf9x6eWZS)s2P z4YjGDGVUG=*E?>1T4uYKb_tSY*m?DmdlVTzs->7@7_fv7?AY_|VRuqcjs82G0%1SYM)<7eRg&HBdQ-bzw7eSz}_^{kl*`I3Q{aysal@o6<#juOaXeVL}?K}7GMn#B|%GWe8E!q2N zWYpfby!HEFp~Nv?HHmU|!f8F1B)Gd2{@Sp|{46(nRoW$$PuRwIq5VyoxU9vshX;~P zdA*wvqvwkUyq&Q>*_jY6zE9OalI#P&kKVbaQoLIF=>-nH)-Q8Np3}PEbq?6jxKn0* z32QK`pUde<%~AX8wMb9fRGt8_RDE4Zyn6iNOwYJ}dl7-|Ke+_1%rST}!}?oi?AP^a!P1%2^CZENdozL@ z@%Ev9YK0(fpEr({VIl{WiW>5kriHhmFX(gJLRiSR9OY*(Ejj6Ky8i0iqZd}mmZ3wR zCSqyo6zdBVvI4xq5SQeuf=*aiA>Uu~l<5Sji%azb2BB)!VAZ+dx%d2xbdm57Ow|vw zYPdb$P{OXG$*S+5%y$Oi)SNS<@gbA>J0?FYK5w2tc(X$`y`Bu`qK_G@eEo$K+3R{dzoy~rd3a?H)m!LV_eth>S_EPm703nh* zAb6zFaI2#=QDTk;(Dw(VMze3-!jHRNqJiTQ@+?AiVNV_z_hIKAGcK-IB6$}AgdIj6 z!Q=#F?#o*?-cmg9BofPqc|`h=H~Ry_lb{zB9c8H*Ks2O#fNRGv3bpoaA@K^-D)jFm zGE8gAYt2t1_N5Vf##ng>%LZl8O)bq}uLt-z2&K?eT#rf1Br|}IDt~VQ^^cA6CBAzg z$2(GM2rOO}9;%|PtPN!5u=$>#n(dg4M;|R%$i>8&dlc+^<6J)p8jH!pMq{qzFDf)C zMmOM1jo-vh9g3Mn%X$|`@_na|+kUJ#f0Ew&ymTBRP+0!N-2P2|GDsv174&N5dJLUw zYr|7Do1Y*U#5Jeb^KQ<0jO5x?C57D>)#{ziOKc}HTP9W8QnbzE3_up;F4H|Fl>Xww zk6g6P)8l6P-Yi-10U4~)A|V3aAI#ZA(UmpT=FLj=?l+E=+Mn2LCFh$Nh*7&_i29Zn ztwwo$#;O>Wa0I~gGdU(4GGBoUT4!?m%7Y^-J{9t5!b|#QepIlu-?Rca#X``$;0`#$ zfo_FPjiIv9pD(G*nSq6TwgW`-xPhY59{j;!XLwcXSKX*1ESjr1r~86D0;y zFo|134nGFg*BIn7t3BjCsh&=q#y2H~juYQvsI;!@9`(A+T3@?jvhOzJp%>Zb1-$rG zq`$J5D@{1jYO*%3jyzf1#qjF4W@{+zI>m8%yZK5K##8-es{T z!4oqEYNaa&B?Y#tTiUM-9>jc;`(GBCs_8QwCA(KqF5w?e+J72$3u--2YFMtg*KbbC zR{qzt=i4TNHH1;c zL{S15rO5U|!smGLJN2gEAm%%P;k3BDGL4TGX*}90UU}02wKbOpByq9k(t`vhjP&Z- zyUL}_8#312@oxv6;rGDPjSWLI>T*Rwyepji&;q3eMz0F>HN1U;fv3!wv;qFjMfn|d z%6(XgneqSLs`ta*I7$q+e`X)geM0j+FrdD~BEy7=h7 zX(oMykSa#b?K74>H2C39tJT>2N0bku&qkl3XRnDFe?X#G_N2A-X1$S*(~rVW^}^39 z%*=%Ma?b_uaeI}p3h60e0fpf=&H%IlUHK~=q%`M_(32+T2vJmukEgVz3Rr8fplbI^ zo+hA_4DTiCiE}{9+uR}iuSk{UM4=N+MIT0QQR-FZlozJ2#_wAt#GQr)fj1Fc=tJLV zW7VaSK_@MPWp8*nV3{h~o_yWUGImTrpY=DDvMw7ndaE)CkaO)p1~9OxR@&Er#q?+5 zh=zd4h5ev`2>?7V94h3Q;$FpF#meKgC1+r)`gqqz_ckZswy;O|GM-SzsWsES(vexS zCthTk+74EUJxf3ze~sEe;;NNkSD~gT;iN_xAwqntidrC*FCGYT`6g2IHdmPDMdY#p zuk(Yiq}gP>UAk}6NT)WU;U*xWY1d$>E0Q&bIp2sVJVk$n?z7{{a;&~dsrdNc8DOu7 zm3Ewdqmx7_;C&WZ1}44i>@I(Pz}W$Zos(_#%RTD|=VqX4xfzZ&$xW^)YPK~(7ebwv z`G}R!mgU-Ikb-1754)*33L{1Osl?y;teIOYbnkVBcX9HOIR}xE=>L~P_JR~#_z&)u z|4h=4{V(_Ff97gEK&@NaktrFC2j~2R+{r*% z`F*YFn!tS@7R_9p?8xqNME>4DCduT|Xt%z<$BC&5jmL52E`CKJ_#ggi&*ePQa}Iic zf)!%>57Td{h=4nD2|)H@2TWYnB$zRoc4DQ}Ng~lce`TSUZ}nTcME`+kzcaj7Avpmn zHjwU4@EkI*NwryD*7vC*|8n*HuPYyr`>_uIWU`j~9(hVOjknKj+@>XND-WjA73}(2 z=5X^3DG`Pm!FQPXdIz6q%{j-Bcr34h=!G@|1-wedMvO%1Dl`UZ5Q-DGFD2I$auThj zy6Lv(1p_wlL{}(B0O545<0t@>Jq#Hw6YwL0)WGCNcK#VM0M)nf4TYaKaWdFC$z zsb@J2d%l^3eh7Q&jlfH@<(*40UHRiA6)r?`v!v#wO#@&YvesrTG9``=Y{UqA4dP=h z`u=Q$6zlPgj*QR;f;t|}3msh`fqXVB**i6T4QfIG$|&aR(+mNXO^zpUA56^#j#Hy0 zhdww5X#I%zbeyQfAsuRZhBGLt;c9h$K<&wKu9u~AT5U}~wm;>UmlD{dwT8*O zxW|z7T~MG}dJ43LuNVxPV)sP(qjceL=p%Bf)IEATkNs(n(5T7-UJa&9Qf;Q(v`!*3 zWL2~=LMkS}s_vPYG%;>&W zE&h(AzhN6d*D!l2;GxEB(X@6rUrq%DjMB8i+m+ZfRn>9i2s(ezjf27G88?!EcY+Iq zY|~DeaY6wbP(KV5LaB`{bQ=sAu-d#f*HGY!{phuSIj;r-iyyy}D%nQC=dL1isuo6+ zTD#B-jr1UWQR-uNnoV$xGleF)E$$0p73!V2QldA1c9a9(?|NC%Z*@&!e|BYzXIB3f1aeuoK;@gwlX2@s3$*hr2+ z0LRo%XKr@F7e1XM0x>mPN`p7?=hwC4iV7{f&i*8d5QXvS zccR7OS^FOdb?d|`sl@HJ97tU{?yR*7@I}1F0#o%+nXOK8@z7Cmj^8$%C_vg?YQ~v=if9D zAA&|O#g!|081fGD`D|a4Sc7(!xcXGc5W{7Yz6*<3xxhOir-57Syw9>is=sBneoMulzU{_Dhbw5tF&%^@GJl{q0jYB*{~+ z;v_lQ!oi;@aAtg5%;X{yr)X3W000XY7kd$)i+O?cosVtr z{iU9Is3>-VEmC29tsts@ni<^^`Fk}I{d5sMqO6~>e@p!^jWr=@q2ip{I5C51y2yLe zk-iC!7T3g5VrPyinhBPU>}TR7(O#+o6A+?$lztONe4G!iv3C&Qeg zJlt}KQS{6a5nrx+0)D)CNI5#yPQsR|KA_+z(3_0lN`zaU#$Gh9C^*z zliD_IFUomumiq8|T#zkQq}pM!m@CI%(v*ev_if*y0ocRf=2Fg_yp$`e`&a8y?((Vn z;f1Ru+||zW^mk!b>(z8dA90Hp^ihP%`E0V#F|)Gz;bknS#W-()gA=MsYNBmDnfS0S zvKUkuaeT?t$bDjaIF8TO8mrmSym>~4#HSVY&Kd2fkz^4AYy}QD9|}zr)I!%XWpCk_ z@b4Jklp<9;*wLOKs>MPyZjO|IQ*l=<^)8z^^Ue72V<+5bt~P(O#%Zz}5xjGA-U7XY z0Et@NY(>8Wk%2?pz4W;QCPmpqeLqf{|M1LOWTEbdyJ#iDC^5sFDA<1CAS9m9D>E?i zpvt|wxU9b<QNIsgU6wPF38mS$>D;YiMA*nt0l85r;ziB^&3pZoZ&4FWhwPsFE zY)NXNz!hX@c`Vij!p|iJ&x7WumytvlE@x{FRA*^za~6C7+RM}6(?%PC*}efwa}h7` zXsU%sglR-Z5WH7$$lcycTw3agqA~a^#S$xb%6hv|uXP~Drpv=#48S^1a3{C)^4v3@ z2zl3-{5Yu29reo__M#GqYaNId6yXtBJRyp?EaSr(s4`e7qx1-Zx_!dZ{b(|+oh0=9 z7@WOD+#ojBoF?67lDRi!o9vPrKl;gWc7<4?3nu6{BjA-7`is^vc|}x6RiJ1&o027) z?Zf1qff%-eNzdj3u}IovwIvz-6kT)8TZaiDhH#I_)}nx9lX4YmfkW!KN;?*9%3?dn zOL5Hj0w&<1#O+Sv@KQ1^+DL|;9#R3&U9S*M;|Wy3oy)%4`%DB?#bnZPckF#1ta>|O zH+%1xHE)FUjTEBNG|BA>CmM4ed0q|YbxdZF1kZ+CmAh!>=K=LRuf`1sgyLK+a|tCrq4cfr zz%!-_P&x5zzWeWkW%LGp-LfcQ_0^un5@K21&lZ*px3`p#IR39Zze#V~PPJSpL)F^T z;wrhOEDNZWd%&maXLiDfw7%C&5aw&P*J`!Gn_MSxwxeF5^27gMyUqRwB#VlX6#x5A z_g^3x`9n`lcIk@S#75Z$f`bQa&Q~!TTCX9l zkkH&Dwrej9%!y)Z9>Y^0WmkQTAe|z-w`aS)x$%50Y&?4IvErvMq?1m!iZ_!?EBeQ^ zZld44;g5*t6~p-Mgwe0l6>hQ>CG`hPQgE$bJ*xA@#y70rj1oLT1Ci6O{Wp_zntD2g z-t5-N1r#}C{SsAhpJ)cKu~3f*Q2*ZBtENCH_EiAqGZv0gS8;Yc=Yf3Ug zOg$#rc)k)w{8gF;l;+kL2i-a&{GiOvn1-dmHSY;E@D-=s1PCU`Dz;CK*G%htY7i(1 z?nl5>*CpIB-k`C2y3Htf35=BYDh?`=7+F7w7;j}@PMKl=$~XQvLgE1IG9jC8q}*ll zlzA&{qq;D<{ETlxpwz=A`JdnTI$LKkH>S|c1f9FoFkD$H!+G6avBSzt2SJ-phk=-; z>kGiC5+%aR9rBBb{IYmL<}~DCsO7c7U|ast;X-wYsIru$$jNL^!YaBg<|C4f=^ceD zAw8rY&0Moz&}z+gh5@{=x;!9MW`B$XkA@VQ94+i8<~=uO>D7W{?b>$~$hRdnlLYp? z+3kg5;Kw?OuULO%ACRypab+u1e{A5SZuhX*udcE@k^0*rUyYrZ6NA>RvMQ3t+fk!| zui-7#0Oc8elZ0%v`7`R6^UzjaJ_>!@=%211ZP)lEb% z)Po6Uwf5j<^amN}_KgtYkIM}HB;fBKN)&gJ7;$pwe@Gf@xrunNO*jjuV{5zb@e-*< z(+9!#j&t*OU^*2?N5e~pl)vgCeDLXkV+4*k`%$hS^51K`MTTP-vxDN_I~Ly4D5k@o zO4uW`4xo}3xxWbPzKgh0JFG3flepc)7btOY@%6>7l^;^*Swu6jjiyv$(IM;4J}mu7 zun-zqh5E`+t_jSdwVvk7VLxGDQVCJxs;Md%F!x*dd89)TcC<4wmks%u&NTMeq@L0m zdIJHhuCBeKoZfArE2Z8ZP=@2q7hu)hfwj%(kbeJ?=kv&s148!dmU@J~dPE-4PH4wZBfD~XJ>W8PWRJOm zzCe~mN>K4ZxMtR+k_;Z#Wq$uJ>+FAJmGmO9{X-vN%P3?251r&6G)?;z_0RjkW}SeX z(LJ(r>t^q&05J*Z{UT9a^ZK91i4Li25#O8IJGL3&?%N;!nQ`X}K*(NRT^yJH6Wit2 z?xzp5gD>euep}r1mE(4RbE9$*B>fLQ-&-}CukuiN3Lds;-{3E;E1cgpETq+MHc41y zy?0H4+8NB zoTdUH`~PY9V!8}aeNGIP={nlc@h6JMiYEfGj9`WM36?8cSBNBdIDhd}Z^Vd&z0U*A z;Il_T8%JqBjDm-$DmKf=aQeGV^Og;0RrP~n=*M}3MC(Id%U=5;@sILKWM6{np648Y zw{NE|76SA7Am+Wu63qvnXapBfAae-UG69H0%usS6*7qp~5Z}@c#m`N9#dZqYFPu9o z*VlNlpYBTGL-!C+3A;ear;Kc186~C0I>GJ?c}P^P9OBvw1y_>EnMfARJ@xz?ul1wtz`wJPwT z+!dr%U`q3+w;b(K2Wbsc%4){&BftRQ`TXI)!2Cq6iA4;H=NAb2qMVw*Z*_^-g|9ZHr7ko8<*}%liTuQ$h2kXXopl_GJW$*R1Ihc z5NSSLL970a9N^Zk1?`sUFnzj_dL}t5kkJ%#s-3eMG17J0< zF8yUy-_oo5-L-2WJMv%Z+Y;t=K9jN6J_!mV_o@}jFNbMIm@bF3_wojsEWH%U=y=QJ z%f@$iur{CG13W#|+mj`1*D(x-#p_0vbW36-;=PGkjB*7Jy{e5mGYs@rF^1s$YP(61 zJs^=en2xG#?&DQm3`j9qZY?#R`x&^rK{Cx{tD8t?x|6Utu_p?K_TIjK*zGJ_a)4!n z0xR1lD>x>3OcRB*7iR7uJ*EQ)Ww}JCGPqJk*)r?v3#DR6+8wNwPtvgL*M6>TDc2H-BTnE&sO+VibHT#@ zG-V3TXElWYc?J82|0<^A3ZC`SH;Rq{{*t*|Ds%o4?&51rS!Sx&QLww+q`eVt(T`Oc z+>uthYI^?a_Krb`$G!=npuJIqSZah`fFJSJd4%bL{{jGEOTuy+1b7~czYqA^GnH5XxJ{-#a^ zMW1~(B-KU^#$r&T39FC&Xd3x9d2HQcNVta3>>!&2I%U#PslyW6S^{Gh&Bra=C2dWB z%2UaYJCegEYkis^r9~q|3|i@_tpSY23I5-h4EvUkB-MY^Ii1or5`nAKWq(Ls{=g8% zArqqAc;T5Fgr(>7y$R=FL?_zl)x74*I&clUNP@cW0r)GkO}DIAW(XD< zg(^0a(Dpu}A1kxG4ZCgMq56OX6{Kj+W4H|xw_T_W+V1G5ewUI${7uJt9^zXFjl?gV z`K&3Hbsnt_<}YzVz97adL3yJ+@Us|~X75ST_l%Tj-Y3~^QdGzN>c{m5OlB%n6s)KB z;Q-(kfe9*65dmSnFrkbL1_O5seK0mGd_#h93oC+v!C8TOft~MD^)vS)o%Oyj( zFE>131SQIdzwltbW~1sfLCCm?L>|vv&qJEzJv`1bikaFv-swwbou002(GJsq33~+1 zafmS)0WOQ5Py%^xthD0hws-pEnCZa6Qaj9vT+d0agHmlEM3k|KXBRY2zszV^$R~sI z=L;l>TC)@JXQ252i3P;W{t`;R?&s|D;(Zj4m!H|m&AU)6*4bR1xjcHsZR)LTWx6*b+Wjk`7O4Kxr4!QCC2 z;1Vne?(QzZArP9z-5O}zEd&k0LLj(HfIx6}yL{*T-}&#ThyAw4SP!+T)~s1`9t?J+ zH?e)!eY-B4n6<}RFaoKvc@zEC|T7Tp-oR-w=N-AE&(+NQebWa-Xpyf$CVX_ml2{~~0ub9Xrw4O^!+t5TRe z;T>mH9yx{h>6A)#Y9gyeRY;8BYdn3)8X<}MdyAE(17|M=o5T}&{XWSHzxh-o~8uAG@8Fb#I);}on$K>3{`bw&S1YK=|@>p%ig&bFQEaG ztXBy{?1gp%xrhg}Qa66`yC5$DDTpDYJ77EM02vFcA`0wKV{MhcvWW5<=fwsxfbS~> z&{U~MXwcI<#)}*5iKbA2K`fORl67$o6pDO9`Y#_)F!!%)^rns6@f11+<>S;-OXAhfL5KbH`6%#ppb9ASV;z-gkbu z+$(4g19XM*=8_eBMXR&uyZemH1@@VN4}yECEZ6G)98h_te~LC?@DEDQmK(`SFd%tD zq=ztdvdwU?7U%g=`>O(@3>BA^wb3a<)tK*d zD!1Nt)rdzHf=vi{2!mj5Nt}~fwx7|=S1L5gh!56p`eB!ys19ToQiJ55Mc}#1xaW4t zs-uP&9wKdC+3kcT{VG2$2^)c#HN*bag+;x29@9!5+EMwe4=$KS+X zAQttMuWk*3yt%ue1QnL5KuV}&hPqgs7*C6Me`4{^N6!{j{AqlVyHTD&bT2=TUH%;p zVdyyjk&TLaI!-0)H~iJY#6fm|dtm3{uuC8-?Y+j0bMZ=?&3CBZb%sR=3(??bgXD)( z!~PH+p~Es-W@hH|Cyo)zxyLpE9dnxcf5$0{Uga?j z#Gq!?o8nU4OTJa3rWiN8qqrO0{3_qx{1q%MP%zG|XK=T0dR^m`jGkhX@c5gNb{P4; zu~RS22p_X3nPxEr{hwH0XbF{)E6Im(hefsZZ}N+ooI%suvMN^ur29%}7%9_fS<`t> zqka61d?g=hY)XC@p1RK7UV2GXt(;Sn@2B}T97ob>_?@7+-@ll~9vR-=6o{R58pXHI zp1lv6{}+Eh_f_nEU*W>d`}kBiuK9%A^aODEJ!!WcWI&i@Ip^{X>a^OHCx9TGLc@~$ z8bsVD?<F-0DlM;G8X~tzz%sBMW)GUa3|gL#kHzB`GE}5P_63r{$vDBVaT=VXx96 zV+(*+qQiR3-2wmL+WRPqa;Q!9A5cs`l>B6|JKvj8oXwZ9)a0{|IYxbw6G4unXXn-x z4qFC-X6H}+3vPQ=3uZ%UUO_fo^GfCNB zVkUinp1vFh2ea5kK*qw6W!>@iG!eGvi}se*Sp$@{QCC$$qGhh~hT*nsxS{UP7n@Q^ zphIr&#jkaoZ*-_dsH9cP6y4*RpYc3OD=y7*+mH~cN+Rk3C~7h`(=g+j99ra~YBZanIY;>h zqa)LkEL)UBb$5wT*}I>y+K-Yn4P3k7+&%jJShe**|MU;GDS$1PzyR1|c{TN`Qq|)* zi;zo*@!abCs5eBU>{oFf>0^bZ17Qd->K;DS;c@=1CB#N*qsV9ZJ2_lc-ph+y#5C_N zFW~Y`NY2j)3Qi%QO`yxvcHqzPkxn*XJB zZ#>c*YB-(A3)NoU3`H4sJg3x}QST_Pgg>$BqR}bywJ~eh5kTFh+eg z#A>Xriz@3RLJz4EDV;TRg7nV#CaeH(J3h=-iv*gZ=teDgj|_H};Z^p>;-sgc)7sg6 zCB1`gcZ^IErOBqx;9$#z>BKHZ%2D+9FK8I>1!*ff-Xf?J{qgVsxt|YX7z&@dQ2ehJ zfTkqCTnIHDDZS+DgALDs%_{N?jItVUZ~sIJb=HAOxdzExhy^|$-c*syt`^`4fG2iD zFW~KwIE^iFFrs^)f%^K_6-8fqgeQ6CsF( zx=(JapeS;nUw;xDhN6fqv#niH9f2>7@RU7g>-D#ht;HPq7>zgX_LB2GiVr3)ykL z!Uq46jHvO7fkVLTy1ly|$EmJRj${&ZduRsyndzyjxk-Ua$U+NvJX;CnEo=$n2$xHF z;f)n%*MHpn?G20sGP9pB3O3Vw;Jd3d47bRP%GCW4I;2#QMEBNEKkYc(ewulZ0aXIv zE;Aohl4R8ethumU?-9 zWT$HW#75wwJhvm+84IlFni%?+a5?41mykEiMi`^GOD zz3G#_C&_HxM#!Rry$+JfzazN{HOlT03Si|xjeN_!D)YY>n^eNIKoz3ohK{OkLl<(WH2IdadEP&HpT}6}=qzF8^Ab$@ymCz>WX(O@ zsW>w~-6?1P3`VaZLFXOh^-o8vZ77)_JKlnaVdvsi^kFlXv~9DloJd2tD%c()K{&`Y zFeNCDitG8ATrzuw){{X-^;7`GAgyiz6<&&uzkY;yvIKvR+#WW^1USapk|l)-4AJ%& z%Pa!EGw6epw`c<)WD#*;9(2wgq##mhJ59UAg0DyjIyst~_I9LtG~1594mPYQcrao) zX_I?*&I>|N1A9)(`l-7ksiak}H^2mfg5(KFMt|;tC`J~^OcwBtE-pKKZHU^UmcEWJ z(yB1Go|pci5E)D6VKWcHDtebH4+Zds+=U(xPi8@6Ule!WP5)u6UIrjzePz{-`vnTJ ze+Aby#ZsNq+=&3nnbIQ5T4ii~svvd}whI360QAby45gtxl=D>1z?70M<@SD6l@pz2 zT0MJ^C5NpdvXH0`b_+yv>k(IbQ`%khj>J+k@=0}pT)-Ew-#J%L$=GubY893W2b{g1 z7A>;TnT1#zia`P*jBqYt;7{!NSewc>9LnU%Tc|{qpp>_-Y-vp5LZ86+Z<&W)FRJuV zlof{c%_r^QyH}|%%Er^eWh2`i9p##c`l1P8n@DgH8kuQql$%zQ*b<(KN;Y}b%-|8i z_oX4(a_Iib5Pd5#n6(_%)53Avyzka>qLQtqD|n(Pkir8K(Qep1@*Nt4+k*2spJ9+cGr^bhwLnW~3{vdP_tmgzgiY$V~!YJ`AbDlE@f9D}N&5JyQ(WV9ew!C5N1g-qgyE^}U_%G^ z+P^!Rfc1t_*G2dIeGjTLfsT<$kwheWnbY%cjD`JJ0?K_0k=no z2i`l}*(#;KXZfw0)nx8z5cEis72Lo3VbrB=I@W>lQ6-f5QndW6bQ%-6t@TSh+YQ-gtR2WstJY3V z9GAVY6(Z}!@6`iY5lUO=G8Kbm;L!1YrhgO;rk1r|K!e!_^D{uFS<<{af)v;_Io&GLSBJBpN7zTzZ;GJZWC=FJH8>%QM2@zYg_S66o#u!^|{gF9!l?2L0M? zz&BvFVtmpaZl}@6?#=fHueUeFmqVPbu~ZKAzIVaC$z5e**OT=pp=Mm)0Mh0s&hMrK z`WJU!~T?wlbO_>yD}6ibA90FNt1hi#FR2SE3FbM`4B3a(9TiT1U1D_eP=w z)2TtVo#mcSA*iv%*lvUm>V*J$sa`jE{V|t>F5!`+aD6*5k8kb{5em4xs&1oe9;A?S zH_RW+SaWryIo%EnWP~&QZ_0|3DMw8ERi!NczdDSDbCXQ-{bnlu_=i@YNzk>?#8uPy z{x#X!RKN=rMT+}QE`+AC%OFqmzS?zi;mu^~=enNa`CF~UkNwN)`^A{0Q#H9>N8;Dw z+OBy5zklR(V_SPO|L~~i{^d97%R|-{*7?3pXQL2dmOeoG>4Kgk^cw|)zoE?=`KRBP zO2L!G;cx+|pveb#!Xe$I!56o@CC9J9{afj*7J2)4W9N@r&K%nTimux32f=-1i6MCc~mo31aER!^2!hRMy{U^7`fc8xN-wT7>LCAwFpbJ$xXE z943iOz$ecYp#1nZ^6u08*F30`%;6)3^xVNc5~94U%%S~Ae$>+mKvnW-0WTA9M^QJg zhh8&Wr2?NvkC)jfc2NlMBS-kEQv7SvyfUH` zOQN=P!fCfVJb%V){c}&h!D-FC;uIc%RRDeV7bk!L{VoNAkWuLA-3Mg3hN>m8FZbD1 zh1&wxMZ`O{0z!>fvw~Y2QO;wj`tIoST9LWIN&JMP`O>PY$|44z-edkHIMkcq2LUcD zFdD!%Z754eBShq9tim5+PS)e#fsX9#rABfIz zBT0BzML=xxtIik@8&#DtHOxy626rKX&B5gI=%>K)Mc1}9 zr{XLnf$Ym%Fu4$e=+Ux>EvNT5_lT}f zL!O=UYf2UMRwHu%x=#FFRo6w9{{>Gk%dP4l$is1?=6RXdPA7N*zUzj<1Sa1dh*{7s zm1DqqbeaFQM&dGIi;>C!KfwgQQ13~aR}fHItqqjzV!2p&czYx2z={bW782&knsqLl z+{$WFa+(!eDeGE(!p4in4K-?6YMaEOZyYz;v4ahiLmPJ9zlG`m4HrMBTTQXgyibBR zXq^pnNjd6K$(pw3$KJEGxYPF!j0dQOu>NoFJ&ha- z^+&{Nhg*L7zfoq66byFH!p5^+{D%?E&p0g&WF4?0=ta5nIPikqUgtjs~mlyNuvz+G)3P8{6({AY< zU^i$ejnnjk0px%&S%`u(xha4oZc-3Kr2A1?5i7+%KMtI#UO}eIgh@9J4o7{IvocL! z97r-=UnU9byLKfFQjx`c`U3i>n#r7LVbrONg7NQ-vU7eamXx-!+(46mK|hd!+L#a} zbb&odwh&Ggel`0mvj{sdBUa8iyt z{YG%gJM!YXr5F%`NYBYIe?4a=k&$%exe|H|w1tUq&UG_M`su4pF_M~m_%T4!$1=o> zRY3qkcoaS_|IQzGkS@Q1z7qAz_j!8uw z~FE9!4!9f%1&c*hzu87vncx)67COYnU_f;32|$#N>qh7b$du{K`d!kEnly zT7|S~4(p=G`j^EAD7_fk{?ii3(pm)i(-RAps`S&77T<6L^&zi33OA_GKB(r9vIUzv?->dVkA9EVY4 zaMxmQ!J5O3I9vm4aE$+A3q#oAf8{V-gz0;f4q$G!2ai>rO^zp^C;wQ*p&%OWAgV6` zx)Ov{+Aj(%?zzN%mRylTBKCyp3U&#zjqzg3Z zK0<1yn-ZUTqa|^Q=!n4y_o7GN$$*Jk_c)}mtuZ~p&_X}mgB+(IO zH);6@fY6xG6XdqF+!LD8<>`c0bVezebH;J|IP*LvxLR61E{0NwD3;r(aps$qX7Q($ z65f%sy-2;eSV3Ftnq_9_FW$ALC6sqNvuKe_XAQ zrgImA-s6G7@}cJw$L(f*x%3Svk-i7Fej%cHK{$bwcc&1!XSbZ-27R1>{2bq$)x5`m zJQzW!VDC2I(wA&|z16f#`rqDEt*^Q}?=o@7ii1V|U%~Uol%Lo9l863o&LY#0`;EYy zww<4lWUe5C?%TKeoZHEp`8D}aC(G-)vLfflA{ z>WN$T+EgM`zTP@ck^-4C(Uwb{z3z>z%Nxp*8D*EW86-WVP;v`GLkP!582gxJfiEuL zbte3+E)S++DF!o!o((xT(l$>fU?!<{>1#Gp%94Vnj2la?uQmhP0=k=}e{-?i_9u4u2t}!)4&@9}bf(euZ4A)9QW$cQH?#p>dkAcPa<2PUZo4a{A!j(Jo3yRS07N1DH#W{w_ted*k2(mC+e#wV?Mp6qVM{&2V96qnS z{P1`qZl$jA*fQR@7EN_GwX@y}?;w%@RhAfJQm)xEEPu-|SR6=)xp;EGHyIJmEH@!E zL^k>(#TkefUFCvrsA)|T#BpmM#H!OXLpJ>+Gt9?In+*^1O2xgZ*sK$LEbC-}TRIlP z8Z;mTb5s2;18su53RdBr4GE&79s~dW{NdT+ax18a%4q+*A}AzSFJ?z#nC@`VThe)s zQpp=l3``jp7+8jv>V;?2si$uxjb8hsg`}%@ zQ=jv6esKAXL+xlDU~=@>;d5-7DCghGk}3bjlKKi(Cm2=DVC}?v-R?CTc+_^i%a56t z1}3QA@%Y5?Wx2-Or9Y3_mCM_epso8>lezR3wd)oirChnoC z#wH`igx^$%Jq3jCLgxiI16!K^>ArgIV{9$Y)z72bf4aIeQ^? zeCRPj2zSm&4&Go6o<(@~|7JCv^QVnx3c6L^=Ko@A|M&ZfgHYGIT9ZKxQ*_tRki)QnS8tS<=xIz zoyhwhuR|>wv+Td-?x^IvR(W0!CINtaz8tRZezjv+CsAA)(hIo7sA;c^q)ZTcN(4Ga zhU&WN{WeBc)LhmYfg;I(W#SB?htB!z(G8z5UeUZ5`3flG#{gmpj$n7(C7JA$I_sHd zYMNgw`s7Gada5jV_>_mVr zW{dKU+JSnJUzE-mllTF)^d6l71?)IpFo$q30?4(|w@G*PsVA!(isVS1LWZiuf)bNE zHw@gmLh!Io70rM|45+qH<9JBfp_Eo4R>F*h?&A=nFi>g)c_V^Lv+G8et+znLtY}Dmi#bDF?Lccm}&_- zadie_BA=HkXaB>u=(D<65Sj?YpL$i1R;~h!Qi&WNz_uvoo_Jyo4VtlovC|$nEh@$e z2mOo)gN~39@{X!as>;d)Trsf5)9pJL&Z+dtcciGzVL}Q}!1;_bG~{5ts>b3XW)l9J zqs3-wt+oBX*|n%AT(OHRx!IPv&9LoP-zuOKZ<#2@JnF9KbaV$EAJc9yAWwm%QqSqVEyj|<)gJY+YZ-geF|KJ2=cSIXfs(u6e>7qC_>|9-4 zQB*1>RDIW^H{5ZM$!AY;JSrquI%sBz81~w$gK&19o&7Y!xekYyV{<~Nbi{Z+kU-iQ zmEF&NcNy9cueBNJO5NZDP5(S z+(sRU+MVc1IDKo#oIx;`*t72`6>cOiC$Gn?{`;=fzI&v~ARLYfQ~seqr2p}A&>&y0 zf&=Rg@3tRvc_m)8REdd2-smrz)KmI^{Kg6-y>AL?><6N$wo!z7spV_;{jJ#T)bLd% z!p106;{9?NVW(o(Mblbk`@7G?i$pA3+Z~bJ)bm}RfyZMj`b>Dm=pF>+V~*O#&N3=8 zZ~h72jka+gO}SmZAw=bIBN@lb^??jdQSHD=^S`RSfaty||9P?N@Oo1HcmDkXyxq3; z{C#vie^}zIJ~@5kiX$p;8Xxk#1&Nl1-4$ z54(gB%ltc8N%@#1tevpSrJTkV%uk!aPTp&R#YENbn~g|j%%!!AM2!Ks!|TGDxX}s( z^1)`hkookUrbFp+h#~rKfz@l|Rk8O>`#@_p)>-8$L%EiM+%8`kUnL>iOdd)J*J+fIy@5HqmLY~1ULN7V(^Li?^c-Ix)EUeix{U4wd%8M9OU0jomKAnM`B$4+~Nua zlZdnUQ@NnOGzKl@M_>%*BGl{LbOCqKPUrdA_6j&mHPeDP6(3%|hUR?pEr7uH!Ofmmqm&W^fZYC2-cOV^D^@0yKpIYb>=- z3DkPr;K@85dL|-21P!>>~w?k9H3#w zGu-N^u?seiLTZi^%QBS9Zu!N7bE*qT=HL5mVBECCcYonwgCW}H0H|dMp)kmNI76KmgUFk)4F@Mu#+jz*Z zpw_dbL`&l-ASgYE{kRjFYB%{{M@;;38WEiSbFBQ`)}N9aYjuBxf3&4bSno-_z;5dc zjW4))o=^2%mbt6Q9rrvG31)=9wKQcewCh z9$ISn1)17dEjk>I+>rP0cEqXbSdSevz7tjALs3S%SL*x}Cnrs2%0I*!Dn3KEXD!}F zvn40_%}rC)@%Ce2^C!?3p?){T(JJqH$6M9z$WLhw5{6Mm z*%II>4B<`f|3J6w~w57Sd=75QnzHDK|xwbaM6l{*Ew7 zJ0Ur5xbUNc%QSk;?#WRxmc9g(LaB<4@zVh^8qm|75%Py_>V(NiK^)8d-F!0pTu_HiLn`c5=gPVhP;`nQ zO^}buGzJ(|pxP=Ocmu|`+{G3bgJ$lxhMDhiL=x3;QNn#whP~L2sIy z!PY#3H)Wx|R`oY{#IDB()=uy(awx$mI2QOGU};6DFpZn-eS*i@YzAkACrJKucngtl zV>t5?qhC^%H^}};CCi>)G0m6kE3lI16$*x-e^Y#AZT@&cUr~QTG$McrvQVN&yjogV ziS<(fT&a=AX!yUHr}??R7>pt-+aRzPX;xfRqXl*KRXpRkVtR6?f0I#cS>K$YLVF!$ zx2Y;%fEV`0v63L2js9@Z&!;}QWpQCO_FhOc3QZ>BgRIw3PP~_exARIxI}cMQg#Qo0 z4(A`5)1h0?kP0kc9m&MCdk*YHRh2;5t`%07MZn;NsGg0&eSMD0yOL|qhILZBN(5$$ zljJBds(jyjgm}$NG)UN@;IE7&PipYg@Hu!co%oKj$eiy>vkg?M-BzGRumt~g$K*grQP zI||PlYEqnvukr*1()`8@Ix2^sPS;u~>zfeubYta&dcCE68nQkuZJXd+g{SR7&-ZLN zB=FxMk8>eb`43yHjjdgm)eAx)=R*0SN=yC}E;h6+Y;b8Q{#%{l@1i+SPMP412q#Rv7ZM5#)f zow1*1KN~GRea^HaigxJCg=+q|{5g-}U{P9In}l{z|9kC>kYQ>AD_#ugl>()-&8VXCS0^{)cO zsH^1M1vn|V%cBnkH0sBriC zh1H$W-4d7>WZyI6yDJ#^=Kpw$Ty9dy=L(mws4ivqa1J{<;zIJx+Opu|d8}4Z*?8L= zTfPGJrm^k+hL2AmtJa8i!iB|6_oj#?>AD#a30^Q0|C>cCx~)^@K~nw*rjUj7od+`% zYW31D=8NS@PgCE?>K z^Mb$1iaQkBBx8^VicCmt#sXY?xTtAptt^HaH_YQV1|sZ;iu-qbvFp)yP50zUg-IX6 zhMC?eUAVY96}TsH3z%Q{K{GFogXX+z2OkmQS9eHu(f?b~(P2kTX zxjac;on@R~mVq7v6iy9F;L1|?PRGxW-vV68t%$$`n`WOhnFK4usWsEv@$=EXkYn@I zblA|!A#;B0*YM-ia{m{!|aF@?9uEsE+gn^xuxHt&3Mh`+Im8A~>v3>S10ds|WMwiS`Rda;YXZw>hwyjK>?et!}z z6-duuh1({zOihQjyVX8p(V06J=kY^0VU6OS^p-1pZm4P2QeOh^?IoDs`P8m35T4wqm`2F;6`?s^5)5(ft*rGbBuj%K;BL>dkg+@ zbU}c$QfRDcr7Vrb@30R&2G}Qp_^-;7JaA*Rk)Te6_O@sCn)w4ww#Z*guSQboWb4~y zm1e@Fjnrg5J(hzI%_tAK%0&h7h)+~PfH<@-5>@m_WO(vEX(kxQPU#~Xb+nrF)eXXb4;U_4G4Go4$5aPht@d6do z+l`W1f?^^#LEV;ycnu@d-lb8El4<$Pt==h`T5KhI)f&HOQ|0fhhu#|7o9sutsZ*f) zKA(CVoVH~;1X58AC*Pd}xuHH@roxwg84K0p?0W|?I-~kwxk%TFWHPvIk@2j+g9)Bx zp*PDXS(iUs5c~3dtq0EOx`CU{@wDZ4f%rr_imk*+;1pX}PNtd1nEWp;pEQ9U|K)Dm zF~f7~ek3AdnJrOpfH*ol?Z7Phy&Y=1az4;v(I`?EdfeaICD=uQY))`SM(t0L&Tb3F zS|R6DhiOi#bi{+~!BFP1WfK@Dd%5lrAHwH6}YuXd>}2Aj7z`|HTy61R@V z20hN&BmnJZ>G@dHewFpP_ADPPir~&SF22_9|GP`X^vLSLjemE+JiOzfSyU|(C&kF> zxVJdvCh$fRs*2VQmmR;+wA(l1Ae(bu>!Nk@*&ImlZ8Zsm5T6^2J@%7Kd66|sv&z)DW+j* z$PX~V?D=uez)hm&a!?5ip+69L61N$hZEU*=Ed()N$Ei0@grSW7PotFdip;cjvTVJ% zoQxTz$mD@hxn^9=579|BOE>w9d_tTe;+UZvLbk^)YPDM7#bP!6L53Y^WRq`3Nrp25 z&32H+npXlbd|-lH@WWqMrW{(~R$Jg-JB3G@7?EO`>6LJi_~)O&K&+F}qTw0Ri_7D5 zX3;Q7gKl5p$LNSZ;vC9^#xRB?L2kup&EF==T*3|UaP%5*QUVrn*>wfrS#dk(^?541-fU|#{>S!+$ji%b|Ss+y~( z=3`f4kI?Bw3?L%*o}Q3i%SoU^US_hRllU^cry{xnP;vHa-50V!J6^k8bq)cPp>7EaKZk^kf#E zSC5<#aZ#h2f781GNns-x&y?3kd^?AZ8<{_CP_)nLBHpmh%X6=OHSxNuJ^N-0fg4iC zJ+dP`vhUR``M97Ndid@*6N*%z@VLMGYY3ML58Yr;xEh(i9*Dn0Fz%Tn&lc)5D}5u{ zgjEA02TEJ=n4&$@#}rDky<0U@r61N`-$DJaGyguFx0fCs)S?;c|83VaJI*4T_R5aa zSfVLB$j;K{zOqtB|8jC^IXQl$ZaC!@%^zb7{~e*a(G|uIl|FAgWyN|IUDu$IOt)&K zy#l)S#jkr_p1Z46`P%2-obBYW>G|Fe=ik)Y){!RsjWLr*XN6d1UD!8KD4FhWi+8uK3) z@+EdRN2u7;IR5j_C^rTXX=|)(+4Wfd&v<|5JM#FRhRIIOHQTSVHEn#vb};#Xor~z^ z-J?&=bNq)q-u!#9Hu&i={Xa@k56l$AWh%ivR5w7a%YxY4(#i-KI zX4CK^m*w!q(wQ+co-Mzt7`Pt6G!IqyYfp}ey`d8s?Uge!+TDqEQ+wE^r1?Qs?XMip zeLO2(jG!_q8OhdyydD9_AEHNInHFs(tf%9F$&BP960wo z^^nucj7D8+-ltBo9-H>4ap53}hDFyJV>5uS%vjSg5T%8%(y)lk@D?B$_0nH zoxp#%F-`Ov-)NJnc;ade(5!v^LBourx0Mpx?iBcQ@s@*u#gCmxynr(UE?@X=68}Z1 z<#*}fFJ3seCGfOt@ztaVdLdT%5Y2~V)KsBNQSI)VpGpH?Ezej4>QwsO)cX@+DX)m! zX0SFK(>`>&NlcP|9ZT;%xy?v-a3#ANr_e>R?0h`~QL2e<7tRyhJw14pl8C2Vju$g> zxZ)Jp@N+(1;joQI-myC%hxTY~ctBjLDxY+O;m&Q%;O8%4QusCI48{4>JDC`Fo?2ow zyOGs6-vNRnxG47bMVRU27xv^T+85WTUF50|p~$v40iy4un~7aPUFF|W{yDdJ@K*Qx z#bfkNV~brg7!4A(mI9VT<+E+|qf$v|8oo%5_ezdWf0$(-=4dCwDI^b~fRi{h;uqOH z>FVHVet@7?;J-QLn2z>?(epZka4RsS4e=H7n+sxVw_`UPM3-IHom>G^*{dlK@rChd$&12+xfjHvQ6uDT zO2%0vYMg>#Q=w1be^&6y3|}sjGDGIvxBtWF_wC{UiFzdsqWSnF=>+(iJhk24M28NP zOV|=?g}xQ}_b@FphtWvng!9bNy*gDP>@#UHag+CMd?Ee3=CuFS_`)5%k4WT7pwxFk zH@k%z+pa}jsA7MG@Wy?KQ;K=Y=b%J^kB;f%{w`TyOg8Csxt?yi=YdhAL)}G#L^!Un zi+0Tq+@3GTpGzvxZ2c%91N|yJHv;OU^$qTanLM*2IiIbTg|4l#=ZW7!a}Gg>;8B-j z`b4b|K$FnEap=UQBO-|5Wj$Xj_m}2dNRdHeRB)XaZBGX_7SJB$DlL?oLab*OpclpV zOE(Mw&~ytAdqctieM3lP3}s};MLp9~GpHQ!G(+C;!xo;F1N2rncy}wNTD1IlF`$D`saf-y!hwAl9sZG6SMc!zA;xWrLTV%LHUe-%>~Js7h| z6`#e*l8skLU=RBK-uhLuy_FuQLQ_*K$$dhK{mgnx!c*hg9}&r7H6%E#2-Kx`%Vy86Fk{OO2NQyeTonOBp8Zs@e6hsay-VS`2Y!)p)ga66q{fpj9AP-YcGZlx^WjIXilrpD4Q>Ar& zS>xX0w#?3qU8yf`CJ#&pad2oORjgLjm4Q>ipPS3ORSU33k3Df2-hM;mHG~XM$x)bD z1|q`Z1P4%pJ=T0Frf#3ITs!&&pYhvVVt9sIK=YZ!LDY#y_x~Z=Q$EZ_g0L@XBoifS zJ5HupP8nou@;}7B=pc=ISo_NoR}6XXWTJCV z+Y_SQ-}@M%uUaNJF2$hD*_!|pV3tZsH<-q|A^D$G*+|lW&POA4%mMUMrJLBsJ;D#e z`47Vf2`+&aS6_U-G2QRxKkXi{25+#M59B`{*k}wPG=k5P7nWA9T7;jArS6Isu0x)$ z2b=Xj`Y|uDd_e56B}&~UOAW7{rM33&Tz}hJkh!s)IRQc2p#g!zBT%eT(0Rvtb2K1N z2%~UgNBT6*_vGIFFwZ{^f3CTUMRQW57ELul^S%!G52~qDrOX(}FpCp0g=!#Kphh~Q zNy**Tcd3|N13)krs(AG1u9~rHzW)EndaI~7qHS%oaR{0Qf_oDrxCVD=+}&M+y9Rff z#@*d5xCDm~Ah-pB1cH0xaM|ZS`~G)~JLXf>TRp5*bI#8)tlo)-_-TwvDiR6HM-9PI z8l!}zHp#NcAh?7N+X8d~I^g$!ElP6?IVo$iZK@04hd(T2SniB+;4t}I{tf2wj zZ6YeSsiTHq2}78nt!NW?YYJ|f*4bnr1ccgW zdPIo6G;Twc#g=+;lHN!P)u!TL)=@JomTHIL$BnPGr#Xr&%)8qu`% zhp8w(1x1^OZyq!ySvS4M zOUvl+U}Le%Fd({qyHX+#uyUz|tSHbgXJD8fBLHsudz9qo^*8hl=) zXgV>=EG11tVT4Z3QAltyDUGzxzQ|9qppH$=ZB2h+Q9F67tl3{0;hZBgR#WD2vx}W- z?>|*A{FYahN1ydizV>CrPHZ&CF0vg#u#Hj#rGdyazYV`-Im@f;U;IwVEB0Z{%LaP5 zld`JAX_@;!$x-}ueS=ev;Z8NfKOUUG$Gu;0mRS~%Q$6V$A_B6pr zmlVh3Gn9r8uC4u+Pm;d2Tb@M80gGhyiY!0>Xs>;4JdTZuj$Ao6U1FV3AmE#lTK-$K zctd=HOTXjl@YN}}pXkgoSbBzE)G@FI9+CrZkq8I^iDp^nBHtB!g`tS&8a)7k`)|`5R%q_?JYb(fA|R5t68Eb@}!m`EJy>z zOh6b*;z2|3T~kz*MKoZBW8zj_!~uV}8hQFV{pWj4X7W#D}C2C#v@n zj)W=!!S=E&d&D5>V8gRhv53VmE^R}j=ZaTQBaMy-d<`?$_dP-@CcxtPbTw0X9M5wo zyBb+gR4dh2#NdB%a7;#FlK3Rtm!c%LkCWRdSim2MLE71aN||04i% z7o0=?0)cN5KkR9sftkZ zs>V*LG?U&0n=mO1Mupg1jTpi3jW6&^%&IMa7fbMmo%i#$0zKt(ZUPWTwHfj)8{Sgtu$Tu#d&f{Aw2|Ym?LF!kOvCR@P*TBc0L-*6&KZez2D+%<< zXKauMv3I$lrxJqFhLZfK_Xc};Kejx+kfD-1yekE|CD*u+s;`{LVQeRd7VkK?C-t2p?ZRO!kWgrTA*jfzz7JN$*bw#}55f&F3wcam~Q+Va_=H*F9Ob~ZD^uo`0pvNm2 zs&%{a!v-&F80CvG@7hn+tEwA_2d&F9NmlwI7}iLs*@Q zOp~d{SQ<9x7l=N5uBVtj!d*o=bQy8}R37Wt#K$m*hP^RFa` z(ki%#Gbl87)7|N7Rx{bef4u;Z&@Hlr(S}AyyoH9%Ex~lfEa@Jbw=$WlUJhSMIW@41!8AQG@5NJr?*N9&RPNBA{a8#D+$~@z?j?{ z$gR;DKPKUhMki@CSniBz;}~&qx!(0FH`IedBEzD0OC{4lKQ>wo`yZ^Xg<2ADZ!6y= zQ>sXnUxt5as?Bwrx;gK18!Wq~z2~>g(=Vw?M%5|U<~LJPi=bIF|4FgLE>@%-?!9_X zVVv~adyu4=Z}(qyo0C-M4`PoIkl=(lD$f|ZxiiMaUO*Xk4epQCsVw~w$S#z-5=51o zF;u)sdl0pr^Jbj##2e!Oj=RWZ%uS&+#UfiyV*K+-wHloo((Ff6epy+30)SVh1rM z*_400_GRF>3Kr<`yHtG6mHs+Kyhz+U{4zkwYE$48IRmzY&{z-jM?&dkWu%_mcCBs~ zvP&xpxcxm(!w02&Yjy0tgmV(ABNi;6yqaq)zs5)rx4T01zQKCeoNgqa`1!f@yRRgV zMl#NX+GWS+O{C)0U}Ci$dGUftw_)zAkojjSvH1{sntSW{R{LgN1MTpeLsYa@hL?+% zl{QJ!O@!r#;UY5t& z&4*eAsZ@rSm_e?R)UBGQrg*Ikm_YN7(rD(^5oMs>)FGH!JDV~>u`lz}Aw5sSv& z-ZaLX9bJte-;$ngwyL}Qb^}yH5ztW+kZdPMXdTc1>nOV?=zsJ^QJh#{40X|EQ@?f=PzI4Mx&o$|D{d(!+|#h9(06No@m$wdGcsKxN<(OD-1M4;nqz+??esCed2 zDX$h82IO!st9mss|8n=YL?6u7h*&a8ju#aMn(yNviAh$3xg0{VU()(aI@!P1O@0mH zN6$ac`_u%|zvK#6d~g!|$P0Hv^P9pkM}D4W(5vdIzl^P7V`GQP7MfnC;xd-xyBW<%mn5N=qBnl=ziAAej^jC6QbIS&pK4UBbEsky zK`S7d6kl8kdj@xYDDPL#t z#Dl~&#;sx<^s!~7VX&G4#(QE~5>!$c_U4%sfG(U3&*D%l^4XR&o19Gm%^BT|yh z2twOYnZL+!#)6A$W?U+lvxCdG5vpd9Y~e1&qAIJUErrT^K;H46ZCdsUcU`skC**!k-cOcqC#BC*KDnN}l__9>%)y%l=|vfPxA%e`OpC1o1$l3Niuo2+M6v$-Ta zWJ>dptZ}^&*hWy2<*8!27(%!PHL#d^kR>@pL8}!WdQjme4mbb@oP6@)aJmyrDJ7h} z4zaq%@FXoKVXfQD;M`N3E1#Y7b%ULFfO*ig7BsRe?m&Yr(-$tRPrGi+WYcL#>(;_u z8oWMF3&ziyu%6Awp5w$XLkaBv`UHga>kYd;OzTFkxAi@rB$b`fP~6MHreB|?SB#&A zjV&l1W+Iy?9ttTYPS-n<4f_J0hj18JloXPL|0D3uF?-vaak=2br1xIudiSlB$;jLodg zW1YfJ_*93#ztl&tuk6RVTGzMcd1K(>#BO!*9Oq@u57_3c6FHe1RwMUVzj-`;BcL*D zoOItE`?)YVesCK0sKqncF^YbNz{1V?NA9O%a#&s3hUse!_EC z4t9diU^0bgBt?u_ZbGfC+|zjBqIwtXihzSRDc}?M!8|AKHQ4^P^`>kgIl-7TkF~e{ z8$+GQalp+>>o-roSxa{5Un6JT7P(q$wOq+eYCW8QWs$ss2x3x8GCZQBJSUqN#&IH1 zja5`8c@Ur(c?)O9tS=l9QPieoTn1xC;YNYJ7?9M%a{eKPtbZ$m=#M+*rF0RB4T&f| zwP@2RaxkTeRO}0*Qsx^F` zR|Q;{AL~e6m@v=^G%8CcionNG#&rY60={urtB>-beDzzPg?^^{Q+O01TRnpke@~O4 zh&~dZjU2~of_*(w5y(T+O2kZ=rSf#`D4!)b%z4V7;Y91N8$py@pccLJK-z@{o)r%e z8>B3$`l}cGV&r~|?BxqZ?Z)8R@hz3MCvaY^8HT<_uY+gv+Y2AMux7ZVyYchiH5wk#NvOahT%1&3#vr!5PTe%XwH2UbhoaUk4}H z5u(Wn8N6{@AY-W8sgKuPZ&J{>4s?wZ%?>))H&5EM?xhPWHv1|lMx%=Ug&4I|h&ApF zWRc#V)dzI{UapD%9sS}_2a88yOWOqHKHYcfBug^TZ4P4Gw2AsNxQI}hYmk-it3`!8 z@rduaB2L33uRjWd{Ug!z7xjBg!bE-Z-YWR&`7cdhW|6Zi&^zWLA(asPr11CYP)ne8 zsX?lwznpuA2(7{n(T-arH&G~1f7Orpof2N;wdo1(D7u-JYnn#|zgcHvgzUxmv!YT1 z=~%zmG0JTPD8;4RwJBmVAdq+m=mNBtiS#<~B7R);WXJkF^7PL^(m{vdlZL86N=g-P z^~wiZYE6mzIOqIqv+InPnX?wf?gk+-%#lww97;LKA1gcsz%?nd>>vP8|Bv< zq0K9ym7tgXAgiFe$e@h3H1I2OaYl_4x}MViouF>@-u5iFt26=s#g5+OEHI`&%J+1U zA`!lLXZLM)EU2)dQN2Ex&->rP7u|UUp{=w+V#@cm%ERQtB@{5Dnlc-&Rj+!X(~>u8 z@FrRLXYIJmjXn$96T{_l?rL%dymBP(Grq;XO*i%czP7hkYG)Q@*fQVC|6ATK z0Kglyfe#*HkTIg@tl^9Wk(uFgCk3n~0WteBryQ6%zNhlvE-N{cf;jU_QFm=0XBcY8 zdAjy>L@pZ6ZrA-2SdX6Z+t?aQeJ(kxahX|m!=%XrYdEH=yIH*iDvr z(GURPA_mEV?_P%lsTBWhUO{PACkW#^b)Z=9%YkToVrDrg;6blw z(xtRytqw)GMXVy$IUQF&9MZ;D@3fA3kaqZ)8kkZoffGs^EV z4Juy`E!;?!^z>}06+n)x8h=^|SG@V^_9j-(osd2`6~=Il4+OOe64(NDLqQn_()N}P z)2o_H_jp02)6@;Df5=KB4iy=5h?1hjJye zu6wh;{RE7%H-Go#l98)x$KD^P=PRm4#<=8GPcN{rzlrPOEPH{8uxyG|Rx<5h@E7uE z3N^AlxBnr|{|_p3tmx#c4x5!{9Zm^)8VwRmQ91M97Z}`sW3L3^Sj;c^|6B@-k!ziA zd!yW1Q{45VG&wzfbBcY8`x^969`ugmhfppYBB5Zy9Qb|~F+2m-AyHj7}{truD zW;H=ija$~8(IXyjtI}id z?YBxm*C1NVa>>flRWS(utR1a#7R~3KA47MB-%qYoabnJt1&>7{mBqQ5G3&r+ipTR4 zT)V2^8h^@{{%HWTkTfUc3xB8La>9Og@@V{rYke zmvHde#9!1u*ln@!L0tS7pU#zymp!j64jAps3#-s`$B^P+iIPzvn}88`jL=aar-+Zb z$rgXeGDdW)M^Iq>G9s<`muM)CIn zi^xdCQrFu4N2yk$%451Ng$+!3RN$@*Af6|w;ygP5guugpdKz4hmj@H=+mTin=s|>8 zqm&)A=r^gC+v}KHDi1S|zHwsFx@BRC?uH-i#C@^~|E<9auCQ_2d5176cyyr?zw!QO_rH%bOp+Zr{ndB-|WJfuZWn%M>_^!qlXCuru!hCQc9 z+*ann1PhP(77a?gn0je`tq}U#iK;W+ta7qN5-k@EJ}OwC%4mtN#GnmRkpED5jp~rk zYgs4H()kl)B3FU;2{=8e&0(+b3N!+KF5~1XqHVd(m&1dH3XSV!B<|?kvgD~Rv!?_P z)q&DudidFQhzT5|=Rm%R&((r+N>hcZb|dXD(;DA=#9f|m%YV2<(OQF_Qv8>{v`{@K zMj_>MuTS3;vN8C# zw|hbRsOj~03XQk4udV{AcZ;N#$_hr(cR`X_uN-iwzT)LS>SaOkxIEhQKS*)c#!cOE zty6$~$;so{>&w~k(dN_5%Ikg4tD89e^ET^?8H`5cl4j*LVDnaLRrt1cH*NIndE+d} z%9B;N??BNh=9c1Ri((4YDg5v&5jgjQFz(Yq{r@oI;9iXBh^YSWXmqF(Okp$YGRy?= zcO52e%25*iK)}WQ*l8xibY|Lki?{b&BGHbRwDy_2mGcxg;L>|u|Eeo5sSo|pV9%YK zawm-JzM4>NGc3Lbf{=%ugA|;%o4ks#DFHXQuVOlr2*{-@u_OAfdNe=jIQ?VZ5kYj5 ze}YkyzklnAa^&u4kUurqN648+``FBMemkHeA^FDH$P59)4_^LPc6^h*Ozts{?IaeQ zzCiHvYK@VjwB2B!bPweinah+>5CwohT^!mm5>ZnEM=|(EycRCEjKHimS}=Np9BIXeOmPFSUU=u%4TR-Iue!)y zq$dd)K$H`4YtuWXe!H2y3JThP4gh4l4Co_223G!!fkhDGMrn9=}1k8@8x~+ z1`IW3215PE7tCrBU9N*pS$o;G1be7JN<<5bo@BrfuFwiF2-l#?F+Q@=_Dsi52ru#2 zJ`{UfoI83bWNnrYwT55W@pDKNWVxcaCb{HmUw_a2x*i05O+S0x9+O%_1LqyEp7Uik zqO4cFl=ovoVn(b>N#P+5#wwUr0V0``$OUcT^S$9YK&JBZ{00cB{3-behnp?tt$63q z!;z{QfV#wim~DZ(h`oS`g{@X-WX3!>_gST54g}K-Ed2$&2>BI* zYEpv(y!(ZV3YO6a3iliJj-O9+cc=nCwzArDV`^f*j|0jA6&J&yL-BeVlM6kz6C!i7 z2cnvWK%ECA{M@05fsEaI91z<+Sv8XwIHx^G`i&^js9;pE~V+u)|5geELn9M<$AX`CVV)#=?-kk8?q%*iUhr7f<=r zV}~$bHcoG|N`bK-?(w^IJo`{x{9}>Obh81~Fg?bf9|2o#h0)LY#qm*m{LxvyKndU% z?uQir$i29M`ugd)y0b1sP#zt5xYkT3^Gq5I#m_-ZsEf_ zwlme6{VoP|`HE{ZC)fO|`QCQEJb?^qGVNvfE#5urfbuuMxNrLH0(hZ<{r=BpcC@DU z_4+>-$;ulw*VsD$<+_~4)5!OrRCe_CVd-t|ailm4IP(h~dKjV;et%NK{6BoTd9BS$ z=1u4*iqPujsL0F3zbj@ZpC9<&6teW1M4S5UZQm9xJ!y-|=KpO%YIG=Hx4!(9e7MWf z2jmN0Hz+=+UKd(*LXcN|4wAjQM7#3cJubJzt)A|38~P)a!g&AtL!tIe9A~o6{)u65_01|5VffINSAG({TqRtAT#PCmT3Y5sAtcpDOD?&EXkfF>`EG{U6OC*&207= zhJq0#zu=+)##y3(vzeJnH3oL(oQH>^V=cOVeKPO3W|76~(4Y zj~_NXP;D- zDNeo}wL|0#)vP1pRgSr+-dwUNb1s`!p@=asSmy+)CKnLQJSGGNsxuziqopx4t{;#N z_j1$bUle20)~z=SljLecD2DRF@?%>6t=|j@PaSo0gHWp{bFHfmMRt^K60W??r1=FO zP{Z*85_OZ!^|a+~66{##3=b*HIS%RBBRn~1&CIKFd(O9G8`DE@$_zsZD<#~)5m*)I zR-1)k?pVlFFbK{~qGa9Kl(n!KtEOww(#6wX#Fx}R#eSRKl)D+RN3qu#*C1O9QZOI!2W!Ep|`GAlc-Rp0NM%fgQDZf7xYQ)KGU`9FxaDBk_ae7TkccP z9dMIrZ^Cch#cyWZGbVUPT>ky(6zJ9+csv@&#Dd>idMT7R$G0xRSk-%@-^Z;c`{0!B zvAsS`esMWKS7cGDCn+*xxkJfwDTDZzyE0;|_V!QYJadW?$rF{LHKs+@cOZS^cOp5(w!N{y?3YkM9a@F$4~3bI1oAG0cheT7Ldm=+3a_y3j5=u?K4#nXw$rIJTSnM z`X&!M*A=nD=%-79FCnR{gC{IkEJ+{Shfg=(=vkUKM4$DD2V9{5zUtqkReY*N;^jk> zIrCxhxojEtIb|gO;luo$u8nqpzzEP$V~)%wf?z{tnv7-Qlb@xx@PRQ5iSko$P&}#i zlGkk$v#8F+h9e&O^9yP)>0i8p?(^1dYI}@Ic($KefG(y%gIR=RRBtfx9ZMxOVJ)_+ z2l5PKf90~RgAAYrV1;xDmsY!AktL*U8jvS$OZ!Vzikb2+Zg3|ec2Gz`q0>0aI0D?? z7=|_#T}>693}L0=$jVE^rcZ!2^x3ta03RA*#B!t?P5Gof#fZ6i9U2W%O;PIw8cbc3 zQ_cJEjqoh-s_F*Be`fv$Fi^ zpK4BT+t3`tzC)A3ac5k_iwd{H(%0ZWzpYJ1RxRdXVbDOXZQVJ-&z+D}awd>P7KwSC z-yeiC+MSK{)06wbNm4;74DMwKAviT7uj<+q5v<_2Cm1@($<$bVaQpGPm}A6cE%<>( zonU(>Lu4-bPxhzkfvH)^x@;#gAox_)*IO2A>Jb=Lp#%ENSXT3+iLC#RE{b@po&tKF zys)a>-Iu9V&@hcAiF*2H*Lc`o*9F-S({#O{6!j4N31SXy%5`RA;X4KHq)O7(a*x9G zD05WsBLw5pKWX4+2P~REofYOgKS*8nqeii4`I&!&ylw^tbaVgUnU4AnI&rZQ+tq5Q zp@Uu5@EI*v{#o?}F-jwO!U;J%F3hvIVT4=C9 z-nxpizfFDllSoyirvz0@-2hNe6YB~HqRV#;Ve|*yg|bV}^JZslKwu+Pp4zkvHwGRd z6D^ThEz|tE6kk=?1AWqMQdCIpoiNx-x2N~h&B-J>V_ zulIxL+zSH=!=Hz5V||SgXj!V(suz?Se|gNtoauJGBZOP0sz)=)V<`Rz__qknLio30 zP@rkg=blPRB9$TEq1ANQCmZ*$~xUQ->0QjBIg7n}EL<(>I0ep^e><9Dj z*6M!Y18Aa(eJNHs5-~eIXT*R%v+BXWp{Sl35ph+qhjP$A`|H*%(6ND6H#eM4^8RyT zM1^pINeQhD$`fKag6MbfA0?VXpy=DNx3*Ghk$ix~YQ(JXY~T&BO~v6K^WM*^72=IX zQ&HSk1Qv+uR4_z9Ei)d7)V$jDLR0!ZO+gMO`0t`jeCV%-;Aa}tSa#drFi$VDIz`dL z-V*es@}XndouYNznuKew;624Lf;m6OFAm}Hx%CHs%Wz_#a*TC)^n3~{*1wtH?gU9y z{Y-v*u$a$r{~G%`x{+-;?g7&7qI+PW;rs=ufnL{lE#?MC6w>_^#hp>%0%D3I{L=I7 z>Z^)Dgot{+sr(;d(Xt;!xzONE;7TaiaNd`@@bYqcvE5ENCIkqKQ1LB&&v$faNy(;t z7YXr#lEFR0wf%$)B{sH1XEy$pv%BmLi!X_=h}dZ(wbDNqVvk4(HBtFVwOlVgqUHib zdeGyL@9T7$L!W5+snU!=DTK5^n+PHW?o6sbtiz4T%ZVn0;mn*}a|YKCUggjd>BBz{ z*^AaNqm*~rIO&4ja=aCJAw0Wn0p*CKFKRtYMeYTZ^?Vi^*B7QT@M!3?swDK4dT9Ye zCegrX^aU6Fr(V%t1K*4m!dyLG382n4-ArC%Kib<4iZMwVlbl^n*bxr;&`r&iA`u7n zdhI@=k-I8+BtL#Upc`ir+wBzGTvr{{TH+k1*DL@gySa{wR%&EH_4hD;Z3XUEN|x^$ zP-ot?GtFDX4dI0mHl{77_z$o}v2u{)x92B6QpPhp^16zE9y&x@2j`<%5eJID9WFAq zPtuH5Qe)Uu)A}eVh5gxSrak<&3+-SBCDJBqP-hM*j-4|z{#YYmtzN)?hP-j6wg;aJ z*diMjLFOsCL|at1IpvVzw08I9z1T;sgG78E%yLOC$DiqK=aJS9^V1LFHzkd!CGs@u zRomdENq_fg4s&AH*bd=g0_YmhYOnihlmh~kC)uk$tmNs~751*Pg_a}0Agk&diN_IR zqluHhxLtlt`R3Bfv=Wh|UD00ci>`9e9ZM`^^|H}v9mntW00W572VL^pFpnxE1QHgM z|K9luIfIH@W(X+~ckYK^&L{iTqg_v%#M?h9UauPBcbac9AJ!XBb{;SEd|1ip-|Dk( za8Tn9RY8^it@HQfIH&?I#{XmlVYgj3j;{jGd^L@~2VdiZ67~YI9sL=!gW{aXNufK+ zYS=!(eouubRBeHAwSPC-ybJQQMLEnu|K90f&sWTh3g3+OzIAn{%FZI2hGW)Wf8$eb z;fb5V-5nXRz0>dJ?3n0_51FHOV z2-z+IiUjaJ`KLqlrc{(KIy-a$?yPqTpVESh1#|zNhWYr2B7WYD|D!8C(q+;-@o6pX zv$GTF67aj>>k_TsPe6OM>~g)Xxk|odCPMIuk!W_fTyfSqyAcq%iURRk2yr&Pbt~o} z_9~j&r0wsbZ$ zBbbps?#=A20^11tAX+9HPiYXwJ%O{sqO*?DlD_LQsW|crSw$^AcboFD-y^i@~Fr$++=#1IFu*4T+1QB!7)Vf4RuDoV!;lROrig>N`%BbvABu; zQPpMkYEM*ALu_{@!Ve2WuLGLe0(KBA*3Wb7YUgF~TLpbn=L zM|q?~F+pxd7g?1j&ga3S}uNfdM zemS+CM4!YqX)x;*m)uu;Y;T4;7xl|`p7ArQT+4FMu|pz*rk5V(MdM+`n@BaEbCZ_j zqm7RjI6L>=-rm_h-pla^An& zV~^pUjkAnmmZ6UUdl?$~((L$i(P+7~F4dAD0~tCe1co-oZ@_=`iY90GO&;NP%@{jxv3NT3h^mHE> z~*(^CYXyZ@0~L@K;)!{sn#r-Wlgz?_4`;pYwM< z(IH>TKp4$gut$FqRcTtV8%eJ`wf72lgAq#jLvR|BA#DZLn0>#em>ob3NAp4#28G9o zT=<7Hzk9nh$4el1{1RZbU$ztPW!wwJeh`h1vMcrAE*)BqxHJ=JFi#bI_<~JYPi*lm z1JGn7rmy>g$x$9Z%_J3J&%A{6GnAEJp>%=)&J^H`uLxgJ1?N8d{_X>P+A;8p$8-j{ zQ?`tsyt!?%Jpv-V~samST84R4dwX5UD}=VDL`1U2M^@RTds*p;yP^;-r*WZQ-?QMVxGaeDj@ zP!bqxVTV;Wm4ikWL|#C)AmuDH4kzx+Bq+4oR>u{`^?OsO;dh%=v5(2tw8cgA183f~ zogG>}?200or|Lb{<6>goU<|O3rj7o*BcF4cTtZn42lcGDqv^Ih+fRnd<$haxId)GK z30)(lRLa^yR~KVq^~~;ahMl$|Lz?+;(PUAz+-Aw)c@y$>k%TK2P-dgY=^p_w+%wAo zNS8LXaFZ5+$u>Q6wAM&F756gQ9{%qJh01T(dHHVK-ycklyu*>WQ3<%Pe~te6yKyCn ze(tTgYc0o{Fv>!P_Z4Q7cgDuX>{|1@tKV;0<(ORK5{Y6TkM4Ax`x2|h?pfcP*b1ft z!Kv@}12)pb1~IlBzSv5d&8!#jo1Ul19RbxJ?PmMT?Oea~6*^G3ft$<_!OJwtix4Jt z*^=W>sqBa83;FYmw^b5Ksk|aj<1Mi{w4Ibq*&jSYh@GlY^_z*d;;hLF=*XUf!!TkP zLQQ)|Nw;^JEywtP;jUTjr8%*aYT$BP$@e0rs%$m%pKEyLEKYe@3+WSs`ospnXBHTN3ewux8J}ncvnW{W`)ZKTIHfY)C zA}@mW(AEW?ADjXYC8X9MVbgF=eDs&Jj4x;zN}*kL(0A5%HAlarXSj;loZnRKJel8& zLD^A0Xe5TKC-J$X?CTVu-SGtMkpTX!_!5^!^|LoPcr=$d-~s%waatD;J|m4fA(SOR z1i3o)F`T=7`D;GTk(DmgsWi{~New4Hke+KqKFDZF1v{9d5Sgts2Ra#G(r4}m3PA-s zDEid*Sw-urQfH{m`T=btJP;0mSLhiRybrP{7QG+Ho@v|$H^DYsPk#2t3v>BL-5KO4 ziX3s-3n*l@_{|F4Ym)jBN`}zu1xuOgLh7e``4|%>j&xDH8pR?m94B3zBCUSEO|B;o z7lf|~g%AGD(>b`9wOc~u-;I>2IJ)i|Z*UP`)t*DKy`*x$M9=+g5d*!D|>vf%$yek!YJR5E3oG<&JzJ`bdWiEn^*+@muE2s$tTO+vJ&c& zLY}uM)8GZh&*0Hj<V6I%%Z%&d#9UbJAYa=qT_>bVEoiud? zlH~$3IdQPKVrt%zLnM2ZE5DGyk3e_pa_a>mzYV7Ht3x7&U{ zy~QnaeO&Do)9tkAV;$$y3_y7L*hnY#35_qmATJL4y0K4^if`E9d%1LvR&-K!PTafq zo8WVKqZ5^k@m9Xb+;F~AVN&Ik+y9>R?XPYBIqgoj@_hRLx1E2y3Kp>pJjRX{R{x)S zVR|2K-$ZmCn~MSddN05SMmF7Zwkkk=Uol6~<>{}nWBg}tX|c0})l{B3^i!IH9YU}doCcEi zLLll!S*8R@&cok}Rh1{#_WRZ=CqY;*Y@_`~JD@dy?7Io~V59zk9fDqu)N?cNbGgF; zG2kjKK!Jxb0;J~Yra{#PXiKg_!||UYXYH9H#7P%QUKX*G2Dj24MsZVi_y3D%vKH8| z=V&;U_xNgvo{&gcG?GZ6x+oX^wX}iq4VtBe7U>MKe04#iXM~BxZMmT0rb;t-q0sk6 zB05hKi5dRO1pJ~ZvzhKij39wOj_jA$=yZ~&IA4bbDE3?2jvWH7*FqqVSgB!u>$FlR z*8x$=PQOE~i5Ji@WMzrPOwm{riZn7yyHuJ*GngnWi%IM|AMj4JDPIxKp~C0 zTCdxstJU#+Rdp8m{oPgEvXvc@fVMxn&R^;l0-F)nfSQm$55-qkcJNVk#0pYMvNZn1 zzN63GPp5g}jNWQWad4)@k&jFZZYs`3LHvs;2XmrIB~PTV_QWKaT7&OAaaH)j9u3#2 ze)5?TE7d4nAjRvhtLryfI~$BSNefqcZb+&%wlM`mg8^5~nYB{dK@$u%;=^)SR04~x z4+iYPn-BNWcbubtdIy)xR(tgsWGKh#T7Ey4ksR@~kQzt51>ym{1O4K6DB>w^$%l0i zKzhG9jZ&}R=dXO@JM(U^gkxx5yAgM2rw9L;RME7pVJtH0N)L#Lt7gnQZ~&Ukcv@E+ zUMJq4wbLFDibbJ;>tqtiX(RXUwqR)ibqzmIN7{zCETjht=sugJ^OcD!yoHxmf2-8` z*um4lLg=s~ksqO-t%-6&8KCfuS=d>GF<@54@*qpVe40<)6OoGB!YJZySWi=Vb@xU0 zr!cSkd1YAA4s>i`Dm>tJLrls)*aEyT4I9m7qRU zC=IE^(2=5vMOMK>hc2%AN`u=x(Zg=+Ibr5DRHGhX!e!RW(6ov5qints99OBHg37W`=7+T`Sv|)U z>xj)NW7Wg)fOaObwk)yAf;8QqRA^;@1Hj5}$NYe@y#?+^^yj-B&6~r8lFlvOJLbV} znzWK4@IPhxWKse5)c=k)*lA!8%-G6;{z^$qOI#`lpURviPSQ5S8D__mhdrZ$}!Ik4L(HX$q+GdaIyZCpt$OZ|%u8$L0_`MOQsHU`; zMRu~lsemcOimto1;a=6Mk`ge_kJWN_Fe$xy#pZeD-;)w%PzZd5M2lloNB_6Kj|yZz zvYAyaIz}_zkuOjIQJ^AeSa=!AmHfK6`adN(_6ciV`K(S=@prHGMvPXJzHCuP+F_ZO z@V~|Ffp@l>?;r)2ag2gbaFxvw4bZTPXvW~cF`!%Ye3ahAa#v*HhPj2HALZP6qD8qm z`mfP|gz1h3Ua1=zp5?R`oMWfR3}_0!1>tQAeJlO@WZSzw%R92c*n{Q98(?)LbAZUB)0*HCT737!f#2SWAQQXFD{h- z4`E*w)n>bGoj@qkB8B4K1}#o;mqKuNcXu!D(4rwY#VPJiaVYLB?(SX)&d+!Dzt7%x zXFOx%eMc@bMsC)cYpyxxBLdD(y2(X9-^_?tbTR;+I_ZvmT*<{EQmMEge|m_WTPS8? zHZY5&ALPNNX`blquc~xw^&IB^v+m}}mfSFsfaP^#iL$=WubjHYUn?}N*r%>+|5=u| zZdu~R1}JQ@u<6|~oI3Ys7``O!-Pu{W8!|t z$^x}DnYUhd4Wa;R^OIK-eWJ=qlE`Ch^f zW>?Y_b>(hV(F7;7=2{@E4$~@`NVWzq4rHp27~wjM`A=)#2{i{Z>-8VG#4u;rRPaG> z>+goAe8p??MpX?q5Ga}#TIm5f_NJTf+C_w(HpS7Qpy)AoCWamt@j)E-H*N(K6Vet_tuOs zC(kDU`M0#hudh6Q`mijXutN3D4wD(B4_pV9`53+~c9xIepI)U>o@ zYT)BHPNNIoBXpF`Sgojnw2ZUc^*ML=gr^&;%H|+29?=$7uuQ zy#)f802Kx8KAggAS<#Eih7ZD=ce>>mah3rgInTgsS7bx|&qHsNt%B{KwvDuz>KWv} zSLviHnM@WDLlk}-1-dxt={;=sTf1=-OGJsqk<{^B7l27YLm0W{7*#%Qp{E43`N(tZ zn@OOmcRBYY#Y0B?xEsb)PC>Sn|=R5@yKt!NFsGgQpl6N{HlbTO;jJ%x01G?;adS- z9|m_l_oFQouh(KZ#N$f?@&ip0eOSWC=!-=o);R`yuxep8hoX?W)DNG+Nb9;}?itA~ z37eSwY@i9z6<-DZ_{AZd^qU`PM^oO*#GfV=g7JP|e|#6p4zqW=m@*znJs9iQOTq){DqlzcEC?7j>RwO z?C&K{NrjdqRZ4zFL!FXVrm$@+WiuWv1Lb;^f^)xbpL|~-2hRbIOL&ILTk6RVsfYS< zddAi#Z}X3KXHN6@f5-BFu-Z!bDKqqe4PVugNy&3`1bIVnt;I!DZMLs%MN^0h!k9;E z!rL$J0uj2~-Pu_H()5qE5u!DrqN(=(up8t)+pOKHD_~c9V?Jui zX6{gf^G9bZ#Y9J8;Pos5wMy_q(mVGk${kNGnvCQH)&H99!~dxPm{+RJmH#{0|1;wU zkhhTg@c*^AjJ3Sz@=Ycd8bw@nm4&o=Z0kqMO}C$CVn(YN9-nv)AbN25eRDe%l#MldVQh)RkDf8-0FzK zGy6Lw*D>UbtCq}wI>%LFNauTRSGzM8J41y=2nd)N%}Mu3K{S2ARCy z*VQSYGHoz$GgBN+B1Wh^X6F`)kr0v+<+jMC7gSQWrolEA1%Rp!SEY-@*DmWn&5#|K zD@$>=7LvTxu@p+at6BxP|4udmENQ$A%{A+5V$`sVK>?HsVoj_FPeE2bAr;;#Pz7sQ z#uQ|byGz7}EZe+VuT=&(e@0kjf1rPicL&0Qom^r~IPn?zKK(ljz+>6M>T9{)12u~S zT{SKbb8!;Xq0WH;uA@IEh3O+X86pQF?$DBc8~XOR$>WcG2V^%XALq^N36hhROL;I+ z;VkJSdjqg(oQ{J!-n4`A?fysaPt^v~Umq9nbc9_|05Ulow@9F_m$m8ab=pY4q}0&` zfA8m^rTq^(Ng=WAhk2@m)v<~=xkd^Mcz>->MP*(MeU)0d$yjSOBOj-r_Oa(An;9Zk z6`TKt3i_q&(qPw~Z~Fe!SaI-6kEB6rv@4PG~~J z#;hh;pcEtI=U5nx5Z#OBXT~K4nK^aTNQhu=j&E6Hh;b*#48T%s>qj zC;=1$hJ~ax=YKExp8KY^uur(Ar@49_(z^e8K(xPK6O0<&7-Ij9ZH|eOvdi7ejS%}6 zLLz$vE3(Bs{XL2K5Ox}JLr;eD19t)SA%z%N2h2-FB3V?P=?5qEW_$|i_1@%u&o!u6xp0oAL6E?{EgqevUDG}0M$z#K?8e`wKVK~ z)pY6bFjhMB_=7FUg);^LyuZ9~ZtR9O$16Pp`X@M#hRJYiLaZh8`9i}8_ zoYwUDK0kWwFZvcO98+!f3DvDXxcm6c2-=-BWA#b=i8GK|Ig>jZlEZnZJcjg z`&{^cPUmSS;*;x^LSoi^_A>M2(Jp6g9o!FdD||Qn31rtv{-ts`3FOsrIXpdn3cR@V zrMqjlA!qBe=-7w(xt#UiJ~W7U#Uux??k&H|zQC*UL-TCUPK_28Tq}b^H0El0g_n&V zJ=)Ke0Bo~Jrx&Cbf$og~p@)B@L`Q)tENk~zEV|IwuFQ7HsvJ4)alS8B(xGCwe&<$A{bY%CP^UZpxD>(Ray zyqWP+$qABi-s)9c3C3dR-~?BGSrRf{rA)L>I9$B3ZVW@&01l!}%h4-pS*UXA4IjLm4S*phT9Gi|Azd0Mg3XS4jGWtLYx=Vkno)}6c_as>hcJ!>yNoYkId&kKBz8g1}SX}dy)?#6XlXhsiM|sT^;>;agZSl8VmBm zud>>?NEYkHiw53q!q{L@8XTJ6zuiqW58YU~$l33`5XJP446%h4jW(8sC`mYd)A^NH!uDQQyx3N))kn!v)%6FRNTmB!C^yAky1f|kEUQVjw z1bcUEVpdx#$|;#wbK~^82aiQ>5;kYEN{}Ma(IE$S_O(#aJ4fy+lKjIQ@4RNFY6E-| z){c>7;-LiRvaUX~%pc!TEMrub0__ZRXj zNxoeM;#nmCNn#fY`W?30{uddneJ2|j2cEWSGyR()c!%jTOxASYH9(#vcxkk_ebXmE zv2;GMwATJpXBE$fx!q4tv!ClEXLad;kNkN@z+XFD@~449pn^>;|0AJ*a6k-ei_J6+ z9KoH-2&vW!*p9|o;#Wno2zwdrf!%gUw#{7Go-2oL;t=`HiI|uY3h#l}?-VD9#FI|} zp*~A_wEGD19zdSQ@@vZ2up+FoSv;F`V9N~SnfW4Nu&?J$CJuZhcDD7YVbk+@vBGzV z$G7jYM1q7|xL6ubX5=>gvV@-V==TRHsIzfY_3H`W1=GrWAjOgDcFzyqf)G4Ui>v3y zQ-x{Vues(j2(N@&(6sh_qgwkLT4x&_xgz zEhE5@&aJV4Y$eU9;ePSJ`KdMSk$HQ+$^3>0i$3YD)@KgjCaOS%N8unQ3h<_)L4pxu z;hj)Xqnc{wIc{i)H~{bjL9DI#hhX!A_3kXC2+oQ_+P`pRtSFM0!sOyQ(3%$j1|2La21 zpRPO%-CI)~*Gb9SQH`PlIj13*pN$!uH*!xKwx>`E{fMxffiFJGKPa1reU_Cn>k^C; zZgHc!sPWDNF!B~>OtgBZZI@oUv_Al|7GZPl0 ziyFZB49Uq}!W&_hMobJ|QnDPx%Ljv)3Z-4QQdfHiB`xiqFM)mDO3Q5R0xk=<#lx+0 z*?<;31N9S+?N%+3zSbI7@HKb89=mGjtydTVowx6Kncs9ERHh_Cce7SMZ>?slFh6E1 zMj8SiWov+T(oc{0E-IOAb)Z&!8>=Sk{Ymu>8C%6CbDS#X`_JR8Sh$SOOKxZ(?K6b` zSc{$U`z}d+R$>89^>91GhXXQ$!eAT}ml>6Jx=53NT%6c*ipjL2NX)|Xn%b2 zx~d-KQ2Ig^4qpO`ezp*XX}pmE?FwzCA*P)`r@z{N4CKE$|EDe&{M8`GuG@jmUv=HB7zAZvZ_VlXPg=Iq5z<>JjU^U90mvi|$~j@%ypf%7K^h z_u;$EsbH(0J{v?eCOISspdY>qDhtd6$}`sefQmF-q8vWk!j-z-BA``G`$hx|0BaB1 zj6(`=*NaTwE;Z^-*9UyaQUK9WAqSx?>~u*eZId{(lgsbQ*>J}+{#g}#fCDwhgR!v% z9aQ?^T*QB$ejYCM!bv-~@H*#Lvki_Ym?=JhIj#f#*hLb!|5UPS08QZ4t$e^g^q`HL zu~>a4>;k8b2UOQB@pw-?2nko0a~kr(AFui?<`epvs6MK)7O{!&0S1vGFa{Rhbt0=C zLpBVDUv)c#zW=ORj-urQ6>(VWvOUf)mIuuqC!9K zO7Uh;u%y9p9=S-ktBy8i7^3kpx)qX&O!Bhe8}vqD_AO>BFZj;EQo#vv3n{^T(_^nw zdihi2fvQoS!C;0^q-^PoKmYako$R%yXu+f<7wxgc{xEHrYKxSivQK=I2x_n3;D=4b zuj88an9fn{vBeg;*3T>&Hc!aup6ZLO0~Xyur_1Su1{?%g;%uZ;%>5RH(>EDyUn%(h zKEFZOAxgv~lP53vB?^KfQZiZLUzU(<$$CphvLESS3t{$;_@Bq$zEgffd?xQK{eDOp zwlIshB$V?fV;hlizVFlETyAczYJoT`%Y*iK!Da_jFtZwS{$0>7{zAz6%L2@5(Obc8 z-sYf)f_x+7sRp5!#yV#yoRNED{1n|sv$cfPUBq-r9awE-i;c6BO0@wdQI(y(HK}Gv;nG;M-_2!Wwe*2@>AkQr4Vqy`i{E2`m$=`LnU(ic&(c)PZst^TTa?i1h zWER$7AI@9HXwswN{GfqdDytEJ`np5D!qR9??cq%)~o4^+xhNQ`UUWpmmD;x z+DTh}?%;*z2Wjm)hd@8KRi51@(@6#Ydsfyg(TP+|;ss}NhRbf}toBxTIQdhELTWl~ zT2dL+0x z5pkyZ$Yoo?ZTlY);lGY&HZmIJm9S*u;(vyZ7m-md@(ExDUib0tZ#{`fH=u6l+|8?# z|8B{M^;pm&z0&I#==Er0>nU7YnR=eX9H3Q6p0!BV;6bpLuGhA5KE5hw+HG@8(%$NR zGWX{(48z^i-~@M6!b%i7KZ9gVA40qGNae`txhA#(gr9C_W#@(8w-)W7s*ks(vbv^|-B3AifbYp`B~+g03O4AGD__PVlLi_FYoVMCQ_(Y-&OOBVgX{xXUY@F`$7^Eg)({E5%XVJ&@!-}U0B@ua&;UR zVta?8wQh5FwUmktbBs>%Q^;!WF$Ug5oOPK{{gRJJKZcZ)2z}+#x8tGaJdV#34 z6pFZ0QgxnBrzHA2t`f;ArlA_{u-)|~ic$vFKCjb$c{wh>H)UhU3o5|hfTmz6<} zfcqV-2gQ3(V|vDKzg*D|F#^${M{%E&x@v*6T<&A&gF$hGQ6B=haE6?ALaCG@CP6(4 z8M4D8BEDavuh4zW-;j1a&_)CPQX!pvzhw`Xo%=n33Q`-QN<)O5sr;%9B|x>poOsj!IO?Yu?hJJf6rT)p$s~_fd|+` z{(ApCIA&F?yF;T$-THH?X>28MBTE9ZKvxs<@Yquf!o z5Db*F)c{f?M=%H)yofOw;8Jc{7)_ow7fn@zNc6vbpO8`aH|I(9me`)4eX*DDHnUz8msd(`1Y+avsTejoP1bA2nKC+7LqY z-X5#6jQBN7RdAMyhN?q*tAw5b-mLBN2wMHY0EU+yv0Z`7e2P1j2a|l;Uubvjd5T$Z z13o=RD!d*6=54vyY*6{y%~nosv8pbcZt-y4p|8Eb4u0A_Uv1E_vZCM5Ro@-U&Heqa z5IkJoV~T&CS)(s(#C=@PJ(=gBSla!TH^Pix zHm+aAb4%1yKwJNC^?l$E?^Cf2XWPrU{^T#u<#)Hb*FwGeF2^~STQ2ig9#;M0Un0aX z`n(Q*I-lB&wjS#4T>MigP+kfkd9O<^-Ifyiw#6re zGD;86*O0L`3Yc*ZM>7@+CR_NrtuU!Z-DLJEUO=HYE^7NzL-_RpVtz z5;NY-LZpfc6|xW(*j}L$s-f^N_U^ozJ@hTELM8u1)q-%u*3`Dfjz;C&=`%=vq>=a` z^0z4K6cS3KfDAyI=#!N{a%ygixO3OL#fejr&iNldZ^RUd3Jc3t9et8&^t^@7IeKGx z(%TyLBsoHR)nV9m1?UUJLy~v=!Pogo zTMaf)?_KcZ{;XPwx+lX6$u5#7j2&mK#c@L!3|Pj@}}_=9vGArh0_7mqa;{}GCFrO!vu$?u+#)Q~_x^8I_x zoalVN09|mH-cGtn#6h$Z@i3k*uf~YdZkRNk$@cf8w@WqT$)jj3JdJ}=^)B1p4+x* z;11C-h1FS$(zEs_$y~fn*Pnf5_WAFb&5>GK?YvJp6$fq57=$OX~Hc(fGOXDp0h`ROItucpScx0qUAqiQ{;h1xVdvpg=V|q_alJ zz=L|#x2jfw+mc=K4S&igPZuO$BRhT$RoaUy|K}A0C+g_JEBNn_tOg(594ORTTk5Iq zdKw)K9qy#mR;5li3CcLmfdFrG%NYe;S^l)Z#FHMDdi@t@p%J6!if{0+n&l^oL`fNd z*=&#dD;oSxKw6@_F1|rQAq+-E{GwC_R-qj+QG8$0KjGI; z$vW2p8USmrR=fkRfJtgxw^&1%ohwWQ!>W-*7+3>#!VIX{m`WBbN7g9C=gV3C5zaEs zmZ9Wa0bNONRe1`Jy*Ffsojg)LNI-@u`ydDl^?!&@7XrW2d7%ufY@6LeIu7%wjv0|E z&nM%#r!=rNp)N|+KyIBGg{j>T-9=}=(R+k!QVZyKZ-U>50`M@*$)Z(mp3w&@O9Y#f zqJ5zy(20w41PNEpM?Vfx>2%E-SDCVA1Y@Hp&A2(OYW0oR#CjUlzT!0m^0*)FpRcN! z*V58LjaP3hk3H^GWZ8`sEt9b@f-e(a{3?ELUesAa&b(r+8Kmm%wbIiVN15^Mz0+`t z0IE`rX{(E^-J}D~ecuOZIB-P_dB$vz;ub8hQ(M|1Ug(rZo@g12bJCN{9*MNDCnngS zbS{wfjJuub)EV0cs_8x@-QeI3B%w6--r%NbOiF?T*9F}PTlIJyaTri3GN{lHy76_$ zX>m`pC5bF$M<`SM2~$*Zqh2?j@3@qtQA_Z#DOZ|PoH=z664>>!i0}#?-3s*9A-orQ zz9q*=AU3|f8B91Ta2?H*!DluQ2fp)nmNQoNPs2R1sq5J-vF0QliWD_wRQ#>0q&()f zalT12C)+Id#Epe(?+f9YmRx8#`I-E7d)-pZcrf`OJ?&5KUkY#>sP<*~A{6Ccq_3}E zB_XSYulRo5WspQlcUTbPJWsGzc1c?qXLXeF71g5Z&V0LR(RegPrM|Ns^mEo&G$9YO z6qjL-AUyQ9&`!erU}}%dgRJC!505?H&Jd&ciw~VHUjSRO!j9&Fl?lpc6nvh}`bmST zcU~(}5R7Mo;JvW5irF%ELR;K_SL9$lm6Wp4U+<-$GOvJ^l_t|Cx@#^t&$&4-iZy*m zTwQPH!$em(HGHK~Ge-a+l5RbvN9jSg7VJOpaCQl2-odJXwu0E34@qVttCoykV(In7&F2_^SAWv+CVJjOT6>#&)w-j+BfA(9_?m0^(aw{_ z)9>EEIsa9w?|8fg2Kg;Rz^R;f#0#-5)+pQ%;Jc@g%d{>7ke9*`kzXlE0t2$VUhggT z1>n(#&(7FXY&Y4!&z2i|uui^vZRU}Z5}!?-*Pgb5gnD8o;^1D|0Og?Waj2TdcSnR` zjmL3N01r7hZzrHvWguwyS6xe>XN~RBE9@XX!0oNw-3*qfMnT&&I4J7KB+ks zF<@UOx?&Lsdbvs*rN;@vZhP=v#6)SnuJTp&Jt+fp6VHe#Iyi*%tf2Yhe#eWjIB7F% zW(ZQElpIXSF2Ku0>GK%Ts)yn!WPzn7PE&AM)MzTWY;gj`2Wh;~>7!vg;FHPnxi+(6 z>YD$(b3_c?X`g`sp&_&LRX5@G0^`MQf%C_G*L!`Ls zbRd|;ZAZ=dLRFuYA(v{7d;J)_V))p`Ux)0Szd?g<$|*#25C;H516?Fkn5wN(;M611 zNJ_{Ub);1~@y4`u>GgYe*@N`b^qYQxaj^Z)jkClF%1O^KwKc=QE-1(&KFL2}Z@ll&8O&veJXe8tkmX2*%> z5CETINGV^_8#AHbD$Y+6XQzx6#8g+zl7QeMlTbTU412vTaEE68m~x3ZhqCc6ct z_OzR99)zEE6fzIV2`0zoZc%uVLt`3LIll-ETTa&s?KC{Kx3_+kewiPB$COjOs+Lwp zzC3Ss!F%rhp^Z@!`emeTM^$4+kh;6>=l2zAvLrT=qNMk$;3U;I(gy_LaWXeP63xQ! zQndLo4woPOt^7uQSNp^FR4ZR@q}V1rf2h))_9+GxuE=0^X!^i@iHJG}ILjd{T#KUd zpr0rB&Rghh#3fw!XT+&;jfolWWtx_Znr}6mAuj8TFR3L`i7b79NV-N6G)c{uDm%?BQ2L zDGt9aUQ+unq4aqGh06aJquT8;|3pma*!s9Uy+Zvm?3;D}Cnt;Rr@szYN1~L&;i8K} z{W+rq>FF@l)6{Ma;K9A4;0IVJgxG-s*F5N17hgBY@?wU>XKXV!E8}nMo-WfjHW!F} z5y76T7jhg70qak)a24xf4S!k*>iB0hGeoPcGrtGhV7Soza*qoucvb)TP!GP##AMDQ z9K$9~b`ETaWV5Etrm}@BxBHTu%#Iy-BPzCmT$AFog9Z##lB~N0m308}{;v(PTYv%l z*4Y<1A?f<{y@_8#BwmvO4fjTEu|=&{D^R~N3fo(t@Pzho)xBklY_EO97OYuH&hFSg zWFRiAF+p?mc6m)3%PhIOtAvWO_L|#-%$-Hh&PXhBI#bxA@CO*G zVwCW^C-p#6oD~Ql5phNhv7}J>g%6e^h`wP2NnZ(^x$88tj)wt}@V=3ziKg;N|Cf zi@pR>WG5}C^x5=#a`J6hj{vulKl0^)h@S{#d=&E>>ycPi^H`djyVL@+B z1?(dnoLGSgsXJHKMD<-^zCWy!)nzt}7}Rg@r}-_*h))%y3|!m1%+*O z5{TN!Vn~BzDWx(Hm6n7VWVI9+<}LKEBPX$xDPbSskU350=v3fE5;lh5F1IY&EcRd; zDrm^r3oX8rJr42rJbM0I2tRiq3ZdA6k~I4BPk0Jgc_?~;)5Q#UZq9cnt?UsfXA?m& ztq4_FNQANIL?iAd#YL&~Ep)+sA+v-g>PA%On@@^uZ+%&i`N09Vi>gLTZv2+Z_5xZj71 zTJ^cGjdw3$I8d8m0B(B7G4yedL8C}Wmzm+S=aPx^cCz0I7oESSE;|P2jR2LV*Q`Uu zH_`>SrKC=k(87xdlvGXdx68CE(CSeJ@?Vo?!N}sWk2jJv!{;|1*Dvu5@jh;CPLHF$ zW#mwq21ZIZRavW`drv6_A|cdIQgWBJuLqAhRFd*-A!*f|&63)&8ArvRT;(TrXKrJ) zCpG7?w$l7YJzhcmYa`ljd&<^$#aW-~6&`t0W!adF^{dh(G4>|QeYY`t@GFqX( z{3{!N9Qg2=keAvT6_Eexa z;PWnq4{G+Rq}F6m$d^}5c62;ap;Y%hpD5{vE_;H)FasuSqu>SPL5U<21TnvsKU&&lA9qc1>{z#xudSL@ zA#bVJ$@LAHA+djXA=Cun(Uda#Q^lC4Y9@Egk&ajbb>vqzDY`i*7ABvMeM3gm?Ay(w zJPb;rR`3~M5{{+1G$}cFee?78fx`0{sh_qwb48}wxc*ZLcY^CDxmy8MS@exAh-JKw zF-7;z;|Yt|sOlz!qJ+2kLk59D1fp&}TY2%t!C5~yTAWP#(OLa{hZHz7w>!RxRC@zJ8BuEs zxu#<3yeN|1;nHLcHB3>%Z~hgPbRQ+ruKTzA{B>E0O9;OfA1)q#c`{BGhqXWM|Eh&` zxMbFHZ|kb^>%L^<_t|3*A?>~lOqX)XpN++#g~*fitVa4Wxz}2?VBB5Z*|!y5mA}3{ zQHhD_o;lzt$ED7$>Tu<31i&%^O+ocJ!O&ftYg7|YmIriW!T zg_1P4w2RV-6G{c~`Fd%!`COB9+elb-|2}|0OKD){x{MT(dMYCcNZ=N#JA%x|boTj0 zX@nRdx}OkTHKt-VXJ5`(PORgd<=-?4rO%fNM^qB}{NC3pR}a5joY&Qye>g08Bf*YKT9M@XmR+99v zjk?>$eB2nj$ap(sAwzl{PTN6&<4yZ`;9H=m*X(zIo+KjW22W%^C_##Dq@ojp7zKk; zIsg;oDdGH|qiV-)Qr#c)|4X15doE0wFW9HEz49N6)<19K$3Xu${CHZ)^Ul>CL`)#G z-PKR9_m%IZl6$MuWp(VV{Qb7@37}<%-H^eOMEq3=enio5x{e`-iT1zU z1|-PDr;2|zvs=vzS2hG3$n?2aynWz;YX*Q{)FGkX#BB(zFLy-r|NUkKb8i{b=av)x z!?|{Yme`9XYTV;6V<7g!5t|Nm?QZzc`n6*7X+2`AHrg@hOwI9X5=UBhSsrLkCo>(2 z72snf4Edf%M)-HUbRXSx_39(QH(T*hydPoKF#Aiy=^e=g$?6^%&`vU2S~9=~UHIp# zBLzbC2Vd#PI-F@h)Q1nhdIdp2^e_xoTww#&zdr)O6~r(~gg*<`QBj57T!cbny<}>d zcvILM4IwGp&0t4xuR5Ufga%ZCi5fmm@yhRRwL{h4`>B|SaPQ;qU>cLg&gSh#_47!x z<+SOdNaHZ5pC01Sr4s361^rtCZxI(;tX;f}zPAJ|NM{mnL(%Vgu9wMW-pgF2w#WOV zh!U0k_-QR{UuQMfPPMF>S=?lqGhiulZLefho*b~erBxYCWO?cnu(j4gRCQa&WWpsr z_&%_4^U35PIqt1Z#5)tpX2|SKkD+0uDeCTFWu)$rowTR%&+|8_D5(_HYr3Dzl~zd> z5{$~H-!Cm9E+yYkaxpZ{1qYz>K)8|&YFoeeCLP2rYP|edoM72oY*^Az-Y~5a(N?&( zE8}cjOx#<&i%J=cr4fqgy=T~kR|7}ENG2jtT)K(=i5aIPT@i2Cvm^J`dv{L-6tT<1 z+XW+o5_6nf^C8`k2pwI8($Zv{i`VPK;xo?YUr)J|AX?6qsJE8E6*`PNhnYU5zu^0f5vu&K|RwARbS?wruaGIDUvUa@N0z4@EPLB=$5KhGZSAYY{7EXO027VZ^Z z!h}F>`~6e+R@JQfjr=q$KXq8s8?kyI2NRv>H|w?}S6ti9qyBaxmCC*f@s$%!ck$=U zG#mz;$lycytjiL_$57BEZv;Wc&{dk-~(LZwPh$G#K&<%oXgaSlyd^lht8-!exBvJL@BR(+bZEziCId zjytPRdg}@F5_TSbR}NrFZoP)RsXY{cG&vdzUN*wFzMbw<`)_A-%rjL}b`-dqphwp3 zeCuqPwG|7Z|4I@!O&#EeSmlDu9ycYmKe!Sj&m82qg9CP- zy6PVKp5p($1qdMg^v=Ygh}l3b2muFn7I(A>g~bs8pZFw(b8jCo`o?Pg-EL`F)?Mw|b3f7#}Wp*kw&QAMB$uO23Z7K>W7sN?$morj) zbG0}@yPim#n;p6L53bqi2cld|w%pOnq&ORGdinRlq5&&lvAj6I4KBe47CPowq-lX%ru{3 zafNax#BnDvxC%lhxK+UCY>0avG8rVN&VnL5C~t|W-~bB)qOcC z4ebW?Z2pcD=@l^x8^V08EuGCRB)XFO;H*F_C2Q3~c01E2Nr}q&X&}4!ee3{R(;!MO4Sq zmix#ih24X249)}cN>;7?h#M9HAs$+n)u-i6nS$8u`!jAZbHUlQUBtWVm=Bn`jjFHa zlkP)Od)TNswGzZi1g%W8lPg`Gq|j2~cazZcdTgm^s*smBsLwo*1vN?wqS7=oB&q<%qE~x5-kRxtEI^A8+@fp2A7!EL;v4)O+YDRzF4PQDB^9v@@uRBF z!hp~ltA4himnbLe7?EcWbq?Tm3(bCk^(cYP$t1tZW3zVk38Bs1uQ{Kj5jIY!*Ii|! z1tv$u@%N^=9D3_c{)q13W_Qn*EfG--no>>W$~Ws!1Ms&;WP9G`eE$cSg+PDrw7fxwae8){n2>k|p}Sf+w5} z;OK;L#&Gj-Klj2E)APU~F1%@-#}h;;`Cb2BkK$q?I}3FFaD0gyV1zT_%2+kr%oLDC z|2<|ENJ?dJK{Ad=_Z2g@DEm)_Va0Kz`a-ni@>$#XRe#oVyNAii6&m^8M@c3``HNqx ze+@tnA(}y!*dY$FfH7dj^6MdI6`ZlsDJ?P4`q_Z0xf%r5E%=4V3Z*uSujH5;h3=2K zf(r^&kV#$s9}KDyY(rNJLtn4xlC3Xz!mfG#&9hUcGyzw71M$@2B4R<14x`%6{U~Kq z7d3$EE>_UwhUX(aq1il>+H1t2ZuDvqGgwH#{ZGi(GOmDCz+4IH44}3|j^yY0h#$`< z+eM`}b2J(@hPXlBntlqsEArr7#mPb!d~K;f44ed}kK)29o%uhuOPYx@71L^o%0AvC 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 z zxlV?0B@d2gd+jvpaoyR`eMlgnv&MgNdrofNi9Z|aQ`K)$*TZ!S*@2bz^021Jo*mXY zU(QQ8xTyzVb5A8Fu8eWoCw}RQ3{UN6F!$Wu)+n}Xrd6S!0&JI=mH0xm~Qt*43d*`!cd?AHro2W-CADcnp@mA8BAueW+{zZB?x^${Bt-q@f# zgTA?w{j#OMD#rC;68bM-?yYf9pTS%7z~t-M?jCLoLzHel{BK18YtR@VwNo=z?}M3jMm+*>`!@6&ziC z+^a}ZJ7Ji(0d{L-2Xuh)v>C1VxXdHA>i#{fqfmp!0a7__nmc^zWiMGcc9oR$H>|4~ zg-_D;n=9JL6{ZQap3x@c`v`U!>4=f#yf2yFs`|-Ht*Q}VChDo00ht@7%h1i33b2^ps=NgSlN?th;gC$?P-d^Zuvo4+0ZlumsuWfz z;U5#5U?K3w1A+;kAKiE^Nwf_bfi+j$E^OtOi1oXaI@SG3G)ySnZ0hz*QLvyRM*gx~ zmt^;|h4cXh@#{d2>@NhjJ{Ng*a$L*6TjOn>%wM3N1?x!yfe+9Onz~kX$LP8euN$|t*ve+b1urO zrG|3sY@Z+)`)%zBtw~Oaigj$n+Mm6i6YmGE)MfYk&m!(oi9HVnx{7YH=|-_Q84Er+ z?I~8pCO3VGdZ-a?MiCvF&EE;%wivrhUK!F;SewvkY4O0jtIQaLj56A?a4I*R6m(6T zj#L*#e=DM)tL*OHoz1ir(5ZIyc_8dTlGp6(*TN5b{-9N)Z|^}{ zTCz*3z%o#I`Jh#)dKXsH^&>0FrYlS9-|@fu`Bs~`=~2%8QJq9a*k#bYp@g=A++Y>i zVnX+2lqt+~{$+YMS5vC92cUX)RTy#_hG&*~{L@|tCTv>Asvd`QlHcA_P&!*M+wXE% zQT@~WWo=O2_CsM77R~NonNZG_1)Qo5?`Xda6$-KbCETAgXq^r|eDr_ge&gQ~@BHks zFNOKI%6$~+sud#~(TFSh5i&Igp}J*VIq+7g>*n*TY#{Qk>oap;-pNPws?m}d_P(EcfhU(2gJ=-Z3@~Jk%wog) zMK{S&gI_1@f2%jlZMS8GSy2{4JC<>%3w&D#%B)?oO%U~6bJ7ts0JPz6xzBeEgp6?` z%z228CELv(4zl(=N3M0h|_bvO$3n7m5xOo3$G>N$C0 zzm85VET;(^#^?>rjVg9|CAN^+7}F-Y=j^_q(Ro=3{2SBt`hJy_#@0r{olE~|H&bL2 z){*rJ&AADP^b{uBM^W48>9R0lGu=wn=IDCMVjKdD^yJtQ$^~nx|M+>J-n>r``2>nH zyUKdvSJMwuuQHJGRo+syer)KYG87T4P#8ZEI&EP5cknx0->k(ynXW0y7m~sS6Q((! z_MW`s=&R`am`AUPt!rSv&ZdKl$@0C(Rvh9!XT`i3Q-pmP27Cnxw4hyu2Dh2T9=aj8 z*Hur`n%I)cA`B`|HVFZc^ux@(4|Q*J#eR|i-oJ9oO)&iAU&d%G>|W@At$++bZr=A) zT*U7Lj0VJKiC^$VT_4gf@sSDbpgx{q3Oyvr?}KriewJ)afs#Qh82m0MCRY+_%rM!OgAp>m*Rc9flh)t~*+%e|>8;Yxmr! z^6R-~M^Ukg)0!9fQxMatQdv6@QNg_QrFNlhW{G)biM#I3^~wW~W{(U10U?gjct$|9 z#XW3BW$o?>k_70pBym5R^~?BrNA#S6ZzMHqNvdBvGG6(Jn5~8}eULgy-qc z@!o=}lUE3aqdq&nMx0zYqz!MXb_(<&%%q2-J%h#g4sv+InCsVEa!nL-Pkb7q&g~$A zpW6(M%Jr-nw(LlvoAWh!+ds|(DJqb8d%3tn84nWULG9oxU$lE4B-NtN@kBzdLw7jQ z@1zS_k@}C%jnVO|vG^@AexN@n&;&|sEOOjY(AUSNn-K~FVS z?wy`ShlN(;zJSltsB!wl!Feejh;; zRzP6(qWtz87kl-UmOm{&snAFAGhEe=3gwjBnCARz>I3k3Jz z?ykYz2|C!Ig9LYX2=4Cg?hxEvg1cYNciz5l-(S&P)m5vvO5|y@*A}DhJkI38XU`^_ z=N`OdA0+)EUbeAfy_JWA0?Zf|SvlOYpi0>g=uB?kcI+HncEkLp^FMM-|8EcYf7)Z- z~Q8k=*kr#HE@S%*XYkA zfTLcrg;sz*Ls5DE+^_uS??k-duG8m%vdt*84YOWQF;|>s=$CMcQeFe3wujY!*ZEOR z-v0D3yhZw-_5x*aGE zGiy*aB6RYwl5C036^`og`UfBXafO=rrqPXd z?hW|&H{(w>CrKfs(>W(*!|>E;^}f370m-@~%t}}QcaY^Yr{(24R6BBmA?qx%Z#laPM2EJzR}SugIsiTPZHU@I+=f^g$1l24^gjKA}Sud z8Q|Suy1E{xxx{!LD;8uKcfF)WZ*yx>@o(I&D!|5c-zi~A5g-yYqP%_!K*p|ECiv13A-#fhBQq!UN#m%@0UAIL;mhXd3;ses z-;&Nlq$FPBDyu0`sZc_@yWN3?Ks+&XH-i!273HKdV0gxx=O8OabgURG30x`@gP0%h zv@c)#^Rq8eq_L{;_@LYV!-yu242es=bF3guznAab=KsvKnuA4FDB2O8_HaDUY{xGy zEiJv>6e))j^RP>l7|#1se@tXuhU+%f2D4@yRKeqlPFuWy&YAJq3!|Oobn2V}^eD*N zO@zITsL42mjnuyl!U+(mmUUmzP(SwfunP+^}Et30X3M<{EO+SxzD5e&eN6 zl-ddN@u7ZRNb|m!2;ZStBIVej&@%Z{hU-qwxw5o_=41us(5FJBeo^>>d=iLDxqA8q zECisxOBoG6*NNLu8awju;1)(5NC44HlMUY9l(aa}36HecZj!5u(=HqR2*`{j*q%&6 z3N__@%9F1?RCXO3^17A4FILdEp9&4iK6Y_T<0mVoH@r`L9D0uN;>{z8IU^0LFGxss z`k|+%qlT?vY}Fo$M@GJ3nw1t;6MyGOXO&V=ub^ zC!p?5x*~TXwWY{Q97~y)?nt&@WR+h^>p)MuF=sWZJ$K*u^Lr-oj_cY5SxJgVGMR(; zww$t(4nKeIt=YI;BfZFwD|IFe>~r0hJOZhf$=(_Vj> z`m``Ae>*XeGC6E5Cu6cAg|QL($G{*{Qew*hiw>P?kP%Us6cJ#5hkc zG#zULEcl?#)}Y~d0fBUGZmVA=Ie)IHLqb3-%b+t6lTCP7GM!;3kA)p5m9B0_uP)5= zU%`+eq7-W;e1lqu&`3^MH^;-B`{S2?SQo)P|}j;`1?bo5Mk-*CWo`PYtFt zoJu*tU!>w6bl82tyM`^iRkQ;2)fQJ@H=#DOGodg(YGz@!l9}xJMIfDSYU`QrVV5De zf9RnhkO!zSi~}yZ{P`T5W2y@WZU&*pL>POJou=($!9N4i!YLj1HZou8lUf=g2>z51J~AF`O8bSUY3eL zAvG{@nOFavK;lD3e*GmiIm4Tz?G$Z2Zpz}cnx_DXwH`MiMuIZ(I{k9Uu9#REae!ce zI7nn(i z?mwTQCg_=*+SWd~{wQwn50S|M1w6B3V;d^=-eFpv9{zKm4vI&>&s=aKrO}CfFI$SS z!F%_2HyVf_n=TAsDMfL}c(j$aUtxJ*bWi#NW|q28!jES2!01`AJkxE~Q>fi-=N)L@ zJR0=#u(}TK;Pf393tQqU8}Eo1>eH}7_J*a$;KCGp3P85rK9(+c<;OlzP?Ytd6L<7y zMczC7J@tb2uyR4=lXW>)dCj)W9ZHk_-k@izrf!?8iWtdV?SHX>#*z`RExJ(3=aS@t zv|Kd?r|9%ZPTKkPGkhl+N0F9c9yF?$28#AmO;EbiDY|ls)AP3`k(8(K5c{=TU3ojG z7^r2+AHgep!jcZ*n+`v3*X}ojCbwLEd45H|c5pyrmUshfo$MJq^RyJ}S&Kn^&OPa& zr9(cm?Z~dMBVA}aSEPFKv>&HDF4~K+?M!|ADMspIGAZ+knkAdvIZ5O1vMkf;bNmOY zSjexR-M9j3p3(kW{%9>dz~>4Ea4&|q7D-QvZNy9-E&KY{Hz3QI_8w_4&?at6$(B9X zS|b>Bxe2lk>5C7MA~20sNB;U$cU?dcby8)i%dxFNqW!3TqN#IoWMwPgUY~sY$8NNy zbMVP`XB&t*6Z|AwQJC|rhNjpFKXsBkpQ9v0eL_E7z%5Z1^=ixtlT9^=UZR67NIb(Z zTS}WlPHs4ni{VEq0b7I^_B#mhgWVqW{vOD_L-ajHT60dM(I?R1Zh9Y#SpWBjGI7W- z?%s3S?k-Tad2Ka|g^VMC`d)8_#RVh(ZKA$T=;%v<^RLhGzbLvr(1jY5szYnb>->zd zW?`v~Vl^z*FAe^fXxZOr^_6!f)ZF3O@=z*Mlu$@I`5#JfCOq2smqpIj+360>rG2*=KOorSR;&1J@}3az zvY+}*rAJeL5Cp+0ZdSt<&HH-w;xogL_FqU(eju7;RXzqfNdU6K8WZ_C4;uOPo+ z0y%>Fx6F8_n7$=mqyA>!hp17Z8GD7R-wby6w_@{;Bqt} z#wCmNuM4^hYAh;7(wdlJU;@_Is37#48Rfl9o0Z2ji+)dr$1^#oX>$L(xU1C-W14W- zHS#l9%F5Jg6QbtI8QI8)vV{bXuQ0?mrv2^umX@u1nSb&vpD0cbR!e23G`2N~ud3E3 zI%8dGU%ylU8CB*3n^wVz`o2avb1f`p^0%)}IVwubgD?HW*-KKSD?Y zL|JrShawJ^u6`(ZTJK3v4+Zs<C6ziJ+SF7fEKUpe<9MqqARY-368?+$wVR32(CcNz98cu53@_Tvs6*RR5v9gw2OXLLx@k%s?^&@ZTp*R2}(l`3n}Y z@Tzd`Fun!6uEBcRe1<>DYhD;RU+Xy{(x7$>J=Ubyv}trhjt-! z;mV>iwuWZag`DV*)TG1le(|G{%euQ+mR!}Jn;C8;M}~!1A1>8`&Q|av-P`C60FR@A zdsDkSF{1WmMd5=X%zO;}*YqVXm}t87v_k%2H0|vOzK`S`U{CWcWCVL*c6!1uRfJLO zpC_)C^z{&j$^=<8>A?!94Z{j!c{t9y@b zBP5PV_}Y$ly=6cy282fa83x6WNM^mNt8F(f;42k5q@hh{eMbdK-trMRl<(Ykd#KU= z*n84MBGP;#vM#JYPSOLG$*P`(rz740Dx5@qg`}Qj{cAjTOM8j&q-bXUfuo8B$v}IS zSly}KZ0=DBA~&c$O@p0jlo9?0>kae`+v2M zfcHGQ@{u?M;-DM2>{hA6Kx3@DSq;C!j%D%}12CnSGvWMDHW$gK0_w7La9Lw=CT$&n zI9FVElZfiK^+&=cwQWKk&^Fp-nysCDkcA4^`+(s0s|5iGV&H=DP0k*ortsZrpInCB zPN%tUA$->`Y}Y@dZafL#?|61Ny7uOlKZJ+K)P}$Ndtw{DNMcbFN~VTa;dKLTY3z?z zVX8__Sm=9-So+c`;2C%Drjqbp5L%*=;~K<`BFbgT(C2=eEH-M;9LAm{I+wUaM^=F1 z%|yUau`F{^WT9tqTt3WT-d?KqEuB$U&{~#av7)Lm?EnItu+Z=Rk6lB7h(K~TRG{qSh{mXBTd`Q68 z+*r!VW-9Ier@(K>7K2PaurD9K7K2LUr6$e)VaHlfTjVJcg zt0n2Wg`Pq3S98jHa3l*!=Y#!^AJP=dldlPi!MswD(V5b*&(Y~$oe%bp`2_sq>IM`h z<}=*W3N#$pyvEr=hLW^X>PIfG8y(|Ur}8u@&Clm1X>yDwzYcHU#hdCp8^ihSRe6bu z$N0XM2k;!MybmpS3%fg0gJW3`UESDi7NAJZyQ)r(%Y6Dqg6mzGqWs<5{a1!Z(W_Vw zxDkS6=3QI-^Qut_7F_@8zYo3_wTxLF|N8w~E{e;kOXHq1QTwd4froI3neLFW*xXYJ zAVtjHn)9mbGqmBTWg&-S*Kz>jZ}(?vHtsl{Ej-&WCUy4A)2!2Dv+!pov?BPnVbvcRdheLGdM}+4bbF(bSnN@<~W9xonzG-l_M7kN3tQjw{te7|dK;$ZK%?y~KD zk@h$Ytw*zT8+UhZIh$J^XTc$@i|Ir3N`KIu*>k1x5;xkYsate@EegjiDd4~I@b`%H zIo3$Y$okfTKA zo!r!l^(H?uTd(%ZZ8zEyCAj4Znrk&j5kurEfBvWMwd$nj^ex5ig|7@>5OGw)Vp@HI zr@4^%jN+-LfZ(3k^s@2KnZ(hmWP;f^n~<8a1maSY*BunGT~_i4rmC>7dz$S?(BX?IMt4BaR%M zjRwclqp1??3l$^&x|8csY1tR1;c>fYCivzXZjS5i=C~&`$+>f>+wEU&caLm#F*Q)_ zBF(>j1QZo?K(^Y}GmtFm&+#%=a+L>)0y}y4_adzC{Q}yaqhzQTJhuKsIkiY%)d~q- z<^vs}<}RvA@bQT2ye#JO)rj(ygtNbG9|YG)i^l*K_!X0a)Q~3qYr7!CwG4TxVEYP6 zQM_Z1c`C6%F=Es4FEeER&eu?UxG_m!JleGGW{M&qH!oijq&<)e1F4#o@|F8Uen`CP zutG6-9_!oYjtB>7dK1y_GclxaiO)oFbQCC|=qBHHRWq=GZYCLP&&4vM{DUwYhC2L& zK|h!vo; zkgEC>Z$y!PfCZSGyrVKL5y>J-Y179bwrV6B6vD| z?zV_ZgNA@aMtslYwapqS@W*SUz-bcA4{(B0;;jRyvnNKnWKiQc*e0`l zo7=BB%lzH8hPr*bn&rgRXE~7>y%Zz`>Z)D8A<6TVH}ogyEdJGT(jZ%JuOTAepHLdU zE!&}!ANJ57>?U4g@tyK>Wu6C}9ErU<&vI;uOG+}@9A$+x>1bq2rz0U=@YfUitqRKM zE_1Ccjx=DEbO)k4BdJ-P_YC_Sc^5@YG3z`Ax)R~)K8o(Q@ChS6q@|z{Z;P7uLWUo%NTTf{p{3I7q=4{sJyS~4A-CV z(F<(LRySP*AmRdIfw^Zuf_>y}lyK#AT z*ghG(M@=mzvvF>2F54wL77S+zTjw*Mzu}+_@kIiO{3k0dK~4v zg-n^@boF(psD=))C&X^A?G`cFQSF-izIq}Tb3@)k5ypLg6Q9}47(&G@S?gzb)b@;C$ZaLJ=% zsL2xxBJG@vn~Z0hyIoFZ3-0tyiKe_y^hjgck}!V;u7=>gla5gLVt5IWQeYpIRkEA_ z|2~iTI<@j$Gv2SLyc@~K#)E8Sxzmz%pcxZ?fm3?7wzPCHKwtK$>4#V64@cd+ZVm`S z50^%YwmY(U_f6l~zmP2k*(gcrxs%=ho^eIoPn`{Ztq7M2S)f0yO8U23kdM4pSV%mB z&1xd!aO(PBu`aRy$@DUo6h%z^C(}!8-8INXEaG!=rvi>=@L4JFfn^MZMMeA5cO0fu1O5xIPK=7&VqA1EK2N}TNk3vtX{3LU#R4Gl3aAYb zfgl24h*QCe+K=;|dC@mp-Er_-3mi)T0K#`$uKTTtAi*`NgvJfnEYEAjC0J{)pn3lj z^sOTbMxp?K4ge8^>xGG%f&ptN$0$9*e524-9+xDl{?c25w5VxLZywJ>0eb|L#Gze~ zY3IAqR0qO4G+S{6<_u$QLYElkf1+U65@k-*U-HO!5KFp+1=Z>(ETy`Q^IOWPFl3Dg zoZvQJ(Zzt1vz%4TeCc|Npjxo|zWi#GtwhvActAiE3t~?;1n(OYadDvWCmKVt8$CGox$SPtn?kclTJ5s4UGux0}m`TlZw^V09^WtjFq~=P@|Dox1ZDp6k8t*lf4im1 zE;};4I(WhnP!mw8JEMp&Y|F`|S~#eykFIYWz$l+yD3*54Yl7x6^%X7lDbDW-7x`gh z!a-9TuSJ}wqa30_#fbWL)~~XfL+(7`QnG?PPPvLR!7N(ZDN~x*6ggVZ7o`j>D8~RL zrWw#iK2?OzZAQ~AMD5pfhHJ!Zkl`UQugBe_{@HG;FoVvQE3}*6To33ons!kU7smy^ zIm$Wd6}ILkA;?Dcd7nw}r|`f>+dIfoGyC@tR*#slu;N!ZINxEFY@F_Uh*j)>L!}sa zl$-?5&fxj3(@TS?8h*MHAo15Z>z3XbP-Q|Fq>~%f6=z78H`*$51@~aeevRp(|%V^0n^@YfZx$FEOMb^!LLokNy%Fm@^3QeuTg2B17EkJc1>v!y-^pSUV)`nHvpA zOJH%Oh#iD7;CuX`*XFX3LU^0<=Mejo(?8lG4b^D|^SY4N!+vm#%Q{H^b>{fH%0q$R z5;6&_++Oq(>swi;wCQLa3OYBq#0%36AU!&@W{!v8zFU2tMPx~Mwa})+jEh$gXVXEq z%;Cs=9(m>(Z|SAZbtAHLfaWQ);Mvz;%Dw#ujxq50i+su`DARoIH~bHWp;Q7O4|dZ& z{w9l!f2(LJi8@!Ko!!#PVd~vyRV#oalyr1`SIM(`e*$Irv7g+%$=PrnQB5H_iNAV) z)*XVIMStxYzo{)oQ&@le%he@kKxb~5|7k)8g#l?LMfK??&?jD~3B3u1)MgS^%M4DK z8W+G{t=>ZyMJ*tr!)FNrj2HL!H?L*I&B89IeLR3KA&In(rtpZ@i|4f933a!wFX7-@ zC^l;PPQ8ZX26cJqMDanqf_XXS)EDp5+^YvTT*SV&i&r!#)5ftq?Wd|+dw$7RDeY&p zEqOdaEnG{r!(a3leDfn1-ebA>*^rRyWCPWGve8^Z*s&KBGwq71#T(p;RhW>vC-;H1 z($l)Wgd=onzs+(;J z&dVKp8pX`yXp!`@%aMt$AW+(ynKsXWR|lf{@&QWef$VeXDhCH4@d|ySI?#ll)jST%VTmt+g0xsJ-%HfnU_B;)$7`o3b~tG>VvJ!*GerYc z0o2kxPU@yp1>se@NqY_jFVql?TSRV4&3G0~kmU=E(0B z4jYk{UQ1%}o|!(Fg`A9R?3*=UafF>4V?mP>=FE2{++l{44(TGrNC-DP#S~qbSmWL z(`!QR18u(nK7FZ9V52A4E;}^iNySn~GBO~Vp-nP!sz^wCFK}yS!3JeHg(8>?1&=1^ zN!8F~%v7miY>ul@58DQro=g2{*5i87%y~}pjpB1Z2DVLcpsI}|qtBh#a~)Frg+%Cx zr4MB&V*;UG8Yl7flZ39CGz`S1QiVGt|8$Eh6xnX30S-%-><>;4;wLovQ{yJwPOiMQ zE2l9zyk3y%8K1O(Gx=32OM6XJ?;!0{UWn&%b#^S{Ek~_{M54^s7Q_VDGqnbH>a2^b z)_@CBvUnq_Otc_gw;gQbz#3IrRQ~@o5MIy#jMP1NYsjCWyO^0!PGQ66UZS!(+0NI`tKC~*Erf>QQ4X3ZuhYiDs}Kkc30eDY zHy(E}vXLOdKF&;ezX}1A7RQ(XP@-MomkAw*0rN5!+_wn^C}l+_UrqKXkYHIi2DY{a zgT3uXKS!?xb&T4d&pXn^h6UOK}~bJw22_|I#QvNlw&tTdMLM#t(jSfCeUB9r>!+m|n3 zG19V9DxpHk>pvc!Pd!_S4J^f8#WfPcEwcJ^maQ!Y^HBz{zc1ht*FAH+46p>dXxA(x zOaBG7NN?daD&CN4Y~zM2#~tLH)u=x3OvL|@-fAMqjhvSV0}iTj>MzMF(OrMi&)L1x zN;%4uDW%6}27IYu?|hCdUd3i|pC${jKap4ap;$A6#WQNK9*mJPC8|_7M$q@1_>Lgf zob{S~qXj{?&3LT&l7uneA@tbt>bMdA*%=4$=I#ZDeza=HNB2$INANFur^*FpNIj9) zAcubx@8BtUd>XcLb}22tum3-}fHCe(5wRaSiUP|jkfcdT+@kP_0L4iF<7d8|@TZ~L z_qsSo67bAS`zLuG1USi*U0lwqHjv)ovFvIwJKNHCkUV-kdTd=$OLg=aQ)ZOV)mC~0 z-Aq39LW6YEsj%+#r+*lY=0_uOqIK%i(nH?4^--_#Gatxu{o>69N5}s3-f#(?ZM^f| z)_ph`V&4UGZ)7cf`gyoIUv&j-h;q5N`UKxuKb(EF;R_Ns5<}`_O$K9pJs?g{_UZGf zSr+^1rMc<9MnC>Qo;TP=-~-M#LprKC80>V+o{xs?{KTV$}yV75E;i z5Z!Z`kI#)J#y7}4#6no>HwtA5P#SEr*nELf*)r~MkEEm|FzfIdI4u#(zFv*JJk*Hw z(be4t3#SW~bY=+nye_xFnmoNd3-p)&setX=W>8>43PokVHf{`9g2DRg#&J4M*Po@8tSeq&0wiB)36gf4}|v|Hc^lYCk*MObZoB{eSnK(z%P&B|JP zjtt_jMjZ|n`9c->HpxbthZ9$EuVh*dLlRh}42p=?DC#9hLRgSp#)Ld+gC6=I)^`Hw zvS1hh6Lk<0MK3LbWo#wN@zs~LOA~LjBeSIxkRMQaSS*&Bb?2eT?>1|6gV!iS%&0hs zvLf;&YhM;gS&a`(nq{RR|7=NhL_Vd7gi}3Rd@sTY6kQY_o<3YjC%=>)|@$BTcalbeJc7k5SY3%%5+bCe>`Q zXL8RJOzwQyGva9e{rM3F_BfI27&R>WR1qDK7URxEFaxi@6{!H0NkMC?k(`X?ON^|Pz^=;{s@fBC<6|-@3%wDv~z0@NDWZ*rC`@<8Z zbPGy$>PXcbev;R0m;)&6K`o|bq%z#%&il|Bvt6Ug)KW|giY-|kA1sA zA)`MTMmbaep|l;*E-0obZu1T?X{}gPB|wP<+tJt1o%;>1Bo0gf%exi7-F~k5 zrv}BA8MsT?LpSmCpf}OSNS%b@mOK1Us~&r;0ICijhQs=Nlz$S8v{rN9s}3fksQu4p z0yqAUs7qK7b02`Qe)?QwoBsYXZW1U%L&sx=t+JfZaPS-UqztwTV7hxD<|-SHLJnTx z?+Tiv@bLGUAiv1yIQg-Q;%)NH{xI#52$%(hp|oqK^kl2*s9Xz>s%w3*R3dH4@zBx* z6~EMVqACt?6PMtq<7z{o#h%7?bNzJs+s`V-?2Jw9h@cRk%8pLWBhkPYxxdx)5;q^u zkqP!=h({HbtWv21aCiK|h_v`EHTS~^{4#*jNloeLRw3dUNq`)vEzdg>%i65XCPcm#n#r+}Z7*O6Z=P%Dh5#%W6bPZ*L;Cz~BY7h9s5HX5 zUWfBJFUBsYDfef#0&NV}PESW7pMD;!f`gd&GQp5U2kautLJ_r#Y$K@T)OtxP8?KFs z_;noH1<684J#hN%2<>8#kV2}-3))edQt5~`L^|~NOb?sx6t8CO3 zihd$jKA!!*`b(_yoxPu@_#1P4+^J0~vxEWW1d#2{s#7hzKGxp-&_6JExLl?iRut&RP zm3qd1kzP{#EC%FJ?>CFP_o|g>7e4A z1)RFq4<8Q=ao4s;4&ebV2hIHXh}$sO&*s=WYS72zP$yzo8$=4POSqv|R~ly+4?Zw74EyqyB#*deTW|cSQVd;fQgI=e*L<`rHccfsrEzNJ zD16Ng6WC|J$m@+GH4PYI>{L|_)T9Ah#xjWDN4I~hNUXk=vkhCLHOChvrtg9jHW`O4 zNavAQ7~B$W>eU@04xBz6gGQM7L|w6Gr!YTNg-gp^J0qE;n`sOJ&tib<5<;P|_^>C@ zyjS_kinOVe(#sKN9;;!{d+z%N6>9R9OP}-8>jhuM(K`G;E}!dwJ-|HQSRpH2g(|O~KD$1@7aat6G1UFEc7LAc zO1!@Lgoqx_rB&6}&ess;b$vO=IKDQ>sF9->goq@ngTNAJJ{g4)IzTy;7W#{x0{AkE zs`SLu*#KN1BTf8tQMp>;nhgn;Rb{bK^Ak?1aTdzw;k%EUF*2PLF@o8wHATz!wWGjE zJnQ{Qg`5Q#`rLf<;RbP;N5vm~!lTaVSNJp=JM;=?IpMhv%CzR~<*1u9d4kM;xd7&y zmVLE|!<8N`57p5<6nY1WU0|-KN5MZ}hyPCZ`rV>Q4i&^4dPvii#VA=ugK+DH`9Z~( zt7e#HA>Cwy7V+NG4htO<8i=uT4E&vjg@ilFOS=W8$MLTeIS8)(jHLfPzdwpR$O4Ltk_>2M}kC7 z@RJPFQ%=oqd&~~j_&uO-LoJp<(kgO1H>$;&27ZYuHYQS&_?p{dZ;;+=RccrM666N| z68})2M1?8RY_P+I5vbB4J^JGS8`;v#&y{C4B|xpOIQmfz&0fbc$X2nU4U$Eh z*y=;H6M51^;Xw6w-g#ARqS zGNWAdMyt8Mpl~X-^_wLw6~K&rg`LyH&N5W!c+s=K$3^u>l;=j;EJ?2Er?-;K%xV+uRh5*KsHLqMahF zw5_{$GyNO>%olyY73)@=bj&trkH}ngu_CiU&u=J<1nJN{Gv_HAL`$4@A1z%x))`tSG<%5mR z$Q2*5>q+17tTLITD{q5AwPq8P(d>=eu@UBjxgcl+DvO$APJ2-*FuNIcIIb$nlWoam z!mJIn>16Mzx&(VLC5nx zxBtIq=pzn1-hImbAN%lsO~V%<#H#Eqg|Hx>)6aiJWMWUsoLX6UpAEOj6=6v7wTodx z|9r#trxre-tH@Hs;;U-PXoVO%gdMz^K~5+dycXh%n++UV2Po%a`|e^sjxg+C+X zL!Q+NF9}c_-V&a6<|`HCa`MXZz%D9kTmI3^&49F5lbFjOtDA@cj0m`UF?|&G%PA#bCB06O+gdUHND0`@#3A!*Y zFe2AndHL2~C_AHt-CTsZ>MWJOcr=cIZSD*Ujb)&}Kj-ynTX8>-rcm_K)VuOT=cfIh zX>2IHeF92=#W08BlNv@$2}(tvMO@Zyq-4|NQk{*d>eXKd;a-Ps!`1^yZIYl09R?WZ z?-i!`XQAw~*UYU*8#;^c^0RK`!t{ppHp&m?2BDEP{?@%eWVPvge#=>tY!I5}Z|P@9 zDFo)&jf`lrNveI8N@MCMkyXL^T3Ir)UtZ(5T^cVM(CCCg>l^nRH`=haNrxMnRS{Wu z#Qn6!9lPY`En-VIH-LNinsn=%veoj+S1#Ob4@+s zbUmgh-y9W`Sj2;=uuOiKIwp5IshElaMG8U8MlywzvOnW-ZP;8W?RyKiK$O8|HhS66 z!ZSMZ6{+{c>l_Q`fCxp4cE!X2PCLY`a2SBW_P7lw%+IA)dvTP|&L_7HKO-vj{l(`! z|1rwv5sF{tk@l3-1AF`&YkVzA;~yRPZ${&=+O8ZUpkksD%HE7xm_F!P@hsr{sO%Gl|r4Fq>Fj1yL5HVp0J?Hzu7UMt%41UgO0#giP5B7|JqH@7vx66kQ~ zcdRQBu3u!ev(=7zUGqWK@#9DQjIw;*ic_Zdzk?E<5C7rOHquPeETcdE1qIy+AAuv; z2fm&msnJ?5$%N(Pi8haeE`>{tzE>$#%cqa%P7Pj=#vj*8z}AfD%@qb*|AGye#S3MC z%Z8?p&*(U+ykecC5Y0v&sDqL=-aB+g-BwLSLO5iQU3Yf<>gw$z2}NVsw2|Ybk#FC{ z^whTHz}25Tlfht;s}Z3Fv{4GR%e>fXHrZUK%h(H0SH3g751YXgPtv%HNjtH|tZMp} z*Ws7@y>G!2=I9vAaF8!b1Vn1-jFH}@>4YMnrPb5ZvEZ^t0b6bI(7NiBN@`%R#79zwE>B^$S zVLD@W1U>ep!5V_H%;2fnl)Kn*rjzwtH?dW!EE$z8E0dBj1D7zwHC`=`arK#5C*Xf;2eZgG!_94nq4FWSq09A}HIId!eAVwzXBM(8~Dn1eQR&Yy|j`WBNp z^oazR6Cc)G?z@O2TyH$e^dHiu?Ob0ht|vOki)tEudhPDqa&`6?(6^hgn)E?fCU~qa zFj>YiLFus!iGn|Ckbd~4@j~K&0#JCe$n^LN)}x^CQ+Qx`F@5%Q+2a{B0Ppo6ybXAe z+x^8L>^02+sL}3Mp{@cvPNYHQHA>f$uc+Nv4**Nr_k%B2xh&;63luh3qU2*@Hi_qE zDv5}R(t=tgOl~_KyS^DGAi7o3bY5e7>gedOe`GXzR=AuGDCyir!q6JNfc(4a*y@9k zsxUOCl72Bh16b8h(HLM4IlAoU*2~5BN1OH~QLTn~Y|+ z-V5Dzj$u7UEZ|e}`kc)to=7wzEJF#^4O;E9LTuUYXA=@!2{)3dfN;K{qVM8Xraa$6 zXeOX1NIfacpAiU<{VI#IO8p^XI+NfE#GxPhLzP$-^MjvBaGX(#Ttn*50v|`+^L<2A z3wKnO4LcKbUj zb}~R&%bP*{dT5fbd*aXK{+f@8&ioI0=~vhPjIoc~mlxs_;Vj@@UT#lZ@eSrRzTY=@^z6E$Vk)@O0N< z6Y%!3$gJYm`18xdm-s%?UCHoJI10AhX;%#yeM7jC6Sq`L(K$lu>!T6WvDe$Qq^Lt8 zcWK9Ebl?F-7?uKfg+)fcRT!Do>-5jcu@7O0b(hfn%R2O#7JtN&C^-= zF@*%jo0Nb}w4bA?Q)I=j$u$Wr)xBF%ub$=Et(?&MPYE2(3#O`DG5#tHXeq6jYWtTJ zSHxHOY{rNO0&IGhYR;@Li%2sU#y*dUZ_H&frU!9(SE#S6&I_UhZa)H37IJe9m-hJr zKyg2U;l^yqxhaDibp>q0tc%rfmCiH-wJYV9R7}Q(^%u@)l9L;N>srKl~r=?9z8Aq3^g1%XJruk3qdO+eQA2*}1>Gd>QcAEs}VsoYSeQ0>6)Vp6F8U z>c77=?jJlej^Ca-UvIqz0bp7JTGREQBri~f=&;;QUOZ=X&L(o1)-&6gu;1ra84Aa< z1U&Ua-M)H{jd}={w|iJzENv&+Bif0qBBHus$z~U0$e%#dyQ!jEv6BeotE$3F;!Gx& z1N@`~AJo^9hm!)8Ez9ermJv0r%D2U@wa1K|&Uf)|zlY!BYek#KJSLd)TXOZN3X)$t zrX=9{@lvye@pGpswk=L8Fd!v1KCMvye1e!-v@;RqP>3s)^$Tgn zE}ED7(3l?C@@5f|-|2Rj0rPSI1)~(qg*9E#YFYjNGQ^sf&}6blU+Sa)n6*W+K@t@+ zzt9U9XF2K;Hj``@Jo%CF_PK1D=hle7lF!h=^k!F*tu_b-P-hV<1~P8XkJln?`p%o* zBz(SY6%FxrK#dMX?xZnoRhYv7oTR+Ewyj@2i(W_&)h*6&GfP|U3ZhUmqI|)%aA?ZU zLX!R)q)%3te>K4`GN*}`q%nJlBrEgfKF;xcgl}G-HGtcna~4TD;gcF2ZBlGLD^fca z?vm|as)787bYugG=x&Z`pO^U<+|fH;DRd@bAmVRtINwJ0&ZRq+?IVNwn3w(PvdHC2 zZc@+T&=Ie}%Xyc8pU=LK_%o66nFlNJ_x@!>bSu%I_oE$!@xe)f*|R2nC+}RCZrA7U zQwTLCdVk(|p{B|#3Y+A9ft_TL*$(e!KE@X-tXoZ|RsHVjiRZDKBSUo-eDWVu_5oO) zU)B?OGQ=N`VTxWkydbrphJ;%FKt!Fz!Md4gVQCU@d!F}OVzyj-HcK_#b&Ev0hmABK8ai0eph1JX26qe4 zxVuAecb6bRf(7@+-5t`nYtZ1@xVz`%J!j^unLn^U?q}6qS5;-6BTw%nUMkX#Wz~K` z$LK`JTj_8Wh1>%)Q;J|Qul8U3)eu(*gGb~1ehU3!@bwWB*wK9>F)DQT6W}?Zap0W` zdH;CH^oh2!bz>E{7!^beAhRUe6G6%~f+H3e>E>p|l!rrtcjz%=a!si6hADLSUzR4P z;HCW}=|-0}%*Z3j`T#O)H1uuLau`R}R?p$YSl;l5^!=*nR1D1DZ7mA(*rQ!Gkq_)h zTkFriLdTE0-k(b9Qp%k{D{)^)9A@yy?j1vd zD?OM6*2ZRi)5~f?9+e9>!GD_p;>i5uxZjD{&pkU$x5EFFKG? z?_P^_A=Dd0K$$d7p%PsmLV?=`q6d!D2S&`0)%MR^dk{>J~4a`$L|tDOrq2y(K=9UIg`{ZsF|eC9_;;n>Wt zytT&5PKnFdng>=fu`KIKlq}p7T30CC?Xo*oC*!C3Sq9Sy9r`-zAoB!;<;iN)OZ9&V z4Kj=}xPf36xqu`sBkoXQZ^cxyF_7g?xK&NjF10V6eSBlj;& zi;LD;iuR+Jv-c+U+UFNTd|FKq&PzJ{&b1!aWbTsf1a%=WWREaKXD@Vw@9?8xe$|D6 zReK9roqtB;6Smg*yLfGoVB0?`TzpDE-d*%!;VZ(KbSGwENIb7zwyz#txkHJj4HnU%$Fo`sM%FO~5S4DF|0OL>f`KU&c zS~`C{Nf^)PrQNy-N9}S;Tmg=E#M?#MO`4<;#v|+%!E0z>n1neNYNmPdyND zK{xnNz>A~1yK(K|JJuB?SZsb^=H5GatlMlw&k0Y^TZmFb?&}~JVBwhEum}J14)%!V zkgq)T(`ZpC#2m<0>>q(U|9~R(>@tXobPqRsh95W4@ygu5dMMVJGCpA>vd$BYnB+*u zxfps{SHCRo+kI^c$gcNepw3k&jg1`=!zmbD=a~Yful_{@UZ{ehK_ugK3~Cy5PhX!v z;Gt+dJFM}BY;|*+rmf7QyQ+^}&AEZ0Iy^}p4BtmoTO+Tzrzpjc#(wwGk^tM<@c%f3 z_G&KrbUyxlZ_iBs)@Sslc75~rg$E}=TLr5H*s3?H$iO}2-C+nSOL1YSKgAO+@mms) zCaj7@ctzN%Jhyoq*L&#vq~u@H5)@Xblb3e~Lcd2;^ENm`Qc+(%H(q-?%He50!`_@l zG3|@~#Mq55Q2i`!4f}#J5TlR4a|kKaGU3}}qWi!omfSmM5EdBpZsuL>C?zg+^OQpm z@mSF~?yIK71D|^n*=QWt!ou;}R~AZWcalxSNtk$t)F+3HK@PEd56Do%S^y2^E~guE zTEeRxz|RyS`3m)W47tUh3NVKZq!|w)VS*X$9y1J#xb}x{fT)o|DTHy_E~|l1Thf5H z5L1%&Nr6KV83d?CytGOcxiz_J-UD}bLC2BzpjVT_ARn!3y0Z;B?)uDT$kn65X9US_ z&@c;zz2_doFD<9w9&I9dPa{kHxm$_A;bpayoR6v`==-NyT$OTKH5+jurfWzkUF0X`ZDz?sS z1056Gph?hd@RSTHDxFF)MO7?y~29GIraE04FGIj<7C;VQEK<6O4*p;4E{NW%0vdY5AZ?A zad2EG&qY0Y{r)_)AA`&6pR~pql!R9>sRtCW^j&SEz__pCh~b`BUm;c=6WO^mySn(1lzgXo@!u}+-*fCRs_K-EQUz}0D0`yT>*v`517e|I1I z1k)Sx@~4~Zdk`+@*#GN;YLLBS z*N-CF8-LTGnIG&KT!`M7$S@8vWUxx{)$nz$AK!`g0wLxw-!wfXE9bO`UjV8xKhMF( znYVr765n#@%LF~W4ugtk}h#oVi5e5v07t3%Y}Q`XGjTzsWE zw#+pve;)CaidN;huq}cLiG9339&{0l7i<6PGD!X(iwm*$u;4!=;s1TMjOgI-)O5;r z$BXtWn;wqv3~U&&2PsmEYDSZBQRxhJgf5DW?!JpdF8YDsMQ@;_+*K`;WLs~@WLOfa z`Jr0{1^%^u!Hx-54aYaoIWZ#;2MgbhTUbTb+?vj-ehU6jV?nsW&J0qaG2d{1h8%1$ z#~nTHbG?2q(4d9m=1<9PJE$0pK*pecR9c~41(TOjM%RKB-pJUn7^_vs zyfqc5$#@9r#1a#``ljZwAX7n>@a6|IdJ|pFpuN7nYR<_c>Iwb9@9syI2lv%)`HQ?{ zCc_R_%;_Q9>Yp2#<=iX$4nkYq%jIQ#D@9wIPj#cJ1T{1XzEnG=vpKS7HJaqT)~|K= zWLD8V*tg!_rUIZ03WdKxBvbZndx|KypA2Ft(i;ah=zmIy%Tlq*yI1`!XMyMmQr#mf z9LG1>|EWp-4gSbr&n&YNMwp*QeAPTsLl*k8xV7@LVV5E^y!{l|*XfuqGUi!}SR>q? z_8;}Zp>(E){=M>Je!X1Jo|~NoR8~RVP+%i1y&b?0K?MtGAeCojPySg%NEL?Ta-vT` zJA+gtqHz(lX{0Ti&cAC4d{6!!Pad8-)o44>5~S_??v-fuD$Namlqc0oP%E8h8_w9t zhf+ge&d#dqz`6UwbrqwkE~#F+RDbrz@AOOUiT6$#O;QQ_q~P|h|6hO9@IyX9=^=m*6eNRy!rz?uVn{wS`+ThF?EYGcCxj47t1B&l+5}{5{{_J7j$B zu5?ZvBIwo8t`$mni#w#=(PE#)wneAtv2{m#-eS3iM(=XKo#XvCerc5&M$UVPE?n_r zCH{?zA8$@^;})eaI$_Pg3MKdvH^ox#DcaYmM}Dw3BcR@dZ37w@ft!x!I+yx+N_(Xh ze~PjiSEEo#1>05!%hQg*Pvrz1A-XiTA>II}l1PS1wo7TXgf7=%U8E8KjGjx6A}4#| z;-gLC3xb08w5vn|l{&58<5xmd8-GkyKG_#?c@F+c;R_*2F%H%jAY+`p@g7y&NQiWr z$%%LLjL#ytD)Fn1{P`uvRncu^Y$TNU>%=)0%S%Hx?A0r6=$SvlLocUlC%}v0BwLFG zt~NWmG2A79kZouQV=rh8!-zC<%aZA~x}>$zw@=?`L4Or$qK}aYTXVfWtPx4X^P!vL zX{Ej8*&z@{AOe|_STa0l3>$3~E5s7#o^ffiP$tmZV?{IUgLa8G)yYE|&s4&GnC@lz z^z;SDS(NGRdrS%QoA;FvnrV_tYX!Dj&NgiVl_&5E5r(p85HkFr$bx?+M?pue0v46i zsk`1KW8ee*?hZhqwOyCA{sfm1iu!DCg=_R9ahtUeJi$NYbX^}#yUsJWT6|;Lh-?!E z$0$;Tk{q1E8_PUY;ad2rDLP#HLIayXSm8L06nvQlYK##DW33tTpL>~Cx-7V`9d7ak z5uJ)!ng8+wya3XC+n<*O{a#jAHx1o>NKJniHfj~-lRfv_i#7y)LCvwZ9Dj~=-={D* zIZT}AudK7ecJjy)FsjLMl8u&H_*fyg&m`8_6NKRs-NZNr?2%Ye;PE=UrK!Cq#IK-S z{uVmHWtt1U`TWCmN;L+k@O^=}%xu6}G&ZPOXZ`(>738ZIoT>#O zjgv6w;e#JX_JWnLFHKAs*VU`fU)*Sk)d55D4|jwsf@~E2cNR>5M6!~1a_4dX&!qa# zdvwu(?c_c8KUI|xU9fJ9NAw4LZa)1=w?%}faBiD;It6|8Ou4Y|ijTMim4_K1lyJ)= zQ_s%dK2!T}(WSWQnoM^Kex|sv-Z)qt%e5O~%9SoZeVpyz?w>OIOD&v`;M}fDAdIp? z0RL}*`jh!@g*MbAc{#idrk2{M87{I+%z{6dH&OX%$wl)jxh}OF$j>a+N(*1ZVVe|x zsS&zt>8+p4v@_{$>AW#lu$jW*z{Ggf(^nt7Wf`fWVj;MT$;PHvmloCuNcT0@>RtyK z8zR^^-^J+@tiwLclX7fEbPlT*sjR7r=i9|G(3SJ_CAJ;uGfN;@AH^ZuI&M~&%G(yA ztYW4*#A3qAAMD{V{M=yFg5C_j+WJ8FjXuk4otjqodP_*h2kJTHxu17waoS}4m)}yF zIfI+>RvUHn3OW@Gd%#TAyO4@V?{QrXyA{TS6h#rGPVkp=Mw5}+a(iViQPabg8HS7q zj^*g2pSw~#IE;F~(bo#Xu5gK=w~?YO(#Uh;4?wr33u`M+tB>J6{3Pv* zwN3LgM>@3@OrKN14K9{TolzK-sxIpDhg)?z;|g38oNf9A?=WSF;KT8SJ(5LWw42?r zyaK7S+kbvHv8C^EC9hO{t4MsZrOW?X*zub*O$r#dK%Qx=_|w5JO>QU`^E8ADJ%a(K zF$itiavPKh@k=s>_OQn1TTF-Yloi;v0LOnqd#bLS`$C_CT-cxe@*XntAI3BPSm9}% zoZnyWXx$Z0Z(Gm4Jj`w=pVTbj9~QSk+hYX^Ee)DJJ)Cd+osL zBJ|?6u^LDm1%r3|Q{TUqbykC*u7dm8GRCbBSPvg@9s4+u{U0~3Ooicqpff^FF?NSv zc9yt5gwSZzHo#F_4uKT)VlazO{J`?e@fPN zOk*rdjfYT;b2VxAgM5Gr&^ePp4J<~?ehYsjx3@8E>Rh2UUjzF?j!|ey{+h>d4okm4 zM1MPSdj8dfuv|#+sNg2OwLr8PZYx|DokCtWJ1{bZ);uZ;B)RrMhPvW*Zdn%J|87E* zczg%02vFvsEoH56kaZFVGH~KUv?8<;IH8CCy=7=S@Ar7qMo96O59J;%#dPXEZURrP ztbPzn6fQ3)<#mv~9)2!HD&?uY!cF#uAD+krC|1JEstBFtb-S+#>Jb#1zkJh>12T^`v;Bgo1S>H9aJwKOxRqFJgCJTq# zqF0GueN8s}8k5`O?izNxqIV@wEnFX%aQ1d$yAX)Ld~742?XDn2DPgNXro`LR?l8+= zIzwkRs{YT94WSd*8$U%g%XSh|ey)4+%GWQ^6n&(*WM)$4S;44c6?C;LDW zfmL+L;+UVzqRkGkIDbsTK(zH6Pb+~>8Y7y%WAOFLH0`AG90yqBsui^BV#9yt#btP+ zN13jXsF!26aN8Kj`jcwe7lhRwupd?^eNj{Dmli8KSTV=zN?(sR-q7$5l}=9G#~Qx>8g?T?y?E<_qSZ)oYrRYST_6Ig^zH+1DQnuN$_}C;@)~ma#5nx zebP@!3R#Xk7}}*H)C?fJ>dv~TkU8I5nlr4XUTou`ZI%=*Nv|)sqC!z#EsBj$_cdG_ zp$0q0B~gYXBB?k#YW5QDN7;BnIYpY|>J>N0u)Eg4tSgQX_O{i?V$&&(p^Kh(n-;4Z z)B5KcS07vNwciF6bRwk5qvqCnuH=jSI6el_TZI(imB}kk=Ed@ftz&9@9UT&~vS(UE zvorqL?Pus4vdhKiSJd^Wj5f_#sP`1s#O`^U)ljLLF*V3zbzySOIo;uK5ks%nvA*Q7 z9sL?auRc*yda=$}d97rv)#LM3Fq!`%~z`WM4t zDacY!*_xtvU2vi?0I59zT-6}n_V+Uu*nfOEd)klCM2DHXF*9gzg6Kw!zg~w%^IViQ z5#5Vf0@LaUQU?y#h2qk9+|g)x>w1!NeciGkPM$_28#4GO)5&>xI`$#4O~5(2p%;D1zSMzEzo&XZPArzwJSuf2jB7hxw(ZTI&Q+uQB`pWp89hn*^=7y zep2}oy>aL$f0cZ7?$#^3X%*fzE1Sk7+>kC@~m{QGII21r!odCdIUTNZ)W2mKymW1KX-@Y zd7n(+98-+e=1kT+#!p!`RHGQVNrNnKPr+IMT3-t>$0*|Kc2vKzv}Te?;Gf_JD4 zjT%V;0Z9-%lC%oRcbrev)y&LGj>)eC09CD|!^Z2^5>~n%#Gt6DiI{+kyN;qdiUbqW;l_rvk)rTCx=^XhLz6e3o zq~-Q`Nf|gw1;-^BdVk&T-L&v_((4|C``o!blkRU}_21%s%vGrqMAgWVCS3;T?IRxe z7~+1|JwK_BY3~pR_4rU3P%99Qm`WiZU%9TSa#%i>9kBQ&oA8f*Qua(#(*9l8@*5q< zr@Qt3>zvUT829Q%tBS3rHuht_d7w#*5YN5Ji!C3+1thv%dwCl19e{-4_!K{Y#RPo( z@wos113iC6_BjAD`y;2@_GrD%@Lzw56I@}H4$2Gp$mrG7h1!h5FE1T*rMnX^_Nb=` zAeoV&T1XQ;G#@3Vk@Ajt`Q+dYQk_w3OvMw9HINP`|K4Tvi*zU45h!YD^p~TH^32wC zAi#3QnfO6G_*KEF&tv|FVUU5<5?W=P@91NG&+w&mHfCU@Stgb!-W5lJeJTf>5c74+ zO{|VZ;e6tCkiUPwYuOz`?={?3`#=E152;9a!FpG4NG4N}pfBbFsdmD*YT46{Q6};# zON$UDVzupE7Nd6r6h-t$|!HyWmE zlzT0Cvze1pMkUt)ys$v>2Io%BfcQatx&$L6TE6d&l2_9z6W&wzPOA5~*S-|0YD zqMd<5KW6A-l%xwDC}eTY8c9j#d&31fru*P_PI>E}yAM(yEf4oMmqF&tq>RI@{U5S4 zpgjisH9|4Z$pr;^DEWyi!K8<-XnhPAE~i>VhFTkbWZNszj`?vdxPci*H_L7jz90`( zIPXiOmepZj68C0>M7}F4)?^(bhw|^=YFS#TFaC}lhK?m^-McIrye9rAHytQ>RS?gk z6dkZy%b{C?CdgvHY)AVUBv50j;@}4$R?6nAN?FO0s$ehdjo4R5>qqU4b>&OTx!)tu zUr&Exio(>RMElK=HhlNAtKKu@E!xdE0A>x#;QjP2Ygf<^Pbqouyu6Pc3ado3I?Rln z3O;A?9_3a2{KHROgI{>uYqNZ8Dd)5Y;)hMjfcPyNWYbI)EkssH!V%ppUv);72`xK#l*C7zNCn@1%jCy={ok0CnqY z-p?^FI{7N>E&|!YY_T}mfIM^GOaH!|?>KkNtl;@~lxUwIJ``4F*vN4=2_Kt9TPQk0 z(Ku6JRi?V)_E|^L+8X>y79zs196@K;#5+?ib}w^Q^GSw{bY~r{f*iMwwbkVHk(T=l zZB6xWZtb-3b2#+o)~!C0c|trO+2-wp-W`8$Q69?kT9lAdbE>*KoIQ>mz>ER1#wa@^ zXR!nyD8D)RcT^+3yJbo`6iqp2^e0#YcM@&}S40qrn|B>yrhW+V@I8L~HS-M`o&w|U z!#L54TIF*>?EaB*dZDkK;D@$ABFz~m`b19~Vj#rofU6qGOL&-v7 zD(f9x-IVo*DvGbi>Y8HK-%y0#8E^5~z@a1F zhh3I6>Dm<4S&=3LKZ!GosTZTrl(B7;8RORm$AYhyb_I>cgCZ(4z3yb@x2S?`aVE2d zrm=6Xob$wIxtrsx1`^j5X!gG(=Y-@_tC{Y`$v1b@Crdng!?FHb9yECFsQz~zl$<)$ zqoO5(rEhGYG4vIU{mKo}z7u+;jM84iM~P`?je4fDhdWuZyo9Gq^H8 zW06dToex{%5%?a3ijLXe)Ev6+Z1h!SbiTI6*qKingU&(TADDmYXU0DFdrg=S4OtK^ zsytD4)n@X5Y<8Rx=34c)cO_Nc9T132rHFAIHIQ&!xsa1tOh|-N91 ziyWvT@myMOlp)h&G8V~~GOK~|TVr%{&Tq}``kY$Gm@H{pS^Jd*3oN=v^disNl{tA3 z4VZDXE!Yduch7>!=y4`rHa_?9L9+k)M zMJ6s6Qba57Vm&hj%+mHZ-SWo~Vn#oD{79}Enm@$_2)mL^;XFq_2kLkliPkbVLQxbB zK$6KU*AGFdbh}!{!c$JP@==&hS8cHMq>z}{iX&FRDW}8ZtzWM9<}W0tN*j5xum2yo z`-SjUir|NSC;dOLJTq+Ls^E__sCub7?xhbGu>(I)iShia30xI;$E5LegOr#623agB zf0$JGS(KxgwXO0+hM|aO-rY9YzTDP(KL+_kle%Y9c=WvyaW`e7>5@&`rChAXbq!z$ zMI8u7cpdfI`7Dm@uFRG=TTc^?I6S+Q5vWS|%7a9yH(LwKt$WnE|tKpmg+Wc*KbH8=TJ*FDc>Jp7kZ#O?8wL1H(#+8={PI`H=fJ6a))|Abcf|#Su=K-T~|4N5%Om% zz~$CqY7SZ{{sv3R$jkNJE^uQK`G8&~G|lEZHwkGY(MqTK!K^WzF$RG?W2I2&U1okP zckt<$6S()I&=*h1inX{ohU1#RmU^KPdwvPMtG44_LHwWdCEx&r-|3V!l3I@okW$Yk zeptmAecMjcZkG^$n|qVMpfpN)1bJ`_q;E+Houg3J;!k(VkLs?h*g)KVaYT6Le8BiM zH@~K;FOFCU+7X)ntihuARA&zvei7X#o)A?a29#N$T?h|&rd8k`?GU-jV;07t8Vz6u ztlK+ExJFnU5x@wS=_?D;Qo96AvKy`T{8l5ZkuY!eyI#t?eP3zLb~VS(8Td8q4&RUZ zi~F7XMTsAS7Uh9va6y$cQz&9&xPDhWl5!$K9d^xh)cD#rl}r2P5x!KQdT&2#;lHPx zXPI|Ff{PQ6O9~AoC#N8P4=xy?xc}-Z(zJ9~1)dxf+3<=fcsU>h8E6Fl&G&~!*}2lx zEmhW#I@{T=_FuNUghKf^k1ps_(ToB0@w(NQWZ+w)*C9Gm<6p{TJ_n z>}88(eBYf@puLy$w!l~9qM-_IdbUCl~pV02#+FILUIJm2y zvPd=+0E%rRJqPmCpJ4?uLLaR1L=4)L@O>wTk14@ls~impP~kRYXfbIvi!CB3E~N;( zHPZdQQLIkIvzP8v04nIBr~HD$eU|s_iRPO7Q=Xe{`s4wC+-Winbl6C$I|91;8Kbm? zO{>tq)5k|oLgx#SLGYvQQtLY zlxE~VSUP@A)>%xMjEFoM8J?I*e%RsRw`|%Loe@#DS`j+!1qH|EmNZ9M-^Mb8{&lGI z<-RJ!$JzXjbqdBdpze4%jGAe)ti$6Sj6w_Yl_YY6gYukc?L)<5x!_Em`%$lR%nSo8 zgVI&%;T63QK8r52LynJ5wa2(P8qwrgjj7p~H_pE8xBke;ZQR#h3dLI-Z4WA!k-J>z z;oIbKXB)n&o8YvI&wZs$jDJUV&+Kw`69$BX%WUYT>E_yVy^rpt!qz=`4SfK`)YLed zxqozucw7O~DOfZc`?X0g5^he~V6er?pE827mKLo9_AEOL`LX%zHSXt7oZcz1Ns9C{ zjPW5DAKXpoG1cw0qP!%`O)A~KcQJH5d7q`1eryS#rCh@he~Ez}8ai@XfZ^cxN>0;V ze;7yN@n3vtJB-k;gwy99w)A7SX4$v`f_DDg4R^ltq9ZTpOdi@St{lnQ$m$aDe;Ve6 z%cBgOP{IsF%#{mZVXetr$!vkEY-!E9Z7YWrU9W|_;=0dTi@0I%RY^7J*T?B;t@L>$ z={$?ff|r@m6w~s`uS5Lrwzs2v_wdhl230Z?I{{))ZIiAfyd@6Lm0X0g6hJ!sZiRkR z{CiB9m9D_Q{`%+iQyr{E^g}5w)$VU)Z>fCC&JKa&`a3UqAU1c1-*cIZv)_YDShkE- z7v-K-utt@u#i-!j>xj1UJui{6@&8gX$^TI@)!&~G{y%Uh+wJM3bJxJ;0y*ySOnT2G z$@}cV!#J+rRcor>AUc~ooB@gzP4fLQz9S3|LSy`FuwHvIYC6sH%^(O>hH(EQ7!zES z!k~^T3Y0Crr0#65mdXH=;g^y!biZ65cvZSm6i{IftLkXj+Txk(*bym#AAZPjjd7a^ zpSsKO-KZfLU5u48!M@fleWfRj!kFiFDF@Cm9#{H&(>r+9Fn8%m^;T7%uQlCb9cBN2b@_B6?tm&nJL4RwZodKe+)?w~vY?*VPph7F5#w zT5cF18SRW@iFFE-dgEgWB<)(~xvp_g#9;0YCUH~G+gJLY?WSs{hX*=BpyY$c z)BJ$@%wTfPX@!!=%+mgy;Pmt>Dluv#J4!pErQ$8sV1i&|9GG34W{V55j;;!#Ec%+*sQxKL^PLBZHS2 zs}caef#geg)5>sy0}%yh4b6gG%#>3;NjK;YMi&=6qLuGk-_wb<{@a@f9##>Clmwj| zM>etpV{iy4;+yUJXmlI(b0VhbqfW8BJ#HYaVE9nXq{N|C@qS(VU~x^*{lGjm_+kYh zM~PeZa)#tP%(j5xyZRT);h*bhaEb)=RE3= z*WYi&s5Of8S$xQ%l7K4s!rh@bf5q_0O^GqoG@102Q)#v_p&IqZ9d>4zE!?4H1aK8& zJ_zsT_4OU|8a}H2*PIY(MjL}F)H&6mx!gH=VaRHu^aD(nu`!4>8L9mgcyw2M?L3}_^?{D3A!|7Z6liM2`osGGRXs?ag;i(xz`$N7q*>!sDemcw8 zWFxtoV4|#(s18F!!>3K`D;zoqEbVXO2^Hy;fk?}bCTKnSr~zu;vE1sG*lt2C?!QU8 zQ^!$>=&U2px8@?rN-dZMAu=1>?X=r)wD<`;AFrih$@w3}SmxszRPN^)#WA+46U1@v z7h}A}8K4I0FzCe!M*Sd(y+?lppZ0QhXVB0g$uhp-`s8^Z64Dv|33?jA-P+ak3y;dV z+O11)e>nTPs~!>Vm<%vi!92iU9dSIHZa3*q7^?CYrEw z6T;VLxdZfUL=o32d84NlP-k)|i}sh~X=<)|Wo8W!<*6ot!-ZLoUjN}!T&HQzre3!l zo6uGfew2ppwm}DVlPyDbR`JC!$z5o;ZYxt!54vK$A$L~@ji-Jdo`f^H$lZ^3Z7>V> zdEEatVGApl6B{b?7ftPknr`D@Rj4e>L>umV&UIA{E3+MsD}2Q76L^Qp630+a4^ClaHASzk5n)1hO=}TuekY zCEep<+XJm_W&eFsDpgK#V=q-w9f1A0h1R;Yak~&VA^NFZfhv_{wX-;@pB|}nr=(YEMiSNCJU_Y(QXQLcR^Qdz8Z{U2j$QYD=`KP+&ISeD~s9m1S3 z6eK#*Mt9bZ3+S3GsF!QXcRsarhO&<=Yy_+7A?p3^J5SL)bCotus=uLUwEx&Z;sst9 zT^eXi$Dj{t+8uj<}%^t>)~<}FiPCO)1TXO z6!D4c3>>WK;$`3gd)bGQbbQLiE`JAEPK<2|A?bd=(d9Zn(iIvy-#OW5N_)gB+Wi=o z1TNqLPx37Qh?11elAc14bgg5Yslz|wz&?JK?0b|H`@SM#KwEZ_aT)%E6jl^85$$%C zqcXF#9>vVD*Gi=);0b?svOhjqy9E{3jjNRTdl9;gDSGgcu}u4Z6WbBx*Cn50c@02f z)Bc;B=o)-k8h*TLaBMiblrSxhFB_JYWe6I4W$YI{98=%qr13ay%~LXeER)&QjRGeF zj=!6e4k5QHI74)xdox2HK;tq~BUKQ|0X=h$Zn`aQlYNIt1AQ=I6_#6cQKts>QLj>% zW4G|K>3cReVS&D@Xr8m*z5b7_l3zRP&>tRpPywwoK~I2FoR!A{0*zSwmDD;TS#V zRJ^rgXT=^0en@hc$&PZlSn>CQt`Quj9^?@=l!=YHQ_t>Gh9%{gR;dRH(6hNS{<{KXFy_k zCWO-<`W_Uq9BqiGgt9&%vSHY}9oKHEjy|pmK__^Dz?6sN~b-A#dO zM*CxZ%IPAF;?CGZPF*yepv|F(d$J7HAlK`m5&+rK;uJporZi(3vu0?B#H5(nUh3~w z{T}4R&S{y$zL&vsQFFb4%T2%D(l8^Y3@iPi6q4~~0;@VH5n=&HPQ$59v);#vhUwOT{WfX*%17gcP%Vtf5>L8*+y#?6sas-sQ9Gdc3Be-7x0OWiqAq0QRywM?GPlq0CaSAVUU{LSYz@{KdXa`lK~h>vz=9$f+o zKJN1UFH$=%wcAmyTSM-D>!KjkA0X7e8m8%Xsr2YH)yvukyyVLX-N`e!+wm1wC2fha z+Bq<|C~83o+S6j;d}zvHj1vm4C^jaPv)UjV7I)}3tNMM&Jt^8CYCnS)ub)1%mMM^T zKZo_NzMv*}YEU+KlV!cWjRo|D9$&w*oM1A9;c>zw11AF*6@_e2jr}vM!aJ`}b7X#> zaM57?v1KNJ$naKy&M0D8iyFM}$x0quvand1!al)$za_%5XjVmTL-s5mYsSw#-NnvMHHLd?pKg# zdGViL-;;!?gudZ-&Bo%GThH?x@xwgd@9N9%P583(kqCNmSGndaJKWzyl5y=VaYgMv zxf!;6~kXqT6w1pXgamr)6*fAsm1BvEcjJ9;mP@DBP zr=^z?k-wPtUdPPUaZuF=zC-S_``|TPKf8oQyy^bS?aqy+Tup6;=zRci?4;!%F7_li z1FwJ@ryE#C?oNiWQK?0L_RRq@kG&aMjp^u^u{SZ13GfJ!Kf5imEkav_wxH7|)u`#q z8$by9L4;cjQ}-wE-@ddi!EXwhpygG9e*67PJ~DneadZ!G4_-|)!U+zg zKcnHS`4q_Pq8{F1Nf2`(0H>0c(KxfIpBFqT zPZX}Q(D;&VmL7+q)>EW9+)FCLu-ns!dSHY5nWP{{OYFFT1d1^wOw-1>Y!*{%mK^f= z1VPS49 z2`e%#|CxD6MN?~&JMRKBb^9$?`*-dMYtepK7t?y1m)zjTYZCe|7ZaKbtK24skb=89 z8(%T{-B_lR%rio+LDd6dr>!h+<*{;*?=5m762ZPib`S+T3-8|Q5IEsaoO?Pg`9R=N z?q!s1FV}T_m+WZ)XAr)0{qvW#wGA^Ba5jLx5wLP0;Ey50O0eh0X~seV>^$mbRqL3- zh0|a%Y@))cU6}denG&Lr^j^CHM(To?^uY<=+?A}rMXX%D2(49&kW;i2RkXA&j~VX= zemksReDoE)Yx`f(sl|z1dM3&7mG76Gb^SG9l(mUuqn^gW_+p08e27_QN( zL@vi&D`tM&f7nIX`>P-v8_H1~^!Jrr!Lfv1di7RYLuWl%zdvJs9V*{~yAZ<^P(4IN z_&EHA?40Lw=yiu^zNqG%OTX%4qO;J}07k|)!IKq`k=%lQG+Ce>={cD-W02$?Re6R_ zkNAVrxPaqtw|CU*341Tp2h=1hbA6WysZ6b1?M1(;?F4cHU)E;1+nM#Rh<0a(0&U;M z0&!OrEq=EAPpQ;J`=3ma5c2Kif8XZfrJ|2UrSW(f_4E3<$f7$s4N6oacvC7>xNEcG zq>`!&G?}Im^40Nh9{Rz#pjgHLF*6)IUg)ZC0cHGwqF>v8+~e z&iXe^aD|^VG);@|*s93R=jG=#CJPyF0X?Ca<#I$}a#vKfP;$so37(I#9O*pjUTCws zVh)4ep__WN=o%EIN*v>N@~j@6^A1p#-@uES6=gu0Xa_A>Mi)POwV6HnxiCwAuR_k5 z?#;PU%9Ent+K-fkyO#CQ_c{Jn9f^BcA$bjpjF14IQvQcb1>ytdT^ZM!X zZ|?v->_}-SKk2?D;#2H5EobIqX0yTr;P_e!CR^}vwJU7h3*ACTOFt{gdUNEoqO~wJ z2j4y)9xJ5%c$y757*QsqXrb+&!el^1Wsk*+pwVpP=Q;2~5fXIss0OUPT=})VNcRFx z({Mm-(kwId6&~$Ln=O!A3Rm%#;5Tgd*%uB`VV{Ma7pmPG)Q%Y52D3amW>KQ<3?B&Y zVUfmynm$dsP8JWg6tPd*OfmAgrKmn?$a4L67l7W`3H(J|Z(DkY^RH^(v_Q~zw}Spc zowISgx_0NEUfy?Ahn!VK>QwnX>axN>1Z~K!pZQc)Q+3(*pL{*RxQohh`I=56!gTic ztb~A7tC2>nM;f|sXBth15!$jQVWFmWKcwaXuyb_~KEFrV=~Db!%bG@hjWSMotG_cV z{^+cMMi5JRwEz>YImqskc+-S^w_s-7vY&Ib1KAg3zjh3g%WzHd;=C7K+FnLWvMeYf z0IZ@PXCNngT0NSV{aA9A!b!DM#|1T3*Ce&09FT0Li~eK*mH@b0HtKkg9V=P6&;PI< zw>>^3v|2WP*JeK)j7wcpN$O>rYHTC`75$==NP3-)b%^u5*H@)C@{hGmg2@?tG!^3h zrA`>-qB3S|{!0QvZ=~3u%PNT43oxY9N*<@g$qo5wD_X*7o;N0RFDS-LJoc$7s}av@ zrdM_h>7l|SZ*8~>NR?@D$Po=K;L7}HKT~QuL?#8vo{G#|_LNerPvT=nG*oSVa*~GInz#H*IC}Ppg%0$mak)-J zt&i?u>fc&Wh?E88bfQaMP16`A=#Xnch2d79#R7<1=K-ndNBig=S%hWbZXD!i4dU#H z>J?+PJVR`dzH6tQn<&al1?vVzTV;!;O5WYLB`xnEvkeDWUj1YD!M4oM?@{vd$NE^u zocwa#?|V<+?+B`r@PdH4&xheI;MMoA2K&y?h?7HcTIJwQ@n-m>b6{- z)XxGjqTP6pv3ZbzIj{xKX=9_%<8*eYuxs<=6?T}A|FLm8C|myHUG&dByhhHL{>p`zW@P=SO=0e&{AWL#WLO+2`K3KjB$q08QfYzis8-JP1U>c`BDJ9Bv_vl;eCvW_OuuC~ zI6PIJNd@!rTrFcJ4~sV>yXbTP3}JFFc>nOI_J{jS>%)&7wl*2aar&y+>#J(uD4W!# zSmRez_BZ$P9T@EahOVcnf%aE1<5YlzcGV;|*SI-1It|dR}qF zTYon!nYkHRunS9+_>Z-`+Eb=Jn2j~G=|5GwUL}uPmoZ>{@zEF_R^ZOw`m)R za}c%(qbjC8J+F|mI>vGT`4v2gHM2Rt*GsJ3Ha?+F#~Tkgqd8kG!0>-hKLQm0Q+Y)6 zk1+oOzuS1XL~86rb96KAx~vo}Dtz+)*vf5J8eVFKgUDM}?r=4)u_TSK$7y^=Z`|8n ztTR>dpL*qT+|O7U`- z;hj6&%H+>e$ezhQn2Yc1(*W^n!U`=lrg8&(DFzTkA83<0TCHQ5Ntqy#I#l{-XQ`|t!|y(hnz#3mf?t&i`G>AXMx6LP+)5hI#AmF`PB3)|@9`ve!aBLonfxB7mf^vA{K z*djU$Za`ia)%F-}H{(i4jbS63&95_?Op9Eutf)E?rPU8Li&r$A)t902#ZY?R*U~%7 z^XX4*|Al?vu}~S4<9&XLK-}2(nBVN}UCpMvaD)EhzNys5W{HHi#a^;ROE&CHu!db% zP&B9VPsJp^lZr98JhCT)WGTMam(W|BIBtupxe@Xg#e%1u@5{W))Ppb$1GBvmy~(j( z-(*R`bt628%BOHwNRS?rv)CM8iwESPz3R* zj{(RN)%J-!J>n2xmKkmE`j8~Czwux*`avgmW&>kp6bOa(TF6(Ua#Pbk+j zM8@e=rq%0maGRS$^=jK!a)Q#ycLMaLtcZ1P+g?$^WH1k*v~o{>pSP0kR$K0AbS&EC zG6V|7p=lQ_q8`7ZL%Ek8YHoHJ^hk5q7fA0Qg{ANu4B5u?5!4IKl^mJ z>axzFqn#(m%j?yjj66bmM4ypxvd*d}y;5V7cE%2_+UN$S0B%3Um!jsemQz2tXRENV2rOlIh;sZ7hyy{C! z6Fs6sm3tF>7X5_IsEn3qOJ(v{`h^z~m{My@Vvz5UT87?yn!6oF`7Q7yzm(P9@v`(I z{wk?a6%t}3Ar3UhK2*J<0 zMZ6APwR!Kk@t}NFi`PA#op2+vNy~8+L^kJ6KTYsUuFtvln}GGDEGw-I!$!otuph@_ z#W(PM^)tG;&=#zF+5j?I4Azt*FXsJi3PLdY--X0m;eXs7xlg5XYyZK@y^{kc%WW?U zXGVX!HWeG-?I=(`F`lWWRI1tu?JC3tBGXa1}kSaEAwo}iLjX6%2Y=5N;H)w24%9fJggbg)L`8P{MoM2z{dqfnA zOFKb3u=n?V{oabR5fO-%rp}R^i5ZhHliX8jg|UO@Tc5`4KcygI7NTKgWcl}yQw2Ov zg-4qj(1mNR#Ll*khNz3|M{tP!%<6Gv%t4P)v^mnxvq`Fy+Q?fnF1-%9Q^C88jwn|Z zMu&#L-CmV}O^a@;Y!zRrKQ}+q>fKD`$;o({fP`?1F4;3IAl%2ll$%WzwFSSh-#${` zCg{Z>mOPkHc)n;f#my;gXHl)1nx5|}$)qU_pgcsR&lk^kb}(p3YUZEc>pWmL&L|@Z zF~6)YMh;B)a-VcwM1Bxy;~y+Q_M!~nTmfyOCBbDD|DAXC{ZX_s}aU^q) z_KGh3P7E}43f>-rKP*$w?|uwWvZ_Rp=CGbdWi3`XxT=)AEHZ5d>X#9pIg-#74?WK0 zAsb*X^(O7{Y>o2B3=wM6OB|{UO3;OF9%yH^!j6I7&JxO!!&7tkTid7LVl)3L+}Vo*)%-kdze( ziYG{|zM01WHlM_SBFx6J#eUx@lC`=m?8Q#(TMBAE1BDmlU^8x6-Y}b;DnRtp=~Wv! zm)YbYOwWUcw&Ah`JJGQw;0Fcr?RPxO^>q0=!u`)i z%Slws=auOMzl@jjtUBfB*%HX2l=22#KJ(5@TvnFf%+W^VwS*aP7V@l?{R=qo@;ET( zcXDN~G@49fxs2$@YSxV~VhxjGvCg079m~mEXv#AAIyFP zRo*R^@V>Rv4SLvriR^S)?frk9#RX>kB$&slmaC+y50a{Oar76t>ss$-Bcrr4RQcun z79w{F-0LGeWx3u~4BBq+gbxF~a=r|NDTX12l}RJ|zzR%qXxS?>uS0{HxvV+A7-rD* z(`Mjj4DDY8z+o7CP_sWtJc-1z8Hcq7DT&BG2_E)5RUTRru16b;t73G^(f+&v`u?<` zD4R~1;O-d(S|6w|Of-(rq_P&r8S0cMe18_(`|VFOuC%t$XN*Z|mHb_uw2`)H`7f!F;?r1{ zWIDj%XNLLqT;Q_7VDpdSvp854diwFW}ho@z<`OjKL#7^2WC1F>DPz0_Pq8xoH(`#zCl2+{T)N!nDwD-H| zrbhMY+r0sXUuTF(?lmm;SX$oi1g{K&f7Y#5znWg&ooaLCKD};BinFQ**ro7l<=oes zXKCN)jHtF#HO#}AOYV*)By$-}>I1KvFPR58x`8E9m#U&dgx~zKiB_8*Xh157e`kTO z;W18|zwBDMKiNC4Dm=y$eV4s0v>ALWUMbsmaw9W1%o}Nl$-}pFJo$1ZC)A>m%@I<3 z!AUU$Ve}dsqUJ_hCjl08HCYf2{oq1;h+7^iY1vYuNgJoi_!pe|J(s zs>7l`K}Ijp$qn^h%nI%4H^0b(I5}c~(5U1crVqX337b?~&a|tVx5duN=c{2XbncQH zS|@H?iHrhcSjVRjdjv>i`1+MuYIh;N(>H@CNv-{n^C7}0sk#--LrNx*k8!fRF7jE9 z3zM&AiL@2AdgZzYTuzattR5*bO+x%$g|Z+S1~odX%^emy(-ZYW-;BJo5vZ)7LU&ys z+_?ZX^SSN^1~t$Jhs>h0Hne1Fs=D9k;>f&sS? z%n+J#t1cXvxB6{RVy&)}&@lKayZ7@Z99S(I74*(NU;<9hm!~&Kg=jdBB_4IU9E13bm-^0M5DVn5r_6sX?u@4(^s7ns zk!B5~v6DHu5RXL(6vFpIbio(y3y~X>&uC+^A3692*+j%+mA0BrP^krQahO!57 z3h@UVEE>6`Cya#ok~Q{Y9*nntO+DOoV-gP~7=ulHr`sQ74lt4w|LhB*Tnu*5-bCw$RVE7{F9NfyS}wr;lH((&owa^ z4fsyE&88ZzJ$U^RWJ_tQKjD$<(Mew6O3I`4`)wMOmi@KNFI74UXg=lZl*g}) zGf@Rm|Lk@r!Ca8RedvD~^;SeQ9|mgHc;|7%?;c~<|9S>=oC)3r(JfwO&P5<9irwo=d-J;&vG3f=>=#UZ8yiVyV?tqhE}^gyR#T( z`|$>=8u>AyDm1rhj>5G7s(H=0{1iHRa9gsR*u~k7#^da3QfW@ zl$*8PXrof=p-vJ@nc*r)F;v&akClGFH5mR(LzemGH_ZSc|v zShL0ABy*myC9svSGq8KGW+8|R#~8|hFuIgGBIfOL?`Mn7@rfvE=vYQTfQH}zoKFJi z3rz`2OE5qS`sR$q9?exrc0~cYomqoWcVcmC?hvlC*&~y4&GeXL@J%!s1ABaFeT!p> zX?qAXEr3a&Gb$ocn?k5HI}!AIcQ2lDArOu?qyBLk#& zG%77;rPKhZG?eBd$~%|pKAsZGc1g=H&kAB4GqLf|Hh@T*$~Uz(-oO{3StxAa5k)Qq z>CXeYNV4g1X5TsHr*BY>Akik?&5vI5hh<9C%r5~(Rf94TX^QOnC}B0@d;3srsu?vk zGYS2q`p&kiPgkEhKdGNpE;;C=e@J~)Deub>VV;z4Jv-=82|sGNmLVRy1j}rPW=&)? zP9osOleICAyM(OLxt5IsKlW=|RP;dwZI3&$9Ah(!UQ+V1KPU5Nq1EbwkkuN5m}l_R z7b{xzWw_Db+CIi6LlQTM9X&o)VVJ=tj;dDV~FR@}^=gXKcvOLdUyds>?eU5YWj&^)qdPmQt2CkJUA#5T8oC!=$MT32i zH<0B35B(bNUR1`vL#-#XLE0q((PXS&6f{_K(+bR^E274u8Plw=L%$FNeFp6XJqd>VSxmtIv3&!V<5$&s{C&>!@p<_YuJB z1LUYck3YG=#NI;?_xwW)u;XYH)`Ti2U$x;Tr0OP}|5zJ@VLMmZJ7)a))vbCIAJ!(C zX7-)J=R*(-@!#h&AT+3q2S?yz3}fszps6L?Oi>{op)M2G&}qkS;a4S)-16)3b{Kg! z+@+@Kbu@VM=g8e_gc3+|S7t1gt{_afS@OpaFxJi_3t398mEmEYWE`ymxzDXhYYP#a z9v*uNqGaoKh;IW%7oX9LAlPogf0?v#eM1=B<~YZjEDOz^TAfd7y!n}g1m9bhId~f= zmWo6S9hf^KhS2Kqj3%caBKV5U)r3l?w9WlsB`5ds@Ip+Q)o;tcnh>VY<<1Qm56fCHtV>+JYUynjHtd&r0Rrz041pImD{_q^(Smfs0e}@*Rb-O@R&(}hhb7D87>o&?CzKj#D2&GDT?ayDA zD$c0Ux*iBkbzNbS|D2DfJJcfEOG5{7g9_n#hvsRG%q}}0u9$b*#=SgA`3MI(#i?p8 zfS123_h=WUvK@z9hmCOeU2Rfv?oOC@lJr`7TBR5p?b2FP_Ek(21^VdEozI(I$UlJH za!KCwdo-4Lce@R`Vg-$iZR2N1Gr-u5q56>Mk!KwV!BFIiF0v1Ms?lvFk?T&W<;ln<(_H7Y*n7u*Z^_SUQaU={4(VtZ zPpQ_qOTz{1Q?oOI-|w8d)9bwdx%|AM&2s#=O?#@6e7C8XVU~5n^G@Mg!}ux-Nq4h# zyE^{)0jj-sPA%6UmMOjd%MB{%a|iS1WqHs#v7I^yh&MuRIr(jA0}kmdg;>jSoYAD9 z^|xfy4G=4f)uF`7e){l3HCWKK8)g6#hW|15^n9LJO_0!s+MyAQe-;Z*onizaM^RnW zo6uD8;c%#*V3orS%A{k^lEw02mII!v#DW`7Bg-Aj((5qPa=Qht(RR1HPDS8vZ20^P!KfUNLb526`C6~uwh~ju!k|6)M zU0Q3F(%Wemt~v_}A6g2lP&tAB+}dX0CcW9&rik_<8v4f^8Uggo+2tmN$C=vB8z*89 z-yCPIuJ*^WvFZKyAtGWx)r3#Rc+`CHM&FYd5X0{Wb=72IW#kvEfsLLc6Cd4#JCSdK z(vo?k9tG6pBb;hMRn0r;82@l63IR1$<%-s~U_kGTp8?Nw+aK~C^?5V7R3L7J>XI$A zuYC`*DQ0O(y2Sgx0dYZ3fSjOeNY!WEx|icWU};N(&aEA3o?0uw1q1azlRv&1H=b}+ zd2s#|K2|ccaXz{IRLbsvc`VZ1s(+2WOB*op>+0uKba5MvM)jwN6w7C|{mC)Tr?y`ek&aCy!TeCvptEnY;QapDYf|tMyN%IT*^V6}rHbWW zi@Rru9G57@q_L!%cJi9nV;j1w{X(d_vjZ1S?78Aw0|PA-wvK$wobijMoYFa3;(NVa zk+KSBn%mK@wzU}5TFEpB-$?}237yF8R7ArAkYC$0>}9Gw`r5#DquP#pn_j<~Hn;@^ zxZ47$+xn;JN0Njgpjuv-(F(0kvDF|yi&wV+FVK;Y#RRCVdeZrnuP(Az9HX zD9A&?+bBi2vrs9dtSA>QUIB!-sQSS5WpaR!!=!eA>uO<5lV4GP)YCI@nTKMA-tCnr zL8;36U@vx-sgqgKa-~`+@&-H1IxQYNoZJ+ zNQvYs6RrT)o@Y3}yFeu9$S8@UU(n-KL+#g|m)(4?+rzuaBUj>J&_N+%iM7Z&m~*8D zm4pjJxtm(K@TR7O!vUY)%%Td>Y`n21pCLZiiLcoxqqU{WaU3IV=ia_AQO1ohxc2*W z_2}JBE&#h)Xn`-kP+cYdHxqc>*%#$bBO~%ihL$8@Rmlc5O8I_**MdOhLPR!FY2*jxH~p!L-0gO0{zyWE_(66(wdqI15!p9safoIcb@2UM8jgy( zp?m!)SRWF=e0a`W0Qs3X%$&|wJ;CU4b@{Pw9G;rF$sCFkmA`orMwX8{-2McGD& zE#K{Q!oeyn2tzLJp|oTNW#5(jJ-CT#LH1>Wq+#O?o)t=iz< zjMz3np^U7p2xu@39LG;p7%o_R6SZxU%bzBgQ2AS&;X(!q)vI??JXl-Sr;mV zSB!a03`lJ=i*~#EV{u+6m&>_6He3VuaKoybGEq-Ef4k#Gy6u2x)6w6lq2)jU?qp+M zXt*UM{y6cC5FbjnE~`g!iMZ06coeiziWJs8o%#LpR`Gna{oR8tHY1lni|X7TCPhc9 zSBS|Af$wE8o8(N4dDsnkljG|VT6rb*tqgs*n~DwlW_DHq1Umh^9ReNvsOM}=8B~j{ z9d6bi=q4KZS$-rS{VU)1)46nBm2l^}_@6ifG1VGh{~bc?;vWwWj;3bF8-2%Luqa=H|{xIQt13QeSH*d76pWf(bzTXe$Du zfgQ86z0MaRz{**)(O|Q40${+eRIuHj)@PX}SNsp-mNkNe(H$4iEy+dz-Qb#7yfQ3eXoocS3*7d1yJrzU3lV ziHS6$@xL;T=YNhviPq3nxd2P085KzkmY&#%@iYMlv;h6)zPi4v!P4CUqY}i>D67T6 zQRz|6wfQ@Yi{yxmQLiJxAL4JND5l{&zbUK`>wvyR*zVss2hw9(TwX0<0y8A)$?s^4 zA;oo&jY`;nT!>-7W6l}xvP-NS-b}qw>`a^{nkHD-KpoPAfQydw`&Gn`f zMv&R+=QJp3rN-=kdh`+us2AKnbs2{u_fgpvf7qN{B{ejsUDAhapa6u`xLgKRzSdpk z(NdCIi1{baZF+*f=*`Xq&;RO zi3C%!D=i=k)-IO>BL5Su=^#@JzsEC#{RdWm&8qMq-rCP<2(^qV|R~1runhK3v^!3lpUBL9ge^T?m8UuE~gs?bi9;hpWGY%o(i58I0!vr z5G65yYy$1$qny+Q`-d@v=bEc0l7ml8K28kyj(0z;7R!~T@ka_w4U{{achXcDxbA9N zFE)(5!mPK2h{af`l;rQOV!ZMjdVfzq{j9cj%Qe8foX`y_rU|~4LKoH!uPUylZz?U` z9tnF6d5yMrmD?-kva2n09Fo{xUY`Y(*78P@!XcTsg>UjJs->eo0&!<&ueUrR>5 zN%mQA>fC;!lfv>_89_Z3^<84(4Af^F5ubV7L-r?E36;mNy1kmo%b0FG`uOEc<9NT~ zRxTkI4Lw*j{fzg2E7L&y*)3@+8BbGSShBsG25Q{W<>UOq;x~Cy$jD!>k$@E&*4*qV z;(j;z|5zNFFt?!l$l!C4yZ?WP=lZt>FQ(4C50WT371lXVFF~MO|TW{#@m`f++{Z6^wWO`WZ5J&@u*)fE_-+cHtfkYn{N#wO5 zlT;pr6qhJjK!{1UsHD1`b~KRLj8Ee0_|V}lbXIV9OnF-_9T^7hb<&(n(!isg@uqZu{n zG7bYlY;@AFKJ%v;(1Pr+e*&|+KONxtAS0s*mLqL9#pCahx}IIR$okk%7A9Kl63lnE# zc@Q-TqXa8)r|`AG-s`vN(cQE;pNAjJsy&)|aB!JnVk0BuEC(5?3bw&<)5+i>l62<- z4dmdVTewUH5O>=vKFbo6I@G16A6gI%Ma%{vC$ki}%@Nh}jjB8Cg!eQa)K$2aR8(^) zFu@5){$TXRqf<$;wd3v9LvRF|X1xt8l2+MElq=Q=qVMX=1n;TIjr}zjO|xmtfXOq|*DIYdTumakG$&jaP9RPP#Y>l06^26kuCI3_Zv{!vpRjC}(keS|ToN9n> zmR%7Xu9d{3>*qoc6x8rk7FgB?uhT6M1s5%*zlx8ey9YcoQ^Tz#m}rh(zf~$0Pmvg~ z*Yza7KWMcO>+5dk{heEVdV0F6xtbRbVUXilnuh0cMO=DzIy%;8POPnFGis+x)vXX^ zU@VGirslVg!B(?P((AcvRD_iRoZ0P0I{VS^9s7;TCzAxcnWabyP_Qz)+o4auK<+r> z#n@(}o;y5?V}z@FuzZ@1iqMdM>H{s_$g;(Xr}7q>ehT;W7R5%Jb!-<9<-UC0OhY-L zG0*xS)YYi8HjO~jBBsiq$3CgPEs7uZf(x^gD5=g~z4|2|yv7Z|VmQVs#W3@Tz*Srl zME?|3h(?9c6Tx@4ZYEwzH;bPUMVbmErH}=N-)YL7@A-GUyq^2N-<`i(2Y-F(i0X$V zF+947J=Q8!F?c=gnmkch1@jW1{+2@&GK>e`lC7`CKz}cynRhc#<8Clw7l=rO%O!`DL%b+^RlB=UN8Hoq;tw)m=Nxh z>V5}A@1^RZ8pY09&R6G&4{GXObx+4!ptDNvbqj?pJ-gGJ3OZ7TV4sR4twjvy6gF__rej{ zUmbsL_7ypPDu~+D@BafgZ9O|}AKQb|Qi?h22>oL_tbdE`Z?;);IS##^9X4#$)|TBi zztt3Z^E^wH?5?;6n0d2+q0^5u^&4V4!hSt597~bc+orbssjpK`f2glNlfmULV0dxE zKzg^(shB2>zwF@BKA7UqKNAO3_)yqY%_HbNR!|!7<_7;+f+jFG(^msxXN!-keRRTU z09LUSJ`?YJP-i8mlLN7EDaA}@L>!$C#8L&-Ji@-n?lRiH4l~+9u+D-54MFjf#`$Hd z0$6I3N`2*rt(04Hg&)NUs73R;MrHJm6nNuJgz;nmEc1ikSY11hj6_zDeN^tJY(oU- zQTOPMDOITp8IiUUx$W}><`KGNuV((5fL)RPP$F_qNg;d7OCVwiiIp$PYtd4&>67{S zS*x%T!z{?C_M39*NeaR$@%zXR`M_iz{4s(JhHl1C_X)#5fW8?w(W&$v(94heq*f(8 z+lN7d`GM`*o`GjBaTz|x&_?Ve5?Lq50m)R^%=vq$i;3s%Vpxq1CU8!D8ZtVKg7`D5 zJ0BO5e}?-9j4ze@t3E$RE1fnnO{f`6xgPNxYapL`b7rqepEpnae;JwfCN7gA8C zcK4(^*A5y-TKQh1Ywn{uOakz904La+FLT6}Sqd46H^H#(asvsXP$l4Cm=V1Wrj~D# zl7b%Yn6WNmh~GdxD3fC;uD66Dh%3A(w~g7BKIBQb<>}&ZTlWQe6{LDhf%9|bm_@MZ zdALz-{7%vy2V;a8gKI>KhV)$>Ng>K}2I0U>0&ws5%hEjDh|*4kqtdgNW)T=cNKS?V zRl|{*OMSH@{x3g_k*0@BC#0v&=!a$;#bIKk)yg{ST}v;_gY#9`>NzyVz%D{~!3qS4 z5?{-H(+Rvi;l1D4V$jq1>iy+G&JjqmRE(0P9s1hiG*~;w?UN zG_@m1>ZV4)MA2g4sFUZZ$p0LG3c&~o2{iOE%0;1$V2WX$L}dBGbaoP)XgU2hK)ttQ zv{hOB#M?pWX}C@i(#N4%yg+=Kb05V5$yNVp^l{-JgMOfRXVcGmO(~FYpk$(Mp(PBF z%$Bs|t;+bPe;Wo|XL%N^D#bt5L>>=Aji3pOJhQoVd!Lf}`Z8!OGyThG?v?gGef=LGk73`yKJUX>IuF-3(LkPJ}_} z_Nr67POf&;vzQ-|@UXj-`q9XppJu#F8jobRrqy%RAIj24+HG4;7T0$hZ+y>poi{66 zHxN(0efrlJ{;QQ`mMK5Kpx93#39KYz2lEj^d)xLt&)ArV)FsNU&Zyctx?@#Ofb#rA;`K7Joj9tNj-DMl(}||DVvp9v8GVf0z#t|2 zgkNB^KJHGm?K0n7do@#H8c5SH&qS;BYDeXxN2UQ>iW|d^7&Jl2LOGAriOV<`!wnY7 zPS1IEd*fCwAHV+EMi5p&$NfAM_UdefMSuxRm!vThYo^##*&k|3edsS@9dg0=QMJz9 z?5NIj;79atq|L?dvA-$wf=X8B@9pj@Q^{Uelh&I$J1}h>d)mgyC@ldLvySB`&@o>Y z(fiBCKw%)XR}xHV9lAbFA1Gk|#w|Ov(0BT6jJCmsa#{F8hl<)Y6(6Ao=dLOVCEFvq z-^la4{HFa*f3&PXp-H7PeO`TeNt^0jH=c8au#u!BsP7N#0c zD3ixP9aqXChDF4$rV>XzI`y&MsTmUpOe2OsTM zCu7W@DrKf9x8NWY0IqM&MU)E5-HkAD3;r8nW?w=eclKuC$Ljib^&U;$HX|7(h$&a{&cy>Cr zT@;%g`wrB5f9Pi9t}5UwRs61l8!LSsta#ch{Q<2!2aqtcx(g*rQCg?dEwo&+X(@&b zMnPxd9KONjoMe}x4j>0L6F+g>h3TPYwP0foJ@^R=BxL!mmT~$z50RQFw+9EjTu2d} zAB;adfMPdnQ3li7br0QAMrVX#{<6F>Y7 z@gZ$8l8ScYasF+X*}z})2DaXoM;WsTh7L84c}``)cIbs=gs|+dRa-|l1|H$%u~o2= z{1HJAK)qE6HPYWhB4&N+Mc=sFv7)JSX6giOf@_NiwE%~rPK|iO-=q&Y1sZV)fCg9p^p zdS=FJFU_w%Vtx{`34>Gn9#^Z92;EXz zuILG#kml`@GMDrV5Node(4Q-6JJqFlvtWXSm*;`acueqSZl)bIsc%8HyeZN7uj3{S z%#H84%`&fwFUrAG;5(K77K4upvHb0#!O{Ew8qmH1nNVGDI_yU+Yl8q9gN`5%1^ zIX^{#LMvDH**c*nqEIyYNIR)tU@oDZ9Sal2wof@2zqd0sReVVWjek+xI2$3UxZ=LA zMKK9+ijvZP`A%%a8(6urKNaq-T@DzQilHuW?f(u)S>Qy5P8xS}kCOwv@>eSF$63R0w@vdfPNzZBH)Y8_QM7OU!frLO2TN6SmJENKF!ZyiLHcoZ-#L?(s9aD;`ZRtM`i>N8?_%!-JhekAx+V4wE(&wiu zK+;pBWe@{^s*i+p2g1wJ$>_U5=S!(OT(_~?2S-9HiOeaBSqmWD zgdkyDMLq$Ic1_F>4LjLF(bj+==M%_se4m%3+OlL+3x>wBK*@A>`Uqnf@sg)AV1+By zK}PAQEXCx!j=z=&#eiN{c=5@%KR|Di%Xul) z6kl~ScO_Saj?5M}v^9T{~Z;c@CZN;;0I`)RpB)C`3)LT zL<0zMGEW>t?IpWjV`hf6zxyNwrAS!HwVvkhp;-8X&Ceg(=w9-I(;ZQ02 zs)0yR&8_s5G}m9^t$3+?fZ5L5(RLUxwqf$*+$5>37)(nCXH| z{>uXJ3P|v&8Iznr{6oB;VG@X)91b0)CnJ_2hN`Z#@MTMOtBOq2q_a-7K`>rOdm$3` zpUePw{iLPPM=sN~nckg5;8+~W3ZgD4Y2Q?uXc!Btawo|g!Ax==#V=FRJ1yFccKk&u z7PuV67?1gY^C;>?Q+29#oE@Rb%<}g7N@^!j1p+WCLHj9%L-mt8AbuYfiVb7ALv>=M zD7Dt!FXg`-B`nA-l_MOZ!qlBUA6{)9=hv$>*v+tp+KJZfR)}Y?FwUq1ht(?d+80W& zN?CdB#JwGIigMC?M*8!~fRK5OGiZ}PLo>KBs#SMmkU0+5=MJOuEHw9n819QlPAGmV zjzQpe5lq<2YBjgJM}(NNiy8gf&+s<)7R!LzpfsMLJ`!JoB;m3p2%sjc;1(9m#JqgR zsXr9hPGL}>`lD^K!24zWJ-ThOy@%WU_K_5iJB0S_8c;{U?Q z?!GLF@gDz5y{Wq&MKJY^+N-wgv&ZD2@fi0P!y=^{zV6B!mfnBHLW`vhRBzVb6uMw^5^5|zb1?D@XrZZ`UTkar1MC~|5E z;tX%muPz>bG``&E{b*-TS1wR(d_Ar3KaC_tKs^xxGVRw4)VuXPII?t*3iNX>-C|TL z9#c~lYZ^egiY+?{aNn2OLwCoF^e7-fO4VtD!*b4QhZXndk@G*w63fz2&wu=f z4IOQmcKZwa9S;g`KM}6$zw@O@(Aqn2e+3_&?45XR@9Aq4F8gZQx)CwlYM)mg)&fBY z?zSqIvU;9sGaX-goZO-#)!2xIG6rV@M`@TbD1QZ*(#Y+vQ}FjO0kyy)dnYNUOimTe zsh=UzW2thqEe-C6b6Y?IvV)lwd$T9)nJgDtH(u$Q(3la;hRFhlYV(Ew8ostKn%2g5 zORJ{QY_}=+>tH#1HW!^!Y_h9*K%6qD&QJ~z!#7M6f`PRf{WJMzu2O=QI!?Bjn2-JG zi+Z9|-Lth9eGX0&+|f%*vp2msb#x8ve6{&HL@6YiPc-% z%wEpG$5~LjkHp5<8a~wy68b+}omEg=(YkIM3+^6V8h3)b1!*KmaCdii2pR~|K;!Pg zU4lb!ClK5lcXw`1-Mg#yxi70~J*}rXXRUvZZ+uXk{oS*G82>;6s;)-^{An2)uVt&^ z>FwNH=6j|e)6nAtSpmg4>zhoL`vON6lDtUch(JcyC*1rv4|`vwz~>AJknC;1)eozE zt-tu~lC;+YaYoDPZbIRjao2@wyvWLd*_h<2T7*4wbrZZIbZUe-{yS3+PpD8Qw;^Wa z{;!K{BXgZ7l456KVflCyV@q#g&6r>e1CF;DP7gXj;7F`}RT=z6h#4X~02;at8;t{; z3?@j%RlIFL;J`1-L@D^yg6nsrXt`@e2Gc=dtgj!4p}|(zG7uu2P)rVIh`MOQlMm`) z9Eio^rg(bbMH zfncu>tHyqw8oXGRaKon!k{>|&V7nV0f_4SFr`lY#3kRqPaP;(>xYBomga6eM+cC=E z@YAy9m-NQRD+iiLnnbfq%P9^!UnQOD{e}|~U;>MG^?by0@@khKx3+M-A|aq^N@^rI z!6+Df1}cC?JA6}^s*m3NoIxu_;9r&gDmCuP8+;*6q5rR;eFOX+q44jHGXr1|HlBxJ z<^a1mWg+fPqf~ZYE=|zWF_86CYxN)`Nx23^hf7ORMnVXfi8s$XHQ+mE-*24zMnKk# z>|$d}aiKLk-eqD4J23yZ(t_+O{_MkyiiyaT@mzd|Gg!O!jnv6BM7&$u)9+iGdj>5y z%z$;R7-COx`#jXlN4HiNh8MQ<<2h}sG`tt+s0VmEMWr~JFYaN`fz%{(aA1TS5(X~~ z(|0iU2p`>vNo_ZpgcaB)WDjSKi2q3i9kz96Jne{9Q`zJx z%N-r;ooD(gZ>glQnQtE(3x2kSP)69|a>)S?k1SW`I{!kqTcjP_R6j7_e87PI6@;(K z3%X}<9T~u4LrTOGP;V%>OkC2iA6jU5^61dvo)oF~U&6Usi{Ov&2RFvX7ExcEG0;&# zUDFRq_`Ga(?(liaiZ^g1rC{YHN7dx>tg%hST#(yARgf~Hd!VkkqL^9qPJUCWbP|_5 zo4y$jF)CAi@^mX;T-G}3H?^XaBvNwXmvk_|I8$hDF(t9(8R%0$uS_1=N(TZEf2HT16m`U8*=<+)oVQ2aA_%EkSi_ zfZN`COBgvsB(K>8zvrjBB)o4AGegX0NMH45+5QT%6CQjvzzQ4O()yvJTrIcHt$DSl zQygfq0FE=i^1g`R_42!qxHL@*Ad%8dN`)2_7v-2b$aB{T<2-}S3z?C8Q)8ur;#QQg zfdabjfXE{}ZbCzX)v4xm~c4 z%23~I$>P==TBc6SB)ul%~4;!NCO@dWk zcRmPk{kLT0w+(`K$|bMbeaSB$T+Q)dLcw4;(m{r+{1-5bky7<{sWfkmSbge&W8hyF zb_*_3RJ&~fe@2mY(oSZ~RTV>4*nR7|q_s~%<lJ=Tan;EylAC zy8w0fwBNgcWjApp8FMx%je32#o^}ftU$Kj z2&^To|6_{Z?**uPnwC&ae5?kgzwGH>mv-T<%q3n)&k&)BR7QiUz3r8ECUXD)+mG zF#Xb=C&8!GFcni|cLJ>`_H9}QBP8(CkkFVhF#EdJ_kvS@8^8t}^huK*)jIxw4VNnT zmmf?n0|@a7fJMt^?qzhD{Kj3As6MSaeMnggdUq!lz29*@|Cm}mre+u1h=Z$3&Z;vi z%b`uFP?7O!0uu#2aRe|?smMjKE@VY&P&conw~ zzA4s(PiweGOKgnLhIu*9+6oHZ6kJ6=`@qsBD|}y?(H@Vx8=p+7gG&*N-ih9%DT&c5 z?vW`rim!$uqNAs)j{HIc^ybZ@ssume@5X@0l>h;efStdgRnpoG``-u2xT82>yf%+u z6JbzwxY3xohk>K?msLJ10bsjTq^MN;+=|R~PhABE{RK z2f9}?zHtaR7AsU^I0cH^JEO0TWh8brJFF82L=f@;!9Bx za7M|!C4ACGx&qcqCTm~7jVa}z+?iZp*`Lf;-A?FZ)aM`E*e6XvNz;Zg=ts^p)0p{1 zGTD^Qa&mos*2tGPFR?su?Zt2K#sCcEqjq~wl8H3w?tG4Tx$uRDtKv# zAIp(y7z@mBwpifai*$;nP&f<)ybgR63hPqJg8KEmG%zTZxo$bXZT^ZV8%7M37O_t- z*d)flw?lGA_hyb}yEDD`+SN3Xd+ODsowI)_UYkxv5j}qjIJa0=Mrwoum`+2`O==1;V14u zxpx{PHS*!^A(Km)5IZ8gh`@B$L@cA8c3-3Kd&gfXBn!DZ5eq){=ncCSD(O%HUENH< zGZ3tuyc_30dw7RwxwQBFRFZKU)wm;f3<4B4?2Q|ej1#<@R=3c__bmZAA4$*FpkY@aO8*mn(k#x@r;j32vdV~Q0$Gm0N0S5 zlZ}CUVxnWIj~N6t7PsFi5ERlCQ)}-Ge0dyW)f;hFiUY>3{Jb4V(l#U?I@**3*~j*W zWmPD}cqFyW`BszfXfG?9zTUN)#%4);v>o9ipV8D;!(IyDJtfLD${~^^j<-_mBf@wW zZ8aVD?d3YcmYlQlqRZmYe2iVYAT=<<=P7m&5(uVMBP5}#X0Z-x09m^*smJ;r*82I1*kc!Eb28T|=%ceT6{uu6bJzOl8q+EB`BSnPD|qvvyoPRxwtz&NtNuoV!k-@7B&ub45B@*87}Yz=_Jc0bNx z#3e*Rc@jJ_E!glfgA7e&a4Qi=(Cum6l}#TC9uvBoN^qZk8o4w-umk~I2>pjO-GzFx zpNsT4pnl_YtUHY6nR!g`369U$rwPjG&}#; z>(;fRD<%J90u%wp-)bC(k7GzPnB(^Afu?%j0V|?{ zaq}KFI8mh1Gr{_YFcu!(iDz^%Bm5lt;jfMrJtzll<>!d#3E5eO|# zoow`~;W&;G%Y6*2B$Sv(-!1Jaj*KULU7#ukY{Qruc&ebnz&vZK0tW34oAkw;F^Odj z&xGhW$j3yt;cpPLIswU^Q@E+m737v8+65Zq#5n8+wFtD={tWoH%u)8)?ZPPw#%7hW zCt^%e1-;GL{?pm_iv+tWS$cpa_ofn;@~#!3qlowgK{mcp{M-Q@h}*ZcdNxS#I~cyP zwn)eTE~+6nIbLj~2;Pwe=**u+fBzLVr3Ru4f3r0r>l(2h3Z=l}qzEdM-&QlMnN@LU zxV#`qSDJXU%RcHO{43xW-7PRE3GbDPGTz%ZsC{;AbgB1|iXLqRp+@fXdDoh!$dI48 zbm=)UYWiu`;f_j3$kK{mpG=`817U$2<6kaqQUSv8WOi zGQ?6JlwGGWhL4>}8#%AQX=CfEe^yRO2Bk-aNEgQeBZc#W_pm|gRqp5EnYax<{lij3 z>49IMn-WO{ZyWSp_0G1S^H(e_0$O4T&|w)uS9P;?Iv05HI7Hz+$wd`*74Y(i2yuH2 zR$e&qD66(y`s)aya07oo^&YSNB2qlfoueMX9159ug1;}pIwAnYHzE`&?tnA|635wNYEvPkS7)FL|!y<%+sd+AQ z0?No^9$}}XLM?*ng;dAZJ|xey(SfBL_*W-gBYyrK)LT7FjY(# zPM;pepnXSpVs9Zk-UJ-VJ}#%+1p(F*@gZmOdJNEyK*t2_d?1mRmG5NiPoKF1fH2QT z01m4ol;-&p}GexARwJQ{g?(RZM;Ke8ihR>5BTBsPt__j zz11Qt7~m)@2ImSxgfdGI0wX5_*6l-zQmkv8J~I7)RhSuhYn)Teh#&+Kay|N{2R~c$ z*upQ5@b|ml0@uv}Mjsuklb-IrPtzx%cQ(!J$^Mj>{JD}pxIti5oexM}W30|Bsfo~% zR@~j{{>Jtj{w3Lp?u3ZH0v!C4Y^~qSf$*- za5a|^z)bj>sw+?V9x-v;R9kzN#p!6Y0`q0XbIx%#pS8_{%9)K5HtmHN1lzMpgF&1lrf(lwOPyjZbl-{^!4B0W;JG7ph4a~!3TY&l3X7+)}b@A zh77p_alT_X{>gO!b@?&eIz}DS6)QXj>d;T6MP{OBDGf6U@ILG?3Jv4AZ8(dc8p~#V zEu^7_Fc}}GEY5!hP&<9a=A=eT#OrdS-%!lRQ_@eM)W;axp+fZ?af`TNvzDUzhV{8e zd)ha4J}fK*q8mmBwJqfR%9>gIFDL)+{ER_Y1BRJb>HLx%pWB4Kxzzgffe|{xgn=qm zPB~PinvI9pTXfB@oFLbH5GxmlKQ()ds>2ABB=QCyFSXs>=NFZqy!=4<)JZ>-$m~}` z{jk`S-`oWtwx(2-ad^Y5d0#kQEytQgqUnLdt9!*nZ@dBf{Y(RM06jD22_^QxQ7mr1};PY#P z8PS!G`4ac;rI(7F?vRAjH8RSps}1bH(vxhqxz_d^u9F`fFw4NAxm5K}Dh4KHSz*u&Ov)b#mljh3+1M)x}#{6;9} z+NFl%=)*#!S@>2#&q287&rFZerDFJ7r7AZk5)vbbOzP>=R>-~^{SXgK_RF0=PF>nj9*j>Er@GBls-p=jW7Z}fp^7%X^! zCKT0j&R98p$C|jmsAnB8JYcdnL&RJF2#SR;D#n?N4o5So98N^VR?DoD7prl!;;u8cxJ60F#|@aJ{L_V zh1s}j@3vdP%TDeetw&{cSub(F0--@UALBOoe@M1m0>CwpbIBg=-* z5p3CA7oe9|1+^2DjzC{^29o$DTPd#j?;i#|QnjwU@k<@A)>c)kPYW?nC3jnw;xpIn zDcMB0VTTuC6Y2;N76cJ&1q;_0JA*f1wE>dzW)LlIeR%V_UkdWR<0L!;5N&mTN zoK78~dULe@Ybgq}IcHgw>1bBb8_3WS+q#yPR5j?7)wogzd8so0cLlRKZljH9b8wCipn{KK!1H^IsepcEHAvo zc!$~+2@k0CXnxA{3hqd42@WCDMyVyl7R0+C=$TZL4_=e0*4n^No3Ce~#m1>#bUWU9 zBL>V&Y$A^HN1m7#K4ITVjFkva%QPR_xyR(dbCOL(F3F)7z??17HjrhW$q1`e^ADev+Et z1c>34%xzpUihNm<-Th#!k&R}!xH6C(3;1LvVA&~dy{wENwT3D?Y5`YkFQ~;rgTJ=p zRP%RP)ebck1>{#(#j(e{Be5OgS~O95ssS8i3XzONqDGrf=v1DiL*CEbIf!VTq3^kg z<>iDcx~CDa*gJ|X_{(z@2A~&Nd4;K{@$JF^h}bx!TD&D_T^NpqBR^N7&BFxt?WgY2 zB#0KATPrmqDozrG3deobu}lzNoBC|Jz-_3rY>V3Sf<*Zej4(P2oUYZF)3uUZZbkq# z26HUU8AaTrk_<_*a9e5znom)on0IH)I9kPqm_5Cd*E?1<5g+o$efbGHTldq&iCfQL z5P3Ofv)i}gTaOXxSHuZb3srUom3wVhp^`5fUpr|L#SLr@Vh_p7tqawHnoF>T8 zwfwJXRf^QLlalN?;*q)Z)!H3KUgZr(O&3lV<6a20S1R)tk!iT;uYAXyNX4T*NPfHI zCUxpq3n#dE-Jn`YB}izg3WKWlPeHW|Jcy`F|2b#j6OJudjT|DiEv!S?9k#Nv!uQRq z#fjU}iQ5OJ{$sji?2?hv@V8Ho`?1MBbVACi>6*3*Z#`;y3WM`nS$Yhnr!cq$K!N+3y_-B+Gg5U^77n5Dp0RHD}o;sGe2q^@W>QoG5YOmTbW=YmM(T zwDWau&MxOyLvR0Hh`+bxg`Q%C_VWWC^%=^s?HDmg{K{akpy6nJf)Q&gTzv2OJmcP3Va8V5j!M7wBr$EbE9xnBD@8 zr-BSIvY}p>ayuX;!(H!?+ldK6N+Uo`HqarXW6`6=FOjm1F31oj-gTE+hmTW*T}mIA zjgrKl*fwfRYlM!z@p1)8;h^^#kmK)WuH_U~Y%v(x$}}1jBdc-T)_-fQSjFK1h)a43 zVhLm4{22Ir&_^~0mFZ0R44Ap__=0g9_Pl&OLg*;Llqk-B|`$DNk*O_GOZKurEC{RX!YM7lu3C=fvmG zE>-Jgc?OZcd1OIK9hBPK=q9v<(+!qWPk+?GVtI99-@qXat<{FIe-CvK_a-M9Is3)P}b-4HnUP}G;j<;8MIlwY?&I^0=ory#%WtUOxo4vfOnuH1; z!+kBL1Mm)z2&7tNj>Z^w1!s~@j+5bAi0 z5a9LucKnDHB8-eYxY_s@flTEcuQse}TTomO?&|%4BXYWck7YSybyFyo2L5hR8Z}n? zF7Y;8bQb&e2V+D5KOoLk>Gp^-|D4vTuZ9S zx?l5ng5OXF!&q{)$uS=WLvE zN*~HLU~@oci#b^`=WqN}*3-YnoR~c>qtM#+Zr2v z*h(BWf12>G(fY7G2hy9GAoi-NM#WL}cu%5eR>E7y_Y|xK6|^ODhwm)S^Qe^*o_B5Z zNO-#xmqL4qB6E!_-h;YZ;l&##nO};B87F>A@Lzj9RzPu=3*IejKHUs|kMoA(ph@bE zskYuw=lW}FF4KyT%lgVoV4W-vJ6T_vtH$BM7_x;;o#kDI6>l4I$J*;Qgm3Dyzx0jy zovaY(u&rryn0Ps+)%VkMtRNSemX&+^eQf6@mLs4~GXkGLf_A;p*~jnxgPqPY(0spt z?vr`q*xAG-H+Y6Nmx<5fJg^2Z3R-9lD>plZl^lpxVMelGo^;VBgFc#2DE}&6nv>Ox zWd^I`sMC_#46c}PZ=10pS5WO4tqKys(H2GQqSFNL{bCv zVD@SZ*pd~%$@Lq5!EOoIH;l;UBbx~W<+R7&orez=*$!Q!(MX~mBTFNb4Q>t1fKZ=r z9XPhifP^TfH8tfiS;IS$Du(&AsmvR@;V63gsDv)*Sk2}mC9*W9TbgL#lkKwd>xWNb zV$BArf4_P@ufZ1_?wzsu=`D2ua||Y(dx=J!B?BfGxet|eNF;hh&0LE7!8CEuCJKtn zEOYT?QIa{(jLqGdBq9|WV^%k&;+SXWIvbV$d3tRRP8D{nOXy9-+a3io${7fJ(d=5 z;MQAK_^vEi0*z#`W*7eTkjcR)T_G6H^J+Qd#<(LkrSzN#F^wbCMN~&xW;ulbDaeBK zVO2%sE z7Gj6><=I>(vd^}%n6f0otf%5qlH7KT%xHSgqJIJP6i3EH9eEl5}1 z-_&zLA@r6s!Voc{7$GQCE}B%&_VJ-}^KXCnpvk+c``r?1unW!5(lfLkn>ZKzE0i#Feez`u*57L6pOzUWO`+A5s@3-fs$VO` zAu~NroaPvqC4z$&>nuOF)INL)@`6}wA^4&$Ho|7{ZeSaSyFnVzkep^=IvI;LGad(B z;|QVJQ3)liY(J^(E1rW-&51bW=db2xCf80cHEggFc0AIGCbSMoyZ^2mpzOyPdfhi- z>iNy0OPY=mDpm>NiGTU*0Speon^Com6)sd+ozM&5Cz((02P2fE>r^tD!;3+TrvBKd ziw|(d60W5uK%T7vC_|X} zh!Js6ry0E^+N6Ju^ZFJjiR-cw@B>zVtHE3#6)}kyJWW%V71fb3&$o=JRhOP;tgR_1 z3(ChV4jq)NMThDWYn_;lLbzNU5gq9}-F@5-iHm?bCLP}vgI|2WlzF0Xidz{LE`ZCs z8xk1Fl~AAJro5Jc7V-z~II}pAO6P@(eFyPI5kQx>trV_=n+g%W6BA4oyk};qI8-0{ z_8V#}kxPRY7~BN##$;I`xF8f+VOQ^`w5`CfH^Wo*LvxWJA&om7QWaMwMs%s;{Whip ze>AD4BC|pHWtIB?nZvH*8=Bb&b7YpvEfcI3pVIV6uL@_p@Q3AuV)b4g$%^=qE zfW$SDQ>}uSm8u%c5n3iI3-55vB+a74H?w9J6 zObgS7&XHm9|ma`OOf7vfaS(VVsi^yoaGAAjI%KPy{ z9t%O7CI?giU~e0+#S)YYVyoNtLAiJyaJ8HQb3~~=|5zNd$JHc7ei)xg@<$Mz@Ak#D zz9oiU4~WWdBNyf%c(cZsVZ~^S23T}gaGL*t=@z+c`r@L|#53k&Ba;x&jiu|n!GFi7 z_iu-LrLy43@mXvx<8GJ;L!TU^q@+!p;)BS$jqr}P!gLT6r8K&ykNb`J2Z?!yF|@+} z2_W#^_lg@xgpk0Fo9zYT>P>jjU!d7Z2&9Tz$cR+<5$aAGsS`nzG*uD6}Ad?nFdN2{B)6gbOapFOVJH;5G*U3D#=m& zDHx<5!o@A4rPaDg%%3tFSo(8Ju=0~DN6*hQMpZ;; zG_QF5??eh#rxMZ!T^J{{d6kF@%lPFJpQl*LWs3+0F_0mw|I#S25H7IVq0mh!D{af` zs4FX#nZsPFZo_m<(~ZkiI|6~?+hjs=!}!1FgP)22^1olQjiX6JMjMmt1Z!-zJJprQ z?tUWrlGxOL$rwpXxh#d)717ggxXTw!kXSI=iw&8@l74$5Hd8aV{7*Jq<)ShEvjM`n z^7YZQ{?@y*SD_coZ_m#vEWhrl{2FWopy%)&y?`%8xgOzJ=?pTns88kHG^>tBKC)3;HHW|-pGryig(ocSGx1;6{XoLiP-(AZH`POl||GBnlnZxIv4N|Kg05d<~trGD$ z1gRXUQ~dD@K+GAMQ^5s^Qs-KH=jd7 zMR%!ZeBdh+xk+G*3~2c&KH|AgLb)K^=Zk?KOD_GI5o|) zO#)mW($um2FV4EavY$4NXxljePoMzE=OYp?<~p1x^=(fHg?M=Rr|ccV(yJp_cOQf= z0-x24lD`6i8-nL&I|HU0xQ+M6CGm}ML#mg?i)8#f7;6Al2eYXGe2iATsg3;!p2>RP zpCd-_F}?%Q=TUtgDMJgh<{Fr#k{a5t4_G6Cw5_{|yit0fv1V{WAeqPEkCtXWE2J0- z)Gsc))wHBg9aHSK#;L+@sDOJ~1z!05*%vu_!C)jgvUA1;0?d|1%+YlFsQvudk?tpI zjBK$Gxp#MMa`>%UHV|SlYHg-#P1t3B$a@%_1MW#E?ZD&hNX@7rW47c#O3kd0bSa%dgcjDrnvuxJJosT$hZFE*t5 zPSY=HB`EYH7OTns5rB^DfDv5LNpp&NyuYXLn?E=QEEd_cXW7I_#+;$)A(QZm^U+0& zBbW9+b*?8JwN!8vZT@|fQozRkOYE3Sl{UtVu8<<}H4!2=gsL9{mgaU#(OsVQYDq{a z_mYw&{JCB(IA8pq)6QfNaNvf-%37!oR_3yW)fQY-y-x-jGw%s6mC677JUdE@vN*%{%jk}q49m0co0aIu&X1@Cm7pI`-|tjL7Y zrDyHqW2Gj+>TG6FmexBsFd8(Mq&4-s1kn0`$QOAxs<8LnokbJ4dJ4;fMx|{!EGIFr z@iZ)r%P9?@)DzV#QRmKYb|PfxDiW)R1$OIEN^=On>eKXHYA4ag&X4X5>q2X3T&n(B z(v+zi*WM#8`T}dLAf-C@*s4_1jPtbvK@e0$nb2yxx`- z0+eUOWmF$Z032A`QbY9AB1Fx^S~|OnDb}a|?hiMXPMiWta~ES2wk;XAhOQ-aXhHhT zTw$aZiN=~@dX*S+6^ax-^PKc-q&veZEt4WU{9O^38&br$qJLeO*l9c+krmbrk|%lA z*9Zg47nAf%={J(}hSg>brd2*}nUg?R>O>qr-&HhnjM8(W^(wE7IpI$dNQ3(~C_y*- z=O2sf^nEqsk&4GcXLBW>GE$yW`TIqUt=Vl+CNf#BXZQ#C2Jbo#nIwYX-tsw`fECAE=q>yMm*_p>S@R)3Z}|2ZQ{ zwO<}q#y-*VUz0=y{~K7yUb%9N2ddsB9>n@v_k+#2k9Hzlp06PL$N`(^nu>looMTo` zNTgQc@GzpRQRf!b6R6d#7If$t%H{B~#G^=5 z7N;cHWyx({V@iBMFhhh(Txh%1Hzw@~ntU_EiBVpjGq5Y?F}p_H&D}}dDd=8mGzRZ( zbDauds?UDSrP*yGvgKi%X)6?|qab=}7T!B04~?rjDp?OXIhGk`Iu6_Ke`y|;rS}qM z&E+c5Erm?IlC04vl0C&vZ(qCeQmigV44+4HMb@@ttLZl?iiVZ4$2|lDDe-UMHy;M(2r#h)I1L25af;3E6MQvgilFu#2Lz+EN%|c zZ$EZo)XXm{?MGm+==Pr!rmu!$s%Fr!=r^3vE3In`TitKejf2biIOs(gzd(t-hguED zr4_Vq=P-7PdXSTZ&Q#u1Z9}!UA=f^k^5Tr!c4Y4Oy)u+dMOwGi$X_W`<$4W`91U^} zjr%x`_-RqL3Y;u}N<0Q_rO7kFTeM`&<7glDFfQ1rilM(1u}CQ;>=@=eJAEXSHmQyx zQf&;gFku1_QfOIV76BIihw}wxa-5^~B-B4m{L=|uh+zpX2eX>hH@oW@bLw3t%70d# zIS|fkqHCB`1o#@sW@xjGOj)m)tdV1iw6CCSAZUDEq2)SsnyZsQ#?bZ@(?vo4BnbM7 zWh+h0&ITZg%F97eS^!9_RE?#>NY*OGY7(ZSg4!qD2^1^P|CFN(71hll+OyB^Wwc^* zUwOiohBw;LJW=JyNNS3u%i9Y!!ySnjf8(Nx=la-;!5&4k3Cn<&5Z=XPO=`UGDT@7& z0mk9^%5do=EjiNXD!cKA3Arw5>qat(6KK`rH*GRkxn8dUTiKj#l9lP!Y8*V(AR{J> z^mXH&3tv+#VajNEPRciDOG~UBcLCxWvgjZ-m_#reF{)@p@Bo+MaqWqa)XKyx?*R+E z#d0u6UgFD{Wuu>^ow{W&({r%}nw&x#LUH4r3+cRpGa5rOsyt$qQhK(E;GI{9fk(11 zk;-4#Oes0`Ue8b@>sfFVrZ*ygSs-m-B$iIIQFK1gxRm2*_)XyzMe@kBU1Va zAHpFan;M!T1R*LE9Tk+qFW1|pwXfu-%#-{K6Q^d9Aa+!{{2OMB^?1CCzNZw*G-Bf7 zF4F3Q+KRNg=vew0nJL;!oV59^So_NSThOZ#0(7vj_5#Hh5 z`flGZnQN|;J)u+Y3>Qqg4ZhEsrOMJ)a_Tm8}>U=)tN*I%P4yR-%Arh&xg5^z$R;=%Ze+b zNA+qcF6?d5AJt~TV3PWuiqmlQ@RYPl(~91#mGT%l@;as&-S1?=v?86j&eF6Xnkup2ui(nnUzqT}wontmsm|f?y22Hp zd~Ycf5R;`vhlbkq(mVrM{Tr|N$?Z&H0B4Sp>E%RKJ}4(ehrdl>5c6JF6x?Yqh zwgHl!hJ?riUM$6|aU)}OyndcAoBX1Bayu4^B^&aB9C*<{VjM7iSpAQu@j7_+o#q@#zoJp1K9Qmq`L9KRj>4(jT2 zoe$&M+d{3vw1&&9H%Jf^1{+rQB227c684hLmD3>rjc%nvDj*ADkeTEt?P4I`+0!)K z-P0C4iA`xZ#tlPhLoW20gCIROPrvdR7*e}_lfAt)W~EP1??m>Jt7b{)H;j2akOB7h z@ecnTf7pStxm<0Xx|DjGxL!j_L)Ps!O)+pvK?plPi;Ia-l=&Mu zd2SqGY5mUkE2OR2F@d=#x*fhYS=9Sb2y8a`J^qS$(LDPDQQ@hT3&8bo%alN(Zvj_g zH`5NPZYQ!4G-u>?D&$5$IZa`-U9up9)aA!tEgy4x`s*e^)bxW0R;RAS8%JYUGo zw~7hSIRbH0<-&W~6-fSxRbN&4Fy?bd1yVu#qFhUZ)ZpdW0spj1-j4WCNE}>u3LM(` z+RT4m$q)mx;gox_liK@MN5G>2^DfHmca<#hARIc)@l@`uaV9A`d#2>9PlM2JNhX$~ z5hKaur%_29rCa36cwhTiRB;65e*u(QWCFf zxXjBq`J>hRPf_)myzSjk@AN(p-&PFsx9O8GAxF@c2nIOiy{3ZbEQ!d!TLS;IBqJ1H z;Iz=oKt_B8L%p$eN{rEN<&VNyZdsJ+0idgQ#uw4su3HToBAM{0(E}-Sy#SLcO9JiD zQ3oy2LQ37axJr;ujtJRiy>TT9ry6P})2hZ#$1i}kg88pr5legjaRID3EIl&>Rgfh{ zNrPgpXjtFEON1{x4=^w@I0i3jPXd|H&yy>^;EZk|0tp(2ep?n&a%${G!!Gh7AQ^;{ zYGvvVUC|GasooTZNlIvqX2TZ6*7%Rmb8E3xdHLb3bSh}zgKJvFaBI;3k<`CA_A=ih z%OIdbyvAtPrtg`%uUz)9&_3^I%F?4%-1t4d8Imp^$BR!#zCGcMT|(Y$r*sJy6E$p@ zotim(t@YRm_{IoB*4DLRxMj6UNV}5s6g#b6U%aJAem)got6>T~m;|)u`v90zG?_kZ zrTSgAsR?{{t5k2?t5ZT{I;6vAsPH-rl+>kBi==tNyDy2xCw=@}9)=TuGHjL($Dx+1 z*7WW3r)mZX)dGn;ibIybv3Q9)3)fuqP-$Y%9^Dbq{y;5+mBVn)*MYsezrnS94C}RM zr0s~)#gHHdJs7#OCB)qvrNxxvu}2kbcs0^6CacSbsHN3ChKT-OIp9-N3#SO*##nW@nTphi* z|F4u_M8S2;6DE&)a8xnj!qIn5Z!WhDGofOc)qo{@S9)3c6!_^#in*oih=b8@igK*^ z@(-|uis4^3-!bXrM8)a$DQ2Y+u=h@Afs9Ig{lRth*W+6=9~_o%frwJ`+&U?+k_|@e zb;u~{8yFX1e-8opf&-=T5HMG%U=%)4?ZTy;nO_@P4|+@u`VDKl_DlAXCD`;`Kq?~e z-Rb>%J&{+!g|YObzD-bAWZV$u*_0%4B%xNPnE!*g!Ibx4L84V<(?Ptlw%Fq2$@N!7 z-TS&TQj{!By#?F6r@{|m1)a-(+qc)Bo2_(4f*xqaDH)DLfsG$_8*MD$YlGG<6b10y z=fc;q2fseSmz?Mv0L1QsVMBS_x$yk+j2mgHqgCJ$I(rya`)$a896)h=iM={=s#&$X zRM|=b{;wt0Ahdkqbogx2e19iS5s=Ay@iQ}K75z2}3p?U!3m83B;a+5@4kVsZ(St&J0Yk>_zYs@m237~ur0IZ3U((%Wtke&Uc_&ix--^Q1J zD@;u`cG8y#wGDah@GA?yZ%jgGV>xBsu6GwLdLIx(5ohp-P(&$OA$M>4$*gv)L2jYK z1o*hY?CxQ=!8K<}Kz-$i5N}vcvKDz{=&Vf9xuM#f42l~sn?k>_lVG7NzD+Z(8;Wji zc*GYLt)uvBcMfhxs$~^YvNNU~Kb$u7Gs zAfn_Oo~_GI-v9sOCB`T;b-Vn%QZl$ITv*DaPMSe?tjd3KK3LuvF4j`pA1fGH`KeE% zdu&9so=bj_CDbIf!vAkT1{W``@xW+O7`Cos_RzS##M(@GfJH0HtlED4bnOT>g~R88 zS=osU{ZexWNAVWhDDUC04sCAPFI0Br%6SDU<$+gDS+yWijBs^g>S&H$zT8h6&M>F- z8pQgZd6CN4e~9ZiKlL?>$?@nr)mcbNZQJL8IttB<(RaSijJQ#h5`R~@;EevH(3Hx# zn6GI$iiU`yi?c-AJeuU=Cz>M$5U|NlHnlzgQx2g0~ka zod8QGtmOxuk$fM2cZ^e@6gXk)@}R)gv;G23PA5 z>wi>>ksNa-LapfzDyACOi}@Vx>P$q#d!0rYd}Nd6>H$y;K;+yW)dKN7I_8E@7bTii z>u)FQPnZhuBI?Ru`-rwt9}D~W#v_k2q0EEcp6jc`x?Kp`!DiP>T z36JAQGHVzlOyok~2^G0eudUI)!NrGpT4ey#@|T6{^Gd3`3jb^;%_MPNl04l`1};%b z)YYvjLJG6TrBISA_!A)4AJh02OSsjN`!XKx4Tb0EG=W3nhE^w7@^Zfv_K=#r5;Udx3`>sim|1(|BER2b==uZ;uWwM zS9K@kF%(m=zMI1d_lT}Jlat6|zs`xhH}CjaJdpnQd@h!>m+mF5m~U=HR2z?$m>!Oi>4L@LJ1O%YvZkSteP_ovK6Oo#LAC^zT3Bo{g_E4^BBy=aX|1TXdTH zC}$_Uz;B0|IkF4eCe2@AN07;ezH%$NYU_}R-zv>fWIF-*6WYo|8+EVc z`hTr(9TBU}(Sm4Ww)__2v~w^i`4+?eosyjLkR#%IgVJO>W03rZT$ybpgjL;AzHo(n zR5UjE9GyXd1iT;7H{mtx>Q26TD&%z7i!CdE|zbU8C4} zU;iX{ub*>-OKN$x6gBf3n#k#y0Qc=1(5QuJO;7Ls9IALJCYZk`Glp_KJjbwzX(Kjk z^wLHriZc;HwVR{NyNLN~x2M5M5RR!#Wlu?%0&%WfU555CvXUO*Fj%T$S7QMV0nX@| zVpq9u@g4ucy`=*?2Fp1h_BY^Zsp2$mnEnhXqf?&yJa>i6eB=9Cz_iyWNk$xe{#2GG zV5mwE9p?2+Zvk_%1^ckVqAlOk=&6s~Mk#o-%l9HaeSfMzgi7REcP-hvyY@DBdH_Jk zrf}HY5(173B;0t9n7e;D83LTe+FJ~QZVb67WboO{zAFxpDiRm1UzhPW{?P)8Zm?0A zSH5?i#l^??$udh=(r7Hm%-CgWpI`bJyq}oo?oo5DQg8VA{NWVBdQbPjCd;9B!eY{< zP;g&VwGFX*iiyvcxUMGLD(x~nAK~Pwff^1-U~1rZ;wbYPrF&UDLa7=6?pO}bHgyDi z1XT<2U@A~{1Y@0iDTi;cS?IWaevT7BYfQbZ_YXR`twm1v?&^@@jv*ekr5*9zb6Qh- zPq4EsGDz&5;qU(E%$7+ED7zcK#4RT3c+@egaqMfhAURvyVQX=|4Q1{q*CVf^TmAs+ zg`<7}K-nZ+eOtzSWKBOUjJ?{EYFAluK0WwB!L}1ebJ*VZc7U{DTq(M;#C{H`b5^(g zvEff#p26hd~6wZiJMCwF9 zeD{}g=p!v=XVx}o#om<^S1dRx8?}zrpfWfJ--^?^{R%{9azSN7D~Ix;*%<2%xt`!i?fw82%TbF>HFL%8Bc*r`Ug+BZ8cZUN@qt0KadaW>hAvC-2 zt>U6BR^{2_Nvh$04Tac0DRxM-lJd>#7;6IYA*!qPEX7B;cpCQ9niNpL-%%Q*P zNsbQBt-Fuyak=E#)Ka;!M*Gq&e=tmD>@M!=gw>ZimB_IAgdSGZ81rsQ{Pi< z285B^B)#V!Y1lrG=8Xv!%q}$#y*Vwxfve!P?I%PVUAU8-BZc5f%IUck1l+s45~lvB z^vP<+i|~(HTnj*6_eERA4VXvNVgYD#OaIu!@&Fy6h^>hUcmxZV7EdeydTHcWz(Yuy%kHeSUS3?@Yu5>zV4RCtG-7Fc8 zX;qRA`dTQGI%Pz}@dKN>fb$K&qDaajg>Q~MD@BOztUf_v_;2ijHJ_ z8|%N!tR%iN)>wn#vRf4JREdpoD+w4(XQ0#)lePtFMUzvzc}JoA_dQCH*{BL1JC@5i;4|)azj{Z)viuUHaQt zqI}AsuxM{Ht4axk^E|b5bD=V;{Pn|02g8SWEl|@x4L`thDxCzITm&{ai8}BAHC`Y0 znjfA7JAtgHqV@@Q{O_OCI3A*CMb7ZE)2>VdUMLu_)rwmL7fk~S@T8Rn0eWKPN-egB zc`y;Q57(K`n}T_1(rZJwzQGmm4O9F2K*t2%t)DIw2)n&b2|3475BV}u9u(aIEiv#= z^ADVmoD4ZzAnC>)?wt;f+kNf z;AWI0RiX%VVpzUx^ZH?#Kn}f@ZG4F6BwkF-6MSxs>sJi2vD{74%9?0Zlxzf<;oTzY zRafBI;ySa5r(uMf8{@KZ(2(D|c-f~f)oc-<;vaUgt?=AffE{q%r2^7dX%2o|Bb|nY zVJ@v#mq{;3QY!(G;$i}nC1HsNxBW0+ipMp^sMt1NsRhIu8-tTU^Mz16mwT=Iy=%kX zN;YPHMMO<2MZtxOfagR7Nu;Cc{m;bi7L(Y49+@eO50955fi>ZdAf>&TUXoSkNbG!M zFJh_5?d06O@1!LGoYyfZV_tem^$wq)Ii>&5SrUJ(tf^h}eDGB{Vo|)7^mfVXpmYA# zI)g+5YUMuMnO&gq0V3=w5cgTicIUnw!>EQ^?~T5>I;T)Cb<}ifFcL;eNhqo?kNhU4 z!*$~_{xi>>!bswEu{PziEWf>=BoO2M*v+kx51kd8GfJmxY2$)-n{LhO!Z) z>`g%Qi?|F8aStZNSdV(vXWYoQ5`~DtvFyc1Is!dPpw0Q0Z1W!j1Ww(BnjHum`yCJLe#Qf!KXR^ zPxudp+NpK7f!1#A|(W(lQ{IZq6>%F98@;TQ$RQ+S5(Xpg-NJ% zh1H0_ZF>rc3ZypbIm-BD@7;*=cDY)*|L!nLKyWM9AwCc_R_M^)d+(7y!y?6uNY!hv z{p&mOBg2|b*wx${>_Jpx9X>wlI21v_aIc-@NmLXp5#oQQ!AmgVAykQhi4y+*bx(;9 zcYWg{aj|2W6drBOdg9P#Qa*8i)!8f+3A6?E$x5V?Vv(_8QyW!`fSXaUt*F@LJ2L8< za;HlE(0tF0-IR7oaH8)`;gmr1{CtaZ-$^`Hk{ql~tPDb>~4W=D`m&JKTC zq@%4+lP9%;vpT{{o)#A8RuMA#x|<$a^H~7P-cEMgKL_Hz{6 z!d$Zf;MQfZQR*q3GG@VrH00eD>1m3xG7BF1s^v#-M_Bpw$NLh!V&=~9Shk97W#=mQ z!-jpbP{usnfU7XBw@%cc%p7&j~T-pMO1}LYsd6Hw>^@5^_3r*GE#c@M7LQxOZ{c5VA5MwJAtlJ?ay*l zy|@#Z@19aK4hv1lo4qfWOT2bW_K-@DGb|-DCMC}n{lAJk0N;TD&iy{&9!>l3@LifR zBg_gq^(%{U>!k)5y_-RrXc^C5DaBN0=J^_!3F}7FsX7)peH;yip?XeC6@jWrZqsnD zva`YN`4!Fnja96f{rA|^9zmiE?QOkt2CNbCP}$j}h1H|Mv7FNDvHH<{)cBH@xDKre z-L?EO6%-FEhnrw^)@azlKbCDibYdcae6Wm`sqjjKm;zV@`$nq#mt~nC`yx=jcdQ5| zw}Qjf2OIQT1ZPeJ>V7uvD!RQAiOJAqPe2C7d0#H24D|t7dEXh8^Dn2BfW*UxUsez{ zexpHErGidAdbvc4F#Ydr5{&?Sh}TdD!{9v5gQq4Hf0;+t`y)Qi?ht~Z5>D!Amdnk$ z-nC;T-YjH>N{uht-E<{N)9J9u$bh`u|Nip&=mvj;eNyvr?D*-2&3Feqf^jD!Ze`2l z%XKgHVYz9QhyLyRi{J-u7v2SoZzJ`nG1-s|s>s9Ca%>iqJWvHE)n5<^mT(J*&Whlq zAXY(lnjnE&CjsPWzR;J45qmF9!Fez$%y~AguAYaS6Dpx2N}R!Vq4fBinb$7|1vf)I43#p{ zWP-WGBLs#5+cMi|6c&OR${XbCZt|}xI_ErScGw)35M^T~uWh6ZDz1|fk(uB|=;41p zopRj%%AaQ}tUet;y}+SGmPz1Blryh{*Us-=J$!;3&wReru{Y>%qimdv;N?85&8la@ z1;`kfyv0}}IIL8^T{m}9w(oA_pCz#E{^oaY9qQc=6{NBh9432Ij!k{XY*wyo%eYpQ ztdt2VCNZ9T7fFd6vJskh`^v%ahQt` zwn32Yl97igO)_IswVy_Vls3ZM`baRF62?^g56w+D_m&*5qufQWP!J-%kOgjiuZi9v z{An2Orz0M5oz35})!s9m7Li4BO7@ktP5sZCM3N`jM4jq4&V8+Dq{-Q3hI25S(K2Pz zzY^epgud7wL?;Z2S_3qMgm_c0l9Tsr8Pm4eK0Ukw0j7La*8bYsk@}>Q4N^j-6c=$C zx+GtNv(7K73;%@fjj^|N?6Rg$Pwt@KG5Ng09qOfI9DY`o=ol38N0s~C_7Pd_OE4o5 z=>ReFTvkT+V-cP%AYHx{(k`&oyX@sv+?{@dDdE+Fv9mx;WUY~TCG!fo5PF!aMFrf( z8D^1{FQof)R35%NhSRAtEbA#Av=%tp8te)uGF*TaCZpSVO~PJAqAnhxQ%Yt*VIGdJ zj3-q2f2%t1QR+_O6t!zN{q89N9M$rN7y083GoBJWlt-9^3>t+E3}1}@-f!xD&HCql z-LwzBw|RYBa$~AwRDTb2@}G9_lYB8}0I#LVe3p8s&3eCuO|;gC<<*lxkQ70Odn2l4 zs;eSbfHZ^TAdPE_bN7Y@w*1^w6NNW*;I=Hh`gPa;vq}7qNIs@R@IL=`)t@a-4t70PFG!6}w21&}6vQi7X#Jva@&EPZpn;fRV@HB?03nhf&kLPm@ zbJ4g8_rw28zb$cNPk@m+=8H~ab6d)nkeE2Ox{g#cw)Y~^~Pb7(n?J;W0rtdaYHUgzQC98 zWa`uflPaZ@JI*6pflh)bG9?bjmKD5)gL&4RdiXK`LDYPq?C8#=Yv=$F+g|lm#IpBB z(R$(1`?KuIYTL25mnUSn!!W+WU=I5_|D7(1&+0m-m^%!6qiDk`v+q%vx>rxK;+dKB zK&zkNiJ5amBz?EH83jr(r`K*Gnp%iJsCq%V^cFNQ3`cAd;fMw0$L4Inx{Q2X^{m;? zTa(M@7QjX$=11B^b&0JJH>cJG2r0Rqrow`Mj^*4DbN*Ic*{9g1xi}Ymi{Pv{ZEU`s z_=%u)eEy}M6jzpZ_;=Yq@?wbr-SK+kU_$*!37aKl4k4j4#09uK-2CZY3yOV3bS2F_ z;7N@pwl*lJkd*A{b)Jt^cev0IVK4uLJ^D#)KjER_(~KP*GP3v06+xjQ;{|nP%Q!b% z+`{kh9&s=kh_t~5H)!v<`te>L;g2cdXdUINx)|=G*J!mw;^?b%W=e? zf#^b2J4#*Rf%!JtC}=9uG)F2anaY>UZ#dEMD0iAHN;aIYY-b=y*Y{qR{&LlmOm{=v zEfi~itqTdZ-_?nEZM5OCV522OcX&srM4w9AnUmyrc)ItQSwNO1js57tv7hsl)v ztpKz#{*nE-u2E+n9n^p#SUn~1U3%w3g@!s*r|00R7+QtRECn4K4qiy=G z?JnyBI|`v_#k7bt;Rv({*b_gWoyCGm8HjjiP5JK4gyFQ zRO(ARdPj%1v=g(1ThzNn?wa@`X+R7$G);E+CFnn*0!!#YjxZ=(9Kyj}RI*6L zBy`_L^87(d`9jUHiwz7C9EN|-AK^lbOw9DYNR0BXlzSzD-v)gVT0+=5!s(WTsN_c5 zbA&;4EX8p2ScZOzM+J&86HJRHfx;gDUfo1Uq$8b8X?1OJ-P8+!nJ{|uX{yUc_^No$ zZ+e_F52@;&0R|u?9*KKaUpW7Qg(AbJhG-cEbCm&6S;>^PQzD{^Bd0{|sYE`Y$*zOw zDsi`&kicr{H9!yh_%_>rodaglhQd2UoyCL<6Ien0 z)5)U^*(Q~q9F{TaN-vmzF128K0Oo9-`icU(N#g>Ck~ML%mhYx{G4@7x4j%(8p;8)d zn=4jOzn8XVuR5n`i(l}PJ9dcGN7pO|+NFH#o35`U)KB>@<vA^x*JS> zl*PkHAZpI>)dZt^k+~yHJ)Tz;WFRlK8g}vfix0(R7yGtVjKM|2D~!#;Yi0@f^jO}6 z{ji$#?7J%fW@D6-2*p;Rc^3k7m*AHSBs&+f7)?Xincm_LORlT?)Y2Ja_AZb}1;gcl zlk2R9T)q7yUN4|G_4Oplq=k2sApPkV;20}Cp z*=79YcZ_f;fMC4%mZ?l#y-jhunO3rmn*+}-OWm*)yXj>cE&5yM4`40AA2T7px9AGa zoy0_e8UMvr#IyL{v5gt{yGd6X8)MZKj!G%&d-wC&fTK9p#L+6zP0zehRW}DLz5SIR z^2`$gU-p;JBpM8^*0Pb-5ApDx@tQmn5b-q%IU~VW@H+*<6h39Bem`HHeuPsHPOj-( z-uj*hj@a=_aPYNw4$Ab9sE3f@h^SiyrP%WDeC zn}%ee{XzY)Y<{G?Yt8cDT#(y%wvEOs%Hm0YGJ|*|a>4c9>iiq`;PzC9*hz02Q=Csg zsXw*+!~B0`?_ZQA>RmRyMxIg$F^3wcbIohq^591i=3K)HvIXE5zq) z72Ywd10mc}xc-G@ssBfrqerY;dL0K?KrSB0WOA#(vzkX+*uLFZPBLS8u70?G{HiiZ z*CIV?FHoI;k?;*V@)HD9#64W_ovWHrJC*P?r^-Fie8xy%!E?Sn;nyu$|%j zI|k+>%SBk}7AP6GHP+!M7QZ4|PVEyoEQyACd7O8QWf)&!)f9jOL$2G=k85) zVZon%lsSVxQ*i7(L>WJVB>FSAr*)G_zctmDqNE}Z@{83$73Zs3jtrUi40b zUu*s2P?jstF>EjJ*?2vz9|8BDZ?T7D{N&4fwDdnGqo{dfWeshy|ExcBHmIuk)K@Ar zN`9WHgB=j1YIKfg7Xp$px8at zqvNG_Cr*B;d{kHp7+U=HJQ0wg9ad^v9?SvpY@w)V7}4IUD#rrC_-DlZOiI*zEpYRV z?#`b%MmRiTo!iqWcc7KTD-0L?p~Q*}V^Dg?z#B{zP@ipGdJ&P3`29~E))AqPu`o{Q z3c!50I;-4tRh@h_BgBm=`Ak&~)*!RxJPA@n%Cg)a*#gmknKBxD$b&@@>@mT*#kP&o zF@p<5c$|`erJqsX?K0rQg|1+R6GiW^iV24>Iq$ai1KpE|til*UU%CCqUUFqQ(tFvZ9R+ZDaw+sWZ18gTQ>; z`hj%K(|q`LbKBC`Y?eg@ENO+j$y@}GJLR2xKURfz(vI1B`lh!+`;HgO>#*o06lG0h3h<+B4Vf7aL zcv7(&-O#m04holl63$Q@VDIW+`DPg8q4fKWYew}$fuCDIIM0UWOxEvKk&#Oclh6tg zr%F2=a4vH4h0-mnMmuR4d$>CB&myWey-NjOZ}D6!sd68QyL#+7Z@6K*Ixg%?K3&M# zs$Xf@ZwSi^b~&I9Sk3Us92SP1*5_g9Ig_t#VMQvX+VCjvXQd~SHlrWOgJE-*BXCN6 zuU1;W97b(K17fT-EO?g5fgsnwifRYhwt0c_b7okv_EfUm@nA(UzgE&eYd&3dNjq*G zZLXwre+fNSYG+Qjj_+Kf6vSPcG3|h^#VUIyH7VNoOWIc|Wh`GXdF5NDjJ^`}wA;#K zD?eWUuW;hrnOfVzA<(#*$$Zrw9}-aaZA`@0Uj9xMUkYk8%^rc;>!?y7`d&_yLABlP zB?^mVL$ApP-3z3Ce=bJ5dH(oowH^&EhUCVxdoLYt=(@z0woBBQ8jjTJ+8QWm*p4)p z-&v?v($;wHqVgIdHjd$|997<8+uG2+TDX}u@`6vFyrwhFNxmnXlHj5!leveWN~Ohl z5513x0S(2ZHIcx#K>?uY5x{qICOPhF6`fsyWegdcdLP)!b`^O18LAbCz8BB7HJk- zX#UI&hErB>r}#D{E)gT3o09Ppmolca&q$85j{{8R6{R`}h~BB)DQ%mL8+2ta&w`WT zJ9V}Gc7HP=W&Ra<51D9L6Sf6>xuU``2=_AZ<4ECgY{*XL+a15WKAd&l+sL=Ue^*T_ z>b`?4T6%6Y-cvP*u9vDC-7!dg+>d_}Jrl3tzlz$ThOk0En_LUXyHPS(o;LojkI5+eifM0>CJ<>)f%iS7$n)pXwHhf4 zQ*?}7maysWxhJ_JVma&!@TR5$pm6W9t3mAbc;4D{8n3XdQSIedKZTe3Kcg{_E@+9& z|CJ{lf!?QVy85!23SIE6Lg;pHVvP@*k%BkHh+v4dNJQ3LO}ptK8rvuVukT^Ux&R8= zju+F)jA`JZ1R_e2iCx*mNS2QRN4+o>g*6g`Tn^I{;C?UQO?61iC>uMRi^Jo$&QX!f z0hn*IBTfN*^GD7OBhjc9&pCiga`fP`xK(toR^=Ak%81}z#z|Im-w$vfFIy1C(^(-2zxl0?oZi`MV3gLV zqC5J9n7vHhOXVu<+d;C6GNqTRia-X_>P?GE{eG|Xtii`vSEzMGXk}cz(W4c*i<--^ zNxvtmN{*^1EYR|mo@@^Ex^9;ZF>*TyQ%Cl`d02#?h)~xg-8=d#;e%sZ# zn@qIifQ+Zr_uRO$m-1vC4ve@bo`T9suf$!xtzThidrEDI!ZRLwdE0#*R6l9o>JB(Q z_^LZp>xxf>XhJJ;B#Cm7@;T{O;diE%(RKM37+Eo^^~)5TQU&E{TaxdOLZMTC z^-y@SZ3Ib2Mzv2f0j+~_mwjROH~Y8v(brJN+D ztVpzrf{D`ezd(FWNI0*!*A%y@SJmn1_qwnYK(P0_0Ga*eTlf0l1=X{b#Vd}WtJeL4 z)JU7$bLm_xX`q}0z&hUiBL$h+p)B$4dv*O}S#Si&5I8d&40a4vON7&`{%zY4WGN=p z)*tNi{eHP3z@dzhHK5r&ZtutCo26q6v?6ma0yBS;FH4q`J0W`r(MBysFogXqMn*@< z?$@~Rmk|vyV-inI9Z)GH7M@~qk2IluEO6EQ|OQC(Zy;-|3pFp;)Z zwQquH%3)p%rQTPGlJQnw8+~w#2C&1-4}E*J9^BNp7N(w%|IE3n_Dnz=pa60*PeG!Uo=&ybAJ8S(1#AW)Co=7G-cJi%@e$b=W?s9~{svo^&41e^*RR3Pf3 z=8m6qnxtgHkXzm4`wlrx8481cX@O3R(9-n>K68rPC+rOqT73aMRo=QJ@+wK$piWH> zPN{|qy;w4w!HCi{UPhuQw36KD1E3`~KHxG>QL*(mGdx<1NLqh{J-?r1KU`kVy=)CC z^xHiXJ>;~sv_)BQxOXCa_VnI=i|<6cw&d4#^<4S;3$tAY#j=&#&vbQg)>G4P1}C3z zpndZ$7^9tc?elYHdHrtUyY!~`^XrgLxp@Netn?dfeo7NwV*@Ncx#r+7`@v-ppEaA4 z@ni4cg~uYjktX!+Ysy!qLE)$!*4O!Y(l}&{s%SJKY#UsC+*~r1K<@v`p~HJLd#jY2%rHhH4;$VswE9pA6_t z?6hEbm$@AThxpFDdn~CF35Yd!s~sX3c}@cdBq2u|J(+q zaZN!hcZTZeZT`poeEsX_iyRy5JGY*3?yI>xXvwRA)R?I35a0i2D8W@J=K4gMcfVBD zE&2M{!i-nmKiRP5`bR3X@~7nfe1_RyAOiXOXuza8;BNz~vFB_4t(x}cT#$EuaE}W)}wO}ck#ACB05S_8&ddlynJC_Eq z$wcoexVII_;Exsts-#u0iAu?A$fxVMTN6~!(@z!7T(trbW%j=l?q7k^B58FKT4;*9 z(?o>-+`j|6Y3T^a^A7!8%{XE`zKN+*YTi^eS!t_vDbu@08vXT5P@&NBF8Z-gg%?VxI6+Ixk6w{BnBMOd7es8sdb5Uck(bjm!7Pu*Twv+UC9ZQE55% zdiRs23H+%}O2GhyaZCf{%TZotvd6@uw0>e|yP4>D(R15T|C4**h->o14##YM$Y~L| zH6kq~m~WU)ik+b{Rc}T>kS^>~LY}sg$ib8TURK#Wj0fA(yx7b7Zf|XV7V{bFs4j`c zB#Ku-&n=QQBo2}f36RaeDM-*ykTH3>GSPBbxa=;oRAYYox~H4hM-X+`D&Mp&66=DH zPap+)uTxy{eCFDfpfuN#qVa5C#YzByf^M9}l*!8*PLO`yVP5hpqK)3lY@x`=s|J^|-S8{9_eKr5R&I_%X(|p2^WnW#lM{MGd@GdDs z{%rWbRgHmvihY`rL%*IIqHF&V=v>$G%wKUR4}kXR3!EbsBcf$np~jR`tX>e44p^e58orQ59jW26nodgq{4qsV1x73% z?2cdw%|q){xLb#2dz@FI%{=O*u zk`D^-UOket!q8&J3lK(Jcqh0uy1A%+{u~#+y-#RA_MpXc28BFK(;WAD8-|#UGrq}z zAlizaUaW{bWKD}@#Y~g>;j?WTxXrqoZq=9ZOYI}vN*NvQKsBH?eduo@+5HgWVHJZ_ z%8$H`-So|zFwKNlUV-m8dltJ1FaF9cmw$DS;V2nUezVQxm>`nY2a`h3@GzpGybU~f zSAt3RLfd|~1uKqT)*L!2WYmxRDWJISw+sT9&VBVIRwg?-|71t>B==&wtvR5n?ADkw>JgHFcc$2AqD5+`$Kj&gqw9st z9r#IwQgntBbuWj1L!9Lz$hVGRvS3znexE+y6>Tus=Vj&g2aam<^z*8fUSqk7lhj)j z6f#kfp6spvU7R}O@=Mga;chNXJbCmSN%pyXHWqhv`aLHMMl?CcY^S zM8-*fmzXN_Qm8J;0u1_j>w{JO>P}A5hRR$RzmQECd1#}*JtE5tllaKG>y_nz)fnu` zQD2Z576>bUrAUsa1f4%Rhw{1Twixu)zO6;86IeL1AQ!nHYrOH3*~ zZ&Mm<9oF$3_zb6EUH0F-wD(tvCLBUJDdhY-2GLjls_V?;6=*|g&A54c1T^-4Tn2m0 zmCk!SOtr9Y(zz7MwET9E9{AmlMZAQ+m&${3IZ>(ZFv70~eZ8ZbgO^LQ9Hqi&ZH`nR3k6jQ(=IhHV|yyMz90P5K`CsM*wjlwm*(=1 zp#nUOiod0FRT(R0OidGMjAYF646V0?1rY0mqiIK=If~7U z%M^UyQVls02J^E_2O7wK$++d+fV-s=kAbnJ=pPWxutTr=ujfXbi=>q!H5#9YIOWmdyHJC)O*~0A)aqe* zJ`cB8l%TE?eYYwf9;&di!D>9gjcV7#L81nIXp?HTkQDC?A~F9RBPjq?2oRRmDx7J; z8pSXu;Z+ubh^~K`FQ9Dk6JTtZA8B<1}Q2G(!ryo}+1M`%v zXX0$el`J|FS}RtI&X}qv9a5`4FBX0!U&*$Eb~44Ke2B4(XwkR+6U$k(?Wufb)dP+1CC=;H0SaiVtp_Sq--*e%FCoY}BU(Np|sOrzXFM&2o z!!q7mKEyP(DKyjkFc6aIaE#e3`dfFnebzrfZPWAqn@k$JfR|L7_iEvv!WzZE6fd=U z6f>|{q0iWkmxaXG~%B27}#NbMF`XgF)^ z^BpolweLZaFU-$*HJ`A%@}gDA6jo;mOiFu*3cdtMf`ZkN^jOQ26wy;TP2n7_8W8E1 zy}Gx96K>Nsoa|V8Dc1?$8PE5l0F=RVfhOw@N`RRMY5{ixsQl*d!md{L87l0>fU_*` z*O`~7H|2oCwF9&0I9s5Yf|gq4HIofi_&)+|ml%#-(4Cn<#F1izyIx9WyRl+oi_a2{ zxRp}8msA;|U>GrY7XB2U?LQtgaPN726j@GYWirLPd`jEE3AyawX&V$>Qh&OsR`R(6UF7oi6mBZky|@OQ?7Ig3}=| zEQ;byhH|4eWpRY-Bz<`}z9vqYy@BbnY9Gdyneig|!6dn=OubTZw(Bb&3g5MP(DsY} zwd`hdcE$p)1N*3oiFSP;B@5u!{No+6zO8363eXc&`6g9Rl4f31HIAz+o zLT<+URV#QQx0h?H0y_&RCSVu#?;RlGobDe(g6lsmam~SX>rIOAW7+pPLi)i_I##}s z@V8A>@INKL!hHvQdpHg~jr9^I-p&G{8S|WpK1uWDl~tFLB9CNWrxqqEY!GF4?#f9^ zj``3jWeR6>9`#n$eI>Q0-DC*HKudbwP5N?oCHlnD;cy1YZbvtf1a?>Jr_`Vzuco6G zr|8oc(5r2$2)?G4DNF`)I>t0EWA;GqGcCSNQWwULwdKoY67JY^ZS3>eq*!=4`-yccy_mxh7#-LhPn-RMEAI3a?=CK&- zpXy0c$6dkmU8wJH;&9b)650Mnu)<9rl)h!^?5t3#>y>Blb}_8$LM@eA^ia5>k4A{w zO~zR!oHQ3yO)&H1vkg>=AXjUXX#1zUb9bFcdZwu8_D<4hYI9ssE4?NZBf4Ojfh5na z5JV^%XzJN4m^kwiZm47e76F>HjY-~bfBZ);(Oa)8qj9Wz%_Dd>~Moa;{7 zlh>*xT2*>U)cV{xzRMs@O9gb_PAb_?`h!(AJV@Ve ztIV9wCMuL(r>c&xXZJG%b-dh&lE$GN%zzsjG)X+eHaR5Nt`%(M2|E=eF5=^*X+r zKu5e6LdcFY`WJ;dm@eXO*ZpZU$#fzV+@k}fP(IN0#_m@8^%pWZpsAOCH4_5+>Rex$ zvWM6~AZUmHmRi>ter>0j=#rn$_zzj+7)rzss#81(g#zzx!UWQTDy`i1WGrcN57JdT!oBm(aSU3r@nG*{~K=c!PbnvqAV#m3{ z+8UtD?GsCRSKHFEXn>>hGPb@%UQ&MA_i{l2+L+k(MwZ1l6yxJNeDr)h@YEiKZ{ap` z{et(+>RjFxM0zsiV@PdHSu8M+Ji0?@Z&Q<#AJ8#yTFGh%DJ)-*qBVgQI}73fL=4=L z-HP1y67p%qw_@_S2ro$a4b^l}-+Q96`J4XSHo6L+@f zbvrorEKgSrjYNbp){e~f<(#xGL;u3LmJ86?#yiwUjT_u(`S9(@RJ-&8Nn+?L@zD#_ zIp&~;Fu4^54u8p%DeIa~`7aA#G=?S0y%4o_@nvv>H4#}DZZx=PLy1zr*|-u{eH-k& zVf3RgT#(^A41G+{dCBhj=M&f+ORs*LwNB`vn9hTG2w8!;xM~pggxY=sjm9e2IX!pn zo?@>PUb+oPtkp=uzeuCVm9p@*<6KNcQxbN{p*~ zuIgEyCV%!Nkvm%#@aB*g%G69nO*WS8O8tC_YD9QPj&+{lFUpOC}pr z+BKnMWG(EV2)9OzpCMDxF!zzzNG&hUfR5U)5qUEne97=~r-M9bb{PXLhmXFBtR@qAJ_gMR)a zBDftS9YfXOkP(9;^&>(J*Et=aa58;X;iWl@0(zk~{*@DLGUMcuzT*ZjwExN*V@vxJ-_wlX!JH)hCk6ufpInnUv|c^EIJb%p|BB zTo*$H_Af|+XTjv6Taibag4a0YF!GwVgQ6HO*%28d3c`sIg?8I1uaPh*4mHnTSCZ=h zm4Bq)BgO`AKV=z=%1Vs~zy1lPfR$w8SqVhdis`v&vZ6wJa+upA>?|yoF}9fe@-4Oe z0~ExRA=gK^D(Pd67~ll_ldYjEY{`}(<-?i zrZEWyJHHmTuBoN@NDs0Vg)WnYEB(em>gRb@ALd=|G{Tb5kiB zQy{N8=Pub}PJJ%0gKdB|xWRn&(nHSRHjoP@x3d?1V|G?$SN9#IE*kluSzR!S6FL`! zziR*`oe6bAN}&B~`Tz;)#0ZO77Ca!)RZ%n;Jd{d|GJ#5A=yCi>Kx{&i*AUIC-Gw|P z{*tc&-NFbt$(3?tnfUXL!wYw!Kc}YgGR6s}kgug*|7p;D;i#J5md7M6bI!W(DiUYb zy`Zs(epJbKIRy3!Cxc~w5*^?8VRb8-XB^-K+S^|nab}GenXlOSEA|48>04E69t6y1 zG+xsnE4{(ytgOVk`{)MthmIMq{r-7MFT!vfHx48E#QmX?h`sPC~=(lZv$qr6Qx~!=rw}XJx z+m@{V<}44nE^i2n9qtdZTowLbRUOz1ouFL?CvLIh=vesU)%|k36B`UeoW8{4;7l9U z^EV+zg?bGjr`DILdM-LB{KqG9B1t+!dI}kfb$s8ON;qEyI~Qdqpmn<=Z8J{%{gpCV zMmXcOWknwzbR1!NZ*G}`E6f0-`dy%1I;?5KHsJ+QIQQC(4fUEpvekBJeX7sjS1RDh zg5emOC6yN)ul2__@7~4EY$Li``y98|0cYuuj+5w578;+Z?T=C35hWzo(T-K8VsJBeIb>lGdy%@TN*IWm-=$ryvs+^KD`r&o-L{4HYe zp^I{lGsqpqS5CrTOK7W!5mp*+$3!WPO|=3+U_l+sZ*j43C?5^8qW{k?D6&V4;^+g8j8c4|{0o>m>ym?I%^Lm?I4>_3Omp=slsWxw+Ms zDnZ<{)qwmq<;pnEOixkuC!Mf2yI<{k!Ov9xA64hrURM-$>)2{+r?H*Jw%vHgX|QA4 zjcwaD8#cCWJK1qhUS99{wyyaD)|}56&$!2&5^$H%G@FXqvYPy?qQa3|Z5)k0MOoOr zIhB}h3q7A{-F{#>?1u!$uHLR*7rc`0_uw{e1UWW(Djhew+IEdD<|%E_WZ{mEerObI zYIDuzBOND2!N^chH%`ZUbeBpjKYyMJdM0k3Lw8%7NQ{bhfwGr&N9i}zXOaT%^THWD z$cEkmVg5h4w89}Rbks?{9pAl%ZFT(Jz;Q9bF2v%&N-m7ZXRHFmp}XwvB>hFr zzvDm=7u-aOE>+p4vV=UDIcce2k0U?RFb0t^r3w0ooObqe&QgqhSO?V{5hrZZYYNLf zmEaE~uJ6MBft(;aZ}L2GlIYGuxB}1jfhMh&3<&ek)Z>S5Df^XDox%ly+w41g8Lx?~f?1%q5UB>n{C-G3C#encj{GSy$Hx|m zFFe!dfJx-5u6_Ox_+g{2%q%F7N9lK|pSRl8p8;q!+9sa~!sz=l@5v!HsjmL%{g`HU zzFhT!TlG5HA%n9wVaNPYzxN~_YyWALcKB(DGJClDdS*;*N zlcLdPZYY7daFw1UTfp>mP)-R(b#$JwaeOD81##>TZ{T&6{Q5~#2%=+wa zve8NiUJh2z#zgWgxkfOyGa}E>yAyDzE>nBwp@dh^RqD-Tf_EFirfYm?sKcjH3%OS1 z!anFYB&b@~AVhxcPj*AFI{Fr8hUs0n^#Mm|$!hM{A`?#DBN1$|l+G+YH^pvN>ra=f z0@|no>hfw>p}>v*LB=K6(nWnrggD}4qK2IEDJ4fvA2m+D%i>^@9H`~Xi*+ap?20RS z5NDzc{e?c7qAJDk8$;KsqU%D<3jAGzW*j_|$Nh^;KDYgBM;losCksvi4gl}{Mj9OX z*6uY0E?CB52*zPeWM1KAYV~)^ewhR;EzWFPzx9H)BY(296^%9#XQ!Tqwrlor`+l$8 zE&8z>o6G0Qrk^&vxgTrIl$vEwv?MzZ!WP-1u@};~fMizI1qb?5(T4C~zt2T)rT_S1 zpJKBoTv^hrUg<^gL56y6F4}aAfo5a0DG!9ior%+CEO2G$1-jV1f4K2COL)rzANw{X zArEbWw*6W{h~bZPx?G^LvyY|R&nk^~!@OT$d_M-JFb8>Ee)yAR0hgUxG;%QM*_X?8%=O5jk>fnV2EuIr~s40G^?6QH15841426 z82p>0A&uIH=N$PKAZ)h0)`W&KZrenNOSL^3NJWU-Ec*o>oZl?`xL*7vn4CNR8Tmn? zg;ZVaN|3yy&%s7Jbn@uc_2T+y`FoAUw}@n~Fw+MB!L8PV9Q8L5I^e&rwx$^}>XI>v zum}n|y+8C^M?{J~{RxrLO~qI2iM+_@S#~-TyJ5Yjxx3Zpyn;j>Xv@G%lT8dQY2q!& zEb#^!a24pyzrb0Fa{?rGq-}I>W*BXvER8_%dM9W;of>onzh^EjJQj`!?&PP3r& zl-TZydp!(#4-T1Iz{OF{Zkl|d`bNI97fDU=+D)>ZZ=2=ZSGM>#xVE)$4y3F5e#Fgw ztCw@#+$zeR=ujOteARpR$ug6UD_edPPVlu=9`T))Kj1T$e=7dGyy#tn=Q^#ncQVX! z80qrebDjD++$vK2;UJ#10FBHPqxULTE#Fgvi^sz!6%(jl2S&`zov|PGb}PAG7u6I>+;*JFAI>NdrJSx)w}UPxx!9nR z9Mo>nX)~O<0j8jGEN0Ez(wtR#F;i6jBH0fXJg}vjS z%{6+20?r0spEp*7e-sGp)uOL759${rz@ZitBPcNc1mNTr7oCwtUin3CBPi)AZ%kC! zN|_f0{^4iGuxO#&Px^KyEd!cU%Ne@%w;Rk4S|36Lo-ud-XARr1+$vW}ba<7kNO$tB2){&d!+XfPek zPFT$D4yi(WVV!EK055~`r+X*qpXE*gE`m?w zjXgKW&*L`bB~OA(t|-hS}i?cOWGG61I=`iCU`gJm?tuD>>JG;Q ziyw39JtK*bA2(5kg05r1@mh3^8g?VlHdJ@4PRszHix~83$0hWps|E_Ev6{bjROW&F7p0`^PlJ{o;R?jU{E}B2`idl z1%gpD&p_jXfw`IT({HwYgx^+v{Ee+{5N@xg2WMc!KAM+1GmCJ^zG^Fq2s^NGU(YpL zHmUUMi$w8o6zN>Yc8lZ$U*byi+Q8S#HxnY;Ts@Cf#2z9SVr=EmK~~~_z(kqe##Y~g zn-Sd*@3#jtUAD7fMKtM*e7Z{qx!gA4DMN7E=3vKZa;%FxYbnBU`|ZLv-sx6<)t|3Z zmx_HNatfv)zC0lkY<=WMwn=*4&X1zAe5mFmqacm@U%M5 z_CcyV;qZ{6H96lMp#VrDv>7K|wkE=c+U;}phs4k&38!%am|HWVw7P6IE9>M!XdRnu zKpo#NdWSVWvY1|FEg&zqVE|UYCwR}KHGKC&eiXef8xd^~Sjb`d+bErXg@1O+@mSSk zn$no9P8>D4Hn$h(*FbU>w$eMO1&K7+RSR$NQP%+KSn~{uS8^@l$;Ma*8fqcDmmEB&H{? zl9Gwln>W9tzFba5oOkkeCZT&vZh{|UhFg@{g6eNm*osOV&2a9_lg}udvX)v1VFMO( z);=DRct?b=dCw+_`un`5G>PS6P-jE$9;DYOgLI?G8qYrv(qUI9H$2~>F6NkHz#vbd zOSF*~#vN2IJV~}g~m)r%3vO(B~{TUQ~Z$y3qa5lL{ zc!#|%P4!Ck4Vg@N5U$(*lkol$0aJPV81nzG)wMkaUU~wdN@J47!<&AW`vNbd$j583 zw+FA5mC?t-8ik1S-Cf?EJ;0bw5tsT$uttPGy>Ln9hSQokonpj!Rf&kf%h$R`R_63e z&asQTrW(ya-CZ_TXkt0WjHjw>wsH=fN&{u}81pIt-&pcJX4M}}>`6Bj^IiIdANX5} z@buHlaRqf)NniEAKH7HFr5c~g^I6N?Tq)D*`yafZEdJ0^-fAc6C)(UDiu)seR$is& zo6u5z-@@zYlrf1KP4uC{+847mvSmJU(J6%}C;iB@*wjE67duaW`2vNtlH37D${~ce zMFHj{CQR3{n4a@kZ9h`6RX^}U9Q5^2Q|Fp**>T=f<=?v()V?XQoPSuLBz{Dcwp--*xpYl$aP7HlvOm07DNbq0P~GLQ z-@U)8e8s6%aWwJ&-JM-Nhe+E8^axUnwbrW+(2ah^NU6vW&1+T?Z&NWL(+q9Rs~pqP zf^X+!$$9mdS%1N8R~8kqSN51E&KAl194g}ii78D?gJeYqy1sNetvQBN8z9Dh{_Gdu~}ur z-%7zKXcU-L*vdB=34N2AAnll&|2UdC2aA!03b~jD!nD}NqXZPOUO~J;5K3V_1mhL< zsh1ar1p5bFviG4!N+xURhE1#vn2iaN+O^eGHu^I(Y$DMVHlq#w=>6n9BP5-QjTEYm zk(|l<%>e>iGd@Klu3yuW$jKGhmnHF)AMr=6iqd+y^6{uNQCQZcTQq{xxiiy&->38J zN6;TVHBgW%ZP5FsCxZ9e5$&o-68g&-^(yOI+FS%ikmEBeL5|g$%vBJs4fDje)-bto zGz(T=C+T$XOZ8v4)6iIMUN)Qdt(n^S&d^;m%;((L=uhk!03(`*QP2Rt$=xHy+mXFw zSfQR?wWBj)Hj+@VMr}5NWE%4}hu$kdyKmd+j@PI2sBJ$e1uR`_S&KD7icRT-to8P- z5qHe&c|A%X4E>eI!5N!}XO73bMWu9zZ^j)H!l%_8Dvhv4k(5KcuasY54xm=n$N?Qj z3xNX;PsUgO8b-#T6EXd1c%c3PRz+T*Um@bql<}eID=tazmnuC(en(nj_0DmL<9WlE zaYBmEkyGu+jzuO#gMEjBs#Y3Te3^5(HOrKF3n~$KS;00hasfuawbEkK+ib--L>D6= zgCQobUZm5;(g@9pCK_dE5>N;$txKF?o`tC$m?HTHH?*VHarSlG(xi!sZ?YobBb}05 zMD7WuVIDR+S?sewXxLISKp zFZzEy(rtP$O+J0TEAZE4z;lxm{gi!WW0!_i+f^9J8-6JL;OZ`dF5CZMB0&3EJgr1Z z@ob%Y^rNIf+YaJyYEQowxS5h%inbcMln&m&HDuoh#Ld0b!Df>B6}_eIW&1YTY`n%{ zh-N_4%T-Bn1}Cu%=4-J3^;l>UMXv9!Rb3D=RFT#87>c+s;$sklb$vNQyH>Vi8J7MO z^x!G%@POt6R*9_`CgzOj%D2k?5eqQpI|Z(pzWt;{+|kaDbcQA& zwWB6}7oqQ`4cCb!+RXhwAf#fVO0(&}$pL|pz;l{1NtVOdut7EKC`}hLpEMBm&ZG3m zz6p!j_Vb6kbeV_P6F-IR`30OOB`FoE`MufHykT5&-(ym}!j7VYMe7ELSP)!R2=cpN z0}1-oF_e>QQ8V-jBo)es)aw|s9TW*n8|#6`wyU&PQ}rZRo>s?WaBQnq>*`l|q!3Xh zaeW{L%dhni6S~|g_RTH?X^$$X$!8Zbu_ulqRF~WesuaL3x5ukDX|8b`wq`l^SG$=_ z^>dBAJ%+(cQtXokgdw$vP)&4UaXIL|-nZ=<0v+_ZKDXStoNLz&4Q6Q2`yjXtpyF(k zBZ+V)GX#?u-J1+gMSzcl0U_W25WR!i3E!e8{4SziNS1 zcTwZbMcK$6PVD@D04>P>1Zc5TBCh>6K+72=iM;P`3OknIlr#?%zih;0(U6tQhtsqT z^_{$W_DuyQz>zj?#|MjM>qol<1ZisIAh!)xsmP^Bn|vU>z&;=E*!4?K6Ax{L_6yZ! zTQ{jvvKBnuB(jgprseRD?aJq^`|A%CtxJLNiA})@p-~5WS#6fp8NV8l08xLCU+|Lc4y27D z7njRiHJl52$t)L^l9sTxO2h_}3QsB?CZ`tY2NJ9Xc)@E6pRYZlZKb}4fEi~OStbY-==F>`HD%gr%e&os> z+P52W{1Z_1%>Ah%U6GaMs(I3qPO5GTzcq5JC$Yv%Y%xqK#Fa`o__As#Sjo0@-N}fCy4uQYW>tCGAL+0}c) zkRA**Qgr|9bL#K}63kBv;3d!p0eu1kZB*+v*+Y>+W`yg%`mG}d3?U4w$(Xa~cjsSd zn@$zo4hv}p42CWu7@~j=8*l?U#g~~j4Zbj1n#fH8l<#Pg{*g^8W2>91ul2o=F+7z$ z?cCz|WhPp`X-{X*h8-0&o^DIg)yL!8mTe9IL5?ee3KBW~sq*M>CxthdRdE)&7H~It z#p98_GLFs9Foy@=JN6KstW?pghqPm_1Qvu7a|n3R}s^IOcuakd48$ z8|N}U$eC0DujC^FR=%{`#%w?C3EwffP5`gE+jaP+8*=N>tTV6@c0$f(+<+E#w=Ow~ zp{gnfNGtK9oXc9*`i>odbkf`lk3@6|jUkB-$cB%lVYk7)l^w~QaI}Uzjw&KT2zT_ z;wa8Yr6xVeq%8Bv;?c_K-2oZXPIAQ5UZ+-vsA?dYA-q@I;L_l@eqPUmV^@xqAsyDe z6O3^{ax`bIY5$#})bDR94q$Cq9o zVwi2G1vgI5V;zOE{ABFS^E>F&?1NkPw@vd6ypt%|IZqK(U9J~<&BU`+*s>NeO>D`g zD|KD!Kw6;M+ZXVHQ$0f77hB|hNzC0b-gdSeiXq7r@~Jsil_D`eZK2fFhi;1Fsw9Wl zIWJH=cL!l*?q6M-JQ2Oo!~i#62_3Y@XYfc9FJ-~5AaHUzoSKl9EcCYTY~Ef--J!Y> z{c9|qDjoGYyE-*nIH00r9P6ebz+u%x-7Ncx8$mNa1~!!1YdS zN9qH4Kt*)yQ7>H8wTX64c7EGJ%^z}dvuZv8wucrmZm5w4^S@rv5X$d1Y)Bz`0t{9P z_k$;FY}rgD9_Ibtd1Y1fi_CIyFb(J!xxv)wAVG3m`C1V&1VBTqembrDT4G>rX(vaL zIbEi>Vqcyz^jc{m0m3NFu9CK7ez9I5o=|~lreR}8u0RM>m*UpC7;47j{KOQL#!@_{ zdWOs!j0CM?$40}yNF(Uuz;ARzfDlty)7#N$jmuTJNGA|;JE1|LH0(^E9hNVJUM}AD z4na-xOojoRE_lk#w+4(06_peL-xX$asJ`19f1B^_Y_WSe&q)&AH~wtT{%kIRb9RAp z#Z(`Xn2E@wyFFR}k3jU~xnM;z#o|`Z{5>vNTTI_l_!PK0A7OV1X&TbXxYcKU%c@|MvYfxK-Iz`qtSRa>RvE4*wo<5#^ zfqTW=FEIjIb;5wm6z!ppudxGk6?(t5pQ~~v8U$#HJQz71*?RaK0b{GJRchx3SI1BM zCt?F}08kQ?N*d5jAMPf4#2QC&7d37${2N|y(YzrX3e!;lV9v#h^v0?i6JiFtDe^C? zE{l}4C9llV3?OFF=!^4SUMLNUA2VQNfGJ9TS3ejqWb8Ca_80X<6>Gj@?H;wzg#kc1 zTaY0fl7MkcILyLE3U88f7fJ1C^XkM8+GX%Hkp8TvldD!KSC+k0nJ%J$qZ5WT5nd-J zQvb7`*=a!HV3ThKcPYFxAA%Mf^J@h9`=xPdoW8Nu?WV2$1hF9`<|M2;yKsPFjLfp0 z5(E#2Fd26}y44T5W9#tUU9c@0n~s2m0?|LvKbjHleB{zKh{Yh{o1ed-Es#@#AwHgL z{RWmx5;C?{DAA^eQ{lYeDA5Q_pJzwQi-qx*zkNC;D$Sni^l|tidM6mp*r{VZ6djU{ z*fiN7jA|sx-vioS)57vUl)T5ZYLIk7A>eF$;A^tnaq?EFb2vJc^mIyZv)Xv8MziFE z-uFZdZFoMNzny+cOT8$028wpfbwZWJZ7cbcjZcH>Bfklwm7&0ic?QuUd6 zRkT7ox0-M%drfEfQalQaQ#*BI0Ys{FYC9USiilZjs^%a}{-e7xIgZ1hvD7lZ+1H60rJh z9{wYe67iX@<<*ytq*>9aw*wCl$AQ1)bBjhW4CZfqCYG+MS%ve)zFzrerVs8t`Bx3h z4l>t`>1;UFXv#NJ~FW~#7yZZqC}y!Ej|bteG95i5ahS=v|h zj)SYwa=^To;00b>#qL4qk!P33Y-bTa#Q2*S>STup*u>Xe_G(Q}&AH&?^51;>uO1k~ zqyHe>v-x$D{*MrLg9U3ncSbqiTYE%2wb4~6I>?TNqiC5nQP%VqYMwMgM>jyeBf7MO zydHgCc$-jBnHR}s#@l0dYg&QC!6A2CHWQwsa!_X}BSJ%fI~a(8{tEZ&`Ka~}kH=F? zA^@@??zSshCx7e2^84WBrM+)9Pp(sSRWEYHS(^(+Od2>;Am9bGD+?hR-DoT}r3O zS?v36xuG$UTQ~h>p;kFBg=aCVyi~%#K+E#3Zpl?1DY9yqf#^RTd~Uvcs!pwQM?bpwO7DIH6IS2QOw}6h zK96d1b59j!3`-xE)!zT%l1JUsQxCmyy_E>AjX!}><+M-J4BS`Q9aSWZxujl~iU;|4`u8 zm>4AYc8e|2-0rkTK71RyVMREwVK7&3>2%bWXho34ng}GO1Khepg9TyX(QoZ*A_&5@ zA*+0^sKf5Msr%vjukxE$q*XE3n|pE(u&v|j+Ku4wB<%-&LWZHbBrWQB^YSk+O}+;5ZYyVDpIs=5XhFI5$$q})JXI{9Qo#43|T z5Yqk3p9wW^vak+9wh)dDL%4!+93kDjg=f2LN}4-Lp7f8ou5U)87EVb<%v+-BG?9-8udeC02cN*L24@XVDMv2q>;sCW9)?P6o(aGWER5{kSX$v8G#~2olnN{Gq3v#?cEDCS6l+esi+DR}w%{9CE zK2med3jKZ{oOx@yl++SyLg7G*C(C)Cz16)icWP5vyjEnHWv2I$1}T-o>t@?2AVw)x zq<;z65~hRT9lb&d>}wTswRw`QelUV6;;YieTe!_;&t%-DFDe=azVmNtW%{zuKthtZ zY;B;f`wJxJ-7f^ogFledKS9>82gpAds(5x&yQsSAe~HCVQNrjXg=K<|xK~U-Qy%tU zN8Sm`Nw0ea=nmJ{&>_EJwKHk={OQg*JxQ34+K3&q*^g&XDe8X~45dCg&g~-Wf#O5a zLB(W{Qkg6y=Ld!-@c)bxr>}u$^BY=m{vDFEqzgj5XcYg4da=?;{UL|VClA*OR+IqJ z>XJfOx^(#2aad?01+KffcAB8k$L7d5eMyn|DPLJA*H=PIg0ltBGekxIQ3~BiTpC3W zPRod9jD2DFohPXS_QVmD-KB&)P)9YBTP>k^yAQr|4p_&_g-|vH<_<`q_kdppKtvHOrMFU z+OT9$$zk8+fy<225cf0u7`8E%Ho<@s!$p@C#r{1+4kUCSL_!QVUPVM2h98Fc6=gBb z)gTf?B_|m~)&8?O#j~nrcM6bm{Ns4zZF#%ZPQy*>uRvGl*}rLCuji-M?e6K%>zA$j zOCqQm6!3o#if|Ajq;OCHqz=h&3l!f`UNtzM9lRaP_C(;P$HVvkYSUPGyA(4ks2^FDnLkZ}^eFlc4>T_yIRvFo zn(nQeYHDD5cdArl-`7%qwj(f}6~`h{-IBthHkpagj2qd@tfW?m z`bJ$($qjutE5)hAXTRj19q2aBQ+`yC*(LzlYk?SrH8A|q#Erkidm07Q3@|(~+qToq z!g6Z3{k$&t(&3tOK4%_(e^VljG6gkNUc)DG+njPF`39O*dNc3AV=@w;zbv*6e0}*A z=u`$$>z>@b)YiB4kQY7q=t#0DmwQ?pc;0a?b#KZP|Ji_+X@=F=%{)(#M2Gf7 znJ{^8tZueI2yJ0ge!~`cfnlco8?OWZJvtyxdx>>guRa=RhZ^{od+zb8eC)c070n43 z!sq-AcbMxq5gy6W?$`9IQ*rASO(rfyJz&lRR5MEtM#O45HDmDAZoe&xoQV&X?KU6)#zxVd$@@+RTS;VpBw1|3^Z;nt+6!m1OxO(*6})xl2| z9)$L3V!6X~VWDd>v1v-sVn(2RdQe*oE6NU`)pP>6W)_Ez2yP8(tB43`$G>a9^bi{sP9)^DM;2gznF%4Quv z1;VB9awo51uX(zuNI0<0ByBeyLNXl|V|=8Bc~5NOhw*h9rMZjp%}$CdsAd8|2cPT- zn0IdwWL@_|oyio3=|@8xM4I89TQyuZqMWZAN7b;m3~lO&+T+^|o!LjPF!ftGMbLUI zno~T7YvA4Ae$t^Y!iPXbMCwjW_R|ad+}LAW8>G5%$Se-ceb)GdU@FegFda#-@Wl`v zpUHV8@49?c_mxY~)igDEQwOc^)%M(1F~!qvWy$sZu#PO_CK8Ff3bcL7ZE=Z-dQ-Ro zra+=S%nf9C<-GKtb^Uvcxf6WYG8is&M!YW7c*>$vA`{TY9Z67TcUMwifwAe*;5`DQ zqyS7#`9hmssIH*TgW6nmxIvSNRk~pt+6Eznr5~P~JVG*>r`d;uBiUm7!SMUzz&5CI z!Dz);!FS~!VX4RXpg&nfnSgBGkzPm28rL?Q4eDvGcJVAZX}cTNl~i{%^C7BJr}WSTBRyRJ_Z#%Fb2NT@f#eACsHWA^0S5TT@~%*_)a!UH$zRKNOh}vmG?C?qyhQlkS zF%J|lKiyLWLbWnLt1t$N_erw^W2rpa7np<|)dkd9Q@KJ~!AWvYlS|%b*=77!?88l_ z@#8sXlj`G1bEKZAY>EmX>rXoGF7EJn?Nok~y^8t+`l z%cLo?Ip$p=E2l~_J67jG#-+6u)F;X}7@d$j>A>6 zzaHv{V9#|T(?8{!X*Dar3oKBISYuSmk0hN}mgknXYi!ii_#mVD40ou6ys`;9)0$eU zICvh0p@hnrJE z2DCmcZN`El>e6#}S~p1`St?JrMW9$%3ps3=`eg5sV1z31Xa)FGbXPE~vGiJCia zP2=$*SEvi}J-YEaJ?_e5k1 z+OaY_wj z7&(=L&{{E4j3LyRE_nV=S$F}O-sm?aywkEEs9$pvu33D?R)WigAweizU4NB?653)G z)tM1JYbh=$16T-UUss=GkYZdEd!lWT4!tg#p=w&zK3blPZoiXym#`>%=?S{!ZyBU| z>t!1M<%>!_pGf}FK-KdGqNLWtqV60LO;>?_4FXZ=Ul+;NOs~IIz*`=}t@(Qq%+EEo z@sh9o(|)inH^P6d^SHt~z84D-^P`1~xErn9l;2oC*@*E<7;L%bu?d~Lqbj>6S>^!M40x*FFbXSj*mvo_<{>2LK+?}SSAIjrv z-)0%fHa6My4cOyn{H!DB9#X}fCal6Y0Z5lB%Y1%v^0Jb~C)oz3BxNtqDIb7|pfF-{ zbip$raN1p8F^o9V!)R&GZ=9o9WJ29)p2@Ayha2k>*HnsDxVA=m?Hh$KM)%>rQ#r?Y zWF6$;Xdc@SQb8OkH*4$iCeDGcgbC)!JWKazYe_s0fOof*MWX1QY`xmSVLy|6sqh@K znA2AR$)IMB7jy!@pC62_cA`#oDQ$aMd<&Z%Qs@O|9ARVg!}$?M0;ZozuB*;@p?Rne&?%BdQz`XIvpp000U-AP{FM}H%0YNE ze;l82Ju?P^fqvv6@rd@Y(Kj8S2gQUBwho-EK?guT!^WbvPHIFJmf#qy~F- z<3DcKA>4InryJmbqj(>BLs`hyJYz>Av4)T!O0OF zRIeM%%R^a4p&?b*Cw^qwC~&n1Pvgm7Z{$tgFf==n#5jl`elx- z|6;3J3J-5um$`qvV<*H1&+N+{o_bJIulR3D@tz!}cXAVvpv9(pv^J*AR8aC-6jR@( zknalqFHQYzasS%*Z=g&u2aNvT)=PU7xT|*7-5DJ!D#QPpBha8~qQ2-e^nfJ7|2mkV z*bz&&A9-5{jwtlPet^$a4tu?09pfRX8*TU(w-@yLo3Bg07Yb)??1QiO-oa>q)QaG8 ze}3dr>I=%=$h12{&BLyCM_R5Dp7hiBYu+ybu}{T&MJ~^LZ^NjD0bVI`kc4(Sx#fg0 zUuNSSF_>{gk2m%BxhgAzsI9~u;ZFhvqIggD`dblLb_PJ+!9j_$9o6X34tx!S`(?uSGlx;|ZS-Lm5_h2HU3%dY3;nrXn! z`X2HV@?WmHBz~Yr(;XY|PDIHi*>dKpB0&F|7&)p(;>wpyLe%#*3ppDRumIF|OcBUx1CUa>4}(dC#`o zYtpE!h$yp5qc_@O@i-l_8M^km&J;u3*SNGlNeNGfHP2cc`eAA&e1eh5f+dOBxN9r# z9TPBGf8=Y{;sZlbIzFX9tVS*1QL+}|5-wDyY5|Y@w*WtLw68`N#tmNb?GW=|ikwI6 zcqin~Cru{K_<*p<-(nJ~SHeZiLStX3HH0X{oSonTewyteL8&ij@vqcWbtHbC4 zpEB0%w^@UDnuMDnSp|b@vk@>WLht&4TNP8ac$b6xU&x$5(rFGH^fdqJkrcAzE&|V= z(#kVicbfUkgpF`ey>=d~-9GP`!#}n( z*8&caW(v-)OAa&xa65e$_jzbh#px+xaka}*mND5`%eF|DyoB*avABac@c=B>by`Xu zmTXJ;`zMg+F!YXZ(;F>|jeK)3nfcuDmq#_#Z(F^vk7r4c45&XoV}QMR1a{rUb^LBm zvn`&$c4_E!vKO}fu2A9xTJ-o#clb$B10@mNshON^{Wl1E8fQnO3%038m<7bM_rkd2 zsq6{p@h(gwp`CwFo<9zW4if^<6Q6b|K?V1X;sINF^b72e-y4gF02kGa>{9I94EeP= zQcf{G!vTYdi9w#Sf$~3eeqA*?9Zw~fmIj|fh%Yd_zk}z*!0SF%)P`IeX;omN(9NXz(h% zLiDqO>?+9ei)wODdDe`ST=Qdgti*E*m2NW(sJBcNZ9d%yGruZrkhs%qH2bXd@1VRN z!}7=Dn6mpQl00nje`Vim-STA= zZZF^R^Zi?C@6hTJ^6zy>rM#yAZ)<{!Ko*Qzz)$SKt(VO;Xmbb<+yOxlagq5l@w@g2 zEKLPcQSv0OV859~Z_6G#gR(MrK#t%ZOh5VL42c26x_rLq*&Fn#v9oqEQih(|$8Kx& zmv_;gYaLxV(>hGZ^zg^sx<36G2~R;EXA^XJo?VwWkgFd8;4SZcJg_nsFJ3J{Ozb0V zxiRHx%T!OO@c!%IYxKxz;P7>Q!+&0x6~cEs@hJMJO1AbM zdUoH_vB11p2+Ls_OAH#pA(8e$BJ$v%@_~bW=}5b^0sH_AD*w?93)4F%lrCZFo}ap} zxZY`yyXvj%GNaFBd)8Cs#Bup>2gfQ5I81o&&I^KU=nT6SSq_4Tt*lzM=0OS!+eZ^3 zjMhSo5p1sX)^}6!Hq@XwO(B6tSJm&5ls`x@?y`qnMi({<-p!b)d zT|Y@O*z<>8Gfo4ijW_oM{9D-5u8ktbY2yu zC{Td_2gChuRXJJDc8UaJk*y6sKBPhqwFOFWZsinDz^2-lpI8zu+k;ohomjnspDWnp zjxEKV|JKOBbdp4?c%fm=dwvK@+p@sxA5_1~JT36FI8dO=dE#w?Tv_C;p@w#v3so?J zUhqRJX}`N3*JLENm)ZdC6%^L+^H}}wmU?rfGP`WMPuH(;>vYm$i?>;h828Eif%cW# zy?f*aTI)6pI-EnFxVS$#Jr(A#BLJ825(o~1TN;w8wD8dz&=Ff`_=@eNK4OOZuM#Pp z8DT34&$}VOs6tPCV>T*VM13lWEcOS%j1m8`fJyEiPC=z-N$$3jW~v5s64y>S>tqcS zvCZHuM0Cie#`}l9x}UDT;Qe4>A}Zt-swPm`S(z6qAU{W?Zy;aRm{s@znoHr5ab8-b z!Z!Oe8>E&!jg-KKd~^&9qkUp7HMTI^0B%xi4na9dnI7j}s)vwa@zeH^tN&pEjJe9q zxjt&y#2G4BbU3Zj!a!`{W?sfehmF(lqQ-M`#=1eS*|8EYfgbQ3+9fWRu>YWy=M*sm z_;Ygge^KMIUJB5!RiTYAO=0i7I!ks)#@Q##Of_J{&g4iphw!b|#%w|eh8xTeCv}jAgmwg+eO_?ZKw?tyZSh0NHWSCQI zhpT%T4*MlnWnN8CYH?D9)M7pkT0`C~3eY5e9pR7!G(_Cz-=;=-S4KCQnjRFq zJ-GZa8tcV@60(chMMUrOH?~3x326_Lp_J7yzXC5w%YB`w^7O3Z3W^iQ`5?rMSL0QT zRQ#}&!$QV%ZH+66XE5)RL6(fDk%COdlJ?;3mqoqO08u*q#lN4`!p`uwM#Rtw+xNPG zF>fVT1A;QyVamq`iSiXxER13WZC{foJ23X+ijsoTJw==R@_n^Y;;yZ04{3|}_XueU z&-Ng@^fcZ`EBEC)KU+lZf|IH$Bt*C@sdc+txRB2PGDGwj|HymSpRU6#PtT)?M024N zMjBq@pWQe^h7Dh-K(27NtVzjzigBK zUq6Ef;`1@}KLxF?qa91A4vWE0vY@bZ&!e64f#=WNFT&MJlH_|2aGO85ogM#Ds4D6J z#2dYUt~JEi>$hmJky^;J9~w)A5-5oi?W*t5^UZEHzik*Or(22|>4UIG2fJKCOvqq4 z)+6ZC@Dhsd(nDfcd|sJSC!%$)k^Lt1c*Yd!o_ov$pB%#)I$Gf+{P}*c%X1>kCanQhA_r8ciq>c7t0M$Ce$@n_$l!avBvW73>t&M!z z2_WFQ_A)6YS8YMa8jBVLtt6I=+K0>fz_M~U>E}|(eW=qXBXEXnO5D{t3&;#RAq)4B zxl%tVu$A(&T@%5bbVl^qL_LTl^M#4C|AjgS2<~)-BQ0#$HZY^X@(@VmtDrT`G zSO#q4y58qJr9`?N0FIsm^(yCD$Wc{88}q#n@#udPMUOps!v*D-#oeJ@9RQ#s7j(+Gm zWA=D4wJrgO%l6nY97Ru&-8GoL&aiOO~o{@pG?L1~pXZ}C--ZHGsZEG7XE!GyV-~^`>hvEbZ6faPq zMT)z-6Qnp4*OcP!?%o!6*Wf8m2pSwty4GH6e_eaO@A>|p^YgiqXFm5FbI3iWjA>i6 zzQ{V7?qRW&P>tQ(u35&rRX9(?LdSZN_=3z#Zo8^UG>$U+mA5$0{;KcFcp%9<-SDfT z=JrIn z*+>>O6f9>kRi(0}dX*f)25kwysL>UZwH1^K?goX5_Z4)-^@LSa0?Egub+f|&XAj2h z+DpeMvfF~ZoF~j$zt1`~mctCgFQ{`i`o)dWlLW7qbrrVCA&D@Aa>p2~M5&SplobB8LQARQ34}M z7FnP9?0ZnM;2j;d+DSezrUYRxqB^{*ONBwh&!MVCzGi8p(kIT)`=KI3<*XHAh_WW z%FN&2mQ4r{z{srDA__aEXy>)OrY|eT=xib?JBFy9acyeqxvk!}HpG&lE>c;HTj-h4 z>%9A+Nv1ZetC!C1t=4Po0}?446S+0970s9`a;2r{q3NfyJhgF7DXVlU^Fr3XqIXDv zyvxDNJYwDuUVuVdG<;Xv2XMzFHgMtkVC|_V{mWzW8#WmOE@9?G1OS>wA5KRxn zGvejNfmmh1xNGldMa9-anM73D_IBgu>mUdYcs5llL&r&(rJ0Wk^Uu|lZ&TEGVmlTw zvTeWCTE00FqfiuKozmCX23hKD0rtJzgfLC^xZ*}*@Qv7UyU|pd_P|ezW;x$~C^9Fp zW$rK)!P7TR7+ojMAt!4dB=LSfl2LYJ_|ZpRYuh11p6*4}Oj+cIHtIr$cW)Y}JaSyj z7c(dFqZsWw)CzYcbjuWONKndhzyi`Mvs2S@#~x;iU_Em&HPh66HDxuh_o*?u5aJ1d zurl4@{Gou>c-xpI0iwb!fg>nbEjj2WlR{xpSL{KxeHw&sq}fi!|7B4)sZr5W=aLp3 zcTT-!{Ve;}*}kBRw+1O=WLrlP9@cw91{ptImfGsmeq_`QRL%sOB)r_HjGIe$ z!B<3(Qbpq40owvoM+dq9AJ*TQ@KGe3Rn&C!^E(Bd3q+!@=R^#Ut_5drXK!X-M2KuP zj>Y?P1}Bh5kOBd;SoVwd4J69xd-l=OLnH`jZ5-C4o7n^U0>=QtpB?i0LPfZX@8r~z zRL}g*@Fm%>R6Jy?kLhoDf*jAVlZ;BP^6G*-fPM>s1zZ9uPod}cZ55X*oU*j_L~=C1 zQ9tA)JLX=!nJh`94WHR(ai9=intQx?AmGpk>|>R|z%psEhiPt*5Z1Hbw>6+GUEgmw zJ9(P42_2Upd8yrR`b05WYX9o~46}7W{WqL}etk}6!}Ts_ELhFapgH2p59#Iy{JGyJ zbED~L>zsQt`qt@usVWl{sk3_VKS-!y*ODx1SIL@1R+e|O3fLUgUGQ|y(031zmuZh5 zthpmz8)(on&_zrw3bPNA6Ghb$Sq!R#EZv*d&`~5H9wc5z3w-K7z;L0mQl;p8--aaq z^ys^h8v4fxZmlMx4>0~fC8cuzkHSxJIk6)ISe{XJT^sw%O&`r>;6wy9?~(*J^Uf!= zuS-tX*m8Oan_QT2sI=Xq0nWi(euBftA zy?=VhH5jum1=VtYFyOOoToF677|hB^B|3 zM;5vi-NkH}gRcoFOiRq)v-%5IPh~qxT3sOXm(z&HweQn)?voBf!YlcOw78ARt0pI3 z-ZV$FNL&ur*;-;T3~{`ZbQ-7S5fF-zZPu176C}k<~yDI3#tn z7)>#dCDBAnSBLTbyR7N;BbV)R>u$Q%SsoO<N4}vgecTUm_OV~i z87#z`gqWFTK#F0^S-T5Vw+Mf9Jrv?Yj?w+dsX|QX!@xEgH}>j zl>;M5!FLWRvnF6*9BNAE3)uNenX&XcUc+y#YlAeE?>g~`1bJEkv_NuR9C{fbu+*YY zyr0!UaSnHSEW$Oim$Cfi)0b>9BtBZv?|pAapSYXmA9u4yQcvRYue4&=knCe*8B7bK zVQfCX)5~y6c;SFY9`0BYPk|ZxHrB0%B~l6k1sZCWn1LfwX$f1Sn%BqUWgd5?-Q~)a z$95^2C z(PP>wxIL~F-gr!v;W~fe7*)&t5bbi=J1z0Gs}C#O^qFDH)*MTrS^%#xIoHxMD`SJw z009?+dNA}$qtX4Sv{vWDaUQ3m%KeF$4a>Y?hD@^^biv4i2>bMHfemCNdZckqa>us)_wMkA~`-jlTls`8(>2VV>iaSFQyavf02=Bm?(-`-1aU zQI>nO0B-K+J5aY3?r|((c6Ump2e#T~99-jXpPsBXJQm*nvfN2E9KXMCbh}&DbNv3< zBB6#XVez48pK_YY(P34B2+50u53YFTqW%#l-|{VW(_=cKb2;~Xl3vT|+K9{#dMU*T z`u6XkB~-9>cnjiu4o^v1_Vil1;ZnGKxBl2yA)&~&AVp~LH2UfQn!5vbNZd>A;zp+f zq;cPC_!*V_^{PT^ChZBl$6|LuhusFbpF0m)@_zT&!YbpQm#KG}FN?m9LBJvQ4r7UO zT!V-i4bOps{4*yQYTFwt`6>IFrdr4cU-OB$NC}kEnqw- z+gx#meT&b#1##(jcW;UN>C!fgeDNWmh~2w}t>j47Ty`5>RPAewnnSQdzZ<8hx%c~w zlb>s`F>v)gG*Yu#=A{w2hSA+DEUA>RCP2|_{FPE&hjtFJm=JiF9?a*6{ z{qpftwWpD?pB^Nd0%E_IXyrn|&Pz zub#9&#KYRksH{s2$tpj&7k6&IEgVk=K;5E{)bEzS$30PrVEmp1c>JKpEk=*P{8m28 zH(B^K18|g#ONH5M%OOFcX}hvZ1o(v3agc^Th`;4v*>KRt&~E8d??T`w2R2IZSEi$$ z7QKcC(}H`?R4Cq`_%G2#Vt^`I4z@n_+?BPf z!hn7cJhN5HKYrjuQuRWd98vA1<)acUCEq%7l6W#*bWz#w_`Ts2LHQ6)B4j^nD^ot= z9zuhC-Mr9V+nIb$Re#`&HHr?Wl6mmZal(Y?7{XjnpB7sV3Wu&c5B3|SC2tf4766xLLpuCRMdyG(9Z>?Vl{nLsG9Qti_v zEYJ!^o0hWZ91cDrGWI=SKu`4X2nQk-^2H=pG|f<&S^`cb zvT;bkThI>NKJs;5ege1c*)Y9ATZo)X^8Mjo)8Wwht0m{&v zrK%7Xl^;^c(Alf~r17{K|AzGwD&%o_wui#B^R5oS0F$K2VHNa?O!S;Wk8g58DkVP$s7XmA=5OU$FcgAf~90X~~YAY}ub_ z2^mU+f*=elV3Nt!TkUEn*qe-IgGK1Avz$3*B(83)(L100+H{Ysqs(?61>(eKoQ30F zWNZ3mGzNn?tE-&2+)pWYMfn56(I%L%+*`{y``<(@-Lrouo}S6Xjj;YmC~$M7?B7QJ zVbZro`06$@&W_SlddtGg)1o$Y%L~h6rHOY{YE3Ts^r%qCA4gc2B7k%41fS&Pj(mTt zPxNN&eVVcC{3}k-rv%8Wszyx42ymyR2C1-cBuFPy(4$n} ze-mc$)qO}g=wsCB2+!Aa&kt&B;~ul|EnMhkZ??jXjo(h+4^$dePSq>F7|FMkW~hvn zYI|GvZfZb6?Uu4*Y-VfbnaB$}@{zQ++WxoMJr>8@)75bzlMdDaOr^qDc){ytS5lTo zp09@Hi?smoTAHrP(FniW=ASr*-CBymP6W+Ish#`6FejQ?wNZR%qv2A)cu3gCynJ=^ z&7OUgC1sK(4k7nt^MhnPM)FWfD?4MW^r8q98}51Keulfo)Y+C zJUXZc@1vru*&)3Uz0ew^5M?g=98Dym`aR&|c$9h|$7_-npT#Zmi2j0Y$Q6NcEeeow zNL<=l?_{}iLN6>AlUI$Sv)PEM%F`c&%W0L2uu@Vmym@MEY8YuT^IY;myO#soqIz=k zRRH%VY{))1Rb}^0es~YsBoZ#A;kJ1^txr9HxA^9WeyP*r}Ej#lys$l5?LwVEi@l>Ip} zJy{&w_XKS%JeUmk?39j{U%S~jlHd9Mfmbn1kvL5-*6jJ*1d(Uzge!48BC~s89yjl- zY5c)kA=54e|5t9Z%9kK#td3F&g|#v%%_%twI71%=5Oo0bfTtKCPaSpKj;=<;5>f@8`LR=I321MckGZjHD+I0qZn@I8)5;VeeD}k`YMznA(JfM9#Ee**V$8I> z_rj(KucQ8Pg52qSYtAa8zVz_ZI-hgP-aDT&(tfWzD$*P7&vMxEHfEnTFqQOM)Sr3Z zt_TPfjh&#F*1F>0?;8hv+ezLR-nmq#9t4RJ3oeoBaS=grLm0=S8GZGHakivUk-Rpa zcbE(+3deVr%2}NNcFKK@ zJ|%hdUEx_~#EY|lWR$2velSmC+jj3EY#VzLZFYv|da)DmNz=#dz1@#+%z1q)W^s5e#d&!C(PquuTk0lE6hdLsFG zI`1cVXOtwHR8m?7hpQMAR(4m`UMBdQ*bbkM90%cCr^*Ua0#;l60iK!Fecrn$>r3*i zi|XwRoi=M@0#O*#WQKz{q|!h*ZO z?wfn&J5ao%MDOj<`BG(k+#V*>xrolXaC}lZ!#W^q!hRy`(BccAU8JQ@T+c+;FECBg zF-=|o#pO)dqC)#QDnr2~hCU#|>uJ`SW8Cy&_p@1Zp`!D}uYNVj-yvomt~gOj^Y?sx zb|$g06gP~}Q(?>_>L+$sMa6~&xkBIEi2c{m>$hD`9dIkD_qI**o?Xt_i+W=U=w=+i zN1c03;a*^clGffW$Q<>((|s_O2^L2W#07ZOC91CqTkeisSs&|7=@TeE)iSv$o@C72 zl7Dyh?CA6$)!@20YUL$JIrM=nRnOrk&+h%4_RvU~lXy=ERN|9%KOaS+!U|QR8Ci!O zIa|H4cX`aZSKVfVsVCQ`Lt#*k*Y=|B%rIGduGhZbvCG+2z)HZMn}{**OZ}SZl6H$F z`n9JR^FH-E+;X9Ww@2)VCP-Tn@4o4LJ^+M^%ZhuT*D(?LJwLJP)p^Z$!fInD>g|Qc zD_ljiTy|w^E}@oF$!*{yf3ghM2Qd9yc(@9Y95`M(bZbjyCJ6!v;e+fdIDv{ ztuX#_6?Q#TiRz8ZDdgX>IA{=)psU{Z$HBtxQO&*{W~#9Kw9KvOuoki>NhfLh zwouTGcy+ULMWR|85xzz-uh-K2M#EaT{CgzGjvNZvVFlUiu{$_AgC~>t^9~~r(KE)a zdHOFG_7(+|s>C}s$vQhImc(~k?0pW&K+a~UlNmuVk)+|5b&#FsI?_avLvRNxxxGRz z?88-W;(f+-?Na^cDjI^WHjimuURhh|9~k)HoFzG8ne7(yM>eILEsmHwC(!k4RVnVs z`V+&zdS4uf>5R%$-~w_e3PY=C-@Kapl${(O^Tr`7`IAQJvm1^)HQH-f{@iVVU5fYI zlBj=%ipiw^9;Rpjm9-KLHTuD6?K-uP!kUJi)o0$lLeS#}B~EXK>OG4gtVY8-0&=(J z3m78UHBXpj=tE6(twbC4N(|mQg}w~m&Udx>;pRc(Tosl$LDD%h%+uL%l>Kw@h3zMe zowz}!sHdfaCncSd+=(7CKhqtbHoX_hzAv7a{k#`@QQn9+Y69er}ac#byTY1Z~*OtWT}xxkw>tOca0TJ;)2|uDwYd+ z5ejOiV%+B!dG-xh6UTByJ%@Ig)vAlhs5E)7dii4_k0_`%nwNCD60YPrHdda;ZbC2_ zsNTwE1%;Ma!bj%5ykBuZq2$g7tUkxE7H5&~4jR|pZ^gdIi~d}#f57ueHmtsmwdV1_ zCK1!hw;sBw4UV;@WpKCCUX$@G9hY{#X?#2Ir$p4eBcAy6OJ@{4_lRxc>dLC{9)dKl z&c4d?tCeNO-5MC#*^ob;K-}J$L(dPV<|o-V5%~&`?|7Me$5r3cSeT+}r;elQFh+zI zh8tXq`*PFx1 z7z9sIpR0@QcPHCe=i4@9mW@D%>?zOa@P5rOH!@vG%wld!hHrIgp3i3EXSbyX(jk=S6p^k6C@?>8ZX3_;1@nBU8eK*R_pNak?kZg-um&DiZO%W<8DCf+@Ord57+cVmQ!&^OPr2hA+)S)+ zBAUin?=FtMaXNl7EE3YE`bw+cQeWSAN7$fC2Q+Cs zGf7##em09*9`Vf1uf>l!?j$|Q?;cd=>nCSN#*ScsC(#kbQCR!2D(k|)!b9J;B620N z3YVlB?dgM!SoibfTUP3Z{U6UNrUW5ZxrUCJX`02f_q%%3by^CAa9pEh;2b{wiyL0B zwSH5GA@YL3HEY;Uc~{Q*)F4_xdBA>64+ZGURob%ZtwKtgx_$}=oYFGPrL0sp=Z-3Q z%+he@z2Myz;cWIcvvUe{TIKe@{VmvdU9AYY^YoIp;2tioOnOaVlgRXTG4`c_qqDD9 zq54|%H7LB8d}E1QdYfB_j*hvpl2|2NO&D4HQtk(wZ%K1vFy=OrIUR(l@Y(&x8Q~U9 z#!F?H^6?K&_bK~1_8Wrh>cCWwwgDSfyOWw0go}Bm!_kT;!_CcmW2cmc3v@DyID^J0e4;REJnU=3I|!1mcqIq6x7>*ixIS8Hfr!`#+bDRvgX#p5&9m zUwJqeY?StXCwbFV?Xs{Htj6i@2XUEiwDQFgC24LrEP zk*A1w)8N3W)?+r^F;e_fbiA!(Kj+oq!?X``?5+OM-bvZ3Yq;IY6-hs z?{#wDf0v!K%hN{%p;Z!PGs_W2RCq9%p(+j9kB{iRTGrSpduA+5r_@qhUT(s7GLHqm zu@CvMbADl#GS}*D5@<2z#>F}lK(%c5YI*CztTE=i><)(jW(^I3ihf=Ty4@e{(jv#O zr@+=$#H#GZVie!mIyGBps8LW}pCxp~Grg|Glx<0ww3o*%>*|d%nHpx_Y&>=#{+ZA> z1iNYVA{cqhU_E^LbTrK15p@2QoZ$x{$tLr}l?lv`O?H!C;9Y$~$&gY<*V@tv=K8>J zg*?9|j}tq4VoErR3=8(mk~qnzMIZ2V#lzL68FAbn{T~wyNKs_nwWur#cNcv zfGY?rnUfSDz@9=(YdN_n(0oOB*=s!85L3_5Hl=y(kH3(d97SCsTE5^#!@TC@-x7XJ zw9@$+nqsfzbWvJ?Yhg(4aTfo&UG`QKRANe5%aZ5%NzxhI#~FV};wK7Z(UeO>&YWzS ztt!~DEn!-cw*jjaqJqk_wHxIO9PS)C0ebQ0gp_h1<^vJ*O(;+5-ulzc+3j zqy|ocuRUfbXFo9fOgxJUG9R(VOM0Z%jXihvfWPR5;L##MkaqiL@tXj3g2fy5jQ4|g zT5>S@pL_V%#a7~aXIWrsYuVSI=#3QXckwiI)bpyf4muw8vFi4HbvH_ zGCw5x1uWM7hcgD)FhgzY^uQ?qUYX=Wx0RcRj-kK#)Ib%NdOfy~-7;Ly3 zane!P`3UW-lBG>gGng2zzTU+&X>kpCA_zRU@TPU0l1g#>dSuDU%1C~+_Wr03It$-; z_;melF`QvjC$xcB2-IW`{qo6P17aLeHQeo zp;?!{9z%mjNw6P3TZ?cL3^D6*+ysv(^`^XUo#{<7* z&lIX;+e+a4b*Kaf50lFIlf>{Jxx|P$YLF>9pvc6HQcEv_e%YfOgCfmN_yW&%@o;+m zscrJrHxA&1pNE-eRtENIxR47ui@__y^5HSGHn+m;BJJak&xAj5W422^)1l$;R}H3M zQ@V)_6R#Fwt@=!+WK)CP@t{J?^93^dzk1u@-_#R8X~&N$*)zF*L`GrTS4^xWj=j-3 z&pADtAXuOu%|#(1-4!rty1$S8_8rM*j|W+6uawE9g&U^d71>wxUvYalD!qoj=dLv( zi-&-7)ps`>DSIaUGek=Uobc2nO?D*LM03=X{AiDTod%c;RW?)mrio;Q3X!BLnhnBF$R}5;|L#sy) z0ulXck}P38tuIf+-NrTiIv3jjtedYEew$?W)mIfXiu2&ixTC9h`oSx|BGxN14rv@!Ou31@5JS zr$v{o`!D*jsDq3K-lynparENJW|vg&_ca9vE1$GKLpUxMjdjtSdcE4x*K!v~%6wd8 zr6iv3?KNOAmbTv#wappheiVIGD!12$!M})qaWhMn^GuaH*fpnD)B|j2pg(H%zGyQq zE>8zd87#b|VVxHt-cBTPt@@?$cqzS}Nj{u_f@x^Z$x#V8K{c{NT;yG$b<-tGO_PPr8#p#`QLW-%-la|76 zSub%hh8Ay@)i;SJ-W7~Db4H~uo3}eYA2G>Vh0S|K@$)LBMUBMtG?cHlG;zqrjBSuj zey#p98FwrDm5VpdADg@WS|42D#B5;cCBRK(aA$8>KSv#4KagawrvShJ3e2AwgGSWZ z4NgK0uRWMStnF@?;VuJ&<tIT5UgXoD5q^22Qc{D zix0S|d0=Reuw5O0Xwkc*#^cgh?$=F=wjZ_tZ%}fa9Zi+yfBTLh2TSG3FTJ-}*0Fp5z6Nly3g9-9VvMwD)KY2jetE40;NPIkm8Bf8%8&vY%Fjf#1!0;3T*tL;(;-Zp!^SnGe zAk!|nkUS+j5-#&hH`l7~=znP_v`p#B7g>iietNTa1}`Q7XU@VUgX&9E1NvF$xH;Ii)B#yC~wU5C9*GGwKYzDrqa ze%bt3?w5AGp6UzHJT7F+8shj-iW2!8hmD?}F|lqOY7JPycd|DgxhG6hcg@<~@7tNS z4KC?;*UVNK+`V%J(sO2)PYr@=cPko}oh3kMMYiP`gHt;`wHIZ`f@4QhTXo2~@+n%D z!1UKsV56JGQK)P7@R;PC&5TG<*yfI7?rVzBVr-$6eIf2K9T&*^)&(~xfgCr*QG*+u zy$tUCKjM+82=at{+KpGrb97&%D9cEESCgP8m7y+7Iq{l0o)?P~usGcPnqc)blWbk; zjUqI9!@t($|C${`wj(5nzk=fMd~N$VkG0o!X&j7pBxXdAe@;Q$g}B?40n7ZupD$?v zkzXsLDE^7{>+3?Mcn9kU!I6qNmMe*&BRTt>S*PZZ{K+88834W~iZ^BLpiAy<$D4>m zVjy5huoJgutY+-^@PtV_DzSCpq9A;s$+d^p@RSaK&Q!>{fg%!I zY$y$g+#nrhb0r(%Vs(At_&$v(7n@Vc7~5WoT3UIuX@A&#eQ9a)y)irU6J({S~lo>7h1ksXBt*wnm*md{Tc z7DR^&aG=IPyP11-ue?t@dtDo$aYG>Pb;)C_O$zL6YeD9+0q5;AO6d5kKSGCf@fvCl zZl;I=l@#gjrPJ23bt zI9FStJ#%n9$=?UM<-2zWFnoS48EsLKo?;O^pPRWNcT7xa465Exv zvoA1+#apw@J1!_~`A9@kaC@lW`aMkR#N$Ac$nmZds=M>XnV_+gjxwf+-kEoBJnl&m zR#WNr@k5LLBvYHbDFUx!A>O4&#Lhj1eK$ARW$&f_RkmTJF&KFacT*=lzv~a3Ef)L6 z-JXui=xm~24s2RF5zed1u=CV>cVG7oLdo)vld_i~{U zWdAj?<^Q8v(f{^P2KZ$!fVvp6|GimcB>bbT zd&s|YV*RfO{`xD@)|q}a&eVcW@qgDi9Op?OZ9hf7;8)3seNogiA;YA1%`1pJyN8boC5i9a03>tnz(z$vqxx zk{XCg1JD}^dA%P_IEn%TneXtBI~b^J_`bTHTo+Vjo2Nycb!?qRyPojrjGUjEEg{2( zrw*>KK>2%EGE_NGIT7bL#q$^tT~E#gTZepdVG<*D)K=v4+kFHHXfK zw~axS+=Gx%KJLqIW*f7*dVdKYYsrh!jRF(P1Au@LUT?2IuzWN*@r<@tUr;iaT5s2C zEM_#EJM=W1iKOY7$TT!B5d2RVj=x|GJG+zo!`xXVULPTW_?5G;y125*k9@#u_=rlI zz2V;PB;>yTMfTq|{g(}eART77|L^@gAd}Ri#AYpn*QQ^7v$*QK(UcdqSiz?)?iP>1 zhQ=7qK;65`gZIE;fbsJ6!@gHP@X1}m6ooEw) zO*BEf#gVmaphGQbMqinK!pJ}-x(UAju>G_SOe_j!krO#WNc!bmZCwNV*fiy{HQG}$ zil>U1+j14k0}#yfQB}|#063;|m(@sJSmn8_a*tc$&l)~|d7y9AsK^7hBe9Whx&G?( zA7knF?TN%|+vlNviolAgwzH08m^JU)I+-*)mmiWqr5ABNsJ>m>p$Is|oO%0oBrTJzWL?6K*_9Qa55+&e|C6lpf9hn``eb!~})chsOe|PyGgY^eSMN1^r29`E6^#2pafBU!SN>UV3`Aoe5 zd1$|N{C|3I`$&U~73PaTCDz|@{s#Kr4O^_h8^7QrEeD&6{w?nR+RuM|Ep7Uj(SCGQ{O3Ub_pg290{l|jYvH$#|EU1K!T9Up zphglo(i2UfEUo`LI2XU*Y@F$T{NF(T`_uW{_a_uBVgK3sh%_oaefQ+jZh6F}X9L;5 zX-P9PSsE2Ab??dwPMig=wyDSw{k@MX8j-(7-W?;~{U1MsMSOeO**$4Y#L$Nm8f89> zT*s}1%+sfvYF1oS*Vy_!ktt+}6zsIWtih^vLchsa+S%p!i=q8nIqg_}5iXXo@RHw^ z{(wyC^^f&c*tGCS-+4z6ZO_y6YJzu`TGo5D&588$i;tg3yaj4X<3Tv&uY5qowLN^} zg9r zi};kX?6uF)=`k#|{Hv`do=OmKF-y|Z-=$GU7h-L>+YAE>w@$U~(j>!9d+6t>6&XC< zQf&~EZ%{ceIog-stU#h_XIhQgto{0MZ^s?3La*u|sg6&u+cwRgn2eq}?t);Jy6h8e zH`ZaW$u*;^z-4vI<%_Ul*jegVE6XP5|8QMM4}kKE-Jyiw|C5p4lRH59af3(1)^3>B zdRaDC?Dw;@9AfFSg`EsTmM?Yy-5CnP=wQOE}R-g&FO$h7Yl(p8~nU7wf*9C5>t!+o6tb!5cn|M&TL#%))m3+M8 z{U4iHtU`{+dUOlXGrarAL(&P~fRVr+F)PB)C#&z1c3ztPyub@`D%buvB2?WE-D*st zTU1p#z~`*Eue;45+688|&DR>gq`unJe#-#=(oZm~Q{OW6S1kbX6<|}f8pvkx)BPTI zSrs;CxP%k&g=!Rkf8i!te`-G29Vrv6Htx-^k}8n)0q*0l6*`{HF`u}%yyFdmjM-&z ztv?h4o(h&kcK%Zoc&IqPB9wjs?SD9ROTTZCRu2dJWg@Ey=XMiB>BNySTau;EHXRr2O2&sKvI5ZT% z(Skv9M+rfSqTidGpCOX;uS2@5ZDGo>JLLMwJ?r_WHbe z?bLUJ_VdM=WkT&NjODcNaWjl?c)xC@qGp+~m%46lo*|c+f%sIg7!(03m>0B7u`2)g zB_L(zzztvw7X`D4@Xyir@hZqR)=!PlX!7h9Gd8~h&I$L7`<($>Cg`80{nO_ls~1Kh zeR)&lilo!;O6XQb^G<;`mL{6t+eppE-^$~bI^T|F`5=1$rs6tWL%7H@vEn^n@7X1G z6*H2;W=ji>*9`8w#O_V=x!n&$C?j&4j=Q&A9uaI@&)YNu5L>)+_qHL+)$>dD`W*1l zH;|h#>V3|qyLdWI;X)Ntx1A#;b!tOOyjAV@Fc1vwPGzm@#*S{N@-?_V9@#g%?G4jQ zE)H3+=+!64IX55A4o}b()23zNcfduICCm`ls{YJ#;IQuAlM}f+_iV4N>SS2+?Ke-* z(hwKyf>*KrL;rPPaNRt{A?nrcoqelU=)Q^?W`SMv4N!&Lodu>Mc%)f@Y4Jt*(>+wtZKo1kuw5O&nf)f`xJ&acLWc+iT|Maa$ZSfp^o}E)16d@fE{?X4nIOuI1V5$cu7|NBqu# z6mK1V7dz&CMf6`(0=+i=;qRPIbY%zs(~4bE!*|1;?6f!g&zv6*9N$a^&p>=IsOYwj zjv%J<4|}OYOP*ooKp#JW`7gUvwQd9&kv-&Pk*`ZmG=U(!`vArJYM9UMVHm8Zy<)Kq z9bU+0toRZbs)KcSv>#%6aUlYd$l%(`=I@FlC< zr$Y?%aD72>8!qOw_~`pdB6zjzP4uhFY+D^O-t>5Z-5Yq|j?1na~oD&l+euc}ZY*aNG?ZuAR9(=|a>C*No{rL|=0i z`8nfrS~Z6d@q+fb7=)jHG=lxuOf?|xBpj{<1AXdlwtd_)VQUgR{x1`~*wkSSYj)U6_m#e#UIZzT$PfWzc0`6b_vkdvw|w zZ+x5c)zbW1R3^Or zX1>dd(<0d_{k!%a%@%x&l4G4SIOsr$9OnY(pZYofD`r`Snf^7+^|xjtYh_D&_D(d^ zkD&)llKmWcH8AK!OgnxTv^kD+#-8qv8271-CUtLDk6{2$r|MK+K7r-Ww6 zUKt7%Pgi{o$LA2%XB9k4zE7Uz$_7%;B~pHEJ1tf(ufV-KQUgQkuV-Z~-9))VnR^>> z@5bU_Q_PADn7#;+*RNZ*)6;D0w>^U;sG@%-bC7>HTx_)w)fIkw_&#Jcyn4nHB$9vix+v@;mI>RkB9$B za&|+$&4NHPm3blm90W?ta4JgM>idmUIk`p zn`!~?lG_&XE}8i5kgqK}5|P~fBVJL5&;_DJqzQy@FPYZhur85-C!5JV4e5+tk?KS74PY%#|9kt#5z$5W$L>Q@vG5f7p39lqOVV zg|GNwOW7fR9y9nPi?mr_@QMlG+bb5KU1ej}BAuKT1)dVQyjHlH^=jb3k6aZ-d`+f@ z5clQ+{4haKSCRSWx8UIU^z*q|1ZeK@uCbfh&Be@cZTnfBAiD*5(r`~SpZnn!8J{s%Kj1%N)bif%o-k7vh6@Euyv!M?uu8ko@~}zEPfFKoZMBvLyMzO? zC<}&HBqk4BE>nYD=UJF->rrDIAK7NI88)^_BqF#LjvGr6Xo*W#K{IUcOp1m&@V&S| zGBUSB!Uu&B2wTb=9bCpbwPcYGPMT8tWbW(jh;4cWEgU7XG7CZF6LtUy<=JkaVV-Z^QB@y7AA?%6}pRW&|(hWhVl^JgN`p!$n!sY**K{8KiH zL@1##q>+ks7ik4^{^pl223A^86|?$=or|>fhy`w3pP%=pV|}mUdkPCa!sJBWH`{(U zbc)CWS2Yr>a&!wNN-w9FalrAJQ*GA zQ1E1I*x%{bU$Z9PRDLmbl@7Mt-zVCTGgAbZz3wTWUR=~lxy%leIvPTV{oawd>S9o0N>)tmXvdPuQe(~4^u8G2w@bTuYD z!f`$kNZpV>VebTrx4^)s(5`w1uAE!alq=7}05`w&xjkdsk5h^&-LJ!~8eHmdQ}%iu zRixW)+wAppVd;uIe?FooUjUbL9>KJy`GLYHBo(@Ci-Tvi^Dduu>E)X#>>AfLhBCwx z#<;%>;xDlvY54!B8ByXHA-I^?#9yN3khc+CWV^QsqiYlVQEPZ!Wk#1oh> z!m~*=6O%D<0J0ZaPTWfkCYU5G6lyN$g=XjYJXz9r6)8XV`+nCTki0)Z3{(u zAy69uJkL9@$pu$OsXc-)HcbtXJFK{{E9O(0s`1sT++9>^!}B?A2_0sNuBTD`B1i-a zf7K+h5i|!QM{#1K(0nA4VfAuA<+h0KN^fSLAA+y@$aB{+B!k7nLI!=i^+ccKHnG`s z-umXqkHGBiepK0Jx}MB;Z`_jLVe9&Kge57AbU(#P7u)?b7VW?O{8GLcKxzo}Y@Flvfv1?(N^DA^$D28C+jCX>AcJ8vfq}DYS{-@ZiVK z@^;5eX+TdG@pSXYc357d)@3 zVoCVmMEnAQW|-T1hLJQON-|P98T%-f=mmc(h}T!WM|^!{lX&BgJyH@PsF$KJ1wU$(2P4-;3ZEDt_wFV; zFU30cTx=^djUw=Vo?8vWnwy;3}`39t^hqq*p-mn8I*q;#COvA zZtT*x3>)ZjBdd@*RgCjU{=JPZmO*xU3%fk_t~)h0U*gUw@1yfo0wKxNwD)^qozy2@ zI7M0tue4*F&8hoQk1%B7tDdmSK7$>F*T6%gY4=W6)p(^iG}+YhH^78YE~B3__s(E8 z@OpZ01q4#nMHjv!NguGodM#tly1YWYEoXoCQ{7z31FUSABu!rCPn+cIZ(aswOjVI$ z&12HyJWTIK2gZgUCwMRPO4?S@zhDVJpJjjbmGd$IxoF8HYVVMe_{T92~P_Box)n6P1X!dd2^IzB~NQ zYp?51a^RG!s6RJ)fJUQ=$KILpkL9x$!>M3-%D$+gx;tvBT^)SmuCRBG*V-1d=IK*w zt5_H@z_74WALUZ0=1D{ia!K39A9Aua;j~m4MLlpHDPq>-$tD$5s%u43Pn~?j^*8fx z)?B^;ntC=UWn#jpb$Y*ETQ$}s2**`~rZbVZLg(nEKCi|PD*9kQcElQpe!+?z+3-~> zB6L8tam7I?uRL~xR~$&)cBZ^8sjGJH@|#!GG52nYXq%Bb!Z8GPgg`*F?Wwegw`Yp5Z3mSD^Ge}Y zms}r?WgYJLZeP`oUzbijIj>B^m&bxu-BllyGA|CoFD!_`vaHCJgsZn~3h^5|uSd>j zX5UbRZVMJjilh%DL#j6_9(YkDS8)yLml zD@{mIWz&@_1L1d32xrbsk3E?9oXYx+rk=rmX&MA|Uj?NQ;8u<7gEkS%e;wJr6hT8W zO1n5R$3US76;WIl8vcOf_Fz)W*W^sF-fjsVXbNH0J^b#-aL!gaE7}d7Hkm=VeMZyP zww3019s^c{VZS)^86~Io(^n zHs2oKa5^If>BKz=H-OZf9W5;v$Ya@keUUIj_A2be(+{x%3p?<=%r*W0CZSH@+7StM zKcwQzcl5C_<0#}7?dMBa?x8Pii|#G_5TMwBb5M@HI%(j!G;lrDk7xbVcHiOiNe!DG zFI=U&aa{^VpH-~?Ll*1Xm-T`jy9`I(z)B9Wf`7WPvkAYT`N?`}(yKwQk#C>&kJ2uf z2OpU@aAg!v7E;9nuh+fb`P@JEVK%}Hy|IVG#CYvH;;G3zcJSPO&?%>%EJ3a~a!}m; zzI*S_eB7mQCPuHx*kl;Asb+Dv*kb_vRATX-NUKSijCZg;KQA-sX-M!Ew7&ke+O z(kr zKLRd3VzhM010f@H*3A=coR-uLb5pfFZBWQ7;#5~HGk4M^iSx&ar{D1UTw84RY5DLR zD?HOTBoR7bkSZphPd|VNhsCLAS~R4O_hBHzj}9 z7W0!!@bUM5sQw==&fNthhgU4v{BQIAJm!Z>mu@lVek%48G=SmtMZlsLOc-SS3!gs= zFmZ8lX$qN9{ZHfGde5C(Q?E=#;k6D&7vGzad_WPW> ze1Jvw4!*MT%VTu*CoG=vgFlVSGBYuWF{3=z{qh*?T&D$}fcFUX=!(l*rLNPdLh0>^ zQUxY|-`9T_Fy1}AtrV*&Ff*ROHG7q_&~5xg3r6sR!hLHB^A)smegzSlR_u^s5XVfC zOst-PAzleAFG6F`JL3Y0lof^eVPz)3;wESsIX{D;gfeQTlCUvx@(d|?HR7z?tbN#V z5W5Y8;Tk(zd?Vqic~(~P{WztvdGJcx&~0_u+!=+Z{cFZ25`Ua;oc`wVAVQ;r2B}pH z`2{&w!^b=SU}CcK!=kVNBK z5lS(+Fb;JSngG*1?=bV>bexM%>MUIE{)a)p*MU%dcdyjTR_ssd_-tW3>K$|U=_PzV z<0nfsCsAZ+Vj}53ptt`IX@9!d_La{5WP^!MW6~^NMae_(>FWU|X%Ru4OV z_}tP%X5&0OfyQ4sMt0wNh$lkSjS&Bof2OuF=OV_!d>d2fDzia3plwm*e29rS8 z+ujY8vv5h|YpXvpL6+DvZ6F|Nja>PmGy2qs?y}q7fbQ*!5P;ae)$i@_0tB;-0D)p8 zcm~G+;uKHoytaPN=L@)b)mj4RV-i%=F(~FM)mkjP@EPg1U_YbRfL6>r`MZXsW(rot zc8j!(9_aV_EFS<7=0s%TMa)}~<{ik2p>9Da3rhA5bQCOA1$jmb-Z%qmhMNywx5j+a zZ~Om8NA%SAIXQ|8uBF_YVlXsagK-Q^!ys2JU{p{2x(33H+`;#Ki2Qt&wh`)8D%Idp zVTeLK%wkkc4cTe>vNs$H7Hi5j$sd71WE*bC6P)g{_&b2BG-p+O?Q-JV#M)-Hdg7JZ z|FS1TC4@lLgHQ}BSUCBDzuWy|d}-+CQ!GnF9p^5EsN)Zu7->ktZwYTR>Z7fxG{&y= z$@V`t9Y|e}Yqn?uH@&n>iF4_%wy&*0McUmKHcpIn4Dy(GmCq5#)Of?_De27q`wj5? z)sJeFrC|4S++RI(5A_e7v5Kw>D!K-^$4XtD{f94TFoEXPC(?OH|tjJmB%#0hu4nx&hzicxLEpv-0l|zeJh&J|r)G9^N=_;c3tEN)55dA2d0iDt zyN}=$cr+2+tA|!hDd|d#4_sRInv6*s zc!P!X=AI0`(v}ymtd6=dP~NTj*p=UIASzVRMI^BqrA)dHJ~|cF6Vtw3F z6VrLOF{-_?$sDR;mKC=J&{S#?Jx%&<;&nxXsDj8&ew{>&SqjHBaxh~=w1Xc3O<#&q zRXV3PN?9WX(WJIDf&=)#ki1&lNfKIb3#f_c?_LZA-sGt&Y`A#7v$FAE>Rpj<4H3kQ zgo6_NxM&Ay5sI2HoY0%+jyq|Q>6a$z?c7P4e07#}8q#LVWYG$U9LSdn#Vn+H0h zd{9}658j5et1O-(S;IyT7OUbhFmjH)ERpm(uxK2G*^e_U-w>p536ipmtmU*U!^fBorisWIsdn;ZcWK(VN#u-JxRH<+% ze(a{KTN#s!B{3R{z&>`;qRJv95yg!=OF-eG=y?OLWljsuPdX+AbnL>K!Sr76&+z+C z*ay;SU^XxOECa_iB=I5{Afm=gjDrWL&*9JsiavwwF)^JEGMG^_Gm02wj;u(kcu^*z z-NMN08hcnJJSPK3c*Il$ROJP3O(+(62_s4h6y3EUy$U#F;X>FO={9oR5K&UX>k27q z4@Pw&vLN!PtTI)1q*0kleenz-yS;ZXMA>vfY0pvQM$~0DyFWX+0pQGu_VdSjtt3#2T4dQec)!s%B$2}Ocf>c8G-$l_IQE7RH(OtU^M0+bDm&0$&P9{ea z^K#|!^jvup_ik%KyFxJ;E;sD7r=U3BrNw#Wl_)Gh;yAs4ygnf7C(10xpAy(eQ6LQh z#IMC#7UW3_J1n<7?%4NRXXVuK(;JU!7|?L6qhBC57X0*P<-;;MKSLV)QgQmiNsI62 zBtm`!LM-8Gf3CL9RMGs#%%>%x@=KQldZ8mSD0QfysW|!8=gKaN&(xA+JwDm1bu=Ua zDLsKypXd>u$5eX1YPKpz#hkUAi{E!5)a{S$6#ceBdlB~zS7XRI9A!*M6z1%cp7O0PHQvyuy# zXB?wFfpWoFlYa4PZ^BDn6a=OTm9n{U+{Vfpvw~^l{QycW8ady)c&?V!s=~~=T*+5? z17e@V{HD_{+k}MJ;vV1yM#NZN0u6H&s$i|K#uPKKZ2gK#xzn}5Ugp6NP<+1j*8 zAQ$2oXQg& zNwGY6X{W5R=7cxs7xc=jX1cSiiDzp`P`hKJGWhem8FtPKawdK>lc2tBDz*&e`87U| zUf@HBUI@5z7=YJZ;ZJOP^_i@khv2tkY*MW2plc}a9MtLBwK|-zaw=K^Ylz}lXr9p7$1Tbw>lQ(O z#)gq|qLBV7f`Nz^O7GdZt=@?6&t4| z?-2=P{1EnOvB3D}+Na9Qp^@kcghXk=Z}5QZLF0B*_lz|&zf*yqpKBwRNwb)K$^ses z*Qkp-f}0-JqiI&Xc_4v7jS}8+ zr=x)EAuMjM0Ez7>RrGHl5p2if3?D*nj1x6GBDF%%Jr&X)EhiyBrVH@M8xnj(Q+Yc_ zqj2PfFhhV#Z{tHbUgn}I!}N*?p= zMi_`8S*%|=yURk`Eup%5lkFN~axyDJFr((PXs1rCMWWNfl$>_$yCY7Zj*N+0U9M8$ zJdZA`;g4MlKTOxBD}mT}IQ}*K&YVQ1mMXt={{3{rXSENDx@dj}oKer+^3pfNNN|M% zE8~fjib5CfJeZyC?0m6cemY+#{d+%f`22f~JLC$*u7M7^tfi(gK>hxa52n*sAGm{4 z4eb6v#^rAJ>0;^p6}tu38x84dT#+RIA^2x2f?j{5DXpvn46S-x61TrA{(w1jos{om z`KLgPn%~G@6p<#$a%oj^Z!~dJ0|*-mE3`c0gb7z77ZZ|M$=}UFLB!4 z?i6>Fzbb`z0SXoFyM4{X7 z9Gdl5fIqIYD?Uy76O}yS`FXM7@>ZxbN-!-H=PD^*9rOv1*tdD`smiSB?6$2KkY3`) zq5mem-uP^F)P`erIOq2lSeHFzs+!W05w#({(FlI-NM!)d9gjN2}^xas6vBgXk_Tc0K%21v`y=-c=%+WxOHVZ5m>I7y9KYMrJcXJF!QApA{D0#PBvKa9T%!Nb+cQo1mURaB+4oh4viFp8A+p$xEP;9ug_m#q`!ZATizk z4yb3-&EW)XowHh19}MU1V<(>oE~}VID8y{=Pb`dW*F<^){86>bhq0I1o!IT~#Q{scz;(&yAG+PTA6|jGORdb;^;+Zn`Ge8k8Mc9{_VwJ1GIsrN2P^GC4BjU_Oo?hb zKWR-9`}?NS8Py{QR)9AQwxl)gErsup=m)Gz|40hB{QtQLh{%A2ark6FZ$3YJ7z6p6%JQ-|6m8<5q#xo6%$ zA$2i9v4bS|wGmgt8WE*6$+-)2kq6f!Jtn(Ti+Ah+qSM8mR$FmtM(Frt4=#pYcVMKr zU;3zt3e$9g$r3-pWS~)8sP!T4jn_jW*3L~mVcoBc3j)#2gWSR1f*pbH*Vdu7_>aK! zidumphAyn71+^jB;FmTmhjE)&SSq(@@Tg!kBrFkrpXX4Su$>wA)dyLRBeKD+5`R5*I00!`K-m^rx0!1UYA}`}4>y2WkGh$4v~n=l=0!mF z*~=ZcUhzW?wKmxwf5(O*@I+ta$DjlKLFMRX3>y*y|JF+mb|=)XvCJ3rrpHKMlLu8_ zOA&!Rj|et}AC%R-w9-k0N;cdJ$vj}|bA_4n;aZGeW-rptU*pJeEkTFjz-N?|hp1Wn zieH!tsx;#DR}Zr%UY>(zbwXvdC8cBr@Qf)*B3a#4aBosAz}N&cHk%(J!HzdLToAlj z*mBMdJY1cfyC~8;LJ*`_8cN#DSY7w7or1<*xFI0MtfxB>IlDc8bFC79uNY7c6`+7v1))~7IvSbtBBSxt&j`j4N zrw56_yD5?AbYE3T%rLCKO0t?%@-oCey=!eV^~G_e0(?LOg_R^k+-trhRKBq@<;hQ! zzGV2)Z1HE?Pxp(vBjM$Xs{+WpHOvs!Od-592S+OaYrLvU2gatikoh+xBd>C}wFRG|6;VAy8ULdDmqyVW_#UMiT9P0W zbC@lA(Qms*E$Q5Mb!UV25=_6VqU=YLl@8q7z6F>A^RjkQHtQ3C3gOVtRjiN_h?zjp z5-%v@BGOK0m*z z@#BX$40V*Z%H%oX-;&3t)H#v1rF5xrGCvJ#+0rV5bMmkG0Ey@=8%SOB{#QCcH1|nV zKOr)$y67(u8&L;v7O`8ox9w-l6m<-xT!-oj&xy5KuRBs zV7t>1BBIwDofpWE@XwtMjBy=)6ZsNU3C9;rZS8DJpjLHJnq;sNOo-xV+i*s5)mZda zLuN6m(fPPoA&%N1^6*cVc?YP>*0Fv4Nt(jQt;hrPM&jfqG(G_8)G%Uw*m;sWql(3;92|%5#hhVL@x@uj~5mq5VY011zSZ|ECt+ZH? ztBP-Y=gU=zs>=F3=xwytonxflNI|tkOb2t2%8R2E(?S1`b$Pt35DZsZRE=h5;f2i? z5MJ;Id>vP@J*wEf#Rn}wjj}h3@I2R0SVPJEAwzLds~nTeli!9Wr210Bwm*k{6w zIf;7`t>1g=(ep|gQ-E&aXS4+o_}14Y97>0@k?~EO%4=QIyFf6#3phvI0rq&m-eVcD zQtll@y*c~VXdS0DXD^a5OE%SP1RBiKM`sc1T>+YN_-)?ff{aS`g7n$#Oiot4yRN0` zRwZJ|lgrb^yB<&jb1xN`&(#t^UFwHb&=5yJ)~6LNcaMw72=W_)D?l%0>-exUqLnkf z<4IbscBz-WxkMu5b6O0Ps;+HoYK80kr~BWnYk)RC_swEpKX0FFcTY5Wxp&FuV-%zF}tKr|N$q0pOQZfM0fIaEE4{EPSF7 zf054qdx*0OW|7tzNa{O*S-hZ_%-Mbbpz=F%SysRqB)v?3<~M(Q^!tSuFw0@I9G?9} zRnO4@RppIg|CTvhg0{}zfXpn)Z!rE1$lrkcy=6WL6o1E%PXhaNBKRASzXAEHv|C@0 zl$0bsZ9Q)mRG+Y-`U)-1`klf&TGW?Wf0af0+YxOm`rW!|*RZu{G`hPz?(2 z?CLL1Qvr&B^ZyG(rT|12yTfLl9s9E;07QeKwD1`tKVzo=hZg`fLtQrY z&J3=zE%Tc8nuH$s-7o4oesS7sPQy2Ud74{V)4=8TJv#h(^Y=5C2OKBvf5U~r4@EIq zE#J=KCNp;3_645D%CDQW{qlo{@#}zMj1^_O=raXpL;&Sl05BrlsxJA<1_iqU1=3$= z^0uR)p`jx4zijL|iQ@USdqz+p+drNDbK~-XXPfRSCfH72RQD|kP*jgu?q_Lb*r82mlMf}2*3;eQj?qLzp82D{<@Zo u`^%yh$Y_66U31p|RaN`{*&4sq%d` Date: Mon, 25 May 2020 19:55:08 -0400 Subject: [PATCH 117/129] Update readme.md --- readme.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/readme.md b/readme.md index cfc297b..46f15f4 100755 --- a/readme.md +++ b/readme.md @@ -105,6 +105,16 @@ docker-compose up ## Screenshots +Upload Files +![MyDrive Upload](github_images/upload-screenshot.png) + +Image Viewer +![Image Viewer](github_images/image-screenshot.png) + +Video Viewer +![Video Viewer](github_images/video-screenshot.png) + + ## Environment Variables Create a config folder on the root of the project, and create a file with the name prod.env for the server. For the client variables create a .env.production file in the root of the project. From fe50d9d1a64fe841a151819ca9af74b7216b1269 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 19:58:04 -0400 Subject: [PATCH 118/129] Update readme.md --- readme.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/readme.md b/readme.md index 46f15f4..5d39a61 100755 --- a/readme.md +++ b/readme.md @@ -114,6 +114,17 @@ Image Viewer Video Viewer ![Video Viewer](github_images/video-screenshot.png) +Search For Files/Folders +![Search](github_images/search-screenshot.png) + +Move File/Folders +![Move](github_images/move-screenshot.png) + +Share +![Share](github_images/share-screenshot.png) + +Folders +![Folders](github_images/folder-screenshot.png) ## Environment Variables From 74edfe5b791537a24285f851a96d50ea9270afde Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 20:03:09 -0400 Subject: [PATCH 119/129] Add files via upload --- github_images/mobile-screenshot.jpeg | Bin 0 -> 205182 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 github_images/mobile-screenshot.jpeg diff --git a/github_images/mobile-screenshot.jpeg b/github_images/mobile-screenshot.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..b44a55194ace79d5fb16452214493c80e332ed4e GIT binary patch literal 205182 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

    j@vAM;)n#Ek%h=1Nlhr)AN#e-f698NF_YvR! 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 literal 0 HcmV?d00001 From 45de1cac9fe21a63b5585aac4a4b05c32560dfbb Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 20:03:54 -0400 Subject: [PATCH 120/129] Update readme.md --- readme.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/readme.md b/readme.md index 5d39a61..7c2b4a1 100755 --- a/readme.md +++ b/readme.md @@ -126,6 +126,9 @@ Share Folders ![Folders](github_images/folder-screenshot.png) +Mobile +![Mobile](github_images/mobile-screenshot.jpeg) + ## Environment Variables Create a config folder on the root of the project, and create a file with the name prod.env for the server. For the client variables create a .env.production file in the root of the project. From 8c39c56aeedb20a0cdd30eca37ca3a3313cb4f09 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 20:05:23 -0400 Subject: [PATCH 121/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 7c2b4a1..7a19843 100755 --- a/readme.md +++ b/readme.md @@ -127,7 +127,7 @@ Folders ![Folders](github_images/folder-screenshot.png) Mobile -![Mobile](github_images/mobile-screenshot.jpeg) +![Mobile](github_images/mobile-screenshot.jpeg | width=100) ## Environment Variables From 4041c861c1711a1aa6fefbcacdd8fc6df879195d Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 20:06:54 -0400 Subject: [PATCH 122/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 7a19843..d214111 100755 --- a/readme.md +++ b/readme.md @@ -127,7 +127,7 @@ Folders ![Folders](github_images/folder-screenshot.png) Mobile -![Mobile](github_images/mobile-screenshot.jpeg | width=100) +![Mobile](github_images/mobile-screenshot.jpeg =250x250) ## Environment Variables From 74699ae240acd2383bef92e4ae213c7b749ffe08 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 20:09:24 -0400 Subject: [PATCH 123/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index d214111..5d2defe 100755 --- a/readme.md +++ b/readme.md @@ -127,7 +127,7 @@ Folders ![Folders](github_images/folder-screenshot.png) Mobile -![Mobile](github_images/mobile-screenshot.jpeg =250x250) + ## Environment Variables From 6696d0b6f565f089658c1e37e6cf4756f964bf40 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 20:09:56 -0400 Subject: [PATCH 124/129] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 5d2defe..637bbe6 100755 --- a/readme.md +++ b/readme.md @@ -127,7 +127,7 @@ Folders ![Folders](github_images/folder-screenshot.png) Mobile - + ## Environment Variables From 0f2b59c423e0d6ff8bfe25ad62e4d0f3dca83824 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 20:10:34 -0400 Subject: [PATCH 125/129] Update readme.md --- readme.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 637bbe6..d63b650 100755 --- a/readme.md +++ b/readme.md @@ -127,7 +127,9 @@ Folders ![Folders](github_images/folder-screenshot.png) Mobile - +

    ## Environment Variables From 00976478855f42f44e7018d9350a8ce2a1948230 Mon Sep 17 00:00:00 2001 From: subnub <44621867+subnub@users.noreply.github.com> Date: Mon, 25 May 2020 20:19:37 -0400 Subject: [PATCH 126/129] Update readme.md --- readme.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/readme.md b/readme.md index d63b650..4055657 100755 --- a/readme.md +++ b/readme.md @@ -13,6 +13,7 @@ MyDrive is an Open Source Cloud Server (Similar To Google Drive), the service us * [Environment Variables](#environment-variables) * [Screenshots](#screenshots) * [Wiki](https://github.com/subnub/myDrive/wiki) +* [Video](#video) * [Demo](#demo) ## Features @@ -165,6 +166,10 @@ Client Environment Variables For a more detailed list of myDrive features, including examples with images, visit the wiki here: https://github.com/subnub/myDrive/wiki +## Video + +I created a short YouTube video, showing off myDrives design and features: https://youtu.be/0YKU5CZHG4I + ## Demo Demo: https://mydrive-demo.herokuapp.com/ From c948ddc1f4a4b5def60957266fe2bd17ecbe4e4b Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 25 May 2020 20:28:08 -0400 Subject: [PATCH 127/129] removed increasing node.js memory size in normal build --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index eefb267..464ceaa 100755 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "scripts": { "server": "live-server public/", - "build": "export NODE_OPTIONS=--max_old_space_size=8000 && tsc && webpack -p --env production && webpack --config webUI.config.js && node serverUtils/createIndexes.js", + "build": "tsc && webpack -p --env production && webpack --config webUI.config.js", "build:docker": "export NODE_OPTIONS=--max_old_space_size=8000 && tsc && webpack -p --env production && webpack --config webUI.config.js", "build:webUI": "webpack --config webUI.config.js", "build:dev": "tsc && webpack --env development", @@ -17,6 +17,7 @@ "start:dev": "NODE_ENV=development node dist/server/serverStart.js", "start": "NODE_ENV=production node dist/server/serverStart.js --env production", "create-indexes-database": "node serverUtils/createIndexes.js", + "increase-node-memory": "export NODE_OPTIONS=--max_old_space_size=8000", "create-indexes-database:dev": "node serverUtils/createIndexes.js", "setup": "node serverUtils/setupServer.js", "debug": "env-cmd -f ./config/prod.env node --expose-gc --inspect=9222 dist/server/serverStart.js --env production", From d64e50b10f7b1691e884286e0fbe3954edcca3a3 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 25 May 2020 20:34:54 -0400 Subject: [PATCH 128/129] Removed env from npm command --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 464ceaa..ba055a8 100755 --- a/package.json +++ b/package.json @@ -14,8 +14,8 @@ "build:dev": "tsc && webpack --env development", "dev-server": "webpack-dev-server", "test": "NODE_ENV=test env-cmd -f ./config/test.env jest --config=jest.config.json --watchAll --runInBand", - "start:dev": "NODE_ENV=development node dist/server/serverStart.js", - "start": "NODE_ENV=production node dist/server/serverStart.js --env production", + "start:dev": "node dist/server/serverStart.js", + "start": "node dist/server/serverStart.js --env production", "create-indexes-database": "node serverUtils/createIndexes.js", "increase-node-memory": "export NODE_OPTIONS=--max_old_space_size=8000", "create-indexes-database:dev": "node serverUtils/createIndexes.js", From 698a41732da06b211d033846db0f4b8a6b49402f Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 25 May 2020 20:43:21 -0400 Subject: [PATCH 129/129] Made it so production is default, fixes windows issue --- backend/enviroment/getEnvVariables.ts | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/enviroment/getEnvVariables.ts b/backend/enviroment/getEnvVariables.ts index 7f071b0..4c7b20e 100644 --- a/backend/enviroment/getEnvVariables.ts +++ b/backend/enviroment/getEnvVariables.ts @@ -6,7 +6,7 @@ const getEnvVariables = () => { const processType = process.env.NODE_ENV; - if (processType === 'production') { + if (processType === 'production' || processType === undefined) { require('dotenv').config({ path: configPath + "/prod.env"}) diff --git a/package.json b/package.json index ba055a8..e6cebc0 100755 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "build:dev": "tsc && webpack --env development", "dev-server": "webpack-dev-server", "test": "NODE_ENV=test env-cmd -f ./config/test.env jest --config=jest.config.json --watchAll --runInBand", - "start:dev": "node dist/server/serverStart.js", + "start:dev": "NODE_ENV=dev node dist/server/serverStart.js", "start": "node dist/server/serverStart.js --env production", "create-indexes-database": "node serverUtils/createIndexes.js", "increase-node-memory": "export NODE_OPTIONS=--max_old_space_size=8000",

    Dq{OA|?0cmsxtXgR zal=X^*?6X1PUeD*czz%VPMn2$x#%2r@XjnU z97f0>wNoIZ6lm|@z!NWnD2R$Ttfv`aKPKQ{+dPN(N*{k^;-Ef=J7(uC4O@=%k-UVY z`=^p)ux>7aNf<^Xt+YZt*vrQ{lb5lbq}$iPGmtCNnm%W>Oy%VNSN`@beuRk`12+SHk8A?x9SNq zb5=6l;*Yppbb1RvLh?Non{vF%MkkaVEb7N4>H5vu(E-fCiqf3|t8Zbrhr=9d5SLx= z*KapeBAvJO+mC629Xv6%6ZT|r^9^Agd6{6gA#Fc>PS#1U!(F z;laVSM0ECMCgre1M;un=R-P}Ar_Va16ZE4|)*+eAPC{3ER6sTM!aw`sIUg$y?jb#w z8=4{#qwwGMhq|+ScH$pTgE=PDNJbNKPVygM! z5*Ev~+NO|I{x#QYj6%u&S=X`(nq13r4jV|xc-k^y&^WvwZ}YD)A!EHIt?%vSRz|%A zB%PjF!CsaU+z;{K+fot*8~}%6zLRB%BSWpZlr9jR8-U{~@8`BK86Q`E3oRKoEnzwa zd%2Tb56Da1GGFEZtO}Ah#UmZ4nd)xxq6jH@HZb~-;WMYSeKFj$6BQpjKt1g)ThZ-@ zApvHf_5M9#lG`^R645^7SFB?_lwctyKY^IQE*u9S-h53hcOIdv3b4Puj=#b($sxCb z=z~dV`rTfUC}A`>Pqu|vQ56=gx8;weM)nyZHM}ucySm^izvo8MW+7LjN51%5RX>QY# z9YI=>kh3q3KVVbiz93t;hYC%p>!!6y;H!LcQkUx~JzZFIIb@%?)YZbmQGkLdk9EO5 zIOn2`qzBMMaTcY5_0h4YU1hD%>_d8)k=Q%UTe(zYD7Otp3RZ+vW*S_iNXxYZS4kG&m&Vbui5)OZWc3YC=0wDPdT9!UHq7&2wxZxao(JheX+Bb#9E6}Y%2X&OdI7fWn~@IK+4 zPc;z~XbJ>z3{X+7{h;%fr3c4z0Ax#|u$;YgZ7X`zOF~kt=kPA4U6>Wa>Qv8njKzAO zX@sFtIZhw>vm{rxw=4A#9u#T^)3zr(R;ajl0gyPO=(lUf8j2K{_TVvzf!t00g}*2) z#llo~!nNfep@8~`!G|I|EBIv2PulJy(YGL&TBIT2h%tz@nI3A(w&ag|x6lK!slymC zM1HXMg3%twk4L+RYPwYIM($dl&HzA>FyHElXk0WbDN{v&-1a0*INQv7B^*88965=k zxd*zZMJw>BN-#+tDGNDlA$Fd(?|8dwmx(i%EmXT{6$QcZDd(5-^G88iqro$>}^ygPrz1ZgbSfO=H?D%HFg+% zbhDuIhd*KxDMC^{ZViGbMuDvd(IjkTUP{@^xx1}Tab&-Yyt!C()0rQ_3d+k&dG%$- zR7?40DF{ks7TPNI7{uzbeoipdcfPk0Nk@<|ATZU5 zBS+=1s%^HK36MsNi2xE0V7>(;Y5%ZAvxqF^`x%#a9jml)9}*OXH+`bFgJbu^^i{G3 zT?oj%5TQ)5A|vGz47%u{D;s2qHDL{gxzDj+VH&2aZn$s}0*4-+wcVX#-F=g&atn+% zp-J}i_*7td6tnpt#U+!&5@VR*gQhC{@HH)3i{xBxlFclV01k^6j_~k7eB{Wf5fXjRsw}^I&sKy5!yNe>Mng|P1^{imdpU@= zeOBoQ=)#+CDg$-y^%Y!@9nz4DbFP) z`Nq+$<8qNOf(xE+^2DmOj>&yDK({iLtk%bLS>u-?B81{=mFBUMtD;l{J`GvfI5Kbl za`P!8JVC~R0bD}MwF*bMdJ8ORlFfa4dk%gM3$+Ayz6d^DoDRDa;=(u;K!G>yw@I*q zc9(m>L}BC)j|wAcvxEcasgsu}`j79S;r06hon=&Us>pm|02%~m?s-Ad)fzE}>HZ*S z%4$SOb+qa=(k~~sOjun!t`ZSGs2~RS?OC@ihuJ-LwQTF=qyxyxZA`KlmXqcEJlX;mVj2B-f6N-|3o z_I5DL2NsaUXLw=>>V?VKIM6?0ye)2hwZ}NdS>2wDVp}WUm1~}ZqFbl&Jy4bmv{&R` zl0v;#iF_aEW8h#`e5V~3XEl^4{AleKMe?0c3pZ=(LRoyIFw;w41O&2_lLib`EQsZ) z-+a@p^i~IYjJAR@?T(hC&`2_@wdQ`OdN%06M1fT+6J5JVT-dUrZ`qg%+JXt^QHnCY zJM*G}_DlCTmiZ=Gvu2WXyLl#=&Dho-Q)Zu7xZuWhwQ`YsUJNHk>6-FTPV&9M??5;M=Ict#lUIR%7*^@OVz9Nle+v_43wd zivytLXQ?88eE*Rg?V_P;4O!w@_zspjcu}NiYi$}osVR;LlQW6iRD^o!GQ`Q#gWThy zE5K#qSr~h(FEa98CH1gde)91lHO_s#%dvv2rcFV9jlo*O@8?T#BD>?-Wbo`@hzs2r z4pmn4uIHR}7{H)@cJ?l#`{E^Nmj<0X!C2PX*LtgoiNcofPo@&oR>OV^MpDmCx|Y>s z|EFd+*?SL_2hpmFnx#<7XW}Ni;5U+!)GVy2QPdB+FSC3R9fCeh^-zS8 z5ayiiYcH_=4YKRDO8l~4@B6eVupyy3(UkHch%SwlV?#pmU*KD36H>u zGbdVOb$0?;06C=ePK&(Q<@Xwjczm0vXX#5}Bzhuui`DR}Ee12AsH_>Yn+nyssIy7Jnr?E%1hw2iY1e;anfK z$q8RC_g2qn|9H!7X26=qu)3al97Dhtn-=B4u#xiP{b$ts>t2JL>lld=k7hQ4Kk|-L z8y}BJ`T^={XAJnmY_`$q$$#ZJAp}aYDFU9h3a~+XEq?e1d02hHDl>uY$={z&`Fnyr zoh-C6ND!BCy#|g`e9o*n7Uo_7CZT$YOE)JE$)7L+adrn^%ZQMgq@kEg!nZ@%*7)uO zu<$}Fu}6zWOcP)*Jp!PeXDc&d>-!>?f{73gxKKsF6T=uz6y-^}DP-xa6D3cJibXNr zpfixR@DlCCeABU1uC>&sTUQTKrpK!!EPBvaWe3$FCf#z|4%$oDT!z<6(`!EJvX7+T zg{Q7A6Ba{88IU%>R8wkggSWeA`iWm^V`&8Bzo{W>Nod`LkZZ%_WA?^+WKg94@M(M@ zT2rI4kMXJkG9t8>exv0fx7q9mhf;Tnd36b;hZLakWEXoFg*xQoZn{qy>j7#O^oO`iXmIqn>0m^UKq2RwE3k1u2o^dbC4DM=?#0v8-8_&{S_+ zc9KgSoJYL-%Wy6SE#w9Jx!+DH&?8_mHI&(w&#f`y@HtY$U#q%ekw8Td?)Jzis0v|x z7U#S-BiHN#BRbs@6>{bsuiHjOhSrARe7h$t#!K>6%p32!*W()95ppPlMQ!(>)k8;a zno@JTFbSE3w7~rc7+3joUFZW2nqz}jNowa;2tCm%oLIkRQJ-tyrt&zks&@*tuQs{| zwcvgsDw$rYs3sAM>?P}iD8BLL{3+cp8?FY>zL~lzj<$4 z^v(nX8lWCy8Z8_jrx42AAJsIXZT-1n>3`EFfCf&0u5|(X(^cg>vg@$&9-FFVbWCz> zs4#r;qZ&;MpBU!D6zrr0H7ctumJxK%6h>7m2HY+#CK=CM;`G7FD7)3J z!-z_J67qg32`xTCS9>%1x@90zCdhQxwIt-`YQA7dvv5GY1W`UfpBIpUYF|%y2ERS~ zmZB4Wb>|txzZ7oBxXC>$#{KLL`74C^bS1A33AUviv6~{R%xBlGy?bX7TZ>4a21eVZ zpz=TyLka;pnqJ*ZZTaH<&u5W; zBYsDr-grKz$+b`^|3QQl$7gyn4gg06<1Pa>_rw^m2NTFRiC?$JZ0XnJD{$P4dZ=;I zOSkca--FdU+9T$IFyh@Xm3&yAeHSVX_b=bPWV?L%T)PaipYEfzmFl)Aeqih4G_IECykEq-I z7-cPrv?j;qfU7B59WyiXwZ2>+56{C#w2)i4|RGvi8YsS5q zQQ1JF8xiQLu)_jiJi2_(Sk9cOmj`K*r9$5qMG1bi5fywagaSc~O+>e=0p<^BRT7KcQz34Lf`S%#OVu|$UDb?_j>e_o@c`#-;U>Em2>J&-E zDG5KhdhG^imGRcT-pd+Lr%twamOR|$O8~Wg(4XF!EzjF(DsKH*cMdha<(L+?%EmFH z8O!-=hp!)}8e=|vGOS?HD*f~RzCHENPCc=>e;F+fdP)KP6Yw%Rf-I8?;UV~edt>C} z8C;*P{{E)oX*vDmk^Uggm4G7xnDiX3#zVH%OphxwCBNLavYWHPXv?<`1Lk_=PDOk6 z#NxUw!0YS6o@oj}J7Md}@w91yu!)+{#5sPleIx-hA#@xNMXQ1>(}mjiaUvSC!46nA?rKG`g$|3)ECbGArv6hU&)X!KI;_c0VAvpn^$( zBR&#&zg5v5O8K%t^I2UCYy1TW(Rruz5gVbKW8w*TsgXcF>0f5Gm5R zkMKpy#Shlp>k>XYj0F%)+U_u&R{rw*r8UNBe)%v7Yv;Aj9iz)w<;p-~7(d{>*S6y? zF8J^=z2LG!xLvQv6Nd37M)pYJqt)h(rn4FLcVH~;Ep3iOGV zb8x_QUR+gtBB^(-zkf7Z@OLRS0fLIU-a}i4uRh$=+aEBe-PQ(*DCL*KYj7oQOIYM( z`*@tlX7-fB9Sq|lGhb zIDnAgmgfihdIO`?^(R@Nx_1)^HVC7nkw0)0)(R;l1hR6eCM)E!*yv+iI_ek^rb%kX_NVccuJ`qX8uQgJJb|YjLvyj zPAP&D-$J3hiIT@(UmVBUbr(}~H%7Qa0mHn#dvQT3s(eV2lyMC~pdw(-L}>WcxRzv)?`+q0AE)T(i5%1|QG!RgWME6SWsee(#gALUa@CwOV$#6s|AS9D@5d z2WICnK;u>7ZT}RK=iR$S!5smZ;5`1bPIdzA7qHuk^3kFuvSHz|`3iV9yuTL_*is=lSs&-Jm9&hHYGiB#kiki6E-)R7_etu zS-ot?UC8hTP#>{GG>-M@N}CbM<_9h65bGx@EHDr#sW`5eq-d*;xXpwePTVQ6N-vQK zs*Ac*wJD09`hk9}Kd8$;P}bMie@Aya6e~y+WezY-247K7S|xQS5rn$rF|>=NW}k>( zXunJFf2MjT(s8SWqavw4u1KGd#AyIricTQCtKwhu>|X!|aZ1a4`#hk2`bE}$_R)o< zaQ7b6o~O!c2fC!wVC6@48Rnj9H&OBQ{sNGg)pECkekvDD({ajahaYj1r}5tr6*2iZ z+d;|&SPTV$Q4vy9*^mo!q0&z-%raH)rb0O9`%e)?XIw<+Jz4iT|sU5U8W1jL%>X*sVu{tAv?)5X#Y7cuT z`}vP1;!yKH+S8%4$PE&=K+-tJvA811+41sLu8YbZ6T93;ftSM;>0=R<^=O8^0Ey98 zUiQzM#$TSe78k4J#9@>qev#C#Rr#lt?m|Q*;-w#8?y<>Ss_i7bM)cR;=>(ysD|riT zLedElu$TD(f7Jpa+d1{}e4T%*2NhQ*6W+W%*|IE9u(!(vJcd{1e^&vVXrxTh2snRd z9PACljj61`CShf^C7!2)t-^&@GO`7kc=nVYN43hacum84v#oSh|52`(4kopqIU5b8i60I=H|JfO#Wid47MJU57Zz5e{yx zip$sX-%PXk0+jishWl~nDKO>&&VPxpC{d#XsATOU!Dc(-kj<|4+q3G(d%cF*6D8_- zZre+U9^CMJJw=D$r*oqdPNF4FivKD0*!wO#B*+d3KB}V2!I)D`Lt<~Ad|pD34&KGd zlGAryJQ+SuuPtT&I(h8@kQ#L;6Ofw3n6-f?Z@N!(YV}b=Z@TZC-7=BjatQ zznm}nmGdEvLTi%`&~M^K$;HyBc)#6Ect=31Cv2(7xzV{SzHmw2b)RtX3j4#mQ+&|K zz!OEp9Qabd)uk%@#NLsX3wdp>eAK1QXg#s(v(~4cz4uN=XUJc~yj{kvLIQj|3=Dq`>&F-H=gI=Kl&CAfZYPT zc{xm@FE?=zba%y^WFr4Et5DOiu6k%vIl|e>+0XkpPsj0 zwbcwt2xH&(s!1^8j;+VEZLg(|q5;<70&qLJzso|gW58FL{N-n}N$hl!Xh*oiGfWuI zY9;*xd0EL;CX&BgZf5rYR>KfL+nBiCMSQXkC{rA#l7^%#zsaDsi`CrM?!{62Y0wQI zteEiMW%_lFD14ov#1?=WfOkacuvUKD=Y~av*nI>q!DTZ_)6*f;hMNPISzBVx{JMM6Z+WsWl0+(J4=jQ-{ z#Rvo;mIAnZ2IPeJ%JH}{If*Rx=mP2Vt)tk}HQ*-zy(e*fq)9c%Chwhl9`eUjz9Kk1 z(~;@g##)gF{H)$vH%nn_Ep({%sGq9b8=Oq^a-(;XbEtolK-dbBK1!xuo+C`O^C=`Q z-g-l|4DIBAV&$Sgjj3N;xIB%i^le7is8HOFlKgMH#~FlY@M7@q2Q%D>I@JBoO5a`q z9G!pa6X48M(1r-D2Df~|kJ_Df!@F1I1QW4`q2(KsX#ia@oat4U;zn(Dl6T^4WVZRJ zZ{<@~vF5?%O5b8X)o@-N5A(Xb+1j46(dfyUb0;RFezBPMx~{3$0|HIP+H5v1==rLo zfWFCP8$Ek8Y9heZJJ+Q)PdU%d6o=;d(!ysWEt&!l6m3{e4*EQSEy7`(d1Q^gUPu^# zzwo$|HKm4}PJD%|wZ31J(;3V7dvxl~i#Yp1L+6Dhf=hh1KOZ(+q!ioJksl=1`X;PV zQBH2@uObJPa!Wc9^cv8}>clO)9!dE0)+mfAOQ>+3Qqt1h-7O`Jv^3J7bV?|a(%tgVN+aDMNOyOaba&15_1Ie^RF1qe3c(Dj_N^0drXHQ{Za)!* z@mrw`{O+{r*s|KxE9s7}?L~AocqBZ2>3b+wSB@EUa?b@%US2 zzZa)*;7L=oEB(1RpHjNl<%u1px8ISa0lD)Zg_|K1)}UX0@PXW2;cr(KYHCoGMQ^?E zd0n0H`QK?P9`_);{N-2CX+*EY--7(g+Qp) z>%E|n(d=0=D}`hZYAcpugl*4CqVS5!PlKN_MLEnz%>U?CCOb-cX0Z;_AZ2^eJ-ttJ z9pr^YLjs9Ge7~x;4XsK9L$B=)HkaOUwvT6jsNAWAmgoW)wcs0EP+{BLd&jqp4;r5t zw|^bTid&MT6c%{*yDSF}0<4Y3*J#-U)}^BrGkoEcdDG!Po4mwSO$m zya!!8SHIGZror(Bvj@~6S!t&DQFgC*ihm38D8y=^EP-b|-(c zBL6Ykrr?({&*>xMI<0yOlGZC!njA&@Fum#68@coA z;?rqo5nq+-Lhz%}4`b{oJv7GP<02O?zdTc12}q>L}KJ=|h8gx+twYGK*6%@;y&vt#H2C^$E|p0fKd^EgoHd^TR+E1jzgfkNNa zwikT|>jgR-)g1$-0&~(Pf3%1s8=}j-{goXq1towF*L`Bk)M+jF{e{hmXiI1QU-Noi&n6*mc{zg0^U^{%66CrhOB^dZm*ib|Rr_JYb zo@Id2a-sRNw#-&pXqAqXx!c9ex5zWM!>Om(3}%Qk^zF)oxezsO>2HlX&MoJLR|Znb zqL+Mdmb80k`_@_dZG8EG!B2~aCmnj7|KQL(dw)$^gR^P|v(8Ezz*yf0VKfeTIMeSK zXm>P3W&AYH*fCNgW?aYcKKBej;uzCbaqdsq7_X!h*0hS(bDW)-6G?m=wfL~;w(|Us z``UY(X!Qet3s4>9qTf!;_gv5Gjq~4;h6jnFjJ6~}x9{BNU+`SE3%`*U`M5r7ebp}- zxptfG`{YBggX)JIMw{@cDnixU((1hr9rA0s0-xj%RgR%rW3bhoW9~`(tyccajrqPh`hm&27kLeaBeQEl?477Lft^uz+unvOHSaVeJXU85ZRzHaukT}N$T=k15^z|guwd4AxW?(>qQImsv)1BY zO{>F-4>cTAJk|xHIMQ-eIh-pom-*9xd@tb`c&1 z-I}sd$?P|C4Qe%*an(=lJisKi2q%#D` zGkBmau>sKZPnz?nEEF{%2gr9Nv|q})NIwZdVZ1BfbQ?L%N>5x|-=;w@|1iK=o`%W1 z&&pEfNR(g;AZi(;>XaSSp9QVK?FXKFi^*?GRSnuO!XKf^>OGKaup(}~jz<@{GMcvf z{%w@NMd%PfBnsmaDgSHkN*lRQmPx0b!Afbu}AnS3XdqqQaNmgl2<>1&`>};zLq)`@yf$H;|s`J2$o2DnY%l85? z?<%<-0oIaO=zbo>_}+c^X8D&NmYV#B3Sn-&N=t{U%Tv~%8r!3UX_f*`2Q3A|`frzFwoj5Jnzs&Ozo@w{j3jHkq=JQl5G!kOBoMm?6jyAM3zct z=)jF5q5=0F_ok;)KFGINV!%~iX%oZd!~3>&aKRQn^ZkhR`i=Pc z`Go2WAy#qC$+*fh87nck9VxPB&gYW|JHYe&g?PR%q_mO?eso%+>DX;p z*_qMvQo-nwl)l-Go62lh++6^GFa4#mU9*2;q6xC$!j#tMHvfEg?)MotNB?csAd5ut z^#oxl<4>2x@PH>_nIA1J7$o?mHB88NMhSg2Br*(csH!py>y=ApZ=Lr#WyHM2*3`8o z0YH|DZ|7E8_yodsAou=T&3}@>MsTyQK!6h^-4Ce6Hwv;R5P z|3AG5njh$^L_00eQ~A$={eOQC|MiOh=L^pTH>pht=R*VjRRGnO`^&9HkngsCm>9^m z@M+y@*93O;Joi9R`ia%sWaCHzr9xxwkyrw|&VA zAlB#lZUOi41uWqZF0(;elF+?L%NMQ(ji;R;v~6n(2<2eTw|*yB1U?%-EStf0A|Ts! zf17h*-Msz`bKgFi^gLCJ?EKP|dQ}X(bdmp)Q>7c6*`RO*tR1F^rKG}=dWLzheCG=| zmQK~5o5xzds4Ywb>E8EzK>OJam>xt~cU8*;^&-H=UDRj!AwAM{ROK^3(2 z0ORheE2LS_NDQvRA1pXR&lh`G-D!UT%^4rzjD~;lL0U5Cr7i{!ci5d#DWfRaKK=T_ z_SpvqFJS@;l^Y+1tp)G5b3)6?x21`9e~zTZfKJ=52R_!q$h2}o4j7i8qTn${q=XLi zAL@)b2!Y%5)t-E4Oegt$fhHlBz0nJd7R(e}9=k=APo><#fV~EAX8sK*DJgBs;#HSD zAKUGW?|9N4V^7;bYAP{==9jeY23495F^=Z;c7d~r(sn}mA}~2J28LX@ikyf!f4g@~ zI>TNB*7DhE9+{%;8GcKf}L_f8FJk zx&I{i;PTL`*C-$*7K#PeaF$Ij0iPR#I~lRhav#;5(~dgQScjrB`o`{q8`g76utG>a zsW5_)MkRt!S=c?SVa&xIA2L6U18SwGE%OL*7noD1zB4~b(FmtS&vxf{or(`|Kdgdh z4V-b>r2eJu@{<_4wqOhkxhU<)ybmT+_nUmzMA2iVZ4++Dh)OsvL~EzakEvSbE7juo zD%5;FC4dyUt4ekHT?%q)?-)muT}WFiv~ev5Eno>aArV7CQ*1tWS1;n+qfXu|3Z3@R z(MaNCrj6AL(R)aiuk6meY!q7sz9imrlxir!|=tTpsf6pJo!z=7gD zrrPR@_9*2#dw(c07_#Cw!$8+Vb@7=6$NI0dF6qETqm2}kU?_FuvKZCoU3U0Ii8(x5_e0%VUgpD+u z4`%-%FqeZ%a-EDRAdr*U`-Nz!E2YNe&F{AOh0W`#%)E1j!H9z*&zF9{H3ohwn{B!jC-3JFlJ@K9``ZvU;prp`r=vXfPuB~3T5Ss=&9o!8_E@M zwh6jE-AY80f7u2gJ%`6@B)qS$p9d#kX8682RpYXquPp;upRT&DvQeGSM-130YL@E9 z{mNGPUU6?W(u6%-M=N7e+ZakqnhS(FoGN2H`<64=u5W*b3y3#XBpQ6oe=m#_w29*o zaGxU^+t#1Vsphr9WigocSuoGYNkJCEwJvP{7B$wD!g9<(C|ht1tdsfe;f8Kge|L%D ze8jWuF(~_(Lm^o}xb<}q0m+u0L(D{ehrPLU205mRq3WeU17+q zO)v4}qh;Bw*N;rc+w~naFkI%-zlgmn@91@u9;n>rGqw7036H>rh?#Rils4X=B>C#2h`q&!>-$N0oN?#QDU{ueatofL8Kq~=3OrJje&O^`kZaUhpTQG5v)lA z&wW79@|Uvr-L3^R4mxNh8p;_$gXUP_#%g++)z*`42F^TP#t$Hjk2s@4Tdy343x^NLI6{b=pAs% zW{@hx9TrUZB57_HakY^M?hV@^U!q)?U&QMosjim=?oc4 zHqV3kAKUEUj^yS@8Q$~oY#Yg1)%CyVhxWqxWAr7kq8Q%JPPO6czQ=qHjCsli1$O;G zJ0yDmCDW`lhCB2tGIHCNi z6x3bFk@`ihdz5L&r$7pPmkj`y;#_awr)G2@mrt6FxOl4-eGngUJ6v!tqpq;W&q3B3 z3FxPE+o8$}I7cW(LG2D2czK-{8Y*7?CVv2_@E6a8&xZY%pae855@?b3YR^KH=()(% z@-S~o^nzt}cpK2&l2n7B?Fa;;)bp}_Zb<2kc3e|D^Y-ob&>BAsCG4x$X7cC{fGH`~ zPBDBc-5%(z!2&(`00go@(-(OT9K2pXU6Vz9BQa=c{j&z z4O|Go?Dn>@g*^yNPP z6-RymQoHCelZ1rk9>U7NtLX?-w}exqNuw&4n*k@1YM)_|@oF%YmlcXmLlRVYLUHsF zRPx)Q6pqC)94)BQGj|T*L3~{+*ax{dVA;lQ zI=?yW7FU>$N9o`icwJWwzi^}9P`60^agqgU3C_r{I&5FR^6;{38itvlvw7AH&aTM` zVha|qF=b$#vRKQLGqI$f=AAgJ`zUoGauLFY$zM$Sj> zQ3xs2*eCl}QW82d%sj1Aj@ObJri!Q$YV2ox-xqCJD{o?JvtKK8iXZP0@u&_YbBZG8 z(F9SCC?x#23Xf_4aWXA=hDg4^P!d05Bggi+rGV3GZO)6n^w&mTGE9ue+U&vVPa96@ zkAktp?6X^3V{kPFd3XW!!=d^i=DC$*5+VDF#{V_447l{rHXzw-q+dut4kpcyi9n7y z%S*xKN5$KiHV;T)sDKfzLVnd;>s@Kt0Z@FQuA_IpNQUY)sfEN#K<6R2jKKwpEu&^!@4B9VPCdHlbsc z=5?GaD{CplRlhwS9WgkzO#rYa86NLHQhu0B5;4(C;{7D9w-&Cj$w`z?QkY#-VLpTm zC0dR}o>Bh*n|3(GAE0@%!8MXv83AgAwE3$bl~6tq_9)O?P(_K!BMtnJjisS3hG-dh zP~YtuKFX!ML983@Cucg8c0$mX|Jp_5-Ht)weU?qCXrYdY&ir8m%52Q(2{?jxa!d>A z(6FGRM;j#-_3^q9+468cZ`ui;5%L!?`dWr|$-AmODr(JXoOk4X=xK-qnPaFaB}|?Va3fYk9C~dDstNS`dIV9Fr8XeVTTg3keF1Uo@DIcsSwp>XUK_b$9N?=l z_x>HV!P`IR5wQ~ZUIT6P^4|&1g&XE4C|k2kj#qQHi|7WOQg};eL_pJUJAcx*XKD&O z1_E($B;MGWQ_I~)fptOf!1?Uy+G&O*L)j-CA@W)d0w`pW<{IPqke#)hHx@i>Dji!k zLUv}Ia!Ip~xX7944V4Z7Vh*1~#3}yF{I6s+Aa#qy(8hhH9GaCp^9)cr?>rQZ#m9xj zD6P+CDJ33#1_Z~o5J(6a5zq)RCO`FE0hfq9w(D~%M3)Fui?ofB|fJCdEM z=(lx^8O}d6w|G%~HDDvM6yt*OiV%*59}~UhBX#ox;z-U&Tq5>cn{>dN_YN%KaF`h7!Z0aj@kH&QgTfzBnyu;cpTC zN!twDBU-*0T6Y`oUNN>5Vl}x)^KjU@Zv1^DUnKm@T5F$co0;Poc41l6EB=~SQ7NRM zR(KE_B|hmQ>SCSMN{vpTfxBka#tVOXyc)emN863nP1~y9J!>_thV&omc4u`6>qrGx zQXuR@ysrH}D#ucvMg5p=+gOaA%6xP6>?w?zFBX2Rk5eL3f|$#=1~t7%U(+ZzI%Fvk z#jvLZWTGwmAolx6u|YO=S3=J(vnE%!e6E{THR~CQN<3;EZBOig;<;DfCR~f9cygX$ z!>{4Tw8+NdWR>bHyTM-E6^B8l2fNoa=m7s1yRB~%@gbh>k`&{a>TYq9CRWHm*w$Kq z5o#1F!uB1gAuJ%F#@v zQA3tj+3&VmN1wg4Iz8TpdFtJ42iNQgYoJ}1lRSiq3U(IBL?(VP)LLdw<9Qn&+Edp7 z_w+Ro(2enZ-K095KJkuW`US(#+%WN3*-3il(a|H$iBb+g_Ly6S%C)zvn^rVKrb8sy z2UeZxe#Ez_JF+Ii+fD=?cJu8Iq}r=2b{2e1?XpqI_iF0Pz23ZwKgJwOkbp;*+oGY* zP5&7FQ8s@k$!^X(^+OE&i|2^%siKzOwjslzD>^(y<+6Bg;#~omgiVv-_U=5RT7LEV z1VAYHk+Pv)Z_dq_PB_iV{ty8(YcUgsp`f!~q|o72@&gbl5R}yKFno#c{lTl01Wu)t z_C6Yv*!akH#=qikzufLc1VCj$qd1)QNo{jL zr`QhiG%2fOdNFLKo&5yH!1i@Jj8@@^Bko`1vOVAoCvX+MMqKHLZ>i-#`W130ZYD=i zeHTjxpVb^0URtrWQ`?xj#=H6~AemIJ)L&-KRkUFk2s z?2ZuJ8xSUZQ`j|LMGr3oUhX`%>NjV2CmI4+rhi$mjST%K4z}t_>&gu)3XE1p`TOfD zUQn-#HL{~k%Nag1SJ}U5!UaMY1?*#J#5K%~_+mC4h)*55|Rtnda`W z%5GUk$ zza#nCSIh=b7U__lQ9DOJ@rOH$hpvA6NC`8E)0khl>} zlhBVs6SPO_LYH!K`?&WF;j^h!Rf~<|blOuCCLuUXHnJ}i3|~T!LvAEhFfnnS(kT2e z!X*ju-@;abTlpID=c&|^n)rise+cF?_KZGwo`LsCFE0!Y&(juD8Wx1VnG4(_yB;*T z6e?+WUutSy^1Bpd&EfEKvsNg`pA#Sm&icH8@(zr=0RXBFr0N!bzM$xzk=X^}7W92S zP~B-Csja4^!6BTROz7FM2<63B_UKh>qaV8X{Pekf*GngbqlDWXtro(tH$w8ds>3^0 z9xg9nFn6&48mK}-b~TC@hbxOoK;DqJS6w*_l~c|6tpt2HjMqXTYQ>s0cm}2 z5IBa0X-tDuf*;JUTqz*l`` z9#!&ph1YVS!FfUDNViaqW|8)aEl|}Ob!RC8hWFfj1hL>e_mtim$!0hw5W0RfoD|%k zu5{VebOQ(Opc@su=Gdc|eoR)zgr9|ZWhPq@D#T$nJ%`GgmzgV>Q6MG9z0z&)4GNH9 zBZMAxQ3EqUv2y+%m>4|2T=|k2Y{YS_6WShSX!a%QA|s`?4x}^f19^#H)}{cDet#J! z$N^cI3pIQ^@u)}HheODQ(?0O^JtnvgZ($W5BqWvyZ7z=US1HI~|K|r=1)R3QVdSSf zlj%eH*vywMlSq=(mf9xfGiX8B^udegz~wEzu+Bv5W*pynlgorz5Vb4NE06b z;{&&KesE@A$R;`eQ8t9V$elw?EZ=DSB#Wd_vluxLO{nk(Q73f*j1cfi{o>V_=X2yo z>VK0Cg2!J(C~Li#k%DckW5TTa105$`Irj^PK6pFcU2AuY-uqsi~>yAeb@& z@k8ZJ*wu!APpJ6Lumt+I8HAWjuEMFO=t9d6U>+l650VGHjJZ&u49%UX^oYG3SZHzR zOJGLXuc|H&8V5qo4WEZoNCUHOHQXU}lF@Xy zJ~4s)g{p;bySlOV&P2jXi6l%OpO$IbTM!EpXJHj9gG%AQ9^*jM2Xr{b*P^3ubs8+J zWYti}AvfmooXs}#hx944yC{_8i>8~@JQ{Pc9Q(5o2}>pWuNys-lF2!nEv}uR^GzR? zxi|Nk;8R0v@Ra^%*&&;P&qYc-50ach96VE$ikf&Y4z z{~w>&MZsvQM8GyJh33D#FBKlxn?-G&I4r8aKUC?0GmR=(3o6X}3RdXnzVDnD6N1)Q z9(TKZo;WBhRm38_NJ!|rnlEV|fpcKTe8+ywU$bVjW9(ZYd!AC8?)Ay-Au62<`*C!e zMiTxlcC=88O6_{T z)U3iJ&%Mwv$^_|-y>jgF=j}-G!p7VBuO?}Mr>2Xh!ZF*0*8=A+Rhfh5;>{tMC%#r$ zBlP?Y*mL`54y*otJ&WIFyE^bj>L%!$NqdnUUAsCtBnVb~6C9V2P2V* zQvX7dA~snrHO8*|bqvg$szW588Rk ztuRS{i{;&<_Z7m7g_3#Z>mev76rJ5a&$ca0Xf+Y7y!1F`O#`xXllfw}H2z#(FOU+MnCjBV57#9Dx81zp3g^hHY&X#-%-sXzaqL+3BCn9h6IhjGbWkpuMn>N@M*L@vH6U?a`*M&#+?Ga?p$CuP)-Wu5A|f|G35k+Y zyH+&R=k?LiZ)Eg#zP~vrI1*16wdY-x0UZ+31@ z&rR!lDtFa zVc*}s5;>I2`)D2_q2uHfYhz>MqW|rzhh=JJW<^I=M>Rm>59@u@!)xFt8WAx{OTef` zZXR8ypTKeXGpaElXF$DRqsAnUORXb1G0F=;_252UMp_sX(BD>wi%`MprKVF?dsTaNbwr1*ciZtME3J3W;!A(+L@X4Ceja% zcFD+hMYnGGcLW4~6~(oX$yz&AuyX3)KE9ub4E3_uzgW_@xIQe~-`^iZRdX=-778x! z-$xE&H(4&PICS4*P%!fHO5ELE*sMOB-j27SEXmGZV0;wNYtUljs>ujbE-+xwGsaX9kEc|X zH;5VP=8kZ3<}U`rLk%-RK~KO))kzF#*2>P3j9mTKEJ$yg)|( zFuQuwbSdSgm8e^5RI+?jRi09pZ2_l^<)wo7zfFTvSZ-o;_u-C~I}j_KEFg0`U2;M@1f{slX{4x? zGeRQ06D5m_`?jZ(i_7edMh|+tZU^rV>n0f1?CYM$D-B>8^%Ihkq6DrM>(&Gu{&X@Q za+JTn)C#LSdmH|i`%+uO`0rltYehlkH_qi7uMPb+DMT#tk^OPFbHMmwezYUBP1VeS zBo3*+UJZN(@~G{go6iuK2wy~rk=_mY?`GBc^hik`nq3#9OaIt9_9d`9=hTbclPx5J zMU!YHvP#7=sCSooKU+RQ^xYLcdwf+2r8lDehAN%RW=ix$qj&;~!5@pXp&5zH?;>wq z@36Et;9^XurFEOt-qm*KT5p_CkL_fh4R#fRVF`=Q*)<-CXp7vmkn zv&MfloHyXpZ|z#B$$~->##7A=i(U2RUuQN)%qVdNJmLjxaHYZLY(>8gH|QBu(2Vm) z_UTqo8^L0P<(7G3M$|dC|Ij5YoewOu;)~Iy6OY2$D0hCjpkE8~3oM-E%C~VCnK4R! zk<3s+G>WL|IIg}pyKyM$Vm|4+WIpC>?IUKBE`HmvIK;QKp;@AhmGG3&jUa{=_FVEw z>8%S9&$A9*75n(jNpWfygkbsJkhMm7CLj@> zE@E$-bpP32SP2XaS_m zk*_cLRE4+9G-7jM1t*_Jx0oJ=9JQ?q?4+{!Pzp|h|Kcjz>%A7s;|`-tQBD~D!&0YB zut07OF-nJ>1dB;vWgN1zRC_4XH@B1*(ex=Z{kHLY-{U^OH^i?pB6f~P|xs*Mbbt3E@Lt4?41U|XV9?&9j|pMYDa zP)eat5Q5lG2ZLH0dS5#!%C>xSXYjrQo)hl!{oLlPj_!ijp{zpL)w>M_2qG5+%xT-w zW_UwxAhF=>-S6<|Wwf^iOdEK<(v(K<#zH6-E^c)sEx(I>p7PAff?Vw|DY#+ik+dPnyl&OJJ3Mv!2C~w0XF*N5 zOWPI&5#ix=*QZtNw{b`DVsMTaM)ZmorQ64Adi1_%%WemIm-4fNj6H?faRPLuh~rOT z5|DJuj7m(FMpYAQH*Oi%Y-MCTg)`m|NoKr*!@c_XVc2sc(dp}42)FdJf9-{0NZ?4% z0Fz!0eZyiRaBYsXK3~~|a*_z9=I8awV1*%$anf*v0Z-&1%Om5WE8)h01zvM@+sA(_ z?d;G!ZP!z^w!!T~gWcLH4*~j=<>4|SX5%qewb7a1;XTyba&VFv7_dwWLF^%ikPi5S z$_^DFPgml5~~;#X&jee@Qjx!IRZsoFi@+ZXUbt>Cn8%Evsp&o3|Wn18fAp7+mijT3-CZ)eZ9fFDe&30b4xL-<=kGBPr{ zE}AM;SiXdmpM%E#{L$8Sj4YTNO}geW=_d-F@e48I!U1C>M>{;Sh#NQ2LHIQvW)Yv} z`x&9^7ep=|n1p?B4ns>14TvdYj~Dssi_Z_8wYk{Kw~U_U;gQNk+XnToW&ahR`le8l z`Kb>Gb7*LTp~XcCyQNk`EcU4`fPSoPIB?s}UzHsHLGU&f-E;GhdLmE2?xzP9;tXe4 zCK;lHAK&l~L!yJD>pCt!d@+y2lTh&h{#30u=$%wI8Y|@7c@fu*iatZqLW2FTHENkQ zz^j%$v|moWIm|tj;TMOlZ_p(!kQ%&+c9Dkf9aMkhoVX%ZzRmcISqJy_YpUhq&@-~_FyXtQ26X{je8&iDR_IGJV^v!ltwE9(Y zaLD9QJEHV!2Q24#uZHQ1{~p%F7QhZya6pnz2x3r`c(^ZLltkAHPiB6oa?6uVWCL02 z1x&%J%j?e%+Hw#kYCGap^;pS_HaJyb)%)_cNb!y-BAEKPdW|MwjVhVHn`XunkomxQ zA}{;DCO-aKHUya#e9)EtIEnuyNAlnPRPz7h6A$aS<3h(5Jbu8#z7J~XvwLD_X=yvD z=l?31z6o(%{xjM#%7R#PeqE0p!J%8a7Whj#LEo$!)7Zo42MF|nUnBicPJrZ7{j=Oa zmq;;Y=y)ZhC+sjl_gHMWEB458R4LcYUnjUJ%G=;GJ7SkLYlKnEooup*yMgbK$&K#i zyvs4HeC+ymLOUz?uoCD(`zpY3Z=TJzw~+7CrW`$N9ilem zB|g4AXnDvWA|@V)7n(OI%25Vhr^ChCKik3&3Ec)1PtG7%X;}Z-E1<)H1Kln{NFxgV z<~3wtFHC&42EQHr^|ZVMrj|mO2Zp!f1)otPLxCyYBRKJX5@>g1gV zCGlNomo*;M9{7(&&uw|b6rOka%DDc@U!{!DVR*C$~HU4mWyuaK^o~w&h7MX#TJ&aXxu!~IT z28q65{kLm60llU>Bwrc+=3!=#lCo}qOKF1OR+`g1{r9w0%~FGJJS=8I+ij6(anjQrjlHf~1TXQmt13y0R+jr`ff17O;IkQe!YSFP$XR)XE60Vjcj-??9ol&Qjf< ztk73CW6Gk!__;}FwwK5o(#`Kqadi?#L&dnU%0%jn+u<*NMtb+(+YGeK0|5qZXM@+y z-00{kC{#p5jfbgbDwj*zx_<8}%9^09$QlWUCl`bK#_w=bp;3bxKO6vKShpZjA9n*2 zYHuv%F1N-t;sapJi6ot`+9f+|Q}jLxPh|jPCjT`h1i&oSSfG3p06m?M@%pZ;tSo;$ zp5GFgau`$?@p>w{lgMg#0E*2ub@HrDT==;s1F6j4=pV}$v>Fk|Ibl2>Kb^!vYNbN) z>IMgurk0iYrc2J96tWPDw1Wvco@=el8h%e(3>G^eBtW_t&^_B81e9mHV zYdfc}293ekEqu9t@+U$Zrcd>AT48t5(U`n^Y}!%2Nsh~WTte$47iB?pP>aDmlp0{d zT4o{Ld|oEfL*fAHGGT%sBY!$TIQj+w<+@q9WBn(`UNGvz1_S4maBS?pr3;gkG|x;( zsSj+J+uoLDcMh5jPWnqmtrBP8fPDG#c41gF`AN)SgQS3G4e9+KnV=rhfQTtgyoj0E z470v>ass8Uu#H_dBzkMlfy^D)Fcq`jf4$FRlRH1VsD*ZwAAD8z$}*WBs8LqMwaRa| zZYght8t?J~wXL)0fM%k5+Nvkrlb0R%kJDOyyRSY8#U_$&*DU#X9_@)aSoGHDnV!-k@cZ*IZ{6`?lS5ql zC56l5jn6}`P2~mkk5@ddEV9Z{#bk%tTTbYP5}9>3fe4$Y=EEG%)U3|57FVyGot+!h zfo|c`!`7#I%19xOQW05zl<;Kta2q-sm%9#DDKnor_OYk8Zt z6}L(E>fmf=$~!*H*Rp40!FYt?vATjXl45AtN88y-dOETs4Vw^O=PVA0Ld~6OfsN2| ztAqoZFkMKN3t| z{WA$7p9>Z5ee0o#vZ!<2pJluC>IlIhSFWzajl{eKx?;~G{1xJyC0wi`r8Ap{s;a8} zXkw|gJ^qS?m=5_-@5Ph-Xg+y3Z~xp`s4K8hQD2P0h>KinTy+OeEAbZ&W1HR*-hf=i+xz`pyv+BbZ>NnB7Oo!Nz!E*)8g?{jS*?=O@Yk$iv(xd9X( zY4KZCo~JZAcXE6irU`>(^41(!kvF`F@oXnrT%Mj=2j+*LrfV$glYYM}LPf==^YZ~> z=X@yphjK^-VmH5c__}dg*`%)E% z40Th0bMK>z1;o30tpc7B($Qt*!UC&?*_!dY<=xZ1Fm|Prx*i{gYy93l{SFMNPv%1} zVFS%qnb@8~6`2R@kse`E-1C^4etv!{g0I<0IMEP_o)d<#BcgY{lSn#R4zE`z0B@UK zoAeGi<6ebQ@_6M{sfn(Za?T*k*JyVAt&$;01zYpALDOpKHc)l^K7u=1-(y>{lHByE}L18c%;B4xpA8wo$l?* zc5%1#cn|TM=`+B+NRk(E(y?-AIYzF9x`m7L4?YNVz!+VTeY)LU zns0-m%Hzo3wHizR#O`UBd2o^sxUi~yTz$20?`WF5 z^YY-D>-r+#)tE(LY=^Gr5h2)1Pv?O~dpknp=FgG$FKt~NL0mNi#xB!8+N5y!ct;F_ zxO+_o`@+ArL-Bv&v+}PNy8|=tIvG!iqW~b>UUgTljf4?MN5w)Ne%LMO>C;T_*!n25 zuYY&=_;6TOv#@J$S#K0q?jD;7O00jwZtzuI5S&^I?ve6+pp#Bz18%R&No1mu^bsmX z_`)HWyahN>$mtkEA15p3!yygqImTmFC>MU|r1vzTPOJOrxmA>xNO>7@22Mk>pWlVf z{DJQ3oP;^AEzHzNrtbPQA4(k5F&jqB)F#!>sTK2#_HTg>0N=dZ5CD-5q*y;jHvk27 z1z}E6^Q3FZz7Td$?Y!w+t+X%pkXVgC$F;M;TUepkR~8W_>e62?fLT=cJ-8Fx&P3DQ z?!5LFjAdJ)&dCR5G9;Vu2=HTv*q0vP-CI_@*wN%o94=T$0ATJQI?^jg>U(6j=SV)Q zqv2H>-YbYC!DISmqeYBNMpIXul?xZlStQg~?pJIqALCMQmGkk)I`tUUT3ufM`w!t} zJ9=;@)UBQ!4Zu_3o&`TUf^QY^670flD zYf)s_;fWd7{*3ZIagDR$K*N$ zzq`!ao~Zo6oS!_}H>OQrl_y6=ceIz_+z%Sj-35+WpNIMFO}GQYwIFtyW{a(Dx4}#9 zYB4F?$CyJsfu_U6huzhj+n(kQ?j`T!>45L+K-*337Y8%`?@Xvtq(Co0>y>**KL%RD~BuUVoOYY?uS z4wO(QHN@X1-JQ)Z;pVz}M=@n|df6rLKP;zkCHJClH@%9y?YE>A-tSIG=O};1NJP*d z2h89e-MTo;|LQsb4Qz9IjqEK#pM-avg-ZbE-VcPw*NLbJQ#;llxJ}|Veog18c*E^o zud8t`q6j_Rc5Bpfr$33vSqxvmQlRNuGOqOQNG?UJ_|5#xaZkUZ(sd{zq4OpxckP~H zSY~bL>CR`0C^I;ANpIjR@LZlLStugs=VctF3-1tJ0;{C)(#QyAxeAL_`Li99lNc+e z^r5JH5w{o*7iQRNjIztfV^}+>HmSv1Sd+MOl+mL|n+SyicX0Lhp(2u6sE=f9$VxNN zDz%Gr>87Zez+SEy9oB9fX9w;c9-?pjzV93z!TZ5Dwa)ILS>jESB(#%O(*C>F)Z>Q? zhoKki{N);2xkAar0!{Jsh=}2yh-1-Un75|I>M95R(7Wrj(@3Fl{mf&;qdO0oqQ{x( zclT{KPc8{OnTTaPx4MU7V!A0JFk0MP!=saKFTA7OONyWC%{2_TY0y~yUebu=kS+b^ z>i+#YAty$nI&ovF&I(AVY=8Oln~G&#i&f8kuWoGyV~u_?y}fbJb-d z=fHafW2Y~MMbpscQC+6@H(AFbA00*dMdkOu5ew7Q888szXC7KF??T^id-^P)@(^IW zoK!eO?pDyzuLZa(PKoz*Xyx(FC)D3=9gOJ5K3d!AC$d;QxMjUgJZ6!6KMDPAqaJy zA+cy|f$F04J!KkhSI~X%Z-nITOv^6Qy^B>y-oY)OcEHL9k3Rl+qCqIHo{q-F@{u*zQUu8~~UlJ$0S#@ejCoI2|;fjGYZ;|ByqYqa6MXZ(%U1Qk~@ zqBEY5rUlGM;Wp#epB%-k%x}x78s|hGJBEOcXc4bdQRFgOe#xBa;hxloG|X_1e0pYv zAOUNg)7MP&Ly@Vhc*1$5`wfnPA(M;iusA}%!>6m2pzn#xImDG;1vskJa9w`h%s8|M zqGd)_Oi_7iQzRaLJ4P}QfM-1ks8{NiWHF0f5yCpY z6~O9cJk2^Xi^uUtSpp;YmShW#=zDFoL*L?v(e&9;c+ufXPo>ZO&G6+_vlL`=q5P~{ z;`tiN(g?o1+y6n`TSrB`w{N3@pp=plDkYK*QUcQ5-6+=aJSFf_b!Qmhot?>M2_n|tB`t*#B+7l)2`hd3GH0tZf zUThD<@nD0jQnRH82`U&#+Y$^l<7!D&GQ{5MSu`|R&RL}>L;xIDnRzFiEs03r=6rP# zm@j80jbD9+);|%gBxopOhl3JUMsh9X=#wPOoV3Cy<`5)PP1 ziV6;&Q- z7G=hi^{Q6z=_A|BJ8)KcYjhl4bU1pTN06w07gnD-7)(tFq=XKrp&beye)5vx#zfH< z2tqTB)W?pXHY@KeQdaO)7|$A3xbDPYqQkESM+N45fq>=#((}O2$hiyiVIFrNJ(lOK zx0jcpw}E%#@AP^4r2u4gFK7o)17;X~iSvt)A;%FpYhHPGfA#D*10fjdN*D~z zuMfci`fQSj0>c`{fgUmeQzu8Cnb+Z#ZSw$H5MCqE!TjXWt3p~QQ265(_O=lwvNbp4K;7jn?4 z?g=uM){pNezX9lpor{3?g{g|{CBrI7ytpu;X|xIGjJvfD$g?7l$faAVqk{{HEGG_S z4lAP4m=N6C`}j)260eEKYvvSOw#M_ibOD#Tjs<|f`DUwmtUT4Rnc2sw^KOEd&_T?7 z@kMqPbDwH{x)>fcC#ZnnX9`9N+&OC%F^v3Y1eY1S(p3eir$R|x>unn?B*c`uABcm9 z;puG%pN=);A6Te8lVjTGV(>+e$4kK=$e3i7aVyY=>!CS$Ch@>!#qDLq0Zdtock#b6 zciU$)_(ir}kBcKv@!Kmbv|~k1ORjG`c?4XN99|{_`pp(LG#{)|x3 z#gU@Gv0H<1Mpi?Dqx(rtdwPPJa{?qTg5y%@4FQsPF}p#cy!oU!nl%+|@7Kw0pt}=~ zbRI9TGfHmYJ%CwPkq1-8eVT5Wymh#4FD8X67-}cKLX{y$H zn_T4jTldL7t|G!bAOZb^aMG^JW%H}w`%JYWr$s85QfZ#NpF@Ph)HVTDJGQSt6ZL(Y ze4G=lR#L~-L+SnzXYUy`@|=;?cW6Om(%gcKSWL%T^V9btXPA-?-Mc%b1l?-rj7TuZ ze$o~PvF3|^A$+=}(qx_iRy<&;4#Njq zvVU)1e&B?aL7`X*9#k+Qy2LWSQ=LL0-XT_`Tsev<2qt4Q5|pFLar<7fA7GWuRC+{Cv}Ki!^q6D)7Ug>RiN9vY$r!4aJ1fVYp82gDtXF#D}qh zi!}42Po6kjW@m@|9Sz{hA%G++y4fm-qHYZ2*mOv1^Zi!+s)Ta6wQ=6L6j*$ zPkU3b!(La$S|-a}o+hF5Dn*9E68agS)ANG`4kf5Zsr^15OHc(9ag7|NbdpQWUG+4& zPU~3*uXoI*-m^>?Y`CP4*`4?(w%Lu#hBsUWQ0bTknS-j;LTW6?10f|~#$~>~@c@j3 zhfEJt1P^;nXnM{qkvJbQ^lo(Dq=ZF_VdV+#$xxwTVxr{^ItV(k$wjqH?J8*7i1pfhkFg6ZBLTFbDXkFA?YD>2V1I!4%VLO#h zX7j%owqeU|l)HuBUU&Q=e0$B@-hXk}Pf2~r1#idn_6PoNe9!#lb)O(Lu3E;AnS&2B zzxqr}-&?!_Gn?M|U4teO&s=9iOhrD;s0uo6`k;deHC>VGiKW5_?J6CJM$`aKSA(6`U>dnfSmX_Q$lN z+p5g~GYm;(B`S0J=6|g0kr$*7Y(sn0bCkNAuiFuAY?H}{_!Y`K9X=tZ zCOu=l7>TdP;1_sZzZB=$-RG=j)08)!5fJ~PTyCp93>cJ%q;Gw9Wsa@Ops{?|Yw^5Y zgXo-UV2%FFrM4=RBLuFO+s}3Dy>x3tp0g{I`xHqwBewB(76ZfpsxMHa%S6UJuRkSP zN&?ZYV05f?Qm!Hn=YtsTqr>J-tRq@DC9vZ-;=&&16L75)Lm59X$6my$h?<7z5Ob+w z?`j0j;LBSisOHKnLq(1baxx%4F!0Rh(6@B;@uj%sZLA=~g)z+MjnaeB<1zG6s@qjb zx3+N8zET}LxsPBgUYIdci)!@-PJ#sGTQY^js^^atLJ1YAb~BFCHZWp9R;~Sk{6xyH zmp^9VRn;4`G7GBt>2`|B{_-Rkknpl&Lpo;FGM>*mPiFpPH1Wl*z(K#K@!^ybPvG{D z`j!w+dsislXGRt|OGmXs`cj{~HM}(D;O5BhtFw8LViMU4o~#9iUigdC9;{%_n9e$1 zqmNj({V)%!xCuBU*ipexPd{=FBmgDy|LtI=K$b1|Du(&8bSmiDT6Js!uGc+r`6&?< ze#!?Re!!f#7Jk$9z=WbB{lVJ5u7`xJF?M3k+K(^3=VBxs<&4h04nj-1krX9GVEr~7 z0ZUX?eSF8j>b#WHN&g+)oY*`k@yW2@R&RWFT#e!vfV!?=eWAd|Sx=W5M*DmH3Bp+L zD|x8X)m79M{g2XClvS6H%va&{()hudDq-wO66&Q#kj9=~7Ib);@676_e&XS0H4RLG zaM#EdpV8XaPt0GN&6>I0fzq@^ph0f_17}R4p|Q^C+{af_LRCis^=SjfBdAxvT$Pd! z!+A+GuQsiuIiV~D`Jbp^3v?;!BX~@tPBLpmyZz0cS1BHGc>vq<4d51}Dp-@CTi$8! zCYYuBvLYvkj%h`)$>gF?AhjV!QB*DT16nX?I0l|9DB`0v@u|#Q|Bs($oUW8Mqk#IE z@NA_Mi5r6PQ_2&ZnC^dbVS}0LQb~6YLxEbE;U3uZzIMzQ+;qTP%&E(Qo+Ed_2>eKH*L7YDfjwK1&$=G9)kt@0tfdV_1UcQV5U*Zq3uq%W zlpW5WxvuDAl8u$|bWU6_Nmtln0`bj`_q(0KGNJWq@KpTZGmvLkRjTC`x$!W?X9bgL z9IDTgquVCeWNeAZTUY;s{BF8FVSyB|SmnvGxWA+c4tgXe28^4*bPTaexw6<@c+zABuRL zY^R^>Ds!NRSiT7k?fB28Jgy3w7G+oi82L3O4rCyT-C3$hg2hy)7GfD^ZKRW*Tf;*$ z^PMldkr)1K|Ld$3mtCY2$~(EIRBvT&6vycy$?9)6F`s;sqdAZ80JU&PgSJir@#OHf z5`QWo^)MHv$(gC5}?v9Ea?7=aUs$UVs|HJ%+e($=Q!Ro%S?{4yTG^C{lNa&hvjkHzV? z&V!>-#`sXHz(GwZ-(B5{TP4!a?_Rj%HsgJoaANdy9xu3AlkUr!<)6 zdk^G3BrmO5SNT0WnPl;}#j1j`wNqE0nC{K4srW7BCbcuZz=5f0>2I!=56>0@F)`Nf zKaKz4$$&l`dcHp>iFY>Fi+tFl$#p$oy^@}j>6$r6Fs-6zMx-L%-ce<^?+p~b*tb5l z53~&5wMgD}3NKkF|D^2g+2#THB z#cjfBW(RkvP1HCUgj8H9N!jaoQy3cgYXToQgk zTvnra?^OsGbPtUGzWW^}0^>^}l;r3i_a=3Zg5zBCQbT-TzrJ-<`+!8=BHb%X$u@S= zt>o?2OiR0W2vuwH{PO7Q>j7 zUOR{p>4Gs%f7c~a4^-FR63y`+ZoU3pZ21!dp~vc`Xj>_75ix(Smpb@C>lp<6OpP_rmEYU8&DkHYjYO8R@H zUjHf*PkGPQo4dl>AJJ5MM6EMY>_m&)oYRDJ>;Ry%8JI21B(knn8!+=d;;_ zU7zP8ruG905ExE2Nc+m>Uf;|s_b8V%ldW#4B$3}X(3Fvl@odT4JdxE$ij)(?$_!Ay z5_8fYdN~C{{k}KDB>6+B%rPs)K>=+sk?9z)iG%MK*usb4E`feav&4;%Sk1nH!lpa#cBulFx5g#r+C1Q~khd)H+Lf{V}JfbP5IdFkyV+#iY2< z{Q^f(1ys?quOzTz&~Pf~(QOXPMQx(04{cPu_1QmF=3NwfFd zYmerV3Ghe=82@rTF{^_EZ!+x4V7(3&?Py$2GU#sF+kmzt;I-~xT;{jkeHym$Y5bCo z`r?x}fHPAGih(*3t!FeS)UNc>ll2NfMII=)nx#l7=W`50~YEIx-W5XV+-=ujvb1w9@>Vv!UJZhc8NJbH5Fa}jA+TGFB&MeK|#H)K9hm#owCE@q9f=s z*deiDCJxoE61lhL>s%3}mIwe6x~Z%slD}_Yh6TCex;sCV_#y}~fb!}xdBv&sH2!EW zgBiMl+(rAyv9bpTdmkLFWF!Wm-=Ku8EkFUN2gc9PAI+quTl^p>k#$EV{X#}>-(zvy{MGODrMU(!ro{vP?x0viApOf2uPe2EK=XXe4_inOE=_`)YluJSjq1ajTmU!$k;&@qx0K}m?DG+kl%LQ zU~Wn3)olwaR|Bd9f#O)R$R6aUs(7LMB0yt?#%~5Zp@=zQgq%#K$(CFs^hD#5{Q8r} z34r#yFr9H_UMQx}h&}ZjL;yX;8FrP9TQ`K*Krf`lFEM??UO_%g4M)2?UO6a_I@TBI zq3PrNaM&nk)apmUdw5{UCWEW^NmS2&hqd8eu&{4bGhNKJ+X1`sy`larOC#kq+Fyr& z6_Fo1`R|m%F6-n|<0PO-WGLC=>r^@FkMEI3sYs%uS?V=&i=F`os`v#ie6ztvL}08dTdCIRZb>}^ z3bRff*WH}eAd2A>8Icvre33Y6CvU+Ddp+GF=Z=aFwl~6_oNXGpTBy|GuUDY$^DLp< z;=`gs#pz&h&d?kSP?GvK|SFbuaI%*RYD+murm~yw6q;uwU<}WF)38L zOdE85i>Lr0V(*ap8C*D-5xSs2 zLLa%orb2yMdZMi_;i}qG#g|YJUOUsurUcXW0P&0OrHbRGuUCX}ea^zVXe>hvk_vj~ zQA~~S2%PI>KogDa8{rxsNU=U5+|V2cP52E~9e46fHa@FPZj!(kdS%gYBc*>9yZmki zt;28wfOp9v@8(KS!8cKKv+~B3@XpYYBwjuIHxZ)k7~;3ba4I8p6lthC<-_v5yjKeS zL@FJCKY!BUvtMW*LovHxVy#H_#xeYk(>Q z5zptC9{)joU}gaswdkaQf=^OJ&H)IUi)rr= zYN?o`q`2F;Ded1Y$}5=mcw#`Nh26Hw2_MHNY1tRbl|e{yPJaLG3=q%kvdevRx$g;< z<;v&^Xro}AweB1E=o2yOmiusE?HE@tGSTPd5rpigl$C#GbGqvg^YZb%(c0M*F(RnQ z*;3EIx9V($WN(})sQ|Z90(dpT--s9iqG4=W`OkA65*_~a`v@|H;VH>^J!d2QuwS^9!92m9!@a>)E&G37V* z$GBU?uPg>|-0wp(5+eVoDtWw0MK2)lkszF(D}3@@Al0*hh?cZHeYcno#j3F3^V*kXdHHpg!Om3T*0dDYv>gmeT|wTV1a!q&)V zsdfsd(u^b?Psy|OWaEsCJta@_WX}EgbuM!sagMi0s*jgoD)t>3U`eIr>hChViLD0h;5_(H?DjtSVkLyB`GDh!4)(v#$ zbnYK#9PgW_J%0ells3Y3;ZN{jTH`!@u!Dd0QeSwDz2|Ari5R}ffY61U%EK9kOgbAI zwo_|!&odiy_^U`&pZctW{>Dh!fM)%UD9g>(YK)P)wbgY@t?#`NBd>d0OLsk>*2wz3 z`Gw*(?Isk@j{GgV`VSebLxBN4Dph}g>=Pu06Z9~if0LLzjJ)Q2p+S&bW)uGml2OWi zO##;>S^n6__M?NHRA_}TM%KCpN$!iXF$~EQIJ_}2q>XlYKu4H)s(pVr@<+%ZCD@A7 zCCDXskhbGys$%g9^SI}Av&G=b=d{)nnaFnoRzz6$tZ*ZT!EZTW=B?0@*!ppQh~Wpc zJ8+hgyAEBlP+h4?_moye8HFIjpM6H6J`4nnq4wxYyeONR%B%8qY+j&BwR^KEBl6`2 z^gV$=x#D<;&_r5mLS{f&Ya z%5Lc(US;Y`t{v~;Y1ZE7I42XZ@Vdn6mwzdxiJ6{LQMSiHq=ct7~8!Q^Hk`$!|?R8CM4=n19kv0YTK zUv(=l?8dC~SQv3=)d&!Kg3x-mc@wYB+ss<~d+t@};Ju1es)wud@VWRwsVxp*+3bwH zh?>EHgqL&4E3MN!XRTsrqrDFW#jz&Ss}lLg?unQ4M@C|#(-*2i8-u;{-;?*+r_zz+3rTDW z-$;3d2Y#i!*DfE78jgYYadNGvZnqE4xY(lSJ7@4)Zu41rB^@4%wm|P~yU@h6;h*`% z^+&ETEdeg3&f;mTzQS^T{O+T~<8vKC@cc{8L+#MlQB$$ra!!!OE5oDJ_XA-773?#i=N0WjRpR6$B0TE0wBP4Y zcSb`e9AgPx?>|gpG-&tPXI$5s;NG*+_A5VA^6+I&_3DKQXe7#I*t@+vp@L!WBD+E0 zB#;?%CyFO#_sDf{^b50#IRmVrF=Lwg)3BC%_Lt_;J7^h%UD1yU#hKy|AN~8LgIZfX zuKI5o7&8$uwO2KWBpgdXGMXXC5PGcGbp&1S-D;#>syT7_axMs=%4w{dk8T=goY3{W znCu#d9vusfCeDb2Rg&29=xK0#PpX(+;TY=-JA;mzGt7%!oC!70y1o;#v-o-47zGMW zWt|leV7`{TRr)QLU$K;Cjr7i;WiG6@l zy@#@Mu2fuCocj8#Q|ql3(J$Y%HiIVDJZ~Ti+y^#BP6SXTFEVrMV{!+KW19gM%QxN3 zQcd%{nt;4Rly6d8q;sNe&=9K#+D<&E1PrCHZp_G_LI41uFuC2Z@y|)37{1@+D6pY9 zCz_w-c|F2?J5ByCvdmvR8r6q@uhD%2TaF!9+4#RaU;^bZ6e(KV>?-DWZz;i@+j5AA zCU!_qPtQKkSTf$c=13kR;X8Sr?pg1)W|&vu2=sYp#&g8=DOy9t(p%r@()|xhU4T&o zqQSq^<^FC*jInJ+nLWWRz^!OhO65sZGNS#k8G+)~&-!OSzO>+;{7T>_Z@?eeAyNtb zw!M!MlfP_KQNQ#>-1e}(sUBcW5osvAg6Ic?PKp3hBpSAf>#azMA8mm3S2IAywBwH` zdO3Gh4H}OxX@0CeUspA{6qQ=v2%*-bl|Kw|*}rH)kRa~4z8`ck{E zcZwo6CnwQjdXolTeq$;3!vdEDc~fHu49>%04b{$;ow*aij$j~|8p{L7SP>=&@u zPyJ#G_`(L%AH6Z`^O+S8LO^e+a`4^V``UdkvT*=m6@iJ~OM@>Z>QhC!nRo^Zxxe`i z`SSEO620zfmJ?>NRT@&?vQV&0Grst-iEU2epj^huw4+H+CBdC!vt$ftuy&$>M!3a= z+0de5FkbP;f1q>GAk-??Mb-G_1#og|j9nRD)pN~Cxm~>+>f=W~cUYRYv3kApHM3n$ z`omA2?|51s61 zB}%YOvCpD~+Ro$|#tP-jx`(>3yZCZi z|4~Byza17R12O=T7giCWsW&Le3)ZVCWi2fY!oo-B+uC(UxtgO;T2e%KKmR7tO1ZhCS}ya7*fs}tO~0^sS7=^c7Fyx zT`G{@(h-K2CuALI%BxFeEo1Mp*p%X~=3ZL#bV#AA3ZvsC()-@xncI^)59=_?5e433 z=tL-AS}+?MKOxWj@|V|@DkG|l9e=;b3J6U#c>|M@Cj0jQt*o1lW*u?hV_K9S$d}Yq z!*`ctzNYt#6VOhnE9d*_tPm3Q_U&%s(Q^13AM* zeF-XWxP*E3^%b__h1q;lO*nUgJ_EXRE(Ji>x+GvAo(bCZ-Wi$J&I4?VP=Rsh39#-rS*fb}&+#p4Lt~YN@O1bG!7Ln^`g*CfD>JEPRdjWEAiQSZJ(JvevOK zjF0jU)~sx489v3wyN3y;y-3goRJtnYbg+1^^V@+R72yvS+eKDm1z)9oX*IoW)Abx; zM2}K7u{Q45Il9JS^9O`+e@5_IO<>@1Z^!Gj00Y-5@{R&|m7%hO61!=2WTZi@xXWl4P-WdHY3ukA4P2Nh{(xO4kyNi5F$E7y^ z*X((WvNDOfSeUW}4ngtU#9(10lehl?9v)^6N#Bml0G=?$BP}wF(oy@Rs)-k6{fi5H zH4-g2TA%eU=W3d-@usY1S{!6P2Oa97M4ry*cVU$+=GGmlBL2$DkesKKupO7P(w7Z& z)&?Xc8o(*UvDu~1>=*Zce}iyW87qAy0)ju}PW_%h&@*3;((k~G!J!|Us9CJSV<0ZZ zI`gen<&y`N%|E+N9ZKb=@Bg8=1Nd#f5u~hJ`*9(GgviKKZfZnBL#ia~j>v*cKh#hK zer6K6BIC;(Xo*x0ucz!%z*((|RL>*Of&soNjnMJh8tZQ?j{{HJE{=cmpMB~%0E`K; zF<$^ubs97V{m7`8CeL>pA=Am6OCJWQS--J5DyTT!jnj;m%6f&)1F`M&K7$`*gy3G0 z_gfSK!fP9Db;rMdsbPg!d2xrwvBG zqFtJqYhbWsO4=?rHDcnfeT!bT;yv-Z%(3grv%IEe@kP5wlbJ^eU;yE1{v-RMd`9J7 z?AON4{+!4MK+UShqL@Pj5)Ov|!dUm?=P&D3cxa@#^-znHWY$9zwjPSFr36@T6dIww z@ngNAk05LQ=ErkUzgJ}0UEEM#48hXO2w4&*%qnu;xigz^X^ zZQ_Njggh&ShKrhFsQYr(NeVyEMpcYYx{CFH!84_BCni$r zX36U|r`>w~?7dW;y+Y1d7_eC7o2(AlJK?DhC%<%mXGPWl(q*VEUGFfvAnG9b^-v_p zO=C7we&^EqSzedFdmGMQuQla;(~i-V=472&7=1p!vYW!ncIYy9Shp@m zRi?PICs=L`VtXkf%vkZpS|ARJZiD6G>GBl8IXt+g7x?V)XkPkF|COsq&HJ0HNk4K~ zW{=sboY7Ix(%K`(JwMW&mB{d*vA8jgsGPc}pU+q0@OJr?hdn_-cDM{NcIH+aPxsmv zYv>RwCWnLOY0&SiQE%pB!MM}WYq3aeMulMx$jl1JKW+NRAVYCx(3^pcnNit#12W!g zxyH{6jINi-jrIsuU!Tl(5xjg1bOwT3pr~{Mqv(&X*=Dq(6P2FQ8Z=KXzBlkGP|SZy zO^xqO>j+!vXIr8^WCwZt+Q1$XJd4wB*{9{*uh_b+;UdqG7-rxeeHocp7jSNoHYNBy zp7kX}q#e-Y5O1hJUD&=`Bg%aC`&|zC5Lmr>K!sSMJM4WDgF)Iq=0|7N@N};fvDJb3tXYOvZ_nwAWGT@zdyAoPF;^l1w*}Mx)o1hAMZ~ejMqxzIhk9 zx|?Rssq5K`JjU~l696yPj97YmxA6Xcd1};KW_mHAxXQ8>@!-T?kj&%Ul0Vr?;?*!Z z1EaIW&Hfh)M~8d{mzLEteb#q<5X1Q7owrA?p%)<7$}Yd~7sHj6OIOMnw)jX3BL(7q zx=<4r?U2FmNsN$(6oa)83oDiv--r2VlbmK;(pQj&o&#y;<_K2)az+>TZ+tfK>$BVl zRtM0;N~6la^PuzB>Fd06gWiMZxr*U)@6vJ;{NSFqV;`+apiF0kJT?m`iv`pRuq6RP zD>@P1I#g)2f>D2=RKV-FzuXXMPKWS3wrb(2kOXQ<(v0l8i0CeJY_`bC(hMEx(J#70 z_WW~|@0adXOg=dbVLz)fExT3j_zf^aUhxO2b=-%Z?FsYs6xElES-gUGat*;c>670yOl70qNj1*tz zk%lNU#~VhWX{g7r`^vvBH%HK`J0;u-c1*N zIW8r!OAk>u1+1YosC!hD_`@|+MMGzr*A2(BoKMO0{JEDbVTxUKcE&TaFrJo?no?pL zJkl630o`B_(MVfN-A)-vZOvfuFGp5^1RBiieKZzFlh|~8KwQG3NsK^CBoyFgEpKiK z&_EC@o}gT#T*_l#Q!u#q^Z_2m`eUwE4xB3ddpPwF9Hs~LXZHA9-#HY&%BHM8THd=E zP&ebrOuE#40w~TEjZ_{vA^5C@?Q9xVKJ9d!YF@~4X$|N|w{OWaSIly{uGe_GNA4s8 z9(N*Bo<$c0ahW^9mc(&zNf!6*j=AmcDX%yMA6t1LkbYsD4|)z(f{%O1x$D-()l<-) zGK1N(@ATV+U*}m}%>7RHGnT%zc$e!Lqi12KBV5Nq?<9P*`bs;Aa@G4HgDkaS)(5hk z7*pyqZV{*S)DwFU;ll#aSX7ZKi|PR5R;x^AwNf5`_{R%islTYgp9aLCAfmg5eC}(; z(DUn8B_e4TI}<-4;y#vlo>{JZ^xRyASpB(cea<8&NJK{b=vtwV6ft8FFCfgOsbAkZ zw=zuMp~|O`H>$a$=mJ^O&PIw%BBDwzwDiZ(6q>= z^{z-f4X%>kWcoV-;YLLukNpFR+kpt=n!v<{vz1GgJ?pLLGP`j5i;=>TOzmR&XP+T= z!uLs?0vwLRL1%@cRa1+>)lIHcLFO>JTz`{+Q>3umQf^GN=O{q}KF%{$IL2oDw{J>c z@!c;iL2B+E7lTBUMnANRM3l(MUM4v6ISUDR7lCX~qUC$iCBf z$KLIJE~ilBQq6TTy!Dbl`AV$f6TWYCjPM|0hC@V|Q~UQ&p7%4=`xri%ioX61E|d-q zU)kI}3K&QkqN?4-^tpkk?N81$Bn{kI_16TNKN}1++Vm!Go`+G#1}otN4`0Jp>S2=> zTXe)I*J4AXPmG+WA#wE-BSbjS>&RHaTxS0#pNx3*V$tm4)-M0V4~x0BwYt7}j&|zI z`RnrmU);Ivw}|-axS8Bx66?dKQCu6OD}un9*~DNml-wMDQ88F$p2m^{+44){;aAb> zs_22MtWY1G-1XZXeJ`u++u%Y@S5*tgTqyhSKZ~|4YC+=`p`20z7VTxM=YFfN43SeNK#Lx7UlxXiu@W|DEH_v61XKG06vF_{M&(0|q(ww9p(SXJVz5c zeD3$&`j>)$=|NWSE)M^nI|DxScSi!!ad`VHF^%!R;=;vWHOL{CR2OqO~)~9qO>ENSqeF3bftC zzj7^7N9yKL#|$}%qHp6rI3Js`_;)lEx}b2O^Shd-KxVrg(>X9u_=Jke#eCJ=(I<`X z?iXHFe-%B}pYfvcc8-p&Wvr~_ZEcHn_4T`uTyc&Zb8|=V+uo??sA3iEO^U)c07fS=uDIDySwk^Jx(yqHRZeN6^0455at?tL-I6v zZ|%--4y>FKwhxBjP4BE*fE4>hzVpt`6X*GQxO0%vp%4JfKt1FR-%QKAG}ThMW668_ zr47CH+l$VPk&N}<-ywVYt+B;KrUQsRqb0`s_wFrjGR5;uGQK!`s%b@!4S-A$nVmnz ze{Ng3c{Bq#ZteqUie-uO)Vw^p#@t_7_FwN>(tsLR>r7OW5|zi&{o=kq-$rYTN;XHl zP2an@d98~l?`-d$3WFSr{~1 zm~N7BY2^h5ejQ`H?<2%7AON`ZCg09%@$>%_&zy`rfp`(I6pRBqAsroEJKMvi_M1Qx ztZZckQnnNMgSjqUZeko~!BAeOJ-7Kb4jiX4$BK`c>qtw$k&iv0NJaZnN$rA5>JA+U zIxBX$))}w^?|&_@O*)dfLHaU9M+?@+)hD_BpP>bOm?Q<#L)#tCqI%$d-9$Ujeu@4- z04}CoFKl70bB-sr*n6A8%}WF^%+hw zYOqmIQ3dBL^oW8iJ@lvwJ_6!`W7TY9GXni~pDMd!qsKhuN;1SAySpBMH6=-FEnvqA zZ>w$Q)-&f9Rj^VbGMO8qgtho7s8rZF+Pc3;V#6k8vaRMQuKjle0S1nM&3Q2`Rn22& z05)^LNLjr6)g0Q&J5Xt`m3Y7Anp2k4%B;RAF)s&8lP)mV^~pLy;zuy=J7@nvKXoI9%@$*1GIHbx^NIILL0dP?LHTas+T&Dsa zb21FLn>MX0kQF>o+m284xnyb4$LckwH~P5Kww$yMqF~fB()cHQ_-j!tjs+IfsdG(D zMqto1GXz*qeyQ8(fsuKa8Itnk<#(x9PMwvw0kexha8awtC;h5kHl^AL2UvAosn*iZnr{w!b5u$E z;ns=$>&bPZ*Z|H-Z{qvGB_i*Vyx;xecG_u{gh4N%L~l2uhtn4@%T#)j^VwlNx#Z~} zVW1a{Xa^Qm_)VkFoEhA0X-|lpmp^G%^M7m*fwm|!!a5n0t0O*FFX^2Z^ z!LTtf8)pI!$6VLVDI3P z%7d8nZJGLGqxJWt1^z@`)SeL66v`n{8XEw|yw^Lmd6!1dGlWV6YQ>GzxG&kY_QDBu z+5Iz&>npgJN{7|3FD<+cN(|Nzk?O#41~LPpjNiOT|9XouMV;->pEZGXgVMvS`^V`c zf@CH?61!BHC8}UN4!?6Xq6hG3^kvb4C{YC zLb7st-o48vk$R~{*M@0Z^6%W#(@`u zqFJP(kARzQ9E%~}kd~JD_&*&Ji$j2krghAuNeE0dFNRKGZn~Tt7|qn9FE%)bUXC?C z8PF%B?(`7)V&fN7RULk?_KWvlP@(7-D4u8IogQD{e4~|UNLc8N&XeJW6b=iW2!JQ| zg`^vK!eFr9{0yx*;fXmu!2Ntz3D|Zn^SfwoZy#?B>-)o2_)q*ZBnPAnuHy+H)E+EL zz%I2oc2GILp1iZOyNk!X78ZLaPl1r>v#5uT&TNI%alZO_Z%jA93X& z-a7AwgamU?0)Vm0QXNRIlz)$|yfXd|#$Hy&+VvvSFYm9S<3I0H;=qY*J&B4#f#Bf{ zvFJtH@a+r?ra!Z%xe7F_!TKe|@w<)VT!!gAk`b>rC&#?JXIKrmMy7O81G^HtBQt5A z4i+A~n8-%=jw@<0f#ydFY8QZS=bgJQCGg~v7ykhEf6ahGQdHzO9Iq+_-1+vG&PE-- z978+D>3+vIB5%1Jp;)!GukKg$EE8u<4Ta9SC>i=~R7UKxKyO|JKxi2s2O-C=v}x zO1b>^BKZII*%CF)=TzlC|2wq*d%yf2pG6sfM`D?s{rcbN>#t|^|L`7IjVeIeGttZb zp96A98sfld#n^BZ!5avb{Lu64Z(x&?n%56BA4p|Ev36bkcFv!9#OP#}R)v;rPvZre z^~;|Qe(~%rF8rUDE&2d;))1+0&N#_tlfSH<-xLu3s@#K}n`%J2x)s)w!6Dc$dK%Msp&(9TTz zQIOxg4GB0MTwXTyn0e#T1n9q#9qsMyhr-As69H>3lx1O(z;&pWS&!fQr__W?bet7>IB z(ABhy$r2GR^hLaV_6n%4or?ZKF+16%DZ#%2F;C?p)o+1bO$*+zV=51T@{if)StK~g zs6bzMRj1h5>JM+)pz`Q>z}rX%G%|h_>KChGl4e=m4;XT3du-(;d#V)C9Scf~Q>PoXh%koiIdLJzbhTL=V-}(J5bt5Ds1jm-d6S3s)j{r0-eP6Le zjz_p~ho~7H?d;y+l7g^|)Ya?zEZ)OpF?JWNv6YU8vNG47$O`!1_%v93dyIe~+GkMW z&*d-Y;%zJk`&laE4P{0b(-K?2_Kjr^xCLGV(t1?S;7q_Uh^^4`Brh13thu3WuMB1O z>2jai$C=y-cQ2lV-}?L0nf2sBtxV7+A=96xU;j>7(R36uN13|x3s5Fi?Z8m|RCPrK zWg;03zL&(R-{w_^k|itx4YV}IjCd1*v!mx$V|>==76DV0J(LWYK&P-e>g1z6PJ7W> z;ujH;a=^@h0lj`whht?ko;-!ue)g9#|5k40l0m&+temh7he?@X(|Gza;*-GXq{bpp zxv?`sQ>Jbh4HO4knB_J?=}h2?etv547b(e8*-{Y;K$y}cY!Cz=0*0rm)g&|1>k52h3b7_S4ix!>riDXw~C?O`z|!9E|R z(yxL)x}K1|5YQ{H>))2V{oWuXr#I#N=Arh~ShRkrgsIc%KIzeS!h=edvqick)&|&$ zSHo#DKG21$>mUu@!mhQHXT_*)}V3vubl^K8Ao*`C^mdf|Hp9IHu6q* zsSl6m=rkx&7%a2+enM&gFvj199ozes?9>^$!{9y=bAcSsL@R-MOt3G1X|1 zU0&CIN{_|~Wr1&iGw?IG51-_A5*CSMfJZ8#c{bn(3Aom{WL{1dEC4c(kzX8^*YwO2 zD>LP9cJ>coaX{et^>)@zVDQAyAOi+7LPR=2CvvCDl=Rm-%y)0BRa*`(0M5c!rBeErC`(aOk?Q2uHTq?)%V`6r2bl`am9O-I zH>JPafh+K#n`<#IkKK;KJn!hLC)yx)p5`+$a!Qa)VkXv->uD?E4zazk!p_eA_(*Lf z087>x%`Lg|SyomAO(WK`=I|1xMhvt^+H!GLDQRB(1@pI_qkC{=rEhz$g%)`Q?>p&C z6%l6^YjFEH`EInH)wvI|Hp~*rJT-Ol95%Su7UJgs5QX-vMUap(y&8sgokwsnL`DAk zf@Sg>d*G2rBI+{D1za$$^ig6rz!>*W`RGi2g73-aD$vtbG?&1`rSg5v55{ zdJzNxr8lLAA|OpbDN+L>HK7RzDAIckAP{=*T~t6oT0&8JHS|D8=;eDd^Ul1^IluYl z&$HH9=Ra1~1LWEJ-uHdoWnWhfyUJBoZAZeXoJGK>B6JTZM*Uc>@jWRaLB8`9<~+6f zenm7QA2m!jI`Wzf2qHTLM1=s6ty~=n<~;zo6ZW_cGlF_=Nr3WE{W*Vq7X}CDV@K6$ z1@HI(s+d0)l&aV|j%$#b)j^apUXKZRoO7hc*kS(bCbLzvW?mgP2(zb+pbWBO#>&8j zt^LJakgg!_X<oE(Gcgn=44*x8vC> z5*4~wofo<5hK&Yq$meWe5co83bw}qx>~oX#>4KZ|Q&xJi0NwOP%kIE?bEa9Z#faep zrgo1gkBzXEj9Wr$K-{Zh@;}+pX?g5di(1KvitM`ePEYs*22gjhVZw&o?8t<}DX;5= zhWgCh@ROMpAIt~yTPIh=uKLdQjqkj4_hJSs$2pgP)yDw2xvSAOb1(NpGRGTYNQzy! zZmAPHgBS~rJCR;mO96Rqcmh(3c=$=Wuyt4_Gp??zOyFlDaL3n@Q9?rEm3z_IqxUy{ z02+T(L~H0bsNlWPF(2@5Z`^)k_#v=YW$!{2nq*-%A|`_V?AAOHUWI;;GSz74!aJ@7 zSDxuhvH%ZvQVtysPgYb1#F?~~V!S~7!}8>vwa>Ok>J$B3cT>HUYV9=aHw*m_ll&_$ z3pB7Yd(%slQ%d*&j3*P7@&%*ujnr>1?XKZ`4!6d$2MS?69lI+}+k|(Qb<$CNN!^2; zEk`R>gl5rfckY?{R>DSDoE6)!ews!nEzSU&oQ+MoO9)=zw2)f-%`a!>0wFQm-KtI^ z;y#en?6#mGgLK7Qf%zRCF1_oR{@c`u4 zQ{c$Biz@D`T$btZ{W!YX(I+O4uBxJ}?~Y^5Q$MVq><-og;aZ9Ew*={@lFCps+`(WU z=qD&sH`Qvp=EJ;QEfcR7bDk;sFAWQ@;3%mqpk>rWp zgU22nfka~WYZig4+z~Kg=o5}z=p+n4tjV3NW?24~6HMPCP6w)mTCTbyP0%y|aMZhK z*p@0sP_ocYIMq*kczhG;{!+LgvJ9UIU7gz>)81d#M#U~ejKX%M{8%^#Id%`)GWUIY z4zP{MFXX~8uCSTb#phvQ=74{nOF? zv47;C*Z!iE{h`%VuYnKlULl;K%Pl{Ty27k+!~|K2(Rm$<(i8q#kW<)%RP4jyZTRbZ-IRsx!ICxR$gQGoF`}Z&}WFBlajqN}}AYHz%uf_LyPTA8=-i zyWQinNO7$+UIAvPWbMyEQatIw$w?TV4iL8MV-^ax$K%0GkTW!H69C~t5e-eKf_gS{ z=`RU4F1DBZl&moCWNwiXl};B#-wgGO;%lGbfzkq^p8W9LV~tBq{-V}!*sdB1RRbc9 z+Lub5cw**ftgI=I^U4sim>Yby_&C2+V_9DkD}ZcP9n7|B?5R6w&|@Y74IVGWX?004 z?1$~UsvR%97wi(o3FvOSP8c)}=yx-iTf}T7<>Nft;HG-oMl*G18XnW_2bxUTHU|7} zWPi7V|JVq(B>~A}YoDD}3E)%*yt_Tul?5<9k5{UJkOn3uj1dxB;>+M+H)%{_bcYR) ziA5qYb`#R{!89+vC0}hN!ZR5>XlTygN5@6^8&Oo$CANbcvHF^tFRP!H zhB*{Z@K=FXz}Z!vfLQ9Yr!s^nqYFkxo+;ij(rqC0+PPpN!r;OX!~y@t)Y$qkmXd6tE0MLW^j z#1>xnOw?sHw)u4|QfpA!WQ3ViMW#(OBfF(XWMFxj$FdFKWsXT$N3oaitTg6k`Sh>` z)sIC03Fal$e zKjCRkVUF?U``_^dI zFo532=j+2c#-C!=;x6U2ii?+^)1VH;GU&{Uz{TzwYuU43}AR!g|O%LX`gllrC26U=7K1@EX&!L zw=V(M?Y|-EtNI0bUcno;@fc3-nL5?WoHYlt-PEhs1+S`xuo8hN;jEQvU3{QLj-c(> zJoOLX*?)^UkJr>?>LK}QrWeKtj&@OXXizzU4tmdAqj(}L)$`Q@xO&iKchNc?`3WOj zHw_T$?M$7Y44x;qFx3#h4TsDKklF&G$*NBYO_48qzL(76DKEKedc3wiMXh<{Bt5)M z-{n@ani8)}@cK*M>E7(%79a`yUG#j-WEGom09;K_#A_YoTs-w`KQ{g537n@?LXmgI z?dPXxOPRc+9i0$$dTQ%<1196Nho{i_PTCLMA#HF2<8Y^();KcR))w+B2gkozDAo!@ zY_ZU~OwZlXBBu|Dda&@ep(}#gJJsOQRo#$h^j_|0zL{N~jIESOKQ9vz*1if!MAk7# z-lDvv;q18mT$1ZXp$2IS^u||9^%-^HC+)i#=y1pgSE=MEeI2#?62uMQXzcVhAw7}V zE0tnzV-BBR3x%&h{M$pL*|MSxv`SWhs zwtHdrt5OU(WYn|i#Zh*qlnRimL#Olm0keEP4cKG7{mL03=(*2YgH|Uc4R+@<0Hmoq zTCoWAoeVeN(p#6y2UPRSeY|M<=DPe#M8j|>ZIPn29Uq#Pw8pr4$CBmPFdd-_VJCOU zs0Ns8cXu*qrPGM94$Gs*#z=p)m$Bm?5N)TM&V#0Mt-9_dwMke3-IOD{6BzZF22z=| zX}|Rx3SVh0w)06avq&W5c&8lJzJyR;7)ivm$*ktaEkL~(^3O4c{*`!nh#k|P)`d@{ z@3UJuII1`JZR~U}9BW(Zp^eSQHFa%{B+Un9-c4XEur_JEh+{nqv5S8*Q#$&9Yy&42 zBl_I`q#)sMUrSL~T|mS`*(fF*t3evPmZ=YEi0B)!c{St?!koTyzp=c%ogn3nU9P+F zCP}D2LTQ4Gko7ow`0Eb#VIGWNsQC3kO>c& zdi<~+PUd1W68;*bN-&A1Xy1U+{5HdLlxo7P#+B()l>z8kH{xE#8(3tt5y}DwR3k(L zT|Urrc^TlZuP}8Rel$!1a9mu1c)pz`qJ2sg;b5HfFytGa>_1E=^9-Axb0G^WJh0y9 z^6o7L7IW}3L|QNkymKx3x%=2RqaEg<)>~*YQdp07Z)@gK3TuFJ2Rc}Mo*7R(!;BW4 zE|$3wZ@#Ey@w2|{^vO+iUW4Z%i;ovIXPAZ0)Ru6<><{|b9>Q*64CCvwlh!RqmD}Gq z5=B(v`7kRtXJk72DoW>&%RO;xy?o{2U0@Io+|OH^0rK8>*uAN@z!Wj&82zn4mB28ujrKz`zc+aEveW6TU*<=`5brE z-wt~}*>5V}FOY&pedXK1Cqy&>dhM4Y)P1RLWgh?#Gh)AHwhtpU=BYs;5td*qNT#nmt}en^@TVvm(JjAkk%u7H{FN&+_MBrV~lGPJ@*F zhJ4lp=o$4B0~>55DuK-C5t{V=$)QLnb)HrF?on;Ru(tV|_D!&JA0(oH-?#M6=N$MA zB;=h=QMbSF&kP?#&+u+vKEq>(ForMUy}=AEJ)h|H*zk;_$EF?Sfar(T@U?A+JLn6h zCJ9WGF(oauw3DCZqy2gN5Li#PsyiQab( zr3*@U&0*RYrKeO~S%|}AOw;xJtR2?H8W=6~1`l`XfP-Ui+QX1npxHdus~~1w;gV*$ zJgh~Y%t|9`P;)qLfak@xU1gLgeA>Hj{1c|G_uiwx3^;P+!EPNYjO>tfSy4_Gp-Py* zT6Fx_Wct1NVXwhL=oM-m_NlLY2A|-8v#5!2uV};TPV7udgIuI~7`<0QYWtO2veORK z9_(Li?PW3_Kel{$JMqgM2+8^xPAcV0gT`w4R$g?QxqFFcKBh@!W521ZTm~`Jtcrfs z=`E=jDpRJtZ4*Z^&V<2d~m`<5fp-a)wa z4WF;o2hX-Qp6KeCa|Eus&)k7YE^746_^+Fh%t=Qvil3RGERtm63 z5b5d{gJBL2PnQM#d+6D%OOQ1R!cNCnTbPzfFt~nF3@Y6?#C26oN;Dzs3m0f~$(_5k zO(W?$%0eG;P`LXB!CIla-4Lf^psUDB*dE@Hpd7MQ7!-I==zu1k@_IEl7|2S(gnO6s z;dPEnS=KSQKULHN5YSQ*B#Y>)WN)&8;SeGeGJuEMBXc)ab3 zX^0OU!ILUKP49~TB!7vCrv50W$@l3BeJ)llzfk%*@p@W!--B}0J3`so&&RiS)aA{% z$QVAq!LVlminPfOA46DHKVOFM_9*H&$gL`pK*U!w=FL9e&hs|yP32Lo z0`Ih;_Z_Bqxy@url`tFn8Dujao8E_K1N!MvilzSftS+hqv6x1Kl(T789W|Da2G(Wk z!f7&zy{eHbAROQDG(9vk;fXFeuNVE!>%S!puRj)$g!>HS>Rea1_)keK@in85==I2l z*XeyZFe{h0W8MHIpe`%nCFsk~iR4 zY(I*wK=_v~JH_|bYbIo>J0)nEhdQjul+Lm%){&oX-N}{^In6@FT-70#04*-NKhSd4 z(zn(h$oV{I=SvRBR@EDlV03cSWlktv#I28aH!a8Hu`0q^D!!NygCORsmtR#PX%~gR z6lyH*LoJlf;t4Od!!b{zl>@def;q6Zg`k?7uLFq&{^A*_PP^c_T>t&IF=^$-l zr*}rOzzxI&Y4%%6#EZj(%SLsMkZ-X!FAED7M>Otz)s%U2FNXX;xT24>tdy|=4TzF) z(?HIbE`AV&T5TjIh4#{3Lgo6>H!oA{0sOgN>^@uBvN-y99WT}17Nk7ISCAj*rxMzg z2Irs>TCQG~@&!Db(bXYoII0>R*aC=#xh{k)Ecz!f%J`_vIv=qrGB+Guc-Vnv+aGa{ z=|nHGe_zqLej6JQ8u-4qXXl0%`NC8NG)O_(Tj zj8GSh&{b>dHWh9~97)e3ZB$<-uyQEYYDum#)2+7j%07*bIq0}_ejh4-km}f*gR#E5 zFI41$GBaHj9#xWNVQ=YO)LPH(VN@^+Ozqvkx7!9(?&zq`a2oHcn(3zsXoFSiOqcD* zWa!UBg(tivMPQ?vsN%w5b~!tWo1=hki$OP3PawO6bcH!OnQizUWKjHiyD|cWZ5wJ` zK@-ZNXXKgD%k1?sAt$F&hD<$DYKttq?2DoT97E7kiToOgCycdE65!WILU|_6c4g12 z?OHic8RZuh&`i!zNyRRS{DX^eXyYix9x+ot;i$`YJr6dcYRlZjZ~kY~elO2vrIWI% zBqy&Ho@CChexGY1z-3x6mSG!8elh!4jd6+I;uJC8MWUw^-u zJ8Tm22&YKA>*K54xE5C)n&V4Ek4xk?qTaPnZH*zOzk{=GAe4G{iG|$3)(5Bognx=} z$ve7t>Oyf1G%J$LuRL)P5pg+Syyd6pu;SX@q*D~qsTC->4PRE#)x2^;gxFn+pM(I# zkz_`VcBfC^ShDTsEcLw?@7eWi`N%7g76EjXev>@jsLr9v&?s-(r7w!Jt0}LtvXx;a zu_jB!XavTWLzWjx$9c--K+E~HR#R!WU))?6)ZW~7gvR+{$6KG5Kq;35xTnas#9u^drHTB8>d|gU9Y9A6W(SAYrY9ylV zl$)m0Ti8n3%q2$CwnFoF#VFkUDqPKoP5yAif5dGXwtx)<>dx=4Cdhy9c|1~?nk%KHUgS|$sGYpVkTHXD=;|ap9G|p^ z=j7!-H!&u3Ge10ao!qSNw5xTC`Z~7}vep6JAReo4IlQyuHx~aC&qHVNs+22dXUi_u z+UqHXeh#SE8AtsDcu~#1VemRcY*+6a4ZJ*dnwpmJI>Zw^>Aa2oUW`NGd$bQi^g{BH z-*vZzVwk-#1j8b449p7g)% zyXI=BWM;X>0%ziDbGF&Yg1xNE;OLMlaghx8r|LnevweXN!zn}F( z-91R-M3GD|o&Z$SoO9Sy&C(-0BG3iTAOkCuJGuILfyVyd7@!5D=0A|~%vnHMR! z4>HDE%T}5T)CmPTGL!G0M{u_%xtH7d|3Fyp$i%DUdX@yfDa?tIm=I{${xl^K3P90P z*SyN?=r$Wht(hu{pa$ewH)hO|`C#CDbY@LNCY zOVV5zcotGQ-y8pR5h7|G`|!iPfd_1RMo8Ae)>LCHr5!=vRrS4z@iwtCE;cmBxx@(| z4%iAztU!iy6jzt*^4f|9fA1AaXs7ORgTKc{b2w8&%)V~7z35L()`A(1n|Xt=B#i)i z$w9q8YW*B3`2{*4vCiKNP=0=(%7TvFFOSmQ>j_!{)X=Jos$VQG)36=t))1bY?O(CY zfV)Ah~^`8$MaxH<=IhR zkM(_j^*8?(kXb0~s_}0FL>Hs>OUKS*J#!v95p^DmgZd%B0L>RvIV{IdW@|g2m1Lz& z(=YihLdkA}qq}O0(bUsdJ8QpG266DsM&{ahsDoLiFB+gcj@vubm0`);O;ytx^rGd( ztD8;$b5Ja^`Nq0KvuwtbI%qP87BkJvD7AL1{HEtT4}H0BEAkA`Zv(vLEc2`-gRaAP zS;T&kRKYT?xKM`njxo)6+GA#%s*55K3)`xQy|PSVP@chr&!A|+I)r%ghz?m3bo5bi zkiYb5e)P?tBhN56L4v2Xu-92Pi@#J^2WlM+@e#gr{43_;enK$XIq`CW;`h+f2}nxb zq}R79h`s+&bDqx;l$KW;M#HYR`raaQLH$!ixTOiWR{tA{m{sc-=+zxT$t2|s5QlCg#u?gfYL!$w2xgPfi0tXeqnW#JXI=-7`%Lb<|Ib7j7yf-)I4 zP2>rJ7sn^pAhii{C89Y?5iT7>v`f9)s5b~(^A9nErqVV7KxOnnM9RJqYN@BNkeqEW z+OJ`5xz9w;B5mwN9I7{vRh#GF(2MG<;qIJCt-Ac8-rz?j&nY41V;1N7@Dpg8mr2|p z$IcK9{`}ftlXqGiFNeOKu?!-W2&#R&AG!4ouMyP9?k8)@cS~i^bsCt=)Cg&(TraW< zGuRIwk$eQf!p7WEQfEYs$}nqZNpmHXa@dw_mqJ%+M|Z8_aJQjQ>QsU!mL{?hiu)d8 zG_4r>C&%n>dL%KxY>5v|3H!`XzQIKiPMVYNnJ!R+wbpfcSQl9v&I_Di;9$|HT#>oE zvxxTbhaZg1?!wG=s1w+2*K<>aVRGHC8Qt`(+JyUaDB*APCYO%GJgfQWmm9o-v$f#bJ2@=}@LCy1ehZ{@2kFvt8fKKenHrhp(#%|+qx`77*_*h(l9be@SYRIDkGhOW5F+zipa<7xdfK47Pn>O5K>dBj1q^v|(1!_d{WPQ25tp zuq!e@MP)>9Aa5CEKCr#HYLr)HRWMG6XkY?wzZw;T@E4Jn<}L2@U_|_uLD{G%I0IHh zxNRN68YP4iWD@Dj>MHNmtk>Bu=^fcMnbPa>3PzbfrGYa$Rvhk%;odT;GHJ;k2ll5) zPQDoUs!5sB24~~>+@1U7Q&8Z3q?C&3$xYR>9nG9|&gTjy{le&YuR z$;ZS^_pyH3z6|9-MAQ3Cnaex*s1;ynhZ!w69TY?a5fn79oPt5u3b~h77Kx|hpy)pD z$7TlkFsS{_>b1|sE;!a7WZO|WH&L{d z$E_YNBf~gT-sK$?wpgrLstuMdNj|~xn#Q&+#L6p_!}!hy4AMldbZQRrpfl-!>s5X~ z87&#S?RO2koU5c2H@!`slspCBDc!8=)10JCNO%3!F(=;zdb!s^Qp12w?kn~=;){fZ zpz^lrAJ}gp$sOdLy~WWY65y}3&z&ny7$0kF%xL>Emy}}Y;;ufOp>ayqsxv0`1r@XB zWDv&Wx$PZ=ngWq zY)38izXXPjx(fG~jA8~dWtdB(I*Tsc!u}HGM-NiQ z_LXD1keXvRMpZvBDkppyJOgUb5LrAnXqstSIy{`m06T$ZGP6} z75|X__YdzrC$vfiK`B6no$tb|HnbVL?Af2lBxIXQc%3}+)tl+>$t=_AF4FC4a`SGv zqqyATsp+zc!PNffGcflxH(Ayns*%n-_`>cR>j*a%KPQn!f5Kvj|o z53HE%wS<=(%!Rcie1!#%>)s_zSqZ6z#j@Ec!u^rQGiajr&|On+*`yN1{d6g2VBqYi zfjA64-AjvD-nXe53|u;0J?6a!NcoNip!tZvXHLne#=y!YEiVV*4)^`>=CKCAB zX8oGZgA(E#fXX>2!T<+C?FK(>yEQz8;3QZ+$)0OGlPZ{~cbD8sQ{aQKB8X>6&(JM67IrYv%p6ozS+&~{q-KGI3!_d4sEc1Qj11=}8!DROrhAqVV>W`OP-Vkw4)(v--bGq+D;U)nWyXFRnW+{@#~mI{wUhNWpFo^n2(ZiT_!3JnT;{fIns( zE3X1+MIE1#_pJ*7Rh+DBF=N(443F`0^dhhFS}iyUqRBZ@dA9&|-#WgshT9DD(<}F{ z;*!*vEQ(fPnzE;ElYnk^;5-`E@UgiCP9uYfiTaMGgZ*7GA|mu@P*3x{E8pW# zdN&*ECP>BoMl{#$*2&EHDYyJGK+7#8eV@xhqsXt74Hq}QfUg(=Oog8pswXD%L^`Qr zH%);_Hg^vXrOMVO_{58WWcpV3IJ>ZHt!0E#yFke;eF1}XKZQTa0D!Y!xb>POC%RjmYb-&mx4r z$9pMeFgo}yF|rW&wck>SpwvfvC`)^i}>g~#nf?Vrsy5-k~q*pAn)4Owb z>DI?OxmhL!+KQ!Q?~hgWT>3rl_;a`8S%5HyY5s|&1MuHfg5YP{cixD_e_g(*b3c8b zYCSiq;3hSgp1{wyPGgl#&|P>^D8)T0orv z@v-owp#Q$tFS94V{`gUagjFTt4Yl1bGp_&hk6juU_7fB8;-zVlzd5+DRjGBezh5XRdA9Z>+;9fARcxg1ud$0X$HS+^s3x<)IqR4xRN zvQxC<;HDY2$IaBLvd(J>&8y0f!0453{4t-Aw+!YLXz zbuH`6Lw5{yjGps`0@aCd+5o>|@Bf0Ws;l|xXq5{C+Z;v8NJ!k=JdE8z3Hq0Q z+cOM&Xc5u37a$~_DEt)&SzmYWt7jJ%OF}P>kBxSb_@76F==l1Y`e?ln_PQ1o!f1CZ zI_mY8>9XzNM~ZX?f3qGMGGILw8mVi315DD60O#)B@zTs1%*0fgdA4k?>X|wq|Liig ztpmEEDZoWE(Ox82M^Ul0wzl?O!cW5sv6l#V2sSgAc0ON@D6S0Q(Pb#jDei+pcb?wl zQ^d%BBz5!jR2F;|!AJ1xK9U6kQ`Ol|NhdA>(U$+>Ikbg`j&Nd9BHZp+ZSOI%@{Y#G z?#JHB`R?vGLu7o2VNQ2c4b;33tY#U6!{Lk^sPbr(Oa@fe*_a5`QeMkcyj?8FlaB1^ z?LS!fkli*W0ycMbb>Lykai&V9B3K`*H}s{`b?;zI{?8cU?*}440q=*n4FWv?1LaWv z2zEv0Yt_!Qg_k;a3_Yo$O^XEU5XdBsiI(37HQukaQ!5!IRW zzfv-0S!LB;BQ!RiTpW3J53V&?QuZX+eHsn|3rFnCn2kN1;!m~`a3Dxka6LT|OA`Xy zW1sRn(77@Hw^*8$1suuiBgM%xxj@2ChVV^St zVO|)|B3`(nzA@0UrS-;i>$@JrKJ8ei9|T023Dsg=mt)w=XA_FYzkj1geiBLjfy)ug zZ|7D1G}1fja6g|8qmWfXT4Gqs>7_jSqlOij=95p^`z38!skbQcDmIwI%y_emX@vk>2%em(SOxqB=pZ%+CKrBg44y~Py)ix7N?sq!8DamL=LS&JvtA`Dz5)v|>Ce1Z=Kd{1a*}~z4Xny- zKJz{&gW%;;M#bk;+yn#yN~&KsH#VwD>tT%DKfOeKCu-m;IxRlS4Dd!K!Gd_*D#BP6 z9a}PE$ig5cx|Zj+b$*N{-w$=I?!T5#PKUaHL>GAw&iLrZMFxDSDJz-ez+joF<8}Q( zg7p(!UGOAfK#^F9gP}Hnimn8F1*Y@7Fx1F-{$#maBnu%oTspX z`kn^2Lbb(?$&GH71!`r30lY~NQmdI{x-ou8Q zWyY-oPl9o|OPkp|Uuy(3CD^wr9L?k9_+wAiw(>6zxg51bUPowDS2E^np>QIHb%zLO zx^seHBYJu1y*do(SJkSRr}dK&%)AUrDz&8S!AK1tkH;26CpnScOskkUJG~j(NTl8F z^5D3V^ZS9k$;DOa{%0uZY3{mJp~A}X;o|1PsWtQU<_aX6s}Qk9zou8XH9? zuA>MC-_mz{{ORyKJO?Z|PLT50dL_<93s+`bEyggLA6obsE+S@ZYP!j}peJxol8XB| z0fspq^~_t@CRwKZj)ubz>wBM|Z!w0kN##))cizdZ&zF#Y(6cc_f$a@tHJQV4&o$Oe zQ?T%38@k{XEjPvB2kKCF(cBJ0V5|Qg>4fo-u1%tb0*G{s1enBF zE){hL6OoU7x@ujXr^>J88mXe`;z?!cKl1VMfh>lwcDh`TNDvav>%jOygPwPhg7*k# z`0Vnl`v|R8KM~I3pq*y?0=5?x4!}D#Byw`H`8b%EB!6=DrRs!!P_FE<%A;8; z;B;QSp)EtmnJGsX>Ar8CYSMgn8(&IB>ppxI$<#e!)0#1mASb1dJslG(8&t@O22UY^qoEPH4r;mCkktl@5 zkY;+eZX*rB{h)ed7;Yz}1xzf!*SAmFn6_H- zkz+{CMITwnz!+6Mn7G#Zz7{AhXfLNx1Lis20^Zj zuBZf=6s6C(u!j={WL&PD0+eEO0yEMzdLM6lKTs?3w3vZAV{ialFJ%hpjn z15~UR3l&$)!m;M#S{|Dx0#gjN5WUGkQ%gPeaKqWcfX{{<-g`Qyho*OJrU&2hD)>HT|-U<7~*&i7KdztX_} z{=+~29{!~Qgz=z^lQz}q-yZC_4IC1qr9#^O0;&J;tHzT8hhDgG$nDy{Jg9L4c(CWT zR_nhlx&{E(5_*E+Y5(%zvnt?0&<)61@V{hb)(RKoi!=m8rho0Q{!hOX_XtSIs=n$9 z{)(l4aU6gC$bAieP3BehD(AmEn9L76821PU{g*#9}Ys!+#~OJfoS8&ecI2pXv9~q0E4+2eN1v$A7ZH z01T`4Rq{8ACbWG)zqS6`VWRr3064k{g=aiB0M8)DL-n#84iLvT?;W9yy-m`96ogp0 zFrwW$8l`Ju(tP?^wqxdCNRzkn`F3OkP;$SOcwmykgu!FtJ?~+O^8p4nm^OVoO4%uaYsYW z|FE+(62N~}XjiDA#J}oAsv%?T2nyU2a|6qKzq8!AQxT-Ful&=AiidjG)KtWS&NYDR zXC`yXQNJUu2oCRpLZKyPQ|=iC2xFi# z(JUgoqYMj_Gv9V9A`e8IKwQBSHFiODje=gfqk7|xORMpux+jgE@iy_vBR8eW#!4OP z#`eV0#zaP645ZtEK)N3qmM!84it}Wy(qvnEii(RjOfR+nkU8zi0q1AjATQC?e=d8tD(!LDZt76ZZ*C2Wz}2;tA|rj! zw>%Ii8Stc2HN^+LBZ8NI%(DG&F(QC~9f)wRX@fcO1xFzDN_EtNX_kV)&yCxlaa?-Z zX;mPKodkXTF{*{*&;CFupoYHVJ+JhsnZLgWMPYs>Wb6jaGp0XPsQ+wtO&y;zR?5om z`0t&XIMr7Vw0>-Z9CC;WdRa&xeP8sL>71?bm)XeJ1FoR5#Y;{yAAZicwY6S3<2oSK z57)4p%7rN`DX0Cw%vBWv&e;{9+J@2$$v{&b*nYw9V~V{sFfD9B#* z`B`46vt8}9=j7-O{_n$)Cm*jS(sOH(`nDFz7jZKD6S_#Y!iQL&iv{?Kk6a~Hbf~Vc zZ-(!JB}=3(3Wu|Pb#D(m6?)dPlcGUY^NGeEp!6AQY2zSM%M{;<=XT_2f5`Ff$-c~9 zI9SxvgC7%d>8v%wW5LCvds?>sz2I3}>;CpBxZc#WuGQ?=-n)D9e7J7HUIvK+lV`I1 z!^s3VBnS%wTlhuD@Ly^EYBVa2bE>$kEOJ4|-F;LkBL33o(5>_+2TgrL_2e>V^!Uc} zZl>KG!^AHIXRKcO!Bv8!W_q>mwUykZs_x&0S?YmHkszQ|(zlUfbN-_Js2{x%qkL}F z-iE%|yn(pvxL0EI_OW6RivJ%DDQ5-{;&aUj81P6T>j8-^R7O>kI+BK6F5*Rz6limt zRw@gw39j0#gR!U;RNQaf`8d_|m{%8tKHfYX-c@BbqLjg^P?Z~RW^^#x13L}ep_=ZV z@jrO(f!uehbM{Aznbg?o(B#G^{f}7Wcf%0~*jU2^Ps$h*{|-oq6yyRQ>mOLRria+; zJ)%k}D*5o3`iYorQCri5@%rXwEkLsQV|@=Aae82LZrOg;?=1b!-QE3%|JhvVUeqNP zdo9^rN1CFulP}ly=C2KqFzZBhxf$EocZJi7IiE>6tZ$Ib7>hQZ{0;d34ZsGgU!W}f z)GAg(j^CvYsujvM9f!2>OPTPB``>`XrrpETb^B>5%)#HpySdb`wrdHOYjk|&G~aU) z&EoUr4995jgHJv2`w3)s18^IaX-VZOwQH7^;ZFdOOpSa@A?l^lbZ)_+3-#|DE9qv&|Om$DiNm8&?nZd`6wbERXbxi+bBUJbpm9nhye9H|tnVzx%nMogH_o zuGg&xZf+h}%DzBLW2MD>kFeZ6o4X<7lj1h%7W*eBv>v$H`^H+^6%#Mco=UEiI@eJ8 z&Ap9wnkdM>!cSKqLii8I&-!83ZJ!>QDPFAgo1n7abBd1-sfLP`0~6~2$`TQXHlRV( z|MMH{dhz&syU%a@Uu@2wAguc=kKl0loQ|lcw!Gu*2`#37T8fV=_;yMpZ6O|$#NWAi z?)UueU;%rw+XS`}!7E@orh=qMl>I@x_m7z66F%X2FdmqQ&%e0U2?P`hckKdt1GqsN zv@JzT;-ZEUT7!6m@;@a6RNQy~AM7q|OYsk9>rc_$yC@0uQR8QxX5vYa#K%+Mt^OVG1|nvya33-Zft;D6GI&A^7>#YX11G-%U1)id65-Ia}yx zHB~t|_-}kj7q1ST+i}aaHoPVorukoulrHQ7^JB%~`I~r*t;#wyItn(Oo*tW=v`Gp7 z=I?X=E@@H#FIV#Gw!N~Fl8Ut=dtl(Kc48ux)Tv``6oepw;oni^~57YhFc<(m-{6oBg;;noD%S{C4A$zP7dlKo@6uO*?f z7=97c6hG!m$3FKqb$wrI+$wfsTqLi9fswJatxUk{tzKxYTk=gi*9UR+4J1~=^y^!R z_aEoi*18*-cq^Y!`^=;p=_IEX%+!Q58I&1cn?Qhd85kYa=#nUKxcT>3hT@V`FBiuT zM<8h`m1{$iyz95VgEu!f;gz?da>ao@&^LPB9K#KCwcE^&R3fTkChm?ryOV7})Z*hw zAlw4bgki9V`!WHMRu;fz*wh3qY0Y7a>?xb;;LG+J*r1o^7r2RD2)v~F+b?dG6X-FH z$L@m&IwyWHP^E`e8&#+?GY-rhro;r&mnLqC34JB*js|HR!H z{x0S}lYa2Xi%#J=d4xG*s}vY`DX_zsnDRx(vGCR518F}|9csd`wAWvFAiF?KTOdq+ z(oyt&Tm4CE9S3y$rp$z4+begGn!Y)K7%$-#&iaS5KuIP|J*&K2Fzhk4BTlD#Y!_v$ zyKTk(r<430`e@_perpNYra-_~y|!{i_w^k=YlsN5V>Rw6GMcLjG<1K9`LPQss z{$rAW`Sq6gHOFS~Pv@(aHEU0+-12H`YJZ$GRtN2O*WBE5^M1wkJpicPyfxD%HQ+8S ztg~7TYZ%Dx${kBmOJ}~%TO71qd)tf8UaD6Y5zO7S)Nl))b(=H#<|S%)VyU6^ojaTI z@u`-`&mw+*ucP0_XOk_wHKf0HjE&jWmOIsR^1JIgq78JV#T{JYMXV$Ys0m{iN?P)6 z2pTcB0`wGOZyztN-o9?z(=anJ=EM+(`KbM!ns^T&7iQJYC5*LHAbuHDOHP z`TNb;!cR*~jZ$>qQA7cTW?#s9Y!qT{=l-Cg^CVDxu7>O{GebH~I!X`1gGK57-pmpq z;D4iSYw%_dSXvH{oKg_5=SqVG;QE0uoiH}MrBkceYhpfr_eg`d^oJ+#J#kL;x@RFW zs^hx-DfZ%EC-?RHk<|oFO6y{Eh;K{@S^Bblf8P--MreoF1{Kf7ekAY zjk}LB-|O&79%|5)H*sGg=+tCwoLQNgQ+?nI)jg?)%Pg_}ZGVUGjoyjt+0wu7udS0) zgoBb@YFldRT0nX0^cMq!X}&AfcYXo{m~m|#TzvQX@I(b%!^FG$MFJ{CQnLB;_|p1< z+cS`^q37quir|mhgxIm(caKf_?|~HgqTo9uDH`pihK-zMLHBI-zU^?w3bSfIAr#qk zG&Kb!Z@mJac)l=lhYkEvTBVV~rvmK{MW}$SyiSlhW4pX2D#lk5Jnx{iQ|npy)byw_ zkMzJWMFw0X3bLz6=y)d0EN@v=R_4Jb7{0@u1pJ3J!V_Jxh)nU0IMq*1p2=;_B^?>T z<3!JkoAd9#{Zbv2Wbufmt;?A6kQK08b{dCLQIPu&W|=8l(wTO$Fs{F?5EXufKIvys z04rofW!Ns`K=UknwF=N4dv%#=d-aYDv5o;Vz45MU2gMJzQUuZy7>Q6;{{Of->!>KV z@8K(;lr&07cT0ClH$yi9BMs6G(t>p7&G-S?vCy(6PEYQ#HIab?%`V;lH=~4oe_Oeu$RDernq-{3qOF#(Oi=}j z8FEk0k^Ehx)uzxB_n}r_UOv3G=JPAsYY@IQ*8Dv0dg7)^Y87(3$88Q{@C7=J3(VBi z6lZPW*mQl3bpo}7hD$xPtYJ26Pi2sh_A$8QGgcCYV4a!maTrl>svhpEf3JsO8iH!1 z3J>;Q;dv-5KDxBNp3CzxoujI|T&>qaoH(0EK_pWbK@M@^suo^ETIG|vnp$|#0=~O8 zIA6e3Qr_I^TlQoD5(x_&NfbFr#X&JtV{P!T;&N%^-P>G}Q@Sy5XfM+mnAx?zpR za6k8a|F9KD@7r_d4jsl&30fXQ1{hJ1%5K=-sq(W7ToPrkY<%o!FO7=Ib*$nHmK0LvV~%}iDKLy8V2L|%G0JvXH$#t1I_mqyJ~ctI~$Xz=L{TJ?nu_Y%*< zEy) zn_O21t#}}nk)M2g*I>!?YhWPs=CnslO%{6D{7>Vf<3>Q0;+Ft!G^iV3$dAzXA(I%o zg1B5T%G*HQZ~{dnzm9FJQ4gDg<0cfC^X>XvO_?t&Ma-@Mp{L&7LuhYT1w4^!N0Xn1 z>_^SSVote6s!zSIijDRX>s7L!&$b4w*E$1#_dhQ{^sk#}WTYAJx~bvx-~XrGQ#iBl zx1PIwm3#Z|pY~Pw6yr-|MMMPZ{SP#6!sCeax> zzIdKs`6Ot)S+fROM)&Wx!-0B38-CHE|9Cxre-;+@H2_~;ktS>VY>>I0?-&~OgR(7m z1yoBQ;waPSM@L7yhk1ukDy}sYr2r!Q((#g|@nP>I4nOSu>A%09MgS&0Z-&zSFDEKi z+|Z$IdpMDc5WIoWZOsat6mFZmurUT{%4|{ie0-r;uOWTjZLR$?zm!0$O^FZ48qtL|xX}tyoO< zKddG%~<$UbyY)iG) zNE0&l*d~~92ktzYN`-LY@A>#T>n2M04z8~>^Xq5sx^9)shUk)Mum<)tv|!r{f=FGZv5SvH{KF`=_Syq*%96cAVEcU{#9h2v)h0PKpW~B1YXDyr%?6F4hR9`=F9*xd z^Nmht-MuBi9H-Rc<%>iHJMaq(Lne8;DR1c_{xbYyKXzo?(rc8}5ZE;QxPsON(@4lG zSW>l3x1E4W(T-K+S6sG}O(mcf%r#G9h%E-kzjQHFl33DEv67jq;QaPp$f%sd}n=2eGzhL55KU`edlVMKeq!_TzUMiD1@t+A-927ST~= zs=Y2RKqn3W58O! zSsk8U@;%}SGB}W-tD#$)7^WI#gETgc^H?`ymri09btV13YD?r$eW7@@5oqi3+l9}m z)^ebad6=7z?3*?IYg0K-(*Z8I%aTxVYQ%3)xt%;M;kgYR)Zy{|w=yIVg4!w%y5Ih! zQ+=^t;(V8&^K1B!?TIN7$BYMdeZ?i{b{l%`C?eP&qD-{2CC*~eL0&8**E~ba52Bkc zt!=}}sD3hiGHM-s2mjI{P|L&eA}XdcuCQb{R7P#>5*lS>RVVcR!TS!?|1~>_Xuli#H6qs)@%4u1f&bw8Fg*&c+rrX$!?`<<^YVh=zkp#<_9TO+R=55%9`>-#r+k# zkwbqe5PRwQv_brg3of7VE`+SUNEcs~|_>QzyD6_cyT6i_9g zp>6dO@Dp8!+&O-+=aDqzc}lT_%T-D3X-QDMa;8oFZ3~#LevZjiamsWdix;ai_F4#U z$1`@w*yAH#j2(!HR$^;il#s}Xa9@K=VK1f^l<-%+Crs$2K=9>*ev@P2Z;~=TK^K%R zltqSi7CMd{5KQD;z`@BrAI`OG2JK1Shyod`8N3*amC24<7C(y_S5(2}1(WrPp8v~d zgq}KnXjJP=nDlpO`~@5*)oKqZ-Z-}I$%%2~gdJd2iMQL0H$IkWaKmp1^X&8B^;u0g znbPcl3E2FWu1j0#M~Z3dncw(vzvQp!a#l+OkknM|v;na!5NV{{X8gb-}Xw8Q=(B-ol_w@sU@9`4m*o23n9cr?eesNxkhDK>gwcC{WO)Y z)ct;`Wd9hoB2+-%_-*r{xthaHV2f5|-+jhr+$JA3pJL+YGIgqrmI#xy9X0L0&)s`p zC>1=_8`Jp0lj({?q=>^aj)l2p;Ww%QnuMD;fYLbY+V7j&zgvodl7u4p`%0c)QuPiJC3E>%Ok<{00)ySL>ps7|N&ifUQQujoS)P75gW3QoYTjNJKD_Pi=016S z*RL2NCaM@RcsB8(Pq0`Q7*w5sXQ87&fJg?aiiC}?ygZd+fz6KU4J^RLCJv;IM1ap~ zRQ_VGECr@uq!nYKvx;Y?=K`Mh#)hJ`hYt`)6*tIm6xB0tB6rTlRrIJ96kIcBp@}FJ zKdcz&ToNpssol4a(bdgU$9|}J1kTCgZ+YWq(BgM z-i5-Mr~A(D*$B=@jXO3JGV+ER1%Dm3f40}GA9QQgk?4j7{f>?z!I{tizI>vf)y>^7 zi2~>XaP5AOXCP$T!@te(OPZ+P6^D53x=cUcJZrBM0e_@QS#kwBC3QB2-XOmU;N9@S z>`>K5x1b>EHZXI)2#c}6?(CpKlA24h;=TN^Flc3kog-@Wi=@DHYvPS3i{3+Q_z<-c zEz_QI{IB9Yn0q77_5iRF;23#CXJrLcl_GgmU&QsCqjuzxc{#GetDs!4_u_4uZA^M^ zUN=qNwPl{y4yZ*xR5l^LMStMqUkemMx;kR%6_@3rSqOKmA%F4|4~|=A%Q=mU0mt*_ zDexV#H*dzs9(;vG{RVVx%Y5Na4N`HALntOuN3v-TTo2(z0zieLl!nQr|eoiZa2VqD2Va`VQfu zRY73g*h|EU^fRo9#?2EWm7)PO`F^IMOJ#bC69|s_prOy5fd!(FKnc)IlMJwC8eTwO zpL`cjX|K$UjDa~x2Z5Bd+ch~cd-wC&HjVR^xBR>#ZdxfR<=_OQ#qrRRY&D~@=+W@? zkK<8q@Rt)@#!1-mD&!-J|5I?D3U$G7LI7uRchC+gGev<*)r&OzGNs1_(d@~|LY0ja z0GhyslBeRWhjqh4+TYz`f7=2`sU5EejXu@KPX8f`bWmV?Atk5P-o#=Zx0Bw8_7I`m z;EdxU2{R+iJ7R)7ZjetqJ#v+vZ(A}<%o{y^3NLv2QYIv4nfovvpo@#Da*XA#>>o*cI}8+dI7!iO#pZ-Ob^POBPnvwr9sc)o>Iopt*bJc6xRI~ zdAN&AS*$q4F^!XdKG<^6;-ptO+GN`>?w;`^t4UnkOXtVE12b+oBO=FHp_-1_!Wkh8 zt>*ovyk>;{XSW+JBJQ^4x`clRK)Z8`1fXbda?Ct-F9S8#XAVwI3FZAC@Wex{$ZAyo zttp|=hml^;J-zZv_-jwRBPHpI6hp=lSCz)*I_nN}01dxF%X6uuFi68DaH9we`z(v2 zbF64ndvvS^TpD?tvf4lRLYDT%Qmng0hBJ!Ys>)Asc3(W-b*|tc(X+Ap41PRN{tad_ zwo%i|g#^yKt)GnXI1$F_pNa_;W4|Mh^>c59_s$0qI?0*~gxB@gb-TLB7DoQKNl51H zZ6a!zY4S7G+{ST9F4ZHnfAaxNXQ!B(MfpqHyh{%ec%#K=@EEABiz1ew@DE_595rb>$fO@Q?f0VX65cMy4jMmvyOF(2tX ze#ef7g>F;LjZR1>cpAQcTfWWFSoa3HF7Mg0Mp9BLY%eV!ZHLVwY4>%P0@rd3N{cOw z-h}oHYTmm^Z+wWrk0l~sU>zb=MD`rB5dPBA!iKttH|=jNEG-YQGHwFWq2By&9(hEc z3e-{PSCPq{)G`GD`}gj9YNN6LN>Kmfm&)P#rV(0oTIBvIa6zZRhhe2~lL{rVF+Af| z-0=&Jh_y2xlL?hiLn_bt#d`f%fBCR8HGRLRGOeK;`_|sCSLuyNMf8^(bywN!C~^_X zhfXV3o=R$kiJcHp_dFFTvAp#vQwk+o>tQy!gWft?TQUbGrk@^JMBv0iF`8%E)OJI) zy7foy_n#L^8pLj8z)Hz`C_Z$INoysL>-MVQ=Z2v>B5x8T7Yn7&hKEc$#r(=)NO?_t z*c+mGbC9S~t(l(kMDU;IDTxXdu_ID1|>wOJ87+qm~oNT#Kt(BnmcSRt)SzExHJ zq-$-Y{Xfd$?<3 z{E*-)TcQ+hv*FcdPkG~~1Hrnw+{bqA(R2n6v<6af-;sNbqTYcf6Xe%L@#uu6F)%NJ z3m;ff{=d__ zA3$&yg5!L>;)Nq#M-Jrg^5V*yns_0!PSZUgfcrJ(f8YJz?Ud+A*f31m&=;4;-OxQ5 zZLC4aZU{dM+IUI?RWIw5RUfS^T6=v8ZK?T1KL;b%l zw1?)@)?oe>cZmBM#*fJmlO6bzCeS1eEQ>^BLvqHwwTBENyZua5zf8Pr=r!_`0mKIf zJH@*DyJGJv`=RSbjUm(F;E-*^d6EL`ssy?XW)<7|7AfMfJ=fzr*M3s%iHZ<`J?RvI z)ZH}Qy$uy=Qc!-`Pe;;ElOb_T2lPxjZC9_)w%3hRIrX>?5BpM?PL7aOaIX|oO^~ueCD@*KS8b>Hc(Ti>7!PA316NeAMk#Q;HK~mt)OxrVsz+? z_d}q6ct9F@qq1P0is;saGf9IPrHHg>(zw`|%&nR*Svo3~a%16ri~if5Sqfb_!`4QNye{b<^?9W_z++U-3X-2%Lfy^vOi@Z;%)u(o26 zy}dt4n(Vtgk+qHSiM^I88dvQ@52#~q(8kZQCQM4VP#if2xZK)Dr4BA}Au%XXG{-`b zO(^G81vs|=BX5wQ)ufrV=$BmFp5du^Z-;2xJ=AEHE=+K!^EHCN5&%ZqA2yb~(_zrMtxC zqH`;7e*Tw5XNpuxJ~OU$&Kf6n>G;yO%{pB*+GI+o{w#OAqh)&F|CwLN5Q)GCdnd=4 zuJ9%DiUJ0hQ)Nf`X-oKV`CWWoU4i^5&Jzt&P=mVfuYXtoV)M9Q zIMSbvpPEB(Ih54pu%F({qq@aUacLbxeW6D#U2BeB@8Kfn1@gGWQtnV?*s@PuddzP1 zv?xY#D$Ie09pUee;g_)15?eVWCL5ECvG*iZX+k)mcDQQKGL_jk8giJXXSTIKJp&D5 z@bN@L6wPIkMyrLUvdnW`L1}6DaXAzo-V3Fri7r4P@m;d&RZYtf{=R`-_3Yw*Etj|$ zv~K?!(>wX!5vdP&aI7MWQJ;Fl`IJu(UT1jPS!94Gys>jYZ!9I2E;FWAmTexVoTiVB z;xOTgqmkLi(90UojdZ_#%MJ(Q&Du~%&>jjmB`Np%=f;BL4pfS$4?YXzIPya+&PSuB z3bk)`Ya>+a%G_Yj&}+{ku6Eo!q$&~X@V(A8;aZmVVRxbG6LBKU~avzUb0+oyxA2z=#%8x%Cp^e3v4Cf+Bz{R}=w#9PuSg zy7;urnIw3oXn$C>wdr|Zt+lCGV?17IO1@MT@PqUdl~T9i2hP{9uZ=r;s)1T{pZ8La zJnwH0&p{r?*V6WK-wuysucDXD+o5#Jk#mp(@TyBt5*GAEP(PjyxZu-ZyK)EGZl?V{ zW|eu6Ww&*ZeEKx`o=A!`ivI&vl%j@5UmFa4jzv9dq=(kU5rYVK37;IK=CsatCFf3Me7}A;n$o zf+Mh9V9@IG^6Qn>t~;)l6&YKf@^EK^{kk)kzLn3s$op2T^ZhGv_cW=9FD2wfrcfhN zOFjFoZt2OgkH#9B4E*;=_0TdZKj!!$GJeW-_hlp$G&;U_`AqycWYau~x`3!tQ8sk} zm^m_f;|iD6u;#UnLG@Vh)Ay;BD<*o|l{K~VdY*~vl!R#7_;ynp zwzA)%3y|nl(o*`K!KUNh?ivFdBN8-Z9;I6};}H`vys-|e3}(#@Erb1~gHrUJ2~?T! z*r*1v)U|4_`26Ut6M74X-Sqs@Jb-MU!J^E_o<@I7Y1-u$e6HF+lFYG|KigP^jk+}o|9ur58CcBu)vxrt)k4L2 zwpL~;$LSwvPuuGw{MbT7Hyth6LW1orTcXH>8dKGf^R%OL-S?JFDRblgbyy>XQ426X4Ez{p=xR1+ zwGbA*oV0`ZoE?{xQ*H&-=J(M=6Bz}D-f)~QlEv|bJbzA(m8{wu3Dl=DHbdq)T`p{> z9CYO>l{8E98`|h9O6=O=-&wyJ?T68;)~^E>S$=MV`6KXmGU3`H*FFD4U7`eJLdtAwk8efW17;TR_U{YM1uU`vX z>;hZskHS1TL+&j_HLT4GJEdsd^cXFr@px)SM|?jJG}~re%v5=oZ#rM+qO-BBb*L_|_uMIr( zK3)>2mnIzeJgz+H_nIEs+TJjFY%o8DnaWnmS-9N=cQf|TqH|wk7&5W+_Ql=(T6vH^ zJ~4QJ+Uspz_fKPTg>4D2WmDs4UOo@KJ_pGF5t;ORV=DJQg8k>piVLd|%nKFEGA40G)d~`{+z=zw-Wgu zuN5R36=E8_6vR(wnd+*9H4^uDBUbkFOl9|8J@?V-A6!K%NABpREsmYX^+B@z1*~#n zFVBQhj+n2&blKk*fq|ad32F{W%hp+$eqk|(4jGqJS@)f2tzGZnrNaeA56wpYHZw2WMOZpWGf9#?;RHn@ zRoij>-_S_KxdRP#cEsgs3qbl2J0%cod2Dr+ci0q|xfr=>BmD)FtXHIoo>cjE`G}pa zgYcho^J4ml+NVN>in4HvepF;!i8~lb)HTi5es?~sfq=ZyIke@e3qA;YeB8TG1?!f% z8a8Q{hOYLr(OjZgG%%bY8PBbJR)GO@RCX1}6;^PuOv!~yg;*Lj+KDt|r~y65XF zSk(W-$>iJN=Ktb6xG_<>@VaG3z}j5gH+Tywek2R3MU|(L7Kr=k8u+N%ZLl z##n$>l~t-G5?D6hrNDvvR80JBViwob*BKWr%q9hZP`In;f%Us%t;{fOo;Zc2J;4*E z{uofKSIlLt!LNOTXLtgyXAdIoM5#w9U#GUI3oeS)dWr3Kg&4pM@{XAqny+EJcOLlf z=Q9d^0>TgWel`=Ayoo>DB$t*wkB^J48KqlTw36No$rWs5^^NO6XH}-c*BS7@{IRYP zUM={uppPWsX<|1 zc+=4u2k>eQ{yIRR+SzRouBas;uzxN7hMJXr?x)Y4LNhCvwI(mG?EZ2*k$>sBGl|wOo{Ug3rf1f0?K&tNEM#jA&6(d z{zpx7et;2?vR;kEDtq%rH-MZw#*_9`C1wlwC7k(`%*94%HQ8Nar(jWl)eulD|DL6sLZ{BA5;>lw)~lD3 zct#*vcu9YTE!C`e{V-oHzb1f^4Ou9Lxs?b{NxVG{CEk05q*zJ0z29&AM|>UI9{ZyX zjXd)Z{fV?>is?N2bJM`nRJ(V^Uj{V{ZO z*SG1vKjCD6F-7VqBhA77N;zuTD<0r^Ix#KeI2sgR1l7u_;^p?-ZkVq@0ZAdsLLRmx8H2|sH-+L#3?PS8 zX_zI>Q)7mY1*}_T_dz8ex=VNbPtq<6IFI~~s+lKPL#Fcm?pmk`#7u;bbqs2k!!zpE zs#vA4qefPuzVZN5!bIP_P~y!Bcmj}^>Sq7;Ubb3GQ(jf@?>i7DznvTDqcH99*{v7rol?g)cSzgY&DXHf5fO`T|Pg)p6#?i z2ywaa$Q39YIBU%f6Y+d+?$3Dy;W%6hUoY3#@}&_o=Z7bqUiCDx8U!)L=KIblhKW^Z0mwt9_mc8LzfeaIf^I6CvVY`PGBYH zCLL>W+E3_y!}Uy8ZX^cmhpzHTzAXr^wupS?`T4#t8PNU&X}3XxLNQ|p;J92j5v&y_AHVt$n^i+|( zTsnPApbB~B#>*=xf&V;3-#HK0@HqN-AtbkZ0wPZoE0o%POF1}}_8TTwn z+>1}NT4CJPc@rN${&*p2^Dl|qJl9Gn;j4ToE~Xjp-aKl z{OqU^9~k#K`@nwW+XUR+buCUTW|`TqegzE4Huj9jJ~2F&U&MP}BUx~Q z)u_rzqwWML*+2-&Fdb; z*^X*V1Wj;E=MUP7biZlwZ<2;OE5L7M0-_ z4*F|ydx!vE=R!(MB4+6LKP*tg&uO;WtVHlT4<$spl(3d)=8RX+-K+Ks%{$tM4>1dg z)r43P(7+Z=SX!D3ACX3Xhd4KG4<{=YJE1od*dyr_vbsVp4$M^qp z(xLwK8{fU8<<}03i->>iky!+UO~c*fews(NPH#r-B3sw>r04cW#B~6-!)DZhSpG?U zK%br@m@QgaA15!nq3j6!yhip#PC3lQYGh*!KqU-9cIW?$QCIcGqv7Dnsgo-a$iup{ zv+nNB&4)*M7MxkFeg2hG#9e>`d$GKKR7ne$8vDk(V!Xx{jo@l(ti-EOqkhCG#ToKN zV(_au?T2!K(`3%-_C_f6aZGmnKu6k_FE3s5d7)nG_%6;;v!K>CiU;{}IefG3-;OU)>?7Bd#5qTU-VEKNY%DF7r9! z5NSdlsH;Oik0)K#O)||Xnn=0kC(N6ot_lsFegYSjP#B~rJ|zZg=PSZL?kC2}Q&JTb zZ{6{x)E8^FMdhfxqolMimNeck(AHBqvju`oL&g-Wn^soAbr9_`TW_1?&!#)IX_^yW z*{OI7SNnaR=@+0SHiEYF^n}OI2IKr6t_X0$&T-TH5Vvel#FXrwHTZ#8DjQx@0X)*;Uf zuS*tv*SG0fm<(|@P6kEuo&F3*!b!YU;cb+Ay96B~wOba3l(3E;^GF(rN{hUe$;yLz zCF3kM=tHPJ-DkXiBhtN(Mvv>=Vo()K;bAN5(Z|q-wsM}|A^j`to@2@;hF0mAXiWp@ zGV-4CD|~H&lhD0g@k1YSiRac708oe2Q7jj$%rh(Sm<~<}T|n`DVW1A&g7Dg9w2^1~ zXh)+^Wo#Q)!AH}P73o!y_ZET1Hf2}F;^xnzsa}OUhNtrf;R2d)=E#?OLx@MJ@O5%+ z)=C$oN5JWq5tL^&07JT@N#Y*k0Xjf)w*XR`38;^edR*0o!iT+T3t2M7KajHBgurpM zpKUIM2;%75nv>Mk(2<63E*S9|Av3*ZCH6proq3Q(HqD1Rf1#gq!ZW2NFoJo6S`_L2 zEyj41$Kpp(p5dpshka*w=cV)d`HZJIoI`_WMOzK^J|;OasAcW}HysOjxb8#YS~T>y zKB~334oPGVOruf>g)Z>xtE9u93*U+p&ORz$ z=`iYo{4I43_9P*ZfK_X%P_ea@ySl|Uc~W|jV;=14%a4hbVI)lUk)LD{1xy-E*0Q4>E2qbW(4 ze2jm)IzDfL6n9;_nW%rXZ0u5Yaah+yZT*~S6-hVlt@%3AGKBfDHo>9}o4;K462J&o zCmDVmyY@ZaOIc-9uJW;x84oLE2-q6-g}*J!-{**aMO2HT3%=dfpV@nw4#&W#YdTDS zz%m+m+Z=%?VR~No327kzZ7C1Wk(D44$* zFR?Bh*3Mz5(zEsGieN-lKin;_2Gh+4hh9DmpAc3ct0zCijHh(AX-$5l|D}6S!U%i& zb=cbA5u|t4Ly|k4jitE51_P0%WhD{1$U>U~33xmy1438mui`A&@psq)#;*StVEHQy zzKSPKf>3CR{ba`f=RtV5FzW33R#F(|$srgMLCjIOk0wY4mm|U%gLd?d}c6eXOtTnbb)%^vFJP_#>q!|R3bKsrVkDR3QaD_ z4*?njl#p;B5_e?H;!HvDR!tMQWHPOCT)esT;sA$+U@uU;Z5Q)?I#|g3`6`vTlD__z zWjP*(yaf697q`hnM9uy-u?NJD_~vaL!&*6KpZqiC{Z88HRvGIGI(no0ah<>*{R@#!NUHGa zg9J$|z`?=csu@};Dkwyf2d(HkqZXI()qiMq@s7;e_4?0+-@z6vj1Cxie>GEH z=#B~Ua}MJY_T}H-wthrYdEaPaPwkd^kkfmvneQ=Ah^5G{IA|vJ!~R>rS_rKAQmcm8 z$fdg557`pWsao~jG zXd_x5EtY`jsx&d-CJ{E+f1V!f^H30PbL+=(EjTE1u9KTd;{Ec2NF%}!Vnw*_IQ*2b z_Vj9-j`5esmcX6|((kb!2ExXdrOAQ!40V#u*R2CjTA*q|hpJL5QUsGKClXsvMVcj% zmm&yx(LH9S!$4}c?Il%=RJO@87jg`P?o|eTsC`fsF-FI#K2wtm-n_|27E>*X)6RS9 zU<*6r(>h_GD=dD>B)1QxJ5m=(`t(w3t^QgVh816BtaYA#uvhO<%fsdzvsqKi>=)%j=M!LDj{!mc+_i{9Uhp8+{xpI;o}?I?v=--mAU0skJ6cmXFPJ5|494y z6<{R==NB~}l|h+?^jilQ8j}cr;C>bGc7?GDMOWhU&+B%}9QdQUtb{;vrNftMjp@b} za9^Xt`wP~SJL)=D3jG7af^{Q3%ISRvk<`%aWQB*+?M!Dxf>1{q(EH4qbQBrQda5q-nk4~!`6{FL@P>#ftCOQ|JAt;uxrspd48p#yDkSry8!n(qea z4+rS4XS?o+Prc|_BWzrkLbgw=;pYfK^EZO8EoGRmNnPT3`wDtR)_4Yc+&xq07&#}$ zL%TE{8q`3~MstdULqERklWp(}yq19C%IA2@9Us_k_BO&Wa{Ww4%-euYH+ zHr(4yH=jvGSxgHdTGot#6qR$bR2Pn&!v?1k#?)4rg#I^laQzP{=bF8?qq2`MIA-;6 z;YfzCI$B!VDqKV`zTsgV7wxo)z3tQwE{G1va)m4Rtt;m~mcNIkEd=7|(~vz{J>x`$ zhZ)|y`zM(Cw_;Dbho()Oj(j$DKmFMPLfA0L-#QUq>RriIZAe<39G27Sroc4Q<`z}Z zy;S!rdf()7*5_XmC|AzrmaT)Pm*b%=0muSt=#TnleIjKp<1eEIMZL8saP4QE|H*YN zD_X`+?t-U5XnFzV+``pp3^^aw-4QGsaYXaR50-x@w(xg+)ha<&M28eMb|e*q7@+6A zXX9}zYhbq0dN0^)sMB?4iWs3B>?g!m8;sqE+lQU)%tI|YA)O%BV&~&@DR@&2bJXon zmwcg#T4L1Itup;QpIGWR#qpWV!A1!FjYEaORF0JyT-ubhzi;II2!MUu!b|61@(^Oc z<*_N;MTd+(al%O!f=gh2%N@?HD3I+Yk-m8ZYa%oKBkKT{w-KFv_&Q3w>PI0BTpU=M z*;b{Usn48Iue#0~KJK#j7*MK?Wk*$IW?|E)N9}|q%~?mUG8AQH+2qAA<4)OJz-rrU zfjn(tIVX(3`pe6^D`A09XV2VCp{jvom(I&lgLgWKU@k&?0u@a|fFRV0HME{>4>UNP zw%h)s)N*WC(#9JhxZu|1aT1xyYbG{#gYbcxFFnGPnx!2y?4x03>Fhkc{CMQDu)kmA zwT5g^aU1CNc(42L*~asxv+Mt=@)i-ODnH*=k(B%siM#oMk%T&*-%;3y5`#z7GV&U2 zF|VWKN*VBhH&7wgOSDfx0>kl=RyEjJIxpN^jtbb!bEhq3ZGU8 zDqwQnzqhSTxhf*|$XoJ+%s}x%M78S0SuTyi`qrM=$@#pkdV@i0$BtPNN3drH4heat zqN|Y0m?3jk-U6?(*Y!(Q@x=G$#rh6|i_6b|QX=HwDl~b#PZ@>~SCi$wcwrZEOrzW3mV2_KNvk^qa`xYYyda(r?C(Q1`5w z=Xk8Qj}Z0|oig)$qzPY*JN$WL0@~_q0BSMqE1z+UbhYg06>dBW}_FVF!gbrw>0rk{(fz{yD9#jkX{WN&S$Q;X^6s5fS`Elj3@z*apVRg9lRwKJkV(T&EM4HuBrF|r> z12W2!)?ovIoqB0<0ct!RoJDz)4e$PK=ujj=x1l1JWgF)$!S1GF5eXjcon!L?f%Kq( zGrl_2x)JZATtfb$Q^8`Mver0FZ~M&Cfusag*yzevUfFCvi(Y5O@?qu*)^MF#x z!#iSn2w`;t-J%h59lCg*Y7ZsG~dn6<3LrL=&uqQ)sx zG&;3%1pMtoDKtT1^F%&dT>iYD2HO;~<1b22>KmBp*}gM;pw4y0phTaAL-?@Mr^)|i zRhVTt!yC*-%OS5X^r$cP{r?CQnhz0!Ue=dlyFZ)%KG}AwajPG)#@5z)t-j1067^9@ zq<7{0)VZ9IrZQQ)&vM@o$cZ9V#fzncTGw=qrR$IEcpo#T4{?rNhk@E7KzGR@ocP7p zQ&A!cq=R)0WDb&zH0TFa-Q@EG`;F>ehwU{3=lWKh?cJ9o-(whui}>Uv-iqA4M<8F- zeYu@iWi2xhO{w{f!1dsV2n82WBZsoG>PS zlpA^@HXQXu?VazI31&dVg8TX@VqvVcz5KQLyARvR%6Dk_vyJHswUGJY2c7CUBfbN}}TnMJR*ho>(GX1HjxppDZ-a z(HUI=EFJ8yFy*j5@|Zwgnp;WZX?YJj=>_p4J36r!Hc{;(UL6{r60~2v+q*b? zejFjL`p&$#E*ps<R1WhL4j@?LKnNxH0@LeU#@S5|qMz@n=$ynfj^Ezyu zJp5)~%I-;F)T5V*>ma@#FTNQ!TQBY7`L2O+PbKhF*29KGV27s%T4>(H3X6#@XqjgEpT_w<=a>nx&!2eUSV(363Y#8#w0yR5AJ;BO#XJ*TDpgju*&NU?cv(e8C zJu1JT;OsBGl?e>Vlb4C^inD3l>@Q8qbBbf-`ka)i7(p|G(>KbyM)bi2OG5qBCUJg? zCK68SrA?OgQ_ouqC3o403k72}(SE}U{37awMr6^d8u#O05vy9PX4&z!+%5dAXdSnA zb`A+`eNqo+E4!Yy{fR5Fs1?i+g$@<{37zsucbL?I0-X;lQQHbN;5KQ~W}u!~c_L6w zp-ZC)5$n~))X4HWExi{6qTc+}dr9^7A^mAsi)bc1@ayNC5sn@Qx-gjS7X}8#s?4~G z8+h5kO~4oe&E`jCW^xRM!NZ`XizzjaXZU6^r5eeYQkmeqTMPGTCTX%yUiu9$%S-rr zT2)&x4hi$NF8ln}(GFtYm9m|xxS#R063ix)vJGIT)jq;U6uawjE(#ZsR|A1KQx=Sj zf%PSbT{?(M)<7Baqp%hOb$>RyI~w=)T6bKirj!R`B>oP7{~tpeZkQ12Q1QC70WT>2 z1X93ozVC;+Z&tHBphKvl$iQ&+h$)yK)RmG+iph%L)DYXK@Dvel2E8f^a4@v?^E4C^ zG9_p&Tt_*jv5Vu;7sTbT!V}70uD}i^6y4;zkjG9aMAVOsY+J}y)f8U8P;aAiv~nMQ+TlYj|%pU3f#JPU~RlB>pJxs zFp2a?Sxt$o;_Q-jPs(T{`NlN*R=Mz^ z#}_r`puKIO`n{V?-Ey+7v73)hNAZJUl)1wJ3pM!eO))OjKNQ-(_SRoC{>lfsw{a8E zf9HxUICy~6=Z}c14CE%a30mIbztrE#V@ps4W&AECmXQZ|kx}dDHja>4<#faAgd#+lOC#A3Pr3S#{)>2T9@~?pVeWBQ0eZaJ z+SLy3b32AI^jQy8#d{?YNyCzT92B!8#nsg&Q}#e!PQb6lj!v^LjRUCbzTJ*mI4rKC zMxfiGi(GLszzIVdj{{BKL^v#zHttI_rg%g=A@kgvMoE9UjW>eHe*aSe-C z7S%p8Hd3A!F**%C9>0DIFqXksU79<+SkS*|i(mffDFR>)ibBn=5NPLH};tbd^ynQCfg4_@xRevesg%#LDrR=s;onim1> zvjwTJy;{I@^<)Xr0gJZArwua$k^nonwDD6AQ|x|#s?eI};e7F&wM)K9FtP9OTqS4kN`n$yBHiA;BI4myw3b&sjPOS|4DxsJ)LMd zLZYm;hnLP6e2`QbscqI()$UWXpaL>h^c~PIHGB!E?M>`FGR!jeS!rJY4vc zcrk-G*;HkA;rlPLXBm*J2=cv5q~cnvxp7zhs;+2UzUL-bK@ZiT_tu*i4K}}N*K8T! zv#1YM{D}aQV_C8krIxUJT3A1L(~hF;b9<|*z`H(Fo#%Cg^4Vi;Ej%&>&T)lwr7Ujv zcW69a@5{AK_Ia6DC8*=y{dhJa67~bMZ-ZL#}J38g6bs#2R@X-xY zshSRC3>Bva>w?Zi|0dFp_J4u=zjH<>_xBgRb+W`R_0c6ryC<7JD#dUHYsAZ%ztv0(|CNhNBlBkuMyZ6|(8P}t zP7H`1!7HZ6Dn~m#jg6n*a8)^-vhbXB(G3Us+9U@V& z7O7*GCyh?b_`R?e+6u3?Eb}dOw6R<4g9KZWPL)A$6U1xknXN1;)VUZ*bg#15iV-sm z#t${`r$3{{Y?3^7qn=th=&{6qxsubK(ggcnRUm>|KK^+HV#Eyntliite(g0TErF`F zzac|JX~*_`HEKqjH&&?Y=5Z7V^gPoEKH?s$oPV(H(k^d@*xU_@8V`#+g-nhc;{9Qm z-B-8v@GuPi=F*U3)#w=8i)XssnKjM!{yCpZAGse}=V_y} z?iaM+_f_c1xi#&@@oNG)jk2lAC@_OCwA{SOcedWK>u+Lp&`d0lM0n^BNb_gcq8=Duxub5rXcGRlkNB&ISTp}c z*Xph^wEm4T*Y?G}ePi=e*9QJc`4B~1t7H|P6ij-*@Ac>o3=zf2`I z0^$Nv88^I>&=e9!XRSvSqA zCKl&>bjlA`v*^-@WVuoG2(Uy6^&^-_sq3loSW-g&xbjX9b`7@Y6D+OmC{C-zIjanN zI5Rb35MB*gTSh_17H1D1XrKMzLatl+TY6 zxuj36$R?KHG)-k3IuE*T+>8?o%-12D9PaT{RU~B)sMYIuh}YCZ4)D08-(8%K&!rH2 z!F%f`tDlMZDVEh@A1E$MA0aE}Nu%va?&y^zA2}@rBjsct(&KvMAIAWm8K7udi`Q1f zuziRHu<`2Dd*zt4sSw2~kK_pLZ@c4wt66<%4I&v12xuvJPt-bPaEirtq4YSo=%> zQ5&J~ij_r2Tz@`T@>YOJmkB z9yp>MwksVi2nal5unTtw$Ou&>#*YnkR)CRn2`I|3RJLfdm?ljm*M?o?~uKxDJ1 z5$$|zqhVLQt2fVQVm57InqWFP!fzZ zri;qmL^tjCMRwXK&Zt(_tk(n;dN!}b1bug4n5=Ww_r*pKUc5bE#g%skYK(9)escp} z@RVx7rF$b`Dv6{lohttXBr85xpegwoT}pLMdHMlgo!ELRLr}z1EKB*upFwG9wclkzp`>`=L&1VnHcfv`_jXsf zB8mUmyB&+_T-$OWAad^2irQ+Lq2e#`&1X>l@?fk$7npt8;S#V1T_b7U~0`40MGT2ps2 zDk>i9aDG;t^?0R6bL1MU)Kbenrx+Q7_xr*NzEX$$^$wP^@0#h@Q^#pm)oO)pU1YQrGecG|RvIuhM;i1+dgv^aG_FDigY1pRwgN`pJ^O(dDm&;+qFC=4uVRHELAJ7g z41nTTV8%p?XZE9NJ$7I|W1W1qOWhI?rHc17WVAX9czCR#c?`nlRpT*QWLYvB({5gB zcf4+}S>yx}0IJ(qED2WsApQ!-rXyfjrr6xG6ks0&W6*b8H_7{YAqiR^7uOzmS`eB{#Pu7e+!mY$YSL!+rCS1_(@wY zTyU5Bg9$3xL`o4dOcG6cC~Fq*yLqsm6eHt=+ev0ec~(?>ojW@W=JvsEBd4D;jUN^xjo~nG3*Ds@ncodNzQdv;X`gqp z{%x!hQ2U2aSOUg7?7-@}g)IGJgO`hXYETQ*!PgFwwafPu2ZRmNR;jc-`32k9-^+2P ztrk-zVJW&@vj6nwcTjZSdD#_9T-ijW+Ag@!a3HA}Hh{?LIL%65`>x7D3Eq(fc6k-j z5)i+p@nN5%&Ss2UeHc!pK<65#4V4U(1$poTGCpZpXiGO%L`aO>sA^42 z*74}po5^vpk#`-u@t~fx`~iBmy%Tao2Fa(C3l5=dn1k|Q6gY-Zofs?L$F-`I4KJd5C@z!ETMyV3yE=Gv|k^)DL&9?nO5O1vH$DRmm^ zV%Fy$3e1nXo0f1+e=%Yc4hMn>ryvi^760Lj?})yPg+^|de;@wSj^e=ceJ!Q6wh+tf z*`Vu@NW^{>n@hU?Wmq~Usq>^(R)MYvm`{WE@@^F`qAI2t)mnxrygwB!avpMY1shZR zH&d*C#L?`>3dF|zmDk=>V$>+rO0kYmgxza~~`{*1K!fJpObVeVtOrVRD` zXDi*13Y9Rbp-F&&$bRAxfkaD|TAf`>65-_!ZlNPp+=v(<@kCMg$OW52??-he{{nMR z-WE<(*0}6rA>GTRPstW~w-RW+$;#<+qn*IvavQWjP?!VyBr_!QMEne?WDc1M68Uy6 zH^DkN&mt~Mc8S!jDN^PZfe@GArTaC9)w=F3BUxIkJLV*~N|vAhVs9!QU&@3m5;H69fj8(r0W|;r!zN7S+M~1xM9Wa)a+~#`qw&)mI zJy$*&dL@tOb0O%d;JgC`d zlzDL(5HV<1a35y<=rkK{^{-sRKTzOBD}^X*dFfqq_T?Y$3EM9YuH?;I?chu`0uD3a zE1;Y$+C25E6D^r;`72q%H1}KgXX;RukYrL8zmq%>z3*dmq#4bD#Ae7U%)@{Mm&Kl$ znzFF^rOyL(Z8FH@n3Bnk4N48rhPFP-xyKL$KO}gkts{gJr&kMa`c`tFxrIEiv#_M~ z$@b6OF{eu2Ww=_XF-jf-fbVle+~8zb0(e&aZT+o^Gh;*SVxHY&AFB50`)tVMci11L zZ;Ov{{NDN5dy3O-Q>+4duAG2DxiYHUxc+2P0%8GU5%kE~#6<@EKF}NTPPanmT1x$v zsmsq9)TkzrTo$&sTboi&8X^g?{RCL8DBY^DZT%@SlcwC!bI6`l=fd%yMlDI>=pv<= zbm$;vUntp-7wKxuw=lKt#j86KD$Thq7$WtVFf~CW3@^MQ3B#efO+o$4$@3qRSzdNX z;Cu6<8^2B0tqK)Ro%FeOxx2P;A5CX^Ooag_T&biToF^4`*e%;t##PNnpTc|9V7iRy z_;Nn3nzntb4wMg|`pJFm@|jv2+@q@Zt|!yV0oc6Ytr#MpeP{CmgLLQ3MSy(Q&=(ho z-MptG=q@~uua8E9rS{+9{};p;8U0ek37!c8ga5wgd?twQ-WGfjXitzw|BC{&@=9v`4oLC)K)s)K8s%>HO@4m>dKL(MD-Mo~t_`{`i3 z9*!I(P(gYp!b7Z&Hy{1nTL}%<|8t=l{e#^FD{|Ct!vZh}BGx5YkhWWcpCUZ8RT|2j zV^2d%q0U{x(Pk z7B`<{YpBPhNW#I2C#q?=o3X6LK;l9SAy$hkVC1TCJL_aCP#i5+Y79mDxI(mmL`&7m zoTWYgoQv^_14nF{UZjMEzm%^Gdi29K*p3?%jT-$`pbV09Y_czTB~#{@t5q$pGo(35 z$vI7u?f)m7dM=S~74l__HwzP8O?9lE^1A&X4HlNRr$n=uYil5A)xy;BFeqa)*V9s7 zCR@@+%=><6up89FRo2Fcjfdt|Y?Z>#&Dvf%8lX=2UU zfj2vGmq!p`1nx0;p8YH^VLMlNMVM9iHvn%=dT=wveS5|AKKQF@eXxA_!s6GcCz3aY7$92QXuliZMk>x51F~#eSQ?kkTs> z@9rRjwgKtLr1xj^+1n36w|L%viqb*4b90GbjXU;ECGVHN94gK|87gtU zg)?1C$gEmp2>;=Sc+OH;Bl<+^LCq~5BN;-1%ZU& zr)8I%+QzkM)|oktf|tdz8;m2SKf=B!HA>a90TV+(UijAptg1^2YJN*}$)sQmGm}ZF z54_d8rs*2zJSOSVm<(2-?cvNzpf*^E_wMMambt@B8hL@Xyrw5Zpu{F|AwgaGqYy(w zs`fe&;Kv$Q2;Tb@u&cmj+3149|5Pad->!_4>o1kt$tmv2-y^}ZX)-}Zjo69xgRrC{ z-V#JQza{d{bbXICc3wgE6gZCrnT1{P*Jem)BF*j*jflUSvrfVbX6G-H^2YcXr^z(s zj&N@w_`D^rVAqQjE#5On`fs~X>D@;MjpdG)A?}s~J|{Fj(<^_1=AiX~9w57n)QFtN zms|U0{0n_FZkpO+Nm=C2B#FxqhuC8Kf?--hN<{-)JePAXy+>02!2A*FRHc+FwB{s! z!WGwW=+k{Udy5*+0GFLQk5sh1Z}VKw`!Pbp)S*vKxFO%hvqMp2ru)qgcGTlgbS3(( zY@p^Z1gMZPTdRHsCpDbupS-aIi8rg<-i!NVyQ><7j3&C&lOg~)aT*ET;uzlQyfWHY zr3gI|ppUWY0RKzg&2zKG0?5E4<0*KDm`Ab>OLd{zjrpR9tE-5sTBz22+=?RnJuPTL zG8*o%zp3sN)GSixd!cEdd@E&8ot!p%ud19q$@j7fmxns%mF)t>jqTb?c9t3<^trt>_{E!^Z3q3m6mk7VU`ck};DFl&4NG{LJ1fx6FyUiASM651 zue8MQvYAv*4#+o3<=+=uduCF!fa#_)>|E4;60sPfyJYQh{ly^U1L9r@ktr4`A}%W3 ztCz=0622p(%8t7{C0OR*xybKICwP_ zy6>&B;L?_jPBy&{vmWcgg)XjKh_~G2ys-ZP%Nh9rmE3E5OcZQkue`PChmHW~G8!Z5 zNAhob)78*bAP$^>u%r0c1KVPaqlM!Iio&lHi+vRcc`igm?(^>kqwr@Eu$3QvR%UhQ z5G=f&mF3u*&8|VwJDJF(1m+!rnB%g(-!;qOYpL^vn-UUZlJ!6$*lPAc8C;BTQ>(1p z1CoY~`BriHm!h0_+!lngTI-3#WTM?4_DLDS7=KyFc;w|T@NYP$r(xmcbI)sJqNBw3 zHawMJ1%>N`{D|$_S1i0$bpd7s!kJce#*u)3Zlz)P=P7R@-*4$UVhH> z==Q$wKV0y{=krb#ITHN6PC(qGF{uJe@=>|qYd17kIb{!C9y6U|>-BQY=ebFd?j16U zEz+K!Ex(J-eBcdelhwqQyZ6jgon4fh{PMqM^8XBP)6xA%^Efv(-v6Udb;n1i{ZLDz zT)F9|hdN8opZ2}Y@q1_OMsIgcAyNY2Z+W9REaj^+$REV1ojBo9OuV0SggzrKp^*Yh zc+h3?AMK6CFeq#sUpX!LH{q|HoT#~(t_{n%rrJ55n*WO`q5oTr?`^HU~xKh*s0(Dk1 zQh=2>IpMsu%n1&i!~j|^tQ)NKmQ87fkEaz~HTr>N}2pzfL<1xGgkS1_!) zQoHrL;v`83Ei9EB!BI3U8sA8JOG&~kZZW}DL%Vc729C#+-<%2OzRG{;OVgld$Oi z7tJO94ehY15(^QX&h!;J3XHKR#|Sm=fFGS!3UNj#z(vk1LEpm+i+O*u_J@F^` z%5rK@(yFIwp-!#Tv>bVk?Md3P>axr>LaD!;@Wm%NnNuQQ`&T>9OM;_2jrL*x<`X+~ z!ySHe%B>%4kPN&)#$-Q$*x567@+kD@%unyNC$aSSK5QfvRvx3+?|-Oxi%FlXSW>IA z8@*=V47Tq^B4n%Jz{|W-x8xx3y8d{$dg1Yc$$K@ytp*=5xDTa(%Oy|mc^2r3K@$_#6_`#J0`MkQdb zmyN2;KX&aCC#)UF5}mlDTp#)Rgu6-u2b~Ha9gv`jJ@Cl`jr(cVrE&9H0{J2GZ-!XC zI7@?)FzU~Xk{;?f)S{!NIT8w+_k4CuJMCs|55r3%mvgJw_o7BL$BEqEL9;Yw#8l!y+ zev$UCCqLH=tp-|HPPd6hsc;*e@ohF@v!)stwRj;Zm!(l<^UIeYTQ4s6=rQJ ztm~?1fzjUw&UK7xmlwdTJvz9)dA&^|BaTjb-PvqC${_i4SBg_sT>rej4&oKt%o2-( zTc91~DuE3p*B)_rn%9|T-;v=#@vu<6;*UuIgE$J>r;GJwk#K*`e`V(jic@ZIT~@>xJK_qEFPqLO^&l76_BHbFS3tqmVP8kklcC0}B#Q zoi~~yN(abFal`7Rq-3PD*dW7{#~DHaJYwwK_H2IOiMC;71lPsRhkWIeMgerDjz&k(kow%Zf9Wij9md zt?IIH>?JfVNk+MoOjD<7o05g%PjMIpen{HtawX4+JKks8V*kq%PTwrs@qQ&PyOS0h zQu9Y9hGb6f5=H*gIl$owg9ikchfH_IQ_O%Z%Y)}4jcsc{ zyb!Dqb;KMi;L?`DfInH{ZO(*dNCYx`xF9gF^SsvI@jE1}%KB)VEtmAcQ&7Ktyh|hr zsx#h^5TiV{$YJ6}Xu0@?rlp?zqO?K~w*CHtXBI56$yi1%4_oL&DrRYbc7_H0OLE=H zT)Xk3j(}CyEKaPFck+boU&GF5<{QWCu30UK91e&m0ckD{Rq%REMB3DYW%VI+@;xgtr|Ck80B2ZcON1+>_&4M+(WGN3HLofPT5wh{ z^HtM)x`sI*!4hBx_#9OE5O{Omei$a7)z?hau?YkVi#<_cAf=9pV729?iglEbd+||7 zJK;nxx9hN|zK1?MWZW%XQN%0XBEK^H?bi9Oy{WRNjoF;;tMbd^EE5Kmm8-w-&|P?0 z)O=?O|08Mq_lR;ZIl|}fPkp9JMhYm&BRwzb?@sxM;>o8LJ1=UE_2Qz0ND{B)A;&`( z4I*w=dwFN41|e?bWR6&gM1Z^YxulFX)LPwP9;?=8BT7y5CPP=ZdhY2@>CrZecQpfM zH`Uk7H>}oc?p3f{0=L-SkibgL z8qFMx@GJZkcfj=7%Mkj0qNCc#MqCraU18m7lrZ4*y^@f4KC8gbuPZcO@hhpOs)avf zglKTTKk@BSEOsIMzR&exVPezV+X6c*e?iEUA*ZMW?B}PqfE*!IAQXxehUi=u*qJsb!Qq{Hb!@ktQIHI&G)=*5-q}=xBO7 zE~t*LnH@bKf;2~*d|dpF=~KVCII&Ig_E2>q)!|qCSxdDsOVg7z)F(FnN4p7$9o-YV zgQ~l|4mm(j$&R|j)!_8ZQot8XDh}81=FpImsN*f~^pHL@BE z;Sy+3%d`BR)F^@5VC7^!YE*}O2``;g{O+{DEz2s|FM0lgI_bGRdCMNXe~)6T@LrY^ zE!lkP&ba@fjL`k!lwToQrzb^8%jlQug&@a;=6otaFhZKbXs3EQFnW<}U{YX2-O}x& zIh$1$>C`Dq8xWH$h=Av#$ljJivkHpBZrO0Y_j`i~Y*y=Md|(`v_3!KLR9;-vPM`xt zgskE;$uDAHZq_VoDuZ8ej$wvefvmDE%4;lm_T(s^V{D%Uv8S*lX380(5OdP!W_%tqYcpUItx#%UM0uG zD+Z7dW^T}{@M4eTdBm2F3{HK>7w5jGdSn(LwhRCPZoT_2#|LO586CT0@uX(WILV z#sKaVCujcK4GN)VhU1DQja93`wm2p)IRSaiaW5eR4-cRb7xXMQS`;Q1rN>p7OK0&(jK~hzlt>f2T}CFV#@dT z-ajQ*;WHfaV3?l6MTouSuO9c@?s%kiGrUvm3Ku*_xVru?j*ZF5#Qup9V7Ib}qsjz4 z7hx1tk+Hrj$j?_cde<==P3^V{3~C^I!Y__XE0+Y%zq9T$tWLJm5YF?T&D$Jizf5zgv#8>vZO~Wt-QzO=B&|vJ1xHiH!>rUXF}vy zvD!Wc#IODA{mp7ug*=v;rJPnZkseINT!m#t9!%U{%-PEEKv8v~(lf2mB_#t4OU*!? z{jvp1b7+!!vU3OHcPp`>@Om2;7cuV>Eja<_I{a^8L2)Meue${z!?%og6gpjMUY1h- z2QdEc|2Y4W@Y?KD;&qehh4O^^6FSetGj;q}#`kU%29d*p9uPVU`&hMKb* ze+@=z^(3mGItn-ztsGB8MKNw>5sz#0Lu7NRiLd+V25Ovr>zfCXrj$x(Fa-H$EC{M|29uWkMqDDW+W1TatF?WB$+WQ}AOu zCXao-yk_+lN!sA}1(fM|{6wQ!-Nx-`1i!CioDo|8WK#dK3UbJML_Txt3Dqhe0~aXO zRC@Ffx;o0jf6An*!b`&3e@kep7b*JN#k4`)a(*;0{OI>`i_PMLSiOx=gH7ftsAi;m z7K>XgUSLH;Rw?4Qxns#fBk=N9g@R~BV#4g-#s5#`6lV|y(&e3`wedtdI+{|aL<~h5KRAG zOJ^+eBW;b-C3MSHY4$fxk1mV)yDko7S_1(t28=I$uIh4a7}OeP zNJ*?n_KnutFN&WnH&CN#Wmc-j4rq*jmbZ9?NwQ!YfdR6SssLeGl_qc7H-9TEy?k6> zH#Tk9%Z!HP0>vJKguCfl@|w9pX9M4tDcK>hkKjV-eh%BEKCM|DRPJD%eXEpTVQ_wU zgChFGoT6LzeutT>#oF}v7ah6^!twk@uItVG>&53AZ&%YR{?e*iL(nW(&O6@tl;1uS z<3F^`u79=7M+U49|Fq3?qTgQGOLwR&yS0Y@G3o3GUY=kl^0nH%!EWkqaNBX@=xQu$`T-l8EQ#>FSv0`_)NLD=2 z)U(QckSF^l=ELb-L1J3X!Pd*n%Nyaf{bov%+?m|`Isd@y0a;;L<@=ReNf#AEFYTZV zbJR30ovhfO63GsckO}l}52h#EO7^b4k1Zl-QewC)5vc`|(OK{|%cvYkQ~WE;4fT?&gy}pNmgoYUNo|BwZ4Qq%7pG<{4-g%}0-*9DQH^3?hrPu9qksz zt9PJ0W~Hn{Zf$AnFGJSLZ}+ZU*XV#{Ok@l`7nOW=051? z7BEG?C8_G_LtS|CzlIJT{M>3;jQ9_%W!3Fpc<<7;YftEJK=`tZ+N~+0_GoZt^`S>K zSu8>_r?Uc65-f4X5i2{Hj;t>7!(C6$>1Bl11&BR3pc>o5DToKsG+?nOk60z@I*YYg zv!oL(tY&-0Gi5+|!McNnQ#4lp2z$vXPUV07P7- zayme8S&3+j)S9o@m8vDVS9;cmZ6}eZY7NzfMVH44n1-@H#J`PQyE+!t2ZgU@5RVF~ zf}?Ue9Y*Bi1UFxo zBK(#=`RfvWPzT9Z?ucMNETQc~mDQ!!e0|LAhS5ozi$--yDyfR(lcI!5-GLr*Syh4q zI;Q8tOKGhGag^JM&wSL?&571&A#{hO&z6O17SQ~~dIk!s?93&PVVG^l>ds=rVH*$H ze_BtM_-j3#@HS@RADhK2dU)wUQhd51+0L}byo`A=v~mGV0DYZ&3P&)gPiV245u}D5 z?gGq26x+409g5u!0~ZD$psHw4dG1?7nad)NDx)Hg3Yb$dK=%V0&nXbb5@g$Wwzriz zuOQ!7;A`3N)R+Kl3k!A!Fgu?`+oubSW0?k@W&Vr(%0->kGr)Z!*K-{B4PGLCLB+M2 ztK&C;p$mZb;XskB>xVi&`Q4gl!^h}{{6w>c;x}8ad#GCECq_IT&n~=76ok=)cv<$@ zUC&eCemWIasZ&`~)g+J=_m)60uQHEp2ZxCZs6=*AhN;`5i@dWhjXe8Pv>FKRietrV zO_p1Kk`FKR?8i;x6rVmel8fn8UL8kgLiSdGO%5GiX%C{m(D@=Cpb^l)UNN0Dyf=>F ztrx4LT` zn8N%S#GU`uM~rdnsyd{?xfL9;xzY)iZfd=l^oC_v>07rn=$Yu?w`_g$5rC(FYHGWy z1Q#*aeQ*#TbI#Sbx2NflT%LS0mJp$yc0DXRP$jlIKJ}XE-LLJ`wBIorwH%YDnrf6Y zqYIpit`nEmyF<(kso_b>wi*8xP{R2+y?)`#M*}NAdH-Ep)?SJSN}7?Cx{w;WGSy?v z&k%ZF#8C_{suXFmGwG@s5c5P0v2FoFwdLFZSSv`L%t<~3A!|zP=dmhJn3e&#*+Kc@ zkgM}EAdT~2hU%3^S8A1LEMX1Mz-EGyW()-V5HiW?LE{urRVbb+@-njC1qV)JL z#z3#pDL7u~MyfR4u#r$C2e%)97Z_o_)lZr$PB?hCxANd|xOzrXHmxmav9x;im{V*K zNB6dw2C%aGR5{mGx|M3H+Pf;G{CjIUyHJA9iV_Mbn~Js-SAOtLeOYZQjKb3 zqRwy5+QO+f-`e-9OXo&V-6ibjJ*G(tQ%*@18Z-aUs!sw`SuQvs;ak2UqmUrg^YXC> znEm6=I_)Fh=9h%ztSruRfJ*gZ%0-u4+qx>)A(Y=tG`AvGGw9q5QEHG8P2j3UmQ!LG0)^K0Y-01)moXMAuYyZKiyR$&`ezRs^X)R( zR!)&NC3CexTqB%rB0CxG^cKg8VQX~SXMN7mU)o-oA2`T;J$wyNECWXmmy!DqyLDk$ zNF-^CZRz$5Fk9~B77ccOK$Njs5WW;%%)u7O{qJ7mU*csK`K9&9WH12Sq5l;qodR5N zV)pKNkE!%J4Y)$;(L)&D)s7PEZ9WcBb1P_lk3z6;p&C9M1E;=e*aHz&Om&A3Q90qd z|0sehH9wws2k7`BP}MtRVESTYlJ%ln8>Tgth$dF8@Eo2VfnM<={_4g5R`zAn73n-dTgbee@s>3N`N-|<&>lYRD&xA!KR!O$A`MAKqt zEq488pk;7tpP>tJF-F^G=7-%^mijCRyoB~pg>JFs32m3;3^bmeE6Vo`$nirR0+y&v znw5oo?0(8Fv5j#u=$N$TZnDE#ql^EhDgCH^Tg~%6i^;XkH8c&+5~&04)`UZcXmsI` ze3idY?WCQ`*s`wO@JfH6{klgdF=Ym=hs|W>Btoy@THAAlqp~Wz{-j#E!*)B%>#99Z zoo09Xdf*asc_Mf^I~I}i4vKCxXFJruJccGO?@*og<4!6(bgyEj^o~fGSo6uK6Ze@Y zZ4D;M)c4;S<^SUH|ND<&&0o_|vs>kL^S^P%*ef{Vj#)?BZ6<9W`PVa2^I#@C4r;!T zRdBvD*(bS(#EqYtaP@a8un%gYS$nCZ%zpd2MOmOFm0kdy@Kfs+bWYQIRewx&FjWTr z8(B218c69#;H=1d%}&6SR~0bPg9Pej7pLMnK2s;(f%Kb29+X5P>0{oByu?{5r8CSsS68UQ-S!zg7NL?pIvkN1CEM74o7At81C; zniYhn+*!dx+NmODBG)0ZVIbXRyYh?6UJf(Y9th77`3qIKmpspta$y9Eww4p{Jm933 zc#JgKu1Wvp={*%#I!}IblM8#UwJiLN<7FCx1@*c~njAhtKVOgdYG(dbSapW@IHs2l zjYL&~cwn?zCVkHyS&cdAMPB8fZoi~#nayAhm{!RjIRfOLH{;kaM>ffcFx z7QrRj{V>@Cdm4kqDHmgAaYPXX?~$MycKVF6*}S66-iO3T=Nxt`-9(@`%d110fY5n5{5H`5`l&4p>&9kk{Q5%eP`Qxm*)u$k1 zAiWL{Quy4_#)S&mYJPbfbf{r^WqF1He_1e>;J!WgwQ_(|451{cWLTc0QjSB_LHN+XypXmDnPa=u zQ(i8GcCSi(7Y!E;jk(f0TM7fSEIzk;(8@Lb?xCks{&Y8E^)0s-$&W1j?kbei>ztOM z$u%Te$RCFkCoeu^++Mau*wK)@OZ{y1 z-p_1SL`N&)?j(M-!5236tZ;uZ*I{uFJG!t!=QSgJNYqe(Ds*f|y3P?bc*q6zCm@_@ zyi9!CTRsI!e3F!xNvH-MdA=x{?=cS`sjJj+DqG8ZO8klslGYv4eg!FUt|@w zy(iwcpE<6$IU)$*>tE`1F31s$3Uno6`>D+=ypGA1tBGeWO65QY%sgW_kX`-2mrpCB z6to#wgH0!MZn1SA_rM*{*sT@Htesg`*B>k-9NG}IACQ~!IQSJmL-gQ8nM%BK&Ca!6tz?`+r=(R549v&}Qun19d)AfjMdz$5%KM8HyLrvO)7dW+H zPQhDI*``PURg$0ce%I0XBa_<9>7#KrIz4Iq*_r1VJRn1pf6)Lhzb?obOS|>C=kY@e zjGPqiUk~dr{N0nCdrC`AefZzsxQzF;cvCD7CZ>97H--k^*qcI-QMdPA-_X2@m$7{B z$R#7O&y~}H6Uh-@6H8PIi?TikT#J5w@}}R~yQCG*i}YEKb#4PlWnzb0ke}UX#NF}p z;p)5w$#W7>XG>0+W<@D2!m<8ulqiOedQng%yZRSL6|c~0NYK28q52g z=EH>8pxcakS3apn z-cW1En}$~oYhAYD!FY|1_AkfJh-%HD#>l31f$8s1us=s~|Ki-oJOm?w3{HLz7epxq z7~(tVWCceGFhwvh(6>#J?Z^4aBARC@m=kL_Rp}U$W&Yv4Ks~kjEh%^y zbd%-z^!DD@=M?qW$>1*SxM#SiN33iyk;d*#PM6brx%(!!j%C~Cb)IZ)HTd;)F3E_T zNP^3$nxBulB&Le#tXgBKcx9s>U-|LFPq4cPuVQ1ds z1kZn(7vCZra*>0=eV-pmo#N!+w5@THyN`a}A3GL!-Y&GcuAqZY@?4cushm41CgHQ| zcv?583SK!g)D}m1>-lQ=aP27W;Zd>3-!)6(Rhp2?J7~wpp7T&v>`C?t>WAZ;{n99-H85VK@Hh^vL@0^$%UOwcDB z?A=9@q#>e5wB_P}WQ@N$VQP~4`0|^jw(Yi|E_$w>#{jQxELv^{=b(S~K(pF{tJQpD z=3mum1wS`^li*DCH5eXYULbGh;@NwXj6;Z5E~0ArNqvLz;5)}Xfw$S`Z4;K+4&MGC zVS>T$h~gy3cCDzo#IbZv4)opx&3+9C9v&u*d4_j!o%~HL;r#y^A}X>doSp>mQ$CC|}w3q+_X8@V5PI7o@rI%(roj zQ9eFqoG&EWH1^{WWs>N)UQEsMH!kAf9KyCMy+)o^1s+ruIXJT5Iv7zxkIRH2z_4JJ zd6w4Qa#)2MpJhCz=0&v4fH_~j;kn~ydU*P~k>TNm!lxHI4PKJR#z&^4!}}RvE~iicxMo-BYiH7lGP9DcRm)>SStuw-|a z(G1HAM>5g?bKSFIl8v!-;@a7&x{1wLMn*?9a|g79HFr=$O~QU-a_QUU+C0doq^DnA z7|S-Z@oVC6&5AvSm~e|^m$?5Qw%$6f3BG$D7ewij&Vi_O45Va~2&gnjBVEF1DJf~B zb94wIAk9eWoV1|C=o$^92aNd6`+lC^?|Gij{d(<>)gRkC&biKYu5(T*6?K-fL!UBd zeeiHDeQs^s4Iser_FPozV|u((EdVrDBg8*EbH0gVVcE51XB)#@0d^LjJBNM*_DhK!vz6;^K>Yjny|J@In)lc(fj z(b4z%3KIfTMdQoEg{qOYZ0tqH7OYF7o%p8uF$>DFaSK@q? z4K3vkM2&DEJspaGs_#!AbE`gCf5fiP7T^sX`mw9amFNtusF&v2WvEP;ArMi z9s^03>qk1d9S#xv21Q|33uIN+rVOlBq+bNVLotE64Tz0eDp}J8Af;i=a!8;ascZMh z$FkgC`0RY&enxo0-+OeuXPlL4319DN5`dE;aSr4eQhL%tW zxt-mh+U6I~`<^SUntC4bLV`ME1!-|u9#0}QDswYc@>_LF3f;}_`5&>szmY2NF7c$cdLNiu2GayMNmE zZY7zZ-vSwageNV~XF;R};yswxz zm$v;6@=U4v9U7ITKTsi-A0hI|J59n$%~AT$OXnVrN9i?$_asy@jdQ4Hkn3QDI ztjEqv{@a5=ii>QXtC>U(agYL;pm%;%*XOr?9|nI=IIPGLlkkhI%w(qZGYpeSoiL9MCKNBMZ- zYNtHZK0-P@+IxHZ-aW5U6m*(9H7Mn>iS@Q427}j*onPi>4$dw@3X`K)Jczv#5?mpWm5ivG+RRsyhdqb)@Sq*5% z=1KoENo1|h{`YwW1qHoj&qz|D`FL7SUWzZL20lx&duK%c-)H#;Y>5=ErUDYVUz1X&+?`pmraMPokBewJLdJkY^lOFZ$`yJ)_ zH;SxhpXIYJ^h=qW$G%N1$k3>fQzA(#VD5XOxL6A&6^8v1^Fb?crrcNlyRr4ZjRPu7 zdmbh`9#ku^5+Gl%G#0OBEBi|S=H_orUf2o=e^1&omF-0{Tgu-S`S|EyEl-ocxO}{u zF}wtFGx~<69I^4tyO8p9(Mc zTMiv1KAbBIX1D|FwIj+gtvl?@CLf(xfGHszT@0gwKjMNYsjqe{^;Y7M4f%TE=D@VT zAC*mAj4|Iowg#{tSjepSDHo*DjMe8n6;q3gQvD~~_7V?++Y%WHt^c_5j>3oWL9mju zffN|etWU=?Y2W)UT5V1Du#9??lJb(Viw#&zs%)w?b#f($`66KN zu9}E+Kj;zJ9a7cT0+L>-haIO3yy2-4y!WZUIcKf265IyG&|}HjWhF z<3QugG{-n*LhV|w7jTV^(>10QV_kpxv-NU3<#o~}aDg&~#^8G0s(PHB>a;TY{s`_! zFvk~`9)qo8=D%^Zf+8CP`_;E@j#{!JU3Nw}VHRO1R$*Uj%0;S)o{Rt?8`WmhZrm?H zfsG;Imy?E0!D12?0at};@G<)$pwOpr``2Y{?KzE*in86n&ybBiH~fa*Z3jr+6r1FV zbQ`P{PvX@^&HhEY(7-+$$oDsF_S09p`AqXZLyqDe{C$Wo{Jd!cPqHzSED7|JXnwS^ zPp;@N0K$tWY=iOJ0plq74BI|W=dntOj0>i5m6l1~B71(o3@=J1{sX}=#rU`xWioAr)t!`T zgUj!m%<#2x| zV%{U~UAwbozoWSGcFs@{Z zh(zG~)bSQMf6W(Mnp;&>%O6qo2{DaJFF$>4`rT7j+&gzK-8nms13I;%jh<|14@PP6 z!UMV4{pf~NZ@{L4!XW@H~+ zM{gtwgbE5MMK9taC^yFT7X}$^j3ZG|pcPO`XR}PM<9w^tubioHCcl(_x~HXN@ho-P z`(G|u{~#`!Pj`Y#vb0|$d=ld3nwke^t6k#&tVhVOWQJlOa-=0Q$81^)qeH(sUs;vAlFGidOPbb&+^o!p{KN7wnjgm)a^85C- zoh-K5>oTX+bMwtcSq&P<=VduW^mLrzpRB6ll%d=p)Uj~UGj3~zL(t_NsEKDF7s^e} z5mv!I#Ar^rr_93*<|*aimtGgA@ct#5&CZYEn?S2`=>-83+?DkMbyLmRqA(<WsBRUmUgwZDs$Ac@K`$5?NXgF(!Q5Sktd@`Y_W#Hv2BrLzx{jj z*Su6WsZpWhFTUE9se7PY*Q2j1v(fn!bYG>Qq}3M6Pz+IqxUUNh>mtiQgFUjt~o;lJ1_znx4o1tmOW1a zQQ5B>XpnL^JIbn~rx0ncwS{M6VlTU*x`6Xq$-@i&nRfpxPV`k2W>kw_wJNZXaZ8$~WcHE#$r zCgiA1z3%GMSKDj~80Q|aVesO&eHAcm3@#TR+z%jw4tsnT-~dKG3g1m+Srb@ff4F*WkrVeh;$CE#qa z$8q-LMIQ~hm~})7wnm056;L>P{M5%Iu^+Ig+UTGKv6D#xZ}#tI_9s7wm+UQ6 zCdN#)&ije1KPGfc(6NZBNsBw}6GsJurJ9M&<=k%(I;|HZc%R&dc3-0)rwU{(>`SAB zuQL-rN}F8ivG!iC<%Dat(f_*_fa5hPAX1>p@+9KX5?)TOswrEKYwN2^Pib zCvQcTGgmt4b%r<8nF$r;Kl8BG?NZoE(YuG7u~t`JM&%+cl3;0ovv2RxwJxP8YxZXq zqY5M>6ItD=rMuJ|G%A$idj&(L*FCAf2EY4>NfrDgiVOt17=XwI@2p7hAe4f1fwSB+ z2u-0xQgO6Leb`pU|K^r3)FTlc7QUvONB3`|KXK)>EjIZ_YnBwO-$a3H+uBolJDbFl zmm{KO!JdLm2g#yCtFVJTssdV$u$WH$`!RH;VbTqO=9Cr#yx?EOZn$T73TR&d&Y&c} zpcR{YY0N|!hM!nfe(HNaMH0WAKkv6bI3@$PnmfV=+DP&ns_M`q@Ohx3yK)g->X0eV zWMUw|pjg0xL;M=d_MW5J{fk92ty~c+Qf^H=QwG6n!wg2W3G%bMtySA*rP#;<d?=w!^5#&E=)&z8Tc(`t7DrH-LcTyKFtuOf90Hi3m+(*Op|-{e`sPE zocjBi?J-=H`bP8TqB(2ey*Nn2(rQEZ-|a1XhmtCt_s8xjcM2vw=adU}j^KV0T~3$*PV37rcw#_rn$0 zd8KK3+qNX^+RwoMuDW-o)?7SrUno**CIrXJDV_e5+;_jr{x`>vx$>n<5GUhiEhOZM zGV~kS%dbyh4(8@v^l8MxA|iHC7-}El5=PmFi!pJMYzx%C--0&$_9Cucg>Vttc}pL) z3`t93W>t&3C72NCDe%7#@_$#QQnYTpE9|-8AORyWC=5kn#YPedv0XbK*lb|5Lh_ zNE)+Y-2tQ%cmLvPig9S;5jy_iguP77>-S6Fx|IsIN9k+EX!Mu><*)+A!JPLkF934A zucFQMCTs-0&^kQOp4+Tgz@;&;?OtCYc@q5QT&WjSEHn#@WZ^R(o#u##V`FcRn%}Az z`IGplvX}|bOmX4eFOm`QrSpRIp~S2G#6s}yea0U=XeC7!T`sEX?3zvj!)gaV*&HAE z%zMGk&-^b#&P-D%u+Aq?mYpcxl{~;1O~16gogU`JMO&G5yG%aDR$~6nG+}Ap5wm5j>pIJY4dt8i2^&lv&2Dj z4+CBazoTTyz@_mmhUTWl4g9gNnW7Js?B6-25%rd5I6P?PcuI@29xAl zWQ8Uh&_8xZY1l-VgA|1qAn#)=)ACiS)pQ7ya>A)t3tP4t=i=rvncE8Oy#O>*#Cz&< zt7R(Ahb4)vL~}IoXPc{C*bt4LW~B9KE!dTGidXxeGJxf>A8%0=kN(Bw-NhGpIS>;# z=O{oU@**1Qm#V*)Gu8M*ZY!L1?orTMpg~qQ#nkZ~zR@j8Y+{o1eibnu|9IPOh3rQb zJk&s!9#`^@MbdUbcoW|Duol?KvTnG={OQ|9Ez~;k_MAJz-H#|gS-Dt9wBXHDjgh*1 zXr{@Z@=NCD3wqd7MS}|kPidd2OOi$ca zP_m6Z3bK~V7WW=kZ8^^$Zuv0N2eh!Wq#QI|!7qr2ZU8(6`Tl4^eA+Vz5v#8fF!7b{ z5tcGMyzcbN>`EWKzwMvfgL)kb%{z)wySM`3h?1yF74XDg97>51yisXc-2QQ64<7w3 zyCaj8FP5xuzx~elF6#1x&7>y0WFF9l&NczxdvwY`)LhGpjeYUsLgF(}bzH(Y5Fvr* zmy;^gd__3Gt@_Y;fB`j$D@rd+3beC!T*xr36VR>ZcIqN}^F{MeBjz7-{O@rh(KX_NNu-ssuNr&t?Ro{XtZXZMD(O^f5GDdBo14C+G(^JxN!Z{-I-~qYKGF`e$EG%eyt`4 zFyV2sLq9hdNb}fJ;?5Aa$k9(W$Xh>$Z$iiyR4DGC zWfv2++_TK6J4g!T*uJF1?wLfT;wq#ng27tWiZ`>={GF)LsDV3PukcXVHw&u4uoyl8 zwL$7_l>jkLvZgzq=CZVVtk$Sm{fCA}(MMjsE54k{e1Y&zBUzBq=?As|h4U}Osyz1o z{#Z?`TRq2V(iRBB=D;Fb@M{8>WS>ZDMzDL!@h}$|`~Y{HW~R=R?Gz{x4cA~h{nV0^ zGOJU;F1h-yw#JFi>mnjz?9JJ}v^7(;hONbM;{p5NjtUSGgjM{^6BR0^7fdih_YN#~ zUWIdHZ^qdt9-*O}by$atByZjwIMomONjMSy4q~{q%3Vo0%wsM-4W@ zNsa0dEU0PrFg(i$FFPBez{3oE3w=&`w>&H1<16CAczzp+7wV#)ba*`DX+xdgXCxmm zMJTI1chrB;LG5xn@_-@eR-MR3U0bZTKjq46>ko)tO~COLEo)t8I@m7o~Bo*<8+un$+>s zXRdG-&cEggpmU`H(TlZq$01B${+WsF?-R4`KJ=thT4WLibuJN_v;k6Dk)upKoS-sF z53gKtsb6j#;-DWm?T=#D)M)P;-h-BJpMGyg7NaRi*1KzFZWs|4%acJ%6SvA^PU>8< z1%BXBjvTm1-`dhz46zv=28YkOO8Cu@-t4F9c6q*HQUIf=!9qjb zc2%vBtKqO`9+b#*gQ2~vu{HOs5Bea^+xYR3WVRyMYq-{Jk2AJmBBEdRMK z>WyFrKXc0C{H~etmWhRvV(p6W^nrdHAF8xpcTpg77b_Eq^;1Mx1IZlrTXq!C2vU%# z^vz`4?&&WkbhwZGS;9=dpQ+`@LKD1h4jE|ZAvf6Yce#Pxg1d!+cr%`=hlOCzJ zTi42qY+KDCR_gI9)7Cj!HmdM+xDc7M0KtLPc&7xEWWRabBYM9Ng~c_nv&}o!yt7(P zoN#qgLg#}h)Dm$E6Y8pZv;ZD7_H(B`)2~ezFCaU^^=>tJH!4?Oa1SOQVUX3?vs3FW zQO#ep$&TWgLY+Tcdslb=FmCa!n1_xx9L#$yW)TIQY^*i0CeF;Lm_0=;W#Zl3T$a1a zKl|HA|Ce$nkoB>8Yyt5*n&05RBt3yquRdbwIU??q&8nBoR+Z_VcHWX8IcIic!2!C2 z!NrXuANjN{s{_gV_da)rw*9WJ_+x_bcswQP^^k?HxgS8gpi@I5VIiHu=*!bOtDUFMT( zuRNA)(-jKqwWT;|q4Oo5i~;-yczyH>x5t8bx#t^M%AL*&+xR- z@~koDRBSXW9afLG%zzyFrlQySEY|7{d#5utHU-Y65Mi3|55X+5$QQ#Gkk{)?@D<;| zK?9?;rz)2U+m}KnPTQvzmA=RPl}B~&vyLo0C_}nKF>d>~=$i+ee8fm@=Yx}>lkhW& z|B+;2UIwy0%)9Mn%FitP`q%ANpomxki!TkyJl(T0L>!Qp-n1%~h23!__~7>W8)Xmz zT#}qv6`Y0V%R^9gKB(w}`4htb~!}LRa)&)yf%^WP$>)wL97}Ba3 z=eB;?7`q+8-p7J8M20ki2_)IWtZ^9*i)9k>X(v0$%S`>asrwT0x2DteqI z4bf}4^utC8Nz7aH@R;b|WuZO|NIh%M)=!JiUjKukuByW{T+w$bH!czV`_ml-mY^XX zfsp8$7$qNf0k$F!bnA31+jwh)v;BiF97OU5!q2O+LMb^{eji%&aI=C!W7;SK_1=h= z?TFCMg^{jXd4o)>gF79XNc{?YXS~}0)!X)VOlT=pW~M#UGkj|$ph-@u)b(B{=R}m` z^*CL~9WkFa&4nAOpFZ(1r_PX9wWB-kv+y2{*Y{rWnf`2vL{RLIws&KwBW=ByJDgVqgm2&H+&osPs_q%ebd~?GZ3b= zXhA<;8ZD6Sp~Kgv9n45MNe zdKrBL*KF+Ta2LV!WF?gX!*7Dg3L)d*pq5oiW3M#-_nIBmRft1HW1HPftm%i3J{_mX zXI232HjuYi89VX}I$Vf*EZk3PMy#eG+-5)N9b@5yR>E$0DI8`4`<|GD!H$orP*Q8e zmQr7j;@+wGEQgbwcSxO_e>wXnFTg^8mO&$@Fo9;HcGOi08Uo-Hv9_Z^O~ ztPdB=__upivM311f6PK391_Z1$P#R*`aVfBI&se5^3{{_&gH;X+s&$-x}KD-?nm8P zWP0t2+wXp#qwe#ZRZ^0H&8Oc<-|n1;x_!PUiV4fy%W=P5j29u z<{g;a6c=r<0kUj-bOuH#<91HJt0*gb?Kx!O-sX#6K>Iz7T#nHzt6?gEEWN3HW?0Wh zvNCdJY)-*Ek_{Das0t}@c^vVfIS>JKiH^O@NAsJPB>`JRjKF6ZN)CA7ca!Y15K(qP zu{)7^zPCxF418=a$6}pzUhXy&B`Qrn$o-MFd33Frwi!10W|z0!7&=(_3T2^h_;B{g zoZ>BC%e%+6G{$MK$pQm$#>M7TM`t{?cRCFD3jPCJcRYEhZrFYsIQODeQ|nK5#x#j+ z$+HYMzB&#$JMEPCq~aT$6)=)+I=psBCwJNf0W57jET6n+4S2_U--=wriY(*PgO?#M zp8r@TdSv`{zL(>fAmVJ_+@P?GT;O%k12@!JC-0T1;kBJ8sl(G6C!)8yuJWeoCa&Bw5E`wlU(zA$%rG76 zEfHVKw8BY!J!jdfvwD>2z?2oQV|jLaY2v+z#ha@7A<=Kh~=?scv`nO^g4^s~AZLrnT>p-K0 zbpu{}z%Kge##4TPEYCbQrw4%;>q3UsEY8jGSep-fUocV+9v#68sg&^Q58I0OALP;+ zH1@$&cq25~CNyU2Ech7@Z@BnvWb}D(EgZ0rAMDIbMp>LMXq3M-MFnp7-WTKJ(rb&S zGL!44Y#RUtF*zVMV(WwwT)vp5ZS%y9SD2imJ+&61(W#&mtMp16nd``xc zl26fs%}dpgJ`>xUy5H`czVLRhSU&mdZ%K=sj9&BarAFV0qSht3r0vIG(@qOIrB?rG zxn~1qE^=cW!*9OD{dwE@72ZjhG~X+Vk>+tcQ-KJIK*pJa+}u=$tmo>@t5Q&!93ga+ zbj_26`JgS_(Bee%4$kTA=Y#_X0#&I9R`WPQD3~VXP6dcOKj41KhWsdpptrY}wbbPp z_1qSW*VlP-qgEq&1wRfzE0oy*#+w{{!NeK+_Q&gW%V0I}3dG*916U~PrHHH2H3ztH zaNd6-umq3F-?nFD?#?!M!b?0A|UO_v`>UCfJg2}RAw^{tu2wQisOf+IsTW9JVAp9Xyqy(fR8^Td=f9S zkG8e`P|$o?9Uc4~g#0>>|En6M!yA(=b!YyWEdS?A^%Pk5wFW!wa!|7bF2SY>u(GqT z@bZhRxS_Ti@j-fZZ(1v>VzFLNLbHe>|Ik1K)Js;=nX~~`%DyPcyv)>2rojRkx#|d5 zC@+7URbz}4s9(#h0Kl~>KDZ(1rwp<|XjqFoZNIW3oKG7Nv22RIJe6)#taCbO|$I zLfRc6GxFcJ+p6FxG%I*cuT4L~v5bBk%^AzxM#AOfXsmJb7NNBJS^0{$p+Ww7!CM5c zi7xrw8Mn)iy&O944jzD@f2S^1hNy4?%iEDn2j>N{y?;t_+y6;&3-1?v_&doRD${;IX�fb8HL7X(V(B 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 tra8bhc0olRCV>C| literal 0 HcmV?d00001 diff --git a/github_images/share-screenshot.png b/github_images/share-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..c22f14aee3e3df93dac31ffeba6ddc35bba93aef GIT binary patch literal 64154 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%0A@dVE`9GI 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

  • ZnZUFQ+{`u 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