diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2024-09-17 14:03:35 +0200 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2024-09-17 14:14:01 +0200 |
commit | 67fb4da40f71e266b52ea83a6ec31f6f76e4e3c7 (patch) | |
tree | 45a0b16216c770a545b846d0bbaf452adabd9175 | |
parent | 1647a3b93a4f271df4812d66e5cfc9428ab8d852 (diff) | |
download | nextcloud-server-67fb4da40f71e266b52ea83a6ec31f6f76e4e3c7.tar.gz nextcloud-server-67fb4da40f71e266b52ea83a6ec31f6f76e4e3c7.zip |
chore: update RepairMimeTypes migrationfeat/zst
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r-- | lib/private/Repair.php | 9 | ||||
-rw-r--r-- | lib/private/Repair/RepairMimeTypes.php | 102 | ||||
-rw-r--r-- | tests/data/integritycheck/mimetypeListModified/core/js/mimetypelist.js | 41 | ||||
-rw-r--r-- | tests/data/integritycheck/mimetypeListModified/core/signature.json | 4 |
4 files changed, 103 insertions, 53 deletions
diff --git a/lib/private/Repair.php b/lib/private/Repair.php index 630ee249209..9d079aabd29 100644 --- a/lib/private/Repair.php +++ b/lib/private/Repair.php @@ -60,6 +60,9 @@ use OCP\AppFramework\QueryException; use OCP\AppFramework\Utility\ITimeFactory; use OCP\Collaboration\Resources\IManager; use OCP\EventDispatcher\IEventDispatcher; +use OCP\IAppConfig; +use OCP\IConfig; +use OCP\IDBConnection; use OCP\Migration\IOutput; use OCP\Migration\IRepairStep; use OCP\Notification\IManager as INotificationManager; @@ -201,7 +204,11 @@ class Repair implements IOutput { public static function getExpensiveRepairSteps() { return [ new OldGroupMembershipShares(\OC::$server->getDatabaseConnection(), \OC::$server->getGroupManager()), - new RepairMimeTypes(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()), + new RepairMimeTypes( + \OCP\Server::get(IConfig::class), + \OCP\Server::get(IAppConfig::class), + \OCP\Server::get(IDBConnection::class) + ), \OC::$server->get(ValidatePhoneNumber::class), \OC::$server->get(DeleteSchedulingObjects::class), ]; diff --git a/lib/private/Repair/RepairMimeTypes.php b/lib/private/Repair/RepairMimeTypes.php index 6932299dc4a..30ef11ab190 100644 --- a/lib/private/Repair/RepairMimeTypes.php +++ b/lib/private/Repair/RepairMimeTypes.php @@ -10,6 +10,7 @@ use OC\Migration\NullOutput; use OCP\DB\Exception; use OCP\DB\IResult; use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\IAppConfig; use OCP\IConfig; use OCP\IDBConnection; use OCP\Migration\IOutput; @@ -24,6 +25,7 @@ class RepairMimeTypes implements IRepairStep { public function __construct( protected IConfig $config, + protected IAppConfig $appConfig, protected IDBConnection $connection ) { } @@ -91,29 +93,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception - */ - private function introduceExcalidrawType(): IResult|int|null { - $updatedMimetypes = [ - 'excalidraw' => 'application/vnd.excalidraw+json', - ]; - - return $this->updateMimetypes($updatedMimetypes); - } - - /** - * @throws Exception - */ - private function introduceAsciidocType(): IResult|int|null { - $updatedMimetypes = [ - 'adoc' => 'text/asciidoc', - 'asciidoc' => 'text/asciidoc', - ]; - - return $this->updateMimetypes($updatedMimetypes); - } - - /** - * @throws Exception + * @since 12.0.0.14 */ private function introduceImageTypes(): IResult|int|null { $updatedMimetypes = [ @@ -126,6 +106,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 12.0.0.13 */ private function introduceWindowsProgramTypes(): IResult|int|null { $updatedMimetypes = [ @@ -139,6 +120,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 13.0.0.0 */ private function introduceLocationTypes(): IResult|int|null { $updatedMimetypes = [ @@ -153,6 +135,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 13.0.0.3 */ private function introduceInternetShortcutTypes(): IResult|int|null { $updatedMimetypes = [ @@ -165,6 +148,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 13.0.0.6 */ private function introduceStreamingTypes(): IResult|int|null { $updatedMimetypes = [ @@ -178,6 +162,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 14.0.0.8 */ private function introduceVisioTypes(): IResult|int|null { $updatedMimetypes = [ @@ -194,6 +179,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 14.0.0.10 */ private function introduceComicbookTypes(): IResult|int|null { $updatedMimetypes = [ @@ -210,6 +196,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 20.0.0.5 */ private function introduceOpenDocumentTemplates(): IResult|int|null { $updatedMimetypes = [ @@ -224,6 +211,19 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 21.0.0.7 + */ + private function introduceOrgModeType(): IResult|int|null { + $updatedMimetypes = [ + 'org' => 'text/org' + ]; + + return $this->updateMimetypes($updatedMimetypes); + } + + /** + * @throws Exception + * @since 23.0.0.2 */ private function introduceFlatOpenDocumentType(): IResult|int|null { $updatedMimetypes = [ @@ -238,10 +238,12 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 25.0.0.2 */ - private function introduceOrgModeType(): IResult|int|null { + private function introduceOnlyofficeFormType(): IResult|int|null { $updatedMimetypes = [ - 'org' => 'text/org' + 'oform' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.oform', + 'docxf' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.docxf', ]; return $this->updateMimetypes($updatedMimetypes); @@ -249,11 +251,12 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 26.0.0.1 */ - private function introduceOnlyofficeFormType(): IResult|int|null { + private function introduceAsciidocType(): IResult|int|null { $updatedMimetypes = [ - 'oform' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.oform', - 'docxf' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.docxf', + 'adoc' => 'text/asciidoc', + 'asciidoc' => 'text/asciidoc', ]; return $this->updateMimetypes($updatedMimetypes); @@ -261,6 +264,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 28.0.0.5 */ private function introduceEnhancedMetafileFormatType(): IResult|int|null { $updatedMimetypes = [ @@ -272,6 +276,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 29.0.0.2 */ private function introduceEmlAndMsgFormatType(): IResult|int|null { $updatedMimetypes = [ @@ -284,6 +289,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 29.0.0.6 */ private function introduceAacAudioType(): IResult|int|null { $updatedMimetypes = [ @@ -295,6 +301,7 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 29.0.10 */ private function introduceReStructuredTextFormatType(): IResult|int|null { $updatedMimetypes = [ @@ -306,6 +313,33 @@ class RepairMimeTypes implements IRepairStep { /** * @throws Exception + * @since 30.0.0 + */ + private function introduceExcalidrawType(): IResult|int|null { + $updatedMimetypes = [ + 'excalidraw' => 'application/vnd.excalidraw+json', + ]; + + return $this->updateMimetypes($updatedMimetypes); + } + + + /** + * @throws Exception + * @since 31.0.0 + */ + private function introduceZstType(): IResult|int|null { + $updatedMimetypes = [ + 'zst' => 'application/zstd', + ]; + + return $this->updateMimetypes($updatedMimetypes); + } + + /** + * Check if there are any migrations available + * + * @throws Exception */ public function migrationsAvailable(): bool { $this->dryRun = true; @@ -314,11 +348,14 @@ class RepairMimeTypes implements IRepairStep { return $this->changeCount > 0; } + /** + * Get the current mimetype version + */ private function getMimeTypeVersion(): string { $serverVersion = $this->config->getSystemValueString('version', '0.0.0'); // 29.0.0.10 is the last version with a mimetype migration before it was moved to a separate version number if (version_compare($serverVersion, '29.0.0.10', '>')) { - return $this->config->getAppValue('files', 'mimetype_version', '29.0.0.10'); + return $this->appConfig->getValueString('files', 'mimetype_version', '29.0.0.10'); } return $serverVersion; @@ -335,6 +372,7 @@ class RepairMimeTypes implements IRepairStep { // NOTE TO DEVELOPERS: when adding new mime types, please make sure to // add a version comparison to avoid doing it every time + // PLEASE ALSO KEEP THE LIST SORTED BY VERSION NUMBER if (version_compare($mimeTypeVersion, '12.0.0.14', '<') && $this->introduceImageTypes()) { $out->info('Fixed image mime types'); @@ -404,8 +442,12 @@ class RepairMimeTypes implements IRepairStep { $out->info('Fixed Excalidraw mime type'); } + if (version_compare($mimeTypeVersion, '31.0.0.0', '<') && $this->introduceZstType()) { + $out->info('Fixed zst mime type'); + } + if (!$this->dryRun) { - $this->config->setAppValue('files', 'mimetype_version', $serverVersion); + $this->appConfig->setValueString('files', 'mimetype_version', $serverVersion); } } } diff --git a/tests/data/integritycheck/mimetypeListModified/core/js/mimetypelist.js b/tests/data/integritycheck/mimetypeListModified/core/js/mimetypelist.js index 25448c5b576..8abdedbe667 100644 --- a/tests/data/integritycheck/mimetypeListModified/core/js/mimetypelist.js +++ b/tests/data/integritycheck/mimetypeListModified/core/js/mimetypelist.js @@ -15,8 +15,10 @@ OC.MimeTypeList={ "application/gpx+xml": "location", "application/gzip": "package/x-generic", "application/illustrator": "image", + "application/internet-shortcut": "link", "application/javascript": "text/code", "application/json": "text/code", + "application/km": "mindmap", "application/msaccess": "file", "application/msexcel": "x-office/spreadsheet", "application/msonenote": "x-office/document", @@ -27,21 +29,21 @@ OC.MimeTypeList={ "application/rss+xml": "application/xml", "application/vnd.android.package-archive": "package/x-generic", "application/vnd.excalidraw+json": "whiteboard", - "application/vnd.lotus-wordpro": "x-office/document", "application/vnd.garmin.tcx+xml": "location", "application/vnd.google-earth.kml+xml": "location", "application/vnd.google-earth.kmz": "location", - "application/vnd.ms-excel": "x-office/spreadsheet", + "application/vnd.lotus-wordpro": "x-office/document", "application/vnd.ms-excel.addin.macroEnabled.12": "x-office/spreadsheet", "application/vnd.ms-excel.sheet.binary.macroEnabled.12": "x-office/spreadsheet", "application/vnd.ms-excel.sheet.macroEnabled.12": "x-office/spreadsheet", "application/vnd.ms-excel.template.macroEnabled.12": "x-office/spreadsheet", + "application/vnd.ms-excel": "x-office/spreadsheet", "application/vnd.ms-fontobject": "font", - "application/vnd.ms-powerpoint": "x-office/presentation", "application/vnd.ms-powerpoint.addin.macroEnabled.12": "x-office/presentation", "application/vnd.ms-powerpoint.presentation.macroEnabled.12": "x-office/presentation", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12": "x-office/presentation", "application/vnd.ms-powerpoint.template.macroEnabled.12": "x-office/presentation", + "application/vnd.ms-powerpoint": "x-office/presentation", "application/vnd.ms-visio.drawing.macroEnabled.12": "application/vnd.visio", "application/vnd.ms-visio.drawing": "application/vnd.visio", "application/vnd.ms-visio.stencil.macroEnabled.12": "application/vnd.visio", @@ -50,29 +52,32 @@ OC.MimeTypeList={ "application/vnd.ms-visio.template": "application/vnd.visio", "application/vnd.ms-word.document.macroEnabled.12": "x-office/document", "application/vnd.ms-word.template.macroEnabled.12": "x-office/document", - "application/vnd.oasis.opendocument.presentation": "x-office/presentation", + "application/vnd.oasis.opendocument.graphics-flat-xml": "x-office/drawing", + "application/vnd.oasis.opendocument.graphics-template": "x-office/drawing", + "application/vnd.oasis.opendocument.graphics": "x-office/drawing", + "application/vnd.oasis.opendocument.presentation-flat-xml": "x-office/presentation", "application/vnd.oasis.opendocument.presentation-template": "x-office/presentation", - "application/vnd.oasis.opendocument.spreadsheet": "x-office/spreadsheet", + "application/vnd.oasis.opendocument.presentation": "x-office/presentation", + "application/vnd.oasis.opendocument.spreadsheet-flat-xml": "x-office/spreadsheet", "application/vnd.oasis.opendocument.spreadsheet-template": "x-office/spreadsheet", - "application/vnd.oasis.opendocument.text": "x-office/document", + "application/vnd.oasis.opendocument.spreadsheet": "x-office/spreadsheet", + "application/vnd.oasis.opendocument.text-flat-xml": "x-office/document", "application/vnd.oasis.opendocument.text-master": "x-office/document", "application/vnd.oasis.opendocument.text-template": "x-office/document", - "application/vnd.oasis.opendocument.graphics": "x-office/drawing", - "application/vnd.oasis.opendocument.graphics-template": "x-office/drawing", "application/vnd.oasis.opendocument.text-web": "x-office/document", - "application/vnd.oasis.opendocument.text-flat-xml": "x-office/document", - "application/vnd.oasis.opendocument.spreadsheet-flat-xml": "x-office/spreadsheet", - "application/vnd.oasis.opendocument.graphics-flat-xml": "x-office/drawing", - "application/vnd.oasis.opendocument.presentation-flat-xml": "x-office/presentation", + "application/vnd.oasis.opendocument.text": "x-office/document", "application/vnd.openxmlformats-officedocument.presentationml.presentation": "x-office/presentation", "application/vnd.openxmlformats-officedocument.presentationml.slideshow": "x-office/presentation", "application/vnd.openxmlformats-officedocument.presentationml.template": "x-office/presentation", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "x-office/spreadsheet", "application/vnd.openxmlformats-officedocument.spreadsheetml.template": "x-office/spreadsheet", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.docxf": "x-office/form-template", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.oform": "x-office/form", "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "x-office/document", "application/vnd.openxmlformats-officedocument.wordprocessingml.template": "x-office/document", "application/vnd.visio": "x-office/document", "application/vnd.wordperfect": "x-office/document", + "application/vnd.xmind.workbook": "mindmap", "application/x-7z-compressed": "package/x-generic", "application/x-bzip2": "package/x-generic", "application/x-cbr": "text", @@ -81,6 +86,7 @@ OC.MimeTypeList={ "application/x-deb": "package/x-generic", "application/x-fictionbook+xml": "text", "application/x-font": "font", + "application/x-freemind": "mindmap", "application/x-gimp": "image", "application/x-gzip": "application/gzip", "application/x-iwork-keynote-sffkey": "x-office/presentation", @@ -96,8 +102,11 @@ OC.MimeTypeList={ "application/xml": "text/html", "application/yaml": "text/code", "application/zip": "package/x-generic", + "application/zstd": "package/x-generic", "database": "file", "httpd/unix-directory": "dir", + "image/targa": "image/tga", + "image/x-emf": "image/emf", "text/css": "text/code", "text/csv": "x-office/spreadsheet", "text/html": "text/code", @@ -110,14 +119,6 @@ OC.MimeTypeList={ "text/x-rst": "text", "text/x-shellscript": "text/code", "web": "text/code", - "application/internet-shortcut": "link", - "application/km": "mindmap", - "application/x-freemind": "mindmap", - "application/vnd.xmind.workbook": "mindmap", - "image/targa": "image/tga", - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.oform": "x-office/form", - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.docxf": "x-office/form-template", - "image/x-emf": "image/emf", "my-custom/mimetype": "custom" }, files: [ diff --git a/tests/data/integritycheck/mimetypeListModified/core/signature.json b/tests/data/integritycheck/mimetypeListModified/core/signature.json index bea0a2647b8..92f8fceb817 100644 --- a/tests/data/integritycheck/mimetypeListModified/core/signature.json +++ b/tests/data/integritycheck/mimetypeListModified/core/signature.json @@ -1,7 +1,7 @@ { "hashes": { - "core\/js\/mimetypelist.js": "507bb72181a0213598eaa03dbb6f7290b367e06b706aa15873a921c491980a13165c9858924d9b4b478b8444e92bb5e4169f5f971d184b77a63c3fcc5b3acf59" + "core\/js\/mimetypelist.js": "00127c5b224ade81dbea7909013ba4aad1752206d9e47011250d2c2e488993e9ae6da590d8520fbaad0627959986d5cdfefcd74bd01d422f10e2e63ec5355c8f" }, - "signature": "qGQx9Sy0ynziPeir6H7dIsTdSjjOrLEEbB+sf00sWpmQ\/izXW9Zd7jeTKgMHfrew+d+NyyR3O5V1m\/FkMtmp61LM1l22VpyuiRctFOs1qSxXmDRu27LLIP3d2yayLqpROOEdJSMgDoQU1yGV05bnK0u2yy3srxZa2XUjTaDRT5M+xRBPuc1CtEQ1azp07Xk7N2FnoGjc3\/TusodpHovlKwUg5uSX5nC5da7KJWJ9luM4B\/etl717Hrauw5xIgi+AryuIjhahaYvnIJcM0yZYkZ7KIqOa6Y\/SZFRC0+kB+KJdu3+ZJ4RTTnxmVVcQ4DN2fEozjr6ZDZGaRY+TnF8UaPopba5xDipHq8A4Qm0DWewOG9G4CFdJViGHYFTmIMWealugQLY6ucDcaYaw+kqa66Es7VX0Use0WJFymlleDchqaRWd1n18rEBjEBmDc8s4pQeXZRu8nCxngYUyKrImKWdLpTnxgThqFTukT\/zkaP6klXWydfISK07aKlil7ha84Ud83g71SwIsq3x4y7BSeXyZGRdkzImqlSwgz60u1ndG6m\/cG3Es01v6ao26H4Rs28deLQfBMR6xdKZn272Dsm\/shyXlj4ElZ4jtxqJk5EfBC0Jv6xOsfEIxgdJ7igU52CYrQVhdKQf+4O8XnRth0qvFBTv7btiRCPZflsQ+mRs=", + "signature": "jZ9+ptmgPdxYfvbp2qkafRn3cGwiCBVjUeYReiewhnnLS\/fp8ojCnCoFxjq+lf2f7xhqVTCodNwpr9\/BViZtcrCC\/GblRdVSP3Zqw9SaIxJiNHJJt5m8HdN3v3DVmN3AS\/A37fomGn2eZ+r7nkOLO\/w\/U8bhduHhpjQUmFwHDTrCzu5o6Im3huIzEPISnzVp59FATpyOjqOw5RXekJnBNfYu\/5ZP+C8ceYDvZ93ocP3uO+X6Mi8g+kyHSNXoACB6X03d80NWVoEsaK0Jw7imvN7Ir4SwvuxLcqeJDPKWGAgCXm\/7pDA4WcRoX1M2b7Rj2A2zegL49FNrtc+97ch3+9UrzXPLt1spf4ohcRSPSsq7\/TM4v81Jlo4FLPV3uGQx\/j4tti2uwVcwEr4vLwdopqHjFPOHBkhVLdgcePQBJAnt\/gVIANxM+yruGOTMB2KG9zyl343OixdNHVXeGtz69WCUypcDuSWlM+qi0gG9OTlyDu+lElarFviLviz57oTpX13xeHCJC5cApjurWMRUGgW5ehBeyd6Wc5vKKRuoZir570p3nbiKzYPNNBByDgpG4mWVegn\/u6zPbiwnr7YHQHKJCyij0OR2OqtR\/6xMeIvGAGyCeGj4m1DttafSoPXdaQqDAaiLbRO9vsb46TgWbH9vu+p9w7Hk+Y5gufvH22A=", "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIEvjCCAqagAwIBAgIUc\/0FxYrsgSs9rDxp03EJmbjN0NwwDQYJKoZIhvcNAQEF\r\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTEw\r\nMzIxMDMzM1oXDTE2MTEwMzIxMDMzM1owDzENMAsGA1UEAwwEY29yZTCCAiIwDQYJ\r\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBALb6EgHpkAqZbO5vRO8XSh7G7XGWHw5s\r\niOf4RwPXR6SE9bWZEm\/b72SfWk\/\/J6AbrD8WiOzBuT\/ODy6k5T1arEdHO+Pux0W1\r\nMxYJJI4kH74KKgMpC0SB0Rt+8WrMqV1r3hhJ46df6Xr\/xolP3oD+eLbShPcblhdS\r\nVtkZEkoev8Sh6L2wDCeHDyPxzvj1w2dTdGVO9Kztn0xIlyfEBakqvBWtcxyi3Ln0\r\nklnxlMx3tPDUE4kqvpia9qNiB1AN2PV93eNr5\/2riAzIssMFSCarWCx0AKYb54+d\r\nxLpcYFyqPJ0ydBCkF78DD45RCZet6PNYkdzgbqlUWEGGomkuDoJbBg4wzgzO0D77\r\nH87KFhYW8tKFFvF1V3AHl\/sFQ9tDHaxM9Y0pZ2jPp\/ccdiqnmdkBxBDqsiRvHvVB\r\nCn6qpb4vWGFC7vHOBfYspmEL1zLlKXZv3ezMZEZw7O9ZvUP3VO\/wAtd2vUW8UFiq\r\ns2v1QnNLN6jNh51obcwmrBvWhJy9vQIdtIjQbDxqWTHh1zUSrw9wrlklCBZ\/zrM0\r\ni8nfCFwTxWRxp3H9KoECzO\/zS5R5KIS7s3\/wq\/w9T2Ie4rcecgXwDizwnn0C\/aKc\r\nbDIjujpL1s9HO05pcD\/V3wKcPZ1izymBkmMyIbL52iRVN5FTVHeZdXPpFuq+CTQJ\r\nQ238lC+A\/KOVAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAGoKTnh8RfJV4sQItVC2\r\nAvfJagkrIqZ3iiQTUBQGTKBsTnAqE1H7QgUSV9vSd+8rgvHkyZsRjmtyR1e3A6Ji\r\noNCXUbExC\/0iCPUqdHZIVb+Lc\/vWuv4ByFMybGPydgtLoEUX2ZrKFWmcgZFDUSRd\r\n9Uj26vtUhCC4bU4jgu6hIrR9IuxOBLQUxGTRZyAcXvj7obqRAEZwFAKQgFpfpqTb\r\nH+kjcbZSaAlLVSF7vBc1syyI8RGYbqpwvtREqJtl5IEIwe6huEqJ3zPnlP2th\/55\r\ncf3Fovj6JJgbb9XFxrdnsOsDOu\/tpnaRWlvv5ib4+SzG5wWFT5UUEo4Wg2STQiiX\r\nuVSRQxK1LE1yg84bs3NZk9FSQh4B8vZVuRr5FaJsZZkwlFlhRO\/\/+TJtXRbyNgsf\r\noMRZGi8DLGU2SGEAHcRH\/QZHq\/XDUWVzdxrSBYcy7GSpT7UDVzGv1rEJUrn5veP1\r\n0KmauAqtiIaYRm4f6YBsn0INcZxzIPZ0p8qFtVZBPeHhvQtvOt0iXI\/XUxEWOa2F\r\nK2EqhErgMK\/N07U1JJJay5tYZRtvkGq46oP\/5kQG8hYST0MDK6VihJoPpvCmAm4E\r\npEYKQ96x6A4EH9Y9mZlYozH\/eqmxPbTK8n89\/p7Ydun4rI+B2iiLnY8REWWy6+UQ\r\nV204fGUkJqW5CrKy3P3XvY9X\r\n-----END CERTIFICATE-----" }
\ No newline at end of file |