From 8b841ccc512e3257dcd80fd8362909248945688b Mon Sep 17 00:00:00 2001 From: Simon Rupf Date: Sat, 12 Jun 2021 20:40:17 +0200 Subject: [PATCH 001/108] Reduce batch size for photo processing to reduce memory usage --- src/Database/PostUpdate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Database/PostUpdate.php b/src/Database/PostUpdate.php index 3e2627b9a..ab72848ff 100644 --- a/src/Database/PostUpdate.php +++ b/src/Database/PostUpdate.php @@ -740,7 +740,7 @@ class PostUpdate Logger::info('Start', ['rest' => DBA::count('photo', $condition)]); $rows = 0; - $photos = DBA::select('photo', [], $condition, ['limit' => 10000]); + $photos = DBA::select('photo', [], $condition, ['limit' => 100]); if (DBA::errorNo() != 0) { Logger::error('Database error', ['no' => DBA::errorNo(), 'message' => DBA::errorMessage()]); From 968122337d4006173f22adb765d20471af213a4a Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 4 Jul 2021 20:54:24 +0200 Subject: [PATCH 002/108] pump version to :wq2021.09-dev --- CHANGELOG | 2 ++ VERSION | 2 +- boot.php | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index aac93543e..e262dc93b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +Version 2021.09 (unreleased) + Version 2021.07 (2021-07-04) Friendica Core Updates to the translation DE, EN-GB, HU, IT, JA [translation teams] diff --git a/VERSION b/VERSION index 9eb200ca4..da1db37da 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2021.07 +2021.09-dev diff --git a/boot.php b/boot.php index 47f626629..e94b82fa3 100644 --- a/boot.php +++ b/boot.php @@ -38,7 +38,7 @@ use Friendica\Util\DateTimeFormat; define('FRIENDICA_PLATFORM', 'Friendica'); define('FRIENDICA_CODENAME', 'Siberian Iris'); -define('FRIENDICA_VERSION', '2021.07'); +define('FRIENDICA_VERSION', '2021.09-dev'); define('DFRN_PROTOCOL_VERSION', '2.23'); define('NEW_TABLE_STRUCTURE_VERSION', 1288); From dfc1b1e7a5a9631f1d2dce58b7b8e885ef2911e1 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 4 Jul 2021 19:58:02 +0000 Subject: [PATCH 003/108] Allow search for only locally published contacts --- src/Model/Contact.php | 3 +- view/lang/C/messages.po | 474 ++++++++++++++++++++-------------------- 2 files changed, 239 insertions(+), 238 deletions(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index c18c678eb..1679fc25c 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -2989,7 +2989,8 @@ class Contact $search .= '%'; $results = DBA::p("SELECT * FROM `contact` - WHERE NOT `unsearchable` AND `network` IN (?, ?, ?, ?) AND + WHERE (NOT `unsearchable` OR `nurl` IN (SELECT `nurl` FROM `owner-view` where `publish` OR `net-publish`)) + AND `network` IN (?, ?, ?, ?) AND NOT `failed` AND `uid` = ? AND (`addr` LIKE ? OR `name` LIKE ? OR `nick` LIKE ?) $extra_sql ORDER BY `nurl` DESC LIMIT 1000", diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 2ba0ba2e9..8983dbcef 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 2021.06-rc\n" +"Project-Id-Version: 2021.09-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-27 23:18-0400\n" +"POT-Creation-Date: 2021-07-04 19:56+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -37,9 +37,9 @@ msgstr[1] "" msgid "Monthly posting limit of %d post reached. The post was rejected." msgstr "" -#: include/api.php:4527 mod/photos.php:107 mod/photos.php:211 -#: mod/photos.php:639 mod/photos.php:1043 mod/photos.php:1060 -#: mod/photos.php:1609 src/Model/User.php:1105 src/Model/User.php:1113 +#: include/api.php:4527 mod/photos.php:106 mod/photos.php:210 +#: mod/photos.php:638 mod/photos.php:1042 mod/photos.php:1059 +#: mod/photos.php:1608 src/Model/User.php:1105 src/Model/User.php:1113 #: src/Model/User.php:1121 src/Module/Settings/Profile/Photo/Crop.php:98 #: src/Module/Settings/Profile/Photo/Crop.php:114 #: src/Module/Settings/Profile/Photo/Crop.php:130 @@ -49,178 +49,178 @@ msgstr "" msgid "Profile Photos" msgstr "" -#: include/conversation.php:195 +#: include/conversation.php:196 #, php-format msgid "%1$s poked %2$s" msgstr "" -#: include/conversation.php:227 src/Model/Item.php:2609 +#: include/conversation.php:228 src/Model/Item.php:2609 msgid "event" msgstr "" -#: include/conversation.php:230 include/conversation.php:239 mod/tagger.php:90 +#: include/conversation.php:231 include/conversation.php:240 mod/tagger.php:90 msgid "status" msgstr "" -#: include/conversation.php:235 mod/tagger.php:90 src/Model/Item.php:2611 +#: include/conversation.php:236 mod/tagger.php:90 src/Model/Item.php:2611 msgid "photo" msgstr "" -#: include/conversation.php:249 mod/tagger.php:123 +#: include/conversation.php:250 mod/tagger.php:123 #, php-format msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" -#: include/conversation.php:564 mod/photos.php:1470 src/Object/Post.php:226 +#: include/conversation.php:565 mod/photos.php:1469 src/Object/Post.php:226 msgid "Select" msgstr "" -#: include/conversation.php:565 mod/photos.php:1471 mod/settings.php:636 +#: include/conversation.php:566 mod/photos.php:1470 mod/settings.php:636 #: src/Module/Admin/Users/Active.php:139 src/Module/Admin/Users/Blocked.php:140 #: src/Module/Admin/Users/Index.php:153 src/Module/Contact.php:894 #: src/Module/Contact.php:1198 msgid "Delete" msgstr "" -#: include/conversation.php:600 src/Object/Post.php:453 src/Object/Post.php:454 +#: include/conversation.php:601 src/Object/Post.php:453 src/Object/Post.php:454 #, php-format msgid "View %s's profile @ %s" msgstr "" -#: include/conversation.php:613 src/Object/Post.php:441 +#: include/conversation.php:614 src/Object/Post.php:441 msgid "Categories:" msgstr "" -#: include/conversation.php:614 src/Object/Post.php:442 +#: include/conversation.php:615 src/Object/Post.php:442 msgid "Filed under:" msgstr "" -#: include/conversation.php:621 src/Object/Post.php:467 +#: include/conversation.php:622 src/Object/Post.php:467 #, php-format msgid "%s from %s" msgstr "" -#: include/conversation.php:636 +#: include/conversation.php:637 msgid "View in context" msgstr "" -#: include/conversation.php:638 include/conversation.php:1222 +#: include/conversation.php:639 include/conversation.php:1223 #: mod/editpost.php:104 mod/message.php:204 mod/message.php:374 -#: mod/photos.php:1536 mod/wallmessage.php:155 src/Module/Item/Compose.php:159 +#: mod/photos.php:1535 mod/wallmessage.php:155 src/Module/Item/Compose.php:159 #: src/Object/Post.php:501 msgid "Please wait" msgstr "" -#: include/conversation.php:702 +#: include/conversation.php:703 msgid "remove" msgstr "" -#: include/conversation.php:707 +#: include/conversation.php:708 msgid "Delete Selected Items" msgstr "" -#: include/conversation.php:742 include/conversation.php:745 -#: include/conversation.php:748 include/conversation.php:751 +#: include/conversation.php:743 include/conversation.php:746 +#: include/conversation.php:749 include/conversation.php:752 #, php-format msgid "You had been addressed (%s)." msgstr "" -#: include/conversation.php:754 +#: include/conversation.php:755 #, php-format msgid "You are following %s." msgstr "" -#: include/conversation.php:757 +#: include/conversation.php:758 msgid "Tagged" msgstr "" -#: include/conversation.php:770 include/conversation.php:1114 -#: include/conversation.php:1152 +#: include/conversation.php:771 include/conversation.php:1115 +#: include/conversation.php:1153 #, php-format msgid "%s reshared this." msgstr "" -#: include/conversation.php:772 +#: include/conversation.php:773 msgid "Reshared" msgstr "" -#: include/conversation.php:772 +#: include/conversation.php:773 #, php-format msgid "Reshared by %s <%s>" msgstr "" -#: include/conversation.php:775 +#: include/conversation.php:776 #, php-format msgid "%s is participating in this thread." msgstr "" -#: include/conversation.php:778 +#: include/conversation.php:779 msgid "Stored" msgstr "" -#: include/conversation.php:781 +#: include/conversation.php:782 msgid "Global" msgstr "" -#: include/conversation.php:784 +#: include/conversation.php:785 msgid "Relayed" msgstr "" -#: include/conversation.php:784 +#: include/conversation.php:785 #, php-format msgid "Relayed by %s <%s>" msgstr "" -#: include/conversation.php:787 +#: include/conversation.php:788 msgid "Fetched" msgstr "" -#: include/conversation.php:787 +#: include/conversation.php:788 #, php-format msgid "Fetched because of %s <%s>" msgstr "" -#: include/conversation.php:947 view/theme/frio/theme.php:323 +#: include/conversation.php:948 view/theme/frio/theme.php:323 msgid "Follow Thread" msgstr "" -#: include/conversation.php:948 src/Model/Contact.php:1002 +#: include/conversation.php:949 src/Model/Contact.php:1002 msgid "View Status" msgstr "" -#: include/conversation.php:949 include/conversation.php:971 +#: include/conversation.php:950 include/conversation.php:972 #: src/Model/Contact.php:928 src/Model/Contact.php:994 #: src/Model/Contact.php:1003 src/Module/Directory.php:166 #: src/Module/Settings/Profile/Index.php:224 msgid "View Profile" msgstr "" -#: include/conversation.php:950 src/Model/Contact.php:1004 +#: include/conversation.php:951 src/Model/Contact.php:1004 msgid "View Photos" msgstr "" -#: include/conversation.php:951 src/Model/Contact.php:995 +#: include/conversation.php:952 src/Model/Contact.php:995 #: src/Model/Contact.php:1005 msgid "Network Posts" msgstr "" -#: include/conversation.php:952 src/Model/Contact.php:996 +#: include/conversation.php:953 src/Model/Contact.php:996 #: src/Model/Contact.php:1006 msgid "View Contact" msgstr "" -#: include/conversation.php:953 src/Model/Contact.php:1008 +#: include/conversation.php:954 src/Model/Contact.php:1008 msgid "Send PM" msgstr "" -#: include/conversation.php:954 src/Module/Admin/Blocklist/Contact.php:84 +#: include/conversation.php:955 src/Module/Admin/Blocklist/Contact.php:84 #: src/Module/Admin/Users/Active.php:140 src/Module/Admin/Users/Index.php:154 #: src/Module/Contact.php:633 src/Module/Contact.php:891 #: src/Module/Contact.php:1173 msgid "Block" msgstr "" -#: include/conversation.php:955 src/Module/Contact.php:634 +#: include/conversation.php:956 src/Module/Contact.php:634 #: src/Module/Contact.php:892 src/Module/Contact.php:1181 #: src/Module/Notifications/Introductions.php:113 #: src/Module/Notifications/Introductions.php:191 @@ -228,273 +228,273 @@ msgstr "" msgid "Ignore" msgstr "" -#: include/conversation.php:959 src/Object/Post.php:428 +#: include/conversation.php:960 src/Object/Post.php:428 msgid "Languages" msgstr "" -#: include/conversation.php:963 src/Model/Contact.php:1009 +#: include/conversation.php:964 src/Model/Contact.php:1009 msgid "Poke" msgstr "" -#: include/conversation.php:968 mod/follow.php:146 src/Content/Widget.php:76 +#: include/conversation.php:969 mod/follow.php:146 src/Content/Widget.php:76 #: src/Model/Contact.php:997 src/Model/Contact.php:1010 #: view/theme/vier/theme.php:172 msgid "Connect/Follow" msgstr "" -#: include/conversation.php:1099 +#: include/conversation.php:1100 #, php-format msgid "%s likes this." msgstr "" -#: include/conversation.php:1102 +#: include/conversation.php:1103 #, php-format msgid "%s doesn't like this." msgstr "" -#: include/conversation.php:1105 +#: include/conversation.php:1106 #, php-format msgid "%s attends." msgstr "" -#: include/conversation.php:1108 +#: include/conversation.php:1109 #, php-format msgid "%s doesn't attend." msgstr "" -#: include/conversation.php:1111 +#: include/conversation.php:1112 #, php-format msgid "%s attends maybe." msgstr "" -#: include/conversation.php:1120 +#: include/conversation.php:1121 msgid "and" msgstr "" -#: include/conversation.php:1123 +#: include/conversation.php:1124 #, php-format msgid "and %d other people" msgstr "" -#: include/conversation.php:1131 +#: include/conversation.php:1132 #, php-format msgid "%2$d people like this" msgstr "" -#: include/conversation.php:1132 +#: include/conversation.php:1133 #, php-format msgid "%s like this." msgstr "" -#: include/conversation.php:1135 +#: include/conversation.php:1136 #, php-format msgid "%2$d people don't like this" msgstr "" -#: include/conversation.php:1136 +#: include/conversation.php:1137 #, php-format msgid "%s don't like this." msgstr "" -#: include/conversation.php:1139 +#: include/conversation.php:1140 #, php-format msgid "%2$d people attend" msgstr "" -#: include/conversation.php:1140 +#: include/conversation.php:1141 #, php-format msgid "%s attend." msgstr "" -#: include/conversation.php:1143 +#: include/conversation.php:1144 #, php-format msgid "%2$d people don't attend" msgstr "" -#: include/conversation.php:1144 +#: include/conversation.php:1145 #, php-format msgid "%s don't attend." msgstr "" -#: include/conversation.php:1147 +#: include/conversation.php:1148 #, php-format msgid "%2$d people attend maybe" msgstr "" -#: include/conversation.php:1148 +#: include/conversation.php:1149 #, php-format msgid "%s attend maybe." msgstr "" -#: include/conversation.php:1151 +#: include/conversation.php:1152 #, php-format msgid "%2$d people reshared this" msgstr "" -#: include/conversation.php:1181 +#: include/conversation.php:1182 msgid "Visible to everybody" msgstr "" -#: include/conversation.php:1182 src/Module/Item/Compose.php:153 +#: include/conversation.php:1183 src/Module/Item/Compose.php:153 #: src/Object/Post.php:970 msgid "Please enter a image/video/audio/webpage URL:" msgstr "" -#: include/conversation.php:1183 +#: include/conversation.php:1184 msgid "Tag term:" msgstr "" -#: include/conversation.php:1184 src/Module/Filer/SaveTag.php:69 +#: include/conversation.php:1185 src/Module/Filer/SaveTag.php:69 msgid "Save to Folder:" msgstr "" -#: include/conversation.php:1185 +#: include/conversation.php:1186 msgid "Where are you right now?" msgstr "" -#: include/conversation.php:1186 +#: include/conversation.php:1187 msgid "Delete item(s)?" msgstr "" -#: include/conversation.php:1196 +#: include/conversation.php:1197 msgid "New Post" msgstr "" -#: include/conversation.php:1199 +#: include/conversation.php:1200 msgid "Share" msgstr "" -#: include/conversation.php:1200 mod/editpost.php:89 mod/photos.php:1382 +#: include/conversation.php:1201 mod/editpost.php:89 mod/photos.php:1381 #: src/Module/Contact/Poke.php:154 src/Object/Post.php:961 msgid "Loading..." msgstr "" -#: include/conversation.php:1201 mod/editpost.php:90 mod/message.php:202 +#: include/conversation.php:1202 mod/editpost.php:90 mod/message.php:202 #: mod/message.php:371 mod/wallmessage.php:153 msgid "Upload photo" msgstr "" -#: include/conversation.php:1202 mod/editpost.php:91 +#: include/conversation.php:1203 mod/editpost.php:91 msgid "upload photo" msgstr "" -#: include/conversation.php:1203 mod/editpost.php:92 +#: include/conversation.php:1204 mod/editpost.php:92 msgid "Attach file" msgstr "" -#: include/conversation.php:1204 mod/editpost.php:93 +#: include/conversation.php:1205 mod/editpost.php:93 msgid "attach file" msgstr "" -#: include/conversation.php:1205 src/Module/Item/Compose.php:145 +#: include/conversation.php:1206 src/Module/Item/Compose.php:145 #: src/Object/Post.php:962 msgid "Bold" msgstr "" -#: include/conversation.php:1206 src/Module/Item/Compose.php:146 +#: include/conversation.php:1207 src/Module/Item/Compose.php:146 #: src/Object/Post.php:963 msgid "Italic" msgstr "" -#: include/conversation.php:1207 src/Module/Item/Compose.php:147 +#: include/conversation.php:1208 src/Module/Item/Compose.php:147 #: src/Object/Post.php:964 msgid "Underline" msgstr "" -#: include/conversation.php:1208 src/Module/Item/Compose.php:148 +#: include/conversation.php:1209 src/Module/Item/Compose.php:148 #: src/Object/Post.php:965 msgid "Quote" msgstr "" -#: include/conversation.php:1209 src/Module/Item/Compose.php:149 +#: include/conversation.php:1210 src/Module/Item/Compose.php:149 #: src/Object/Post.php:966 msgid "Code" msgstr "" -#: include/conversation.php:1210 src/Module/Item/Compose.php:150 +#: include/conversation.php:1211 src/Module/Item/Compose.php:150 #: src/Object/Post.php:967 msgid "Image" msgstr "" -#: include/conversation.php:1211 src/Module/Item/Compose.php:151 +#: include/conversation.php:1212 src/Module/Item/Compose.php:151 #: src/Object/Post.php:968 msgid "Link" msgstr "" -#: include/conversation.php:1212 src/Module/Item/Compose.php:152 +#: include/conversation.php:1213 src/Module/Item/Compose.php:152 #: src/Object/Post.php:969 msgid "Link or Media" msgstr "" -#: include/conversation.php:1213 +#: include/conversation.php:1214 msgid "Video" msgstr "" -#: include/conversation.php:1214 mod/editpost.php:100 +#: include/conversation.php:1215 mod/editpost.php:100 #: src/Module/Item/Compose.php:155 msgid "Set your location" msgstr "" -#: include/conversation.php:1215 mod/editpost.php:101 +#: include/conversation.php:1216 mod/editpost.php:101 msgid "set location" msgstr "" -#: include/conversation.php:1216 mod/editpost.php:102 +#: include/conversation.php:1217 mod/editpost.php:102 msgid "Clear browser location" msgstr "" -#: include/conversation.php:1217 mod/editpost.php:103 +#: include/conversation.php:1218 mod/editpost.php:103 msgid "clear location" msgstr "" -#: include/conversation.php:1219 mod/editpost.php:117 +#: include/conversation.php:1220 mod/editpost.php:117 #: src/Module/Item/Compose.php:160 msgid "Set title" msgstr "" -#: include/conversation.php:1221 mod/editpost.php:119 +#: include/conversation.php:1222 mod/editpost.php:119 #: src/Module/Item/Compose.php:161 msgid "Categories (comma-separated list)" msgstr "" -#: include/conversation.php:1223 mod/editpost.php:105 +#: include/conversation.php:1224 mod/editpost.php:105 msgid "Permission settings" msgstr "" -#: include/conversation.php:1224 mod/editpost.php:134 mod/events.php:578 -#: mod/photos.php:969 mod/photos.php:1335 +#: include/conversation.php:1225 mod/editpost.php:134 mod/events.php:578 +#: mod/photos.php:968 mod/photos.php:1334 msgid "Permissions" msgstr "" -#: include/conversation.php:1233 mod/editpost.php:114 +#: include/conversation.php:1234 mod/editpost.php:114 msgid "Public post" msgstr "" -#: include/conversation.php:1237 mod/editpost.php:125 mod/events.php:573 -#: mod/photos.php:1381 mod/photos.php:1438 mod/photos.php:1513 +#: include/conversation.php:1238 mod/editpost.php:125 mod/events.php:573 +#: mod/photos.php:1380 mod/photos.php:1437 mod/photos.php:1512 #: src/Module/Item/Compose.php:154 src/Object/Post.php:971 msgid "Preview" msgstr "" -#: include/conversation.php:1241 mod/dfrn_request.php:642 mod/editpost.php:128 +#: include/conversation.php:1242 mod/dfrn_request.php:642 mod/editpost.php:128 #: mod/fbrowser.php:105 mod/fbrowser.php:134 mod/follow.php:152 -#: mod/photos.php:1037 mod/photos.php:1143 mod/tagrm.php:37 mod/tagrm.php:129 +#: mod/photos.php:1036 mod/photos.php:1142 mod/tagrm.php:37 mod/tagrm.php:129 #: mod/unfollow.php:100 src/Module/Contact.php:467 #: src/Module/RemoteFollow.php:110 msgid "Cancel" msgstr "" -#: include/conversation.php:1248 mod/editpost.php:132 src/Model/Profile.php:524 +#: include/conversation.php:1249 mod/editpost.php:132 src/Model/Profile.php:510 #: src/Module/Contact.php:344 msgid "Message" msgstr "" -#: include/conversation.php:1249 mod/editpost.php:133 +#: include/conversation.php:1250 mod/editpost.php:133 #: src/Module/Settings/TwoFactor/Trusted.php:101 msgid "Browser" msgstr "" -#: include/conversation.php:1251 mod/editpost.php:136 +#: include/conversation.php:1252 mod/editpost.php:136 msgid "Open Compose page" msgstr "" @@ -826,8 +826,8 @@ msgstr "" #: mod/api.php:52 mod/api.php:57 mod/dfrn_confirm.php:78 mod/editpost.php:37 #: mod/events.php:231 mod/follow.php:55 mod/follow.php:135 mod/item.php:185 #: mod/item.php:190 mod/item.php:917 mod/message.php:69 mod/message.php:112 -#: mod/notes.php:44 mod/ostatus_subscribe.php:30 mod/photos.php:176 -#: mod/photos.php:922 mod/repair_ostatus.php:31 mod/settings.php:47 +#: mod/notes.php:44 mod/ostatus_subscribe.php:30 mod/photos.php:175 +#: mod/photos.php:921 mod/repair_ostatus.php:31 mod/settings.php:47 #: mod/settings.php:65 mod/settings.php:475 mod/suggest.php:34 #: mod/uimport.php:32 mod/unfollow.php:35 mod/unfollow.php:50 #: mod/unfollow.php:82 mod/wall_attach.php:78 mod/wall_attach.php:81 @@ -897,7 +897,7 @@ msgstr "" #: mod/cal.php:72 mod/cal.php:133 src/Module/HoverCard.php:53 #: src/Module/Profile/Common.php:41 src/Module/Profile/Common.php:53 #: src/Module/Profile/Contacts.php:40 src/Module/Profile/Contacts.php:51 -#: src/Module/Profile/Status.php:58 src/Module/Register.php:258 +#: src/Module/Profile/Status.php:58 src/Module/Register.php:254 msgid "User not found." msgstr "" @@ -1115,11 +1115,11 @@ msgstr "" msgid "Invalid profile URL." msgstr "" -#: mod/dfrn_request.php:355 src/Model/Contact.php:2233 +#: mod/dfrn_request.php:355 src/Model/Contact.php:2297 msgid "Disallowed profile URL." msgstr "" -#: mod/dfrn_request.php:361 src/Model/Contact.php:2238 +#: mod/dfrn_request.php:361 src/Model/Contact.php:2302 #: src/Module/Friendica.php:80 msgid "Blocked domain" msgstr "" @@ -1166,8 +1166,8 @@ msgstr "" msgid "Please confirm your introduction/connection request to %s." msgstr "" -#: mod/dfrn_request.php:600 mod/display.php:179 mod/photos.php:836 -#: mod/videos.php:129 src/Module/Conversation/Community.php:188 +#: mod/dfrn_request.php:600 mod/display.php:179 mod/photos.php:835 +#: mod/videos.php:128 src/Module/Conversation/Community.php:188 #: src/Module/Debug/Probe.php:39 src/Module/Debug/WebFinger.php:38 #: src/Module/Directory.php:49 src/Module/Search/Index.php:50 #: src/Module/Search/Index.php:55 @@ -1329,7 +1329,7 @@ msgid "Description:" msgstr "" #: mod/events.php:563 src/Model/Event.php:84 src/Model/Event.php:111 -#: src/Model/Event.php:472 src/Model/Event.php:959 src/Model/Profile.php:434 +#: src/Model/Event.php:472 src/Model/Event.php:959 src/Model/Profile.php:420 #: src/Module/Contact.php:654 src/Module/Directory.php:156 #: src/Module/Notifications/Introductions.php:172 #: src/Module/Profile/Profile.php:190 @@ -1345,8 +1345,8 @@ msgid "Share this event" msgstr "" #: mod/events.php:575 mod/message.php:205 mod/message.php:373 -#: mod/photos.php:951 mod/photos.php:1054 mod/photos.php:1339 -#: mod/photos.php:1380 mod/photos.php:1437 mod/photos.php:1512 +#: mod/photos.php:950 mod/photos.php:1053 mod/photos.php:1338 +#: mod/photos.php:1379 mod/photos.php:1436 mod/photos.php:1511 #: src/Module/Admin/Item/Source.php:65 src/Module/Contact.php:612 #: src/Module/Contact/Advanced.php:132 src/Module/Contact/Poke.php:155 #: src/Module/Debug/ActivityPubConversion.php:141 @@ -1766,257 +1766,257 @@ msgstr "" msgid "Keep this window open until done." msgstr "" -#: mod/photos.php:129 src/Module/BaseProfile.php:71 +#: mod/photos.php:128 src/Module/BaseProfile.php:71 msgid "Photo Albums" msgstr "" -#: mod/photos.php:130 mod/photos.php:1638 +#: mod/photos.php:129 mod/photos.php:1637 msgid "Recent Photos" msgstr "" -#: mod/photos.php:132 mod/photos.php:1105 mod/photos.php:1640 +#: mod/photos.php:131 mod/photos.php:1104 mod/photos.php:1639 msgid "Upload New Photos" msgstr "" -#: mod/photos.php:150 src/Module/BaseSettings.php:37 +#: mod/photos.php:149 src/Module/BaseSettings.php:37 msgid "everybody" msgstr "" -#: mod/photos.php:183 +#: mod/photos.php:182 msgid "Contact information unavailable" msgstr "" -#: mod/photos.php:222 +#: mod/photos.php:221 msgid "Album not found." msgstr "" -#: mod/photos.php:280 +#: mod/photos.php:279 msgid "Album successfully deleted" msgstr "" -#: mod/photos.php:282 +#: mod/photos.php:281 msgid "Album was empty." msgstr "" -#: mod/photos.php:314 +#: mod/photos.php:313 msgid "Failed to delete the photo." msgstr "" -#: mod/photos.php:589 +#: mod/photos.php:588 msgid "a photo" msgstr "" -#: mod/photos.php:589 +#: mod/photos.php:588 #, php-format msgid "%1$s was tagged in %2$s by %3$s" msgstr "" -#: mod/photos.php:672 mod/photos.php:675 mod/photos.php:702 +#: mod/photos.php:671 mod/photos.php:674 mod/photos.php:701 #: mod/wall_upload.php:216 src/Module/Settings/Profile/Photo/Index.php:61 #, php-format msgid "Image exceeds size limit of %s" msgstr "" -#: mod/photos.php:678 +#: mod/photos.php:677 msgid "Image upload didn't complete, please try again" msgstr "" -#: mod/photos.php:681 +#: mod/photos.php:680 msgid "Image file is missing" msgstr "" -#: mod/photos.php:686 +#: mod/photos.php:685 msgid "" "Server can't accept new file upload at this time, please contact your " "administrator" msgstr "" -#: mod/photos.php:710 +#: mod/photos.php:709 msgid "Image file is empty." msgstr "" -#: mod/photos.php:725 mod/wall_upload.php:175 +#: mod/photos.php:724 mod/wall_upload.php:175 #: src/Module/Settings/Profile/Photo/Index.php:70 msgid "Unable to process image." msgstr "" -#: mod/photos.php:754 mod/wall_upload.php:241 +#: mod/photos.php:753 mod/wall_upload.php:241 #: src/Module/Settings/Profile/Photo/Index.php:97 msgid "Image upload failed." msgstr "" -#: mod/photos.php:841 +#: mod/photos.php:840 msgid "No photos selected" msgstr "" -#: mod/photos.php:907 mod/videos.php:182 +#: mod/photos.php:906 mod/videos.php:181 msgid "Access to this item is restricted." msgstr "" -#: mod/photos.php:961 +#: mod/photos.php:960 msgid "Upload Photos" msgstr "" -#: mod/photos.php:965 mod/photos.php:1050 +#: mod/photos.php:964 mod/photos.php:1049 msgid "New album name: " msgstr "" -#: mod/photos.php:966 +#: mod/photos.php:965 msgid "or select existing album:" msgstr "" -#: mod/photos.php:967 +#: mod/photos.php:966 msgid "Do not show a status post for this upload" msgstr "" -#: mod/photos.php:1033 +#: mod/photos.php:1032 msgid "Do you really want to delete this photo album and all its photos?" msgstr "" -#: mod/photos.php:1034 mod/photos.php:1055 +#: mod/photos.php:1033 mod/photos.php:1054 msgid "Delete Album" msgstr "" -#: mod/photos.php:1061 +#: mod/photos.php:1060 msgid "Edit Album" msgstr "" -#: mod/photos.php:1062 +#: mod/photos.php:1061 msgid "Drop Album" msgstr "" -#: mod/photos.php:1067 +#: mod/photos.php:1066 msgid "Show Newest First" msgstr "" -#: mod/photos.php:1069 +#: mod/photos.php:1068 msgid "Show Oldest First" msgstr "" -#: mod/photos.php:1090 mod/photos.php:1623 +#: mod/photos.php:1089 mod/photos.php:1622 msgid "View Photo" msgstr "" -#: mod/photos.php:1127 +#: mod/photos.php:1126 msgid "Permission denied. Access to this item may be restricted." msgstr "" -#: mod/photos.php:1129 +#: mod/photos.php:1128 msgid "Photo not available" msgstr "" -#: mod/photos.php:1139 +#: mod/photos.php:1138 msgid "Do you really want to delete this photo?" msgstr "" -#: mod/photos.php:1140 mod/photos.php:1340 +#: mod/photos.php:1139 mod/photos.php:1339 msgid "Delete Photo" msgstr "" -#: mod/photos.php:1231 +#: mod/photos.php:1230 msgid "View photo" msgstr "" -#: mod/photos.php:1233 +#: mod/photos.php:1232 msgid "Edit photo" msgstr "" -#: mod/photos.php:1234 +#: mod/photos.php:1233 msgid "Delete photo" msgstr "" -#: mod/photos.php:1235 +#: mod/photos.php:1234 msgid "Use as profile photo" msgstr "" -#: mod/photos.php:1242 +#: mod/photos.php:1241 msgid "Private Photo" msgstr "" -#: mod/photos.php:1248 +#: mod/photos.php:1247 msgid "View Full Size" msgstr "" -#: mod/photos.php:1308 +#: mod/photos.php:1307 msgid "Tags: " msgstr "" -#: mod/photos.php:1311 +#: mod/photos.php:1310 msgid "[Select tags to remove]" msgstr "" -#: mod/photos.php:1326 +#: mod/photos.php:1325 msgid "New album name" msgstr "" -#: mod/photos.php:1327 +#: mod/photos.php:1326 msgid "Caption" msgstr "" -#: mod/photos.php:1328 +#: mod/photos.php:1327 msgid "Add a Tag" msgstr "" -#: mod/photos.php:1328 +#: mod/photos.php:1327 msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "" -#: mod/photos.php:1329 +#: mod/photos.php:1328 msgid "Do not rotate" msgstr "" -#: mod/photos.php:1330 +#: mod/photos.php:1329 msgid "Rotate CW (right)" msgstr "" -#: mod/photos.php:1331 +#: mod/photos.php:1330 msgid "Rotate CCW (left)" msgstr "" -#: mod/photos.php:1377 mod/photos.php:1434 mod/photos.php:1509 +#: mod/photos.php:1376 mod/photos.php:1433 mod/photos.php:1508 #: src/Module/Contact.php:1104 src/Module/Item/Compose.php:142 #: src/Object/Post.php:957 msgid "This is you" msgstr "" -#: mod/photos.php:1379 mod/photos.php:1436 mod/photos.php:1511 +#: mod/photos.php:1378 mod/photos.php:1435 mod/photos.php:1510 #: src/Object/Post.php:495 src/Object/Post.php:959 msgid "Comment" msgstr "" -#: mod/photos.php:1533 src/Object/Post.php:348 +#: mod/photos.php:1532 src/Object/Post.php:348 msgid "Like" msgstr "" -#: mod/photos.php:1534 src/Object/Post.php:348 +#: mod/photos.php:1533 src/Object/Post.php:348 msgid "I like this (toggle)" msgstr "" -#: mod/photos.php:1535 src/Object/Post.php:349 +#: mod/photos.php:1534 src/Object/Post.php:349 msgid "Dislike" msgstr "" -#: mod/photos.php:1537 src/Object/Post.php:349 +#: mod/photos.php:1536 src/Object/Post.php:349 msgid "I don't like this (toggle)" msgstr "" -#: mod/photos.php:1559 +#: mod/photos.php:1558 msgid "Map" msgstr "" -#: mod/photos.php:1629 mod/videos.php:259 +#: mod/photos.php:1628 mod/videos.php:258 msgid "View Album" msgstr "" -#: mod/ping.php:285 +#: mod/ping.php:286 msgid "{0} wants to be your friend" msgstr "" -#: mod/ping.php:302 +#: mod/ping.php:303 msgid "{0} requested registration" msgstr "" -#: mod/ping.php:315 +#: mod/ping.php:316 #, php-format msgid "{0} and %d others requested registration" msgstr "" @@ -2917,19 +2917,19 @@ msgstr "" msgid "Disconnect/Unfollow" msgstr "" -#: mod/videos.php:134 +#: mod/videos.php:133 msgid "No videos selected" msgstr "" -#: mod/videos.php:252 +#: mod/videos.php:251 msgid "View Video" msgstr "" -#: mod/videos.php:267 +#: mod/videos.php:266 msgid "Recent Videos" msgstr "" -#: mod/videos.php:269 +#: mod/videos.php:268 msgid "Upload New Videos" msgstr "" @@ -2956,7 +2956,7 @@ msgstr "" msgid "File upload failed." msgstr "" -#: mod/wall_upload.php:233 src/Model/Photo.php:976 +#: mod/wall_upload.php:233 src/Model/Photo.php:985 msgid "Wall Photos" msgstr "" @@ -2984,7 +2984,7 @@ msgstr "" msgid "No system theme config value set." msgstr "" -#: src/App/Module.php:241 +#: src/App/Module.php:240 msgid "You must be logged in to use addons. " msgstr "" @@ -3634,39 +3634,39 @@ msgstr "" msgid "last" msgstr "" -#: src/Content/Text/BBCode.php:942 src/Content/Text/BBCode.php:1609 -#: src/Content/Text/BBCode.php:1610 +#: src/Content/Text/BBCode.php:942 src/Content/Text/BBCode.php:1613 +#: src/Content/Text/BBCode.php:1614 msgid "Image/photo" msgstr "" -#: src/Content/Text/BBCode.php:1068 +#: src/Content/Text/BBCode.php:1072 #, php-format msgid "" "%2$s %3$s" msgstr "" -#: src/Content/Text/BBCode.php:1093 src/Model/Item.php:3110 -#: src/Model/Item.php:3116 src/Model/Item.php:3117 +#: src/Content/Text/BBCode.php:1097 src/Model/Item.php:3137 +#: src/Model/Item.php:3143 src/Model/Item.php:3144 msgid "Link to source" msgstr "" -#: src/Content/Text/BBCode.php:1527 src/Content/Text/HTML.php:951 +#: src/Content/Text/BBCode.php:1531 src/Content/Text/HTML.php:951 msgid "Click to open/close" msgstr "" -#: src/Content/Text/BBCode.php:1558 +#: src/Content/Text/BBCode.php:1562 msgid "$1 wrote:" msgstr "" -#: src/Content/Text/BBCode.php:1612 src/Content/Text/BBCode.php:1613 +#: src/Content/Text/BBCode.php:1616 src/Content/Text/BBCode.php:1617 msgid "Encrypted content" msgstr "" -#: src/Content/Text/BBCode.php:1826 +#: src/Content/Text/BBCode.php:1830 msgid "Invalid source protocol" msgstr "" -#: src/Content/Text/BBCode.php:1841 +#: src/Content/Text/BBCode.php:1845 msgid "Invalid link protocol" msgstr "" @@ -3678,7 +3678,7 @@ msgstr "" msgid "The end" msgstr "" -#: src/Content/Text/HTML.php:893 src/Model/Profile.php:518 +#: src/Content/Text/HTML.php:893 src/Model/Profile.php:504 #: src/Module/Contact.php:340 msgid "Follow" msgstr "" @@ -4644,60 +4644,60 @@ msgstr "" msgid "Forum" msgstr "" -#: src/Model/Contact.php:2243 +#: src/Model/Contact.php:2307 msgid "Connect URL missing." msgstr "" -#: src/Model/Contact.php:2252 +#: src/Model/Contact.php:2316 msgid "" "The contact could not be added. Please check the relevant network " "credentials in your Settings -> Social Networks page." msgstr "" -#: src/Model/Contact.php:2293 +#: src/Model/Contact.php:2359 msgid "" "This site is not configured to allow communications with other networks." msgstr "" -#: src/Model/Contact.php:2294 src/Model/Contact.php:2307 +#: src/Model/Contact.php:2360 src/Model/Contact.php:2373 msgid "No compatible communication protocols or feeds were discovered." msgstr "" -#: src/Model/Contact.php:2305 +#: src/Model/Contact.php:2371 msgid "The profile address specified does not provide adequate information." msgstr "" -#: src/Model/Contact.php:2310 +#: src/Model/Contact.php:2376 msgid "An author or name was not found." msgstr "" -#: src/Model/Contact.php:2313 +#: src/Model/Contact.php:2379 msgid "No browser URL could be matched to this address." msgstr "" -#: src/Model/Contact.php:2316 +#: src/Model/Contact.php:2382 msgid "" "Unable to match @-style Identity Address with a known protocol or email " "contact." msgstr "" -#: src/Model/Contact.php:2317 +#: src/Model/Contact.php:2383 msgid "Use mailto: in front of address to force email check." msgstr "" -#: src/Model/Contact.php:2323 +#: src/Model/Contact.php:2389 msgid "" "The profile address specified belongs to a network which has been disabled " "on this site." msgstr "" -#: src/Model/Contact.php:2328 +#: src/Model/Contact.php:2394 msgid "" "Limited profile. This person will be unable to receive direct/personal " "notifications from you." msgstr "" -#: src/Model/Contact.php:2387 +#: src/Model/Contact.php:2453 msgid "Unable to retrieve contact information." msgstr "" @@ -4836,11 +4836,11 @@ msgstr "" msgid "Content warning: %s" msgstr "" -#: src/Model/Item.php:3075 +#: src/Model/Item.php:3102 msgid "bytes" msgstr "" -#: src/Model/Item.php:3104 src/Model/Item.php:3105 +#: src/Model/Item.php:3131 src/Model/Item.php:3132 msgid "View on separate page" msgstr "" @@ -4848,76 +4848,76 @@ msgstr "" msgid "[no subject]" msgstr "" -#: src/Model/Profile.php:422 src/Module/Profile/Profile.php:252 +#: src/Model/Profile.php:408 src/Module/Profile/Profile.php:252 #: src/Module/Profile/Profile.php:254 msgid "Edit profile" msgstr "" -#: src/Model/Profile.php:424 +#: src/Model/Profile.php:410 msgid "Change profile photo" msgstr "" -#: src/Model/Profile.php:437 src/Module/Directory.php:161 +#: src/Model/Profile.php:423 src/Module/Directory.php:161 #: src/Module/Profile/Profile.php:180 msgid "Homepage:" msgstr "" -#: src/Model/Profile.php:438 src/Module/Contact.php:658 +#: src/Model/Profile.php:424 src/Module/Contact.php:658 #: src/Module/Notifications/Introductions.php:174 msgid "About:" msgstr "" -#: src/Model/Profile.php:439 src/Module/Contact.php:656 +#: src/Model/Profile.php:425 src/Module/Contact.php:656 #: src/Module/Profile/Profile.php:176 msgid "XMPP:" msgstr "" -#: src/Model/Profile.php:520 src/Module/Contact.php:342 +#: src/Model/Profile.php:506 src/Module/Contact.php:342 msgid "Unfollow" msgstr "" -#: src/Model/Profile.php:522 +#: src/Model/Profile.php:508 msgid "Atom feed" msgstr "" -#: src/Model/Profile.php:530 src/Module/Contact.php:338 +#: src/Model/Profile.php:516 src/Module/Contact.php:338 #: src/Module/Notifications/Introductions.php:186 msgid "Network:" msgstr "" -#: src/Model/Profile.php:560 src/Model/Profile.php:657 +#: src/Model/Profile.php:546 src/Model/Profile.php:643 msgid "g A l F d" msgstr "" -#: src/Model/Profile.php:561 +#: src/Model/Profile.php:547 msgid "F d" msgstr "" -#: src/Model/Profile.php:623 src/Model/Profile.php:708 +#: src/Model/Profile.php:609 src/Model/Profile.php:694 msgid "[today]" msgstr "" -#: src/Model/Profile.php:633 +#: src/Model/Profile.php:619 msgid "Birthday Reminders" msgstr "" -#: src/Model/Profile.php:634 +#: src/Model/Profile.php:620 msgid "Birthdays this week:" msgstr "" -#: src/Model/Profile.php:695 +#: src/Model/Profile.php:681 msgid "[No description]" msgstr "" -#: src/Model/Profile.php:721 +#: src/Model/Profile.php:707 msgid "Event Reminders" msgstr "" -#: src/Model/Profile.php:722 +#: src/Model/Profile.php:708 msgid "Upcoming events the next 7 days:" msgstr "" -#: src/Model/Profile.php:897 +#: src/Model/Profile.php:896 #, php-format msgid "OpenWebAuth: %1$s welcomes %2$s" msgstr "" @@ -8909,12 +8909,12 @@ msgstr "" msgid "Visible to:" msgstr "" -#: src/Module/Photo.php:85 +#: src/Module/Photo.php:94 #, php-format msgid "The Photo with id %s is not available." msgstr "" -#: src/Module/Photo.php:104 +#: src/Module/Photo.php:122 #, php-format msgid "Invalid photo with id %s." msgstr "" @@ -8973,19 +8973,19 @@ msgstr "" #: src/Module/Profile/Profile.php:322 src/Module/Profile/Profile.php:325 #: src/Module/Profile/Status.php:65 src/Module/Profile/Status.php:68 -#: src/Protocol/Feed.php:943 src/Protocol/OStatus.php:1256 +#: src/Protocol/Feed.php:944 src/Protocol/OStatus.php:1256 #, php-format msgid "%s's timeline" msgstr "" #: src/Module/Profile/Profile.php:323 src/Module/Profile/Status.php:66 -#: src/Protocol/Feed.php:947 src/Protocol/OStatus.php:1260 +#: src/Protocol/Feed.php:948 src/Protocol/OStatus.php:1260 #, php-format msgid "%s's posts" msgstr "" #: src/Module/Profile/Profile.php:324 src/Module/Profile/Status.php:67 -#: src/Protocol/Feed.php:950 src/Protocol/OStatus.php:1263 +#: src/Protocol/Feed.php:951 src/Protocol/OStatus.php:1263 #, php-format msgid "%s's comments" msgstr "" @@ -9088,39 +9088,39 @@ msgstr "" msgid "You have entered too much information." msgstr "" -#: src/Module/Register.php:271 +#: src/Module/Register.php:270 msgid "Please enter the identical mail address in the second field." msgstr "" -#: src/Module/Register.php:298 +#: src/Module/Register.php:297 msgid "The additional account was created." msgstr "" -#: src/Module/Register.php:323 +#: src/Module/Register.php:322 msgid "" "Registration successful. Please check your email for further instructions." msgstr "" -#: src/Module/Register.php:327 +#: src/Module/Register.php:326 #, php-format msgid "" "Failed to send email message. Here your accout details:
login: %s
" "password: %s

You can change your password after login." msgstr "" -#: src/Module/Register.php:333 +#: src/Module/Register.php:332 msgid "Registration successful." msgstr "" -#: src/Module/Register.php:338 src/Module/Register.php:345 +#: src/Module/Register.php:337 src/Module/Register.php:344 msgid "Your registration can not be processed." msgstr "" -#: src/Module/Register.php:344 +#: src/Module/Register.php:343 msgid "You have to leave a request note for the admin." msgstr "" -#: src/Module/Register.php:390 +#: src/Module/Register.php:389 msgid "Your registration is pending approval by the site owner." msgstr "" From e519b782fd2180d326ffbd9fc8f1d6fca111ce98 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 4 Jul 2021 21:24:49 +0000 Subject: [PATCH 004/108] Simplified proxy handling --- include/api.php | 6 +- src/Content/Text/BBCode.php | 2 +- src/Model/Contact.php | 2 +- src/Module/Proxy.php | 196 ++++-------------------------------- src/Protocol/OStatus.php | 2 +- src/Util/Proxy.php | 18 +--- 6 files changed, 30 insertions(+), 196 deletions(-) diff --git a/include/api.php b/include/api.php index 492d3d1cb..51e430332 100644 --- a/include/api.php +++ b/include/api.php @@ -2678,7 +2678,7 @@ function api_get_attachments(&$body) if (DI::config()->get("system", "proxy_disabled")) { $attachments[] = ["url" => $image, "mimetype" => $imagedata["mime"], "size" => $imagedata["size"]]; } else { - $attachments[] = ["url" => ProxyUtils::proxifyUrl($image, false), "mimetype" => $imagedata["mime"], "size" => $imagedata["size"]]; + $attachments[] = ["url" => ProxyUtils::proxifyUrl($image), "mimetype" => $imagedata["mime"], "size" => $imagedata["size"]]; } } } @@ -2703,7 +2703,7 @@ function api_get_entitities(&$text, $bbcode) preg_match_all("/\[img](.*?)\[\/img\]/ism", $bbcode, $images); foreach ($images[1] as $image) { - $replace = ProxyUtils::proxifyUrl($image, false); + $replace = ProxyUtils::proxifyUrl($image); $text = str_replace($image, $replace, $text); } return []; @@ -2818,7 +2818,7 @@ function api_get_entitities(&$text, $bbcode) // If image cache is activated, then use the following sizes: // thumb (150), small (340), medium (600) and large (1024) if (!DI::config()->get("system", "proxy_disabled")) { - $media_url = ProxyUtils::proxifyUrl($url, false); + $media_url = ProxyUtils::proxifyUrl($url); $sizes = []; $scale = Images::getScalingDimensions($image[0], $image[1], 150); diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 634ea9aac..3ecd306b3 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1012,7 +1012,7 @@ class BBCode if (!empty($author_contact['id'])) { $attributes['avatar'] = Contact::getAvatarUrlForId($author_contact['id'], ProxyUtils::SIZE_THUMB); } elseif ($attributes['avatar']) { - $attributes['avatar'] = ProxyUtils::proxifyUrl($attributes['avatar'], false, ProxyUtils::SIZE_THUMB); + $attributes['avatar'] = ProxyUtils::proxifyUrl($attributes['avatar'], ProxyUtils::SIZE_THUMB); } $content = preg_replace(Strings::autoLinkRegEx(), '$1', $match[3]); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 1679fc25c..5fc234d60 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1517,7 +1517,7 @@ class Contact if (Proxy::isLocalImage($avatar)) { return $avatar; } else { - return Proxy::proxifyUrl($avatar, false, $size); + return Proxy::proxifyUrl($avatar, $size); } } diff --git a/src/Module/Proxy.php b/src/Module/Proxy.php index 317ec530a..6ccc38f60 100644 --- a/src/Module/Proxy.php +++ b/src/Module/Proxy.php @@ -24,10 +24,9 @@ namespace Friendica\Module; use Friendica\BaseModule; use Friendica\Core\Logger; use Friendica\Core\System; -use Friendica\DI; -use Friendica\Model\Photo; use Friendica\Object\Image; use Friendica\Util\HTTPSignature; +use Friendica\Util\Images; use Friendica\Util\Proxy as ProxyUtils; /** @@ -48,43 +47,23 @@ class Proxy extends BaseModule */ public static function rawContent(array $parameters = []) { - // Set application instance here - $a = DI::app(); - - /* - * Pictures are stored in one of the following ways: - * - * 1. If a folder "proxy" exists and is writeable, then use this for caching - * 2. If a cache path is defined, use this - * 3. If everything else failed, cache into the database - * - * Question: Do we really need these three methods? - */ - if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && isset($_SERVER['HTTP_IF_NONE_MATCH'])) { - header('HTTP/1.1 304 Not Modified'); - header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT'); - header('Etag: ' . $_SERVER['HTTP_IF_NONE_MATCH']); - header('Expires: ' . gmdate('D, d M Y H:i:s', time() + (31536000)) . ' GMT'); - header('Cache-Control: max-age=31536000'); - - if (function_exists('header_remove')) { - header_remove('Last-Modified'); - header_remove('Expires'); - header_remove('Cache-Control'); + if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) { + header("HTTP/1.1 304 Not Modified"); + header("Last-Modified: " . gmdate("D, d M Y H:i:s", time()) . " GMT"); + if (!empty($_SERVER["HTTP_IF_NONE_MATCH"])) { + header("Etag: " . $_SERVER["HTTP_IF_NONE_MATCH"]); } - - /// @TODO Stop here? - exit(); + header("Expires: " . gmdate("D, d M Y H:i:s", time() + (31536000)) . " GMT"); + header("Cache-Control: max-age=31536000"); + if (function_exists("header_remove")) { + header_remove("Last-Modified"); + header_remove("Expires"); + header_remove("Cache-Control"); + } + exit; } - if (function_exists('header_remove')) { - header_remove('Pragma'); - header_remove('pragma'); - } - - $direct_cache = self::setupDirectCache(); - - $request = self::getRequestInfo(); + $request = self::getRequestInfo($parameters); if (empty($request['url'])) { throw new \Friendica\Network\HTTPException\BadRequestException(); @@ -95,35 +74,21 @@ class Proxy extends BaseModule System::externalRedirect($request['url']); } - // Webserver already tried direct cache... - - // Try to use filecache; - $cachefile = self::responseFromCache($request); - - // Try to use photo from db - self::responseFromDB($request); - - // - // If script is here, the requested url has never cached before. - // Let's fetch it, scale it if required, then save it in cache. - // - // It shouldn't happen but it does - spaces in URL $request['url'] = str_replace(' ', '+', $request['url']); + + // Fetch the content with the local user $fetchResult = HTTPSignature::fetchRaw($request['url'], local_user(), ['timeout' => 10]); $img_str = $fetchResult->getBody(); - // If there is an error then return a blank image + // If there is an error then return an error if ((substr($fetchResult->getReturnCode(), 0, 1) == '4') || empty($img_str)) { Logger::info('Error fetching image', ['image' => $request['url'], 'return' => $fetchResult->getReturnCode(), 'empty' => empty($img_str)]); self::responseError(); // stop. } - $tempfile = tempnam(get_temppath(), 'cache'); - file_put_contents($tempfile, $img_str); - $mime = mime_content_type($tempfile); - unlink($tempfile); + $mime = Images::getMimeTypeByData($img_str); $image = new Image($img_str, $mime); if (!$image->isValid()) { @@ -132,80 +97,33 @@ class Proxy extends BaseModule // stop. } - $basepath = $a->getBasePath(); - $filepermission = DI::config()->get('system', 'proxy_file_chmod'); - - // Store original image - if ($direct_cache) { - // direct cache , store under ./proxy/ - $filename = $basepath . '/proxy/' . ProxyUtils::proxifyUrl($request['url'], true); - file_put_contents($filename, $image->asString()); - if (!empty($filepermission)) { - chmod($filename, $filepermission); - } - } elseif($cachefile !== '') { - // cache file - file_put_contents($cachefile, $image->asString()); - } else { - // database - Photo::store($image, 0, 0, $request['urlhash'], $request['url'], '', 100); - } - - // reduce quality - if it isn't a GIF if ($image->getType() != 'image/gif') { $image->scaleDown($request['size']); } - - // Store scaled image - if ($direct_cache && $request['sizetype'] != '') { - $filename = $basepath . '/proxy/' . ProxyUtils::proxifyUrl($request['url'], true) . $request['sizetype']; - file_put_contents($filename, $image->asString()); - if (!empty($filepermission)) { - chmod($filename, $filepermission); - } - } - self::responseImageHttpCache($image); // stop. } - /** * Build info about requested image to be proxied * * @return array * [ * 'url' => requested url, - * 'urlhash' => sha1 has of the url prefixed with 'pic:', * 'size' => requested image size (int) * 'sizetype' => requested image size (string): ':micro', ':thumb', ':small', ':medium', ':large' * ] * @throws \Exception */ - private static function getRequestInfo() + private static function getRequestInfo(array $parameters) { - $a = DI::app(); $size = ProxyUtils::PIXEL_LARGE; $sizetype = ''; - // Look for filename in the arguments - // @TODO: Replace with parameter from router - if (($a->argc > 1) && !isset($_REQUEST['url'])) { - if (isset($a->argv[3])) { - $url = $a->argv[3]; - } elseif (isset($a->argv[2])) { - $url = $a->argv[2]; - } else { - $url = $a->argv[1]; - } - - /// @TODO: Why? And what about $url in this case? - /// @TODO: Replace with parameter from router - if (isset($a->argv[3]) && ($a->argv[3] == 'thumb')) { - $size = 200; - } + if (!empty($parameters['url']) && empty($_REQUEST['url'])) { + $url = $parameters['url']; // thumb, small, medium and large. if (substr($url, -6) == ':micro') { @@ -238,87 +156,17 @@ class Proxy extends BaseModule $url = str_replace(['.jpg', '.jpeg', '.gif', '.png'], ['','','',''], $url); $url = base64_decode(strtr($url, '-_', '+/'), true); - } else { $url = $_REQUEST['url'] ?? ''; } return [ 'url' => $url, - 'urlhash' => 'pic:' . sha1($url), 'size' => $size, 'sizetype' => $sizetype, ]; } - - /** - * setup ./proxy folder for direct cache - * - * @return bool False if direct cache can't be used. - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - */ - private static function setupDirectCache() - { - $a = DI::app(); - $basepath = $a->getBasePath(); - - // If the cache path isn't there, try to create it - if (!is_dir($basepath . '/proxy') && is_writable($basepath)) { - mkdir($basepath . '/proxy'); - } - - // Checking if caching into a folder in the webroot is activated and working - $direct_cache = (is_dir($basepath . '/proxy') && is_writable($basepath . '/proxy')); - // we don't use direct cache if image url is passed in args and not in querystring - $direct_cache = $direct_cache && ($a->argc > 1) && !isset($_REQUEST['url']); - - return $direct_cache; - } - - - /** - * Try to reply with image in cachefile - * - * @param array $request Array from getRequestInfo - * - * @return string Cache file name, empty string if cache is not enabled. - * - * If cachefile exists, script ends here and this function will never returns - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - * @throws \ImagickException - */ - private static function responseFromCache(&$request) - { - $cachefile = get_cachefile(hash('md5', $request['url'])); - if ($cachefile != '' && file_exists($cachefile)) { - $img = new Image(file_get_contents($cachefile), mime_content_type($cachefile)); - self::responseImageHttpCache($img); - // stop. - } - return $cachefile; - } - - /** - * Try to reply with image in database - * - * @param array $request Array from getRequestInfo - * - * If the image exists in database, then script ends here and this function will never returns - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - * @throws \ImagickException - */ - private static function responseFromDB(&$request) - { - $photo = Photo::getPhoto($request['urlhash']); - - if ($photo !== false) { - $img = Photo::getImageForPhoto($photo); - self::responseImageHttpCache($img); - // stop. - } - } - /** * In case of an error just stop. We don't return content to avoid caching problems * diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 919f327b8..1019d34cc 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1207,7 +1207,7 @@ class OStatus } // Is it a remote picture? Then make a smaller preview here - $preview = ProxyUtils::proxifyUrl($preview, false, ProxyUtils::SIZE_SMALL); + $preview = ProxyUtils::proxifyUrl($preview, ProxyUtils::SIZE_SMALL); // Is it a local picture? Then make it smaller here $preview = str_replace(["-0.jpg", "-0.png"], ["-2.jpg", "-2.png"], $preview); diff --git a/src/Util/Proxy.php b/src/Util/Proxy.php index 437b52e1e..839442797 100644 --- a/src/Util/Proxy.php +++ b/src/Util/Proxy.php @@ -80,13 +80,12 @@ class Proxy * system.proxy_disabled is set to false. * * @param string $url The URL to proxyfy - * @param bool $writemode Returns a local path the remote URL should be saved to * @param string $size One of the ProxyUtils::SIZE_* constants * * @return string The proxyfied URL or relative path * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function proxifyUrl($url, $writemode = false, $size = '') + public static function proxifyUrl($url, $size = '') { // Get application instance $a = DI::app(); @@ -114,17 +113,9 @@ class Proxy // Image URL may have encoded ampersands for display which aren't desirable for proxy $url = html_entity_decode($url, ENT_NOQUOTES, 'utf-8'); - // Creating a sub directory to reduce the amount of files in the cache directory - $basepath = $a->getBasePath() . '/proxy'; - $shortpath = hash('md5', $url); $longpath = substr($shortpath, 0, 2); - if (is_dir($basepath) && $writemode && !is_dir($basepath . '/' . $longpath)) { - mkdir($basepath . '/' . $longpath); - chmod($basepath . '/' . $longpath, 0777); - } - $longpath .= '/' . strtr(base64_encode($url), '+/', '-_'); // Extract the URL extension @@ -142,13 +133,8 @@ class Proxy } // Too long files aren't supported by Apache - // Writemode in combination with long files shouldn't be possible - if ((strlen($proxypath) > 250) && $writemode) { - return $shortpath; - } elseif (strlen($proxypath) > 250) { + if (strlen($proxypath) > 250) { return DI::baseUrl() . '/proxy/' . $shortpath . '?url=' . urlencode($url); - } elseif ($writemode) { - return $longpath; } else { return $proxypath . $size; } From 1b6d0f8b1fc3a2f567d7417a33f83c700bc5821b Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 4 Jul 2021 21:26:08 +0000 Subject: [PATCH 005/108] Fix notice "Undefined index: account-type" --- src/Model/User.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Model/User.php b/src/Model/User.php index bc3536acf..5d349ce69 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -146,6 +146,15 @@ class User $system['sprvkey'] = $system['uprvkey'] = $system['prvkey']; $system['spubkey'] = $system['upubkey'] = $system['pubkey']; $system['nickname'] = $system['nick']; + $system['page-flags'] = User::PAGE_FLAGS_SOAPBOX; + $system['account-type'] = $system['contact-type']; + $system['guid'] = ''; + $system['nickname'] = $system['nick']; + $system['pubkey'] = $system['pubkey']; + $system['locality'] = ''; + $system['region'] = ''; + $system['country-name'] = ''; + $system['net-publish'] = false; // Ensure that the user contains data $user = DBA::selectFirst('user', ['prvkey'], ['uid' => 0]); From 844727dc19e584b807cd1831a8268544f7230965 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Jul 2021 04:16:02 +0000 Subject: [PATCH 006/108] Simplyfying code --- src/Module/Proxy.php | 8 ++------ src/Util/Proxy.php | 20 +++----------------- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/src/Module/Proxy.php b/src/Module/Proxy.php index 6ccc38f60..b1683e8f5 100644 --- a/src/Module/Proxy.php +++ b/src/Module/Proxy.php @@ -40,10 +40,7 @@ class Proxy extends BaseModule { /** - * Initializer method for this class. - * - * Sets application instance and checks if /proxy/ path is writable. - * + * Fetch remote image content */ public static function rawContent(array $parameters = []) { @@ -81,8 +78,7 @@ class Proxy extends BaseModule $fetchResult = HTTPSignature::fetchRaw($request['url'], local_user(), ['timeout' => 10]); $img_str = $fetchResult->getBody(); - // If there is an error then return an error - if ((substr($fetchResult->getReturnCode(), 0, 1) == '4') || empty($img_str)) { + if (!$fetchResult->isSuccess() || empty($img_str)) { Logger::info('Error fetching image', ['image' => $request['url'], 'return' => $fetchResult->getReturnCode(), 'empty' => empty($img_str)]); self::responseError(); // stop. diff --git a/src/Util/Proxy.php b/src/Util/Proxy.php index 839442797..16e3e221f 100644 --- a/src/Util/Proxy.php +++ b/src/Util/Proxy.php @@ -87,21 +87,11 @@ class Proxy */ public static function proxifyUrl($url, $size = '') { - // Get application instance - $a = DI::app(); - // Trim URL first $url = trim($url); - // Is no http in front of it? - /// @TODO To weak test for being a valid URL - if (substr($url, 0, 4) !== 'http') { - return $url; - } - - // Only continue if it isn't a local image and the isn't deactivated - if (self::isLocalImage($url)) { - $url = str_replace(Strings::normaliseLink(DI::baseUrl()) . '/', DI::baseUrl() . '/', $url); + // Quit if not an HTTP/HTTPS link or if local + if (!in_array(parse_url($url, PHP_URL_SCHEME), ['http', 'https']) || self::isLocalImage($url)) { return $url; } @@ -175,11 +165,7 @@ class Proxy return true; } - // links normalised - bug #431 - $baseurl = Strings::normaliseLink(DI::baseUrl()); - $url = Strings::normaliseLink($url); - - return (substr($url, 0, strlen($baseurl)) == $baseurl); + return Network::isLocalLink($url); } /** From a06d6994805d0c7ad63c9aaab6ff2b997a9f9a93 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Jul 2021 04:57:50 +0000 Subject: [PATCH 007/108] Item cache related functionality removed --- boot.php | 87 ------------------------ src/Core/System.php | 2 - src/Module/Admin/Site.php | 11 --- src/Worker/ClearCache.php | 23 ------- static/defaults.config.php | 4 -- tests/src/Content/Text/BBCodeTest.php | 3 - view/templates/admin/site.tpl | 2 - view/theme/frio/templates/admin/site.tpl | 2 - view/theme/smoothly/style.css | 2 - 9 files changed, 136 deletions(-) diff --git a/boot.php b/boot.php index e94b82fa3..b3b560a09 100644 --- a/boot.php +++ b/boot.php @@ -444,93 +444,6 @@ function get_temppath() return ''; } -function get_cachefile($file, $writemode = true) -{ - $cache = get_itemcachepath(); - - if ((!$cache) || (!is_dir($cache))) { - return ""; - } - - $subfolder = $cache . "/" . substr($file, 0, 2); - - $cachepath = $subfolder . "/" . $file; - - if ($writemode) { - if (!is_dir($subfolder)) { - mkdir($subfolder); - chmod($subfolder, 0777); - } - } - - return $cachepath; -} - -function clear_cache($basepath = "", $path = "") -{ - if ($path == "") { - $basepath = get_itemcachepath(); - $path = $basepath; - } - - if (($path == "") || (!is_dir($path))) { - return; - } - - if (substr(realpath($path), 0, strlen($basepath)) != $basepath) { - return; - } - - $cachetime = (int) DI::config()->get('system', 'itemcache_duration'); - if ($cachetime == 0) { - $cachetime = 86400; - } - - if (is_writable($path)) { - if ($dh = opendir($path)) { - while (($file = readdir($dh)) !== false) { - $fullpath = $path . "/" . $file; - if ((filetype($fullpath) == "dir") && ($file != ".") && ($file != "..")) { - clear_cache($basepath, $fullpath); - } - if ((filetype($fullpath) == "file") && (filectime($fullpath) < (time() - $cachetime))) { - unlink($fullpath); - } - } - closedir($dh); - } - } -} - -function get_itemcachepath() -{ - // Checking, if the cache is deactivated - $cachetime = (int) DI::config()->get('system', 'itemcache_duration'); - if ($cachetime < 0) { - return ""; - } - - $itemcache = DI::config()->get('system', 'itemcache'); - if (($itemcache != "") && System::isDirectoryUsable($itemcache)) { - return BasePath::getRealPath($itemcache); - } - - $temppath = get_temppath(); - - if ($temppath != "") { - $itemcache = $temppath . "/itemcache"; - if (!file_exists($itemcache) && !is_dir($itemcache)) { - mkdir($itemcache); - } - - if (System::isDirectoryUsable($itemcache)) { - DI::config()->set("system", "itemcache", $itemcache); - return $itemcache; - } - } - return ""; -} - /** * Returns the path where spool files are stored * diff --git a/src/Core/System.php b/src/Core/System.php index 5069a4a98..c61225e48 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -329,8 +329,6 @@ class System function info($s) function is_site_admin() function get_temppath() - function get_cachefile($file, $writemode = true) - function get_itemcachepath() function get_spoolpath() */ } diff --git a/src/Module/Admin/Site.php b/src/Module/Admin/Site.php index a04b4194d..3dde6c124 100644 --- a/src/Module/Admin/Site.php +++ b/src/Module/Admin/Site.php @@ -194,8 +194,6 @@ class Site extends BaseAdmin $dbclean_unclaimed = (!empty($_POST['dbclean_unclaimed']) ? intval($_POST['dbclean_unclaimed']) : 0); $dbclean_expire_conv = (!empty($_POST['dbclean_expire_conv']) ? intval($_POST['dbclean_expire_conv']) : 0); $suppress_tags = !empty($_POST['suppress_tags']); - $itemcache = (!empty($_POST['itemcache']) ? Strings::escapeTags(trim($_POST['itemcache'])) : ''); - $itemcache_duration = (!empty($_POST['itemcache_duration']) ? intval($_POST['itemcache_duration']) : 0); $max_comments = (!empty($_POST['max_comments']) ? intval($_POST['max_comments']) : 0); $max_display_comments = (!empty($_POST['max_display_comments']) ? intval($_POST['max_display_comments']) : 0); $temppath = (!empty($_POST['temppath']) ? Strings::escapeTags(trim($_POST['temppath'])) : ''); @@ -395,12 +393,6 @@ class Site extends BaseAdmin DI::config()->set('system', 'dbclean-expire-unclaimed', $dbclean_unclaimed); - if ($itemcache != '') { - $itemcache = BasePath::getRealPath($itemcache); - } - - DI::config()->set('system', 'itemcache', $itemcache); - DI::config()->set('system', 'itemcache_duration', $itemcache_duration); DI::config()->set('system', 'max_comments', $max_comments); DI::config()->set('system', 'max_display_comments', $max_display_comments); @@ -506,7 +498,6 @@ class Site extends BaseAdmin // Automatically create temporary paths get_temppath(); - get_itemcachepath(); /* Register policy */ $register_choices = [ @@ -674,8 +665,6 @@ class Site extends BaseAdmin '$dbclean_expire_days' => ['dbclean_expire_days', DI::l10n()->t('Lifespan of remote items'), DI::config()->get('system', 'dbclean-expire-days'), DI::l10n()->t('When the database cleanup is enabled, this defines the days after which remote items will be deleted. Own items, and marked or filed items are always kept. 0 disables this behaviour.')], '$dbclean_unclaimed' => ['dbclean_unclaimed', DI::l10n()->t('Lifespan of unclaimed items'), DI::config()->get('system', 'dbclean-expire-unclaimed'), DI::l10n()->t('When the database cleanup is enabled, this defines the days after which unclaimed remote items (mostly content from the relay) will be deleted. Default value is 90 days. Defaults to the general lifespan value of remote items if set to 0.')], '$dbclean_expire_conv' => ['dbclean_expire_conv', DI::l10n()->t('Lifespan of raw conversation data'), DI::config()->get('system', 'dbclean_expire_conversation'), DI::l10n()->t('The conversation data is used for ActivityPub and OStatus, as well as for debug purposes. It should be safe to remove it after 14 days, default is 90 days.')], - '$itemcache' => ['itemcache', DI::l10n()->t('Path to item cache'), DI::config()->get('system', 'itemcache'), DI::l10n()->t('The item caches buffers generated bbcode and external images.')], - '$itemcache_duration' => ['itemcache_duration', DI::l10n()->t('Cache duration in seconds'), DI::config()->get('system', 'itemcache_duration'), DI::l10n()->t('How long should the cache files be hold? Default value is 86400 seconds (One day). To disable the item cache, set the value to -1.')], '$max_comments' => ['max_comments', DI::l10n()->t('Maximum numbers of comments per post'), DI::config()->get('system', 'max_comments'), DI::l10n()->t('How much comments should be shown for each post? Default value is 100.')], '$max_display_comments' => ['max_display_comments', DI::l10n()->t('Maximum numbers of comments per post on the display page'), DI::config()->get('system', 'max_display_comments'), DI::l10n()->t('How many comments should be shown on the single view for each post? Default value is 1000.')], '$temppath' => ['temppath', DI::l10n()->t('Temp path'), DI::config()->get('system', 'temppath'), DI::l10n()->t('If you have a restricted system where the webserver can\'t access the system temp path, enter another path here.')], diff --git a/src/Worker/ClearCache.php b/src/Worker/ClearCache.php index 5b71c2f8b..baf15387d 100644 --- a/src/Worker/ClearCache.php +++ b/src/Worker/ClearCache.php @@ -38,29 +38,6 @@ class ClearCache // clear old cache DI::cache()->clear(); - // clear old item cache files - clear_cache(); - - // clear cache for photos - clear_cache($a->getBasePath(), $a->getBasePath() . "/photo"); - - // clear smarty cache - clear_cache($a->getBasePath() . "/view/smarty3/compiled", $a->getBasePath() . "/view/smarty3/compiled"); - - // clear cache for image proxy - if (!DI::config()->get("system", "proxy_disabled")) { - clear_cache($a->getBasePath(), $a->getBasePath() . "/proxy"); - - $cachetime = DI::config()->get('system', 'proxy_cache_time'); - - if (!$cachetime) { - $cachetime = ProxyUtils::DEFAULT_TIME; - } - - $condition = ['`uid` = 0 AND `resource-id` LIKE "pic:%" AND `created` < NOW() - INTERVAL ? SECOND', $cachetime]; - Photo::delete($condition); - } - // Delete the cached OEmbed entries that are older than three month DBA::delete('oembed', ["`created` < NOW() - INTERVAL 3 MONTH"]); diff --git a/static/defaults.config.php b/static/defaults.config.php index 25a23bf9d..20f351ab0 100644 --- a/static/defaults.config.php +++ b/static/defaults.config.php @@ -570,10 +570,6 @@ return [ // xrd_timeout (Integer) // Timeout in seconds for fetching the XRD links. 'xrd_timeout' => 20, - - // proxy_file_chmod (Octal Integer like 0640) - // If set, defines the files permissions for downloaded files in the /proxy/ directory, default is system-dependent - 'proxy_file_chmod' => 0, ], 'experimental' => [ // exp_themes (Boolean) diff --git a/tests/src/Content/Text/BBCodeTest.php b/tests/src/Content/Text/BBCodeTest.php index 46f153edc..2b5dc22a1 100644 --- a/tests/src/Content/Text/BBCodeTest.php +++ b/tests/src/Content/Text/BBCodeTest.php @@ -51,9 +51,6 @@ class BBCodeTest extends MockedTest $this->configMock->shouldReceive('get') ->with('system', 'allowed_link_protocols') ->andReturn(null); - $this->configMock->shouldReceive('get') - ->with('system', 'itemcache_duration') - ->andReturn(-1); $this->configMock->shouldReceive('get') ->with('system', 'url') ->andReturn('friendica.local'); diff --git a/view/templates/admin/site.tpl b/view/templates/admin/site.tpl index 75d9437d7..940599200 100644 --- a/view/templates/admin/site.tpl +++ b/view/templates/admin/site.tpl @@ -106,8 +106,6 @@

{{$performance}}

{{include file="field_checkbox.tpl" field=$only_tag_search}} - {{include file="field_input.tpl" field=$itemcache}} - {{include file="field_input.tpl" field=$itemcache_duration}} {{include file="field_input.tpl" field=$max_comments}} {{include file="field_input.tpl" field=$max_display_comments}} {{include file="field_checkbox.tpl" field=$proxy_disabled}} diff --git a/view/theme/frio/templates/admin/site.tpl b/view/theme/frio/templates/admin/site.tpl index 69076833d..97d5907a6 100644 --- a/view/theme/frio/templates/admin/site.tpl +++ b/view/theme/frio/templates/admin/site.tpl @@ -241,8 +241,6 @@
{{include file="field_checkbox.tpl" field=$only_tag_search}} - {{include file="field_input.tpl" field=$itemcache}} - {{include file="field_input.tpl" field=$itemcache_duration}} {{include file="field_input.tpl" field=$max_comments}} {{include file="field_input.tpl" field=$max_display_comments}} {{include file="field_checkbox.tpl" field=$proxy_disabled}} diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index 207aebbef..ac0179ea7 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -4620,7 +4620,6 @@ div #datebrowse-sidebar.widget { margin: 25px 0 25px 0; } -#id_itemcache, #id_basepath, #id_temppath, #id_lockpath, @@ -4633,7 +4632,6 @@ div #datebrowse-sidebar.widget { width: 440px; } -#id_itemcache_duration, #id_abandon_days, #id_maxloadavg, #id_poll_interval, From fccb72565115ce30e2981c7d96f11fe951e46bb4 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Jul 2021 05:11:35 +0000 Subject: [PATCH 008/108] Unneeded workaround removed --- src/Util/Images.php | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/Util/Images.php b/src/Util/Images.php index a65f9a1a8..7b11ea3f6 100644 --- a/src/Util/Images.php +++ b/src/Util/Images.php @@ -193,18 +193,7 @@ class Images $filesize = strlen($img_str); try { - if (function_exists("getimagesizefromstring")) { - $data = @getimagesizefromstring($img_str); - } else { - $tempfile = tempnam(get_temppath(), "cache"); - - $stamp1 = microtime(true); - file_put_contents($tempfile, $img_str); - DI::profiler()->saveTimestamp($stamp1, "file"); - - $data = getimagesize($tempfile); - unlink($tempfile); - } + $data = @getimagesizefromstring($img_str); } catch (\Exception $e) { return []; } From 31bf8d3ea0daefb276f3138600ee45af812241f1 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Jul 2021 05:15:35 +0000 Subject: [PATCH 009/108] Updated messages.po --- view/lang/C/messages.po | 502 +++++++++++++++++++--------------------- 1 file changed, 242 insertions(+), 260 deletions(-) diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 8983dbcef..ab335421d 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2021.09-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-07-04 19:56+0000\n" +"POT-Creation-Date: 2021-07-05 05:14+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -39,8 +39,8 @@ msgstr "" #: include/api.php:4527 mod/photos.php:106 mod/photos.php:210 #: mod/photos.php:638 mod/photos.php:1042 mod/photos.php:1059 -#: mod/photos.php:1608 src/Model/User.php:1105 src/Model/User.php:1113 -#: src/Model/User.php:1121 src/Module/Settings/Profile/Photo/Crop.php:98 +#: mod/photos.php:1608 src/Model/User.php:1114 src/Model/User.php:1122 +#: src/Model/User.php:1130 src/Module/Settings/Profile/Photo/Crop.php:98 #: src/Module/Settings/Profile/Photo/Crop.php:114 #: src/Module/Settings/Profile/Photo/Crop.php:130 #: src/Module/Settings/Profile/Photo/Crop.php:176 @@ -949,7 +949,7 @@ msgstr "" msgid "list" msgstr "" -#: mod/cal.php:297 src/Console/User.php:182 src/Model/User.php:667 +#: mod/cal.php:297 src/Console/User.php:182 src/Model/User.php:676 #: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74 #: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71 #: src/Module/Api/Twitter/ContactEndpoint.php:71 @@ -1366,7 +1366,7 @@ msgstr "" msgid "Basic" msgstr "" -#: mod/events.php:577 src/Module/Admin/Site.php:584 src/Module/Contact.php:961 +#: mod/events.php:577 src/Module/Admin/Site.php:575 src/Module/Contact.php:961 #: src/Module/Profile/Profile.php:245 msgid "Advanced" msgstr "" @@ -2175,7 +2175,7 @@ msgstr "" #: mod/settings.php:540 mod/settings.php:638 mod/settings.php:773 #: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87 -#: src/Module/Admin/Logs/Settings.php:82 src/Module/Admin/Site.php:579 +#: src/Module/Admin/Logs/Settings.php:82 src/Module/Admin/Site.php:570 #: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:66 #: src/Module/Settings/Delegation.php:170 src/Module/Settings/Display.php:189 msgid "Save Settings" @@ -4958,138 +4958,138 @@ msgstr "" msgid "Enter a valid existing folder" msgstr "" -#: src/Model/User.php:186 src/Model/User.php:991 +#: src/Model/User.php:195 src/Model/User.php:1000 msgid "SERIOUS ERROR: Generation of security keys failed." msgstr "" -#: src/Model/User.php:576 src/Model/User.php:609 +#: src/Model/User.php:585 src/Model/User.php:618 msgid "Login failed" msgstr "" -#: src/Model/User.php:641 +#: src/Model/User.php:650 msgid "Not enough information to authenticate" msgstr "" -#: src/Model/User.php:736 +#: src/Model/User.php:745 msgid "Password can't be empty" msgstr "" -#: src/Model/User.php:755 +#: src/Model/User.php:764 msgid "Empty passwords are not allowed." msgstr "" -#: src/Model/User.php:759 +#: src/Model/User.php:768 msgid "" "The new password has been exposed in a public data dump, please choose " "another." msgstr "" -#: src/Model/User.php:765 +#: src/Model/User.php:774 msgid "" "The password can't contain accentuated letters, white spaces or colons (:)" msgstr "" -#: src/Model/User.php:871 +#: src/Model/User.php:880 msgid "Passwords do not match. Password unchanged." msgstr "" -#: src/Model/User.php:878 +#: src/Model/User.php:887 msgid "An invitation is required." msgstr "" -#: src/Model/User.php:882 +#: src/Model/User.php:891 msgid "Invitation could not be verified." msgstr "" -#: src/Model/User.php:890 +#: src/Model/User.php:899 msgid "Invalid OpenID url" msgstr "" -#: src/Model/User.php:903 src/Security/Authentication.php:224 +#: src/Model/User.php:912 src/Security/Authentication.php:224 msgid "" "We encountered a problem while logging in with the OpenID you provided. " "Please check the correct spelling of the ID." msgstr "" -#: src/Model/User.php:903 src/Security/Authentication.php:224 +#: src/Model/User.php:912 src/Security/Authentication.php:224 msgid "The error message was:" msgstr "" -#: src/Model/User.php:909 +#: src/Model/User.php:918 msgid "Please enter the required information." msgstr "" -#: src/Model/User.php:923 +#: src/Model/User.php:932 #, php-format msgid "" "system.username_min_length (%s) and system.username_max_length (%s) are " "excluding each other, swapping values." msgstr "" -#: src/Model/User.php:930 +#: src/Model/User.php:939 #, php-format msgid "Username should be at least %s character." msgid_plural "Username should be at least %s characters." msgstr[0] "" msgstr[1] "" -#: src/Model/User.php:934 +#: src/Model/User.php:943 #, php-format msgid "Username should be at most %s character." msgid_plural "Username should be at most %s characters." msgstr[0] "" msgstr[1] "" -#: src/Model/User.php:942 +#: src/Model/User.php:951 msgid "That doesn't appear to be your full (First Last) name." msgstr "" -#: src/Model/User.php:947 +#: src/Model/User.php:956 msgid "Your email domain is not among those allowed on this site." msgstr "" -#: src/Model/User.php:951 +#: src/Model/User.php:960 msgid "Not a valid email address." msgstr "" -#: src/Model/User.php:954 +#: src/Model/User.php:963 msgid "The nickname was blocked from registration by the nodes admin." msgstr "" -#: src/Model/User.php:958 src/Model/User.php:966 +#: src/Model/User.php:967 src/Model/User.php:975 msgid "Cannot use that email." msgstr "" -#: src/Model/User.php:973 +#: src/Model/User.php:982 msgid "Your nickname can only contain a-z, 0-9 and _." msgstr "" -#: src/Model/User.php:981 src/Model/User.php:1038 +#: src/Model/User.php:990 src/Model/User.php:1047 msgid "Nickname is already registered. Please choose another." msgstr "" -#: src/Model/User.php:1025 src/Model/User.php:1029 +#: src/Model/User.php:1034 src/Model/User.php:1038 msgid "An error occurred during registration. Please try again." msgstr "" -#: src/Model/User.php:1052 +#: src/Model/User.php:1061 msgid "An error occurred creating your default profile. Please try again." msgstr "" -#: src/Model/User.php:1059 +#: src/Model/User.php:1068 msgid "An error occurred creating your self contact. Please try again." msgstr "" -#: src/Model/User.php:1064 +#: src/Model/User.php:1073 msgid "Friends" msgstr "" -#: src/Model/User.php:1068 +#: src/Model/User.php:1077 msgid "" "An error occurred creating your default contact group. Please try again." msgstr "" -#: src/Model/User.php:1297 +#: src/Model/User.php:1306 #, php-format msgid "" "\n" @@ -5097,7 +5097,7 @@ msgid "" "\t\t\tthe administrator of %2$s has set up an account for you." msgstr "" -#: src/Model/User.php:1300 +#: src/Model/User.php:1309 #, php-format msgid "" "\n" @@ -5134,12 +5134,12 @@ msgid "" "\t\tThank you and welcome to %4$s." msgstr "" -#: src/Model/User.php:1333 src/Model/User.php:1440 +#: src/Model/User.php:1342 src/Model/User.php:1449 #, php-format msgid "Registration details for %s" msgstr "" -#: src/Model/User.php:1353 +#: src/Model/User.php:1362 #, php-format msgid "" "\n" @@ -5155,12 +5155,12 @@ msgid "" "\t\t" msgstr "" -#: src/Model/User.php:1372 +#: src/Model/User.php:1381 #, php-format msgid "Registration at %s" msgstr "" -#: src/Model/User.php:1396 +#: src/Model/User.php:1405 #, php-format msgid "" "\n" @@ -5169,7 +5169,7 @@ msgid "" "\t\t\t" msgstr "" -#: src/Model/User.php:1404 +#: src/Model/User.php:1413 #, php-format msgid "" "\n" @@ -5237,7 +5237,7 @@ msgstr "" #: src/Module/Admin/Blocklist/Server.php:88 src/Module/Admin/Federation.php:159 #: src/Module/Admin/Item/Delete.php:65 src/Module/Admin/Logs/Settings.php:80 #: src/Module/Admin/Logs/View.php:64 src/Module/Admin/Queue.php:72 -#: src/Module/Admin/Site.php:576 src/Module/Admin/Summary.php:232 +#: src/Module/Admin/Site.php:567 src/Module/Admin/Summary.php:232 #: src/Module/Admin/Themes/Details.php:90 src/Module/Admin/Themes/Index.php:111 #: src/Module/Admin/Tos.php:58 src/Module/Admin/Users/Active.php:136 #: src/Module/Admin/Users/Blocked.php:137 src/Module/Admin/Users/Create.php:61 @@ -5791,281 +5791,281 @@ msgstr "" msgid "Relocation started. Could take a while to complete." msgstr "" -#: src/Module/Admin/Site.php:248 +#: src/Module/Admin/Site.php:246 msgid "Invalid storage backend setting value." msgstr "" -#: src/Module/Admin/Site.php:446 src/Module/Settings/Display.php:134 +#: src/Module/Admin/Site.php:438 src/Module/Settings/Display.php:134 msgid "No special theme for mobile devices" msgstr "" -#: src/Module/Admin/Site.php:463 src/Module/Settings/Display.php:144 +#: src/Module/Admin/Site.php:455 src/Module/Settings/Display.php:144 #, php-format msgid "%s - (Experimental)" msgstr "" -#: src/Module/Admin/Site.php:475 +#: src/Module/Admin/Site.php:467 msgid "No community page for local users" msgstr "" -#: src/Module/Admin/Site.php:476 +#: src/Module/Admin/Site.php:468 msgid "No community page" msgstr "" -#: src/Module/Admin/Site.php:477 +#: src/Module/Admin/Site.php:469 msgid "Public postings from users of this site" msgstr "" -#: src/Module/Admin/Site.php:478 +#: src/Module/Admin/Site.php:470 msgid "Public postings from the federated network" msgstr "" -#: src/Module/Admin/Site.php:479 +#: src/Module/Admin/Site.php:471 msgid "Public postings from local users and the federated network" msgstr "" -#: src/Module/Admin/Site.php:485 +#: src/Module/Admin/Site.php:477 msgid "Multi user instance" msgstr "" -#: src/Module/Admin/Site.php:513 +#: src/Module/Admin/Site.php:504 msgid "Closed" msgstr "" -#: src/Module/Admin/Site.php:514 +#: src/Module/Admin/Site.php:505 msgid "Requires approval" msgstr "" -#: src/Module/Admin/Site.php:515 +#: src/Module/Admin/Site.php:506 msgid "Open" msgstr "" -#: src/Module/Admin/Site.php:519 src/Module/Install.php:215 +#: src/Module/Admin/Site.php:510 src/Module/Install.php:215 msgid "No SSL policy, links will track page SSL state" msgstr "" -#: src/Module/Admin/Site.php:520 src/Module/Install.php:216 +#: src/Module/Admin/Site.php:511 src/Module/Install.php:216 msgid "Force all links to use SSL" msgstr "" -#: src/Module/Admin/Site.php:521 src/Module/Install.php:217 +#: src/Module/Admin/Site.php:512 src/Module/Install.php:217 msgid "Self-signed certificate, use SSL for local links only (discouraged)" msgstr "" -#: src/Module/Admin/Site.php:525 +#: src/Module/Admin/Site.php:516 msgid "Don't check" msgstr "" -#: src/Module/Admin/Site.php:526 +#: src/Module/Admin/Site.php:517 msgid "check the stable version" msgstr "" -#: src/Module/Admin/Site.php:527 +#: src/Module/Admin/Site.php:518 msgid "check the development version" msgstr "" -#: src/Module/Admin/Site.php:531 +#: src/Module/Admin/Site.php:522 msgid "none" msgstr "" -#: src/Module/Admin/Site.php:532 +#: src/Module/Admin/Site.php:523 msgid "Local contacts" msgstr "" -#: src/Module/Admin/Site.php:533 +#: src/Module/Admin/Site.php:524 msgid "Interactors" msgstr "" -#: src/Module/Admin/Site.php:546 +#: src/Module/Admin/Site.php:537 msgid "Database (legacy)" msgstr "" -#: src/Module/Admin/Site.php:577 src/Module/BaseAdmin.php:90 +#: src/Module/Admin/Site.php:568 src/Module/BaseAdmin.php:90 msgid "Site" msgstr "" -#: src/Module/Admin/Site.php:578 +#: src/Module/Admin/Site.php:569 msgid "General Information" msgstr "" -#: src/Module/Admin/Site.php:580 +#: src/Module/Admin/Site.php:571 msgid "Republish users to directory" msgstr "" -#: src/Module/Admin/Site.php:581 src/Module/Register.php:139 +#: src/Module/Admin/Site.php:572 src/Module/Register.php:139 msgid "Registration" msgstr "" -#: src/Module/Admin/Site.php:582 +#: src/Module/Admin/Site.php:573 msgid "File upload" msgstr "" -#: src/Module/Admin/Site.php:583 +#: src/Module/Admin/Site.php:574 msgid "Policies" msgstr "" -#: src/Module/Admin/Site.php:585 +#: src/Module/Admin/Site.php:576 msgid "Auto Discovered Contact Directory" msgstr "" -#: src/Module/Admin/Site.php:586 +#: src/Module/Admin/Site.php:577 msgid "Performance" msgstr "" -#: src/Module/Admin/Site.php:587 +#: src/Module/Admin/Site.php:578 msgid "Worker" msgstr "" -#: src/Module/Admin/Site.php:588 +#: src/Module/Admin/Site.php:579 msgid "Message Relay" msgstr "" -#: src/Module/Admin/Site.php:589 +#: src/Module/Admin/Site.php:580 msgid "" "Use the command \"console relay\" in the command line to add or remove " "relays." msgstr "" -#: src/Module/Admin/Site.php:590 +#: src/Module/Admin/Site.php:581 msgid "The system is not subscribed to any relays at the moment." msgstr "" -#: src/Module/Admin/Site.php:591 +#: src/Module/Admin/Site.php:582 msgid "The system is currently subscribed to the following relays:" msgstr "" -#: src/Module/Admin/Site.php:593 +#: src/Module/Admin/Site.php:584 msgid "Relocate Instance" msgstr "" -#: src/Module/Admin/Site.php:594 +#: src/Module/Admin/Site.php:585 msgid "" "Warning! Advanced function. Could make this server " "unreachable." msgstr "" -#: src/Module/Admin/Site.php:598 +#: src/Module/Admin/Site.php:589 msgid "Site name" msgstr "" -#: src/Module/Admin/Site.php:599 +#: src/Module/Admin/Site.php:590 msgid "Sender Email" msgstr "" -#: src/Module/Admin/Site.php:599 +#: src/Module/Admin/Site.php:590 msgid "" "The email address your server shall use to send notification emails from." msgstr "" -#: src/Module/Admin/Site.php:600 +#: src/Module/Admin/Site.php:591 msgid "Name of the system actor" msgstr "" -#: src/Module/Admin/Site.php:600 +#: src/Module/Admin/Site.php:591 msgid "" "Name of the internal system account that is used to perform ActivityPub " "requests. This must be an unused username. If set, this can't be changed " "again." msgstr "" -#: src/Module/Admin/Site.php:601 +#: src/Module/Admin/Site.php:592 msgid "Banner/Logo" msgstr "" -#: src/Module/Admin/Site.php:602 +#: src/Module/Admin/Site.php:593 msgid "Email Banner/Logo" msgstr "" -#: src/Module/Admin/Site.php:603 +#: src/Module/Admin/Site.php:594 msgid "Shortcut icon" msgstr "" -#: src/Module/Admin/Site.php:603 +#: src/Module/Admin/Site.php:594 msgid "Link to an icon that will be used for browsers." msgstr "" -#: src/Module/Admin/Site.php:604 +#: src/Module/Admin/Site.php:595 msgid "Touch icon" msgstr "" -#: src/Module/Admin/Site.php:604 +#: src/Module/Admin/Site.php:595 msgid "Link to an icon that will be used for tablets and mobiles." msgstr "" -#: src/Module/Admin/Site.php:605 +#: src/Module/Admin/Site.php:596 msgid "Additional Info" msgstr "" -#: src/Module/Admin/Site.php:605 +#: src/Module/Admin/Site.php:596 #, php-format msgid "" "For public servers: you can add additional information here that will be " "listed at %s/servers." msgstr "" -#: src/Module/Admin/Site.php:606 +#: src/Module/Admin/Site.php:597 msgid "System language" msgstr "" -#: src/Module/Admin/Site.php:607 +#: src/Module/Admin/Site.php:598 msgid "System theme" msgstr "" -#: src/Module/Admin/Site.php:607 +#: src/Module/Admin/Site.php:598 msgid "" "Default system theme - may be over-ridden by user profiles - Change default theme settings" msgstr "" -#: src/Module/Admin/Site.php:608 +#: src/Module/Admin/Site.php:599 msgid "Mobile system theme" msgstr "" -#: src/Module/Admin/Site.php:608 +#: src/Module/Admin/Site.php:599 msgid "Theme for mobile devices" msgstr "" -#: src/Module/Admin/Site.php:609 src/Module/Install.php:225 +#: src/Module/Admin/Site.php:600 src/Module/Install.php:225 msgid "SSL link policy" msgstr "" -#: src/Module/Admin/Site.php:609 src/Module/Install.php:227 +#: src/Module/Admin/Site.php:600 src/Module/Install.php:227 msgid "Determines whether generated links should be forced to use SSL" msgstr "" -#: src/Module/Admin/Site.php:610 +#: src/Module/Admin/Site.php:601 msgid "Force SSL" msgstr "" -#: src/Module/Admin/Site.php:610 +#: src/Module/Admin/Site.php:601 msgid "" "Force all Non-SSL requests to SSL - Attention: on some systems it could lead " "to endless loops." msgstr "" -#: src/Module/Admin/Site.php:611 +#: src/Module/Admin/Site.php:602 msgid "Hide help entry from navigation menu" msgstr "" -#: src/Module/Admin/Site.php:611 +#: src/Module/Admin/Site.php:602 msgid "" "Hides the menu entry for the Help pages from the navigation menu. You can " "still access it calling /help directly." msgstr "" -#: src/Module/Admin/Site.php:612 +#: src/Module/Admin/Site.php:603 msgid "Single user instance" msgstr "" -#: src/Module/Admin/Site.php:612 +#: src/Module/Admin/Site.php:603 msgid "Make this instance multi-user or single-user for the named user" msgstr "" -#: src/Module/Admin/Site.php:614 +#: src/Module/Admin/Site.php:605 msgid "File storage backend" msgstr "" -#: src/Module/Admin/Site.php:614 +#: src/Module/Admin/Site.php:605 msgid "" "The backend used to store uploaded data. If you change the storage backend, " "you can manually move the existing files. If you do not do so, the files " @@ -6074,202 +6074,202 @@ msgid "" "for more information about the choices and the moving procedure." msgstr "" -#: src/Module/Admin/Site.php:616 +#: src/Module/Admin/Site.php:607 msgid "Maximum image size" msgstr "" -#: src/Module/Admin/Site.php:616 +#: src/Module/Admin/Site.php:607 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "" -#: src/Module/Admin/Site.php:617 +#: src/Module/Admin/Site.php:608 msgid "Maximum image length" msgstr "" -#: src/Module/Admin/Site.php:617 +#: src/Module/Admin/Site.php:608 msgid "" "Maximum length in pixels of the longest side of uploaded images. Default is " "-1, which means no limits." msgstr "" -#: src/Module/Admin/Site.php:618 +#: src/Module/Admin/Site.php:609 msgid "JPEG image quality" msgstr "" -#: src/Module/Admin/Site.php:618 +#: src/Module/Admin/Site.php:609 msgid "" "Uploaded JPEGS will be saved at this quality setting [0-100]. Default is " "100, which is full quality." msgstr "" -#: src/Module/Admin/Site.php:620 +#: src/Module/Admin/Site.php:611 msgid "Register policy" msgstr "" -#: src/Module/Admin/Site.php:621 +#: src/Module/Admin/Site.php:612 msgid "Maximum Daily Registrations" msgstr "" -#: src/Module/Admin/Site.php:621 +#: src/Module/Admin/Site.php:612 msgid "" "If registration is permitted above, this sets the maximum number of new user " "registrations to accept per day. If register is set to closed, this setting " "has no effect." msgstr "" -#: src/Module/Admin/Site.php:622 +#: src/Module/Admin/Site.php:613 msgid "Register text" msgstr "" -#: src/Module/Admin/Site.php:622 +#: src/Module/Admin/Site.php:613 msgid "" "Will be displayed prominently on the registration page. You can use BBCode " "here." msgstr "" -#: src/Module/Admin/Site.php:623 +#: src/Module/Admin/Site.php:614 msgid "Forbidden Nicknames" msgstr "" -#: src/Module/Admin/Site.php:623 +#: src/Module/Admin/Site.php:614 msgid "" "Comma separated list of nicknames that are forbidden from registration. " "Preset is a list of role names according RFC 2142." msgstr "" -#: src/Module/Admin/Site.php:624 +#: src/Module/Admin/Site.php:615 msgid "Accounts abandoned after x days" msgstr "" -#: src/Module/Admin/Site.php:624 +#: src/Module/Admin/Site.php:615 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "" -#: src/Module/Admin/Site.php:625 +#: src/Module/Admin/Site.php:616 msgid "Allowed friend domains" msgstr "" -#: src/Module/Admin/Site.php:625 +#: src/Module/Admin/Site.php:616 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "" -#: src/Module/Admin/Site.php:626 +#: src/Module/Admin/Site.php:617 msgid "Allowed email domains" msgstr "" -#: src/Module/Admin/Site.php:626 +#: src/Module/Admin/Site.php:617 msgid "" "Comma separated list of domains which are allowed in email addresses for " "registrations to this site. Wildcards are accepted. Empty to allow any " "domains" msgstr "" -#: src/Module/Admin/Site.php:627 +#: src/Module/Admin/Site.php:618 msgid "No OEmbed rich content" msgstr "" -#: src/Module/Admin/Site.php:627 +#: src/Module/Admin/Site.php:618 msgid "" "Don't show the rich content (e.g. embedded PDF), except from the domains " "listed below." msgstr "" -#: src/Module/Admin/Site.php:628 +#: src/Module/Admin/Site.php:619 msgid "Trusted third-party domains" msgstr "" -#: src/Module/Admin/Site.php:628 +#: src/Module/Admin/Site.php:619 msgid "" "Comma separated list of domains from which content is allowed to be embedded " "in posts like with OEmbed. All sub-domains of the listed domains are allowed " "as well." msgstr "" -#: src/Module/Admin/Site.php:629 +#: src/Module/Admin/Site.php:620 msgid "Block public" msgstr "" -#: src/Module/Admin/Site.php:629 +#: src/Module/Admin/Site.php:620 msgid "" "Check to block public access to all otherwise public personal pages on this " "site unless you are currently logged in." msgstr "" -#: src/Module/Admin/Site.php:630 +#: src/Module/Admin/Site.php:621 msgid "Force publish" msgstr "" -#: src/Module/Admin/Site.php:630 +#: src/Module/Admin/Site.php:621 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "" -#: src/Module/Admin/Site.php:630 +#: src/Module/Admin/Site.php:621 msgid "Enabling this may violate privacy laws like the GDPR" msgstr "" -#: src/Module/Admin/Site.php:631 +#: src/Module/Admin/Site.php:622 msgid "Global directory URL" msgstr "" -#: src/Module/Admin/Site.php:631 +#: src/Module/Admin/Site.php:622 msgid "" "URL to the global directory. If this is not set, the global directory is " "completely unavailable to the application." msgstr "" -#: src/Module/Admin/Site.php:632 +#: src/Module/Admin/Site.php:623 msgid "Private posts by default for new users" msgstr "" -#: src/Module/Admin/Site.php:632 +#: src/Module/Admin/Site.php:623 msgid "" "Set default post permissions for all new members to the default privacy " "group rather than public." msgstr "" -#: src/Module/Admin/Site.php:633 +#: src/Module/Admin/Site.php:624 msgid "Don't include post content in email notifications" msgstr "" -#: src/Module/Admin/Site.php:633 +#: src/Module/Admin/Site.php:624 msgid "" "Don't include the content of a post/comment/private message/etc. in the " "email notifications that are sent out from this site, as a privacy measure." msgstr "" -#: src/Module/Admin/Site.php:634 +#: src/Module/Admin/Site.php:625 msgid "Disallow public access to addons listed in the apps menu." msgstr "" -#: src/Module/Admin/Site.php:634 +#: src/Module/Admin/Site.php:625 msgid "" "Checking this box will restrict addons listed in the apps menu to members " "only." msgstr "" -#: src/Module/Admin/Site.php:635 +#: src/Module/Admin/Site.php:626 msgid "Don't embed private images in posts" msgstr "" -#: src/Module/Admin/Site.php:635 +#: src/Module/Admin/Site.php:626 msgid "" "Don't replace locally-hosted private photos in posts with an embedded copy " "of the image. This means that contacts who receive posts containing private " "photos will have to authenticate and load each image, which may take a while." msgstr "" -#: src/Module/Admin/Site.php:636 +#: src/Module/Admin/Site.php:627 msgid "Explicit Content" msgstr "" -#: src/Module/Admin/Site.php:636 +#: src/Module/Admin/Site.php:627 msgid "" "Set this to announce that your node is used mostly for explicit content that " "might not be suited for minors. This information will be published in the " @@ -6278,234 +6278,234 @@ msgid "" "will be shown at the user registration page." msgstr "" -#: src/Module/Admin/Site.php:637 +#: src/Module/Admin/Site.php:628 msgid "Allow Users to set remote_self" msgstr "" -#: src/Module/Admin/Site.php:637 +#: src/Module/Admin/Site.php:628 msgid "" "With checking this, every user is allowed to mark every contact as a " "remote_self in the repair contact dialog. Setting this flag on a contact " "causes mirroring every posting of that contact in the users stream." msgstr "" -#: src/Module/Admin/Site.php:638 +#: src/Module/Admin/Site.php:629 msgid "Block multiple registrations" msgstr "" -#: src/Module/Admin/Site.php:638 +#: src/Module/Admin/Site.php:629 msgid "Disallow users to register additional accounts for use as pages." msgstr "" -#: src/Module/Admin/Site.php:639 +#: src/Module/Admin/Site.php:630 msgid "Disable OpenID" msgstr "" -#: src/Module/Admin/Site.php:639 +#: src/Module/Admin/Site.php:630 msgid "Disable OpenID support for registration and logins." msgstr "" -#: src/Module/Admin/Site.php:640 +#: src/Module/Admin/Site.php:631 msgid "No Fullname check" msgstr "" -#: src/Module/Admin/Site.php:640 +#: src/Module/Admin/Site.php:631 msgid "" "Allow users to register without a space between the first name and the last " "name in their full name." msgstr "" -#: src/Module/Admin/Site.php:641 +#: src/Module/Admin/Site.php:632 msgid "Community pages for visitors" msgstr "" -#: src/Module/Admin/Site.php:641 +#: src/Module/Admin/Site.php:632 msgid "" "Which community pages should be available for visitors. Local users always " "see both pages." msgstr "" -#: src/Module/Admin/Site.php:642 +#: src/Module/Admin/Site.php:633 msgid "Posts per user on community page" msgstr "" -#: src/Module/Admin/Site.php:642 +#: src/Module/Admin/Site.php:633 msgid "" "The maximum number of posts per user on the community page. (Not valid for " "\"Global Community\")" msgstr "" -#: src/Module/Admin/Site.php:643 +#: src/Module/Admin/Site.php:634 msgid "Disable OStatus support" msgstr "" -#: src/Module/Admin/Site.php:643 +#: src/Module/Admin/Site.php:634 msgid "" "Disable built-in OStatus (StatusNet, GNU Social etc.) compatibility. All " "communications in OStatus are public, so privacy warnings will be " "occasionally displayed." msgstr "" -#: src/Module/Admin/Site.php:644 +#: src/Module/Admin/Site.php:635 msgid "OStatus support can only be enabled if threading is enabled." msgstr "" -#: src/Module/Admin/Site.php:646 +#: src/Module/Admin/Site.php:637 msgid "" "Diaspora support can't be enabled because Friendica was installed into a sub " "directory." msgstr "" -#: src/Module/Admin/Site.php:647 +#: src/Module/Admin/Site.php:638 msgid "Enable Diaspora support" msgstr "" -#: src/Module/Admin/Site.php:647 +#: src/Module/Admin/Site.php:638 msgid "Provide built-in Diaspora network compatibility." msgstr "" -#: src/Module/Admin/Site.php:648 +#: src/Module/Admin/Site.php:639 msgid "Only allow Friendica contacts" msgstr "" -#: src/Module/Admin/Site.php:648 +#: src/Module/Admin/Site.php:639 msgid "" "All contacts must use Friendica protocols. All other built-in communication " "protocols disabled." msgstr "" -#: src/Module/Admin/Site.php:649 +#: src/Module/Admin/Site.php:640 msgid "Verify SSL" msgstr "" -#: src/Module/Admin/Site.php:649 +#: src/Module/Admin/Site.php:640 msgid "" "If you wish, you can turn on strict certificate checking. This will mean you " "cannot connect (at all) to self-signed SSL sites." msgstr "" -#: src/Module/Admin/Site.php:650 +#: src/Module/Admin/Site.php:641 msgid "Proxy user" msgstr "" -#: src/Module/Admin/Site.php:651 +#: src/Module/Admin/Site.php:642 msgid "Proxy URL" msgstr "" -#: src/Module/Admin/Site.php:652 +#: src/Module/Admin/Site.php:643 msgid "Network timeout" msgstr "" -#: src/Module/Admin/Site.php:652 +#: src/Module/Admin/Site.php:643 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "" -#: src/Module/Admin/Site.php:653 +#: src/Module/Admin/Site.php:644 msgid "Maximum Load Average" msgstr "" -#: src/Module/Admin/Site.php:653 +#: src/Module/Admin/Site.php:644 #, php-format msgid "" "Maximum system load before delivery and poll processes are deferred - " "default %d." msgstr "" -#: src/Module/Admin/Site.php:654 +#: src/Module/Admin/Site.php:645 msgid "Maximum Load Average (Frontend)" msgstr "" -#: src/Module/Admin/Site.php:654 +#: src/Module/Admin/Site.php:645 msgid "Maximum system load before the frontend quits service - default 50." msgstr "" -#: src/Module/Admin/Site.php:655 +#: src/Module/Admin/Site.php:646 msgid "Minimal Memory" msgstr "" -#: src/Module/Admin/Site.php:655 +#: src/Module/Admin/Site.php:646 msgid "" "Minimal free memory in MB for the worker. Needs access to /proc/meminfo - " "default 0 (deactivated)." msgstr "" -#: src/Module/Admin/Site.php:656 +#: src/Module/Admin/Site.php:647 msgid "Periodically optimize tables" msgstr "" -#: src/Module/Admin/Site.php:656 +#: src/Module/Admin/Site.php:647 msgid "Periodically optimize tables like the cache and the workerqueue" msgstr "" -#: src/Module/Admin/Site.php:658 +#: src/Module/Admin/Site.php:649 msgid "Discover followers/followings from contacts" msgstr "" -#: src/Module/Admin/Site.php:658 +#: src/Module/Admin/Site.php:649 msgid "" "If enabled, contacts are checked for their followers and following contacts." msgstr "" -#: src/Module/Admin/Site.php:659 +#: src/Module/Admin/Site.php:650 msgid "None - deactivated" msgstr "" -#: src/Module/Admin/Site.php:660 +#: src/Module/Admin/Site.php:651 msgid "" "Local contacts - contacts of our local contacts are discovered for their " "followers/followings." msgstr "" -#: src/Module/Admin/Site.php:661 +#: src/Module/Admin/Site.php:652 msgid "" "Interactors - contacts of our local contacts and contacts who interacted on " "locally visible postings are discovered for their followers/followings." msgstr "" -#: src/Module/Admin/Site.php:663 +#: src/Module/Admin/Site.php:654 msgid "Synchronize the contacts with the directory server" msgstr "" -#: src/Module/Admin/Site.php:663 +#: src/Module/Admin/Site.php:654 msgid "" "if enabled, the system will check periodically for new contacts on the " "defined directory server." msgstr "" -#: src/Module/Admin/Site.php:665 +#: src/Module/Admin/Site.php:656 msgid "Days between requery" msgstr "" -#: src/Module/Admin/Site.php:665 +#: src/Module/Admin/Site.php:656 msgid "Number of days after which a server is requeried for his contacts." msgstr "" -#: src/Module/Admin/Site.php:666 +#: src/Module/Admin/Site.php:657 msgid "Discover contacts from other servers" msgstr "" -#: src/Module/Admin/Site.php:666 +#: src/Module/Admin/Site.php:657 msgid "" "Periodically query other servers for contacts. The system queries Friendica, " "Mastodon and Hubzilla servers." msgstr "" -#: src/Module/Admin/Site.php:667 +#: src/Module/Admin/Site.php:658 msgid "Search the local directory" msgstr "" -#: src/Module/Admin/Site.php:667 +#: src/Module/Admin/Site.php:658 msgid "" "Search the local directory instead of the global directory. When searching " "locally, every search will be executed on the global directory in the " "background. This improves the search results when the search is repeated." msgstr "" -#: src/Module/Admin/Site.php:669 +#: src/Module/Admin/Site.php:660 msgid "Publish server information" msgstr "" -#: src/Module/Admin/Site.php:669 +#: src/Module/Admin/Site.php:660 msgid "" "If enabled, general server and usage data will be published. The data " "contains the name and version of the server, number of users with public " @@ -6513,50 +6513,50 @@ msgid "" "href=\"http://the-federation.info/\">the-federation.info for details." msgstr "" -#: src/Module/Admin/Site.php:671 +#: src/Module/Admin/Site.php:662 msgid "Check upstream version" msgstr "" -#: src/Module/Admin/Site.php:671 +#: src/Module/Admin/Site.php:662 msgid "" "Enables checking for new Friendica versions at github. If there is a new " "version, you will be informed in the admin panel overview." msgstr "" -#: src/Module/Admin/Site.php:672 +#: src/Module/Admin/Site.php:663 msgid "Suppress Tags" msgstr "" -#: src/Module/Admin/Site.php:672 +#: src/Module/Admin/Site.php:663 msgid "Suppress showing a list of hashtags at the end of the posting." msgstr "" -#: src/Module/Admin/Site.php:673 +#: src/Module/Admin/Site.php:664 msgid "Clean database" msgstr "" -#: src/Module/Admin/Site.php:673 +#: src/Module/Admin/Site.php:664 msgid "" "Remove old remote items, orphaned database records and old content from some " "other helper tables." msgstr "" -#: src/Module/Admin/Site.php:674 +#: src/Module/Admin/Site.php:665 msgid "Lifespan of remote items" msgstr "" -#: src/Module/Admin/Site.php:674 +#: src/Module/Admin/Site.php:665 msgid "" "When the database cleanup is enabled, this defines the days after which " "remote items will be deleted. Own items, and marked or filed items are " "always kept. 0 disables this behaviour." msgstr "" -#: src/Module/Admin/Site.php:675 +#: src/Module/Admin/Site.php:666 msgid "Lifespan of unclaimed items" msgstr "" -#: src/Module/Admin/Site.php:675 +#: src/Module/Admin/Site.php:666 msgid "" "When the database cleanup is enabled, this defines the days after which " "unclaimed remote items (mostly content from the relay) will be deleted. " @@ -6564,184 +6564,166 @@ msgid "" "items if set to 0." msgstr "" -#: src/Module/Admin/Site.php:676 +#: src/Module/Admin/Site.php:667 msgid "Lifespan of raw conversation data" msgstr "" -#: src/Module/Admin/Site.php:676 +#: src/Module/Admin/Site.php:667 msgid "" "The conversation data is used for ActivityPub and OStatus, as well as for " "debug purposes. It should be safe to remove it after 14 days, default is 90 " "days." msgstr "" -#: src/Module/Admin/Site.php:677 -msgid "Path to item cache" -msgstr "" - -#: src/Module/Admin/Site.php:677 -msgid "The item caches buffers generated bbcode and external images." -msgstr "" - -#: src/Module/Admin/Site.php:678 -msgid "Cache duration in seconds" -msgstr "" - -#: src/Module/Admin/Site.php:678 -msgid "" -"How long should the cache files be hold? Default value is 86400 seconds (One " -"day). To disable the item cache, set the value to -1." -msgstr "" - -#: src/Module/Admin/Site.php:679 +#: src/Module/Admin/Site.php:668 msgid "Maximum numbers of comments per post" msgstr "" -#: src/Module/Admin/Site.php:679 +#: src/Module/Admin/Site.php:668 msgid "How much comments should be shown for each post? Default value is 100." msgstr "" -#: src/Module/Admin/Site.php:680 +#: src/Module/Admin/Site.php:669 msgid "Maximum numbers of comments per post on the display page" msgstr "" -#: src/Module/Admin/Site.php:680 +#: src/Module/Admin/Site.php:669 msgid "" "How many comments should be shown on the single view for each post? Default " "value is 1000." msgstr "" -#: src/Module/Admin/Site.php:681 +#: src/Module/Admin/Site.php:670 msgid "Temp path" msgstr "" -#: src/Module/Admin/Site.php:681 +#: src/Module/Admin/Site.php:670 msgid "" "If you have a restricted system where the webserver can't access the system " "temp path, enter another path here." msgstr "" -#: src/Module/Admin/Site.php:682 +#: src/Module/Admin/Site.php:671 msgid "Disable picture proxy" msgstr "" -#: src/Module/Admin/Site.php:682 +#: src/Module/Admin/Site.php:671 msgid "" "The picture proxy increases performance and privacy. It shouldn't be used on " "systems with very low bandwidth." msgstr "" -#: src/Module/Admin/Site.php:683 +#: src/Module/Admin/Site.php:672 msgid "Only search in tags" msgstr "" -#: src/Module/Admin/Site.php:683 +#: src/Module/Admin/Site.php:672 msgid "On large systems the text search can slow down the system extremely." msgstr "" -#: src/Module/Admin/Site.php:685 +#: src/Module/Admin/Site.php:674 msgid "New base url" msgstr "" -#: src/Module/Admin/Site.php:685 +#: src/Module/Admin/Site.php:674 msgid "" "Change base url for this server. Sends relocate message to all Friendica and " "Diaspora* contacts of all users." msgstr "" -#: src/Module/Admin/Site.php:687 +#: src/Module/Admin/Site.php:676 msgid "RINO Encryption" msgstr "" -#: src/Module/Admin/Site.php:687 +#: src/Module/Admin/Site.php:676 msgid "Encryption layer between nodes." msgstr "" -#: src/Module/Admin/Site.php:687 src/Module/Admin/Site.php:693 +#: src/Module/Admin/Site.php:676 src/Module/Admin/Site.php:682 #: src/Module/Contact.php:562 src/Module/Settings/TwoFactor/Index.php:118 msgid "Disabled" msgstr "" -#: src/Module/Admin/Site.php:687 +#: src/Module/Admin/Site.php:676 msgid "Enabled" msgstr "" -#: src/Module/Admin/Site.php:689 +#: src/Module/Admin/Site.php:678 msgid "Maximum number of parallel workers" msgstr "" -#: src/Module/Admin/Site.php:689 +#: src/Module/Admin/Site.php:678 #, php-format msgid "" "On shared hosters set this to %d. On larger systems, values of %d are great. " "Default value is %d." msgstr "" -#: src/Module/Admin/Site.php:690 +#: src/Module/Admin/Site.php:679 msgid "Enable fastlane" msgstr "" -#: src/Module/Admin/Site.php:690 +#: src/Module/Admin/Site.php:679 msgid "" "When enabed, the fastlane mechanism starts an additional worker if processes " "with higher priority are blocked by processes of lower priority." msgstr "" -#: src/Module/Admin/Site.php:692 +#: src/Module/Admin/Site.php:681 msgid "Direct relay transfer" msgstr "" -#: src/Module/Admin/Site.php:692 +#: src/Module/Admin/Site.php:681 msgid "" "Enables the direct transfer to other servers without using the relay servers" msgstr "" -#: src/Module/Admin/Site.php:693 +#: src/Module/Admin/Site.php:682 msgid "Relay scope" msgstr "" -#: src/Module/Admin/Site.php:693 +#: src/Module/Admin/Site.php:682 msgid "" "Can be \"all\" or \"tags\". \"all\" means that every public post should be " "received. \"tags\" means that only posts with selected tags should be " "received." msgstr "" -#: src/Module/Admin/Site.php:693 +#: src/Module/Admin/Site.php:682 msgid "all" msgstr "" -#: src/Module/Admin/Site.php:693 +#: src/Module/Admin/Site.php:682 msgid "tags" msgstr "" -#: src/Module/Admin/Site.php:694 +#: src/Module/Admin/Site.php:683 msgid "Server tags" msgstr "" -#: src/Module/Admin/Site.php:694 +#: src/Module/Admin/Site.php:683 msgid "Comma separated list of tags for the \"tags\" subscription." msgstr "" -#: src/Module/Admin/Site.php:695 +#: src/Module/Admin/Site.php:684 msgid "Deny Server tags" msgstr "" -#: src/Module/Admin/Site.php:695 +#: src/Module/Admin/Site.php:684 msgid "Comma separated list of tags that are rejected." msgstr "" -#: src/Module/Admin/Site.php:696 +#: src/Module/Admin/Site.php:685 msgid "Allow user tags" msgstr "" -#: src/Module/Admin/Site.php:696 +#: src/Module/Admin/Site.php:685 msgid "" "If enabled, the tags from the saved searches will used for the \"tags\" " "subscription in addition to the \"relay_server_tags\"." msgstr "" -#: src/Module/Admin/Site.php:699 +#: src/Module/Admin/Site.php:688 msgid "Start Relocation" msgstr "" From a5176cb8412f2a051927390d0d63176b91a0ec84 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Jul 2021 05:41:05 +0000 Subject: [PATCH 010/108] Unused constant removed --- src/Util/Proxy.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Util/Proxy.php b/src/Util/Proxy.php index 16e3e221f..12be746a6 100644 --- a/src/Util/Proxy.php +++ b/src/Util/Proxy.php @@ -21,6 +21,8 @@ namespace Friendica\Util; +use Friendica\Core\Logger; +use Friendica\Core\System; use Friendica\DI; /** @@ -28,12 +30,6 @@ use Friendica\DI; */ class Proxy { - - /** - * Default time to keep images in proxy storage - */ - const DEFAULT_TIME = 86400; // 1 Day - /** * Sizes constants */ @@ -122,6 +118,8 @@ class Proxy $size = ':' . $size; } + Logger::info('Created proxy link', ['url' => $url, 'callstack' => System::callstack(20)]); + // Too long files aren't supported by Apache if (strlen($proxypath) > 250) { return DI::baseUrl() . '/proxy/' . $shortpath . '?url=' . urlencode($url); From 90588ddb8ec811a50eaa843857427b1b6ac4ddd9 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Jul 2021 07:00:35 +0000 Subject: [PATCH 011/108] Avoid proxyfying images that are removed or replaced later --- mod/display.php | 4 ++-- src/Content/Text/BBCode.php | 4 ++++ src/Model/Item.php | 3 --- src/Protocol/ActivityPub/Processor.php | 2 +- src/Protocol/Feed.php | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/mod/display.php b/mod/display.php index c9d39b1db..7a8bca457 100644 --- a/mod/display.php +++ b/mod/display.php @@ -334,8 +334,8 @@ function display_content(App $a, $update = false, $update_uid = 0) $o .= conversation($a, [$item], 'display', $update_uid, false, 'commented', $item_uid); // Preparing the meta header - $description = trim(HTML::toPlaintext(BBCode::convert($item["body"], false), 0, true)); - $title = trim(HTML::toPlaintext(BBCode::convert($item["title"], false), 0, true)); + $description = trim(BBCode::toPlaintext($item["body"])); + $title = trim(BBCode::toPlaintext($item["title"])); $author_name = $item["author-name"]; $image = DI::baseUrl()->remove($item["author-avatar"]); diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 3ecd306b3..b1244d0ac 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -433,6 +433,10 @@ class BBCode */ public static function toPlaintext($text, $keep_urls = true) { + // Remove pictures in advance to avoid unneeded proxy calls + $text = preg_replace("/\[img\=(.*?)\](.*?)\[\/img\]/ism", ' $2 ', $text); + $text = preg_replace("/\[img.*?\[\/img\]/ism", ' ', $text); + $naked_text = HTML::toPlaintext(self::convert($text, false, 0, true), 0, !$keep_urls); return $naked_text; diff --git a/src/Model/Item.php b/src/Model/Item.php index fb88da8a2..a08b934d8 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1008,9 +1008,6 @@ class Item // Check for hashtags in the body and repair or add hashtag links $item['body'] = self::setHashtags($item['body']); - // Fill the cache field - self::putInCache($item); - if (stristr($item['verb'], Activity::POKE)) { $notify_type = Delivery::POKE; } else { diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index f5d8e48de..f4892b6c0 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -744,7 +744,7 @@ class Processor $title = $matches[3]; } - $title = trim(HTML::toPlaintext(BBCode::convert($title, false, BBCode::API, true), 0)); + $title = trim(BBCode::toPlaintext($title)); if (strlen($title) > 20) { $title = substr($title, 0, 20) . '...'; diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index 42f470e23..5738c01d8 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -1199,7 +1199,7 @@ class Feed // Remove the share element before fetching the first line $title = trim(preg_replace("/\[share.*?\](.*?)\[\/share\]/ism","\n$1\n",$item['body'])); - $title = HTML::toPlaintext(BBCode::convert($title, false), 0, true)."\n"; + $title = BBCode::toPlaintext($title)."\n"; $pos = strpos($title, "\n"); $trailer = ""; if (($pos == 0) || ($pos > 100)) { From aed5e4cc960797a25f184d24d7c81265e05d4ee6 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Jul 2021 18:45:49 +0000 Subject: [PATCH 012/108] New struture for post related links --- database.sql | 17 ++++- doc/database.md | 1 + doc/database/db_post-link.md | 31 +++++++++ src/Model/Item.php | 15 ++++- src/Model/Post/Link.php | 122 ++++++++++++++++++++++++++++++++++ src/Module/Photo.php | 15 +++-- static/dbstructure.config.php | 15 ++++- 7 files changed, 206 insertions(+), 10 deletions(-) create mode 100644 doc/database/db_post-link.md create mode 100644 src/Model/Post/Link.php diff --git a/database.sql b/database.sql index b6dcb8ab7..2121fec97 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ --- Friendica 2021.06-rc (Siberian Iris) --- DB_UPDATE_VERSION 1424 +-- Friendica 2021.09-dev (Siberian Iris) +-- DB_UPDATE_VERSION 1425 -- ------------------------------------------ @@ -1103,6 +1103,19 @@ CREATE TABLE IF NOT EXISTS `post-delivery-data` ( FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Delivery data for items'; +-- +-- TABLE post-link +-- +CREATE TABLE IF NOT EXISTS `post-link` ( + `id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID', + `uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri', + `url` varbinary(511) NOT NULL COMMENT 'External URL', + `mimetype` varchar(60) COMMENT '', + PRIMARY KEY(`id`), + UNIQUE INDEX `uri-id-url` (`uri-id`,`url`), + FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE +) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Post related external links'; + -- -- TABLE post-media -- diff --git a/doc/database.md b/doc/database.md index 60e3253fe..51f4ae5c6 100644 --- a/doc/database.md +++ b/doc/database.md @@ -53,6 +53,7 @@ Database Tables | [post-category](help/database/db_post-category) | post relation to categories | | [post-content](help/database/db_post-content) | Content for all posts | | [post-delivery-data](help/database/db_post-delivery-data) | Delivery data for items | +| [post-link](help/database/db_post-link) | Post related external links | | [post-media](help/database/db_post-media) | Attached media | | [post-tag](help/database/db_post-tag) | post relation to tags | | [post-thread](help/database/db_post-thread) | Thread related data | diff --git a/doc/database/db_post-link.md b/doc/database/db_post-link.md new file mode 100644 index 000000000..a16245356 --- /dev/null +++ b/doc/database/db_post-link.md @@ -0,0 +1,31 @@ +Table post-link +=========== + +Post related external links + +Fields +------ + +| Field | Description | Type | Null | Key | Default | Extra | +| -------- | --------------------------------------------------------- | -------------- | ---- | --- | ------- | -------------- | +| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment | +| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | | NULL | | +| url | External URL | varbinary(511) | NO | | NULL | | +| mimetype | | varchar(60) | YES | | NULL | | + +Indexes +------------ + +| Name | Fields | +| ---------- | ------------------- | +| PRIMARY | id | +| uri-id-url | UNIQUE, uri-id, url | + +Foreign Keys +------------ + +| Field | Target Table | Target Field | +|-------|--------------|--------------| +| uri-id | [item-uri](help/database/db_item-uri) | id | + +Return to [database documentation](help/database) diff --git a/src/Model/Item.php b/src/Model/Item.php index a08b934d8..88c973efd 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2755,6 +2755,7 @@ class Item } $attachments = Post\Media::splitAttachments($item['uri-id'], $item['guid'] ?? '', $shared_links); $item['body'] = self::replaceVisualAttachments($attachments, $item['body'] ?? ''); + $item['body'] = Post\Link::insertFromBody($item['uri-id'], $item['body']); $item['body'] = preg_replace("/\s*\[attachment .*?\].*?\[\/attachment\]\s*/ism", "\n", $item['body']); self::putInCache($item); @@ -2780,13 +2781,13 @@ class Item if (!empty($shared_attachments)) { $s = self::addVisualAttachments($shared_attachments, $item, $s, true); - $s = self::addLinkAttachment($shared_attachments, $body, $s, true, []); + $s = self::addLinkAttachment($shared_uri_id, $shared_attachments, $body, $s, true, []); $s = self::addNonVisualAttachments($shared_attachments, $item, $s, true); $body = preg_replace("/\s*\[share .*?\].*?\[\/share\]\s*/ism", '', $body); } $s = self::addVisualAttachments($attachments, $item, $s, false); - $s = self::addLinkAttachment($attachments, $body, $s, false, $shared_links); + $s = self::addLinkAttachment($item['uri-id'], $attachments, $body, $s, false, $shared_links); $s = self::addNonVisualAttachments($attachments, $item, $s, false); // Map. @@ -2967,7 +2968,7 @@ class Item * @param array $ignore_links A list of URLs to ignore * @return string modified content */ - private static function addLinkAttachment(array $attachments, string $body, string $content, bool $shared, array $ignore_links) + private static function addLinkAttachment(int $uriid, array $attachments, string $body, string $content, bool $shared, array $ignore_links) { $stamp1 = microtime(true); // @ToDo Check only for audio and video @@ -3052,6 +3053,14 @@ class Item } } + if (!empty($data['image'])) { + $data['image'] = Post\Link::getByLink($uriid, $data['image']); + } + + if (!empty($data['preview'])) { + $data['preview'] = Post\Link::getByLink($uriid, $data['preview']); + } + // @todo Use a template $rendered = BBCode::convertAttachment('', BBCode::INTERNAL, false, $data); } elseif (!self::containsLink($content, $data['url'], Post\Media::HTML)) { diff --git a/src/Model/Post/Link.php b/src/Model/Post/Link.php new file mode 100644 index 000000000..83df038da --- /dev/null +++ b/src/Model/Post/Link.php @@ -0,0 +1,122 @@ +. + * + */ + +namespace Friendica\Model\Post; + +use Friendica\Core\Logger; +use Friendica\Database\DBA; +use Friendica\DI; +use Friendica\Util\Proxy; + +/** + * Class Link + * + * This Model class handles post related external links + */ +class Link +{ + public static function getByLink(int $uri_id, string $url, $size = '') + { + if (empty($url) || Proxy::isLocalImage($url)) { + return $url; + } + + $link = DBA::selectFirst('post-link', ['id'], ['uri-id' => $uri_id, 'url' => $url]); + if (!empty($link['id'])) { + $id = $link['id']; + Logger::info('Found', ['id' => $id, 'url' => $url]); + } else { + $mime = self::fetchMimeType($url); + + DBA::insert('post-link', ['uri-id' => $uri_id, 'url' => $url, 'mimetype' => $mime]); + $id = DBA::lastInsertId(); + Logger::info('Inserted', ['id' => $id, 'url' => $url]); + } + + if (empty($id)) { + return $url; + } + + $url = DI::baseUrl() . '/photo/link/'; + switch ($size) { + case Proxy::SIZE_MICRO: + $url .= Proxy::PIXEL_MICRO . '/'; + break; + case Proxy::SIZE_THUMB: + $url .= Proxy::PIXEL_THUMB . '/'; + break; + case Proxy::SIZE_SMALL: + $url .= Proxy::PIXEL_SMALL . '/'; + break; + case Proxy::SIZE_MEDIUM: + $url .= Proxy::PIXEL_MEDIUM . '/'; + break; + case Proxy::SIZE_LARGE: + $url .= Proxy::PIXEL_LARGE . '/'; + break; + } + return $url . $id; + } + + private static function fetchMimeType(string $url) + { + $timeout = DI::config()->get('system', 'xrd_timeout'); + $curlResult = DI::httpRequest()->head($url, ['timeout' => $timeout]); + if ($curlResult->isSuccess()) { + if (empty($media['mimetype'])) { + return $curlResult->getHeader('Content-Type'); + } + } + return ''; + } + + /** + * Add external links and replace them in the body + * + * @param integer $uriid + * @param string $body + * @return string Body with replaced links + */ + public static function insertFromBody(int $uriid, string $body) + { + if (preg_match_all("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", $body, $pictures, PREG_SET_ORDER)) { + foreach ($pictures as $picture) { + $body = str_replace($picture[3], self::getByLink($uriid, $picture[3]), $body); + } + } + + if (preg_match_all("/\[img=([^\[\]]*)\]([^\[\]]*)\[\/img\]/Usi", $body, $pictures, PREG_SET_ORDER)) { + foreach ($pictures as $picture) { + if (parse_url($picture[1], PHP_URL_SCHEME)) { + $body = str_replace($picture[1], self::getByLink($uriid, $picture[1]), $body); + } + } + } + + if (preg_match_all("/\[img\]([^\[\]]*)\[\/img\]/ism", $body, $pictures, PREG_SET_ORDER)) { + foreach ($pictures as $picture) { + $body = str_replace($picture[1], self::getByLink($uriid, $picture[1]), $body); + } + } + + return trim($body); + } +} diff --git a/src/Module/Photo.php b/src/Module/Photo.php index 44be9a31a..e669de8a3 100644 --- a/src/Module/Photo.php +++ b/src/Module/Photo.php @@ -176,7 +176,7 @@ class Photo extends BaseModule { switch($type) { case "preview": - $media = DBA::selectFirst('post-media', ['preview', 'url', 'type', 'uri-id'], ['id' => $uid]); + $media = DBA::selectFirst('post-media', ['preview', 'url', 'mimetype', 'type', 'uri-id'], ['id' => $uid]); if (empty($media)) { return false; } @@ -194,9 +194,9 @@ class Photo extends BaseModule return MPhoto::getPhoto($matches[1], $matches[2]); } - return MPhoto::createPhotoForExternalResource($url, (int)local_user()); + return MPhoto::createPhotoForExternalResource($url, (int)local_user(), $media['mimetype']); case "media": - $media = DBA::selectFirst('post-media', ['url', 'uri-id'], ['id' => $uid, 'type' => Post\Media::IMAGE]); + $media = DBA::selectFirst('post-media', ['url', 'mimetype', 'uri-id'], ['id' => $uid, 'type' => Post\Media::IMAGE]); if (empty($media)) { return false; } @@ -205,7 +205,14 @@ class Photo extends BaseModule return MPhoto::getPhoto($matches[1], $matches[2]); } - return MPhoto::createPhotoForExternalResource($media['url'], (int)local_user()); + return MPhoto::createPhotoForExternalResource($media['url'], (int)local_user(), $media['mimetype']); + case "link": + $link = DBA::selectFirst('post-link', ['url', 'mimetype'], ['id' => $uid]); + if (empty($link)) { + return false; + } + + return MPhoto::createPhotoForExternalResource($link['url'], (int)local_user(), $link['mimetype']); case "contact": $contact = Contact::getById($uid, ['uid', 'url', 'avatar', 'photo', 'xmpp', 'addr']); if (empty($contact)) { diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index be939b1a1..c774b8570 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1424); + define('DB_UPDATE_VERSION', 1425); } return [ @@ -1151,6 +1151,19 @@ return [ "PRIMARY" => ["uri-id"], ] ], + "post-link" => [ + "comment" => "Post related external links", + "fields" => [ + "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"], + "uri-id" => ["type" => "int unsigned", "not null" => "1", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the item uri"], + "url" => ["type" => "varbinary(511)", "not null" => "1", "comment" => "External URL"], + "mimetype" => ["type" => "varchar(60)", "comment" => ""], + ], + "indexes" => [ + "PRIMARY" => ["id"], + "uri-id-url" => ["UNIQUE", "uri-id", "url"], + ] + ], "post-media" => [ "comment" => "Attached media", "fields" => [ From 903c646a622f22890e4b33ebf55cae91f1bb49be Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Jul 2021 19:42:17 +0000 Subject: [PATCH 013/108] Style --- src/Model/Post/Link.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Model/Post/Link.php b/src/Model/Post/Link.php index 83df038da..c1cc3ae1e 100644 --- a/src/Model/Post/Link.php +++ b/src/Model/Post/Link.php @@ -45,7 +45,7 @@ class Link Logger::info('Found', ['id' => $id, 'url' => $url]); } else { $mime = self::fetchMimeType($url); - + DBA::insert('post-link', ['uri-id' => $uri_id, 'url' => $url, 'mimetype' => $mime]); $id = DBA::lastInsertId(); Logger::info('Inserted', ['id' => $id, 'url' => $url]); @@ -79,6 +79,7 @@ class Link private static function fetchMimeType(string $url) { $timeout = DI::config()->get('system', 'xrd_timeout'); + $curlResult = DI::httpRequest()->head($url, ['timeout' => $timeout]); if ($curlResult->isSuccess()) { if (empty($media['mimetype'])) { From c06331e690c083a71d67817cd5b7e155e35971dc Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Jul 2021 19:44:08 +0000 Subject: [PATCH 014/108] Changelog updated --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index e262dc93b..a69cfc015 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,6 @@ Version 2021.09 (unreleased) + Friendica Core + Simplified the proxy mechanism. The proxy cache directory (/proxy) can now be removed [annando] Version 2021.07 (2021-07-04) Friendica Core From db90e3bf2527755d4a14186e771d63e8822355b1 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Jul 2021 20:20:39 +0000 Subject: [PATCH 015/108] Remove attachment on plaintext conversion --- src/Content/Text/BBCode.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index b1244d0ac..8eef48704 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -437,6 +437,9 @@ class BBCode $text = preg_replace("/\[img\=(.*?)\](.*?)\[\/img\]/ism", ' $2 ', $text); $text = preg_replace("/\[img.*?\[\/img\]/ism", ' ', $text); + // Remove attachment + $text = self::removeAttachment($text); + $naked_text = HTML::toPlaintext(self::convert($text, false, 0, true), 0, !$keep_urls); return $naked_text; @@ -958,7 +961,7 @@ class BBCode public static function fetchShareAttributes($text) { // See Issue https://github.com/friendica/friendica/issues/10454 - // Hashtags in usernames are expanded to links. This here is a quick fix. + // Hashtags in usernames are expanded to links. This here is a quick fix. $text = preg_replace('/([@!#])\[url\=.*?\](.*?)\[\/url\]/ism', '$1$2', $text); $attributes = []; @@ -2130,8 +2133,8 @@ class BBCode /** * Expand tags to URLs * - * @param string $body - * @return string body with expanded tags + * @param string $body + * @return string body with expanded tags */ public static function expandTags(string $body) { From 3deb384c54529b7c47cc19e0b6e5b9c5ae09fb08 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 5 Jul 2021 21:35:57 +0000 Subject: [PATCH 016/108] Replace the proxify function --- src/Protocol/Feed.php | 2 +- src/Protocol/OStatus.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index 5738c01d8..f137bd234 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -1107,7 +1107,7 @@ class Feed XML::addElement($doc, $entry, "id", $item["uri"]); XML::addElement($doc, $entry, "title", html_entity_decode($title, ENT_QUOTES, 'UTF-8')); - $body = OStatus::formatPicturePost($item['body']); + $body = OStatus::formatPicturePost($item['body'], $item['uri-id']); $body = BBCode::convert($body, false, BBCode::OSTATUS); diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 1019d34cc..869213ade 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1195,7 +1195,7 @@ class OStatus * @return string The cleaned body * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function formatPicturePost($body) + public static function formatPicturePost($body, $uriid) { $siteinfo = BBCode::getAttachedData($body); @@ -1207,7 +1207,7 @@ class OStatus } // Is it a remote picture? Then make a smaller preview here - $preview = ProxyUtils::proxifyUrl($preview, ProxyUtils::SIZE_SMALL); + $preview = Post\Link::getByLink($uriid, $preview, ProxyUtils::SIZE_SMALL); // Is it a local picture? Then make it smaller here $preview = str_replace(["-0.jpg", "-0.png"], ["-2.jpg", "-2.png"], $preview); @@ -1886,7 +1886,7 @@ class OStatus XML::addElement($doc, $entry, "title", html_entity_decode($title, ENT_QUOTES, 'UTF-8')); $body = Post\Media::addAttachmentsToBody($item['uri-id'], $item['body']); - $body = self::formatPicturePost($body); + $body = self::formatPicturePost($body, $item['uri-id']); if (!empty($item['title'])) { $body = "[b]".$item['title']."[/b]\n\n".$body; From f8ce59b41169500edda432a217f55084b88e205c Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 04:36:45 +0000 Subject: [PATCH 017/108] Use the post uri-id for false reshares --- src/Model/Item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/Item.php b/src/Model/Item.php index 88c973efd..720fd76ed 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2781,7 +2781,7 @@ class Item if (!empty($shared_attachments)) { $s = self::addVisualAttachments($shared_attachments, $item, $s, true); - $s = self::addLinkAttachment($shared_uri_id, $shared_attachments, $body, $s, true, []); + $s = self::addLinkAttachment($shared_uri_id ?: $item['uri-id'], $shared_attachments, $body, $s, true, []); $s = self::addNonVisualAttachments($shared_attachments, $item, $s, true); $body = preg_replace("/\s*\[share .*?\].*?\[\/share\]\s*/ism", '', $body); } From cdc18387fdaec1f698436cd4b8f39733cca5f77a Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 05:25:30 +0000 Subject: [PATCH 018/108] Use the uri-id directly in the bbcode converter --- src/Content/Text/BBCode.php | 44 +++++++++++++++++++++---------------- src/Model/Item.php | 3 +-- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 8eef48704..f9cdfd1f9 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -37,6 +37,7 @@ use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Event; use Friendica\Model\Photo; +use Friendica\Model\Post; use Friendica\Model\Tag; use Friendica\Object\Image; use Friendica\Protocol\Activity; @@ -445,13 +446,15 @@ class BBCode return $naked_text; } - private static function proxyUrl($image, $simplehtml = self::INTERNAL) + private static function proxyUrl($image, $simplehtml = self::INTERNAL, $uriid = 0) { // Only send proxied pictures to API and for internal display - if (in_array($simplehtml, [self::INTERNAL, self::API])) { - return ProxyUtils::proxifyUrl($image); - } else { + if (!in_array($simplehtml, [self::INTERNAL, self::API])) { return $image; + } elseif ($uriid) { + return Post\Link::getByLink($uriid, $image); + } else { + return ProxyUtils::proxifyUrl($image); } } @@ -936,7 +939,7 @@ class BBCode return ['body' => $new_body, 'images' => $saved_image]; } - private static function interpolateSavedImagesIntoItemBody($body, array $images) + private static function interpolateSavedImagesIntoItemBody($uriid, $body, array $images) { $newbody = $body; @@ -946,7 +949,7 @@ class BBCode // it loops over the array starting from the first element and going sequentially // to the last element $newbody = str_replace('[$#saved_image' . $cnt . '#$]', - '' . DI::l10n()->t('Image/photo') . '', $newbody); + '' . DI::l10n()->t('Image/photo') . '', $newbody); $cnt++; } @@ -996,11 +999,11 @@ class BBCode * @param callable $callback * @return string The BBCode string with all [share] blocks replaced */ - public static function convertShare($text, callable $callback) + public static function convertShare($text, callable $callback, int $uriid = 0) { $return = preg_replace_callback( "/(.*?)\[share(.*?)\](.*)\[\/share\]/ism", - function ($match) use ($callback) { + function ($match) use ($callback, $uriid) { $attribute_string = $match[2]; $attributes = []; foreach (['author', 'profile', 'avatar', 'link', 'posted', 'guid'] as $field) { @@ -1018,6 +1021,8 @@ class BBCode if (!empty($author_contact['id'])) { $attributes['avatar'] = Contact::getAvatarUrlForId($author_contact['id'], ProxyUtils::SIZE_THUMB); + } elseif ($attributes['avatar'] && $uriid) { + $attributes['avatar'] = Post\Link::getByLink($uriid, $attributes['avatar'], ProxyUtils::SIZE_THUMB); } elseif ($attributes['avatar']) { $attributes['avatar'] = ProxyUtils::proxifyUrl($attributes['avatar'], ProxyUtils::SIZE_THUMB); } @@ -1281,10 +1286,11 @@ class BBCode * @param bool $try_oembed * @param int $simple_html * @param bool $for_plaintext + * @param int $uriid * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function convert(string $text = null, $try_oembed = true, $simple_html = self::INTERNAL, $for_plaintext = false) + public static function convert(string $text = null, $try_oembed = true, $simple_html = self::INTERNAL, $for_plaintext = false, $uriid = 0) { // Accounting for null default column values if (is_null($text) || $text === '') { @@ -1295,8 +1301,8 @@ class BBCode $a = DI::app(); - $text = self::performWithEscapedTags($text, ['code'], function ($text) use ($try_oembed, $simple_html, $for_plaintext, $a) { - $text = self::performWithEscapedTags($text, ['noparse', 'nobb', 'pre'], function ($text) use ($try_oembed, $simple_html, $for_plaintext, $a) { + $text = self::performWithEscapedTags($text, ['code'], function ($text) use ($try_oembed, $simple_html, $for_plaintext, $a, $uriid) { + $text = self::performWithEscapedTags($text, ['noparse', 'nobb', 'pre'], function ($text) use ($try_oembed, $simple_html, $for_plaintext, $a, $uriid) { /* * preg_match_callback function to replace potential Oembed tags with Oembed content * @@ -1580,12 +1586,12 @@ class BBCode // [img=widthxheight]image source[/img] $text = preg_replace_callback( "/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", - function ($matches) use ($simple_html) { + function ($matches) use ($simple_html, $uriid) { if (strpos($matches[3], "data:image/") === 0) { return $matches[0]; } - $matches[3] = self::proxyUrl($matches[3], $simple_html); + $matches[3] = self::proxyUrl($matches[3], $simple_html, $uriid); return "[img=" . $matches[1] . "x" . $matches[2] . "]" . $matches[3] . "[/img]"; }, $text @@ -1595,8 +1601,8 @@ class BBCode $text = preg_replace("/\[zmg\=([0-9]*)x([0-9]*)\](.*?)\[\/zmg\]/ism", '', $text); $text = preg_replace_callback("/\[img\=(.*?)\](.*?)\[\/img\]/ism", - function ($matches) use ($simple_html) { - $matches[1] = self::proxyUrl($matches[1], $simple_html); + function ($matches) use ($simple_html, $uriid) { + $matches[1] = self::proxyUrl($matches[1], $simple_html, $uriid); $matches[2] = htmlspecialchars($matches[2], ENT_COMPAT); return '' . $matches[2] . ''; }, @@ -1606,12 +1612,12 @@ class BBCode // [img]pathtoimage[/img] $text = preg_replace_callback( "/\[img\](.*?)\[\/img\]/ism", - function ($matches) use ($simple_html) { + function ($matches) use ($simple_html, $uriid) { if (strpos($matches[1], "data:image/") === 0) { return $matches[0]; } - $matches[1] = self::proxyUrl($matches[1], $simple_html); + $matches[1] = self::proxyUrl($matches[1], $simple_html, $uriid); return "[img]" . $matches[1] . "[/img]"; }, $text @@ -1856,10 +1862,10 @@ class BBCode $text, function (array $attributes, array $author_contact, $content, $is_quote_share) use ($simple_html) { return self::convertShareCallback($attributes, $author_contact, $content, $is_quote_share, $simple_html); - } + }, $uriid ); - $text = self::interpolateSavedImagesIntoItemBody($text, $saved_image); + $text = self::interpolateSavedImagesIntoItemBody($uriid, $text, $saved_image); return $text; }); // Escaped noparse, nobb, pre diff --git a/src/Model/Item.php b/src/Model/Item.php index 720fd76ed..6fe361914 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2640,7 +2640,7 @@ class Item ) { self::addRedirToImageTags($item); - $item['rendered-html'] = BBCode::convert($item['body']); + $item['rendered-html'] = BBCode::convert($item['body'], true, BBCode::INTERNAL, false, $item['uri-id']); $item['rendered-hash'] = hash('md5', BBCode::VERSION . '::' . $body); $hook_data = ['item' => $item, 'rendered-html' => $item['rendered-html'], 'rendered-hash' => $item['rendered-hash']]; @@ -2755,7 +2755,6 @@ class Item } $attachments = Post\Media::splitAttachments($item['uri-id'], $item['guid'] ?? '', $shared_links); $item['body'] = self::replaceVisualAttachments($attachments, $item['body'] ?? ''); - $item['body'] = Post\Link::insertFromBody($item['uri-id'], $item['body']); $item['body'] = preg_replace("/\s*\[attachment .*?\].*?\[\/attachment\]\s*/ism", "\n", $item['body']); self::putInCache($item); From 21cc2d28a3c9005e93a6f453b91c2e60b418d206 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 06:38:15 +0000 Subject: [PATCH 019/108] Proxy removed in API --- include/api.php | 44 ++++++++-------------------------------- tests/legacy/ApiTest.php | 10 ++++----- 2 files changed, 13 insertions(+), 41 deletions(-) diff --git a/include/api.php b/include/api.php index 51e430332..ef1c2e84a 100644 --- a/include/api.php +++ b/include/api.php @@ -64,7 +64,6 @@ use Friendica\Security\OAuth1\OAuthUtil; use Friendica\Util\DateTimeFormat; use Friendica\Util\Images; use Friendica\Util\Network; -use Friendica\Util\Proxy as ProxyUtils; use Friendica\Util\Strings; use Friendica\Util\XML; @@ -2552,10 +2551,10 @@ function api_convert_item($item) { $body = api_add_attachments_to_body($item); - $entities = api_get_entitities($statustext, $body); + $entities = api_get_entitities($statustext, $body, $item['uri-id']); // Add pictures to the attachment array and remove them from the body - $attachments = api_get_attachments($body); + $attachments = api_get_attachments($body, $item['uri-id']); // Workaround for ostatus messages where the title is identically to the body $html = BBCode::convert(api_clean_plain_items($body), false, BBCode::API, true); @@ -2654,7 +2653,7 @@ function api_add_attachments_to_body(array $item) * @return array * @throws InternalServerErrorException */ -function api_get_attachments(&$body) +function api_get_attachments(&$body, $uriid) { $body = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $body); $body = preg_replace("/\[img\=(.*?)\](.*?)\[\/img\]/ism", '[img]$1[/img]', $body); @@ -2675,11 +2674,7 @@ function api_get_attachments(&$body) $imagedata = Images::getInfoFromURLCached($image); if ($imagedata) { - if (DI::config()->get("system", "proxy_disabled")) { - $attachments[] = ["url" => $image, "mimetype" => $imagedata["mime"], "size" => $imagedata["size"]]; - } else { - $attachments[] = ["url" => ProxyUtils::proxifyUrl($image), "mimetype" => $imagedata["mime"], "size" => $imagedata["size"]]; - } + $attachments[] = ["url" => Post\Link::getByLink($uriid, $image), "mimetype" => $imagedata["mime"], "size" => $imagedata["size"]]; } } @@ -2695,7 +2690,7 @@ function api_get_attachments(&$body) * @throws InternalServerErrorException * @todo Links at the first character of the post */ -function api_get_entitities(&$text, $bbcode) +function api_get_entitities(&$text, $bbcode, $uriid) { $include_entities = strtolower($_REQUEST['include_entities'] ?? 'false'); @@ -2703,7 +2698,7 @@ function api_get_entitities(&$text, $bbcode) preg_match_all("/\[img](.*?)\[\/img\]/ism", $bbcode, $images); foreach ($images[1] as $image) { - $replace = ProxyUtils::proxifyUrl($image); + $replace = Post\Link::getByLink($uriid, $image); $text = str_replace($image, $replace, $text); } return []; @@ -2815,31 +2810,8 @@ function api_get_entitities(&$text, $bbcode) if (!($start === false)) { $image = Images::getInfoFromURLCached($url); if ($image) { - // If image cache is activated, then use the following sizes: - // thumb (150), small (340), medium (600) and large (1024) - if (!DI::config()->get("system", "proxy_disabled")) { - $media_url = ProxyUtils::proxifyUrl($url); - - $sizes = []; - $scale = Images::getScalingDimensions($image[0], $image[1], 150); - $sizes["thumb"] = ["w" => $scale["width"], "h" => $scale["height"], "resize" => "fit"]; - - if (($image[0] > 150) || ($image[1] > 150)) { - $scale = Images::getScalingDimensions($image[0], $image[1], 340); - $sizes["small"] = ["w" => $scale["width"], "h" => $scale["height"], "resize" => "fit"]; - } - - $scale = Images::getScalingDimensions($image[0], $image[1], 600); - $sizes["medium"] = ["w" => $scale["width"], "h" => $scale["height"], "resize" => "fit"]; - - if (($image[0] > 600) || ($image[1] > 600)) { - $scale = Images::getScalingDimensions($image[0], $image[1], 1024); - $sizes["large"] = ["w" => $scale["width"], "h" => $scale["height"], "resize" => "fit"]; - } - } else { - $media_url = $url; - $sizes["medium"] = ["w" => $image[0], "h" => $image[1], "resize" => "fit"]; - } + $media_url = Post\Link::getByLink($uriid, $url); + $sizes["medium"] = ["w" => $image[0], "h" => $image[1], "resize" => "fit"]; $entities["media"][] = [ "id" => $start+1, diff --git a/tests/legacy/ApiTest.php b/tests/legacy/ApiTest.php index c94571d85..8fe0771be 100644 --- a/tests/legacy/ApiTest.php +++ b/tests/legacy/ApiTest.php @@ -2344,7 +2344,7 @@ class ApiTest extends FixtureTest public function testApiGetAttachments() { $body = 'body'; - self::assertEmpty(api_get_attachments($body)); + self::assertEmpty(api_get_attachments($body, 0)); } /** @@ -2355,7 +2355,7 @@ class ApiTest extends FixtureTest public function testApiGetAttachmentsWithImage() { $body = '[img]http://via.placeholder.com/1x1.png[/img]'; - self::assertIsArray(api_get_attachments($body)); + self::assertIsArray(api_get_attachments($body, 0)); } /** @@ -2367,7 +2367,7 @@ class ApiTest extends FixtureTest { $_SERVER['HTTP_USER_AGENT'] = 'AndStatus'; $body = '[img]http://via.placeholder.com/1x1.png[/img]'; - self::assertIsArray(api_get_attachments($body)); + self::assertIsArray(api_get_attachments($body, 0)); } /** @@ -2378,7 +2378,7 @@ class ApiTest extends FixtureTest public function testApiGetEntitities() { $text = 'text'; - self::assertIsArray(api_get_entitities($text, 'bbcode')); + self::assertIsArray(api_get_entitities($text, 'bbcode', 0)); } /** @@ -2390,7 +2390,7 @@ class ApiTest extends FixtureTest { $_REQUEST['include_entities'] = 'true'; $text = 'text'; - $result = api_get_entitities($text, 'bbcode'); + $result = api_get_entitities($text, 'bbcode', 0); self::assertIsArray($result['hashtags']); self::assertIsArray($result['symbols']); self::assertIsArray($result['urls']); From dac27ead7a1dfe8814b194cb6cd2bcb88a81f782 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 06:44:18 +0000 Subject: [PATCH 020/108] Proxy settings removed --- src/Module/Admin/Site.php | 3 --- src/Util/Proxy.php | 8 +------- view/templates/admin/site.tpl | 1 - view/theme/frio/templates/admin/site.tpl | 1 - 4 files changed, 1 insertion(+), 12 deletions(-) diff --git a/src/Module/Admin/Site.php b/src/Module/Admin/Site.php index 3dde6c124..068b01326 100644 --- a/src/Module/Admin/Site.php +++ b/src/Module/Admin/Site.php @@ -198,7 +198,6 @@ class Site extends BaseAdmin $max_display_comments = (!empty($_POST['max_display_comments']) ? intval($_POST['max_display_comments']) : 0); $temppath = (!empty($_POST['temppath']) ? Strings::escapeTags(trim($_POST['temppath'])) : ''); $singleuser = (!empty($_POST['singleuser']) ? Strings::escapeTags(trim($_POST['singleuser'])) : ''); - $proxy_disabled = !empty($_POST['proxy_disabled']); $only_tag_search = !empty($_POST['only_tag_search']); $rino = (!empty($_POST['rino']) ? intval($_POST['rino']) : 0); $check_new_version_url = (!empty($_POST['check_new_version_url']) ? Strings::escapeTags(trim($_POST['check_new_version_url'])) : 'none'); @@ -402,7 +401,6 @@ class Site extends BaseAdmin DI::config()->set('system', 'temppath', $temppath); - DI::config()->set('system', 'proxy_disabled' , $proxy_disabled); DI::config()->set('system', 'only_tag_search' , $only_tag_search); DI::config()->set('system', 'worker_queues' , $worker_queues); @@ -668,7 +666,6 @@ class Site extends BaseAdmin '$max_comments' => ['max_comments', DI::l10n()->t('Maximum numbers of comments per post'), DI::config()->get('system', 'max_comments'), DI::l10n()->t('How much comments should be shown for each post? Default value is 100.')], '$max_display_comments' => ['max_display_comments', DI::l10n()->t('Maximum numbers of comments per post on the display page'), DI::config()->get('system', 'max_display_comments'), DI::l10n()->t('How many comments should be shown on the single view for each post? Default value is 1000.')], '$temppath' => ['temppath', DI::l10n()->t('Temp path'), DI::config()->get('system', 'temppath'), DI::l10n()->t('If you have a restricted system where the webserver can\'t access the system temp path, enter another path here.')], - '$proxy_disabled' => ['proxy_disabled', DI::l10n()->t('Disable picture proxy'), DI::config()->get('system', 'proxy_disabled'), DI::l10n()->t('The picture proxy increases performance and privacy. It shouldn\'t be used on systems with very low bandwidth.')], '$only_tag_search' => ['only_tag_search', DI::l10n()->t('Only search in tags'), DI::config()->get('system', 'only_tag_search'), DI::l10n()->t('On large systems the text search can slow down the system extremely.')], '$relocate_url' => ['relocate_url', DI::l10n()->t('New base url'), DI::baseUrl()->get(), DI::l10n()->t('Change base url for this server. Sends relocate message to all Friendica and Diaspora* contacts of all users.')], diff --git a/src/Util/Proxy.php b/src/Util/Proxy.php index 12be746a6..443725a3d 100644 --- a/src/Util/Proxy.php +++ b/src/Util/Proxy.php @@ -72,8 +72,7 @@ class Proxy * Transform a remote URL into a local one. * * This function only performs the URL replacement on http URL and if the - * provided URL isn't local, "the isn't deactivated" (sic) and if the config - * system.proxy_disabled is set to false. + * provided URL isn't local * * @param string $url The URL to proxyfy * @param string $size One of the ProxyUtils::SIZE_* constants @@ -91,11 +90,6 @@ class Proxy return $url; } - // Is the proxy disabled? - if (DI::config()->get('system', 'proxy_disabled')) { - return $url; - } - // Image URL may have encoded ampersands for display which aren't desirable for proxy $url = html_entity_decode($url, ENT_NOQUOTES, 'utf-8'); diff --git a/view/templates/admin/site.tpl b/view/templates/admin/site.tpl index 940599200..64d49d3a3 100644 --- a/view/templates/admin/site.tpl +++ b/view/templates/admin/site.tpl @@ -108,7 +108,6 @@ {{include file="field_checkbox.tpl" field=$only_tag_search}} {{include file="field_input.tpl" field=$max_comments}} {{include file="field_input.tpl" field=$max_display_comments}} - {{include file="field_checkbox.tpl" field=$proxy_disabled}} {{include file="field_checkbox.tpl" field=$dbclean}} {{include file="field_input.tpl" field=$dbclean_expire_days}} {{include file="field_input.tpl" field=$dbclean_unclaimed}} diff --git a/view/theme/frio/templates/admin/site.tpl b/view/theme/frio/templates/admin/site.tpl index 97d5907a6..ad8715177 100644 --- a/view/theme/frio/templates/admin/site.tpl +++ b/view/theme/frio/templates/admin/site.tpl @@ -243,7 +243,6 @@ {{include file="field_checkbox.tpl" field=$only_tag_search}} {{include file="field_input.tpl" field=$max_comments}} {{include file="field_input.tpl" field=$max_display_comments}} - {{include file="field_checkbox.tpl" field=$proxy_disabled}} {{include file="field_checkbox.tpl" field=$dbclean}} {{include file="field_input.tpl" field=$dbclean_expire_days}} {{include file="field_input.tpl" field=$dbclean_unclaimed}} From 93309a372869bfdd6e3e3add6fb9034d60f0d2f9 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 06:45:53 +0000 Subject: [PATCH 021/108] Quit on empty uri-id --- src/Model/Post/Link.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/Post/Link.php b/src/Model/Post/Link.php index c1cc3ae1e..0a593ddee 100644 --- a/src/Model/Post/Link.php +++ b/src/Model/Post/Link.php @@ -35,7 +35,7 @@ class Link { public static function getByLink(int $uri_id, string $url, $size = '') { - if (empty($url) || Proxy::isLocalImage($url)) { + if (empty($uri_id) || empty($url) || Proxy::isLocalImage($url)) { return $url; } From 59a77ceac876168a8e26a50993a108042e16eb7f Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 07:16:46 +0000 Subject: [PATCH 022/108] Updated messages.po --- view/lang/C/messages.po | 458 ++++++++++++++++++++-------------------- 1 file changed, 224 insertions(+), 234 deletions(-) diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index ab335421d..01ec1810d 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2021.09-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-07-05 05:14+0000\n" +"POT-Creation-Date: 2021-07-06 07:15+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,26 +18,26 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" -#: include/api.php:1136 +#: include/api.php:1135 #, php-format msgid "Daily posting limit of %d post reached. The post was rejected." msgid_plural "Daily posting limit of %d posts reached. The post was rejected." msgstr[0] "" msgstr[1] "" -#: include/api.php:1150 +#: include/api.php:1149 #, php-format msgid "Weekly posting limit of %d post reached. The post was rejected." msgid_plural "Weekly posting limit of %d posts reached. The post was rejected." msgstr[0] "" msgstr[1] "" -#: include/api.php:1164 +#: include/api.php:1163 #, php-format msgid "Monthly posting limit of %d post reached. The post was rejected." msgstr "" -#: include/api.php:4527 mod/photos.php:106 mod/photos.php:210 +#: include/api.php:4499 mod/photos.php:106 mod/photos.php:210 #: mod/photos.php:638 mod/photos.php:1042 mod/photos.php:1059 #: mod/photos.php:1608 src/Model/User.php:1114 src/Model/User.php:1122 #: src/Model/User.php:1130 src/Module/Settings/Profile/Photo/Crop.php:98 @@ -54,7 +54,7 @@ msgstr "" msgid "%1$s poked %2$s" msgstr "" -#: include/conversation.php:228 src/Model/Item.php:2609 +#: include/conversation.php:228 src/Model/Item.php:2606 msgid "event" msgstr "" @@ -62,7 +62,7 @@ msgstr "" msgid "status" msgstr "" -#: include/conversation.php:236 mod/tagger.php:90 src/Model/Item.php:2611 +#: include/conversation.php:236 mod/tagger.php:90 src/Model/Item.php:2608 msgid "photo" msgstr "" @@ -1366,7 +1366,7 @@ msgstr "" msgid "Basic" msgstr "" -#: mod/events.php:577 src/Module/Admin/Site.php:575 src/Module/Contact.php:961 +#: mod/events.php:577 src/Module/Admin/Site.php:573 src/Module/Contact.php:961 #: src/Module/Profile/Profile.php:245 msgid "Advanced" msgstr "" @@ -2175,7 +2175,7 @@ msgstr "" #: mod/settings.php:540 mod/settings.php:638 mod/settings.php:773 #: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87 -#: src/Module/Admin/Logs/Settings.php:82 src/Module/Admin/Site.php:570 +#: src/Module/Admin/Logs/Settings.php:82 src/Module/Admin/Site.php:568 #: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:66 #: src/Module/Settings/Delegation.php:170 src/Module/Settings/Display.php:189 msgid "Save Settings" @@ -3634,39 +3634,39 @@ msgstr "" msgid "last" msgstr "" -#: src/Content/Text/BBCode.php:942 src/Content/Text/BBCode.php:1613 -#: src/Content/Text/BBCode.php:1614 +#: src/Content/Text/BBCode.php:952 src/Content/Text/BBCode.php:1626 +#: src/Content/Text/BBCode.php:1627 msgid "Image/photo" msgstr "" -#: src/Content/Text/BBCode.php:1072 +#: src/Content/Text/BBCode.php:1084 #, php-format msgid "" "%2$s %3$s" msgstr "" -#: src/Content/Text/BBCode.php:1097 src/Model/Item.php:3137 -#: src/Model/Item.php:3143 src/Model/Item.php:3144 +#: src/Content/Text/BBCode.php:1109 src/Model/Item.php:3142 +#: src/Model/Item.php:3148 src/Model/Item.php:3149 msgid "Link to source" msgstr "" -#: src/Content/Text/BBCode.php:1531 src/Content/Text/HTML.php:951 +#: src/Content/Text/BBCode.php:1544 src/Content/Text/HTML.php:951 msgid "Click to open/close" msgstr "" -#: src/Content/Text/BBCode.php:1562 +#: src/Content/Text/BBCode.php:1575 msgid "$1 wrote:" msgstr "" -#: src/Content/Text/BBCode.php:1616 src/Content/Text/BBCode.php:1617 +#: src/Content/Text/BBCode.php:1629 src/Content/Text/BBCode.php:1630 msgid "Encrypted content" msgstr "" -#: src/Content/Text/BBCode.php:1830 +#: src/Content/Text/BBCode.php:1843 msgid "Invalid source protocol" msgstr "" -#: src/Content/Text/BBCode.php:1845 +#: src/Content/Text/BBCode.php:1858 msgid "Invalid link protocol" msgstr "" @@ -4814,33 +4814,33 @@ msgstr "" msgid "Edit groups" msgstr "" -#: src/Model/Item.php:1663 +#: src/Model/Item.php:1660 #, php-format msgid "Detected languages in this post:\\n%s" msgstr "" -#: src/Model/Item.php:2613 +#: src/Model/Item.php:2610 msgid "activity" msgstr "" -#: src/Model/Item.php:2615 +#: src/Model/Item.php:2612 msgid "comment" msgstr "" -#: src/Model/Item.php:2618 +#: src/Model/Item.php:2615 msgid "post" msgstr "" -#: src/Model/Item.php:2732 +#: src/Model/Item.php:2729 #, php-format msgid "Content warning: %s" msgstr "" -#: src/Model/Item.php:3102 +#: src/Model/Item.php:3107 msgid "bytes" msgstr "" -#: src/Model/Item.php:3131 src/Model/Item.php:3132 +#: src/Model/Item.php:3136 src/Model/Item.php:3137 msgid "View on separate page" msgstr "" @@ -5237,7 +5237,7 @@ msgstr "" #: src/Module/Admin/Blocklist/Server.php:88 src/Module/Admin/Federation.php:159 #: src/Module/Admin/Item/Delete.php:65 src/Module/Admin/Logs/Settings.php:80 #: src/Module/Admin/Logs/View.php:64 src/Module/Admin/Queue.php:72 -#: src/Module/Admin/Site.php:567 src/Module/Admin/Summary.php:232 +#: src/Module/Admin/Site.php:565 src/Module/Admin/Summary.php:232 #: src/Module/Admin/Themes/Details.php:90 src/Module/Admin/Themes/Index.php:111 #: src/Module/Admin/Tos.php:58 src/Module/Admin/Users/Active.php:136 #: src/Module/Admin/Users/Blocked.php:137 src/Module/Admin/Users/Create.php:61 @@ -5791,281 +5791,281 @@ msgstr "" msgid "Relocation started. Could take a while to complete." msgstr "" -#: src/Module/Admin/Site.php:246 +#: src/Module/Admin/Site.php:245 msgid "Invalid storage backend setting value." msgstr "" -#: src/Module/Admin/Site.php:438 src/Module/Settings/Display.php:134 +#: src/Module/Admin/Site.php:436 src/Module/Settings/Display.php:134 msgid "No special theme for mobile devices" msgstr "" -#: src/Module/Admin/Site.php:455 src/Module/Settings/Display.php:144 +#: src/Module/Admin/Site.php:453 src/Module/Settings/Display.php:144 #, php-format msgid "%s - (Experimental)" msgstr "" -#: src/Module/Admin/Site.php:467 +#: src/Module/Admin/Site.php:465 msgid "No community page for local users" msgstr "" -#: src/Module/Admin/Site.php:468 +#: src/Module/Admin/Site.php:466 msgid "No community page" msgstr "" -#: src/Module/Admin/Site.php:469 +#: src/Module/Admin/Site.php:467 msgid "Public postings from users of this site" msgstr "" -#: src/Module/Admin/Site.php:470 +#: src/Module/Admin/Site.php:468 msgid "Public postings from the federated network" msgstr "" -#: src/Module/Admin/Site.php:471 +#: src/Module/Admin/Site.php:469 msgid "Public postings from local users and the federated network" msgstr "" -#: src/Module/Admin/Site.php:477 +#: src/Module/Admin/Site.php:475 msgid "Multi user instance" msgstr "" -#: src/Module/Admin/Site.php:504 +#: src/Module/Admin/Site.php:502 msgid "Closed" msgstr "" -#: src/Module/Admin/Site.php:505 +#: src/Module/Admin/Site.php:503 msgid "Requires approval" msgstr "" -#: src/Module/Admin/Site.php:506 +#: src/Module/Admin/Site.php:504 msgid "Open" msgstr "" -#: src/Module/Admin/Site.php:510 src/Module/Install.php:215 +#: src/Module/Admin/Site.php:508 src/Module/Install.php:215 msgid "No SSL policy, links will track page SSL state" msgstr "" -#: src/Module/Admin/Site.php:511 src/Module/Install.php:216 +#: src/Module/Admin/Site.php:509 src/Module/Install.php:216 msgid "Force all links to use SSL" msgstr "" -#: src/Module/Admin/Site.php:512 src/Module/Install.php:217 +#: src/Module/Admin/Site.php:510 src/Module/Install.php:217 msgid "Self-signed certificate, use SSL for local links only (discouraged)" msgstr "" -#: src/Module/Admin/Site.php:516 +#: src/Module/Admin/Site.php:514 msgid "Don't check" msgstr "" -#: src/Module/Admin/Site.php:517 +#: src/Module/Admin/Site.php:515 msgid "check the stable version" msgstr "" -#: src/Module/Admin/Site.php:518 +#: src/Module/Admin/Site.php:516 msgid "check the development version" msgstr "" -#: src/Module/Admin/Site.php:522 +#: src/Module/Admin/Site.php:520 msgid "none" msgstr "" -#: src/Module/Admin/Site.php:523 +#: src/Module/Admin/Site.php:521 msgid "Local contacts" msgstr "" -#: src/Module/Admin/Site.php:524 +#: src/Module/Admin/Site.php:522 msgid "Interactors" msgstr "" -#: src/Module/Admin/Site.php:537 +#: src/Module/Admin/Site.php:535 msgid "Database (legacy)" msgstr "" -#: src/Module/Admin/Site.php:568 src/Module/BaseAdmin.php:90 +#: src/Module/Admin/Site.php:566 src/Module/BaseAdmin.php:90 msgid "Site" msgstr "" -#: src/Module/Admin/Site.php:569 +#: src/Module/Admin/Site.php:567 msgid "General Information" msgstr "" -#: src/Module/Admin/Site.php:571 +#: src/Module/Admin/Site.php:569 msgid "Republish users to directory" msgstr "" -#: src/Module/Admin/Site.php:572 src/Module/Register.php:139 +#: src/Module/Admin/Site.php:570 src/Module/Register.php:139 msgid "Registration" msgstr "" -#: src/Module/Admin/Site.php:573 +#: src/Module/Admin/Site.php:571 msgid "File upload" msgstr "" -#: src/Module/Admin/Site.php:574 +#: src/Module/Admin/Site.php:572 msgid "Policies" msgstr "" -#: src/Module/Admin/Site.php:576 +#: src/Module/Admin/Site.php:574 msgid "Auto Discovered Contact Directory" msgstr "" -#: src/Module/Admin/Site.php:577 +#: src/Module/Admin/Site.php:575 msgid "Performance" msgstr "" -#: src/Module/Admin/Site.php:578 +#: src/Module/Admin/Site.php:576 msgid "Worker" msgstr "" -#: src/Module/Admin/Site.php:579 +#: src/Module/Admin/Site.php:577 msgid "Message Relay" msgstr "" -#: src/Module/Admin/Site.php:580 +#: src/Module/Admin/Site.php:578 msgid "" "Use the command \"console relay\" in the command line to add or remove " "relays." msgstr "" -#: src/Module/Admin/Site.php:581 +#: src/Module/Admin/Site.php:579 msgid "The system is not subscribed to any relays at the moment." msgstr "" -#: src/Module/Admin/Site.php:582 +#: src/Module/Admin/Site.php:580 msgid "The system is currently subscribed to the following relays:" msgstr "" -#: src/Module/Admin/Site.php:584 +#: src/Module/Admin/Site.php:582 msgid "Relocate Instance" msgstr "" -#: src/Module/Admin/Site.php:585 +#: src/Module/Admin/Site.php:583 msgid "" "Warning! Advanced function. Could make this server " "unreachable." msgstr "" -#: src/Module/Admin/Site.php:589 +#: src/Module/Admin/Site.php:587 msgid "Site name" msgstr "" -#: src/Module/Admin/Site.php:590 +#: src/Module/Admin/Site.php:588 msgid "Sender Email" msgstr "" -#: src/Module/Admin/Site.php:590 +#: src/Module/Admin/Site.php:588 msgid "" "The email address your server shall use to send notification emails from." msgstr "" -#: src/Module/Admin/Site.php:591 +#: src/Module/Admin/Site.php:589 msgid "Name of the system actor" msgstr "" -#: src/Module/Admin/Site.php:591 +#: src/Module/Admin/Site.php:589 msgid "" "Name of the internal system account that is used to perform ActivityPub " "requests. This must be an unused username. If set, this can't be changed " "again." msgstr "" -#: src/Module/Admin/Site.php:592 +#: src/Module/Admin/Site.php:590 msgid "Banner/Logo" msgstr "" -#: src/Module/Admin/Site.php:593 +#: src/Module/Admin/Site.php:591 msgid "Email Banner/Logo" msgstr "" -#: src/Module/Admin/Site.php:594 +#: src/Module/Admin/Site.php:592 msgid "Shortcut icon" msgstr "" -#: src/Module/Admin/Site.php:594 +#: src/Module/Admin/Site.php:592 msgid "Link to an icon that will be used for browsers." msgstr "" -#: src/Module/Admin/Site.php:595 +#: src/Module/Admin/Site.php:593 msgid "Touch icon" msgstr "" -#: src/Module/Admin/Site.php:595 +#: src/Module/Admin/Site.php:593 msgid "Link to an icon that will be used for tablets and mobiles." msgstr "" -#: src/Module/Admin/Site.php:596 +#: src/Module/Admin/Site.php:594 msgid "Additional Info" msgstr "" -#: src/Module/Admin/Site.php:596 +#: src/Module/Admin/Site.php:594 #, php-format msgid "" "For public servers: you can add additional information here that will be " "listed at %s/servers." msgstr "" -#: src/Module/Admin/Site.php:597 +#: src/Module/Admin/Site.php:595 msgid "System language" msgstr "" -#: src/Module/Admin/Site.php:598 +#: src/Module/Admin/Site.php:596 msgid "System theme" msgstr "" -#: src/Module/Admin/Site.php:598 +#: src/Module/Admin/Site.php:596 msgid "" "Default system theme - may be over-ridden by user profiles - Change default theme settings" msgstr "" -#: src/Module/Admin/Site.php:599 +#: src/Module/Admin/Site.php:597 msgid "Mobile system theme" msgstr "" -#: src/Module/Admin/Site.php:599 +#: src/Module/Admin/Site.php:597 msgid "Theme for mobile devices" msgstr "" -#: src/Module/Admin/Site.php:600 src/Module/Install.php:225 +#: src/Module/Admin/Site.php:598 src/Module/Install.php:225 msgid "SSL link policy" msgstr "" -#: src/Module/Admin/Site.php:600 src/Module/Install.php:227 +#: src/Module/Admin/Site.php:598 src/Module/Install.php:227 msgid "Determines whether generated links should be forced to use SSL" msgstr "" -#: src/Module/Admin/Site.php:601 +#: src/Module/Admin/Site.php:599 msgid "Force SSL" msgstr "" -#: src/Module/Admin/Site.php:601 +#: src/Module/Admin/Site.php:599 msgid "" "Force all Non-SSL requests to SSL - Attention: on some systems it could lead " "to endless loops." msgstr "" -#: src/Module/Admin/Site.php:602 +#: src/Module/Admin/Site.php:600 msgid "Hide help entry from navigation menu" msgstr "" -#: src/Module/Admin/Site.php:602 +#: src/Module/Admin/Site.php:600 msgid "" "Hides the menu entry for the Help pages from the navigation menu. You can " "still access it calling /help directly." msgstr "" -#: src/Module/Admin/Site.php:603 +#: src/Module/Admin/Site.php:601 msgid "Single user instance" msgstr "" -#: src/Module/Admin/Site.php:603 +#: src/Module/Admin/Site.php:601 msgid "Make this instance multi-user or single-user for the named user" msgstr "" -#: src/Module/Admin/Site.php:605 +#: src/Module/Admin/Site.php:603 msgid "File storage backend" msgstr "" -#: src/Module/Admin/Site.php:605 +#: src/Module/Admin/Site.php:603 msgid "" "The backend used to store uploaded data. If you change the storage backend, " "you can manually move the existing files. If you do not do so, the files " @@ -6074,202 +6074,202 @@ msgid "" "for more information about the choices and the moving procedure." msgstr "" -#: src/Module/Admin/Site.php:607 +#: src/Module/Admin/Site.php:605 msgid "Maximum image size" msgstr "" -#: src/Module/Admin/Site.php:607 +#: src/Module/Admin/Site.php:605 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "" -#: src/Module/Admin/Site.php:608 +#: src/Module/Admin/Site.php:606 msgid "Maximum image length" msgstr "" -#: src/Module/Admin/Site.php:608 +#: src/Module/Admin/Site.php:606 msgid "" "Maximum length in pixels of the longest side of uploaded images. Default is " "-1, which means no limits." msgstr "" -#: src/Module/Admin/Site.php:609 +#: src/Module/Admin/Site.php:607 msgid "JPEG image quality" msgstr "" -#: src/Module/Admin/Site.php:609 +#: src/Module/Admin/Site.php:607 msgid "" "Uploaded JPEGS will be saved at this quality setting [0-100]. Default is " "100, which is full quality." msgstr "" -#: src/Module/Admin/Site.php:611 +#: src/Module/Admin/Site.php:609 msgid "Register policy" msgstr "" -#: src/Module/Admin/Site.php:612 +#: src/Module/Admin/Site.php:610 msgid "Maximum Daily Registrations" msgstr "" -#: src/Module/Admin/Site.php:612 +#: src/Module/Admin/Site.php:610 msgid "" "If registration is permitted above, this sets the maximum number of new user " "registrations to accept per day. If register is set to closed, this setting " "has no effect." msgstr "" -#: src/Module/Admin/Site.php:613 +#: src/Module/Admin/Site.php:611 msgid "Register text" msgstr "" -#: src/Module/Admin/Site.php:613 +#: src/Module/Admin/Site.php:611 msgid "" "Will be displayed prominently on the registration page. You can use BBCode " "here." msgstr "" -#: src/Module/Admin/Site.php:614 +#: src/Module/Admin/Site.php:612 msgid "Forbidden Nicknames" msgstr "" -#: src/Module/Admin/Site.php:614 +#: src/Module/Admin/Site.php:612 msgid "" "Comma separated list of nicknames that are forbidden from registration. " "Preset is a list of role names according RFC 2142." msgstr "" -#: src/Module/Admin/Site.php:615 +#: src/Module/Admin/Site.php:613 msgid "Accounts abandoned after x days" msgstr "" -#: src/Module/Admin/Site.php:615 +#: src/Module/Admin/Site.php:613 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "" -#: src/Module/Admin/Site.php:616 +#: src/Module/Admin/Site.php:614 msgid "Allowed friend domains" msgstr "" -#: src/Module/Admin/Site.php:616 +#: src/Module/Admin/Site.php:614 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "" -#: src/Module/Admin/Site.php:617 +#: src/Module/Admin/Site.php:615 msgid "Allowed email domains" msgstr "" -#: src/Module/Admin/Site.php:617 +#: src/Module/Admin/Site.php:615 msgid "" "Comma separated list of domains which are allowed in email addresses for " "registrations to this site. Wildcards are accepted. Empty to allow any " "domains" msgstr "" -#: src/Module/Admin/Site.php:618 +#: src/Module/Admin/Site.php:616 msgid "No OEmbed rich content" msgstr "" -#: src/Module/Admin/Site.php:618 +#: src/Module/Admin/Site.php:616 msgid "" "Don't show the rich content (e.g. embedded PDF), except from the domains " "listed below." msgstr "" -#: src/Module/Admin/Site.php:619 +#: src/Module/Admin/Site.php:617 msgid "Trusted third-party domains" msgstr "" -#: src/Module/Admin/Site.php:619 +#: src/Module/Admin/Site.php:617 msgid "" "Comma separated list of domains from which content is allowed to be embedded " "in posts like with OEmbed. All sub-domains of the listed domains are allowed " "as well." msgstr "" -#: src/Module/Admin/Site.php:620 +#: src/Module/Admin/Site.php:618 msgid "Block public" msgstr "" -#: src/Module/Admin/Site.php:620 +#: src/Module/Admin/Site.php:618 msgid "" "Check to block public access to all otherwise public personal pages on this " "site unless you are currently logged in." msgstr "" -#: src/Module/Admin/Site.php:621 +#: src/Module/Admin/Site.php:619 msgid "Force publish" msgstr "" -#: src/Module/Admin/Site.php:621 +#: src/Module/Admin/Site.php:619 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "" -#: src/Module/Admin/Site.php:621 +#: src/Module/Admin/Site.php:619 msgid "Enabling this may violate privacy laws like the GDPR" msgstr "" -#: src/Module/Admin/Site.php:622 +#: src/Module/Admin/Site.php:620 msgid "Global directory URL" msgstr "" -#: src/Module/Admin/Site.php:622 +#: src/Module/Admin/Site.php:620 msgid "" "URL to the global directory. If this is not set, the global directory is " "completely unavailable to the application." msgstr "" -#: src/Module/Admin/Site.php:623 +#: src/Module/Admin/Site.php:621 msgid "Private posts by default for new users" msgstr "" -#: src/Module/Admin/Site.php:623 +#: src/Module/Admin/Site.php:621 msgid "" "Set default post permissions for all new members to the default privacy " "group rather than public." msgstr "" -#: src/Module/Admin/Site.php:624 +#: src/Module/Admin/Site.php:622 msgid "Don't include post content in email notifications" msgstr "" -#: src/Module/Admin/Site.php:624 +#: src/Module/Admin/Site.php:622 msgid "" "Don't include the content of a post/comment/private message/etc. in the " "email notifications that are sent out from this site, as a privacy measure." msgstr "" -#: src/Module/Admin/Site.php:625 +#: src/Module/Admin/Site.php:623 msgid "Disallow public access to addons listed in the apps menu." msgstr "" -#: src/Module/Admin/Site.php:625 +#: src/Module/Admin/Site.php:623 msgid "" "Checking this box will restrict addons listed in the apps menu to members " "only." msgstr "" -#: src/Module/Admin/Site.php:626 +#: src/Module/Admin/Site.php:624 msgid "Don't embed private images in posts" msgstr "" -#: src/Module/Admin/Site.php:626 +#: src/Module/Admin/Site.php:624 msgid "" "Don't replace locally-hosted private photos in posts with an embedded copy " "of the image. This means that contacts who receive posts containing private " "photos will have to authenticate and load each image, which may take a while." msgstr "" -#: src/Module/Admin/Site.php:627 +#: src/Module/Admin/Site.php:625 msgid "Explicit Content" msgstr "" -#: src/Module/Admin/Site.php:627 +#: src/Module/Admin/Site.php:625 msgid "" "Set this to announce that your node is used mostly for explicit content that " "might not be suited for minors. This information will be published in the " @@ -6278,234 +6278,234 @@ msgid "" "will be shown at the user registration page." msgstr "" -#: src/Module/Admin/Site.php:628 +#: src/Module/Admin/Site.php:626 msgid "Allow Users to set remote_self" msgstr "" -#: src/Module/Admin/Site.php:628 +#: src/Module/Admin/Site.php:626 msgid "" "With checking this, every user is allowed to mark every contact as a " "remote_self in the repair contact dialog. Setting this flag on a contact " "causes mirroring every posting of that contact in the users stream." msgstr "" -#: src/Module/Admin/Site.php:629 +#: src/Module/Admin/Site.php:627 msgid "Block multiple registrations" msgstr "" -#: src/Module/Admin/Site.php:629 +#: src/Module/Admin/Site.php:627 msgid "Disallow users to register additional accounts for use as pages." msgstr "" -#: src/Module/Admin/Site.php:630 +#: src/Module/Admin/Site.php:628 msgid "Disable OpenID" msgstr "" -#: src/Module/Admin/Site.php:630 +#: src/Module/Admin/Site.php:628 msgid "Disable OpenID support for registration and logins." msgstr "" -#: src/Module/Admin/Site.php:631 +#: src/Module/Admin/Site.php:629 msgid "No Fullname check" msgstr "" -#: src/Module/Admin/Site.php:631 +#: src/Module/Admin/Site.php:629 msgid "" "Allow users to register without a space between the first name and the last " "name in their full name." msgstr "" -#: src/Module/Admin/Site.php:632 +#: src/Module/Admin/Site.php:630 msgid "Community pages for visitors" msgstr "" -#: src/Module/Admin/Site.php:632 +#: src/Module/Admin/Site.php:630 msgid "" "Which community pages should be available for visitors. Local users always " "see both pages." msgstr "" -#: src/Module/Admin/Site.php:633 +#: src/Module/Admin/Site.php:631 msgid "Posts per user on community page" msgstr "" -#: src/Module/Admin/Site.php:633 +#: src/Module/Admin/Site.php:631 msgid "" "The maximum number of posts per user on the community page. (Not valid for " "\"Global Community\")" msgstr "" -#: src/Module/Admin/Site.php:634 +#: src/Module/Admin/Site.php:632 msgid "Disable OStatus support" msgstr "" -#: src/Module/Admin/Site.php:634 +#: src/Module/Admin/Site.php:632 msgid "" "Disable built-in OStatus (StatusNet, GNU Social etc.) compatibility. All " "communications in OStatus are public, so privacy warnings will be " "occasionally displayed." msgstr "" -#: src/Module/Admin/Site.php:635 +#: src/Module/Admin/Site.php:633 msgid "OStatus support can only be enabled if threading is enabled." msgstr "" -#: src/Module/Admin/Site.php:637 +#: src/Module/Admin/Site.php:635 msgid "" "Diaspora support can't be enabled because Friendica was installed into a sub " "directory." msgstr "" -#: src/Module/Admin/Site.php:638 +#: src/Module/Admin/Site.php:636 msgid "Enable Diaspora support" msgstr "" -#: src/Module/Admin/Site.php:638 +#: src/Module/Admin/Site.php:636 msgid "Provide built-in Diaspora network compatibility." msgstr "" -#: src/Module/Admin/Site.php:639 +#: src/Module/Admin/Site.php:637 msgid "Only allow Friendica contacts" msgstr "" -#: src/Module/Admin/Site.php:639 +#: src/Module/Admin/Site.php:637 msgid "" "All contacts must use Friendica protocols. All other built-in communication " "protocols disabled." msgstr "" -#: src/Module/Admin/Site.php:640 +#: src/Module/Admin/Site.php:638 msgid "Verify SSL" msgstr "" -#: src/Module/Admin/Site.php:640 +#: src/Module/Admin/Site.php:638 msgid "" "If you wish, you can turn on strict certificate checking. This will mean you " "cannot connect (at all) to self-signed SSL sites." msgstr "" -#: src/Module/Admin/Site.php:641 +#: src/Module/Admin/Site.php:639 msgid "Proxy user" msgstr "" -#: src/Module/Admin/Site.php:642 +#: src/Module/Admin/Site.php:640 msgid "Proxy URL" msgstr "" -#: src/Module/Admin/Site.php:643 +#: src/Module/Admin/Site.php:641 msgid "Network timeout" msgstr "" -#: src/Module/Admin/Site.php:643 +#: src/Module/Admin/Site.php:641 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "" -#: src/Module/Admin/Site.php:644 +#: src/Module/Admin/Site.php:642 msgid "Maximum Load Average" msgstr "" -#: src/Module/Admin/Site.php:644 +#: src/Module/Admin/Site.php:642 #, php-format msgid "" "Maximum system load before delivery and poll processes are deferred - " "default %d." msgstr "" -#: src/Module/Admin/Site.php:645 +#: src/Module/Admin/Site.php:643 msgid "Maximum Load Average (Frontend)" msgstr "" -#: src/Module/Admin/Site.php:645 +#: src/Module/Admin/Site.php:643 msgid "Maximum system load before the frontend quits service - default 50." msgstr "" -#: src/Module/Admin/Site.php:646 +#: src/Module/Admin/Site.php:644 msgid "Minimal Memory" msgstr "" -#: src/Module/Admin/Site.php:646 +#: src/Module/Admin/Site.php:644 msgid "" "Minimal free memory in MB for the worker. Needs access to /proc/meminfo - " "default 0 (deactivated)." msgstr "" -#: src/Module/Admin/Site.php:647 +#: src/Module/Admin/Site.php:645 msgid "Periodically optimize tables" msgstr "" -#: src/Module/Admin/Site.php:647 +#: src/Module/Admin/Site.php:645 msgid "Periodically optimize tables like the cache and the workerqueue" msgstr "" -#: src/Module/Admin/Site.php:649 +#: src/Module/Admin/Site.php:647 msgid "Discover followers/followings from contacts" msgstr "" -#: src/Module/Admin/Site.php:649 +#: src/Module/Admin/Site.php:647 msgid "" "If enabled, contacts are checked for their followers and following contacts." msgstr "" -#: src/Module/Admin/Site.php:650 +#: src/Module/Admin/Site.php:648 msgid "None - deactivated" msgstr "" -#: src/Module/Admin/Site.php:651 +#: src/Module/Admin/Site.php:649 msgid "" "Local contacts - contacts of our local contacts are discovered for their " "followers/followings." msgstr "" -#: src/Module/Admin/Site.php:652 +#: src/Module/Admin/Site.php:650 msgid "" "Interactors - contacts of our local contacts and contacts who interacted on " "locally visible postings are discovered for their followers/followings." msgstr "" -#: src/Module/Admin/Site.php:654 +#: src/Module/Admin/Site.php:652 msgid "Synchronize the contacts with the directory server" msgstr "" -#: src/Module/Admin/Site.php:654 +#: src/Module/Admin/Site.php:652 msgid "" "if enabled, the system will check periodically for new contacts on the " "defined directory server." msgstr "" -#: src/Module/Admin/Site.php:656 +#: src/Module/Admin/Site.php:654 msgid "Days between requery" msgstr "" -#: src/Module/Admin/Site.php:656 +#: src/Module/Admin/Site.php:654 msgid "Number of days after which a server is requeried for his contacts." msgstr "" -#: src/Module/Admin/Site.php:657 +#: src/Module/Admin/Site.php:655 msgid "Discover contacts from other servers" msgstr "" -#: src/Module/Admin/Site.php:657 +#: src/Module/Admin/Site.php:655 msgid "" "Periodically query other servers for contacts. The system queries Friendica, " "Mastodon and Hubzilla servers." msgstr "" -#: src/Module/Admin/Site.php:658 +#: src/Module/Admin/Site.php:656 msgid "Search the local directory" msgstr "" -#: src/Module/Admin/Site.php:658 +#: src/Module/Admin/Site.php:656 msgid "" "Search the local directory instead of the global directory. When searching " "locally, every search will be executed on the global directory in the " "background. This improves the search results when the search is repeated." msgstr "" -#: src/Module/Admin/Site.php:660 +#: src/Module/Admin/Site.php:658 msgid "Publish server information" msgstr "" -#: src/Module/Admin/Site.php:660 +#: src/Module/Admin/Site.php:658 msgid "" "If enabled, general server and usage data will be published. The data " "contains the name and version of the server, number of users with public " @@ -6513,50 +6513,50 @@ msgid "" "href=\"http://the-federation.info/\">the-federation.info for details." msgstr "" -#: src/Module/Admin/Site.php:662 +#: src/Module/Admin/Site.php:660 msgid "Check upstream version" msgstr "" -#: src/Module/Admin/Site.php:662 +#: src/Module/Admin/Site.php:660 msgid "" "Enables checking for new Friendica versions at github. If there is a new " "version, you will be informed in the admin panel overview." msgstr "" -#: src/Module/Admin/Site.php:663 +#: src/Module/Admin/Site.php:661 msgid "Suppress Tags" msgstr "" -#: src/Module/Admin/Site.php:663 +#: src/Module/Admin/Site.php:661 msgid "Suppress showing a list of hashtags at the end of the posting." msgstr "" -#: src/Module/Admin/Site.php:664 +#: src/Module/Admin/Site.php:662 msgid "Clean database" msgstr "" -#: src/Module/Admin/Site.php:664 +#: src/Module/Admin/Site.php:662 msgid "" "Remove old remote items, orphaned database records and old content from some " "other helper tables." msgstr "" -#: src/Module/Admin/Site.php:665 +#: src/Module/Admin/Site.php:663 msgid "Lifespan of remote items" msgstr "" -#: src/Module/Admin/Site.php:665 +#: src/Module/Admin/Site.php:663 msgid "" "When the database cleanup is enabled, this defines the days after which " "remote items will be deleted. Own items, and marked or filed items are " "always kept. 0 disables this behaviour." msgstr "" -#: src/Module/Admin/Site.php:666 +#: src/Module/Admin/Site.php:664 msgid "Lifespan of unclaimed items" msgstr "" -#: src/Module/Admin/Site.php:666 +#: src/Module/Admin/Site.php:664 msgid "" "When the database cleanup is enabled, this defines the days after which " "unclaimed remote items (mostly content from the relay) will be deleted. " @@ -6564,166 +6564,156 @@ msgid "" "items if set to 0." msgstr "" -#: src/Module/Admin/Site.php:667 +#: src/Module/Admin/Site.php:665 msgid "Lifespan of raw conversation data" msgstr "" -#: src/Module/Admin/Site.php:667 +#: src/Module/Admin/Site.php:665 msgid "" "The conversation data is used for ActivityPub and OStatus, as well as for " "debug purposes. It should be safe to remove it after 14 days, default is 90 " "days." msgstr "" -#: src/Module/Admin/Site.php:668 +#: src/Module/Admin/Site.php:666 msgid "Maximum numbers of comments per post" msgstr "" -#: src/Module/Admin/Site.php:668 +#: src/Module/Admin/Site.php:666 msgid "How much comments should be shown for each post? Default value is 100." msgstr "" -#: src/Module/Admin/Site.php:669 +#: src/Module/Admin/Site.php:667 msgid "Maximum numbers of comments per post on the display page" msgstr "" -#: src/Module/Admin/Site.php:669 +#: src/Module/Admin/Site.php:667 msgid "" "How many comments should be shown on the single view for each post? Default " "value is 1000." msgstr "" -#: src/Module/Admin/Site.php:670 +#: src/Module/Admin/Site.php:668 msgid "Temp path" msgstr "" -#: src/Module/Admin/Site.php:670 +#: src/Module/Admin/Site.php:668 msgid "" "If you have a restricted system where the webserver can't access the system " "temp path, enter another path here." msgstr "" -#: src/Module/Admin/Site.php:671 -msgid "Disable picture proxy" -msgstr "" - -#: src/Module/Admin/Site.php:671 -msgid "" -"The picture proxy increases performance and privacy. It shouldn't be used on " -"systems with very low bandwidth." -msgstr "" - -#: src/Module/Admin/Site.php:672 +#: src/Module/Admin/Site.php:669 msgid "Only search in tags" msgstr "" -#: src/Module/Admin/Site.php:672 +#: src/Module/Admin/Site.php:669 msgid "On large systems the text search can slow down the system extremely." msgstr "" -#: src/Module/Admin/Site.php:674 +#: src/Module/Admin/Site.php:671 msgid "New base url" msgstr "" -#: src/Module/Admin/Site.php:674 +#: src/Module/Admin/Site.php:671 msgid "" "Change base url for this server. Sends relocate message to all Friendica and " "Diaspora* contacts of all users." msgstr "" -#: src/Module/Admin/Site.php:676 +#: src/Module/Admin/Site.php:673 msgid "RINO Encryption" msgstr "" -#: src/Module/Admin/Site.php:676 +#: src/Module/Admin/Site.php:673 msgid "Encryption layer between nodes." msgstr "" -#: src/Module/Admin/Site.php:676 src/Module/Admin/Site.php:682 +#: src/Module/Admin/Site.php:673 src/Module/Admin/Site.php:679 #: src/Module/Contact.php:562 src/Module/Settings/TwoFactor/Index.php:118 msgid "Disabled" msgstr "" -#: src/Module/Admin/Site.php:676 +#: src/Module/Admin/Site.php:673 msgid "Enabled" msgstr "" -#: src/Module/Admin/Site.php:678 +#: src/Module/Admin/Site.php:675 msgid "Maximum number of parallel workers" msgstr "" -#: src/Module/Admin/Site.php:678 +#: src/Module/Admin/Site.php:675 #, php-format msgid "" "On shared hosters set this to %d. On larger systems, values of %d are great. " "Default value is %d." msgstr "" -#: src/Module/Admin/Site.php:679 +#: src/Module/Admin/Site.php:676 msgid "Enable fastlane" msgstr "" -#: src/Module/Admin/Site.php:679 +#: src/Module/Admin/Site.php:676 msgid "" "When enabed, the fastlane mechanism starts an additional worker if processes " "with higher priority are blocked by processes of lower priority." msgstr "" -#: src/Module/Admin/Site.php:681 +#: src/Module/Admin/Site.php:678 msgid "Direct relay transfer" msgstr "" -#: src/Module/Admin/Site.php:681 +#: src/Module/Admin/Site.php:678 msgid "" "Enables the direct transfer to other servers without using the relay servers" msgstr "" -#: src/Module/Admin/Site.php:682 +#: src/Module/Admin/Site.php:679 msgid "Relay scope" msgstr "" -#: src/Module/Admin/Site.php:682 +#: src/Module/Admin/Site.php:679 msgid "" "Can be \"all\" or \"tags\". \"all\" means that every public post should be " "received. \"tags\" means that only posts with selected tags should be " "received." msgstr "" -#: src/Module/Admin/Site.php:682 +#: src/Module/Admin/Site.php:679 msgid "all" msgstr "" -#: src/Module/Admin/Site.php:682 +#: src/Module/Admin/Site.php:679 msgid "tags" msgstr "" -#: src/Module/Admin/Site.php:683 +#: src/Module/Admin/Site.php:680 msgid "Server tags" msgstr "" -#: src/Module/Admin/Site.php:683 +#: src/Module/Admin/Site.php:680 msgid "Comma separated list of tags for the \"tags\" subscription." msgstr "" -#: src/Module/Admin/Site.php:684 +#: src/Module/Admin/Site.php:681 msgid "Deny Server tags" msgstr "" -#: src/Module/Admin/Site.php:684 +#: src/Module/Admin/Site.php:681 msgid "Comma separated list of tags that are rejected." msgstr "" -#: src/Module/Admin/Site.php:685 +#: src/Module/Admin/Site.php:682 msgid "Allow user tags" msgstr "" -#: src/Module/Admin/Site.php:685 +#: src/Module/Admin/Site.php:682 msgid "" "If enabled, the tags from the saved searches will used for the \"tags\" " "subscription in addition to the \"relay_server_tags\"." msgstr "" -#: src/Module/Admin/Site.php:688 +#: src/Module/Admin/Site.php:685 msgid "Start Relocation" msgstr "" From b7a4ef0ec1c14afeee33abff7bf18682960e32f8 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 08:40:59 +0000 Subject: [PATCH 023/108] Modfy links for attachments --- src/Content/Text/BBCode.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index f9cdfd1f9..ec56b2c35 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1411,7 +1411,16 @@ class BBCode } elseif (!in_array($simple_html, [self::INTERNAL, self::EXTERNAL, self::CONNECTORS])) { $text = self::removeAttachment($text, true); } else { - $text = self::convertAttachment($text, $simple_html, $try_oembed); + $data = self::getAttachmentData($text); + if (!empty($data['image'])) { + $data['image'] = Post\Link::getByLink($uriid, $data['image']); + } + + if (!empty($data['preview'])) { + $data['preview'] = Post\Link::getByLink($uriid, $data['preview']); + } + + $text = self::convertAttachment($text, $simple_html, $try_oembed, $data); } $nosmile = strpos($text, '[nosmile]') !== false; From 8bfa15cf238b9109db77f0664077f730b7237923 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 08:57:49 +0000 Subject: [PATCH 024/108] Simplify the attachment handling --- src/Content/Text/BBCode.php | 20 ++++++-------------- src/Model/Item.php | 10 +--------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index ec56b2c35..e07993143 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -618,10 +618,11 @@ class BBCode * @param integer $simplehtml * @param bool $tryoembed * @param array $data + * @param int $uriid * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function convertAttachment($text, $simplehtml = self::INTERNAL, $tryoembed = true, array $data = []) + public static function convertAttachment($text, $simplehtml = self::INTERNAL, $tryoembed = true, array $data = [], $uriid = 0) { $data = $data ?: self::getAttachmentData($text); if (empty($data) || empty($data['url'])) { @@ -658,12 +659,12 @@ class BBCode if (!empty($data['title']) && !empty($data['url'])) { if (!empty($data['image']) && empty($data['text']) && ($data['type'] == 'photo')) { - $return .= sprintf('', $data['url'], self::proxyUrl($data['image'], $simplehtml), $data['title']); + $return .= sprintf('', $data['url'], self::proxyUrl($data['image'], $simplehtml, $uriid), $data['title']); } else { if (!empty($data['image'])) { - $return .= sprintf('
', $data['url'], self::proxyUrl($data['image'], $simplehtml), $data['title']); + $return .= sprintf('
', $data['url'], self::proxyUrl($data['image'], $simplehtml, $uriid), $data['title']); } elseif (!empty($data['preview'])) { - $return .= sprintf('
', $data['url'], self::proxyUrl($data['preview'], $simplehtml), $data['title']); + $return .= sprintf('
', $data['url'], self::proxyUrl($data['preview'], $simplehtml, $uriid), $data['title']); } $return .= sprintf('

%s

', $data['url'], $data['title']); } @@ -1411,16 +1412,7 @@ class BBCode } elseif (!in_array($simple_html, [self::INTERNAL, self::EXTERNAL, self::CONNECTORS])) { $text = self::removeAttachment($text, true); } else { - $data = self::getAttachmentData($text); - if (!empty($data['image'])) { - $data['image'] = Post\Link::getByLink($uriid, $data['image']); - } - - if (!empty($data['preview'])) { - $data['preview'] = Post\Link::getByLink($uriid, $data['preview']); - } - - $text = self::convertAttachment($text, $simple_html, $try_oembed, $data); + $text = self::convertAttachment($text, $simple_html, $try_oembed, [], $uriid); } $nosmile = strpos($text, '[nosmile]') !== false; diff --git a/src/Model/Item.php b/src/Model/Item.php index 6fe361914..ac43e8a05 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -3052,16 +3052,8 @@ class Item } } - if (!empty($data['image'])) { - $data['image'] = Post\Link::getByLink($uriid, $data['image']); - } - - if (!empty($data['preview'])) { - $data['preview'] = Post\Link::getByLink($uriid, $data['preview']); - } - // @todo Use a template - $rendered = BBCode::convertAttachment('', BBCode::INTERNAL, false, $data); + $rendered = BBCode::convertAttachment('', BBCode::INTERNAL, false, $data, $uriid); } elseif (!self::containsLink($content, $data['url'], Post\Media::HTML)) { $rendered = Renderer::replaceMacros(Renderer::getMarkupTemplate('content/link.tpl'), [ '$url' => $data['url'], From 12173df4d3f13e035e2601dab3b1d12f40424a6d Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 09:22:41 +0000 Subject: [PATCH 025/108] Replace proxy function --- src/Content/Text/BBCode.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index e07993143..eb8ddda8d 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -446,15 +446,15 @@ class BBCode return $naked_text; } - private static function proxyUrl($image, $simplehtml = self::INTERNAL, $uriid = 0) + private static function proxyUrl($image, $simplehtml = self::INTERNAL, $uriid = 0, $size = '') { // Only send proxied pictures to API and for internal display if (!in_array($simplehtml, [self::INTERNAL, self::API])) { return $image; } elseif ($uriid) { - return Post\Link::getByLink($uriid, $image); + return Post\Link::getByLink($uriid, $image, $size); } else { - return ProxyUtils::proxifyUrl($image); + return ProxyUtils::proxifyUrl($image, $size); } } @@ -1025,7 +1025,7 @@ class BBCode } elseif ($attributes['avatar'] && $uriid) { $attributes['avatar'] = Post\Link::getByLink($uriid, $attributes['avatar'], ProxyUtils::SIZE_THUMB); } elseif ($attributes['avatar']) { - $attributes['avatar'] = ProxyUtils::proxifyUrl($attributes['avatar'], ProxyUtils::SIZE_THUMB); + $attributes['avatar'] = self::proxyUrl($attributes['avatar'], self::INTERNAL, $uriid, ProxyUtils::SIZE_THUMB); } $content = preg_replace(Strings::autoLinkRegEx(), '$1', $match[3]); From d0136222e778bd52d0d1c17096a82996dd3c38ae Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 09:24:25 +0000 Subject: [PATCH 026/108] Further simplification --- src/Content/Text/BBCode.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index eb8ddda8d..c2db7ccb2 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1022,8 +1022,6 @@ class BBCode if (!empty($author_contact['id'])) { $attributes['avatar'] = Contact::getAvatarUrlForId($author_contact['id'], ProxyUtils::SIZE_THUMB); - } elseif ($attributes['avatar'] && $uriid) { - $attributes['avatar'] = Post\Link::getByLink($uriid, $attributes['avatar'], ProxyUtils::SIZE_THUMB); } elseif ($attributes['avatar']) { $attributes['avatar'] = self::proxyUrl($attributes['avatar'], self::INTERNAL, $uriid, ProxyUtils::SIZE_THUMB); } From 1b6f9e62251bc191be3c22937602996da85ee983 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 10:00:53 +0000 Subject: [PATCH 027/108] Parameter documentation --- include/api.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/api.php b/include/api.php index ef1c2e84a..25efa8f1b 100644 --- a/include/api.php +++ b/include/api.php @@ -2649,6 +2649,7 @@ function api_add_attachments_to_body(array $item) /** * * @param string $body + * @param int $uriid * * @return array * @throws InternalServerErrorException From 098cd543ea02f4cd0438a70b6e6dd0d6a546d861 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 10:36:00 +0000 Subject: [PATCH 028/108] Cleaned code for contact avatars --- mod/message.php | 4 ++-- src/Model/Contact.php | 39 +++++++++------------------------------ src/Module/Contact.php | 2 +- src/Module/Search/Acl.php | 2 +- 4 files changed, 13 insertions(+), 34 deletions(-) diff --git a/mod/message.php b/mod/message.php index 06542bbaf..2705708ea 100644 --- a/mod/message.php +++ b/mod/message.php @@ -325,7 +325,7 @@ function message_content(App $a) $to_name_e = $message['name']; $contact = Contact::getByURL($message['from-url'], false, ['thumb', 'addr', 'id', 'avatar']); - $from_photo = Contact::getThumb($contact, $message['from-photo']); + $from_photo = Contact::getThumb($contact); $mails[] = [ 'id' => $message['id'], @@ -457,7 +457,7 @@ function render_messages(array $msg, $t) } $contact = Contact::getByURL($rr['url'], false, ['thumb', 'addr', 'id', 'avatar']); - $from_photo = Contact::getThumb($contact, $rr['thumb'] ?: $rr['from-photo']); + $from_photo = Contact::getThumb($contact); $rslt .= Renderer::replaceMacros($tpl, [ '$id' => $rr['id'], diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 5fc234d60..c65837bd9 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1497,67 +1497,46 @@ class Contact * @param bool $no_update Don't perfom an update if no cached avatar was found * @return string photo path */ - private static function getAvatarPath(array $contact, string $field, string $size, string $avatar, $no_update = false) + private static function getAvatarPath(array $contact, string $size, $no_update = false) { - if (!empty($contact)) { - $contact = self::checkAvatarCacheByArray($contact, $no_update); - if (!empty($contact['id'])) { - return self::getAvatarUrlForId($contact['id'], $size, $contact['updated'] ?? ''); - } elseif (!empty($contact[$field])) { - return $contact[$field]; - } elseif (!empty($contact['avatar'])) { - $avatar = $contact['avatar']; - } - } - - if (empty($avatar)) { - $avatar = self::getDefaultAvatar([], $size); - } - - if (Proxy::isLocalImage($avatar)) { - return $avatar; - } else { - return Proxy::proxifyUrl($avatar, $size); - } + $contact = self::checkAvatarCacheByArray($contact, $no_update); + return self::getAvatarUrlForId($contact['id'], $size, $contact['updated'] ?? ''); } /** * Return the photo path for a given contact array * * @param array $contact Contact array - * @param string $avatar Avatar path that is displayed when no photo had been found * @param bool $no_update Don't perfom an update if no cached avatar was found * @return string photo path */ - public static function getPhoto(array $contact, string $avatar = '', bool $no_update = false) + public static function getPhoto(array $contact, bool $no_update = false) { - return self::getAvatarPath($contact, 'photo', Proxy::SIZE_SMALL, $avatar, $no_update); + return self::getAvatarPath($contact, Proxy::SIZE_SMALL, $no_update); } /** * Return the photo path (thumb size) for a given contact array * * @param array $contact Contact array - * @param string $avatar Avatar path that is displayed when no photo had been found * @param bool $no_update Don't perfom an update if no cached avatar was found * @return string photo path */ - public static function getThumb(array $contact, string $avatar = '', bool $no_update = false) + public static function getThumb(array $contact, bool $no_update = false) { - return self::getAvatarPath($contact, 'thumb', Proxy::SIZE_THUMB, $avatar, $no_update); + return self::getAvatarPath($contact, Proxy::SIZE_THUMB, $no_update); } /** * Return the photo path (micro size) for a given contact array * * @param array $contact Contact array - * @param string $avatar Avatar path that is displayed when no photo had been found * @param bool $no_update Don't perfom an update if no cached avatar was found * @return string photo path */ - public static function getMicro(array $contact, string $avatar = '', bool $no_update = false) + public static function getMicro(array $contact, bool $no_update = false) { - return self::getAvatarPath($contact, 'micro', Proxy::SIZE_MICRO, $avatar, $no_update); + return self::getAvatarPath($contact, Proxy::SIZE_MICRO, $no_update); } /** diff --git a/src/Module/Contact.php b/src/Module/Contact.php index cc6cc7e05..a00b0c702 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -1111,7 +1111,7 @@ class Contact extends BaseModule 'url' => $url, 'img_hover' => DI::l10n()->t('Visit %s\'s profile [%s]', $contact['name'], $contact['url']), 'photo_menu' => Model\Contact::photoMenu($contact), - 'thumb' => Model\Contact::getThumb($contact, '', true), + 'thumb' => Model\Contact::getThumb($contact, true), 'alt_text' => $alt_text, 'name' => $contact['name'], 'nick' => $contact['nick'], diff --git a/src/Module/Search/Acl.php b/src/Module/Search/Acl.php index ab031f9cb..aa5a0e367 100644 --- a/src/Module/Search/Acl.php +++ b/src/Module/Search/Acl.php @@ -78,7 +78,7 @@ class Acl extends BaseModule $contacts = []; foreach ($result as $contact) { $contacts[] = [ - 'photo' => Contact::getMicro($contact, '', true), + 'photo' => Contact::getMicro($contact, true), 'name' => htmlspecialchars($contact['name']), 'nick' => $contact['addr'] ?: $contact['url'], 'network' => $contact['network'], From 37a76e70efe66d3181747947b0355ce934cf27d6 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 12:34:48 +0000 Subject: [PATCH 029/108] Providing the uri-id to "convert" when possible --- src/Object/Api/Mastodon/Status.php | 2 +- src/Protocol/ActivityPub/Transmitter.php | 6 +++--- src/Protocol/DFRN.php | 2 +- src/Protocol/Feed.php | 4 ++-- src/Protocol/OStatus.php | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Object/Api/Mastodon/Status.php b/src/Object/Api/Mastodon/Status.php index 0985c0002..f476710d4 100644 --- a/src/Object/Api/Mastodon/Status.php +++ b/src/Object/Api/Mastodon/Status.php @@ -131,7 +131,7 @@ class Status extends BaseDataTransferObject $this->muted = $userAttributes->muted; $this->bookmarked = $userAttributes->bookmarked; $this->pinned = $userAttributes->pinned; - $this->content = BBCode::convert($item['raw-body'] ?? $item['body'], false, BBCode::API); + $this->content = BBCode::convert($item['raw-body'] ?? $item['body'], false, BBCode::API, false, $item['uri-id']); $this->reblog = $reblog; $this->application = $application->toArray(); $this->account = $account->toArray(); diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 0eac87f6a..652e76529 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -1464,7 +1464,7 @@ class Transmitter { $event = []; $event['name'] = $item['event-summary']; - $event['content'] = BBCode::convert($item['event-desc'], false, BBCode::ACTIVITYPUB); + $event['content'] = BBCode::convert($item['event-desc'], false, BBCode::ACTIVITYPUB, false, $item['uri-id']); $event['startTime'] = DateTimeFormat::utc($item['event-start'] . '+00:00', DateTimeFormat::ATOM); if (!$item['event-nofinish']) { @@ -1571,7 +1571,7 @@ class Transmitter $regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism"; $body = preg_replace_callback($regexp, ['self', 'mentionCallback'], $body); - $data['content'] = BBCode::convert($body, false, BBCode::ACTIVITYPUB); + $data['content'] = BBCode::convert($body, false, BBCode::ACTIVITYPUB, false, $item['uri-id']); } // The regular "content" field does contain a minimized HTML. This is done since systems like @@ -1583,7 +1583,7 @@ class Transmitter $richbody = preg_replace_callback($regexp, ['self', 'mentionCallback'], $item['body']); $richbody = BBCode::removeAttachment($richbody); - $data['contentMap'][$language] = BBCode::convert($richbody, false, BBCode::EXTERNAL); + $data['contentMap'][$language] = BBCode::convert($richbody, false, BBCode::EXTERNAL, false, $item['uri-id']); } $data['source'] = ['content' => $item['body'], 'mediaType' => "text/bbcode"]; diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 797a3973b..9ac40c0a2 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -918,7 +918,7 @@ class DFRN $htmlbody = "[b]" . $item['title'] . "[/b]\n\n" . $htmlbody; } - $htmlbody = BBCode::convert($htmlbody, false, BBCode::OSTATUS); + $htmlbody = BBCode::convert($htmlbody, false, BBCode::OSTATUS, false, $item['uri-id']); } $author = self::addEntryAuthor($doc, "author", $item["author-link"], $item); diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index f137bd234..bed67faac 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -1109,7 +1109,7 @@ class Feed $body = OStatus::formatPicturePost($item['body'], $item['uri-id']); - $body = BBCode::convert($body, false, BBCode::OSTATUS); + $body = BBCode::convert($body, false, BBCode::OSTATUS, false, $item['uri-id']); XML::addElement($doc, $entry, "content", $body, ["type" => "html"]); @@ -1186,7 +1186,7 @@ class Feed private static function getTitle(array $item) { if ($item['title'] != '') { - return BBCode::convert($item['title'], false, BBCode::OSTATUS); + return BBCode::convert($item['title'], false, BBCode::OSTATUS, false, $item['uri-id']); } // Fetch information about the post diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 869213ade..6318f0940 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1803,7 +1803,7 @@ class OStatus if (!$toplevel) { if (!empty($item['title'])) { - $title = BBCode::convert($item['title'], false, BBCode::OSTATUS); + $title = BBCode::convert($item['title'], false, BBCode::OSTATUS, false, $item['uri-id']); } else { $title = sprintf("New note by %s", $owner["nick"]); } @@ -1892,7 +1892,7 @@ class OStatus $body = "[b]".$item['title']."[/b]\n\n".$body; } - $body = BBCode::convert($body, false, BBCode::OSTATUS); + $body = BBCode::convert($body, false, BBCode::OSTATUS, false, $item['uri-id']); XML::addElement($doc, $entry, "content", $body, ["type" => "html"]); From 234bdff7ab23e6d8f38e3a1668746cd880856ad9 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 15:06:15 +0000 Subject: [PATCH 030/108] Improved link check --- src/Model/Post/Link.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Model/Post/Link.php b/src/Model/Post/Link.php index 0a593ddee..3bd92bfe3 100644 --- a/src/Model/Post/Link.php +++ b/src/Model/Post/Link.php @@ -39,16 +39,21 @@ class Link return $url; } + if (!in_array(parse_url($url, PHP_URL_SCHEME), ['http', 'https'])) { + Logger::info('Bad URL, quitting', ['uri-id' => $uri_id, 'url' => $url]); + return $url; + } + $link = DBA::selectFirst('post-link', ['id'], ['uri-id' => $uri_id, 'url' => $url]); if (!empty($link['id'])) { $id = $link['id']; - Logger::info('Found', ['id' => $id, 'url' => $url]); + Logger::info('Found', ['id' => $id, 'uri-id' => $uri_id, 'url' => $url]); } else { $mime = self::fetchMimeType($url); DBA::insert('post-link', ['uri-id' => $uri_id, 'url' => $url, 'mimetype' => $mime]); $id = DBA::lastInsertId(); - Logger::info('Inserted', ['id' => $id, 'url' => $url]); + Logger::info('Inserted', ['id' => $id, 'uri-id' => $uri_id, 'url' => $url]); } if (empty($id)) { @@ -106,9 +111,7 @@ class Link if (preg_match_all("/\[img=([^\[\]]*)\]([^\[\]]*)\[\/img\]/Usi", $body, $pictures, PREG_SET_ORDER)) { foreach ($pictures as $picture) { - if (parse_url($picture[1], PHP_URL_SCHEME)) { - $body = str_replace($picture[1], self::getByLink($uriid, $picture[1]), $body); - } + $body = str_replace($picture[1], self::getByLink($uriid, $picture[1]), $body); } } From ecf0b67d9dead04bb799063ba3c60308de547b45 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 16:10:10 +0000 Subject: [PATCH 031/108] Just look at HTTP links --- src/Model/Post/Link.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Model/Post/Link.php b/src/Model/Post/Link.php index 3bd92bfe3..7cce4e206 100644 --- a/src/Model/Post/Link.php +++ b/src/Model/Post/Link.php @@ -103,19 +103,19 @@ class Link */ public static function insertFromBody(int $uriid, string $body) { - if (preg_match_all("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", $body, $pictures, PREG_SET_ORDER)) { + if (preg_match_all("/\[img\=([0-9]*)x([0-9]*)\](http.*?)\[\/img\]/ism", $body, $pictures, PREG_SET_ORDER)) { foreach ($pictures as $picture) { $body = str_replace($picture[3], self::getByLink($uriid, $picture[3]), $body); } } - if (preg_match_all("/\[img=([^\[\]]*)\]([^\[\]]*)\[\/img\]/Usi", $body, $pictures, PREG_SET_ORDER)) { + if (preg_match_all("/\[img=(http[^\[\]]*)\]([^\[\]]*)\[\/img\]/Usi", $body, $pictures, PREG_SET_ORDER)) { foreach ($pictures as $picture) { $body = str_replace($picture[1], self::getByLink($uriid, $picture[1]), $body); } } - if (preg_match_all("/\[img\]([^\[\]]*)\[\/img\]/ism", $body, $pictures, PREG_SET_ORDER)) { + if (preg_match_all("/\[img\](http[^\[\]]*)\[\/img\]/ism", $body, $pictures, PREG_SET_ORDER)) { foreach ($pictures as $picture) { $body = str_replace($picture[1], self::getByLink($uriid, $picture[1]), $body); } From f3452d86c470612176cff41776b0ddba12c83eb5 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Jul 2021 17:40:40 +0000 Subject: [PATCH 032/108] Improved logging, improved link check --- src/Content/Text/BBCode.php | 2 +- src/Model/Post/Link.php | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index c2db7ccb2..dbd9a5d9a 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -252,7 +252,7 @@ class BBCode $post = self::getAttachmentData($body); // Get all linked images with alternative image description - if (preg_match_all("/\[img=([^\[\]]*)\]([^\[\]]*)\[\/img\]/Usi", $body, $pictures, PREG_SET_ORDER)) { + if (preg_match_all("/\[img=(http[^\[\]]*)\]([^\[\]]*)\[\/img\]/Usi", $body, $pictures, PREG_SET_ORDER)) { foreach ($pictures as $picture) { if (Photo::isLocal($picture[1])) { $post['images'][] = ['url' => str_replace('-1.', '-0.', $picture[1]), 'description' => $picture[2]]; diff --git a/src/Model/Post/Link.php b/src/Model/Post/Link.php index 7cce4e206..758f00f1c 100644 --- a/src/Model/Post/Link.php +++ b/src/Model/Post/Link.php @@ -22,6 +22,7 @@ namespace Friendica\Model\Post; use Friendica\Core\Logger; +use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Util\Proxy; @@ -40,7 +41,7 @@ class Link } if (!in_array(parse_url($url, PHP_URL_SCHEME), ['http', 'https'])) { - Logger::info('Bad URL, quitting', ['uri-id' => $uri_id, 'url' => $url]); + Logger::info('Bad URL, quitting', ['uri-id' => $uri_id, 'url' => $url, 'callstack' => System::callstack(20)]); return $url; } From f29bd23ea8ed2ae82771ee2c78f7fe82e2b123ed Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 8 Jul 2021 13:47:46 +0000 Subject: [PATCH 033/108] New function to convert BBCode for a given ID --- database.sql | 7 ++- doc/database/db_event.md | 47 ++++++++++---------- src/Content/Text/BBCode.php | 31 +++++++++++++ src/Model/Contact.php | 10 ++++- src/Model/Event.php | 5 ++- src/Model/Item.php | 2 +- src/Module/Api/Mastodon/Statuses.php | 2 + src/Module/BaseApi.php | 56 ++++++++++++++++++++++++ src/Object/Api/Mastodon/Status.php | 2 +- src/Protocol/ActivityPub/Transmitter.php | 6 +-- src/Protocol/DFRN.php | 2 +- src/Protocol/Feed.php | 4 +- src/Protocol/OStatus.php | 4 +- src/Worker/ExpirePosts.php | 1 + static/dbstructure.config.php | 4 +- 15 files changed, 145 insertions(+), 38 deletions(-) diff --git a/database.sql b/database.sql index 2121fec97..69ae84696 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2021.09-dev (Siberian Iris) --- DB_UPDATE_VERSION 1425 +-- DB_UPDATE_VERSION 1426 -- ------------------------------------------ @@ -563,6 +563,7 @@ CREATE TABLE IF NOT EXISTS `event` ( `uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id', `cid` int unsigned NOT NULL DEFAULT 0 COMMENT 'contact_id (ID of the contact in contact table)', `uri` varchar(255) NOT NULL DEFAULT '' COMMENT '', + `uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the event uri', `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time', `edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'last edit time', `start` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'event start time', @@ -581,8 +582,10 @@ CREATE TABLE IF NOT EXISTS `event` ( PRIMARY KEY(`id`), INDEX `uid_start` (`uid`,`start`), INDEX `cid` (`cid`), + INDEX `uri-id` (`uri-id`), FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE, - FOREIGN KEY (`cid`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE + FOREIGN KEY (`cid`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE, + FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Events'; -- diff --git a/doc/database/db_event.md b/doc/database/db_event.md index 37048599b..5550d1a1a 100644 --- a/doc/database/db_event.md +++ b/doc/database/db_event.md @@ -6,28 +6,29 @@ Events Fields ------ -| Field | Description | Type | Null | Key | Default | Extra | -| --------- | ------------------------------------------------------ | ------------------ | ---- | --- | ------------------- | -------------- | -| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment | -| guid | | varchar(255) | NO | | | | -| uid | Owner User id | mediumint unsigned | NO | | 0 | | -| cid | contact_id (ID of the contact in contact table) | int unsigned | NO | | 0 | | -| uri | | varchar(255) | NO | | | | -| created | creation time | datetime | NO | | 0001-01-01 00:00:00 | | -| edited | last edit time | datetime | NO | | 0001-01-01 00:00:00 | | -| start | event start time | datetime | NO | | 0001-01-01 00:00:00 | | -| finish | event end time | datetime | NO | | 0001-01-01 00:00:00 | | -| summary | short description or title of the event | text | YES | | NULL | | -| desc | event description | text | YES | | NULL | | -| location | event location | text | YES | | NULL | | -| type | event or birthday | varchar(20) | NO | | | | -| nofinish | if event does have no end this is 1 | boolean | NO | | 0 | | -| adjust | adjust to timezone of the recipient (0 or 1) | boolean | NO | | 1 | | -| ignore | 0 or 1 | boolean | NO | | 0 | | -| allow_cid | Access Control - list of allowed contact.id '<19><78>' | mediumtext | YES | | NULL | | -| allow_gid | Access Control - list of allowed groups | mediumtext | YES | | NULL | | -| deny_cid | Access Control - list of denied contact.id | mediumtext | YES | | NULL | | -| deny_gid | Access Control - list of denied groups | mediumtext | YES | | NULL | | +| Field | Description | Type | Null | Key | Default | Extra | +| --------- | ---------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- | +| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment | +| guid | | varchar(255) | NO | | | | +| uid | Owner User id | mediumint unsigned | NO | | 0 | | +| cid | contact_id (ID of the contact in contact table) | int unsigned | NO | | 0 | | +| uri | | varchar(255) | NO | | | | +| uri-id | Id of the item-uri table entry that contains the event uri | int unsigned | YES | | NULL | | +| created | creation time | datetime | NO | | 0001-01-01 00:00:00 | | +| edited | last edit time | datetime | NO | | 0001-01-01 00:00:00 | | +| start | event start time | datetime | NO | | 0001-01-01 00:00:00 | | +| finish | event end time | datetime | NO | | 0001-01-01 00:00:00 | | +| summary | short description or title of the event | text | YES | | NULL | | +| desc | event description | text | YES | | NULL | | +| location | event location | text | YES | | NULL | | +| type | event or birthday | varchar(20) | NO | | | | +| nofinish | if event does have no end this is 1 | boolean | NO | | 0 | | +| adjust | adjust to timezone of the recipient (0 or 1) | boolean | NO | | 1 | | +| ignore | 0 or 1 | boolean | NO | | 0 | | +| allow_cid | Access Control - list of allowed contact.id '<19><78>' | mediumtext | YES | | NULL | | +| allow_gid | Access Control - list of allowed groups | mediumtext | YES | | NULL | | +| deny_cid | Access Control - list of denied contact.id | mediumtext | YES | | NULL | | +| deny_gid | Access Control - list of denied groups | mediumtext | YES | | NULL | | Indexes ------------ @@ -37,6 +38,7 @@ Indexes | PRIMARY | id | | uid_start | uid, start | | cid | cid | +| uri-id | uri-id | Foreign Keys ------------ @@ -45,5 +47,6 @@ Foreign Keys |-------|--------------|--------------| | uid | [user](help/database/db_user) | uid | | cid | [contact](help/database/db_contact) | id | +| uri-id | [item-uri](help/database/db_item-uri) | id | Return to [database documentation](help/database) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index dbd9a5d9a..954d630eb 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1263,6 +1263,37 @@ class BBCode return $bbcode; } + /** + * Converts a BBCode message for a given ID to a HTML message + * + * BBcode 2 HTML was written by WAY2WEB.net + * extended to work with Mistpark/Friendica - Mike Macgirvin + * + * Simple HTML values meaning: + * - 0: Friendica display + * - 1: Unused + * - 2: Used for Windows Phone push, Friendica API + * - 3: Used before converting to Markdown in bb2diaspora.php + * - 4: Used for WordPress, Libertree (before Markdown), pump.io and tumblr + * - 5: Unused + * - 6: Unused + * - 7: Used for dfrn, OStatus + * - 8: Used for Twitter, WP backlink text setting + * - 9: ActivityPub + * + * @param int $uriid + * @param string $text + * @param int $simple_html + * @return string + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + */ + public static function convertForItem(int $uriid, string $text, int $simple_html = self::INTERNAL) + { + $try_oembed = ($simple_html == self::INTERNAL); + + return self::convert($text, $try_oembed, $simple_html, false, $uriid); + } + /** * Converts a BBCode message to HTML message * diff --git a/src/Model/Contact.php b/src/Model/Contact.php index c65837bd9..92f3a48bf 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1886,7 +1886,7 @@ class Contact { if (Strings::normaliseLink($new_url) != Strings::normaliseLink($old_url)) { Logger::notice('New URL differs from old URL', ['old' => $old_url, 'new' => $new_url]); - // @todo It is to decide what to do when the URL is changed + return; } if (!DBA::update('contact', $fields, ['id' => $id])) { @@ -2073,6 +2073,14 @@ class Contact return false; } + if (Strings::normaliseLink($ret['url']) != Strings::normaliseLink($contact['url'])) { + $cid = self::getIdForURL($ret['url']); + if (!empty($cid) && ($cid != $id)) { + Logger::notice('URL of contact changed.', ['id' => $id, 'new_id' => $cid, 'old' => $contact['url'], 'new' => $ret['url']]); + return self::updateFromProbeArray($cid, $ret); + } + } + if (isset($ret['hide']) && is_bool($ret['hide'])) { $ret['unsearchable'] = $ret['hide']; } diff --git a/src/Model/Event.php b/src/Model/Event.php index 81e33013f..7791ac88d 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -273,6 +273,7 @@ class Event $event['cid'] = intval($arr['cid'] ?? 0); $event['guid'] = ($arr['guid'] ?? '') ?: System::createUUID(); $event['uri'] = ($arr['uri'] ?? '') ?: Item::newURI($event['uid'], $event['guid']); + $event['uri-id'] = ItemURI::insert(['uri' => $event['uri'], 'guid' => $event['guid']]); $event['type'] = ($arr['type'] ?? '') ?: 'event'; $event['summary'] = $arr['summary'] ?? ''; $event['desc'] = $arr['desc'] ?? ''; @@ -937,7 +938,7 @@ class Event $tpl = Renderer::getMarkupTemplate('event_stream_item.tpl'); $return = Renderer::replaceMacros($tpl, [ '$id' => $item['event-id'], - '$title' => BBCode::convert($item['event-summary']), + '$title' => BBCode::convertForItem($item['uri-id'], $item['event-summary']), '$dtstart_label' => DI::l10n()->t('Starts:'), '$dtstart_title' => $dtstart_title, '$dtstart_dt' => $dtstart_dt, @@ -955,7 +956,7 @@ class Event '$author_name' => $item['author-name'], '$author_link' => $profile_link, '$author_avatar' => $item['author-avatar'], - '$description' => BBCode::convert($item['event-desc']), + '$description' => BBCode::convertForItem($item['uri-id'], $item['event-desc']), '$location_label' => DI::l10n()->t('Location:'), '$show_map_label' => DI::l10n()->t('Show map'), '$hide_map_label' => DI::l10n()->t('Hide map'), diff --git a/src/Model/Item.php b/src/Model/Item.php index ac43e8a05..0a4af82bc 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2640,7 +2640,7 @@ class Item ) { self::addRedirToImageTags($item); - $item['rendered-html'] = BBCode::convert($item['body'], true, BBCode::INTERNAL, false, $item['uri-id']); + $item['rendered-html'] = BBCode::convertForItem($item['uri-id'], $item['body']); $item['rendered-hash'] = hash('md5', BBCode::VERSION . '::' . $body); $hook_data = ['item' => $item, 'rendered-html' => $item['rendered-html'], 'rendered-hash' => $item['rendered-hash']]; diff --git a/src/Module/Api/Mastodon/Statuses.php b/src/Module/Api/Mastodon/Statuses.php index 77915cab2..1007bea0b 100644 --- a/src/Module/Api/Mastodon/Statuses.php +++ b/src/Module/Api/Mastodon/Statuses.php @@ -140,6 +140,8 @@ class Statuses extends BaseApi $item['gravity'] = GRAVITY_COMMENT; $item['object-type'] = Activity\ObjectType::COMMENT; } else { + self::checkThrottleLimit(); + $item['gravity'] = GRAVITY_PARENT; $item['object-type'] = Activity\ObjectType::NOTE; } diff --git a/src/Module/BaseApi.php b/src/Module/BaseApi.php index f5a16da76..d2aa9662c 100644 --- a/src/Module/BaseApi.php +++ b/src/Module/BaseApi.php @@ -25,9 +25,11 @@ use Friendica\BaseModule; use Friendica\Core\Logger; use Friendica\Core\System; use Friendica\DI; +use Friendica\Model\Post; use Friendica\Network\HTTPException; use Friendica\Security\BasicAuth; use Friendica\Security\OAuth; +use Friendica\Util\DateTimeFormat; use Friendica\Util\HTTPInputData; require_once __DIR__ . '/../../include/api.php'; @@ -282,6 +284,60 @@ class BaseApi extends BaseModule } } + public static function checkThrottleLimit() + { + $uid = self::getCurrentUserID(); + + // Check for throttling (maximum posts per day, week and month) + $throttle_day = DI::config()->get('system', 'throttle_limit_day'); + if ($throttle_day > 0) { + $datefrom = date(DateTimeFormat::MYSQL, time() - 24*60*60); + + $condition = ["`gravity` = ? AND `uid` = ? AND `wall` AND `received` > ?", GRAVITY_PARENT, $uid, $datefrom]; + $posts_day = Post::count($condition); + + if ($posts_day > $throttle_day) { + Logger::info('Daily posting limit reached', ['uid' => $uid, 'posts' => $posts_day, 'limit' => $throttle_day]); + $error = DI::l10n()->t('Too Many Requests'); + $error_description = DI::l10n()->tt("Daily posting limit of %d post reached. The post was rejected.", "Daily posting limit of %d posts reached. The post was rejected.", $throttle_day); + $errorobj = new \Friendica\Object\Api\Mastodon\Error($error, $error_description); + System::jsonError(429, $errorobj->toArray()); + } + } + + $throttle_week = DI::config()->get('system', 'throttle_limit_week'); + if ($throttle_week > 0) { + $datefrom = date(DateTimeFormat::MYSQL, time() - 24*60*60*7); + + $condition = ["`gravity` = ? AND `uid` = ? AND `wall` AND `received` > ?", GRAVITY_PARENT, $uid, $datefrom]; + $posts_week = Post::count($condition); + + if ($posts_week > $throttle_week) { + Logger::info('Weekly posting limit reached', ['uid' => $uid, 'posts' => $posts_week, 'limit' => $throttle_week]); + $error = DI::l10n()->t('Too Many Requests'); + $error_description = DI::l10n()->tt("Weekly posting limit of %d post reached. The post was rejected.", "Weekly posting limit of %d posts reached. The post was rejected.", $throttle_week); + $errorobj = new \Friendica\Object\Api\Mastodon\Error($error, $error_description); + System::jsonError(429, $errorobj->toArray()); + } + } + + $throttle_month = DI::config()->get('system', 'throttle_limit_month'); + if ($throttle_month > 0) { + $datefrom = date(DateTimeFormat::MYSQL, time() - 24*60*60*30); + + $condition = ["`gravity` = ? AND `uid` = ? AND `wall` AND `received` > ?", GRAVITY_PARENT, $uid, $datefrom]; + $posts_month = Post::count($condition); + + if ($posts_month > $throttle_month) { + Logger::info('Monthly posting limit reached', ['uid' => $uid, 'posts' => $posts_month, 'limit' => $throttle_month]); + $error = DI::l10n()->t('Too Many Requests'); + $error_description = DI::l10n()->t("Monthly posting limit of %d post reached. The post was rejected.", "Monthly posting limit of %d posts reached. The post was rejected.", $throttle_month); + $errorobj = new \Friendica\Object\Api\Mastodon\Error($error, $error_description); + System::jsonError(429, $errorobj->toArray()); + } + } + } + /** * Get user info array. * diff --git a/src/Object/Api/Mastodon/Status.php b/src/Object/Api/Mastodon/Status.php index f476710d4..2c60d4ee3 100644 --- a/src/Object/Api/Mastodon/Status.php +++ b/src/Object/Api/Mastodon/Status.php @@ -131,7 +131,7 @@ class Status extends BaseDataTransferObject $this->muted = $userAttributes->muted; $this->bookmarked = $userAttributes->bookmarked; $this->pinned = $userAttributes->pinned; - $this->content = BBCode::convert($item['raw-body'] ?? $item['body'], false, BBCode::API, false, $item['uri-id']); + $this->content = BBCode::convertForItem($item['uri-id'], ($item['raw-body'] ?? $item['body']), BBCode::API); $this->reblog = $reblog; $this->application = $application->toArray(); $this->account = $account->toArray(); diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 652e76529..a60b7c764 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -1464,7 +1464,7 @@ class Transmitter { $event = []; $event['name'] = $item['event-summary']; - $event['content'] = BBCode::convert($item['event-desc'], false, BBCode::ACTIVITYPUB, false, $item['uri-id']); + $event['content'] = BBCode::convertForItem($item['uri-id'], $item['event-desc'], BBCode::ACTIVITYPUB); $event['startTime'] = DateTimeFormat::utc($item['event-start'] . '+00:00', DateTimeFormat::ATOM); if (!$item['event-nofinish']) { @@ -1571,7 +1571,7 @@ class Transmitter $regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism"; $body = preg_replace_callback($regexp, ['self', 'mentionCallback'], $body); - $data['content'] = BBCode::convert($body, false, BBCode::ACTIVITYPUB, false, $item['uri-id']); + $data['content'] = BBCode::convertForItem($item['uri-id'], $body, BBCode::ACTIVITYPUB); } // The regular "content" field does contain a minimized HTML. This is done since systems like @@ -1583,7 +1583,7 @@ class Transmitter $richbody = preg_replace_callback($regexp, ['self', 'mentionCallback'], $item['body']); $richbody = BBCode::removeAttachment($richbody); - $data['contentMap'][$language] = BBCode::convert($richbody, false, BBCode::EXTERNAL, false, $item['uri-id']); + $data['contentMap'][$language] = BBCode::convertForItem($item['uri-id'], $richbody, BBCode::EXTERNAL); } $data['source'] = ['content' => $item['body'], 'mediaType' => "text/bbcode"]; diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 9ac40c0a2..d8db7251b 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -918,7 +918,7 @@ class DFRN $htmlbody = "[b]" . $item['title'] . "[/b]\n\n" . $htmlbody; } - $htmlbody = BBCode::convert($htmlbody, false, BBCode::OSTATUS, false, $item['uri-id']); + $htmlbody = BBCode::convert($item['uri-id'], $htmlbody, BBCode::OSTATUS); } $author = self::addEntryAuthor($doc, "author", $item["author-link"], $item); diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index bed67faac..47248bde1 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -1109,7 +1109,7 @@ class Feed $body = OStatus::formatPicturePost($item['body'], $item['uri-id']); - $body = BBCode::convert($body, false, BBCode::OSTATUS, false, $item['uri-id']); + $body = BBCode::convertForItem($item['uri-id'], $body, BBCode::OSTATUS, false); XML::addElement($doc, $entry, "content", $body, ["type" => "html"]); @@ -1186,7 +1186,7 @@ class Feed private static function getTitle(array $item) { if ($item['title'] != '') { - return BBCode::convert($item['title'], false, BBCode::OSTATUS, false, $item['uri-id']); + return BBCode::convertForItem($item['uri-id'], $item['title'], BBCode::OSTATUS); } // Fetch information about the post diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 6318f0940..8b02eb00e 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1803,7 +1803,7 @@ class OStatus if (!$toplevel) { if (!empty($item['title'])) { - $title = BBCode::convert($item['title'], false, BBCode::OSTATUS, false, $item['uri-id']); + $title = BBCode::convertForItem($item['uri-id'], $item['title'], BBCode::OSTATUS); } else { $title = sprintf("New note by %s", $owner["nick"]); } @@ -1892,7 +1892,7 @@ class OStatus $body = "[b]".$item['title']."[/b]\n\n".$body; } - $body = BBCode::convert($body, false, BBCode::OSTATUS, false, $item['uri-id']); + $body = BBCode::convertForItem($item['uri-id'], $body, BBCode::OSTATUS); XML::addElement($doc, $entry, "content", $body, ["type" => "html"]); diff --git a/src/Worker/ExpirePosts.php b/src/Worker/ExpirePosts.php index 3659edfde..3bdfd0c26 100644 --- a/src/Worker/ExpirePosts.php +++ b/src/Worker/ExpirePosts.php @@ -183,6 +183,7 @@ class ExpirePosts AND NOT EXISTS(SELECT `thr-parent-id` FROM `post-user` WHERE `thr-parent-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `external-id` FROM `post-user` WHERE `external-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `uri-id` FROM `mail` WHERE `uri-id` = `item-uri`.`id`) + AND NOT EXISTS(SELECT `uri-id` FROM `event` WHERE `uri-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `parent-uri-id` FROM `mail` WHERE `parent-uri-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `thr-parent-id` FROM `mail` WHERE `thr-parent-id` = `item-uri`.`id`)", $item['uri-id']]); diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index c774b8570..f302f1ecc 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1425); + define('DB_UPDATE_VERSION', 1426); } return [ @@ -628,6 +628,7 @@ return [ "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "foreign" => ["user" => "uid"], "comment" => "Owner User id"], "cid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id"], "comment" => "contact_id (ID of the contact in contact table)"], "uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], + "uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the event uri"], "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "creation time"], "edited" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "last edit time"], "start" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "event start time"], @@ -648,6 +649,7 @@ return [ "PRIMARY" => ["id"], "uid_start" => ["uid", "start"], "cid" => ["cid"], + "uri-id" => ["uri-id"], ] ], "fcontact" => [ From 165c6ddc63c1202e184da66f174a7718d9ad2d9b Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 8 Jul 2021 15:41:46 +0000 Subject: [PATCH 034/108] "convert" changed to "convertForItem" --- src/Model/Event.php | 22 ++--- view/lang/C/messages.po | 193 +++++++++++++++++++++------------------- 2 files changed, 110 insertions(+), 105 deletions(-) diff --git a/src/Model/Event.php b/src/Model/Event.php index 7791ac88d..6caa4b871 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -67,11 +67,11 @@ class Event $o = ''; if (!empty($event['summary'])) { - $o .= "

" . BBCode::convert(Strings::escapeHtml($event['summary']), false, $simple) . "

"; + $o .= "

" . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['summary']), $simple) . "

"; } if (!empty($event['desc'])) { - $o .= "
" . BBCode::convert(Strings::escapeHtml($event['desc']), false, $simple) . "
"; + $o .= "
" . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['desc']), $simple) . "
"; } $o .= "

" . DI::l10n()->t('Starts:') . "

" . $event_start . "

"; @@ -81,7 +81,7 @@ class Event } if (!empty($event['location'])) { - $o .= "

" . DI::l10n()->t('Location:') . "

" . BBCode::convert(Strings::escapeHtml($event['location']), false, $simple) . "

"; + $o .= "

" . DI::l10n()->t('Location:') . "

" . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['location']), $simple) . "

"; } return $o; @@ -89,7 +89,7 @@ class Event $o = '
' . "\r\n"; - $o .= '
' . BBCode::convert(Strings::escapeHtml($event['summary']), false, $simple) . '
' . "\r\n"; + $o .= '
' . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['summary']), $simple) . '
' . "\r\n"; $o .= '
' . DI::l10n()->t('Starts:') . ' ' . BBCode::convert(Strings::escapeHtml($event['desc']), false, $simple) . '
' . "\r\n"; + $o .= '
' . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['desc']), $simple) . '
' . "\r\n"; } if (!empty($event['location'])) { $o .= '
' . DI::l10n()->t('Location:') . ' ' - . BBCode::convert(Strings::escapeHtml($event['location']), false, $simple) + . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['location']), $simple) . '
' . "\r\n"; // Include a map of the location if the [map] BBCode is used. @@ -621,9 +621,9 @@ class Event $drop = [DI::baseUrl() . '/events/drop/' . $event['id'] , DI::l10n()->t('Delete event') , '', '']; } - $title = BBCode::convert(Strings::escapeHtml($event['summary'])); + $title = BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['summary'])); if (!$title) { - list($title, $_trash) = explode(" $event['id'], 'start' => $start, diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 01ec1810d..e565fb164 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2021.09-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-07-06 07:15+0000\n" +"POT-Creation-Date: 2021-07-08 15:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,26 +18,26 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" -#: include/api.php:1135 +#: include/api.php:1135 src/Module/BaseApi.php:302 #, php-format msgid "Daily posting limit of %d post reached. The post was rejected." msgid_plural "Daily posting limit of %d posts reached. The post was rejected." msgstr[0] "" msgstr[1] "" -#: include/api.php:1149 +#: include/api.php:1149 src/Module/BaseApi.php:318 #, php-format msgid "Weekly posting limit of %d post reached. The post was rejected." msgid_plural "Weekly posting limit of %d posts reached. The post was rejected." msgstr[0] "" msgstr[1] "" -#: include/api.php:1163 +#: include/api.php:1163 src/Module/BaseApi.php:334 #, php-format msgid "Monthly posting limit of %d post reached. The post was rejected." msgstr "" -#: include/api.php:4499 mod/photos.php:106 mod/photos.php:210 +#: include/api.php:4500 mod/photos.php:106 mod/photos.php:210 #: mod/photos.php:638 mod/photos.php:1042 mod/photos.php:1059 #: mod/photos.php:1608 src/Model/User.php:1114 src/Model/User.php:1122 #: src/Model/User.php:1130 src/Module/Settings/Profile/Photo/Crop.php:98 @@ -833,8 +833,8 @@ msgstr "" #: mod/unfollow.php:82 mod/wall_attach.php:78 mod/wall_attach.php:81 #: mod/wall_upload.php:99 mod/wall_upload.php:102 mod/wallmessage.php:35 #: mod/wallmessage.php:59 mod/wallmessage.php:96 mod/wallmessage.php:120 -#: src/Module/Attach.php:56 src/Module/BaseApi.php:79 src/Module/BaseApi.php:90 -#: src/Module/BaseApi.php:101 src/Module/BaseApi.php:112 +#: src/Module/Attach.php:56 src/Module/BaseApi.php:81 src/Module/BaseApi.php:92 +#: src/Module/BaseApi.php:103 src/Module/BaseApi.php:114 #: src/Module/BaseNotifications.php:88 src/Module/Contact.php:385 #: src/Module/Contact/Advanced.php:43 src/Module/Delegation.php:118 #: src/Module/FollowConfirm.php:16 src/Module/FriendSuggest.php:44 @@ -926,21 +926,21 @@ msgstr "" msgid "Next" msgstr "" -#: mod/cal.php:280 mod/events.php:426 src/Model/Event.php:463 +#: mod/cal.php:280 mod/events.php:426 src/Model/Event.php:464 msgid "today" msgstr "" -#: mod/cal.php:281 mod/events.php:427 src/Model/Event.php:464 +#: mod/cal.php:281 mod/events.php:427 src/Model/Event.php:465 #: src/Util/Temporal.php:330 msgid "month" msgstr "" -#: mod/cal.php:282 mod/events.php:428 src/Model/Event.php:465 +#: mod/cal.php:282 mod/events.php:428 src/Model/Event.php:466 #: src/Util/Temporal.php:331 msgid "week" msgstr "" -#: mod/cal.php:283 mod/events.php:429 src/Model/Event.php:466 +#: mod/cal.php:283 mod/events.php:429 src/Model/Event.php:467 #: src/Util/Temporal.php:332 msgid "day" msgstr "" @@ -1115,11 +1115,11 @@ msgstr "" msgid "Invalid profile URL." msgstr "" -#: mod/dfrn_request.php:355 src/Model/Contact.php:2297 +#: mod/dfrn_request.php:355 src/Model/Contact.php:2284 msgid "Disallowed profile URL." msgstr "" -#: mod/dfrn_request.php:361 src/Model/Contact.php:2302 +#: mod/dfrn_request.php:361 src/Model/Contact.php:2289 #: src/Module/Friendica.php:80 msgid "Blocked domain" msgstr "" @@ -1329,7 +1329,7 @@ msgid "Description:" msgstr "" #: mod/events.php:563 src/Model/Event.php:84 src/Model/Event.php:111 -#: src/Model/Event.php:472 src/Model/Event.php:959 src/Model/Profile.php:420 +#: src/Model/Event.php:473 src/Model/Event.php:960 src/Model/Profile.php:420 #: src/Module/Contact.php:654 src/Module/Directory.php:156 #: src/Module/Notifications/Introductions.php:172 #: src/Module/Profile/Profile.php:190 @@ -3634,39 +3634,39 @@ msgstr "" msgid "last" msgstr "" -#: src/Content/Text/BBCode.php:952 src/Content/Text/BBCode.php:1626 -#: src/Content/Text/BBCode.php:1627 +#: src/Content/Text/BBCode.php:953 src/Content/Text/BBCode.php:1656 +#: src/Content/Text/BBCode.php:1657 msgid "Image/photo" msgstr "" -#: src/Content/Text/BBCode.php:1084 +#: src/Content/Text/BBCode.php:1083 #, php-format msgid "" "%2$s %3$s" msgstr "" -#: src/Content/Text/BBCode.php:1109 src/Model/Item.php:3142 -#: src/Model/Item.php:3148 src/Model/Item.php:3149 +#: src/Content/Text/BBCode.php:1108 src/Model/Item.php:3134 +#: src/Model/Item.php:3140 src/Model/Item.php:3141 msgid "Link to source" msgstr "" -#: src/Content/Text/BBCode.php:1544 src/Content/Text/HTML.php:951 +#: src/Content/Text/BBCode.php:1574 src/Content/Text/HTML.php:951 msgid "Click to open/close" msgstr "" -#: src/Content/Text/BBCode.php:1575 +#: src/Content/Text/BBCode.php:1605 msgid "$1 wrote:" msgstr "" -#: src/Content/Text/BBCode.php:1629 src/Content/Text/BBCode.php:1630 +#: src/Content/Text/BBCode.php:1659 src/Content/Text/BBCode.php:1660 msgid "Encrypted content" msgstr "" -#: src/Content/Text/BBCode.php:1843 +#: src/Content/Text/BBCode.php:1873 msgid "Invalid source protocol" msgstr "" -#: src/Content/Text/BBCode.php:1858 +#: src/Content/Text/BBCode.php:1888 msgid "Invalid link protocol" msgstr "" @@ -4187,137 +4187,137 @@ msgstr "" msgid "Could not connect to database." msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:431 +#: src/Core/L10n.php:377 src/Model/Event.php:432 #: src/Module/Settings/Display.php:178 msgid "Monday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:432 +#: src/Core/L10n.php:377 src/Model/Event.php:433 msgid "Tuesday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:433 +#: src/Core/L10n.php:377 src/Model/Event.php:434 msgid "Wednesday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:434 +#: src/Core/L10n.php:377 src/Model/Event.php:435 msgid "Thursday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:435 +#: src/Core/L10n.php:377 src/Model/Event.php:436 msgid "Friday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:436 +#: src/Core/L10n.php:377 src/Model/Event.php:437 msgid "Saturday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:430 +#: src/Core/L10n.php:377 src/Model/Event.php:431 #: src/Module/Settings/Display.php:178 msgid "Sunday" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:451 +#: src/Core/L10n.php:381 src/Model/Event.php:452 msgid "January" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:452 +#: src/Core/L10n.php:381 src/Model/Event.php:453 msgid "February" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:453 +#: src/Core/L10n.php:381 src/Model/Event.php:454 msgid "March" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:454 +#: src/Core/L10n.php:381 src/Model/Event.php:455 msgid "April" msgstr "" -#: src/Core/L10n.php:381 src/Core/L10n.php:401 src/Model/Event.php:442 +#: src/Core/L10n.php:381 src/Core/L10n.php:401 src/Model/Event.php:443 msgid "May" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:455 +#: src/Core/L10n.php:381 src/Model/Event.php:456 msgid "June" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:456 +#: src/Core/L10n.php:381 src/Model/Event.php:457 msgid "July" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:457 +#: src/Core/L10n.php:381 src/Model/Event.php:458 msgid "August" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:458 +#: src/Core/L10n.php:381 src/Model/Event.php:459 msgid "September" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:459 +#: src/Core/L10n.php:381 src/Model/Event.php:460 msgid "October" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:460 +#: src/Core/L10n.php:381 src/Model/Event.php:461 msgid "November" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:461 +#: src/Core/L10n.php:381 src/Model/Event.php:462 msgid "December" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:423 +#: src/Core/L10n.php:397 src/Model/Event.php:424 msgid "Mon" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:424 +#: src/Core/L10n.php:397 src/Model/Event.php:425 msgid "Tue" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:425 +#: src/Core/L10n.php:397 src/Model/Event.php:426 msgid "Wed" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:426 +#: src/Core/L10n.php:397 src/Model/Event.php:427 msgid "Thu" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:427 +#: src/Core/L10n.php:397 src/Model/Event.php:428 msgid "Fri" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:428 +#: src/Core/L10n.php:397 src/Model/Event.php:429 msgid "Sat" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:422 +#: src/Core/L10n.php:397 src/Model/Event.php:423 msgid "Sun" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:438 +#: src/Core/L10n.php:401 src/Model/Event.php:439 msgid "Jan" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:439 +#: src/Core/L10n.php:401 src/Model/Event.php:440 msgid "Feb" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:440 +#: src/Core/L10n.php:401 src/Model/Event.php:441 msgid "Mar" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:441 +#: src/Core/L10n.php:401 src/Model/Event.php:442 msgid "Apr" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:443 +#: src/Core/L10n.php:401 src/Model/Event.php:444 msgid "Jun" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:444 +#: src/Core/L10n.php:401 src/Model/Event.php:445 msgid "Jul" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:445 +#: src/Core/L10n.php:401 src/Model/Event.php:446 msgid "Aug" msgstr "" @@ -4325,15 +4325,15 @@ msgstr "" msgid "Sep" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:447 +#: src/Core/L10n.php:401 src/Model/Event.php:448 msgid "Oct" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:448 +#: src/Core/L10n.php:401 src/Model/Event.php:449 msgid "Nov" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:449 +#: src/Core/L10n.php:401 src/Model/Event.php:450 msgid "Dec" msgstr "" @@ -4644,128 +4644,128 @@ msgstr "" msgid "Forum" msgstr "" -#: src/Model/Contact.php:2307 +#: src/Model/Contact.php:2294 msgid "Connect URL missing." msgstr "" -#: src/Model/Contact.php:2316 +#: src/Model/Contact.php:2303 msgid "" "The contact could not be added. Please check the relevant network " "credentials in your Settings -> Social Networks page." msgstr "" -#: src/Model/Contact.php:2359 +#: src/Model/Contact.php:2346 msgid "" "This site is not configured to allow communications with other networks." msgstr "" -#: src/Model/Contact.php:2360 src/Model/Contact.php:2373 +#: src/Model/Contact.php:2347 src/Model/Contact.php:2360 msgid "No compatible communication protocols or feeds were discovered." msgstr "" -#: src/Model/Contact.php:2371 +#: src/Model/Contact.php:2358 msgid "The profile address specified does not provide adequate information." msgstr "" -#: src/Model/Contact.php:2376 +#: src/Model/Contact.php:2363 msgid "An author or name was not found." msgstr "" -#: src/Model/Contact.php:2379 +#: src/Model/Contact.php:2366 msgid "No browser URL could be matched to this address." msgstr "" -#: src/Model/Contact.php:2382 +#: src/Model/Contact.php:2369 msgid "" "Unable to match @-style Identity Address with a known protocol or email " "contact." msgstr "" -#: src/Model/Contact.php:2383 +#: src/Model/Contact.php:2370 msgid "Use mailto: in front of address to force email check." msgstr "" -#: src/Model/Contact.php:2389 +#: src/Model/Contact.php:2376 msgid "" "The profile address specified belongs to a network which has been disabled " "on this site." msgstr "" -#: src/Model/Contact.php:2394 +#: src/Model/Contact.php:2381 msgid "" "Limited profile. This person will be unable to receive direct/personal " "notifications from you." msgstr "" -#: src/Model/Contact.php:2453 +#: src/Model/Contact.php:2440 msgid "Unable to retrieve contact information." msgstr "" -#: src/Model/Event.php:50 src/Model/Event.php:871 +#: src/Model/Event.php:50 src/Model/Event.php:872 #: src/Module/Debug/Localtime.php:36 msgid "l F d, Y \\@ g:i A" msgstr "" -#: src/Model/Event.php:77 src/Model/Event.php:94 src/Model/Event.php:470 -#: src/Model/Event.php:941 +#: src/Model/Event.php:77 src/Model/Event.php:94 src/Model/Event.php:471 +#: src/Model/Event.php:942 msgid "Starts:" msgstr "" -#: src/Model/Event.php:80 src/Model/Event.php:100 src/Model/Event.php:471 -#: src/Model/Event.php:945 +#: src/Model/Event.php:80 src/Model/Event.php:100 src/Model/Event.php:472 +#: src/Model/Event.php:946 msgid "Finishes:" msgstr "" -#: src/Model/Event.php:420 +#: src/Model/Event.php:421 msgid "all-day" msgstr "" -#: src/Model/Event.php:446 +#: src/Model/Event.php:447 msgid "Sept" msgstr "" -#: src/Model/Event.php:468 +#: src/Model/Event.php:469 msgid "No events to display" msgstr "" -#: src/Model/Event.php:587 +#: src/Model/Event.php:588 msgid "l, F j" msgstr "" -#: src/Model/Event.php:618 +#: src/Model/Event.php:619 msgid "Edit event" msgstr "" -#: src/Model/Event.php:619 +#: src/Model/Event.php:620 msgid "Duplicate event" msgstr "" -#: src/Model/Event.php:620 +#: src/Model/Event.php:621 msgid "Delete event" msgstr "" -#: src/Model/Event.php:872 +#: src/Model/Event.php:873 msgid "D g:i A" msgstr "" -#: src/Model/Event.php:873 +#: src/Model/Event.php:874 msgid "g:i A" msgstr "" -#: src/Model/Event.php:960 src/Model/Event.php:962 +#: src/Model/Event.php:961 src/Model/Event.php:963 msgid "Show map" msgstr "" -#: src/Model/Event.php:961 +#: src/Model/Event.php:962 msgid "Hide map" msgstr "" -#: src/Model/Event.php:1053 +#: src/Model/Event.php:1054 #, php-format msgid "%s's birthday" msgstr "" -#: src/Model/Event.php:1054 +#: src/Model/Event.php:1055 #, php-format msgid "Happy Birthday %s" msgstr "" @@ -4836,11 +4836,11 @@ msgstr "" msgid "Content warning: %s" msgstr "" -#: src/Model/Item.php:3107 +#: src/Model/Item.php:3099 msgid "bytes" msgstr "" -#: src/Model/Item.php:3136 src/Model/Item.php:3137 +#: src/Model/Item.php:3128 src/Model/Item.php:3129 msgid "View on separate page" msgstr "" @@ -7301,16 +7301,21 @@ msgstr "" msgid "User registrations waiting for confirmation" msgstr "" -#: src/Module/BaseApi.php:126 +#: src/Module/BaseApi.php:128 #, php-format msgid "API endpoint %s %s is not implemented" msgstr "" -#: src/Module/BaseApi.php:127 +#: src/Module/BaseApi.php:129 msgid "" "The API endpoint is currently not implemented but might be in the future." msgstr "" +#: src/Module/BaseApi.php:301 src/Module/BaseApi.php:317 +#: src/Module/BaseApi.php:333 +msgid "Too Many Requests" +msgstr "" + #: src/Module/BaseProfile.php:55 src/Module/Contact.php:947 msgid "Profile Details" msgstr "" From e72e74f7dbb09f52562d45635652471164284d53 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 8 Jul 2021 15:44:55 +0000 Subject: [PATCH 035/108] Fixed function name --- src/Protocol/DFRN.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index d8db7251b..b2fe7ef95 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -918,7 +918,7 @@ class DFRN $htmlbody = "[b]" . $item['title'] . "[/b]\n\n" . $htmlbody; } - $htmlbody = BBCode::convert($item['uri-id'], $htmlbody, BBCode::OSTATUS); + $htmlbody = BBCode::convertForItem($item['uri-id'], $htmlbody, BBCode::OSTATUS); } $author = self::addEntryAuthor($doc, "author", $item["author-link"], $item); From c972cce7404b908165838af89c9ba5233eed0f88 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 8 Jul 2021 16:38:02 +0000 Subject: [PATCH 036/108] Avoid notice --- src/Content/Text/BBCode.php | 2 +- src/Model/Event.php | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 954d630eb..4440f2242 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1729,7 +1729,7 @@ class BBCode // start which is always required). Allow desc with a missing summary for compatibility. if ((!empty($ev['desc']) || !empty($ev['summary'])) && !empty($ev['start'])) { - $sub = Event::getHTML($ev, $simple_html); + $sub = Event::getHTML($ev, $simple_html, $uriid); $text = preg_replace("/\[event\-summary\](.*?)\[\/event\-summary\]/ism", '', $text); $text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/ism", '', $text); diff --git a/src/Model/Event.php b/src/Model/Event.php index 6caa4b871..0cc2aeaa4 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -41,12 +41,14 @@ use Friendica\Util\XML; class Event { - public static function getHTML(array $event, $simple = false) + public static function getHTML(array $event, $simple = false, $uriid = 0) { if (empty($event)) { return ''; } + $uriid = $event['uri-id'] ?? $uriid; + $bd_format = DI::l10n()->t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8 AM. $event_start = DI::l10n()->getDay( @@ -67,11 +69,11 @@ class Event $o = ''; if (!empty($event['summary'])) { - $o .= "

" . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['summary']), $simple) . "

"; + $o .= "

" . BBCode::convertForItem($uriid, Strings::escapeHtml($event['summary']), $simple) . "

"; } if (!empty($event['desc'])) { - $o .= "
" . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['desc']), $simple) . "
"; + $o .= "
" . BBCode::convertForItem($uriid, Strings::escapeHtml($event['desc']), $simple) . "
"; } $o .= "

" . DI::l10n()->t('Starts:') . "

" . $event_start . "

"; @@ -81,7 +83,7 @@ class Event } if (!empty($event['location'])) { - $o .= "

" . DI::l10n()->t('Location:') . "

" . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['location']), $simple) . "

"; + $o .= "

" . DI::l10n()->t('Location:') . "

" . BBCode::convertForItem($uriid, Strings::escapeHtml($event['location']), $simple) . "

"; } return $o; @@ -89,7 +91,7 @@ class Event $o = '
' . "\r\n"; - $o .= '
' . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['summary']), $simple) . '
' . "\r\n"; + $o .= '
' . BBCode::convertForItem($uriid, Strings::escapeHtml($event['summary']), $simple) . '
' . "\r\n"; $o .= '
' . DI::l10n()->t('Starts:') . ' ' . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['desc']), $simple) . '
' . "\r\n"; + $o .= '
' . BBCode::convertForItem($uriid, Strings::escapeHtml($event['desc']), $simple) . '
' . "\r\n"; } if (!empty($event['location'])) { $o .= '
' . DI::l10n()->t('Location:') . ' ' - . BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['location']), $simple) + . BBCode::convertForItem($uriid, Strings::escapeHtml($event['location']), $simple) . '
' . "\r\n"; // Include a map of the location if the [map] BBCode is used. From 178bc543e3c9da9092115a85664ae87570894cce Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 8 Jul 2021 17:32:41 +0000 Subject: [PATCH 037/108] New founction to count threads --- database.sql | 1 + doc/database/db_post-thread-user.md | 35 +++++++++++++++-------------- src/Model/Post.php | 21 +++++++++++++++++ src/Module/BaseApi.php | 6 ++--- static/dbstructure.config.php | 1 + 5 files changed, 44 insertions(+), 20 deletions(-) diff --git a/database.sql b/database.sql index 69ae84696..160d59aae 100644 --- a/database.sql +++ b/database.sql @@ -1294,6 +1294,7 @@ CREATE TABLE IF NOT EXISTS `post-thread-user` ( INDEX `post-user-id` (`post-user-id`), INDEX `commented` (`commented`), INDEX `uid_received` (`uid`,`received`), + INDEX `uid_wall_received` (`uid`,`wall`,`received`), INDEX `uid_pinned` (`uid`,`pinned`), INDEX `uid_commented` (`uid`,`commented`), INDEX `uid_starred` (`uid`,`starred`), diff --git a/doc/database/db_post-thread-user.md b/doc/database/db_post-thread-user.md index 3efb5a77a..7307dc78d 100644 --- a/doc/database/db_post-thread-user.md +++ b/doc/database/db_post-thread-user.md @@ -35,23 +35,24 @@ Fields Indexes ------------ -| Name | Fields | -| ------------- | -------------- | -| PRIMARY | uid, uri-id | -| uri-id | uri-id | -| owner-id | owner-id | -| author-id | author-id | -| causer-id | causer-id | -| uid | uid | -| contact-id | contact-id | -| psid | psid | -| post-user-id | post-user-id | -| commented | commented | -| uid_received | uid, received | -| uid_pinned | uid, pinned | -| uid_commented | uid, commented | -| uid_starred | uid, starred | -| uid_mention | uid, mention | +| Name | Fields | +| ----------------- | ------------------- | +| PRIMARY | uid, uri-id | +| uri-id | uri-id | +| owner-id | owner-id | +| author-id | author-id | +| causer-id | causer-id | +| uid | uid | +| contact-id | contact-id | +| psid | psid | +| post-user-id | post-user-id | +| commented | commented | +| uid_received | uid, received | +| uid_wall_received | uid, wall, received | +| uid_pinned | uid, pinned | +| uid_commented | uid, commented | +| uid_starred | uid, starred | +| uid_mention | uid, mention | Foreign Keys ------------ diff --git a/src/Model/Post.php b/src/Model/Post.php index 902525f99..7b77276de 100644 --- a/src/Model/Post.php +++ b/src/Model/Post.php @@ -156,6 +156,27 @@ class Post return DBA::count('post-user-view', $condition, $params); } + /** + * Counts the post-thread-user-view records satisfying the provided condition + * + * @param array $condition array of fields for condition + * @param array $params Array of several parameters + * + * @return int + * + * Example: + * $condition = ["uid" => 1, "network" => 'dspr']; + * or: + * $condition = ["`uid` = ? AND `network` IN (?, ?)", 1, 'dfrn', 'dspr']; + * + * $count = Post::count($condition); + * @throws \Exception + */ + public static function countThread(array $condition = [], array $params = []) + { + return DBA::count('post-thread-user-view', $condition, $params); + } + /** * Counts the post-view records satisfying the provided condition * diff --git a/src/Module/BaseApi.php b/src/Module/BaseApi.php index d2aa9662c..9d5c36f42 100644 --- a/src/Module/BaseApi.php +++ b/src/Module/BaseApi.php @@ -294,7 +294,7 @@ class BaseApi extends BaseModule $datefrom = date(DateTimeFormat::MYSQL, time() - 24*60*60); $condition = ["`gravity` = ? AND `uid` = ? AND `wall` AND `received` > ?", GRAVITY_PARENT, $uid, $datefrom]; - $posts_day = Post::count($condition); + $posts_day = Post::countThread($condition); if ($posts_day > $throttle_day) { Logger::info('Daily posting limit reached', ['uid' => $uid, 'posts' => $posts_day, 'limit' => $throttle_day]); @@ -310,7 +310,7 @@ class BaseApi extends BaseModule $datefrom = date(DateTimeFormat::MYSQL, time() - 24*60*60*7); $condition = ["`gravity` = ? AND `uid` = ? AND `wall` AND `received` > ?", GRAVITY_PARENT, $uid, $datefrom]; - $posts_week = Post::count($condition); + $posts_week = Post::countThread($condition); if ($posts_week > $throttle_week) { Logger::info('Weekly posting limit reached', ['uid' => $uid, 'posts' => $posts_week, 'limit' => $throttle_week]); @@ -326,7 +326,7 @@ class BaseApi extends BaseModule $datefrom = date(DateTimeFormat::MYSQL, time() - 24*60*60*30); $condition = ["`gravity` = ? AND `uid` = ? AND `wall` AND `received` > ?", GRAVITY_PARENT, $uid, $datefrom]; - $posts_month = Post::count($condition); + $posts_month = Post::countThread($condition); if ($posts_month > $throttle_month) { Logger::info('Monthly posting limit reached', ['uid' => $uid, 'posts' => $posts_month, 'limit' => $throttle_month]); diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index f302f1ecc..7821774e7 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -1326,6 +1326,7 @@ return [ "post-user-id" => ["post-user-id"], "commented" => ["commented"], "uid_received" => ["uid", "received"], + "uid_wall_received" => ["uid", "wall", "received"], "uid_pinned" => ["uid", "pinned"], "uid_commented" => ["uid", "commented"], "uid_starred" => ["uid", "starred"], From 901c3f4855cf241566d90f5b69245d9d3ee27a2c Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 8 Jul 2021 18:59:58 +0000 Subject: [PATCH 038/108] we now have got an uri-id field for the contact table --- database.sql | 3 + doc/database/db_contact.md | 169 ++++++++++++++-------------- src/Model/Contact.php | 11 +- src/Object/Api/Mastodon/Account.php | 2 +- static/dbstructure.config.php | 4 +- 5 files changed, 102 insertions(+), 87 deletions(-) diff --git a/database.sql b/database.sql index 160d59aae..352f1d44a 100644 --- a/database.sql +++ b/database.sql @@ -126,6 +126,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( `dfrn-id` varchar(255) NOT NULL DEFAULT '' COMMENT '', `url` varchar(255) NOT NULL DEFAULT '' COMMENT '', `nurl` varchar(255) NOT NULL DEFAULT '' COMMENT '', + `uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the contact url', `addr` varchar(255) NOT NULL DEFAULT '' COMMENT '', `alias` varchar(255) NOT NULL DEFAULT '' COMMENT '', `pubkey` text COMMENT 'RSA public key 4096 bit', @@ -202,7 +203,9 @@ CREATE TABLE IF NOT EXISTS `contact` ( INDEX `uid_self_contact-type` (`uid`,`self`,`contact-type`), INDEX `self_network_uid` (`self`,`network`,`uid`), INDEX `gsid` (`gsid`), + INDEX `uri-id` (`uri-id`), FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE, + FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE, FOREIGN KEY (`gsid`) REFERENCES `gserver` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='contact table'; diff --git a/doc/database/db_contact.md b/doc/database/db_contact.md index 23a3b533a..5a97c6e4d 100644 --- a/doc/database/db_contact.md +++ b/doc/database/db_contact.md @@ -6,89 +6,90 @@ contact table Fields ------ -| Field | Description | Type | Null | Key | Default | Extra | -| ------------------------- | --------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- | -| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment | -| uid | Owner User id | mediumint unsigned | NO | | 0 | | -| created | | datetime | NO | | 0001-01-01 00:00:00 | | -| updated | Date of last contact update | datetime | YES | | 0001-01-01 00:00:00 | | -| self | 1 if the contact is the user him/her self | boolean | NO | | 0 | | -| remote_self | | boolean | NO | | 0 | | -| rel | The kind of the relation between the user and the contact | tinyint unsigned | NO | | 0 | | -| duplex | | boolean | NO | | 0 | | -| network | Network of the contact | char(4) | NO | | | | -| protocol | Protocol of the contact | char(4) | NO | | | | -| name | Name that this contact is known by | varchar(255) | NO | | | | -| nick | Nick- and user name of the contact | varchar(255) | NO | | | | -| location | | varchar(255) | YES | | | | -| about | | text | YES | | NULL | | -| keywords | public keywords (interests) of the contact | text | YES | | NULL | | -| gender | Deprecated | varchar(32) | NO | | | | -| xmpp | | varchar(255) | NO | | | | -| attag | | varchar(255) | NO | | | | -| avatar | | varchar(255) | NO | | | | -| photo | Link to the profile photo of the contact | varchar(255) | YES | | | | -| thumb | Link to the profile photo (thumb size) | varchar(255) | YES | | | | -| micro | Link to the profile photo (micro size) | varchar(255) | YES | | | | -| header | Header picture | varchar(255) | YES | | NULL | | -| site-pubkey | | text | YES | | NULL | | -| issued-id | | varchar(255) | NO | | | | -| dfrn-id | | varchar(255) | NO | | | | -| url | | varchar(255) | NO | | | | -| nurl | | varchar(255) | NO | | | | -| addr | | varchar(255) | NO | | | | -| alias | | varchar(255) | NO | | | | -| pubkey | RSA public key 4096 bit | text | YES | | NULL | | -| prvkey | RSA private key 4096 bit | text | YES | | NULL | | -| batch | | varchar(255) | NO | | | | -| request | | varchar(255) | YES | | NULL | | -| notify | | varchar(255) | YES | | NULL | | -| poll | | varchar(255) | YES | | NULL | | -| confirm | | varchar(255) | YES | | NULL | | -| subscribe | | varchar(255) | YES | | NULL | | -| poco | | varchar(255) | YES | | NULL | | -| aes_allow | | boolean | NO | | 0 | | -| ret-aes | | boolean | NO | | 0 | | -| usehub | | boolean | NO | | 0 | | -| subhub | | boolean | NO | | 0 | | -| hub-verify | | varchar(255) | NO | | | | -| last-update | Date of the last try to update the contact info | datetime | NO | | 0001-01-01 00:00:00 | | -| success_update | Date of the last successful contact update | datetime | NO | | 0001-01-01 00:00:00 | | -| failure_update | Date of the last failed update | datetime | NO | | 0001-01-01 00:00:00 | | -| failed | Connection failed | boolean | YES | | NULL | | -| name-date | | datetime | NO | | 0001-01-01 00:00:00 | | -| uri-date | | datetime | NO | | 0001-01-01 00:00:00 | | -| avatar-date | | datetime | NO | | 0001-01-01 00:00:00 | | -| term-date | | datetime | NO | | 0001-01-01 00:00:00 | | -| last-item | date of the last post | datetime | NO | | 0001-01-01 00:00:00 | | -| last-discovery | date of the last follower discovery | datetime | NO | | 0001-01-01 00:00:00 | | -| priority | | tinyint unsigned | NO | | 0 | | -| blocked | Node-wide block status | boolean | NO | | 1 | | -| block_reason | Node-wide block reason | text | YES | | NULL | | -| readonly | posts of the contact are readonly | boolean | NO | | 0 | | -| writable | | boolean | NO | | 0 | | -| forum | contact is a forum | boolean | NO | | 0 | | -| prv | contact is a private group | boolean | NO | | 0 | | -| contact-type | | tinyint | NO | | 0 | | -| manually-approve | | boolean | YES | | NULL | | -| hidden | | boolean | NO | | 0 | | -| archive | | boolean | NO | | 0 | | -| pending | | boolean | NO | | 1 | | -| deleted | Contact has been deleted | boolean | NO | | 0 | | -| rating | | tinyint | NO | | 0 | | -| unsearchable | Contact prefers to not be searchable | boolean | NO | | 0 | | -| sensitive | Contact posts sensitive content | boolean | NO | | 0 | | -| baseurl | baseurl of the contact | varchar(255) | YES | | | | -| gsid | Global Server ID | int unsigned | YES | | NULL | | -| reason | | text | YES | | NULL | | -| closeness | | tinyint unsigned | NO | | 99 | | -| info | | mediumtext | YES | | NULL | | -| profile-id | Deprecated | int unsigned | YES | | NULL | | -| bdyear | | varchar(4) | NO | | | | -| bd | | date | NO | | 0001-01-01 | | -| notify_new_posts | | boolean | NO | | 0 | | -| fetch_further_information | | tinyint unsigned | NO | | 0 | | -| ffi_keyword_denylist | | text | YES | | NULL | | +| Field | Description | Type | Null | Key | Default | Extra | +| ------------------------- | ------------------------------------------------------------ | ------------------ | ---- | --- | ------------------- | -------------- | +| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment | +| uid | Owner User id | mediumint unsigned | NO | | 0 | | +| created | | datetime | NO | | 0001-01-01 00:00:00 | | +| updated | Date of last contact update | datetime | YES | | 0001-01-01 00:00:00 | | +| self | 1 if the contact is the user him/her self | boolean | NO | | 0 | | +| remote_self | | boolean | NO | | 0 | | +| rel | The kind of the relation between the user and the contact | tinyint unsigned | NO | | 0 | | +| duplex | | boolean | NO | | 0 | | +| network | Network of the contact | char(4) | NO | | | | +| protocol | Protocol of the contact | char(4) | NO | | | | +| name | Name that this contact is known by | varchar(255) | NO | | | | +| nick | Nick- and user name of the contact | varchar(255) | NO | | | | +| location | | varchar(255) | YES | | | | +| about | | text | YES | | NULL | | +| keywords | public keywords (interests) of the contact | text | YES | | NULL | | +| gender | Deprecated | varchar(32) | NO | | | | +| xmpp | | varchar(255) | NO | | | | +| attag | | varchar(255) | NO | | | | +| avatar | | varchar(255) | NO | | | | +| photo | Link to the profile photo of the contact | varchar(255) | YES | | | | +| thumb | Link to the profile photo (thumb size) | varchar(255) | YES | | | | +| micro | Link to the profile photo (micro size) | varchar(255) | YES | | | | +| header | Header picture | varchar(255) | YES | | NULL | | +| site-pubkey | | text | YES | | NULL | | +| issued-id | | varchar(255) | NO | | | | +| dfrn-id | | varchar(255) | NO | | | | +| url | | varchar(255) | NO | | | | +| nurl | | varchar(255) | NO | | | | +| uri-id | Id of the item-uri table entry that contains the contact url | int unsigned | YES | | NULL | | +| addr | | varchar(255) | NO | | | | +| alias | | varchar(255) | NO | | | | +| pubkey | RSA public key 4096 bit | text | YES | | NULL | | +| prvkey | RSA private key 4096 bit | text | YES | | NULL | | +| batch | | varchar(255) | NO | | | | +| request | | varchar(255) | YES | | NULL | | +| notify | | varchar(255) | YES | | NULL | | +| poll | | varchar(255) | YES | | NULL | | +| confirm | | varchar(255) | YES | | NULL | | +| subscribe | | varchar(255) | YES | | NULL | | +| poco | | varchar(255) | YES | | NULL | | +| aes_allow | | boolean | NO | | 0 | | +| ret-aes | | boolean | NO | | 0 | | +| usehub | | boolean | NO | | 0 | | +| subhub | | boolean | NO | | 0 | | +| hub-verify | | varchar(255) | NO | | | | +| last-update | Date of the last try to update the contact info | datetime | NO | | 0001-01-01 00:00:00 | | +| success_update | Date of the last successful contact update | datetime | NO | | 0001-01-01 00:00:00 | | +| failure_update | Date of the last failed update | datetime | NO | | 0001-01-01 00:00:00 | | +| failed | Connection failed | boolean | YES | | NULL | | +| name-date | | datetime | NO | | 0001-01-01 00:00:00 | | +| uri-date | | datetime | NO | | 0001-01-01 00:00:00 | | +| avatar-date | | datetime | NO | | 0001-01-01 00:00:00 | | +| term-date | | datetime | NO | | 0001-01-01 00:00:00 | | +| last-item | date of the last post | datetime | NO | | 0001-01-01 00:00:00 | | +| last-discovery | date of the last follower discovery | datetime | NO | | 0001-01-01 00:00:00 | | +| priority | | tinyint unsigned | NO | | 0 | | +| blocked | Node-wide block status | boolean | NO | | 1 | | +| block_reason | Node-wide block reason | text | YES | | NULL | | +| readonly | posts of the contact are readonly | boolean | NO | | 0 | | +| writable | | boolean | NO | | 0 | | +| forum | contact is a forum | boolean | NO | | 0 | | +| prv | contact is a private group | boolean | NO | | 0 | | +| contact-type | | tinyint | NO | | 0 | | +| manually-approve | | boolean | YES | | NULL | | +| hidden | | boolean | NO | | 0 | | +| archive | | boolean | NO | | 0 | | +| pending | | boolean | NO | | 1 | | +| deleted | Contact has been deleted | boolean | NO | | 0 | | +| rating | | tinyint | NO | | 0 | | +| unsearchable | Contact prefers to not be searchable | boolean | NO | | 0 | | +| sensitive | Contact posts sensitive content | boolean | NO | | 0 | | +| baseurl | baseurl of the contact | varchar(255) | YES | | | | +| gsid | Global Server ID | int unsigned | YES | | NULL | | +| reason | | text | YES | | NULL | | +| closeness | | tinyint unsigned | NO | | 99 | | +| info | | mediumtext | YES | | NULL | | +| profile-id | Deprecated | int unsigned | YES | | NULL | | +| bdyear | | varchar(4) | NO | | | | +| bd | | date | NO | | 0001-01-01 | | +| notify_new_posts | | boolean | NO | | 0 | | +| fetch_further_information | | tinyint unsigned | NO | | 0 | | +| ffi_keyword_denylist | | text | YES | | NULL | | Indexes ------------ @@ -118,6 +119,7 @@ Indexes | uid_self_contact-type | uid, self, contact-type | | self_network_uid | self, network, uid | | gsid | gsid | +| uri-id | uri-id | Foreign Keys ------------ @@ -125,6 +127,7 @@ Foreign Keys | Field | Target Table | Target Field | |-------|--------------|--------------| | uid | [user](help/database/db_user) | uid | +| uri-id | [item-uri](help/database/db_item-uri) | id | | gsid | [gserver](help/database/db_gserver) | id | Return to [database documentation](help/database) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 92f3a48bf..094146dff 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -185,6 +185,12 @@ class Contact $fields['gsid'] = GServer::getID($fields['baseurl'], true); } + if (!empty($fields['url']) && !empty($fields['guid'])) { + $fields['uri-id'] = ItemURI::insert(['uri' => $fields['url'], 'guid' => $fields['guid']]); + } elseif (!empty($fields['url'])) { + $fields['uri-id'] = ItemURI::getIdByURI($fields['url']); + } + if (empty($fields['created'])) { $fields['created'] = DateTimeFormat::utcNow(); } @@ -2144,9 +2150,10 @@ class Contact return true; } - $ret['nurl'] = Strings::normaliseLink($ret['url']); + $ret['nurl'] = Strings::normaliseLink($ret['url']); + $ret['uri-id'] = ItemURI::getIdByURI($ret['url']); $ret['updated'] = $updated; - $ret['failed'] = false; + $ret['failed'] = false; // Only fill the pubkey if it had been empty before. We have to prevent identity theft. if (empty($pubkey) && !empty($new_pubkey)) { diff --git a/src/Object/Api/Mastodon/Account.php b/src/Object/Api/Mastodon/Account.php index d2053647a..930737575 100644 --- a/src/Object/Api/Mastodon/Account.php +++ b/src/Object/Api/Mastodon/Account.php @@ -111,7 +111,7 @@ class Account extends BaseDataTransferObject $created = $userContactCreated < $publicContactCreated && ($userContactCreated != DBA::NULL_DATETIME) ? $userContactCreated : $publicContactCreated; $this->created_at = DateTimeFormat::utc($created, DateTimeFormat::JSON); - $this->note = BBCode::convert($publicContact['about'], false); + $this->note = BBCode::convertForItem($publicContact['uri-id'] ?? 0, $publicContact['about'], BBCode::API); $this->url = $publicContact['url']; $this->avatar = Contact::getAvatarUrlForId($userContact['id'] ?? 0 ?: $publicContact['id'], Proxy::SIZE_SMALL, $userContact['updated'] ?? '' ?: $publicContact['updated']); $this->avatar_static = $this->avatar; diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 7821774e7..5a569b002 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -183,6 +183,7 @@ return [ "dfrn-id" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "nurl" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], + "uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the contact url"], "addr" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "alias" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "pubkey" => ["type" => "text", "comment" => "RSA public key 4096 bit"], @@ -260,7 +261,8 @@ return [ "uid_contact-type" => ["uid", "contact-type"], "uid_self_contact-type" => ["uid", "self", "contact-type"], "self_network_uid" => ["self", "network", "uid"], - "gsid" => ["gsid"] + "gsid" => ["gsid"], + "uri-id" => ["uri-id"], ] ], "item-uri" => [ From dfe1d5334210f528a5222eb9d4f1c47b6fa9eed3 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 8 Jul 2021 19:16:23 +0000 Subject: [PATCH 039/108] Moved database structure --- database.sql | 24 ++++++++++++------------ static/dbstructure.config.php | 26 +++++++++++++------------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/database.sql b/database.sql index 352f1d44a..ca248875b 100644 --- a/database.sql +++ b/database.sql @@ -94,6 +94,18 @@ CREATE TABLE IF NOT EXISTS `user` ( FOREIGN KEY (`parent-uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='The local users'; +-- +-- TABLE item-uri +-- +CREATE TABLE IF NOT EXISTS `item-uri` ( + `id` int unsigned NOT NULL auto_increment, + `uri` varbinary(255) NOT NULL COMMENT 'URI of an item', + `guid` varbinary(255) COMMENT 'A unique identifier for an item', + PRIMARY KEY(`id`), + UNIQUE INDEX `uri` (`uri`), + INDEX `guid` (`guid`) +) DEFAULT COLLATE utf8mb4_general_ci COMMENT='URI and GUID for items'; + -- -- TABLE contact -- @@ -209,18 +221,6 @@ CREATE TABLE IF NOT EXISTS `contact` ( FOREIGN KEY (`gsid`) REFERENCES `gserver` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='contact table'; --- --- TABLE item-uri --- -CREATE TABLE IF NOT EXISTS `item-uri` ( - `id` int unsigned NOT NULL auto_increment, - `uri` varbinary(255) NOT NULL COMMENT 'URI of an item', - `guid` varbinary(255) COMMENT 'A unique identifier for an item', - PRIMARY KEY(`id`), - UNIQUE INDEX `uri` (`uri`), - INDEX `guid` (`guid`) -) DEFAULT COLLATE utf8mb4_general_ci COMMENT='URI and GUID for items'; - -- -- TABLE tag -- diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 5a569b002..f15bc7075 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -152,6 +152,19 @@ return [ "email" => ["email(64)"], ] ], + "item-uri" => [ + "comment" => "URI and GUID for items", + "fields" => [ + "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"], + "uri" => ["type" => "varbinary(255)", "not null" => "1", "comment" => "URI of an item"], + "guid" => ["type" => "varbinary(255)", "comment" => "A unique identifier for an item"] + ], + "indexes" => [ + "PRIMARY" => ["id"], + "uri" => ["UNIQUE", "uri"], + "guid" => ["guid"] + ] + ], "contact" => [ "comment" => "contact table", "fields" => [ @@ -265,19 +278,6 @@ return [ "uri-id" => ["uri-id"], ] ], - "item-uri" => [ - "comment" => "URI and GUID for items", - "fields" => [ - "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"], - "uri" => ["type" => "varbinary(255)", "not null" => "1", "comment" => "URI of an item"], - "guid" => ["type" => "varbinary(255)", "comment" => "A unique identifier for an item"] - ], - "indexes" => [ - "PRIMARY" => ["id"], - "uri" => ["UNIQUE", "uri"], - "guid" => ["guid"] - ] - ], "tag" => [ "comment" => "tags and mentions", "fields" => [ From 377bb78cc295a5f6e227a2000f5d5d4edaaf2195 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 8 Jul 2021 20:01:52 +0000 Subject: [PATCH 040/108] Set "convertForItem" at more places --- src/Module/Contact.php | 6 +++--- src/Object/Api/Mastodon/Account.php | 2 +- src/Object/Api/Mastodon/Status.php | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Module/Contact.php b/src/Module/Contact.php index a00b0c702..461002017 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -650,11 +650,11 @@ class Contact extends BaseModule '$profileurllabel'=> DI::l10n()->t('Profile URL'), '$profileurl' => $contact['url'], '$account_type' => Model\Contact::getAccountType($contact), - '$location' => BBCode::convert($contact['location']), + '$location' => BBCode::convertForItem($contact['uri-id'] ?? 0, $contact['location']), '$location_label' => DI::l10n()->t('Location:'), - '$xmpp' => BBCode::convert($contact['xmpp']), + '$xmpp' => BBCode::convertForItem($contact['uri-id'] ?? 0, $contact['xmpp']), '$xmpp_label' => DI::l10n()->t('XMPP:'), - '$about' => BBCode::convert($contact['about'], false), + '$about' => BBCode::convertForItem($contact['uri-id'] ?? 0, $contact['about'], BBCode::EXTERNAL), '$about_label' => DI::l10n()->t('About:'), '$keywords' => $contact['keywords'], '$keywords_label' => DI::l10n()->t('Tags:'), diff --git a/src/Object/Api/Mastodon/Account.php b/src/Object/Api/Mastodon/Account.php index 930737575..39c58e099 100644 --- a/src/Object/Api/Mastodon/Account.php +++ b/src/Object/Api/Mastodon/Account.php @@ -111,7 +111,7 @@ class Account extends BaseDataTransferObject $created = $userContactCreated < $publicContactCreated && ($userContactCreated != DBA::NULL_DATETIME) ? $userContactCreated : $publicContactCreated; $this->created_at = DateTimeFormat::utc($created, DateTimeFormat::JSON); - $this->note = BBCode::convertForItem($publicContact['uri-id'] ?? 0, $publicContact['about'], BBCode::API); + $this->note = BBCode::convertForItem($publicContact['uri-id'] ?? 0, $publicContact['about'], BBCode::EXTERNAL); $this->url = $publicContact['url']; $this->avatar = Contact::getAvatarUrlForId($userContact['id'] ?? 0 ?: $publicContact['id'], Proxy::SIZE_SMALL, $userContact['updated'] ?? '' ?: $publicContact['updated']); $this->avatar_static = $this->avatar; diff --git a/src/Object/Api/Mastodon/Status.php b/src/Object/Api/Mastodon/Status.php index 2c60d4ee3..62b44e337 100644 --- a/src/Object/Api/Mastodon/Status.php +++ b/src/Object/Api/Mastodon/Status.php @@ -131,7 +131,7 @@ class Status extends BaseDataTransferObject $this->muted = $userAttributes->muted; $this->bookmarked = $userAttributes->bookmarked; $this->pinned = $userAttributes->pinned; - $this->content = BBCode::convertForItem($item['uri-id'], ($item['raw-body'] ?? $item['body']), BBCode::API); + $this->content = BBCode::convertForItem($item['uri-id'], ($item['raw-body'] ?? $item['body']), BBCode::EXTERNAL); $this->reblog = $reblog; $this->application = $application->toArray(); $this->account = $account->toArray(); From 88f147c6a7705851e4e28eaa023707548ff3a2bc Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 04:38:36 +0000 Subject: [PATCH 041/108] Always update on missing uri-id, check for uri-id in contact before removal --- src/Model/Contact.php | 18 +++++++++++++++--- src/Worker/ExpirePosts.php | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 094146dff..39553ea9b 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -2027,8 +2027,8 @@ class Contact // These fields aren't updated by this routine: // 'xmpp', 'sensitive' - $fields = ['uid', 'avatar', 'header', 'name', 'nick', 'location', 'keywords', 'about', 'subscribe', - 'manually-approve', 'unsearchable', 'url', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco', + $fields = ['uid', 'uri-id', 'avatar', 'header', 'name', 'nick', 'location', 'keywords', 'about', 'subscribe', + 'manually-approve', 'unsearchable', 'url', 'guid', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco', 'network', 'alias', 'baseurl', 'gsid', 'forum', 'prv', 'contact-type', 'pubkey', 'last-item']; $contact = DBA::selectFirst('contact', $fields, ['id' => $id]); if (!DBA::isResult($contact)) { @@ -2056,6 +2056,9 @@ class Contact $uid = $contact['uid']; unset($contact['uid']); + $uriid = $contact['uri-id']; + unset($contact['uri-id']); + $pubkey = $contact['pubkey']; unset($contact['pubkey']); @@ -2128,6 +2131,10 @@ class Contact unset($ret['last-item']); } + if (empty($uriid)) { + $update = true; + } + if (!empty($ret['photo']) && ($ret['network'] != Protocol::FEED)) { self::updateAvatar($id, $ret['photo'], $update); } @@ -2150,8 +2157,13 @@ class Contact return true; } + if (empty($ret['guid'])) { + $ret['uri-id'] = ItemURI::getIdByURI($ret['url']); + } else { + $ret['uri-id'] = ItemURI::insert(['uri' => $ret['uri'], 'guid' => $ret['guid']]); + } + $ret['nurl'] = Strings::normaliseLink($ret['url']); - $ret['uri-id'] = ItemURI::getIdByURI($ret['url']); $ret['updated'] = $updated; $ret['failed'] = false; diff --git a/src/Worker/ExpirePosts.php b/src/Worker/ExpirePosts.php index 3bdfd0c26..55a07dd14 100644 --- a/src/Worker/ExpirePosts.php +++ b/src/Worker/ExpirePosts.php @@ -184,6 +184,7 @@ class ExpirePosts AND NOT EXISTS(SELECT `external-id` FROM `post-user` WHERE `external-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `uri-id` FROM `mail` WHERE `uri-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `uri-id` FROM `event` WHERE `uri-id` = `item-uri`.`id`) + AND NOT EXISTS(SELECT `uri-id` FROM `contact` WHERE `uri-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `parent-uri-id` FROM `mail` WHERE `parent-uri-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `thr-parent-id` FROM `mail` WHERE `thr-parent-id` = `item-uri`.`id`)", $item['uri-id']]); From 17ae9b71af8501cdd5facda26649399652dc2cdc Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 04:42:01 +0000 Subject: [PATCH 042/108] Avoid error on empty content --- src/Content/Text/BBCode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 4440f2242..a86a0d155 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1287,7 +1287,7 @@ class BBCode * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function convertForItem(int $uriid, string $text, int $simple_html = self::INTERNAL) + public static function convertForItem(int $uriid = 0, string $text = null, int $simple_html = self::INTERNAL) { $try_oembed = ($simple_html == self::INTERNAL); From d8974c9a2ae28b5dbf6281cee250b733f1363851 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 06:29:24 +0000 Subject: [PATCH 043/108] Function renamed to better reflect the functionality --- src/Content/Text/BBCode.php | 4 ++-- src/Model/Event.php | 26 ++++++++++++------------ src/Model/Item.php | 2 +- src/Module/Contact.php | 6 +++--- src/Object/Api/Mastodon/Account.php | 2 +- src/Object/Api/Mastodon/Status.php | 2 +- src/Protocol/ActivityPub/Transmitter.php | 6 +++--- src/Protocol/DFRN.php | 2 +- src/Protocol/Feed.php | 4 ++-- src/Protocol/OStatus.php | 4 ++-- 10 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index a86a0d155..37f650bbe 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1264,7 +1264,7 @@ class BBCode } /** - * Converts a BBCode message for a given ID to a HTML message + * Converts a BBCode message for a given URI-ID to a HTML message * * BBcode 2 HTML was written by WAY2WEB.net * extended to work with Mistpark/Friendica - Mike Macgirvin @@ -1287,7 +1287,7 @@ class BBCode * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function convertForItem(int $uriid = 0, string $text = null, int $simple_html = self::INTERNAL) + public static function convertForUriId(int $uriid = 0, string $text = null, int $simple_html = self::INTERNAL) { $try_oembed = ($simple_html == self::INTERNAL); diff --git a/src/Model/Event.php b/src/Model/Event.php index 0cc2aeaa4..f0a552303 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -69,11 +69,11 @@ class Event $o = ''; if (!empty($event['summary'])) { - $o .= "

" . BBCode::convertForItem($uriid, Strings::escapeHtml($event['summary']), $simple) . "

"; + $o .= "

" . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['summary']), $simple) . "

"; } if (!empty($event['desc'])) { - $o .= "
" . BBCode::convertForItem($uriid, Strings::escapeHtml($event['desc']), $simple) . "
"; + $o .= "
" . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['desc']), $simple) . "
"; } $o .= "

" . DI::l10n()->t('Starts:') . "

" . $event_start . "

"; @@ -83,7 +83,7 @@ class Event } if (!empty($event['location'])) { - $o .= "

" . DI::l10n()->t('Location:') . "

" . BBCode::convertForItem($uriid, Strings::escapeHtml($event['location']), $simple) . "

"; + $o .= "

" . DI::l10n()->t('Location:') . "

" . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['location']), $simple) . "

"; } return $o; @@ -91,7 +91,7 @@ class Event $o = '
' . "\r\n"; - $o .= '
' . BBCode::convertForItem($uriid, Strings::escapeHtml($event['summary']), $simple) . '
' . "\r\n"; + $o .= '
' . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['summary']), $simple) . '
' . "\r\n"; $o .= '
' . DI::l10n()->t('Starts:') . ' ' . BBCode::convertForItem($uriid, Strings::escapeHtml($event['desc']), $simple) . '
' . "\r\n"; + $o .= '
' . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['desc']), $simple) . '
' . "\r\n"; } if (!empty($event['location'])) { $o .= '
' . DI::l10n()->t('Location:') . ' ' - . BBCode::convertForItem($uriid, Strings::escapeHtml($event['location']), $simple) + . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['location']), $simple) . '
' . "\r\n"; // Include a map of the location if the [map] BBCode is used. @@ -623,9 +623,9 @@ class Event $drop = [DI::baseUrl() . '/events/drop/' . $event['id'] , DI::l10n()->t('Delete event') , '', '']; } - $title = BBCode::convertForItem($event['uri-id'], Strings::escapeHtml($event['summary'])); + $title = BBCode::convertForUriId($event['uri-id'], Strings::escapeHtml($event['summary'])); if (!$title) { - list($title, $_trash) = explode(" $event['id'], 'start' => $start, @@ -940,7 +940,7 @@ class Event $tpl = Renderer::getMarkupTemplate('event_stream_item.tpl'); $return = Renderer::replaceMacros($tpl, [ '$id' => $item['event-id'], - '$title' => BBCode::convertForItem($item['uri-id'], $item['event-summary']), + '$title' => BBCode::convertForUriId($item['uri-id'], $item['event-summary']), '$dtstart_label' => DI::l10n()->t('Starts:'), '$dtstart_title' => $dtstart_title, '$dtstart_dt' => $dtstart_dt, @@ -958,7 +958,7 @@ class Event '$author_name' => $item['author-name'], '$author_link' => $profile_link, '$author_avatar' => $item['author-avatar'], - '$description' => BBCode::convertForItem($item['uri-id'], $item['event-desc']), + '$description' => BBCode::convertForUriId($item['uri-id'], $item['event-desc']), '$location_label' => DI::l10n()->t('Location:'), '$show_map_label' => DI::l10n()->t('Show map'), '$hide_map_label' => DI::l10n()->t('Hide map'), diff --git a/src/Model/Item.php b/src/Model/Item.php index 0a4af82bc..86b9270fe 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2640,7 +2640,7 @@ class Item ) { self::addRedirToImageTags($item); - $item['rendered-html'] = BBCode::convertForItem($item['uri-id'], $item['body']); + $item['rendered-html'] = BBCode::convertForUriId($item['uri-id'], $item['body']); $item['rendered-hash'] = hash('md5', BBCode::VERSION . '::' . $body); $hook_data = ['item' => $item, 'rendered-html' => $item['rendered-html'], 'rendered-hash' => $item['rendered-hash']]; diff --git a/src/Module/Contact.php b/src/Module/Contact.php index 461002017..2609a5b8b 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -650,11 +650,11 @@ class Contact extends BaseModule '$profileurllabel'=> DI::l10n()->t('Profile URL'), '$profileurl' => $contact['url'], '$account_type' => Model\Contact::getAccountType($contact), - '$location' => BBCode::convertForItem($contact['uri-id'] ?? 0, $contact['location']), + '$location' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['location']), '$location_label' => DI::l10n()->t('Location:'), - '$xmpp' => BBCode::convertForItem($contact['uri-id'] ?? 0, $contact['xmpp']), + '$xmpp' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['xmpp']), '$xmpp_label' => DI::l10n()->t('XMPP:'), - '$about' => BBCode::convertForItem($contact['uri-id'] ?? 0, $contact['about'], BBCode::EXTERNAL), + '$about' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['about'], BBCode::EXTERNAL), '$about_label' => DI::l10n()->t('About:'), '$keywords' => $contact['keywords'], '$keywords_label' => DI::l10n()->t('Tags:'), diff --git a/src/Object/Api/Mastodon/Account.php b/src/Object/Api/Mastodon/Account.php index 39c58e099..2b95e0687 100644 --- a/src/Object/Api/Mastodon/Account.php +++ b/src/Object/Api/Mastodon/Account.php @@ -111,7 +111,7 @@ class Account extends BaseDataTransferObject $created = $userContactCreated < $publicContactCreated && ($userContactCreated != DBA::NULL_DATETIME) ? $userContactCreated : $publicContactCreated; $this->created_at = DateTimeFormat::utc($created, DateTimeFormat::JSON); - $this->note = BBCode::convertForItem($publicContact['uri-id'] ?? 0, $publicContact['about'], BBCode::EXTERNAL); + $this->note = BBCode::convertForUriId($publicContact['uri-id'] ?? 0, $publicContact['about'], BBCode::EXTERNAL); $this->url = $publicContact['url']; $this->avatar = Contact::getAvatarUrlForId($userContact['id'] ?? 0 ?: $publicContact['id'], Proxy::SIZE_SMALL, $userContact['updated'] ?? '' ?: $publicContact['updated']); $this->avatar_static = $this->avatar; diff --git a/src/Object/Api/Mastodon/Status.php b/src/Object/Api/Mastodon/Status.php index 62b44e337..90e8732ce 100644 --- a/src/Object/Api/Mastodon/Status.php +++ b/src/Object/Api/Mastodon/Status.php @@ -131,7 +131,7 @@ class Status extends BaseDataTransferObject $this->muted = $userAttributes->muted; $this->bookmarked = $userAttributes->bookmarked; $this->pinned = $userAttributes->pinned; - $this->content = BBCode::convertForItem($item['uri-id'], ($item['raw-body'] ?? $item['body']), BBCode::EXTERNAL); + $this->content = BBCode::convertForUriId($item['uri-id'], ($item['raw-body'] ?? $item['body']), BBCode::EXTERNAL); $this->reblog = $reblog; $this->application = $application->toArray(); $this->account = $account->toArray(); diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index a60b7c764..cdf153830 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -1464,7 +1464,7 @@ class Transmitter { $event = []; $event['name'] = $item['event-summary']; - $event['content'] = BBCode::convertForItem($item['uri-id'], $item['event-desc'], BBCode::ACTIVITYPUB); + $event['content'] = BBCode::convertForUriId($item['uri-id'], $item['event-desc'], BBCode::ACTIVITYPUB); $event['startTime'] = DateTimeFormat::utc($item['event-start'] . '+00:00', DateTimeFormat::ATOM); if (!$item['event-nofinish']) { @@ -1571,7 +1571,7 @@ class Transmitter $regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism"; $body = preg_replace_callback($regexp, ['self', 'mentionCallback'], $body); - $data['content'] = BBCode::convertForItem($item['uri-id'], $body, BBCode::ACTIVITYPUB); + $data['content'] = BBCode::convertForUriId($item['uri-id'], $body, BBCode::ACTIVITYPUB); } // The regular "content" field does contain a minimized HTML. This is done since systems like @@ -1583,7 +1583,7 @@ class Transmitter $richbody = preg_replace_callback($regexp, ['self', 'mentionCallback'], $item['body']); $richbody = BBCode::removeAttachment($richbody); - $data['contentMap'][$language] = BBCode::convertForItem($item['uri-id'], $richbody, BBCode::EXTERNAL); + $data['contentMap'][$language] = BBCode::convertForUriId($item['uri-id'], $richbody, BBCode::EXTERNAL); } $data['source'] = ['content' => $item['body'], 'mediaType' => "text/bbcode"]; diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index b2fe7ef95..4d2744498 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -918,7 +918,7 @@ class DFRN $htmlbody = "[b]" . $item['title'] . "[/b]\n\n" . $htmlbody; } - $htmlbody = BBCode::convertForItem($item['uri-id'], $htmlbody, BBCode::OSTATUS); + $htmlbody = BBCode::convertForUriId($item['uri-id'], $htmlbody, BBCode::OSTATUS); } $author = self::addEntryAuthor($doc, "author", $item["author-link"], $item); diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index 47248bde1..c088876d9 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -1109,7 +1109,7 @@ class Feed $body = OStatus::formatPicturePost($item['body'], $item['uri-id']); - $body = BBCode::convertForItem($item['uri-id'], $body, BBCode::OSTATUS, false); + $body = BBCode::convertForUriId($item['uri-id'], $body, BBCode::OSTATUS, false); XML::addElement($doc, $entry, "content", $body, ["type" => "html"]); @@ -1186,7 +1186,7 @@ class Feed private static function getTitle(array $item) { if ($item['title'] != '') { - return BBCode::convertForItem($item['uri-id'], $item['title'], BBCode::OSTATUS); + return BBCode::convertForUriId($item['uri-id'], $item['title'], BBCode::OSTATUS); } // Fetch information about the post diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 8b02eb00e..03ff68d96 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1803,7 +1803,7 @@ class OStatus if (!$toplevel) { if (!empty($item['title'])) { - $title = BBCode::convertForItem($item['uri-id'], $item['title'], BBCode::OSTATUS); + $title = BBCode::convertForUriId($item['uri-id'], $item['title'], BBCode::OSTATUS); } else { $title = sprintf("New note by %s", $owner["nick"]); } @@ -1892,7 +1892,7 @@ class OStatus $body = "[b]".$item['title']."[/b]\n\n".$body; } - $body = BBCode::convertForItem($item['uri-id'], $body, BBCode::OSTATUS); + $body = BBCode::convertForUriId($item['uri-id'], $body, BBCode::OSTATUS); XML::addElement($doc, $entry, "content", $body, ["type" => "html"]); From c63d3f4604a09b8a8128e2c4253cb87eff87714f Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 06:37:45 +0000 Subject: [PATCH 044/108] Fix tests --- src/Model/Contact.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 39553ea9b..ecebe79b9 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -2028,7 +2028,7 @@ class Contact // 'xmpp', 'sensitive' $fields = ['uid', 'uri-id', 'avatar', 'header', 'name', 'nick', 'location', 'keywords', 'about', 'subscribe', - 'manually-approve', 'unsearchable', 'url', 'guid', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco', + 'manually-approve', 'unsearchable', 'url', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco', 'network', 'alias', 'baseurl', 'gsid', 'forum', 'prv', 'contact-type', 'pubkey', 'last-item']; $contact = DBA::selectFirst('contact', $fields, ['id' => $id]); if (!DBA::isResult($contact)) { @@ -2112,6 +2112,7 @@ class Contact } $update = false; + $guid = $ret['guid'] ?? ''; // make sure to not overwrite existing values with blank entries except some technical fields $keep = ['batch', 'notify', 'poll', 'request', 'confirm', 'poco', 'baseurl']; @@ -2157,10 +2158,10 @@ class Contact return true; } - if (empty($ret['guid'])) { + if (empty($guid)) { $ret['uri-id'] = ItemURI::getIdByURI($ret['url']); } else { - $ret['uri-id'] = ItemURI::insert(['uri' => $ret['uri'], 'guid' => $ret['guid']]); + $ret['uri-id'] = ItemURI::insert(['uri' => $ret['uri'], 'guid' => $guid]); } $ret['nurl'] = Strings::normaliseLink($ret['url']); From 6e79da0b0c4aeee14da50c0ad5d0500b4a58eebb Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 07:09:33 +0000 Subject: [PATCH 045/108] The uri-id is now in all contact tables --- database.sql | 8 +++++- doc/database/db_apcontact.md | 3 +++ doc/database/db_fcontact.md | 46 ++++++++++++++++++++--------------- src/Model/APContact.php | 6 +++++ src/Model/Contact.php | 8 ++---- src/Model/FContact.php | 1 + static/dbstructure.config.php | 6 ++++- 7 files changed, 51 insertions(+), 27 deletions(-) diff --git a/database.sql b/database.sql index ca248875b..5ee4ef053 100644 --- a/database.sql +++ b/database.sql @@ -335,6 +335,7 @@ CREATE TABLE IF NOT EXISTS `addon` ( -- CREATE TABLE IF NOT EXISTS `apcontact` ( `url` varbinary(255) NOT NULL COMMENT 'URL of the contact', + `uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the apcontact url', `uuid` varchar(255) COMMENT '', `type` varchar(20) NOT NULL COMMENT '', `following` varchar(255) COMMENT '', @@ -367,6 +368,8 @@ CREATE TABLE IF NOT EXISTS `apcontact` ( INDEX `baseurl` (`baseurl`(190)), INDEX `sharedinbox` (`sharedinbox`(190)), INDEX `gsid` (`gsid`), + UNIQUE INDEX `uri-id` (`uri-id`), + FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE, FOREIGN KEY (`gsid`) REFERENCES `gserver` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='ActivityPub compatible contacts - used in the ActivityPub implementation'; @@ -598,6 +601,7 @@ CREATE TABLE IF NOT EXISTS `fcontact` ( `id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID', `guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'unique id', `url` varchar(255) NOT NULL DEFAULT '' COMMENT '', + `uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the fcontact url', `name` varchar(255) NOT NULL DEFAULT '' COMMENT '', `photo` varchar(255) NOT NULL DEFAULT '' COMMENT '', `request` varchar(255) NOT NULL DEFAULT '' COMMENT '', @@ -614,7 +618,9 @@ CREATE TABLE IF NOT EXISTS `fcontact` ( `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '', PRIMARY KEY(`id`), INDEX `addr` (`addr`(32)), - UNIQUE INDEX `url` (`url`(190)) + UNIQUE INDEX `url` (`url`(190)), + UNIQUE INDEX `uri-id` (`uri-id`), + FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Diaspora compatible contacts - used in the Diaspora implementation'; -- diff --git a/doc/database/db_apcontact.md b/doc/database/db_apcontact.md index ede71d1d0..5abf60f10 100644 --- a/doc/database/db_apcontact.md +++ b/doc/database/db_apcontact.md @@ -9,6 +9,7 @@ Fields | Field | Description | Type | Null | Key | Default | Extra | | ---------------- | ------------------------------------------------------------------- | -------------- | ---- | --- | ------------------- | ----- | | url | URL of the contact | varbinary(255) | NO | PRI | NULL | | +| uri-id | Id of the item-uri table entry that contains the apcontact url | int unsigned | YES | | NULL | | | uuid | | varchar(255) | YES | | NULL | | | type | | varchar(20) | NO | | NULL | | | following | | varchar(255) | YES | | NULL | | @@ -47,12 +48,14 @@ Indexes | baseurl | baseurl(190) | | sharedinbox | sharedinbox(190) | | gsid | gsid | +| uri-id | UNIQUE, uri-id | Foreign Keys ------------ | Field | Target Table | Target Field | |-------|--------------|--------------| +| uri-id | [item-uri](help/database/db_item-uri) | id | | gsid | [gserver](help/database/db_gserver) | id | Return to [database documentation](help/database) diff --git a/doc/database/db_fcontact.md b/doc/database/db_fcontact.md index 43a073f61..51cfac764 100644 --- a/doc/database/db_fcontact.md +++ b/doc/database/db_fcontact.md @@ -6,25 +6,26 @@ Diaspora compatible contacts - used in the Diaspora implementation Fields ------ -| Field | Description | Type | Null | Key | Default | Extra | -| -------- | ------------- | ---------------- | ---- | --- | ------------------- | -------------- | -| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment | -| guid | unique id | varchar(255) | NO | | | | -| url | | varchar(255) | NO | | | | -| name | | varchar(255) | NO | | | | -| photo | | varchar(255) | NO | | | | -| request | | varchar(255) | NO | | | | -| nick | | varchar(255) | NO | | | | -| addr | | varchar(255) | NO | | | | -| batch | | varchar(255) | NO | | | | -| notify | | varchar(255) | NO | | | | -| poll | | varchar(255) | NO | | | | -| confirm | | varchar(255) | NO | | | | -| priority | | tinyint unsigned | NO | | 0 | | -| network | | char(4) | NO | | | | -| alias | | varchar(255) | NO | | | | -| pubkey | | text | YES | | NULL | | -| updated | | datetime | NO | | 0001-01-01 00:00:00 | | +| Field | Description | Type | Null | Key | Default | Extra | +| -------- | ------------------------------------------------------------- | ---------------- | ---- | --- | ------------------- | -------------- | +| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment | +| guid | unique id | varchar(255) | NO | | | | +| url | | varchar(255) | NO | | | | +| uri-id | Id of the item-uri table entry that contains the fcontact url | int unsigned | YES | | NULL | | +| name | | varchar(255) | NO | | | | +| photo | | varchar(255) | NO | | | | +| request | | varchar(255) | NO | | | | +| nick | | varchar(255) | NO | | | | +| addr | | varchar(255) | NO | | | | +| batch | | varchar(255) | NO | | | | +| notify | | varchar(255) | NO | | | | +| poll | | varchar(255) | NO | | | | +| confirm | | varchar(255) | NO | | | | +| priority | | tinyint unsigned | NO | | 0 | | +| network | | char(4) | NO | | | | +| alias | | varchar(255) | NO | | | | +| pubkey | | text | YES | | NULL | | +| updated | | datetime | NO | | 0001-01-01 00:00:00 | | Indexes ------------ @@ -34,6 +35,13 @@ Indexes | PRIMARY | id | | addr | addr(32) | | url | UNIQUE, url(190) | +| uri-id | UNIQUE, uri-id | +Foreign Keys +------------ + +| Field | Target Table | Target Field | +|-------|--------------|--------------| +| uri-id | [item-uri](help/database/db_item-uri) | id | Return to [database documentation](help/database) diff --git a/src/Model/APContact.php b/src/Model/APContact.php index fd9026def..5c60ebae5 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -349,6 +349,12 @@ class APContact $apcontact['alias'] = null; } + if (empty($apcontact['uuid'])) { + $apcontact['uri-id'] = ItemURI::getIdByURI($apcontact['url']); + } else { + $apcontact['uri-id'] = ItemURI::insert(['uri' => $apcontact['uri'], 'guid' => $apcontact['uuid']]); + } + $apcontact['updated'] = DateTimeFormat::utcNow(); // We delete the old entry when the URL is changed diff --git a/src/Model/Contact.php b/src/Model/Contact.php index ecebe79b9..30158c5b4 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -185,11 +185,7 @@ class Contact $fields['gsid'] = GServer::getID($fields['baseurl'], true); } - if (!empty($fields['url']) && !empty($fields['guid'])) { - $fields['uri-id'] = ItemURI::insert(['uri' => $fields['url'], 'guid' => $fields['guid']]); - } elseif (!empty($fields['url'])) { - $fields['uri-id'] = ItemURI::getIdByURI($fields['url']); - } + $fields['uri-id'] = ItemURI::getIdByURI($fields['url']); if (empty($fields['created'])) { $fields['created'] = DateTimeFormat::utcNow(); @@ -2161,7 +2157,7 @@ class Contact if (empty($guid)) { $ret['uri-id'] = ItemURI::getIdByURI($ret['url']); } else { - $ret['uri-id'] = ItemURI::insert(['uri' => $ret['uri'], 'guid' => $guid]); + $ret['uri-id'] = ItemURI::insert(['uri' => $ret['uri'], 'guid' => $guid]); } $ret['nurl'] = Strings::normaliseLink($ret['url']); diff --git a/src/Model/FContact.php b/src/Model/FContact.php index cf75a03db..24421b8c0 100644 --- a/src/Model/FContact.php +++ b/src/Model/FContact.php @@ -100,6 +100,7 @@ class FContact 'batch' => $arr["batch"], 'notify' => $arr["notify"], 'poll' => $arr["poll"], 'confirm' => $arr["confirm"], 'alias' => $arr["alias"], 'pubkey' => $arr["pubkey"], + 'uri-id' => ItemURI::insert(['uri' => $arr['url'], 'guid' => $arr['guid']]), 'updated' => DateTimeFormat::utcNow()]; $condition = ['url' => $arr["url"], 'network' => $arr["network"]]; diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index f15bc7075..e47f0d5dc 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -395,6 +395,7 @@ return [ "comment" => "ActivityPub compatible contacts - used in the ActivityPub implementation", "fields" => [ "url" => ["type" => "varbinary(255)", "not null" => "1", "primary" => "1", "comment" => "URL of the contact"], + "uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the apcontact url"], "uuid" => ["type" => "varchar(255)", "comment" => ""], "type" => ["type" => "varchar(20)", "not null" => "1", "comment" => ""], "following" => ["type" => "varchar(255)", "comment" => ""], @@ -428,7 +429,8 @@ return [ "followers" => ["followers(190)"], "baseurl" => ["baseurl(190)"], "sharedinbox" => ["sharedinbox(190)"], - "gsid" => ["gsid"] + "gsid" => ["gsid"], + "uri-id" => ["UNIQUE", "uri-id"], ] ], "application" => [ @@ -660,6 +662,7 @@ return [ "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"], "guid" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "unique id"], "url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], + "uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the fcontact url"], "name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "request" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], @@ -679,6 +682,7 @@ return [ "PRIMARY" => ["id"], "addr" => ["addr(32)"], "url" => ["UNIQUE", "url(190)"], + "uri-id" => ["UNIQUE", "uri-id"], ] ], "fsuggest" => [ From b50a92cf7a854fd231b8400623ecad3ec5d7a669 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 08:08:48 +0000 Subject: [PATCH 046/108] Contact tables added to expire function --- src/Worker/ExpirePosts.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Worker/ExpirePosts.php b/src/Worker/ExpirePosts.php index 55a07dd14..de650f667 100644 --- a/src/Worker/ExpirePosts.php +++ b/src/Worker/ExpirePosts.php @@ -185,6 +185,8 @@ class ExpirePosts AND NOT EXISTS(SELECT `uri-id` FROM `mail` WHERE `uri-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `uri-id` FROM `event` WHERE `uri-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `uri-id` FROM `contact` WHERE `uri-id` = `item-uri`.`id`) + AND NOT EXISTS(SELECT `uri-id` FROM `apcontact` WHERE `uri-id` = `item-uri`.`id`) + AND NOT EXISTS(SELECT `uri-id` FROM `fcontact` WHERE `uri-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `parent-uri-id` FROM `mail` WHERE `parent-uri-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `thr-parent-id` FROM `mail` WHERE `thr-parent-id` = `item-uri`.`id`)", $item['uri-id']]); From 9ac284ec3a01af8687015bc8ba7583662d61485f Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 08:46:42 +0000 Subject: [PATCH 047/108] Update on empty uri-id --- src/Model/FContact.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/FContact.php b/src/Model/FContact.php index 24421b8c0..0fc463327 100644 --- a/src/Model/FContact.php +++ b/src/Model/FContact.php @@ -60,7 +60,7 @@ class FContact $update = true; } - if ($person["guid"] == "") { + if (empty($person['guid']) || empty($person['uri-id'])) { $update = true; } } From 0735a22cdd403f3f51128f9ca67000e708f69ddd Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 14:52:22 +0000 Subject: [PATCH 048/108] Fix notice "undefined index: uri" --- src/Model/APContact.php | 4 ++-- src/Model/Contact.php | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Model/APContact.php b/src/Model/APContact.php index 5c60ebae5..aa5dbe2f7 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -124,7 +124,7 @@ class APContact $apcontact = DBA::selectFirst('apcontact', [], ['addr' => $url]); } - if (DBA::isResult($apcontact) && ($apcontact['updated'] > $ref_update) && !empty($apcontact['pubkey'])) { + if (DBA::isResult($apcontact) && ($apcontact['updated'] > $ref_update) && !empty($apcontact['pubkey']) && !empty($apcontact['uri-id'])) { return $apcontact; } @@ -352,7 +352,7 @@ class APContact if (empty($apcontact['uuid'])) { $apcontact['uri-id'] = ItemURI::getIdByURI($apcontact['url']); } else { - $apcontact['uri-id'] = ItemURI::insert(['uri' => $apcontact['uri'], 'guid' => $apcontact['uuid']]); + $apcontact['uri-id'] = ItemURI::insert(['uri' => $apcontact['url'], 'guid' => $apcontact['uuid']]); } $apcontact['updated'] = DateTimeFormat::utcNow(); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 30158c5b4..0184861c3 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1072,12 +1072,12 @@ class Contact return 0; } - $contact = self::getByURL($url, false, ['id', 'network'], $uid); + $contact = self::getByURL($url, false, ['id', 'network', 'uri-id'], $uid); if (!empty($contact)) { $contact_id = $contact["id"]; - if (empty($update)) { + if (empty($update) && (!empty($contact['uri-id']) || is_bool($update))) { Logger::debug('Contact found', ['url' => $url, 'uid' => $uid, 'update' => $update, 'cid' => $contact_id]); return $contact_id; } @@ -2157,7 +2157,7 @@ class Contact if (empty($guid)) { $ret['uri-id'] = ItemURI::getIdByURI($ret['url']); } else { - $ret['uri-id'] = ItemURI::insert(['uri' => $ret['uri'], 'guid' => $guid]); + $ret['uri-id'] = ItemURI::insert(['uri' => $ret['url'], 'guid' => $guid]); } $ret['nurl'] = Strings::normaliseLink($ret['url']); From 04580ad4fb568d89d76570ff5e97591a037fe841 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 16:20:22 +0000 Subject: [PATCH 049/108] Don't update automatically to make tests happy --- src/Model/Contact.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 0184861c3..3fa8e74b4 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1077,7 +1077,7 @@ class Contact if (!empty($contact)) { $contact_id = $contact["id"]; - if (empty($update) && (!empty($contact['uri-id']) || is_bool($update))) { + if (empty($update)) { Logger::debug('Contact found', ['url' => $url, 'uid' => $uid, 'update' => $update, 'cid' => $contact_id]); return $contact_id; } From e0fdde32878216e1c291386e7d3931ac0de5c807 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 17:13:54 +0000 Subject: [PATCH 050/108] Fix the tests, hopefully --- src/Model/Contact.php | 2 +- tests/datasets/api.fixture.php | 205 +++++++++++--------- tests/datasets/storage/database.fixture.php | 8 + 3 files changed, 125 insertions(+), 90 deletions(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 3fa8e74b4..0184861c3 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1077,7 +1077,7 @@ class Contact if (!empty($contact)) { $contact_id = $contact["id"]; - if (empty($update)) { + if (empty($update) && (!empty($contact['uri-id']) || is_bool($update))) { Logger::debug('Contact found', ['url' => $url, 'uid' => $uid, 'update' => $update, 'cid' => $contact_id]); return $contact_id; } diff --git a/tests/datasets/api.fixture.php b/tests/datasets/api.fixture.php index fbf2aad47..2c6512f8c 100644 --- a/tests/datasets/api.fixture.php +++ b/tests/datasets/api.fixture.php @@ -71,95 +71,6 @@ return [ 'theme' => 'frio', ], ], - 'contact' => [ - [ - 'id' => 42, - 'uid' => 42, - 'name' => 'Self contact', - 'nick' => 'selfcontact', - 'self' => 1, - 'nurl' => 'http://localhost/profile/selfcontact', - 'url' => 'http://localhost/profile/selfcontact', - 'about' => 'User used in tests', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::FOLLOWER, - 'network' => Protocol::DFRN, - 'location' => 'DFRN', - ], - // Having the same name and nick allows us to test - // the fallback to api_get_nick() in api_get_user() - [ - 'id' => 43, - 'uid' => 0, - 'name' => 'othercontact', - 'nick' => 'othercontact', - 'self' => 0, - 'nurl' => 'http://localhost/profile/othercontact', - 'url' => 'http://localhost/profile/othercontact', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::NOTHING, - 'network' => Protocol::DFRN, - 'location' => 'DFRN', - ], - [ - 'id' => 44, - 'uid' => 42, - 'name' => 'Friend contact', - 'nick' => 'friendcontact', - 'self' => 0, - 'nurl' => 'http://localhost/profile/friendcontact', - 'url' => 'http://localhost/profile/friendcontact', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::SHARING, - 'network' => Protocol::DFRN, - 'location' => 'DFRN', - ], - [ - 'id' => 45, - 'uid' => 0, - 'name' => 'Friend contact', - 'nick' => 'friendcontact', - 'self' => 0, - 'nurl' => 'http://localhost/profile/friendcontact', - 'url' => 'http://localhost/profile/friendcontact', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::SHARING, - 'network' => Protocol::DFRN, - 'location' => 'DFRN', - ], - [ - 'id' => 46, - 'uid' => 42, - 'name' => 'Mutual contact', - 'nick' => 'mutualcontact', - 'self' => 0, - 'nurl' => 'http://localhost/profile/mutualcontact', - 'url' => 'http://localhost/profile/mutualcontact', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::FRIEND, - 'network' => Protocol::DFRN, - 'location' => 'DFRN', - ], - [ - 'id' => 47, - 'uid' => 0, - 'name' => 'Mutual contact', - 'nick' => 'mutualcontact', - 'self' => 0, - 'nurl' => 'http://localhost/profile/mutualcontact', - 'url' => 'http://localhost/profile/mutualcontact', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::SHARING, - 'network' => Protocol::DFRN, - 'location' => 'DFRN', - ], - ], 'item-uri' => [ [ 'id' => 1, @@ -191,6 +102,122 @@ return [ 'uri' => '6', 'guid' => '6', ], + + [ + 'id' => 42, + 'uri' => 'http://localhost/profile/selfcontact', + 'guid' => '42', + ], + [ + 'id' => 43, + 'uri' => 'http://localhost/profile/othercontact', + 'guid' => '43', + ], + [ + 'id' => 44, + 'uri' => 'http://localhost/profile/friendcontact', + 'guid' => '44', + ], + [ + 'id' => 46, + 'uri' => 'http://localhost/profile/mutualcontact', + 'guid' => '46', + ], + ], + 'contact' => [ + [ + 'id' => 42, + 'uid' => 42, + 'uri-id' => 42, + 'name' => 'Self contact', + 'nick' => 'selfcontact', + 'self' => 1, + 'nurl' => 'http://localhost/profile/selfcontact', + 'url' => 'http://localhost/profile/selfcontact', + 'about' => 'User used in tests', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::FOLLOWER, + 'network' => Protocol::DFRN, + 'location' => 'DFRN', + ], + // Having the same name and nick allows us to test + // the fallback to api_get_nick() in api_get_user() + [ + 'id' => 43, + 'uid' => 0, + 'uri-id' => 43, + 'name' => 'othercontact', + 'nick' => 'othercontact', + 'self' => 0, + 'nurl' => 'http://localhost/profile/othercontact', + 'url' => 'http://localhost/profile/othercontact', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::NOTHING, + 'network' => Protocol::DFRN, + 'location' => 'DFRN', + ], + [ + 'id' => 44, + 'uid' => 42, + 'uri-id' => 44, + 'name' => 'Friend contact', + 'nick' => 'friendcontact', + 'self' => 0, + 'nurl' => 'http://localhost/profile/friendcontact', + 'url' => 'http://localhost/profile/friendcontact', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::SHARING, + 'network' => Protocol::DFRN, + 'location' => 'DFRN', + ], + [ + 'id' => 45, + 'uid' => 0, + 'uri-id' => 44, + 'name' => 'Friend contact', + 'nick' => 'friendcontact', + 'self' => 0, + 'nurl' => 'http://localhost/profile/friendcontact', + 'url' => 'http://localhost/profile/friendcontact', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::SHARING, + 'network' => Protocol::DFRN, + 'location' => 'DFRN', + ], + [ + 'id' => 46, + 'uid' => 42, + 'uri-id' => 46, + 'name' => 'Mutual contact', + 'nick' => 'mutualcontact', + 'self' => 0, + 'nurl' => 'http://localhost/profile/mutualcontact', + 'url' => 'http://localhost/profile/mutualcontact', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::FRIEND, + 'network' => Protocol::DFRN, + 'location' => 'DFRN', + ], + [ + 'id' => 47, + 'uid' => 0, + 'uri-id' => 46, + 'name' => 'Mutual contact', + 'nick' => 'mutualcontact', + 'self' => 0, + 'nurl' => 'http://localhost/profile/mutualcontact', + 'url' => 'http://localhost/profile/mutualcontact', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::SHARING, + 'network' => Protocol::DFRN, + 'location' => 'DFRN', + ], ], 'verb' => [ [ diff --git a/tests/datasets/storage/database.fixture.php b/tests/datasets/storage/database.fixture.php index 6a73d4ed2..9a8c67531 100644 --- a/tests/datasets/storage/database.fixture.php +++ b/tests/datasets/storage/database.fixture.php @@ -33,10 +33,18 @@ return [ 'theme' => 'frio', ], ], + 'item-uri' => [ + [ + 'id' => 42, + 'uri' => 'http://localhost/profile/selfcontact', + 'guid' => '42', + ], + ], 'contact' => [ [ 'id' => 42, 'uid' => 42, + 'uri-id' => 42, 'name' => 'Self contact', 'nick' => 'selfcontact', 'self' => 1, From d6c1e1fd1c8897c6a26a60486448c699e65843a8 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 18:10:48 +0000 Subject: [PATCH 051/108] Fix "Undefined index: reply-to-id" --- src/Protocol/ActivityPub/Processor.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index f4892b6c0..ef4e10976 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -26,6 +26,7 @@ use Friendica\Content\Text\HTML; use Friendica\Content\Text\Markdown; use Friendica\Core\Logger; use Friendica\Core\Protocol; +use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model\APContact; @@ -191,6 +192,10 @@ class Processor */ public static function createItem($activity) { + if (empty($activity['reply-to-id'])) { + $activity['reply-to-id'] = $activity['id']; + } + $item = []; $item['verb'] = Activity::POST; $item['thr-parent'] = $activity['reply-to-id']; From 90897f36cab3540e76d0e290006a9dec3b2621d6 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 19:30:41 +0000 Subject: [PATCH 052/108] Fix notices because of unknown Hubzilla activity type --- src/Protocol/ActivityPub/Processor.php | 4 ---- src/Protocol/ActivityPub/Receiver.php | 15 ++++++++------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index ef4e10976..fa04dc734 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -192,10 +192,6 @@ class Processor */ public static function createItem($activity) { - if (empty($activity['reply-to-id'])) { - $activity['reply-to-id'] = $activity['id']; - } - $item = []; $item['verb'] = Activity::POST; $item['thr-parent'] = $activity['reply-to-id']; diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index 7c753f188..277c93cd7 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -333,7 +333,8 @@ class Receiver $object_type = self::fetchObjectType($activity, $object_id, $uid); // Fetch the content only on activities where this matters - if (in_array($type, ['as:Create', 'as:Update', 'as:Announce'])) { + // We can receive "#emojiReaction" when fetching content from Hubzilla systems + if (in_array($type, ['as:Create', 'as:Update', 'as:Announce']) || strpos($type, '#emojiReaction')) { // Always fetch on "Announce" $object_data = self::fetchObject($object_id, $activity['as:object'], $trust_source && ($type != 'as:Announce'), $uid); if (empty($object_data)) { @@ -501,7 +502,7 @@ class Receiver if (!empty($activity['from-relay'])) { $object_data['from-relay'] = $activity['from-relay']; } - + switch ($type) { case 'as:Create': if (in_array($object_data['object_type'], self::CONTENT_TYPES)) { @@ -627,7 +628,7 @@ class Receiver * @param array $activity * @param string $actor * @param array $tags - * @param boolean $fetch_unlisted + * @param boolean $fetch_unlisted * * @return array with receivers (user id) * @throws \Exception @@ -687,7 +688,7 @@ class Receiver $receivers[0] = ['uid' => 0, 'type' => self::TARGET_GLOBAL]; } - // Add receiver "-1" for unlisted posts + // Add receiver "-1" for unlisted posts if ($fetch_unlisted && ($receiver == self::PUBLIC_COLLECTION) && ($element == 'as:cc')) { $receivers[-1] = ['uid' => -1, 'type' => self::TARGET_GLOBAL]; } @@ -950,7 +951,7 @@ class Receiver Logger::info('Empty id'); return false; } - + if ($id != $object_id) { Logger::info('Fetched id differs from provided id', ['provided' => $object_id, 'fetched' => $id]); return false; @@ -1232,7 +1233,7 @@ class Receiver if (empty($object['as:url'])) { return $object_data; } - + $urls = $object['as:url']; $keys = array_keys($urls); if (!is_numeric(array_pop($keys))) { @@ -1299,7 +1300,7 @@ class Receiver * @return array * @throws \Exception */ - private static function processObject($object) + public static function processObject($object) { if (!JsonLD::fetchElement($object, '@id')) { return false; From de39091a793e027ceeba497d44463481a038c243 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 9 Jul 2021 19:32:06 +0000 Subject: [PATCH 053/108] Revert some test changes --- src/Protocol/ActivityPub/Processor.php | 1 - src/Protocol/ActivityPub/Receiver.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index fa04dc734..f4892b6c0 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -26,7 +26,6 @@ use Friendica\Content\Text\HTML; use Friendica\Content\Text\Markdown; use Friendica\Core\Logger; use Friendica\Core\Protocol; -use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model\APContact; diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index 277c93cd7..d59d9c4af 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -1300,7 +1300,7 @@ class Receiver * @return array * @throws \Exception */ - public static function processObject($object) + private static function processObject($object) { if (!JsonLD::fetchElement($object, '@id')) { return false; From 540dc90ce1ccadcd56bebfd1944d072fbde98f66 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Fri, 9 Jul 2021 19:23:01 -0400 Subject: [PATCH 054/108] Merge frio-specific share block template into the base template - Add BIDI support for share blocks - Remove redundant share block styles --- view/global.css | 33 +++++++++++++----- view/templates/shared_content.tpl | 36 +++++++++++++++++--- view/theme/duepuntozero/style.css | 35 ------------------- view/theme/frio/css/style.css | 29 +++++++--------- view/theme/frio/templates/shared_content.tpl | 32 ----------------- view/theme/quattro/dark/style.css | 21 ------------ view/theme/quattro/green/style.css | 21 ------------ view/theme/quattro/lilac/style.css | 21 ------------ view/theme/quattro/quattro.less | 16 --------- view/theme/smoothly/style.css | 31 ----------------- view/theme/vier/plusminus.css | 9 ----- view/theme/vier/style.css | 4 --- 12 files changed, 68 insertions(+), 220 deletions(-) delete mode 100644 view/theme/frio/templates/shared_content.tpl diff --git a/view/global.css b/view/global.css index e50e87ec2..08788c5ba 100644 --- a/view/global.css +++ b/view/global.css @@ -151,13 +151,36 @@ span.connector { } /* Shared Messages */ + .shared_header { + display: flex; + justify-content: space-between; min-height: 32px; color: #999; border-top: 1px solid #D2D2D2; padding-top: 5px; margin-top: 5px; } +.shared_header > .avatar { + display: block; + flex: 0 0 41px; + margin-inline-end: 9px; +} +.shared_header > .avatar > img { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.shared_header > .metadata { + flex: 1 0 auto; +} +.shared_header > .metadata > p { + margin: 0; +} +.shared_header > .preferences { + position: static; + flex: 0 0 auto; +} .shared_header a { -webkit-transition: all 0.2s ease-in-out; @@ -167,16 +190,8 @@ span.connector { transition: all 0.2s ease-in-out; } -.shared_header img { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - float: left; - margin-right: 9px; -} - blockquote.shared_content { - margin-left: 32px; + margin-inline-start: 32px; color: #000; border: none; } diff --git a/view/templates/shared_content.tpl b/view/templates/shared_content.tpl index 32cfbe372..4db3b66c5 100644 --- a/view/templates/shared_content.tpl +++ b/view/templates/shared_content.tpl @@ -1,12 +1,38 @@ -
+
{{if $avatar}} - - + + {{/if}} - - + +
+ {{if $network_icon}} + + {{else}} + {{$network_name}} + {{/if}} + {{if $link}} + + + + {{/if}} +
{{$content nofilter}}
diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index 9a783286d..ee99f4790 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -1238,44 +1238,13 @@ input#dfrn-url { background: rgba(0, 0, 0, 0.5) url(shiny.png) no-repeat scroll center center; } -.shared_header { - height: 32px; - color: #999; - border-top: 1px solid #D2D2D2; - padding-top: 5px; - margin-top: 5px; -} - .shared_header a { color: black; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - -ms-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; } - .shared_header a:hover { color: #36c; } -.shared_header img { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - float: left; -} - -.shared_header span { - margin-left: 9px; -} - -blockquote.shared_content { - margin-left: 32px; - color: #000; - border: none; -} - .wall-item-title { float: left; font-weight: bold; @@ -3244,10 +3213,6 @@ div.jGrowl div.info { width: 20px; } -.shared_header span { - margin-left: 10px; -} - /* small screens */ @media all and (max-width: 1089px) { .field label { width: 90%; } diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 4fb504714..e5d30d1d2 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1709,10 +1709,20 @@ aside .panel-body { right: 0; top: 0; } -.shared_header .preferences { - top: 7px; - right: 9px; +.shared_header { + margin-left: 0px; + margin-top: 0px; + padding-top: 0px; + margin-bottom: 10px; + border-top: none; + color: inherit; } +blockquote.shared_content { + padding: 0px; + margin-inline-start: 0px; + color: inherit; +} + .wall-item-network { font-size: 13px; } @@ -1837,19 +1847,6 @@ aside .panel-body { .vevent:hover { box-shadow: 0 0 0 1.5px rgba(0, 0, 0, 0.15) inset, 0 1px 1px rgba(0, 0, 0, 0.05); } -.shared_header { - margin-left: 0px; - margin-top: 0px; - padding-top: 0px; - margin-bottom: 10px; - border-top: none; - color: inherit; -} -blockquote.shared_content { - padding: 0px; - margin-left: 0px; - color: inherit; -} code > .hl-main { padding: 10px 10px 1px 0; } diff --git a/view/theme/frio/templates/shared_content.tpl b/view/theme/frio/templates/shared_content.tpl deleted file mode 100644 index f7b210bb8..000000000 --- a/view/theme/frio/templates/shared_content.tpl +++ /dev/null @@ -1,32 +0,0 @@ -
-
- {{if $avatar}} - - - - {{/if}} - -
- {{if $network_icon}} - - {{else}} - {{$network_name}} - {{/if}} - {{if $link}} - - - - {{/if}} -
-
- {{if $guid}} - - {{/if}} - {{$posted}} - {{if $guid}} - - {{/if}} -
-
-
{{$content nofilter}}
-
diff --git a/view/theme/quattro/dark/style.css b/view/theme/quattro/dark/style.css index be48064f4..e4f7fb3b9 100644 --- a/view/theme/quattro/dark/style.css +++ b/view/theme/quattro/dark/style.css @@ -1437,27 +1437,6 @@ section { .type-video blockquote { padding-left: 1em; } -.shared_header { - height: 32px; - color: #999; - border-top: 1px solid #cccccc; - padding-top: 5px; - margin-top: 5px; -} -.shared_header img { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - float: left; -} -.shared_header span { - margin-left: 9px; -} -blockquote.shared_content { - margin-left: 32px; - color: #000; - border: none; -} .oembed.video > a.embed_video { display: block; position: relative; diff --git a/view/theme/quattro/green/style.css b/view/theme/quattro/green/style.css index 681b9417c..3ab55fbaf 100644 --- a/view/theme/quattro/green/style.css +++ b/view/theme/quattro/green/style.css @@ -1437,27 +1437,6 @@ section { .type-video blockquote { padding-left: 1em; } -.shared_header { - height: 32px; - color: #999; - border-top: 1px solid #cccccc; - padding-top: 5px; - margin-top: 5px; -} -.shared_header img { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - float: left; -} -.shared_header span { - margin-left: 9px; -} -blockquote.shared_content { - margin-left: 32px; - color: #000; - border: none; -} .oembed.video > a.embed_video { display: block; position: relative; diff --git a/view/theme/quattro/lilac/style.css b/view/theme/quattro/lilac/style.css index df854a21f..7adf87ad9 100644 --- a/view/theme/quattro/lilac/style.css +++ b/view/theme/quattro/lilac/style.css @@ -1437,27 +1437,6 @@ section { .type-video blockquote { padding-left: 1em; } -.shared_header { - height: 32px; - color: #999; - border-top: 1px solid #cccccc; - padding-top: 5px; - margin-top: 5px; -} -.shared_header img { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - float: left; -} -.shared_header span { - margin-left: 9px; -} -blockquote.shared_content { - margin-left: 32px; - color: #000; - border: none; -} .oembed.video > a.embed_video { display: block; position: relative; diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less index 53874be02..9a990557e 100644 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -770,22 +770,6 @@ section { border-top: 1px solid @ThreadBottomBorderColor; padding-top: 5px; margin-top: 5px; - - img { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - float: left; - } - - span { margin-left: 9px; } -} - - -blockquote.shared_content { - margin-left: 32px; - color: #000; - border: none; } .oembed.video { diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index ac0179ea7..2ea3bd620 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -1815,44 +1815,13 @@ ul .sidebar-group-li .icon { .type-link .oembed { } -.shared_header { - height: 32px; - color: #999; - border-top: 1px solid #D2D2D2; - padding-top: 5px; - margin-top: 5px; -} - .shared_header a { color: black; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - -ms-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; } - .shared_header a:hover { color: #36c; } -.shared_header img { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - float: left; -} - -.shared_header span { - margin-left: 9px; -} - -blockquote.shared_content { - margin-left: 32px; - color: #000; - border: none; -} - .icon.drop, .icon.drophide { float: left; diff --git a/view/theme/vier/plusminus.css b/view/theme/vier/plusminus.css index 7d9c09e3e..23d63e766 100644 --- a/view/theme/vier/plusminus.css +++ b/view/theme/vier/plusminus.css @@ -345,15 +345,6 @@ div.pager, ul.tabs { line-height: normal; } -.shared_header { - min-height: 32px;; - color: #999; - border-top: 0px; - padding-top: 5px; - margin-top: 5px; -} - - /* Post footer */ .wall-item-like { font-size:12px; } diff --git a/view/theme/vier/style.css b/view/theme/vier/style.css index 8bf982018..0484a4ea1 100644 --- a/view/theme/vier/style.css +++ b/view/theme/vier/style.css @@ -1438,10 +1438,6 @@ section.minimal { font-size: 12px; } -.shared_header { - line-height: 14px; -} - .wall-item-network { color: #999; font-size: 12px; From 161fa4a79575f28a0f243b4d0f05a6551019da42 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 10 Jul 2021 01:41:26 +0000 Subject: [PATCH 055/108] Post update: Set "uri-id" in the contact tables --- src/Database/PostUpdate.php | 147 +++++++++++++++++++++++++++++++++++- 1 file changed, 146 insertions(+), 1 deletion(-) diff --git a/src/Database/PostUpdate.php b/src/Database/PostUpdate.php index ab72848ff..64574f244 100644 --- a/src/Database/PostUpdate.php +++ b/src/Database/PostUpdate.php @@ -91,6 +91,15 @@ class PostUpdate if (!self::update1400()) { return false; } + if (!self::update1424()) { + return false; + } + if (!self::update1425()) { + return false; + } + if (!self::update1426()) { + return false; + } return true; } @@ -771,7 +780,7 @@ class PostUpdate } /** - * update the "hash" field in the photo table + * update the "external-id" field in the post table * * @return bool "true" when the job is done * @throws \Friendica\Network\HTTPException\InternalServerErrorException @@ -816,4 +825,140 @@ class PostUpdate return false; } + + /** + * update the "uri-id" field in the contact table + * + * @return bool "true" when the job is done + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + */ + private static function update1424() + { + // Was the script completed? + if (DI::config()->get("system", "post_update_version") >= 1424) { + return true; + } + + $condition = ["`uri-id` IS NULL"]; + Logger::info('Start', ['rest' => DBA::count('contact', $condition)]); + + $rows = 0; + $contacts = DBA::select('contact', ['id', 'url'], $condition, ['limit' => 1000]); + + if (DBA::errorNo() != 0) { + Logger::error('Database error', ['no' => DBA::errorNo(), 'message' => DBA::errorMessage()]); + return false; + } + + while ($contact = DBA::fetch($contacts)) { + DBA::update('contact', ['uri-id' => ItemURI::getIdByURI($contact['url'])], ['id' => $contact['id']]); + ++$rows; + } + DBA::close($contacts); + + Logger::info('Processed', ['rows' => $rows]); + + if ($rows <= 100) { + DI::config()->set("system", "post_update_version", 1424); + Logger::info('Done'); + return true; + } + + return false; + } + + /** + * update the "uri-id" field in the fcontact table + * + * @return bool "true" when the job is done + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + */ + private static function update1425() + { + // Was the script completed? + if (DI::config()->get("system", "post_update_version") >= 1425) { + return true; + } + + $condition = ["`uri-id` IS NULL"]; + Logger::info('Start', ['rest' => DBA::count('fcontact', $condition)]); + + $rows = 0; + $fcontacts = DBA::select('fcontact', ['id', 'url', 'guid'], $condition, ['limit' => 1000]); + + if (DBA::errorNo() != 0) { + Logger::error('Database error', ['no' => DBA::errorNo(), 'message' => DBA::errorMessage()]); + return false; + } + + while ($fcontact = DBA::fetch($fcontacts)) { + if (!empty($fcontact['guid'])) { + $uriid = ItemURI::insert(['uri' => $fcontact['url'], 'guid' => $fcontact['guid']]); + } else { + $uriid = ItemURI::getIdByURI($fcontact['url']); + } + DBA::update('fcontact', ['uri-id' => $uriid], ['id' => $fcontact['id']]); + ++$rows; + } + DBA::close($fcontacts); + + Logger::info('Processed', ['rows' => $rows]); + + if ($rows <= 100) { + DI::config()->set("system", "post_update_version", 1425); + Logger::info('Done'); + return true; + } + + return false; + } + + /** + * update the "uri-id" field in the apcontact table + * + * @return bool "true" when the job is done + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + */ + private static function update1426() + { + // Was the script completed? + if (DI::config()->get("system", "post_update_version") >= 1426) { + return true; + } + + $condition = ["`uri-id` IS NULL"]; + Logger::info('Start', ['rest' => DBA::count('apcontact', $condition)]); + + $rows = 0; + $apcontacts = DBA::select('apcontact', ['url', 'uuid'], $condition, ['limit' => 1000]); + + if (DBA::errorNo() != 0) { + Logger::error('Database error', ['no' => DBA::errorNo(), 'message' => DBA::errorMessage()]); + return false; + } + + while ($apcontact = DBA::fetch($apcontacts)) { + if (!empty($apcontact['uuid'])) { + $uriid = ItemURI::insert(['uri' => $apcontact['url'], 'guid' => $apcontact['uuid']]); + } else { + $uriid = ItemURI::getIdByURI($apcontact['url']); + } + DBA::update('apcontact', ['uri-id' => $uriid], ['url' => $apcontact['url']]); + ++$rows; + } + DBA::close($apcontacts); + + Logger::info('Processed', ['rows' => $rows]); + + if ($rows <= 100) { + DI::config()->set("system", "post_update_version", 1426); + Logger::info('Done'); + return true; + } + + return false; + } } From 07d2dfcd6015dfb0ba65b71cd8c304f83cb39dbb Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 10 Jul 2021 12:58:48 +0000 Subject: [PATCH 056/108] Some more "convertForUriId" replacements --- database.sql | 3 +- include/api.php | 16 ++-- include/conversation.php | 97 ----------------------- include/enotify.php | 2 +- mod/message.php | 7 +- src/Model/Profile.php | 8 +- src/Module/Api/Friendica/Events/Index.php | 2 +- src/Module/Profile/Profile.php | 4 +- src/Protocol/ActivityPub/Receiver.php | 3 +- src/Protocol/ActivityPub/Transmitter.php | 2 +- src/Protocol/DFRN.php | 11 +-- src/Protocol/Feed.php | 4 +- src/Protocol/OStatus.php | 4 +- static/dbstructure.config.php | 2 +- static/dbview.config.php | 1 + 15 files changed, 33 insertions(+), 133 deletions(-) diff --git a/database.sql b/database.sql index 5ee4ef053..8f9fc8f0d 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2021.09-dev (Siberian Iris) --- DB_UPDATE_VERSION 1426 +-- DB_UPDATE_VERSION 1427 -- ------------------------------------------ @@ -2291,6 +2291,7 @@ CREATE VIEW `owner-view` AS SELECT `contact`.`dfrn-id` AS `dfrn-id`, `contact`.`url` AS `url`, `contact`.`nurl` AS `nurl`, + `contact`.`uri-id` AS `uri-id`, `contact`.`addr` AS `addr`, `contact`.`alias` AS `alias`, `contact`.`pubkey` AS `pubkey`, diff --git a/include/api.php b/include/api.php index 25efa8f1b..951c2b3e5 100644 --- a/include/api.php +++ b/include/api.php @@ -2525,12 +2525,12 @@ function api_format_messages($item, $recipient, $sender) if (!empty($_GET['getText'])) { $ret['title'] = $item['title']; if ($_GET['getText'] == 'html') { - $ret['text'] = BBCode::convert($item['body'], false); + $ret['text'] = BBCode::convertForUriId($item['uri-id'], $item['body'], BBCode::API); } elseif ($_GET['getText'] == 'plain') { - $ret['text'] = trim(HTML::toPlaintext(BBCode::convert(api_clean_plain_items($item['body']), false, BBCode::API, true), 0)); + $ret['text'] = trim(HTML::toPlaintext(BBCode::convertForUriId($item['uri-id'], api_clean_plain_items($item['body']), BBCode::API), 0)); } } else { - $ret['text'] = $item['title'] . "\n" . HTML::toPlaintext(BBCode::convert(api_clean_plain_items($item['body']), false, BBCode::API, true), 0); + $ret['text'] = $item['title'] . "\n" . HTML::toPlaintext(BBCode::convertForUriId($item['uri-id'], api_clean_plain_items($item['body']), BBCode::API), 0); } if (!empty($_GET['getUserObjects']) && $_GET['getUserObjects'] == 'false') { unset($ret['sender']); @@ -2557,7 +2557,7 @@ function api_convert_item($item) $attachments = api_get_attachments($body, $item['uri-id']); // Workaround for ostatus messages where the title is identically to the body - $html = BBCode::convert(api_clean_plain_items($body), false, BBCode::API, true); + $html = BBCode::convertForUriId($item['uri-id'], api_clean_plain_items($body), BBCode::API); $statusbody = trim(HTML::toPlaintext($html, 0)); // handle data: images @@ -2575,7 +2575,7 @@ function api_convert_item($item) $statustext = mb_substr($statustext, 0, 1000) . "... \n" . ($item['plink'] ?? ''); } - $statushtml = BBCode::convert(BBCode::removeAttachment($body), false, BBCode::API, true); + $statushtml = BBCode::convertForUriId($item['uri-id'], BBCode::removeAttachment($body), BBCode::API); // Workaround for clients with limited HTML parser functionality $search = ["
", "
", "
", @@ -2589,7 +2589,7 @@ function api_convert_item($item) $statushtml = str_replace($search, $replace, $statushtml); if ($item['title'] != "") { - $statushtml = "

" . BBCode::convert($item['title']) . "


" . $statushtml; + $statushtml = "

" . BBCode::convertForUriId($item['uri-id'], $item['title']) . "


" . $statushtml; } do { @@ -2607,7 +2607,7 @@ function api_convert_item($item) // feeds without body should contain the link if ((($item['network'] ?? Protocol::PHANTOM) == Protocol::FEED) && (strlen($item['body']) == 0)) { - $statushtml .= BBCode::convert($item['plink']); + $statushtml .= BBCode::convertForUriId($item['uri-id'], $item['plink']); } return [ @@ -3054,7 +3054,7 @@ function api_format_item($item, $type = "json", $status_user = null, $author_use 'external_url' => DI::baseUrl() . "/display/" . $item['guid'], 'friendica_activities' => api_format_items_activities($item, $type), 'friendica_title' => $item['title'], - 'friendica_html' => BBCode::convert($item['body'], false) + 'friendica_html' => BBCode::convertForUriId($item['uri-id'], $item['body'], BBCode::EXTERNAL) ]; if (count($converted["attachments"]) > 0) { diff --git a/include/conversation.php b/include/conversation.php index 4bd6ce600..cd9e09899 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -47,91 +47,6 @@ use Friendica\Util\Strings; use Friendica\Util\Temporal; use Friendica\Util\XML; -function item_extract_images($body) { - - $saved_image = []; - $orig_body = $body; - $new_body = ''; - - $cnt = 0; - $img_start = strpos($orig_body, '[img'); - $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false); - $img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false); - while (($img_st_close !== false) && ($img_end !== false)) { - - $img_st_close++; // make it point to AFTER the closing bracket - $img_end += $img_start; - - if (!strcmp(substr($orig_body, $img_start + $img_st_close, 5), 'data:')) { - // This is an embedded image - - $saved_image[$cnt] = substr($orig_body, $img_start + $img_st_close, $img_end - ($img_start + $img_st_close)); - $new_body = $new_body . substr($orig_body, 0, $img_start) . '[!#saved_image' . $cnt . '#!]'; - - $cnt++; - } else { - $new_body = $new_body . substr($orig_body, 0, $img_end + strlen('[/img]')); - } - - $orig_body = substr($orig_body, $img_end + strlen('[/img]')); - - if ($orig_body === false) { - // in case the body ends on a closing image tag - $orig_body = ''; - } - - $img_start = strpos($orig_body, '[img'); - $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false); - $img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false); - } - - $new_body = $new_body . $orig_body; - - return ['body' => $new_body, 'images' => $saved_image]; -} - -function item_redir_and_replace_images($body, $images, $cid) { - - $origbody = $body; - $newbody = ''; - - $cnt = 1; - $pos = BBCode::getTagPosition($origbody, 'url', 0); - while ($pos !== false && $cnt < 1000) { - - $search = '/\[url\=(.*?)\]\[!#saved_image([0-9]*)#!\]\[\/url\]' . '/is'; - $replace = '[url=' . DI::baseUrl() . '/redir/' . $cid - . '?url=' . '$1' . '][!#saved_image' . '$2' .'#!][/url]'; - - $newbody .= substr($origbody, 0, $pos['start']['open']); - $subject = substr($origbody, $pos['start']['open'], $pos['end']['close'] - $pos['start']['open']); - $origbody = substr($origbody, $pos['end']['close']); - if ($origbody === false) { - $origbody = ''; - } - - $subject = preg_replace($search, $replace, $subject); - $newbody .= $subject; - - $cnt++; - // Isn't this supposed to use $cnt value for $occurrences? - @MrPetovan - $pos = BBCode::getTagPosition($origbody, 'url', 0); - } - $newbody .= $origbody; - - $cnt = 0; - foreach ($images as $image) { - /* - * We're depending on the property of 'foreach' (specified on the PHP website) that - * it loops over the array starting from the first element and going sequentially - * to the last element. - */ - $newbody = str_replace('[!#saved_image' . $cnt . '#!]', '[img]' . $image . '[/img]', $newbody); - $cnt++; - } - return $newbody; -} - /** * Render actions localized * @@ -141,11 +56,6 @@ function item_redir_and_replace_images($body, $images, $cid) { */ function localize_item(&$item) { - $extracted = item_extract_images($item['body']); - if ($extracted['images']) { - $item['body'] = item_redir_and_replace_images($extracted['body'], $extracted['images'], $item['contact-id']); - } - /// @todo The following functionality needs to be cleaned up. if (!empty($item['verb'])) { $activity = DI::activity(); @@ -260,13 +170,6 @@ function localize_item(&$item) } } - // add zrl's to public images - $photo_pattern = "/\[url=(.*?)\/photos\/(.*?)\/image\/(.*?)\]\[img(.*?)\]h(.*?)\[\/img\]\[\/url\]/is"; - if (preg_match($photo_pattern, $item['body'])) { - $photo_replace = '[url=' . Profile::zrl('$1' . '/photos/' . '$2' . '/image/' . '$3' , true) . '][img' . '$4' . ']h' . '$5' . '[/img][/url]'; - $item['body'] = BBCode::pregReplaceInTag($photo_pattern, $photo_replace, 'url', $item['body']); - } - // add sparkle links to appropriate permalinks // Only create a redirection to a magic link when logged in if (!empty($item['plink']) && Session::isAuthenticated()) { diff --git a/include/enotify.php b/include/enotify.php index 409fc66fa..cfc03626f 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -474,7 +474,7 @@ function notification($params) if ($show_in_notification_page) { $fields = [ 'name' => $params['source_name'] ?? '', - 'name_cache' => substr(strip_tags(BBCode::convert($params['source_name'])), 0, 255), + 'name_cache' => substr(strip_tags(BBCode::convertForUriId($uri_id, $params['source_name'])), 0, 255), 'url' => $params['source_link'] ?? '', 'photo' => $params['source_photo'] ?? '', 'link' => $itemlink ?? '', diff --git a/mod/message.php b/mod/message.php index 2705708ea..ff4998992 100644 --- a/mod/message.php +++ b/mod/message.php @@ -314,14 +314,9 @@ function message_content(App $a) $sparkle = ' sparkle'; } - $extracted = item_extract_images($message['body']); - if ($extracted['images']) { - $message['body'] = item_redir_and_replace_images($extracted['body'], $extracted['images'], $message['contact-id']); - } - $from_name_e = $message['from-name']; $subject_e = $message['title']; - $body_e = BBCode::convert($message['body']); + $body_e = BBCode::convertForUriId($message['uri-id'], $message['body']); $to_name_e = $message['name']; $contact = Contact::getByURL($message['from-url'], false, ['thumb', 'addr', 'id', 'avatar']); diff --git a/src/Model/Profile.php b/src/Model/Profile.php index 4a0db9ecd..b3345eb63 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -486,11 +486,11 @@ class Profile } if (isset($p['about'])) { - $p['about'] = BBCode::convert($p['about']); + $p['about'] = BBCode::convertForUriId($profile['uri-id'] ?? 0, $p['about']); } if (isset($p['address'])) { - $p['address'] = BBCode::convert($p['address']); + $p['address'] = BBCode::convertForUriId($profile['uri-id'] ?? 0, $p['address']); } $p['photo'] = Contact::getAvatarUrlForId($cid, ProxyUtils::SIZE_SMALL); @@ -670,13 +670,13 @@ class Profile $istoday = true; } - $title = strip_tags(html_entity_decode(BBCode::convert($rr['summary']), ENT_QUOTES, 'UTF-8')); + $title = strip_tags(html_entity_decode(BBCode::convertForUriId($rr['uri-id'], $rr['summary']), ENT_QUOTES, 'UTF-8')); if (strlen($title) > 35) { $title = substr($title, 0, 32) . '... '; } - $description = substr(strip_tags(BBCode::convert($rr['desc'])), 0, 32) . '... '; + $description = substr(strip_tags(BBCode::convertForUriId($rr['uri-id'], $rr['desc'])), 0, 32) . '... '; if (!$description) { $description = DI::l10n()->t('[No description]'); } diff --git a/src/Module/Api/Friendica/Events/Index.php b/src/Module/Api/Friendica/Events/Index.php index d53273ef6..febbdea48 100644 --- a/src/Module/Api/Friendica/Events/Index.php +++ b/src/Module/Api/Friendica/Events/Index.php @@ -55,7 +55,7 @@ class Index extends BaseApi 'cid' => $event['cid'], 'uri' => $event['uri'], 'name' => $event['summary'], - 'desc' => BBCode::convert($event['desc']), + 'desc' => BBCode::convertForUriId($event['uri-id'], $event['desc']), 'startTime' => $event['start'], 'endTime' => $event['finish'], 'type' => $event['type'], diff --git a/src/Module/Profile/Profile.php b/src/Module/Profile/Profile.php index dfe537c8c..96545deaf 100644 --- a/src/Module/Profile/Profile.php +++ b/src/Module/Profile/Profile.php @@ -169,7 +169,7 @@ class Profile extends BaseProfile } if ($a->profile['about']) { - $basic_fields += self::buildField('about', DI::l10n()->t('Description:'), BBCode::convert($a->profile['about'])); + $basic_fields += self::buildField('about', DI::l10n()->t('Description:'), BBCode::convertForUriId($a->profile['uri-id'], $a->profile['about'])); } if ($a->profile['xmpp']) { @@ -218,7 +218,7 @@ class Profile extends BaseProfile $custom_fields += self::buildField( 'custom_' . $profile_field->order, $profile_field->label, - BBCode::convert($profile_field->value), + BBCode::convertForUriId($a->profile['uri-id'], $profile_field->value), 'aprofile custom' ); }; diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index d59d9c4af..7669934a6 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -1345,8 +1345,7 @@ class Receiver // Some AP software allow formatted text in post location, so we run all the text converters we have to boil // down to HTML and then finally format to plaintext. $location = Markdown::convert($location); - $location = BBCode::convert($location); - $location = HTML::toPlaintext($location); + $location = BBCode::toPlaintext($location); } $object_data['sc:identifier'] = JsonLD::fetchElement($object, 'sc:identifier', '@value'); diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index cdf153830..29fb1a11a 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -345,7 +345,7 @@ class Transmitter } if (!empty($owner['about'])) { - $data['summary'] = BBCode::convert($owner['about'], false); + $data['summary'] = BBCode::convertForUriId($owner['uri-id'], $owner['about'], BBCode::EXTERNAL); } $data['url'] = $owner['url']; diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 4d2744498..faae900b3 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -765,12 +765,13 @@ class DFRN * @param DOMDocument $doc XML document * @param string $element Element name for the activity * @param string $activity activity value + * @param int $uriid Uri-Id of the post * * @return \DOMElement XML activity object * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @todo Find proper type-hints */ - private static function createActivity(DOMDocument $doc, $element, $activity) + private static function createActivity(DOMDocument $doc, $element, $activity, $uriid) { if ($activity) { $entry = $doc->createElement($element); @@ -817,7 +818,7 @@ class DFRN } } if ($r->content) { - XML::addElement($doc, $entry, "content", BBCode::convert($r->content), ["type" => "html"]); + XML::addElement($doc, $entry, "content", BBCode::convertForUriId($uriid, $r->content, BBCode::EXTERNAL), ["type" => "html"]); } return $entry; @@ -918,7 +919,7 @@ class DFRN $htmlbody = "[b]" . $item['title'] . "[/b]\n\n" . $htmlbody; } - $htmlbody = BBCode::convertForUriId($item['uri-id'], $htmlbody, BBCode::OSTATUS); + $htmlbody = BBCode::convertForUriId($item['uri-id'], $htmlbody, BBCode::ACTIVITYPUB); } $author = self::addEntryAuthor($doc, "author", $item["author-link"], $item); @@ -1033,12 +1034,12 @@ class DFRN XML::addElement($doc, $entry, "activity:object-type", Activity\ObjectType::COMMENT); } - $actobj = self::createActivity($doc, "activity:object", $item['object']); + $actobj = self::createActivity($doc, "activity:object", $item['object'], $item['uri-id']); if ($actobj) { $entry->appendChild($actobj); } - $actarg = self::createActivity($doc, "activity:target", $item['target']); + $actarg = self::createActivity($doc, "activity:target", $item['target'], $item['uri-id']); if ($actarg) { $entry->appendChild($actarg); } diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index c088876d9..c155e9e3d 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -1109,7 +1109,7 @@ class Feed $body = OStatus::formatPicturePost($item['body'], $item['uri-id']); - $body = BBCode::convertForUriId($item['uri-id'], $body, BBCode::OSTATUS, false); + $body = BBCode::convertForUriId($item['uri-id'], $body, BBCode::ACTIVITYPUB); XML::addElement($doc, $entry, "content", $body, ["type" => "html"]); @@ -1186,7 +1186,7 @@ class Feed private static function getTitle(array $item) { if ($item['title'] != '') { - return BBCode::convertForUriId($item['uri-id'], $item['title'], BBCode::OSTATUS); + return BBCode::convertForUriId($item['uri-id'], $item['title'], BBCode::ACTIVITYPUB); } // Fetch information about the post diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 03ff68d96..e813cc250 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -1418,7 +1418,7 @@ class OStatus XML::addElement($doc, $author, "name", $owner["nick"]); XML::addElement($doc, $author, "email", $owner["addr"]); if ($show_profile) { - XML::addElement($doc, $author, "summary", BBCode::convert($owner["about"], false, BBCode::OSTATUS)); + XML::addElement($doc, $author, "summary", BBCode::convertForUriId($owner['uri-id'], $owner["about"], BBCode::OSTATUS)); } $attributes = ["rel" => "alternate", "type" => "text/html", "href" => $owner["url"]]; @@ -1445,7 +1445,7 @@ class OStatus XML::addElement($doc, $author, "poco:preferredUsername", $owner["nick"]); XML::addElement($doc, $author, "poco:displayName", $owner["name"]); if ($show_profile) { - XML::addElement($doc, $author, "poco:note", BBCode::convert($owner["about"], false, BBCode::OSTATUS)); + XML::addElement($doc, $author, "poco:note", BBCode::convertForUriId($owner['uri-id'], $owner["about"], BBCode::OSTATUS)); if (trim($owner["location"]) != "") { $element = $doc->createElement("poco:address"); diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index e47f0d5dc..7eec39a98 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1426); + define('DB_UPDATE_VERSION', 1427); } return [ diff --git a/static/dbview.config.php b/static/dbview.config.php index 01cda59a6..f4ff02a26 100644 --- a/static/dbview.config.php +++ b/static/dbview.config.php @@ -729,6 +729,7 @@ "dfrn-id" => ["contact", "dfrn-id"], "url" => ["contact", "url"], "nurl" => ["contact", "nurl"], + "uri-id" => ["contact", "uri-id"], "addr" => ["contact", "addr"], "alias" => ["contact", "alias"], "pubkey" => ["contact", "pubkey"], From e5e3143293b453e3ff150874aa73a8153c72a7be Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 10 Jul 2021 14:02:03 +0000 Subject: [PATCH 057/108] Fix tests --- tests/legacy/ApiTest.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/legacy/ApiTest.php b/tests/legacy/ApiTest.php index 8fe0771be..fb946a353 100644 --- a/tests/legacy/ApiTest.php +++ b/tests/legacy/ApiTest.php @@ -2192,9 +2192,9 @@ class ApiTest extends FixtureTest public function testApiFormatMessages() { $result = api_format_messages( - ['id' => 1, 'title' => 'item_title', 'body' => '[b]item_body[/b]'], - ['id' => 2, 'screen_name' => 'recipient_name'], - ['id' => 3, 'screen_name' => 'sender_name'] + ['id' => 1, 'uri-id' => 1, 'title' => 'item_title', 'body' => '[b]item_body[/b]'], + ['id' => 2, 'uri-id' => 2, 'screen_name' => 'recipient_name'], + ['id' => 3, 'uri-id' => 2, 'screen_name' => 'sender_name'] ); self::assertEquals('item_title' . "\n" . 'item_body', $result['text']); self::assertEquals(1, $result['id']); @@ -2213,9 +2213,9 @@ class ApiTest extends FixtureTest { $_GET['getText'] = 'html'; $result = api_format_messages( - ['id' => 1, 'title' => 'item_title', 'body' => '[b]item_body[/b]'], - ['id' => 2, 'screen_name' => 'recipient_name'], - ['id' => 3, 'screen_name' => 'sender_name'] + ['id' => 1, 'uri-id' => 1, 'title' => 'item_title', 'body' => '[b]item_body[/b]'], + ['id' => 2, 'uri-id' => 2, 'screen_name' => 'recipient_name'], + ['id' => 3, 'uri-id' => 3, 'screen_name' => 'sender_name'] ); self::assertEquals('item_title', $result['title']); self::assertEquals('item_body', $result['text']); @@ -2230,9 +2230,9 @@ class ApiTest extends FixtureTest { $_GET['getText'] = 'plain'; $result = api_format_messages( - ['id' => 1, 'title' => 'item_title', 'body' => '[b]item_body[/b]'], - ['id' => 2, 'screen_name' => 'recipient_name'], - ['id' => 3, 'screen_name' => 'sender_name'] + ['id' => 1, 'uri-id' => 1, 'title' => 'item_title', 'body' => '[b]item_body[/b]'], + ['id' => 2, 'uri-id' => 2, 'screen_name' => 'recipient_name'], + ['id' => 3, 'uri-id' => 3, 'screen_name' => 'sender_name'] ); self::assertEquals('item_title', $result['title']); self::assertEquals('item_body', $result['text']); From 49c59fed2c4e321857049b529b727671f109b6fb Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 10 Jul 2021 14:04:27 +0000 Subject: [PATCH 058/108] Fix tests --- tests/legacy/ApiTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/legacy/ApiTest.php b/tests/legacy/ApiTest.php index fb946a353..34cf1e7c6 100644 --- a/tests/legacy/ApiTest.php +++ b/tests/legacy/ApiTest.php @@ -2247,9 +2247,9 @@ class ApiTest extends FixtureTest { $_GET['getUserObjects'] = 'false'; $result = api_format_messages( - ['id' => 1, 'title' => 'item_title', 'body' => '[b]item_body[/b]'], - ['id' => 2, 'screen_name' => 'recipient_name'], - ['id' => 3, 'screen_name' => 'sender_name'] + ['id' => 1, 'uri-id' => 1, 'title' => 'item_title', 'body' => '[b]item_body[/b]'], + ['id' => 2, 'uri-id' => 2, 'screen_name' => 'recipient_name'], + ['id' => 3, 'uri-id' => 3, 'screen_name' => 'sender_name'] ); self::assertTrue(!isset($result['sender'])); self::assertTrue(!isset($result['recipient'])); From b46b88cc109e3ac09772a0ebce0c900eaf09dc01 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 10 Jul 2021 21:08:55 +0000 Subject: [PATCH 059/108] Fix fatal error --- src/Database/PostUpdate.php | 50 +++++++++++++++++++++++++++++++++++++ src/Model/Event.php | 4 +-- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/Database/PostUpdate.php b/src/Database/PostUpdate.php index 64574f244..0b640f187 100644 --- a/src/Database/PostUpdate.php +++ b/src/Database/PostUpdate.php @@ -100,6 +100,9 @@ class PostUpdate if (!self::update1426()) { return false; } + if (!self::update1427()) { + return false; + } return true; } @@ -961,4 +964,51 @@ class PostUpdate return false; } + + /** + * update the "uri-id" field in the event table + * + * @return bool "true" when the job is done + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException + */ + private static function update1427() + { + // Was the script completed? + if (DI::config()->get("system", "post_update_version") >= 1427) { + return true; + } + + $condition = ["`uri-id` IS NULL"]; + Logger::info('Start', ['rest' => DBA::count('event', $condition)]); + + $rows = 0; + $events = DBA::select('event', ['id', 'uri', 'guid'], $condition, ['limit' => 1000]); + + if (DBA::errorNo() != 0) { + Logger::error('Database error', ['no' => DBA::errorNo(), 'message' => DBA::errorMessage()]); + return false; + } + + while ($event = DBA::fetch($events)) { + if (!empty($event['guid'])) { + $uriid = ItemURI::insert(['uri' => $event['uri'], 'guid' => $event['guid']]); + } else { + $uriid = ItemURI::getIdByURI($event['uri']); + } + DBA::update('event', ['uri-id' => $uriid], ['id' => $event['id']]); + ++$rows; + } + DBA::close($events); + + Logger::info('Processed', ['rows' => $rows]); + + if ($rows <= 100) { + DI::config()->set("system", "post_update_version", 1427); + Logger::info('Done'); + return true; + } + + return false; + } } diff --git a/src/Model/Event.php b/src/Model/Event.php index f0a552303..ed1cff9c3 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -589,10 +589,10 @@ class Event $last_date = ''; $fmt = DI::l10n()->t('l, F j'); foreach ($event_result as $event) { - $item = Post::selectFirst(['plink', 'author-name', 'author-avatar', 'author-link', 'private'], ['id' => $event['itemid']]); + $item = Post::selectFirst(['plink', 'author-name', 'author-avatar', 'author-link', 'private', 'uri-id'], ['id' => $event['itemid']]); if (!DBA::isResult($item)) { // Using default values when no item had been found - $item = ['plink' => '', 'author-name' => '', 'author-avatar' => '', 'author-link' => '', 'private' => Item::PUBLIC]; + $item = ['plink' => '', 'author-name' => '', 'author-avatar' => '', 'author-link' => '', 'private' => Item::PUBLIC, 'uri-id' => ($event['uri-id'] ?? 0)]; } $event = array_merge($event, $item); From f1e4d308987758635cb9955640e65bb6b6565a13 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 10 Jul 2021 21:55:03 +0000 Subject: [PATCH 060/108] New view chat combines all contact tables --- database.sql | 184 +++++++++++++++++++++++++++++++++- static/dbstructure.config.php | 2 +- static/dbview.config.php | 178 ++++++++++++++++++++++++++++++++ 3 files changed, 362 insertions(+), 2 deletions(-) diff --git a/database.sql b/database.sql index 8f9fc8f0d..b9c3b3257 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2021.09-dev (Siberian Iris) --- DB_UPDATE_VERSION 1427 +-- DB_UPDATE_VERSION 1428 -- ------------------------------------------ @@ -2395,6 +2395,188 @@ CREATE VIEW `owner-view` AS SELECT INNER JOIN `contact` ON `contact`.`uid` = `user`.`uid` AND `contact`.`self` INNER JOIN `profile` ON `profile`.`uid` = `user`.`uid`; +-- +-- VIEW account-view +-- +DROP VIEW IF EXISTS `account-view`; +CREATE VIEW `account-view` AS SELECT + `contact`.`id` AS `id`, + `contact`.`url` AS `url`, + `contact`.`nurl` AS `nurl`, + `contact`.`uri-id` AS `uri-id`, + `contact`.`addr` AS `addr`, + `contact`.`alias` AS `alias`, + `contact`.`name` AS `name`, + `contact`.`nick` AS `nick`, + `contact`.`about` AS `about`, + `contact`.`keywords` AS `keywords`, + `contact`.`xmpp` AS `xmpp`, + `contact`.`avatar` AS `avatar`, + `contact`.`photo` AS `photo`, + `contact`.`thumb` AS `thumb`, + `contact`.`micro` AS `micro`, + `contact`.`header` AS `header`, + `contact`.`created` AS `created`, + `contact`.`updated` AS `updated`, + `contact`.`network` AS `network`, + `contact`.`protocol` AS `protocol`, + `contact`.`location` AS `location`, + `contact`.`attag` AS `attag`, + `contact`.`pubkey` AS `pubkey`, + `contact`.`prvkey` AS `prvkey`, + `contact`.`subscribe` AS `subscribe`, + `contact`.`last-update` AS `last-update`, + `contact`.`success_update` AS `success_update`, + `contact`.`failure_update` AS `failure_update`, + `contact`.`failed` AS `failed`, + `contact`.`last-item` AS `last-item`, + `contact`.`last-discovery` AS `last-discovery`, + `contact`.`contact-type` AS `contact-type`, + `contact`.`manually-approve` AS `manually-approve`, + `contact`.`unsearchable` AS `unsearchable`, + `contact`.`sensitive` AS `sensitive`, + `contact`.`baseurl` AS `baseurl`, + `contact`.`gsid` AS `gsid`, + `contact`.`info` AS `info`, + `contact`.`bdyear` AS `bdyear`, + `contact`.`bd` AS `bd`, + `contact`.`poco` AS `poco`, + `contact`.`name-date` AS `name-date`, + `contact`.`uri-date` AS `uri-date`, + `contact`.`avatar-date` AS `avatar-date`, + `contact`.`term-date` AS `term-date`, + `contact`.`hidden` AS `global-ignored`, + `contact`.`blocked` AS `global-blocked`, + `contact`.`hidden` AS `hidden`, + `contact`.`archive` AS `archive`, + `contact`.`deleted` AS `deleted`, + `contact`.`blocked` AS `blocked`, + `contact`.`request` AS `dfrn-request`, + `contact`.`notify` AS `dfrn-notify`, + `contact`.`poll` AS `dfrn-poll`, + `contact`.`confirm` AS `dfrn-confirm`, + `fcontact`.`guid` AS `diaspora-guid`, + `fcontact`.`batch` AS `diaspora-batch`, + `fcontact`.`notify` AS `diaspora-notify`, + `fcontact`.`poll` AS `diaspora-poll`, + `fcontact`.`alias` AS `diaspora-alias`, + `apcontact`.`uuid` AS `ap-uuid`, + `apcontact`.`type` AS `ap-type`, + `apcontact`.`following` AS `ap-following`, + `apcontact`.`followers` AS `ap-followers`, + `apcontact`.`inbox` AS `ap-inbox`, + `apcontact`.`outbox` AS `ap-outbox`, + `apcontact`.`sharedinbox` AS `ap-sharedinbox`, + `apcontact`.`generator` AS `ap-generator`, + `apcontact`.`following_count` AS `ap-following_count`, + `apcontact`.`followers_count` AS `ap-followers_count`, + `apcontact`.`statuses_count` AS `ap-statuses_count` + FROM `contact` + LEFT JOIN `apcontact` ON `apcontact`.`uri-id` = `contact`.`uri-id` + LEFT JOIN `fcontact` ON `fcontact`.`uri-id` = contact.`uri-id` + WHERE `contact`.`uid` = 0; + +-- +-- VIEW account-user-view +-- +DROP VIEW IF EXISTS `account-user-view`; +CREATE VIEW `account-user-view` AS SELECT + `ucontact`.`id` AS `id`, + `ucontact`.`uid` AS `uid`, + `contact`.`url` AS `url`, + `contact`.`nurl` AS `nurl`, + `contact`.`uri-id` AS `uri-id`, + `contact`.`addr` AS `addr`, + `contact`.`alias` AS `alias`, + `contact`.`name` AS `name`, + `contact`.`nick` AS `nick`, + `contact`.`about` AS `about`, + `contact`.`keywords` AS `keywords`, + `contact`.`xmpp` AS `xmpp`, + `contact`.`avatar` AS `avatar`, + `contact`.`photo` AS `photo`, + `contact`.`thumb` AS `thumb`, + `contact`.`micro` AS `micro`, + `contact`.`header` AS `header`, + `contact`.`created` AS `created`, + `contact`.`updated` AS `updated`, + `ucontact`.`self` AS `self`, + `ucontact`.`remote_self` AS `remote_self`, + `ucontact`.`rel` AS `rel`, + `contact`.`network` AS `network`, + `ucontact`.`protocol` AS `protocol`, + `contact`.`location` AS `location`, + `contact`.`attag` AS `attag`, + `contact`.`pubkey` AS `pubkey`, + `contact`.`prvkey` AS `prvkey`, + `contact`.`subscribe` AS `subscribe`, + `contact`.`last-update` AS `last-update`, + `contact`.`success_update` AS `success_update`, + `contact`.`failure_update` AS `failure_update`, + `contact`.`failed` AS `failed`, + `contact`.`last-item` AS `last-item`, + `contact`.`last-discovery` AS `last-discovery`, + `contact`.`contact-type` AS `contact-type`, + `contact`.`manually-approve` AS `manually-approve`, + `contact`.`unsearchable` AS `unsearchable`, + `contact`.`sensitive` AS `sensitive`, + `contact`.`baseurl` AS `baseurl`, + `contact`.`gsid` AS `gsid`, + `contact`.`info` AS `info`, + `contact`.`bdyear` AS `bdyear`, + `contact`.`bd` AS `bd`, + `contact`.`poco` AS `poco`, + `contact`.`name-date` AS `name-date`, + `contact`.`uri-date` AS `uri-date`, + `contact`.`avatar-date` AS `avatar-date`, + `contact`.`term-date` AS `term-date`, + `contact`.`hidden` AS `global-ignored`, + `contact`.`blocked` AS `global-blocked`, + `ucontact`.`hidden` AS `hidden`, + `ucontact`.`archive` AS `archive`, + `ucontact`.`pending` AS `pending`, + `ucontact`.`deleted` AS `deleted`, + `ucontact`.`notify_new_posts` AS `notify_new_posts`, + `ucontact`.`fetch_further_information` AS `fetch_further_information`, + `ucontact`.`ffi_keyword_denylist` AS `ffi_keyword_denylist`, + `ucontact`.`rating` AS `rating`, + `ucontact`.`readonly` AS `readonly`, + `ucontact`.`blocked` AS `blocked`, + `ucontact`.`block_reason` AS `block_reason`, + `ucontact`.`subhub` AS `subhub`, + `ucontact`.`hub-verify` AS `hub-verify`, + `ucontact`.`reason` AS `reason`, + `ucontact`.`duplex` AS `dfrn-duplex`, + `ucontact`.`ret-aes` AS `dfrn-ret-aes`, + `ucontact`.`site-pubkey` AS `dfrn-site-pubkey`, + `ucontact`.`issued-id` AS `dfrn-issued-id`, + `ucontact`.`dfrn-id` AS `dfrn-id`, + `ucontact`.`aes_allow` AS `dfrn-aes_allow`, + `contact`.`request` AS `dfrn-request`, + `contact`.`notify` AS `dfrn-notify`, + `contact`.`poll` AS `dfrn-poll`, + `contact`.`confirm` AS `dfrn-confirm`, + `fcontact`.`guid` AS `diaspora-guid`, + `fcontact`.`batch` AS `diaspora-batch`, + `fcontact`.`notify` AS `diaspora-notify`, + `fcontact`.`poll` AS `diaspora-poll`, + `fcontact`.`alias` AS `diaspora-alias`, + `apcontact`.`uuid` AS `ap-uuid`, + `apcontact`.`type` AS `ap-type`, + `apcontact`.`following` AS `ap-following`, + `apcontact`.`followers` AS `ap-followers`, + `apcontact`.`inbox` AS `ap-inbox`, + `apcontact`.`outbox` AS `ap-outbox`, + `apcontact`.`sharedinbox` AS `ap-sharedinbox`, + `apcontact`.`generator` AS `ap-generator`, + `apcontact`.`following_count` AS `ap-following_count`, + `apcontact`.`followers_count` AS `ap-followers_count`, + `apcontact`.`statuses_count` AS `ap-statuses_count` + FROM `contact` AS `ucontact` + INNER JOIN `contact` ON `contact`.`uri-id` = `ucontact`.`uri-id` AND `contact`.`uid` = 0 + LEFT JOIN `apcontact` ON `apcontact`.`uri-id` = `ucontact`.`uri-id` + LEFT JOIN `fcontact` ON `fcontact`.`uri-id` = `ucontact`.`uri-id` AND `fcontact`.`network` = 'dspr'; + -- -- VIEW pending-view -- diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 7eec39a98..66bed073d 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1427); + define('DB_UPDATE_VERSION', 1428); } return [ diff --git a/static/dbview.config.php b/static/dbview.config.php index f4ff02a26..18cdc16e8 100644 --- a/static/dbview.config.php +++ b/static/dbview.config.php @@ -834,6 +834,184 @@ INNER JOIN `contact` ON `contact`.`uid` = `user`.`uid` AND `contact`.`self` INNER JOIN `profile` ON `profile`.`uid` = `user`.`uid`" ], + "account-view" => [ + "fields" => [ + "id" => ["contact", "id"], + "url" => ["contact", "url"], + "nurl" => ["contact", "nurl"], + "uri-id" => ["contact", "uri-id"], + "addr" => ["contact", "addr"], + "alias" => ["contact", "alias"], + "name" => ["contact", "name"], + "nick" => ["contact", "nick"], + "about" => ["contact", "about"], + "keywords" => ["contact", "keywords"], + "xmpp" => ["contact", "xmpp"], + "avatar" => ["contact", "avatar"], + "photo" => ["contact", "photo"], + "thumb" => ["contact", "thumb"], + "micro" => ["contact", "micro"], + "header" => ["contact", "header"], + "created" => ["contact", "created"], + "updated" => ["contact", "updated"], + "network" => ["contact", "network"], + "protocol" => ["contact", "protocol"], + "location" => ["contact", "location"], + "attag" => ["contact", "attag"], + "pubkey" => ["contact", "pubkey"], + "prvkey" => ["contact", "prvkey"], + "subscribe" => ["contact", "subscribe"], + "last-update" => ["contact", "last-update"], + "success_update" => ["contact", "success_update"], + "failure_update" => ["contact", "failure_update"], + "failed" => ["contact", "failed"], + "last-item" => ["contact", "last-item"], + "last-discovery" => ["contact", "last-discovery"], + "contact-type" => ["contact", "contact-type"], + "manually-approve" => ["contact", "manually-approve"], + "unsearchable" => ["contact", "unsearchable"], + "sensitive" => ["contact", "sensitive"], + "baseurl" => ["contact", "baseurl"], + "gsid" => ["contact", "gsid"], + "info" => ["contact", "info"], + "bdyear" => ["contact", "bdyear"], + "bd" => ["contact", "bd"], + "poco" => ["contact", "poco"], + "name-date" => ["contact", "name-date"], + "uri-date" => ["contact", "uri-date"], + "avatar-date" => ["contact", "avatar-date"], + "term-date" => ["contact", "term-date"], + "global-ignored" => ["contact", "hidden"], + "global-blocked" => ["contact", "blocked"], + "hidden" => ["contact", "hidden"], + "archive" => ["contact", "archive"], + "deleted" => ["contact", "deleted"], + "blocked" => ["contact", "blocked"], + "dfrn-request" => ["contact", "request"], + "dfrn-notify" => ["contact", "notify"], + "dfrn-poll" => ["contact", "poll"], + "dfrn-confirm" => ["contact", "confirm"], + "diaspora-guid" => ["fcontact", "guid"], + "diaspora-batch" => ["fcontact", "batch"], + "diaspora-notify" => ["fcontact", "notify"], + "diaspora-poll" => ["fcontact", "poll"], + "diaspora-alias" => ["fcontact", "alias"], + "ap-uuid" => ["apcontact", "uuid"], + "ap-type" => ["apcontact", "type"], + "ap-following" => ["apcontact", "following"], + "ap-followers" => ["apcontact", "followers"], + "ap-inbox" => ["apcontact", "inbox"], + "ap-outbox" => ["apcontact", "outbox"], + "ap-sharedinbox" => ["apcontact", "sharedinbox"], + "ap-generator" => ["apcontact", "generator"], + "ap-following_count" => ["apcontact", "following_count"], + "ap-followers_count" => ["apcontact", "followers_count"], + "ap-statuses_count" => ["apcontact", "statuses_count"], + ], + "query" => "FROM `contact` + LEFT JOIN `apcontact` ON `apcontact`.`uri-id` = `contact`.`uri-id` + LEFT JOIN `fcontact` ON `fcontact`.`uri-id` = contact.`uri-id` + WHERE `contact`.`uid` = 0" + ], + "account-user-view" => [ + "fields" => [ + "id" => ["ucontact", "id"], + "uid" => ["ucontact", "uid"], + "url" => ["contact", "url"], + "nurl" => ["contact", "nurl"], + "uri-id" => ["contact", "uri-id"], + "addr" => ["contact", "addr"], + "alias" => ["contact", "alias"], + "name" => ["contact", "name"], + "nick" => ["contact", "nick"], + "about" => ["contact", "about"], + "keywords" => ["contact", "keywords"], + "xmpp" => ["contact", "xmpp"], + "avatar" => ["contact", "avatar"], + "photo" => ["contact", "photo"], + "thumb" => ["contact", "thumb"], + "micro" => ["contact", "micro"], + "header" => ["contact", "header"], + "created" => ["contact", "created"], + "updated" => ["contact", "updated"], + "self" => ["ucontact", "self"], + "remote_self" => ["ucontact", "remote_self"], + "rel" => ["ucontact", "rel"], + "network" => ["contact", "network"], + "protocol" => ["ucontact", "protocol"], + "location" => ["contact", "location"], + "attag" => ["contact", "attag"], + "pubkey" => ["contact", "pubkey"], + "prvkey" => ["contact", "prvkey"], + "subscribe" => ["contact", "subscribe"], + "last-update" => ["contact", "last-update"], + "success_update" => ["contact", "success_update"], + "failure_update" => ["contact", "failure_update"], + "failed" => ["contact", "failed"], + "last-item" => ["contact", "last-item"], + "last-discovery" => ["contact", "last-discovery"], + "contact-type" => ["contact", "contact-type"], + "manually-approve" => ["contact", "manually-approve"], + "unsearchable" => ["contact", "unsearchable"], + "sensitive" => ["contact", "sensitive"], + "baseurl" => ["contact", "baseurl"], + "gsid" => ["contact", "gsid"], + "info" => ["contact", "info"], + "bdyear" => ["contact", "bdyear"], + "bd" => ["contact", "bd"], + "poco" => ["contact", "poco"], + "name-date" => ["contact", "name-date"], + "uri-date" => ["contact", "uri-date"], + "avatar-date" => ["contact", "avatar-date"], + "term-date" => ["contact", "term-date"], + "global-ignored" => ["contact", "hidden"], + "global-blocked" => ["contact", "blocked"], + "hidden" => ["ucontact", "hidden"], + "archive" => ["ucontact", "archive"], + "pending" => ["ucontact", "pending"], + "deleted" => ["ucontact", "deleted"], + "notify_new_posts" => ["ucontact", "notify_new_posts"], + "fetch_further_information" => ["ucontact", "fetch_further_information"], + "ffi_keyword_denylist" => ["ucontact", "ffi_keyword_denylist"], + "rating" => ["ucontact", "rating"], + "readonly" => ["ucontact", "readonly"], + "blocked" => ["ucontact", "blocked"], + "block_reason" => ["ucontact", "block_reason"], + "subhub" => ["ucontact", "subhub"], + "hub-verify" => ["ucontact", "hub-verify"], + "reason" => ["ucontact", "reason"], + "dfrn-duplex" => ["ucontact", "duplex"], + "dfrn-ret-aes" => ["ucontact", "ret-aes"], + "dfrn-site-pubkey" => ["ucontact", "site-pubkey"], + "dfrn-issued-id" => ["ucontact", "issued-id"], + "dfrn-id" => ["ucontact", "dfrn-id"], + "dfrn-aes_allow" => ["ucontact", "aes_allow"], + "dfrn-request" => ["contact", "request"], + "dfrn-notify" => ["contact", "notify"], + "dfrn-poll" => ["contact", "poll"], + "dfrn-confirm" => ["contact", "confirm"], + "diaspora-guid" => ["fcontact", "guid"], + "diaspora-batch" => ["fcontact", "batch"], + "diaspora-notify" => ["fcontact", "notify"], + "diaspora-poll" => ["fcontact", "poll"], + "diaspora-alias" => ["fcontact", "alias"], + "ap-uuid" => ["apcontact", "uuid"], + "ap-type" => ["apcontact", "type"], + "ap-following" => ["apcontact", "following"], + "ap-followers" => ["apcontact", "followers"], + "ap-inbox" => ["apcontact", "inbox"], + "ap-outbox" => ["apcontact", "outbox"], + "ap-sharedinbox" => ["apcontact", "sharedinbox"], + "ap-generator" => ["apcontact", "generator"], + "ap-following_count" => ["apcontact", "following_count"], + "ap-followers_count" => ["apcontact", "followers_count"], + "ap-statuses_count" => ["apcontact", "statuses_count"], + ], + "query" => "FROM `contact` AS `ucontact` + INNER JOIN `contact` ON `contact`.`uri-id` = `ucontact`.`uri-id` AND `contact`.`uid` = 0 + LEFT JOIN `apcontact` ON `apcontact`.`uri-id` = `ucontact`.`uri-id` + LEFT JOIN `fcontact` ON `fcontact`.`uri-id` = `ucontact`.`uri-id` AND `fcontact`.`network` = 'dspr'" + ], "pending-view" => [ "fields" => [ "id" => ["register", "id"], From 58b84ca01dc03a95377e0f8b495b31f313702675 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 11 Jul 2021 03:06:46 +0000 Subject: [PATCH 061/108] Public id added --- database.sql | 1 + static/dbview.config.php | 1 + 2 files changed, 2 insertions(+) diff --git a/database.sql b/database.sql index b9c3b3257..0b1a34f21 100644 --- a/database.sql +++ b/database.sql @@ -2482,6 +2482,7 @@ CREATE VIEW `account-view` AS SELECT DROP VIEW IF EXISTS `account-user-view`; CREATE VIEW `account-user-view` AS SELECT `ucontact`.`id` AS `id`, + `contact`.`id` AS `pid`, `ucontact`.`uid` AS `uid`, `contact`.`url` AS `url`, `contact`.`nurl` AS `nurl`, diff --git a/static/dbview.config.php b/static/dbview.config.php index 18cdc16e8..bb2cd0f17 100644 --- a/static/dbview.config.php +++ b/static/dbview.config.php @@ -916,6 +916,7 @@ "account-user-view" => [ "fields" => [ "id" => ["ucontact", "id"], + "pid" => ["contact", "id"], "uid" => ["ucontact", "uid"], "url" => ["contact", "url"], "nurl" => ["contact", "nurl"], From d267ba999cf0b8691407e630563c251cb2ac68f9 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 11 Jul 2021 09:39:34 +0000 Subject: [PATCH 062/108] We now use the new account-user-view (and fixed the function name) --- database.sql | 2 +- src/Database/PostUpdate.php | 3 +- src/Factory/Api/Mastodon/Account.php | 2 +- src/Factory/Api/Mastodon/FollowRequest.php | 2 +- src/Factory/Api/Mastodon/Relationship.php | 2 +- src/Factory/Api/Twitter/User.php | 2 +- src/Model/Contact.php | 49 +++++++++++++++++-- src/Model/Contact/User.php | 12 ++--- src/Module/Api/Mastodon/Accounts/Lists.php | 2 +- src/Module/Api/Mastodon/Accounts/Note.php | 2 +- .../Mastodon/Accounts/VerifyCredentials.php | 2 +- src/Module/Api/Twitter/ContactEndpoint.php | 2 +- src/Module/Contact.php | 4 +- src/Protocol/ActivityPub/Transmitter.php | 2 +- src/Repository/PermissionSet.php | 2 +- static/dbstructure.config.php | 2 +- update.php | 41 +++++++++++----- 17 files changed, 97 insertions(+), 36 deletions(-) diff --git a/database.sql b/database.sql index 0b1a34f21..2e7a189b3 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2021.09-dev (Siberian Iris) --- DB_UPDATE_VERSION 1428 +-- DB_UPDATE_VERSION 1429 -- ------------------------------------------ diff --git a/src/Database/PostUpdate.php b/src/Database/PostUpdate.php index 0b640f187..aa657b023 100644 --- a/src/Database/PostUpdate.php +++ b/src/Database/PostUpdate.php @@ -45,7 +45,8 @@ class PostUpdate { // Needed for the helper function to read from the legacy term table const OBJECT_TYPE_POST = 1; - const VERSION = 1400; + + const VERSION = 1427; /** * Calls the post update functions diff --git a/src/Factory/Api/Mastodon/Account.php b/src/Factory/Api/Mastodon/Account.php index dd4ebcfae..85b3d4316 100644 --- a/src/Factory/Api/Mastodon/Account.php +++ b/src/Factory/Api/Mastodon/Account.php @@ -60,7 +60,7 @@ class Account extends BaseFactory */ public function createFromContactId(int $contactId, $uid = 0): \Friendica\Object\Api\Mastodon\Account { - $cdata = Contact::getPublicAndUserContacID($contactId, $uid); + $cdata = Contact::getPublicAndUserContactID($contactId, $uid); if (!empty($cdata)) { $publicContact = Contact::getById($cdata['public']); $userContact = Contact::getById($cdata['user']); diff --git a/src/Factory/Api/Mastodon/FollowRequest.php b/src/Factory/Api/Mastodon/FollowRequest.php index f0724e5f1..f2be0e589 100644 --- a/src/Factory/Api/Mastodon/FollowRequest.php +++ b/src/Factory/Api/Mastodon/FollowRequest.php @@ -49,7 +49,7 @@ class FollowRequest extends BaseFactory */ public function createFromIntroduction(Introduction $introduction): \Friendica\Object\Api\Mastodon\FollowRequest { - $cdata = Contact::getPublicAndUserContacID($introduction->{'contact-id'}, $introduction->uid); + $cdata = Contact::getPublicAndUserContactID($introduction->{'contact-id'}, $introduction->uid); if (empty($cdata)) { $this->logger->warning('Wrong introduction data', ['Introduction' => $introduction]); diff --git a/src/Factory/Api/Mastodon/Relationship.php b/src/Factory/Api/Mastodon/Relationship.php index 4d08cbb1d..6f6c05d7e 100644 --- a/src/Factory/Api/Mastodon/Relationship.php +++ b/src/Factory/Api/Mastodon/Relationship.php @@ -36,7 +36,7 @@ class Relationship extends BaseFactory */ public function createFromContactId(int $contactId, int $uid): RelationshipEntity { - $cdata = Contact::getPublicAndUserContacID($contactId, $uid); + $cdata = Contact::getPublicAndUserContactID($contactId, $uid); if (!empty($cdata)) { $cid = $cdata['user']; } else { diff --git a/src/Factory/Api/Twitter/User.php b/src/Factory/Api/Twitter/User.php index 0ea8a6837..ad73df1f5 100644 --- a/src/Factory/Api/Twitter/User.php +++ b/src/Factory/Api/Twitter/User.php @@ -39,7 +39,7 @@ class User extends BaseFactory */ public function createFromContactId(int $contactId, $uid = 0, $skip_status = false, $include_user_entities = true) { - $cdata = Contact::getPublicAndUserContacID($contactId, $uid); + $cdata = Contact::getPublicAndUserContactID($contactId, $uid); if (!empty($cdata)) { $publicContact = Contact::getById($cdata['public']); $userContact = Contact::getById($cdata['user']); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 0184861c3..a92a901cf 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -332,7 +332,7 @@ class Contact return false; } - $cdata = self::getPublicAndUserContacID($cid, $uid); + $cdata = self::getPublicAndUserContactID($cid, $uid); if (empty($cdata['user'])) { return false; } @@ -378,7 +378,7 @@ class Contact return false; } - $cdata = self::getPublicAndUserContacID($cid, $uid); + $cdata = self::getPublicAndUserContactID($cid, $uid); if (empty($cdata['user'])) { return false; } @@ -507,7 +507,48 @@ class Contact * @throws HTTPException\InternalServerErrorException * @throws \ImagickException */ - public static function getPublicAndUserContacID($cid, $uid) + public static function getPublicAndUserContactID($cid, $uid) + { + // We have to use the legacy function as long as the post update hasn't finished + if (DI::config()->get('system', 'post_update_version') < 1427) { + return self::legacyGetPublicAndUserContactID($cid, $uid); + } + + if (empty($uid) || empty($cid)) { + return []; + } + + $contact = DBA::selectFirst('account-user-view', ['id', 'uid', 'pid'], ['id' => $cid]); + if (!DBA::isResult($contact) || !in_array($contact['uid'], [0, $uid])) { + return []; + } + + $pcid = $contact['pid']; + if ($contact['uid'] == $uid) { + $ucid = $contact['id']; + } else { + $contact = DBA::selectFirst('account-user-view', ['id', 'uid'], ['pid' => $cid, 'uid' => $uid]); + if (DBA::isResult($contact)) { + $ucid = $contact['id']; + } else { + $ucid = 0; + } + } + + return ['public' => $pcid, 'user' => $ucid]; + } + + /** + * Helper function for "getPublicAndUserContactID" + * + * @param int $cid Either public contact id or user's contact id + * @param int $uid User ID + * + * @return array with public and user's contact id + * @throws HTTPException\InternalServerErrorException + * @throws \ImagickException + */ + private static function legacyGetPublicAndUserContactID($cid, $uid) { if (empty($uid) || empty($cid)) { return []; @@ -2588,7 +2629,7 @@ class Contact */ public static function unfollow(int $cid, int $uid) { - $cdata = self::getPublicAndUserContacID($cid, $uid); + $cdata = self::getPublicAndUserContactID($cid, $uid); if (empty($cdata['user'])) { return false; } diff --git a/src/Model/Contact/User.php b/src/Model/Contact/User.php index 87688201f..26fd96303 100644 --- a/src/Model/Contact/User.php +++ b/src/Model/Contact/User.php @@ -39,7 +39,7 @@ class User */ public static function setBlocked($cid, $uid, $blocked) { - $cdata = Contact::getPublicAndUserContacID($cid, $uid); + $cdata = Contact::getPublicAndUserContactID($cid, $uid); if (empty($cdata)) { return; } @@ -62,7 +62,7 @@ class User */ public static function isBlocked($cid, $uid) { - $cdata = Contact::getPublicAndUserContacID($cid, $uid); + $cdata = Contact::getPublicAndUserContactID($cid, $uid); if (empty($cdata)) { return false; } @@ -102,7 +102,7 @@ class User */ public static function setIgnored($cid, $uid, $ignored) { - $cdata = Contact::getPublicAndUserContacID($cid, $uid); + $cdata = Contact::getPublicAndUserContactID($cid, $uid); if (empty($cdata)) { return; } @@ -125,7 +125,7 @@ class User */ public static function isIgnored($cid, $uid) { - $cdata = Contact::getPublicAndUserContacID($cid, $uid); + $cdata = Contact::getPublicAndUserContactID($cid, $uid); if (empty($cdata)) { return false; } @@ -165,7 +165,7 @@ class User */ public static function setCollapsed($cid, $uid, $collapsed) { - $cdata = Contact::getPublicAndUserContacID($cid, $uid); + $cdata = Contact::getPublicAndUserContactID($cid, $uid); if (empty($cdata)) { return; } @@ -185,7 +185,7 @@ class User */ public static function isCollapsed($cid, $uid) { - $cdata = Contact::getPublicAndUserContacID($cid, $uid); + $cdata = Contact::getPublicAndUserContactID($cid, $uid); if (empty($cdata)) { return; } diff --git a/src/Module/Api/Mastodon/Accounts/Lists.php b/src/Module/Api/Mastodon/Accounts/Lists.php index b962594ff..908674940 100644 --- a/src/Module/Api/Mastodon/Accounts/Lists.php +++ b/src/Module/Api/Mastodon/Accounts/Lists.php @@ -52,7 +52,7 @@ class Lists extends BaseApi $lists = []; - $cdata = Contact::getPublicAndUserContacID($id, $uid); + $cdata = Contact::getPublicAndUserContactID($id, $uid); if (!empty($cdata['user'])) { $groups = DBA::select('group_member', ['gid'], ['contact-id' => $cdata['user']]); while ($group = DBA::fetch($groups)) { diff --git a/src/Module/Api/Mastodon/Accounts/Note.php b/src/Module/Api/Mastodon/Accounts/Note.php index f78d58bac..bb5778a0f 100644 --- a/src/Module/Api/Mastodon/Accounts/Note.php +++ b/src/Module/Api/Mastodon/Accounts/Note.php @@ -45,7 +45,7 @@ class Note extends BaseApi 'comment' => '', ]); - $cdata = Contact::getPublicAndUserContacID($parameters['id'], $uid); + $cdata = Contact::getPublicAndUserContactID($parameters['id'], $uid); if (empty($cdata['user'])) { DI::mstdnError()->RecordNotFound(); } diff --git a/src/Module/Api/Mastodon/Accounts/VerifyCredentials.php b/src/Module/Api/Mastodon/Accounts/VerifyCredentials.php index 295cbf2af..1c1945438 100644 --- a/src/Module/Api/Mastodon/Accounts/VerifyCredentials.php +++ b/src/Module/Api/Mastodon/Accounts/VerifyCredentials.php @@ -46,7 +46,7 @@ class VerifyCredentials extends BaseApi DI::mstdnError()->InternalError(); } - $cdata = Contact::getPublicAndUserContacID($self['id'], $uid); + $cdata = Contact::getPublicAndUserContactID($self['id'], $uid); if (empty($cdata)) { DI::mstdnError()->InternalError(); } diff --git a/src/Module/Api/Twitter/ContactEndpoint.php b/src/Module/Api/Twitter/ContactEndpoint.php index 4641bf813..7e5f11cc6 100644 --- a/src/Module/Api/Twitter/ContactEndpoint.php +++ b/src/Module/Api/Twitter/ContactEndpoint.php @@ -205,7 +205,7 @@ abstract class ContactEndpoint extends BaseApi // Conversion to public contact ids array_walk($ids, function (&$contactId) use ($uid, $stringify_ids) { - $cdata = Contact::getPublicAndUserContacID($contactId, $uid); + $cdata = Contact::getPublicAndUserContactID($contactId, $uid); if ($stringify_ids) { $contactId = (string)$cdata['public']; } else { diff --git a/src/Module/Contact.php b/src/Module/Contact.php index 2609a5b8b..47f244a91 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -283,7 +283,7 @@ class Contact extends BaseModule $contact_id = intval($a->argv[1]); // Ensure to use the user contact when the public contact was provided - $data = Model\Contact::getPublicAndUserContacID($contact_id, local_user()); + $data = Model\Contact::getPublicAndUserContactID($contact_id, local_user()); if (!empty($data['user']) && ($contact_id == $data['public'])) { $contact_id = $data['user']; } @@ -915,7 +915,7 @@ class Contact extends BaseModule public static function getTabsHTML(array $contact, int $active_tab) { $cid = $pcid = $contact['id']; - $data = Model\Contact::getPublicAndUserContacID($contact['id'], local_user()); + $data = Model\Contact::getPublicAndUserContactID($contact['id'], local_user()); if (!empty($data['user']) && ($contact['id'] == $data['public'])) { $cid = $data['user']; } elseif (!empty($data['public'])) { diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 29fb1a11a..a65f85542 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -345,7 +345,7 @@ class Transmitter } if (!empty($owner['about'])) { - $data['summary'] = BBCode::convertForUriId($owner['uri-id'], $owner['about'], BBCode::EXTERNAL); + $data['summary'] = BBCode::convertForUriId($owner['uri-id'] ?? 0, $owner['about'], BBCode::EXTERNAL); } $data['url'] = $owner['url']; diff --git a/src/Repository/PermissionSet.php b/src/Repository/PermissionSet.php index c83e90176..828247fb4 100644 --- a/src/Repository/PermissionSet.php +++ b/src/Repository/PermissionSet.php @@ -161,7 +161,7 @@ class PermissionSet extends BaseRepository */ public function selectByContactId($contact_id, $uid) { - $cdata = Model\Contact::getPublicAndUserContacID($contact_id, $uid); + $cdata = Model\Contact::getPublicAndUserContactID($contact_id, $uid); if (!empty($cdata)) { $public_contact_str = '<' . $cdata['public'] . '>'; $user_contact_str = '<' . $cdata['user'] . '>'; diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 66bed073d..19688e698 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1428); + define('DB_UPDATE_VERSION', 1429); } return [ diff --git a/update.php b/update.php index aa043468c..3f601b1f1 100644 --- a/update.php +++ b/update.php @@ -251,7 +251,7 @@ function update_1348() // Insert a permissionset with id=0 // Inserting it without an ID and then changing the value to 0 tricks the auto increment if (!DBA::exists('permissionset', ['id' => 0])) { - DBA::insert('permissionset', ['allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '']); + DBA::insert('permissionset', ['allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '']); $lastid = DBA::lastInsertId(); if ($lastid != 0) { DBA::update('permissionset', ['id' => 0], ['id' => $lastid]); @@ -767,8 +767,8 @@ function update_1398() function update_1399() { if (!DBA::e("UPDATE `post-thread-user` INNER JOIN `post-user` ON `post-user`.`uid` = `post-thread-user`.`uid` AND `post-user`.`uri-id` = `post-thread-user`.`uri-id` - SET `post-thread-user`.`contact-id` = `post-user`.`contact-id`, `post-thread-user`.`unseen` = `post-user`.`unseen`, - `post-thread-user`.`hidden` = `post-user`.`hidden`, `post-thread-user`.`origin` = `post-user`.`origin`, + SET `post-thread-user`.`contact-id` = `post-user`.`contact-id`, `post-thread-user`.`unseen` = `post-user`.`unseen`, + `post-thread-user`.`hidden` = `post-user`.`hidden`, `post-thread-user`.`origin` = `post-user`.`origin`, `post-thread-user`.`psid` = `post-user`.`psid`, `post-thread-user`.`post-user-id` = `post-user`.`id`")) { return Update::FAILED; } @@ -780,7 +780,7 @@ function update_1400() { if (!DBA::e("INSERT IGNORE INTO `post` (`uri-id`, `parent-uri-id`, `thr-parent-id`, `owner-id`, `author-id`, `network`, `created`, `received`, `edited`, `gravity`, `causer-id`, `post-type`, `vid`, `private`, `visible`, `deleted`, `global`) - SELECT `uri-id`, `parent-uri-id`, `thr-parent-id`, `owner-id`, `author-id`, `network`, `created`, `received`, `edited`, + SELECT `uri-id`, `parent-uri-id`, `thr-parent-id`, `owner-id`, `author-id`, `network`, `created`, `received`, `edited`, `gravity`, `causer-id`, `post-type`, `vid`, `private`, `visible`, `deleted`, `global` FROM `item`")) { return Update::FAILED; } @@ -838,11 +838,11 @@ function update_1404() $tasks = DBA::select('workerqueue', ['id', 'command', 'parameter'], ['command' => ['notifier', 'delivery', 'apdelivery', 'done' => false]]); while ($task = DBA::fetch($tasks)) { $parameters = json_decode($task['parameter'], true); - + if (is_array($parameters) && count($parameters) && in_array($parameters[0], [Delivery::MAIL, Delivery::SUGGESTION, Delivery::REMOVAL, Delivery::RELOCATION])) { continue; } - + switch (strtolower($task['command'])) { case 'notifier': if (count($parameters) == 3) { @@ -852,7 +852,7 @@ function update_1404() if (!DBA::isResult($item)) { continue 2; } - + $parameters[1] = $item['uri-id']; $parameters[2] = $item['uid']; break; @@ -864,7 +864,7 @@ function update_1404() if (!DBA::isResult($item)) { continue 2; } - + $parameters[1] = $item['uri-id']; $parameters[3] = $item['uid']; break; @@ -872,16 +872,16 @@ function update_1404() if (count($parameters) == 6) { continue 2; } - + if (empty($parameters[4])) { $parameters[4] = []; } - + $item = DBA::selectFirst('item', ['uri-id'], ['id' => $parameters[1]]); if (!DBA::isResult($item)) { continue 2; } - + $parameters[5] = $item['uri-id']; break; default: @@ -945,3 +945,22 @@ function update_1419() } return Update::SUCCESS; } + +function update_1429() +{ + if (!DBA::e("UPDATE `contact` SET `uri-id` = null WHERE NOT `uri-id` IS NULL")) { + return Update::FAILED; + } + + if (!DBA::e("UPDATE `fcontact` SET `uri-id` = null WHERE NOT `uri-id` IS NULL")) { + return Update::FAILED; + } + + if (!DBA::e("UPDATE `apcontact` SET `uri-id` = null WHERE NOT `uri-id` IS NULL")) { + return Update::FAILED; + } + + DI::config()->set("system", "post_update_version", 1423); + + return Update::SUCCESS; +} \ No newline at end of file From 4955670e15fa2b981d8ab80f1dfc93fe2da999af Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 11 Jul 2021 09:51:04 +0000 Subject: [PATCH 063/108] Linefeed added --- update.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update.php b/update.php index 3f601b1f1..e46a91107 100644 --- a/update.php +++ b/update.php @@ -963,4 +963,4 @@ function update_1429() DI::config()->set("system", "post_update_version", 1423); return Update::SUCCESS; -} \ No newline at end of file +} From 7390791d2192068310cd4090632ae98a94d801bc Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 11 Jul 2021 11:11:03 +0000 Subject: [PATCH 064/108] Avoid problems with "null" values --- src/Content/Text/BBCode.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 37f650bbe..399e42955 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1287,11 +1287,11 @@ class BBCode * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function convertForUriId(int $uriid = 0, string $text = null, int $simple_html = self::INTERNAL) + public static function convertForUriId($uriid, string $text = null, int $simple_html = self::INTERNAL) { $try_oembed = ($simple_html == self::INTERNAL); - return self::convert($text, $try_oembed, $simple_html, false, $uriid); + return self::convert($text, $try_oembed, $simple_html, false, $uriid ?? 0); } /** From a676060eea7ac881d64e182f13c77a5b4fd48673 Mon Sep 17 00:00:00 2001 From: Philipp Date: Sun, 11 Jul 2021 14:27:52 +0200 Subject: [PATCH 065/108] Remove outdated friendica_test_data.sql --- bin/dev/vagrant_provision.sh | 2 - friendica_test_data.sql | 2182 ---------------------------------- 2 files changed, 2184 deletions(-) delete mode 100644 friendica_test_data.sql diff --git a/bin/dev/vagrant_provision.sh b/bin/dev/vagrant_provision.sh index 4de6a4684..c8e62f291 100755 --- a/bin/dev/vagrant_provision.sh +++ b/bin/dev/vagrant_provision.sh @@ -107,8 +107,6 @@ cp /vagrant/.htaccess-dist /vagrant/.htaccess # create the friendica database echo "create database friendica DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | $MYSQL -u root -proot -# import test database (disabled because too old) -#$MYSQL -uroot -proot friendica < /vagrant/friendica_test_data.sql # install friendica bin/console autoinstall -f /vagrant/mods/local.config.vagrant.php diff --git a/friendica_test_data.sql b/friendica_test_data.sql deleted file mode 100644 index 779a9c6a3..000000000 --- a/friendica_test_data.sql +++ /dev/null @@ -1,2182 +0,0 @@ --- MySQL dump 10.13 Distrib 5.7.24, for Linux (x86_64) --- --- Host: localhost Database: friendica --- ------------------------------------------------------ --- Server version 5.7.24-0ubuntu0.16.04.1 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `addon` --- - -DROP TABLE IF EXISTS `addon`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `addon` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(50) NOT NULL DEFAULT '' COMMENT 'addon base (file)name', - `version` varchar(50) NOT NULL DEFAULT '' COMMENT 'currently unused', - `installed` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'currently always 1', - `hidden` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'currently unused', - `timestamp` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'file timestamp to check for reloads', - `plugin_admin` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1 = has admin config, 0 = has no admin config', - PRIMARY KEY (`id`), - UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='registered addons'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `addon` --- - -LOCK TABLES `addon` WRITE; -/*!40000 ALTER TABLE `addon` DISABLE KEYS */; -/*!40000 ALTER TABLE `addon` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `apcontact` --- - -DROP TABLE IF EXISTS `apcontact`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `apcontact` ( - `url` varbinary(255) NOT NULL COMMENT 'URL of the contact', - `uuid` varchar(255) DEFAULT NULL, - `type` varchar(20) NOT NULL, - `following` varchar(255) DEFAULT NULL, - `followers` varchar(255) DEFAULT NULL, - `inbox` varchar(255) NOT NULL, - `outbox` varchar(255) DEFAULT NULL, - `sharedinbox` varchar(255) DEFAULT NULL, - `nick` varchar(255) NOT NULL DEFAULT '', - `name` varchar(255) DEFAULT NULL, - `about` text, - `photo` varchar(255) DEFAULT NULL, - `addr` varchar(255) DEFAULT NULL, - `alias` varchar(255) DEFAULT NULL, - `pubkey` text, - `baseurl` varchar(255) DEFAULT NULL COMMENT 'baseurl of the ap contact', - `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY (`url`), - KEY `addr` (`addr`(32)), - KEY `alias` (`alias`(190)), - KEY `url` (`followers`(190)) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ActivityPub compatible contacts - used in the ActivityPub implementation'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `apcontact` --- - -LOCK TABLES `apcontact` WRITE; -/*!40000 ALTER TABLE `apcontact` DISABLE KEYS */; -INSERT INTO `apcontact` VALUES (_binary 'http://192.168.22.10/profile/admin','930bb26b-675b-f00a-1f35-2cc901636033','Person','http://192.168.22.10/following/admin','http://192.168.22.10/followers/admin','http://192.168.22.10/inbox/admin','http://192.168.22.10/outbox/admin','http://192.168.22.10/inbox','admin','admin','','http://192.168.22.10/photo/profile/1.jpg',NULL,NULL,'-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyYmalhhmPJg0qwLjbeoL\nKgykA6idu8HtZkKWPpXZHHD9J0InLId7Ht3G9dSBIBbHpWhaoFHkI06PRaqiT3sY\n4yXPBWDuhnIzzbV5VbxXShzRCe0LzBMhvusf/74sQkqH64g7xsaSBipHHaUEa7yD\nv+xCoGtoSOcqGEBzesSH//sIl94IrkkN+/grb1ZSFFjQYWMLMWMD7Py/awcqOtCB\nJ6NnmcBVMK5CxyV+YN+C+dhUsf+LjvH7WE0uigvTlMG+lGfXHxl4/en8bcAQ/GEr\n1xfbDJuknxr+ckGFZeHtj6Noz1IRD7y+7rlTgbZTmOrCJKg38Br2m3tMGGhIU3t7\nSmrKn8qqf9HuyR83+7Cu+t8x24LuhTjGW2Z6KE5TqYacMu+to58MFH8lDOnoOxHA\nGWpi9kYPXSbO9mLwDNF3pue3bLusvGQnns9h38w8m1Q25nivKKvgVbOrdNaB6wUy\nFIDcqjlZOVIyZ24QWZck77Em/cCkEf1c9kV4f1VjwmyQ4apSPf6q92AHcBlbv7yI\nFhVbGMhEaMIT7PQgxi2F48YInnlNjQlk3yHv3sdjlYJvcHHlf2PsMXlRb1CzrFRf\nX6Uv7e1obwy+SsywkAq+sT4tfsPEw2mIL56cXw0licP2hjOIgzYD1xi8pZx3xsQP\nTjdpqBmCKfnzs+TCZIbXIQ8CAwEAAQ==\n-----END PUBLIC KEY-----',NULL,'2018-11-17 12:34:45'),(_binary 'http://192.168.22.10/profile/friendica1','930bb26b-585b-f00c-1225-b79618332648','Person','http://192.168.22.10/following/friendica1','http://192.168.22.10/followers/friendica1','http://192.168.22.10/inbox/friendica1','http://192.168.22.10/outbox/friendica1','http://192.168.22.10/inbox','friendica1','friendica1','','http://192.168.22.10/photo/profile/2.jpg',NULL,NULL,'-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmQR1Wmtv2KMZ5f5NTJMf\nRfX+1KXfhCKZaDgtL8/Trtb1ZXLq0tlBVhm29MI1F6cxZFhNlFyW6GZCeZFKX3FP\n2pFw03sEBTo5PCLso18EEl9kXV9cXoBMzINI3jIGnJiawq9PfIw5142jFBLOxiDS\nc/iNG6iFbq2qHwiQJjtp61BCFivIMZaHXqvtroakggjBH3EbRx+rZfeqjB8MRqOc\npXIqjc0lrHk8QGdXeuUAWsL2qUqHVNekLBXPnRcdMT8BxUmtBj0ccZ1IICLPFEzK\nr6DtqH5kE+aq9IcoMIEDjUhnyOAvFda8TlxX8D5SMFbrfJZDTypDqXHnSxHUS0Rd\nX06tLJZxMgqHspkxp6nzxk7JGPHKQmU6N0uqQb+i7dFlgC8QRLi79a1x019dvpAN\nRwbhGnn/pEU9Kn1JbYTAI6irBnHnlAUkpxmwSzRx5ncbNbhbniMD2/39IV1mztUh\nAyc262/cRRJAu8pEsPvc/pSijIyfrxJGYqF/uUcS5gbrY+wCjpYaBdzFxQEcD1Aq\nvXQGxi3sMRY9b1FJ+f3UTB7D9kIBCbwUNOXCjDCrOKZN6nxPLpKnfFsneHleUHa0\n+MRzI/vX78jQ1P4KgxPIiSktfrZitBpyzCC5O4ytiwqF2E8Ei0zE6OL2gm8yv7tB\n00ewnSBHzIpdnS51XuxxmIsCAwEAAQ==\n-----END PUBLIC KEY-----',NULL,'2018-11-17 12:50:07'),(_binary 'http://192.168.22.10/profile/friendica2','930bb26b-155b-f00c-272b-7ee871449332','Person','http://192.168.22.10/following/friendica2','http://192.168.22.10/followers/friendica2','http://192.168.22.10/inbox/friendica2','http://192.168.22.10/outbox/friendica2','http://192.168.22.10/inbox','friendica2','friendica2','','http://192.168.22.10/photo/profile/3.jpg',NULL,NULL,'-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwMWwwjqXtfQmCzLQmZ+D\ntRVdtv1Vq6DdjC/+aEP3UKLpp0nzNcsfT3U8Kejs23o0KpC+EVFXuWZqvxyeHoiZ\n+w9i1roJf2eSLBVeAjiEmLbI7wSfLBu+iA1x+X6+d9wxxAgzM7KHIBOghVCDussz\n4AaojP4Dx3Egsl1w+1j/ULUNCvf1wq9KLMMgJlnemC4cHfv+ObcxdisPezjVD9sg\nnvRLKyv6i8gm8csDwaHtHP6VNxc0JnauU6GIxBrDmlnpKYGb3rl3WLSvuiyzJYrr\nzKESnFINFKRLCG3m548OK+reRBDmgYbsZFJ57FS6YTa63268IwwtlRbRs8n8N7Mi\nO0jAXhRyZKRim6lkykIUjwlmIKfS2xl38k1kg5VLfPwZYAhiG6+JMcBlyj7hKU+4\nN9FKKfLlxtRz/g2kh81eHWEOXblEohpR/GbAhMF8h/tkHM+ze2TAbyEK1A+UWlWZ\n3olMRdt/awlAd657XqGVukYUg++GdEGkVyeWcCV3CwscbhiFAqpV/TWh6yARultJ\nvij/UQWi27yFY1v4EAactGL/V+zrmQSduKGd7jpHJe2XVS4DGuw+ThiDQc8gamlG\ndmZcPkVxChFqGpxGKXOr8uFWbYUG4Cj3iA4iV8XOlGUIN8uFtbWX/VyVHGNGDmGg\n60osshOegUJTNz8OBkZspvsCAwEAAQ==\n-----END PUBLIC KEY-----',NULL,'2018-11-17 12:50:07'),(_binary 'http://192.168.22.10/profile/friendica3','930bb26b-425b-f00c-3ce7-94f334620775','Person','http://192.168.22.10/following/friendica3','http://192.168.22.10/followers/friendica3','http://192.168.22.10/inbox/friendica3','http://192.168.22.10/outbox/friendica3','http://192.168.22.10/inbox','friendica3','friendica3','','http://192.168.22.10/photo/profile/4.jpg',NULL,NULL,'-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvAs4TR4AI+nlBt8d7BHD\nViq6w3UslHqURRUo0+sfAE5RL45im2z+ryPag1K5dbs5pcoa6hfk9+EREgoWlwnX\nX/8UdkvkoHE6/JDFimuaK7pequwUQbQoOXkkBAyPtN8YhjfGM19CI5FIVByY+O8p\nO/lGls1h5bxYEIgjA0tTDw5FuhPtiw9SJAPtQs5Gueoe9y7VwXNLNenKI6r6/Kfo\nzgYKJS98ibCllMiDIY0ixZZqhsh5+oEAsGPaNtQSgw09fWyyDNUKOenC4NhhMWsY\nBtTgDOPkM1AgidQKny7wtfo04YCn13SZuU6cWXqCx2pTgxLpBRgNbfkf6/DerVEO\nh2/Fxx2oMrRqLox+kAj03zrKnto3n5cYASlmfeEmUBHtjc/qPbuEzm+FEJKTXkrg\njt0+xzTQxPr+oFMinACdTMu6J4lB6dGCJxbx/Dx6FcRKymUYGdLvZWITfKZAikRh\nX8Pll3bFExOk5ieOdBLRt5ujGHuMbV204qpUsL0kDU9/4aMnpJei4EZuw21ovDH1\nVchVjJS4fzsJkaDfA81+83ADHXU10+UJ7PXAq7U416nC/dr30Gp2cxYb1qELYe4W\nGXE9k857z1o3BevJi4smy0FeydVVEVJ/1SPhPcdKHIA6sfP+TzuvWk7zK+xDwdyb\no4/nVNHD26NC1mVTTAjR7t0CAwEAAQ==\n-----END PUBLIC KEY-----',NULL,'2018-11-17 12:50:08'),(_binary 'http://192.168.22.10/profile/friendica4','930bb26b-485b-f00c-9705-875375530301','Person','http://192.168.22.10/following/friendica4','http://192.168.22.10/followers/friendica4','http://192.168.22.10/inbox/friendica4','http://192.168.22.10/outbox/friendica4','http://192.168.22.10/inbox','friendica4','friendica4','','http://192.168.22.10/photo/profile/5.jpg',NULL,NULL,'-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtOfQNRnGbzBy9Rc7gLAI\nrB5Fp2SBFfjRnd5g99HKWI3Amz5BXdcOWsgikVtwSVGDD8TGPj56qIlp+ctfYkPZ\nn5QSGfA3VS5eqWNfE9aG3XZAO7M7x2pKVaf79ciuYK0HQrmCeClB844x8rXDmW5m\n1k6Any22lpXHdDY8heR6O/uLIG9i/eRiD8tFMY3ATVkJ4MF5TY/m0ZGhHAMfK9dm\nkJzNvJc0cYe6kBmpDDmlJwObo75NfPBi3bqTaIZvTxda6lgWcuv/J1IR0fLhW8IJ\nbbXcd/fSNHV5zdqPmZsiu4+nx1xf+40J1v9+uKCCxH6UlUR9HLcCpYH6PDmoEkRk\n2WVPsU2+crVbY5cbNx08LVe6ZGl/onhTM35t2JBpo9ClgTSmpgEkRQsBebWNEKn3\n/y7Ib+/IywdomRUTgXVtKt5+90FdEhNwrba2CyD3dFW/CQCwx+363juCZr16EiKx\nbG5VJ1aIN8/My9feB9fklqyCpy0vkMI9NptQbtKntueETeLTqKlZ5uJJZJtd6S7z\nrTAd6vx5WLOMYlfQF2K7MVCwYUVfcIoWKxAg3SU+5sIG+cSrreT67wxt6k6sEEOw\npRZn3qZ13vPpO1mJelhqQeDZYutywYHjNj+L5TjCIZqIS129MZbqDJELkjTmckRV\nAZmzTHqCDXwd70IddYvuuJMCAwEAAQ==\n-----END PUBLIC KEY-----',NULL,'2018-11-17 12:50:08'),(_binary 'http://192.168.22.10/profile/friendica5','930bb26b-545b-f00c-b13c-f57634480673','Person','http://192.168.22.10/following/friendica5','http://192.168.22.10/followers/friendica5','http://192.168.22.10/inbox/friendica5','http://192.168.22.10/outbox/friendica5','http://192.168.22.10/inbox','friendica5','friendica5','','http://192.168.22.10/photo/profile/6.jpg',NULL,NULL,'-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzbQgk0okIu48OTsuvI/j\nnTYfKREWuHx0Rkr/44zKv9NGOJItxb82OoK/59o4l2mkt3REOwEzsSeAUe8VjkFU\nnfmjTTg8GqDCQ07Bmux1lVdtyAIhqr3uMraS8bODUMRFnDSX39rYYUH+h7oBZ44k\nW2vGvnWKh8BYPmV+hAab8TuJBODrZy1z5A1lc9CSSoZCiEOSvO5tGgiTBWW/CUoC\n6jR/BqZy/jlbiuED/t1Hn8dKCyPkAUppFhVJgSiSaysLeQlGsw58QYvD4WJXWbGh\nOzBDyR5hmSPuRuCxWD0GkpCnZGtkLhrJHAhYysAvqlc6Oo+6leRuLq2S05cZI1cL\nwsjapgnIvPCSIm7OkFlEimqveMNTOKNbcyIHaq8kL3ZyUYWuygVndL9AdUhIEAkE\nOROFlAyv0fC0tbBhnsJ/SifvEGYOaO4eRB1mvvY2R+JU4gPXLWbeNSNrn4zpTdIL\n0pwDJvLAv+tgeheBz6fNyKqETeclMEuo+GUs3nB8zeO2ZJXwzAgqMt5/Vr27v8d7\nk+Cer7ydUT8QTlsRGTAjaWicDFPLlH9v2v15JEaDqjtIJ9kUdAaj+BnR3+j1x86g\nSrJa5SV4kdu/hduRtIfnhKTpu/ZnxhQzkWuu6gWtjCpLzTuaHybnh69rSz7CKoFU\nXnqm6IVFII/ny2a7I1KrMFECAwEAAQ==\n-----END PUBLIC KEY-----',NULL,'2018-11-17 12:50:08'); -/*!40000 ALTER TABLE `apcontact` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `attach` --- - -DROP TABLE IF EXISTS `attach`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `attach` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'generated index', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Owner User id', - `hash` varchar(64) NOT NULL DEFAULT '' COMMENT 'hash', - `filename` varchar(255) NOT NULL DEFAULT '' COMMENT 'filename of original', - `filetype` varchar(64) NOT NULL DEFAULT '' COMMENT 'mimetype', - `filesize` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'size in bytes', - `data` longblob NOT NULL COMMENT 'file data', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time', - `edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'last edit time', - `allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id ''<19><78>', - `allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups', - `deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id', - `deny_gid` mediumtext COMMENT 'Access Control - list of denied groups', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='file attachments'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `attach` --- - -LOCK TABLES `attach` WRITE; -/*!40000 ALTER TABLE `attach` DISABLE KEYS */; -/*!40000 ALTER TABLE `attach` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `auth_codes` --- - -DROP TABLE IF EXISTS `auth_codes`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `auth_codes` ( - `id` varchar(40) NOT NULL, - `client_id` varchar(20) NOT NULL DEFAULT '', - `redirect_uri` varchar(200) NOT NULL DEFAULT '', - `expires` int(11) NOT NULL DEFAULT '0', - `scope` varchar(250) NOT NULL DEFAULT '', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OAuth usage'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `auth_codes` --- - -LOCK TABLES `auth_codes` WRITE; -/*!40000 ALTER TABLE `auth_codes` DISABLE KEYS */; -/*!40000 ALTER TABLE `auth_codes` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `cache` --- - -DROP TABLE IF EXISTS `cache`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `cache` ( - `k` varbinary(255) NOT NULL COMMENT 'cache key', - `v` mediumtext COMMENT 'cached serialized value', - `expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of cache expiration', - `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of cache insertion', - PRIMARY KEY (`k`), - KEY `k_expires` (`k`,`expires`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Stores temporary data'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `cache` --- - -LOCK TABLES `cache` WRITE; -/*!40000 ALTER TABLE `cache` DISABLE KEYS */; -INSERT INTO `cache` VALUES (_binary 'Probe::uri::friendica1@192.168.22.10','a:21:{s:4:\"name\";s:10:\"friendica1\";s:4:\"nick\";s:10:\"friendica1\";s:4:\"guid\";s:36:\"930bb26b-585b-f00c-1225-b79618332648\";s:3:\"url\";s:39:\"http://192.168.22.10/profile/friendica1\";s:4:\"addr\";s:24:\"friendica1@192.168.22.10\";s:5:\"alias\";s:32:\"http://192.168.22.10/~friendica1\";s:5:\"photo\";s:79:\"http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007\";s:9:\"community\";s:0:\"\";s:8:\"keywords\";s:0:\"\";s:8:\"location\";s:0:\"\";s:5:\"about\";s:0:\"\";s:5:\"batch\";s:0:\"\";s:6:\"notify\";s:43:\"http://192.168.22.10/dfrn_notify/friendica1\";s:4:\"poll\";s:41:\"http://192.168.22.10/dfrn_poll/friendica1\";s:7:\"request\";s:44:\"http://192.168.22.10/dfrn_request/friendica1\";s:7:\"confirm\";s:44:\"http://192.168.22.10/dfrn_confirm/friendica1\";s:4:\"poco\";s:36:\"http://192.168.22.10/poco/friendica1\";s:8:\"priority\";i:0;s:7:\"network\";s:4:\"dfrn\";s:6:\"pubkey\";s:800:\"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmQR1Wmtv2KMZ5f5NTJMf\nRfX+1KXfhCKZaDgtL8/Trtb1ZXLq0tlBVhm29MI1F6cxZFhNlFyW6GZCeZFKX3FP\n2pFw03sEBTo5PCLso18EEl9kXV9cXoBMzINI3jIGnJiawq9PfIw5142jFBLOxiDS\nc/iNG6iFbq2qHwiQJjtp61BCFivIMZaHXqvtroakggjBH3EbRx+rZfeqjB8MRqOc\npXIqjc0lrHk8QGdXeuUAWsL2qUqHVNekLBXPnRcdMT8BxUmtBj0ccZ1IICLPFEzK\nr6DtqH5kE+aq9IcoMIEDjUhnyOAvFda8TlxX8D5SMFbrfJZDTypDqXHnSxHUS0Rd\nX06tLJZxMgqHspkxp6nzxk7JGPHKQmU6N0uqQb+i7dFlgC8QRLi79a1x019dvpAN\nRwbhGnn/pEU9Kn1JbYTAI6irBnHnlAUkpxmwSzRx5ncbNbhbniMD2/39IV1mztUh\nAyc262/cRRJAu8pEsPvc/pSijIyfrxJGYqF/uUcS5gbrY+wCjpYaBdzFxQEcD1Aq\nvXQGxi3sMRY9b1FJ+f3UTB7D9kIBCbwUNOXCjDCrOKZN6nxPLpKnfFsneHleUHa0\n+MRzI/vX78jQ1P4KgxPIiSktfrZitBpyzCC5O4ytiwqF2E8Ei0zE6OL2gm8yv7tB\n00ewnSBHzIpdnS51XuxxmIsCAwEAAQ==\n-----END PUBLIC KEY-----\n\";s:7:\"baseurl\";s:20:\"http://192.168.22.10\";}','2018-11-18 13:41:24','2018-11-17 13:41:24'),(_binary 'Probe::uri::friendica2@192.168.22.10','a:21:{s:4:\"name\";s:10:\"friendica2\";s:4:\"nick\";s:10:\"friendica2\";s:4:\"guid\";s:36:\"930bb26b-155b-f00c-272b-7ee871449332\";s:3:\"url\";s:39:\"http://192.168.22.10/profile/friendica2\";s:4:\"addr\";s:24:\"friendica2@192.168.22.10\";s:5:\"alias\";s:32:\"http://192.168.22.10/~friendica2\";s:5:\"photo\";s:79:\"http://192.168.22.10/photo/15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007\";s:9:\"community\";s:0:\"\";s:8:\"keywords\";s:0:\"\";s:8:\"location\";s:0:\"\";s:5:\"about\";s:0:\"\";s:5:\"batch\";s:0:\"\";s:6:\"notify\";s:43:\"http://192.168.22.10/dfrn_notify/friendica2\";s:4:\"poll\";s:41:\"http://192.168.22.10/dfrn_poll/friendica2\";s:7:\"request\";s:44:\"http://192.168.22.10/dfrn_request/friendica2\";s:7:\"confirm\";s:44:\"http://192.168.22.10/dfrn_confirm/friendica2\";s:4:\"poco\";s:36:\"http://192.168.22.10/poco/friendica2\";s:8:\"priority\";i:0;s:7:\"network\";s:4:\"dfrn\";s:6:\"pubkey\";s:800:\"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwMWwwjqXtfQmCzLQmZ+D\ntRVdtv1Vq6DdjC/+aEP3UKLpp0nzNcsfT3U8Kejs23o0KpC+EVFXuWZqvxyeHoiZ\n+w9i1roJf2eSLBVeAjiEmLbI7wSfLBu+iA1x+X6+d9wxxAgzM7KHIBOghVCDussz\n4AaojP4Dx3Egsl1w+1j/ULUNCvf1wq9KLMMgJlnemC4cHfv+ObcxdisPezjVD9sg\nnvRLKyv6i8gm8csDwaHtHP6VNxc0JnauU6GIxBrDmlnpKYGb3rl3WLSvuiyzJYrr\nzKESnFINFKRLCG3m548OK+reRBDmgYbsZFJ57FS6YTa63268IwwtlRbRs8n8N7Mi\nO0jAXhRyZKRim6lkykIUjwlmIKfS2xl38k1kg5VLfPwZYAhiG6+JMcBlyj7hKU+4\nN9FKKfLlxtRz/g2kh81eHWEOXblEohpR/GbAhMF8h/tkHM+ze2TAbyEK1A+UWlWZ\n3olMRdt/awlAd657XqGVukYUg++GdEGkVyeWcCV3CwscbhiFAqpV/TWh6yARultJ\nvij/UQWi27yFY1v4EAactGL/V+zrmQSduKGd7jpHJe2XVS4DGuw+ThiDQc8gamlG\ndmZcPkVxChFqGpxGKXOr8uFWbYUG4Cj3iA4iV8XOlGUIN8uFtbWX/VyVHGNGDmGg\n60osshOegUJTNz8OBkZspvsCAwEAAQ==\n-----END PUBLIC KEY-----\n\";s:7:\"baseurl\";s:20:\"http://192.168.22.10\";}','2018-11-18 13:47:02','2018-11-17 13:47:02'),(_binary 'Probe::uri::friendica4@192.168.22.10','a:21:{s:4:\"name\";s:10:\"friendica4\";s:4:\"nick\";s:10:\"friendica4\";s:4:\"guid\";s:36:\"930bb26b-485b-f00c-9705-875375530301\";s:3:\"url\";s:39:\"http://192.168.22.10/profile/friendica4\";s:4:\"addr\";s:24:\"friendica4@192.168.22.10\";s:5:\"alias\";s:32:\"http://192.168.22.10/~friendica4\";s:5:\"photo\";s:79:\"http://192.168.22.10/photo/97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008\";s:9:\"community\";s:0:\"\";s:8:\"keywords\";s:0:\"\";s:8:\"location\";s:0:\"\";s:5:\"about\";s:0:\"\";s:5:\"batch\";s:0:\"\";s:6:\"notify\";s:43:\"http://192.168.22.10/dfrn_notify/friendica4\";s:4:\"poll\";s:41:\"http://192.168.22.10/dfrn_poll/friendica4\";s:7:\"request\";s:44:\"http://192.168.22.10/dfrn_request/friendica4\";s:7:\"confirm\";s:44:\"http://192.168.22.10/dfrn_confirm/friendica4\";s:4:\"poco\";s:36:\"http://192.168.22.10/poco/friendica4\";s:8:\"priority\";i:0;s:7:\"network\";s:4:\"dfrn\";s:6:\"pubkey\";s:800:\"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtOfQNRnGbzBy9Rc7gLAI\nrB5Fp2SBFfjRnd5g99HKWI3Amz5BXdcOWsgikVtwSVGDD8TGPj56qIlp+ctfYkPZ\nn5QSGfA3VS5eqWNfE9aG3XZAO7M7x2pKVaf79ciuYK0HQrmCeClB844x8rXDmW5m\n1k6Any22lpXHdDY8heR6O/uLIG9i/eRiD8tFMY3ATVkJ4MF5TY/m0ZGhHAMfK9dm\nkJzNvJc0cYe6kBmpDDmlJwObo75NfPBi3bqTaIZvTxda6lgWcuv/J1IR0fLhW8IJ\nbbXcd/fSNHV5zdqPmZsiu4+nx1xf+40J1v9+uKCCxH6UlUR9HLcCpYH6PDmoEkRk\n2WVPsU2+crVbY5cbNx08LVe6ZGl/onhTM35t2JBpo9ClgTSmpgEkRQsBebWNEKn3\n/y7Ib+/IywdomRUTgXVtKt5+90FdEhNwrba2CyD3dFW/CQCwx+363juCZr16EiKx\nbG5VJ1aIN8/My9feB9fklqyCpy0vkMI9NptQbtKntueETeLTqKlZ5uJJZJtd6S7z\nrTAd6vx5WLOMYlfQF2K7MVCwYUVfcIoWKxAg3SU+5sIG+cSrreT67wxt6k6sEEOw\npRZn3qZ13vPpO1mJelhqQeDZYutywYHjNj+L5TjCIZqIS129MZbqDJELkjTmckRV\nAZmzTHqCDXwd70IddYvuuJMCAwEAAQ==\n-----END PUBLIC KEY-----\n\";s:7:\"baseurl\";s:20:\"http://192.168.22.10\";}','2018-11-18 13:48:45','2018-11-17 13:48:45'),(_binary 'Probe::uri::http://192.168.22.10/profile/admin','a:21:{s:4:\"name\";s:5:\"admin\";s:4:\"nick\";s:5:\"admin\";s:4:\"guid\";s:36:\"930bb26b-675b-f00a-1f35-2cc901636033\";s:3:\"url\";s:34:\"http://192.168.22.10/profile/admin\";s:4:\"addr\";s:19:\"admin@192.168.22.10\";s:5:\"alias\";s:27:\"http://192.168.22.10/~admin\";s:5:\"photo\";s:79:\"http://192.168.22.10/photo/59483894715bf00a1f6a24a891914929-4.jpg?ts=1542457887\";s:9:\"community\";s:0:\"\";s:8:\"keywords\";s:0:\"\";s:8:\"location\";s:0:\"\";s:5:\"about\";s:0:\"\";s:5:\"batch\";s:0:\"\";s:6:\"notify\";s:38:\"http://192.168.22.10/dfrn_notify/admin\";s:4:\"poll\";s:36:\"http://192.168.22.10/dfrn_poll/admin\";s:7:\"request\";s:39:\"http://192.168.22.10/dfrn_request/admin\";s:7:\"confirm\";s:39:\"http://192.168.22.10/dfrn_confirm/admin\";s:4:\"poco\";s:31:\"http://192.168.22.10/poco/admin\";s:8:\"priority\";i:0;s:7:\"network\";s:4:\"dfrn\";s:6:\"pubkey\";s:800:\"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyYmalhhmPJg0qwLjbeoL\nKgykA6idu8HtZkKWPpXZHHD9J0InLId7Ht3G9dSBIBbHpWhaoFHkI06PRaqiT3sY\n4yXPBWDuhnIzzbV5VbxXShzRCe0LzBMhvusf/74sQkqH64g7xsaSBipHHaUEa7yD\nv+xCoGtoSOcqGEBzesSH//sIl94IrkkN+/grb1ZSFFjQYWMLMWMD7Py/awcqOtCB\nJ6NnmcBVMK5CxyV+YN+C+dhUsf+LjvH7WE0uigvTlMG+lGfXHxl4/en8bcAQ/GEr\n1xfbDJuknxr+ckGFZeHtj6Noz1IRD7y+7rlTgbZTmOrCJKg38Br2m3tMGGhIU3t7\nSmrKn8qqf9HuyR83+7Cu+t8x24LuhTjGW2Z6KE5TqYacMu+to58MFH8lDOnoOxHA\nGWpi9kYPXSbO9mLwDNF3pue3bLusvGQnns9h38w8m1Q25nivKKvgVbOrdNaB6wUy\nFIDcqjlZOVIyZ24QWZck77Em/cCkEf1c9kV4f1VjwmyQ4apSPf6q92AHcBlbv7yI\nFhVbGMhEaMIT7PQgxi2F48YInnlNjQlk3yHv3sdjlYJvcHHlf2PsMXlRb1CzrFRf\nX6Uv7e1obwy+SsywkAq+sT4tfsPEw2mIL56cXw0licP2hjOIgzYD1xi8pZx3xsQP\nTjdpqBmCKfnzs+TCZIbXIQ8CAwEAAQ==\n-----END PUBLIC KEY-----\n\";s:7:\"baseurl\";s:20:\"http://192.168.22.10\";}','2018-11-18 12:34:45','2018-11-17 12:34:45'),(_binary 'Probe::uri::http://192.168.22.10/profile/friendica1','a:21:{s:4:\"name\";s:10:\"friendica1\";s:4:\"nick\";s:10:\"friendica1\";s:4:\"guid\";s:36:\"930bb26b-585b-f00c-1225-b79618332648\";s:3:\"url\";s:39:\"http://192.168.22.10/profile/friendica1\";s:4:\"addr\";s:24:\"friendica1@192.168.22.10\";s:5:\"alias\";s:32:\"http://192.168.22.10/~friendica1\";s:5:\"photo\";s:40:\"http://192.168.22.10/photo/profile/2.jpg\";s:9:\"community\";s:0:\"\";s:8:\"keywords\";s:0:\"\";s:8:\"location\";s:0:\"\";s:5:\"about\";s:0:\"\";s:5:\"batch\";s:0:\"\";s:6:\"notify\";s:43:\"http://192.168.22.10/dfrn_notify/friendica1\";s:4:\"poll\";s:41:\"http://192.168.22.10/dfrn_poll/friendica1\";s:7:\"request\";s:44:\"http://192.168.22.10/dfrn_request/friendica1\";s:7:\"confirm\";s:44:\"http://192.168.22.10/dfrn_confirm/friendica1\";s:4:\"poco\";s:36:\"http://192.168.22.10/poco/friendica1\";s:8:\"priority\";i:0;s:7:\"network\";s:4:\"dfrn\";s:6:\"pubkey\";s:800:\"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmQR1Wmtv2KMZ5f5NTJMf\nRfX+1KXfhCKZaDgtL8/Trtb1ZXLq0tlBVhm29MI1F6cxZFhNlFyW6GZCeZFKX3FP\n2pFw03sEBTo5PCLso18EEl9kXV9cXoBMzINI3jIGnJiawq9PfIw5142jFBLOxiDS\nc/iNG6iFbq2qHwiQJjtp61BCFivIMZaHXqvtroakggjBH3EbRx+rZfeqjB8MRqOc\npXIqjc0lrHk8QGdXeuUAWsL2qUqHVNekLBXPnRcdMT8BxUmtBj0ccZ1IICLPFEzK\nr6DtqH5kE+aq9IcoMIEDjUhnyOAvFda8TlxX8D5SMFbrfJZDTypDqXHnSxHUS0Rd\nX06tLJZxMgqHspkxp6nzxk7JGPHKQmU6N0uqQb+i7dFlgC8QRLi79a1x019dvpAN\nRwbhGnn/pEU9Kn1JbYTAI6irBnHnlAUkpxmwSzRx5ncbNbhbniMD2/39IV1mztUh\nAyc262/cRRJAu8pEsPvc/pSijIyfrxJGYqF/uUcS5gbrY+wCjpYaBdzFxQEcD1Aq\nvXQGxi3sMRY9b1FJ+f3UTB7D9kIBCbwUNOXCjDCrOKZN6nxPLpKnfFsneHleUHa0\n+MRzI/vX78jQ1P4KgxPIiSktfrZitBpyzCC5O4ytiwqF2E8Ei0zE6OL2gm8yv7tB\n00ewnSBHzIpdnS51XuxxmIsCAwEAAQ==\n-----END PUBLIC KEY-----\n\";s:7:\"baseurl\";s:20:\"http://192.168.22.10\";}','2018-11-18 12:50:07','2018-11-17 12:50:07'),(_binary 'Probe::uri::http://192.168.22.10/profile/friendica2','a:21:{s:4:\"name\";s:10:\"friendica2\";s:4:\"nick\";s:10:\"friendica2\";s:4:\"guid\";s:36:\"930bb26b-155b-f00c-272b-7ee871449332\";s:3:\"url\";s:39:\"http://192.168.22.10/profile/friendica2\";s:4:\"addr\";s:24:\"friendica2@192.168.22.10\";s:5:\"alias\";s:32:\"http://192.168.22.10/~friendica2\";s:5:\"photo\";s:40:\"http://192.168.22.10/photo/profile/3.jpg\";s:9:\"community\";s:0:\"\";s:8:\"keywords\";s:0:\"\";s:8:\"location\";s:0:\"\";s:5:\"about\";s:0:\"\";s:5:\"batch\";s:0:\"\";s:6:\"notify\";s:43:\"http://192.168.22.10/dfrn_notify/friendica2\";s:4:\"poll\";s:41:\"http://192.168.22.10/dfrn_poll/friendica2\";s:7:\"request\";s:44:\"http://192.168.22.10/dfrn_request/friendica2\";s:7:\"confirm\";s:44:\"http://192.168.22.10/dfrn_confirm/friendica2\";s:4:\"poco\";s:36:\"http://192.168.22.10/poco/friendica2\";s:8:\"priority\";i:0;s:7:\"network\";s:4:\"dfrn\";s:6:\"pubkey\";s:800:\"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwMWwwjqXtfQmCzLQmZ+D\ntRVdtv1Vq6DdjC/+aEP3UKLpp0nzNcsfT3U8Kejs23o0KpC+EVFXuWZqvxyeHoiZ\n+w9i1roJf2eSLBVeAjiEmLbI7wSfLBu+iA1x+X6+d9wxxAgzM7KHIBOghVCDussz\n4AaojP4Dx3Egsl1w+1j/ULUNCvf1wq9KLMMgJlnemC4cHfv+ObcxdisPezjVD9sg\nnvRLKyv6i8gm8csDwaHtHP6VNxc0JnauU6GIxBrDmlnpKYGb3rl3WLSvuiyzJYrr\nzKESnFINFKRLCG3m548OK+reRBDmgYbsZFJ57FS6YTa63268IwwtlRbRs8n8N7Mi\nO0jAXhRyZKRim6lkykIUjwlmIKfS2xl38k1kg5VLfPwZYAhiG6+JMcBlyj7hKU+4\nN9FKKfLlxtRz/g2kh81eHWEOXblEohpR/GbAhMF8h/tkHM+ze2TAbyEK1A+UWlWZ\n3olMRdt/awlAd657XqGVukYUg++GdEGkVyeWcCV3CwscbhiFAqpV/TWh6yARultJ\nvij/UQWi27yFY1v4EAactGL/V+zrmQSduKGd7jpHJe2XVS4DGuw+ThiDQc8gamlG\ndmZcPkVxChFqGpxGKXOr8uFWbYUG4Cj3iA4iV8XOlGUIN8uFtbWX/VyVHGNGDmGg\n60osshOegUJTNz8OBkZspvsCAwEAAQ==\n-----END PUBLIC KEY-----\n\";s:7:\"baseurl\";s:20:\"http://192.168.22.10\";}','2018-11-18 12:50:07','2018-11-17 12:50:07'),(_binary 'Probe::uri::http://192.168.22.10/profile/friendica3','a:21:{s:4:\"name\";s:10:\"friendica3\";s:4:\"nick\";s:10:\"friendica3\";s:4:\"guid\";s:36:\"930bb26b-425b-f00c-3ce7-94f334620775\";s:3:\"url\";s:39:\"http://192.168.22.10/profile/friendica3\";s:4:\"addr\";s:24:\"friendica3@192.168.22.10\";s:5:\"alias\";s:32:\"http://192.168.22.10/~friendica3\";s:5:\"photo\";s:40:\"http://192.168.22.10/photo/profile/4.jpg\";s:9:\"community\";s:0:\"\";s:8:\"keywords\";s:0:\"\";s:8:\"location\";s:0:\"\";s:5:\"about\";s:0:\"\";s:5:\"batch\";s:0:\"\";s:6:\"notify\";s:43:\"http://192.168.22.10/dfrn_notify/friendica3\";s:4:\"poll\";s:41:\"http://192.168.22.10/dfrn_poll/friendica3\";s:7:\"request\";s:44:\"http://192.168.22.10/dfrn_request/friendica3\";s:7:\"confirm\";s:44:\"http://192.168.22.10/dfrn_confirm/friendica3\";s:4:\"poco\";s:36:\"http://192.168.22.10/poco/friendica3\";s:8:\"priority\";i:0;s:7:\"network\";s:4:\"dfrn\";s:6:\"pubkey\";s:800:\"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvAs4TR4AI+nlBt8d7BHD\nViq6w3UslHqURRUo0+sfAE5RL45im2z+ryPag1K5dbs5pcoa6hfk9+EREgoWlwnX\nX/8UdkvkoHE6/JDFimuaK7pequwUQbQoOXkkBAyPtN8YhjfGM19CI5FIVByY+O8p\nO/lGls1h5bxYEIgjA0tTDw5FuhPtiw9SJAPtQs5Gueoe9y7VwXNLNenKI6r6/Kfo\nzgYKJS98ibCllMiDIY0ixZZqhsh5+oEAsGPaNtQSgw09fWyyDNUKOenC4NhhMWsY\nBtTgDOPkM1AgidQKny7wtfo04YCn13SZuU6cWXqCx2pTgxLpBRgNbfkf6/DerVEO\nh2/Fxx2oMrRqLox+kAj03zrKnto3n5cYASlmfeEmUBHtjc/qPbuEzm+FEJKTXkrg\njt0+xzTQxPr+oFMinACdTMu6J4lB6dGCJxbx/Dx6FcRKymUYGdLvZWITfKZAikRh\nX8Pll3bFExOk5ieOdBLRt5ujGHuMbV204qpUsL0kDU9/4aMnpJei4EZuw21ovDH1\nVchVjJS4fzsJkaDfA81+83ADHXU10+UJ7PXAq7U416nC/dr30Gp2cxYb1qELYe4W\nGXE9k857z1o3BevJi4smy0FeydVVEVJ/1SPhPcdKHIA6sfP+TzuvWk7zK+xDwdyb\no4/nVNHD26NC1mVTTAjR7t0CAwEAAQ==\n-----END PUBLIC KEY-----\n\";s:7:\"baseurl\";s:20:\"http://192.168.22.10\";}','2018-11-18 12:50:08','2018-11-17 12:50:08'),(_binary 'Probe::uri::http://192.168.22.10/profile/friendica4','a:21:{s:4:\"name\";s:10:\"friendica4\";s:4:\"nick\";s:10:\"friendica4\";s:4:\"guid\";s:36:\"930bb26b-485b-f00c-9705-875375530301\";s:3:\"url\";s:39:\"http://192.168.22.10/profile/friendica4\";s:4:\"addr\";s:24:\"friendica4@192.168.22.10\";s:5:\"alias\";s:32:\"http://192.168.22.10/~friendica4\";s:5:\"photo\";s:40:\"http://192.168.22.10/photo/profile/5.jpg\";s:9:\"community\";s:0:\"\";s:8:\"keywords\";s:0:\"\";s:8:\"location\";s:0:\"\";s:5:\"about\";s:0:\"\";s:5:\"batch\";s:0:\"\";s:6:\"notify\";s:43:\"http://192.168.22.10/dfrn_notify/friendica4\";s:4:\"poll\";s:41:\"http://192.168.22.10/dfrn_poll/friendica4\";s:7:\"request\";s:44:\"http://192.168.22.10/dfrn_request/friendica4\";s:7:\"confirm\";s:44:\"http://192.168.22.10/dfrn_confirm/friendica4\";s:4:\"poco\";s:36:\"http://192.168.22.10/poco/friendica4\";s:8:\"priority\";i:0;s:7:\"network\";s:4:\"dfrn\";s:6:\"pubkey\";s:800:\"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtOfQNRnGbzBy9Rc7gLAI\nrB5Fp2SBFfjRnd5g99HKWI3Amz5BXdcOWsgikVtwSVGDD8TGPj56qIlp+ctfYkPZ\nn5QSGfA3VS5eqWNfE9aG3XZAO7M7x2pKVaf79ciuYK0HQrmCeClB844x8rXDmW5m\n1k6Any22lpXHdDY8heR6O/uLIG9i/eRiD8tFMY3ATVkJ4MF5TY/m0ZGhHAMfK9dm\nkJzNvJc0cYe6kBmpDDmlJwObo75NfPBi3bqTaIZvTxda6lgWcuv/J1IR0fLhW8IJ\nbbXcd/fSNHV5zdqPmZsiu4+nx1xf+40J1v9+uKCCxH6UlUR9HLcCpYH6PDmoEkRk\n2WVPsU2+crVbY5cbNx08LVe6ZGl/onhTM35t2JBpo9ClgTSmpgEkRQsBebWNEKn3\n/y7Ib+/IywdomRUTgXVtKt5+90FdEhNwrba2CyD3dFW/CQCwx+363juCZr16EiKx\nbG5VJ1aIN8/My9feB9fklqyCpy0vkMI9NptQbtKntueETeLTqKlZ5uJJZJtd6S7z\nrTAd6vx5WLOMYlfQF2K7MVCwYUVfcIoWKxAg3SU+5sIG+cSrreT67wxt6k6sEEOw\npRZn3qZ13vPpO1mJelhqQeDZYutywYHjNj+L5TjCIZqIS129MZbqDJELkjTmckRV\nAZmzTHqCDXwd70IddYvuuJMCAwEAAQ==\n-----END PUBLIC KEY-----\n\";s:7:\"baseurl\";s:20:\"http://192.168.22.10\";}','2018-11-18 12:50:08','2018-11-17 12:50:08'),(_binary 'Probe::uri::http://192.168.22.10/profile/friendica5','a:21:{s:4:\"name\";s:10:\"friendica5\";s:4:\"nick\";s:10:\"friendica5\";s:4:\"guid\";s:36:\"930bb26b-545b-f00c-b13c-f57634480673\";s:3:\"url\";s:39:\"http://192.168.22.10/profile/friendica5\";s:4:\"addr\";s:24:\"friendica5@192.168.22.10\";s:5:\"alias\";s:32:\"http://192.168.22.10/~friendica5\";s:5:\"photo\";s:40:\"http://192.168.22.10/photo/profile/6.jpg\";s:9:\"community\";s:0:\"\";s:8:\"keywords\";s:0:\"\";s:8:\"location\";s:0:\"\";s:5:\"about\";s:0:\"\";s:5:\"batch\";s:0:\"\";s:6:\"notify\";s:43:\"http://192.168.22.10/dfrn_notify/friendica5\";s:4:\"poll\";s:41:\"http://192.168.22.10/dfrn_poll/friendica5\";s:7:\"request\";s:44:\"http://192.168.22.10/dfrn_request/friendica5\";s:7:\"confirm\";s:44:\"http://192.168.22.10/dfrn_confirm/friendica5\";s:4:\"poco\";s:36:\"http://192.168.22.10/poco/friendica5\";s:8:\"priority\";i:0;s:7:\"network\";s:4:\"dfrn\";s:6:\"pubkey\";s:800:\"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzbQgk0okIu48OTsuvI/j\nnTYfKREWuHx0Rkr/44zKv9NGOJItxb82OoK/59o4l2mkt3REOwEzsSeAUe8VjkFU\nnfmjTTg8GqDCQ07Bmux1lVdtyAIhqr3uMraS8bODUMRFnDSX39rYYUH+h7oBZ44k\nW2vGvnWKh8BYPmV+hAab8TuJBODrZy1z5A1lc9CSSoZCiEOSvO5tGgiTBWW/CUoC\n6jR/BqZy/jlbiuED/t1Hn8dKCyPkAUppFhVJgSiSaysLeQlGsw58QYvD4WJXWbGh\nOzBDyR5hmSPuRuCxWD0GkpCnZGtkLhrJHAhYysAvqlc6Oo+6leRuLq2S05cZI1cL\nwsjapgnIvPCSIm7OkFlEimqveMNTOKNbcyIHaq8kL3ZyUYWuygVndL9AdUhIEAkE\nOROFlAyv0fC0tbBhnsJ/SifvEGYOaO4eRB1mvvY2R+JU4gPXLWbeNSNrn4zpTdIL\n0pwDJvLAv+tgeheBz6fNyKqETeclMEuo+GUs3nB8zeO2ZJXwzAgqMt5/Vr27v8d7\nk+Cer7ydUT8QTlsRGTAjaWicDFPLlH9v2v15JEaDqjtIJ9kUdAaj+BnR3+j1x86g\nSrJa5SV4kdu/hduRtIfnhKTpu/ZnxhQzkWuu6gWtjCpLzTuaHybnh69rSz7CKoFU\nXnqm6IVFII/ny2a7I1KrMFECAwEAAQ==\n-----END PUBLIC KEY-----\n\";s:7:\"baseurl\";s:20:\"http://192.168.22.10\";}','2018-11-18 12:50:08','2018-11-17 12:50:08'),(_binary 'documentLoader:https://w3id.org/identity/v1','O:8:\"stdClass\":3:{s:10:\"contextUrl\";N;s:8:\"document\";s:3622:\"{\n \"@context\": {\n \"id\": \"@id\",\n \"type\": \"@type\",\n\n \"cred\": \"https://w3id.org/credentials#\",\n \"dc\": \"http://purl.org/dc/terms/\",\n \"identity\": \"https://w3id.org/identity#\",\n \"perm\": \"https://w3id.org/permissions#\",\n \"ps\": \"https://w3id.org/payswarm#\",\n \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\n \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\",\n \"sec\": \"https://w3id.org/security#\",\n \"schema\": \"http://schema.org/\",\n \"xsd\": \"http://www.w3.org/2001/XMLSchema#\",\n\n \"Group\": \"https://www.w3.org/ns/activitystreams#Group\",\n\n \"claim\": {\"@id\": \"cred:claim\", \"@type\": \"@id\"},\n \"credential\": {\"@id\": \"cred:credential\", \"@type\": \"@id\"},\n \"issued\": {\"@id\": \"cred:issued\", \"@type\": \"xsd:dateTime\"},\n \"issuer\": {\"@id\": \"cred:issuer\", \"@type\": \"@id\"},\n \"recipient\": {\"@id\": \"cred:recipient\", \"@type\": \"@id\"},\n \"Credential\": \"cred:Credential\",\n \"CryptographicKeyCredential\": \"cred:CryptographicKeyCredential\",\n\n \"about\": {\"@id\": \"schema:about\", \"@type\": \"@id\"},\n \"address\": {\"@id\": \"schema:address\", \"@type\": \"@id\"},\n \"addressCountry\": \"schema:addressCountry\",\n \"addressLocality\": \"schema:addressLocality\",\n \"addressRegion\": \"schema:addressRegion\",\n \"comment\": \"rdfs:comment\",\n \"created\": {\"@id\": \"dc:created\", \"@type\": \"xsd:dateTime\"},\n \"creator\": {\"@id\": \"dc:creator\", \"@type\": \"@id\"},\n \"description\": \"schema:description\",\n \"email\": \"schema:email\",\n \"familyName\": \"schema:familyName\",\n \"givenName\": \"schema:givenName\",\n \"image\": {\"@id\": \"schema:image\", \"@type\": \"@id\"},\n \"label\": \"rdfs:label\",\n \"name\": \"schema:name\",\n \"postalCode\": \"schema:postalCode\",\n \"streetAddress\": \"schema:streetAddress\",\n \"title\": \"dc:title\",\n \"url\": {\"@id\": \"schema:url\", \"@type\": \"@id\"},\n \"Person\": \"schema:Person\",\n \"PostalAddress\": \"schema:PostalAddress\",\n \"Organization\": \"schema:Organization\",\n\n \"identityService\": {\"@id\": \"identity:identityService\", \"@type\": \"@id\"},\n \"idp\": {\"@id\": \"identity:idp\", \"@type\": \"@id\"},\n \"Identity\": \"identity:Identity\",\n\n \"paymentProcessor\": \"ps:processor\",\n \"preferences\": {\"@id\": \"ps:preferences\", \"@type\": \"@vocab\"},\n\n \"cipherAlgorithm\": \"sec:cipherAlgorithm\",\n \"cipherData\": \"sec:cipherData\",\n \"cipherKey\": \"sec:cipherKey\",\n \"digestAlgorithm\": \"sec:digestAlgorithm\",\n \"digestValue\": \"sec:digestValue\",\n \"domain\": \"sec:domain\",\n \"expires\": {\"@id\": \"sec:expiration\", \"@type\": \"xsd:dateTime\"},\n \"initializationVector\": \"sec:initializationVector\",\n \"member\": {\"@id\": \"schema:member\", \"@type\": \"@id\"},\n \"memberOf\": {\"@id\": \"schema:memberOf\", \"@type\": \"@id\"},\n \"nonce\": \"sec:nonce\",\n \"normalizationAlgorithm\": \"sec:normalizationAlgorithm\",\n \"owner\": {\"@id\": \"sec:owner\", \"@type\": \"@id\"},\n \"password\": \"sec:password\",\n \"privateKey\": {\"@id\": \"sec:privateKey\", \"@type\": \"@id\"},\n \"privateKeyPem\": \"sec:privateKeyPem\",\n \"publicKey\": {\"@id\": \"sec:publicKey\", \"@type\": \"@id\"},\n \"publicKeyPem\": \"sec:publicKeyPem\",\n \"publicKeyService\": {\"@id\": \"sec:publicKeyService\", \"@type\": \"@id\"},\n \"revoked\": {\"@id\": \"sec:revoked\", \"@type\": \"xsd:dateTime\"},\n \"signature\": \"sec:signature\",\n \"signatureAlgorithm\": \"sec:signatureAlgorithm\",\n \"signatureValue\": \"sec:signatureValue\",\n \"CryptographicKey\": \"sec:Key\",\n \"EncryptedMessage\": \"sec:EncryptedMessage\",\n \"GraphSignature2012\": \"sec:GraphSignature2012\",\n \"LinkedDataSignature2015\": \"sec:LinkedDataSignature2015\",\n\n \"accessControl\": {\"@id\": \"perm:accessControl\", \"@type\": \"@id\"},\n \"writePermission\": {\"@id\": \"perm:writePermission\", \"@type\": \"@id\"}\n }\n}\n\";s:11:\"documentUrl\";s:52:\"https://web-payments.org/contexts/identity-v1.jsonld\";}','2018-11-18 14:00:04','2018-11-17 14:00:04'),(_binary 'documentLoader:https://w3id.org/security/v1','O:8:\"stdClass\":3:{s:10:\"contextUrl\";N;s:8:\"document\";s:2019:\"{\n \"@context\": {\n \"id\": \"@id\",\n \"type\": \"@type\",\n\n \"dc\": \"http://purl.org/dc/terms/\",\n \"sec\": \"https://w3id.org/security#\",\n \"xsd\": \"http://www.w3.org/2001/XMLSchema#\",\n\n \"EcdsaKoblitzSignature2016\": \"sec:EcdsaKoblitzSignature2016\",\n \"Ed25519Signature2018\": \"sec:Ed25519Signature2018\",\n \"EncryptedMessage\": \"sec:EncryptedMessage\",\n \"GraphSignature2012\": \"sec:GraphSignature2012\",\n \"LinkedDataSignature2015\": \"sec:LinkedDataSignature2015\",\n \"LinkedDataSignature2016\": \"sec:LinkedDataSignature2016\",\n \"CryptographicKey\": \"sec:Key\",\n\n \"authenticationTag\": \"sec:authenticationTag\",\n \"canonicalizationAlgorithm\": \"sec:canonicalizationAlgorithm\",\n \"cipherAlgorithm\": \"sec:cipherAlgorithm\",\n \"cipherData\": \"sec:cipherData\",\n \"cipherKey\": \"sec:cipherKey\",\n \"created\": {\"@id\": \"dc:created\", \"@type\": \"xsd:dateTime\"},\n \"creator\": {\"@id\": \"dc:creator\", \"@type\": \"@id\"},\n \"digestAlgorithm\": \"sec:digestAlgorithm\",\n \"digestValue\": \"sec:digestValue\",\n \"domain\": \"sec:domain\",\n \"encryptionKey\": \"sec:encryptionKey\",\n \"expiration\": {\"@id\": \"sec:expiration\", \"@type\": \"xsd:dateTime\"},\n \"expires\": {\"@id\": \"sec:expiration\", \"@type\": \"xsd:dateTime\"},\n \"initializationVector\": \"sec:initializationVector\",\n \"iterationCount\": \"sec:iterationCount\",\n \"nonce\": \"sec:nonce\",\n \"normalizationAlgorithm\": \"sec:normalizationAlgorithm\",\n \"owner\": {\"@id\": \"sec:owner\", \"@type\": \"@id\"},\n \"password\": \"sec:password\",\n \"privateKey\": {\"@id\": \"sec:privateKey\", \"@type\": \"@id\"},\n \"privateKeyPem\": \"sec:privateKeyPem\",\n \"publicKey\": {\"@id\": \"sec:publicKey\", \"@type\": \"@id\"},\n \"publicKeyBase58\": \"sec:publicKeyBase58\",\n \"publicKeyPem\": \"sec:publicKeyPem\",\n \"publicKeyService\": {\"@id\": \"sec:publicKeyService\", \"@type\": \"@id\"},\n \"revoked\": {\"@id\": \"sec:revoked\", \"@type\": \"xsd:dateTime\"},\n \"salt\": \"sec:salt\",\n \"signature\": \"sec:signature\",\n \"signatureAlgorithm\": \"sec:signingAlgorithm\",\n \"signatureValue\": \"sec:signatureValue\"\n }\n}\n\";s:11:\"documentUrl\";s:52:\"https://web-payments.org/contexts/security-v1.jsonld\";}','2018-11-18 12:34:45','2018-11-17 12:34:45'),(_binary 'documentLoader:https://www.w3.org/ns/activitystreams','O:8:\"stdClass\":3:{s:10:\"contextUrl\";N;s:8:\"document\";s:7856:\"{\n \"@context\": {\n \"@vocab\": \"_:\",\n \"xsd\": \"http://www.w3.org/2001/XMLSchema#\",\n \"as\": \"https://www.w3.org/ns/activitystreams#\",\n \"ldp\": \"http://www.w3.org/ns/ldp#\",\n \"id\": \"@id\",\n \"type\": \"@type\",\n \"Accept\": \"as:Accept\",\n \"Activity\": \"as:Activity\",\n \"IntransitiveActivity\": \"as:IntransitiveActivity\",\n \"Add\": \"as:Add\",\n \"Announce\": \"as:Announce\",\n \"Application\": \"as:Application\",\n \"Arrive\": \"as:Arrive\",\n \"Article\": \"as:Article\",\n \"Audio\": \"as:Audio\",\n \"Block\": \"as:Block\",\n \"Collection\": \"as:Collection\",\n \"CollectionPage\": \"as:CollectionPage\",\n \"Relationship\": \"as:Relationship\",\n \"Create\": \"as:Create\",\n \"Delete\": \"as:Delete\",\n \"Dislike\": \"as:Dislike\",\n \"Document\": \"as:Document\",\n \"Event\": \"as:Event\",\n \"Follow\": \"as:Follow\",\n \"Flag\": \"as:Flag\",\n \"Group\": \"as:Group\",\n \"Ignore\": \"as:Ignore\",\n \"Image\": \"as:Image\",\n \"Invite\": \"as:Invite\",\n \"Join\": \"as:Join\",\n \"Leave\": \"as:Leave\",\n \"Like\": \"as:Like\",\n \"Link\": \"as:Link\",\n \"Mention\": \"as:Mention\",\n \"Note\": \"as:Note\",\n \"Object\": \"as:Object\",\n \"Offer\": \"as:Offer\",\n \"OrderedCollection\": \"as:OrderedCollection\",\n \"OrderedCollectionPage\": \"as:OrderedCollectionPage\",\n \"Organization\": \"as:Organization\",\n \"Page\": \"as:Page\",\n \"Person\": \"as:Person\",\n \"Place\": \"as:Place\",\n \"Profile\": \"as:Profile\",\n \"Question\": \"as:Question\",\n \"Reject\": \"as:Reject\",\n \"Remove\": \"as:Remove\",\n \"Service\": \"as:Service\",\n \"TentativeAccept\": \"as:TentativeAccept\",\n \"TentativeReject\": \"as:TentativeReject\",\n \"Tombstone\": \"as:Tombstone\",\n \"Undo\": \"as:Undo\",\n \"Update\": \"as:Update\",\n \"Video\": \"as:Video\",\n \"View\": \"as:View\",\n \"Listen\": \"as:Listen\",\n \"Read\": \"as:Read\",\n \"Move\": \"as:Move\",\n \"Travel\": \"as:Travel\",\n \"IsFollowing\": \"as:IsFollowing\",\n \"IsFollowedBy\": \"as:IsFollowedBy\",\n \"IsContact\": \"as:IsContact\",\n \"IsMember\": \"as:IsMember\",\n \"subject\": {\n \"@id\": \"as:subject\",\n \"@type\": \"@id\"\n },\n \"relationship\": {\n \"@id\": \"as:relationship\",\n \"@type\": \"@id\"\n },\n \"actor\": {\n \"@id\": \"as:actor\",\n \"@type\": \"@id\"\n },\n \"attributedTo\": {\n \"@id\": \"as:attributedTo\",\n \"@type\": \"@id\"\n },\n \"attachment\": {\n \"@id\": \"as:attachment\",\n \"@type\": \"@id\"\n },\n \"bcc\": {\n \"@id\": \"as:bcc\",\n \"@type\": \"@id\"\n },\n \"bto\": {\n \"@id\": \"as:bto\",\n \"@type\": \"@id\"\n },\n \"cc\": {\n \"@id\": \"as:cc\",\n \"@type\": \"@id\"\n },\n \"context\": {\n \"@id\": \"as:context\",\n \"@type\": \"@id\"\n },\n \"current\": {\n \"@id\": \"as:current\",\n \"@type\": \"@id\"\n },\n \"first\": {\n \"@id\": \"as:first\",\n \"@type\": \"@id\"\n },\n \"generator\": {\n \"@id\": \"as:generator\",\n \"@type\": \"@id\"\n },\n \"icon\": {\n \"@id\": \"as:icon\",\n \"@type\": \"@id\"\n },\n \"image\": {\n \"@id\": \"as:image\",\n \"@type\": \"@id\"\n },\n \"inReplyTo\": {\n \"@id\": \"as:inReplyTo\",\n \"@type\": \"@id\"\n },\n \"items\": {\n \"@id\": \"as:items\",\n \"@type\": \"@id\"\n },\n \"instrument\": {\n \"@id\": \"as:instrument\",\n \"@type\": \"@id\"\n },\n \"orderedItems\": {\n \"@id\": \"as:items\",\n \"@type\": \"@id\",\n \"@container\": \"@list\"\n },\n \"last\": {\n \"@id\": \"as:last\",\n \"@type\": \"@id\"\n },\n \"location\": {\n \"@id\": \"as:location\",\n \"@type\": \"@id\"\n },\n \"next\": {\n \"@id\": \"as:next\",\n \"@type\": \"@id\"\n },\n \"object\": {\n \"@id\": \"as:object\",\n \"@type\": \"@id\"\n },\n \"oneOf\": {\n \"@id\": \"as:oneOf\",\n \"@type\": \"@id\"\n },\n \"anyOf\": {\n \"@id\": \"as:anyOf\",\n \"@type\": \"@id\"\n },\n \"closed\": {\n \"@id\": \"as:closed\",\n \"@type\": \"xsd:dateTime\"\n },\n \"origin\": {\n \"@id\": \"as:origin\",\n \"@type\": \"@id\"\n },\n \"accuracy\": {\n \"@id\": \"as:accuracy\",\n \"@type\": \"xsd:float\"\n },\n \"prev\": {\n \"@id\": \"as:prev\",\n \"@type\": \"@id\"\n },\n \"preview\": {\n \"@id\": \"as:preview\",\n \"@type\": \"@id\"\n },\n \"replies\": {\n \"@id\": \"as:replies\",\n \"@type\": \"@id\"\n },\n \"result\": {\n \"@id\": \"as:result\",\n \"@type\": \"@id\"\n },\n \"audience\": {\n \"@id\": \"as:audience\",\n \"@type\": \"@id\"\n },\n \"partOf\": {\n \"@id\": \"as:partOf\",\n \"@type\": \"@id\"\n },\n \"tag\": {\n \"@id\": \"as:tag\",\n \"@type\": \"@id\"\n },\n \"target\": {\n \"@id\": \"as:target\",\n \"@type\": \"@id\"\n },\n \"to\": {\n \"@id\": \"as:to\",\n \"@type\": \"@id\"\n },\n \"url\": {\n \"@id\": \"as:url\",\n \"@type\": \"@id\"\n },\n \"altitude\": {\n \"@id\": \"as:altitude\",\n \"@type\": \"xsd:float\"\n },\n \"content\": \"as:content\",\n \"contentMap\": {\n \"@id\": \"as:content\",\n \"@container\": \"@language\"\n },\n \"name\": \"as:name\",\n \"nameMap\": {\n \"@id\": \"as:name\",\n \"@container\": \"@language\"\n },\n \"duration\": {\n \"@id\": \"as:duration\",\n \"@type\": \"xsd:duration\"\n },\n \"endTime\": {\n \"@id\": \"as:endTime\",\n \"@type\": \"xsd:dateTime\"\n },\n \"height\": {\n \"@id\": \"as:height\",\n \"@type\": \"xsd:nonNegativeInteger\"\n },\n \"href\": {\n \"@id\": \"as:href\",\n \"@type\": \"@id\"\n },\n \"hreflang\": \"as:hreflang\",\n \"latitude\": {\n \"@id\": \"as:latitude\",\n \"@type\": \"xsd:float\"\n },\n \"longitude\": {\n \"@id\": \"as:longitude\",\n \"@type\": \"xsd:float\"\n },\n \"mediaType\": \"as:mediaType\",\n \"published\": {\n \"@id\": \"as:published\",\n \"@type\": \"xsd:dateTime\"\n },\n \"radius\": {\n \"@id\": \"as:radius\",\n \"@type\": \"xsd:float\"\n },\n \"rel\": \"as:rel\",\n \"startIndex\": {\n \"@id\": \"as:startIndex\",\n \"@type\": \"xsd:nonNegativeInteger\"\n },\n \"startTime\": {\n \"@id\": \"as:startTime\",\n \"@type\": \"xsd:dateTime\"\n },\n \"summary\": \"as:summary\",\n \"summaryMap\": {\n \"@id\": \"as:summary\",\n \"@container\": \"@language\"\n },\n \"totalItems\": {\n \"@id\": \"as:totalItems\",\n \"@type\": \"xsd:nonNegativeInteger\"\n },\n \"units\": \"as:units\",\n \"updated\": {\n \"@id\": \"as:updated\",\n \"@type\": \"xsd:dateTime\"\n },\n \"width\": {\n \"@id\": \"as:width\",\n \"@type\": \"xsd:nonNegativeInteger\"\n },\n \"describes\": {\n \"@id\": \"as:describes\",\n \"@type\": \"@id\"\n },\n \"formerType\": {\n \"@id\": \"as:formerType\",\n \"@type\": \"@id\"\n },\n \"deleted\": {\n \"@id\": \"as:deleted\",\n \"@type\": \"xsd:dateTime\"\n },\n \"inbox\": {\n \"@id\": \"ldp:inbox\",\n \"@type\": \"@id\"\n },\n \"outbox\": {\n \"@id\": \"as:outbox\",\n \"@type\": \"@id\"\n },\n \"following\": {\n \"@id\": \"as:following\",\n \"@type\": \"@id\"\n },\n \"followers\": {\n \"@id\": \"as:followers\",\n \"@type\": \"@id\"\n },\n \"streams\": {\n \"@id\": \"as:streams\",\n \"@type\": \"@id\"\n },\n \"preferredUsername\": \"as:preferredUsername\",\n \"endpoints\": {\n \"@id\": \"as:endpoints\",\n \"@type\": \"@id\"\n },\n \"uploadMedia\": {\n \"@id\": \"as:uploadMedia\",\n \"@type\": \"@id\"\n },\n \"proxyUrl\": {\n \"@id\": \"as:proxyUrl\",\n \"@type\": \"@id\"\n },\n \"liked\": {\n \"@id\": \"as:liked\",\n \"@type\": \"@id\"\n },\n \"oauthAuthorizationEndpoint\": {\n \"@id\": \"as:oauthAuthorizationEndpoint\",\n \"@type\": \"@id\"\n },\n \"oauthTokenEndpoint\": {\n \"@id\": \"as:oauthTokenEndpoint\",\n \"@type\": \"@id\"\n },\n \"provideClientKey\": {\n \"@id\": \"as:provideClientKey\",\n \"@type\": \"@id\"\n },\n \"signClientKey\": {\n \"@id\": \"as:signClientKey\",\n \"@type\": \"@id\"\n },\n \"sharedInbox\": {\n \"@id\": \"as:sharedInbox\",\n \"@type\": \"@id\"\n },\n \"Public\": {\n \"@id\": \"as:Public\",\n \"@type\": \"@id\"\n },\n \"source\": \"as:source\",\n \"likes\": {\n \"@id\": \"as:likes\",\n \"@type\": \"@id\"\n },\n \"shares\": {\n \"@id\": \"as:shares\",\n \"@type\": \"@id\"\n }\n }\n}\n\";s:11:\"documentUrl\";s:37:\"https://www.w3.org/ns/activitystreams\";}','2018-11-18 12:34:44','2018-11-17 12:34:44'); -/*!40000 ALTER TABLE `cache` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `challenge` --- - -DROP TABLE IF EXISTS `challenge`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `challenge` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `challenge` varchar(255) NOT NULL DEFAULT '', - `dfrn-id` varchar(255) NOT NULL DEFAULT '', - `expire` int(10) unsigned NOT NULL DEFAULT '0', - `type` varchar(255) NOT NULL DEFAULT '', - `last_update` varchar(255) NOT NULL DEFAULT '', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `challenge` --- - -LOCK TABLES `challenge` WRITE; -/*!40000 ALTER TABLE `challenge` DISABLE KEYS */; -/*!40000 ALTER TABLE `challenge` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `clients` --- - -DROP TABLE IF EXISTS `clients`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `clients` ( - `client_id` varchar(20) NOT NULL, - `pw` varchar(20) NOT NULL DEFAULT '', - `redirect_uri` varchar(200) NOT NULL DEFAULT '', - `name` text, - `icon` text, - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - PRIMARY KEY (`client_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OAuth usage'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `clients` --- - -LOCK TABLES `clients` WRITE; -/*!40000 ALTER TABLE `clients` DISABLE KEYS */; -/*!40000 ALTER TABLE `clients` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `config` --- - -DROP TABLE IF EXISTS `config`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `config` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `cat` varbinary(50) NOT NULL DEFAULT '', - `k` varbinary(50) NOT NULL DEFAULT '', - `v` mediumtext, - PRIMARY KEY (`id`), - UNIQUE KEY `cat_k` (`cat`,`k`) -) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 COMMENT='main configuration storage'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `config` --- - -LOCK TABLES `config` WRITE; -/*!40000 ALTER TABLE `config` DISABLE KEYS */; -INSERT INTO `config` VALUES (1,_binary 'system',_binary 'build','1290'),(2,_binary 'system',_binary 'temppath','/tmp/'),(3,_binary 'database',_binary 'last_successful_update_function','update_1290'),(4,_binary 'database',_binary 'last_successful_update_function_time','1542457404'),(5,_binary 'system',_binary 'maintenance','0'),(6,_binary 'system',_binary 'maintenance_reason',''),(7,_binary 'system',_binary 'dbupdate','1'),(8,_binary 'database',_binary 'last_successful_update','1290'),(9,_binary 'database',_binary 'last_successful_update_time','1542457404'),(10,_binary 'system',_binary 'worker_last_cleaned','1542467401'),(11,_binary 'system',_binary 'url','http://192.168.22.10'),(12,_binary 'system',_binary 'itemcache','/tmp/itemcache'),(13,_binary 'system',_binary 'spoolpath','/tmp/spool'),(14,_binary 'system',_binary 'last_worker_execution','2018-11-17 15:10:01'),(15,_binary 'system',_binary 'last_expire_day','17'),(16,_binary 'system',_binary 'last_cron_hourly','1542466202'),(17,_binary 'system',_binary 'last_cron','1542466802'),(18,_binary 'system',_binary 'post_update_version','1281'),(19,_binary 'system',_binary 'cache_last_cleared','1542466204'),(20,_binary 'system',_binary 'disable_password_exposed','1'),(21,_binary 'system',_binary 'site_prvkey','-----BEGIN PRIVATE KEY-----\nMIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAJIdBXCjtHBRpqM3\n7is5u6I39XM6Q0l5pOAVP5MsKhlU+wYqdBld9heVBlJqhWfYz509+Kgpcmn2e/HS\nz+8yCr77FtlzzUOve1ESi1q5ZW0LWZKwepoxs9RmHIBy1eWe4kB4/53dojUlxXJP\n6iNUKHK9DYDuh8JuWty4D+YmVvmzAgMBAAECgYBiLWXuXdFsdzDFE1vRZ6WQRpGC\nr29u+3GxsBVbyp0vEE7rwbLpKJ2nEteAoVqqgKBgQ7fFJrReRuTZhJF7Y+CblypX\n2px3tjLTVc7O2NuHlgrXFk+RJLXr8lg9jbzcU77wy0YTPZMqoFIVFFZQcjjJ+T4Q\n0Mh7K9jqIrGIOFPTgQJBAMIS8ZQoeP9hDQ17FyWpkEDJleY2RTVer42D2T5Pn7GI\nlOlRGqLZFzu6YXWynNa1HvfcxIlW/sR0YrDlEGwLJ2MCQQDAvGIQ9oPXdNR31NLe\nS22hIi1KZxOAa0cS8FH4BxA7F3a3ShC1CiIObl/O03u+ZBJYho2peqQ++rIkNo+h\nWD1xAkEAjkHikO6l2tSiA7qxeer0EXlyhoBLdNaGKl52VMV60mDCfs/zjWFCNYbm\nP6cAbiXvoFJUQjPhpdGGMhKGWhxG7wJBAKxuneoBMpkre/8tl+6rWwyjMBP1vhvR\nXogSG7OkViAX8O0wxVvDEg8JLowy5u3CSCuNTeZHw/RYg9IkQkIeWPECQCrDS23z\neTzUnhRcMRCtH9YrkAIcyQpRao5lD36Q7P0zr4sepU7790B4rqUl/UzL3sm6VOG7\nDDTBvTPpj1b+/bU=\n-----END PRIVATE KEY-----\n'),(22,_binary 'system',_binary 'site_pubkey','-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCSHQVwo7RwUaajN+4rObuiN/Vz\nOkNJeaTgFT+TLCoZVPsGKnQZXfYXlQZSaoVn2M+dPfioKXJp9nvx0s/vMgq++xbZ\nc81Dr3tREotauWVtC1mSsHqaMbPUZhyActXlnuJAeP+d3aI1JcVyT+ojVChyvQ2A\n7ofCblrcuA/mJlb5swIDAQAB\n-----END PUBLIC KEY-----\n'),(23,_binary 'system',_binary 'post_update_version_1279_id','0'),(24,_binary 'system',_binary 'post_update_version_1281_id','0'); -/*!40000 ALTER TABLE `config` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `contact` --- - -DROP TABLE IF EXISTS `contact`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `contact` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Owner User id', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `self` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1 if the contact is the user him/her self', - `remote_self` tinyint(1) NOT NULL DEFAULT '0', - `rel` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'The kind of the relation between the user and the contact', - `duplex` tinyint(1) NOT NULL DEFAULT '0', - `network` char(4) NOT NULL DEFAULT '' COMMENT 'Network protocol of the contact', - `name` varchar(255) NOT NULL DEFAULT '' COMMENT 'Name that this contact is known by', - `nick` varchar(255) NOT NULL DEFAULT '' COMMENT 'Nick- and user name of the contact', - `location` varchar(255) NOT NULL DEFAULT '', - `about` text, - `keywords` text COMMENT 'public keywords (interests) of the contact', - `gender` varchar(32) NOT NULL DEFAULT '', - `xmpp` varchar(255) NOT NULL DEFAULT '', - `attag` varchar(255) NOT NULL DEFAULT '', - `avatar` varchar(255) NOT NULL DEFAULT '', - `photo` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo of the contact', - `thumb` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo (thumb size)', - `micro` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo (micro size)', - `site-pubkey` text, - `issued-id` varchar(255) NOT NULL DEFAULT '', - `dfrn-id` varchar(255) NOT NULL DEFAULT '', - `url` varchar(255) NOT NULL DEFAULT '', - `nurl` varchar(255) NOT NULL DEFAULT '', - `addr` varchar(255) NOT NULL DEFAULT '', - `alias` varchar(255) NOT NULL DEFAULT '', - `pubkey` text COMMENT 'RSA public key 4096 bit', - `prvkey` text COMMENT 'RSA private key 4096 bit', - `batch` varchar(255) NOT NULL DEFAULT '', - `request` varchar(255) DEFAULT NULL, - `notify` varchar(255) DEFAULT NULL, - `poll` varchar(255) DEFAULT NULL, - `confirm` varchar(255) DEFAULT NULL, - `poco` varchar(255) DEFAULT NULL, - `aes_allow` tinyint(1) NOT NULL DEFAULT '0', - `ret-aes` tinyint(1) NOT NULL DEFAULT '0', - `usehub` tinyint(1) NOT NULL DEFAULT '0', - `subhub` tinyint(1) NOT NULL DEFAULT '0', - `hub-verify` varchar(255) NOT NULL DEFAULT '', - `last-update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of the last try to update the contact info', - `success_update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of the last successful contact update', - `failure_update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of the last failed update', - `name-date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `uri-date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `avatar-date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `term-date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `last-item` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'date of the last post', - `priority` tinyint(3) unsigned NOT NULL DEFAULT '0', - `blocked` tinyint(1) NOT NULL DEFAULT '1', - `readonly` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'posts of the contact are readonly', - `writable` tinyint(1) NOT NULL DEFAULT '0', - `forum` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'contact is a forum', - `prv` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'contact is a private group', - `contact-type` tinyint(4) NOT NULL DEFAULT '0', - `hidden` tinyint(1) NOT NULL DEFAULT '0', - `archive` tinyint(1) NOT NULL DEFAULT '0', - `pending` tinyint(1) NOT NULL DEFAULT '1', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Contact has been deleted', - `rating` tinyint(4) NOT NULL DEFAULT '0', - `reason` text, - `closeness` tinyint(3) unsigned NOT NULL DEFAULT '99', - `info` mediumtext, - `profile-id` int(10) unsigned NOT NULL DEFAULT '0', - `bdyear` varchar(4) NOT NULL DEFAULT '', - `bd` date NOT NULL DEFAULT '0001-01-01', - `notify_new_posts` tinyint(1) NOT NULL DEFAULT '0', - `fetch_further_information` tinyint(3) unsigned NOT NULL DEFAULT '0', - `ffi_keyword_denylist` text, - PRIMARY KEY (`id`), - KEY `uid_name` (`uid`,`name`(190)), - KEY `self_uid` (`self`,`uid`), - KEY `alias_uid` (`alias`(32),`uid`), - KEY `pending_uid` (`pending`,`uid`), - KEY `blocked_uid` (`blocked`,`uid`), - KEY `uid_rel_network_poll` (`uid`,`rel`,`network`,`poll`(64),`archive`), - KEY `uid_network_batch` (`uid`,`network`,`batch`(64)), - KEY `addr_uid` (`addr`(32),`uid`), - KEY `nurl_uid` (`nurl`(32),`uid`), - KEY `nick_uid` (`nick`(32),`uid`), - KEY `dfrn-id` (`dfrn-id`(64)), - KEY `issued-id` (`issued-id`(64)) -) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4 COMMENT='contact table'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `contact` --- - -LOCK TABLES `contact` WRITE; -/*!40000 ALTER TABLE `contact` DISABLE KEYS */; -INSERT INTO `contact` VALUES (1,1,'2018-11-17 12:31:27',1,0,0,0,'','admin','admin','','',NULL,'','','','http://192.168.22.10/photo/profile/1.jpg','http://192.168.22.10/photo/59483894715bf00a1f6a24a891914929-4.jpg?ts=1542457887','http://192.168.22.10/photo/59483894715bf00a1f6a24a891914929-5.jpg?ts=1542457887','http://192.168.22.10/photo/59483894715bf00a1f6a24a891914929-6.jpg?ts=1542457887',NULL,'','','http://192.168.22.10/profile/admin','http://192.168.22.10/profile/admin','admin@192.168.22.10','',NULL,NULL,'','http://192.168.22.10/dfrn_request/admin','http://192.168.22.10/dfrn_notify/admin','http://192.168.22.10/dfrn_poll/admin','http://192.168.22.10/dfrn_confirm/admin','http://192.168.22.10/poco/admin',0,0,0,0,'','0001-01-01 00:00:00','0001-01-01 00:00:00','0001-01-01 00:00:00','2018-11-17 12:34:42','2018-11-17 12:31:27','2018-11-17 12:31:27','0001-01-01 00:00:00','0001-01-01 00:00:00',0,0,0,0,0,0,0,0,0,0,0,0,NULL,0,NULL,0,'','0001-01-01',0,0,NULL),(2,0,'2018-11-17 12:34:21',0,0,2,0,'dfrn','admin','admin','','',NULL,'','','','http://192.168.22.10/photo/profile/1.jpg','http://192.168.22.10/photo/52226322615bf00acd9acbf086558812-4.jpg?ts=1542459003','http://192.168.22.10/photo/52226322615bf00acd9acbf086558812-5.jpg?ts=1542459003','http://192.168.22.10/photo/52226322615bf00acd9acbf086558812-6.jpg?ts=1542459003',NULL,'','','http://192.168.22.10/profile/admin','http://192.168.22.10/profile/admin','admin@192.168.22.10','http://192.168.22.10/~admin','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyYmalhhmPJg0qwLjbeoL\nKgykA6idu8HtZkKWPpXZHHD9J0InLId7Ht3G9dSBIBbHpWhaoFHkI06PRaqiT3sY\n4yXPBWDuhnIzzbV5VbxXShzRCe0LzBMhvusf/74sQkqH64g7xsaSBipHHaUEa7yD\nv+xCoGtoSOcqGEBzesSH//sIl94IrkkN+/grb1ZSFFjQYWMLMWMD7Py/awcqOtCB\nJ6NnmcBVMK5CxyV+YN+C+dhUsf+LjvH7WE0uigvTlMG+lGfXHxl4/en8bcAQ/GEr\n1xfbDJuknxr+ckGFZeHtj6Noz1IRD7y+7rlTgbZTmOrCJKg38Br2m3tMGGhIU3t7\nSmrKn8qqf9HuyR83+7Cu+t8x24LuhTjGW2Z6KE5TqYacMu+to58MFH8lDOnoOxHA\nGWpi9kYPXSbO9mLwDNF3pue3bLusvGQnns9h38w8m1Q25nivKKvgVbOrdNaB6wUy\nFIDcqjlZOVIyZ24QWZck77Em/cCkEf1c9kV4f1VjwmyQ4apSPf6q92AHcBlbv7yI\nFhVbGMhEaMIT7PQgxi2F48YInnlNjQlk3yHv3sdjlYJvcHHlf2PsMXlRb1CzrFRf\nX6Uv7e1obwy+SsywkAq+sT4tfsPEw2mIL56cXw0licP2hjOIgzYD1xi8pZx3xsQP\nTjdpqBmCKfnzs+TCZIbXIQ8CAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/admin','http://192.168.22.10/dfrn_notify/admin','http://192.168.22.10/dfrn_poll/admin','http://192.168.22.10/dfrn_confirm/admin','http://192.168.22.10/poco/admin',0,0,0,0,'','0001-01-01 00:00:00','2018-11-17 12:34:45','0001-01-01 00:00:00','2018-11-17 12:34:45','2018-11-17 12:34:45','2018-11-17 12:50:03','0001-01-01 00:00:00','0001-01-01 00:00:00',0,0,0,1,0,0,-1,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(3,0,'2018-11-17 12:34:43',0,0,1,0,'dfrn','relay','relay','',NULL,NULL,'','','','','','','',NULL,'','','http://192.168.22.10','http://192.168.22.10','','',NULL,NULL,'http://192.168.22.10/dfrn_notify',NULL,NULL,NULL,NULL,NULL,0,0,0,0,'','0001-01-01 00:00:00','0001-01-01 00:00:00','0001-01-01 00:00:00','0001-01-01 00:00:00','0001-01-01 00:00:00','0001-01-01 00:00:00','0001-01-01 00:00:00','0001-01-01 00:00:00',0,0,0,1,0,0,4,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(4,2,'2018-11-17 12:39:46',1,0,0,0,'','friendica1','friendica1','','',NULL,'','','','http://192.168.22.10/photo/profile/2.jpg','http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-5.jpg?ts=1542459007','http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-6.jpg?ts=1542459007',NULL,'','','http://192.168.22.10/profile/friendica1','http://192.168.22.10/profile/friendica1','friendica1@192.168.22.10','',NULL,NULL,'','http://192.168.22.10/dfrn_request/friendica1','http://192.168.22.10/dfrn_notify/friendica1','http://192.168.22.10/dfrn_poll/friendica1','http://192.168.22.10/dfrn_confirm/friendica1','http://192.168.22.10/poco/friendica1',0,0,0,0,'','0001-01-01 00:00:00','2018-11-17 14:02:14','0001-01-01 00:00:00','2018-11-17 12:39:46','2018-11-17 12:39:46','2018-11-17 12:50:07','0001-01-01 00:00:00','2018-11-17 14:02:14',0,0,0,0,0,0,0,0,0,0,0,0,NULL,0,NULL,0,'','0001-01-01',0,0,NULL),(5,3,'2018-11-17 12:40:07',1,0,0,0,'','friendica2','friendica2','','',NULL,'','','','http://192.168.22.10/photo/profile/3.jpg','http://192.168.22.10/photo/15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','http://192.168.22.10/photo/15820583805bf00e7fd7909940374120-5.jpg?ts=1542459007','http://192.168.22.10/photo/15820583805bf00e7fd7909940374120-6.jpg?ts=1542459007',NULL,'','','http://192.168.22.10/profile/friendica2','http://192.168.22.10/profile/friendica2','friendica2@192.168.22.10','',NULL,NULL,'','http://192.168.22.10/dfrn_request/friendica2','http://192.168.22.10/dfrn_notify/friendica2','http://192.168.22.10/dfrn_poll/friendica2','http://192.168.22.10/dfrn_confirm/friendica2','http://192.168.22.10/poco/friendica2',0,0,0,0,'','0001-01-01 00:00:00','2018-11-17 14:00:04','0001-01-01 00:00:00','2018-11-17 12:40:07','2018-11-17 12:40:07','2018-11-17 12:50:07','0001-01-01 00:00:00','2018-11-17 14:00:04',0,0,0,0,0,0,0,0,0,0,0,0,NULL,0,NULL,0,'','0001-01-01',0,0,NULL),(6,4,'2018-11-17 12:40:28',1,0,0,0,'','friendica3','friendica3','','',NULL,'','','','http://192.168.22.10/photo/profile/4.jpg','http://192.168.22.10/photo/12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','http://192.168.22.10/photo/12242958235bf00e8006f72987476580-5.jpg?ts=1542459008','http://192.168.22.10/photo/12242958235bf00e8006f72987476580-6.jpg?ts=1542459008',NULL,'','','http://192.168.22.10/profile/friendica3','http://192.168.22.10/profile/friendica3','friendica3@192.168.22.10','',NULL,NULL,'','http://192.168.22.10/dfrn_request/friendica3','http://192.168.22.10/dfrn_notify/friendica3','http://192.168.22.10/dfrn_poll/friendica3','http://192.168.22.10/dfrn_confirm/friendica3','http://192.168.22.10/poco/friendica3',0,0,0,0,'','0001-01-01 00:00:00','0001-01-01 00:00:00','0001-01-01 00:00:00','2018-11-17 12:40:28','2018-11-17 12:40:28','2018-11-17 12:50:08','0001-01-01 00:00:00','0001-01-01 00:00:00',0,0,0,0,0,0,0,0,0,0,0,0,NULL,0,NULL,0,'','0001-01-01',0,0,NULL),(7,5,'2018-11-17 12:41:59',1,0,0,0,'','friendica4','friendica4','','',NULL,'','','','http://192.168.22.10/photo/profile/5.jpg','http://192.168.22.10/photo/97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','http://192.168.22.10/photo/97971161215bf00e801fdd7464746900-5.jpg?ts=1542459008','http://192.168.22.10/photo/97971161215bf00e801fdd7464746900-6.jpg?ts=1542459008',NULL,'','','http://192.168.22.10/profile/friendica4','http://192.168.22.10/profile/friendica4','friendica4@192.168.22.10','',NULL,NULL,'','http://192.168.22.10/dfrn_request/friendica4','http://192.168.22.10/dfrn_notify/friendica4','http://192.168.22.10/dfrn_poll/friendica4','http://192.168.22.10/dfrn_confirm/friendica4','http://192.168.22.10/poco/friendica4',0,0,0,0,'','0001-01-01 00:00:00','2018-11-17 14:02:58','0001-01-01 00:00:00','2018-11-17 12:41:59','2018-11-17 12:41:59','2018-11-17 12:50:08','0001-01-01 00:00:00','2018-11-17 14:02:58',0,0,0,0,0,0,0,0,0,0,0,0,NULL,0,NULL,0,'','0001-01-01',0,0,NULL),(8,6,'2018-11-17 12:42:25',1,0,0,0,'','friendica5','friendica5','','',NULL,'','','','http://192.168.22.10/photo/profile/6.jpg','http://192.168.22.10/photo/63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','http://192.168.22.10/photo/63436871415bf00e80dfe9c308856934-5.jpg?ts=1542459008','http://192.168.22.10/photo/63436871415bf00e80dfe9c308856934-6.jpg?ts=1542459008',NULL,'','','http://192.168.22.10/profile/friendica5','http://192.168.22.10/profile/friendica5','friendica5@192.168.22.10','',NULL,NULL,'','http://192.168.22.10/dfrn_request/friendica5','http://192.168.22.10/dfrn_notify/friendica5','http://192.168.22.10/dfrn_poll/friendica5','http://192.168.22.10/dfrn_confirm/friendica5','http://192.168.22.10/poco/friendica5',0,0,0,0,'','0001-01-01 00:00:00','0001-01-01 00:00:00','0001-01-01 00:00:00','2018-11-17 12:42:25','2018-11-17 12:42:25','2018-11-17 12:50:08','0001-01-01 00:00:00','0001-01-01 00:00:00',0,0,0,0,0,0,0,0,0,0,0,0,NULL,0,NULL,0,'','0001-01-01',0,0,NULL),(9,0,'2018-11-17 12:50:07',0,0,2,0,'dfrn','friendica2','friendica2','','',NULL,'','','','http://192.168.22.10/photo/15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','http://192.168.22.10/photo/53312796025bf00e7f82e82896954942-4.jpg?ts=1542462605','http://192.168.22.10/photo/53312796025bf00e7f82e82896954942-5.jpg?ts=1542462605','http://192.168.22.10/photo/53312796025bf00e7f82e82896954942-6.jpg?ts=1542462605',NULL,'','','http://192.168.22.10/profile/friendica2','http://192.168.22.10/profile/friendica2','friendica2@192.168.22.10','http://192.168.22.10/~friendica2','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwMWwwjqXtfQmCzLQmZ+D\ntRVdtv1Vq6DdjC/+aEP3UKLpp0nzNcsfT3U8Kejs23o0KpC+EVFXuWZqvxyeHoiZ\n+w9i1roJf2eSLBVeAjiEmLbI7wSfLBu+iA1x+X6+d9wxxAgzM7KHIBOghVCDussz\n4AaojP4Dx3Egsl1w+1j/ULUNCvf1wq9KLMMgJlnemC4cHfv+ObcxdisPezjVD9sg\nnvRLKyv6i8gm8csDwaHtHP6VNxc0JnauU6GIxBrDmlnpKYGb3rl3WLSvuiyzJYrr\nzKESnFINFKRLCG3m548OK+reRBDmgYbsZFJ57FS6YTa63268IwwtlRbRs8n8N7Mi\nO0jAXhRyZKRim6lkykIUjwlmIKfS2xl38k1kg5VLfPwZYAhiG6+JMcBlyj7hKU+4\nN9FKKfLlxtRz/g2kh81eHWEOXblEohpR/GbAhMF8h/tkHM+ze2TAbyEK1A+UWlWZ\n3olMRdt/awlAd657XqGVukYUg++GdEGkVyeWcCV3CwscbhiFAqpV/TWh6yARultJ\nvij/UQWi27yFY1v4EAactGL/V+zrmQSduKGd7jpHJe2XVS4DGuw+ThiDQc8gamlG\ndmZcPkVxChFqGpxGKXOr8uFWbYUG4Cj3iA4iV8XOlGUIN8uFtbWX/VyVHGNGDmGg\n60osshOegUJTNz8OBkZspvsCAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/friendica2','http://192.168.22.10/dfrn_notify/friendica2','http://192.168.22.10/dfrn_poll/friendica2','http://192.168.22.10/dfrn_confirm/friendica2','http://192.168.22.10/poco/friendica2',0,0,0,0,'','2018-11-17 13:50:05','2018-11-17 14:00:04','0001-01-01 00:00:00','2018-11-17 12:50:07','2018-11-17 12:50:07','2018-11-17 13:50:05','0001-01-01 00:00:00','2018-11-17 14:00:04',0,0,0,1,0,0,-1,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(10,0,'2018-11-17 12:50:07',0,0,2,0,'dfrn','friendica1','friendica1','','',NULL,'','','','http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','http://192.168.22.10/photo/95550517915bf00e7f84cd7979805449-4.jpg?ts=1542462606','http://192.168.22.10/photo/95550517915bf00e7f84cd7979805449-5.jpg?ts=1542462606','http://192.168.22.10/photo/95550517915bf00e7f84cd7979805449-6.jpg?ts=1542462606',NULL,'','','http://192.168.22.10/profile/friendica1','http://192.168.22.10/profile/friendica1','friendica1@192.168.22.10','http://192.168.22.10/~friendica1','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmQR1Wmtv2KMZ5f5NTJMf\nRfX+1KXfhCKZaDgtL8/Trtb1ZXLq0tlBVhm29MI1F6cxZFhNlFyW6GZCeZFKX3FP\n2pFw03sEBTo5PCLso18EEl9kXV9cXoBMzINI3jIGnJiawq9PfIw5142jFBLOxiDS\nc/iNG6iFbq2qHwiQJjtp61BCFivIMZaHXqvtroakggjBH3EbRx+rZfeqjB8MRqOc\npXIqjc0lrHk8QGdXeuUAWsL2qUqHVNekLBXPnRcdMT8BxUmtBj0ccZ1IICLPFEzK\nr6DtqH5kE+aq9IcoMIEDjUhnyOAvFda8TlxX8D5SMFbrfJZDTypDqXHnSxHUS0Rd\nX06tLJZxMgqHspkxp6nzxk7JGPHKQmU6N0uqQb+i7dFlgC8QRLi79a1x019dvpAN\nRwbhGnn/pEU9Kn1JbYTAI6irBnHnlAUkpxmwSzRx5ncbNbhbniMD2/39IV1mztUh\nAyc262/cRRJAu8pEsPvc/pSijIyfrxJGYqF/uUcS5gbrY+wCjpYaBdzFxQEcD1Aq\nvXQGxi3sMRY9b1FJ+f3UTB7D9kIBCbwUNOXCjDCrOKZN6nxPLpKnfFsneHleUHa0\n+MRzI/vX78jQ1P4KgxPIiSktfrZitBpyzCC5O4ytiwqF2E8Ei0zE6OL2gm8yv7tB\n00ewnSBHzIpdnS51XuxxmIsCAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/friendica1','http://192.168.22.10/dfrn_notify/friendica1','http://192.168.22.10/dfrn_poll/friendica1','http://192.168.22.10/dfrn_confirm/friendica1','http://192.168.22.10/poco/friendica1',0,0,0,0,'','2018-11-17 13:50:06','2018-11-17 14:03:08','0001-01-01 00:00:00','2018-11-17 12:50:07','2018-11-17 12:50:07','2018-11-17 13:50:06','0001-01-01 00:00:00','2018-11-17 14:03:08',0,0,0,1,0,0,-1,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(11,0,'2018-11-17 12:50:07',0,0,2,0,'dfrn','friendica4','friendica4','','',NULL,'','','','http://192.168.22.10/photo/97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','http://192.168.22.10/photo/11822615065bf00e7fab8ba088168210-4.jpg?ts=1542462606','http://192.168.22.10/photo/11822615065bf00e7fab8ba088168210-5.jpg?ts=1542462606','http://192.168.22.10/photo/11822615065bf00e7fab8ba088168210-6.jpg?ts=1542462606',NULL,'','','http://192.168.22.10/profile/friendica4','http://192.168.22.10/profile/friendica4','friendica4@192.168.22.10','http://192.168.22.10/~friendica4','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtOfQNRnGbzBy9Rc7gLAI\nrB5Fp2SBFfjRnd5g99HKWI3Amz5BXdcOWsgikVtwSVGDD8TGPj56qIlp+ctfYkPZ\nn5QSGfA3VS5eqWNfE9aG3XZAO7M7x2pKVaf79ciuYK0HQrmCeClB844x8rXDmW5m\n1k6Any22lpXHdDY8heR6O/uLIG9i/eRiD8tFMY3ATVkJ4MF5TY/m0ZGhHAMfK9dm\nkJzNvJc0cYe6kBmpDDmlJwObo75NfPBi3bqTaIZvTxda6lgWcuv/J1IR0fLhW8IJ\nbbXcd/fSNHV5zdqPmZsiu4+nx1xf+40J1v9+uKCCxH6UlUR9HLcCpYH6PDmoEkRk\n2WVPsU2+crVbY5cbNx08LVe6ZGl/onhTM35t2JBpo9ClgTSmpgEkRQsBebWNEKn3\n/y7Ib+/IywdomRUTgXVtKt5+90FdEhNwrba2CyD3dFW/CQCwx+363juCZr16EiKx\nbG5VJ1aIN8/My9feB9fklqyCpy0vkMI9NptQbtKntueETeLTqKlZ5uJJZJtd6S7z\nrTAd6vx5WLOMYlfQF2K7MVCwYUVfcIoWKxAg3SU+5sIG+cSrreT67wxt6k6sEEOw\npRZn3qZ13vPpO1mJelhqQeDZYutywYHjNj+L5TjCIZqIS129MZbqDJELkjTmckRV\nAZmzTHqCDXwd70IddYvuuJMCAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/friendica4','http://192.168.22.10/dfrn_notify/friendica4','http://192.168.22.10/dfrn_poll/friendica4','http://192.168.22.10/dfrn_confirm/friendica4','http://192.168.22.10/poco/friendica4',0,0,0,0,'','2018-11-17 13:50:06','2018-11-17 14:03:08','0001-01-01 00:00:00','2018-11-17 12:50:08','2018-11-17 12:50:08','2018-11-17 13:50:06','0001-01-01 00:00:00','2018-11-17 14:03:08',0,0,0,1,0,0,-1,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(12,0,'2018-11-17 12:50:07',0,0,2,0,'dfrn','friendica3','friendica3','','',NULL,'','','','http://192.168.22.10/photo/12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','http://192.168.22.10/photo/73148550885bf00e7fb1447228602212-4.jpg?ts=1542462605','http://192.168.22.10/photo/73148550885bf00e7fb1447228602212-5.jpg?ts=1542462605','http://192.168.22.10/photo/73148550885bf00e7fb1447228602212-6.jpg?ts=1542462605',NULL,'','','http://192.168.22.10/profile/friendica3','http://192.168.22.10/profile/friendica3','friendica3@192.168.22.10','http://192.168.22.10/~friendica3','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvAs4TR4AI+nlBt8d7BHD\nViq6w3UslHqURRUo0+sfAE5RL45im2z+ryPag1K5dbs5pcoa6hfk9+EREgoWlwnX\nX/8UdkvkoHE6/JDFimuaK7pequwUQbQoOXkkBAyPtN8YhjfGM19CI5FIVByY+O8p\nO/lGls1h5bxYEIgjA0tTDw5FuhPtiw9SJAPtQs5Gueoe9y7VwXNLNenKI6r6/Kfo\nzgYKJS98ibCllMiDIY0ixZZqhsh5+oEAsGPaNtQSgw09fWyyDNUKOenC4NhhMWsY\nBtTgDOPkM1AgidQKny7wtfo04YCn13SZuU6cWXqCx2pTgxLpBRgNbfkf6/DerVEO\nh2/Fxx2oMrRqLox+kAj03zrKnto3n5cYASlmfeEmUBHtjc/qPbuEzm+FEJKTXkrg\njt0+xzTQxPr+oFMinACdTMu6J4lB6dGCJxbx/Dx6FcRKymUYGdLvZWITfKZAikRh\nX8Pll3bFExOk5ieOdBLRt5ujGHuMbV204qpUsL0kDU9/4aMnpJei4EZuw21ovDH1\nVchVjJS4fzsJkaDfA81+83ADHXU10+UJ7PXAq7U416nC/dr30Gp2cxYb1qELYe4W\nGXE9k857z1o3BevJi4smy0FeydVVEVJ/1SPhPcdKHIA6sfP+TzuvWk7zK+xDwdyb\no4/nVNHD26NC1mVTTAjR7t0CAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/friendica3','http://192.168.22.10/dfrn_notify/friendica3','http://192.168.22.10/dfrn_poll/friendica3','http://192.168.22.10/dfrn_confirm/friendica3','http://192.168.22.10/poco/friendica3',0,0,0,0,'','2018-11-17 13:50:05','2018-11-17 13:50:05','0001-01-01 00:00:00','2018-11-17 12:50:08','2018-11-17 12:50:08','2018-11-17 13:50:05','0001-01-01 00:00:00','0001-01-01 00:00:00',0,0,0,1,0,0,-1,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(13,0,'2018-11-17 12:50:08',0,0,2,0,'dfrn','friendica5','friendica5','','',NULL,'','','','http://192.168.22.10/photo/63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','http://192.168.22.10/photo/14369303895bf00e80b1e28207310424-4.jpg?ts=1542462606','http://192.168.22.10/photo/14369303895bf00e80b1e28207310424-5.jpg?ts=1542462606','http://192.168.22.10/photo/14369303895bf00e80b1e28207310424-6.jpg?ts=1542462606',NULL,'','','http://192.168.22.10/profile/friendica5','http://192.168.22.10/profile/friendica5','friendica5@192.168.22.10','http://192.168.22.10/~friendica5','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzbQgk0okIu48OTsuvI/j\nnTYfKREWuHx0Rkr/44zKv9NGOJItxb82OoK/59o4l2mkt3REOwEzsSeAUe8VjkFU\nnfmjTTg8GqDCQ07Bmux1lVdtyAIhqr3uMraS8bODUMRFnDSX39rYYUH+h7oBZ44k\nW2vGvnWKh8BYPmV+hAab8TuJBODrZy1z5A1lc9CSSoZCiEOSvO5tGgiTBWW/CUoC\n6jR/BqZy/jlbiuED/t1Hn8dKCyPkAUppFhVJgSiSaysLeQlGsw58QYvD4WJXWbGh\nOzBDyR5hmSPuRuCxWD0GkpCnZGtkLhrJHAhYysAvqlc6Oo+6leRuLq2S05cZI1cL\nwsjapgnIvPCSIm7OkFlEimqveMNTOKNbcyIHaq8kL3ZyUYWuygVndL9AdUhIEAkE\nOROFlAyv0fC0tbBhnsJ/SifvEGYOaO4eRB1mvvY2R+JU4gPXLWbeNSNrn4zpTdIL\n0pwDJvLAv+tgeheBz6fNyKqETeclMEuo+GUs3nB8zeO2ZJXwzAgqMt5/Vr27v8d7\nk+Cer7ydUT8QTlsRGTAjaWicDFPLlH9v2v15JEaDqjtIJ9kUdAaj+BnR3+j1x86g\nSrJa5SV4kdu/hduRtIfnhKTpu/ZnxhQzkWuu6gWtjCpLzTuaHybnh69rSz7CKoFU\nXnqm6IVFII/ny2a7I1KrMFECAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/friendica5','http://192.168.22.10/dfrn_notify/friendica5','http://192.168.22.10/dfrn_poll/friendica5','http://192.168.22.10/dfrn_confirm/friendica5','http://192.168.22.10/poco/friendica5',0,0,0,0,'','2018-11-17 13:50:06','2018-11-17 13:50:06','0001-01-01 00:00:00','2018-11-17 12:50:08','2018-11-17 12:50:08','2018-11-17 13:50:06','0001-01-01 00:00:00','0001-01-01 00:00:00',0,0,0,1,0,0,-1,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(14,3,'2018-11-17 13:41:24',0,0,3,1,'dfrn','friendica1','friendica1','',NULL,NULL,'','','','http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','http://192.168.22.10/photo/21202845355bf01a84c5d33470288998-4.jpg?ts=1542462605','http://192.168.22.10/photo/21202845355bf01a84c5d33470288998-5.jpg?ts=1542462605','http://192.168.22.10/photo/21202845355bf01a84c5d33470288998-6.jpg?ts=1542462605','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmQR1Wmtv2KMZ5f5NTJMf\nRfX+1KXfhCKZaDgtL8/Trtb1ZXLq0tlBVhm29MI1F6cxZFhNlFyW6GZCeZFKX3FP\n2pFw03sEBTo5PCLso18EEl9kXV9cXoBMzINI3jIGnJiawq9PfIw5142jFBLOxiDS\nc/iNG6iFbq2qHwiQJjtp61BCFivIMZaHXqvtroakggjBH3EbRx+rZfeqjB8MRqOc\npXIqjc0lrHk8QGdXeuUAWsL2qUqHVNekLBXPnRcdMT8BxUmtBj0ccZ1IICLPFEzK\nr6DtqH5kE+aq9IcoMIEDjUhnyOAvFda8TlxX8D5SMFbrfJZDTypDqXHnSxHUS0Rd\nX06tLJZxMgqHspkxp6nzxk7JGPHKQmU6N0uqQb+i7dFlgC8QRLi79a1x019dvpAN\nRwbhGnn/pEU9Kn1JbYTAI6irBnHnlAUkpxmwSzRx5ncbNbhbniMD2/39IV1mztUh\nAyc262/cRRJAu8pEsPvc/pSijIyfrxJGYqF/uUcS5gbrY+wCjpYaBdzFxQEcD1Aq\nvXQGxi3sMRY9b1FJ+f3UTB7D9kIBCbwUNOXCjDCrOKZN6nxPLpKnfFsneHleUHa0\n+MRzI/vX78jQ1P4KgxPIiSktfrZitBpyzCC5O4ytiwqF2E8Ei0zE6OL2gm8yv7tB\n00ewnSBHzIpdnS51XuxxmIsCAwEAAQ==\n-----END PUBLIC KEY-----\n','ce98c64de523350b56ee2d3e87a26aaf629a05ac414e1904bca31d58887a7a33','','http://192.168.22.10/profile/friendica1','http://192.168.22.10/profile/friendica1','friendica1@192.168.22.10','http://192.168.22.10/~friendica1',NULL,'-----BEGIN PRIVATE KEY-----\nMIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDuiykPrT/50Xyo\nm7tmXD0wA1uFK7NiRJLcDJzvSJQLOisVCULCmgN1v0/SMyxKHmunj4FNMH57Pg6f\n2rkdwobTzIzJUFP/a5XUcuY49uc369bgbUur8fTdscG/5iL9+ouClTLUAmt1Yn+3\niru8WzSZzDBScT4R6oRvXC0wFlJrjtlr8xSgD50U0TSxcmmD7VIjHGWaUM7Kdygf\ng/pTGtnDml94MVNYMnXoa3fChXQRrJ/XqLg+HUUbatiDJDH1spKzP3imsQ4FKxNa\n9gy7YJMBkmDoFs7A0RxJR4FoGMrBya1DIWV4HeTpF3mPra1Rnzt0UyPNwMejoCWE\n7L7h0SMDx6pdg4yYu7/xeCywkm0WzMPF9mgvK8ngACeOEbRusiE3EcRu556hQwqT\no5m/aJzKcJbvLrxIL+WaaEQq+cqQoNGPcNHuSXmw7K7cd3+rUy/fHSti535wTBNz\nGjlglWVhmb5PI5Z9kEI57pX652t1Sx9rV3CUaC+pmLDNWI/yoHRk5lqB41Iie3r8\nBtDAY5iFfkXFILCQz+x/MyR9xridci37KLpsoz6bBbmbvuk66uZRfp4hIvdg/bCC\nMoqIjIBjNT26Hw01fFSeij+OBJThSYvucwhuDRtWKpRaSY6NyS0cbTAiKQ8M14f4\n2i7yQY8cogAayfjD2SXinG1uRi054QIDAQABAoICAC77ob7AtNUTeaYL5kEm8bY/\nMwtrrA0yzGoi4dYPSXlcn5epF0kU5JGQeLxB7/s5OqLqFOGLJ55GfsLlZYiDA+M7\nao9MDv9DxWLuroGRv8C35r6VSE45fa0ckbimL0YuzsONd1FimJ+qItWXsZpLrHSO\nTwYt37fPpP35/bx26QzeOdyVJ/7OlHXBLsu0aSve1kqsESbvu4sNJQ3wBKHRrApm\noV8e9/drGOYKJLBfcJj6kxD63i79vNrFlJdfzadC4LoFSlIqlURXU5ya0a8mOk4Y\n8pVDyL0ZcqTMPKSwHV9FxaZvMXkTCj8OrJar8nMdFay3o1mnGqsTo9AmgQIhGvAG\nQMQDjdztd51lizRb4nepBG0BfbJ6qip85U+o8Bjjj4zU/f0QyozEStG71k8olz/F\nPcKUePjPD8Lqyg3uXJnV6PIEKJNyvANWgEVYttbgKOEN8JpQmmZJONoyhpH3EDl+\nJH72FUQLx/dZRqpmMD6X5tAd1hoab90XQeUQNHq6tHypaWatWJr+dX9mEm3tx9ep\nbLuy+ALXBjU0AqU0mihuj3OUMpz1ZlFG9AdVf757iFol8JsSy6JVU81NMc5L3Eqa\nBWD+RjsoKOlxOAIkTJlkh0WF0DvngPHfd6PQBMgejXZrcj/L74uSa9kWTm08ejM1\n3V86+xiGeo+2d9TENEhBAoIBAQD/rN7NzCiVWtOB7ZmX6Lu71ubtKUaXiotnURSg\nJGxM/Z7xfrV4sZuh0Lt+91IkhDVVPim8GslTNZDWzfIMBwNr4h2CQn5N2x2OtX27\nXyBYXtzGl0F0AyBRSa6w97AurB9F4c1JusV1nzjy23MF+fwEMo45Fx7GrAuKUrHJ\n/FhDwLT3ugOQKdnJqoDmrDf1XYclhg8QorseW1lX8hyUisTt3DvewTTcMaSgwEa3\nr+oO/j3fy0rZhf3bXK6TcDutRVm94te4tQo6rpnGDu08WhSyOQZK8wPDv61R1ZdC\nRW349oAWuO5/oEKuigGtN7ERSgCqcBuFIuUgyDJPpkP9aFS9AoIBAQDu2LhMNGjx\ntWwUYVKnPjyItn1XkiCAAVmxWt3AlKdUjNu0fENVjDUr+8R+6XKaXCo9HHvI30TK\nlsVfYoi6JhOLCIPWta6/Qm6B/3tGPPOOsZHzOUrCKdyj8Cy+SKkSCNETZ8o6js43\nbvrt9uhoupnhCWwjipD9Qrv7MJDEGBs2FVsXC23toNwcB0L3znWLtNEaYxwqy1Hd\nftFniSSugLnNOfwkfGhoL39fjbbkVjFMvOMu6aoIQj4RTu9yYMGIyciHJGddZTrq\nnxXHuybslo0arqbYjzulNMKe9mMLjsYag8e2rjFlsow+Q6CpmpsDOKkYUILKx1y+\nz1N2b4Ud/TX1AoIBAQC3w4hgYlzI/H8I472BccV9PPi9fO0//lQz7hLlB0jQDXow\nGOJV3VH+/AfHOfvQQzYSDpvwl1AcfmOcAGn4OxI6eEq9VQ1y6ApWiBvWkIiu+3+z\nPQPOXnDb/BmTGHOJGC1iDOmAFL3XzJkh9Ji3svVwDuYqInP8V6vzv3wJsVW/XMK1\nSv1EoM/oIqSDJ0URFigM0E4DpvLW3tFYZKwmF5dzXtepQzS7DvNElu49GDMik5nl\nQDiMH8JV6EeRsRkzcKUP1fs2xuiTROtBb3kT56r4bgQX2pLaHupz5xDQkRZ52rI1\norXJBWboDEkoNt8NjiLsXadqCaql5T5EATzc5iABAoIBAQCKJJzLrpB4JHdjfjrA\n8lUuuWXbjW/wuVc4JhcV+KSjWWkFhc2oIBTs4Ixw3vLi5qWjfOL3dnMiPXvgxGvS\nRo2NH5qpR6HPi0vBMpQJNt2jzX5dz+g2TuIHi7VFRV9MR/8tGx2zKr+I/k5x7hnT\n4QF5T+rUz6M2aC+zhA5m7I5ohIeP15N4Gk7UgzqveyEvcaBzg5laAwjRdDUHjiHC\nMD/GvF/idnYotDgWey+p91RCTwmTK6ClcDLX7fC+Fco6JIMv7tU+BnvCEcsWH1/O\n/PCV2ygzHvzfe5mJOXZly+k2krujJDL73/4PUSwOjJZVkaLzpjVPtWkmD2H1oWC7\nzKU1AoIBAQCmOZptSlnC9EciKKKpf7o+oLHGWzZ1dE0gqt/PMiSnVT47L3bvQar8\nkDj1WEHOvcnzc7wKFWSWPLC9z7hzbHG9JRQCOLRP4bHOOJmpstuysWGasJrUqMcy\nnt82Km7fpBFgCXnuGvqX0EVRfwSFf1KsrxpPstrUPrf9Jc9N0YJds+YFaPdKabzr\nBrbXTU791sH/PTEnu0NGh58f9QfdMnL4Erc0D386J6qMCdncVTjjcg+JYRGuRtgy\nxPgBCjDK1bJnGq7KPE8S5hNDWcdkNf7e9P48HdsQig39ZZhWMWSPolesbg29cUrI\nEyOTyS1giBSb5tm2OSranEiTj87Hbz7F\n-----END PRIVATE KEY-----\n','','http://192.168.22.10/dfrn_request/friendica1','http://192.168.22.10/dfrn_notify/friendica1','http://192.168.22.10/dfrn_poll/friendica1','http://192.168.22.10/dfrn_confirm/friendica1','http://192.168.22.10/poco/friendica1',0,0,0,0,'','2018-11-17 13:50:05','2018-11-17 14:03:08','0001-01-01 00:00:00','2018-11-17 13:46:35','2018-11-17 13:46:35','2018-11-17 13:50:05','0001-01-01 00:00:00','2018-11-17 14:03:08',0,0,0,1,0,0,0,0,0,0,0,0,'',99,NULL,0,'','0001-01-01',0,0,NULL),(15,2,'2018-11-17 13:41:27',0,0,3,1,'dfrn','friendica2','friendica2','',NULL,NULL,'','','','http://192.168.22.10/photo/15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','http://192.168.22.10/photo/43713557095bf01a87be90d132625601-4.jpg?ts=1542462605','http://192.168.22.10/photo/43713557095bf01a87be90d132625601-5.jpg?ts=1542462605','http://192.168.22.10/photo/43713557095bf01a87be90d132625601-6.jpg?ts=1542462605','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwMWwwjqXtfQmCzLQmZ+D\ntRVdtv1Vq6DdjC/+aEP3UKLpp0nzNcsfT3U8Kejs23o0KpC+EVFXuWZqvxyeHoiZ\n+w9i1roJf2eSLBVeAjiEmLbI7wSfLBu+iA1x+X6+d9wxxAgzM7KHIBOghVCDussz\n4AaojP4Dx3Egsl1w+1j/ULUNCvf1wq9KLMMgJlnemC4cHfv+ObcxdisPezjVD9sg\nnvRLKyv6i8gm8csDwaHtHP6VNxc0JnauU6GIxBrDmlnpKYGb3rl3WLSvuiyzJYrr\nzKESnFINFKRLCG3m548OK+reRBDmgYbsZFJ57FS6YTa63268IwwtlRbRs8n8N7Mi\nO0jAXhRyZKRim6lkykIUjwlmIKfS2xl38k1kg5VLfPwZYAhiG6+JMcBlyj7hKU+4\nN9FKKfLlxtRz/g2kh81eHWEOXblEohpR/GbAhMF8h/tkHM+ze2TAbyEK1A+UWlWZ\n3olMRdt/awlAd657XqGVukYUg++GdEGkVyeWcCV3CwscbhiFAqpV/TWh6yARultJ\nvij/UQWi27yFY1v4EAactGL/V+zrmQSduKGd7jpHJe2XVS4DGuw+ThiDQc8gamlG\ndmZcPkVxChFqGpxGKXOr8uFWbYUG4Cj3iA4iV8XOlGUIN8uFtbWX/VyVHGNGDmGg\n60osshOegUJTNz8OBkZspvsCAwEAAQ==\n-----END PUBLIC KEY-----\n','','ce98c64de523350b56ee2d3e87a26aaf629a05ac414e1904bca31d58887a7a33','http://192.168.22.10/profile/friendica2','http://192.168.22.10/profile/friendica2','friendica2@192.168.22.10','http://192.168.22.10/~friendica2','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7ospD60/+dF8qJu7Zlw9\nMANbhSuzYkSS3Ayc70iUCzorFQlCwpoDdb9P0jMsSh5rp4+BTTB+ez4On9q5HcKG\n08yMyVBT/2uV1HLmOPbnN+vW4G1Lq/H03bHBv+Yi/fqLgpUy1AJrdWJ/t4q7vFs0\nmcwwUnE+EeqEb1wtMBZSa47Za/MUoA+dFNE0sXJpg+1SIxxlmlDOyncoH4P6UxrZ\nw5pfeDFTWDJ16Gt3woV0Eayf16i4Ph1FG2rYgyQx9bKSsz94prEOBSsTWvYMu2CT\nAZJg6BbOwNEcSUeBaBjKwcmtQyFleB3k6Rd5j62tUZ87dFMjzcDHo6AlhOy+4dEj\nA8eqXYOMmLu/8XgssJJtFszDxfZoLyvJ4AAnjhG0brIhNxHEbueeoUMKk6OZv2ic\nynCW7y68SC/lmmhEKvnKkKDRj3DR7kl5sOyu3Hd/q1Mv3x0rYud+cEwTcxo5YJVl\nYZm+TyOWfZBCOe6V+udrdUsfa1dwlGgvqZiwzViP8qB0ZOZageNSInt6/AbQwGOY\nhX5FxSCwkM/sfzMkfca4nXIt+yi6bKM+mwW5m77pOurmUX6eISL3YP2wgjKKiIyA\nYzU9uh8NNXxUnoo/jgSU4UmL7nMIbg0bViqUWkmOjcktHG0wIikPDNeH+Nou8kGP\nHKIAGsn4w9kl4pxtbkYtOeECAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/friendica2','http://192.168.22.10/dfrn_notify/friendica2','http://192.168.22.10/dfrn_poll/friendica2','http://192.168.22.10/dfrn_confirm/friendica2','http://192.168.22.10/poco/friendica2',1,0,0,0,'','2018-11-17 13:50:05','2018-11-17 14:00:04','0001-01-01 00:00:00','2018-11-17 13:46:35','2018-11-17 13:46:35','2018-11-17 13:50:05','0001-01-01 00:00:00','2018-11-17 14:00:04',0,0,0,1,0,0,0,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(16,4,'2018-11-17 13:44:15',0,0,3,1,'dfrn','friendica1','friendica1','',NULL,NULL,'','','','http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','http://192.168.22.10/photo/17505033475bf01b2f38ff6177578340-4.jpg?ts=1542462605','http://192.168.22.10/photo/17505033475bf01b2f38ff6177578340-5.jpg?ts=1542462605','http://192.168.22.10/photo/17505033475bf01b2f38ff6177578340-6.jpg?ts=1542462605','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmQR1Wmtv2KMZ5f5NTJMf\nRfX+1KXfhCKZaDgtL8/Trtb1ZXLq0tlBVhm29MI1F6cxZFhNlFyW6GZCeZFKX3FP\n2pFw03sEBTo5PCLso18EEl9kXV9cXoBMzINI3jIGnJiawq9PfIw5142jFBLOxiDS\nc/iNG6iFbq2qHwiQJjtp61BCFivIMZaHXqvtroakggjBH3EbRx+rZfeqjB8MRqOc\npXIqjc0lrHk8QGdXeuUAWsL2qUqHVNekLBXPnRcdMT8BxUmtBj0ccZ1IICLPFEzK\nr6DtqH5kE+aq9IcoMIEDjUhnyOAvFda8TlxX8D5SMFbrfJZDTypDqXHnSxHUS0Rd\nX06tLJZxMgqHspkxp6nzxk7JGPHKQmU6N0uqQb+i7dFlgC8QRLi79a1x019dvpAN\nRwbhGnn/pEU9Kn1JbYTAI6irBnHnlAUkpxmwSzRx5ncbNbhbniMD2/39IV1mztUh\nAyc262/cRRJAu8pEsPvc/pSijIyfrxJGYqF/uUcS5gbrY+wCjpYaBdzFxQEcD1Aq\nvXQGxi3sMRY9b1FJ+f3UTB7D9kIBCbwUNOXCjDCrOKZN6nxPLpKnfFsneHleUHa0\n+MRzI/vX78jQ1P4KgxPIiSktfrZitBpyzCC5O4ytiwqF2E8Ei0zE6OL2gm8yv7tB\n00ewnSBHzIpdnS51XuxxmIsCAwEAAQ==\n-----END PUBLIC KEY-----\n','ad991e9a63e538162a806e598615bd6e016a1cc379fd547876509ffea342a4fe','','http://192.168.22.10/profile/friendica1','http://192.168.22.10/profile/friendica1','friendica1@192.168.22.10','http://192.168.22.10/~friendica1',NULL,'-----BEGIN PRIVATE KEY-----\nMIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDB+mgwLQt/Qrwh\nYT11B6x0XioNWhGQCILN8D7yyFt/WNQ5x5vKM2Q9/2+OcG4smKHWbjTLjtVIPyZx\nVkKI1GK72a7mclLir3nQKQghAUXZ08JVWkmO+Jo7OA2Z7YFiZRoWsX/e79XlXiXY\nggj4GuojY7GhLwz8rqJUynqn4+O+oISt5rPNdIaMhWMI3cFIG63+aSBz57nbch4P\nY/5MzQ0ItxAWZ5naN52EtexA3rXsR/b+G4kH4JEryk9vu8w2SBE+ANI75KiMdZ/G\nH8PiTl1wZosYCU+n/Z4d2YovwmQExIoPr+2BBZXcb/AbYgIjxuWjkBinRQK5MCmt\nr/GhScbsT0isSo0IuJgeCEig+DY4KO4lVYxXbwxYX7yW3lep8Yg5uOtiRGbsqbUi\nRIqn5uJFw8YXjcnjpkvf2/w+PQAxuXmxZIJq7ijN/vndxrorw5OAm+oo32gnfjSi\n7AMzX9dtLsMtZVSv3G4DYafbq8wU4hH96bAdHXdtbPldEGUhlqq+oUQsEqu6RAUa\nt6BA1B6LN7qf4quiIrn4+y0SIDAqW+CqYpXl2H43yCKZpbYV97yqWFrnDzjyMmGx\neHN1dcPxW7aFN5VrTrwfsaESd+fkkYs5ytXgT02jSbzE9DN2ivL3X6UDMY+gNalD\nFLX2RCQDUcNHU8wr3DinFSho21ys0wIDAQABAoICAFxFBqZT5vIkBmVCYf93JPs9\nh3dObqg6xC29p9PIpm1PDbRmVJ68D2TGSoRQyrd/6wua5JYnXSC+mUS0KXX4wPZm\nN6H6o56cpa70tZ8tgdJ5vijnh7HwYzzkDuQ3a6IoQV6mFBMxtmcif5IbWLTb6J/o\n3iezv9O6JhF7NxkBd+XHaRVndgO2+AGDuXYQNc5dDEjGLN+1TF0sTUw43lAeAaMx\noP9nTHHWnqDwAG9jANph6QU6h9YtZiCUXXDiveLcKQd7UIWY4OvfT57ooT7W0++R\nd3x5gWCBbWL5hZfuObFi4+FOaAVFaOGwhWAhIK9v/u/srS1z0DXSySCLXr6/31TY\n6RRjcjqJw17kyVmCz4kEoxicGpczuqslymC1W7KA8D8b8Dk2ExjQLxWw7vEa5V00\no5wCRIqmcMaFjtK8lO7R8eBQwsHRv1hNcWP62Ufnn0je7If7AqkXuqKwy0nC9iUX\nXCJlgvWj1sugcShM3Q8UNYaPfrxLLTlSOSzp036ACKkTqAha7EjDLQztpeLZpZ0U\noGfjPgb1yMPrZ4CxfuF4kIedbINY5Bpid/cd9ug+hR42+eJODNNgODhMmPJwyT2q\neWV4X+fAl+q+bs3Ohwvm0LikDXlt8wKjThuNLfxCvu7pVQXJegBgv/0xQC+UgtfJ\ndOWNp7/MSLlHM3yLy4hBAoIBAQDfpYYZFdux3nj5B5fKO413aiRl+gCemF/m+S8B\nLJshUSPsyQYvp3oYMXxAgkVgFaGQSeq+QKHniRzB7knwRgoRjcRNvS8esQZTp3+l\nlx1xLquB1UZUxmH46VHY/yAEq669AraQQHJMrcufZGO++RO4BDOoVXEng5eXj7cI\nYFVNWP5073Hn9ULcaKJqw2DLAytpjxM8Oosi54dag+w0EDcRRjjTPfhd1vVOJc/3\nlbpkXPRCM1g/AF2tyiYol3U1hkUdcvhbjFgFK4JtHQIbZ31DSdXm1W8HHWnJTj7P\njPpCBS724PkVgyN6mHW31zgfgUKq/3OEFRO1A2Uka4d9K7CxAoIBAQDeCiZFYfkC\n/2iFBzRn9qkl7XfNbs2r9cc6nnbUDLDtyd2TpC54JJyaarfNgAQ87+LoXyYLhz7c\n50fzyscnugt7TvXapmawbvnvuuDDdfloISD+xgJ9Z8ccUIk7gEkLQLNQHzdGS2pc\nBz1EYk54jEiU4vuiOndSns3wMjEme1fkz8uaBHJnHWGlvpkX1vEnNU06V6jvYZV/\ngQhl4loX0OTb/O++1yhY8IQzT/ZJxqHK8PmaxuzfsxMa6D9HX9gH6M59ToFlwV4L\niM1OB2/jczpe9BZQYePX/ijclJI8rq+FhfyA+aeLnkzZSF1oMPh5qLZE32UX0nHY\nErzwnddWu/bDAoIBAQC4zwM8/38IQJsezlN0XjnMj/1791dDtw6owwlAoyeeJHrX\nVFa0UmTmUR4oAH5ro/RaU3qTtL0Vo4wMBWk8D+SKFOg+hTLG3eoofqVQpMtDmBlJ\ntH/l1flnwwZLlqdStLw0nGVYVqkdDBDTqhVy3kiZK3+0fsZ+rJM8Pxo05cYXoI7E\n+ojZ8SZLFHwCVWlK2VeqZvyyLH6FXWXQOmuZqjyXHbwfc3olsVgMN9re8O+Rt+5w\nNhWaGidPUViu+ll03XuHllX88MBbpVSl7e6rzp0IWZ9UnNKewoOEQhBNWmYC4F2q\nzMWILVHIIOxF+qb6Acqhm25Nm00pq6CMs/7GRLBBAoIBAD95aU1mX5gyyX9V+u5J\nfjtgcmIg7dzdyxF/4XpnEmE31wbw5XPlC3u9TEQL96ov7Y7+PFMJW7gsyc3wxxQd\nRFEA1pml/i8r2nlk1AIshJr29Ya/tlCBTVNT1pdS6g60dU5PTi7jOkmKrEITVFlz\nyP//D25mBlxxF3A1+QUGN68qlAq4gLfnl1WZcgx1nsTVoPkvvBSKsgEcMvllRtoO\nFo6o9SR6P4eFYlWE42RdyzzHvKM5gNfGSozjnctao9hG/limC6m6KJdliUNoLt03\nwJUKdCKQiWDiwG2mb1O3oGesUO3R8Mqh+1gWLtWtQisNRuXTcwPnXjIl0St8A+ZA\nn58CggEBAND8Vi9SR9qAfZyWrNnEe0kj1BbU9qN0YM0YXpoprilTvSfs8dvaHyYn\noFPlzuOMNHQaIhNljACffDbpp6LFIIwCVH9vmtX9+Q6hXtPh1TgLLWkX9QQnhmQP\n62qg1WcySN3rLUbXYV4kcM6CvkMzBd/7W32dXI9KZsVCaq1oCT2OhVYe9qaPeFui\nycHVe40eWe1mDwnVbuIe+VjiudKB/0kFWIJRdsn8JQcKKnVOaNhdbLrDGTWRf/bE\nfdZXG/i9FEilsZFomB6hgfzWf4CwqSD84kBc4DkZb/5PBs6JTr7bFbWNSdgxh4Ry\ncPr8/as1WQOhv7qi698ewvIuKmXOG54=\n-----END PRIVATE KEY-----\n','','http://192.168.22.10/dfrn_request/friendica1','http://192.168.22.10/dfrn_notify/friendica1','http://192.168.22.10/dfrn_poll/friendica1','http://192.168.22.10/dfrn_confirm/friendica1','http://192.168.22.10/poco/friendica1',0,0,0,0,'','2018-11-17 13:50:05','2018-11-17 14:03:08','0001-01-01 00:00:00','2018-11-17 13:47:38','2018-11-17 13:47:38','2018-11-17 13:50:05','0001-01-01 00:00:00','2018-11-17 14:03:08',0,0,0,1,0,0,0,0,0,0,0,0,'',99,NULL,0,'','0001-01-01',0,0,NULL),(17,2,'2018-11-17 13:44:17',0,0,3,1,'dfrn','friendica3','friendica3','',NULL,NULL,'','','','http://192.168.22.10/photo/12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','http://192.168.22.10/photo/10942403815bf01b31eec59540800317-4.jpg?ts=1542462605','http://192.168.22.10/photo/10942403815bf01b31eec59540800317-5.jpg?ts=1542462605','http://192.168.22.10/photo/10942403815bf01b31eec59540800317-6.jpg?ts=1542462605','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvAs4TR4AI+nlBt8d7BHD\nViq6w3UslHqURRUo0+sfAE5RL45im2z+ryPag1K5dbs5pcoa6hfk9+EREgoWlwnX\nX/8UdkvkoHE6/JDFimuaK7pequwUQbQoOXkkBAyPtN8YhjfGM19CI5FIVByY+O8p\nO/lGls1h5bxYEIgjA0tTDw5FuhPtiw9SJAPtQs5Gueoe9y7VwXNLNenKI6r6/Kfo\nzgYKJS98ibCllMiDIY0ixZZqhsh5+oEAsGPaNtQSgw09fWyyDNUKOenC4NhhMWsY\nBtTgDOPkM1AgidQKny7wtfo04YCn13SZuU6cWXqCx2pTgxLpBRgNbfkf6/DerVEO\nh2/Fxx2oMrRqLox+kAj03zrKnto3n5cYASlmfeEmUBHtjc/qPbuEzm+FEJKTXkrg\njt0+xzTQxPr+oFMinACdTMu6J4lB6dGCJxbx/Dx6FcRKymUYGdLvZWITfKZAikRh\nX8Pll3bFExOk5ieOdBLRt5ujGHuMbV204qpUsL0kDU9/4aMnpJei4EZuw21ovDH1\nVchVjJS4fzsJkaDfA81+83ADHXU10+UJ7PXAq7U416nC/dr30Gp2cxYb1qELYe4W\nGXE9k857z1o3BevJi4smy0FeydVVEVJ/1SPhPcdKHIA6sfP+TzuvWk7zK+xDwdyb\no4/nVNHD26NC1mVTTAjR7t0CAwEAAQ==\n-----END PUBLIC KEY-----\n','','ad991e9a63e538162a806e598615bd6e016a1cc379fd547876509ffea342a4fe','http://192.168.22.10/profile/friendica3','http://192.168.22.10/profile/friendica3','friendica3@192.168.22.10','http://192.168.22.10/~friendica3','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwfpoMC0Lf0K8IWE9dQes\ndF4qDVoRkAiCzfA+8shbf1jUOcebyjNkPf9vjnBuLJih1m40y47VSD8mcVZCiNRi\nu9mu5nJS4q950CkIIQFF2dPCVVpJjviaOzgNme2BYmUaFrF/3u/V5V4l2III+Brq\nI2OxoS8M/K6iVMp6p+PjvqCEreazzXSGjIVjCN3BSBut/mkgc+e523IeD2P+TM0N\nCLcQFmeZ2jedhLXsQN617Ef2/huJB+CRK8pPb7vMNkgRPgDSO+SojHWfxh/D4k5d\ncGaLGAlPp/2eHdmKL8JkBMSKD6/tgQWV3G/wG2ICI8blo5AYp0UCuTApra/xoUnG\n7E9IrEqNCLiYHghIoPg2OCjuJVWMV28MWF+8lt5XqfGIObjrYkRm7Km1IkSKp+bi\nRcPGF43J46ZL39v8Pj0AMbl5sWSCau4ozf753ca6K8OTgJvqKN9oJ340ouwDM1/X\nbS7DLWVUr9xuA2Gn26vMFOIR/emwHR13bWz5XRBlIZaqvqFELBKrukQFGregQNQe\nize6n+KroiK5+PstEiAwKlvgqmKV5dh+N8gimaW2Ffe8qlha5w848jJhsXhzdXXD\n8Vu2hTeVa068H7GhEnfn5JGLOcrV4E9No0m8xPQzdory91+lAzGPoDWpQxS19kQk\nA1HDR1PMK9w4pxUoaNtcrNMCAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/friendica3','http://192.168.22.10/dfrn_notify/friendica3','http://192.168.22.10/dfrn_poll/friendica3','http://192.168.22.10/dfrn_confirm/friendica3','http://192.168.22.10/poco/friendica3',1,0,0,0,'','2018-11-17 13:50:05','2018-11-17 13:50:05','0001-01-01 00:00:00','2018-11-17 13:47:38','2018-11-17 13:47:38','2018-11-17 13:50:05','0001-01-01 00:00:00','0001-01-01 00:00:00',0,0,0,1,0,0,0,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(18,5,'2018-11-17 13:45:32',0,0,3,1,'dfrn','friendica1','friendica1','',NULL,NULL,'','','','http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','http://192.168.22.10/photo/18858997325bf01b7c29d79163158635-4.jpg?ts=1542462606','http://192.168.22.10/photo/18858997325bf01b7c29d79163158635-5.jpg?ts=1542462606','http://192.168.22.10/photo/18858997325bf01b7c29d79163158635-6.jpg?ts=1542462606','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmQR1Wmtv2KMZ5f5NTJMf\nRfX+1KXfhCKZaDgtL8/Trtb1ZXLq0tlBVhm29MI1F6cxZFhNlFyW6GZCeZFKX3FP\n2pFw03sEBTo5PCLso18EEl9kXV9cXoBMzINI3jIGnJiawq9PfIw5142jFBLOxiDS\nc/iNG6iFbq2qHwiQJjtp61BCFivIMZaHXqvtroakggjBH3EbRx+rZfeqjB8MRqOc\npXIqjc0lrHk8QGdXeuUAWsL2qUqHVNekLBXPnRcdMT8BxUmtBj0ccZ1IICLPFEzK\nr6DtqH5kE+aq9IcoMIEDjUhnyOAvFda8TlxX8D5SMFbrfJZDTypDqXHnSxHUS0Rd\nX06tLJZxMgqHspkxp6nzxk7JGPHKQmU6N0uqQb+i7dFlgC8QRLi79a1x019dvpAN\nRwbhGnn/pEU9Kn1JbYTAI6irBnHnlAUkpxmwSzRx5ncbNbhbniMD2/39IV1mztUh\nAyc262/cRRJAu8pEsPvc/pSijIyfrxJGYqF/uUcS5gbrY+wCjpYaBdzFxQEcD1Aq\nvXQGxi3sMRY9b1FJ+f3UTB7D9kIBCbwUNOXCjDCrOKZN6nxPLpKnfFsneHleUHa0\n+MRzI/vX78jQ1P4KgxPIiSktfrZitBpyzCC5O4ytiwqF2E8Ei0zE6OL2gm8yv7tB\n00ewnSBHzIpdnS51XuxxmIsCAwEAAQ==\n-----END PUBLIC KEY-----\n','076eff03665df26450206ca0cd89fd1b41ace1252fbc59af5e8b906a1b5970c8','','http://192.168.22.10/profile/friendica1','http://192.168.22.10/profile/friendica1','friendica1@192.168.22.10','http://192.168.22.10/~friendica1',NULL,'-----BEGIN PRIVATE KEY-----\nMIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQDXP0gvhHwhzGKy\nrElXyR8p03yXqSeoDSX4HKULG/P50XKt6+LOjwy425e6Q1bX+Fcl7r2NHyFN5Lbt\nxehAae1CvrD4oTDCZYXC9oDPhtTH8nlnQT2y3v0BOaASTHkt4j4gLYDE00PQJH/b\nEDxMVER/GLjvUm+bBDnfApZTOz1tbzGQW53B/nYA2nsHgitX19jv19o5+3RYvXHf\nIuMGUc1eO5ZPtsSC9t80BZbfkf5zjkNQdvmbEHAwAlkF1H+ZLCSvZ33flqkinAaN\n71rjwnAsvfPEK+AjYptwpNRUFyo3ShW9Fu4EI2w5i1jlMhhH+OwGXvY+xpdHPxkS\nT1zqeaowDEIvg9l5j2HQAwKLUglXvg/nq5qDEr8cTw01Yx5hprqpu0gt2B8U8XSV\n98894I1HH1ZsNxMhKx/W8psMw70ycA3Hxpq/dvURFFK37hL+XhStQvq5IiH3wcdp\nNyQlQnBhAJ86kEsEfq5l5aP/TAluPe9QvfrkIgPbyaZqECZANbpDzxM0ndqpowtH\nfot9Hs0zZI5oldXXW0v3EIJ+J8nPXjQJWZKd6jw5l9u9XWIW3ikfWsqQuo+Cbpqm\nLX+68J/u+mp0I6lzkHWjQ9KFVLlx+cRTQALVd5MuQXddFaiiGYzeKym/5MqOCjNE\nudS5sievz2xw9LjBXSIvO1qdVWOSwQIDAQABAoICAC1ew2JwtJGTOUKcGiGM3Sq9\nz0dQenFrxBMWRpue2sBPq7KJRBdyA6Z7cvHp+8YuLIBsYDv80dJPYVehHaFmMoKd\nG0RtBZAUQiukNeaIbxVuQLTJBa5MXlwBv4Hb6LcJNzslHD1goqye5OxR8cPNB1sa\n5PBdGfU84M3nB7Snif0lMPdSuGAJuOnZI5GjmGs9rhZwEymhnRaPaA82lU/hsj4o\npThMOAO68bVPcEvTxCSrWfj9+wL6ZgtYk1ctQXAR4/GtCNU2NpR6+s60Ix5a/7YO\nm/E/plEPGeCWfcLz1wwsa4Sd7rGknc1LWAOHmaKiD24QWitFROHZpPk9DULHPl3b\nYSqDbYXTcBsroTF+RUolhtAzcS4ijDBRwE4cXShjgYLtiQbK1nowbQQni8apvYAf\nHoMG86TdBvvwTLfgT1wkKYhyPrmC1LXyCignkB/ZGxiI/6FZVYiyXs8zFrIoEb8e\nhOZ8XNmLFNFzDQIZay4dQe7Y4AsLt97l4BLm6wgCwEWXOeu2maiBIj6y+uA67f4s\nBj8FCJWP2ky6v2IQGh6V7BlWE+iK57GVWk/zB34y+AUTkXIi5hp/khcU5YjMYaqz\nfG8DpSd+0X71pV5cQKVG58a2uLI0EzWxpCtNlM6ab1g2CKY54sKYVb+D9ZwW4Bu9\n2zoCqUOY26PSfS+IcGEhAoIBAQDsl/zmeZ1E11A1aLGd6pLhT+nv75aJPBR2ItG4\nPt4JxLJ2tj4BIv62ZOCV/Kf5hI3kIC1f+5Op8Zd3FudxDfWfyNRXnHZq8CWh/vao\ncFq8bR+Q4l928LS3XjpQ9nSyWRo8Cu/cfMnUQAYh+3iAWNypmxiIfYET+X0c8Rew\nrana0qirweUuxQf8vmlRZgcdFjU6JGFHmBF4RdQmctKVtHqSIolkEnFXEQWhZEiS\njFgrCJ63nC63p6okVgU9QRATsDoR8xtImOk9BB9Cbi8GCqZxqKUt1lHtqp2zmAcr\nkZICewhR7Tl5+ctcp7TV/buu28+Ofodeyaq20/A78i/Yn6m1AoIBAQDo5w78QdpF\nnN8i4M6Oq9OGQyDKbjiiYCywnZh4l0y/D7ecHZ/bx4xfnvySRC6wSal3ubVOY1oM\nLEQEffPvVJurNiaybYS6XQsMU1f6k2q3NUrUrDEHZBNqV10LpucIU+2M3zdeYr7p\nLG1697Xu1vA7fG6RDt0vRRFKP6qtfd7IKegqeuDmXhucr9TZwrNQXDP7aNK5sl1l\nTlNy0yFCBaP2+cFykW8zWrW0MsozGxsN5GvQr5fI2/VkKjCnXaiRDtt4XTUy5x5v\nACQ2FzUH8kKNUIpCEkFnCtDhmigup/qk6frQENJs323IChnPXBZt0HEjCbZ6Cc6F\naDcZx1kI+rxdAoIBAGNH4CMi02Do7UqMNURsA9iyfRtnMYdDA98S+2hSUUBOHwl7\nrgcyFSqaqDeoPyCQhC4/ZmsJmcxNid66aMJjNjgnwRtGl9aGEXSqFf1WsGyzafSV\nWbQCjAMKcnQ5B30zsLOTb1XZs6PyfeBSsx1ArNArOh9Ecx7bqam0bdmA9m7RyV/R\nzIdUvOZNTMqQgtms0Qcl7wBpCqOqwbykoEOb6XdbMMYiixcbGH7CI0YDyJe+VUP9\nMQl2PQpkYmxy2fk5ERUpK8DKEc295hQtQmRJodC+ERpr/hM6blTHrfKVcmzCDhq6\n7kyGCtVFtre5csGMkctcwxd+jrmLtBqjpXpEfaUCggEAdKYFY2K4J9WCDL37tolo\nz/4fFkROKUVyHKNSElP1JFyC4bYUsscnD11ZswhjOfgq4MQqgrBQEXi6OGW9H0mJ\nDh95EjS4HX8sYWf80Iu1Dz2p1QrJI6KD9ub6uzNE0271s3C5EpTyeWa/Dq+yd4U/\nnQuddRm0vlAhcMaifXJlemtC1MPmkHrh6YBHYymZFc6YWnsNz+P90xd/xCrqpV6d\n2L0Onoso3te32iD2FNKmojadqU/I/djs9tYKuEi4fK6sTYSheHU5UO8JM+47qVc0\n7gJAvQbXqvxH0jabmYKYjrCB5mQGgHEHUwF8G9dLhIS5pYrf0g/HWBnyPv8RIOY0\nIQKCAQAgxz/lpFvvC4ww9TjSN9BdW0wtd6nDMpl7PGuVgr1tvsWGJs92SGhijFUb\nPlNugTpPsLyFu1lyahhssoPovAYzmdWCUfaQLc/2Ft/FsTvpVkLbdYAwYclVHWC9\nhoFgN+AHCbEAeus4bWoeUCRa/iJqqJoE0YMeq3r/emqS09I32hKJCjr+f8iGIDOA\nc3a5D3iJsZiswIZjOZi2Afnc4zfhRgRybT3QgtZPUmNX69XKSSnS8+rk7+c6pG3Q\ntC2UCoef5gfbOVR/A5bN/2YJjGIgWnBi2SbldwKiCuB+xRtngSBwE6AMJLSbVJxw\nEtYXfSC6tARyRSgYLEKRCN97Aiur\n-----END PRIVATE KEY-----\n','','http://192.168.22.10/dfrn_request/friendica1','http://192.168.22.10/dfrn_notify/friendica1','http://192.168.22.10/dfrn_poll/friendica1','http://192.168.22.10/dfrn_confirm/friendica1','http://192.168.22.10/poco/friendica1',0,0,0,0,'','2018-11-17 13:50:06','2018-11-17 14:03:08','0001-01-01 00:00:00','2018-11-17 13:48:15','2018-11-17 13:48:15','2018-11-17 13:50:06','0001-01-01 00:00:00','2018-11-17 14:03:08',0,0,0,1,0,0,0,0,0,0,0,0,'',99,NULL,0,'','0001-01-01',0,0,NULL),(19,2,'2018-11-17 13:45:34',0,0,3,1,'dfrn','friendica4','friendica4','',NULL,NULL,'','','','http://192.168.22.10/photo/97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','http://192.168.22.10/photo/34785303845bf01b7eb2f18737560971-4.jpg?ts=1542462605','http://192.168.22.10/photo/34785303845bf01b7eb2f18737560971-5.jpg?ts=1542462605','http://192.168.22.10/photo/34785303845bf01b7eb2f18737560971-6.jpg?ts=1542462605','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtOfQNRnGbzBy9Rc7gLAI\nrB5Fp2SBFfjRnd5g99HKWI3Amz5BXdcOWsgikVtwSVGDD8TGPj56qIlp+ctfYkPZ\nn5QSGfA3VS5eqWNfE9aG3XZAO7M7x2pKVaf79ciuYK0HQrmCeClB844x8rXDmW5m\n1k6Any22lpXHdDY8heR6O/uLIG9i/eRiD8tFMY3ATVkJ4MF5TY/m0ZGhHAMfK9dm\nkJzNvJc0cYe6kBmpDDmlJwObo75NfPBi3bqTaIZvTxda6lgWcuv/J1IR0fLhW8IJ\nbbXcd/fSNHV5zdqPmZsiu4+nx1xf+40J1v9+uKCCxH6UlUR9HLcCpYH6PDmoEkRk\n2WVPsU2+crVbY5cbNx08LVe6ZGl/onhTM35t2JBpo9ClgTSmpgEkRQsBebWNEKn3\n/y7Ib+/IywdomRUTgXVtKt5+90FdEhNwrba2CyD3dFW/CQCwx+363juCZr16EiKx\nbG5VJ1aIN8/My9feB9fklqyCpy0vkMI9NptQbtKntueETeLTqKlZ5uJJZJtd6S7z\nrTAd6vx5WLOMYlfQF2K7MVCwYUVfcIoWKxAg3SU+5sIG+cSrreT67wxt6k6sEEOw\npRZn3qZ13vPpO1mJelhqQeDZYutywYHjNj+L5TjCIZqIS129MZbqDJELkjTmckRV\nAZmzTHqCDXwd70IddYvuuJMCAwEAAQ==\n-----END PUBLIC KEY-----\n','','076eff03665df26450206ca0cd89fd1b41ace1252fbc59af5e8b906a1b5970c8','http://192.168.22.10/profile/friendica4','http://192.168.22.10/profile/friendica4','friendica4@192.168.22.10','http://192.168.22.10/~friendica4','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1z9IL4R8IcxisqxJV8kf\nKdN8l6knqA0l+BylCxvz+dFyrevizo8MuNuXukNW1/hXJe69jR8hTeS27cXoQGnt\nQr6w+KEwwmWFwvaAz4bUx/J5Z0E9st79ATmgEkx5LeI+IC2AxNND0CR/2xA8TFRE\nfxi471JvmwQ53wKWUzs9bW8xkFudwf52ANp7B4IrV9fY79faOft0WL1x3yLjBlHN\nXjuWT7bEgvbfNAWW35H+c45DUHb5mxBwMAJZBdR/mSwkr2d935apIpwGje9a48Jw\nLL3zxCvgI2KbcKTUVBcqN0oVvRbuBCNsOYtY5TIYR/jsBl72PsaXRz8ZEk9c6nmq\nMAxCL4PZeY9h0AMCi1IJV74P56uagxK/HE8NNWMeYaa6qbtILdgfFPF0lffPPeCN\nRx9WbDcTISsf1vKbDMO9MnANx8aav3b1ERRSt+4S/l4UrUL6uSIh98HHaTckJUJw\nYQCfOpBLBH6uZeWj/0wJbj3vUL365CID28mmahAmQDW6Q88TNJ3aqaMLR36LfR7N\nM2SOaJXV11tL9xCCfifJz140CVmSneo8OZfbvV1iFt4pH1rKkLqPgm6api1/uvCf\n7vpqdCOpc5B1o0PShVS5cfnEU0AC1XeTLkF3XRWoohmM3ispv+TKjgozRLnUubIn\nr89scPS4wV0iLztanVVjksECAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/friendica4','http://192.168.22.10/dfrn_notify/friendica4','http://192.168.22.10/dfrn_poll/friendica4','http://192.168.22.10/dfrn_confirm/friendica4','http://192.168.22.10/poco/friendica4',1,0,0,0,'','2018-11-17 13:50:05','2018-11-17 14:03:08','0001-01-01 00:00:00','2018-11-17 13:48:15','2018-11-17 13:48:15','2018-11-17 13:50:05','0001-01-01 00:00:00','2018-11-17 14:03:08',0,0,0,1,0,0,0,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(20,6,'2018-11-17 13:45:59',0,0,3,1,'dfrn','friendica1','friendica1','',NULL,NULL,'','','','http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','http://192.168.22.10/photo/56404448515bf01b9730801345691622-4.jpg?ts=1542462606','http://192.168.22.10/photo/56404448515bf01b9730801345691622-5.jpg?ts=1542462606','http://192.168.22.10/photo/56404448515bf01b9730801345691622-6.jpg?ts=1542462606','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmQR1Wmtv2KMZ5f5NTJMf\nRfX+1KXfhCKZaDgtL8/Trtb1ZXLq0tlBVhm29MI1F6cxZFhNlFyW6GZCeZFKX3FP\n2pFw03sEBTo5PCLso18EEl9kXV9cXoBMzINI3jIGnJiawq9PfIw5142jFBLOxiDS\nc/iNG6iFbq2qHwiQJjtp61BCFivIMZaHXqvtroakggjBH3EbRx+rZfeqjB8MRqOc\npXIqjc0lrHk8QGdXeuUAWsL2qUqHVNekLBXPnRcdMT8BxUmtBj0ccZ1IICLPFEzK\nr6DtqH5kE+aq9IcoMIEDjUhnyOAvFda8TlxX8D5SMFbrfJZDTypDqXHnSxHUS0Rd\nX06tLJZxMgqHspkxp6nzxk7JGPHKQmU6N0uqQb+i7dFlgC8QRLi79a1x019dvpAN\nRwbhGnn/pEU9Kn1JbYTAI6irBnHnlAUkpxmwSzRx5ncbNbhbniMD2/39IV1mztUh\nAyc262/cRRJAu8pEsPvc/pSijIyfrxJGYqF/uUcS5gbrY+wCjpYaBdzFxQEcD1Aq\nvXQGxi3sMRY9b1FJ+f3UTB7D9kIBCbwUNOXCjDCrOKZN6nxPLpKnfFsneHleUHa0\n+MRzI/vX78jQ1P4KgxPIiSktfrZitBpyzCC5O4ytiwqF2E8Ei0zE6OL2gm8yv7tB\n00ewnSBHzIpdnS51XuxxmIsCAwEAAQ==\n-----END PUBLIC KEY-----\n','532811c29a1067f15bf4868ad3563bafcc2e9df33d775ffa722f0cb0beb7d374','','http://192.168.22.10/profile/friendica1','http://192.168.22.10/profile/friendica1','friendica1@192.168.22.10','http://192.168.22.10/~friendica1',NULL,'-----BEGIN PRIVATE KEY-----\nMIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQCmA+tdMxIUX19t\nXDvk1ZM2B4H4HrdgqXWhX8kIbclia9HiDB3gZwq87/3Wkblo+SuFxZvspPmr6T7u\nRhpv4A0epvfgWtZQIDER8Zvy/IxvNsB5C5XOeaHbN0R0imvMcJZWTYJIAeBT9Q9K\npK3klQBILZOR397UhsmsoJ99O5zM4DW9B+n9Sjs7O6UdmkqWOay1ymfsz2hIiqyd\nheINfdZpEmecMCDzwsQZ4YIxKshRzEaGMb4RcShuCzA9hgz2cEGWztGFulvYKg+1\nd4NruwbNNNzkeAGpPNc7zqudUAJwC3uEPN2bdTJxWRcFAwO/VUwoTYIvhaiIkH9d\n7FwCYXTmBldrzX3MlZ8G4gUBqlrmuXvW9rl8uncfubXoRMdZGLzp18f/acM024HC\nyjoH4yoA7Zn6Prn8qqBxE/H1t9sipBg3NJwkeG3nI02ba/kCYQea5ATuz6tFcbON\nL0VZ1qau0ULViQFK0AeRpjXYVw479GMc8OghxNeOsl0/OkOW189sAULpjMsnBFRr\nVaF+kb6jhrAEYb0+87dO20ys06hpFOycslucFfqBCXDYmBh+lB3qFYLQN/KQsd1X\nYeGFNFwF1WdE+l4W0pS722bxi6hRFseZX+PuyMjtP7E+MZcg8+GYPIuTWewb5JfV\nhchhmPHcnqLPm8lpEbgqD1d3eguk4QIDAQABAoICAD7vBW5TSetHLFm8uUfKXwAA\nYJi6rDGMi/cc5Iy5cbpJvUq/5SOIbF2rbMLGg070Bjez7aQL9knhJeYV1TfL661P\nBnCaftvpGDEBMmkuq94NF3HLnoKjQWRk0yKKxsq9c4BL6bN6YpvxLlbRjso0YeL6\nxBJsl4BhiFpUmaFT0+Emrbh3I5DNbx7JQZKzRsskGgDgNf1jstitGTqt4j/TEFDM\nlVJ0PEmr78MP5dbVrRK1KZb9jFv4VadBvovUIV3auEJ/LJZRSzfq2gGkyMEyKSXp\ngENr6tVJJx6Y/h2okwP+llhO6oNgLjsh1sQjnGwP3cr5dvyk4nrCrEXisA6G+1UL\ngOL6MAF86bMSIE+t3PjKv1GC2vTIKeKrNHwqr0ahfup3t/fHVZBwrm911SK1IQQ1\nKWhJ7uIjHYR3ePcx2ZObvLsJ5eAEjermrrqoAo+GuqZFpWpeWzLdUWLe6I4R9M4/\nc9HEcidAjVb0s+tj6qFT965tdGD/b2BQ4nNxHEB4aERgZwA3ddsPcQf4jcfIJjcR\nrETYQZ8+EeIQAm9wdgMmzK2i2ZbwLpgyDrQmYBRkFnGEl/rh/z4Poo9pZ5Q8fcz0\nRoES2NScYvEmCRolkkg9HZStFQgvVZrd9A/B/b4C8nJ8sygKjTmULeTqWSxfBEcx\n0RjwE8nDLageSKA5Sd0xAoIBAQDTSFsAvGuptBqnKTlSyFsssc0fSzgzF+mf24yv\nk4aXPvXuEwT7U+7KkQ7cCPZ6+s6h2QWQtXNUUDtE5tw5XDwlEdRQycduDJFYAtPi\nInIXThtAAd7Pf++bnvqG/yyVcC87LbkyUfhTgaCFCKkUUkhrZNrK1ki5rXG88ulC\nThuCS/vnZqluLUPKiRFWltaXTq42/zz3nANmxNrWohlr7UftNCZP/FUl61/mbRgy\nQSZReXAW7owZuQWm3Fiiap7mQtBANs6FRlChmlSDM1TVzak1w5GEmGg+Y4Ez5RCx\njxNDRPC87Dpsoj8WnFlMHlzGD/9bDpFh3fnPXlrS6BAVjTrvAoIBAQDJJueiJbRg\nfP8mgOvZUUVcJtteCpEpHzaLC0n9289diOAvF3OI4dwdZkC5wdvCk5Z4882HvEgx\ngopq3u2xRHB6UpwH9bVC85RQfUG4HM1w5lUkh8gexwqRfgu1jU69Cnnv1Qvucoer\ngTT+RvHELTQN8xBYvOpGOZJ3WDz0SzJ/GA8cLMhRKzySPtkijYRt3bpKF4HqvkZ5\n7zIXqY0RshtgWs/+zKYsI1JtAsfjYus9Nr1k/Qur3csGDSn8MBJTBgdGQ5LXlRR9\nz8TwT6NRnAc4dbsAFZmz7Lcl+0V3ph8TkdcyE3LVvY7OpbN0K8ilCsUr6tptZHh2\nFZowrjv4m10vAoIBAQCyBnSPgTQicRxIH4cqhqG0XjidFq9K9eonhUHcqyysAiQM\nrz/yWT2Kt4FSy8aLxwsW+psi3JFJyLS4EOIc/ue6wHQqgmqlArfw9aj9ENMbafey\nDiFkq8MEWId1+krhu/5AGf3DNahNDJtpnOuCsPZOb1Oft8DdmxSMBg2fjdrGBipC\nR5GZwVAutyHB2SUFpwlKU/RWGsIO9O4EDd/nva5uYxOpL8+7PMG4kdHiflzAJ9fX\nqran8eueNmoEqFwtXrzEbqnDSIUmNbjiN/1SjZD3OUtC83xanVM/m9JeGlU7yDok\npdNwt6D691CSv76iMNaULgk38mbMYQ+cSGdNEYxHAoIBAAvc4II+iQG7vWxu4/ng\nAiAqJnvIUcFEFvpiQw3WnccdYGNGlci30TxmoGCUHzq9a31cm31qzDMnSLR+yzPO\nHngIUS1i/zqglNmeWXbbM/55hwHthA7UnDnyXgxp9f/OE1ziip6YYInrx81LL8zr\nAYvlDsy873AOyyWAra+Wk7bNG28E8RdgXmUdkb6o6+tyzR67fizy5cMhKSoeFLS7\ndUPcdzHGrfIibyUAqfsuBUOJ6+d9yOds4CFOO3ClAR+mVl19dLaEEz5MN4gYmkAg\n3Igm4U1i+LqUtkRmKjWhNWn5CuDoJriWQkrLmOa8AkxBc1lgs1sKNtR396zxSZYi\ny38CggEBAIuWw88SfJ8MyWxVdJZKwCovJIUhJEroKKIedBRfB3/2utMokapETDDJ\ngRFLoR/D6m1m2mM8AXYLcs4nmkZUEGqZU0JrLAY2yPd3sK2Wh3OH14rnM99r1GCu\n4QJDIOzsPQ7XLyzV7Yqiv/dX5IEs8xZ9FomDsDws4nZdWy3icqqxMSU0VAN5435M\nkpCBAtPTaVpDbgvDed1kABzvoK+SrxW4rIev4s9In0katJCVmKixMiySRh7r8uqX\nPXsb9SzOHN2iEpNSJ26KRLVDPLuo/erGpKHbrskon3MtM+FGfGakNRupXKgc3QXG\nd8YEF+sLpOQ/40DZFXUG42RUZVkci70=\n-----END PRIVATE KEY-----\n','','http://192.168.22.10/dfrn_request/friendica1','http://192.168.22.10/dfrn_notify/friendica1','http://192.168.22.10/dfrn_poll/friendica1','http://192.168.22.10/dfrn_confirm/friendica1','http://192.168.22.10/poco/friendica1',0,0,0,0,'','2018-11-17 13:50:06','2018-11-17 14:03:08','0001-01-01 00:00:00','2018-11-17 13:49:10','2018-11-17 13:49:10','2018-11-17 13:50:06','0001-01-01 00:00:00','2018-11-17 14:03:08',0,0,0,1,0,0,0,0,0,0,0,0,'',99,NULL,0,'','0001-01-01',0,0,NULL),(21,2,'2018-11-17 13:46:01',0,0,3,1,'dfrn','friendica5','friendica5','',NULL,NULL,'','','','http://192.168.22.10/photo/63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','http://192.168.22.10/photo/14034074815bf01b999cc19093001643-4.jpg?ts=1542462605','http://192.168.22.10/photo/14034074815bf01b999cc19093001643-5.jpg?ts=1542462605','http://192.168.22.10/photo/14034074815bf01b999cc19093001643-6.jpg?ts=1542462605','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzbQgk0okIu48OTsuvI/j\nnTYfKREWuHx0Rkr/44zKv9NGOJItxb82OoK/59o4l2mkt3REOwEzsSeAUe8VjkFU\nnfmjTTg8GqDCQ07Bmux1lVdtyAIhqr3uMraS8bODUMRFnDSX39rYYUH+h7oBZ44k\nW2vGvnWKh8BYPmV+hAab8TuJBODrZy1z5A1lc9CSSoZCiEOSvO5tGgiTBWW/CUoC\n6jR/BqZy/jlbiuED/t1Hn8dKCyPkAUppFhVJgSiSaysLeQlGsw58QYvD4WJXWbGh\nOzBDyR5hmSPuRuCxWD0GkpCnZGtkLhrJHAhYysAvqlc6Oo+6leRuLq2S05cZI1cL\nwsjapgnIvPCSIm7OkFlEimqveMNTOKNbcyIHaq8kL3ZyUYWuygVndL9AdUhIEAkE\nOROFlAyv0fC0tbBhnsJ/SifvEGYOaO4eRB1mvvY2R+JU4gPXLWbeNSNrn4zpTdIL\n0pwDJvLAv+tgeheBz6fNyKqETeclMEuo+GUs3nB8zeO2ZJXwzAgqMt5/Vr27v8d7\nk+Cer7ydUT8QTlsRGTAjaWicDFPLlH9v2v15JEaDqjtIJ9kUdAaj+BnR3+j1x86g\nSrJa5SV4kdu/hduRtIfnhKTpu/ZnxhQzkWuu6gWtjCpLzTuaHybnh69rSz7CKoFU\nXnqm6IVFII/ny2a7I1KrMFECAwEAAQ==\n-----END PUBLIC KEY-----\n','','532811c29a1067f15bf4868ad3563bafcc2e9df33d775ffa722f0cb0beb7d374','http://192.168.22.10/profile/friendica5','http://192.168.22.10/profile/friendica5','friendica5@192.168.22.10','http://192.168.22.10/~friendica5','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEApgPrXTMSFF9fbVw75NWT\nNgeB+B63YKl1oV/JCG3JYmvR4gwd4GcKvO/91pG5aPkrhcWb7KT5q+k+7kYab+AN\nHqb34FrWUCAxEfGb8vyMbzbAeQuVznmh2zdEdIprzHCWVk2CSAHgU/UPSqSt5JUA\nSC2Tkd/e1IbJrKCffTuczOA1vQfp/Uo7OzulHZpKljmstcpn7M9oSIqsnYXiDX3W\naRJnnDAg88LEGeGCMSrIUcxGhjG+EXEobgswPYYM9nBBls7Rhbpb2CoPtXeDa7sG\nzTTc5HgBqTzXO86rnVACcAt7hDzdm3UycVkXBQMDv1VMKE2CL4WoiJB/XexcAmF0\n5gZXa819zJWfBuIFAapa5rl71va5fLp3H7m16ETHWRi86dfH/2nDNNuBwso6B+Mq\nAO2Z+j65/KqgcRPx9bfbIqQYNzScJHht5yNNm2v5AmEHmuQE7s+rRXGzjS9FWdam\nrtFC1YkBStAHkaY12FcOO/RjHPDoIcTXjrJdPzpDltfPbAFC6YzLJwRUa1WhfpG+\no4awBGG9PvO3TttMrNOoaRTsnLJbnBX6gQlw2JgYfpQd6hWC0DfykLHdV2HhhTRc\nBdVnRPpeFtKUu9tm8YuoURbHmV/j7sjI7T+xPjGXIPPhmDyLk1nsG+SX1YXIYZjx\n3J6iz5vJaRG4Kg9Xd3oLpOECAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/friendica5','http://192.168.22.10/dfrn_notify/friendica5','http://192.168.22.10/dfrn_poll/friendica5','http://192.168.22.10/dfrn_confirm/friendica5','http://192.168.22.10/poco/friendica5',1,0,0,0,'','2018-11-17 13:50:05','2018-11-17 13:50:05','0001-01-01 00:00:00','2018-11-17 13:49:10','2018-11-17 13:49:10','2018-11-17 13:50:05','0001-01-01 00:00:00','0001-01-01 00:00:00',0,0,0,1,0,0,0,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(22,4,'2018-11-17 13:47:03',0,0,3,1,'dfrn','friendica2','friendica2','',NULL,NULL,'','','','http://192.168.22.10/photo/15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','http://192.168.22.10/photo/11253258925bf01bd73be2b220663529-4.jpg?ts=1542462605','http://192.168.22.10/photo/11253258925bf01bd73be2b220663529-5.jpg?ts=1542462605','http://192.168.22.10/photo/11253258925bf01bd73be2b220663529-6.jpg?ts=1542462605','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwMWwwjqXtfQmCzLQmZ+D\ntRVdtv1Vq6DdjC/+aEP3UKLpp0nzNcsfT3U8Kejs23o0KpC+EVFXuWZqvxyeHoiZ\n+w9i1roJf2eSLBVeAjiEmLbI7wSfLBu+iA1x+X6+d9wxxAgzM7KHIBOghVCDussz\n4AaojP4Dx3Egsl1w+1j/ULUNCvf1wq9KLMMgJlnemC4cHfv+ObcxdisPezjVD9sg\nnvRLKyv6i8gm8csDwaHtHP6VNxc0JnauU6GIxBrDmlnpKYGb3rl3WLSvuiyzJYrr\nzKESnFINFKRLCG3m548OK+reRBDmgYbsZFJ57FS6YTa63268IwwtlRbRs8n8N7Mi\nO0jAXhRyZKRim6lkykIUjwlmIKfS2xl38k1kg5VLfPwZYAhiG6+JMcBlyj7hKU+4\nN9FKKfLlxtRz/g2kh81eHWEOXblEohpR/GbAhMF8h/tkHM+ze2TAbyEK1A+UWlWZ\n3olMRdt/awlAd657XqGVukYUg++GdEGkVyeWcCV3CwscbhiFAqpV/TWh6yARultJ\nvij/UQWi27yFY1v4EAactGL/V+zrmQSduKGd7jpHJe2XVS4DGuw+ThiDQc8gamlG\ndmZcPkVxChFqGpxGKXOr8uFWbYUG4Cj3iA4iV8XOlGUIN8uFtbWX/VyVHGNGDmGg\n60osshOegUJTNz8OBkZspvsCAwEAAQ==\n-----END PUBLIC KEY-----\n','10fde14e2501ffb578f1121b3d563d79884e322fccc694a2648d0a0cea6e489d','','http://192.168.22.10/profile/friendica2','http://192.168.22.10/profile/friendica2','friendica2@192.168.22.10','http://192.168.22.10/~friendica2',NULL,'-----BEGIN PRIVATE KEY-----\nMIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQCsXFDF0TgB2+AN\nbltnZ7edGmwx9rqLDAUn5SEQG++JvJGztZ/itct4CpKljs4Qo2NMz2iZmhCN2srq\n+VJSxfLrhd9bZFooNNn1T1I5UTwcBXdlu8V6v/wR1OkAoKEvG32ieJ+OCqp6oSBd\nPDto/TQ/BUajtZzFrw8UXEktTT8I/oJNHkj/JbWVDdw7IpngeZNd55piKd87Go1M\ncmcqUNHFhJRq0ODqwog+aCSd2lZtcF1Rg02SdAayvfjR+2eLMVj8nhKV/HSgsqit\nwdosbuITXrjmLEe4dhyCmdeDcpsZlGK2BQcIB/ypN7PahCC0aSLBDSZaZhvWTR6Z\nRKIEJ3p0ZZURZhNX1gCnBLxMIgd4uYq+tIo81e6apD9Hoo2nKK4WLQwofFbZ4A66\nRkqd8Vwb6FYbgBnl8YukhXT88TPd/RZsrnAgcGqEIhSSyu/G2XC2vgxEDy1EpgTD\nYxJasCoGC+d4zn4C6qX8Vr5NFGESDAPLSWD3T1JYk0t9z9LeqxUZn4zE3uxPzwZy\nJzhWC4LWrvmbV16ox6YSN79AMEyStQCFP1HGDqfTgG7vEaDsSyMB06P4FLVUqqSK\nQ9mvIZgPPNaFkmGFF5iG+Hmhw0/ZR/Zenm6oB9IEy72keiTWfhFG5Khb6qDFO9oS\nr7Myb0yUY+sOtljtn9+zvlMJz1GtzwIDAQABAoICAD8glIjPJucvY7EnoRyPVSWa\nHtRx3EK/BUhmWCSxRps40Fh0hfmfwcTWgn1Wf0yCuwTP1iyjy7pYzwceh7M/QshW\nQMcVSxv8t3NsON47TXup2OAO1LYviJ/zTd9n9YDuXaZa7X01lNjTGKptPAko67DF\nOukMxD1271vyrO6FozelF44tMGkao5XS/L0/4AHiJUI4aEfZtCPOhr/gCr7p2Nqx\nwzYYCLiSxRmuRPL3m737cIJBR/ECw81FXNNzc6n8Se5D6uS6EPEmXjc9j63EctLL\nV4cd4qrBv5FpzRAcsoe83CZ0Uu3zFuvXNe0rhVruQsdYDJsBWOK1Xiaeh4Rj/Sn4\ngyy5sgFp8BhwPaN+FXrXw1CdLeV/9djPfrU6qj0kMrud9QolzpaCe4ZMmIuuOqTa\nAFHhvi29H4GeEtJMyGp4qVgwHYjZHWeyFVajPx1qxln6cSLVPSBNAodX3Mp4xf4P\ndgPBc7/mPZChahP7NjMfrzNp8mMaZUGFAB20hKgjkG8+L+GyHki5EuwQaT4ZVlfV\nuGDGR/26a5Ngv5tS3O/51ua1oiYDQTt0gGIV2a3/SqQaVb04aDQxlGU7sosLS/KN\nFqMXznY6bP5oZVDSxLghBC5/EaoxznLQLJ0I25S8Ke60SszedSrSG8FTa5D25cW+\nMYeSc6QQKEoxQ0SDGj2hAoIBAQDVS7OuNDk6YC+PS8RGEGxdTlQh24XGyY7yXUpM\nRoFypL1KBhVaScjHGAyKCHzNgO05N90C9Ygqsij1+QaJo6lM45uw8xPGM2NHEmJr\nUJzoHAN1+E3qmDKyyE8XRndhvG5w90fok8i4b81vQm9q5bdSiTLyDbHqTz6lWg4L\nWAGhreJF0mizDyE1ZgUVK/ha8DpuR+yqy4Jxo7bhXoh7BwqDt6cVoiTDzSYl54LT\nBkQ/u2UPlStEh/Tj8AQArblZFFHA9f/WrfyNcYp1O6jwFv622OyfSKNFCpiZq7HE\nJFz3upYj9aWEQ3R6EkzRfQdUq9N+5xKu3GudejaDCuMmr2YRAoIBAQDO3oSrX+m4\nGQt9cBBz/+l18szWjRyuE2hcvx3tIlJtGP7HWdFcjZ+TMB0iLYrbdNj97CZ4Ryw+\nZQfYmd/ylArpTXs29MzbosPRC/jX817HqfNyR4v55mtmGoYqwPlFW4xZNP2islZU\n1kgrrlysIrYTCEBBKjLGdRqb++GPUe777/rW5R5doO9s7pn6ieQ6C0wlDBkFlFrW\nRyZ8uwJyG/XS6I3Tampya4P23PlP+v99a8c/AmwepfMx2n67TvSvunyo3IVdqL1b\nB81+53wEuYrz9UC7F19N9Gm/IBEXaZX+Rht0/XxFYwzpbYzcJMefneYmIptu+wD+\nM4H4xJX6wnXfAoIBAQDKX5Iy1f/6YCqf1i56n7iBawEuQp+R9cl4MYV+C2Nkx+OF\naXI3AUzLggjbqqPnQ81Qfa1n0liI0hNFFirayvqmJkqhQHDhm/40/797vLezDmlG\nM/qRfCiWMrHADq7Uf7l121lR1W4beJC9YJZgIWanm99HhDDrdJamwmQS5URfB6Fp\nx/Jo+hDzHkHyTY7NkaKO4hUuE/tHISMyf8QUnqCeStDwGLCzSmFIk3kwCYEVyxJf\nD5RG6Iw0/JR/pFT4rOvInl9IbDn0ZecNxjZK3jZ8fCM+Geg3aI9TNnFq/Wlr7o/n\nvHl3nZzU+aoDFZKwBnubq1ixqhc9CijQerL9EGxRAoIBAQDAZ/BnYNcF9q1cJw32\nhjCDFqf0ad0h/0US9mMEOucFN7lIez6h4cto39hJAKjlAuIMEkeZmUEKa3eHu16y\nxYT8h6cxbzDWm6WbWpJBcMdX17dpNCh57xk3JzZgr4lpPAPmuMWrPEnVsFQB5LOn\nGsXUH9l7gp8lPKfaKsUZQzCPPR5GH2ZF2Ti3TZkDkJsobXeOAZmIOfrez+B5JIra\nzSyv1MKMv65v65Ya1l5ASIi3A7aW4U7klp8CYGF9H6uvgjkN6cVVXmt4LmKwROdx\nkY0u6I4jNVLcM5bjQBUFfJwYmuZQwq+B7eWFevIHk2HkEL2N/KQq7eR3ijq5wUZp\nq9JrAoIBAQCEnmfY4L5Nu0Z+9wv5gkxdebqRQUEtauVmBj5eydpTbEYkFmAEABlr\nY7BED9MhnvRiXwVUV1qyOceV175POMRsU9/Ng3Oz4lrmWRZlWnz4tFnnFbAAc6eE\nF8lhV9LUoAY9NygAezpGxmNkf/Y3hI4BhchdkspQfItIQsw2T1EWwoGFZ+EukDBx\n3JSoJZ/TjeviAmbApeUp/+3M8Kpcy8pj4zq6AU+OZa3b8/NONiYszNvhZZfSQ+ip\nvpXr6oAiSpUXzyQr0zUxC7szjLwBY/e+Wfo9A8g8CvBaeqmCo8kW0U6iGQ5A4MfQ\nOxkZ3F7pI9Me0Rznx5JLR6Gu78P1+58F\n-----END PRIVATE KEY-----\n','','http://192.168.22.10/dfrn_request/friendica2','http://192.168.22.10/dfrn_notify/friendica2','http://192.168.22.10/dfrn_poll/friendica2','http://192.168.22.10/dfrn_confirm/friendica2','http://192.168.22.10/poco/friendica2',0,0,0,0,'','2018-11-17 13:50:05','2018-11-17 14:00:04','0001-01-01 00:00:00','2018-11-17 13:47:49','2018-11-17 13:47:49','2018-11-17 13:50:05','0001-01-01 00:00:00','2018-11-17 14:00:04',0,0,0,1,0,0,0,0,0,0,0,0,'',99,NULL,0,'','0001-01-01',0,0,NULL),(23,3,'2018-11-17 13:47:05',0,0,3,1,'dfrn','friendica3','friendica3','',NULL,NULL,'','','','http://192.168.22.10/photo/12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','http://192.168.22.10/photo/13931663105bf01bd94d90e243464200-4.jpg?ts=1542462605','http://192.168.22.10/photo/13931663105bf01bd94d90e243464200-5.jpg?ts=1542462605','http://192.168.22.10/photo/13931663105bf01bd94d90e243464200-6.jpg?ts=1542462605','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvAs4TR4AI+nlBt8d7BHD\nViq6w3UslHqURRUo0+sfAE5RL45im2z+ryPag1K5dbs5pcoa6hfk9+EREgoWlwnX\nX/8UdkvkoHE6/JDFimuaK7pequwUQbQoOXkkBAyPtN8YhjfGM19CI5FIVByY+O8p\nO/lGls1h5bxYEIgjA0tTDw5FuhPtiw9SJAPtQs5Gueoe9y7VwXNLNenKI6r6/Kfo\nzgYKJS98ibCllMiDIY0ixZZqhsh5+oEAsGPaNtQSgw09fWyyDNUKOenC4NhhMWsY\nBtTgDOPkM1AgidQKny7wtfo04YCn13SZuU6cWXqCx2pTgxLpBRgNbfkf6/DerVEO\nh2/Fxx2oMrRqLox+kAj03zrKnto3n5cYASlmfeEmUBHtjc/qPbuEzm+FEJKTXkrg\njt0+xzTQxPr+oFMinACdTMu6J4lB6dGCJxbx/Dx6FcRKymUYGdLvZWITfKZAikRh\nX8Pll3bFExOk5ieOdBLRt5ujGHuMbV204qpUsL0kDU9/4aMnpJei4EZuw21ovDH1\nVchVjJS4fzsJkaDfA81+83ADHXU10+UJ7PXAq7U416nC/dr30Gp2cxYb1qELYe4W\nGXE9k857z1o3BevJi4smy0FeydVVEVJ/1SPhPcdKHIA6sfP+TzuvWk7zK+xDwdyb\no4/nVNHD26NC1mVTTAjR7t0CAwEAAQ==\n-----END PUBLIC KEY-----\n','','10fde14e2501ffb578f1121b3d563d79884e322fccc694a2648d0a0cea6e489d','http://192.168.22.10/profile/friendica3','http://192.168.22.10/profile/friendica3','friendica3@192.168.22.10','http://192.168.22.10/~friendica3','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArFxQxdE4AdvgDW5bZ2e3\nnRpsMfa6iwwFJ+UhEBvvibyRs7Wf4rXLeAqSpY7OEKNjTM9omZoQjdrK6vlSUsXy\n64XfW2RaKDTZ9U9SOVE8HAV3ZbvFer/8EdTpAKChLxt9onifjgqqeqEgXTw7aP00\nPwVGo7Wcxa8PFFxJLU0/CP6CTR5I/yW1lQ3cOyKZ4HmTXeeaYinfOxqNTHJnKlDR\nxYSUatDg6sKIPmgkndpWbXBdUYNNknQGsr340ftnizFY/J4Slfx0oLKorcHaLG7i\nE1645ixHuHYcgpnXg3KbGZRitgUHCAf8qTez2oQgtGkiwQ0mWmYb1k0emUSiBCd6\ndGWVEWYTV9YApwS8TCIHeLmKvrSKPNXumqQ/R6KNpyiuFi0MKHxW2eAOukZKnfFc\nG+hWG4AZ5fGLpIV0/PEz3f0WbK5wIHBqhCIUksrvxtlwtr4MRA8tRKYEw2MSWrAq\nBgvneM5+Auql/Fa+TRRhEgwDy0lg909SWJNLfc/S3qsVGZ+MxN7sT88Gcic4VguC\n1q75m1deqMemEje/QDBMkrUAhT9Rxg6n04Bu7xGg7EsjAdOj+BS1VKqkikPZryGY\nDzzWhZJhhReYhvh5ocNP2Uf2Xp5uqAfSBMu9pHok1n4RRuSoW+qgxTvaEq+zMm9M\nlGPrDrZY7Z/fs75TCc9Rrc8CAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/friendica3','http://192.168.22.10/dfrn_notify/friendica3','http://192.168.22.10/dfrn_poll/friendica3','http://192.168.22.10/dfrn_confirm/friendica3','http://192.168.22.10/poco/friendica3',1,0,0,0,'','2018-11-17 13:50:05','2018-11-17 13:50:05','0001-01-01 00:00:00','2018-11-17 13:47:49','2018-11-17 13:47:49','2018-11-17 13:50:05','0001-01-01 00:00:00','0001-01-01 00:00:00',0,0,0,1,0,0,0,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL),(24,6,'2018-11-17 13:48:45',0,0,3,1,'dfrn','friendica4','friendica4','',NULL,NULL,'','','','http://192.168.22.10/photo/97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','http://192.168.22.10/photo/10196270915bf01c3d3dcff106620826-4.jpg?ts=1542462606','http://192.168.22.10/photo/10196270915bf01c3d3dcff106620826-5.jpg?ts=1542462606','http://192.168.22.10/photo/10196270915bf01c3d3dcff106620826-6.jpg?ts=1542462606','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtOfQNRnGbzBy9Rc7gLAI\nrB5Fp2SBFfjRnd5g99HKWI3Amz5BXdcOWsgikVtwSVGDD8TGPj56qIlp+ctfYkPZ\nn5QSGfA3VS5eqWNfE9aG3XZAO7M7x2pKVaf79ciuYK0HQrmCeClB844x8rXDmW5m\n1k6Any22lpXHdDY8heR6O/uLIG9i/eRiD8tFMY3ATVkJ4MF5TY/m0ZGhHAMfK9dm\nkJzNvJc0cYe6kBmpDDmlJwObo75NfPBi3bqTaIZvTxda6lgWcuv/J1IR0fLhW8IJ\nbbXcd/fSNHV5zdqPmZsiu4+nx1xf+40J1v9+uKCCxH6UlUR9HLcCpYH6PDmoEkRk\n2WVPsU2+crVbY5cbNx08LVe6ZGl/onhTM35t2JBpo9ClgTSmpgEkRQsBebWNEKn3\n/y7Ib+/IywdomRUTgXVtKt5+90FdEhNwrba2CyD3dFW/CQCwx+363juCZr16EiKx\nbG5VJ1aIN8/My9feB9fklqyCpy0vkMI9NptQbtKntueETeLTqKlZ5uJJZJtd6S7z\nrTAd6vx5WLOMYlfQF2K7MVCwYUVfcIoWKxAg3SU+5sIG+cSrreT67wxt6k6sEEOw\npRZn3qZ13vPpO1mJelhqQeDZYutywYHjNj+L5TjCIZqIS129MZbqDJELkjTmckRV\nAZmzTHqCDXwd70IddYvuuJMCAwEAAQ==\n-----END PUBLIC KEY-----\n','398aa5209e0dbf9f0933927563fa9f62fa5484bd124182598e41ebdbd4684d05','','http://192.168.22.10/profile/friendica4','http://192.168.22.10/profile/friendica4','friendica4@192.168.22.10','http://192.168.22.10/~friendica4',NULL,'-----BEGIN PRIVATE KEY-----\nMIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDJYkBgoJRvyGAo\ntEKURq+1fpLS8qasFZkUc786Vo6c9RAkXOpu5HoG4fETJvozGGMP87BPzxV0rvbG\n8640p+CGWKQGIf4m8+/0TlDo/Q6vyZtR6jkfrbvU2XYrErLGnaRJvhNkIhQ8Qwf0\nweK5Nes4LZEPq/65AbJ9+dWJ4L2s0djjx94U7S6lChkTtSXIVGgGd2fQcxzv6CaD\nvk9aENhQHwjs3BVOhX198OVTywcsWKLUtu9yY5zDE/9lbv5BpWOdIWNHZIqNx5+i\nPmxTk/KpUfTehodRZYFH+KA+T0bPpQOpP6KXHdcm/x3PplNF3+P3GXl7E1MC3mVF\nhmjecF5hzo4iYmT1a962rBHBCc+4dbCJPlWKgb6W+076iF1nkNFDzk1RHGyZQj8p\nZ423v1upPKUWn1qHmLgM9SCNp9gOPT+YuXmEZgxhLo3KEgvc7NFyiX9uSdOGmz5B\npkpQdpBTXnA30P7cQkoX+Ciul3ZUstL3Wu0dCa5MvzNi4FtNPmpRv2j+kKzzoGnn\nD3ztIc4+Y66pH/T0ARcGPjDiXaNSyHejN6ahFudaxRied/QG1O/5A54iWCrQQ0Pv\nXg+/cSg2yJKoDAHfgaCvADt0xYDfxK3t0QCV5XN2cM8wRCS+6BRk2s0JiBiAo2j5\ntR22diqdcR80OniMEa/iDS1fGr6AmQIDAQABAoICAQCYJ2/Ukf8U5iQhHPEg7rdb\nPaLZVxSu+DKMzVcyUKu300C6+Kj32BCKmrN2cQChEk/mgYw5AJGJc5hogTyh9CUj\n3F0xdQV9kNk/kNx47JnoHz8HCRzX3oAINbWenaYNgpXaUY59HXKEhXDBcKxIm4B5\nFZSAbscqKSofHGBGqFMm+/YPQ7d7wCh58cM4rKk7Tuq52AXL7O10JcbTyzpRJmEJ\nSCmKLE684QcL3LKoOMHWs7FzXjRUDQcoLTfN/6qDFt7Ina1RB5nXvXfTMa7PBv1V\nCOMmLiaXTUX8htErwuIRiO/XNIk3/AfPIvn3JgfMx3iJ/elXICacCEQj34Xkaqoj\njLf05YZDbFRLV4pZTuMLPWq+mG27NK3ayOhyaGp/NGia7PadgyJC4Bsgo3v+zpiy\nxVmvNOtt4HSFi3CmAaX0hIBQTFzEvWIjF1CDawgztFn/B0dwep1AFZnLuQ5oWKHs\nHW2aIB3zZtU1bqz4GqvXfhVqIyf4aFZObdkxYagMkAirXWKyxT13YRLtVKlWewC8\nQLIiwfm+JISQxVSFnzJuLK1oFRiFbqNuSXLzd25SZiGuh52C/9y/FbxniS4uF/oD\nrTFqLdRAj6aNmDkkPzvbdc55/1/tD989d2ouHuxM2EBgZqLxqsF/gpxnO3QOAjdo\nnI40HdCtRSk6vAu5kklDMQKCAQEA5argQ3dWR7uigsnOO2nLpeFJ6EAP8P1c2Dtf\n8cMQgsnKAIeBiZ9bokuwVvKmxITXrWtRcNUWbSV3hAEQ2Ibp5fO/tGlle25tDH3R\nTZNPhw+k3BtKqJdT0/TZB7dW3T3SDVmCYSlzEoJKwuC4PJuCVcTobnvSDqyqM1nL\nnoWkqLijwQ6JSm/mHbwZ5gctQiHzEJXxqrONvfxaNg/nq/TYRrwc3xOtqry1ktZb\n0C2attsyvloltOaeXXjR6W34J93VYDXS1vAw36JQI4jZgDoM6eyvka56DOkEIfEN\nogXDaQap/Pa9kMQ/Cx9f+qKY7dCjHM9L6hBus71NpvqWxXKsawKCAQEA4HkzsvYY\neqTJXKRSjJJAmwC23zuymKYuINOPlPwzXdB4ToUBy+vrc0A2ldL+j6K31+oGSkf3\nUrp8dd477JmtRcFT5d8qQj6oKs/pPS7gGD0p92SN1Sd2fceXoaT67Wq3wBdPjrAl\nznogHZcCH7BlPrEUPEcg1SsVnCsoUF2JW3PJd4dQB5jUBu/8eveqt1R9ciqg5Tck\nN/bY5eAxlKq/v6ayJ4R7e1dkdnnyhyyCzSN0Ob8aaP2uUUVepurTGq1GYfzMHKdk\n8yWypNOMMVxw8iehuuqPkr5eFv3fFgqnrTnmQjjbX9nhPs4G4RLmfaxVGEif5FlA\nGaYQRFUKj7lICwKCAQAjS9ebhsOj0ppvL0SarO+3VqBdKTtJ9iZGtRlRtoDbGNgK\nrMijtfIHR0qakkA/A4uCA3RIuvbvX0q25tMH8/QOex+DQo9uINJxkQSRv4oBX84e\nZbNbpaYkdQTFws9+wPl/Q7pd5FjjB1MmEBNAfUXSmKiAEld+GdsueSZp/nAH3hiM\nmwdOgVQETdxNFd1GxKDuc5zodx/ZiubyWA9qxf5XIKHvRr7x9n6RSpBhtiCI6bcq\nugABhU/hXaglD9mLhvQ8DQmSLufT9sYKMAX9Ru6lJNL2uLHZOhaAgONveyNFCNkn\nH2SS0xY9R10gz8xhACeRTeqE1nGs/fLpLqntPmpxAoIBAQDGKHiJHVKSwfG4RJ9S\n1LEPpFvLSSnqM5k5BUoVHWZDBQuPVT82w3dAcIk/TdnG9sAQbNlMracZcuL4Mkz4\nGtmpYHct0AnAHQvbb1rY1g6hlyz65duHNaUWeCHVYozZFYJMosdqkPlvAsRjGrGX\nQ+K8qxnP9IJ5a+VRzY9zEn91KgvJ5ruxWSqjTSu3afdci8uKAzOx5TGl7dWfaICc\nWveWuhM/a2aOhaF8LT76MULu0MODTr6DvJ4rxG9ALsBZJmmhisas7ODi/H5tnwp9\ncLuMKYxOM063HjJ1XXuYO6O1+gzYnNScEv0SslHEUykB/CXKoCH2NQuvGLf3epMu\nOUPtAoIBAQCQGuBcoU71tmGYD1ERGrohZCZwqP+2TPJjCiIzpJofNbe9CZhW54nU\n2ojpd3EE5pXCfxMNuEutAjU5S/BOWIJKb79pR5u7v4BpEb2AIAPWITz9bBRXEju6\ncZPKTYiEURcSfpyVyLBjiuk14VxnDZccQ6gZK+0BPRYEl3nRgYOHIVlizoJHJAjw\nBBuKYJp2WN4b1MCvhnRRL/eaDfG4MPux9nKwbQrEQNd60benoh/doRTKor2XfpnW\nQMw/zLn0p++8Wbr3Bd7YhmWhBvCp6elJcSVQ3QRQC3t8tfoaeaJiLdDQEaDAygO8\nU/inKhObeent3pSH7HybR8mM8Q5XTatA\n-----END PRIVATE KEY-----\n','','http://192.168.22.10/dfrn_request/friendica4','http://192.168.22.10/dfrn_notify/friendica4','http://192.168.22.10/dfrn_poll/friendica4','http://192.168.22.10/dfrn_confirm/friendica4','http://192.168.22.10/poco/friendica4',0,0,0,0,'','2018-11-17 13:50:06','2018-11-17 14:03:08','0001-01-01 00:00:00','2018-11-17 13:49:20','2018-11-17 13:49:20','2018-11-17 13:50:06','0001-01-01 00:00:00','2018-11-17 14:03:08',0,0,0,1,0,0,0,0,0,0,0,0,'',99,NULL,0,'','0001-01-01',0,0,NULL),(25,5,'2018-11-17 13:48:47',0,0,3,1,'dfrn','friendica5','friendica5','',NULL,NULL,'','','','http://192.168.22.10/photo/63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','http://192.168.22.10/photo/11789807665bf01c3fd8ccd829485384-4.jpg?ts=1542462606','http://192.168.22.10/photo/11789807665bf01c3fd8ccd829485384-5.jpg?ts=1542462606','http://192.168.22.10/photo/11789807665bf01c3fd8ccd829485384-6.jpg?ts=1542462606','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzbQgk0okIu48OTsuvI/j\nnTYfKREWuHx0Rkr/44zKv9NGOJItxb82OoK/59o4l2mkt3REOwEzsSeAUe8VjkFU\nnfmjTTg8GqDCQ07Bmux1lVdtyAIhqr3uMraS8bODUMRFnDSX39rYYUH+h7oBZ44k\nW2vGvnWKh8BYPmV+hAab8TuJBODrZy1z5A1lc9CSSoZCiEOSvO5tGgiTBWW/CUoC\n6jR/BqZy/jlbiuED/t1Hn8dKCyPkAUppFhVJgSiSaysLeQlGsw58QYvD4WJXWbGh\nOzBDyR5hmSPuRuCxWD0GkpCnZGtkLhrJHAhYysAvqlc6Oo+6leRuLq2S05cZI1cL\nwsjapgnIvPCSIm7OkFlEimqveMNTOKNbcyIHaq8kL3ZyUYWuygVndL9AdUhIEAkE\nOROFlAyv0fC0tbBhnsJ/SifvEGYOaO4eRB1mvvY2R+JU4gPXLWbeNSNrn4zpTdIL\n0pwDJvLAv+tgeheBz6fNyKqETeclMEuo+GUs3nB8zeO2ZJXwzAgqMt5/Vr27v8d7\nk+Cer7ydUT8QTlsRGTAjaWicDFPLlH9v2v15JEaDqjtIJ9kUdAaj+BnR3+j1x86g\nSrJa5SV4kdu/hduRtIfnhKTpu/ZnxhQzkWuu6gWtjCpLzTuaHybnh69rSz7CKoFU\nXnqm6IVFII/ny2a7I1KrMFECAwEAAQ==\n-----END PUBLIC KEY-----\n','','398aa5209e0dbf9f0933927563fa9f62fa5484bd124182598e41ebdbd4684d05','http://192.168.22.10/profile/friendica5','http://192.168.22.10/profile/friendica5','friendica5@192.168.22.10','http://192.168.22.10/~friendica5','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyWJAYKCUb8hgKLRClEav\ntX6S0vKmrBWZFHO/OlaOnPUQJFzqbuR6BuHxEyb6MxhjD/OwT88VdK72xvOuNKfg\nhlikBiH+JvPv9E5Q6P0Or8mbUeo5H6271Nl2KxKyxp2kSb4TZCIUPEMH9MHiuTXr\nOC2RD6v+uQGyffnVieC9rNHY48feFO0upQoZE7UlyFRoBndn0HMc7+gmg75PWhDY\nUB8I7NwVToV9ffDlU8sHLFii1LbvcmOcwxP/ZW7+QaVjnSFjR2SKjcefoj5sU5Py\nqVH03oaHUWWBR/igPk9Gz6UDqT+ilx3XJv8dz6ZTRd/j9xl5exNTAt5lRYZo3nBe\nYc6OImJk9WvetqwRwQnPuHWwiT5VioG+lvtO+ohdZ5DRQ85NURxsmUI/KWeNt79b\nqTylFp9ah5i4DPUgjafYDj0/mLl5hGYMYS6NyhIL3OzRcol/bknThps+QaZKUHaQ\nU15wN9D+3EJKF/gorpd2VLLS91rtHQmuTL8zYuBbTT5qUb9o/pCs86Bp5w987SHO\nPmOuqR/09AEXBj4w4l2jUsh3ozemoRbnWsUYnnf0BtTv+QOeIlgq0END714Pv3Eo\nNsiSqAwB34GgrwA7dMWA38St7dEAleVzdnDPMEQkvugUZNrNCYgYgKNo+bUdtnYq\nnXEfNDp4jBGv4g0tXxq+gJkCAwEAAQ==\n-----END PUBLIC KEY-----\n',NULL,'','http://192.168.22.10/dfrn_request/friendica5','http://192.168.22.10/dfrn_notify/friendica5','http://192.168.22.10/dfrn_poll/friendica5','http://192.168.22.10/dfrn_confirm/friendica5','http://192.168.22.10/poco/friendica5',1,0,0,0,'','2018-11-17 13:50:06','2018-11-17 13:50:06','0001-01-01 00:00:00','2018-11-17 13:49:20','2018-11-17 13:49:20','2018-11-17 13:50:06','0001-01-01 00:00:00','0001-01-01 00:00:00',0,0,0,1,0,0,0,0,0,0,0,0,NULL,99,NULL,0,'','0001-01-01',0,0,NULL); -/*!40000 ALTER TABLE `contact` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `conv` --- - -DROP TABLE IF EXISTS `conv`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `conv` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this conversation', - `recips` text COMMENT 'sender_handle;recipient_handle', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Owner User id', - `creator` varchar(255) NOT NULL DEFAULT '' COMMENT 'handle of creator', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation timestamp', - `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'edited timestamp', - `subject` text COMMENT 'subject of initial message', - PRIMARY KEY (`id`), - KEY `uid` (`uid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='private messages'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `conv` --- - -LOCK TABLES `conv` WRITE; -/*!40000 ALTER TABLE `conv` DISABLE KEYS */; -/*!40000 ALTER TABLE `conv` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `conversation` --- - -DROP TABLE IF EXISTS `conversation`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `conversation` ( - `item-uri` varbinary(255) NOT NULL COMMENT 'Original URI of the item - unrelated to the table with the same name', - `reply-to-uri` varbinary(255) NOT NULL DEFAULT '' COMMENT 'URI to which this item is a reply', - `conversation-uri` varbinary(255) NOT NULL DEFAULT '' COMMENT 'GNU Social conversation URI', - `conversation-href` varbinary(255) NOT NULL DEFAULT '' COMMENT 'GNU Social conversation link', - `protocol` tinyint(3) unsigned NOT NULL DEFAULT '255' COMMENT 'The protocol of the item', - `source` mediumtext COMMENT 'Original source', - `received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Receiving date', - PRIMARY KEY (`item-uri`), - KEY `conversation-uri` (`conversation-uri`), - KEY `received` (`received`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Raw data and structure information for messages'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `conversation` --- - -LOCK TABLES `conversation` WRITE; -/*!40000 ALTER TABLE `conversation` DISABLE KEYS */; -INSERT INTO `conversation` VALUES (_binary 'http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082','',_binary 'http://192.168.22.10/display/friendica1/3',_binary 'http://192.168.22.10/display/friendica1/3',1,'\n\n http://192.168.22.10/profile/friendica1\n friendica1\n Friendica\n \n \n 0\n 2018-11-17T14:00:02Z\n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n true\n friendica1\n 2018-11-17T12:39:46Z\n \n friendica1\n +00:00\n \n \n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n \n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n \n http://192.168.22.10/display/friendica1/3\n http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082\n \n <published>2018-11-17T13:51:58Z</published>\n <updated>2018-11-17T13:51:58Z</updated>\n <dfrn:env>VGhpcyBpcyBhIHBvc3RpbmcgdG8gZ3JvdXAgMS4</dfrn:env>\n <content type=\"text\">This is a posting to group 1.</content>\n <link rel=\"alternate\" type=\"text/html\" href=\"http://192.168.22.10/display/930bb26b-125b-f01c-fe10-e5f035205082\"/>\n <dfrn:comment-allow>1</dfrn:comment-allow>\n <dfrn:private>1</dfrn:private>\n <dfrn:diaspora_guid>930bb26b-125b-f01c-fe10-e5f035205082</dfrn:diaspora_guid>\n <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>\n <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>\n </entry>\n</feed>','2018-11-17 14:00:02'),(_binary 'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',_binary 'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783','',_binary 'http://192.168.22.10/display/friendica1/1',0,'{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/v1\",{\"vcard\":\"http://www.w3.org/2006/vcard/ns#\",\"dfrn\":\"http://purl.org/macgirvin/dfrn/1.0/\",\"diaspora\":\"https://diasporafoundation.org/ns/\",\"manuallyApprovesFollowers\":\"as:manuallyApprovesFollowers\",\"sensitive\":\"as:sensitive\",\"Hashtag\":\"as:Hashtag\"}],\"id\":\"http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928#Create\",\"type\":\"Create\",\"actor\":\"http://192.168.22.10/profile/friendica4\",\"published\":\"2018-11-17T13:54:22Z\",\"instrument\":{\"type\":\"Service\",\"name\":\"Friendica \'The Tazmans Flax-lily\' 2018.12-dev-1290; http://192.168.22.10\"},\"to\":[\"https://www.w3.org/ns/activitystreams#Public\",\"http://192.168.22.10/profile/friendica1\"],\"cc\":[\"http://192.168.22.10/followers/friendica4\",\"http://192.168.22.10/profile/friendica2\"],\"object\":{\"id\":\"http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928\",\"type\":\"Note\",\"summary\":null,\"inReplyTo\":\"http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783\",\"diaspora:guid\":\"930bb26b-135b-f01d-8e3d-8cc050176928\",\"published\":\"2018-11-17T13:54:22Z\",\"url\":\"http://192.168.22.10/display/930bb26b-135b-f01d-8e3d-8cc050176928\",\"attributedTo\":\"http://192.168.22.10/profile/friendica4\",\"sensitive\":false,\"context\":\"http://192.168.22.10/display/friendica1/1\",\"content\":\"friendica 4 testing <img class=\\\"smiley\\\" src=\\\"http://192.168.22.10/images/smiley-smile.gif\\\" alt=\\\":-)\\\" title=\\\":-)\\\">\",\"source\":{\"content\":\"friendica 4 testing :-)\",\"mediaType\":\"text/bbcode\"},\"diaspora:comment\":\"{\\\"author\\\":\\\"friendica4@192.168.22.10\\\",\\\"guid\\\":\\\"930bb26b-135b-f01d-8e3d-8cc050176928\\\",\\\"created_at\\\":\\\"2018-11-17T13:54:22Z\\\",\\\"parent_guid\\\":\\\"930bb26b-205b-f01c-e722-bc8141142783\\\",\\\"text\\\":\\\"friendica 4 testing ![:-)](http:\\\\/\\\\/192.168.22.10\\\\/images\\\\/smiley-smile.gif \\\\\\\":-)\\\\\\\")\\\",\\\"author_signature\\\":\\\"Vb6Zsv9mbohlyjwpJygXcWfB+hheZSwDPaIg91l3ktTy\\\\/U7LtnjaPMwi1reyVMKJkJOStrBKbLU4K4Wf5H16hjIRHK76gvsFjAHNJ0+38RKeYhOoYrDhG037XqeqO\\\\/HiXvQUXrOEmOck4P1Z+25W6pW38HuSZOdja02fF1VdUipSytxuJam5JBeo0akZAAWSRw1\\\\/OseUMxdawEoUz0XKUoufNlfgFjU\\\\/Z6TgzEEC\\\\/bGr7JyOMMqX6BaGQi65WLuBdtSPteFvz+qWfBcosBmpuoTQwvx7p68WcNyv2B\\\\/zP5N1RHL1\\\\/JTpYX3rD9aab9bFei5VuMczDzU6wBxZUF718MG+00A3zJ9Lh7Zikad3Ryn\\\\/HQvdT5DlNyCVIs\\\\/9hLRsEUSwvoxnCR1vOwt7oZtwejHiCcDcrM+UM7nykblb6Ms0ds2RZ3BrlSU0JFRjzIj+sDq\\\\/NBcwxRPec2rsdlAF6ogxRx3I19173ZF6RrL+mWT1TpKPOpIseN5megEeInHf3RAn68JmE\\\\/6v3DBsEPNTleofzzJQpMIrN5j4hXps5O7uB8YJ3+2rHUs\\\\/qHz7M8LhndFqXeqtCbLeQOkeZcwqV+5KvXKg+yezZzQBG21RE+JYMJx1LIZ7N+22JtcdSMCwhYcVUTIfuRX2ka+Pfuq2Dszm0PBwq3GNC5wrXpwTlLk=\\\"}\",\"attachment\":[],\"tag\":[],\"to\":[\"https://www.w3.org/ns/activitystreams#Public\",\"http://192.168.22.10/profile/friendica1\"],\"cc\":[\"http://192.168.22.10/followers/friendica4\",\"http://192.168.22.10/profile/friendica2\"]},\"signature\":{\"type\":\"RsaSignature2017\",\"nonce\":\"b65c0d86d324429297ed66e65ab2b5d68388e37e8d323b9fae5d35caf8c89434\",\"creator\":\"#main-key\",\"created\":\"2018-11-17T14:00:02Z\",\"signatureValue\":\"\"}}','2018-11-17 14:00:04'),(_binary 'http://192.168.22.10/objects/930bb26b-155b-f01d-60ee-5ee161000810',_binary 'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',_binary 'http://192.168.22.10/display/friendica1/1',_binary 'http://192.168.22.10/display/friendica1/1',1,'<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:thr=\"http://purl.org/syndication/thread/1.0\" xmlns:at=\"http://purl.org/atompub/tombstones/1.0\" xmlns:media=\"http://purl.org/syndication/atommedia\" xmlns:dfrn=\"http://purl.org/macgirvin/dfrn/1.0\" xmlns:activity=\"http://activitystrea.ms/spec/1.0/\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:poco=\"http://portablecontacts.net/spec/1.0\" xmlns:ostatus=\"http://ostatus.org/schema/1.0\" xmlns:statusnet=\"http://status.net/schema/api/1/\">\n <id>http://192.168.22.10/profile/friendica2</id>\n <title>friendica2\n Friendica\n \n \n 0\n 2018-11-17T14:00:04Z\n \n friendica2\n http://192.168.22.10/profile/friendica2\n friendica2@192.168.22.10\n \n \n true\n friendica2\n 2018-11-17T12:40:07Z\n \n friendica2\n +00:00\n \n \n \n friendica2\n http://192.168.22.10/profile/friendica2\n friendica2@192.168.22.10\n \n \n \n \n friendica2\n http://192.168.22.10/profile/friendica2\n friendica2@192.168.22.10\n \n \n \n \n http://192.168.22.10/display/friendica1/1\n http://192.168.22.10/objects/930bb26b-155b-f01d-60ee-5ee161000810\n \n <published>2018-11-17T13:53:36Z</published>\n <updated>2018-11-17T13:53:36Z</updated>\n <dfrn:env>ZnJpZW5kaWNhIDIgY2hlY2tpbmcgaW4u</dfrn:env>\n <content type=\"text\">friendica 2 checking in.</content>\n <link rel=\"alternate\" type=\"text/html\" href=\"http://192.168.22.10/display/930bb26b-155b-f01d-60ee-5ee161000810\"/>\n <dfrn:comment-allow>1</dfrn:comment-allow>\n <dfrn:diaspora_guid>930bb26b-155b-f01d-60ee-5ee161000810</dfrn:diaspora_guid>\n <dfrn:diaspora_signature>eyJzaWduZWRfdGV4dCI6IntcImF1dGhvclwiOlwiZnJpZW5kaWNhMkAxOTIuMTY4LjIyLjEwXCIsXCJndWlkXCI6XCI5MzBiYjI2Yi0xNTViLWYwMWQtNjBlZS01ZWUxNjEwMDA4MTBcIixcImNyZWF0ZWRfYXRcIjpcIjIwMTgtMTEtMTdUMTM6NTM6MzZaXCIsXCJwYXJlbnRfZ3VpZFwiOlwiOTMwYmIyNmItMjA1Yi1mMDFjLWU3MjItYmM4MTQxMTQyNzgzXCIsXCJ0ZXh0XCI6XCJmcmllbmRpY2EgMiBjaGVja2luZyBpbi5cIixcImF1dGhvcl9zaWduYXR1cmVcIjpcIkNMTDJcXFwvcnBzZHArRExoK1d1VVZHRkhTTFIwVDB3SFhHbVNzR3lEWmxVdktick5JTGd0ZkNsWDdlWHpnc3dMYmE5d0dBK24xdUdkMlZBRlc2am9yN2JoVGJxdnhJeFxcXC9yOU1BeXNnc3VGS2RNVHVBbjVFNndtTWVUM0lEVW1udnVZSTQrUXBmQldYSmRwRHpib2w5alJFM3psVWpKakErRHBDWUpkNDY2V3lsMGtvUzh1RHBzd29XM2Y0SXRcXFwvZnhVSDRYUzArTnAxR2xCQjRYRTFSZDNcXFwvM1ZzUU1sdHhiUUNZOGlRdHFcXFwvNmZRRFEzbjFIVUZFRVxcXC9uRWQ1eGFITEwyRllJNHVkWkUrVmRYZ1YraVNhRTdGa3NIZWJoRk9jMU9IalFZM1ByTTdwSmtaWmpiaVJNRElGMFk3UURjN1p6dEFTMlVaaTRvbHJrWHBXQUdYaXE5MW8ycVNvQlRnMldnQ1Z4ait6MzU1QkxJODU5Tk1nT1pWOU1DQk1RSURYZGl1OGRaeVxcXC9CNXR5cklLckF0QWw1ZFNlREZaVVhDenR4TzFCalZOcWRrUytlbWxzS0ZLMG1pRDZVcXNTa0FTZUd4dTZQUitNK0tVVkVqMzRQbmxWZzdYTzh1cFJHSVU3d2Vmemp6cjRIK21HS04xWHhmS3Z3UXZWM0piS0V4WStsenZkRkhJVUhKOERNd2ptY1NBZHpBYjduS2g1VFhvWUxlTFlSUGpFczY2dEE2VThRZFBWcHJFZFVpT3Qzb1l6dFVBamd1Vzlxb05ESkQ3VXdjZDEwVW11eVgzODJIbUhqWms4KzVmYnFKVXlEYnJ4NXh1Y0tBM1lsdU9Pb2lDVGNRbm5GYWpiOEU5aVZRY2IyRmhaYWNlZDJLWnNpNVRVUWFlRnh6Ym9KVEM1d2lVPVwifSIsInNpZ25hdHVyZSI6bnVsbCwic2lnbmVyIjpudWxsfQ==</dfrn:diaspora_signature>\n <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>\n <activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>\n </entry>\n</feed>','2018-11-17 14:00:04'),(_binary 'http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542','',_binary 'http://192.168.22.10/display/friendica4/26',_binary 'http://192.168.22.10/display/friendica4/26',1,'<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:thr=\"http://purl.org/syndication/thread/1.0\" xmlns:at=\"http://purl.org/atompub/tombstones/1.0\" xmlns:media=\"http://purl.org/syndication/atommedia\" xmlns:dfrn=\"http://purl.org/macgirvin/dfrn/1.0\" xmlns:activity=\"http://activitystrea.ms/spec/1.0/\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:poco=\"http://portablecontacts.net/spec/1.0\" xmlns:ostatus=\"http://ostatus.org/schema/1.0\" xmlns:statusnet=\"http://status.net/schema/api/1/\">\n <id>http://192.168.22.10/profile/friendica4</id>\n <title>friendica4\n Friendica\n \n \n 0\n 2018-11-17T14:03:08Z\n \n friendica4\n http://192.168.22.10/profile/friendica4\n friendica4@192.168.22.10\n \n \n true\n friendica4\n 2018-11-17T12:41:59Z\n \n friendica4\n +00:00\n \n \n \n friendica4\n http://192.168.22.10/profile/friendica4\n friendica4@192.168.22.10\n \n \n \n \n friendica4\n http://192.168.22.10/profile/friendica4\n friendica4@192.168.22.10\n \n \n \n http://192.168.22.10/display/friendica4/26\n http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542\n \n <published>2018-11-17T14:02:58Z</published>\n <updated>2018-11-17T14:02:58Z</updated>\n <dfrn:env>VGVzdGluZy4uLg</dfrn:env>\n <content type=\"text\">Testing...</content>\n <link rel=\"alternate\" type=\"text/html\" href=\"http://192.168.22.10/display/930bb26b-195b-f01f-925f-1a4363126542\"/>\n <dfrn:comment-allow>1</dfrn:comment-allow>\n <dfrn:diaspora_guid>930bb26b-195b-f01f-925f-1a4363126542</dfrn:diaspora_guid>\n <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>\n <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>\n </entry>\n</feed>','2018-11-17 14:03:08'),(_binary 'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783','',_binary 'http://192.168.22.10/display/friendica1/1',_binary 'http://192.168.22.10/display/friendica1/1',1,'<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:thr=\"http://purl.org/syndication/thread/1.0\" xmlns:at=\"http://purl.org/atompub/tombstones/1.0\" xmlns:media=\"http://purl.org/syndication/atommedia\" xmlns:dfrn=\"http://purl.org/macgirvin/dfrn/1.0\" xmlns:activity=\"http://activitystrea.ms/spec/1.0/\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:poco=\"http://portablecontacts.net/spec/1.0\" xmlns:ostatus=\"http://ostatus.org/schema/1.0\" xmlns:statusnet=\"http://status.net/schema/api/1/\">\n <id>http://192.168.22.10/profile/friendica1</id>\n <title>friendica1\n Friendica\n \n \n 0\n 2018-11-17T14:00:01Z\n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n true\n friendica1\n 2018-11-17T12:39:46Z\n \n friendica1\n +00:00\n \n \n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n \n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n \n http://192.168.22.10/display/friendica1/1\n http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783\n \n <published>2018-11-17T13:51:35Z</published>\n <updated>2018-11-17T13:51:35Z</updated>\n <dfrn:env>VGhpcyBpcyBhIHB1YmxpYyB0ZXN0IHBvc3Rpbmcu</dfrn:env>\n <content type=\"text\">This is a public test posting.</content>\n <link rel=\"alternate\" type=\"text/html\" href=\"http://192.168.22.10/display/930bb26b-205b-f01c-e722-bc8141142783\"/>\n <dfrn:comment-allow>1</dfrn:comment-allow>\n <dfrn:diaspora_guid>930bb26b-205b-f01c-e722-bc8141142783</dfrn:diaspora_guid>\n <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>\n <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>\n </entry>\n</feed>','2018-11-17 14:00:01'),(_binary 'http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429',_binary 'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',_binary 'http://192.168.22.10/display/friendica1/1',_binary 'http://192.168.22.10/display/friendica1/1',1,'<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:thr=\"http://purl.org/syndication/thread/1.0\" xmlns:at=\"http://purl.org/atompub/tombstones/1.0\" xmlns:media=\"http://purl.org/syndication/atommedia\" xmlns:dfrn=\"http://purl.org/macgirvin/dfrn/1.0\" xmlns:activity=\"http://activitystrea.ms/spec/1.0/\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:poco=\"http://portablecontacts.net/spec/1.0\" xmlns:ostatus=\"http://ostatus.org/schema/1.0\" xmlns:statusnet=\"http://status.net/schema/api/1/\">\n <id>http://192.168.22.10/profile/friendica1</id>\n <title>friendica1\n Friendica\n \n \n 0\n 2018-11-17T14:03:07Z\n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n true\n friendica1\n 2018-11-17T12:39:46Z\n \n friendica1\n +00:00\n \n \n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n \n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n \n http://192.168.22.10/display/friendica1/1\n http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783\n \n <published>2018-11-17T13:51:35Z</published>\n <updated>2018-11-17T13:51:35Z</updated>\n <dfrn:env>VGhpcyBpcyBhIHB1YmxpYyB0ZXN0IHBvc3Rpbmcu</dfrn:env>\n <content type=\"text\">This is a public test posting.</content>\n <link rel=\"alternate\" type=\"text/html\" href=\"http://192.168.22.10/display/930bb26b-205b-f01c-e722-bc8141142783\"/>\n <dfrn:comment-allow>1</dfrn:comment-allow>\n <dfrn:diaspora_guid>930bb26b-205b-f01c-e722-bc8141142783</dfrn:diaspora_guid>\n <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>\n <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>\n </entry>\n <entry>\n <author>\n <name>friendica1</name>\n <uri>http://192.168.22.10/profile/friendica1</uri>\n <dfrn:handle>friendica1@192.168.22.10</dfrn:handle>\n <link rel=\"photo\" type=\"image/jpeg\" media:width=\"80\" media:height=\"80\" href=\"http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007\"/>\n <link rel=\"avatar\" type=\"image/jpeg\" media:width=\"80\" media:height=\"80\" href=\"http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007\"/>\n </author>\n <dfrn:owner>\n <name>friendica1</name>\n <uri>http://192.168.22.10/profile/friendica1</uri>\n <dfrn:handle>friendica1@192.168.22.10</dfrn:handle>\n <link rel=\"photo\" type=\"image/jpeg\" media:width=\"80\" media:height=\"80\" href=\"http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007\"/>\n <link rel=\"avatar\" type=\"image/jpeg\" media:width=\"80\" media:height=\"80\" href=\"http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007\"/>\n </dfrn:owner>\n <thr:in-reply-to ref=\"http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928\" type=\"text/html\" href=\"http://192.168.22.10/display/930bb26b-135b-f01d-8e3d-8cc050176928\" dfrn:diaspora_guid=\"930bb26b-135b-f01d-8e3d-8cc050176928\"/>\n <ostatus:conversation href=\"http://192.168.22.10/display/friendica1/1\" ref=\"http://192.168.22.10/display/friendica1/1\">http://192.168.22.10/display/friendica1/1</ostatus:conversation>\n <id>http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429</id>\n <title/>\n <published>2018-11-17T14:02:02Z</published>\n <updated>2018-11-17T14:02:02Z</updated>\n <dfrn:env>aHR0cDovL2FjdGl2aXR5c3RyZWEubXMvc2NoZW1hLzEuMC9saWtl</dfrn:env>\n <content type=\"text\">http://activitystrea.ms/schema/1.0/like</content>\n <link rel=\"alternate\" type=\"text/html\" href=\"http://192.168.22.10/display/930bb26b-765b-f01f-5a43-22a585408489\"/>\n <dfrn:comment-allow>1</dfrn:comment-allow>\n <dfrn:diaspora_guid>930bb26b-765b-f01f-5a43-22a585408489</dfrn:diaspora_guid>\n <dfrn:diaspora_signature>eyJzaWduZWRfdGV4dCI6IntcImF1dGhvclwiOlwiZnJpZW5kaWNhMUAxOTIuMTY4LjIyLjEwXCIsXCJndWlkXCI6XCI5MzBiYjI2Yi03NjViLWYwMWYtNWE0My0yMmE1ODU0MDg0ODlcIixcInBhcmVudF9ndWlkXCI6XCI5MzBiYjI2Yi0xMzViLWYwMWQtOGUzZC04Y2MwNTAxNzY5MjhcIixcInBhcmVudF90eXBlXCI6XCJDb21tZW50XCIsXCJwb3NpdGl2ZVwiOlwidHJ1ZVwiLFwiYXV0aG9yX3NpZ25hdHVyZVwiOlwiUTdXcVZ6MkF2dUYybm9ZanNxM0RRQjNqXFxcLzkrV1JtaUpDaXkzRE1KR1lXTktYemdpazZMTnJqMnJjRUdVTlk5elFRTFhnS25jQlBaXFxcL3owQ0JcXFwvdGNFaU0xVUM2ODNEUURrWmgzNUVyYm1lWFNpbENWWGluRnVQZG9oXFxcL0FSZCtFQzQxcjdYdjBCWmxZTmZWTHFiSHJTWlpTY1d6amlYMVhEWGd1RkZjUVFBcHY5bEZINTJ1XFxcL0NcXFwvclVHS09VTlxcXC83blg5ZldFdlBZU3lucVZheWJaOFBkS1pHOU9hSTJ5czVMWldzUmVENFxcXC82SnY0bktmQ2twNkp2bEpHdXVTejBhenJnODA0WDVcXFwvRFU0WTB2VThVbDN6VE5mNHk5cDd0am9PYU5TZlR0MDFOdlJVcG1DV1xcXC9UaXo3UDVtOFYwWnI1Y3hGV1JPbjlUcFl0RVlyZjE4OTdRSHZBREV5TnZHNHhmaENaT3pacTBjNmo1eTd6UVRURFVXZzNZSnNOXFxcL3hhK2wxVlhSUGhjVXc2blVrT1Zjckx3T25sZjk1aWJKKzdZMHFQM3gzOFk2S2k2NkpISHRwQmdNeDE3RGE1eE9IdWtLemowa2Q2XFxcL2ptcURTOHc4Nm1UaUV4NXhieEJxU1xcXC9wYzlnODVRSFxcXC8zUW03Q0tiQ1BmRUNhMkxHaDk0M0pzSjAzU2NvSzFaY3JkVzZKSEZmMHRCWUo4SUN6ZVlTaG9CVktaWTlrNjg3VFFhNVNYbThwQmxmdE14WTlDQVQ4TklCcFpWRWxpdnlSdSsyR2x2aFg3VEgwMm1zNVBkYmp4b2VIYUNDa1BmcWcxQVpLRGhuK3U3OXVsb2RVQW5iOFNDRlxcXC9VYlp6RE10RXdLTVoyWDZPNmlhWEJWYXJPWDRWaHd3aFVmY25zRDFEaXFCVUZMeHM9XCJ9Iiwic2lnbmF0dXJlIjpudWxsLCJzaWduZXIiOm51bGx9</dfrn:diaspora_signature>\n <activity:verb>http://activitystrea.ms/schema/1.0/like</activity:verb>\n <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>\n </entry>\n</feed>','2018-11-17 14:03:07'),(_binary 'http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429#Like',_binary 'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928','','',0,'{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/v1\",{\"vcard\":\"http://www.w3.org/2006/vcard/ns#\",\"dfrn\":\"http://purl.org/macgirvin/dfrn/1.0/\",\"diaspora\":\"https://diasporafoundation.org/ns/\",\"manuallyApprovesFollowers\":\"as:manuallyApprovesFollowers\",\"sensitive\":\"as:sensitive\",\"Hashtag\":\"as:Hashtag\"}],\"id\":\"http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429#Like\",\"type\":\"Like\",\"actor\":\"http://192.168.22.10/profile/friendica1\",\"published\":\"2018-11-17T14:02:02Z\",\"instrument\":{\"type\":\"Service\",\"name\":\"Friendica \'The Tazmans Flax-lily\' 2018.12-dev-1290; http://192.168.22.10\"},\"to\":[\"http://192.168.22.10/profile/friendica4\",\"https://www.w3.org/ns/activitystreams#Public\"],\"cc\":[\"http://192.168.22.10/followers/friendica1\",\"http://192.168.22.10/profile/friendica2\"],\"diaspora:guid\":\"930bb26b-765b-f01f-5a43-22a585408489\",\"diaspora:like\":\"{\\\"author\\\":\\\"friendica1@192.168.22.10\\\",\\\"guid\\\":\\\"930bb26b-765b-f01f-5a43-22a585408489\\\",\\\"parent_guid\\\":\\\"930bb26b-135b-f01d-8e3d-8cc050176928\\\",\\\"parent_type\\\":\\\"Comment\\\",\\\"positive\\\":\\\"true\\\",\\\"author_signature\\\":\\\"Q7WqVz2AvuF2noYjsq3DQB3j\\\\/9+WRmiJCiy3DMJGYWNKXzgik6LNrj2rcEGUNY9zQQLXgKncBPZ\\\\/z0CB\\\\/tcEiM1UC683DQDkZh35ErbmeXSilCVXinFuPdoh\\\\/ARd+EC41r7Xv0BZlYNfVLqbHrSZZScWzjiX1XDXguFFcQQApv9lFH52u\\\\/C\\\\/rUGKOUN\\\\/7nX9fWEvPYSynqVaybZ8PdKZG9OaI2ys5LZWsReD4\\\\/6Jv4nKfCkp6JvlJGuuSz0azrg804X5\\\\/DU4Y0vU8Ul3zTNf4y9p7tjoOaNSfTt01NvRUpmCW\\\\/Tiz7P5m8V0Zr5cxFWROn9TpYtEYrf1897QHvADEyNvG4xfhCZOzZq0c6j5y7zQTTDUWg3YJsN\\\\/xa+l1VXRPhcUw6nUkOVcrLwOnlf95ibJ+7Y0qP3x38Y6Ki66JHHtpBgMx17Da5xOHukKzj0kd6\\\\/jmqDS8w86mTiEx5xbxBqS\\\\/pc9g85QH\\\\/3Qm7CKbCPfECa2LGh943JsJ03ScoK1ZcrdW6JHFf0tBYJ8ICzeYShoBVKZY9k687TQa5SXm8pBlftMxY9CAT8NIBpZVElivyRu+2GlvhX7TH02ms5PdbjxoeHaCCkPfqg1AZKDhn+u79ulodUAnb8SCF\\\\/UbZzDMtEwKMZ2X6O6iaXBVarOX4VhwwhUfcnsD1DiqBUFLxs=\\\"}\",\"object\":\"http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928\",\"signature\":{\"type\":\"RsaSignature2017\",\"nonce\":\"17d99540e3b864be4b6df3a3b02fa005be1ccedfed45607412d97fc77233cfa7\",\"creator\":\"http://192.168.22.10/profile/friendica1#main-key\",\"created\":\"2018-11-17T14:03:07Z\",\"signatureValue\":\"Zs2WW38G4hKtHs142L5xpO3TTmKbRfSFZJ9Q4OccMiwd5O5BMasp0Fa4d3SHhiqTCIljTVVeCBn5vGG082nrabnCMhJ22IB085tTmnDe8N4sFyQ4uRggEVODvIee5Sygcqsfc4gNaedLj3P3pr6vgB/BiaxBJyd6blZqme8wCt74vljapm7X+yjbzN3lI4PMIBsMboXGbyHHxCkFdKQNDOzXagdZNeW2tLzS4Bq0eOyRbStxLDPmdi8nYgbOmF/hpAjgwRBb2NglIaUlvM6dnOErpJCkZZ84lHdq0PlZfZ27y3o/YIW6e/m6uQ3ohdJ2/FgVvuJ7DGptQPzsxfKys+iUbFFZwhbHgMNYyJIfifX+0B4/8NiVvFhwyLXnPHLfJ8PFAq1qrI2Uknap88GhUIkYbB/pvjeOaSyolkUnYpAYUtQowxnbJa0VFL4lFKwM6JvNehOcMEoj8mj2p2hvVHRL+1uYB/70r6RjmBDvu6AUepfvzIUNsKmymHxJuLI6GsSjAzm7FLyfxmvJsdkKammjn7LP0vjWDNMcXqohKTvK76aWrY64uneaAPS9hY6M71PsOXXzYugmMCdhFPTl6W7lWk7lCoLe+GEyrAWpKlVR1SmBrxES0nuclKUNw97Z8/ZxsI9Ia2rUIZPufcdLxseFZuxV+nPGXmjlVpRqav0=\"}}','2018-11-17 14:03:07'),(_binary 'http://192.168.22.10/objects/930bb26b-555b-f01f-66c7-ab6175377664',_binary 'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',_binary 'http://192.168.22.10/display/friendica1/1',_binary 'http://192.168.22.10/display/friendica1/1',1,'<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:thr=\"http://purl.org/syndication/thread/1.0\" xmlns:at=\"http://purl.org/atompub/tombstones/1.0\" xmlns:media=\"http://purl.org/syndication/atommedia\" xmlns:dfrn=\"http://purl.org/macgirvin/dfrn/1.0\" xmlns:activity=\"http://activitystrea.ms/spec/1.0/\" xmlns:georss=\"http://www.georss.org/georss\" xmlns:poco=\"http://portablecontacts.net/spec/1.0\" xmlns:ostatus=\"http://ostatus.org/schema/1.0\" xmlns:statusnet=\"http://status.net/schema/api/1/\">\n <id>http://192.168.22.10/profile/friendica1</id>\n <title>friendica1\n Friendica\n \n \n 0\n 2018-11-17T14:03:08Z\n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n true\n friendica1\n 2018-11-17T12:39:46Z\n \n friendica1\n +00:00\n \n \n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n \n \n friendica1\n http://192.168.22.10/profile/friendica1\n friendica1@192.168.22.10\n \n \n \n http://192.168.22.10/display/friendica1/1\n http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783\n \n <published>2018-11-17T13:51:35Z</published>\n <updated>2018-11-17T13:51:35Z</updated>\n <dfrn:env>VGhpcyBpcyBhIHB1YmxpYyB0ZXN0IHBvc3Rpbmcu</dfrn:env>\n <content type=\"text\">This is a public test posting.</content>\n <link rel=\"alternate\" type=\"text/html\" href=\"http://192.168.22.10/display/930bb26b-205b-f01c-e722-bc8141142783\"/>\n <dfrn:comment-allow>1</dfrn:comment-allow>\n <dfrn:diaspora_guid>930bb26b-205b-f01c-e722-bc8141142783</dfrn:diaspora_guid>\n <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>\n <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>\n </entry>\n <entry>\n <author>\n <name>friendica1</name>\n <uri>http://192.168.22.10/profile/friendica1</uri>\n <dfrn:handle>friendica1@192.168.22.10</dfrn:handle>\n <link rel=\"photo\" type=\"image/jpeg\" media:width=\"80\" media:height=\"80\" href=\"http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007\"/>\n <link rel=\"avatar\" type=\"image/jpeg\" media:width=\"80\" media:height=\"80\" href=\"http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007\"/>\n </author>\n <dfrn:owner>\n <name>friendica1</name>\n <uri>http://192.168.22.10/profile/friendica1</uri>\n <dfrn:handle>friendica1@192.168.22.10</dfrn:handle>\n <link rel=\"photo\" type=\"image/jpeg\" media:width=\"80\" media:height=\"80\" href=\"http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007\"/>\n <link rel=\"avatar\" type=\"image/jpeg\" media:width=\"80\" media:height=\"80\" href=\"http://192.168.22.10/photo/12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007\"/>\n </dfrn:owner>\n <thr:in-reply-to ref=\"http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928\" type=\"text/html\" href=\"http://192.168.22.10/display/930bb26b-135b-f01d-8e3d-8cc050176928\" dfrn:diaspora_guid=\"930bb26b-135b-f01d-8e3d-8cc050176928\"/>\n <ostatus:conversation href=\"http://192.168.22.10/display/friendica1/1\" ref=\"http://192.168.22.10/display/friendica1/1\">http://192.168.22.10/display/friendica1/1</ostatus:conversation>\n <id>http://192.168.22.10/objects/930bb26b-555b-f01f-66c7-ab6175377664</id>\n <title/>\n <published>2018-11-17T14:02:14Z</published>\n <updated>2018-11-17T14:02:14Z</updated>\n <dfrn:env>TmljZSB0byBoYXZlIHlvdSBoZXJlIDotRA</dfrn:env>\n <content type=\"text\">Nice to have you here :-D</content>\n <link rel=\"alternate\" type=\"text/html\" href=\"http://192.168.22.10/display/930bb26b-555b-f01f-66c7-ab6175377664\"/>\n <dfrn:comment-allow>1</dfrn:comment-allow>\n <dfrn:diaspora_guid>930bb26b-555b-f01f-66c7-ab6175377664</dfrn:diaspora_guid>\n <dfrn:diaspora_signature>eyJzaWduZWRfdGV4dCI6IntcImF1dGhvclwiOlwiZnJpZW5kaWNhMUAxOTIuMTY4LjIyLjEwXCIsXCJndWlkXCI6XCI5MzBiYjI2Yi01NTViLWYwMWYtNjZjNy1hYjYxNzUzNzc2NjRcIixcImNyZWF0ZWRfYXRcIjpcIjIwMTgtMTEtMTdUMTQ6MDI6MTRaXCIsXCJwYXJlbnRfZ3VpZFwiOlwiOTMwYmIyNmItMjA1Yi1mMDFjLWU3MjItYmM4MTQxMTQyNzgzXCIsXCJ0ZXh0XCI6XCJOaWNlIHRvIGhhdmUgeW91IGhlcmUgIVs6LURdKGh0dHA6XFxcL1xcXC8xOTIuMTY4LjIyLjEwXFxcL2ltYWdlc1xcXC9zbWlsZXktbGF1Z2hpbmcuZ2lmIFxcXCI6LURcXFwiKVwiLFwiYXV0aG9yX3NpZ25hdHVyZVwiOlwiYWlIME93YnFhdnVEZzlUalVSNGJ2ZDh0TE5jXFxcL0VsU0N2OWprM3UwNDh0OHQ4MFdxbmNqcU4yU0xMNTNUWG9lejY2UUpTYTJ2a1Jud0pEa29hdWRtZHdCWVRQcXhzVEdmTjZESlJBYzZrXFxcL2VES3plbXdVdzJvd3A3OUJQek9IelxcXC9xRjA3STZvVnoyaUt6RDJHbVdjV2syeElLUWFlQVllY0pUMHc5dE5wcHU2SXJyQXR0ekJYbkgrM2dMWTd3U24yTkxWT3ZrRlNCNk1wY1oxOEhKbzBvZnFwejFYU21ZSWhmT3RQOG1GNVo0SWdWaTFlMVdHR2ZwalZNTytLbjVvdURQVXNIdDk4bm8xWTNwQktyZDBHRlNEXFxcL3NQOTVlVlo0SFRvZ1UzTGhLbzZxcVhYZjNuZ2xCSEJqOXBtdXdKWHIwWU1jZ1BEbHRGMjBibmpDNzFmdlRDUUpRSlFkNm53aWFjdjd4T1M2emdIY3ppUUtZQzlrK1VNQmJwWE1iSUROR3A2NHJ1YWJZSWdidlBSOGVpeGJGODFVeVduZ1JGNldaUVpqT215bzVRR0RsajRmMlRRQ1RxMzlCeDlidytFYTF4M0lvdmhRZTFiRlduUm5hNnBQbFFycGZ6dm40VWlnYzJzREE5eUNvSUVpUGVTcEZHMUdmdVc2ZldWcTRudGxKUjcxbGZxWmFkZVBwWUN6dXRCSzVTRDFvUlQxb3hGYnNpXFxcL2UyeU1DZWtISzBCN2JVQjdDekxnVTFWV2xRZ0QwYmJ1cklaVzlSNEF4TGJvTkt2dkpvc2xHZ29cXFwvUWlwS0MrOVVLYk00dEdxZUVqdVhUc0w0a1FHaDFjcVFHTHQ4bTBnZ24zSnY4RE4yTUJYdGVlQzF2c08zYktId2hvQVh6XFxcL29WM0lYXFxcL25hZGc9XCIsXCJ0aHJlYWRfcGFyZW50X2d1aWRcIjpcIjkzMGJiMjZiLTEzNWItZjAxZC04ZTNkLThjYzA1MDE3NjkyOFwifSIsInNpZ25hdHVyZSI6bnVsbCwic2lnbmVyIjpudWxsfQ==</dfrn:diaspora_signature>\n <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>\n <activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>\n </entry>\n</feed>','2018-11-17 14:03:08'); -/*!40000 ALTER TABLE `conversation` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `diaspora-interaction` --- - -DROP TABLE IF EXISTS `diaspora-interaction`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `diaspora-interaction` ( - `uri-id` int(10) unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri', - `interaction` mediumtext COMMENT 'The Diaspora interaction', - PRIMARY KEY (`uri-id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Signed Diaspora Interaction'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `diaspora-interaction` --- - -LOCK TABLES `diaspora-interaction` WRITE; -/*!40000 ALTER TABLE `diaspora-interaction` DISABLE KEYS */; -INSERT INTO `diaspora-interaction` VALUES (3,'{\"author\":\"friendica2@192.168.22.10\",\"guid\":\"930bb26b-155b-f01d-60ee-5ee161000810\",\"created_at\":\"2018-11-17T13:53:36Z\",\"parent_guid\":\"930bb26b-205b-f01c-e722-bc8141142783\",\"text\":\"friendica 2 checking in.\",\"author_signature\":\"CLL2\\/rpsdp+DLh+WuUVGFHSLR0T0wHXGmSsGyDZlUvKbrNILgtfClX7eXzgswLba9wGA+n1uGd2VAFW6jor7bhTbqvxIx\\/r9MAysgsuFKdMTuAn5E6wmMeT3IDUmnvuYI4+QpfBWXJdpDzbol9jRE3zlUjJjA+DpCYJd466Wyl0koS8uDpswoW3f4It\\/fxUH4XS0+Np1GlBB4XE1Rd3\\/3VsQMltxbQCY8iQtq\\/6fQDQ3n1HUFEE\\/nEd5xaHLL2FYI4udZE+VdXgV+iSaE7FksHebhFOc1OHjQY3PrM7pJkZZjbiRMDIF0Y7QDc7ZztAS2UZi4olrkXpWAGXiq91o2qSoBTg2WgCVxj+z355BLI859NMgOZV9MCBMQIDXdiu8dZy\\/B5tyrIKrAtAl5dSeDFZUXCztxO1BjVNqdkS+emlsKFK0miD6UqsSkASeGxu6PR+M+KUVEj34PnlVg7XO8upRGIU7wefzjzr4H+mGKN1XxfKvwQvV3JbKExY+lzvdFHIUHJ8DMwjmcSAdzAb7nKh5TXoYLeLYRPjEs66tA6U8QdPVprEdUiOt3oYztUAjguW9qoNDJD7Uwcd10UmuyX382HmHjZk8+5fbqJUyDbrx5xucKA3YluOOoiCTcQnnFajb8E9iVQcb2FhZaced2KZsi5TUQaeFxzboJTC5wiU=\"}'),(4,'{\"author\":\"friendica4@192.168.22.10\",\"guid\":\"930bb26b-135b-f01d-8e3d-8cc050176928\",\"created_at\":\"2018-11-17T13:54:22Z\",\"parent_guid\":\"930bb26b-205b-f01c-e722-bc8141142783\",\"text\":\"friendica 4 testing ![:-)](http:\\/\\/192.168.22.10\\/images\\/smiley-smile.gif \\\":-)\\\")\",\"author_signature\":\"Vb6Zsv9mbohlyjwpJygXcWfB+hheZSwDPaIg91l3ktTy\\/U7LtnjaPMwi1reyVMKJkJOStrBKbLU4K4Wf5H16hjIRHK76gvsFjAHNJ0+38RKeYhOoYrDhG037XqeqO\\/HiXvQUXrOEmOck4P1Z+25W6pW38HuSZOdja02fF1VdUipSytxuJam5JBeo0akZAAWSRw1\\/OseUMxdawEoUz0XKUoufNlfgFjU\\/Z6TgzEEC\\/bGr7JyOMMqX6BaGQi65WLuBdtSPteFvz+qWfBcosBmpuoTQwvx7p68WcNyv2B\\/zP5N1RHL1\\/JTpYX3rD9aab9bFei5VuMczDzU6wBxZUF718MG+00A3zJ9Lh7Zikad3Ryn\\/HQvdT5DlNyCVIs\\/9hLRsEUSwvoxnCR1vOwt7oZtwejHiCcDcrM+UM7nykblb6Ms0ds2RZ3BrlSU0JFRjzIj+sDq\\/NBcwxRPec2rsdlAF6ogxRx3I19173ZF6RrL+mWT1TpKPOpIseN5megEeInHf3RAn68JmE\\/6v3DBsEPNTleofzzJQpMIrN5j4hXps5O7uB8YJ3+2rHUs\\/qHz7M8LhndFqXeqtCbLeQOkeZcwqV+5KvXKg+yezZzQBG21RE+JYMJx1LIZ7N+22JtcdSMCwhYcVUTIfuRX2ka+Pfuq2Dszm0PBwq3GNC5wrXpwTlLk=\"}'),(5,'{\"author\":\"friendica1@192.168.22.10\",\"guid\":\"930bb26b-765b-f01f-5a43-22a585408489\",\"parent_guid\":\"930bb26b-135b-f01d-8e3d-8cc050176928\",\"parent_type\":\"Comment\",\"positive\":\"true\",\"author_signature\":\"Q7WqVz2AvuF2noYjsq3DQB3j\\/9+WRmiJCiy3DMJGYWNKXzgik6LNrj2rcEGUNY9zQQLXgKncBPZ\\/z0CB\\/tcEiM1UC683DQDkZh35ErbmeXSilCVXinFuPdoh\\/ARd+EC41r7Xv0BZlYNfVLqbHrSZZScWzjiX1XDXguFFcQQApv9lFH52u\\/C\\/rUGKOUN\\/7nX9fWEvPYSynqVaybZ8PdKZG9OaI2ys5LZWsReD4\\/6Jv4nKfCkp6JvlJGuuSz0azrg804X5\\/DU4Y0vU8Ul3zTNf4y9p7tjoOaNSfTt01NvRUpmCW\\/Tiz7P5m8V0Zr5cxFWROn9TpYtEYrf1897QHvADEyNvG4xfhCZOzZq0c6j5y7zQTTDUWg3YJsN\\/xa+l1VXRPhcUw6nUkOVcrLwOnlf95ibJ+7Y0qP3x38Y6Ki66JHHtpBgMx17Da5xOHukKzj0kd6\\/jmqDS8w86mTiEx5xbxBqS\\/pc9g85QH\\/3Qm7CKbCPfECa2LGh943JsJ03ScoK1ZcrdW6JHFf0tBYJ8ICzeYShoBVKZY9k687TQa5SXm8pBlftMxY9CAT8NIBpZVElivyRu+2GlvhX7TH02ms5PdbjxoeHaCCkPfqg1AZKDhn+u79ulodUAnb8SCF\\/UbZzDMtEwKMZ2X6O6iaXBVarOX4VhwwhUfcnsD1DiqBUFLxs=\"}'),(6,'{\"author\":\"friendica1@192.168.22.10\",\"guid\":\"930bb26b-555b-f01f-66c7-ab6175377664\",\"created_at\":\"2018-11-17T14:02:14Z\",\"parent_guid\":\"930bb26b-205b-f01c-e722-bc8141142783\",\"text\":\"Nice to have you here ![:-D](http:\\/\\/192.168.22.10\\/images\\/smiley-laughing.gif \\\":-D\\\")\",\"author_signature\":\"aiH0OwbqavuDg9TjUR4bvd8tLNc\\/ElSCv9jk3u048t8t80WqncjqN2SLL53TXoez66QJSa2vkRnwJDkoaudmdwBYTPqxsTGfN6DJRAc6k\\/eDKzemwUw2owp79BPzOHz\\/qF07I6oVz2iKzD2GmWcWk2xIKQaeAYecJT0w9tNppu6IrrAttzBXnH+3gLY7wSn2NLVOvkFSB6MpcZ18HJo0ofqpz1XSmYIhfOtP8mF5Z4IgVi1e1WGGfpjVMO+Kn5ouDPUsHt98no1Y3pBKrd0GFSD\\/sP95eVZ4HTogU3LhKo6qqXXf3nglBHBj9pmuwJXr0YMcgPDltF20bnjC71fvTCQJQJQd6nwiacv7xOS6zgHcziQKYC9k+UMBbpXMbIDNGp64ruabYIgbvPR8eixbF81UyWngRF6WZQZjOmyo5QGDlj4f2TQCTq39Bx9bw+Ea1x3IovhQe1bFWnRna6pPlQrpfzvn4Uigc2sDA9yCoIEiPeSpFG1GfuW6fWVq4ntlJR71lfqZadePpYCzutBK5SD1oRT1oxFbsi\\/e2yMCekHK0B7bUB7CzLgU1VWlQgD0bburIZW9R4AxLboNKvvJoslGgo\\/QipKC+9UKbM4tGqeEjuXTsL4kQGh1cqQGLt8m0ggn3Jv8DN2MBXteeC1vsO3bKHwhoAXz\\/oV3IX\\/nadg=\",\"thread_parent_guid\":\"930bb26b-135b-f01d-8e3d-8cc050176928\"}'),(8,'{\"author\":\"friendica1@192.168.22.10\",\"guid\":\"930bb26b-765b-f01f-5a43-22a585408489\",\"parent_guid\":\"930bb26b-135b-f01d-8e3d-8cc050176928\",\"parent_type\":\"Comment\",\"positive\":\"true\",\"author_signature\":\"Q7WqVz2AvuF2noYjsq3DQB3j\\/9+WRmiJCiy3DMJGYWNKXzgik6LNrj2rcEGUNY9zQQLXgKncBPZ\\/z0CB\\/tcEiM1UC683DQDkZh35ErbmeXSilCVXinFuPdoh\\/ARd+EC41r7Xv0BZlYNfVLqbHrSZZScWzjiX1XDXguFFcQQApv9lFH52u\\/C\\/rUGKOUN\\/7nX9fWEvPYSynqVaybZ8PdKZG9OaI2ys5LZWsReD4\\/6Jv4nKfCkp6JvlJGuuSz0azrg804X5\\/DU4Y0vU8Ul3zTNf4y9p7tjoOaNSfTt01NvRUpmCW\\/Tiz7P5m8V0Zr5cxFWROn9TpYtEYrf1897QHvADEyNvG4xfhCZOzZq0c6j5y7zQTTDUWg3YJsN\\/xa+l1VXRPhcUw6nUkOVcrLwOnlf95ibJ+7Y0qP3x38Y6Ki66JHHtpBgMx17Da5xOHukKzj0kd6\\/jmqDS8w86mTiEx5xbxBqS\\/pc9g85QH\\/3Qm7CKbCPfECa2LGh943JsJ03ScoK1ZcrdW6JHFf0tBYJ8ICzeYShoBVKZY9k687TQa5SXm8pBlftMxY9CAT8NIBpZVElivyRu+2GlvhX7TH02ms5PdbjxoeHaCCkPfqg1AZKDhn+u79ulodUAnb8SCF\\/UbZzDMtEwKMZ2X6O6iaXBVarOX4VhwwhUfcnsD1DiqBUFLxs=\"}'); -/*!40000 ALTER TABLE `diaspora-interaction` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `event` --- - -DROP TABLE IF EXISTS `event`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `event` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `guid` varchar(255) NOT NULL DEFAULT '', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Owner User id', - `cid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'contact_id (ID of the contact in contact table)', - `uri` varchar(255) NOT NULL DEFAULT '', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time', - `edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'last edit time', - `start` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'event start time', - `finish` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'event end time', - `summary` text COMMENT 'short description or title of the event', - `desc` text COMMENT 'event description', - `location` text COMMENT 'event location', - `type` varchar(20) NOT NULL DEFAULT '' COMMENT 'event or birthday', - `nofinish` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'if event does have no end this is 1', - `adjust` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'adjust to timezone of the recipient (0 or 1)', - `ignore` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0 or 1', - `allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id ''<19><78>''', - `allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups', - `deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id', - `deny_gid` mediumtext COMMENT 'Access Control - list of denied groups', - PRIMARY KEY (`id`), - KEY `uid_start` (`uid`,`start`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Events'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `event` --- - -LOCK TABLES `event` WRITE; -/*!40000 ALTER TABLE `event` DISABLE KEYS */; -/*!40000 ALTER TABLE `event` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `fcontact` --- - -DROP TABLE IF EXISTS `fcontact`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `fcontact` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'unique id', - `url` varchar(255) NOT NULL DEFAULT '', - `name` varchar(255) NOT NULL DEFAULT '', - `photo` varchar(255) NOT NULL DEFAULT '', - `request` varchar(255) NOT NULL DEFAULT '', - `nick` varchar(255) NOT NULL DEFAULT '', - `addr` varchar(255) NOT NULL DEFAULT '', - `batch` varchar(255) NOT NULL DEFAULT '', - `notify` varchar(255) NOT NULL DEFAULT '', - `poll` varchar(255) NOT NULL DEFAULT '', - `confirm` varchar(255) NOT NULL DEFAULT '', - `priority` tinyint(3) unsigned NOT NULL DEFAULT '0', - `network` char(4) NOT NULL DEFAULT '', - `alias` varchar(255) NOT NULL DEFAULT '', - `pubkey` text, - `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY (`id`), - UNIQUE KEY `url` (`url`(190)), - KEY `addr` (`addr`(32)) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Diaspora compatible contacts - used in the Diaspora implementation'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `fcontact` --- - -LOCK TABLES `fcontact` WRITE; -/*!40000 ALTER TABLE `fcontact` DISABLE KEYS */; -/*!40000 ALTER TABLE `fcontact` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `fsuggest` --- - -DROP TABLE IF EXISTS `fsuggest`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `fsuggest` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `cid` int(10) unsigned NOT NULL DEFAULT '0', - `name` varchar(255) NOT NULL DEFAULT '', - `url` varchar(255) NOT NULL DEFAULT '', - `request` varchar(255) NOT NULL DEFAULT '', - `photo` varchar(255) NOT NULL DEFAULT '', - `note` text, - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='friend suggestion stuff'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `fsuggest` --- - -LOCK TABLES `fsuggest` WRITE; -/*!40000 ALTER TABLE `fsuggest` DISABLE KEYS */; -/*!40000 ALTER TABLE `fsuggest` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `gcign` --- - -DROP TABLE IF EXISTS `gcign`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `gcign` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Local User id', - `gcid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'gcontact.id of ignored contact', - PRIMARY KEY (`id`), - KEY `uid` (`uid`), - KEY `gcid` (`gcid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='contacts ignored by friend suggestions'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `gcign` --- - -LOCK TABLES `gcign` WRITE; -/*!40000 ALTER TABLE `gcign` DISABLE KEYS */; -/*!40000 ALTER TABLE `gcign` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `gcontact` --- - -DROP TABLE IF EXISTS `gcontact`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `gcontact` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `name` varchar(255) NOT NULL DEFAULT '' COMMENT 'Name that this contact is known by', - `nick` varchar(255) NOT NULL DEFAULT '' COMMENT 'Nick- and user name of the contact', - `url` varchar(255) NOT NULL DEFAULT '' COMMENT 'Link to the contacts profile page', - `nurl` varchar(255) NOT NULL DEFAULT '', - `photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'Link to the profile photo', - `connect` varchar(255) NOT NULL DEFAULT '', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `updated` datetime DEFAULT '0001-01-01 00:00:00', - `last_contact` datetime DEFAULT '0001-01-01 00:00:00', - `last_failure` datetime DEFAULT '0001-01-01 00:00:00', - `location` varchar(255) NOT NULL DEFAULT '', - `about` text, - `keywords` text COMMENT 'puplic keywords (interests)', - `gender` varchar(32) NOT NULL DEFAULT '', - `birthday` varchar(32) NOT NULL DEFAULT '0001-01-01', - `community` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1 if contact is forum account', - `contact-type` tinyint(4) NOT NULL DEFAULT '-1', - `hide` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1 = should be hidden from search', - `nsfw` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1 = contact posts nsfw content', - `network` char(4) NOT NULL DEFAULT '' COMMENT 'social network protocol', - `addr` varchar(255) NOT NULL DEFAULT '', - `notify` varchar(255) DEFAULT NULL, - `alias` varchar(255) NOT NULL DEFAULT '', - `generation` tinyint(3) unsigned NOT NULL DEFAULT '0', - `server_url` varchar(255) NOT NULL DEFAULT '' COMMENT 'baseurl of the contacts server', - PRIMARY KEY (`id`), - UNIQUE KEY `nurl` (`nurl`(190)), - KEY `name` (`name`(64)), - KEY `nick` (`nick`(32)), - KEY `addr` (`addr`(64)), - KEY `hide_network_updated` (`hide`,`network`,`updated`), - KEY `updated` (`updated`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COMMENT='global contacts'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `gcontact` --- - -LOCK TABLES `gcontact` WRITE; -/*!40000 ALTER TABLE `gcontact` DISABLE KEYS */; -INSERT INTO `gcontact` VALUES (1,'admin','admin','http://192.168.22.10/profile/admin','http://192.168.22.10/profile/admin','http://192.168.22.10/photo/profile/1.jpg','admin@192.168.22.10','2018-11-17 12:34:42','2018-11-17 12:50:02','2018-11-17 12:34:46','0001-01-01 00:00:00','','',NULL,'','0000-00-00',0,-1,1,0,'dfrn','admin@192.168.22.10','http://192.168.22.10/dfrn_notify/admin','http://192.168.22.10/~admin',1,'http://192.168.22.10'),(2,'friendica1','friendica1','http://192.168.22.10/profile/friendica1','http://192.168.22.10/profile/friendica1','http://192.168.22.10/photo/profile/2.jpg','friendica1@192.168.22.10','2018-11-17 12:50:03','2018-11-17 13:50:02','2018-11-17 13:50:06','0001-01-01 00:00:00','','',NULL,'','0000-00-00',0,-1,1,0,'dfrn','friendica1@192.168.22.10','http://192.168.22.10/dfrn_notify/friendica1','http://192.168.22.10/~friendica1',1,'http://192.168.22.10'),(3,'friendica2','friendica2','http://192.168.22.10/profile/friendica2','http://192.168.22.10/profile/friendica2','http://192.168.22.10/photo/profile/3.jpg','friendica2@192.168.22.10','2018-11-17 12:50:03','2018-11-17 13:50:03','2018-11-17 13:50:05','0001-01-01 00:00:00','','',NULL,'','0000-00-00',0,-1,1,0,'dfrn','friendica2@192.168.22.10','http://192.168.22.10/dfrn_notify/friendica2','http://192.168.22.10/~friendica2',1,'http://192.168.22.10'),(4,'friendica3','friendica3','http://192.168.22.10/profile/friendica3','http://192.168.22.10/profile/friendica3','http://192.168.22.10/photo/profile/4.jpg','friendica3@192.168.22.10','2018-11-17 12:50:03','0001-01-01 00:00:00','2018-11-17 13:50:05','0001-01-01 00:00:00','','',NULL,'','0000-00-00',0,-1,1,0,'dfrn','friendica3@192.168.22.10','http://192.168.22.10/dfrn_notify/friendica3','http://192.168.22.10/~friendica3',1,'http://192.168.22.10'),(5,'friendica4','friendica4','http://192.168.22.10/profile/friendica4','http://192.168.22.10/profile/friendica4','http://192.168.22.10/photo/profile/5.jpg','friendica4@192.168.22.10','2018-11-17 12:50:03','2018-11-17 13:50:04','2018-11-17 13:50:06','0001-01-01 00:00:00','','',NULL,'','0000-00-00',0,-1,1,0,'dfrn','friendica4@192.168.22.10','http://192.168.22.10/dfrn_notify/friendica4','http://192.168.22.10/~friendica4',1,'http://192.168.22.10'),(6,'friendica5','friendica5','http://192.168.22.10/profile/friendica5','http://192.168.22.10/profile/friendica5','http://192.168.22.10/photo/profile/6.jpg','friendica5@192.168.22.10','2018-11-17 12:50:03','0001-01-01 00:00:00','2018-11-17 13:50:06','0001-01-01 00:00:00','','',NULL,'','0000-00-00',0,-1,1,0,'dfrn','friendica5@192.168.22.10','http://192.168.22.10/dfrn_notify/friendica5','http://192.168.22.10/~friendica5',1,'http://192.168.22.10'); -/*!40000 ALTER TABLE `gcontact` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `glink` --- - -DROP TABLE IF EXISTS `glink`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `glink` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `cid` int(10) unsigned NOT NULL DEFAULT '0', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `gcid` int(10) unsigned NOT NULL DEFAULT '0', - `zcid` int(10) unsigned NOT NULL DEFAULT '0', - `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY (`id`), - UNIQUE KEY `cid_uid_gcid_zcid` (`cid`,`uid`,`gcid`,`zcid`), - KEY `gcid` (`gcid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='''friends of friends'' linkages derived from poco'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `glink` --- - -LOCK TABLES `glink` WRITE; -/*!40000 ALTER TABLE `glink` DISABLE KEYS */; -/*!40000 ALTER TABLE `glink` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `group` --- - -DROP TABLE IF EXISTS `group`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `group` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Owner User id', - `visible` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1 indicates the member list is not private', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1 indicates the group has been deleted', - `name` varchar(255) NOT NULL DEFAULT '' COMMENT 'human readable name of group', - PRIMARY KEY (`id`), - KEY `uid` (`uid`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COMMENT='privacy groups, group info'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `group` --- - -LOCK TABLES `group` WRITE; -/*!40000 ALTER TABLE `group` DISABLE KEYS */; -INSERT INTO `group` VALUES (1,1,0,0,'Kontakte'),(2,2,0,0,'Friends'),(3,3,0,0,'Friends'),(4,4,0,0,'Friends'),(5,5,0,0,'Friends'),(6,6,0,0,'Friends'),(7,2,0,0,'group1'),(8,2,0,0,'group2'); -/*!40000 ALTER TABLE `group` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `group_member` --- - -DROP TABLE IF EXISTS `group_member`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `group_member` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `gid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'groups.id of the associated group', - `contact-id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'contact.id of the member assigned to the associated group', - PRIMARY KEY (`id`), - UNIQUE KEY `gid_contactid` (`gid`,`contact-id`), - KEY `contactid` (`contact-id`) -) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COMMENT='privacy groups, member info'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `group_member` --- - -LOCK TABLES `group_member` WRITE; -/*!40000 ALTER TABLE `group_member` DISABLE KEYS */; -INSERT INTO `group_member` VALUES (1,2,15),(2,2,17),(3,2,19),(4,2,21),(5,3,14),(6,3,23),(7,4,16),(8,4,22),(9,5,18),(10,5,25),(11,6,20),(12,6,24),(13,7,15),(14,7,19),(15,8,17),(16,8,21); -/*!40000 ALTER TABLE `group_member` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `gserver` --- - -DROP TABLE IF EXISTS `gserver`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `gserver` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `url` varchar(255) NOT NULL DEFAULT '', - `nurl` varchar(255) NOT NULL DEFAULT '', - `version` varchar(255) NOT NULL DEFAULT '', - `site_name` varchar(255) NOT NULL DEFAULT '', - `info` text, - `register_policy` tinyint(4) NOT NULL DEFAULT '0', - `registered-users` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Number of registered users', - `poco` varchar(255) NOT NULL DEFAULT '', - `noscrape` varchar(255) NOT NULL DEFAULT '', - `network` char(4) NOT NULL DEFAULT '', - `platform` varchar(255) NOT NULL DEFAULT '', - `relay-subscribe` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Has the server subscribed to the relay system', - `relay-scope` varchar(10) NOT NULL DEFAULT '' COMMENT 'The scope of messages that the server wants to get', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `last_poco_query` datetime DEFAULT '0001-01-01 00:00:00', - `last_contact` datetime DEFAULT '0001-01-01 00:00:00', - `last_failure` datetime DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY (`id`), - UNIQUE KEY `nurl` (`nurl`(190)) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='Global servers'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `gserver` --- - -LOCK TABLES `gserver` WRITE; -/*!40000 ALTER TABLE `gserver` DISABLE KEYS */; -INSERT INTO `gserver` VALUES (1,'http://192.168.22.10','http://192.168.22.10','2018.12-dev','Friendica Social Network','',2,6,'','','dfrn','Friendica',0,'','2018-11-17 12:34:43','0001-01-01 00:00:00','2018-11-17 12:50:08','0001-01-01 00:00:00'); -/*!40000 ALTER TABLE `gserver` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `gserver-tag` --- - -DROP TABLE IF EXISTS `gserver-tag`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `gserver-tag` ( - `gserver-id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'The id of the gserver', - `tag` varchar(100) NOT NULL DEFAULT '' COMMENT 'Tag that the server has subscribed', - PRIMARY KEY (`gserver-id`,`tag`), - KEY `tag` (`tag`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Tags that the server has subscribed'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `gserver-tag` --- - -LOCK TABLES `gserver-tag` WRITE; -/*!40000 ALTER TABLE `gserver-tag` DISABLE KEYS */; -/*!40000 ALTER TABLE `gserver-tag` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `hook` --- - -DROP TABLE IF EXISTS `hook`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `hook` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `hook` varbinary(100) NOT NULL DEFAULT '' COMMENT 'name of hook', - `file` varbinary(200) NOT NULL DEFAULT '' COMMENT 'relative filename of hook handler', - `function` varbinary(200) NOT NULL DEFAULT '' COMMENT 'function name of hook handler', - `priority` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'not yet implemented - can be used to sort conflicts in hook handling by calling handlers in priority order', - PRIMARY KEY (`id`), - UNIQUE KEY `hook_file_function` (`hook`,`file`,`function`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='addon hook registry'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `hook` --- - -LOCK TABLES `hook` WRITE; -/*!40000 ALTER TABLE `hook` DISABLE KEYS */; -/*!40000 ALTER TABLE `hook` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `intro` --- - -DROP TABLE IF EXISTS `intro`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `intro` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `fid` int(10) unsigned NOT NULL DEFAULT '0', - `contact-id` int(10) unsigned NOT NULL DEFAULT '0', - `knowyou` tinyint(1) NOT NULL DEFAULT '0', - `duplex` tinyint(1) NOT NULL DEFAULT '0', - `note` text, - `hash` varchar(255) NOT NULL DEFAULT '', - `datetime` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `blocked` tinyint(1) NOT NULL DEFAULT '1', - `ignore` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `intro` --- - -LOCK TABLES `intro` WRITE; -/*!40000 ALTER TABLE `intro` DISABLE KEYS */; -/*!40000 ALTER TABLE `intro` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `item` --- - -DROP TABLE IF EXISTS `item`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `item` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this item', - `uri` varchar(255) NOT NULL DEFAULT '', - `uri-id` int(10) unsigned DEFAULT NULL COMMENT 'Id of the item-uri table entry that contains the item uri', - `uri-hash` varchar(80) NOT NULL DEFAULT '' COMMENT 'RIPEMD-128 hash from uri', - `parent` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'item.id of the parent to this item if it is a reply of some form; otherwise this must be set to the id of this item', - `parent-uri` varchar(255) NOT NULL DEFAULT '' COMMENT 'uri of the parent to this item', - `parent-uri-id` int(10) unsigned DEFAULT NULL COMMENT 'Id of the item-uri table that contains the parent uri', - `thr-parent` varchar(255) NOT NULL DEFAULT '' COMMENT 'If the parent of this item is not the top-level item in the conversation, the uri of the immediate parent; otherwise set to parent-uri', - `thr-parent-id` int(10) unsigned DEFAULT NULL COMMENT 'Id of the item-uri table that contains the thread parent uri', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Creation timestamp.', - `edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of last edit (default is created)', - `commented` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of last comment/reply to this item', - `received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime', - `changed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date that something in the conversation changed, indicating clients should fetch the conversation again', - `gravity` tinyint(3) unsigned NOT NULL DEFAULT '0', - `network` char(4) NOT NULL DEFAULT '' COMMENT 'Network from where the item comes from', - `owner-id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Link to the contact table with uid=0 of the owner of this item', - `author-id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Link to the contact table with uid=0 of the author of this item', - `icid` int(10) unsigned DEFAULT NULL COMMENT 'Id of the item-content table entry that contains the whole item content', - `iaid` int(10) unsigned DEFAULT NULL COMMENT 'Id of the item-activity table entry that contains the activity data', - `extid` varchar(255) NOT NULL DEFAULT '', - `post-type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Post type (personal note, bookmark, ...)', - `global` tinyint(1) NOT NULL DEFAULT '0', - `private` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'distribution is restricted', - `visible` tinyint(1) NOT NULL DEFAULT '0', - `moderated` tinyint(1) NOT NULL DEFAULT '0', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'item has been deleted', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Owner id which owns this copy of the item', - `contact-id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'contact.id', - `wall` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'This item was posted to the wall of uid', - `origin` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'item originated at this site', - `pubmail` tinyint(1) NOT NULL DEFAULT '0', - `starred` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'item has been favourited', - `unseen` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'item has not been seen', - `mention` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'The owner of this item was mentioned in it', - `forum_mode` tinyint(3) unsigned NOT NULL DEFAULT '0', - `psid` int(10) unsigned DEFAULT NULL COMMENT 'ID of the permission set of this post', - `resource-id` varchar(32) NOT NULL DEFAULT '' COMMENT 'Used to link other tables to items, it identifies the linked resource (e.g. photo) and if set must also set resource_type', - `event-id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Used to link to the event.id', - `attach` mediumtext COMMENT 'JSON structure representing attachments to this item', - `allow_cid` mediumtext COMMENT 'Deprecated', - `allow_gid` mediumtext COMMENT 'Deprecated', - `deny_cid` mediumtext COMMENT 'Deprecated', - `deny_gid` mediumtext COMMENT 'Deprecated', - `postopts` text COMMENT 'Deprecated', - `inform` mediumtext COMMENT 'Deprecated', - `type` varchar(20) DEFAULT NULL COMMENT 'Deprecated', - `bookmark` tinyint(1) DEFAULT NULL COMMENT 'Deprecated', - `file` mediumtext COMMENT 'Deprecated', - `location` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `coord` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `tag` mediumtext COMMENT 'Deprecated', - `plink` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `title` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `content-warning` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `body` mediumtext COMMENT 'Deprecated', - `app` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `verb` varchar(100) DEFAULT NULL COMMENT 'Deprecated', - `object-type` varchar(100) DEFAULT NULL COMMENT 'Deprecated', - `object` text COMMENT 'Deprecated', - `target-type` varchar(100) DEFAULT NULL COMMENT 'Deprecated', - `target` text COMMENT 'Deprecated', - `author-name` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `author-link` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `author-avatar` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `owner-name` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `owner-link` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `owner-avatar` varchar(255) DEFAULT NULL COMMENT 'Deprecated', - `rendered-hash` varchar(32) DEFAULT NULL COMMENT 'Deprecated', - `rendered-html` mediumtext COMMENT 'Deprecated', - PRIMARY KEY (`id`), - KEY `guid` (`guid`(191)), - KEY `uri` (`uri`(191)), - KEY `parent` (`parent`), - KEY `parent-uri` (`parent-uri`(191)), - KEY `extid` (`extid`(191)), - KEY `uid_id` (`uid`,`id`), - KEY `uid_contactid_id` (`uid`,`contact-id`,`id`), - KEY `uid_created` (`uid`,`created`), - KEY `uid_commented` (`uid`,`commented`), - KEY `uid_unseen_contactid` (`uid`,`unseen`,`contact-id`), - KEY `uid_network_received` (`uid`,`network`,`received`), - KEY `uid_network_commented` (`uid`,`network`,`commented`), - KEY `uid_thrparent` (`uid`,`thr-parent`(190)), - KEY `uid_parenturi` (`uid`,`parent-uri`(190)), - KEY `uid_contactid_created` (`uid`,`contact-id`,`created`), - KEY `authorid_created` (`author-id`,`created`), - KEY `ownerid` (`owner-id`), - KEY `uid_uri` (`uid`,`uri`(190)), - KEY `resource-id` (`resource-id`), - KEY `deleted_changed` (`deleted`,`changed`), - KEY `uid_wall_changed` (`uid`,`wall`,`changed`), - KEY `uid_eventid` (`uid`,`event-id`), - KEY `icid` (`icid`), - KEY `iaid` (`iaid`), - KEY `psid_wall` (`psid`,`wall`) -) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8mb4 COMMENT='Structure for all posts'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `item` --- - -LOCK TABLES `item` WRITE; -/*!40000 ALTER TABLE `item` DISABLE KEYS */; -INSERT INTO `item` VALUES (1,'930bb26b-205b-f01c-e722-bc8141142783','http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:02:14','2018-11-17 13:51:35','2018-11-17 14:02:14',0,'dfrn',10,10,1,NULL,'',0,1,0,1,0,0,2,4,1,1,0,0,0,0,0,1,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,'930bb26b-205b-f01c-e722-bc8141142783','http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'',2,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:03:07','2018-11-17 13:51:35','2018-11-17 14:03:07',0,'dfrn',10,10,1,NULL,'',0,1,0,1,0,0,0,10,0,0,0,0,1,0,0,2,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(3,'930bb26b-125b-f01c-fe10-e5f035205082','http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082',2,'',3,'http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082',2,'http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082',2,'2018-11-17 13:51:58','2018-11-17 13:51:58','2018-11-17 13:51:58','2018-11-17 13:51:58','2018-11-17 13:51:58',0,'dfrn',10,10,2,NULL,'',0,0,1,1,0,0,2,4,1,1,0,0,0,0,0,3,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(4,'930bb26b-155b-f01d-60ee-5ee161000810','http://192.168.22.10/objects/930bb26b-155b-f01d-60ee-5ee161000810',3,'',2,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 13:53:36',6,'dfrn',9,9,3,NULL,'',0,1,0,1,0,0,0,5,0,1,0,0,1,0,0,2,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(5,'930bb26b-135b-f01d-8e3d-8cc050176928','http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'',2,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 13:54:22',6,'dfrn',11,11,4,NULL,'',0,1,0,1,0,0,0,7,0,1,0,0,1,0,0,2,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(6,'930bb26b-205b-f01c-e722-bc8141142783','http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'',6,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:03:08','2018-11-17 14:00:01','2018-11-17 14:03:08',0,'dfrn',10,10,1,NULL,'',0,1,0,1,0,0,3,14,0,0,0,0,1,0,0,4,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(7,'930bb26b-205b-f01c-e722-bc8141142783','http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'',7,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:03:08','2018-11-17 14:00:02','2018-11-17 14:03:08',0,'dfrn',10,10,1,NULL,'',0,1,0,1,0,0,6,20,0,0,0,0,1,0,0,5,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(8,'930bb26b-205b-f01c-e722-bc8141142783','http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'',8,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:03:08','2018-11-17 14:00:02','2018-11-17 14:03:08',0,'dfrn',10,10,1,NULL,'',0,1,0,1,0,0,5,18,0,0,0,0,0,0,0,6,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(9,'930bb26b-205b-f01c-e722-bc8141142783','http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'',9,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:03:08','2018-11-17 14:00:02','2018-11-17 14:03:08',0,'dfrn',10,10,1,NULL,'',0,1,0,1,0,0,4,16,0,0,0,0,1,0,0,7,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(10,'930bb26b-125b-f01c-fe10-e5f035205082','http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082',2,'',10,'http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082',2,'http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082',2,'2018-11-17 13:51:58','2018-11-17 13:51:58','2018-11-17 14:00:02','2018-11-17 14:00:02','2018-11-17 14:00:02',0,'dfrn',10,10,2,NULL,'',0,0,1,1,0,0,5,18,0,0,0,0,0,0,0,6,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(11,'930bb26b-125b-f01c-fe10-e5f035205082','http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082',2,'',11,'http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082',2,'http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082',2,'2018-11-17 13:51:58','2018-11-17 13:51:58','2018-11-17 14:00:03','2018-11-17 14:00:02','2018-11-17 14:00:03',0,'dfrn',10,10,2,NULL,'',0,0,1,1,0,0,3,14,0,0,0,0,1,0,0,4,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(12,'930bb26b-155b-f01d-60ee-5ee161000810','http://192.168.22.10/objects/930bb26b-155b-f01d-60ee-5ee161000810',3,'',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 14:00:04','2018-11-17 13:53:36',6,'apub',9,9,3,NULL,'',0,1,0,1,0,0,2,15,1,0,0,0,0,0,0,1,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(13,'930bb26b-155b-f01d-60ee-5ee161000810','http://192.168.22.10/objects/930bb26b-155b-f01d-60ee-5ee161000810',3,'',6,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 14:00:04','2018-11-17 13:53:36',6,'apub',9,9,3,NULL,'',0,1,0,1,0,0,3,5,0,0,0,0,1,0,0,4,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(14,'930bb26b-135b-f01d-8e3d-8cc050176928','http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 14:00:04','2018-11-17 13:54:22',6,'apub',11,11,4,NULL,'',0,1,0,1,0,0,2,19,1,0,0,0,0,0,0,1,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(15,'930bb26b-155b-f01d-60ee-5ee161000810','http://192.168.22.10/objects/930bb26b-155b-f01d-60ee-5ee161000810',3,'',7,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 14:00:04','2018-11-17 13:53:36',6,'apub',9,9,3,NULL,'',0,1,0,1,0,0,6,9,0,0,0,0,1,0,0,5,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(16,'930bb26b-135b-f01d-8e3d-8cc050176928','http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'',6,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 14:00:04','2018-11-17 13:54:22',6,'apub',11,11,4,NULL,'',0,1,0,1,0,0,3,11,0,0,0,0,1,0,0,4,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(17,'930bb26b-155b-f01d-60ee-5ee161000810','http://192.168.22.10/objects/930bb26b-155b-f01d-60ee-5ee161000810',3,'',8,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 14:00:04','2018-11-17 13:53:36',6,'apub',9,9,3,NULL,'',0,1,0,1,0,0,5,9,0,0,0,0,0,0,0,6,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(18,'930bb26b-135b-f01d-8e3d-8cc050176928','http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'',7,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 14:00:04','2018-11-17 13:54:22',6,'apub',11,11,4,NULL,'',0,1,0,1,0,0,6,24,0,0,0,0,1,0,0,5,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(19,'930bb26b-155b-f01d-60ee-5ee161000810','http://192.168.22.10/objects/930bb26b-155b-f01d-60ee-5ee161000810',3,'',9,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 13:53:36','2018-11-17 14:00:04','2018-11-17 13:53:36',6,'apub',9,9,3,NULL,'',0,1,0,1,0,0,4,22,0,0,0,0,1,0,0,7,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(20,'930bb26b-135b-f01d-8e3d-8cc050176928','http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'',8,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 14:00:04','2018-11-17 13:54:22',6,'apub',11,11,4,NULL,'',0,1,0,1,0,0,5,7,0,0,0,0,0,0,0,6,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(21,'930bb26b-135b-f01d-8e3d-8cc050176928','http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'',9,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 13:54:22','2018-11-17 14:00:04','2018-11-17 13:54:22',6,'apub',11,11,4,NULL,'',0,1,0,1,0,0,4,11,0,0,0,0,1,0,0,7,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(22,'930bb26b-765b-f01f-5a43-22a585408489','http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429',5,'',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:02:02',3,'dfrn',10,10,NULL,1,'',0,1,0,1,0,0,2,4,1,1,0,0,0,0,0,1,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(23,'930bb26b-765b-f01f-5a43-22a585408489','http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429',5,'',2,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:02:02',3,'dfrn',10,10,NULL,1,'',0,1,0,1,0,0,0,10,0,0,0,0,1,0,0,2,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(24,'930bb26b-555b-f01f-66c7-ab6175377664','http://192.168.22.10/objects/930bb26b-555b-f01f-66c7-ab6175377664',6,'',1,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:02:14',6,'dfrn',10,10,5,NULL,'',0,1,0,1,0,0,2,4,1,1,0,0,0,0,0,1,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(25,'930bb26b-555b-f01f-66c7-ab6175377664','http://192.168.22.10/objects/930bb26b-555b-f01f-66c7-ab6175377664',6,'',2,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:02:14',6,'dfrn',10,10,5,NULL,'',0,1,0,1,0,0,0,10,0,0,0,0,1,0,0,2,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(26,'930bb26b-195b-f01f-925f-1a4363126542','http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'',26,'http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58',0,'dfrn',11,11,6,NULL,'',0,1,0,1,0,0,5,7,1,1,0,0,0,0,0,6,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(27,'930bb26b-195b-f01f-925f-1a4363126542','http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'',27,'http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58',0,'dfrn',11,11,6,NULL,'',0,1,0,1,0,0,0,11,0,0,0,0,1,0,0,2,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(28,'930bb26b-765b-f01f-5a43-22a585408489','http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429#Like',8,'',8,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:03:07','2018-11-17 14:02:02',3,'apub',10,10,NULL,2,'',0,1,0,1,0,0,5,18,0,0,0,0,1,0,0,6,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(29,'930bb26b-765b-f01f-5a43-22a585408489','http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429#Like',8,'',2,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:03:07','2018-11-17 14:02:02',3,'apub',10,10,NULL,2,'',0,1,0,1,0,0,0,10,0,0,0,0,1,0,0,2,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(30,'930bb26b-765b-f01f-5a43-22a585408489','http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429#Like',8,'',6,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:03:07','2018-11-17 14:02:02',3,'apub',10,10,NULL,2,'',0,1,0,1,0,0,3,14,0,0,0,0,1,0,0,4,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(31,'930bb26b-765b-f01f-5a43-22a585408489','http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429#Like',8,'',9,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:03:07','2018-11-17 14:02:02',3,'apub',10,10,NULL,2,'',0,1,0,1,0,0,4,16,0,0,0,0,1,0,0,7,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(32,'930bb26b-765b-f01f-5a43-22a585408489','http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429#Like',8,'',7,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:02:02','2018-11-17 14:03:07','2018-11-17 14:02:02',3,'apub',10,10,NULL,2,'',0,1,0,1,0,0,6,20,0,0,0,0,1,0,0,5,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(33,'930bb26b-195b-f01f-925f-1a4363126542','http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'',33,'http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:03:08','2018-11-17 14:03:08','2018-11-17 14:03:08',0,'dfrn',11,11,6,NULL,'',0,1,0,1,0,0,2,19,0,0,0,0,1,0,0,1,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(34,'930bb26b-555b-f01f-66c7-ab6175377664','http://192.168.22.10/objects/930bb26b-555b-f01f-66c7-ab6175377664',6,'',6,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:03:08','2018-11-17 14:02:14',6,'apub',10,10,5,NULL,'',0,1,0,1,0,0,3,14,0,0,0,0,1,0,0,4,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(35,'930bb26b-555b-f01f-66c7-ab6175377664','http://192.168.22.10/objects/930bb26b-555b-f01f-66c7-ab6175377664',6,'',7,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:03:08','2018-11-17 14:02:14',6,'apub',10,10,5,NULL,'',0,1,0,1,0,0,6,20,0,0,0,0,1,0,0,5,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(36,'930bb26b-555b-f01f-66c7-ab6175377664','http://192.168.22.10/objects/930bb26b-555b-f01f-66c7-ab6175377664',6,'',8,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:03:08','2018-11-17 14:02:14',6,'apub',10,10,5,NULL,'',0,1,0,1,0,0,5,18,0,0,0,0,1,0,0,6,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(37,'930bb26b-555b-f01f-66c7-ab6175377664','http://192.168.22.10/objects/930bb26b-555b-f01f-66c7-ab6175377664',6,'',9,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:03:08','2018-11-17 14:02:14',6,'dfrn',10,10,5,NULL,'',0,1,0,1,0,0,4,16,0,0,0,0,1,0,0,7,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(38,'930bb26b-555b-f01f-66c7-ab6175377664','http://192.168.22.10/objects/930bb26b-555b-f01f-66c7-ab6175377664',6,'',9,'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',1,'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',4,'2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:02:14','2018-11-17 14:03:08','2018-11-17 14:02:14',6,'apub',10,10,5,NULL,'',0,1,0,1,0,0,4,16,0,0,0,0,1,0,0,7,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(39,'930bb26b-195b-f01f-925f-1a4363126542','http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'',39,'http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',7,'2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:03:08','2018-11-17 14:03:08','2018-11-17 14:03:08',0,'dfrn',11,11,6,NULL,'',0,1,0,1,0,0,6,24,0,0,0,0,1,0,0,5,'',0,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -/*!40000 ALTER TABLE `item` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `item-activity` --- - -DROP TABLE IF EXISTS `item-activity`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `item-activity` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `uri` varchar(255) DEFAULT NULL, - `uri-id` int(10) unsigned DEFAULT NULL COMMENT 'Id of the item-uri table entry that contains the item uri', - `uri-hash` varchar(80) NOT NULL DEFAULT '' COMMENT 'RIPEMD-128 hash from uri', - `activity` smallint(5) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - UNIQUE KEY `uri-hash` (`uri-hash`), - KEY `uri` (`uri`(191)), - KEY `uri-id` (`uri-id`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='Activities for items'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `item-activity` --- - -LOCK TABLES `item-activity` WRITE; -/*!40000 ALTER TABLE `item-activity` DISABLE KEYS */; -INSERT INTO `item-activity` VALUES (1,NULL,5,'5',0),(2,NULL,8,'8',0); -/*!40000 ALTER TABLE `item-activity` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `item-content` --- - -DROP TABLE IF EXISTS `item-content`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `item-content` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `uri` varchar(255) DEFAULT NULL, - `uri-id` int(10) unsigned DEFAULT NULL COMMENT 'Id of the item-uri table entry that contains the item uri', - `uri-plink-hash` varchar(80) NOT NULL DEFAULT '' COMMENT 'RIPEMD-128 hash from uri', - `title` varchar(255) NOT NULL DEFAULT '' COMMENT 'item title', - `content-warning` varchar(255) NOT NULL DEFAULT '', - `body` mediumtext COMMENT 'item body content', - `location` varchar(255) NOT NULL DEFAULT '' COMMENT 'text location where this item originated', - `coord` varchar(255) NOT NULL DEFAULT '' COMMENT 'longitude/latitude pair representing location where this item originated', - `language` text COMMENT 'Language information about this post', - `app` varchar(255) NOT NULL DEFAULT '' COMMENT 'application which generated this item', - `rendered-hash` varchar(32) NOT NULL DEFAULT '', - `rendered-html` mediumtext COMMENT 'item.body converted to html', - `object-type` varchar(100) NOT NULL DEFAULT '' COMMENT 'ActivityStreams object type', - `object` text COMMENT 'JSON encoded object structure unless it is an implied object (normal post)', - `target-type` varchar(100) NOT NULL DEFAULT '' COMMENT 'ActivityStreams target type if applicable (URI)', - `target` text COMMENT 'JSON encoded target structure if used', - `plink` varchar(255) NOT NULL DEFAULT '' COMMENT 'permalink or URL to a displayable copy of the message at its source', - `verb` varchar(100) NOT NULL DEFAULT '' COMMENT 'ActivityStreams verb', - PRIMARY KEY (`id`), - UNIQUE KEY `uri-plink-hash` (`uri-plink-hash`), - KEY `uri` (`uri`(191)), - KEY `uri-id` (`uri-id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COMMENT='Content for all posts'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `item-content` --- - -LOCK TABLES `item-content` WRITE; -/*!40000 ALTER TABLE `item-content` DISABLE KEYS */; -INSERT INTO `item-content` VALUES (1,NULL,1,'1','','','This is a public test posting.','','','{\"en\":0.40678571428571,\"la\":0.30309523809524,\"fr\":0.28404761904762}','','80624d4b29c199dbace71f914601a0ff','This is a public test posting.','http://activitystrea.ms/schema/1.0/note','','','','http://192.168.22.10/display/930bb26b-205b-f01c-e722-bc8141142783','http://activitystrea.ms/schema/1.0/post'),(2,NULL,2,'2','','','This is a posting to group 1.','','','{\"en\":0.47093333333333,\"sk\":0.28946666666667,\"lt\":0.27453333333333}','','90dde7ca9354eaef06d3b9101fb662fd','This is a posting to group 1.','http://activitystrea.ms/schema/1.0/note','','','','http://192.168.22.10/display/930bb26b-125b-f01c-fe10-e5f035205082','http://activitystrea.ms/schema/1.0/post'),(3,NULL,3,'3','','','friendica 2 checking in.','','','{\"tl\":0.28466666666667,\"en\":0.2805,\"nl\":0.248}','','abf89282dfe1dd467eaeb4628e7406f3','friendica 2 checking in.','http://activitystrea.ms/schema/1.0/comment','','','','http://192.168.22.10/display/930bb26b-155b-f01d-60ee-5ee161000810','http://activitystrea.ms/schema/1.0/post'),(4,NULL,4,'4','','','friendica 4 testing :-)','','','{\"en\":0.36020833333333,\"nl\":0.28479166666667,\"tl\":0.27229166666667}','','130e6cf769f1f7b5f511426531a9d288','friendica 4 testing <img class=\"smiley\" src=\"http://192.168.22.10/images/smiley-smile.gif\" alt=\":-)\" title=\":-)\" />','http://activitystrea.ms/schema/1.0/comment','','','','http://192.168.22.10/display/930bb26b-135b-f01d-8e3d-8cc050176928','http://activitystrea.ms/schema/1.0/post'),(5,NULL,6,'6','','','Nice to have you here :-D','','','{\"en\":0.46787878787879,\"cs\":0.30257575757576,\"da\":0.28651515151515}','','af24ae13dd60eaa4c6613750c976ac80','Nice to have you here <img class=\"smiley\" src=\"http://192.168.22.10/images/smiley-laughing.gif\" alt=\":-D\" title=\":-D\" />','http://activitystrea.ms/schema/1.0/comment','','','','http://192.168.22.10/display/930bb26b-555b-f01f-66c7-ab6175377664','http://activitystrea.ms/schema/1.0/post'),(6,NULL,7,'7','','','Testing...','','','{\"en\":0.65380952380952,\"nl\":0.46095238095238,\"et\":0.40190476190476}','','9d770c909c2c69b09eae2372c4cf405d','Testing...','http://activitystrea.ms/schema/1.0/note','','','','http://192.168.22.10/display/930bb26b-195b-f01f-925f-1a4363126542','http://activitystrea.ms/schema/1.0/post'); -/*!40000 ALTER TABLE `item-content` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `item-delivery-data` --- - -DROP TABLE IF EXISTS `item-delivery-data`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `item-delivery-data` ( - `iid` int(10) unsigned NOT NULL COMMENT 'Item id', - `postopts` text COMMENT 'External post connectors add their network name to this comma-separated string to identify that they should be delivered to these networks during delivery', - `inform` mediumtext COMMENT 'Additional receivers of the linked item', - PRIMARY KEY (`iid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Delivery data for items'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `item-delivery-data` --- - -LOCK TABLES `item-delivery-data` WRITE; -/*!40000 ALTER TABLE `item-delivery-data` DISABLE KEYS */; -/*!40000 ALTER TABLE `item-delivery-data` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `item-uri` --- - -DROP TABLE IF EXISTS `item-uri`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `item-uri` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `uri` varbinary(255) NOT NULL COMMENT 'URI of an item', - `guid` varbinary(255) DEFAULT NULL COMMENT 'A unique identifier for an item', - PRIMARY KEY (`id`), - UNIQUE KEY `uri` (`uri`), - KEY `guid` (`guid`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COMMENT='URI and GUID for items'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `item-uri` --- - -LOCK TABLES `item-uri` WRITE; -/*!40000 ALTER TABLE `item-uri` DISABLE KEYS */; -INSERT INTO `item-uri` VALUES (1,_binary 'http://192.168.22.10/objects/930bb26b-205b-f01c-e722-bc8141142783',_binary '930bb26b-205b-f01c-e722-bc8141142783'),(2,_binary 'http://192.168.22.10/objects/930bb26b-125b-f01c-fe10-e5f035205082',_binary '930bb26b-125b-f01c-fe10-e5f035205082'),(3,_binary 'http://192.168.22.10/objects/930bb26b-155b-f01d-60ee-5ee161000810',_binary '930bb26b-155b-f01d-60ee-5ee161000810'),(4,_binary 'http://192.168.22.10/objects/930bb26b-135b-f01d-8e3d-8cc050176928',_binary '930bb26b-135b-f01d-8e3d-8cc050176928'),(5,_binary 'http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429',_binary '930bb26b-765b-f01f-5a43-22a585408489'),(6,_binary 'http://192.168.22.10/objects/930bb26b-555b-f01f-66c7-ab6175377664',_binary '930bb26b-555b-f01f-66c7-ab6175377664'),(7,_binary 'http://192.168.22.10/objects/930bb26b-195b-f01f-925f-1a4363126542',_binary '930bb26b-195b-f01f-925f-1a4363126542'),(8,_binary 'http://192.168.22.10/objects/930bb26b-205b-f01f-5a43-237373720429#Like',_binary '930bb26b-765b-f01f-5a43-22a585408489'); -/*!40000 ALTER TABLE `item-uri` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `locks` --- - -DROP TABLE IF EXISTS `locks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `locks` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `name` varchar(128) NOT NULL DEFAULT '', - `locked` tinyint(1) NOT NULL DEFAULT '0', - `pid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Process ID', - `expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of cache expiration', - PRIMARY KEY (`id`), - KEY `name_expires` (`name`,`expires`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `locks` --- - -LOCK TABLES `locks` WRITE; -/*!40000 ALTER TABLE `locks` DISABLE KEYS */; -/*!40000 ALTER TABLE `locks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mail` --- - -DROP TABLE IF EXISTS `mail`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mail` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Owner User id', - `guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this private message', - `from-name` varchar(255) NOT NULL DEFAULT '' COMMENT 'name of the sender', - `from-photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'contact photo link of the sender', - `from-url` varchar(255) NOT NULL DEFAULT '' COMMENT 'profile linke of the sender', - `contact-id` varchar(255) NOT NULL DEFAULT '' COMMENT 'contact.id', - `convid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'conv.id', - `title` varchar(255) NOT NULL DEFAULT '', - `body` mediumtext, - `seen` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'if message visited it is 1', - `reply` tinyint(1) NOT NULL DEFAULT '0', - `replied` tinyint(1) NOT NULL DEFAULT '0', - `unknown` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'if sender not in the contact table this is 1', - `uri` varchar(255) NOT NULL DEFAULT '', - `parent-uri` varchar(255) NOT NULL DEFAULT '', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time of the private message', - PRIMARY KEY (`id`), - KEY `uid_seen` (`uid`,`seen`), - KEY `convid` (`convid`), - KEY `uri` (`uri`(64)), - KEY `parent-uri` (`parent-uri`(64)), - KEY `contactid` (`contact-id`(32)) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='private messages'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mail` --- - -LOCK TABLES `mail` WRITE; -/*!40000 ALTER TABLE `mail` DISABLE KEYS */; -/*!40000 ALTER TABLE `mail` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `mailacct` --- - -DROP TABLE IF EXISTS `mailacct`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `mailacct` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `server` varchar(255) NOT NULL DEFAULT '', - `port` smallint(5) unsigned NOT NULL DEFAULT '0', - `ssltype` varchar(16) NOT NULL DEFAULT '', - `mailbox` varchar(255) NOT NULL DEFAULT '', - `user` varchar(255) NOT NULL DEFAULT '', - `pass` text, - `reply_to` varchar(255) NOT NULL DEFAULT '', - `action` tinyint(3) unsigned NOT NULL DEFAULT '0', - `movetofolder` varchar(255) NOT NULL DEFAULT '', - `pubmail` tinyint(1) NOT NULL DEFAULT '0', - `last_check` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Mail account data for fetching mails'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `mailacct` --- - -LOCK TABLES `mailacct` WRITE; -/*!40000 ALTER TABLE `mailacct` DISABLE KEYS */; -/*!40000 ALTER TABLE `mailacct` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `manage` --- - -DROP TABLE IF EXISTS `manage`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `manage` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `mid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - PRIMARY KEY (`id`), - UNIQUE KEY `uid_mid` (`uid`,`mid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='table of accounts that can manage each other'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `manage` --- - -LOCK TABLES `manage` WRITE; -/*!40000 ALTER TABLE `manage` DISABLE KEYS */; -/*!40000 ALTER TABLE `manage` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `notify` --- - -DROP TABLE IF EXISTS `notify`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `notify` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `hash` varchar(64) NOT NULL DEFAULT '', - `type` smallint(5) unsigned NOT NULL DEFAULT '0', - `name` varchar(255) NOT NULL DEFAULT '', - `url` varchar(255) NOT NULL DEFAULT '', - `photo` varchar(255) NOT NULL DEFAULT '', - `date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `msg` mediumtext, - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Owner User id', - `link` varchar(255) NOT NULL DEFAULT '', - `iid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'item.id', - `parent` int(10) unsigned NOT NULL DEFAULT '0', - `seen` tinyint(1) NOT NULL DEFAULT '0', - `verb` varchar(100) NOT NULL DEFAULT '', - `otype` varchar(10) NOT NULL DEFAULT '', - `name_cache` tinytext COMMENT 'Cached bbcode parsing of name', - `msg_cache` mediumtext COMMENT 'Cached bbcode parsing of msg', - PRIMARY KEY (`id`), - KEY `hash_uid` (`hash`,`uid`), - KEY `seen_uid_date` (`seen`,`uid`,`date`), - KEY `uid_date` (`uid`,`date`), - KEY `uid_type_link` (`uid`,`type`,`link`(190)) -) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COMMENT='notifications'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `notify` --- - -LOCK TABLES `notify` WRITE; -/*!40000 ALTER TABLE `notify` DISABLE KEYS */; -INSERT INTO `notify` VALUES (1,'26b2e6b2bfbdcb1b930d1803d828795494148a442742f0f256208aedddea737e',1,'friendica1','http://192.168.22.10/profile/friendica1','http://192.168.22.10/photo/21202845355bf01a84c5d33470288998-4.jpg?ts=1542462084','2018-11-17 13:41:27','You\'ve received [url=http://192.168.22.10/notifications/intros]an introduction[/url] from [url=http://192.168.22.10/profile/friendica1]friendica1[/url].',3,'http://192.168.22.10/notifications/intros',0,0,0,'http://activitystrea.ms/schema/1.0/request-friend','intro','friendica1','You\'ve received an introduction from {0}.'),(2,'9371eddd53289c4ddd3c49eb6b8074660c5e83b8045849cf6d158af6b2631edc',1,'friendica1','http://192.168.22.10/profile/friendica1','http://192.168.22.10/photo/17505033475bf01b2f38ff6177578340-4.jpg?ts=1542462255','2018-11-17 13:44:18','You\'ve received [url=http://192.168.22.10/notifications/intros]an introduction[/url] from [url=http://192.168.22.10/profile/friendica1]friendica1[/url].',4,'http://192.168.22.10/notifications/intros',0,0,0,'http://activitystrea.ms/schema/1.0/request-friend','intro','friendica1','You\'ve received an introduction from {0}.'),(3,'9a059a93a0fb0e9c09df90fc7cd227c09f8de7fbd78f6df789db9d84937b462e',1,'friendica1','http://192.168.22.10/profile/friendica1','http://192.168.22.10/photo/18858997325bf01b7c29d79163158635-4.jpg?ts=1542462332','2018-11-17 13:45:34','You\'ve received [url=http://192.168.22.10/notifications/intros]an introduction[/url] from [url=http://192.168.22.10/profile/friendica1]friendica1[/url].',5,'http://192.168.22.10/notifications/intros',0,0,0,'http://activitystrea.ms/schema/1.0/request-friend','intro','friendica1','You\'ve received an introduction from {0}.'),(4,'699ac5930bdd21fb2e4712783526cecd2ef429697e3067323540c5b8db62e7a2',1,'friendica1','http://192.168.22.10/profile/friendica1','http://192.168.22.10/photo/56404448515bf01b9730801345691622-4.jpg?ts=1542462359','2018-11-17 13:46:01','You\'ve received [url=http://192.168.22.10/notifications/intros]an introduction[/url] from [url=http://192.168.22.10/profile/friendica1]friendica1[/url].',6,'http://192.168.22.10/notifications/intros',0,0,0,'http://activitystrea.ms/schema/1.0/request-friend','intro','friendica1','You\'ve received an introduction from {0}.'),(5,'21320ddfd4f92b7e1ad13d25a59d83c4ee1364bcdb7cc142eaa1b2a2c8f98cf2',2,'friendica2','http://192.168.22.10/profile/friendica2','http://192.168.22.10/photo/43713557095bf01a87be90d132625601-4.jpg?ts=1542462395','2018-11-17 13:46:35','[url=http://192.168.22.10/profile/friendica2]friendica2[/url] has accepted your [url=http://192.168.22.10/contact/15]connection request[/url].',2,'http://192.168.22.10/contact/15',0,0,1,'http://activitystrea.ms/schema/1.0/make-friend','intro','friendica2','{0} has accepted your connection request.'),(6,'a24b63452ae6c7ee8ac8aac9fc830ead7d08cafae467a51c03e9442566c74eb0',1,'friendica2','http://192.168.22.10/profile/friendica2','http://192.168.22.10/photo/11253258925bf01bd73be2b220663529-4.jpg?ts=1542462423','2018-11-17 13:47:05','You\'ve received [url=http://192.168.22.10/notifications/intros]an introduction[/url] from [url=http://192.168.22.10/profile/friendica2]friendica2[/url].',4,'http://192.168.22.10/notifications/intros',0,0,0,'http://activitystrea.ms/schema/1.0/request-friend','intro','friendica2','You\'ve received an introduction from {0}.'),(7,'d31c867f6baa729a7b0da2d1d97bd2a19d78f4024f674cfa768c2f6afaa57027',2,'friendica3','http://192.168.22.10/profile/friendica3','http://192.168.22.10/photo/10942403815bf01b31eec59540800317-4.jpg?ts=1542462458','2018-11-17 13:47:38','[url=http://192.168.22.10/profile/friendica3]friendica3[/url] has accepted your [url=http://192.168.22.10/contact/17]connection request[/url].',2,'http://192.168.22.10/contact/17',0,0,1,'http://activitystrea.ms/schema/1.0/make-friend','intro','friendica3','{0} has accepted your connection request.'),(8,'d10dcfd489738e1ea313982384aa13bd4aaa599b3b80543eaa62b6fe96bdb10b',2,'friendica3','http://192.168.22.10/profile/friendica3','http://192.168.22.10/photo/13931663105bf01bd94d90e243464200-4.jpg?ts=1542462469','2018-11-17 13:47:49','[url=http://192.168.22.10/profile/friendica3]friendica3[/url] has accepted your [url=http://192.168.22.10/contact/23]connection request[/url].',3,'http://192.168.22.10/contact/23',0,0,1,'http://activitystrea.ms/schema/1.0/make-friend','intro','friendica3','{0} has accepted your connection request.'),(9,'0d9147f1bc16b0162e2974dfb2d420c184973e0bdaee8a4c1a2676cc0b2a5600',2,'friendica4','http://192.168.22.10/profile/friendica4','http://192.168.22.10/photo/34785303845bf01b7eb2f18737560971-4.jpg?ts=1542462495','2018-11-17 13:48:15','[url=http://192.168.22.10/profile/friendica4]friendica4[/url] has accepted your [url=http://192.168.22.10/contact/19]connection request[/url].',2,'http://192.168.22.10/contact/19',0,0,1,'http://activitystrea.ms/schema/1.0/make-friend','intro','friendica4','{0} has accepted your connection request.'),(10,'167440058a53e00efd7af49034a4317962ebe7fdef5a5553b70efaa38b4c827a',1,'friendica4','http://192.168.22.10/profile/friendica4','http://192.168.22.10/photo/10196270915bf01c3d3dcff106620826-4.jpg?ts=1542462525','2018-11-17 13:48:47','You\'ve received [url=http://192.168.22.10/notifications/intros]an introduction[/url] from [url=http://192.168.22.10/profile/friendica4]friendica4[/url].',6,'http://192.168.22.10/notifications/intros',0,0,0,'http://activitystrea.ms/schema/1.0/request-friend','intro','friendica4','You\'ve received an introduction from {0}.'),(11,'6ae913f3467c467ee755dd60e718e8e020448feb22c50d7e413e4fc75b997008',2,'friendica5','http://192.168.22.10/profile/friendica5','http://192.168.22.10/photo/14034074815bf01b999cc19093001643-4.jpg?ts=1542462550','2018-11-17 13:49:10','[url=http://192.168.22.10/profile/friendica5]friendica5[/url] has accepted your [url=http://192.168.22.10/contact/21]connection request[/url].',2,'http://192.168.22.10/contact/21',0,0,1,'http://activitystrea.ms/schema/1.0/make-friend','intro','friendica5','{0} has accepted your connection request.'),(12,'056c97fea6f9ef275430a56f511936bfb4ef21ceec4ab68188f15f4b977ccb5d',2,'friendica5','http://192.168.22.10/profile/friendica5','http://192.168.22.10/photo/11789807665bf01c3fd8ccd829485384-4.jpg?ts=1542462560','2018-11-17 13:49:20','[url=http://192.168.22.10/profile/friendica5]friendica5[/url] has accepted your [url=http://192.168.22.10/contact/25]connection request[/url].',5,'http://192.168.22.10/contact/25',0,0,1,'http://activitystrea.ms/schema/1.0/make-friend','intro','friendica5','{0} has accepted your connection request.'),(13,'629b3cd91925c1f39331fea188615eb2edec6889718328037304ed1ae76a1181',8,'friendica4','http://192.168.22.10/profile/friendica4','http://192.168.22.10/photo/11822615065bf00e7fab8ba088168210-5.jpg?ts=1542462606','2018-11-17 13:54:22','[url=http://192.168.22.10/profile/friendica4]friendica4[/url] commented on [url=http://192.168.22.10/display/930bb26b-205b-f01c-e722-bc8141142783]friendica1\'s post[/url]',3,'http://192.168.22.10/display/930bb26b-135b-f01d-8e3d-8cc050176928',5,2,0,'http://activitystrea.ms/schema/1.0/post','item','friendica4','{0} commented on friendica1\'s post'),(14,'3aafdf13157f32deb1b4959c16c3c2a0c581702c85fd78ec5d74dd581d30a0e4',8,'friendica2','http://192.168.22.10/profile/friendica2','http://192.168.22.10/photo/53312796025bf00e7f82e82896954942-5.jpg?ts=1542462605','2018-11-17 14:00:04','[url=http://192.168.22.10/profile/friendica2]friendica2[/url] commented on [url=http://192.168.22.10/display/930bb26b-205b-f01c-e722-bc8141142783]your post[/url]',2,'http://192.168.22.10/display/930bb26b-155b-f01d-60ee-5ee161000810',12,1,0,'http://activitystrea.ms/schema/1.0/post','item','friendica2','{0} commented on your post'),(15,'1b5396945536db74389ad73b1adfe3f7d88f69182d819475c4d3781909f3b597',8,'friendica4','http://192.168.22.10/profile/friendica4','http://192.168.22.10/photo/11822615065bf00e7fab8ba088168210-5.jpg?ts=1542462606','2018-11-17 14:00:04','[url=http://192.168.22.10/profile/friendica4]friendica4[/url] commented on [url=http://192.168.22.10/display/930bb26b-205b-f01c-e722-bc8141142783]your post[/url]',2,'http://192.168.22.10/display/930bb26b-135b-f01d-8e3d-8cc050176928',14,1,0,'http://activitystrea.ms/schema/1.0/post','item','friendica4','{0} commented on your post'),(16,'84a3fbc2a38f74fbcc8ce245a1b8066f304d9202531753148a5a6a16d83aaf56',8,'friendica1','http://192.168.22.10/profile/friendica1','http://192.168.22.10/photo/95550517915bf00e7f84cd7979805449-5.jpg?ts=1542462606','2018-11-17 14:02:14','[url=http://192.168.22.10/profile/friendica1]friendica1[/url] commented on [url=http://192.168.22.10/display/930bb26b-205b-f01c-e722-bc8141142783]friendica1\'s post[/url]',3,'http://192.168.22.10/display/930bb26b-555b-f01f-66c7-ab6175377664',25,2,0,'http://activitystrea.ms/schema/1.0/post','item','friendica1','{0} commented on friendica1\'s post'),(17,'4b035a7e4d79f2e46d28be6edb3c41b9b1553d9a7de71330b74fdc7e5e6fb381',8,'friendica1','http://192.168.22.10/profile/friendica1','http://192.168.22.10/photo/95550517915bf00e7f84cd7979805449-5.jpg?ts=1542462606','2018-11-17 14:02:14','[url=http://192.168.22.10/profile/friendica1]friendica1[/url] commented on [url=http://192.168.22.10/display/930bb26b-205b-f01c-e722-bc8141142783]friendica1\'s post[/url]',5,'http://192.168.22.10/display/930bb26b-555b-f01f-66c7-ab6175377664',25,2,0,'http://activitystrea.ms/schema/1.0/post','item','friendica1','{0} commented on friendica1\'s post'); -/*!40000 ALTER TABLE `notify` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `notify-threads` --- - -DROP TABLE IF EXISTS `notify-threads`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `notify-threads` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `notify-id` int(10) unsigned NOT NULL DEFAULT '0', - `master-parent-item` int(10) unsigned NOT NULL DEFAULT '0', - `parent-item` int(10) unsigned NOT NULL DEFAULT '0', - `receiver-uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `notify-threads` --- - -LOCK TABLES `notify-threads` WRITE; -/*!40000 ALTER TABLE `notify-threads` DISABLE KEYS */; -INSERT INTO `notify-threads` VALUES (1,13,2,0,3),(2,14,1,0,2),(3,17,2,0,5); -/*!40000 ALTER TABLE `notify-threads` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `oembed` --- - -DROP TABLE IF EXISTS `oembed`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `oembed` ( - `url` varbinary(255) NOT NULL COMMENT 'page url', - `maxwidth` mediumint(8) unsigned NOT NULL COMMENT 'Maximum width passed to Oembed', - `content` mediumtext COMMENT 'OEmbed data of the page', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of creation', - PRIMARY KEY (`url`,`maxwidth`), - KEY `created` (`created`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='cache for OEmbed queries'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `oembed` --- - -LOCK TABLES `oembed` WRITE; -/*!40000 ALTER TABLE `oembed` DISABLE KEYS */; -/*!40000 ALTER TABLE `oembed` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `openwebauth-token` --- - -DROP TABLE IF EXISTS `openwebauth-token`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `openwebauth-token` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `type` varchar(32) NOT NULL DEFAULT '' COMMENT 'Verify type', - `token` varchar(255) NOT NULL DEFAULT '' COMMENT 'A generated token', - `meta` varchar(255) NOT NULL DEFAULT '', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of creation', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Store OpenWebAuth token to verify contacts'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `openwebauth-token` --- - -LOCK TABLES `openwebauth-token` WRITE; -/*!40000 ALTER TABLE `openwebauth-token` DISABLE KEYS */; -/*!40000 ALTER TABLE `openwebauth-token` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `parsed_url` --- - -DROP TABLE IF EXISTS `parsed_url`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `parsed_url` ( - `url` varbinary(255) NOT NULL COMMENT 'page url', - `guessing` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'is the ''guessing'' mode active?', - `oembed` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'is the data the result of oembed?', - `content` mediumtext COMMENT 'page data', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of creation', - PRIMARY KEY (`url`,`guessing`,`oembed`), - KEY `created` (`created`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='cache for ''parse_url'' queries'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `parsed_url` --- - -LOCK TABLES `parsed_url` WRITE; -/*!40000 ALTER TABLE `parsed_url` DISABLE KEYS */; -/*!40000 ALTER TABLE `parsed_url` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `participation` --- - -DROP TABLE IF EXISTS `participation`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `participation` ( - `iid` int(10) unsigned NOT NULL, - `server` varchar(60) NOT NULL, - `cid` int(10) unsigned NOT NULL, - `fid` int(10) unsigned NOT NULL, - PRIMARY KEY (`iid`,`server`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Storage for participation messages from Diaspora'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `participation` --- - -LOCK TABLES `participation` WRITE; -/*!40000 ALTER TABLE `participation` DISABLE KEYS */; -/*!40000 ALTER TABLE `participation` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `pconfig` --- - -DROP TABLE IF EXISTS `pconfig`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `pconfig` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `cat` varbinary(50) NOT NULL DEFAULT '', - `k` varbinary(100) NOT NULL DEFAULT '', - `v` mediumtext, - PRIMARY KEY (`id`), - UNIQUE KEY `uid_cat_k` (`uid`,`cat`,`k`) -) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COMMENT='personal (per user) configuration storage'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `pconfig` --- - -LOCK TABLES `pconfig` WRITE; -/*!40000 ALTER TABLE `pconfig` DISABLE KEYS */; -INSERT INTO `pconfig` VALUES (1,1,_binary 'network.view',_binary 'tab.selected','a:6:{i:0;s:6:\"active\";i:1;s:0:\"\";i:2;s:0:\"\";i:3;s:0:\"\";i:4;s:0:\"\";i:5;s:0:\"\";}'),(2,1,_binary 'expire',_binary 'items','1'),(3,1,_binary 'expire',_binary 'notes','1'),(4,1,_binary 'expire',_binary 'starred','1'),(5,1,_binary 'expire',_binary 'photos','0'),(6,1,_binary 'expire',_binary 'network_only','0'),(7,1,_binary 'system',_binary 'suggestme','0'),(8,1,_binary 'system',_binary 'email_textonly','0'),(9,1,_binary 'system',_binary 'detailed_notif','0'),(10,2,_binary 'network.view',_binary 'tab.selected','a:6:{i:0;s:6:\"active\";i:1;s:0:\"\";i:2;s:0:\"\";i:3;s:0:\"\";i:4;s:0:\"\";i:5;s:0:\"\";}'),(11,2,_binary 'expire',_binary 'items','1'),(12,2,_binary 'expire',_binary 'notes','1'),(13,2,_binary 'expire',_binary 'starred','1'),(14,2,_binary 'expire',_binary 'photos','0'),(15,2,_binary 'expire',_binary 'network_only','0'),(16,2,_binary 'system',_binary 'suggestme','0'),(17,2,_binary 'system',_binary 'email_textonly','0'),(18,2,_binary 'system',_binary 'detailed_notif','0'),(19,3,_binary 'network.view',_binary 'tab.selected','a:6:{i:0;s:6:\"active\";i:1;s:0:\"\";i:2;s:0:\"\";i:3;s:0:\"\";i:4;s:0:\"\";i:5;s:0:\"\";}'),(20,5,_binary 'network.view',_binary 'tab.selected','a:6:{i:0;s:6:\"active\";i:1;s:0:\"\";i:2;s:0:\"\";i:3;s:0:\"\";i:4;s:0:\"\";i:5;s:0:\"\";}'); -/*!40000 ALTER TABLE `pconfig` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `permissionset` --- - -DROP TABLE IF EXISTS `permissionset`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `permissionset` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Owner id of this permission set', - `allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id ''<19><78>''', - `allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups', - `deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id', - `deny_gid` mediumtext COMMENT 'Access Control - list of denied groups', - PRIMARY KEY (`id`), - KEY `uid_allow_cid_allow_gid_deny_cid_deny_gid` (`allow_cid`(50),`allow_gid`(30),`deny_cid`(50),`deny_gid`(30)) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `permissionset` --- - -LOCK TABLES `permissionset` WRITE; -/*!40000 ALTER TABLE `permissionset` DISABLE KEYS */; -INSERT INTO `permissionset` VALUES (1,2,'','','',''),(2,0,'','','',''),(3,2,'','<7>','',''),(4,3,'','','',''),(5,6,'','','',''),(6,5,'','','',''),(7,4,'','','',''); -/*!40000 ALTER TABLE `permissionset` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `photo` --- - -DROP TABLE IF EXISTS `photo`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `photo` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Owner User id', - `contact-id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'contact.id', - `guid` char(16) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this photo', - `resource-id` char(32) NOT NULL DEFAULT '', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation date', - `edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'last edited date', - `title` varchar(255) NOT NULL DEFAULT '', - `desc` text, - `album` varchar(255) NOT NULL DEFAULT '' COMMENT 'The name of the album to which the photo belongs', - `filename` varchar(255) NOT NULL DEFAULT '', - `type` varchar(30) NOT NULL DEFAULT 'image/jpeg', - `height` smallint(5) unsigned NOT NULL DEFAULT '0', - `width` smallint(5) unsigned NOT NULL DEFAULT '0', - `datasize` int(10) unsigned NOT NULL DEFAULT '0', - `data` mediumblob NOT NULL, - `scale` tinyint(3) unsigned NOT NULL DEFAULT '0', - `profile` tinyint(1) NOT NULL DEFAULT '0', - `allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id ''<19><78>''', - `allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups', - `deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id', - `deny_gid` mediumtext COMMENT 'Access Control - list of denied groups', - PRIMARY KEY (`id`), - KEY `contactid` (`contact-id`), - KEY `uid_contactid` (`uid`,`contact-id`), - KEY `uid_profile` (`uid`,`profile`), - KEY `uid_album_scale_created` (`uid`,`album`(32),`scale`,`created`), - KEY `uid_album_resource-id_created` (`uid`,`album`(32),`resource-id`,`created`), - KEY `resource-id` (`resource-id`) -) ENGINE=InnoDB AUTO_INCREMENT=88 DEFAULT CHARSET=utf8mb4 COMMENT='photo storage'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `photo` --- - -LOCK TABLES `photo` WRITE; -/*!40000 ALTER TABLE `photo` DISABLE KEYS */; -INSERT INTO `photo` VALUES (1,1,0,'9305bf00a1f6a976','59483894715bf00a1f6a24a891914929','2018-11-17 12:31:27','2018-11-17 12:31:27','','','Profilbilder','person-300.jpg','image/jpeg',300,300,11007,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/�\�3\�\"u\�OX\�G�X����q\�\�ڭ�/\�+�xߌ\�[VJ$<Fuݼ W���\�ȁ}�\�\�\�ˌ3$xI�{\�>�+\\�c|>o���b_j�\�m\0�&\�Q\�<\�E\�-�A��Zv�\��� ��Ɍ�ԏ.y��\�\�M+z\�Ga�\���\�J\�&�\�\�Q�\'�۫\�|0�\�&G�(\�p\�<\�s0\�\�z�y|�r\�S�h]\�\�n�\�H|j=[P\�`vm�\�P�YE�SGM�M���\�\�\�$��\�h\0S9�\�\�J\�LJL}X�IQ�C\�$�k��gD̛�\�:�ռJ�t\\WU�u}A�\�L\�JsC\�V\�m�؂P�b@�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1>CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�9\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�7\��`\�\rf�\��a\�\�#�\�w^\�s\�\���c�\�j^2\�\�|\�����AaB\�vN�\�g\�\�1�ʋ�,\�3Ŝ E!_��\��=�U\�;\0\'u��\�,)E\����%�\�\"6@M:��\� QH�Yy���Y\�}b\�\�υf���\�\�_\��\0\�OE�m\�1):\�\�t\�^�\�y{l�c\��d|��4ͮ|r\�ņǝ&���\Z�s�\n[\�\�l\�DGԃ\�\'B\�lzu\�\�J���\�(I�]���u\��\�l\�@~d�ǐ�BR7[��Vռ�6`,z\�\�X�׵\�\�\�\�}�\�wֻFٴZͼض+ɧ�����;\�α��%\�<�RNG��#�\�>\��n1�|l�߷����\0�=�\��x\�?�\��S����g���\�{�\�KI˵\�\�=k\�a�&���\�\�\��S(#x�\�kY&�N�\��\�97�m\��Z�����Y��\��ڨ�uE���(�@�8��b���\�{\�٭\�\�\�sݜ�\�v~�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\���&\Z\�΍o\\\�9A/0\�p��4��\�xF|i\�\�C\�\�uXm.���S4Uq\n�\�ʟ��\rM\�%rV�\�[�\�\�<��\�o��]\�ضͮ�Ve\�\�[\�\'\��dك\�\�2<8QF5Ѓ\Z��4X1�\�G_�\�s�s���\�4OKW��v_x��ڍ3\�\�~9��N���\�\�\�B��2�r���\0���!���t�\�\�D\�E�u�\�+@\0E\0cF�F��<p\r�p��\r��!��\�ֱ�n\Z\�\�\�2\"\�\�\��ǫ\�>8�72����\�\Zہ\���e%\�\�>\�ԁq\���^�cog/\�o\�+\�ɘ\�e\�dw�J��w�OŷGi����{oq��5\�Ϗ����c�\"rL:\�!�\n�����e\�B9��1f\'�Ө/��O\�gdcB�{fDM��&\�\�=��؆k*�e\�\���~v1\�c\���\�i\�\��\�\��)�\��#��[H�<�|��nږ�VV\��i{\�}��I��L\�Kf 9\�#\��򙿍KrԷ\�8�6��P\�\���1�\�\�XW5�\�\�#ᬙ\0\�ـ�Dx\\�m#>\�7.\�eDDDDDDDDDDD\\d \�2\�`�&<�)� cf2琏vp\�1�\�\\��8k�\�9\�1����M~C\�\�\�ҵ���|բ\�\�9�Ug��{\\����v�0��5�\��U,SH� x��&B|\"\\X\�\�t\�l{\��\�\�\�_v���\� ���[\�;d卮$RH�\�z\�?a�!\�8 \��dmf�D\�<+��n�&|\�2\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�\�\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�dJ�>\rm�s�1�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���\�\���J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf�`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8�R�\�7$ș>�W n\�I�#�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W�p\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�v�mw�H0�c`\��5�q�7֑���F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ\�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��ߣ���\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J�\�pI_Xa�óuA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i\"J�\�_0\�\�{\r�kA\"\�{�\�\�jwƯ��X*\�Z[\�m3�Ɋ\�\���\�\�l�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�_`F5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\"/\�u�w��\�1�p%\�\n<�9~3��G��-~XB�#��]f_��#f\�N�t\�S\�+Mk{3��7b(�pZF\�k�\�&\�{;�r �]\rE���\�8\� 7�0�!\� /-DDDDDDDDDDQH��p�D�V>V�,�g_����Z\�0�c��}��ƒd��\�b\�x\���m�&)\�<�# ��E.OF�\�:�\0\'܇�<Y\��^�\�6\�?�>#v��\�Bp��\�\�{\�\�5�nq\�<�8g\�\�DDDDE�/Q�/j�E\�׺\�l��\�\�}�~rY[�g��0@\���\��G#�֊3O�\n0�\�\�8���\�E\�\�ϞX�ӕ\��;���k�/*�|lÍm{�]\�\ZuT�;��\�˹���x\�h2�C�26dF�f�w��ԝ\�\�dz\�|\�?�\�S�k��0$\�C�\�y&\�K�l�b��X��|��\0I]�f<�|�����U\�t]�f\�6ڹ{V��\\\�5,��ҩ�~\�ME\�\\���dW\�C�\� J,�.\�\��{;=}Iқ\�Z\�\ry�\�H�<�D/q�&�\�1 �`]}���\�\�0\�07�+>�JI0YNJA�L\��\�\�p�����/\�UZ�t+]�(��}���\�|@�ȣB\��S�\�:f�{\\\���Vtٻ$��<��>ql\09����O\��\��gAz<V\�-i���\�g\�\\��2K[�-g���8\�G)3�P��[\��6~+�{�\�U\�˪<b�L��������������Vx��\�?!�\�T\�ov\�#��h�\�:�\0%D\�k�MQ��\r�`2X��\�kc>E�ę;,\� pa����n�s!�\�\�.\�f\�8\�\�a\�H����kaW�\�7�\�P��\\\�B�RX\�e�M,I�\�C�^�\����q\�+\�R�3X\�+X\�hdF�)�}V\�M\�q(8�\�\�cDW5�\� 7�\�c�\�c\�w�|㳬��\0e�\���\Z�iY�밚9[��\�\�ck���Z�s.u��\�G9\�x�\��\'J�aΦ�=�\��v��{Mʙd}��v\�\�أ�2L\�\�V�.�h�j�Hh���\�|�<J��&\�e�+�>q#�\��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0���S\�2����&�\�.�\'\�hN \�mSfǩ�(\�5��\�ljb�1�F�ƍL x�\�ƌ \0F֌A\�шCkX\�5�cp\�c ���\�x\�\�|�t{��@\�\�\�\�xF\�x;c���\�#\�\�(\�\Z91�1��6̋\�*}T�Uc#8�*i9�w�\"\�6\�1\�\�b\�Kߴk\�\�\�׫\�\��{:k�\�\�2b��s\�Vg8i�̊S����L�r\0rt�h��o\�\�Oc�N~�n\���\�ԇ���v\�\�i\�Wg��>E\Z4cQ\r`\�#�U�b\�G���:4\�9t\"\"\"\�1�E� �\0\07�\�3\� �\"n^B��\�X1��s\���\rcq�;8\�3�Qw�\�v\�\�/�;�k��u��6\�\�\�c��\��g��Z�\�~����2noŠ�L�Z64Y)g�\�&.#��\�\�\��-c\����ߩ�c��J\�皭I�\� \Z\�\�Ut�\�$�\�o̸x����\�(,cB\�+\�Ǫj�֋�\�i\�u%n��\�u��(��\"�m]t1\�q\�Ŏ,a�c�w;?\"�y����{�\"\"\"\"\"\"\"\"\"\"\"(J���瞵\�\"�Y\�\�Ys��[�\�\�z�s\�X��\�7*�\����\�QHi O���i�G��=n����^7{\�ɾ8{}\�}�\�d�Ԭ�G޵܋\�\�\�7\�\"�w\�?̯\�\�έ fS�C6\�]Q*�s+�.����َ\'\��c�Ka���\�)k5\�%�;-��c��*.!��UsZW\�=�]�XVQ �6\\(\�wՌ�DDZ��\�Vg�\�\�\�g��nըu\��H.3\�\�N�k\Z�m\�\Z\��8�#_\�\�7\�\�D�\���^lٖS%\�\�˓>\�|�͝:i\�*dْ��ʗ.Q\��ȓ \�y�s=\�1^�\�{���\02�\�]ӊ>���\�S2�\�w�\�Ճ��&ma*�q�A�Z�KȦM�Z�\0`Ћ�\�L���\���cߚ\"\"\"\"\"\"\"\"\"\"\"\"\�0C(&�$\"�\Z@��\�aB`��BaaF9\� \�ܱ\�\�Z\�g\�U��n�pwM{ˣ�\'��Z�\�F��r\�\�T\�cck;\�\r\�L{\��\��\�\�n\�\�b\�b\0�i�&ۘ��ml$�+�k~�N\�s\�N\�r\�P��ϴ\�\� \���+Z�)3!꼉�\�\�M=t\��\'\�P͎�a�ͭc��\�I���V\�:\�\�\�DE�?S\r5\�\��\���&n�s=��\�\�t�㲽a~9ǴsUF�\�ϻp\�\�.\�p��^�\��U\�G)�q��v.@\�h�!� fW[\�u��b��x\�\"H� �aA�n~7�\�ñ|\'UWQ���OQ5Օ���\n  �X\�\�b ah��5�kq�\�\�=��\0�]��9\�{�\"\"\"\"\"\"\"\"\"\",h\�q��\�*\�\�8q\�ku�]�e��br\�o�\�$\nw6s%\�@�\�H�\"0\Z�>@�\���g\�m\�n2�zη�.vl䭐h[XNՁf\�e�\�Y3v�.\�����X\Z얺+s��2��T\��]�t\�\�\�K�}\Z\�c]\nª%�v��\�ݎ=@�\nh4䷱��\�\�5X�\�G9{�`t\� I\�\'\�Ɗs\�ܧ\�\�\�\�\�%r�\�\���jH3�ܭ�F�ڷ�*,�\�\�J\�7Q���*\�<�F�]\�6@\'�dcJ(C\ZO�X�L�\�1\�3��\0\��>i\�g/\\}���\�h���}dF\�e}xN����\�\�\�K\��R>�\0�r\'X\�$bO�9Y\�\�N<`�v�\�\��d��\�[\�WH\�=����dș\���\�Xg�����\��\�o�^4!m�\�7 �G�ދ�v\�}�\�\�\�\�y\Z�(5gض�K9q)`�������̰��8�5�ǛcȈ�\r|�p\\�\�tO�\\ ��,��ڲ��{\�oi�\�6��fXL>@l���\�\�;G��79v(\�\�h.uK�\�[c��O�kWT\�3�̫���j\�J\�L\�]�I�:1\��s�҉�\�s�{�\�\�\�$7��\�o�~E[����X�!�84{m��\�!aJ\\�H\� B!�|Xǻ8no�\�\�h���{\0Ñ\�P֭�H�\�%�4)��7�9ÆP��c��\�\�v3�\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $K�ca-\�#Ǝ\"��\�s�D&q�� �j�x\�{�xΉ\Z����jó\�p�M��8��;�#�4���\�j��b��\�b�?�G�\�\�Ŵ :��\�y+\�lZ:��\�k;Ȳ$f;lm�\�\� �Ξioc\�\�&��T\� X[8qy���)lA!bTh\���GW\�\"ֹ_\����O\�~�\�p���\�I�\�\�\�\Z�\��-\�i�m�\�\�c1�� UTVP&J���>Z�w½y\���\��\��p��U� \�\�y�R\�\�\��8\�2�$g\�\�J\�$��\��˟�l{{\Z\"\"\"\"*�}Q�-l�?݋~\��ޱ*[{o}o�\�\�.5f�\�\�2{�B\�\�8�;��m \�ϗ>Ćي\�Ɓ_y�\�W\�#\�\�.\��\�\�\�JM���P\�\�h�ȸ��y���\�\�E��줟8��m�\��\�R\�5�$��\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ\�q\n�;�\�\�\�M�^(ѽ\�$��0���eK^m<\�󟕎U�֨\�n�\�:��\��A\Zk��J\Z٤}~\�ȟCC�k\�\n5��$\�մ� /�O�_�Kŗ�\��[\�AqO \�f��\�8�K�/\�%\�\�x昙\�~\��X����\��\0\�\�Y\�O1\�\r.\�W\�\�����\�\�\�0\���F\����\0�y�a��?%�5��|\�a�~q\�gI��TV:5D\0�+\�F��]��\"\"\"\"\"ž\�t��{\�׾@\�o?j\��m}�,7��k�u�qe�)�Z)Xp\�@��� [(\�H�$2b���@\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zxq�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�\�Ÿ\Z,�ʋ&9\�Q�FT\"\"\"\"\"\"\"\".�(\Z0�\"D�`@\0�!�c\��!�\�!汌k�\�a�\�UR��\�2�=�\�\�[�gf��\��lvZ\�cF!�C\�.J����\��y`_:��\��:М\���$&�in\"�W���\�;y\�ɧfu>�ptC|�\nӐ9\n\�)�ka��\��[i�h�\�\�4-(5�p\�\�\�-~�ΗWT {ʛ�z/Ѿ�\�ם/��}ա\�\�z\�l&^ߺ$q\�[\�\�8\�e�ݵM2I�ֲ�\"[��Q3 �\\\�\�\�DDDDDDD^a\��+Ľ�\�\�Ú�\�R\��?\�\�\�U_j{�4K��\Z���fF %\r\�d \�Ex\"<Y\���\0���\r���38�m��T��\�Ii\�7�y�\�\���\ZQ\�\n�c%\�]�Z}��D\�:Y.i�!P�ԍ�t�jc�~\Z�J�#�\��Qu�co;\�h��\Z�֫�軬B�; #h\�\�v�\��lh��h �\�@�|�A�g�o\�G��\0$�5�\�7\��\0.q)j\�\�n�\�ē�\�[]Œ(\�v`\�\�E�\�5�L��͉I_s�\�2xF���\�\�^X�x\�\�y�\�sm�\0d��S$f;M��=�\�igN�]#0�-��\�a[\�hB��E�ưF�?0\�O\�?�_}��f�\�\�\��;<�\�\�k�� c᫛�����m.P�\�Il�[�ȗ\�6���\�\�sqlZ�\�\�]g�\�\�\�X\�5��կ��,{񜱎�S.\\v�\�k�\�\�\�p\�\�϶WfDDDDDDQ��Gy/\�Fza\��{�����j\�n7\� Sr꭛Qп\�\�܅\\�vא\�[ �����)O�\�P�@\�cj����������������QMMQ\nM������C�����#L�a>a�(�,�RJ \0O+\�\�\�\���EA\� ��\�}���_f�\�\rv�\�;TH�\�y/�3S\�j\�\�,���ӨgÃ!�ulK[\�X^���|\�\0n��r\� ��=jS�.m\�\����H�\"Xj܉�\�m�R�Kk,���66E,c`�3\�d �����1d�?\�\�Geb\�\��6�#�<\�(��\�j� �\��c��~��\�/Q+ \�I�\\M2���������0�\�\�Sw�_O�`\�8\�?$rg\\\�o1\"\�!���u\�s-\\Ytⰻ��i\Z�\�\�:�����7\Z�\�\�0̬���,\��Z�Qq�po�^�w��Y\��~�4\r{F䚢\�r�\�\�D���œ#J\�.,X�3eM��|Ղ%\�\�;3ƃ1aR#��0 6& \�ADn2 �˘A��Ø�\�-ss�79\�q�Ȉ�����)�@w絞W9w\\l\�B\�m_\�q�[I�Q\'9.˵lQ��\rE������\� ɝ\'\Z\� (��A������\�Ozfv��)d\�\�^��f\�J\�\�k\�6>h�\�\"\�\�t��\�\��Q6f\�iZf �q�\�\�~�\����}r��\0vOG�\�5{&^�q�\r�.��:)cD\�uv\�*m���k\�\�l�{�\���J\Z|�x\�\�ݩظ�\�O�\�,\�m���G�H\Z.N\�\�Ipc\�W\�`� ��G\�*6ڑ\�2\�\� B�kW�M#ҵ\�b\�\��~;;Y���\n)2��\0\�;4�>\�u:�}�4��\�l�b\�o\�㽭��w>\�h��a\�\\@خeN��\�m;�yKn�wF���\�ﱂK�:9���;1�\�q�8O�\�5\�\�2ܷ\�Ƿ��������7�\��\�#��r\�o[<�\r\���m��u$bs\�\��VJ���s\Z�7/~q�Ͷ~�\�kK�Q\�\�%i&\�\��Qd7�\�ā<v�}=|\n\Z�ÐBb)5Z�z̎?\�I#�đCa2y\r!TDDDDDDDDDDE�\�=3u�%}\�m6���|\�\�u�\\���9���õ\�u���R5�\�sF�\�\�}�V�K �J踜�T)\�\\�ɽe\�\�\'���\�\�|�¼�Y�U�6Us�6�BᅑK\\\�V\�29dD�I�Q\�,W˯5�<\�g8\�\�\�\�/s�{\�~\�R�q\�\�\\U�n6��<2ȣ\�,\�\���x\��\�\�΁f\�<&�����)����l������\� �\��?�\��r-[���N��\r�~>܇\��o\�EJֽ\�i\�v\�\��\��\�\�\��sK\�\�\�k\��4�\��Ȝ�\��,�D~G)\�\�vʊ610\�\�;`/\���-w\�\�\�ٽ\�C\�(�\�I\��-jh\Zv�Q�\�ĉQ\0(UA9lp�\0�7���\�e\�#\���\�s\�\�QS�\�/\�\�7L<�vM\�7ꜻ&cu\�l̒>��:\�\�\�ǒ�d\�f\� c�\�\�X0�,5�#2��Z�n�&7\�;o\�9\��\�V��}\�\�r\�\"ޠ\��+\�W\�\�K� \�A�ߜ\�\�\�^\0���\"\"\"\"\�O�=2^�\�S�:\�lSM�\'\\��\��c\�\�Dz�����<e\��)�$\\\�\��ۃ\��\�Ƒ�_�0\��峣\Z=�8��\�s,����c6N��\�\�\\Do��\�`Τ�8ek�; <|\�\�t�\"\"\"\"\"\"\"\"\"\"\"\"�\�\�ƚ\�g:W\�U�`\�\�C\�\Z�\�q� ���\�ͧ;^�S��)#U7r�,`�\��\ri0�\�q%\�\�\�=\�.:W\�W\��\�*V��߳�\�\'ղf\�>߾Xǃ9Ǿ}�x��\��\�icoq�Pn\�N쎭\'\�\�p�% \�x�V� ԭe�Nr\�g$v�.��?���\0��m�\��5����\�@!�k\�y�\\�����\�\�i\�\�\�8�\0# HL��yB<g$#\Z\�}p:\�{�{�;�\�\�jJ\�Mg\�\���|�_Q��X\�ɿd��2c$��\�p\�dyvsGѫ����]Ƅ���\�n�d�M,\rYK�R\0�\�\�\� b@F=�s�\��1�l�Q��\\N\�Na�칭�ż�\�o�\���[�9o�\��\�\�l{��{~\�_I\�M�̷\�F\�ic\�;��O��&�\�B\�k]���p�a�\�~sX\�;\�\"\"\"\"\"\"\"\"\"\"\"\"(Lz\�\�p^���\�\��\�\�\�U�w����}���\��q����{�\��8Y\�\��\�?\r:�\�ny\� ��\0[#\�a\���\�\����\0+��\0lI\�um\����´�\0\�Xj\��K���� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���ai\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���F�\�/�\'c\�!\�h�\���\�\�L�\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\���\�V\0 �� �RDDDD_\���Al(�\� �#Z�onZ�\�Z�=�\�\\\�c-ss�g\�s�\�L]z\�2~q��9�(# �\�kc�����\�1�ٍ�[\�lc9���S�DDDDDDDDDDDDQ��`�\�\�e�\�\��]ό\��r\�p\�#|��\������\0�����Xj�B�\��1fWVx�\�\�\Zܘ֔ ���8n2Be�2�{�\�\�3\�X\�m�\"\"\"\"\"�G�m�C�\���\���\�\Zia�<\�\�w.X坲\�\�!=\��c(\�\�|\01�\0\�l��\"\"\"\"\"\"\"\"\"\"\"\"��~�\��\0\�gi\�V2�\0�/<9����\�\�\�\��\�\�\��E��*V[\�?\��\r�#�\�\���ĉ\�K\��Ӿ���\0�\�hT�\��v3����DDDDZ�\�\�qO��.�\�*��\�s\�6RZC��l �(�\�z�q`\��n>�\n\�^\�d<e\�\�Mk+-n>Ns�ƈ������������\�c�\��\�c��?PfF��h\�\�\� [(p%�\� \�\�Gt�ı$3�0\��3?�ɇ�\�_\�=8\�<,��?��ڄA\���,\r^�Q0\�?710`x�ȱ��\�k\�\�\�*|*�f��uՕMdx3�)��w$?g\�c1�&\Zs�\���ۂ�\�\��\��_\�}\�DDDDDDDDDDDE\�7=F�|\�\�u\r�e55\�\\C�ѕ\���|a�x\�\�\�\� 3\�\�=�ѡ���Q\�kՍ{+hjk��\�Ga\�d\Z�a��{Z\�9\�\0�; n\�g8kq�c\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/�\�',4,1,'','','',''),(2,1,0,'9305bf00a1f6a976','59483894715bf00a1f6a24a891914929','2018-11-17 12:31:27','2018-11-17 12:31:27','','','Profilbilder','person-300.jpg','image/jpeg',80,80,2354,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0\0 \n!#\"AB�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�\�\��7��M�\�PCm;\n\�f˲�\�A�\"&\n(�\�\�\�z\�r+\�\�*�������N\��1dVq��+:}\�w�N\�\�z/۝ \�\�I�̮���֩�\�uJ�7\Z��I��A�\�y�\��d�2m`\�^�N|HKFow\�n�R�ɭc5mö�0�\�~�S��r\�\�\�t<Ŏ8\�M�i\�-2\��C���z*�\�}\�\�`�C\�_��\�qț\�\�\'�0\�g�(督�v\�\�pQ�aYV\�[=��AXFR�\�\�Y�\Z�p�|6R�����Po��S�z�\��\��B�9d\�\�\�V�؛�����jl.e6Nڔ\"S\�\���pσ��\�U�{\r�<���є\�\�*�F�@�V�Ԙ��:�W�V`�b6�]���hX��\�\�F\�G�8a\n\�\��\�hN�c�sѿ7�?�\Z*GLn�.���{^\�m}k��Y(IF\�s(���\���#\�#Y�+{|2���&%hZ�\�OL��~�\0\�:\�vڗ-���\�\����E�\�;=����!\0\�DZ�\�vW\�^���Q\�\"\��5y\0\Z\�G\�ل��J �]�\�٥\�C�����T��\�\Z���iR.!-:eZ�_���>�(q԰J\�d��H�qya�\0\�\�T��9\��\�\�/�Z�Ź��\�潩D��O�\�\"f4D�\�r�R\�wDPm5�-\�\�\�]P���>A\r���+\�s��њ�K^�_\�z\�A\�t\�n3�V\�)\�ٚ@��.g��E0{�H�\0.`F�Z��P\�qi7�k\��\\=����4ą��םL\�c\��\�+c\�\�<l�\�;F�\r\�rV\Z@`\�\�\�yc��\Z.\�\�9�S��#d�~\�}oՕ\�yk\�߅�\� \�\n�\'\�\�S\n�g�Y�m?�\�\�\�s��%��!�\���a�B]e\�]F[u�Z^�q\nRBӔ�9\�U�\�9\�+\�7V�7\�C\��\�κ�JX�Iy\��9\�2\��a\�Ȓ1� y\��5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#����#�\Z\�/j�\���\�zv\�o�D\�!\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�/4�����mϵXћ\�g\�`��v��^�wP��E�V\�\��(���A�vN��_\'�4�\�A;�a]]\�d\� �@@�gñ�\Z8\�x/g;3�:y�vc; w�\���ZC.b\�>\�\�ΩN h\�HH\�\�&\��O\r^��m\�\�K1�R\��\�\0z�\�?W��\'�m\�\�r���`�\�Ƶ�D\�*��\��Z��.�4��.\�D\�)&�\��Z\"�\�1yȐ_\�2\���e��ǧ�X�v:�r\�^*d!!ܭ��;����@\�3�\�=�?\'�kR\� \�Fq\�u*�\�\"�ˆ0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O��caY�r\�]��C\�(��%�g\�F6�X�͟+�\�\�\�a0Qԫ$]#cJ4 �\�HZ�&f�:\�dפ3b�\�\rs`*�\�%IZp��\nJ��%I\�2�c8�\�q�|\�8\�?�g\�qϞ8\�~�S&�S���\�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o��^�V��po9�\�k;:\�8�4\��\�*�n8���j\�`�d|\�һ���i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��^뒠\�\��*\�2p\�\��v#f\�~\���\�֫\�﷤�B�/�j��\�U�)����^��ĉ�,y-`\0$|kk�ם:4�����\�0\�Mj8�Pߨ)\�\�(��Y\�\0-yVQ�ې&E���\0�@�>,�\�>�����\��\�8\��\�c\��K�����?��\�m a\nm3\�;sR��$\�%Զ�\�*ͭL�԰\�\��\�M\��q\��u�a= \�^�LrE\�} �ĚXRra�]�ޱMd~4�\�D\�e-�8\�\�eᲬ6�[§�q\����t�\�\�\�TB��:�)M\�a����G`t�\�+w\��0ٍ��\�XC�o�K�ˎp$Q�K\� vY �3\�%�\�K㈲\\��\�p㌌ᅸ;KVP\�\�!M�*y̫��8\�u��-��;99��\r��\�rB}\�^xt;����^�o�V�ZR���9\�g��\�',5,1,'','','',''),(3,1,0,'9305bf00a1f6a976','59483894715bf00a1f6a24a891914929','2018-11-17 12:31:27','2018-11-17 12:31:27','','','Profilbilder','person-300.jpg','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYjm�_HL�٤\�nj��\�\0�r��3_\�\���M\�0�n:zE\raĶ덐�YoU\�\�\�G���`q�N�ښ�L\�\r�oMgKSmϸ$�Lݫ*�쵞$ƾn��\�`�aH| �\�\�a\�\�a��{~\'>�(: �+��j�o��6;+\�Ya�>\�U\�aZ\�\�H�bqc1oz ���\�\�iق%a��\��-��]�\�o)s\�^\�x[�-4й\�\�\�;��\�jT[���P\�lQ\�\�-�-\\v\�$�\� �g3N�]c\�F�|J���^���f<�:Ī\�u m�Y��ȬƼ��1[\Z�,En֨E��SpRƆ�\�AKp����\"K5�\�c��\�\�k\�{�\�=�z\�\�e��V�<\�}O�^�����ԋʜ9E\�\�!\rf*9ʱ\'9�4n�T\�+NS?Ƈ�!���j5X\�&�\�<1)d\�-���\�\\u��)_�\�]�lQ9���1Y\�¸K�!�\�\�`5��R�_\�\�\��y\�P�\�Ұ �\�h{G\�\�1ԏ P�\�\�\�ۦ%�<\�U0��]y?�gp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�۔…�a�\�\�a�YXj[�G\�ؤ\r\�0�\�B�\�<\�\�uo���y\�j:齟����!5\�6�O\�\\�D���|���@�<F�K9�\�i9q\�\�2ێ�gKw\'c�-\�`k\�F\�[�=𮻷Mk��\��Hĝ[�\�jf\�Z��߲Wމ���X\'X�U)�F�87&$Z��4��\�\�X\�\�z���θ�܍�F�S��\�\�$Zp�Z��\�F9\�\�6\�8�%�0�8Y+ßg\�ʧ��\0[�W0\��=x�\�}g\�ۂ7sh U\�8\�]}<��&Ѯ6HQ8�\08���h0YT��/c0Q\�e\�\�}�\�}��6P�[�5%�ZR\�\�x�;i\�JljmO*S삩;�\�jcFk\�\�\�s`���W#s� \�Ua[y�9q�q\�Q��0\�),�qrq\�4X1ǰ\�Al-l!c:\�\�\�\�̸�R��g3�ۆ�m�.\�\�- ���\��¯((�\�\��\����\�\Z\�q��\0Ւ��&\�\�2�\�!��BU�\�\�1\�FZQYha�a i�\�a i�Ym\�i�Ҕ6�\� B��\�1�=�<\�\�j\�����k�r�p�\�\�쐲#�T|� �qSg\n�V\��Y�éSn�\�\�Zr�g#��S��]��K�� t�7Y�Q�ҹw\'�X���� �����\0�tsXR��`Vҟ\��\�l\n<Vū�T�[�Ǔ)Z�Z\�\�r\� �Y�\�Q�\0^2��\�B���\�\�ʲ�\��\�\�\�\�\�\�V��E\�jd%\"\�ދ�h�Cp�\�/e�� �RW����� \��\���\�?9��\�',6,1,'','','',''),(4,0,2,'9305bf00acda37f7','52226322615bf00acd9acbf086558812','2018-11-17 12:50:03','2018-11-17 12:50:03','','','Contact Photos','1.jpg','image/jpeg',300,300,11005,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`>V�\��<|\�\r\�\�Rľ\��\�vM��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\Ή�6�\�u\�x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7�\�+�\�,;:\�\�<Լe����\�KM�…�\�81f\�-��cM�Y�g�8�B�\"=;}��{.��v\0N\��U�XR�\��EFKi�Dl��uW\���(�*�\�l���(����\n\��ò�\��\0����\�\�bRuۆ\���q���\�\n\�\�;,\��q�i�\\�屋 3�:MUd350\�\Z�/Ř٢\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"���\�N�\�\��멶���c�P���|k\�\�Y�\�΀�\��!Z��n�M8��x%\\l�<X0����]�kٷ���s\�\�v��h��y�lW�Oeouodwɝcc:K\�y2���!JG\�9\�}�\�\�c�\���o\��\��\0|{\��������\�\��\����{Ȗ��j3\��\0�zײ\�0Mq\��\�9f�PF�G�ֲM6�#\��<roۓ\��a\r6�O]�\�P)(\�\"�\reMdQB� q�\"\�!\r��}�\�|��=\�˜\�g\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"-@���a���\�\��\�Ô�\���\�\0\�cJK�I��gƞp>D<>�U�\�\� \�03EW����\0�\�\��W%o�ſm��\�]\��\�;\�\�͋l\�\�\�f]�ռ�|\�&A=�1\r�\�#Å`�]1�\�\�E�<qtu��\�?\�?\�\��XSD��x:ge���\0 }�\�>�㛑��\�ؙ|~N\�*Yc+�+*�a� �j�\Z?Ћ�K}��$L\�Z\�\�Q\�β�\0P4`�4h�#\�\0\�G\0Y��!\�шBZ���k\�\�n�as\",=\�|z�\�\�#s/ky�q�M� R]\�S\�-H�kiu\�66\�r�������f\\fGx$��\�7z\��[�\�v������F� ^\�l���{\�\�\�\'$à�H\���y \�^�D#�\�bz\�:��Xd��vF4/��dD۸\�l�3\�͈f��]\�\�c�\�>��6��~�\��\�2��ϱ�8ke��\�ɇ\�\�6\�k�enq�Ɨ�ˠn�\�g/1�كs\�F|�\�<�o\�Rܵ-��&ͤl\�;v�=�|;�r\�\r\�a����k&@1��`\'?Hϛ�c ��\"\"\"\"\"\"\"\"\"\".2a b0BB��\�1�s\�G�8k\�\�.{ݜ5�\�s�\�\�UFަ�!�]\��?�\�Z\�\�\�> \�\�d�\�ƪ�\�\� ���IK\�[�@\�QK\Z\�m�_��)�X<}M�!>.,bb:��=\�\��\�䯻|G\�jO��[Z;d卮$W\��\�z\�?a�!\�8 \��dmf�L\�<++��n�&|\�6\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�S\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�J�>\rm�s>�)�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���X\�܍J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8 9R�\�7\�ș>�W�n\�I�#\�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W��\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�|0mw�H0�ch\��5�q�7\�\����F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��磃��\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J��\�pI_Xa�óqA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i!ʾ\�_0\�\�{\r�kA\"\�y�\�\�jwƯ��X*\�Z[\�l�3�Ɋ\�\���\�Il�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�YxF5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\".\"u�w��\�1�p%\�\n<�9~3����fZ���3\�Gc4�\"̿zF\�ȝ�\�Ƨ�V�\��ge8n\�Q\0഍�\�w�M��w�\�:�\Z�+C\r�q�oaC\�^Z������������\�\n\�(�\�|�$Y,οsOl��a\�G.�w�$\�#\�3\�\�=��\�)9p\�\"LS�y0FAU|�\\��\r�u�O�Rx��\�c\�m�f|F\�ceԄ\�\�9\�\�0���kr\�\�;�ynpϕ������H^�^\���ït_�\�\n 9�3\�:�^�d��\r\�\�\rMt`��!M����G5�f�$a��qI{ҋ\�}��<�q�+��w\�]T\��^U\�mp�ه\Z\��^�\�4깂v 3/��ska��\�\ne�.dlȌ)v\�\"\"\"\"\"\"\"\"\"\",>\��Y�;�\�\������8�j\�!`I��u��M��P\�8\�hh�1����\�y,�G-n��\�Vͤm�r(��7`�\�vjYyeS\�:������9 ȯ��&!��Y ]��\��vz���7���\Z�đ�yL�>^\�~M\�\�b\����a�W��a�`o V}z��`����6��%��\�@_֫\�`�n\�V�>Q7�;\���e�F��\�c\�t\�z�����\�vHn%By)Bh�`ϯ��~��\0�: \�\��)\�M�\�gk?J\�\rŒZ\�\�k<u���\�\�9I�5�u�\�m]9��_�\�\�b�\�]Q㔒eDDDDDDDDDDET7��Ǭ��� �\�]R�cxs�1ȕ�E�\��*&s_�j�|Hm��\�\�X�-\�$\�\�g0c�\r�`�u{�\�~\��\'<6\�\�s�D��G\�{[\n�?m������J�\'�\�ʒƓ(\�ibM&\"\��.(\�}w�xÏ9_R�f�\�:V��\�ȋ(SB����\�&\�Pq��\� ƈ�kY�ok�\�5\�Ǡ\"\"\",.\�\�z�7\�gY��\��\�+\�5:\�3]\�a4r�=\�o��\�\��-n��\"\�\\\�K3Ďs��\�\�F+\�N�,ÝLv{o\�\�\�0���2\��_,\�o�G\Zd����.]�\�\�\��\�c)k��|x��\�M\�\�&WB|\���� \��O��ӕ����_Y�Q\�n&\�\�\�i�]ג?�mݪ�ɕvd�4�\�u\�8�d3BpOsh8�6=LQF٬\�<H\���0E4h\�`cǎ4A\0&�b�֌BZ\�1�c�\�\\Ȉ����������/\�\���\�\�܅\���w(\�\�6��\��}�\�y�!G\�Ɍࡏm婶d_iS\�J�\�\��SI\�\�s�����&k\�^��^N\�6�^\�?\�\�\�\\\�!�\�k�\"�9\�MdR���\�dÐ��+D=#~F�{\�s�\�vا\�\�n�<u�\�Ȇ\�N�<�q�(�(ѣ:�\�\�k���C�=��ʼnѦ\�K��(\�,�\0�\�9�\�!r��~Z��lk���\�k��\�\�1����H>Sv\�!}\�\���]���\�`ٶ.6\�m�<8w�=<\�\�\��\�w\�a�p{x�T\�N[F¦�\"E,��\�d\�\�wV�}=�%\�|�w�;�4\�us��]��U�#\�u�a#XB���Α���;#\����\�1u���hB��`;x�MSZ\�u�M;N��\��}n�5EDaî���<<X�Ō5�cq\�\�g܅#�b�\�#\�\������������������\�F�ȧVt�\�\\\�\�\�g9qޫ\\�V<��D+�Mʾ�Dn\'�R\ZD�\�\�o\�G�h\�\�\�[���\�gW�\���o�\�q_i�\�\�)�+/\���w\"���q��\��B�+��3�Bٔ\�$\�ō�\�TJ�\�\�ˁ*\�\�vc����|g\�\�\�c\�u\�:\�v\�G,N\�e\��\�\�,���E`f\�\\֕��aWe�Bc\r�\n1�c �<�sՇY�q�7�\�\�[�jz\�\� ��;o��\�Ơs��\��\�#\���\���?��\��6e�\�v62\�ϰ�$�gN�rʙ6d���˔w��$\�;\�c�\�yLW��{�\�\�?̮�\�t⏨~)�̫t�`\�#ɛXJ�\�\\ob����)�bV�@4\"��2S#\�`�{<X�戈�����������L\� �I�F�\"\�0\�P�%fFP�DØA��s7�,{3��\�s�U��\�\�^�\������֪�Q�휇�q\�6X\�\�\��CqS���\�2���vغ�!�d �\�$�[ $�\�ߣ�\���ܵ\�&ls\�:\�y\�{/\�֧�L\�z�\"k\�6�O]:�fI�T3c�\�m�kXὶk�>ᕷ���uhO\�\�Myy῵��|�Ʌ[�\\\�||;9\�-�\�X_�q\�\�Q�G6s\�\�0�˱�*|נq=v\�\�|i�\\E$ꝋ�4\�+HB)Y�\��m|أ0^3�#H(�Ae���\�v0\�_ \�U\�|}�\�\�B\ruef��ƒ`4z��Z&c\rfZ\�61�\��\0,�9vs��DDDDDDDDDDDX\�\�>\�u�:U��\0\�p\�$\�\�7�^\�[\�\�\���H\�>l\�K�+�\Z�ؑ*D`5�|�aс\�Ϭ۠\�e(��o\�\\\�\�\�[ ж��;�ͬ\�cIJf\�D]�\�y�<�5\�-tV\�9 d;n�\�\��\�\�=���B�5�ƺ�TKZ\�O߻z�^\�i\�oc[[�\�j�\�\�\��ݛ�`bO)?4S�6\�8>�^g~�+�v~���P\�A�\�\�l�5&տ\�Qd\�>\ZVi��ŔyVq\�\�\"4b\��<�#\ZQB\�|�\�\�e�\0i�Y�\��H���Ok9z\�\�\rͅ�GǴ\�\"6S+\�\�\�u�̭v��2_(5������:\�#|\�\�\�x>�\�q\�S��V��<\�%��Rޢ�F1\�;&D\�\�\�\"\�?�\�{-��\�\�D�hB\�\�n�u�\Z;�\�\��gٷ�\��40�Pjϱmv�r\�R�sO&=n!WG�ai(q�k)�6Ǒ\Z�\��\�n��+Y\�\�)i�ekp��\�\�S�mA�̰�|�\�2)#5\�\�v��nr\�Qհ\�\\\����\�]&�`֮,�/�f3�WsO4\�֕ҙ�� �\nlc\�;0\�a��\��]���H:o)�\�f���U\�\r7d�+FC8ph�:\�9o�B”�`\"�\��B?8���vp\�\�\�\�\�/�-\"��\"֡�[B�\'a\�<K\ZhS#o\�s� �3\�c9Ú\�g\�8\�\�興���������\0��W��GB\�yG�w�k�x\�M��u�\�[u�Z]~��I&\\\� oA4q\�~s��\"!3���@O\�W�\�m��\�x+\�tH\�UP\�\�kS�=�W\nt\�\�\�ú\�:cHpQؼƯ\�6(/�\�+���{=M�[@ï_�\�g��\�ţ�o,v����\"Fc�\�\�^ͰȌ\�\��>\��hj5MR���\'�I�R�\�!2%F��\�x\��uq��-k���\�/\���请_��D����� �\�\���v\�n.�&3\ZH0\�UCed��z\�\�g\\+מ \�~�]�p�\�i�Q�\0�ǚ�.�^(�\0c��#*�F|�\�\��IO9\\\�l���\�q숈������Gx��\��\0v-�ǚĨ�m\���\�S` �՚\�3L\�\� Ps� \�\�bm���>d�f+G\Z|Q\�/�\�_L�{h��\�#�u)6yC���p_\"\�\�i\�\�\�_�\Z^���|\�~e�\�4\�eK�\�1䝵\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ�q\n�;�\�\�\�M�(�\�$�\� \nVT�\�\�\�9�X\�[�j�\�\�:��\\<o\���ġ���\�\�܉�49���ȣY��NM[Hp\��D���\��Yx�쏕�t�Fk\ZM�/�����\\\�7�i��g\�(\�\�\�,\���ŝ�\�\�\�\��\�[e<n��\���\��i�\�l���\�v\Z\���_#[ ��m��\��t�?UEc�T@�$jؐa\�\�\Z\"\"\"\"\",[\�WO�G�}{\�����f\��ڒ\�s��\�_�[\"�e���D �; Ų�.!\�I ��($G8\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zx2q�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�×\n|h�C*,�\�eF�P���������dHP\ZT�\n4h\�$�$a\0\0��1�G4b�\�<�{�\�1�s��\�9UJ��<\�\�w��w=n᝚\�7Tz��\�k������*�^kﶋ\�|\�\Z+8R \�Bsd����\r^\�6��px\�\�&��\��\��\�Y\r�\�;N@\�+8���q��7�m�\�$wO�д�\���K�/`��Ftʺ�[\�T\�{\�~���~�\�}u\�\��[\�ka2��\�#�b\�6A\�k-6\�h��M����\�ה���r\�<\�6b\"\"\"\"\"\"\"��_\�^%\��}\�\�\�z�\'��\�_*��Sܩ�]TX\�\�\�21(np\� ^\�+��\�\�G���(m�\�љ���ou��O�g��\�KO9�C\��;�\0Ȕ\�Ҍ\�T[.�\��\�\�\�&�\�\�sMQ\"��ls� Ss�\�\�U����z��\�y\�cG�\��ז�]\�E\�b�\�IG\�Ӵ�vN cEl[A\�\04��\�b �8��R<\��$��O!�\'�s�1KW_t\�N%�ޚ\�\�aF��\�-�ɯ�d\�>lJJ���8�\�5\�O�&.J�Ǩ\�\�ȍ�o�\'Ģ�#0�\�o\�A\�n�K:v\��Ym7�[\n\�C@\�ͪ,\�5�7\��ȉ��Y����\�\�5~(\�?�\�\�\�6��]\�([\r\\\�\�\�\\\�+h\�r�>�K`NJܖD�lF5�\�\�C��\�aշ]7x�\�=\'m\�w\n\�9�}��}U�Acߌ\�t��r\�\�\�]��$\�s��8\�}��:\"\"\"\"\"\"���;\�~z3\�\�\�݅�\\�\0\�V\�q��J��\�lڎ����>\�*\�ð���\�\�d\rM�)Hz}�\�\�\�\��T%EE���e\r\re�\�\�݄*�jj�Rl�m\�l��ueet1\Zd� � ��E dʒQ\0y^\�\�\�?O��*],\�c\�5�2�5\�pk��yڢE�$s\�|ɚ��W6Id\�m&�C> �bZ޲\��\�Us\�HwȈ���������Ö�O��\�R��soh<��ZG�\�V\�MN�o��\Z[X\�`-m\�)��)c\�)� M����ݹ�\'��\0H\�J;+�\��A\�9D|\�kT\�e\�\0\�;���\�ǟ\\iz�Y�LJ\�\�\�U,��5\�\�M���\Z��|��|�a\�q��:\�{y��\r�l��8+�j\�˧�\�D H�Զ\� Ք�,%O���\�V���eeu\�igL\�\�ת��������\��\���Ѡk\�7$\�Xx���\��%l�N,�\ZV\�q`\�����*mt�\�.�Yٞ4���!�a��0^\��#p�df\\\� �vǷ9k��9�\�3��DDDDDEQO��w=��˺\�f8�Y+j�C�\Z\�L\�8�\�v]�b�^f056\�\�z�P�&t�k�$�\�YO�J�v �=\�\�A��\'�z��-+���\���\� ��S\�b˃8Z\�Dɻ�i�2\�ƣ�#��g\�\�tDDDDDDDDDDXs\�N��\�\�gl\�=�l\�\�yz�\�@6l�.\�\�ōi\�mۆ̩��\�e�tS���\�g\�(i��\�\'��Wv�b\�O�am�Y�\�G �\��4\\�\�ƒ\�Dz�5�d\'\�Q8�\�jG�˫�`dH�\n�_\�4�Jל\r��k\��\�\�f\�K\�V\�(�\�\��\0 \�\����A\�\��\�\�6 ��1�}�[����A\�����\�9�iqb��8DDDD^s\�!�\�%\�-�1\�\ZF�\�[�\� ,vX\�\�\�l\�\�f�\�X\�>3H\�c8\�r\�|gʇ\�B޶P\���Kۤ�f\�\�{�ͽl�7R��\�m�ԑ�\�+�3\�XI+\�\�k�ܽ�\�\�6\��c�i�u/\�G l���#n\�DX}�\�\�7��\�m���(j�A �L�\�j\�\�28�\0Dy$��E\r�\�\�4�Q���x\�\����;��\�\���\�Yrwl\�6O׭\�N�MH\�?Y\�\Z�o��\�Z\�q,$Fq+�\�s\�EP�r_&���t�S\�\�g��\n�f\�T;\0\�UΨ\�u �E-�s\r[d\�\�E&\�G �_.�\�4�ќ\�Wst?��\�\�\�]�=J\�\�g1qV��\�\�`�\�\"�`���k\�i\�SG�:�� �R6>2ƌ�Fr\�\"\"\"\"\�\�.C�\��/�\�ȕn��\�:\�\�6U��r�o鿍93Z�\r�9\�? ~[�g?\�\�/|���9���\�S$>7\"r�\����m\�*( \�\�\��H\�\��� vXL�\�{{f�� L�\�\'Sе�q�Pi\�\�F�S$aD\0�TA \�\��\�V�\�/�\�/)��\�s�\�ڈ������������QO)�a\�{��n�q�T\�\�0��Cfd�� \��\�\�u�<��\�[��8��� a���\��\�ףw�1�x�\�x�1\�7�Gb��{\�>[�\����X\���\"_�_ &�\�\�vZ�t�Q�|\�\�r�\���\�kb�m�:\�ϧ�>\�=�lMq\�.`ݙM \"\�\�\�\�/\�X\�4���\0���\�o-�\�\�ŝ˘�e�L\��u}Of\�\�\�#~\�3u$i\�+X瀱\�a\�\�6���p>��4֨;9ҾR��\06�H\�P׶[�X�e��m9\�\���iI\Z����c�#@kI�[�.n6I\�iqҾ\�-\�\0\�\�R�o���V�>��7���\�<\�=�\��\�\�\�kH����{���v\�wdui?�ۄ�(Nkǂ���k,bp�\�81#�Yw\�������So���<\��O ț_+ϒ\�\r\�dp\�\�W{Ng7���\0ZBe��\�\�9!\�\\H��������������\�\�k\�\�\� \�~�{P�W2k?~p\��+\�\����\�\�|>M�$\���\'\��\0P��c#˳�>�]n\rO��\�4 Ǘ�vGw�c$bh\�`j\�]z��F�1\0\"1\�˜\�\��\�1�keˆ�������\�w\ns e\�l\�-\��s}�XčJ\�9\�}��0�\0|{c\�\�\�\��UR�O4�m�e�vX�6�H\�a\��|��q5�R \�Z\�\����\�\�\rvK�s�\�9ض�Bc\�\�[�����_�`�Wj����\��W�\�}/돷�\\;\���>�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\����������_\��bN興���o0Eg�n��\0\"\�V\� ��\0�]L�\��\0�L�\�=)\\Y�y�\�9i��S�&�\�qQ\r�\�W\��\�5�{��\�Oh\����A�ߓ�\�\�\�DDDDDDDDDDDEX��\�\�ݼ\�\�!\�{\�\\e:4�`y| ;�\\�G�g\�nOd�\� ۟f�#{��\�ɟK��;@�\�\�({\r�\��f�=� �\�\\l�\�\�?\�\�°\0X�\0��Mʐz\"\"\"\"�\0\�2�aDV8e\Z׌�{r׌�v2ױ\�\�Z\�k��\�8\�3�(&�b\�#\������\�A\���AM�\�[ݧ\��1�{�\�m(�\�l�c\����\"\"\"\"\"\"\"\"\"\"\"\"��\07��Ɠ-\��:\�|g8�ۗs��\��ϴ��\����u�\�\r\�\�U\�\�xD!�2��Ŗ�\�\�\�\�ƴ�씹\�q�,0\��w�� c0쵍�\�\�\"\"\"\"(tx\�\�?8��\Zj@<\n�a��\�#\�l�r\�Y\�,�\�\�\�l�F�6�\���`00Cd\�\�x�S�v7�;O\Z��x�xq\�\�o�u6h���\�^\�\�-lYR�\�|��\0G�mq\�\�8�,F$O^8\�G|�\��D�g��3B��&�\0\�#�����\"\"\"\"\"\�\�n��|�yu\�IU-�#����\��\�`O�G�\�\�Ë\�\�q��W2�!\�.\�kYYkq�s��4DDDDDDDDDDDE��\03g\�\��\����5�\�K��0�l���G�p\'�+�қĐ\�\�\�#�\��Jc&LtsE�\�<|�>4�\�j_\�8�5z\�D\�p<�\�\��]�\�\�\"\�~�5�k���DDDDE�u�\Z9\�VU5�\�\�ئ6\�\�H~ϲ\�c0L4\���\��7\'��7�\���\�\"\"\"\"\"\"\"\"\"\"\".��\�4\�\�s�l)��b\������ #\� {\�V�?`Y�|�\��\�q\����hi�\�t\��c^\�\�\Z�\�j�\�y�`\�k\�ֱ�~\0\�\�\�[�;\��~\��Ȉ�����������������������������������������������������������\�',4,0,'','','',''),(5,0,2,'9305bf00acda37f7','52226322615bf00acd9acbf086558812','2018-11-17 12:50:03','2018-11-17 12:50:03','','','Contact Photos','1.jpg','image/jpeg',80,80,2355,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط7�.�kڐ�H\�$�Ͳ&a\�DK�(e.+7tE\�Y\�\�.M5\�\0+�\�\�\�JJ���: �3^�k\����GLv\�0iul\'\�9;3HSc�\�\�Օ��u)\�\�ѫ^>�9�ZM\�*��x\�\�.d% �\r1!h�u\�GS6���J\�\�9j�džBÏ-��_��e9+\r 0p�\�m<�\�\�Ƌ���\�?Jt>\�l�\�\�ϭ���u�1y[�U�:�^R���\0�rT �Ƕ>,G6�\��\�9\�� �\�\�\�o�CN0�!.��.�-�ӭ/\nC���)!i\�V�\�*\�q�㕈w�{\�C\�J�g]U%,}$�\��\�p����\�\�I��׉�\�\�5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#��N\�Ҏ�v��@F 37��\�\�W��K�����LE҂�C2��I�H\�5)�]i\����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��vb�?���N\Z \�\��\�\�S 6a\0��\0p��|;���8\��s�:S��7`�3��x\��5�2\�,�\���y\�)\�\r \�\�ɻ$��\�DW��\�t�iR\� fԷ=���\��\0�B\�\�mg/Ň��\�{\Z\�\�P�^��\�Z\��|\�!���v\Z&��I�\�^\n\�X<���\0��f\\�,��,zq�+u�\�c��.\�\�A�2\�\�;�\�\ZjI�\r#;Sؓ�z\�,`ͤg�R��2/\�Qe��N�-��鵍u�\�U�� [�R\���ڽb�:�����Xب�Fm �C2;-� B1�x�o:\�V\��\0Ww\�W��?[\�ڪ\�N��\\\�XbA���:�e]�X3�㭶�1\�4\�\�՞i�\�\�\�V[\�>$<�E��-{?j1��Ƕl�\\V�ޓ ���Y\"\�\ZQ�`e?d��\�fi��MzC6*�\�\��6���T��\nJ���RT�\�)V3�|gǾ3�\��\�q�g�\�j\'岙5\�O\�?I�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o�\�~�v�CZ\�\�s\r�\�v&t#�qxi\�[��|�\�q\�{�V�f vGƎ�\�Տ���\�^�n(v�\�;���\�\�?+S\"=)r[\r�%��u<r�\Z]\�+lSK�\0�gT\�\�D�\�F\�\����\�֫\�󷤆B�/�j��\�U�)�����\�;#�$X�0Z�\0H�\�\�i�:,ti\�MCC\�[�`?��\�q=C~P6S��Q����\0Z�YDPv\�n@׿�\�jd}��\0�/\��\�3\�\�q\�0+!�Ǎ�/\�6TRp\��-\�\�\�\�f �v\�\ZI�K�m�\�T�Z�S�`��嶛\�y\�\�;V\��\�y \�f�LrE\�} �ĚXRrau]�ޱMo�IC��!�\�[xuղ\�\�eXm.��O8\�9e\�\�_�\�\�TB��:�iM\�a����\�s�D�\�S�a6\��\�!\�7\��w\�yq\��2 x\�\�K!�\�|��\�I|qK����Nq��0�ij\�YD)��O9�s�\�qζCE�~Gg\'43��^[NH@��\�\��}�ieׇa\�\�~+[-)X\�P�\�\��\�',5,0,'','','',''),(6,0,2,'9305bf00acda37f7','52226322615bf00acd9acbf086558812','2018-11-17 12:50:03','2018-11-17 12:50:03','','','Contact Photos','1.jpg','image/jpeg',48,48,1489,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYZm�_HL�٤\�nj��\�\0�r��3_\�\���\r\�0�\�t�\ZÉm\�!.�ޫ\�\�ȏ�v.�\�?T��5<��2ޚΖ�\�#�pI:��VU5\�k<I�|< \�%aS\���MǘÍ�\�kL��N=vPtW{v\� \�G�lvW��\�4}���µ\�\�V*�2\�~\�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���P\�\�8R\��\0t %W�Y�/O��\�ZO���\��\0\�D�o�-� �\�a\�\� �^���-��\�,R\�\\u\�!Y� \�tu��\�\�U��5�t\�\�\��B[��Q\�\�\�\'�S�Y�\"P\�\n\�>VQ\� | #x˥��\�4��\�q�m\�Z����\n���\�5\�#g�-Ӟ�W]ۦ��Zjy�bN�-\�r53c-{{o\�+\�D\�\�\��P*���#T��-L\�\ZCM\��,fj�Y@\�g\\LnF\�#N�\�W\�\�-8S�HY\�\��t\�I�\�N,�\�ϳ\�\�S�\���^\�+�w~��Ak>�\�m����\�l���}\�h\� (��MN\�4,�^ J��1�(\�2\�b>\�\�\�{�(U��՚�ۭ)jdvvӢ�\�\�ڞT�\�Rw\�\�ƌת1\�\�\��3Z�^�F\���¶�\�r\�$㦣c\�a\�R&X$\�\�\�\�h�$c�a��8\"\�Z\�$B\�u�!����q6�!X\�gO�\rv�\�\�]��ZA/3{��^PQ[ˎ_�\�\�4%�5\�\��\0�%_rL��e\r�C\�^2���\� 8c� ��0��\�\�\�\�#�\�\�,�\�1�6\�M�(m \��\' N1�c{xy��ՠ/5[-&\�\�Z\�_��\�!dGl��x�\�\"�\"\�䭒><�%�R�\�eն�\�*\�<F=SV�i~��J�c2@\�Jn�n���r\�On6�=7�}Kw�\06 \�氥g\����?\� �\�\�x��W\"�4�[�&R�,���\�\�V�Cڣ�0�e?�� �\�\��e?\�\�͟�����uF�\�\�\�JD+��\�l�\�9\�^\�eH ��8�\0G Z���%?9\�~s\��\�',6,0,'','','',''),(7,2,0,'9305bf00c122b3bd','90913473615bf00c122ac78338492980','2018-11-17 12:39:46','2018-11-17 12:39:46','','','Profile Photos','person-300.jpg','image/jpeg',300,300,11007,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/�\�3\�\"u\�OX\�G�X����q\�\�ڭ�/\�+�xߌ\�[VJ$<Fuݼ W���\�ȁ}�\�\�\�ˌ3$xI�{\�>�+\\�c|>o���b_j�\�m\0�&\�Q\�<\�E\�-�A��Zv�\��� ��Ɍ�ԏ.y��\�\�M+z\�Ga�\���\�J\�&�\�\�Q�\'�۫\�|0�\�&G�(\�p\�<\�s0\�\�z�y|�r\�S�h]\�\�n�\�H|j=[P\�`vm�\�P�YE�SGM�M���\�\�\�$��\�h\0S9�\�\�J\�LJL}X�IQ�C\�$�k��gD̛�\�:�ռJ�t\\WU�u}A�\�L\�JsC\�V\�m�؂P�b@�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1>CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�9\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�7\��`\�\rf�\��a\�\�#�\�w^\�s\�\���c�\�j^2\�\�|\�����AaB\�vN�\�g\�\�1�ʋ�,\�3Ŝ E!_��\��=�U\�;\0\'u��\�,)E\����%�\�\"6@M:��\� QH�Yy���Y\�}b\�\�υf���\�\�_\��\0\�OE�m\�1):\�\�t\�^�\�y{l�c\��d|��4ͮ|r\�ņǝ&���\Z�s�\n[\�\�l\�DGԃ\�\'B\�lzu\�\�J���\�(I�]���u\��\�l\�@~d�ǐ�BR7[��Vռ�6`,z\�\�X�׵\�\�\�\�}�\�wֻFٴZͼض+ɧ�����;\�α��%\�<�RNG��#�\�>\��n1�|l�߷����\0�=�\��x\�?�\��S����g���\�{�\�KI˵\�\�=k\�a�&���\�\�\��S(#x�\�kY&�N�\��\�97�m\��Z�����Y��\��ڨ�uE���(�@�8��b���\�{\�٭\�\�\�sݜ�\�v~�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\���&\Z\�΍o\\\�9A/0\�p��4��\�xF|i\�\�C\�\�uXm.���S4Uq\n�\�ʟ��\rM\�%rV�\�[�\�\�<��\�o��]\�ضͮ�Ve\�\�[\�\'\��dك\�\�2<8QF5Ѓ\Z��4X1�\�G_�\�s�s���\�4OKW��v_x��ڍ3\�\�~9��N���\�\�\�B��2�r���\0���!���t�\�\�D\�E�u�\�+@\0E\0cF�F��<p\r�p��\r��!��\�ֱ�n\Z\�\�\�2\"\�\�\��ǫ\�>8�72����\�\Zہ\���e%\�\�>\�ԁq\���^�cog/\�o\�+\�ɘ\�e\�dw�J��w�OŷGi����{oq��5\�Ϗ����c�\"rL:\�!�\n�����e\�B9��1f\'�Ө/��O\�gdcB�{fDM��&\�\�=��؆k*�e\�\���~v1\�c\���\�i\�\��\�\��)�\��#��[H�<�|��nږ�VV\��i{\�}��I��L\�Kf 9\�#\��򙿍KrԷ\�8�6��P\�\���1�\�\�XW5�\�\�#ᬙ\0\�ـ�Dx\\�m#>\�7.\�eDDDDDDDDDDD\\d \�2\�`�&<�)� cf2琏vp\�1�\�\\��8k�\�9\�1����M~C\�\�\�ҵ���|բ\�\�9�Ug��{\\����v�0��5�\��U,SH� x��&B|\"\\X\�\�t\�l{\��\�\�\�_v���\� ���[\�;d卮$RH�\�z\�?a�!\�8 \��dmf�D\�<+��n�&|\�2\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�\�\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�dJ�>\rm�s�1�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���\�\���J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf�`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8�R�\�7$ș>�W n\�I�#�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W�p\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�v�mw�H0�c`\��5�q�7֑���F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ\�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��ߣ���\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J�\�pI_Xa�óuA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i\"J�\�_0\�\�{\r�kA\"\�{�\�\�jwƯ��X*\�Z[\�m3�Ɋ\�\���\�\�l�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�_`F5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\"/\�u�w��\�1�p%\�\n<�9~3��G��-~XB�#��]f_��#f\�N�t\�S\�+Mk{3��7b(�pZF\�k�\�&\�{;�r �]\rE���\�8\� 7�0�!\� /-DDDDDDDDDDQH��p�D�V>V�,�g_����Z\�0�c��}��ƒd��\�b\�x\���m�&)\�<�# ��E.OF�\�:�\0\'܇�<Y\��^�\�6\�?�>#v��\�Bp��\�\�{\�\�5�nq\�<�8g\�\�DDDDE�/Q�/j�E\�׺\�l��\�\�}�~rY[�g��0@\���\��G#�֊3O�\n0�\�\�8���\�E\�\�ϞX�ӕ\��;���k�/*�|lÍm{�]\�\ZuT�;��\�˹���x\�h2�C�26dF�f�w��ԝ\�\�dz\�|\�?�\�S�k��0$\�C�\�y&\�K�l�b��X��|��\0I]�f<�|�����U\�t]�f\�6ڹ{V��\\\�5,��ҩ�~\�ME\�\\���dW\�C�\� J,�.\�\��{;=}Iқ\�Z\�\ry�\�H�<�D/q�&�\�1 �`]}���\�\�0\�07�+>�JI0YNJA�L\��\�\�p�����/\�UZ�t+]�(��}���\�|@�ȣB\��S�\�:f�{\\\���Vtٻ$��<��>ql\09����O\��\��gAz<V\�-i���\�g\�\\��2K[�-g���8\�G)3�P��[\��6~+�{�\�U\�˪<b�L��������������Vx��\�?!�\�T\�ov\�#��h�\�:�\0%D\�k�MQ��\r�`2X��\�kc>E�ę;,\� pa����n�s!�\�\�.\�f\�8\�\�a\�H����kaW�\�7�\�P��\\\�B�RX\�e�M,I�\�C�^�\����q\�+\�R�3X\�+X\�hdF�)�}V\�M\�q(8�\�\�cDW5�\� 7�\�c�\�c\�w�|㳬��\0e�\���\Z�iY�밚9[��\�\�ck���Z�s.u��\�G9\�x�\��\'J�aΦ�=�\��v��{Mʙd}��v\�\�أ�2L\�\�V�.�h�j�Hh���\�|�<J��&\�e�+�>q#�\��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0���S\�2����&�\�.�\'\�hN \�mSfǩ�(\�5��\�ljb�1�F�ƍL x�\�ƌ \0F֌A\�шCkX\�5�cp\�c ���\�x\�\�|�t{��@\�\�\�\�xF\�x;c���\�#\�\�(\�\Z91�1��6̋\�*}T�Uc#8�*i9�w�\"\�6\�1\�\�b\�Kߴk\�\�\�׫\�\��{:k�\�\�2b��s\�Vg8i�̊S����L�r\0rt�h��o\�\�Oc�N~�n\���\�ԇ���v\�\�i\�Wg��>E\Z4cQ\r`\�#�U�b\�G���:4\�9t\"\"\"\�1�E� �\0\07�\�3\� �\"n^B��\�X1��s\���\rcq�;8\�3�Qw�\�v\�\�/�;�k��u��6\�\�\�c��\��g��Z�\�~����2noŠ�L�Z64Y)g�\�&.#��\�\�\��-c\����ߩ�c��J\�皭I�\� \Z\�\�Ut�\�$�\�o̸x����\�(,cB\�+\�Ǫj�֋�\�i\�u%n��\�u��(��\"�m]t1\�q\�Ŏ,a�c�w;?\"�y����{�\"\"\"\"\"\"\"\"\"\"\"(J���瞵\�\"�Y\�\�Ys��[�\�\�z�s\�X��\�7*�\����\�QHi O���i�G��=n����^7{\�ɾ8{}\�}�\�d�Ԭ�G޵܋\�\�\�7\�\"�w\�?̯\�\�έ fS�C6\�]Q*�s+�.����َ\'\��c�Ka���\�)k5\�%�;-��c��*.!��UsZW\�=�]�XVQ �6\\(\�wՌ�DDZ��\�Vg�\�\�\�g��nըu\��H.3\�\�N�k\Z�m\�\Z\��8�#_\�\�7\�\�D�\���^lٖS%\�\�˓>\�|�͝:i\�*dْ��ʗ.Q\��ȓ \�y�s=\�1^�\�{���\02�\�]ӊ>���\�S2�\�w�\�Ճ��&ma*�q�A�Z�KȦM�Z�\0`Ћ�\�L���\���cߚ\"\"\"\"\"\"\"\"\"\"\"\"\�0C(&�$\"�\Z@��\�aB`��BaaF9\� \�ܱ\�\�Z\�g\�U��n�pwM{ˣ�\'��Z�\�F��r\�\�T\�cck;\�\r\�L{\��\��\�\�n\�\�b\�b\0�i�&ۘ��ml$�+�k~�N\�s\�N\�r\�P��ϴ\�\� \���+Z�)3!꼉�\�\�M=t\��\'\�P͎�a�ͭc��\�I���V\�:\�\�\�DE�?S\r5\�\��\���&n�s=��\�\�t�㲽a~9ǴsUF�\�ϻp\�\�.\�p��^�\��U\�G)�q��v.@\�h�!� fW[\�u��b��x\�\"H� �aA�n~7�\�ñ|\'UWQ���OQ5Օ���\n  �X\�\�b ah��5�kq�\�\�=��\0�]��9\�{�\"\"\"\"\"\"\"\"\"\",h\�q��\�*\�\�8q\�ku�]�e��br\�o�\�$\nw6s%\�@�\�H�\"0\Z�>@�\���g\�m\�n2�zη�.vl䭐h[XNՁf\�e�\�Y3v�.\�����X\Z얺+s��2��T\��]�t\�\�\�K�}\Z\�c]\nª%�v��\�ݎ=@�\nh4䷱��\�\�5X�\�G9{�`t\� I\�\'\�Ɗs\�ܧ\�\�\�\�\�%r�\�\���jH3�ܭ�F�ڷ�*,�\�\�J\�7Q���*\�<�F�]\�6@\'�dcJ(C\ZO�X�L�\�1\�3��\0\��>i\�g/\\}���\�h���}dF\�e}xN����\�\�\�K\��R>�\0�r\'X\�$bO�9Y\�\�N<`�v�\�\��d��\�[\�WH\�=����dș\���\�Xg�����\��\�o�^4!m�\�7 �G�ދ�v\�}�\�\�\�\�y\Z�(5gض�K9q)`�������̰��8�5�ǛcȈ�\r|�p\\�\�tO�\\ ��,��ڲ��{\�oi�\�6��fXL>@l���\�\�;G��79v(\�\�h.uK�\�[c��O�kWT\�3�̫���j\�J\�L\�]�I�:1\��s�҉�\�s�{�\�\�\�$7��\�o�~E[����X�!�84{m��\�!aJ\\�H\� B!�|Xǻ8no�\�\�h���{\0Ñ\�P֭�H�\�%�4)��7�9ÆP��c��\�\�v3�\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $K�ca-\�#Ǝ\"��\�s�D&q�� �j�x\�{�xΉ\Z����jó\�p�M��8��;�#�4���\�j��b��\�b�?�G�\�\�Ŵ :��\�y+\�lZ:��\�k;Ȳ$f;lm�\�\� �Ξioc\�\�&��T\� X[8qy���)lA!bTh\���GW\�\"ֹ_\����O\�~�\�p���\�I�\�\�\�\Z�\��-\�i�m�\�\�c1�� UTVP&J���>Z�w½y\���\��\��p��U� \�\�y�R\�\�\��8\�2�$g\�\�J\�$��\��˟�l{{\Z\"\"\"\"*�}Q�-l�?݋~\��ޱ*[{o}o�\�\�.5f�\�\�2{�B\�\�8�;��m \�ϗ>Ćي\�Ɓ_y�\�W\�#\�\�.\��\�\�\�JM���P\�\�h�ȸ��y���\�\�E��줟8��m�\��\�R\�5�$��\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ\�q\n�;�\�\�\�M�^(ѽ\�$��0���eK^m<\�󟕎U�֨\�n�\�:��\��A\Zk��J\Z٤}~\�ȟCC�k\�\n5��$\�մ� /�O�_�Kŗ�\��[\�AqO \�f��\�8�K�/\�%\�\�x昙\�~\��X����\��\0\�\�Y\�O1\�\r.\�W\�\�����\�\�\�0\���F\����\0�y�a��?%�5��|\�a�~q\�gI��TV:5D\0�+\�F��]��\"\"\"\"\"ž\�t��{\�׾@\�o?j\��m}�,7��k�u�qe�)�Z)Xp\�@��� [(\�H�$2b���@\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zxq�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�\�Ÿ\Z,�ʋ&9\�Q�FT\"\"\"\"\"\"\"\".�(\Z0�\"D�`@\0�!�c\��!�\�!汌k�\�a�\�UR��\�2�=�\�\�[�gf��\��lvZ\�cF!�C\�.J����\��y`_:��\��:М\���$&�in\"�W���\�;y\�ɧfu>�ptC|�\nӐ9\n\�)�ka��\��[i�h�\�\�4-(5�p\�\�\�-~�ΗWT {ʛ�z/Ѿ�\�ם/��}ա\�\�z\�l&^ߺ$q\�[\�\�8\�e�ݵM2I�ֲ�\"[��Q3 �\\\�\�\�DDDDDDD^a\��+Ľ�\�\�Ú�\�R\��?\�\�\�U_j{�4K��\Z���fF %\r\�d \�Ex\"<Y\���\0���\r���38�m��T��\�Ii\�7�y�\�\���\ZQ\�\n�c%\�]�Z}��D\�:Y.i�!P�ԍ�t�jc�~\Z�J�#�\��Qu�co;\�h��\Z�֫�軬B�; #h\�\�v�\��lh��h �\�@�|�A�g�o\�G��\0$�5�\�7\��\0.q)j\�\�n�\�ē�\�[]Œ(\�v`\�\�E�\�5�L��͉I_s�\�2xF���\�\�^X�x\�\�y�\�sm�\0d��S$f;M��=�\�igN�]#0�-��\�a[\�hB��E�ưF�?0\�O\�?�_}��f�\�\�\��;<�\�\�k�� c᫛�����m.P�\�Il�[�ȗ\�6���\�\�sqlZ�\�\�]g�\�\�\�X\�5��կ��,{񜱎�S.\\v�\�k�\�\�\�p\�\�϶WfDDDDDDQ��Gy/\�Fza\��{�����j\�n7\� Sr꭛Qп\�\�܅\\�vא\�[ �����)O�\�P�@\�cj����������������QMMQ\nM������C�����#L�a>a�(�,�RJ \0O+\�\�\�\���EA\� ��\�}���_f�\�\rv�\�;TH�\�y/�3S\�j\�\�,���ӨgÃ!�ulK[\�X^���|\�\0n��r\� ��=jS�.m\�\����H�\"Xj܉�\�m�R�Kk,���66E,c`�3\�d �����1d�?\�\�Geb\�\��6�#�<\�(��\�j� �\��c��~��\�/Q+ \�I�\\M2���������0�\�\�Sw�_O�`\�8\�?$rg\\\�o1\"\�!���u\�s-\\Ytⰻ��i\Z�\�\�:�����7\Z�\�\�0̬���,\��Z�Qq�po�^�w��Y\��~�4\r{F䚢\�r�\�\�D���œ#J\�.,X�3eM��|Ղ%\�\�;3ƃ1aR#��0 6& \�ADn2 �˘A��Ø�\�-ss�79\�q�Ȉ�����)�@w絞W9w\\l\�B\�m_\�q�[I�Q\'9.˵lQ��\rE������\� ɝ\'\Z\� (��A������\�Ozfv��)d\�\�^��f\�J\�\�k\�6>h�\�\"\�\�t��\�\��Q6f\�iZf �q�\�\�~�\����}r��\0vOG�\�5{&^�q�\r�.��:)cD\�uv\�*m���k\�\�l�{�\���J\Z|�x\�\�ݩظ�\�O�\�,\�m���G�H\Z.N\�\�Ipc\�W\�`� ��G\�*6ڑ\�2\�\� B�kW�M#ҵ\�b\�\��~;;Y���\n)2��\0\�;4�>\�u:�}�4��\�l�b\�o\�㽭��w>\�h��a\�\\@خeN��\�m;�yKn�wF���\�ﱂK�:9���;1�\�q�8O�\�5\�\�2ܷ\�Ƿ��������7�\��\�#��r\�o[<�\r\���m��u$bs\�\��VJ���s\Z�7/~q�Ͷ~�\�kK�Q\�\�%i&\�\��Qd7�\�ā<v�}=|\n\Z�ÐBb)5Z�z̎?\�I#�đCa2y\r!TDDDDDDDDDDE�\�=3u�%}\�m6���|\�\�u�\\���9���õ\�u���R5�\�sF�\�\�}�V�K �J踜�T)\�\\�ɽe\�\�\'���\�\�|�¼�Y�U�6Us�6�BᅑK\\\�V\�29dD�I�Q\�,W˯5�<\�g8\�\�\�\�/s�{\�~\�R�q\�\�\\U�n6��<2ȣ\�,\�\���x\��\�\�΁f\�<&�����)����l������\� �\��?�\��r-[���N��\r�~>܇\��o\�EJֽ\�i\�v\�\��\��\�\�\��sK\�\�\�k\��4�\��Ȝ�\��,�D~G)\�\�vʊ610\�\�;`/\���-w\�\�\�ٽ\�C\�(�\�I\��-jh\Zv�Q�\�ĉQ\0(UA9lp�\0�7���\�e\�#\���\�s\�\�QS�\�/\�\�7L<�vM\�7ꜻ&cu\�l̒>��:\�\�\�ǒ�d\�f\� c�\�\�X0�,5�#2��Z�n�&7\�;o\�9\��\�V��}\�\�r\�\"ޠ\��+\�W\�\�K� \�A�ߜ\�\�\�^\0���\"\"\"\"\�O�=2^�\�S�:\�lSM�\'\\��\��c\�\�Dz�����<e\��)�$\\\�\��ۃ\��\�Ƒ�_�0\��峣\Z=�8��\�s,����c6N��\�\�\\Do��\�`Τ�8ek�; <|\�\�t�\"\"\"\"\"\"\"\"\"\"\"\"�\�\�ƚ\�g:W\�U�`\�\�C\�\Z�\�q� ���\�ͧ;^�S��)#U7r�,`�\��\ri0�\�q%\�\�\�=\�.:W\�W\��\�*V��߳�\�\'ղf\�>߾Xǃ9Ǿ}�x��\��\�icoq�Pn\�N쎭\'\�\�p�% \�x�V� ԭe�Nr\�g$v�.��?���\0��m�\��5����\�@!�k\�y�\\�����\�\�i\�\�\�8�\0# HL��yB<g$#\Z\�}p:\�{�{�;�\�\�jJ\�Mg\�\���|�_Q��X\�ɿd��2c$��\�p\�dyvsGѫ����]Ƅ���\�n�d�M,\rYK�R\0�\�\�\� b@F=�s�\��1�l�Q��\\N\�Na�칭�ż�\�o�\���[�9o�\��\�\�l{��{~\�_I\�M�̷\�F\�ic\�;��O��&�\�B\�k]���p�a�\�~sX\�;\�\"\"\"\"\"\"\"\"\"\"\"\"(Lz\�\�p^���\�\��\�\�\�U�w����}���\��q����{�\��8Y\�\��\�?\r:�\�ny\� ��\0[#\�a\���\�\����\0+��\0lI\�um\����´�\0\�Xj\��K���� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���ai\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���F�\�/�\'c\�!\�h�\���\�\�L�\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\���\�V\0 �� �RDDDD_\���Al(�\� �#Z�onZ�\�Z�=�\�\\\�c-ss�g\�s�\�L]z\�2~q��9�(# �\�kc�����\�1�ٍ�[\�lc9���S�DDDDDDDDDDDDQ��`�\�\�e�\�\��]ό\��r\�p\�#|��\������\0�����Xj�B�\��1fWVx�\�\�\Zܘ֔ ���8n2Be�2�{�\�\�3\�X\�m�\"\"\"\"\"�G�m�C�\���\���\�\Zia�<\�\�w.X坲\�\�!=\��c(\�\�|\01�\0\�l��\"\"\"\"\"\"\"\"\"\"\"\"��~�\��\0\�gi\�V2�\0�/<9����\�\�\�\��\�\�\��E��*V[\�?\��\r�#�\�\���ĉ\�K\��Ӿ���\0�\�hT�\��v3����DDDDZ�\�\�qO��.�\�*��\�s\�6RZC��l �(�\�z�q`\��n>�\n\�^\�d<e\�\�Mk+-n>Ns�ƈ������������\�c�\��\�c��?PfF��h\�\�\� [(p%�\� \�\�Gt�ı$3�0\��3?�ɇ�\�_\�=8\�<,��?��ڄA\���,\r^�Q0\�?710`x�ȱ��\�k\�\�\�*|*�f��uՕMdx3�)��w$?g\�c1�&\Zs�\���ۂ�\�\��\��_\�}\�DDDDDDDDDDDE\�7=F�|\�\�u\r�e55\�\\C�ѕ\���|a�x\�\�\�\� 3\�\�=�ѡ���Q\�kՍ{+hjk��\�Ga\�d\Z�a��{Z\�9\�\0�; n\�g8kq�c\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/�\�',4,1,'','','',''),(8,2,0,'9305bf00c122b3bd','90913473615bf00c122ac78338492980','2018-11-17 12:39:46','2018-11-17 12:39:46','','','Profile Photos','person-300.jpg','image/jpeg',80,80,2354,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0\0 \n!#\"AB�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�\�\��7��M�\�PCm;\n\�f˲�\�A�\"&\n(�\�\�\�z\�r+\�\�*�������N\��1dVq��+:}\�w�N\�\�z/۝ \�\�I�̮���֩�\�uJ�7\Z��I��A�\�y�\��d�2m`\�^�N|HKFow\�n�R�ɭc5mö�0�\�~�S��r\�\�\�t<Ŏ8\�M�i\�-2\��C���z*�\�}\�\�`�C\�_��\�qț\�\�\'�0\�g�(督�v\�\�pQ�aYV\�[=��AXFR�\�\�Y�\Z�p�|6R�����Po��S�z�\��\��B�9d\�\�\�V�؛�����jl.e6Nڔ\"S\�\���pσ��\�U�{\r�<���є\�\�*�F�@�V�Ԙ��:�W�V`�b6�]���hX��\�\�F\�G�8a\n\�\��\�hN�c�sѿ7�?�\Z*GLn�.���{^\�m}k��Y(IF\�s(���\���#\�#Y�+{|2���&%hZ�\�OL��~�\0\�:\�vڗ-���\�\����E�\�;=����!\0\�DZ�\�vW\�^���Q\�\"\��5y\0\Z\�G\�ل��J �]�\�٥\�C�����T��\�\Z���iR.!-:eZ�_���>�(q԰J\�d��H�qya�\0\�\�T��9\��\�\�/�Z�Ź��\�潩D��O�\�\"f4D�\�r�R\�wDPm5�-\�\�\�]P���>A\r���+\�s��њ�K^�_\�z\�A\�t\�n3�V\�)\�ٚ@��.g��E0{�H�\0.`F�Z��P\�qi7�k\��\\=����4ą��םL\�c\��\�+c\�\�<l�\�;F�\r\�rV\Z@`\�\�\�yc��\Z.\�\�9�S��#d�~\�}oՕ\�yk\�߅�\� \�\n�\'\�\�S\n�g�Y�m?�\�\�\�s��%��!�\���a�B]e\�]F[u�Z^�q\nRBӔ�9\�U�\�9\�+\�7V�7\�C\��\�κ�JX�Iy\��9\�2\��a\�Ȓ1� y\��5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#����#�\Z\�/j�\���\�zv\�o�D\�!\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�/4�����mϵXћ\�g\�`��v��^�wP��E�V\�\��(���A�vN��_\'�4�\�A;�a]]\�d\� �@@�gñ�\Z8\�x/g;3�:y�vc; w�\���ZC.b\�>\�\�ΩN h\�HH\�\�&\��O\r^��m\�\�K1�R\��\�\0z�\�?W��\'�m\�\�r���`�\�Ƶ�D\�*��\��Z��.�4��.\�D\�)&�\��Z\"�\�1yȐ_\�2\���e��ǧ�X�v:�r\�^*d!!ܭ��;����@\�3�\�=�?\'�kR\� \�Fq\�u*�\�\"�ˆ0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O��caY�r\�]��C\�(��%�g\�F6�X�͟+�\�\�\�a0Qԫ$]#cJ4 �\�HZ�&f�:\�dפ3b�\�\rs`*�\�%IZp��\nJ��%I\�2�c8�\�q�|\�8\�?�g\�qϞ8\�~�S&�S���\�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o��^�V��po9�\�k;:\�8�4\��\�*�n8���j\�`�d|\�һ���i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��^뒠\�\��*\�2p\�\��v#f\�~\���\�֫\�﷤�B�/�j��\�U�)����^��ĉ�,y-`\0$|kk�ם:4�����\�0\�Mj8�Pߨ)\�\�(��Y\�\0-yVQ�ې&E���\0�@�>,�\�>�����\��\�8\��\�c\��K�����?��\�m a\nm3\�;sR��$\�%Զ�\�*ͭL�԰\�\��\�M\��q\��u�a= \�^�LrE\�} �ĚXRra�]�ޱMd~4�\�D\�e-�8\�\�eᲬ6�[§�q\����t�\�\�\�TB��:�)M\�a����G`t�\�+w\��0ٍ��\�XC�o�K�ˎp$Q�K\� vY �3\�%�\�K㈲\\��\�p㌌ᅸ;KVP\�\�!M�*y̫��8\�u��-��;99��\r��\�rB}\�^xt;����^�o�V�ZR���9\�g��\�',5,1,'','','',''),(9,2,0,'9305bf00c122b3bd','90913473615bf00c122ac78338492980','2018-11-17 12:39:46','2018-11-17 12:39:46','','','Profile Photos','person-300.jpg','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYjm�_HL�٤\�nj��\�\0�r��3_\�\���M\�0�n:zE\raĶ덐�YoU\�\�\�G���`q�N�ښ�L\�\r�oMgKSmϸ$�Lݫ*�쵞$ƾn��\�`�aH| �\�\�a\�\�a��{~\'>�(: �+��j�o��6;+\�Ya�>\�U\�aZ\�\�H�bqc1oz ���\�\�iق%a��\��-��]�\�o)s\�^\�x[�-4й\�\�\�;��\�jT[���P\�lQ\�\�-�-\\v\�$�\� �g3N�]c\�F�|J���^���f<�:Ī\�u m�Y��ȬƼ��1[\Z�,En֨E��SpRƆ�\�AKp����\"K5�\�c��\�\�k\�{�\�=�z\�\�e��V�<\�}O�^�����ԋʜ9E\�\�!\rf*9ʱ\'9�4n�T\�+NS?Ƈ�!���j5X\�&�\�<1)d\�-���\�\\u��)_�\�]�lQ9���1Y\�¸K�!�\�\�`5��R�_\�\�\��y\�P�\�Ұ �\�h{G\�\�1ԏ P�\�\�\�ۦ%�<\�U0��]y?�gp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�۔…�a�\�\�a�YXj[�G\�ؤ\r\�0�\�B�\�<\�\�uo���y\�j:齟����!5\�6�O\�\\�D���|���@�<F�K9�\�i9q\�\�2ێ�gKw\'c�-\�`k\�F\�[�=𮻷Mk��\��Hĝ[�\�jf\�Z��߲Wމ���X\'X�U)�F�87&$Z��4��\�\�X\�\�z���θ�܍�F�S��\�\�$Zp�Z��\�F9\�\�6\�8�%�0�8Y+ßg\�ʧ��\0[�W0\��=x�\�}g\�ۂ7sh U\�8\�]}<��&Ѯ6HQ8�\08���h0YT��/c0Q\�e\�\�}�\�}��6P�[�5%�ZR\�\�x�;i\�JljmO*S삩;�\�jcFk\�\�\�s`���W#s� \�Ua[y�9q�q\�Q��0\�),�qrq\�4X1ǰ\�Al-l!c:\�\�\�\�̸�R��g3�ۆ�m�.\�\�- ���\��¯((�\�\��\����\�\Z\�q��\0Ւ��&\�\�2�\�!��BU�\�\�1\�FZQYha�a i�\�a i�Ym\�i�Ҕ6�\� B��\�1�=�<\�\�j\�����k�r�p�\�\�쐲#�T|� �qSg\n�V\��Y�éSn�\�\�Zr�g#��S��]��K�� t�7Y�Q�ҹw\'�X���� �����\0�tsXR��`Vҟ\��\�l\n<Vū�T�[�Ǔ)Z�Z\�\�r\� �Y�\�Q�\0^2��\�B���\�\�ʲ�\��\�\�\�\�\�\�V��E\�jd%\"\�ދ�h�Cp�\�/e�� �RW����� \��\���\�?9��\�',6,1,'','','',''),(10,3,0,'9305bf00c27303da','17543934065bf00c273021a183499779','2018-11-17 12:40:07','2018-11-17 12:40:07','','','Profile Photos','person-300.jpg','image/jpeg',300,300,11007,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/�\�3\�\"u\�OX\�G�X����q\�\�ڭ�/\�+�xߌ\�[VJ$<Fuݼ W���\�ȁ}�\�\�\�ˌ3$xI�{\�>�+\\�c|>o���b_j�\�m\0�&\�Q\�<\�E\�-�A��Zv�\��� ��Ɍ�ԏ.y��\�\�M+z\�Ga�\���\�J\�&�\�\�Q�\'�۫\�|0�\�&G�(\�p\�<\�s0\�\�z�y|�r\�S�h]\�\�n�\�H|j=[P\�`vm�\�P�YE�SGM�M���\�\�\�$��\�h\0S9�\�\�J\�LJL}X�IQ�C\�$�k��gD̛�\�:�ռJ�t\\WU�u}A�\�L\�JsC\�V\�m�؂P�b@�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1>CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�9\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�7\��`\�\rf�\��a\�\�#�\�w^\�s\�\���c�\�j^2\�\�|\�����AaB\�vN�\�g\�\�1�ʋ�,\�3Ŝ E!_��\��=�U\�;\0\'u��\�,)E\����%�\�\"6@M:��\� QH�Yy���Y\�}b\�\�υf���\�\�_\��\0\�OE�m\�1):\�\�t\�^�\�y{l�c\��d|��4ͮ|r\�ņǝ&���\Z�s�\n[\�\�l\�DGԃ\�\'B\�lzu\�\�J���\�(I�]���u\��\�l\�@~d�ǐ�BR7[��Vռ�6`,z\�\�X�׵\�\�\�\�}�\�wֻFٴZͼض+ɧ�����;\�α��%\�<�RNG��#�\�>\��n1�|l�߷����\0�=�\��x\�?�\��S����g���\�{�\�KI˵\�\�=k\�a�&���\�\�\��S(#x�\�kY&�N�\��\�97�m\��Z�����Y��\��ڨ�uE���(�@�8��b���\�{\�٭\�\�\�sݜ�\�v~�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\���&\Z\�΍o\\\�9A/0\�p��4��\�xF|i\�\�C\�\�uXm.���S4Uq\n�\�ʟ��\rM\�%rV�\�[�\�\�<��\�o��]\�ضͮ�Ve\�\�[\�\'\��dك\�\�2<8QF5Ѓ\Z��4X1�\�G_�\�s�s���\�4OKW��v_x��ڍ3\�\�~9��N���\�\�\�B��2�r���\0���!���t�\�\�D\�E�u�\�+@\0E\0cF�F��<p\r�p��\r��!��\�ֱ�n\Z\�\�\�2\"\�\�\��ǫ\�>8�72����\�\Zہ\���e%\�\�>\�ԁq\���^�cog/\�o\�+\�ɘ\�e\�dw�J��w�OŷGi����{oq��5\�Ϗ����c�\"rL:\�!�\n�����e\�B9��1f\'�Ө/��O\�gdcB�{fDM��&\�\�=��؆k*�e\�\���~v1\�c\���\�i\�\��\�\��)�\��#��[H�<�|��nږ�VV\��i{\�}��I��L\�Kf 9\�#\��򙿍KrԷ\�8�6��P\�\���1�\�\�XW5�\�\�#ᬙ\0\�ـ�Dx\\�m#>\�7.\�eDDDDDDDDDDD\\d \�2\�`�&<�)� cf2琏vp\�1�\�\\��8k�\�9\�1����M~C\�\�\�ҵ���|բ\�\�9�Ug��{\\����v�0��5�\��U,SH� x��&B|\"\\X\�\�t\�l{\��\�\�\�_v���\� ���[\�;d卮$RH�\�z\�?a�!\�8 \��dmf�D\�<+��n�&|\�2\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�\�\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�dJ�>\rm�s�1�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���\�\���J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf�`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8�R�\�7$ș>�W n\�I�#�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W�p\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�v�mw�H0�c`\��5�q�7֑���F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ\�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��ߣ���\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J�\�pI_Xa�óuA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i\"J�\�_0\�\�{\r�kA\"\�{�\�\�jwƯ��X*\�Z[\�m3�Ɋ\�\���\�\�l�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�_`F5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\"/\�u�w��\�1�p%\�\n<�9~3��G��-~XB�#��]f_��#f\�N�t\�S\�+Mk{3��7b(�pZF\�k�\�&\�{;�r �]\rE���\�8\� 7�0�!\� /-DDDDDDDDDDQH��p�D�V>V�,�g_����Z\�0�c��}��ƒd��\�b\�x\���m�&)\�<�# ��E.OF�\�:�\0\'܇�<Y\��^�\�6\�?�>#v��\�Bp��\�\�{\�\�5�nq\�<�8g\�\�DDDDE�/Q�/j�E\�׺\�l��\�\�}�~rY[�g��0@\���\��G#�֊3O�\n0�\�\�8���\�E\�\�ϞX�ӕ\��;���k�/*�|lÍm{�]\�\ZuT�;��\�˹���x\�h2�C�26dF�f�w��ԝ\�\�dz\�|\�?�\�S�k��0$\�C�\�y&\�K�l�b��X��|��\0I]�f<�|�����U\�t]�f\�6ڹ{V��\\\�5,��ҩ�~\�ME\�\\���dW\�C�\� J,�.\�\��{;=}Iқ\�Z\�\ry�\�H�<�D/q�&�\�1 �`]}���\�\�0\�07�+>�JI0YNJA�L\��\�\�p�����/\�UZ�t+]�(��}���\�|@�ȣB\��S�\�:f�{\\\���Vtٻ$��<��>ql\09����O\��\��gAz<V\�-i���\�g\�\\��2K[�-g���8\�G)3�P��[\��6~+�{�\�U\�˪<b�L��������������Vx��\�?!�\�T\�ov\�#��h�\�:�\0%D\�k�MQ��\r�`2X��\�kc>E�ę;,\� pa����n�s!�\�\�.\�f\�8\�\�a\�H����kaW�\�7�\�P��\\\�B�RX\�e�M,I�\�C�^�\����q\�+\�R�3X\�+X\�hdF�)�}V\�M\�q(8�\�\�cDW5�\� 7�\�c�\�c\�w�|㳬��\0e�\���\Z�iY�밚9[��\�\�ck���Z�s.u��\�G9\�x�\��\'J�aΦ�=�\��v��{Mʙd}��v\�\�أ�2L\�\�V�.�h�j�Hh���\�|�<J��&\�e�+�>q#�\��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0���S\�2����&�\�.�\'\�hN \�mSfǩ�(\�5��\�ljb�1�F�ƍL x�\�ƌ \0F֌A\�шCkX\�5�cp\�c ���\�x\�\�|�t{��@\�\�\�\�xF\�x;c���\�#\�\�(\�\Z91�1��6̋\�*}T�Uc#8�*i9�w�\"\�6\�1\�\�b\�Kߴk\�\�\�׫\�\��{:k�\�\�2b��s\�Vg8i�̊S����L�r\0rt�h��o\�\�Oc�N~�n\���\�ԇ���v\�\�i\�Wg��>E\Z4cQ\r`\�#�U�b\�G���:4\�9t\"\"\"\�1�E� �\0\07�\�3\� �\"n^B��\�X1��s\���\rcq�;8\�3�Qw�\�v\�\�/�;�k��u��6\�\�\�c��\��g��Z�\�~����2noŠ�L�Z64Y)g�\�&.#��\�\�\��-c\����ߩ�c��J\�皭I�\� \Z\�\�Ut�\�$�\�o̸x����\�(,cB\�+\�Ǫj�֋�\�i\�u%n��\�u��(��\"�m]t1\�q\�Ŏ,a�c�w;?\"�y����{�\"\"\"\"\"\"\"\"\"\"\"(J���瞵\�\"�Y\�\�Ys��[�\�\�z�s\�X��\�7*�\����\�QHi O���i�G��=n����^7{\�ɾ8{}\�}�\�d�Ԭ�G޵܋\�\�\�7\�\"�w\�?̯\�\�έ fS�C6\�]Q*�s+�.����َ\'\��c�Ka���\�)k5\�%�;-��c��*.!��UsZW\�=�]�XVQ �6\\(\�wՌ�DDZ��\�Vg�\�\�\�g��nըu\��H.3\�\�N�k\Z�m\�\Z\��8�#_\�\�7\�\�D�\���^lٖS%\�\�˓>\�|�͝:i\�*dْ��ʗ.Q\��ȓ \�y�s=\�1^�\�{���\02�\�]ӊ>���\�S2�\�w�\�Ճ��&ma*�q�A�Z�KȦM�Z�\0`Ћ�\�L���\���cߚ\"\"\"\"\"\"\"\"\"\"\"\"\�0C(&�$\"�\Z@��\�aB`��BaaF9\� \�ܱ\�\�Z\�g\�U��n�pwM{ˣ�\'��Z�\�F��r\�\�T\�cck;\�\r\�L{\��\��\�\�n\�\�b\�b\0�i�&ۘ��ml$�+�k~�N\�s\�N\�r\�P��ϴ\�\� \���+Z�)3!꼉�\�\�M=t\��\'\�P͎�a�ͭc��\�I���V\�:\�\�\�DE�?S\r5\�\��\���&n�s=��\�\�t�㲽a~9ǴsUF�\�ϻp\�\�.\�p��^�\��U\�G)�q��v.@\�h�!� fW[\�u��b��x\�\"H� �aA�n~7�\�ñ|\'UWQ���OQ5Օ���\n  �X\�\�b ah��5�kq�\�\�=��\0�]��9\�{�\"\"\"\"\"\"\"\"\"\",h\�q��\�*\�\�8q\�ku�]�e��br\�o�\�$\nw6s%\�@�\�H�\"0\Z�>@�\���g\�m\�n2�zη�.vl䭐h[XNՁf\�e�\�Y3v�.\�����X\Z얺+s��2��T\��]�t\�\�\�K�}\Z\�c]\nª%�v��\�ݎ=@�\nh4䷱��\�\�5X�\�G9{�`t\� I\�\'\�Ɗs\�ܧ\�\�\�\�\�%r�\�\���jH3�ܭ�F�ڷ�*,�\�\�J\�7Q���*\�<�F�]\�6@\'�dcJ(C\ZO�X�L�\�1\�3��\0\��>i\�g/\\}���\�h���}dF\�e}xN����\�\�\�K\��R>�\0�r\'X\�$bO�9Y\�\�N<`�v�\�\��d��\�[\�WH\�=����dș\���\�Xg�����\��\�o�^4!m�\�7 �G�ދ�v\�}�\�\�\�\�y\Z�(5gض�K9q)`�������̰��8�5�ǛcȈ�\r|�p\\�\�tO�\\ ��,��ڲ��{\�oi�\�6��fXL>@l���\�\�;G��79v(\�\�h.uK�\�[c��O�kWT\�3�̫���j\�J\�L\�]�I�:1\��s�҉�\�s�{�\�\�\�$7��\�o�~E[����X�!�84{m��\�!aJ\\�H\� B!�|Xǻ8no�\�\�h���{\0Ñ\�P֭�H�\�%�4)��7�9ÆP��c��\�\�v3�\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $K�ca-\�#Ǝ\"��\�s�D&q�� �j�x\�{�xΉ\Z����jó\�p�M��8��;�#�4���\�j��b��\�b�?�G�\�\�Ŵ :��\�y+\�lZ:��\�k;Ȳ$f;lm�\�\� �Ξioc\�\�&��T\� X[8qy���)lA!bTh\���GW\�\"ֹ_\����O\�~�\�p���\�I�\�\�\�\Z�\��-\�i�m�\�\�c1�� UTVP&J���>Z�w½y\���\��\��p��U� \�\�y�R\�\�\��8\�2�$g\�\�J\�$��\��˟�l{{\Z\"\"\"\"*�}Q�-l�?݋~\��ޱ*[{o}o�\�\�.5f�\�\�2{�B\�\�8�;��m \�ϗ>Ćي\�Ɓ_y�\�W\�#\�\�.\��\�\�\�JM���P\�\�h�ȸ��y���\�\�E��줟8��m�\��\�R\�5�$��\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ\�q\n�;�\�\�\�M�^(ѽ\�$��0���eK^m<\�󟕎U�֨\�n�\�:��\��A\Zk��J\Z٤}~\�ȟCC�k\�\n5��$\�մ� /�O�_�Kŗ�\��[\�AqO \�f��\�8�K�/\�%\�\�x昙\�~\��X����\��\0\�\�Y\�O1\�\r.\�W\�\�����\�\�\�0\���F\����\0�y�a��?%�5��|\�a�~q\�gI��TV:5D\0�+\�F��]��\"\"\"\"\"ž\�t��{\�׾@\�o?j\��m}�,7��k�u�qe�)�Z)Xp\�@��� [(\�H�$2b���@\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zxq�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�\�Ÿ\Z,�ʋ&9\�Q�FT\"\"\"\"\"\"\"\".�(\Z0�\"D�`@\0�!�c\��!�\�!汌k�\�a�\�UR��\�2�=�\�\�[�gf��\��lvZ\�cF!�C\�.J����\��y`_:��\��:М\���$&�in\"�W���\�;y\�ɧfu>�ptC|�\nӐ9\n\�)�ka��\��[i�h�\�\�4-(5�p\�\�\�-~�ΗWT {ʛ�z/Ѿ�\�ם/��}ա\�\�z\�l&^ߺ$q\�[\�\�8\�e�ݵM2I�ֲ�\"[��Q3 �\\\�\�\�DDDDDDD^a\��+Ľ�\�\�Ú�\�R\��?\�\�\�U_j{�4K��\Z���fF %\r\�d \�Ex\"<Y\���\0���\r���38�m��T��\�Ii\�7�y�\�\���\ZQ\�\n�c%\�]�Z}��D\�:Y.i�!P�ԍ�t�jc�~\Z�J�#�\��Qu�co;\�h��\Z�֫�軬B�; #h\�\�v�\��lh��h �\�@�|�A�g�o\�G��\0$�5�\�7\��\0.q)j\�\�n�\�ē�\�[]Œ(\�v`\�\�E�\�5�L��͉I_s�\�2xF���\�\�^X�x\�\�y�\�sm�\0d��S$f;M��=�\�igN�]#0�-��\�a[\�hB��E�ưF�?0\�O\�?�_}��f�\�\�\��;<�\�\�k�� c᫛�����m.P�\�Il�[�ȗ\�6���\�\�sqlZ�\�\�]g�\�\�\�X\�5��կ��,{񜱎�S.\\v�\�k�\�\�\�p\�\�϶WfDDDDDDQ��Gy/\�Fza\��{�����j\�n7\� Sr꭛Qп\�\�܅\\�vא\�[ �����)O�\�P�@\�cj����������������QMMQ\nM������C�����#L�a>a�(�,�RJ \0O+\�\�\�\���EA\� ��\�}���_f�\�\rv�\�;TH�\�y/�3S\�j\�\�,���ӨgÃ!�ulK[\�X^���|\�\0n��r\� ��=jS�.m\�\����H�\"Xj܉�\�m�R�Kk,���66E,c`�3\�d �����1d�?\�\�Geb\�\��6�#�<\�(��\�j� �\��c��~��\�/Q+ \�I�\\M2���������0�\�\�Sw�_O�`\�8\�?$rg\\\�o1\"\�!���u\�s-\\Ytⰻ��i\Z�\�\�:�����7\Z�\�\�0̬���,\��Z�Qq�po�^�w��Y\��~�4\r{F䚢\�r�\�\�D���œ#J\�.,X�3eM��|Ղ%\�\�;3ƃ1aR#��0 6& \�ADn2 �˘A��Ø�\�-ss�79\�q�Ȉ�����)�@w絞W9w\\l\�B\�m_\�q�[I�Q\'9.˵lQ��\rE������\� ɝ\'\Z\� (��A������\�Ozfv��)d\�\�^��f\�J\�\�k\�6>h�\�\"\�\�t��\�\��Q6f\�iZf �q�\�\�~�\����}r��\0vOG�\�5{&^�q�\r�.��:)cD\�uv\�*m���k\�\�l�{�\���J\Z|�x\�\�ݩظ�\�O�\�,\�m���G�H\Z.N\�\�Ipc\�W\�`� ��G\�*6ڑ\�2\�\� B�kW�M#ҵ\�b\�\��~;;Y���\n)2��\0\�;4�>\�u:�}�4��\�l�b\�o\�㽭��w>\�h��a\�\\@خeN��\�m;�yKn�wF���\�ﱂK�:9���;1�\�q�8O�\�5\�\�2ܷ\�Ƿ��������7�\��\�#��r\�o[<�\r\���m��u$bs\�\��VJ���s\Z�7/~q�Ͷ~�\�kK�Q\�\�%i&\�\��Qd7�\�ā<v�}=|\n\Z�ÐBb)5Z�z̎?\�I#�đCa2y\r!TDDDDDDDDDDE�\�=3u�%}\�m6���|\�\�u�\\���9���õ\�u���R5�\�sF�\�\�}�V�K �J踜�T)\�\\�ɽe\�\�\'���\�\�|�¼�Y�U�6Us�6�BᅑK\\\�V\�29dD�I�Q\�,W˯5�<\�g8\�\�\�\�/s�{\�~\�R�q\�\�\\U�n6��<2ȣ\�,\�\���x\��\�\�΁f\�<&�����)����l������\� �\��?�\��r-[���N��\r�~>܇\��o\�EJֽ\�i\�v\�\��\��\�\�\��sK\�\�\�k\��4�\��Ȝ�\��,�D~G)\�\�vʊ610\�\�;`/\���-w\�\�\�ٽ\�C\�(�\�I\��-jh\Zv�Q�\�ĉQ\0(UA9lp�\0�7���\�e\�#\���\�s\�\�QS�\�/\�\�7L<�vM\�7ꜻ&cu\�l̒>��:\�\�\�ǒ�d\�f\� c�\�\�X0�,5�#2��Z�n�&7\�;o\�9\��\�V��}\�\�r\�\"ޠ\��+\�W\�\�K� \�A�ߜ\�\�\�^\0���\"\"\"\"\�O�=2^�\�S�:\�lSM�\'\\��\��c\�\�Dz�����<e\��)�$\\\�\��ۃ\��\�Ƒ�_�0\��峣\Z=�8��\�s,����c6N��\�\�\\Do��\�`Τ�8ek�; <|\�\�t�\"\"\"\"\"\"\"\"\"\"\"\"�\�\�ƚ\�g:W\�U�`\�\�C\�\Z�\�q� ���\�ͧ;^�S��)#U7r�,`�\��\ri0�\�q%\�\�\�=\�.:W\�W\��\�*V��߳�\�\'ղf\�>߾Xǃ9Ǿ}�x��\��\�icoq�Pn\�N쎭\'\�\�p�% \�x�V� ԭe�Nr\�g$v�.��?���\0��m�\��5����\�@!�k\�y�\\�����\�\�i\�\�\�8�\0# HL��yB<g$#\Z\�}p:\�{�{�;�\�\�jJ\�Mg\�\���|�_Q��X\�ɿd��2c$��\�p\�dyvsGѫ����]Ƅ���\�n�d�M,\rYK�R\0�\�\�\� b@F=�s�\��1�l�Q��\\N\�Na�칭�ż�\�o�\���[�9o�\��\�\�l{��{~\�_I\�M�̷\�F\�ic\�;��O��&�\�B\�k]���p�a�\�~sX\�;\�\"\"\"\"\"\"\"\"\"\"\"\"(Lz\�\�p^���\�\��\�\�\�U�w����}���\��q����{�\��8Y\�\��\�?\r:�\�ny\� ��\0[#\�a\���\�\����\0+��\0lI\�um\����´�\0\�Xj\��K���� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���ai\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���F�\�/�\'c\�!\�h�\���\�\�L�\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\���\�V\0 �� �RDDDD_\���Al(�\� �#Z�onZ�\�Z�=�\�\\\�c-ss�g\�s�\�L]z\�2~q��9�(# �\�kc�����\�1�ٍ�[\�lc9���S�DDDDDDDDDDDDQ��`�\�\�e�\�\��]ό\��r\�p\�#|��\������\0�����Xj�B�\��1fWVx�\�\�\Zܘ֔ ���8n2Be�2�{�\�\�3\�X\�m�\"\"\"\"\"�G�m�C�\���\���\�\Zia�<\�\�w.X坲\�\�!=\��c(\�\�|\01�\0\�l��\"\"\"\"\"\"\"\"\"\"\"\"��~�\��\0\�gi\�V2�\0�/<9����\�\�\�\��\�\�\��E��*V[\�?\��\r�#�\�\���ĉ\�K\��Ӿ���\0�\�hT�\��v3����DDDDZ�\�\�qO��.�\�*��\�s\�6RZC��l �(�\�z�q`\��n>�\n\�^\�d<e\�\�Mk+-n>Ns�ƈ������������\�c�\��\�c��?PfF��h\�\�\� [(p%�\� \�\�Gt�ı$3�0\��3?�ɇ�\�_\�=8\�<,��?��ڄA\���,\r^�Q0\�?710`x�ȱ��\�k\�\�\�*|*�f��uՕMdx3�)��w$?g\�c1�&\Zs�\���ۂ�\�\��\��_\�}\�DDDDDDDDDDDE\�7=F�|\�\�u\r�e55\�\\C�ѕ\���|a�x\�\�\�\� 3\�\�=�ѡ���Q\�kՍ{+hjk��\�Ga\�d\Z�a��{Z\�9\�\0�; n\�g8kq�c\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/�\�',4,1,'','','',''),(11,3,0,'9305bf00c27303da','17543934065bf00c273021a183499779','2018-11-17 12:40:07','2018-11-17 12:40:07','','','Profile Photos','person-300.jpg','image/jpeg',80,80,2354,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0\0 \n!#\"AB�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�\�\��7��M�\�PCm;\n\�f˲�\�A�\"&\n(�\�\�\�z\�r+\�\�*�������N\��1dVq��+:}\�w�N\�\�z/۝ \�\�I�̮���֩�\�uJ�7\Z��I��A�\�y�\��d�2m`\�^�N|HKFow\�n�R�ɭc5mö�0�\�~�S��r\�\�\�t<Ŏ8\�M�i\�-2\��C���z*�\�}\�\�`�C\�_��\�qț\�\�\'�0\�g�(督�v\�\�pQ�aYV\�[=��AXFR�\�\�Y�\Z�p�|6R�����Po��S�z�\��\��B�9d\�\�\�V�؛�����jl.e6Nڔ\"S\�\���pσ��\�U�{\r�<���є\�\�*�F�@�V�Ԙ��:�W�V`�b6�]���hX��\�\�F\�G�8a\n\�\��\�hN�c�sѿ7�?�\Z*GLn�.���{^\�m}k��Y(IF\�s(���\���#\�#Y�+{|2���&%hZ�\�OL��~�\0\�:\�vڗ-���\�\����E�\�;=����!\0\�DZ�\�vW\�^���Q\�\"\��5y\0\Z\�G\�ل��J �]�\�٥\�C�����T��\�\Z���iR.!-:eZ�_���>�(q԰J\�d��H�qya�\0\�\�T��9\��\�\�/�Z�Ź��\�潩D��O�\�\"f4D�\�r�R\�wDPm5�-\�\�\�]P���>A\r���+\�s��њ�K^�_\�z\�A\�t\�n3�V\�)\�ٚ@��.g��E0{�H�\0.`F�Z��P\�qi7�k\��\\=����4ą��םL\�c\��\�+c\�\�<l�\�;F�\r\�rV\Z@`\�\�\�yc��\Z.\�\�9�S��#d�~\�}oՕ\�yk\�߅�\� \�\n�\'\�\�S\n�g�Y�m?�\�\�\�s��%��!�\���a�B]e\�]F[u�Z^�q\nRBӔ�9\�U�\�9\�+\�7V�7\�C\��\�κ�JX�Iy\��9\�2\��a\�Ȓ1� y\��5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#����#�\Z\�/j�\���\�zv\�o�D\�!\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�/4�����mϵXћ\�g\�`��v��^�wP��E�V\�\��(���A�vN��_\'�4�\�A;�a]]\�d\� �@@�gñ�\Z8\�x/g;3�:y�vc; w�\���ZC.b\�>\�\�ΩN h\�HH\�\�&\��O\r^��m\�\�K1�R\��\�\0z�\�?W��\'�m\�\�r���`�\�Ƶ�D\�*��\��Z��.�4��.\�D\�)&�\��Z\"�\�1yȐ_\�2\���e��ǧ�X�v:�r\�^*d!!ܭ��;����@\�3�\�=�?\'�kR\� \�Fq\�u*�\�\"�ˆ0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O��caY�r\�]��C\�(��%�g\�F6�X�͟+�\�\�\�a0Qԫ$]#cJ4 �\�HZ�&f�:\�dפ3b�\�\rs`*�\�%IZp��\nJ��%I\�2�c8�\�q�|\�8\�?�g\�qϞ8\�~�S&�S���\�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o��^�V��po9�\�k;:\�8�4\��\�*�n8���j\�`�d|\�һ���i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��^뒠\�\��*\�2p\�\��v#f\�~\���\�֫\�﷤�B�/�j��\�U�)����^��ĉ�,y-`\0$|kk�ם:4�����\�0\�Mj8�Pߨ)\�\�(��Y\�\0-yVQ�ې&E���\0�@�>,�\�>�����\��\�8\��\�c\��K�����?��\�m a\nm3\�;sR��$\�%Զ�\�*ͭL�԰\�\��\�M\��q\��u�a= \�^�LrE\�} �ĚXRra�]�ޱMd~4�\�D\�e-�8\�\�eᲬ6�[§�q\����t�\�\�\�TB��:�)M\�a����G`t�\�+w\��0ٍ��\�XC�o�K�ˎp$Q�K\� vY �3\�%�\�K㈲\\��\�p㌌ᅸ;KVP\�\�!M�*y̫��8\�u��-��;99��\r��\�rB}\�^xt;����^�o�V�ZR���9\�g��\�',5,1,'','','',''),(12,3,0,'9305bf00c27303da','17543934065bf00c273021a183499779','2018-11-17 12:40:07','2018-11-17 12:40:07','','','Profile Photos','person-300.jpg','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYjm�_HL�٤\�nj��\�\0�r��3_\�\���M\�0�n:zE\raĶ덐�YoU\�\�\�G���`q�N�ښ�L\�\r�oMgKSmϸ$�Lݫ*�쵞$ƾn��\�`�aH| �\�\�a\�\�a��{~\'>�(: �+��j�o��6;+\�Ya�>\�U\�aZ\�\�H�bqc1oz ���\�\�iق%a��\��-��]�\�o)s\�^\�x[�-4й\�\�\�;��\�jT[���P\�lQ\�\�-�-\\v\�$�\� �g3N�]c\�F�|J���^���f<�:Ī\�u m�Y��ȬƼ��1[\Z�,En֨E��SpRƆ�\�AKp����\"K5�\�c��\�\�k\�{�\�=�z\�\�e��V�<\�}O�^�����ԋʜ9E\�\�!\rf*9ʱ\'9�4n�T\�+NS?Ƈ�!���j5X\�&�\�<1)d\�-���\�\\u��)_�\�]�lQ9���1Y\�¸K�!�\�\�`5��R�_\�\�\��y\�P�\�Ұ �\�h{G\�\�1ԏ P�\�\�\�ۦ%�<\�U0��]y?�gp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�۔…�a�\�\�a�YXj[�G\�ؤ\r\�0�\�B�\�<\�\�uo���y\�j:齟����!5\�6�O\�\\�D���|���@�<F�K9�\�i9q\�\�2ێ�gKw\'c�-\�`k\�F\�[�=𮻷Mk��\��Hĝ[�\�jf\�Z��߲Wމ���X\'X�U)�F�87&$Z��4��\�\�X\�\�z���θ�܍�F�S��\�\�$Zp�Z��\�F9\�\�6\�8�%�0�8Y+ßg\�ʧ��\0[�W0\��=x�\�}g\�ۂ7sh U\�8\�]}<��&Ѯ6HQ8�\08���h0YT��/c0Q\�e\�\�}�\�}��6P�[�5%�ZR\�\�x�;i\�JljmO*S삩;�\�jcFk\�\�\�s`���W#s� \�Ua[y�9q�q\�Q��0\�),�qrq\�4X1ǰ\�Al-l!c:\�\�\�\�̸�R��g3�ۆ�m�.\�\�- ���\��¯((�\�\��\����\�\Z\�q��\0Ւ��&\�\�2�\�!��BU�\�\�1\�FZQYha�a i�\�a i�Ym\�i�Ҕ6�\� B��\�1�=�<\�\�j\�����k�r�p�\�\�쐲#�T|� �qSg\n�V\��Y�éSn�\�\�Zr�g#��S��]��K�� t�7Y�Q�ҹw\'�X���� �����\0�tsXR��`Vҟ\��\�l\n<Vū�T�[�Ǔ)Z�Z\�\�r\� �Y�\�Q�\0^2��\�B���\�\�ʲ�\��\�\�\�\�\�\�V��E\�jd%\"\�ދ�h�Cp�\�/e�� �RW����� \��\���\�?9��\�',6,1,'','','',''),(13,4,0,'9305bf00c3cedc12','24803714715bf00c3ced9f6942163975','2018-11-17 12:40:28','2018-11-17 12:40:28','','','Profile Photos','person-300.jpg','image/jpeg',300,300,11007,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/�\�3\�\"u\�OX\�G�X����q\�\�ڭ�/\�+�xߌ\�[VJ$<Fuݼ W���\�ȁ}�\�\�\�ˌ3$xI�{\�>�+\\�c|>o���b_j�\�m\0�&\�Q\�<\�E\�-�A��Zv�\��� ��Ɍ�ԏ.y��\�\�M+z\�Ga�\���\�J\�&�\�\�Q�\'�۫\�|0�\�&G�(\�p\�<\�s0\�\�z�y|�r\�S�h]\�\�n�\�H|j=[P\�`vm�\�P�YE�SGM�M���\�\�\�$��\�h\0S9�\�\�J\�LJL}X�IQ�C\�$�k��gD̛�\�:�ռJ�t\\WU�u}A�\�L\�JsC\�V\�m�؂P�b@�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1>CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�9\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�7\��`\�\rf�\��a\�\�#�\�w^\�s\�\���c�\�j^2\�\�|\�����AaB\�vN�\�g\�\�1�ʋ�,\�3Ŝ E!_��\��=�U\�;\0\'u��\�,)E\����%�\�\"6@M:��\� QH�Yy���Y\�}b\�\�υf���\�\�_\��\0\�OE�m\�1):\�\�t\�^�\�y{l�c\��d|��4ͮ|r\�ņǝ&���\Z�s�\n[\�\�l\�DGԃ\�\'B\�lzu\�\�J���\�(I�]���u\��\�l\�@~d�ǐ�BR7[��Vռ�6`,z\�\�X�׵\�\�\�\�}�\�wֻFٴZͼض+ɧ�����;\�α��%\�<�RNG��#�\�>\��n1�|l�߷����\0�=�\��x\�?�\��S����g���\�{�\�KI˵\�\�=k\�a�&���\�\�\��S(#x�\�kY&�N�\��\�97�m\��Z�����Y��\��ڨ�uE���(�@�8��b���\�{\�٭\�\�\�sݜ�\�v~�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\���&\Z\�΍o\\\�9A/0\�p��4��\�xF|i\�\�C\�\�uXm.���S4Uq\n�\�ʟ��\rM\�%rV�\�[�\�\�<��\�o��]\�ضͮ�Ve\�\�[\�\'\��dك\�\�2<8QF5Ѓ\Z��4X1�\�G_�\�s�s���\�4OKW��v_x��ڍ3\�\�~9��N���\�\�\�B��2�r���\0���!���t�\�\�D\�E�u�\�+@\0E\0cF�F��<p\r�p��\r��!��\�ֱ�n\Z\�\�\�2\"\�\�\��ǫ\�>8�72����\�\Zہ\���e%\�\�>\�ԁq\���^�cog/\�o\�+\�ɘ\�e\�dw�J��w�OŷGi����{oq��5\�Ϗ����c�\"rL:\�!�\n�����e\�B9��1f\'�Ө/��O\�gdcB�{fDM��&\�\�=��؆k*�e\�\���~v1\�c\���\�i\�\��\�\��)�\��#��[H�<�|��nږ�VV\��i{\�}��I��L\�Kf 9\�#\��򙿍KrԷ\�8�6��P\�\���1�\�\�XW5�\�\�#ᬙ\0\�ـ�Dx\\�m#>\�7.\�eDDDDDDDDDDD\\d \�2\�`�&<�)� cf2琏vp\�1�\�\\��8k�\�9\�1����M~C\�\�\�ҵ���|բ\�\�9�Ug��{\\����v�0��5�\��U,SH� x��&B|\"\\X\�\�t\�l{\��\�\�\�_v���\� ���[\�;d卮$RH�\�z\�?a�!\�8 \��dmf�D\�<+��n�&|\�2\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�\�\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�dJ�>\rm�s�1�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���\�\���J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf�`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8�R�\�7$ș>�W n\�I�#�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W�p\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�v�mw�H0�c`\��5�q�7֑���F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ\�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��ߣ���\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J�\�pI_Xa�óuA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i\"J�\�_0\�\�{\r�kA\"\�{�\�\�jwƯ��X*\�Z[\�m3�Ɋ\�\���\�\�l�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�_`F5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\"/\�u�w��\�1�p%\�\n<�9~3��G��-~XB�#��]f_��#f\�N�t\�S\�+Mk{3��7b(�pZF\�k�\�&\�{;�r �]\rE���\�8\� 7�0�!\� /-DDDDDDDDDDQH��p�D�V>V�,�g_����Z\�0�c��}��ƒd��\�b\�x\���m�&)\�<�# ��E.OF�\�:�\0\'܇�<Y\��^�\�6\�?�>#v��\�Bp��\�\�{\�\�5�nq\�<�8g\�\�DDDDE�/Q�/j�E\�׺\�l��\�\�}�~rY[�g��0@\���\��G#�֊3O�\n0�\�\�8���\�E\�\�ϞX�ӕ\��;���k�/*�|lÍm{�]\�\ZuT�;��\�˹���x\�h2�C�26dF�f�w��ԝ\�\�dz\�|\�?�\�S�k��0$\�C�\�y&\�K�l�b��X��|��\0I]�f<�|�����U\�t]�f\�6ڹ{V��\\\�5,��ҩ�~\�ME\�\\���dW\�C�\� J,�.\�\��{;=}Iқ\�Z\�\ry�\�H�<�D/q�&�\�1 �`]}���\�\�0\�07�+>�JI0YNJA�L\��\�\�p�����/\�UZ�t+]�(��}���\�|@�ȣB\��S�\�:f�{\\\���Vtٻ$��<��>ql\09����O\��\��gAz<V\�-i���\�g\�\\��2K[�-g���8\�G)3�P��[\��6~+�{�\�U\�˪<b�L��������������Vx��\�?!�\�T\�ov\�#��h�\�:�\0%D\�k�MQ��\r�`2X��\�kc>E�ę;,\� pa����n�s!�\�\�.\�f\�8\�\�a\�H����kaW�\�7�\�P��\\\�B�RX\�e�M,I�\�C�^�\����q\�+\�R�3X\�+X\�hdF�)�}V\�M\�q(8�\�\�cDW5�\� 7�\�c�\�c\�w�|㳬��\0e�\���\Z�iY�밚9[��\�\�ck���Z�s.u��\�G9\�x�\��\'J�aΦ�=�\��v��{Mʙd}��v\�\�أ�2L\�\�V�.�h�j�Hh���\�|�<J��&\�e�+�>q#�\��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0���S\�2����&�\�.�\'\�hN \�mSfǩ�(\�5��\�ljb�1�F�ƍL x�\�ƌ \0F֌A\�шCkX\�5�cp\�c ���\�x\�\�|�t{��@\�\�\�\�xF\�x;c���\�#\�\�(\�\Z91�1��6̋\�*}T�Uc#8�*i9�w�\"\�6\�1\�\�b\�Kߴk\�\�\�׫\�\��{:k�\�\�2b��s\�Vg8i�̊S����L�r\0rt�h��o\�\�Oc�N~�n\���\�ԇ���v\�\�i\�Wg��>E\Z4cQ\r`\�#�U�b\�G���:4\�9t\"\"\"\�1�E� �\0\07�\�3\� �\"n^B��\�X1��s\���\rcq�;8\�3�Qw�\�v\�\�/�;�k��u��6\�\�\�c��\��g��Z�\�~����2noŠ�L�Z64Y)g�\�&.#��\�\�\��-c\����ߩ�c��J\�皭I�\� \Z\�\�Ut�\�$�\�o̸x����\�(,cB\�+\�Ǫj�֋�\�i\�u%n��\�u��(��\"�m]t1\�q\�Ŏ,a�c�w;?\"�y����{�\"\"\"\"\"\"\"\"\"\"\"(J���瞵\�\"�Y\�\�Ys��[�\�\�z�s\�X��\�7*�\����\�QHi O���i�G��=n����^7{\�ɾ8{}\�}�\�d�Ԭ�G޵܋\�\�\�7\�\"�w\�?̯\�\�έ fS�C6\�]Q*�s+�.����َ\'\��c�Ka���\�)k5\�%�;-��c��*.!��UsZW\�=�]�XVQ �6\\(\�wՌ�DDZ��\�Vg�\�\�\�g��nըu\��H.3\�\�N�k\Z�m\�\Z\��8�#_\�\�7\�\�D�\���^lٖS%\�\�˓>\�|�͝:i\�*dْ��ʗ.Q\��ȓ \�y�s=\�1^�\�{���\02�\�]ӊ>���\�S2�\�w�\�Ճ��&ma*�q�A�Z�KȦM�Z�\0`Ћ�\�L���\���cߚ\"\"\"\"\"\"\"\"\"\"\"\"\�0C(&�$\"�\Z@��\�aB`��BaaF9\� \�ܱ\�\�Z\�g\�U��n�pwM{ˣ�\'��Z�\�F��r\�\�T\�cck;\�\r\�L{\��\��\�\�n\�\�b\�b\0�i�&ۘ��ml$�+�k~�N\�s\�N\�r\�P��ϴ\�\� \���+Z�)3!꼉�\�\�M=t\��\'\�P͎�a�ͭc��\�I���V\�:\�\�\�DE�?S\r5\�\��\���&n�s=��\�\�t�㲽a~9ǴsUF�\�ϻp\�\�.\�p��^�\��U\�G)�q��v.@\�h�!� fW[\�u��b��x\�\"H� �aA�n~7�\�ñ|\'UWQ���OQ5Օ���\n  �X\�\�b ah��5�kq�\�\�=��\0�]��9\�{�\"\"\"\"\"\"\"\"\"\",h\�q��\�*\�\�8q\�ku�]�e��br\�o�\�$\nw6s%\�@�\�H�\"0\Z�>@�\���g\�m\�n2�zη�.vl䭐h[XNՁf\�e�\�Y3v�.\�����X\Z얺+s��2��T\��]�t\�\�\�K�}\Z\�c]\nª%�v��\�ݎ=@�\nh4䷱��\�\�5X�\�G9{�`t\� I\�\'\�Ɗs\�ܧ\�\�\�\�\�%r�\�\���jH3�ܭ�F�ڷ�*,�\�\�J\�7Q���*\�<�F�]\�6@\'�dcJ(C\ZO�X�L�\�1\�3��\0\��>i\�g/\\}���\�h���}dF\�e}xN����\�\�\�K\��R>�\0�r\'X\�$bO�9Y\�\�N<`�v�\�\��d��\�[\�WH\�=����dș\���\�Xg�����\��\�o�^4!m�\�7 �G�ދ�v\�}�\�\�\�\�y\Z�(5gض�K9q)`�������̰��8�5�ǛcȈ�\r|�p\\�\�tO�\\ ��,��ڲ��{\�oi�\�6��fXL>@l���\�\�;G��79v(\�\�h.uK�\�[c��O�kWT\�3�̫���j\�J\�L\�]�I�:1\��s�҉�\�s�{�\�\�\�$7��\�o�~E[����X�!�84{m��\�!aJ\\�H\� B!�|Xǻ8no�\�\�h���{\0Ñ\�P֭�H�\�%�4)��7�9ÆP��c��\�\�v3�\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $K�ca-\�#Ǝ\"��\�s�D&q�� �j�x\�{�xΉ\Z����jó\�p�M��8��;�#�4���\�j��b��\�b�?�G�\�\�Ŵ :��\�y+\�lZ:��\�k;Ȳ$f;lm�\�\� �Ξioc\�\�&��T\� X[8qy���)lA!bTh\���GW\�\"ֹ_\����O\�~�\�p���\�I�\�\�\�\Z�\��-\�i�m�\�\�c1�� UTVP&J���>Z�w½y\���\��\��p��U� \�\�y�R\�\�\��8\�2�$g\�\�J\�$��\��˟�l{{\Z\"\"\"\"*�}Q�-l�?݋~\��ޱ*[{o}o�\�\�.5f�\�\�2{�B\�\�8�;��m \�ϗ>Ćي\�Ɓ_y�\�W\�#\�\�.\��\�\�\�JM���P\�\�h�ȸ��y���\�\�E��줟8��m�\��\�R\�5�$��\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ\�q\n�;�\�\�\�M�^(ѽ\�$��0���eK^m<\�󟕎U�֨\�n�\�:��\��A\Zk��J\Z٤}~\�ȟCC�k\�\n5��$\�մ� /�O�_�Kŗ�\��[\�AqO \�f��\�8�K�/\�%\�\�x昙\�~\��X����\��\0\�\�Y\�O1\�\r.\�W\�\�����\�\�\�0\���F\����\0�y�a��?%�5��|\�a�~q\�gI��TV:5D\0�+\�F��]��\"\"\"\"\"ž\�t��{\�׾@\�o?j\��m}�,7��k�u�qe�)�Z)Xp\�@��� [(\�H�$2b���@\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zxq�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�\�Ÿ\Z,�ʋ&9\�Q�FT\"\"\"\"\"\"\"\".�(\Z0�\"D�`@\0�!�c\��!�\�!汌k�\�a�\�UR��\�2�=�\�\�[�gf��\��lvZ\�cF!�C\�.J����\��y`_:��\��:М\���$&�in\"�W���\�;y\�ɧfu>�ptC|�\nӐ9\n\�)�ka��\��[i�h�\�\�4-(5�p\�\�\�-~�ΗWT {ʛ�z/Ѿ�\�ם/��}ա\�\�z\�l&^ߺ$q\�[\�\�8\�e�ݵM2I�ֲ�\"[��Q3 �\\\�\�\�DDDDDDD^a\��+Ľ�\�\�Ú�\�R\��?\�\�\�U_j{�4K��\Z���fF %\r\�d \�Ex\"<Y\���\0���\r���38�m��T��\�Ii\�7�y�\�\���\ZQ\�\n�c%\�]�Z}��D\�:Y.i�!P�ԍ�t�jc�~\Z�J�#�\��Qu�co;\�h��\Z�֫�軬B�; #h\�\�v�\��lh��h �\�@�|�A�g�o\�G��\0$�5�\�7\��\0.q)j\�\�n�\�ē�\�[]Œ(\�v`\�\�E�\�5�L��͉I_s�\�2xF���\�\�^X�x\�\�y�\�sm�\0d��S$f;M��=�\�igN�]#0�-��\�a[\�hB��E�ưF�?0\�O\�?�_}��f�\�\�\��;<�\�\�k�� c᫛�����m.P�\�Il�[�ȗ\�6���\�\�sqlZ�\�\�]g�\�\�\�X\�5��կ��,{񜱎�S.\\v�\�k�\�\�\�p\�\�϶WfDDDDDDQ��Gy/\�Fza\��{�����j\�n7\� Sr꭛Qп\�\�܅\\�vא\�[ �����)O�\�P�@\�cj����������������QMMQ\nM������C�����#L�a>a�(�,�RJ \0O+\�\�\�\���EA\� ��\�}���_f�\�\rv�\�;TH�\�y/�3S\�j\�\�,���ӨgÃ!�ulK[\�X^���|\�\0n��r\� ��=jS�.m\�\����H�\"Xj܉�\�m�R�Kk,���66E,c`�3\�d �����1d�?\�\�Geb\�\��6�#�<\�(��\�j� �\��c��~��\�/Q+ \�I�\\M2���������0�\�\�Sw�_O�`\�8\�?$rg\\\�o1\"\�!���u\�s-\\Ytⰻ��i\Z�\�\�:�����7\Z�\�\�0̬���,\��Z�Qq�po�^�w��Y\��~�4\r{F䚢\�r�\�\�D���œ#J\�.,X�3eM��|Ղ%\�\�;3ƃ1aR#��0 6& \�ADn2 �˘A��Ø�\�-ss�79\�q�Ȉ�����)�@w絞W9w\\l\�B\�m_\�q�[I�Q\'9.˵lQ��\rE������\� ɝ\'\Z\� (��A������\�Ozfv��)d\�\�^��f\�J\�\�k\�6>h�\�\"\�\�t��\�\��Q6f\�iZf �q�\�\�~�\����}r��\0vOG�\�5{&^�q�\r�.��:)cD\�uv\�*m���k\�\�l�{�\���J\Z|�x\�\�ݩظ�\�O�\�,\�m���G�H\Z.N\�\�Ipc\�W\�`� ��G\�*6ڑ\�2\�\� B�kW�M#ҵ\�b\�\��~;;Y���\n)2��\0\�;4�>\�u:�}�4��\�l�b\�o\�㽭��w>\�h��a\�\\@خeN��\�m;�yKn�wF���\�ﱂK�:9���;1�\�q�8O�\�5\�\�2ܷ\�Ƿ��������7�\��\�#��r\�o[<�\r\���m��u$bs\�\��VJ���s\Z�7/~q�Ͷ~�\�kK�Q\�\�%i&\�\��Qd7�\�ā<v�}=|\n\Z�ÐBb)5Z�z̎?\�I#�đCa2y\r!TDDDDDDDDDDE�\�=3u�%}\�m6���|\�\�u�\\���9���õ\�u���R5�\�sF�\�\�}�V�K �J踜�T)\�\\�ɽe\�\�\'���\�\�|�¼�Y�U�6Us�6�BᅑK\\\�V\�29dD�I�Q\�,W˯5�<\�g8\�\�\�\�/s�{\�~\�R�q\�\�\\U�n6��<2ȣ\�,\�\���x\��\�\�΁f\�<&�����)����l������\� �\��?�\��r-[���N��\r�~>܇\��o\�EJֽ\�i\�v\�\��\��\�\�\��sK\�\�\�k\��4�\��Ȝ�\��,�D~G)\�\�vʊ610\�\�;`/\���-w\�\�\�ٽ\�C\�(�\�I\��-jh\Zv�Q�\�ĉQ\0(UA9lp�\0�7���\�e\�#\���\�s\�\�QS�\�/\�\�7L<�vM\�7ꜻ&cu\�l̒>��:\�\�\�ǒ�d\�f\� c�\�\�X0�,5�#2��Z�n�&7\�;o\�9\��\�V��}\�\�r\�\"ޠ\��+\�W\�\�K� \�A�ߜ\�\�\�^\0���\"\"\"\"\�O�=2^�\�S�:\�lSM�\'\\��\��c\�\�Dz�����<e\��)�$\\\�\��ۃ\��\�Ƒ�_�0\��峣\Z=�8��\�s,����c6N��\�\�\\Do��\�`Τ�8ek�; <|\�\�t�\"\"\"\"\"\"\"\"\"\"\"\"�\�\�ƚ\�g:W\�U�`\�\�C\�\Z�\�q� ���\�ͧ;^�S��)#U7r�,`�\��\ri0�\�q%\�\�\�=\�.:W\�W\��\�*V��߳�\�\'ղf\�>߾Xǃ9Ǿ}�x��\��\�icoq�Pn\�N쎭\'\�\�p�% \�x�V� ԭe�Nr\�g$v�.��?���\0��m�\��5����\�@!�k\�y�\\�����\�\�i\�\�\�8�\0# HL��yB<g$#\Z\�}p:\�{�{�;�\�\�jJ\�Mg\�\���|�_Q��X\�ɿd��2c$��\�p\�dyvsGѫ����]Ƅ���\�n�d�M,\rYK�R\0�\�\�\� b@F=�s�\��1�l�Q��\\N\�Na�칭�ż�\�o�\���[�9o�\��\�\�l{��{~\�_I\�M�̷\�F\�ic\�;��O��&�\�B\�k]���p�a�\�~sX\�;\�\"\"\"\"\"\"\"\"\"\"\"\"(Lz\�\�p^���\�\��\�\�\�U�w����}���\��q����{�\��8Y\�\��\�?\r:�\�ny\� ��\0[#\�a\���\�\����\0+��\0lI\�um\����´�\0\�Xj\��K���� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���ai\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���F�\�/�\'c\�!\�h�\���\�\�L�\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\���\�V\0 �� �RDDDD_\���Al(�\� �#Z�onZ�\�Z�=�\�\\\�c-ss�g\�s�\�L]z\�2~q��9�(# �\�kc�����\�1�ٍ�[\�lc9���S�DDDDDDDDDDDDQ��`�\�\�e�\�\��]ό\��r\�p\�#|��\������\0�����Xj�B�\��1fWVx�\�\�\Zܘ֔ ���8n2Be�2�{�\�\�3\�X\�m�\"\"\"\"\"�G�m�C�\���\���\�\Zia�<\�\�w.X坲\�\�!=\��c(\�\�|\01�\0\�l��\"\"\"\"\"\"\"\"\"\"\"\"��~�\��\0\�gi\�V2�\0�/<9����\�\�\�\��\�\�\��E��*V[\�?\��\r�#�\�\���ĉ\�K\��Ӿ���\0�\�hT�\��v3����DDDDZ�\�\�qO��.�\�*��\�s\�6RZC��l �(�\�z�q`\��n>�\n\�^\�d<e\�\�Mk+-n>Ns�ƈ������������\�c�\��\�c��?PfF��h\�\�\� [(p%�\� \�\�Gt�ı$3�0\��3?�ɇ�\�_\�=8\�<,��?��ڄA\���,\r^�Q0\�?710`x�ȱ��\�k\�\�\�*|*�f��uՕMdx3�)��w$?g\�c1�&\Zs�\���ۂ�\�\��\��_\�}\�DDDDDDDDDDDE\�7=F�|\�\�u\r�e55\�\\C�ѕ\���|a�x\�\�\�\� 3\�\�=�ѡ���Q\�kՍ{+hjk��\�Ga\�d\Z�a��{Z\�9\�\0�; n\�g8kq�c\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/�\�',4,1,'','','',''),(14,4,0,'9305bf00c3cedc12','24803714715bf00c3ced9f6942163975','2018-11-17 12:40:28','2018-11-17 12:40:28','','','Profile Photos','person-300.jpg','image/jpeg',80,80,2354,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0\0 \n!#\"AB�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�\�\��7��M�\�PCm;\n\�f˲�\�A�\"&\n(�\�\�\�z\�r+\�\�*�������N\��1dVq��+:}\�w�N\�\�z/۝ \�\�I�̮���֩�\�uJ�7\Z��I��A�\�y�\��d�2m`\�^�N|HKFow\�n�R�ɭc5mö�0�\�~�S��r\�\�\�t<Ŏ8\�M�i\�-2\��C���z*�\�}\�\�`�C\�_��\�qț\�\�\'�0\�g�(督�v\�\�pQ�aYV\�[=��AXFR�\�\�Y�\Z�p�|6R�����Po��S�z�\��\��B�9d\�\�\�V�؛�����jl.e6Nڔ\"S\�\���pσ��\�U�{\r�<���є\�\�*�F�@�V�Ԙ��:�W�V`�b6�]���hX��\�\�F\�G�8a\n\�\��\�hN�c�sѿ7�?�\Z*GLn�.���{^\�m}k��Y(IF\�s(���\���#\�#Y�+{|2���&%hZ�\�OL��~�\0\�:\�vڗ-���\�\����E�\�;=����!\0\�DZ�\�vW\�^���Q\�\"\��5y\0\Z\�G\�ل��J �]�\�٥\�C�����T��\�\Z���iR.!-:eZ�_���>�(q԰J\�d��H�qya�\0\�\�T��9\��\�\�/�Z�Ź��\�潩D��O�\�\"f4D�\�r�R\�wDPm5�-\�\�\�]P���>A\r���+\�s��њ�K^�_\�z\�A\�t\�n3�V\�)\�ٚ@��.g��E0{�H�\0.`F�Z��P\�qi7�k\��\\=����4ą��םL\�c\��\�+c\�\�<l�\�;F�\r\�rV\Z@`\�\�\�yc��\Z.\�\�9�S��#d�~\�}oՕ\�yk\�߅�\� \�\n�\'\�\�S\n�g�Y�m?�\�\�\�s��%��!�\���a�B]e\�]F[u�Z^�q\nRBӔ�9\�U�\�9\�+\�7V�7\�C\��\�κ�JX�Iy\��9\�2\��a\�Ȓ1� y\��5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#����#�\Z\�/j�\���\�zv\�o�D\�!\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�/4�����mϵXћ\�g\�`��v��^�wP��E�V\�\��(���A�vN��_\'�4�\�A;�a]]\�d\� �@@�gñ�\Z8\�x/g;3�:y�vc; w�\���ZC.b\�>\�\�ΩN h\�HH\�\�&\��O\r^��m\�\�K1�R\��\�\0z�\�?W��\'�m\�\�r���`�\�Ƶ�D\�*��\��Z��.�4��.\�D\�)&�\��Z\"�\�1yȐ_\�2\���e��ǧ�X�v:�r\�^*d!!ܭ��;����@\�3�\�=�?\'�kR\� \�Fq\�u*�\�\"�ˆ0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O��caY�r\�]��C\�(��%�g\�F6�X�͟+�\�\�\�a0Qԫ$]#cJ4 �\�HZ�&f�:\�dפ3b�\�\rs`*�\�%IZp��\nJ��%I\�2�c8�\�q�|\�8\�?�g\�qϞ8\�~�S&�S���\�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o��^�V��po9�\�k;:\�8�4\��\�*�n8���j\�`�d|\�һ���i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��^뒠\�\��*\�2p\�\��v#f\�~\���\�֫\�﷤�B�/�j��\�U�)����^��ĉ�,y-`\0$|kk�ם:4�����\�0\�Mj8�Pߨ)\�\�(��Y\�\0-yVQ�ې&E���\0�@�>,�\�>�����\��\�8\��\�c\��K�����?��\�m a\nm3\�;sR��$\�%Զ�\�*ͭL�԰\�\��\�M\��q\��u�a= \�^�LrE\�} �ĚXRra�]�ޱMd~4�\�D\�e-�8\�\�eᲬ6�[§�q\����t�\�\�\�TB��:�)M\�a����G`t�\�+w\��0ٍ��\�XC�o�K�ˎp$Q�K\� vY �3\�%�\�K㈲\\��\�p㌌ᅸ;KVP\�\�!M�*y̫��8\�u��-��;99��\r��\�rB}\�^xt;����^�o�V�ZR���9\�g��\�',5,1,'','','',''),(15,4,0,'9305bf00c3cedc12','24803714715bf00c3ced9f6942163975','2018-11-17 12:40:28','2018-11-17 12:40:28','','','Profile Photos','person-300.jpg','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYjm�_HL�٤\�nj��\�\0�r��3_\�\���M\�0�n:zE\raĶ덐�YoU\�\�\�G���`q�N�ښ�L\�\r�oMgKSmϸ$�Lݫ*�쵞$ƾn��\�`�aH| �\�\�a\�\�a��{~\'>�(: �+��j�o��6;+\�Ya�>\�U\�aZ\�\�H�bqc1oz ���\�\�iق%a��\��-��]�\�o)s\�^\�x[�-4й\�\�\�;��\�jT[���P\�lQ\�\�-�-\\v\�$�\� �g3N�]c\�F�|J���^���f<�:Ī\�u m�Y��ȬƼ��1[\Z�,En֨E��SpRƆ�\�AKp����\"K5�\�c��\�\�k\�{�\�=�z\�\�e��V�<\�}O�^�����ԋʜ9E\�\�!\rf*9ʱ\'9�4n�T\�+NS?Ƈ�!���j5X\�&�\�<1)d\�-���\�\\u��)_�\�]�lQ9���1Y\�¸K�!�\�\�`5��R�_\�\�\��y\�P�\�Ұ �\�h{G\�\�1ԏ P�\�\�\�ۦ%�<\�U0��]y?�gp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�۔…�a�\�\�a�YXj[�G\�ؤ\r\�0�\�B�\�<\�\�uo���y\�j:齟����!5\�6�O\�\\�D���|���@�<F�K9�\�i9q\�\�2ێ�gKw\'c�-\�`k\�F\�[�=𮻷Mk��\��Hĝ[�\�jf\�Z��߲Wމ���X\'X�U)�F�87&$Z��4��\�\�X\�\�z���θ�܍�F�S��\�\�$Zp�Z��\�F9\�\�6\�8�%�0�8Y+ßg\�ʧ��\0[�W0\��=x�\�}g\�ۂ7sh U\�8\�]}<��&Ѯ6HQ8�\08���h0YT��/c0Q\�e\�\�}�\�}��6P�[�5%�ZR\�\�x�;i\�JljmO*S삩;�\�jcFk\�\�\�s`���W#s� \�Ua[y�9q�q\�Q��0\�),�qrq\�4X1ǰ\�Al-l!c:\�\�\�\�̸�R��g3�ۆ�m�.\�\�- ���\��¯((�\�\��\����\�\Z\�q��\0Ւ��&\�\�2�\�!��BU�\�\�1\�FZQYha�a i�\�a i�Ym\�i�Ҕ6�\� B��\�1�=�<\�\�j\�����k�r�p�\�\�쐲#�T|� �qSg\n�V\��Y�éSn�\�\�Zr�g#��S��]��K�� t�7Y�Q�ҹw\'�X���� �����\0�tsXR��`Vҟ\��\�l\n<Vū�T�[�Ǔ)Z�Z\�\�r\� �Y�\�Q�\0^2��\�B���\�\�ʲ�\��\�\�\�\�\�\�V��E\�jd%\"\�ދ�h�Cp�\�/e�� �RW����� \��\���\�?9��\�',6,1,'','','',''),(16,5,0,'9305bf00c9709025','12966450605bf00c9708ea1748285071','2018-11-17 12:41:59','2018-11-17 12:41:59','','','Profile Photos','person-300.jpg','image/jpeg',300,300,11007,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/�\�3\�\"u\�OX\�G�X����q\�\�ڭ�/\�+�xߌ\�[VJ$<Fuݼ W���\�ȁ}�\�\�\�ˌ3$xI�{\�>�+\\�c|>o���b_j�\�m\0�&\�Q\�<\�E\�-�A��Zv�\��� ��Ɍ�ԏ.y��\�\�M+z\�Ga�\���\�J\�&�\�\�Q�\'�۫\�|0�\�&G�(\�p\�<\�s0\�\�z�y|�r\�S�h]\�\�n�\�H|j=[P\�`vm�\�P�YE�SGM�M���\�\�\�$��\�h\0S9�\�\�J\�LJL}X�IQ�C\�$�k��gD̛�\�:�ռJ�t\\WU�u}A�\�L\�JsC\�V\�m�؂P�b@�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1>CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�9\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�7\��`\�\rf�\��a\�\�#�\�w^\�s\�\���c�\�j^2\�\�|\�����AaB\�vN�\�g\�\�1�ʋ�,\�3Ŝ E!_��\��=�U\�;\0\'u��\�,)E\����%�\�\"6@M:��\� QH�Yy���Y\�}b\�\�υf���\�\�_\��\0\�OE�m\�1):\�\�t\�^�\�y{l�c\��d|��4ͮ|r\�ņǝ&���\Z�s�\n[\�\�l\�DGԃ\�\'B\�lzu\�\�J���\�(I�]���u\��\�l\�@~d�ǐ�BR7[��Vռ�6`,z\�\�X�׵\�\�\�\�}�\�wֻFٴZͼض+ɧ�����;\�α��%\�<�RNG��#�\�>\��n1�|l�߷����\0�=�\��x\�?�\��S����g���\�{�\�KI˵\�\�=k\�a�&���\�\�\��S(#x�\�kY&�N�\��\�97�m\��Z�����Y��\��ڨ�uE���(�@�8��b���\�{\�٭\�\�\�sݜ�\�v~�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\���&\Z\�΍o\\\�9A/0\�p��4��\�xF|i\�\�C\�\�uXm.���S4Uq\n�\�ʟ��\rM\�%rV�\�[�\�\�<��\�o��]\�ضͮ�Ve\�\�[\�\'\��dك\�\�2<8QF5Ѓ\Z��4X1�\�G_�\�s�s���\�4OKW��v_x��ڍ3\�\�~9��N���\�\�\�B��2�r���\0���!���t�\�\�D\�E�u�\�+@\0E\0cF�F��<p\r�p��\r��!��\�ֱ�n\Z\�\�\�2\"\�\�\��ǫ\�>8�72����\�\Zہ\���e%\�\�>\�ԁq\���^�cog/\�o\�+\�ɘ\�e\�dw�J��w�OŷGi����{oq��5\�Ϗ����c�\"rL:\�!�\n�����e\�B9��1f\'�Ө/��O\�gdcB�{fDM��&\�\�=��؆k*�e\�\���~v1\�c\���\�i\�\��\�\��)�\��#��[H�<�|��nږ�VV\��i{\�}��I��L\�Kf 9\�#\��򙿍KrԷ\�8�6��P\�\���1�\�\�XW5�\�\�#ᬙ\0\�ـ�Dx\\�m#>\�7.\�eDDDDDDDDDDD\\d \�2\�`�&<�)� cf2琏vp\�1�\�\\��8k�\�9\�1����M~C\�\�\�ҵ���|բ\�\�9�Ug��{\\����v�0��5�\��U,SH� x��&B|\"\\X\�\�t\�l{\��\�\�\�_v���\� ���[\�;d卮$RH�\�z\�?a�!\�8 \��dmf�D\�<+��n�&|\�2\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�\�\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�dJ�>\rm�s�1�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���\�\���J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf�`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8�R�\�7$ș>�W n\�I�#�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W�p\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�v�mw�H0�c`\��5�q�7֑���F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ\�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��ߣ���\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J�\�pI_Xa�óuA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i\"J�\�_0\�\�{\r�kA\"\�{�\�\�jwƯ��X*\�Z[\�m3�Ɋ\�\���\�\�l�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�_`F5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\"/\�u�w��\�1�p%\�\n<�9~3��G��-~XB�#��]f_��#f\�N�t\�S\�+Mk{3��7b(�pZF\�k�\�&\�{;�r �]\rE���\�8\� 7�0�!\� /-DDDDDDDDDDQH��p�D�V>V�,�g_����Z\�0�c��}��ƒd��\�b\�x\���m�&)\�<�# ��E.OF�\�:�\0\'܇�<Y\��^�\�6\�?�>#v��\�Bp��\�\�{\�\�5�nq\�<�8g\�\�DDDDE�/Q�/j�E\�׺\�l��\�\�}�~rY[�g��0@\���\��G#�֊3O�\n0�\�\�8���\�E\�\�ϞX�ӕ\��;���k�/*�|lÍm{�]\�\ZuT�;��\�˹���x\�h2�C�26dF�f�w��ԝ\�\�dz\�|\�?�\�S�k��0$\�C�\�y&\�K�l�b��X��|��\0I]�f<�|�����U\�t]�f\�6ڹ{V��\\\�5,��ҩ�~\�ME\�\\���dW\�C�\� J,�.\�\��{;=}Iқ\�Z\�\ry�\�H�<�D/q�&�\�1 �`]}���\�\�0\�07�+>�JI0YNJA�L\��\�\�p�����/\�UZ�t+]�(��}���\�|@�ȣB\��S�\�:f�{\\\���Vtٻ$��<��>ql\09����O\��\��gAz<V\�-i���\�g\�\\��2K[�-g���8\�G)3�P��[\��6~+�{�\�U\�˪<b�L��������������Vx��\�?!�\�T\�ov\�#��h�\�:�\0%D\�k�MQ��\r�`2X��\�kc>E�ę;,\� pa����n�s!�\�\�.\�f\�8\�\�a\�H����kaW�\�7�\�P��\\\�B�RX\�e�M,I�\�C�^�\����q\�+\�R�3X\�+X\�hdF�)�}V\�M\�q(8�\�\�cDW5�\� 7�\�c�\�c\�w�|㳬��\0e�\���\Z�iY�밚9[��\�\�ck���Z�s.u��\�G9\�x�\��\'J�aΦ�=�\��v��{Mʙd}��v\�\�أ�2L\�\�V�.�h�j�Hh���\�|�<J��&\�e�+�>q#�\��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0���S\�2����&�\�.�\'\�hN \�mSfǩ�(\�5��\�ljb�1�F�ƍL x�\�ƌ \0F֌A\�шCkX\�5�cp\�c ���\�x\�\�|�t{��@\�\�\�\�xF\�x;c���\�#\�\�(\�\Z91�1��6̋\�*}T�Uc#8�*i9�w�\"\�6\�1\�\�b\�Kߴk\�\�\�׫\�\��{:k�\�\�2b��s\�Vg8i�̊S����L�r\0rt�h��o\�\�Oc�N~�n\���\�ԇ���v\�\�i\�Wg��>E\Z4cQ\r`\�#�U�b\�G���:4\�9t\"\"\"\�1�E� �\0\07�\�3\� �\"n^B��\�X1��s\���\rcq�;8\�3�Qw�\�v\�\�/�;�k��u��6\�\�\�c��\��g��Z�\�~����2noŠ�L�Z64Y)g�\�&.#��\�\�\��-c\����ߩ�c��J\�皭I�\� \Z\�\�Ut�\�$�\�o̸x����\�(,cB\�+\�Ǫj�֋�\�i\�u%n��\�u��(��\"�m]t1\�q\�Ŏ,a�c�w;?\"�y����{�\"\"\"\"\"\"\"\"\"\"\"(J���瞵\�\"�Y\�\�Ys��[�\�\�z�s\�X��\�7*�\����\�QHi O���i�G��=n����^7{\�ɾ8{}\�}�\�d�Ԭ�G޵܋\�\�\�7\�\"�w\�?̯\�\�έ fS�C6\�]Q*�s+�.����َ\'\��c�Ka���\�)k5\�%�;-��c��*.!��UsZW\�=�]�XVQ �6\\(\�wՌ�DDZ��\�Vg�\�\�\�g��nըu\��H.3\�\�N�k\Z�m\�\Z\��8�#_\�\�7\�\�D�\���^lٖS%\�\�˓>\�|�͝:i\�*dْ��ʗ.Q\��ȓ \�y�s=\�1^�\�{���\02�\�]ӊ>���\�S2�\�w�\�Ճ��&ma*�q�A�Z�KȦM�Z�\0`Ћ�\�L���\���cߚ\"\"\"\"\"\"\"\"\"\"\"\"\�0C(&�$\"�\Z@��\�aB`��BaaF9\� \�ܱ\�\�Z\�g\�U��n�pwM{ˣ�\'��Z�\�F��r\�\�T\�cck;\�\r\�L{\��\��\�\�n\�\�b\�b\0�i�&ۘ��ml$�+�k~�N\�s\�N\�r\�P��ϴ\�\� \���+Z�)3!꼉�\�\�M=t\��\'\�P͎�a�ͭc��\�I���V\�:\�\�\�DE�?S\r5\�\��\���&n�s=��\�\�t�㲽a~9ǴsUF�\�ϻp\�\�.\�p��^�\��U\�G)�q��v.@\�h�!� fW[\�u��b��x\�\"H� �aA�n~7�\�ñ|\'UWQ���OQ5Օ���\n  �X\�\�b ah��5�kq�\�\�=��\0�]��9\�{�\"\"\"\"\"\"\"\"\"\",h\�q��\�*\�\�8q\�ku�]�e��br\�o�\�$\nw6s%\�@�\�H�\"0\Z�>@�\���g\�m\�n2�zη�.vl䭐h[XNՁf\�e�\�Y3v�.\�����X\Z얺+s��2��T\��]�t\�\�\�K�}\Z\�c]\nª%�v��\�ݎ=@�\nh4䷱��\�\�5X�\�G9{�`t\� I\�\'\�Ɗs\�ܧ\�\�\�\�\�%r�\�\���jH3�ܭ�F�ڷ�*,�\�\�J\�7Q���*\�<�F�]\�6@\'�dcJ(C\ZO�X�L�\�1\�3��\0\��>i\�g/\\}���\�h���}dF\�e}xN����\�\�\�K\��R>�\0�r\'X\�$bO�9Y\�\�N<`�v�\�\��d��\�[\�WH\�=����dș\���\�Xg�����\��\�o�^4!m�\�7 �G�ދ�v\�}�\�\�\�\�y\Z�(5gض�K9q)`�������̰��8�5�ǛcȈ�\r|�p\\�\�tO�\\ ��,��ڲ��{\�oi�\�6��fXL>@l���\�\�;G��79v(\�\�h.uK�\�[c��O�kWT\�3�̫���j\�J\�L\�]�I�:1\��s�҉�\�s�{�\�\�\�$7��\�o�~E[����X�!�84{m��\�!aJ\\�H\� B!�|Xǻ8no�\�\�h���{\0Ñ\�P֭�H�\�%�4)��7�9ÆP��c��\�\�v3�\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $K�ca-\�#Ǝ\"��\�s�D&q�� �j�x\�{�xΉ\Z����jó\�p�M��8��;�#�4���\�j��b��\�b�?�G�\�\�Ŵ :��\�y+\�lZ:��\�k;Ȳ$f;lm�\�\� �Ξioc\�\�&��T\� X[8qy���)lA!bTh\���GW\�\"ֹ_\����O\�~�\�p���\�I�\�\�\�\Z�\��-\�i�m�\�\�c1�� UTVP&J���>Z�w½y\���\��\��p��U� \�\�y�R\�\�\��8\�2�$g\�\�J\�$��\��˟�l{{\Z\"\"\"\"*�}Q�-l�?݋~\��ޱ*[{o}o�\�\�.5f�\�\�2{�B\�\�8�;��m \�ϗ>Ćي\�Ɓ_y�\�W\�#\�\�.\��\�\�\�JM���P\�\�h�ȸ��y���\�\�E��줟8��m�\��\�R\�5�$��\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ\�q\n�;�\�\�\�M�^(ѽ\�$��0���eK^m<\�󟕎U�֨\�n�\�:��\��A\Zk��J\Z٤}~\�ȟCC�k\�\n5��$\�մ� /�O�_�Kŗ�\��[\�AqO \�f��\�8�K�/\�%\�\�x昙\�~\��X����\��\0\�\�Y\�O1\�\r.\�W\�\�����\�\�\�0\���F\����\0�y�a��?%�5��|\�a�~q\�gI��TV:5D\0�+\�F��]��\"\"\"\"\"ž\�t��{\�׾@\�o?j\��m}�,7��k�u�qe�)�Z)Xp\�@��� [(\�H�$2b���@\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zxq�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�\�Ÿ\Z,�ʋ&9\�Q�FT\"\"\"\"\"\"\"\".�(\Z0�\"D�`@\0�!�c\��!�\�!汌k�\�a�\�UR��\�2�=�\�\�[�gf��\��lvZ\�cF!�C\�.J����\��y`_:��\��:М\���$&�in\"�W���\�;y\�ɧfu>�ptC|�\nӐ9\n\�)�ka��\��[i�h�\�\�4-(5�p\�\�\�-~�ΗWT {ʛ�z/Ѿ�\�ם/��}ա\�\�z\�l&^ߺ$q\�[\�\�8\�e�ݵM2I�ֲ�\"[��Q3 �\\\�\�\�DDDDDDD^a\��+Ľ�\�\�Ú�\�R\��?\�\�\�U_j{�4K��\Z���fF %\r\�d \�Ex\"<Y\���\0���\r���38�m��T��\�Ii\�7�y�\�\���\ZQ\�\n�c%\�]�Z}��D\�:Y.i�!P�ԍ�t�jc�~\Z�J�#�\��Qu�co;\�h��\Z�֫�軬B�; #h\�\�v�\��lh��h �\�@�|�A�g�o\�G��\0$�5�\�7\��\0.q)j\�\�n�\�ē�\�[]Œ(\�v`\�\�E�\�5�L��͉I_s�\�2xF���\�\�^X�x\�\�y�\�sm�\0d��S$f;M��=�\�igN�]#0�-��\�a[\�hB��E�ưF�?0\�O\�?�_}��f�\�\�\��;<�\�\�k�� c᫛�����m.P�\�Il�[�ȗ\�6���\�\�sqlZ�\�\�]g�\�\�\�X\�5��կ��,{񜱎�S.\\v�\�k�\�\�\�p\�\�϶WfDDDDDDQ��Gy/\�Fza\��{�����j\�n7\� Sr꭛Qп\�\�܅\\�vא\�[ �����)O�\�P�@\�cj����������������QMMQ\nM������C�����#L�a>a�(�,�RJ \0O+\�\�\�\���EA\� ��\�}���_f�\�\rv�\�;TH�\�y/�3S\�j\�\�,���ӨgÃ!�ulK[\�X^���|\�\0n��r\� ��=jS�.m\�\����H�\"Xj܉�\�m�R�Kk,���66E,c`�3\�d �����1d�?\�\�Geb\�\��6�#�<\�(��\�j� �\��c��~��\�/Q+ \�I�\\M2���������0�\�\�Sw�_O�`\�8\�?$rg\\\�o1\"\�!���u\�s-\\Ytⰻ��i\Z�\�\�:�����7\Z�\�\�0̬���,\��Z�Qq�po�^�w��Y\��~�4\r{F䚢\�r�\�\�D���œ#J\�.,X�3eM��|Ղ%\�\�;3ƃ1aR#��0 6& \�ADn2 �˘A��Ø�\�-ss�79\�q�Ȉ�����)�@w絞W9w\\l\�B\�m_\�q�[I�Q\'9.˵lQ��\rE������\� ɝ\'\Z\� (��A������\�Ozfv��)d\�\�^��f\�J\�\�k\�6>h�\�\"\�\�t��\�\��Q6f\�iZf �q�\�\�~�\����}r��\0vOG�\�5{&^�q�\r�.��:)cD\�uv\�*m���k\�\�l�{�\���J\Z|�x\�\�ݩظ�\�O�\�,\�m���G�H\Z.N\�\�Ipc\�W\�`� ��G\�*6ڑ\�2\�\� B�kW�M#ҵ\�b\�\��~;;Y���\n)2��\0\�;4�>\�u:�}�4��\�l�b\�o\�㽭��w>\�h��a\�\\@خeN��\�m;�yKn�wF���\�ﱂK�:9���;1�\�q�8O�\�5\�\�2ܷ\�Ƿ��������7�\��\�#��r\�o[<�\r\���m��u$bs\�\��VJ���s\Z�7/~q�Ͷ~�\�kK�Q\�\�%i&\�\��Qd7�\�ā<v�}=|\n\Z�ÐBb)5Z�z̎?\�I#�đCa2y\r!TDDDDDDDDDDE�\�=3u�%}\�m6���|\�\�u�\\���9���õ\�u���R5�\�sF�\�\�}�V�K �J踜�T)\�\\�ɽe\�\�\'���\�\�|�¼�Y�U�6Us�6�BᅑK\\\�V\�29dD�I�Q\�,W˯5�<\�g8\�\�\�\�/s�{\�~\�R�q\�\�\\U�n6��<2ȣ\�,\�\���x\��\�\�΁f\�<&�����)����l������\� �\��?�\��r-[���N��\r�~>܇\��o\�EJֽ\�i\�v\�\��\��\�\�\��sK\�\�\�k\��4�\��Ȝ�\��,�D~G)\�\�vʊ610\�\�;`/\���-w\�\�\�ٽ\�C\�(�\�I\��-jh\Zv�Q�\�ĉQ\0(UA9lp�\0�7���\�e\�#\���\�s\�\�QS�\�/\�\�7L<�vM\�7ꜻ&cu\�l̒>��:\�\�\�ǒ�d\�f\� c�\�\�X0�,5�#2��Z�n�&7\�;o\�9\��\�V��}\�\�r\�\"ޠ\��+\�W\�\�K� \�A�ߜ\�\�\�^\0���\"\"\"\"\�O�=2^�\�S�:\�lSM�\'\\��\��c\�\�Dz�����<e\��)�$\\\�\��ۃ\��\�Ƒ�_�0\��峣\Z=�8��\�s,����c6N��\�\�\\Do��\�`Τ�8ek�; <|\�\�t�\"\"\"\"\"\"\"\"\"\"\"\"�\�\�ƚ\�g:W\�U�`\�\�C\�\Z�\�q� ���\�ͧ;^�S��)#U7r�,`�\��\ri0�\�q%\�\�\�=\�.:W\�W\��\�*V��߳�\�\'ղf\�>߾Xǃ9Ǿ}�x��\��\�icoq�Pn\�N쎭\'\�\�p�% \�x�V� ԭe�Nr\�g$v�.��?���\0��m�\��5����\�@!�k\�y�\\�����\�\�i\�\�\�8�\0# HL��yB<g$#\Z\�}p:\�{�{�;�\�\�jJ\�Mg\�\���|�_Q��X\�ɿd��2c$��\�p\�dyvsGѫ����]Ƅ���\�n�d�M,\rYK�R\0�\�\�\� b@F=�s�\��1�l�Q��\\N\�Na�칭�ż�\�o�\���[�9o�\��\�\�l{��{~\�_I\�M�̷\�F\�ic\�;��O��&�\�B\�k]���p�a�\�~sX\�;\�\"\"\"\"\"\"\"\"\"\"\"\"(Lz\�\�p^���\�\��\�\�\�U�w����}���\��q����{�\��8Y\�\��\�?\r:�\�ny\� ��\0[#\�a\���\�\����\0+��\0lI\�um\����´�\0\�Xj\��K���� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���ai\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���F�\�/�\'c\�!\�h�\���\�\�L�\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\���\�V\0 �� �RDDDD_\���Al(�\� �#Z�onZ�\�Z�=�\�\\\�c-ss�g\�s�\�L]z\�2~q��9�(# �\�kc�����\�1�ٍ�[\�lc9���S�DDDDDDDDDDDDQ��`�\�\�e�\�\��]ό\��r\�p\�#|��\������\0�����Xj�B�\��1fWVx�\�\�\Zܘ֔ ���8n2Be�2�{�\�\�3\�X\�m�\"\"\"\"\"�G�m�C�\���\���\�\Zia�<\�\�w.X坲\�\�!=\��c(\�\�|\01�\0\�l��\"\"\"\"\"\"\"\"\"\"\"\"��~�\��\0\�gi\�V2�\0�/<9����\�\�\�\��\�\�\��E��*V[\�?\��\r�#�\�\���ĉ\�K\��Ӿ���\0�\�hT�\��v3����DDDDZ�\�\�qO��.�\�*��\�s\�6RZC��l �(�\�z�q`\��n>�\n\�^\�d<e\�\�Mk+-n>Ns�ƈ������������\�c�\��\�c��?PfF��h\�\�\� [(p%�\� \�\�Gt�ı$3�0\��3?�ɇ�\�_\�=8\�<,��?��ڄA\���,\r^�Q0\�?710`x�ȱ��\�k\�\�\�*|*�f��uՕMdx3�)��w$?g\�c1�&\Zs�\���ۂ�\�\��\��_\�}\�DDDDDDDDDDDE\�7=F�|\�\�u\r�e55\�\\C�ѕ\���|a�x\�\�\�\� 3\�\�=�ѡ���Q\�kՍ{+hjk��\�Ga\�d\Z�a��{Z\�9\�\0�; n\�g8kq�c\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/�\�',4,1,'','','',''),(17,5,0,'9305bf00c9709025','12966450605bf00c9708ea1748285071','2018-11-17 12:41:59','2018-11-17 12:41:59','','','Profile Photos','person-300.jpg','image/jpeg',80,80,2354,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0\0 \n!#\"AB�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�\�\��7��M�\�PCm;\n\�f˲�\�A�\"&\n(�\�\�\�z\�r+\�\�*�������N\��1dVq��+:}\�w�N\�\�z/۝ \�\�I�̮���֩�\�uJ�7\Z��I��A�\�y�\��d�2m`\�^�N|HKFow\�n�R�ɭc5mö�0�\�~�S��r\�\�\�t<Ŏ8\�M�i\�-2\��C���z*�\�}\�\�`�C\�_��\�qț\�\�\'�0\�g�(督�v\�\�pQ�aYV\�[=��AXFR�\�\�Y�\Z�p�|6R�����Po��S�z�\��\��B�9d\�\�\�V�؛�����jl.e6Nڔ\"S\�\���pσ��\�U�{\r�<���є\�\�*�F�@�V�Ԙ��:�W�V`�b6�]���hX��\�\�F\�G�8a\n\�\��\�hN�c�sѿ7�?�\Z*GLn�.���{^\�m}k��Y(IF\�s(���\���#\�#Y�+{|2���&%hZ�\�OL��~�\0\�:\�vڗ-���\�\����E�\�;=����!\0\�DZ�\�vW\�^���Q\�\"\��5y\0\Z\�G\�ل��J �]�\�٥\�C�����T��\�\Z���iR.!-:eZ�_���>�(q԰J\�d��H�qya�\0\�\�T��9\��\�\�/�Z�Ź��\�潩D��O�\�\"f4D�\�r�R\�wDPm5�-\�\�\�]P���>A\r���+\�s��њ�K^�_\�z\�A\�t\�n3�V\�)\�ٚ@��.g��E0{�H�\0.`F�Z��P\�qi7�k\��\\=����4ą��םL\�c\��\�+c\�\�<l�\�;F�\r\�rV\Z@`\�\�\�yc��\Z.\�\�9�S��#d�~\�}oՕ\�yk\�߅�\� \�\n�\'\�\�S\n�g�Y�m?�\�\�\�s��%��!�\���a�B]e\�]F[u�Z^�q\nRBӔ�9\�U�\�9\�+\�7V�7\�C\��\�κ�JX�Iy\��9\�2\��a\�Ȓ1� y\��5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#����#�\Z\�/j�\���\�zv\�o�D\�!\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�/4�����mϵXћ\�g\�`��v��^�wP��E�V\�\��(���A�vN��_\'�4�\�A;�a]]\�d\� �@@�gñ�\Z8\�x/g;3�:y�vc; w�\���ZC.b\�>\�\�ΩN h\�HH\�\�&\��O\r^��m\�\�K1�R\��\�\0z�\�?W��\'�m\�\�r���`�\�Ƶ�D\�*��\��Z��.�4��.\�D\�)&�\��Z\"�\�1yȐ_\�2\���e��ǧ�X�v:�r\�^*d!!ܭ��;����@\�3�\�=�?\'�kR\� \�Fq\�u*�\�\"�ˆ0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O��caY�r\�]��C\�(��%�g\�F6�X�͟+�\�\�\�a0Qԫ$]#cJ4 �\�HZ�&f�:\�dפ3b�\�\rs`*�\�%IZp��\nJ��%I\�2�c8�\�q�|\�8\�?�g\�qϞ8\�~�S&�S���\�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o��^�V��po9�\�k;:\�8�4\��\�*�n8���j\�`�d|\�һ���i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��^뒠\�\��*\�2p\�\��v#f\�~\���\�֫\�﷤�B�/�j��\�U�)����^��ĉ�,y-`\0$|kk�ם:4�����\�0\�Mj8�Pߨ)\�\�(��Y\�\0-yVQ�ې&E���\0�@�>,�\�>�����\��\�8\��\�c\��K�����?��\�m a\nm3\�;sR��$\�%Զ�\�*ͭL�԰\�\��\�M\��q\��u�a= \�^�LrE\�} �ĚXRra�]�ޱMd~4�\�D\�e-�8\�\�eᲬ6�[§�q\����t�\�\�\�TB��:�)M\�a����G`t�\�+w\��0ٍ��\�XC�o�K�ˎp$Q�K\� vY �3\�%�\�K㈲\\��\�p㌌ᅸ;KVP\�\�!M�*y̫��8\�u��-��;99��\r��\�rB}\�^xt;����^�o�V�ZR���9\�g��\�',5,1,'','','',''),(18,5,0,'9305bf00c9709025','12966450605bf00c9708ea1748285071','2018-11-17 12:41:59','2018-11-17 12:41:59','','','Profile Photos','person-300.jpg','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYjm�_HL�٤\�nj��\�\0�r��3_\�\���M\�0�n:zE\raĶ덐�YoU\�\�\�G���`q�N�ښ�L\�\r�oMgKSmϸ$�Lݫ*�쵞$ƾn��\�`�aH| �\�\�a\�\�a��{~\'>�(: �+��j�o��6;+\�Ya�>\�U\�aZ\�\�H�bqc1oz ���\�\�iق%a��\��-��]�\�o)s\�^\�x[�-4й\�\�\�;��\�jT[���P\�lQ\�\�-�-\\v\�$�\� �g3N�]c\�F�|J���^���f<�:Ī\�u m�Y��ȬƼ��1[\Z�,En֨E��SpRƆ�\�AKp����\"K5�\�c��\�\�k\�{�\�=�z\�\�e��V�<\�}O�^�����ԋʜ9E\�\�!\rf*9ʱ\'9�4n�T\�+NS?Ƈ�!���j5X\�&�\�<1)d\�-���\�\\u��)_�\�]�lQ9���1Y\�¸K�!�\�\�`5��R�_\�\�\��y\�P�\�Ұ �\�h{G\�\�1ԏ P�\�\�\�ۦ%�<\�U0��]y?�gp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�۔…�a�\�\�a�YXj[�G\�ؤ\r\�0�\�B�\�<\�\�uo���y\�j:齟����!5\�6�O\�\\�D���|���@�<F�K9�\�i9q\�\�2ێ�gKw\'c�-\�`k\�F\�[�=𮻷Mk��\��Hĝ[�\�jf\�Z��߲Wމ���X\'X�U)�F�87&$Z��4��\�\�X\�\�z���θ�܍�F�S��\�\�$Zp�Z��\�F9\�\�6\�8�%�0�8Y+ßg\�ʧ��\0[�W0\��=x�\�}g\�ۂ7sh U\�8\�]}<��&Ѯ6HQ8�\08���h0YT��/c0Q\�e\�\�}�\�}��6P�[�5%�ZR\�\�x�;i\�JljmO*S삩;�\�jcFk\�\�\�s`���W#s� \�Ua[y�9q�q\�Q��0\�),�qrq\�4X1ǰ\�Al-l!c:\�\�\�\�̸�R��g3�ۆ�m�.\�\�- ���\��¯((�\�\��\����\�\Z\�q��\0Ւ��&\�\�2�\�!��BU�\�\�1\�FZQYha�a i�\�a i�Ym\�i�Ҕ6�\� B��\�1�=�<\�\�j\�����k�r�p�\�\�쐲#�T|� �qSg\n�V\��Y�éSn�\�\�Zr�g#��S��]��K�� t�7Y�Q�ҹw\'�X���� �����\0�tsXR��`Vҟ\��\�l\n<Vū�T�[�Ǔ)Z�Z\�\�r\� �Y�\�Q�\0^2��\�B���\�\�ʲ�\��\�\�\�\�\�\�V��E\�jd%\"\�ދ�h�Cp�\�/e�� �RW����� \��\���\�?9��\�',6,1,'','','',''),(19,6,0,'9305bf00cb1412b6','19504305895bf00cb14111f611783866','2018-11-17 12:42:25','2018-11-17 12:42:25','','','Profile Photos','person-300.jpg','image/jpeg',300,300,11007,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/�\�3\�\"u\�OX\�G�X����q\�\�ڭ�/\�+�xߌ\�[VJ$<Fuݼ W���\�ȁ}�\�\�\�ˌ3$xI�{\�>�+\\�c|>o���b_j�\�m\0�&\�Q\�<\�E\�-�A��Zv�\��� ��Ɍ�ԏ.y��\�\�M+z\�Ga�\���\�J\�&�\�\�Q�\'�۫\�|0�\�&G�(\�p\�<\�s0\�\�z�y|�r\�S�h]\�\�n�\�H|j=[P\�`vm�\�P�YE�SGM�M���\�\�\�$��\�h\0S9�\�\�J\�LJL}X�IQ�C\�$�k��gD̛�\�:�ռJ�t\\WU�u}A�\�L\�JsC\�V\�m�؂P�b@�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1>CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�9\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�7\��`\�\rf�\��a\�\�#�\�w^\�s\�\���c�\�j^2\�\�|\�����AaB\�vN�\�g\�\�1�ʋ�,\�3Ŝ E!_��\��=�U\�;\0\'u��\�,)E\����%�\�\"6@M:��\� QH�Yy���Y\�}b\�\�υf���\�\�_\��\0\�OE�m\�1):\�\�t\�^�\�y{l�c\��d|��4ͮ|r\�ņǝ&���\Z�s�\n[\�\�l\�DGԃ\�\'B\�lzu\�\�J���\�(I�]���u\��\�l\�@~d�ǐ�BR7[��Vռ�6`,z\�\�X�׵\�\�\�\�}�\�wֻFٴZͼض+ɧ�����;\�α��%\�<�RNG��#�\�>\��n1�|l�߷����\0�=�\��x\�?�\��S����g���\�{�\�KI˵\�\�=k\�a�&���\�\�\��S(#x�\�kY&�N�\��\�97�m\��Z�����Y��\��ڨ�uE���(�@�8��b���\�{\�٭\�\�\�sݜ�\�v~�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\���&\Z\�΍o\\\�9A/0\�p��4��\�xF|i\�\�C\�\�uXm.���S4Uq\n�\�ʟ��\rM\�%rV�\�[�\�\�<��\�o��]\�ضͮ�Ve\�\�[\�\'\��dك\�\�2<8QF5Ѓ\Z��4X1�\�G_�\�s�s���\�4OKW��v_x��ڍ3\�\�~9��N���\�\�\�B��2�r���\0���!���t�\�\�D\�E�u�\�+@\0E\0cF�F��<p\r�p��\r��!��\�ֱ�n\Z\�\�\�2\"\�\�\��ǫ\�>8�72����\�\Zہ\���e%\�\�>\�ԁq\���^�cog/\�o\�+\�ɘ\�e\�dw�J��w�OŷGi����{oq��5\�Ϗ����c�\"rL:\�!�\n�����e\�B9��1f\'�Ө/��O\�gdcB�{fDM��&\�\�=��؆k*�e\�\���~v1\�c\���\�i\�\��\�\��)�\��#��[H�<�|��nږ�VV\��i{\�}��I��L\�Kf 9\�#\��򙿍KrԷ\�8�6��P\�\���1�\�\�XW5�\�\�#ᬙ\0\�ـ�Dx\\�m#>\�7.\�eDDDDDDDDDDD\\d \�2\�`�&<�)� cf2琏vp\�1�\�\\��8k�\�9\�1����M~C\�\�\�ҵ���|բ\�\�9�Ug��{\\����v�0��5�\��U,SH� x��&B|\"\\X\�\�t\�l{\��\�\�\�_v���\� ���[\�;d卮$RH�\�z\�?a�!\�8 \��dmf�D\�<+��n�&|\�2\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�\�\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�dJ�>\rm�s�1�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���\�\���J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf�`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8�R�\�7$ș>�W n\�I�#�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W�p\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�v�mw�H0�c`\��5�q�7֑���F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ\�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��ߣ���\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J�\�pI_Xa�óuA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i\"J�\�_0\�\�{\r�kA\"\�{�\�\�jwƯ��X*\�Z[\�m3�Ɋ\�\���\�\�l�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�_`F5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\"/\�u�w��\�1�p%\�\n<�9~3��G��-~XB�#��]f_��#f\�N�t\�S\�+Mk{3��7b(�pZF\�k�\�&\�{;�r �]\rE���\�8\� 7�0�!\� /-DDDDDDDDDDQH��p�D�V>V�,�g_����Z\�0�c��}��ƒd��\�b\�x\���m�&)\�<�# ��E.OF�\�:�\0\'܇�<Y\��^�\�6\�?�>#v��\�Bp��\�\�{\�\�5�nq\�<�8g\�\�DDDDE�/Q�/j�E\�׺\�l��\�\�}�~rY[�g��0@\���\��G#�֊3O�\n0�\�\�8���\�E\�\�ϞX�ӕ\��;���k�/*�|lÍm{�]\�\ZuT�;��\�˹���x\�h2�C�26dF�f�w��ԝ\�\�dz\�|\�?�\�S�k��0$\�C�\�y&\�K�l�b��X��|��\0I]�f<�|�����U\�t]�f\�6ڹ{V��\\\�5,��ҩ�~\�ME\�\\���dW\�C�\� J,�.\�\��{;=}Iқ\�Z\�\ry�\�H�<�D/q�&�\�1 �`]}���\�\�0\�07�+>�JI0YNJA�L\��\�\�p�����/\�UZ�t+]�(��}���\�|@�ȣB\��S�\�:f�{\\\���Vtٻ$��<��>ql\09����O\��\��gAz<V\�-i���\�g\�\\��2K[�-g���8\�G)3�P��[\��6~+�{�\�U\�˪<b�L��������������Vx��\�?!�\�T\�ov\�#��h�\�:�\0%D\�k�MQ��\r�`2X��\�kc>E�ę;,\� pa����n�s!�\�\�.\�f\�8\�\�a\�H����kaW�\�7�\�P��\\\�B�RX\�e�M,I�\�C�^�\����q\�+\�R�3X\�+X\�hdF�)�}V\�M\�q(8�\�\�cDW5�\� 7�\�c�\�c\�w�|㳬��\0e�\���\Z�iY�밚9[��\�\�ck���Z�s.u��\�G9\�x�\��\'J�aΦ�=�\��v��{Mʙd}��v\�\�أ�2L\�\�V�.�h�j�Hh���\�|�<J��&\�e�+�>q#�\��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0���S\�2����&�\�.�\'\�hN \�mSfǩ�(\�5��\�ljb�1�F�ƍL x�\�ƌ \0F֌A\�шCkX\�5�cp\�c ���\�x\�\�|�t{��@\�\�\�\�xF\�x;c���\�#\�\�(\�\Z91�1��6̋\�*}T�Uc#8�*i9�w�\"\�6\�1\�\�b\�Kߴk\�\�\�׫\�\��{:k�\�\�2b��s\�Vg8i�̊S����L�r\0rt�h��o\�\�Oc�N~�n\���\�ԇ���v\�\�i\�Wg��>E\Z4cQ\r`\�#�U�b\�G���:4\�9t\"\"\"\�1�E� �\0\07�\�3\� �\"n^B��\�X1��s\���\rcq�;8\�3�Qw�\�v\�\�/�;�k��u��6\�\�\�c��\��g��Z�\�~����2noŠ�L�Z64Y)g�\�&.#��\�\�\��-c\����ߩ�c��J\�皭I�\� \Z\�\�Ut�\�$�\�o̸x����\�(,cB\�+\�Ǫj�֋�\�i\�u%n��\�u��(��\"�m]t1\�q\�Ŏ,a�c�w;?\"�y����{�\"\"\"\"\"\"\"\"\"\"\"(J���瞵\�\"�Y\�\�Ys��[�\�\�z�s\�X��\�7*�\����\�QHi O���i�G��=n����^7{\�ɾ8{}\�}�\�d�Ԭ�G޵܋\�\�\�7\�\"�w\�?̯\�\�έ fS�C6\�]Q*�s+�.����َ\'\��c�Ka���\�)k5\�%�;-��c��*.!��UsZW\�=�]�XVQ �6\\(\�wՌ�DDZ��\�Vg�\�\�\�g��nըu\��H.3\�\�N�k\Z�m\�\Z\��8�#_\�\�7\�\�D�\���^lٖS%\�\�˓>\�|�͝:i\�*dْ��ʗ.Q\��ȓ \�y�s=\�1^�\�{���\02�\�]ӊ>���\�S2�\�w�\�Ճ��&ma*�q�A�Z�KȦM�Z�\0`Ћ�\�L���\���cߚ\"\"\"\"\"\"\"\"\"\"\"\"\�0C(&�$\"�\Z@��\�aB`��BaaF9\� \�ܱ\�\�Z\�g\�U��n�pwM{ˣ�\'��Z�\�F��r\�\�T\�cck;\�\r\�L{\��\��\�\�n\�\�b\�b\0�i�&ۘ��ml$�+�k~�N\�s\�N\�r\�P��ϴ\�\� \���+Z�)3!꼉�\�\�M=t\��\'\�P͎�a�ͭc��\�I���V\�:\�\�\�DE�?S\r5\�\��\���&n�s=��\�\�t�㲽a~9ǴsUF�\�ϻp\�\�.\�p��^�\��U\�G)�q��v.@\�h�!� fW[\�u��b��x\�\"H� �aA�n~7�\�ñ|\'UWQ���OQ5Օ���\n  �X\�\�b ah��5�kq�\�\�=��\0�]��9\�{�\"\"\"\"\"\"\"\"\"\",h\�q��\�*\�\�8q\�ku�]�e��br\�o�\�$\nw6s%\�@�\�H�\"0\Z�>@�\���g\�m\�n2�zη�.vl䭐h[XNՁf\�e�\�Y3v�.\�����X\Z얺+s��2��T\��]�t\�\�\�K�}\Z\�c]\nª%�v��\�ݎ=@�\nh4䷱��\�\�5X�\�G9{�`t\� I\�\'\�Ɗs\�ܧ\�\�\�\�\�%r�\�\���jH3�ܭ�F�ڷ�*,�\�\�J\�7Q���*\�<�F�]\�6@\'�dcJ(C\ZO�X�L�\�1\�3��\0\��>i\�g/\\}���\�h���}dF\�e}xN����\�\�\�K\��R>�\0�r\'X\�$bO�9Y\�\�N<`�v�\�\��d��\�[\�WH\�=����dș\���\�Xg�����\��\�o�^4!m�\�7 �G�ދ�v\�}�\�\�\�\�y\Z�(5gض�K9q)`�������̰��8�5�ǛcȈ�\r|�p\\�\�tO�\\ ��,��ڲ��{\�oi�\�6��fXL>@l���\�\�;G��79v(\�\�h.uK�\�[c��O�kWT\�3�̫���j\�J\�L\�]�I�:1\��s�҉�\�s�{�\�\�\�$7��\�o�~E[����X�!�84{m��\�!aJ\\�H\� B!�|Xǻ8no�\�\�h���{\0Ñ\�P֭�H�\�%�4)��7�9ÆP��c��\�\�v3�\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $K�ca-\�#Ǝ\"��\�s�D&q�� �j�x\�{�xΉ\Z����jó\�p�M��8��;�#�4���\�j��b��\�b�?�G�\�\�Ŵ :��\�y+\�lZ:��\�k;Ȳ$f;lm�\�\� �Ξioc\�\�&��T\� X[8qy���)lA!bTh\���GW\�\"ֹ_\����O\�~�\�p���\�I�\�\�\�\Z�\��-\�i�m�\�\�c1�� UTVP&J���>Z�w½y\���\��\��p��U� \�\�y�R\�\�\��8\�2�$g\�\�J\�$��\��˟�l{{\Z\"\"\"\"*�}Q�-l�?݋~\��ޱ*[{o}o�\�\�.5f�\�\�2{�B\�\�8�;��m \�ϗ>Ćي\�Ɓ_y�\�W\�#\�\�.\��\�\�\�JM���P\�\�h�ȸ��y���\�\�E��줟8��m�\��\�R\�5�$��\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ\�q\n�;�\�\�\�M�^(ѽ\�$��0���eK^m<\�󟕎U�֨\�n�\�:��\��A\Zk��J\Z٤}~\�ȟCC�k\�\n5��$\�մ� /�O�_�Kŗ�\��[\�AqO \�f��\�8�K�/\�%\�\�x昙\�~\��X����\��\0\�\�Y\�O1\�\r.\�W\�\�����\�\�\�0\���F\����\0�y�a��?%�5��|\�a�~q\�gI��TV:5D\0�+\�F��]��\"\"\"\"\"ž\�t��{\�׾@\�o?j\��m}�,7��k�u�qe�)�Z)Xp\�@��� [(\�H�$2b���@\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zxq�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�\�Ÿ\Z,�ʋ&9\�Q�FT\"\"\"\"\"\"\"\".�(\Z0�\"D�`@\0�!�c\��!�\�!汌k�\�a�\�UR��\�2�=�\�\�[�gf��\��lvZ\�cF!�C\�.J����\��y`_:��\��:М\���$&�in\"�W���\�;y\�ɧfu>�ptC|�\nӐ9\n\�)�ka��\��[i�h�\�\�4-(5�p\�\�\�-~�ΗWT {ʛ�z/Ѿ�\�ם/��}ա\�\�z\�l&^ߺ$q\�[\�\�8\�e�ݵM2I�ֲ�\"[��Q3 �\\\�\�\�DDDDDDD^a\��+Ľ�\�\�Ú�\�R\��?\�\�\�U_j{�4K��\Z���fF %\r\�d \�Ex\"<Y\���\0���\r���38�m��T��\�Ii\�7�y�\�\���\ZQ\�\n�c%\�]�Z}��D\�:Y.i�!P�ԍ�t�jc�~\Z�J�#�\��Qu�co;\�h��\Z�֫�軬B�; #h\�\�v�\��lh��h �\�@�|�A�g�o\�G��\0$�5�\�7\��\0.q)j\�\�n�\�ē�\�[]Œ(\�v`\�\�E�\�5�L��͉I_s�\�2xF���\�\�^X�x\�\�y�\�sm�\0d��S$f;M��=�\�igN�]#0�-��\�a[\�hB��E�ưF�?0\�O\�?�_}��f�\�\�\��;<�\�\�k�� c᫛�����m.P�\�Il�[�ȗ\�6���\�\�sqlZ�\�\�]g�\�\�\�X\�5��կ��,{񜱎�S.\\v�\�k�\�\�\�p\�\�϶WfDDDDDDQ��Gy/\�Fza\��{�����j\�n7\� Sr꭛Qп\�\�܅\\�vא\�[ �����)O�\�P�@\�cj����������������QMMQ\nM������C�����#L�a>a�(�,�RJ \0O+\�\�\�\���EA\� ��\�}���_f�\�\rv�\�;TH�\�y/�3S\�j\�\�,���ӨgÃ!�ulK[\�X^���|\�\0n��r\� ��=jS�.m\�\����H�\"Xj܉�\�m�R�Kk,���66E,c`�3\�d �����1d�?\�\�Geb\�\��6�#�<\�(��\�j� �\��c��~��\�/Q+ \�I�\\M2���������0�\�\�Sw�_O�`\�8\�?$rg\\\�o1\"\�!���u\�s-\\Ytⰻ��i\Z�\�\�:�����7\Z�\�\�0̬���,\��Z�Qq�po�^�w��Y\��~�4\r{F䚢\�r�\�\�D���œ#J\�.,X�3eM��|Ղ%\�\�;3ƃ1aR#��0 6& \�ADn2 �˘A��Ø�\�-ss�79\�q�Ȉ�����)�@w絞W9w\\l\�B\�m_\�q�[I�Q\'9.˵lQ��\rE������\� ɝ\'\Z\� (��A������\�Ozfv��)d\�\�^��f\�J\�\�k\�6>h�\�\"\�\�t��\�\��Q6f\�iZf �q�\�\�~�\����}r��\0vOG�\�5{&^�q�\r�.��:)cD\�uv\�*m���k\�\�l�{�\���J\Z|�x\�\�ݩظ�\�O�\�,\�m���G�H\Z.N\�\�Ipc\�W\�`� ��G\�*6ڑ\�2\�\� B�kW�M#ҵ\�b\�\��~;;Y���\n)2��\0\�;4�>\�u:�}�4��\�l�b\�o\�㽭��w>\�h��a\�\\@خeN��\�m;�yKn�wF���\�ﱂK�:9���;1�\�q�8O�\�5\�\�2ܷ\�Ƿ��������7�\��\�#��r\�o[<�\r\���m��u$bs\�\��VJ���s\Z�7/~q�Ͷ~�\�kK�Q\�\�%i&\�\��Qd7�\�ā<v�}=|\n\Z�ÐBb)5Z�z̎?\�I#�đCa2y\r!TDDDDDDDDDDE�\�=3u�%}\�m6���|\�\�u�\\���9���õ\�u���R5�\�sF�\�\�}�V�K �J踜�T)\�\\�ɽe\�\�\'���\�\�|�¼�Y�U�6Us�6�BᅑK\\\�V\�29dD�I�Q\�,W˯5�<\�g8\�\�\�\�/s�{\�~\�R�q\�\�\\U�n6��<2ȣ\�,\�\���x\��\�\�΁f\�<&�����)����l������\� �\��?�\��r-[���N��\r�~>܇\��o\�EJֽ\�i\�v\�\��\��\�\�\��sK\�\�\�k\��4�\��Ȝ�\��,�D~G)\�\�vʊ610\�\�;`/\���-w\�\�\�ٽ\�C\�(�\�I\��-jh\Zv�Q�\�ĉQ\0(UA9lp�\0�7���\�e\�#\���\�s\�\�QS�\�/\�\�7L<�vM\�7ꜻ&cu\�l̒>��:\�\�\�ǒ�d\�f\� c�\�\�X0�,5�#2��Z�n�&7\�;o\�9\��\�V��}\�\�r\�\"ޠ\��+\�W\�\�K� \�A�ߜ\�\�\�^\0���\"\"\"\"\�O�=2^�\�S�:\�lSM�\'\\��\��c\�\�Dz�����<e\��)�$\\\�\��ۃ\��\�Ƒ�_�0\��峣\Z=�8��\�s,����c6N��\�\�\\Do��\�`Τ�8ek�; <|\�\�t�\"\"\"\"\"\"\"\"\"\"\"\"�\�\�ƚ\�g:W\�U�`\�\�C\�\Z�\�q� ���\�ͧ;^�S��)#U7r�,`�\��\ri0�\�q%\�\�\�=\�.:W\�W\��\�*V��߳�\�\'ղf\�>߾Xǃ9Ǿ}�x��\��\�icoq�Pn\�N쎭\'\�\�p�% \�x�V� ԭe�Nr\�g$v�.��?���\0��m�\��5����\�@!�k\�y�\\�����\�\�i\�\�\�8�\0# HL��yB<g$#\Z\�}p:\�{�{�;�\�\�jJ\�Mg\�\���|�_Q��X\�ɿd��2c$��\�p\�dyvsGѫ����]Ƅ���\�n�d�M,\rYK�R\0�\�\�\� b@F=�s�\��1�l�Q��\\N\�Na�칭�ż�\�o�\���[�9o�\��\�\�l{��{~\�_I\�M�̷\�F\�ic\�;��O��&�\�B\�k]���p�a�\�~sX\�;\�\"\"\"\"\"\"\"\"\"\"\"\"(Lz\�\�p^���\�\��\�\�\�U�w����}���\��q����{�\��8Y\�\��\�?\r:�\�ny\� ��\0[#\�a\���\�\����\0+��\0lI\�um\����´�\0\�Xj\��K���� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���ai\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���F�\�/�\'c\�!\�h�\���\�\�L�\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\���\�V\0 �� �RDDDD_\���Al(�\� �#Z�onZ�\�Z�=�\�\\\�c-ss�g\�s�\�L]z\�2~q��9�(# �\�kc�����\�1�ٍ�[\�lc9���S�DDDDDDDDDDDDQ��`�\�\�e�\�\��]ό\��r\�p\�#|��\������\0�����Xj�B�\��1fWVx�\�\�\Zܘ֔ ���8n2Be�2�{�\�\�3\�X\�m�\"\"\"\"\"�G�m�C�\���\���\�\Zia�<\�\�w.X坲\�\�!=\��c(\�\�|\01�\0\�l��\"\"\"\"\"\"\"\"\"\"\"\"��~�\��\0\�gi\�V2�\0�/<9����\�\�\�\��\�\�\��E��*V[\�?\��\r�#�\�\���ĉ\�K\��Ӿ���\0�\�hT�\��v3����DDDDZ�\�\�qO��.�\�*��\�s\�6RZC��l �(�\�z�q`\��n>�\n\�^\�d<e\�\�Mk+-n>Ns�ƈ������������\�c�\��\�c��?PfF��h\�\�\� [(p%�\� \�\�Gt�ı$3�0\��3?�ɇ�\�_\�=8\�<,��?��ڄA\���,\r^�Q0\�?710`x�ȱ��\�k\�\�\�*|*�f��uՕMdx3�)��w$?g\�c1�&\Zs�\���ۂ�\�\��\��_\�}\�DDDDDDDDDDDE\�7=F�|\�\�u\r�e55\�\\C�ѕ\���|a�x\�\�\�\� 3\�\�=�ѡ���Q\�kՍ{+hjk��\�Ga\�d\Z�a��{Z\�9\�\0�; n\�g8kq�c\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/�\�',4,1,'','','',''),(20,6,0,'9305bf00cb1412b6','19504305895bf00cb14111f611783866','2018-11-17 12:42:25','2018-11-17 12:42:25','','','Profile Photos','person-300.jpg','image/jpeg',80,80,2354,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0\0 \n!#\"AB�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�\�\��7��M�\�PCm;\n\�f˲�\�A�\"&\n(�\�\�\�z\�r+\�\�*�������N\��1dVq��+:}\�w�N\�\�z/۝ \�\�I�̮���֩�\�uJ�7\Z��I��A�\�y�\��d�2m`\�^�N|HKFow\�n�R�ɭc5mö�0�\�~�S��r\�\�\�t<Ŏ8\�M�i\�-2\��C���z*�\�}\�\�`�C\�_��\�qț\�\�\'�0\�g�(督�v\�\�pQ�aYV\�[=��AXFR�\�\�Y�\Z�p�|6R�����Po��S�z�\��\��B�9d\�\�\�V�؛�����jl.e6Nڔ\"S\�\���pσ��\�U�{\r�<���є\�\�*�F�@�V�Ԙ��:�W�V`�b6�]���hX��\�\�F\�G�8a\n\�\��\�hN�c�sѿ7�?�\Z*GLn�.���{^\�m}k��Y(IF\�s(���\���#\�#Y�+{|2���&%hZ�\�OL��~�\0\�:\�vڗ-���\�\����E�\�;=����!\0\�DZ�\�vW\�^���Q\�\"\��5y\0\Z\�G\�ل��J �]�\�٥\�C�����T��\�\Z���iR.!-:eZ�_���>�(q԰J\�d��H�qya�\0\�\�T��9\��\�\�/�Z�Ź��\�潩D��O�\�\"f4D�\�r�R\�wDPm5�-\�\�\�]P���>A\r���+\�s��њ�K^�_\�z\�A\�t\�n3�V\�)\�ٚ@��.g��E0{�H�\0.`F�Z��P\�qi7�k\��\\=����4ą��םL\�c\��\�+c\�\�<l�\�;F�\r\�rV\Z@`\�\�\�yc��\Z.\�\�9�S��#d�~\�}oՕ\�yk\�߅�\� \�\n�\'\�\�S\n�g�Y�m?�\�\�\�s��%��!�\���a�B]e\�]F[u�Z^�q\nRBӔ�9\�U�\�9\�+\�7V�7\�C\��\�κ�JX�Iy\��9\�2\��a\�Ȓ1� y\��5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#����#�\Z\�/j�\���\�zv\�o�D\�!\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�/4�����mϵXћ\�g\�`��v��^�wP��E�V\�\��(���A�vN��_\'�4�\�A;�a]]\�d\� �@@�gñ�\Z8\�x/g;3�:y�vc; w�\���ZC.b\�>\�\�ΩN h\�HH\�\�&\��O\r^��m\�\�K1�R\��\�\0z�\�?W��\'�m\�\�r���`�\�Ƶ�D\�*��\��Z��.�4��.\�D\�)&�\��Z\"�\�1yȐ_\�2\���e��ǧ�X�v:�r\�^*d!!ܭ��;����@\�3�\�=�?\'�kR\� \�Fq\�u*�\�\"�ˆ0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O��caY�r\�]��C\�(��%�g\�F6�X�͟+�\�\�\�a0Qԫ$]#cJ4 �\�HZ�&f�:\�dפ3b�\�\rs`*�\�%IZp��\nJ��%I\�2�c8�\�q�|\�8\�?�g\�qϞ8\�~�S&�S���\�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o��^�V��po9�\�k;:\�8�4\��\�*�n8���j\�`�d|\�һ���i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��^뒠\�\��*\�2p\�\��v#f\�~\���\�֫\�﷤�B�/�j��\�U�)����^��ĉ�,y-`\0$|kk�ם:4�����\�0\�Mj8�Pߨ)\�\�(��Y\�\0-yVQ�ې&E���\0�@�>,�\�>�����\��\�8\��\�c\��K�����?��\�m a\nm3\�;sR��$\�%Զ�\�*ͭL�԰\�\��\�M\��q\��u�a= \�^�LrE\�} �ĚXRra�]�ޱMd~4�\�D\�e-�8\�\�eᲬ6�[§�q\����t�\�\�\�TB��:�)M\�a����G`t�\�+w\��0ٍ��\�XC�o�K�ˎp$Q�K\� vY �3\�%�\�K㈲\\��\�p㌌ᅸ;KVP\�\�!M�*y̫��8\�u��-��;99��\r��\�rB}\�^xt;����^�o�V�ZR���9\�g��\�',5,1,'','','',''),(21,6,0,'9305bf00cb1412b6','19504305895bf00cb14111f611783866','2018-11-17 12:42:25','2018-11-17 12:42:25','','','Profile Photos','person-300.jpg','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYjm�_HL�٤\�nj��\�\0�r��3_\�\���M\�0�n:zE\raĶ덐�YoU\�\�\�G���`q�N�ښ�L\�\r�oMgKSmϸ$�Lݫ*�쵞$ƾn��\�`�aH| �\�\�a\�\�a��{~\'>�(: �+��j�o��6;+\�Ya�>\�U\�aZ\�\�H�bqc1oz ���\�\�iق%a��\��-��]�\�o)s\�^\�x[�-4й\�\�\�;��\�jT[���P\�lQ\�\�-�-\\v\�$�\� �g3N�]c\�F�|J���^���f<�:Ī\�u m�Y��ȬƼ��1[\Z�,En֨E��SpRƆ�\�AKp����\"K5�\�c��\�\�k\�{�\�=�z\�\�e��V�<\�}O�^�����ԋʜ9E\�\�!\rf*9ʱ\'9�4n�T\�+NS?Ƈ�!���j5X\�&�\�<1)d\�-���\�\\u��)_�\�]�lQ9���1Y\�¸K�!�\�\�`5��R�_\�\�\��y\�P�\�Ұ �\�h{G\�\�1ԏ P�\�\�\�ۦ%�<\�U0��]y?�gp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�۔…�a�\�\�a�YXj[�G\�ؤ\r\�0�\�B�\�<\�\�uo���y\�j:齟����!5\�6�O\�\\�D���|���@�<F�K9�\�i9q\�\�2ێ�gKw\'c�-\�`k\�F\�[�=𮻷Mk��\��Hĝ[�\�jf\�Z��߲Wމ���X\'X�U)�F�87&$Z��4��\�\�X\�\�z���θ�܍�F�S��\�\�$Zp�Z��\�F9\�\�6\�8�%�0�8Y+ßg\�ʧ��\0[�W0\��=x�\�}g\�ۂ7sh U\�8\�]}<��&Ѯ6HQ8�\08���h0YT��/c0Q\�e\�\�}�\�}��6P�[�5%�ZR\�\�x�;i\�JljmO*S삩;�\�jcFk\�\�\�s`���W#s� \�Ua[y�9q�q\�Q��0\�),�qrq\�4X1ǰ\�Al-l!c:\�\�\�\�̸�R��g3�ۆ�m�.\�\�- ���\��¯((�\�\��\����\�\Z\�q��\0Ւ��&\�\�2�\�!��BU�\�\�1\�FZQYha�a i�\�a i�Ym\�i�Ҕ6�\� B��\�1�=�<\�\�j\�����k�r�p�\�\�쐲#�T|� �qSg\n�V\��Y�éSn�\�\�Zr�g#��S��]��K�� t�7Y�Q�ҹw\'�X���� �����\0�tsXR��`Vҟ\��\�l\n<Vū�T�[�Ǔ)Z�Z\�\�r\� �Y�\�Q�\0^2��\�B���\�\�ʲ�\��\�\�\�\�\�\�V��E\�jd%\"\�ދ�h�Cp�\�/e�� �RW����� \��\���\�?9��\�',6,1,'','','',''),(22,0,9,'9305bf00e7f8a224','53312796025bf00e7f82e82896954942','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(23,0,9,'9305bf00e7f8a224','53312796025bf00e7f82e82896954942','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(24,0,9,'9305bf00e7f8a224','53312796025bf00e7f82e82896954942','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(25,0,10,'9305bf00e7f924b7','95550517915bf00e7f84cd7979805449','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(26,0,10,'9305bf00e7f924b7','95550517915bf00e7f84cd7979805449','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(27,0,10,'9305bf00e7f924b7','95550517915bf00e7f84cd7979805449','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(28,0,12,'9305bf00e7fb7439','73148550885bf00e7fb1447228602212','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(29,0,12,'9305bf00e7fb7439','73148550885bf00e7fb1447228602212','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(30,0,12,'9305bf00e7fb7439','73148550885bf00e7fb1447228602212','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(31,0,11,'9305bf00e7fb6ff3','11822615065bf00e7fab8ba088168210','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(32,0,11,'9305bf00e7fb6ff3','11822615065bf00e7fab8ba088168210','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(33,0,11,'9305bf00e7fb6ff3','11822615065bf00e7fab8ba088168210','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(34,3,5,'9305bf00e7fdf2d2','15820583805bf00e7fd7909940374120','2018-11-17 12:50:07','2018-11-17 12:50:07','','','Contact Photos','3.jpg','image/jpeg',300,300,11005,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`>V�\��<|\�\r\�\�Rľ\��\�vM��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\Ή�6�\�u\�x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7�\�+�\�,;:\�\�<Լe����\�KM�…�\�81f\�-��cM�Y�g�8�B�\"=;}��{.��v\0N\��U�XR�\��EFKi�Dl��uW\���(�*�\�l���(����\n\��ò�\��\0����\�\�bRuۆ\���q���\�\n\�\�;,\��q�i�\\�屋 3�:MUd350\�\Z�/Ř٢\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"���\�N�\�\��멶���c�P���|k\�\�Y�\�΀�\��!Z��n�M8��x%\\l�<X0����]�kٷ���s\�\�v��h��y�lW�Oeouodwɝcc:K\�y2���!JG\�9\�}�\�\�c�\���o\��\��\0|{\��������\�\��\����{Ȗ��j3\��\0�zײ\�0Mq\��\�9f�PF�G�ֲM6�#\��<roۓ\��a\r6�O]�\�P)(\�\"�\reMdQB� q�\"\�!\r��}�\�|��=\�˜\�g\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"-@���a���\�\��\�Ô�\���\�\0\�cJK�I��gƞp>D<>�U�\�\� \�03EW����\0�\�\��W%o�ſm��\�]\��\�;\�\�͋l\�\�\�f]�ռ�|\�&A=�1\r�\�#Å`�]1�\�\�E�<qtu��\�?\�?\�\��XSD��x:ge���\0 }�\�>�㛑��\�ؙ|~N\�*Yc+�+*�a� �j�\Z?Ћ�K}��$L\�Z\�\�Q\�β�\0P4`�4h�#\�\0\�G\0Y��!\�шBZ���k\�\�n�as\",=\�|z�\�\�#s/ky�q�M� R]\�S\�-H�kiu\�66\�r�������f\\fGx$��\�7z\��[�\�v������F� ^\�l���{\�\�\�\'$à�H\���y \�^�D#�\�bz\�:��Xd��vF4/��dD۸\�l�3\�͈f��]\�\�c�\�>��6��~�\��\�2��ϱ�8ke��\�ɇ\�\�6\�k�enq�Ɨ�ˠn�\�g/1�كs\�F|�\�<�o\�Rܵ-��&ͤl\�;v�=�|;�r\�\r\�a����k&@1��`\'?Hϛ�c ��\"\"\"\"\"\"\"\"\"\".2a b0BB��\�1�s\�G�8k\�\�.{ݜ5�\�s�\�\�UFަ�!�]\��?�\�Z\�\�\�> \�\�d�\�ƪ�\�\� ���IK\�[�@\�QK\Z\�m�_��)�X<}M�!>.,bb:��=\�\��\�䯻|G\�jO��[Z;d卮$W\��\�z\�?a�!\�8 \��dmf�L\�<++��n�&|\�6\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�S\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�J�>\rm�s>�)�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���X\�܍J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8 9R�\�7\�ș>�W�n\�I�#\�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W��\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�|0mw�H0�ch\��5�q�7\�\����F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��磃��\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J��\�pI_Xa�óqA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i!ʾ\�_0\�\�{\r�kA\"\�y�\�\�jwƯ��X*\�Z[\�l�3�Ɋ\�\���\�Il�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�YxF5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\".\"u�w��\�1�p%\�\n<�9~3����fZ���3\�Gc4�\"̿zF\�ȝ�\�Ƨ�V�\��ge8n\�Q\0഍�\�w�M��w�\�:�\Z�+C\r�q�oaC\�^Z������������\�\n\�(�\�|�$Y,οsOl��a\�G.�w�$\�#\�3\�\�=��\�)9p\�\"LS�y0FAU|�\\��\r�u�O�Rx��\�c\�m�f|F\�ceԄ\�\�9\�\�0���kr\�\�;�ynpϕ������H^�^\���ït_�\�\n 9�3\�:�^�d��\r\�\�\rMt`��!M����G5�f�$a��qI{ҋ\�}��<�q�+��w\�]T\��^U\�mp�ه\Z\��^�\�4깂v 3/��ska��\�\ne�.dlȌ)v\�\"\"\"\"\"\"\"\"\"\",>\��Y�;�\�\������8�j\�!`I��u��M��P\�8\�hh�1����\�y,�G-n��\�Vͤm�r(��7`�\�vjYyeS\�:������9 ȯ��&!��Y ]��\��vz���7���\Z�đ�yL�>^\�~M\�\�b\����a�W��a�`o V}z��`����6��%��\�@_֫\�`�n\�V�>Q7�;\���e�F��\�c\�t\�z�����\�vHn%By)Bh�`ϯ��~��\0�: \�\��)\�M�\�gk?J\�\rŒZ\�\�k<u���\�\�9I�5�u�\�m]9��_�\�\�b�\�]Q㔒eDDDDDDDDDDET7��Ǭ��� �\�]R�cxs�1ȕ�E�\��*&s_�j�|Hm��\�\�X�-\�$\�\�g0c�\r�`�u{�\�~\��\'<6\�\�s�D��G\�{[\n�?m������J�\'�\�ʒƓ(\�ibM&\"\��.(\�}w�xÏ9_R�f�\�:V��\�ȋ(SB����\�&\�Pq��\� ƈ�kY�ok�\�5\�Ǡ\"\"\",.\�\�z�7\�gY��\��\�+\�5:\�3]\�a4r�=\�o��\�\��-n��\"\�\\\�K3Ďs��\�\�F+\�N�,ÝLv{o\�\�\�0���2\��_,\�o�G\Zd����.]�\�\�\��\�c)k��|x��\�M\�\�&WB|\���� \��O��ӕ����_Y�Q\�n&\�\�\�i�]ג?�mݪ�ɕvd�4�\�u\�8�d3BpOsh8�6=LQF٬\�<H\���0E4h\�`cǎ4A\0&�b�֌BZ\�1�c�\�\\Ȉ����������/\�\���\�\�܅\���w(\�\�6��\��}�\�y�!G\�Ɍࡏm婶d_iS\�J�\�\��SI\�\�s�����&k\�^��^N\�6�^\�?\�\�\�\\\�!�\�k�\"�9\�MdR���\�dÐ��+D=#~F�{\�s�\�vا\�\�n�<u�\�Ȇ\�N�<�q�(�(ѣ:�\�\�k���C�=��ʼnѦ\�K��(\�,�\0�\�9�\�!r��~Z��lk���\�k��\�\�1����H>Sv\�!}\�\���]���\�`ٶ.6\�m�<8w�=<\�\�\��\�w\�a�p{x�T\�N[F¦�\"E,��\�d\�\�wV�}=�%\�|�w�;�4\�us��]��U�#\�u�a#XB���Α���;#\����\�1u���hB��`;x�MSZ\�u�M;N��\��}n�5EDaî���<<X�Ō5�cq\�\�g܅#�b�\�#\�\������������������\�F�ȧVt�\�\\\�\�\�g9qޫ\\�V<��D+�Mʾ�Dn\'�R\ZD�\�\�o\�G�h\�\�\�[���\�gW�\���o�\�q_i�\�\�)�+/\���w\"���q��\��B�+��3�Bٔ\�$\�ō�\�TJ�\�\�ˁ*\�\�vc����|g\�\�\�c\�u\�:\�v\�G,N\�e\��\�\�,���E`f\�\\֕��aWe�Bc\r�\n1�c �<�sՇY�q�7�\�\�[�jz\�\� ��;o��\�Ơs��\��\�#\���\���?��\��6e�\�v62\�ϰ�$�gN�rʙ6d���˔w��$\�;\�c�\�yLW��{�\�\�?̮�\�t⏨~)�̫t�`\�#ɛXJ�\�\\ob����)�bV�@4\"��2S#\�`�{<X�戈�����������L\� �I�F�\"\�0\�P�%fFP�DØA��s7�,{3��\�s�U��\�\�^�\������֪�Q�휇�q\�6X\�\�\��CqS���\�2���vغ�!�d �\�$�[ $�\�ߣ�\���ܵ\�&ls\�:\�y\�{/\�֧�L\�z�\"k\�6�O]:�fI�T3c�\�m�kXὶk�>ᕷ���uhO\�\�Myy῵��|�Ʌ[�\\\�||;9\�-�\�X_�q\�\�Q�G6s\�\�0�˱�*|נq=v\�\�|i�\\E$ꝋ�4\�+HB)Y�\��m|أ0^3�#H(�Ae���\�v0\�_ \�U\�|}�\�\�B\ruef��ƒ`4z��Z&c\rfZ\�61�\��\0,�9vs��DDDDDDDDDDDX\�\�>\�u�:U��\0\�p\�$\�\�7�^\�[\�\�\���H\�>l\�K�+�\Z�ؑ*D`5�|�aс\�Ϭ۠\�e(��o\�\\\�\�\�[ ж��;�ͬ\�cIJf\�D]�\�y�<�5\�-tV\�9 d;n�\�\��\�\�=���B�5�ƺ�TKZ\�O߻z�^\�i\�oc[[�\�j�\�\�\��ݛ�`bO)?4S�6\�8>�^g~�+�v~���P\�A�\�\�l�5&տ\�Qd\�>\ZVi��ŔyVq\�\�\"4b\��<�#\ZQB\�|�\�\�e�\0i�Y�\��H���Ok9z\�\�\rͅ�GǴ\�\"6S+\�\�\�u�̭v��2_(5������:\�#|\�\�\�x>�\�q\�S��V��<\�%��Rޢ�F1\�;&D\�\�\�\"\�?�\�{-��\�\�D�hB\�\�n�u�\Z;�\�\��gٷ�\��40�Pjϱmv�r\�R�sO&=n!WG�ai(q�k)�6Ǒ\Z�\��\�n��+Y\�\�)i�ekp��\�\�S�mA�̰�|�\�2)#5\�\�v��nr\�Qհ\�\\\����\�]&�`֮,�/�f3�WsO4\�֕ҙ�� �\nlc\�;0\�a��\��]���H:o)�\�f���U\�\r7d�+FC8ph�:\�9o�B”�`\"�\��B?8���vp\�\�\�\�\�/�-\"��\"֡�[B�\'a\�<K\ZhS#o\�s� �3\�c9Ú\�g\�8\�\�興���������\0��W��GB\�yG�w�k�x\�M��u�\�[u�Z]~��I&\\\� oA4q\�~s��\"!3���@O\�W�\�m��\�x+\�tH\�UP\�\�kS�=�W\nt\�\�\�ú\�:cHpQؼƯ\�6(/�\�+���{=M�[@ï_�\�g��\�ţ�o,v����\"Fc�\�\�^ͰȌ\�\��>\��hj5MR���\'�I�R�\�!2%F��\�x\��uq��-k���\�/\���请_��D����� �\�\���v\�n.�&3\ZH0\�UCed��z\�\�g\\+מ \�~�]�p�\�i�Q�\0�ǚ�.�^(�\0c��#*�F|�\�\��IO9\\\�l���\�q숈������Gx��\��\0v-�ǚĨ�m\���\�S` �՚\�3L\�\� Ps� \�\�bm���>d�f+G\Z|Q\�/�\�_L�{h��\�#�u)6yC���p_\"\�\�i\�\�\�_�\Z^���|\�~e�\�4\�eK�\�1䝵\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ�q\n�;�\�\�\�M�(�\�$�\� \nVT�\�\�\�9�X\�[�j�\�\�:��\\<o\���ġ���\�\�܉�49���ȣY��NM[Hp\��D���\��Yx�쏕�t�Fk\ZM�/�����\\\�7�i��g\�(\�\�\�,\���ŝ�\�\�\�\��\�[e<n��\���\��i�\�l���\�v\Z\���_#[ ��m��\��t�?UEc�T@�$jؐa\�\�\Z\"\"\"\"\",[\�WO�G�}{\�����f\��ڒ\�s��\�_�[\"�e���D �; Ų�.!\�I ��($G8\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zx2q�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�×\n|h�C*,�\�eF�P���������dHP\ZT�\n4h\�$�$a\0\0��1�G4b�\�<�{�\�1�s��\�9UJ��<\�\�w��w=n᝚\�7Tz��\�k������*�^kﶋ\�|\�\Z+8R \�Bsd����\r^\�6��px\�\�&��\��\��\�Y\r�\�;N@\�+8���q��7�m�\�$wO�д�\���K�/`��Ftʺ�[\�T\�{\�~���~�\�}u\�\��[\�ka2��\�#�b\�6A\�k-6\�h��M����\�ה���r\�<\�6b\"\"\"\"\"\"\"��_\�^%\��}\�\�\�z�\'��\�_*��Sܩ�]TX\�\�\�21(np\� ^\�+��\�\�G���(m�\�љ���ou��O�g��\�KO9�C\��;�\0Ȕ\�Ҍ\�T[.�\��\�\�\�&�\�\�sMQ\"��ls� Ss�\�\�U����z��\�y\�cG�\��ז�]\�E\�b�\�IG\�Ӵ�vN cEl[A\�\04��\�b �8��R<\��$��O!�\'�s�1KW_t\�N%�ޚ\�\�aF��\�-�ɯ�d\�>lJJ���8�\�5\�O�&.J�Ǩ\�\�ȍ�o�\'Ģ�#0�\�o\�A\�n�K:v\��Ym7�[\n\�C@\�ͪ,\�5�7\��ȉ��Y����\�\�5~(\�?�\�\�\�6��]\�([\r\\\�\�\�\\\�+h\�r�>�K`NJܖD�lF5�\�\�C��\�aշ]7x�\�=\'m\�w\n\�9�}��}U�Acߌ\�t��r\�\�\�]��$\�s��8\�}��:\"\"\"\"\"\"���;\�~z3\�\�\�݅�\\�\0\�V\�q��J��\�lڎ����>\�*\�ð���\�\�d\rM�)Hz}�\�\�\�\��T%EE���e\r\re�\�\�݄*�jj�Rl�m\�l��ueet1\Zd� � ��E dʒQ\0y^\�\�\�?O��*],\�c\�5�2�5\�pk��yڢE�$s\�|ɚ��W6Id\�m&�C> �bZ޲\��\�Us\�HwȈ���������Ö�O��\�R��soh<��ZG�\�V\�MN�o��\Z[X\�`-m\�)��)c\�)� M����ݹ�\'��\0H\�J;+�\��A\�9D|\�kT\�e\�\0\�;���\�ǟ\\iz�Y�LJ\�\�\�U,��5\�\�M���\Z��|��|�a\�q��:\�{y��\r�l��8+�j\�˧�\�D H�Զ\� Ք�,%O���\�V���eeu\�igL\�\�ת��������\��\���Ѡk\�7$\�Xx���\��%l�N,�\ZV\�q`\�����*mt�\�.�Yٞ4���!�a��0^\��#p�df\\\� �vǷ9k��9�\�3��DDDDDEQO��w=��˺\�f8�Y+j�C�\Z\�L\�8�\�v]�b�^f056\�\�z�P�&t�k�$�\�YO�J�v �=\�\�A��\'�z��-+���\���\� ��S\�b˃8Z\�Dɻ�i�2\�ƣ�#��g\�\�tDDDDDDDDDDXs\�N��\�\�gl\�=�l\�\�yz�\�@6l�.\�\�ōi\�mۆ̩��\�e�tS���\�g\�(i��\�\'��Wv�b\�O�am�Y�\�G �\��4\\�\�ƒ\�Dz�5�d\'\�Q8�\�jG�˫�`dH�\n�_\�4�Jל\r��k\��\�\�f\�K\�V\�(�\�\��\0 \�\����A\�\��\�\�6 ��1�}�[����A\�����\�9�iqb��8DDDD^s\�!�\�%\�-�1\�\ZF�\�[�\� ,vX\�\�\�l\�\�f�\�X\�>3H\�c8\�r\�|gʇ\�B޶P\���Kۤ�f\�\�{�ͽl�7R��\�m�ԑ�\�+�3\�XI+\�\�k�ܽ�\�\�6\��c�i�u/\�G l���#n\�DX}�\�\�7��\�m���(j�A �L�\�j\�\�28�\0Dy$��E\r�\�\�4�Q���x\�\����;��\�\���\�Yrwl\�6O׭\�N�MH\�?Y\�\Z�o��\�Z\�q,$Fq+�\�s\�EP�r_&���t�S\�\�g��\n�f\�T;\0\�UΨ\�u �E-�s\r[d\�\�E&\�G �_.�\�4�ќ\�Wst?��\�\�\�]�=J\�\�g1qV��\�\�`�\�\"�`���k\�i\�SG�:�� �R6>2ƌ�Fr\�\"\"\"\"\�\�.C�\��/�\�ȕn��\�:\�\�6U��r�o鿍93Z�\r�9\�? ~[�g?\�\�/|���9���\�S$>7\"r�\����m\�*( \�\�\��H\�\��� vXL�\�{{f�� L�\�\'Sе�q�Pi\�\�F�S$aD\0�TA \�\��\�V�\�/�\�/)��\�s�\�ڈ������������QO)�a\�{��n�q�T\�\�0��Cfd�� \��\�\�u�<��\�[��8��� a���\��\�ףw�1�x�\�x�1\�7�Gb��{\�>[�\����X\���\"_�_ &�\�\�vZ�t�Q�|\�\�r�\���\�kb�m�:\�ϧ�>\�=�lMq\�.`ݙM \"\�\�\�\�/\�X\�4���\0���\�o-�\�\�ŝ˘�e�L\��u}Of\�\�\�#~\�3u$i\�+X瀱\�a\�\�6���p>��4֨;9ҾR��\06�H\�P׶[�X�e��m9\�\���iI\Z����c�#@kI�[�.n6I\�iqҾ\�-\�\0\�\�R�o���V�>��7���\�<\�=�\��\�\�\�kH����{���v\�wdui?�ۄ�(Nkǂ���k,bp�\�81#�Yw\�������So���<\��O ț_+ϒ\�\r\�dp\�\�W{Ng7���\0ZBe��\�\�9!\�\\H��������������\�\�k\�\�\� \�~�{P�W2k?~p\��+\�\����\�\�|>M�$\���\'\��\0P��c#˳�>�]n\rO��\�4 Ǘ�vGw�c$bh\�`j\�]z��F�1\0\"1\�˜\�\��\�1�keˆ�������\�w\ns e\�l\�-\��s}�XčJ\�9\�}��0�\0|{c\�\�\�\��UR�O4�m�e�vX�6�H\�a\��|��q5�R \�Z\�\����\�\�\rvK�s�\�9ض�Bc\�\�[�����_�`�Wj����\��W�\�}/돷�\\;\���>�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\����������_\��bN興���o0Eg�n��\0\"\�V\� ��\0�]L�\��\0�L�\�=)\\Y�y�\�9i��S�&�\�qQ\r�\�W\��\�5�{��\�Oh\����A�ߓ�\�\�\�DDDDDDDDDDDEX��\�\�ݼ\�\�!\�{\�\\e:4�`y| ;�\\�G�g\�nOd�\� ۟f�#{��\�ɟK��;@�\�\�({\r�\��f�=� �\�\\l�\�\�?\�\�°\0X�\0��Mʐz\"\"\"\"�\0\�2�aDV8e\Z׌�{r׌�v2ױ\�\�Z\�k��\�8\�3�(&�b\�#\������\�A\���AM�\�[ݧ\��1�{�\�m(�\�l�c\����\"\"\"\"\"\"\"\"\"\"\"\"��\07��Ɠ-\��:\�|g8�ۗs��\��ϴ��\����u�\�\r\�\�U\�\�xD!�2��Ŗ�\�\�\�\�ƴ�씹\�q�,0\��w�� c0쵍�\�\�\"\"\"\"(tx\�\�?8��\Zj@<\n�a��\�#\�l�r\�Y\�,�\�\�\�l�F�6�\���`00Cd\�\�x�S�v7�;O\Z��x�xq\�\�o�u6h���\�^\�\�-lYR�\�|��\0G�mq\�\�8�,F$O^8\�G|�\��D�g��3B��&�\0\�#�����\"\"\"\"\"\�\�n��|�yu\�IU-�#����\��\�`O�G�\�\�Ë\�\�q��W2�!\�.\�kYYkq�s��4DDDDDDDDDDDE��\03g\�\��\����5�\�K��0�l���G�p\'�+�қĐ\�\�\�#�\��Jc&LtsE�\�<|�>4�\�j_\�8�5z\�D\�p<�\�\��]�\�\�\"\�~�5�k���DDDDE�u�\Z9\�VU5�\�\�ئ6\�\�H~ϲ\�c0L4\���\��7\'��7�\���\�\"\"\"\"\"\"\"\"\"\"\".��\�4\�\�s�l)��b\������ #\� {\�V�?`Y�|�\��\�q\����hi�\�t\��c^\�\�\Z�\�j�\�y�`\�k\�ֱ�~\0\�\�\�[�;\��~\��Ȉ�����������������������������������������������������������\�',4,0,'','','',''),(35,2,4,'9305bf00e7fdc853','12287146285bf00e7fd3b7e500413187','2018-11-17 12:50:07','2018-11-17 12:50:07','','','Contact Photos','2.jpg','image/jpeg',300,300,11005,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`>V�\��<|\�\r\�\�Rľ\��\�vM��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\Ή�6�\�u\�x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7�\�+�\�,;:\�\�<Լe����\�KM�…�\�81f\�-��cM�Y�g�8�B�\"=;}��{.��v\0N\��U�XR�\��EFKi�Dl��uW\���(�*�\�l���(����\n\��ò�\��\0����\�\�bRuۆ\���q���\�\n\�\�;,\��q�i�\\�屋 3�:MUd350\�\Z�/Ř٢\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"���\�N�\�\��멶���c�P���|k\�\�Y�\�΀�\��!Z��n�M8��x%\\l�<X0����]�kٷ���s\�\�v��h��y�lW�Oeouodwɝcc:K\�y2���!JG\�9\�}�\�\�c�\���o\��\��\0|{\��������\�\��\����{Ȗ��j3\��\0�zײ\�0Mq\��\�9f�PF�G�ֲM6�#\��<roۓ\��a\r6�O]�\�P)(\�\"�\reMdQB� q�\"\�!\r��}�\�|��=\�˜\�g\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"-@���a���\�\��\�Ô�\���\�\0\�cJK�I��gƞp>D<>�U�\�\� \�03EW����\0�\�\��W%o�ſm��\�]\��\�;\�\�͋l\�\�\�f]�ռ�|\�&A=�1\r�\�#Å`�]1�\�\�E�<qtu��\�?\�?\�\��XSD��x:ge���\0 }�\�>�㛑��\�ؙ|~N\�*Yc+�+*�a� �j�\Z?Ћ�K}��$L\�Z\�\�Q\�β�\0P4`�4h�#\�\0\�G\0Y��!\�шBZ���k\�\�n�as\",=\�|z�\�\�#s/ky�q�M� R]\�S\�-H�kiu\�66\�r�������f\\fGx$��\�7z\��[�\�v������F� ^\�l���{\�\�\�\'$à�H\���y \�^�D#�\�bz\�:��Xd��vF4/��dD۸\�l�3\�͈f��]\�\�c�\�>��6��~�\��\�2��ϱ�8ke��\�ɇ\�\�6\�k�enq�Ɨ�ˠn�\�g/1�كs\�F|�\�<�o\�Rܵ-��&ͤl\�;v�=�|;�r\�\r\�a����k&@1��`\'?Hϛ�c ��\"\"\"\"\"\"\"\"\"\".2a b0BB��\�1�s\�G�8k\�\�.{ݜ5�\�s�\�\�UFަ�!�]\��?�\�Z\�\�\�> \�\�d�\�ƪ�\�\� ���IK\�[�@\�QK\Z\�m�_��)�X<}M�!>.,bb:��=\�\��\�䯻|G\�jO��[Z;d卮$W\��\�z\�?a�!\�8 \��dmf�L\�<++��n�&|\�6\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�S\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�J�>\rm�s>�)�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���X\�܍J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8 9R�\�7\�ș>�W�n\�I�#\�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W��\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�|0mw�H0�ch\��5�q�7\�\����F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��磃��\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J��\�pI_Xa�óqA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i!ʾ\�_0\�\�{\r�kA\"\�y�\�\�jwƯ��X*\�Z[\�l�3�Ɋ\�\���\�Il�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�YxF5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\".\"u�w��\�1�p%\�\n<�9~3����fZ���3\�Gc4�\"̿zF\�ȝ�\�Ƨ�V�\��ge8n\�Q\0഍�\�w�M��w�\�:�\Z�+C\r�q�oaC\�^Z������������\�\n\�(�\�|�$Y,οsOl��a\�G.�w�$\�#\�3\�\�=��\�)9p\�\"LS�y0FAU|�\\��\r�u�O�Rx��\�c\�m�f|F\�ceԄ\�\�9\�\�0���kr\�\�;�ynpϕ������H^�^\���ït_�\�\n 9�3\�:�^�d��\r\�\�\rMt`��!M����G5�f�$a��qI{ҋ\�}��<�q�+��w\�]T\��^U\�mp�ه\Z\��^�\�4깂v 3/��ska��\�\ne�.dlȌ)v\�\"\"\"\"\"\"\"\"\"\",>\��Y�;�\�\������8�j\�!`I��u��M��P\�8\�hh�1����\�y,�G-n��\�Vͤm�r(��7`�\�vjYyeS\�:������9 ȯ��&!��Y ]��\��vz���7���\Z�đ�yL�>^\�~M\�\�b\����a�W��a�`o V}z��`����6��%��\�@_֫\�`�n\�V�>Q7�;\���e�F��\�c\�t\�z�����\�vHn%By)Bh�`ϯ��~��\0�: \�\��)\�M�\�gk?J\�\rŒZ\�\�k<u���\�\�9I�5�u�\�m]9��_�\�\�b�\�]Q㔒eDDDDDDDDDDET7��Ǭ��� �\�]R�cxs�1ȕ�E�\��*&s_�j�|Hm��\�\�X�-\�$\�\�g0c�\r�`�u{�\�~\��\'<6\�\�s�D��G\�{[\n�?m������J�\'�\�ʒƓ(\�ibM&\"\��.(\�}w�xÏ9_R�f�\�:V��\�ȋ(SB����\�&\�Pq��\� ƈ�kY�ok�\�5\�Ǡ\"\"\",.\�\�z�7\�gY��\��\�+\�5:\�3]\�a4r�=\�o��\�\��-n��\"\�\\\�K3Ďs��\�\�F+\�N�,ÝLv{o\�\�\�0���2\��_,\�o�G\Zd����.]�\�\�\��\�c)k��|x��\�M\�\�&WB|\���� \��O��ӕ����_Y�Q\�n&\�\�\�i�]ג?�mݪ�ɕvd�4�\�u\�8�d3BpOsh8�6=LQF٬\�<H\���0E4h\�`cǎ4A\0&�b�֌BZ\�1�c�\�\\Ȉ����������/\�\���\�\�܅\���w(\�\�6��\��}�\�y�!G\�Ɍࡏm婶d_iS\�J�\�\��SI\�\�s�����&k\�^��^N\�6�^\�?\�\�\�\\\�!�\�k�\"�9\�MdR���\�dÐ��+D=#~F�{\�s�\�vا\�\�n�<u�\�Ȇ\�N�<�q�(�(ѣ:�\�\�k���C�=��ʼnѦ\�K��(\�,�\0�\�9�\�!r��~Z��lk���\�k��\�\�1����H>Sv\�!}\�\���]���\�`ٶ.6\�m�<8w�=<\�\�\��\�w\�a�p{x�T\�N[F¦�\"E,��\�d\�\�wV�}=�%\�|�w�;�4\�us��]��U�#\�u�a#XB���Α���;#\����\�1u���hB��`;x�MSZ\�u�M;N��\��}n�5EDaî���<<X�Ō5�cq\�\�g܅#�b�\�#\�\������������������\�F�ȧVt�\�\\\�\�\�g9qޫ\\�V<��D+�Mʾ�Dn\'�R\ZD�\�\�o\�G�h\�\�\�[���\�gW�\���o�\�q_i�\�\�)�+/\���w\"���q��\��B�+��3�Bٔ\�$\�ō�\�TJ�\�\�ˁ*\�\�vc����|g\�\�\�c\�u\�:\�v\�G,N\�e\��\�\�,���E`f\�\\֕��aWe�Bc\r�\n1�c �<�sՇY�q�7�\�\�[�jz\�\� ��;o��\�Ơs��\��\�#\���\���?��\��6e�\�v62\�ϰ�$�gN�rʙ6d���˔w��$\�;\�c�\�yLW��{�\�\�?̮�\�t⏨~)�̫t�`\�#ɛXJ�\�\\ob����)�bV�@4\"��2S#\�`�{<X�戈�����������L\� �I�F�\"\�0\�P�%fFP�DØA��s7�,{3��\�s�U��\�\�^�\������֪�Q�휇�q\�6X\�\�\��CqS���\�2���vغ�!�d �\�$�[ $�\�ߣ�\���ܵ\�&ls\�:\�y\�{/\�֧�L\�z�\"k\�6�O]:�fI�T3c�\�m�kXὶk�>ᕷ���uhO\�\�Myy῵��|�Ʌ[�\\\�||;9\�-�\�X_�q\�\�Q�G6s\�\�0�˱�*|נq=v\�\�|i�\\E$ꝋ�4\�+HB)Y�\��m|أ0^3�#H(�Ae���\�v0\�_ \�U\�|}�\�\�B\ruef��ƒ`4z��Z&c\rfZ\�61�\��\0,�9vs��DDDDDDDDDDDX\�\�>\�u�:U��\0\�p\�$\�\�7�^\�[\�\�\���H\�>l\�K�+�\Z�ؑ*D`5�|�aс\�Ϭ۠\�e(��o\�\\\�\�\�[ ж��;�ͬ\�cIJf\�D]�\�y�<�5\�-tV\�9 d;n�\�\��\�\�=���B�5�ƺ�TKZ\�O߻z�^\�i\�oc[[�\�j�\�\�\��ݛ�`bO)?4S�6\�8>�^g~�+�v~���P\�A�\�\�l�5&տ\�Qd\�>\ZVi��ŔyVq\�\�\"4b\��<�#\ZQB\�|�\�\�e�\0i�Y�\��H���Ok9z\�\�\rͅ�GǴ\�\"6S+\�\�\�u�̭v��2_(5������:\�#|\�\�\�x>�\�q\�S��V��<\�%��Rޢ�F1\�;&D\�\�\�\"\�?�\�{-��\�\�D�hB\�\�n�u�\Z;�\�\��gٷ�\��40�Pjϱmv�r\�R�sO&=n!WG�ai(q�k)�6Ǒ\Z�\��\�n��+Y\�\�)i�ekp��\�\�S�mA�̰�|�\�2)#5\�\�v��nr\�Qհ\�\\\����\�]&�`֮,�/�f3�WsO4\�֕ҙ�� �\nlc\�;0\�a��\��]���H:o)�\�f���U\�\r7d�+FC8ph�:\�9o�B”�`\"�\��B?8���vp\�\�\�\�\�/�-\"��\"֡�[B�\'a\�<K\ZhS#o\�s� �3\�c9Ú\�g\�8\�\�興���������\0��W��GB\�yG�w�k�x\�M��u�\�[u�Z]~��I&\\\� oA4q\�~s��\"!3���@O\�W�\�m��\�x+\�tH\�UP\�\�kS�=�W\nt\�\�\�ú\�:cHpQؼƯ\�6(/�\�+���{=M�[@ï_�\�g��\�ţ�o,v����\"Fc�\�\�^ͰȌ\�\��>\��hj5MR���\'�I�R�\�!2%F��\�x\��uq��-k���\�/\���请_��D����� �\�\���v\�n.�&3\ZH0\�UCed��z\�\�g\\+מ \�~�]�p�\�i�Q�\0�ǚ�.�^(�\0c��#*�F|�\�\��IO9\\\�l���\�q숈������Gx��\��\0v-�ǚĨ�m\���\�S` �՚\�3L\�\� Ps� \�\�bm���>d�f+G\Z|Q\�/�\�_L�{h��\�#�u)6yC���p_\"\�\�i\�\�\�_�\Z^���|\�~e�\�4\�eK�\�1䝵\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ�q\n�;�\�\�\�M�(�\�$�\� \nVT�\�\�\�9�X\�[�j�\�\�:��\\<o\���ġ���\�\�܉�49���ȣY��NM[Hp\��D���\��Yx�쏕�t�Fk\ZM�/�����\\\�7�i��g\�(\�\�\�,\���ŝ�\�\�\�\��\�[e<n��\���\��i�\�l���\�v\Z\���_#[ ��m��\��t�?UEc�T@�$jؐa\�\�\Z\"\"\"\"\",[\�WO�G�}{\�����f\��ڒ\�s��\�_�[\"�e���D �; Ų�.!\�I ��($G8\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zx2q�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�×\n|h�C*,�\�eF�P���������dHP\ZT�\n4h\�$�$a\0\0��1�G4b�\�<�{�\�1�s��\�9UJ��<\�\�w��w=n᝚\�7Tz��\�k������*�^kﶋ\�|\�\Z+8R \�Bsd����\r^\�6��px\�\�&��\��\��\�Y\r�\�;N@\�+8���q��7�m�\�$wO�д�\���K�/`��Ftʺ�[\�T\�{\�~���~�\�}u\�\��[\�ka2��\�#�b\�6A\�k-6\�h��M����\�ה���r\�<\�6b\"\"\"\"\"\"\"��_\�^%\��}\�\�\�z�\'��\�_*��Sܩ�]TX\�\�\�21(np\� ^\�+��\�\�G���(m�\�љ���ou��O�g��\�KO9�C\��;�\0Ȕ\�Ҍ\�T[.�\��\�\�\�&�\�\�sMQ\"��ls� Ss�\�\�U����z��\�y\�cG�\��ז�]\�E\�b�\�IG\�Ӵ�vN cEl[A\�\04��\�b �8��R<\��$��O!�\'�s�1KW_t\�N%�ޚ\�\�aF��\�-�ɯ�d\�>lJJ���8�\�5\�O�&.J�Ǩ\�\�ȍ�o�\'Ģ�#0�\�o\�A\�n�K:v\��Ym7�[\n\�C@\�ͪ,\�5�7\��ȉ��Y����\�\�5~(\�?�\�\�\�6��]\�([\r\\\�\�\�\\\�+h\�r�>�K`NJܖD�lF5�\�\�C��\�aշ]7x�\�=\'m\�w\n\�9�}��}U�Acߌ\�t��r\�\�\�]��$\�s��8\�}��:\"\"\"\"\"\"���;\�~z3\�\�\�݅�\\�\0\�V\�q��J��\�lڎ����>\�*\�ð���\�\�d\rM�)Hz}�\�\�\�\��T%EE���e\r\re�\�\�݄*�jj�Rl�m\�l��ueet1\Zd� � ��E dʒQ\0y^\�\�\�?O��*],\�c\�5�2�5\�pk��yڢE�$s\�|ɚ��W6Id\�m&�C> �bZ޲\��\�Us\�HwȈ���������Ö�O��\�R��soh<��ZG�\�V\�MN�o��\Z[X\�`-m\�)��)c\�)� M����ݹ�\'��\0H\�J;+�\��A\�9D|\�kT\�e\�\0\�;���\�ǟ\\iz�Y�LJ\�\�\�U,��5\�\�M���\Z��|��|�a\�q��:\�{y��\r�l��8+�j\�˧�\�D H�Զ\� Ք�,%O���\�V���eeu\�igL\�\�ת��������\��\���Ѡk\�7$\�Xx���\��%l�N,�\ZV\�q`\�����*mt�\�.�Yٞ4���!�a��0^\��#p�df\\\� �vǷ9k��9�\�3��DDDDDEQO��w=��˺\�f8�Y+j�C�\Z\�L\�8�\�v]�b�^f056\�\�z�P�&t�k�$�\�YO�J�v �=\�\�A��\'�z��-+���\���\� ��S\�b˃8Z\�Dɻ�i�2\�ƣ�#��g\�\�tDDDDDDDDDDXs\�N��\�\�gl\�=�l\�\�yz�\�@6l�.\�\�ōi\�mۆ̩��\�e�tS���\�g\�(i��\�\'��Wv�b\�O�am�Y�\�G �\��4\\�\�ƒ\�Dz�5�d\'\�Q8�\�jG�˫�`dH�\n�_\�4�Jל\r��k\��\�\�f\�K\�V\�(�\�\��\0 \�\����A\�\��\�\�6 ��1�}�[����A\�����\�9�iqb��8DDDD^s\�!�\�%\�-�1\�\ZF�\�[�\� ,vX\�\�\�l\�\�f�\�X\�>3H\�c8\�r\�|gʇ\�B޶P\���Kۤ�f\�\�{�ͽl�7R��\�m�ԑ�\�+�3\�XI+\�\�k�ܽ�\�\�6\��c�i�u/\�G l���#n\�DX}�\�\�7��\�m���(j�A �L�\�j\�\�28�\0Dy$��E\r�\�\�4�Q���x\�\����;��\�\���\�Yrwl\�6O׭\�N�MH\�?Y\�\Z�o��\�Z\�q,$Fq+�\�s\�EP�r_&���t�S\�\�g��\n�f\�T;\0\�UΨ\�u �E-�s\r[d\�\�E&\�G �_.�\�4�ќ\�Wst?��\�\�\�]�=J\�\�g1qV��\�\�`�\�\"�`���k\�i\�SG�:�� �R6>2ƌ�Fr\�\"\"\"\"\�\�.C�\��/�\�ȕn��\�:\�\�6U��r�o鿍93Z�\r�9\�? ~[�g?\�\�/|���9���\�S$>7\"r�\����m\�*( \�\�\��H\�\��� vXL�\�{{f�� L�\�\'Sе�q�Pi\�\�F�S$aD\0�TA \�\��\�V�\�/�\�/)��\�s�\�ڈ������������QO)�a\�{��n�q�T\�\�0��Cfd�� \��\�\�u�<��\�[��8��� a���\��\�ףw�1�x�\�x�1\�7�Gb��{\�>[�\����X\���\"_�_ &�\�\�vZ�t�Q�|\�\�r�\���\�kb�m�:\�ϧ�>\�=�lMq\�.`ݙM \"\�\�\�\�/\�X\�4���\0���\�o-�\�\�ŝ˘�e�L\��u}Of\�\�\�#~\�3u$i\�+X瀱\�a\�\�6���p>��4֨;9ҾR��\06�H\�P׶[�X�e��m9\�\���iI\Z����c�#@kI�[�.n6I\�iqҾ\�-\�\0\�\�R�o���V�>��7���\�<\�=�\��\�\�\�kH����{���v\�wdui?�ۄ�(Nkǂ���k,bp�\�81#�Yw\�������So���<\��O ț_+ϒ\�\r\�dp\�\�W{Ng7���\0ZBe��\�\�9!\�\\H��������������\�\�k\�\�\� \�~�{P�W2k?~p\��+\�\����\�\�|>M�$\���\'\��\0P��c#˳�>�]n\rO��\�4 Ǘ�vGw�c$bh\�`j\�]z��F�1\0\"1\�˜\�\��\�1�keˆ�������\�w\ns e\�l\�-\��s}�XčJ\�9\�}��0�\0|{c\�\�\�\��UR�O4�m�e�vX�6�H\�a\��|��q5�R \�Z\�\����\�\�\rvK�s�\�9ض�Bc\�\�[�����_�`�Wj����\��W�\�}/돷�\\;\���>�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\����������_\��bN興���o0Eg�n��\0\"\�V\� ��\0�]L�\��\0�L�\�=)\\Y�y�\�9i��S�&�\�qQ\r�\�W\��\�5�{��\�Oh\����A�ߓ�\�\�\�DDDDDDDDDDDEX��\�\�ݼ\�\�!\�{\�\\e:4�`y| ;�\\�G�g\�nOd�\� ۟f�#{��\�ɟK��;@�\�\�({\r�\��f�=� �\�\\l�\�\�?\�\�°\0X�\0��Mʐz\"\"\"\"�\0\�2�aDV8e\Z׌�{r׌�v2ױ\�\�Z\�k��\�8\�3�(&�b\�#\������\�A\���AM�\�[ݧ\��1�{�\�m(�\�l�c\����\"\"\"\"\"\"\"\"\"\"\"\"��\07��Ɠ-\��:\�|g8�ۗs��\��ϴ��\����u�\�\r\�\�U\�\�xD!�2��Ŗ�\�\�\�\�ƴ�씹\�q�,0\��w�� c0쵍�\�\�\"\"\"\"(tx\�\�?8��\Zj@<\n�a��\�#\�l�r\�Y\�,�\�\�\�l�F�6�\���`00Cd\�\�x�S�v7�;O\Z��x�xq\�\�o�u6h���\�^\�\�-lYR�\�|��\0G�mq\�\�8�,F$O^8\�G|�\��D�g��3B��&�\0\�#�����\"\"\"\"\"\�\�n��|�yu\�IU-�#����\��\�`O�G�\�\�Ë\�\�q��W2�!\�.\�kYYkq�s��4DDDDDDDDDDDE��\03g\�\��\����5�\�K��0�l���G�p\'�+�қĐ\�\�\�#�\��Jc&LtsE�\�<|�>4�\�j_\�8�5z\�D\�p<�\�\��]�\�\�\"\�~�5�k���DDDDE�u�\Z9\�VU5�\�\�ئ6\�\�H~ϲ\�c0L4\���\��7\'��7�\���\�\"\"\"\"\"\"\"\"\"\"\".��\�4\�\�s�l)��b\������ #\� {\�V�?`Y�|�\��\�q\����hi�\�t\��c^\�\�\Z�\�j�\�y�`\�k\�ֱ�~\0\�\�\�[�;\��~\��Ȉ�����������������������������������������������������������\�',4,0,'','','',''),(36,3,5,'9305bf00e7fdf2d2','15820583805bf00e7fd7909940374120','2018-11-17 12:50:07','2018-11-17 12:50:07','','','Contact Photos','3.jpg','image/jpeg',80,80,2355,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط7�.�kڐ�H\�$�Ͳ&a\�DK�(e.+7tE\�Y\�\�.M5\�\0+�\�\�\�JJ���: �3^�k\����GLv\�0iul\'\�9;3HSc�\�\�Օ��u)\�\�ѫ^>�9�ZM\�*��x\�\�.d% �\r1!h�u\�GS6���J\�\�9j�džBÏ-��_��e9+\r 0p�\�m<�\�\�Ƌ���\�?Jt>\�l�\�\�ϭ���u�1y[�U�:�^R���\0�rT �Ƕ>,G6�\��\�9\�� �\�\�\�o�CN0�!.��.�-�ӭ/\nC���)!i\�V�\�*\�q�㕈w�{\�C\�J�g]U%,}$�\��\�p����\�\�I��׉�\�\�5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#��N\�Ҏ�v��@F 37��\�\�W��K�����LE҂�C2��I�H\�5)�]i\����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��vb�?���N\Z \�\��\�\�S 6a\0��\0p��|;���8\��s�:S��7`�3��x\��5�2\�,�\���y\�)\�\r \�\�ɻ$��\�DW��\�t�iR\� fԷ=���\��\0�B\�\�mg/Ň��\�{\Z\�\�P�^��\�Z\��|\�!���v\Z&��I�\�^\n\�X<���\0��f\\�,��,zq�+u�\�c��.\�\�A�2\�\�;�\�\ZjI�\r#;Sؓ�z\�,`ͤg�R��2/\�Qe��N�-��鵍u�\�U�� [�R\���ڽb�:�����Xب�Fm �C2;-� B1�x�o:\�V\��\0Ww\�W��?[\�ڪ\�N��\\\�XbA���:�e]�X3�㭶�1\�4\�\�՞i�\�\�\�V[\�>$<�E��-{?j1��Ƕl�\\V�ޓ ���Y\"\�\ZQ�`e?d��\�fi��MzC6*�\�\��6���T��\nJ���RT�\�)V3�|gǾ3�\��\�q�g�\�j\'岙5\�O\�?I�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o�\�~�v�CZ\�\�s\r�\�v&t#�qxi\�[��|�\�q\�{�V�f vGƎ�\�Տ���\�^�n(v�\�;���\�\�?+S\"=)r[\r�%��u<r�\Z]\�+lSK�\0�gT\�\�D�\�F\�\����\�֫\�󷤆B�/�j��\�U�)�����\�;#�$X�0Z�\0H�\�\�i�:,ti\�MCC\�[�`?��\�q=C~P6S��Q����\0Z�YDPv\�n@׿�\�jd}��\0�/\��\�3\�\�q\�0+!�Ǎ�/\�6TRp\��-\�\�\�\�f �v\�\ZI�K�m�\�T�Z�S�`��嶛\�y\�\�;V\��\�y \�f�LrE\�} �ĚXRrau]�ޱMo�IC��!�\�[xuղ\�\�eXm.��O8\�9e\�\�_�\�\�TB��:�iM\�a����\�s�D�\�S�a6\��\�!\�7\��w\�yq\��2 x\�\�K!�\�|��\�I|qK����Nq��0�ij\�YD)��O9�s�\�qζCE�~Gg\'43��^[NH@��\�\��}�ieׇa\�\�~+[-)X\�P�\�\��\�',5,0,'','','',''),(37,3,5,'9305bf00e7fdf2d2','15820583805bf00e7fd7909940374120','2018-11-17 12:50:07','2018-11-17 12:50:07','','','Contact Photos','3.jpg','image/jpeg',48,48,1489,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYZm�_HL�٤\�nj��\�\0�r��3_\�\���\r\�0�\�t�\ZÉm\�!.�ޫ\�\�ȏ�v.�\�?T��5<��2ޚΖ�\�#�pI:��VU5\�k<I�|< \�%aS\���MǘÍ�\�kL��N=vPtW{v\� \�G�lvW��\�4}���µ\�\�V*�2\�~\�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���P\�\�8R\��\0t %W�Y�/O��\�ZO���\��\0\�D�o�-� �\�a\�\� �^���-��\�,R\�\\u\�!Y� \�tu��\�\�U��5�t\�\�\��B[��Q\�\�\�\'�S�Y�\"P\�\n\�>VQ\� | #x˥��\�4��\�q�m\�Z����\n���\�5\�#g�-Ӟ�W]ۦ��Zjy�bN�-\�r53c-{{o\�+\�D\�\�\��P*���#T��-L\�\ZCM\��,fj�Y@\�g\\LnF\�#N�\�W\�\�-8S�HY\�\��t\�I�\�N,�\�ϳ\�\�S�\���^\�+�w~��Ak>�\�m����\�l���}\�h\� (��MN\�4,�^ J��1�(\�2\�b>\�\�\�{�(U��՚�ۭ)jdvvӢ�\�\�ڞT�\�Rw\�\�ƌת1\�\�\��3Z�^�F\���¶�\�r\�$㦣c\�a\�R&X$\�\�\�\�h�$c�a��8\"\�Z\�$B\�u�!����q6�!X\�gO�\rv�\�\�]��ZA/3{��^PQ[ˎ_�\�\�4%�5\�\��\0�%_rL��e\r�C\�^2���\� 8c� ��0��\�\�\�\�#�\�\�,�\�1�6\�M�(m \��\' N1�c{xy��ՠ/5[-&\�\�Z\�_��\�!dGl��x�\�\"�\"\�䭒><�%�R�\�eն�\�*\�<F=SV�i~��J�c2@\�Jn�n���r\�On6�=7�}Kw�\06 \�氥g\����?\� �\�\�x��W\"�4�[�&R�,���\�\�V�Cڣ�0�e?�� �\�\��e?\�\�͟�����uF�\�\�\�JD+��\�l�\�9\�^\�eH ��8�\0G Z���%?9\�~s\��\�',6,0,'','','',''),(38,2,4,'9305bf00e7fdc853','12287146285bf00e7fd3b7e500413187','2018-11-17 12:50:07','2018-11-17 12:50:07','','','Contact Photos','2.jpg','image/jpeg',80,80,2355,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط7�.�kڐ�H\�$�Ͳ&a\�DK�(e.+7tE\�Y\�\�.M5\�\0+�\�\�\�JJ���: �3^�k\����GLv\�0iul\'\�9;3HSc�\�\�Օ��u)\�\�ѫ^>�9�ZM\�*��x\�\�.d% �\r1!h�u\�GS6���J\�\�9j�džBÏ-��_��e9+\r 0p�\�m<�\�\�Ƌ���\�?Jt>\�l�\�\�ϭ���u�1y[�U�:�^R���\0�rT �Ƕ>,G6�\��\�9\�� �\�\�\�o�CN0�!.��.�-�ӭ/\nC���)!i\�V�\�*\�q�㕈w�{\�C\�J�g]U%,}$�\��\�p����\�\�I��׉�\�\�5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#��N\�Ҏ�v��@F 37��\�\�W��K�����LE҂�C2��I�H\�5)�]i\����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��vb�?���N\Z \�\��\�\�S 6a\0��\0p��|;���8\��s�:S��7`�3��x\��5�2\�,�\���y\�)\�\r \�\�ɻ$��\�DW��\�t�iR\� fԷ=���\��\0�B\�\�mg/Ň��\�{\Z\�\�P�^��\�Z\��|\�!���v\Z&��I�\�^\n\�X<���\0��f\\�,��,zq�+u�\�c��.\�\�A�2\�\�;�\�\ZjI�\r#;Sؓ�z\�,`ͤg�R��2/\�Qe��N�-��鵍u�\�U�� [�R\���ڽb�:�����Xب�Fm �C2;-� B1�x�o:\�V\��\0Ww\�W��?[\�ڪ\�N��\\\�XbA���:�e]�X3�㭶�1\�4\�\�՞i�\�\�\�V[\�>$<�E��-{?j1��Ƕl�\\V�ޓ ���Y\"\�\ZQ�`e?d��\�fi��MzC6*�\�\��6���T��\nJ���RT�\�)V3�|gǾ3�\��\�q�g�\�j\'岙5\�O\�?I�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o�\�~�v�CZ\�\�s\r�\�v&t#�qxi\�[��|�\�q\�{�V�f vGƎ�\�Տ���\�^�n(v�\�;���\�\�?+S\"=)r[\r�%��u<r�\Z]\�+lSK�\0�gT\�\�D�\�F\�\����\�֫\�󷤆B�/�j��\�U�)�����\�;#�$X�0Z�\0H�\�\�i�:,ti\�MCC\�[�`?��\�q=C~P6S��Q����\0Z�YDPv\�n@׿�\�jd}��\0�/\��\�3\�\�q\�0+!�Ǎ�/\�6TRp\��-\�\�\�\�f �v\�\ZI�K�m�\�T�Z�S�`��嶛\�y\�\�;V\��\�y \�f�LrE\�} �ĚXRrau]�ޱMo�IC��!�\�[xuղ\�\�eXm.��O8\�9e\�\�_�\�\�TB��:�iM\�a����\�s�D�\�S�a6\��\�!\�7\��w\�yq\��2 x\�\�K!�\�|��\�I|qK����Nq��0�ij\�YD)��O9�s�\�qζCE�~Gg\'43��^[NH@��\�\��}�ieׇa\�\�~+[-)X\�P�\�\��\�',5,0,'','','',''),(39,2,4,'9305bf00e7fdc853','12287146285bf00e7fd3b7e500413187','2018-11-17 12:50:07','2018-11-17 12:50:07','','','Contact Photos','2.jpg','image/jpeg',48,48,1489,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYZm�_HL�٤\�nj��\�\0�r��3_\�\���\r\�0�\�t�\ZÉm\�!.�ޫ\�\�ȏ�v.�\�?T��5<��2ޚΖ�\�#�pI:��VU5\�k<I�|< \�%aS\���MǘÍ�\�kL��N=vPtW{v\� \�G�lvW��\�4}���µ\�\�V*�2\�~\�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���P\�\�8R\��\0t %W�Y�/O��\�ZO���\��\0\�D�o�-� �\�a\�\� �^���-��\�,R\�\\u\�!Y� \�tu��\�\�U��5�t\�\�\��B[��Q\�\�\�\'�S�Y�\"P\�\n\�>VQ\� | #x˥��\�4��\�q�m\�Z����\n���\�5\�#g�-Ӟ�W]ۦ��Zjy�bN�-\�r53c-{{o\�+\�D\�\�\��P*���#T��-L\�\ZCM\��,fj�Y@\�g\\LnF\�#N�\�W\�\�-8S�HY\�\��t\�I�\�N,�\�ϳ\�\�S�\���^\�+�w~��Ak>�\�m����\�l���}\�h\� (��MN\�4,�^ J��1�(\�2\�b>\�\�\�{�(U��՚�ۭ)jdvvӢ�\�\�ڞT�\�Rw\�\�ƌת1\�\�\��3Z�^�F\���¶�\�r\�$㦣c\�a\�R&X$\�\�\�\�h�$c�a��8\"\�Z\�$B\�u�!����q6�!X\�gO�\rv�\�\�]��ZA/3{��^PQ[ˎ_�\�\�4%�5\�\��\0�%_rL��e\r�C\�^2���\� 8c� ��0��\�\�\�\�#�\�\�,�\�1�6\�M�(m \��\' N1�c{xy��ՠ/5[-&\�\�Z\�_��\�!dGl��x�\�\"�\"\�䭒><�%�R�\�eն�\�*\�<F=SV�i~��J�c2@\�Jn�n���r\�On6�=7�}Kw�\06 \�氥g\����?\� �\�\�x��W\"�4�[�&R�,���\�\�V�Cڣ�0�e?�� �\�\��e?\�\�͟�����uF�\�\�\�JD+��\�l�\�9\�^\�eH ��8�\0G Z���%?9\�~s\��\�',6,0,'','','',''),(40,4,6,'9305bf00e8022c7a','12242958235bf00e8006f72987476580','2018-11-17 12:50:08','2018-11-17 12:50:08','','','Contact Photos','4.jpg','image/jpeg',300,300,11005,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`>V�\��<|\�\r\�\�Rľ\��\�vM��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\Ή�6�\�u\�x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7�\�+�\�,;:\�\�<Լe����\�KM�…�\�81f\�-��cM�Y�g�8�B�\"=;}��{.��v\0N\��U�XR�\��EFKi�Dl��uW\���(�*�\�l���(����\n\��ò�\��\0����\�\�bRuۆ\���q���\�\n\�\�;,\��q�i�\\�屋 3�:MUd350\�\Z�/Ř٢\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"���\�N�\�\��멶���c�P���|k\�\�Y�\�΀�\��!Z��n�M8��x%\\l�<X0����]�kٷ���s\�\�v��h��y�lW�Oeouodwɝcc:K\�y2���!JG\�9\�}�\�\�c�\���o\��\��\0|{\��������\�\��\����{Ȗ��j3\��\0�zײ\�0Mq\��\�9f�PF�G�ֲM6�#\��<roۓ\��a\r6�O]�\�P)(\�\"�\reMdQB� q�\"\�!\r��}�\�|��=\�˜\�g\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"-@���a���\�\��\�Ô�\���\�\0\�cJK�I��gƞp>D<>�U�\�\� \�03EW����\0�\�\��W%o�ſm��\�]\��\�;\�\�͋l\�\�\�f]�ռ�|\�&A=�1\r�\�#Å`�]1�\�\�E�<qtu��\�?\�?\�\��XSD��x:ge���\0 }�\�>�㛑��\�ؙ|~N\�*Yc+�+*�a� �j�\Z?Ћ�K}��$L\�Z\�\�Q\�β�\0P4`�4h�#\�\0\�G\0Y��!\�шBZ���k\�\�n�as\",=\�|z�\�\�#s/ky�q�M� R]\�S\�-H�kiu\�66\�r�������f\\fGx$��\�7z\��[�\�v������F� ^\�l���{\�\�\�\'$à�H\���y \�^�D#�\�bz\�:��Xd��vF4/��dD۸\�l�3\�͈f��]\�\�c�\�>��6��~�\��\�2��ϱ�8ke��\�ɇ\�\�6\�k�enq�Ɨ�ˠn�\�g/1�كs\�F|�\�<�o\�Rܵ-��&ͤl\�;v�=�|;�r\�\r\�a����k&@1��`\'?Hϛ�c ��\"\"\"\"\"\"\"\"\"\".2a b0BB��\�1�s\�G�8k\�\�.{ݜ5�\�s�\�\�UFަ�!�]\��?�\�Z\�\�\�> \�\�d�\�ƪ�\�\� ���IK\�[�@\�QK\Z\�m�_��)�X<}M�!>.,bb:��=\�\��\�䯻|G\�jO��[Z;d卮$W\��\�z\�?a�!\�8 \��dmf�L\�<++��n�&|\�6\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�S\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�J�>\rm�s>�)�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���X\�܍J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8 9R�\�7\�ș>�W�n\�I�#\�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W��\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�|0mw�H0�ch\��5�q�7\�\����F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��磃��\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J��\�pI_Xa�óqA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i!ʾ\�_0\�\�{\r�kA\"\�y�\�\�jwƯ��X*\�Z[\�l�3�Ɋ\�\���\�Il�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�YxF5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\".\"u�w��\�1�p%\�\n<�9~3����fZ���3\�Gc4�\"̿zF\�ȝ�\�Ƨ�V�\��ge8n\�Q\0഍�\�w�M��w�\�:�\Z�+C\r�q�oaC\�^Z������������\�\n\�(�\�|�$Y,οsOl��a\�G.�w�$\�#\�3\�\�=��\�)9p\�\"LS�y0FAU|�\\��\r�u�O�Rx��\�c\�m�f|F\�ceԄ\�\�9\�\�0���kr\�\�;�ynpϕ������H^�^\���ït_�\�\n 9�3\�:�^�d��\r\�\�\rMt`��!M����G5�f�$a��qI{ҋ\�}��<�q�+��w\�]T\��^U\�mp�ه\Z\��^�\�4깂v 3/��ska��\�\ne�.dlȌ)v\�\"\"\"\"\"\"\"\"\"\",>\��Y�;�\�\������8�j\�!`I��u��M��P\�8\�hh�1����\�y,�G-n��\�Vͤm�r(��7`�\�vjYyeS\�:������9 ȯ��&!��Y ]��\��vz���7���\Z�đ�yL�>^\�~M\�\�b\����a�W��a�`o V}z��`����6��%��\�@_֫\�`�n\�V�>Q7�;\���e�F��\�c\�t\�z�����\�vHn%By)Bh�`ϯ��~��\0�: \�\��)\�M�\�gk?J\�\rŒZ\�\�k<u���\�\�9I�5�u�\�m]9��_�\�\�b�\�]Q㔒eDDDDDDDDDDET7��Ǭ��� �\�]R�cxs�1ȕ�E�\��*&s_�j�|Hm��\�\�X�-\�$\�\�g0c�\r�`�u{�\�~\��\'<6\�\�s�D��G\�{[\n�?m������J�\'�\�ʒƓ(\�ibM&\"\��.(\�}w�xÏ9_R�f�\�:V��\�ȋ(SB����\�&\�Pq��\� ƈ�kY�ok�\�5\�Ǡ\"\"\",.\�\�z�7\�gY��\��\�+\�5:\�3]\�a4r�=\�o��\�\��-n��\"\�\\\�K3Ďs��\�\�F+\�N�,ÝLv{o\�\�\�0���2\��_,\�o�G\Zd����.]�\�\�\��\�c)k��|x��\�M\�\�&WB|\���� \��O��ӕ����_Y�Q\�n&\�\�\�i�]ג?�mݪ�ɕvd�4�\�u\�8�d3BpOsh8�6=LQF٬\�<H\���0E4h\�`cǎ4A\0&�b�֌BZ\�1�c�\�\\Ȉ����������/\�\���\�\�܅\���w(\�\�6��\��}�\�y�!G\�Ɍࡏm婶d_iS\�J�\�\��SI\�\�s�����&k\�^��^N\�6�^\�?\�\�\�\\\�!�\�k�\"�9\�MdR���\�dÐ��+D=#~F�{\�s�\�vا\�\�n�<u�\�Ȇ\�N�<�q�(�(ѣ:�\�\�k���C�=��ʼnѦ\�K��(\�,�\0�\�9�\�!r��~Z��lk���\�k��\�\�1����H>Sv\�!}\�\���]���\�`ٶ.6\�m�<8w�=<\�\�\��\�w\�a�p{x�T\�N[F¦�\"E,��\�d\�\�wV�}=�%\�|�w�;�4\�us��]��U�#\�u�a#XB���Α���;#\����\�1u���hB��`;x�MSZ\�u�M;N��\��}n�5EDaî���<<X�Ō5�cq\�\�g܅#�b�\�#\�\������������������\�F�ȧVt�\�\\\�\�\�g9qޫ\\�V<��D+�Mʾ�Dn\'�R\ZD�\�\�o\�G�h\�\�\�[���\�gW�\���o�\�q_i�\�\�)�+/\���w\"���q��\��B�+��3�Bٔ\�$\�ō�\�TJ�\�\�ˁ*\�\�vc����|g\�\�\�c\�u\�:\�v\�G,N\�e\��\�\�,���E`f\�\\֕��aWe�Bc\r�\n1�c �<�sՇY�q�7�\�\�[�jz\�\� ��;o��\�Ơs��\��\�#\���\���?��\��6e�\�v62\�ϰ�$�gN�rʙ6d���˔w��$\�;\�c�\�yLW��{�\�\�?̮�\�t⏨~)�̫t�`\�#ɛXJ�\�\\ob����)�bV�@4\"��2S#\�`�{<X�戈�����������L\� �I�F�\"\�0\�P�%fFP�DØA��s7�,{3��\�s�U��\�\�^�\������֪�Q�휇�q\�6X\�\�\��CqS���\�2���vغ�!�d �\�$�[ $�\�ߣ�\���ܵ\�&ls\�:\�y\�{/\�֧�L\�z�\"k\�6�O]:�fI�T3c�\�m�kXὶk�>ᕷ���uhO\�\�Myy῵��|�Ʌ[�\\\�||;9\�-�\�X_�q\�\�Q�G6s\�\�0�˱�*|נq=v\�\�|i�\\E$ꝋ�4\�+HB)Y�\��m|أ0^3�#H(�Ae���\�v0\�_ \�U\�|}�\�\�B\ruef��ƒ`4z��Z&c\rfZ\�61�\��\0,�9vs��DDDDDDDDDDDX\�\�>\�u�:U��\0\�p\�$\�\�7�^\�[\�\�\���H\�>l\�K�+�\Z�ؑ*D`5�|�aс\�Ϭ۠\�e(��o\�\\\�\�\�[ ж��;�ͬ\�cIJf\�D]�\�y�<�5\�-tV\�9 d;n�\�\��\�\�=���B�5�ƺ�TKZ\�O߻z�^\�i\�oc[[�\�j�\�\�\��ݛ�`bO)?4S�6\�8>�^g~�+�v~���P\�A�\�\�l�5&տ\�Qd\�>\ZVi��ŔyVq\�\�\"4b\��<�#\ZQB\�|�\�\�e�\0i�Y�\��H���Ok9z\�\�\rͅ�GǴ\�\"6S+\�\�\�u�̭v��2_(5������:\�#|\�\�\�x>�\�q\�S��V��<\�%��Rޢ�F1\�;&D\�\�\�\"\�?�\�{-��\�\�D�hB\�\�n�u�\Z;�\�\��gٷ�\��40�Pjϱmv�r\�R�sO&=n!WG�ai(q�k)�6Ǒ\Z�\��\�n��+Y\�\�)i�ekp��\�\�S�mA�̰�|�\�2)#5\�\�v��nr\�Qհ\�\\\����\�]&�`֮,�/�f3�WsO4\�֕ҙ�� �\nlc\�;0\�a��\��]���H:o)�\�f���U\�\r7d�+FC8ph�:\�9o�B”�`\"�\��B?8���vp\�\�\�\�\�/�-\"��\"֡�[B�\'a\�<K\ZhS#o\�s� �3\�c9Ú\�g\�8\�\�興���������\0��W��GB\�yG�w�k�x\�M��u�\�[u�Z]~��I&\\\� oA4q\�~s��\"!3���@O\�W�\�m��\�x+\�tH\�UP\�\�kS�=�W\nt\�\�\�ú\�:cHpQؼƯ\�6(/�\�+���{=M�[@ï_�\�g��\�ţ�o,v����\"Fc�\�\�^ͰȌ\�\��>\��hj5MR���\'�I�R�\�!2%F��\�x\��uq��-k���\�/\���请_��D����� �\�\���v\�n.�&3\ZH0\�UCed��z\�\�g\\+מ \�~�]�p�\�i�Q�\0�ǚ�.�^(�\0c��#*�F|�\�\��IO9\\\�l���\�q숈������Gx��\��\0v-�ǚĨ�m\���\�S` �՚\�3L\�\� Ps� \�\�bm���>d�f+G\Z|Q\�/�\�_L�{h��\�#�u)6yC���p_\"\�\�i\�\�\�_�\Z^���|\�~e�\�4\�eK�\�1䝵\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ�q\n�;�\�\�\�M�(�\�$�\� \nVT�\�\�\�9�X\�[�j�\�\�:��\\<o\���ġ���\�\�܉�49���ȣY��NM[Hp\��D���\��Yx�쏕�t�Fk\ZM�/�����\\\�7�i��g\�(\�\�\�,\���ŝ�\�\�\�\��\�[e<n��\���\��i�\�l���\�v\Z\���_#[ ��m��\��t�?UEc�T@�$jؐa\�\�\Z\"\"\"\"\",[\�WO�G�}{\�����f\��ڒ\�s��\�_�[\"�e���D �; Ų�.!\�I ��($G8\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zx2q�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�×\n|h�C*,�\�eF�P���������dHP\ZT�\n4h\�$�$a\0\0��1�G4b�\�<�{�\�1�s��\�9UJ��<\�\�w��w=n᝚\�7Tz��\�k������*�^kﶋ\�|\�\Z+8R \�Bsd����\r^\�6��px\�\�&��\��\��\�Y\r�\�;N@\�+8���q��7�m�\�$wO�д�\���K�/`��Ftʺ�[\�T\�{\�~���~�\�}u\�\��[\�ka2��\�#�b\�6A\�k-6\�h��M����\�ה���r\�<\�6b\"\"\"\"\"\"\"��_\�^%\��}\�\�\�z�\'��\�_*��Sܩ�]TX\�\�\�21(np\� ^\�+��\�\�G���(m�\�љ���ou��O�g��\�KO9�C\��;�\0Ȕ\�Ҍ\�T[.�\��\�\�\�&�\�\�sMQ\"��ls� Ss�\�\�U����z��\�y\�cG�\��ז�]\�E\�b�\�IG\�Ӵ�vN cEl[A\�\04��\�b �8��R<\��$��O!�\'�s�1KW_t\�N%�ޚ\�\�aF��\�-�ɯ�d\�>lJJ���8�\�5\�O�&.J�Ǩ\�\�ȍ�o�\'Ģ�#0�\�o\�A\�n�K:v\��Ym7�[\n\�C@\�ͪ,\�5�7\��ȉ��Y����\�\�5~(\�?�\�\�\�6��]\�([\r\\\�\�\�\\\�+h\�r�>�K`NJܖD�lF5�\�\�C��\�aշ]7x�\�=\'m\�w\n\�9�}��}U�Acߌ\�t��r\�\�\�]��$\�s��8\�}��:\"\"\"\"\"\"���;\�~z3\�\�\�݅�\\�\0\�V\�q��J��\�lڎ����>\�*\�ð���\�\�d\rM�)Hz}�\�\�\�\��T%EE���e\r\re�\�\�݄*�jj�Rl�m\�l��ueet1\Zd� � ��E dʒQ\0y^\�\�\�?O��*],\�c\�5�2�5\�pk��yڢE�$s\�|ɚ��W6Id\�m&�C> �bZ޲\��\�Us\�HwȈ���������Ö�O��\�R��soh<��ZG�\�V\�MN�o��\Z[X\�`-m\�)��)c\�)� M����ݹ�\'��\0H\�J;+�\��A\�9D|\�kT\�e\�\0\�;���\�ǟ\\iz�Y�LJ\�\�\�U,��5\�\�M���\Z��|��|�a\�q��:\�{y��\r�l��8+�j\�˧�\�D H�Զ\� Ք�,%O���\�V���eeu\�igL\�\�ת��������\��\���Ѡk\�7$\�Xx���\��%l�N,�\ZV\�q`\�����*mt�\�.�Yٞ4���!�a��0^\��#p�df\\\� �vǷ9k��9�\�3��DDDDDEQO��w=��˺\�f8�Y+j�C�\Z\�L\�8�\�v]�b�^f056\�\�z�P�&t�k�$�\�YO�J�v �=\�\�A��\'�z��-+���\���\� ��S\�b˃8Z\�Dɻ�i�2\�ƣ�#��g\�\�tDDDDDDDDDDXs\�N��\�\�gl\�=�l\�\�yz�\�@6l�.\�\�ōi\�mۆ̩��\�e�tS���\�g\�(i��\�\'��Wv�b\�O�am�Y�\�G �\��4\\�\�ƒ\�Dz�5�d\'\�Q8�\�jG�˫�`dH�\n�_\�4�Jל\r��k\��\�\�f\�K\�V\�(�\�\��\0 \�\����A\�\��\�\�6 ��1�}�[����A\�����\�9�iqb��8DDDD^s\�!�\�%\�-�1\�\ZF�\�[�\� ,vX\�\�\�l\�\�f�\�X\�>3H\�c8\�r\�|gʇ\�B޶P\���Kۤ�f\�\�{�ͽl�7R��\�m�ԑ�\�+�3\�XI+\�\�k�ܽ�\�\�6\��c�i�u/\�G l���#n\�DX}�\�\�7��\�m���(j�A �L�\�j\�\�28�\0Dy$��E\r�\�\�4�Q���x\�\����;��\�\���\�Yrwl\�6O׭\�N�MH\�?Y\�\Z�o��\�Z\�q,$Fq+�\�s\�EP�r_&���t�S\�\�g��\n�f\�T;\0\�UΨ\�u �E-�s\r[d\�\�E&\�G �_.�\�4�ќ\�Wst?��\�\�\�]�=J\�\�g1qV��\�\�`�\�\"�`���k\�i\�SG�:�� �R6>2ƌ�Fr\�\"\"\"\"\�\�.C�\��/�\�ȕn��\�:\�\�6U��r�o鿍93Z�\r�9\�? ~[�g?\�\�/|���9���\�S$>7\"r�\����m\�*( \�\�\��H\�\��� vXL�\�{{f�� L�\�\'Sе�q�Pi\�\�F�S$aD\0�TA \�\��\�V�\�/�\�/)��\�s�\�ڈ������������QO)�a\�{��n�q�T\�\�0��Cfd�� \��\�\�u�<��\�[��8��� a���\��\�ףw�1�x�\�x�1\�7�Gb��{\�>[�\����X\���\"_�_ &�\�\�vZ�t�Q�|\�\�r�\���\�kb�m�:\�ϧ�>\�=�lMq\�.`ݙM \"\�\�\�\�/\�X\�4���\0���\�o-�\�\�ŝ˘�e�L\��u}Of\�\�\�#~\�3u$i\�+X瀱\�a\�\�6���p>��4֨;9ҾR��\06�H\�P׶[�X�e��m9\�\���iI\Z����c�#@kI�[�.n6I\�iqҾ\�-\�\0\�\�R�o���V�>��7���\�<\�=�\��\�\�\�kH����{���v\�wdui?�ۄ�(Nkǂ���k,bp�\�81#�Yw\�������So���<\��O ț_+ϒ\�\r\�dp\�\�W{Ng7���\0ZBe��\�\�9!\�\\H��������������\�\�k\�\�\� \�~�{P�W2k?~p\��+\�\����\�\�|>M�$\���\'\��\0P��c#˳�>�]n\rO��\�4 Ǘ�vGw�c$bh\�`j\�]z��F�1\0\"1\�˜\�\��\�1�keˆ�������\�w\ns e\�l\�-\��s}�XčJ\�9\�}��0�\0|{c\�\�\�\��UR�O4�m�e�vX�6�H\�a\��|��q5�R \�Z\�\����\�\�\rvK�s�\�9ض�Bc\�\�[�����_�`�Wj����\��W�\�}/돷�\\;\���>�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\����������_\��bN興���o0Eg�n��\0\"\�V\� ��\0�]L�\��\0�L�\�=)\\Y�y�\�9i��S�&�\�qQ\r�\�W\��\�5�{��\�Oh\����A�ߓ�\�\�\�DDDDDDDDDDDEX��\�\�ݼ\�\�!\�{\�\\e:4�`y| ;�\\�G�g\�nOd�\� ۟f�#{��\�ɟK��;@�\�\�({\r�\��f�=� �\�\\l�\�\�?\�\�°\0X�\0��Mʐz\"\"\"\"�\0\�2�aDV8e\Z׌�{r׌�v2ױ\�\�Z\�k��\�8\�3�(&�b\�#\������\�A\���AM�\�[ݧ\��1�{�\�m(�\�l�c\����\"\"\"\"\"\"\"\"\"\"\"\"��\07��Ɠ-\��:\�|g8�ۗs��\��ϴ��\����u�\�\r\�\�U\�\�xD!�2��Ŗ�\�\�\�\�ƴ�씹\�q�,0\��w�� c0쵍�\�\�\"\"\"\"(tx\�\�?8��\Zj@<\n�a��\�#\�l�r\�Y\�,�\�\�\�l�F�6�\���`00Cd\�\�x�S�v7�;O\Z��x�xq\�\�o�u6h���\�^\�\�-lYR�\�|��\0G�mq\�\�8�,F$O^8\�G|�\��D�g��3B��&�\0\�#�����\"\"\"\"\"\�\�n��|�yu\�IU-�#����\��\�`O�G�\�\�Ë\�\�q��W2�!\�.\�kYYkq�s��4DDDDDDDDDDDE��\03g\�\��\����5�\�K��0�l���G�p\'�+�қĐ\�\�\�#�\��Jc&LtsE�\�<|�>4�\�j_\�8�5z\�D\�p<�\�\��]�\�\�\"\�~�5�k���DDDDE�u�\Z9\�VU5�\�\�ئ6\�\�H~ϲ\�c0L4\���\��7\'��7�\���\�\"\"\"\"\"\"\"\"\"\"\".��\�4\�\�s�l)��b\������ #\� {\�V�?`Y�|�\��\�q\����hi�\�t\��c^\�\�\Z�\�j�\�y�`\�k\�ֱ�~\0\�\�\�[�;\��~\��Ȉ�����������������������������������������������������������\�',4,0,'','','',''),(41,4,6,'9305bf00e8022c7a','12242958235bf00e8006f72987476580','2018-11-17 12:50:08','2018-11-17 12:50:08','','','Contact Photos','4.jpg','image/jpeg',80,80,2355,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط7�.�kڐ�H\�$�Ͳ&a\�DK�(e.+7tE\�Y\�\�.M5\�\0+�\�\�\�JJ���: �3^�k\����GLv\�0iul\'\�9;3HSc�\�\�Օ��u)\�\�ѫ^>�9�ZM\�*��x\�\�.d% �\r1!h�u\�GS6���J\�\�9j�džBÏ-��_��e9+\r 0p�\�m<�\�\�Ƌ���\�?Jt>\�l�\�\�ϭ���u�1y[�U�:�^R���\0�rT �Ƕ>,G6�\��\�9\�� �\�\�\�o�CN0�!.��.�-�ӭ/\nC���)!i\�V�\�*\�q�㕈w�{\�C\�J�g]U%,}$�\��\�p����\�\�I��׉�\�\�5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#��N\�Ҏ�v��@F 37��\�\�W��K�����LE҂�C2��I�H\�5)�]i\����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��vb�?���N\Z \�\��\�\�S 6a\0��\0p��|;���8\��s�:S��7`�3��x\��5�2\�,�\���y\�)\�\r \�\�ɻ$��\�DW��\�t�iR\� fԷ=���\��\0�B\�\�mg/Ň��\�{\Z\�\�P�^��\�Z\��|\�!���v\Z&��I�\�^\n\�X<���\0��f\\�,��,zq�+u�\�c��.\�\�A�2\�\�;�\�\ZjI�\r#;Sؓ�z\�,`ͤg�R��2/\�Qe��N�-��鵍u�\�U�� [�R\���ڽb�:�����Xب�Fm �C2;-� B1�x�o:\�V\��\0Ww\�W��?[\�ڪ\�N��\\\�XbA���:�e]�X3�㭶�1\�4\�\�՞i�\�\�\�V[\�>$<�E��-{?j1��Ƕl�\\V�ޓ ���Y\"\�\ZQ�`e?d��\�fi��MzC6*�\�\��6���T��\nJ���RT�\�)V3�|gǾ3�\��\�q�g�\�j\'岙5\�O\�?I�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o�\�~�v�CZ\�\�s\r�\�v&t#�qxi\�[��|�\�q\�{�V�f vGƎ�\�Տ���\�^�n(v�\�;���\�\�?+S\"=)r[\r�%��u<r�\Z]\�+lSK�\0�gT\�\�D�\�F\�\����\�֫\�󷤆B�/�j��\�U�)�����\�;#�$X�0Z�\0H�\�\�i�:,ti\�MCC\�[�`?��\�q=C~P6S��Q����\0Z�YDPv\�n@׿�\�jd}��\0�/\��\�3\�\�q\�0+!�Ǎ�/\�6TRp\��-\�\�\�\�f �v\�\ZI�K�m�\�T�Z�S�`��嶛\�y\�\�;V\��\�y \�f�LrE\�} �ĚXRrau]�ޱMo�IC��!�\�[xuղ\�\�eXm.��O8\�9e\�\�_�\�\�TB��:�iM\�a����\�s�D�\�S�a6\��\�!\�7\��w\�yq\��2 x\�\�K!�\�|��\�I|qK����Nq��0�ij\�YD)��O9�s�\�qζCE�~Gg\'43��^[NH@��\�\��}�ieׇa\�\�~+[-)X\�P�\�\��\�',5,0,'','','',''),(42,4,6,'9305bf00e8022c7a','12242958235bf00e8006f72987476580','2018-11-17 12:50:08','2018-11-17 12:50:08','','','Contact Photos','4.jpg','image/jpeg',48,48,1489,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYZm�_HL�٤\�nj��\�\0�r��3_\�\���\r\�0�\�t�\ZÉm\�!.�ޫ\�\�ȏ�v.�\�?T��5<��2ޚΖ�\�#�pI:��VU5\�k<I�|< \�%aS\���MǘÍ�\�kL��N=vPtW{v\� \�G�lvW��\�4}���µ\�\�V*�2\�~\�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���P\�\�8R\��\0t %W�Y�/O��\�ZO���\��\0\�D�o�-� �\�a\�\� �^���-��\�,R\�\\u\�!Y� \�tu��\�\�U��5�t\�\�\��B[��Q\�\�\�\'�S�Y�\"P\�\n\�>VQ\� | #x˥��\�4��\�q�m\�Z����\n���\�5\�#g�-Ӟ�W]ۦ��Zjy�bN�-\�r53c-{{o\�+\�D\�\�\��P*���#T��-L\�\ZCM\��,fj�Y@\�g\\LnF\�#N�\�W\�\�-8S�HY\�\��t\�I�\�N,�\�ϳ\�\�S�\���^\�+�w~��Ak>�\�m����\�l���}\�h\� (��MN\�4,�^ J��1�(\�2\�b>\�\�\�{�(U��՚�ۭ)jdvvӢ�\�\�ڞT�\�Rw\�\�ƌת1\�\�\��3Z�^�F\���¶�\�r\�$㦣c\�a\�R&X$\�\�\�\�h�$c�a��8\"\�Z\�$B\�u�!����q6�!X\�gO�\rv�\�\�]��ZA/3{��^PQ[ˎ_�\�\�4%�5\�\��\0�%_rL��e\r�C\�^2���\� 8c� ��0��\�\�\�\�#�\�\�,�\�1�6\�M�(m \��\' N1�c{xy��ՠ/5[-&\�\�Z\�_��\�!dGl��x�\�\"�\"\�䭒><�%�R�\�eն�\�*\�<F=SV�i~��J�c2@\�Jn�n���r\�On6�=7�}Kw�\06 \�氥g\����?\� �\�\�x��W\"�4�[�&R�,���\�\�V�Cڣ�0�e?�� �\�\��e?\�\�͟�����uF�\�\�\�JD+��\�l�\�9\�^\�eH ��8�\0G Z���%?9\�~s\��\�',6,0,'','','',''),(43,5,7,'9305bf00e803570d','97971161215bf00e801fdd7464746900','2018-11-17 12:50:08','2018-11-17 12:50:08','','','Contact Photos','5.jpg','image/jpeg',300,300,11005,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`>V�\��<|\�\r\�\�Rľ\��\�vM��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\Ή�6�\�u\�x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7�\�+�\�,;:\�\�<Լe����\�KM�…�\�81f\�-��cM�Y�g�8�B�\"=;}��{.��v\0N\��U�XR�\��EFKi�Dl��uW\���(�*�\�l���(����\n\��ò�\��\0����\�\�bRuۆ\���q���\�\n\�\�;,\��q�i�\\�屋 3�:MUd350\�\Z�/Ř٢\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"���\�N�\�\��멶���c�P���|k\�\�Y�\�΀�\��!Z��n�M8��x%\\l�<X0����]�kٷ���s\�\�v��h��y�lW�Oeouodwɝcc:K\�y2���!JG\�9\�}�\�\�c�\���o\��\��\0|{\��������\�\��\����{Ȗ��j3\��\0�zײ\�0Mq\��\�9f�PF�G�ֲM6�#\��<roۓ\��a\r6�O]�\�P)(\�\"�\reMdQB� q�\"\�!\r��}�\�|��=\�˜\�g\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"-@���a���\�\��\�Ô�\���\�\0\�cJK�I��gƞp>D<>�U�\�\� \�03EW����\0�\�\��W%o�ſm��\�]\��\�;\�\�͋l\�\�\�f]�ռ�|\�&A=�1\r�\�#Å`�]1�\�\�E�<qtu��\�?\�?\�\��XSD��x:ge���\0 }�\�>�㛑��\�ؙ|~N\�*Yc+�+*�a� �j�\Z?Ћ�K}��$L\�Z\�\�Q\�β�\0P4`�4h�#\�\0\�G\0Y��!\�шBZ���k\�\�n�as\",=\�|z�\�\�#s/ky�q�M� R]\�S\�-H�kiu\�66\�r�������f\\fGx$��\�7z\��[�\�v������F� ^\�l���{\�\�\�\'$à�H\���y \�^�D#�\�bz\�:��Xd��vF4/��dD۸\�l�3\�͈f��]\�\�c�\�>��6��~�\��\�2��ϱ�8ke��\�ɇ\�\�6\�k�enq�Ɨ�ˠn�\�g/1�كs\�F|�\�<�o\�Rܵ-��&ͤl\�;v�=�|;�r\�\r\�a����k&@1��`\'?Hϛ�c ��\"\"\"\"\"\"\"\"\"\".2a b0BB��\�1�s\�G�8k\�\�.{ݜ5�\�s�\�\�UFަ�!�]\��?�\�Z\�\�\�> \�\�d�\�ƪ�\�\� ���IK\�[�@\�QK\Z\�m�_��)�X<}M�!>.,bb:��=\�\��\�䯻|G\�jO��[Z;d卮$W\��\�z\�?a�!\�8 \��dmf�L\�<++��n�&|\�6\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�S\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�J�>\rm�s>�)�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���X\�܍J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8 9R�\�7\�ș>�W�n\�I�#\�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W��\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�|0mw�H0�ch\��5�q�7\�\����F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��磃��\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J��\�pI_Xa�óqA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i!ʾ\�_0\�\�{\r�kA\"\�y�\�\�jwƯ��X*\�Z[\�l�3�Ɋ\�\���\�Il�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�YxF5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\".\"u�w��\�1�p%\�\n<�9~3����fZ���3\�Gc4�\"̿zF\�ȝ�\�Ƨ�V�\��ge8n\�Q\0഍�\�w�M��w�\�:�\Z�+C\r�q�oaC\�^Z������������\�\n\�(�\�|�$Y,οsOl��a\�G.�w�$\�#\�3\�\�=��\�)9p\�\"LS�y0FAU|�\\��\r�u�O�Rx��\�c\�m�f|F\�ceԄ\�\�9\�\�0���kr\�\�;�ynpϕ������H^�^\���ït_�\�\n 9�3\�:�^�d��\r\�\�\rMt`��!M����G5�f�$a��qI{ҋ\�}��<�q�+��w\�]T\��^U\�mp�ه\Z\��^�\�4깂v 3/��ska��\�\ne�.dlȌ)v\�\"\"\"\"\"\"\"\"\"\",>\��Y�;�\�\������8�j\�!`I��u��M��P\�8\�hh�1����\�y,�G-n��\�Vͤm�r(��7`�\�vjYyeS\�:������9 ȯ��&!��Y ]��\��vz���7���\Z�đ�yL�>^\�~M\�\�b\����a�W��a�`o V}z��`����6��%��\�@_֫\�`�n\�V�>Q7�;\���e�F��\�c\�t\�z�����\�vHn%By)Bh�`ϯ��~��\0�: \�\��)\�M�\�gk?J\�\rŒZ\�\�k<u���\�\�9I�5�u�\�m]9��_�\�\�b�\�]Q㔒eDDDDDDDDDDET7��Ǭ��� �\�]R�cxs�1ȕ�E�\��*&s_�j�|Hm��\�\�X�-\�$\�\�g0c�\r�`�u{�\�~\��\'<6\�\�s�D��G\�{[\n�?m������J�\'�\�ʒƓ(\�ibM&\"\��.(\�}w�xÏ9_R�f�\�:V��\�ȋ(SB����\�&\�Pq��\� ƈ�kY�ok�\�5\�Ǡ\"\"\",.\�\�z�7\�gY��\��\�+\�5:\�3]\�a4r�=\�o��\�\��-n��\"\�\\\�K3Ďs��\�\�F+\�N�,ÝLv{o\�\�\�0���2\��_,\�o�G\Zd����.]�\�\�\��\�c)k��|x��\�M\�\�&WB|\���� \��O��ӕ����_Y�Q\�n&\�\�\�i�]ג?�mݪ�ɕvd�4�\�u\�8�d3BpOsh8�6=LQF٬\�<H\���0E4h\�`cǎ4A\0&�b�֌BZ\�1�c�\�\\Ȉ����������/\�\���\�\�܅\���w(\�\�6��\��}�\�y�!G\�Ɍࡏm婶d_iS\�J�\�\��SI\�\�s�����&k\�^��^N\�6�^\�?\�\�\�\\\�!�\�k�\"�9\�MdR���\�dÐ��+D=#~F�{\�s�\�vا\�\�n�<u�\�Ȇ\�N�<�q�(�(ѣ:�\�\�k���C�=��ʼnѦ\�K��(\�,�\0�\�9�\�!r��~Z��lk���\�k��\�\�1����H>Sv\�!}\�\���]���\�`ٶ.6\�m�<8w�=<\�\�\��\�w\�a�p{x�T\�N[F¦�\"E,��\�d\�\�wV�}=�%\�|�w�;�4\�us��]��U�#\�u�a#XB���Α���;#\����\�1u���hB��`;x�MSZ\�u�M;N��\��}n�5EDaî���<<X�Ō5�cq\�\�g܅#�b�\�#\�\������������������\�F�ȧVt�\�\\\�\�\�g9qޫ\\�V<��D+�Mʾ�Dn\'�R\ZD�\�\�o\�G�h\�\�\�[���\�gW�\���o�\�q_i�\�\�)�+/\���w\"���q��\��B�+��3�Bٔ\�$\�ō�\�TJ�\�\�ˁ*\�\�vc����|g\�\�\�c\�u\�:\�v\�G,N\�e\��\�\�,���E`f\�\\֕��aWe�Bc\r�\n1�c �<�sՇY�q�7�\�\�[�jz\�\� ��;o��\�Ơs��\��\�#\���\���?��\��6e�\�v62\�ϰ�$�gN�rʙ6d���˔w��$\�;\�c�\�yLW��{�\�\�?̮�\�t⏨~)�̫t�`\�#ɛXJ�\�\\ob����)�bV�@4\"��2S#\�`�{<X�戈�����������L\� �I�F�\"\�0\�P�%fFP�DØA��s7�,{3��\�s�U��\�\�^�\������֪�Q�휇�q\�6X\�\�\��CqS���\�2���vغ�!�d �\�$�[ $�\�ߣ�\���ܵ\�&ls\�:\�y\�{/\�֧�L\�z�\"k\�6�O]:�fI�T3c�\�m�kXὶk�>ᕷ���uhO\�\�Myy῵��|�Ʌ[�\\\�||;9\�-�\�X_�q\�\�Q�G6s\�\�0�˱�*|נq=v\�\�|i�\\E$ꝋ�4\�+HB)Y�\��m|أ0^3�#H(�Ae���\�v0\�_ \�U\�|}�\�\�B\ruef��ƒ`4z��Z&c\rfZ\�61�\��\0,�9vs��DDDDDDDDDDDX\�\�>\�u�:U��\0\�p\�$\�\�7�^\�[\�\�\���H\�>l\�K�+�\Z�ؑ*D`5�|�aс\�Ϭ۠\�e(��o\�\\\�\�\�[ ж��;�ͬ\�cIJf\�D]�\�y�<�5\�-tV\�9 d;n�\�\��\�\�=���B�5�ƺ�TKZ\�O߻z�^\�i\�oc[[�\�j�\�\�\��ݛ�`bO)?4S�6\�8>�^g~�+�v~���P\�A�\�\�l�5&տ\�Qd\�>\ZVi��ŔyVq\�\�\"4b\��<�#\ZQB\�|�\�\�e�\0i�Y�\��H���Ok9z\�\�\rͅ�GǴ\�\"6S+\�\�\�u�̭v��2_(5������:\�#|\�\�\�x>�\�q\�S��V��<\�%��Rޢ�F1\�;&D\�\�\�\"\�?�\�{-��\�\�D�hB\�\�n�u�\Z;�\�\��gٷ�\��40�Pjϱmv�r\�R�sO&=n!WG�ai(q�k)�6Ǒ\Z�\��\�n��+Y\�\�)i�ekp��\�\�S�mA�̰�|�\�2)#5\�\�v��nr\�Qհ\�\\\����\�]&�`֮,�/�f3�WsO4\�֕ҙ�� �\nlc\�;0\�a��\��]���H:o)�\�f���U\�\r7d�+FC8ph�:\�9o�B”�`\"�\��B?8���vp\�\�\�\�\�/�-\"��\"֡�[B�\'a\�<K\ZhS#o\�s� �3\�c9Ú\�g\�8\�\�興���������\0��W��GB\�yG�w�k�x\�M��u�\�[u�Z]~��I&\\\� oA4q\�~s��\"!3���@O\�W�\�m��\�x+\�tH\�UP\�\�kS�=�W\nt\�\�\�ú\�:cHpQؼƯ\�6(/�\�+���{=M�[@ï_�\�g��\�ţ�o,v����\"Fc�\�\�^ͰȌ\�\��>\��hj5MR���\'�I�R�\�!2%F��\�x\��uq��-k���\�/\���请_��D����� �\�\���v\�n.�&3\ZH0\�UCed��z\�\�g\\+מ \�~�]�p�\�i�Q�\0�ǚ�.�^(�\0c��#*�F|�\�\��IO9\\\�l���\�q숈������Gx��\��\0v-�ǚĨ�m\���\�S` �՚\�3L\�\� Ps� \�\�bm���>d�f+G\Z|Q\�/�\�_L�{h��\�#�u)6yC���p_\"\�\�i\�\�\�_�\Z^���|\�~e�\�4\�eK�\�1䝵\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ�q\n�;�\�\�\�M�(�\�$�\� \nVT�\�\�\�9�X\�[�j�\�\�:��\\<o\���ġ���\�\�܉�49���ȣY��NM[Hp\��D���\��Yx�쏕�t�Fk\ZM�/�����\\\�7�i��g\�(\�\�\�,\���ŝ�\�\�\�\��\�[e<n��\���\��i�\�l���\�v\Z\���_#[ ��m��\��t�?UEc�T@�$jؐa\�\�\Z\"\"\"\"\",[\�WO�G�}{\�����f\��ڒ\�s��\�_�[\"�e���D �; Ų�.!\�I ��($G8\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zx2q�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�×\n|h�C*,�\�eF�P���������dHP\ZT�\n4h\�$�$a\0\0��1�G4b�\�<�{�\�1�s��\�9UJ��<\�\�w��w=n᝚\�7Tz��\�k������*�^kﶋ\�|\�\Z+8R \�Bsd����\r^\�6��px\�\�&��\��\��\�Y\r�\�;N@\�+8���q��7�m�\�$wO�д�\���K�/`��Ftʺ�[\�T\�{\�~���~�\�}u\�\��[\�ka2��\�#�b\�6A\�k-6\�h��M����\�ה���r\�<\�6b\"\"\"\"\"\"\"��_\�^%\��}\�\�\�z�\'��\�_*��Sܩ�]TX\�\�\�21(np\� ^\�+��\�\�G���(m�\�љ���ou��O�g��\�KO9�C\��;�\0Ȕ\�Ҍ\�T[.�\��\�\�\�&�\�\�sMQ\"��ls� Ss�\�\�U����z��\�y\�cG�\��ז�]\�E\�b�\�IG\�Ӵ�vN cEl[A\�\04��\�b �8��R<\��$��O!�\'�s�1KW_t\�N%�ޚ\�\�aF��\�-�ɯ�d\�>lJJ���8�\�5\�O�&.J�Ǩ\�\�ȍ�o�\'Ģ�#0�\�o\�A\�n�K:v\��Ym7�[\n\�C@\�ͪ,\�5�7\��ȉ��Y����\�\�5~(\�?�\�\�\�6��]\�([\r\\\�\�\�\\\�+h\�r�>�K`NJܖD�lF5�\�\�C��\�aշ]7x�\�=\'m\�w\n\�9�}��}U�Acߌ\�t��r\�\�\�]��$\�s��8\�}��:\"\"\"\"\"\"���;\�~z3\�\�\�݅�\\�\0\�V\�q��J��\�lڎ����>\�*\�ð���\�\�d\rM�)Hz}�\�\�\�\��T%EE���e\r\re�\�\�݄*�jj�Rl�m\�l��ueet1\Zd� � ��E dʒQ\0y^\�\�\�?O��*],\�c\�5�2�5\�pk��yڢE�$s\�|ɚ��W6Id\�m&�C> �bZ޲\��\�Us\�HwȈ���������Ö�O��\�R��soh<��ZG�\�V\�MN�o��\Z[X\�`-m\�)��)c\�)� M����ݹ�\'��\0H\�J;+�\��A\�9D|\�kT\�e\�\0\�;���\�ǟ\\iz�Y�LJ\�\�\�U,��5\�\�M���\Z��|��|�a\�q��:\�{y��\r�l��8+�j\�˧�\�D H�Զ\� Ք�,%O���\�V���eeu\�igL\�\�ת��������\��\���Ѡk\�7$\�Xx���\��%l�N,�\ZV\�q`\�����*mt�\�.�Yٞ4���!�a��0^\��#p�df\\\� �vǷ9k��9�\�3��DDDDDEQO��w=��˺\�f8�Y+j�C�\Z\�L\�8�\�v]�b�^f056\�\�z�P�&t�k�$�\�YO�J�v �=\�\�A��\'�z��-+���\���\� ��S\�b˃8Z\�Dɻ�i�2\�ƣ�#��g\�\�tDDDDDDDDDDXs\�N��\�\�gl\�=�l\�\�yz�\�@6l�.\�\�ōi\�mۆ̩��\�e�tS���\�g\�(i��\�\'��Wv�b\�O�am�Y�\�G �\��4\\�\�ƒ\�Dz�5�d\'\�Q8�\�jG�˫�`dH�\n�_\�4�Jל\r��k\��\�\�f\�K\�V\�(�\�\��\0 \�\����A\�\��\�\�6 ��1�}�[����A\�����\�9�iqb��8DDDD^s\�!�\�%\�-�1\�\ZF�\�[�\� ,vX\�\�\�l\�\�f�\�X\�>3H\�c8\�r\�|gʇ\�B޶P\���Kۤ�f\�\�{�ͽl�7R��\�m�ԑ�\�+�3\�XI+\�\�k�ܽ�\�\�6\��c�i�u/\�G l���#n\�DX}�\�\�7��\�m���(j�A �L�\�j\�\�28�\0Dy$��E\r�\�\�4�Q���x\�\����;��\�\���\�Yrwl\�6O׭\�N�MH\�?Y\�\Z�o��\�Z\�q,$Fq+�\�s\�EP�r_&���t�S\�\�g��\n�f\�T;\0\�UΨ\�u �E-�s\r[d\�\�E&\�G �_.�\�4�ќ\�Wst?��\�\�\�]�=J\�\�g1qV��\�\�`�\�\"�`���k\�i\�SG�:�� �R6>2ƌ�Fr\�\"\"\"\"\�\�.C�\��/�\�ȕn��\�:\�\�6U��r�o鿍93Z�\r�9\�? ~[�g?\�\�/|���9���\�S$>7\"r�\����m\�*( \�\�\��H\�\��� vXL�\�{{f�� L�\�\'Sе�q�Pi\�\�F�S$aD\0�TA \�\��\�V�\�/�\�/)��\�s�\�ڈ������������QO)�a\�{��n�q�T\�\�0��Cfd�� \��\�\�u�<��\�[��8��� a���\��\�ףw�1�x�\�x�1\�7�Gb��{\�>[�\����X\���\"_�_ &�\�\�vZ�t�Q�|\�\�r�\���\�kb�m�:\�ϧ�>\�=�lMq\�.`ݙM \"\�\�\�\�/\�X\�4���\0���\�o-�\�\�ŝ˘�e�L\��u}Of\�\�\�#~\�3u$i\�+X瀱\�a\�\�6���p>��4֨;9ҾR��\06�H\�P׶[�X�e��m9\�\���iI\Z����c�#@kI�[�.n6I\�iqҾ\�-\�\0\�\�R�o���V�>��7���\�<\�=�\��\�\�\�kH����{���v\�wdui?�ۄ�(Nkǂ���k,bp�\�81#�Yw\�������So���<\��O ț_+ϒ\�\r\�dp\�\�W{Ng7���\0ZBe��\�\�9!\�\\H��������������\�\�k\�\�\� \�~�{P�W2k?~p\��+\�\����\�\�|>M�$\���\'\��\0P��c#˳�>�]n\rO��\�4 Ǘ�vGw�c$bh\�`j\�]z��F�1\0\"1\�˜\�\��\�1�keˆ�������\�w\ns e\�l\�-\��s}�XčJ\�9\�}��0�\0|{c\�\�\�\��UR�O4�m�e�vX�6�H\�a\��|��q5�R \�Z\�\����\�\�\rvK�s�\�9ض�Bc\�\�[�����_�`�Wj����\��W�\�}/돷�\\;\���>�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\����������_\��bN興���o0Eg�n��\0\"\�V\� ��\0�]L�\��\0�L�\�=)\\Y�y�\�9i��S�&�\�qQ\r�\�W\��\�5�{��\�Oh\����A�ߓ�\�\�\�DDDDDDDDDDDEX��\�\�ݼ\�\�!\�{\�\\e:4�`y| ;�\\�G�g\�nOd�\� ۟f�#{��\�ɟK��;@�\�\�({\r�\��f�=� �\�\\l�\�\�?\�\�°\0X�\0��Mʐz\"\"\"\"�\0\�2�aDV8e\Z׌�{r׌�v2ױ\�\�Z\�k��\�8\�3�(&�b\�#\������\�A\���AM�\�[ݧ\��1�{�\�m(�\�l�c\����\"\"\"\"\"\"\"\"\"\"\"\"��\07��Ɠ-\��:\�|g8�ۗs��\��ϴ��\����u�\�\r\�\�U\�\�xD!�2��Ŗ�\�\�\�\�ƴ�씹\�q�,0\��w�� c0쵍�\�\�\"\"\"\"(tx\�\�?8��\Zj@<\n�a��\�#\�l�r\�Y\�,�\�\�\�l�F�6�\���`00Cd\�\�x�S�v7�;O\Z��x�xq\�\�o�u6h���\�^\�\�-lYR�\�|��\0G�mq\�\�8�,F$O^8\�G|�\��D�g��3B��&�\0\�#�����\"\"\"\"\"\�\�n��|�yu\�IU-�#����\��\�`O�G�\�\�Ë\�\�q��W2�!\�.\�kYYkq�s��4DDDDDDDDDDDE��\03g\�\��\����5�\�K��0�l���G�p\'�+�қĐ\�\�\�#�\��Jc&LtsE�\�<|�>4�\�j_\�8�5z\�D\�p<�\�\��]�\�\�\"\�~�5�k���DDDDE�u�\Z9\�VU5�\�\�ئ6\�\�H~ϲ\�c0L4\���\��7\'��7�\���\�\"\"\"\"\"\"\"\"\"\"\".��\�4\�\�s�l)��b\������ #\� {\�V�?`Y�|�\��\�q\����hi�\�t\��c^\�\�\Z�\�j�\�y�`\�k\�ֱ�~\0\�\�\�[�;\��~\��Ȉ�����������������������������������������������������������\�',4,0,'','','',''),(44,5,7,'9305bf00e803570d','97971161215bf00e801fdd7464746900','2018-11-17 12:50:08','2018-11-17 12:50:08','','','Contact Photos','5.jpg','image/jpeg',80,80,2355,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط7�.�kڐ�H\�$�Ͳ&a\�DK�(e.+7tE\�Y\�\�.M5\�\0+�\�\�\�JJ���: �3^�k\����GLv\�0iul\'\�9;3HSc�\�\�Օ��u)\�\�ѫ^>�9�ZM\�*��x\�\�.d% �\r1!h�u\�GS6���J\�\�9j�džBÏ-��_��e9+\r 0p�\�m<�\�\�Ƌ���\�?Jt>\�l�\�\�ϭ���u�1y[�U�:�^R���\0�rT �Ƕ>,G6�\��\�9\�� �\�\�\�o�CN0�!.��.�-�ӭ/\nC���)!i\�V�\�*\�q�㕈w�{\�C\�J�g]U%,}$�\��\�p����\�\�I��׉�\�\�5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#��N\�Ҏ�v��@F 37��\�\�W��K�����LE҂�C2��I�H\�5)�]i\����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��vb�?���N\Z \�\��\�\�S 6a\0��\0p��|;���8\��s�:S��7`�3��x\��5�2\�,�\���y\�)\�\r \�\�ɻ$��\�DW��\�t�iR\� fԷ=���\��\0�B\�\�mg/Ň��\�{\Z\�\�P�^��\�Z\��|\�!���v\Z&��I�\�^\n\�X<���\0��f\\�,��,zq�+u�\�c��.\�\�A�2\�\�;�\�\ZjI�\r#;Sؓ�z\�,`ͤg�R��2/\�Qe��N�-��鵍u�\�U�� [�R\���ڽb�:�����Xب�Fm �C2;-� B1�x�o:\�V\��\0Ww\�W��?[\�ڪ\�N��\\\�XbA���:�e]�X3�㭶�1\�4\�\�՞i�\�\�\�V[\�>$<�E��-{?j1��Ƕl�\\V�ޓ ���Y\"\�\ZQ�`e?d��\�fi��MzC6*�\�\��6���T��\nJ���RT�\�)V3�|gǾ3�\��\�q�g�\�j\'岙5\�O\�?I�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o�\�~�v�CZ\�\�s\r�\�v&t#�qxi\�[��|�\�q\�{�V�f vGƎ�\�Տ���\�^�n(v�\�;���\�\�?+S\"=)r[\r�%��u<r�\Z]\�+lSK�\0�gT\�\�D�\�F\�\����\�֫\�󷤆B�/�j��\�U�)�����\�;#�$X�0Z�\0H�\�\�i�:,ti\�MCC\�[�`?��\�q=C~P6S��Q����\0Z�YDPv\�n@׿�\�jd}��\0�/\��\�3\�\�q\�0+!�Ǎ�/\�6TRp\��-\�\�\�\�f �v\�\ZI�K�m�\�T�Z�S�`��嶛\�y\�\�;V\��\�y \�f�LrE\�} �ĚXRrau]�ޱMo�IC��!�\�[xuղ\�\�eXm.��O8\�9e\�\�_�\�\�TB��:�iM\�a����\�s�D�\�S�a6\��\�!\�7\��w\�yq\��2 x\�\�K!�\�|��\�I|qK����Nq��0�ij\�YD)��O9�s�\�qζCE�~Gg\'43��^[NH@��\�\��}�ieׇa\�\�~+[-)X\�P�\�\��\�',5,0,'','','',''),(45,5,7,'9305bf00e803570d','97971161215bf00e801fdd7464746900','2018-11-17 12:50:08','2018-11-17 12:50:08','','','Contact Photos','5.jpg','image/jpeg',48,48,1489,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYZm�_HL�٤\�nj��\�\0�r��3_\�\���\r\�0�\�t�\ZÉm\�!.�ޫ\�\�ȏ�v.�\�?T��5<��2ޚΖ�\�#�pI:��VU5\�k<I�|< \�%aS\���MǘÍ�\�kL��N=vPtW{v\� \�G�lvW��\�4}���µ\�\�V*�2\�~\�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���P\�\�8R\��\0t %W�Y�/O��\�ZO���\��\0\�D�o�-� �\�a\�\� �^���-��\�,R\�\\u\�!Y� \�tu��\�\�U��5�t\�\�\��B[��Q\�\�\�\'�S�Y�\"P\�\n\�>VQ\� | #x˥��\�4��\�q�m\�Z����\n���\�5\�#g�-Ӟ�W]ۦ��Zjy�bN�-\�r53c-{{o\�+\�D\�\�\��P*���#T��-L\�\ZCM\��,fj�Y@\�g\\LnF\�#N�\�W\�\�-8S�HY\�\��t\�I�\�N,�\�ϳ\�\�S�\���^\�+�w~��Ak>�\�m����\�l���}\�h\� (��MN\�4,�^ J��1�(\�2\�b>\�\�\�{�(U��՚�ۭ)jdvvӢ�\�\�ڞT�\�Rw\�\�ƌת1\�\�\��3Z�^�F\���¶�\�r\�$㦣c\�a\�R&X$\�\�\�\�h�$c�a��8\"\�Z\�$B\�u�!����q6�!X\�gO�\rv�\�\�]��ZA/3{��^PQ[ˎ_�\�\�4%�5\�\��\0�%_rL��e\r�C\�^2���\� 8c� ��0��\�\�\�\�#�\�\�,�\�1�6\�M�(m \��\' N1�c{xy��ՠ/5[-&\�\�Z\�_��\�!dGl��x�\�\"�\"\�䭒><�%�R�\�eն�\�*\�<F=SV�i~��J�c2@\�Jn�n���r\�On6�=7�}Kw�\06 \�氥g\����?\� �\�\�x��W\"�4�[�&R�,���\�\�V�Cڣ�0�e?�� �\�\��e?\�\�͟�����uF�\�\�\�JD+��\�l�\�9\�^\�eH ��8�\0G Z���%?9\�~s\��\�',6,0,'','','',''),(46,0,13,'9305bf00e80b8132','14369303895bf00e80b1e28207310424','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(47,0,13,'9305bf00e80b8132','14369303895bf00e80b1e28207310424','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(48,0,13,'9305bf00e80b8132','14369303895bf00e80b1e28207310424','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(49,6,8,'9305bf00e80e68a1','63436871415bf00e80dfe9c308856934','2018-11-17 12:50:08','2018-11-17 12:50:08','','','Contact Photos','6.jpg','image/jpeg',300,300,11005,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0\0 \n!\"1A#3BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`>V�\��<|\�\r\�\�Rľ\��\�vM��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\Ή�6�\�u\�x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)AT\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7�\�+�\�,;:\�\�<Լe����\�KM�…�\�81f\�-��cM�Y�g�8�B�\"=;}��{.��v\0N\��U�XR�\��EFKi�Dl��uW\���(�*�\�l���(����\n\��ò�\��\0����\�\�bRuۆ\���q���\�\n\�\�;,\��q�i�\\�屋 3�:MUd350\�\Z�/Ř٢\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"���\�N�\�\��멶���c�P���|k\�\�Y�\�΀�\��!Z��n�M8��x%\\l�<X0����]�kٷ���s\�\�v��h��y�lW�Oeouodwɝcc:K\�y2���!JG\�9\�}�\�\�c�\���o\��\��\0|{\��������\�\��\����{Ȗ��j3\��\0�zײ\�0Mq\��\�9f�PF�G�ֲM6�#\��<roۓ\��a\r6�O]�\�P)(\�\"�\reMdQB� q�\"\�!\r��}�\�|��=\�˜\�g\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"-@���a���\�\��\�Ô�\���\�\0\�cJK�I��gƞp>D<>�U�\�\� \�03EW����\0�\�\��W%o�ſm��\�]\��\�;\�\�͋l\�\�\�f]�ռ�|\�&A=�1\r�\�#Å`�]1�\�\�E�<qtu��\�?\�?\�\��XSD��x:ge���\0 }�\�>�㛑��\�ؙ|~N\�*Yc+�+*�a� �j�\Z?Ћ�K}��$L\�Z\�\�Q\�β�\0P4`�4h�#\�\0\�G\0Y��!\�шBZ���k\�\�n�as\",=\�|z�\�\�#s/ky�q�M� R]\�S\�-H�kiu\�66\�r�������f\\fGx$��\�7z\��[�\�v������F� ^\�l���{\�\�\�\'$à�H\���y \�^�D#�\�bz\�:��Xd��vF4/��dD۸\�l�3\�͈f��]\�\�c�\�>��6��~�\��\�2��ϱ�8ke��\�ɇ\�\�6\�k�enq�Ɨ�ˠn�\�g/1�كs\�F|�\�<�o\�Rܵ-��&ͤl\�;v�=�|;�r\�\r\�a����k&@1��`\'?Hϛ�c ��\"\"\"\"\"\"\"\"\"\".2a b0BB��\�1�s\�G�8k\�\�.{ݜ5�\�s�\�\�UFަ�!�]\��?�\�Z\�\�\�> \�\�d�\�ƪ�\�\� ���IK\�[�@\�QK\Z\�m�_��)�X<}M�!>.,bb:��=\�\��\�䯻|G\�jO��[Z;d卮$W\��\�z\�?a�!\�8 \��dmf�L\�<++��n�&|\�6\�>!\�m�8\�D\�*\�\��9\�]f�P\�u��\��_OEO��Í\Z0\�,k[���C�=�\0PDϋ1\�舼G�z\��=�\�$q�cx���@� 3 ��&�]�S\�dr \�\�<�1�\�8A&<�\��*<i\"#<�zE�\�m���asm[Z]\�ukn�e���8\�|\�qf\�a��x\0\�Ҧc^ڥ؜ųdxW����\�\�\\��׶\Z�*+�+)\�הw0eU\�S\\U\�,:�Z\�\�\�\�*\�<9\�f\02�J c\�\�7�5lw�\�W{�\�sl�w֞d��\�]g\�b\��D������\nX\�Z��\�u��i�2~�zk \�#\��JL豛ֈ�m�\�?-Z1�j\���5�\�ǟ\�<oi�\n&�X�\�x�qH\�;V�\Z[�<\�tpYŌ\�粃 ��\Z�k�\�\'nk�9\�׳�����57��\�`L��\�\�{�\�\�z�c\�$2X^\�‰\�1\�h\�\�\�\�\'RI.\\��Ν&D\�\�d\Z\\ɒ\�I2�ʒG\ZD�2 \��g��1^��s\�\�9\�\���>��\0�\�\�Kv\�\�\�s\�r?o�\"g]��\"~ \�d3N$a�L��#\���6�[\�J�>\rm�s>�)�/�DDE\nS�x\�6�!]M\����\�\�:�f^^Z\�\��86\�UI�|\�\�W�\���\�5\��@3N�ֿ�E�\n\�Q{\�Y{+\�B\�>\�/\�2u.I\�{\�wtӆ��`8\�&P\�D�&!,���0\�`�Lc<�\�J�`s�\\�\��\�k䣧�]\�\�<>#\�\�*�Q\�Z���X\�܍J6Aۨ�\�p�V\�\r\�ff�cA�6P�\�Ur\'@pf`�����������\">��r�\�~6x�\"�\�\�Nv\�\�,��� ^8 9R�\�7\�ș>�W�n\�I�#\�\�m^��s�8�W:�\� �����\�|�\��W\� isW!nTڌy��֓1Kn\�\�\�\Z��\�\�W��\'\�\\\�<G��u|\n�_�8\�N\�\�8`\�j\�\��� \ZP�|0mw�H0�ch\��5�q�7\�\����F�\nlpK�,�.$��DiQ�\r\�<y\0+^#\0\�{\�`��F\�1\�\�s�f�oQ\�A���+�\�Ӫ�_\�=��7q;\07�\rC\�.$�y\��C\�)��\r�ش� :ژvj\�J�ٍS�-��磃��\�\��\'P6��Y\���[�\Z\�\�mdnL\�\��\��W_���h\�㹲J��\�pI_Xa�óqA/\��\0�7C\�\�K ~�H\�݋$�g##Y�k5�f[��k×�\�v_���v0\��3�\�v�D���\0Թ�\� 3pd\�\�\�7}\�*��\�D��\� ����\�\�Fx����KZ\��,��>���\�\"\"\"(��\���c̞94\�m\�i!ʾ\�_0\�\�{\r�kA\"\�y�\�\�jwƯ��X*\�Z[\�l�3�Ɋ\�\���\�Il�\�ʋc� ��W^<�t��aG$�5\\�k#���q\�N�\�D�\�8�[�\�Hc�YxF5�s�\�]������������\�\�}ׂN��Okll~D^b\�Mx��\0�9�g\�T�Qcg�\�ی��aq톽�\��e\�p\�\�QKOѭ�͟\�Ks\�\�\�]\�\�%V\�v]����-�B}~ώ[��5%�\��\0�\\\�4-k�=ô�jK\�\r\\K_~BE,\".\"u�w��\�1�p%\�\n<�9~3����fZ���3\�Gc4�\"̿zF\�ȝ�\�Ƨ�V�\��ge8n\�Q\0഍�\�w�M��w�\�:�\Z�+C\r�q�oaC\�^Z������������\�\n\�(�\�|�$Y,οsOl��a\�G.�w�$\�#\�3\�\�=��\�)9p\�\"LS�y0FAU|�\\��\r�u�O�Rx��\�c\�m�f|F\�ceԄ\�\�9\�\�0���kr\�\�;�ynpϕ������H^�^\���ït_�\�\n 9�3\�:�^�d��\r\�\�\rMt`��!M����G5�f�$a��qI{ҋ\�}��<�q�+��w\�]T\��^U\�mp�ه\Z\��^�\�4깂v 3/��ska��\�\ne�.dlȌ)v\�\"\"\"\"\"\"\"\"\"\",>\��Y�;�\�\������8�j\�!`I��u��M��P\�8\�hh�1����\�y,�G-n��\�Vͤm�r(��7`�\�vjYyeS\�:������9 ȯ��&!��Y ]��\��vz���7���\Z�đ�yL�>^\�~M\�\�b\����a�W��a�`o V}z��`����6��%��\�@_֫\�`�n\�V�>Q7�;\���e�F��\�c\�t\�z�����\�vHn%By)Bh�`ϯ��~��\0�: \�\��)\�M�\�gk?J\�\rŒZ\�\�k<u���\�\�9I�5�u�\�m]9��_�\�\�b�\�]Q㔒eDDDDDDDDDDET7��Ǭ��� �\�]R�cxs�1ȕ�E�\��*&s_�j�|Hm��\�\�X�-\�$\�\�g0c�\r�`�u{�\�~\��\'<6\�\�s�D��G\�{[\n�?m������J�\'�\�ʒƓ(\�ibM&\"\��.(\�}w�xÏ9_R�f�\�:V��\�ȋ(SB����\�&\�Pq��\� ƈ�kY�ok�\�5\�Ǡ\"\"\",.\�\�z�7\�gY��\��\�+\�5:\�3]\�a4r�=\�o��\�\��-n��\"\�\\\�K3Ďs��\�\�F+\�N�,ÝLv{o\�\�\�0���2\��_,\�o�G\Zd����.]�\�\�\��\�c)k��|x��\�M\�\�&WB|\���� \��O��ӕ����_Y�Q\�n&\�\�\�i�]ג?�mݪ�ɕvd�4�\�u\�8�d3BpOsh8�6=LQF٬\�<H\���0E4h\�`cǎ4A\0&�b�֌BZ\�1�c�\�\\Ȉ����������/\�\���\�\�܅\���w(\�\�6��\��}�\�y�!G\�Ɍࡏm婶d_iS\�J�\�\��SI\�\�s�����&k\�^��^N\�6�^\�?\�\�\�\\\�!�\�k�\"�9\�MdR���\�dÐ��+D=#~F�{\�s�\�vا\�\�n�<u�\�Ȇ\�N�<�q�(�(ѣ:�\�\�k���C�=��ʼnѦ\�K��(\�,�\0�\�9�\�!r��~Z��lk���\�k��\�\�1����H>Sv\�!}\�\���]���\�`ٶ.6\�m�<8w�=<\�\�\��\�w\�a�p{x�T\�N[F¦�\"E,��\�d\�\�wV�}=�%\�|�w�;�4\�us��]��U�#\�u�a#XB���Α���;#\����\�1u���hB��`;x�MSZ\�u�M;N��\��}n�5EDaî���<<X�Ō5�cq\�\�g܅#�b�\�#\�\������������������\�F�ȧVt�\�\\\�\�\�g9qޫ\\�V<��D+�Mʾ�Dn\'�R\ZD�\�\�o\�G�h\�\�\�[���\�gW�\���o�\�q_i�\�\�)�+/\���w\"���q��\��B�+��3�Bٔ\�$\�ō�\�TJ�\�\�ˁ*\�\�vc����|g\�\�\�c\�u\�:\�v\�G,N\�e\��\�\�,���E`f\�\\֕��aWe�Bc\r�\n1�c �<�sՇY�q�7�\�\�[�jz\�\� ��;o��\�Ơs��\��\�#\���\���?��\��6e�\�v62\�ϰ�$�gN�rʙ6d���˔w��$\�;\�c�\�yLW��{�\�\�?̮�\�t⏨~)�̫t�`\�#ɛXJ�\�\\ob����)�bV�@4\"��2S#\�`�{<X�戈�����������L\� �I�F�\"\�0\�P�%fFP�DØA��s7�,{3��\�s�U��\�\�^�\������֪�Q�휇�q\�6X\�\�\��CqS���\�2���vغ�!�d �\�$�[ $�\�ߣ�\���ܵ\�&ls\�:\�y\�{/\�֧�L\�z�\"k\�6�O]:�fI�T3c�\�m�kXὶk�>ᕷ���uhO\�\�Myy῵��|�Ʌ[�\\\�||;9\�-�\�X_�q\�\�Q�G6s\�\�0�˱�*|נq=v\�\�|i�\\E$ꝋ�4\�+HB)Y�\��m|أ0^3�#H(�Ae���\�v0\�_ \�U\�|}�\�\�B\ruef��ƒ`4z��Z&c\rfZ\�61�\��\0,�9vs��DDDDDDDDDDDX\�\�>\�u�:U��\0\�p\�$\�\�7�^\�[\�\�\���H\�>l\�K�+�\Z�ؑ*D`5�|�aс\�Ϭ۠\�e(��o\�\\\�\�\�[ ж��;�ͬ\�cIJf\�D]�\�y�<�5\�-tV\�9 d;n�\�\��\�\�=���B�5�ƺ�TKZ\�O߻z�^\�i\�oc[[�\�j�\�\�\��ݛ�`bO)?4S�6\�8>�^g~�+�v~���P\�A�\�\�l�5&տ\�Qd\�>\ZVi��ŔyVq\�\�\"4b\��<�#\ZQB\�|�\�\�e�\0i�Y�\��H���Ok9z\�\�\rͅ�GǴ\�\"6S+\�\�\�u�̭v��2_(5������:\�#|\�\�\�x>�\�q\�S��V��<\�%��Rޢ�F1\�;&D\�\�\�\"\�?�\�{-��\�\�D�hB\�\�n�u�\Z;�\�\��gٷ�\��40�Pjϱmv�r\�R�sO&=n!WG�ai(q�k)�6Ǒ\Z�\��\�n��+Y\�\�)i�ekp��\�\�S�mA�̰�|�\�2)#5\�\�v��nr\�Qհ\�\\\����\�]&�`֮,�/�f3�WsO4\�֕ҙ�� �\nlc\�;0\�a��\��]���H:o)�\�f���U\�\r7d�+FC8ph�:\�9o�B”�`\"�\��B?8���vp\�\�\�\�\�/�-\"��\"֡�[B�\'a\�<K\ZhS#o\�s� �3\�c9Ú\�g\�8\�\�興���������\0��W��GB\�yG�w�k�x\�M��u�\�[u�Z]~��I&\\\� oA4q\�~s��\"!3���@O\�W�\�m��\�x+\�tH\�UP\�\�kS�=�W\nt\�\�\�ú\�:cHpQؼƯ\�6(/�\�+���{=M�[@ï_�\�g��\�ţ�o,v����\"Fc�\�\�^ͰȌ\�\��>\��hj5MR���\'�I�R�\�!2%F��\�x\��uq��-k���\�/\���请_��D����� �\�\���v\�n.�&3\ZH0\�UCed��z\�\�g\\+מ \�~�]�p�\�i�Q�\0�ǚ�.�^(�\0c��#*�F|�\�\��IO9\\\�l���\�q숈������Gx��\��\0v-�ǚĨ�m\���\�S` �՚\�3L\�\� Ps� \�\�bm���>d�f+G\Z|Q\�/�\�_L�{h��\�#�u)6yC���p_\"\�\�i\�\�\�_�\Z^���|\�~e�\�4\�eK�\�1䝵\�*\�<\�Dh���������\�{\�$\�\�o<\�\�;�^�Ɯ{G:�b��3�ǃ�q\n�;�\�\�\�M�(�\�$�\� \nVT�\�\�\�9�X\�[�j�\�\�:��\\<o\���ġ���\�\�܉�49���ȣY��NM[Hp\��D���\��Yx�쏕�t�Fk\ZM�/�����\\\�7�i��g\�(\�\�\�,\���ŝ�\�\�\�\��\�[e<n��\���\��i�\�l���\�v\Z\���_#[ ��m��\��t�?UEc�T@�$jؐa\�\�\Z\"\"\"\"\",[\�WO�G�}{\�����f\��ڒ\�s��\�_�[\"�e���D �; Ų�.!\�I ��($G8\� U�m��\��\0�˝S�`H\�x[m��\�$\�\Zx2q�\�\�\�$\��xo���\�\�@�YF�3�+hq�\�Ӹ��y_GּD�I\�]��\�=6n=٢F\�y���8��\�z.g2W\�8�qW�h֏�X\��1�����lʶ\�\Z\�%�}9\�_\0w��5.��\�z�ݴ}�s���[k�o3_\�\�\n\�N����\�×\n|h�C*,�\�eF�P���������dHP\ZT�\n4h\�$�$a\0\0��1�G4b�\�<�{�\�1�s��\�9UJ��<\�\�w��w=n᝚\�7Tz��\�k������*�^kﶋ\�|\�\Z+8R \�Bsd����\r^\�6��px\�\�&��\��\��\�Y\r�\�;N@\�+8���q��7�m�\�$wO�д�\���K�/`��Ftʺ�[\�T\�{\�~���~�\�}u\�\��[\�ka2��\�#�b\�6A\�k-6\�h��M����\�ה���r\�<\�6b\"\"\"\"\"\"\"��_\�^%\��}\�\�\�z�\'��\�_*��Sܩ�]TX\�\�\�21(np\� ^\�+��\�\�G���(m�\�љ���ou��O�g��\�KO9�C\��;�\0Ȕ\�Ҍ\�T[.�\��\�\�\�&�\�\�sMQ\"��ls� Ss�\�\�U����z��\�y\�cG�\��ז�]\�E\�b�\�IG\�Ӵ�vN cEl[A\�\04��\�b �8��R<\��$��O!�\'�s�1KW_t\�N%�ޚ\�\�aF��\�-�ɯ�d\�>lJJ���8�\�5\�O�&.J�Ǩ\�\�ȍ�o�\'Ģ�#0�\�o\�A\�n�K:v\��Ym7�[\n\�C@\�ͪ,\�5�7\��ȉ��Y����\�\�5~(\�?�\�\�\�6��]\�([\r\\\�\�\�\\\�+h\�r�>�K`NJܖD�lF5�\�\�C��\�aշ]7x�\�=\'m\�w\n\�9�}��}U�Acߌ\�t��r\�\�\�]��$\�s��8\�}��:\"\"\"\"\"\"���;\�~z3\�\�\�݅�\\�\0\�V\�q��J��\�lڎ����>\�*\�ð���\�\�d\rM�)Hz}�\�\�\�\��T%EE���e\r\re�\�\�݄*�jj�Rl�m\�l��ueet1\Zd� � ��E dʒQ\0y^\�\�\�?O��*],\�c\�5�2�5\�pk��yڢE�$s\�|ɚ��W6Id\�m&�C> �bZ޲\��\�Us\�HwȈ���������Ö�O��\�R��soh<��ZG�\�V\�MN�o��\Z[X\�`-m\�)��)c\�)� M����ݹ�\'��\0H\�J;+�\��A\�9D|\�kT\�e\�\0\�;���\�ǟ\\iz�Y�LJ\�\�\�U,��5\�\�M���\Z��|��|�a\�q��:\�{y��\r�l��8+�j\�˧�\�D H�Զ\� Ք�,%O���\�V���eeu\�igL\�\�ת��������\��\���Ѡk\�7$\�Xx���\��%l�N,�\ZV\�q`\�����*mt�\�.�Yٞ4���!�a��0^\��#p�df\\\� �vǷ9k��9�\�3��DDDDDEQO��w=��˺\�f8�Y+j�C�\Z\�L\�8�\�v]�b�^f056\�\�z�P�&t�k�$�\�YO�J�v �=\�\�A��\'�z��-+���\���\� ��S\�b˃8Z\�Dɻ�i�2\�ƣ�#��g\�\�tDDDDDDDDDDXs\�N��\�\�gl\�=�l\�\�yz�\�@6l�.\�\�ōi\�mۆ̩��\�e�tS���\�g\�(i��\�\'��Wv�b\�O�am�Y�\�G �\��4\\�\�ƒ\�Dz�5�d\'\�Q8�\�jG�˫�`dH�\n�_\�4�Jל\r��k\��\�\�f\�K\�V\�(�\�\��\0 \�\����A\�\��\�\�6 ��1�}�[����A\�����\�9�iqb��8DDDD^s\�!�\�%\�-�1\�\ZF�\�[�\� ,vX\�\�\�l\�\�f�\�X\�>3H\�c8\�r\�|gʇ\�B޶P\���Kۤ�f\�\�{�ͽl�7R��\�m�ԑ�\�+�3\�XI+\�\�k�ܽ�\�\�6\��c�i�u/\�G l���#n\�DX}�\�\�7��\�m���(j�A �L�\�j\�\�28�\0Dy$��E\r�\�\�4�Q���x\�\����;��\�\���\�Yrwl\�6O׭\�N�MH\�?Y\�\Z�o��\�Z\�q,$Fq+�\�s\�EP�r_&���t�S\�\�g��\n�f\�T;\0\�UΨ\�u �E-�s\r[d\�\�E&\�G �_.�\�4�ќ\�Wst?��\�\�\�]�=J\�\�g1qV��\�\�`�\�\"�`���k\�i\�SG�:�� �R6>2ƌ�Fr\�\"\"\"\"\�\�.C�\��/�\�ȕn��\�:\�\�6U��r�o鿍93Z�\r�9\�? ~[�g?\�\�/|���9���\�S$>7\"r�\����m\�*( \�\�\��H\�\��� vXL�\�{{f�� L�\�\'Sе�q�Pi\�\�F�S$aD\0�TA \�\��\�V�\�/�\�/)��\�s�\�ڈ������������QO)�a\�{��n�q�T\�\�0��Cfd�� \��\�\�u�<��\�[��8��� a���\��\�ףw�1�x�\�x�1\�7�Gb��{\�>[�\����X\���\"_�_ &�\�\�vZ�t�Q�|\�\�r�\���\�kb�m�:\�ϧ�>\�=�lMq\�.`ݙM \"\�\�\�\�/\�X\�4���\0���\�o-�\�\�ŝ˘�e�L\��u}Of\�\�\�#~\�3u$i\�+X瀱\�a\�\�6���p>��4֨;9ҾR��\06�H\�P׶[�X�e��m9\�\���iI\Z����c�#@kI�[�.n6I\�iqҾ\�-\�\0\�\�R�o���V�>��7���\�<\�=�\��\�\�\�kH����{���v\�wdui?�ۄ�(Nkǂ���k,bp�\�81#�Yw\�������So���<\��O ț_+ϒ\�\r\�dp\�\�W{Ng7���\0ZBe��\�\�9!\�\\H��������������\�\�k\�\�\� \�~�{P�W2k?~p\��+\�\����\�\�|>M�$\���\'\��\0P��c#˳�>�]n\rO��\�4 Ǘ�vGw�c$bh\�`j\�]z��F�1\0\"1\�˜\�\��\�1�keˆ�������\�w\ns e\�l\�-\��s}�XčJ\�9\�}��0�\0|{c\�\�\�\��UR�O4�m�e�vX�6�H\�a\��|��q5�R \�Z\�\����\�\�\rvK�s�\�9ض�Bc\�\�[�����_�`�Wj����\��W�\�}/돷�\\;\���>�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\����������_\��bN興���o0Eg�n��\0\"\�V\� ��\0�]L�\��\0�L�\�=)\\Y�y�\�9i��S�&�\�qQ\r�\�W\��\�5�{��\�Oh\����A�ߓ�\�\�\�DDDDDDDDDDDEX��\�\�ݼ\�\�!\�{\�\\e:4�`y| ;�\\�G�g\�nOd�\� ۟f�#{��\�ɟK��;@�\�\�({\r�\��f�=� �\�\\l�\�\�?\�\�°\0X�\0��Mʐz\"\"\"\"�\0\�2�aDV8e\Z׌�{r׌�v2ױ\�\�Z\�k��\�8\�3�(&�b\�#\������\�A\���AM�\�[ݧ\��1�{�\�m(�\�l�c\����\"\"\"\"\"\"\"\"\"\"\"\"��\07��Ɠ-\��:\�|g8�ۗs��\��ϴ��\����u�\�\r\�\�U\�\�xD!�2��Ŗ�\�\�\�\�ƴ�씹\�q�,0\��w�� c0쵍�\�\�\"\"\"\"(tx\�\�?8��\Zj@<\n�a��\�#\�l�r\�Y\�,�\�\�\�l�F�6�\���`00Cd\�\�x�S�v7�;O\Z��x�xq\�\�o�u6h���\�^\�\�-lYR�\�|��\0G�mq\�\�8�,F$O^8\�G|�\��D�g��3B��&�\0\�#�����\"\"\"\"\"\�\�n��|�yu\�IU-�#����\��\�`O�G�\�\�Ë\�\�q��W2�!\�.\�kYYkq�s��4DDDDDDDDDDDE��\03g\�\��\����5�\�K��0�l���G�p\'�+�қĐ\�\�\�#�\��Jc&LtsE�\�<|�>4�\�j_\�8�5z\�D\�p<�\�\��]�\�\�\"\�~�5�k���DDDDE�u�\Z9\�VU5�\�\�ئ6\�\�H~ϲ\�c0L4\���\��7\'��7�\���\�\"\"\"\"\"\"\"\"\"\"\".��\�4\�\�s�l)��b\������ #\� {\�V�?`Y�|�\��\�q\����hi�\�t\��c^\�\�\Z�\�j�\�y�`\�k\�ֱ�~\0\�\�\�[�;\��~\��Ȉ�����������������������������������������������������������\�',4,0,'','','',''),(50,6,8,'9305bf00e80e68a1','63436871415bf00e80dfe9c308856934','2018-11-17 12:50:08','2018-11-17 12:50:08','','','Contact Photos','6.jpg','image/jpeg',80,80,2355,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0+\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط7�.�kڐ�H\�$�Ͳ&a\�DK�(e.+7tE\�Y\�\�.M5\�\0+�\�\�\�JJ���: �3^�k\����GLv\�0iul\'\�9;3HSc�\�\�Օ��u)\�\�ѫ^>�9�ZM\�*��x\�\�.d% �\r1!h�u\�GS6���J\�\�9j�džBÏ-��_��e9+\r 0p�\�m<�\�\�Ƌ���\�?Jt>\�l�\�\�ϭ���u�1y[�U�:�^R���\0�rT �Ƕ>,G6�\��\�9\�� �\�\�\�o�CN0�!.��.�-�ӭ/\nC���)!i\�V�\�*\�q�㕈w�{\�C\�J�g]U%,}$�\��\�p����\�\�I��׉�\�\�5��W�ț�$�D�E�W�I.f\"\�\�A��\��պ�\0t\�KDu\�Y\�\Z�%ލj�R\� \�n\� 2�4��\���\�J ��0��f0�L<\�#��N\�Ҏ�v��@F 37��\�\�W��K�����LE҂�C2��I�H\�5)�]i\����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��vb�?���N\Z \�\��\�\�S 6a\0��\0p��|;���8\��s�:S��7`�3��x\��5�2\�,�\���y\�)\�\r \�\�ɻ$��\�DW��\�t�iR\� fԷ=���\��\0�B\�\�mg/Ň��\�{\Z\�\�P�^��\�Z\��|\�!���v\Z&��I�\�^\n\�X<���\0��f\\�,��,zq�+u�\�c��.\�\�A�2\�\�;�\�\ZjI�\r#;Sؓ�z\�,`ͤg�R��2/\�Qe��N�-��鵍u�\�U�� [�R\���ڽb�:�����Xب�Fm �C2;-� B1�x�o:\�V\��\0Ww\�W��?[\�ڪ\�N��\\\�XbA���:�e]�X3�㭶�1\�4\�\�՞i�\�\�\�V[\�>$<�E��-{?j1��Ƕl�\\V�ޓ ���Y\"\�\ZQ�`e?d��\�fi��MzC6*�\�\��6���T��\nJ���RT�\�)V3�|gǾ3�\��\�q�g�\�j\'岙5\�O\�?I�II�(��\�\rn�w�s\ZQ3q\�$L��\�%r�\ZS��4\�j\0�*8}\�e�92(w\�f�\r\\�\�GAW\�#\0����xؘxx�Z2*.86\�\��d@���f[a�\�\��}�s�m}Bِn\�6=\"��+o�\�~�v�CZ\�\�s\r�\�v&t#�qxi\�[��|�\�q\�{�V�f vGƎ�\�Տ���\�^�n(v�\�;���\�\�?+S\"=)r[\r�%��u<r�\Z]\�+lSK�\0�gT\�\�D�\�F\�\����\�֫\�󷤆B�/�j��\�U�)�����\�;#�$X�0Z�\0H�\�\�i�:,ti\�MCC\�[�`?��\�q=C~P6S��Q����\0Z�YDPv\�n@׿�\�jd}��\0�/\��\�3\�\�q\�0+!�Ǎ�/\�6TRp\��-\�\�\�\�f �v\�\ZI�K�m�\�T�Z�S�`��嶛\�y\�\�;V\��\�y \�f�LrE\�} �ĚXRrau]�ޱMo�IC��!�\�[xuղ\�\�eXm.��O8\�9e\�\�_�\�\�TB��:�iM\�a����\�s�D�\�S�a6\��\�!\�7\��w\�yq\��2 x\�\�K!�\�|��\�I|qK����Nq��0�ij\�YD)��O9�s�\�qζCE�~Gg\'43��^[NH@��\�\��}�ieׇa\�\�~+[-)X\�P�\�\��\�',5,0,'','','',''),(51,6,8,'9305bf00e80e68a1','63436871415bf00e80dfe9c308856934','2018-11-17 12:50:08','2018-11-17 12:50:08','','','Contact Photos','6.jpg','image/jpeg',48,48,1489,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T��t�,\�i�\�h��Nq�\�%\�\�\�,?�e\�grF ,���#�ڕ�\�H�\�۪pVYZm�_HL�٤\�nj��\�\0�r��3_\�\���\r\�0�\�t�\ZÉm\�!.�ޫ\�\�ȏ�v.�\�?T��5<��2ޚΖ�\�#�pI:��VU5\�k<I�|< \�%aS\���MǘÍ�\�kL��N=vPtW{v\� \�G�lvW��\�4}���µ\�\�V*�2\�~\�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���P\�\�8R\��\0t %W�Y�/O��\�ZO���\��\0\�D�o�-� �\�a\�\� �^���-��\�,R\�\\u\�!Y� \�tu��\�\�U��5�t\�\�\��B[��Q\�\�\�\'�S�Y�\"P\�\n\�>VQ\� | #x˥��\�4��\�q�m\�Z����\n���\�5\�#g�-Ӟ�W]ۦ��Zjy�bN�-\�r53c-{{o\�+\�D\�\�\��P*���#T��-L\�\ZCM\��,fj�Y@\�g\\LnF\�#N�\�W\�\�-8S�HY\�\��t\�I�\�N,�\�ϳ\�\�S�\���^\�+�w~��Ak>�\�m����\�l���}\�h\� (��MN\�4,�^ J��1�(\�2\�b>\�\�\�{�(U��՚�ۭ)jdvvӢ�\�\�ڞT�\�Rw\�\�ƌת1\�\�\��3Z�^�F\���¶�\�r\�$㦣c\�a\�R&X$\�\�\�\�h�$c�a��8\"\�Z\�$B\�u�!����q6�!X\�gO�\rv�\�\�]��ZA/3{��^PQ[ˎ_�\�\�4%�5\�\��\0�%_rL��e\r�C\�^2���\� 8c� ��0��\�\�\�\�#�\�\�,�\�1�6\�M�(m \��\' N1�c{xy��ՠ/5[-&\�\�Z\�_��\�!dGl��x�\�\"�\"\�䭒><�%�R�\�eն�\�*\�<F=SV�i~��J�c2@\�Jn�n���r\�On6�=7�}Kw�\06 \�氥g\����?\� �\�\�x��W\"�4�[�&R�,���\�\�V�Cڣ�0�e?�� �\�\��e?\�\�͟�����uF�\�\�\�JD+��\�l�\�9\�^\�eH ��8�\0G Z���%?9\�~s\��\�',6,0,'','','',''),(52,3,14,'9305bf01a84c7ec6','21202845355bf01a84c5d33470288998','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(53,3,14,'9305bf01a84c7ec6','21202845355bf01a84c5d33470288998','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(54,3,14,'9305bf01a84c7ec6','21202845355bf01a84c5d33470288998','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(55,2,15,'9305bf01a87c0b81','43713557095bf01a87be90d132625601','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(56,2,15,'9305bf01a87c0b81','43713557095bf01a87be90d132625601','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(57,2,15,'9305bf01a87c0b81','43713557095bf01a87be90d132625601','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(58,4,16,'9305bf01b2f3b2a5','17505033475bf01b2f38ff6177578340','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(59,4,16,'9305bf01b2f3b2a5','17505033475bf01b2f38ff6177578340','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(60,4,16,'9305bf01b2f3b2a5','17505033475bf01b2f38ff6177578340','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(61,2,17,'9305bf01b31f0b98','10942403815bf01b31eec59540800317','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(62,2,17,'9305bf01b31f0b98','10942403815bf01b31eec59540800317','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(63,2,17,'9305bf01b31f0b98','10942403815bf01b31eec59540800317','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(64,5,18,'9305bf01b7c2bcd7','18858997325bf01b7c29d79163158635','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(65,5,18,'9305bf01b7c2bcd7','18858997325bf01b7c29d79163158635','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(66,5,18,'9305bf01b7c2bcd7','18858997325bf01b7c29d79163158635','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(67,2,19,'9305bf01b7eb4ee9','34785303845bf01b7eb2f18737560971','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(68,2,19,'9305bf01b7eb4ee9','34785303845bf01b7eb2f18737560971','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(69,2,19,'9305bf01b7eb4ee9','34785303845bf01b7eb2f18737560971','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(70,6,20,'9305bf01b9732a1c','56404448515bf01b9730801345691622','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(71,6,20,'9305bf01b9732a1c','56404448515bf01b9730801345691622','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(72,6,20,'9305bf01b9732a1c','56404448515bf01b9730801345691622','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','12287146285bf00e7fd3b7e500413187-4.jpg?ts=1542459007','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(73,2,21,'9305bf01b999ea44','14034074815bf01b999cc19093001643','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(74,2,21,'9305bf01b999ea44','14034074815bf01b999cc19093001643','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(75,2,21,'9305bf01b999ea44','14034074815bf01b999cc19093001643','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(76,4,22,'9305bf01bd73e275','11253258925bf01bd73be2b220663529','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(77,4,22,'9305bf01bd73e275','11253258925bf01bd73be2b220663529','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(78,4,22,'9305bf01bd73e275','11253258925bf01bd73be2b220663529','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','15820583805bf00e7fd7909940374120-4.jpg?ts=1542459007','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(79,3,23,'9305bf01bd94ffec','13931663105bf01bd94d90e243464200','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(80,3,23,'9305bf01bd94ffec','13931663105bf01bd94d90e243464200','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(81,3,23,'9305bf01bd94ffec','13931663105bf01bd94d90e243464200','2018-11-17 13:50:05','2018-11-17 13:50:05','','','Contact Photos','12242958235bf00e8006f72987476580-4.jpg?ts=1542459008','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(82,6,24,'9305bf01c3d40ea6','10196270915bf01c3d3dcff106620826','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(83,6,24,'9305bf01c3d40ea6','10196270915bf01c3d3dcff106620826','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(84,6,24,'9305bf01c3d40ea6','10196270915bf01c3d3dcff106620826','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','97971161215bf00e801fdd7464746900-4.jpg?ts=1542459008','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''),(85,5,25,'9305bf01c3fdb20a','11789807665bf01c3fd8ccd829485384','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','image/jpeg',300,300,11008,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 ,,\0�\�\0\0\0\0\0\0\0\0\0\0\0\n  �\�\08\0 \0\0\0 \n!\"13A#BQ��$%2Saqs��\�\0\0\0?\0�\�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"/6\�^b\� \�m� ��S\�m&��m�p��KY!\�\�\�\�K �V\�~\�4 +\�/r9�f3�D뺞����g\�]L\�\�ϵ[d_\�\"��W\��Ķ��Hx�\�x.�+\'=���Y����f0H�\�F��}`V�\��<|\�\r\�\�Rľ\��\�v=��/\�y���\�Z�d�\�{\�.%F2�9#�1�\\�?\�C���V�ގ\�\r\��Mƕ�M\�G\�9��O�W��ag\�,�\"Q\�\�x7\�\�a\�\����6\�-��Nл�\�\�\�q���\�z��\�.�\�\�-̡������n�ic!���I)�\�\0�sp1�ؕ׏���9J��h�\�^I\�\�\\΋�6�\�u��x�L\�8��x\���m����\��V\�m�؂P�bH�� |��u\�J\�\�=\�-KS\�NS�\�ܛW�\�y�=^-\�ϬM)T\�2\�1CO$y�Q2Ka��(�#��q�\���:\�\���O�\�\�y\�WPK�g\�\�\�ν\�C(�@l<�k�\0k��\�8�5��\�o\�#\���$\Z\�;\�\�ù�G7��j��\�s�\�E��\��\�5/h\�>e{R\�A ��b;\'N Y��en\�eEŖc\�\������N\�m|�˪䝀��\�l����\�Q�Zo�[ &�U\�t(�J,���\�\�,\�>�1l�\�ƒ���Dp\���\0\�+��6���v\�\0\�/\\l<��B���\�2>\\|\Zf\�>9lb\� \�ΓUY ÍL9ƅ-��f6h����������������#\�A��t6=:\�m�|�\�\�$�\0\�-}�w\�6A�\�9\�� �\�+P��\�\�\0��o������\�+�\�{6��_n{���Ѷm�o6-��i\�\�\��3�lgIy&T��\�)H�\�9϶=��c\�?�\���\��\0�{\���\�8�\0\� �O\�\�\��\0M\���-\'.\�g�=�\0 ��e�`�\�7\�/��r\�L��\�-�d�m:G�\�Dx\�\�\r�\'\�\rj\�\Z:*mb��_\�j�RQ\�E\ZʚȢ�@\�\�0E�0By�kq�v\\�g.s�������������������\�\�Ɇ�\��[\�3PK\�;�\�\�\\�=�).�&\��\Zy����]VK�l/�\�\\B��r��<CS{\�\\�����r�(mw\� \�Ws6-�k���v�V�\��<��`\�67 �Q�\rtƯ�� X�\�\�\�\�s��\0|�\0������\�j�t\�\�\��@�Q�}�\�7\"7\�ױ2���\�T�\�W\�VU�ÀP\�$4�.��;\�H���î���eh\0� h�hт0G�� �\0�B!���6��\Z\�1�\�Z\�7\�\�DX{\�>��\�\�F\�^\��38\�B�p:6,��ا\�Z�.> \�\�\�\�lm\�\�}m�b%|93̸̎�IC\�n����\�\�\�7U�o`�\�6&��\���p�\�s\�NI�A�\�ρ^�3����G1�&,\���u�\��,\�h_/lȉ�q�\�Xg�?�\�e^,�\�\�?\�\�=�|�\0~�\�w���:s|\�j;>\�\�᭖\�+�&/h۶��U��\�?\Z^�.���I��L\�Kf 9\�!�򙿍KrԷ\�8�6��P\�\�����\�\�X75�\�\�#ᬙ\0\�فDx\\�m#>ln]�.ʈ�����������\�A�d1��Ly\nR? \�\�e\�!\�\�c��\�vp\�7\�s�c9Uz���\�w�\���\0�k#,�\'�E�\�|s\Z�\�3h.�:�%/!n\��E,k9�\�~�X��`��6L��D����\�\"\���/ۇ��\��Y�>�mh퓖6��_ :�\����|��\�,s[呵�\�1�\0$𬮣ٺ�U�pۤ����\�\r���[�\�8\�u��CM֪��%}=<vƇ4h\� p��n^\�\0!��A>,ǣ�\"�}\�_\0��D�\�=�\��?\�L�\�&�Ⱥ\�v\�O��\�3G��\�\\Ɨ\���c8G�񤈌<`pH��\�n�M��\�=�͵mh\rwyխ�і��\0\�\r�ś��b�\��J��{j�bs͑\�\\VV\�� \�k�r\�\�^\�j���謧S^Q\���WqMqW(�l\�k\'k�����\�A�\0ʉ(%� C(\�\�|ձރy]\��Ͳ\�Zy���Qu�{\r��v96+\�\�H)cYj���־Y�fD\��\�\�\'H��)3�\�lWZ#\�·\\��hƩ� n&\�֧S �e��s\�(�b\�a\�\�\�#$\�Z�inp�)\��g3��\� 2�Th;\�DDDDDDDDDDE��,���\�\�^\��:Xbʰ\�x\�֧U�2fk�Y�\�5��\��\�a{o\n$S�4Dzi�{D�ߐ�I$�r�ʓ:t�gM�is&K1$ʗ*Iid\�3�c\�9��\�{\�R=\�{�\�g9�tV|�?�~?�-\�;��Uρ\������tS\�ȉ�|\'�ɐ\�8��I2bL��\�ʸ\�AopI*��\��h�Ŀ\�(}O�\�\�D\���u7M�~r\�\�<Xso\�u�yykK��\�\�-U$\��^�f�\0\�\�\0\�;\�Z�5(+eE\�=e\�0u �8����\�Թ\'�\�a\�\�N\�f�\�d�C}4���\�\�@<õ�\�1��?\�*�!΍s׌>�\0q����qwg8���/`�G!j\�\�c�r5(\�n��\�[7!��ɘ \�B\�%Uȝ��m��\"\"\"\"\"\"\"\"\"(��\��\�wx\�\�\� �߲7a9\�_��n>�81x\� \�QJ˜߳\"d��q^1�q&�k�e�z��\�\0\�\\\�\�\'\�0ff�o1�\��\\; 1�\� \\��Sj1\�`n\�ZL\�-��;8k�ώs�e^���C�p�\�\��*�~$\�;�(\�U���W\�t0iB\�Q���\��y \����k�֌m\�\�[DDD\\�Ɲ\ZD)��.�\Z,���9�F�7�\�\0�x� \��V8e�Ƿ-\�q���G�9\�\�Ȧ\�N�m�4\�\�\�\0\�\�5���\r\�O,�;\�67b\�\�0\�j`A٫�*cf5S���c��곈;�ȝ@\�.Lg���n4h\'e���3�+\�[\�]\�\�[ݣS�\�\�(FLf�Q�%}a�\�\�\�DDDDDDDDDE�[�\�\�qCu,1�~y#�v,�圌�f��\�5�o\�ٯ^�a\�~r��\�\�[�\�_]\�)�Z8R\�\�0\\,\��Y� �t\�����<#�^ä����S\�\�N\��-k�ʖ�>$�r\"[������C\�\�\�2x\�\�y�Y��*��|\�O�\�6!���q\�\�Oq�\�W2n)`��ioU�\�\�&(EK#\�; %�W*-���\�\�]x�q\�nU���\�sΥ��B��M\�%:OC�l\�n An�!��e\� \�\�kv\�\"\"\"\"\"\"\"\"\"\"�/��^ :�\0\�=����y��5\�\���\�韥RYE��\�F\�e�� �l5\��\�\�.�ۆWB�Z~�mnl�\0*[�\�Ə5�\�V9*�S�\�����m\Z\��\�|r܍ѩ->\��\�湡kX�\�������R^xj\�Z�{�)aq�۽�w�s�.�Q\�\0�\�񟬸Ȝ?�2\�\� �b;�\�e�\�\�6nD\�N5=B�ַ�;)\�v\"��mv��\�l���ېLp\�\�j,� 6�\�(a�Q�iIyj\"\"\"\"\"\"\"\"\"\"�G�+��r\'���d�:�\�<}�ֹ�;�\�\�4� ��\��3\� �\�\�l�1N�\��U�)rz46�\��>\�=I\�\�_���y��\0�\�7k.�\'9\�~xq��<�\�[�\�\��\�s�|�DDDDZB����\�^{����PI\�\�q�)\�\���%��oVpjk� a\nl��r9�h�4�� �ݜӈ�Kޔ^�\�\\�勍9^ �Jꦿ��\�k�\�\�8\�׺�ޑ�U\��Y�}���[\'��S(D9s#fDaK�ia��\�I\�^�vG�W̓���\�;V��#�M�;�גm��\�\�+@\�E��G\���\�vc\�g\�9h\�\�u]�Eڶm#m��G�i�Ϋ�R\�ȳ*�a׬d\�]U\�\�`fE}�91\r���\�쌏g��ה�=)�լ�ט~$��\�dA���o\��6\�\� \Z��\r#xb�\�Ԥ��\���\�͑(\r}�������^\�\��\�wB�\��\�\�؎G\� ,�4=;��k׵\�Ȉ\�gM��@�q*\�J�G�\0}}譓�����\�^���OZm?c;W�W n,�\�\�\�Y\�\�d�6\�\�L���,ì���j魝���\��vr\���*\"\"\"\"\"\"\"\"\"\"*��U�=g�\�e\�:\�3Ý���D��(�\�N�\�Q3��\�Tc\�ClX �(�v\Z�\�ϑoq&N\�9�lh\�\0�۫\�\�~��G�9\��\�8{�x\�%Ǣ>#\�\�U\��mM\�\�DG�T!9\�5P�T�4�@�0Ki1\�W�qG#\�\�\�\�y\�����5�Iҵ�\�DYB�\�m4\�\�a7�� \�f4EsZ\�b�\�s湘�DDE�\��\�_�\�\�>�\0\�~w�\�}�Zfk�\�&�Vǽm�\�\����־D\\˝ifx�\�w�<:\�\�|\�ң��s��\�\�m�#��\�\�r�Yk坲m�(\�L�6�U�˾�=Z��\Z,b-p�/��<ɹ�d\�\�O�@3��}2� �^\�r��ޞ\�\�3j:\�\�\���5K��G�\0�\�ک\�W`FIJ\�^���C4\'���)�c\�\�}�\�\��\�Ď�@\�#Q\�F�&<x\�cD\0\"kF �mh\�!��c\Z\�1�n1�̈����������R�i<ok>N:=\�\\ j\��r��#o<�\�\�}g�\�\�p��\�\n�\�^Z�fE��>�D�����_�4��\�;\�o�_�f�m�\�\�5\�\�sk\�\�\��=�5\�qr1Nƹ\�+3�4\�fE)\�O�PN�&L9\09:J�C\�7\�j��\�\'?Mwm�|\�f\�C\�[N;l�l�\�+�\�\��\"�\Z)��\r��h�\�*\�1k#X\� X�\Zu��qŽ\"ȐQ�\0\�s�\�B7/!JG\�\�ƹ\�{݆��˝�cʨ�ԃ\�7l�\�Ï5ˉѺ\�\�\r�b\�n1\�\��Çy�\�\�-N\�]\�|F7��aEM$\�l*h�$R\� \r�L\\Guo\�\�\�\�^\�\�q\�3�SN\�W8(�\�\�5Z�>[�5�/\�x� \�\�Ic�<ߙp(�-s_�PXƄ+�V��T\�5�[�Ӵ\�J\�oW\�\�TQQTF:\�\�c�\�ŋX\�X\�7\�v}\�R9\�+\�R=\�\�������������+\��o�z\�o<�ugO�e\�\ZMlVs�\�ϕc\�\ZdB�$ܫ\�F\�~۩E!�Hl1>���y���h����\�Vux\�\�o&�\�\�����M��R��z\�r/�;�\�H�\r\�T �\02��:�-�LRM X\�\ruD�̮ ���\�\�f8��\\\�}�\�-�>\�\�\\��\�l�r\�\�\\?͎2Ȩ��VmU\�i_��vQaYD&0\�p�\�V2k\�\�\�=Xu�\�sy���U�V�׮P>� �ϳ��:��j�8k�\�\�0��߯9�o�ޑy�fYL�cc.L� �O6t\�,��fJ+\�*\\�G{\�\"L��\�9\���\�{\�G�\�\�s�\�\�_MwN(��⟁LʷA\�; V�r<�����u\��)j)/\"�a6%j��B/\�%2<V\nG�\���~h�������������� ��4��Di N\r� �Vde �L9�\�0�{rdz9k��g8UW���\r�\�5\�.�Ȝ\Z\n}j��\Z�\�\�{�Se���\�71\�/\�n\�+���`m�a��@�nbJ����H����1;M\�q;}\�]Bf\�>Ӯ��\'����jx�̇��&��i4�Өfd�C6:��\�6��\�a&�S\�~[x\�K\'Q��L4ח��X\n\��U��\��\�ó�Q\�ێ\����\�\�\�U\ZTsg>\�\� ��§\�z\�Wm�ƚ\�\�RN�عM���\"�%�]o�\�\�͊3\�0�\"4���Q��x\�\�c\��qU]G\�\�==D \�VV\�:\�(0@&\0QcG��1�f0\�e�\��c��\�g\�\�=\�4vO�\�_\��k��G�8\�5���\�.ײ\���9d7�\0;��9�\�\n\�F� Ev$J�\r~ Xt`{3\�6\�7J=g[���;6rV\�4-��\'\���k2\��,��Qh�^|\��,\rvK]�\�H�[�w����wgf�о�j1��aUֻ_\��\�\��W�4\Zr[\�\�\�\�uz�yr�r>�f�\�X�\�Oō獹N���߮J\�]���f\�6�g��[.�I�o�TY1����n�qeU�y8���l�O$\�ƔP�4�<���\�c�g��\0�?\"|\�\�\�^��saA�\��\��ȍ�\��8�es+]��̗\�\rf�}~l\�N�\�Hğ8r��3Ĝx�\�c��$8\�e男����|<!\�2!����,3����e�~���藍[`��\�#\�G~ݹ_l�6�^F��\rY�-�\�\�\\JX.i\�ç�\�*\��,-%>\re1\�\��\"\"\�_\"#�]\�\�\0B~Ga\�=|\�-6��n�\�\�jvM�0Y��&E$f��c�\�\��\�\�]�:�\Z �R��V\�\�\�\�\Z\�ŕ�L\�`s*\�i暺ҺS1�a�aM�x\�f\�4�~1�\�\��6\�M\�>4\�\�ߑV꼁�\�h\�g\r\�[g-�XR�,R;�G\�1\�\��\�x�\�%���^�0\�@�\�5�hR\�8G�cM\nds\r�\�p\�&c\�\�g8s]��\�]���*�\�[/(�\��q\�\�r���\�n��K�\�UB $˝ca-\�#Ǝ\"��\�s�D&q�c� �j�x\�{�xΉ\Z����jg�*\�N�aqYw\\GLi\n;�\��&\��\�\�~�g���hu\��\��W\�شu\r\�\�v?�dH\�v\�\�Kٶ�<\�\�\�\�\�M\rF��@��p\��)5JR؂&BĨ\�\�:/^��1\�E�r��\�\�������\��ȓQ�\�\�5\��[�\�\�\�m\�\�$\�cI��l�L�_oY#-S;\�^�pO[��\������{L����u\�<ԩuj�G�o�U3\�\�%v_�Jy\�\�{e\�϶3�cDDDDETO�;ŵ�G��m\�\�<\�%D\�omﭶ��\0eƬ\�y�fOu\�Z��\�gGpCm�\��\'ؐ\�1Z8\�+\�1}V\��d{\�Eܟ[�I���\�]���SO>\�к�\�����\��-����[*\\氡�$\�<\�VQ\�e�#DDDDDDDDD^3\��q\'W8�y\�^qܪ�^4\�\�9\�\����\�6<���U�\���\�\�n\0�@��\�y%�\�`\�R���6�s�\�\�\�*\�kTv7|q\�R\��\�~ �5\��\0��k\�_�r\'\�\�\�\��\�\"�f*�95m!\� \�\�W\�<lS�e⃲>V�\�\\S\���i4N�R\��\�st\�9�&q��@��#�\�d�?�n�tS\�{��K�\�\�ym��⿩�08z��:��C��>,�\�0\�5\�\�\�F�O�\�l7B\�;L\�2~��\�F��2|Hձ Ë�4DDDDDX�ܮ�p�z��\�m\�\�Z͡\�%�\�-u��n,�E>\�E+�4vA�e\\Cƒ1DPH�q�@��\�\�\��\'y�:�$����\�a%�I\�4�d\�Y\�\�\�d�]�6@�Q\�� G,�T�\��8\�\�i\�L����\�^\"|��.\�\�s�� �7\�\�#j<\�\�C�H\�w�3�+\�O8�ݴkGɬu�V�\�SXW6e[m�i\�>��/�;\����`z\�U\�\�>\�9\�؇\�-�\�7�?��\�u�h�T\\WIa\�˅>4Y!�Ls�2�J� �DDDDDDDD\\2$(\r*Q�\Z4aD�0�\0\�C\�#�1Ck�B=\�c\�9\�\�q���}K�e.��\�;��p\�\�i�=|\�\�\�F�CD�\�\\�I/5�\�E����u\r�)u�9��2HMv\�\�E�gM\�8<wsǓN\�\�}p\�\�,��\�� r�SH\�8\�G���\�t\�;�\�hZPk�\�%ŗ�Z�q�2����7�_�|\�߯:_]z��C�\���\�L��tH\�ط͐q\�\�M�j�,d�m�e\�D�5\� �fA�\�1�������������W�{�\�q�5�ޥ\�����U}�\�T\�.�,k\�\���78m�/q�x��g#\��\�6�\�\�\�\�^M��\��\'\�3��a%��\�!\�\n\��\0�\�JdiFt*-��Qv}i�vEF\�d����B�R69҅����k�*��\�[\�=E\����\�1�\�\�|k\�Z�\�\�\n\�\�$���wi\�T;\'���-��i\0\ZXU�M�Cɿ�c��\�Z��\���\������s\'\�\�Mmw\n0�]\��a\�d\�\�2v6%%}\�\�\�\�\Z\�\'\�%yc\�e\�7�\�G�ͷ��\�QL��P\�7\��7]��;t�¬��ǭ�o!�a\n\�\�k\Z�\��dD\�}?��}|I�\����w�\�\��lWY��-���n\�f.f��p�B�U%�c\�nK\"\\?�#\Z\�\�s�\�\�m�\�ۮ��Au���\�;�c\�>\�V��\� �\�\�r\�:]L�q\�\�a�\�[�c.\�]�c>\�]�FS\�\�=\�m��\�\���\�-�\�P%M\�j�mGB�G��\n��\�+�!��GS}JR�i��t��2>\�\�QQkkYCCYawywa\n�����+[{[)\"�]YY] F�>\�|\�,(QBY2��@\0�W���\�\�\�_�\�\�v>\�[S/�\\\��{睪$_rG<�̙�\�5sd�L\�\�i\�3\������%�\�,/MEW>d�7|����������\�9k��{��)�6�v�\�ZU�y,5nD\�\���)Q����\�\�›\"�1 R��\�\�\�x�ۘ�y�t���ow��ϑ\�c�G\�f�N\\p\rӱ�[?\r�y�Ɨ���k\�Į&�}ER\� S\\]T\�Oa�)��˯�˰vg��3�w���k\�F\�:󂹖�,�qX]\�@���Klp�YO\�T��Eik�fVW\\V�t\��-z��۸7��Z�\�_��?]\Z��rMQe���Z\�\��V\�\�\�ɑ�m�,\nڙ��\�O>j�\�u��\�A���)�Q� \� �\"7Fe\� \�\�a\�{s���Û�\�8\�\�DDDDDU��;�s\�\�+���6c��u����t8ѭ�Ψ����eڶ(\�\�cQcm�l\'��2gJƹA�<\�ad�\0��\�`�Sޙ��\�\ZY2x����Ҹ�����-2�\�1]&,�3��\�L��\�V��.j9\"8��|\�7DDDDDDDDDDE�=\�\�\\��pF���\�\��\�^ɇ��\�dfˢ쎌X\�6�Fݸlʛh�&Z�E8�,\�6}���\�+^2y�\�wjv.\0\���څ���p�(~ E\�\�|i. {(X&\�}\�󊍶�Y ��&D��Z\��\�H��y�ع���\�\�n\�\�mB�Lο�\�//�\�N�l\�/`��#�\���\�kkdϻ\�*���v�6+�S�DDDDE\�<��N\�^RۣѤj�u�쀒\�e��j=f\�\�Fk�e�\�4�v3��-�\�q\�}\�-\�a\�\r�\0x佺H\�m���l\�\�\�0Cp�/a\�n�\�\�I��c=����n!ƿ\r\�ߜ|�m��;��\�R�Tp�\�ZI�6\�\�E�\�\r�� O�\�O_��p\���\�MV���#��G�H\�$P\�L�CHUi;\�G�\�o\�_C�M���:�]e�\'pf\�h\�d�\�z\�d\�dԍc��Ѩ��\�mU�G\�@�g�.\'=�U\nqW%�oYy�I\�=,�z_+p� Vl�C�\r�\\ꍧP�adR\�\�0նL�Y$Rl\�r �\�\�cO9�\�5w7C�AK\����߳ԭvsj��f �(� :x����8%4xs�Y�@\� �#c\�,h\�adg.[\"\"\"\"-n��\�9�O\����V\�k-S�|�e_����&�\0�\�C�5�p\�s��s�\�\�&s�w��\����(9C���%2C\�r\')q��!��\�x6ݲ��͌L1�d���\� �\�e�\�]�w��oyд\�>:\�u= Z���\�ku1\"F@\nDB[?\�\�\�?q}�켤{\���\�{�j\"\"\"\"\"\"\"\"\"\"\"*t=E�<�釕\�\�\��\��O�d\�\�n�\r��GT��\�\\[]֘�^옌ۡlr�\�\�%��aÂ�k^�\�d\��\�\�m\��\�8\���\��\��n[$[\�\Z~Ec�|J�b�~a|H0��9\�k\�\�\�\�DDDDZ��\�\�|Jw\�]��i�\�\��>�,|��U�q4nj��ve4$��?[p|�9c�\�2��\0w���tcG��t[.bŗ\�0_lf\�\��=�k�(��8\�ԑ� �c�\�a���ڮ�DDDDDDDDDDDDU��\��\�Z�\�\�J�J��\0\�9#�yC^\�n0!6M�:ٴ\�k�Jv��$j�\�V�����&yn$��\�\'�A�\�J���78�EJѿ\��ⷉ�l��Ϸ\�,c��\�\�>\�<~�\���\�\"\"\"\"\�\�\�j�ݺ�\�ZO\�!�\�.J��\�&A�Z\��<\�\� H\�]��|��~��\�M\0\�n�\'�\0�dM��\�\�s\�28b�+��3��\�C���-!2\��\�񜐌k�$DDDDDDDDDDDDPM��\�5\�\�\�\�?O��y+�5��8n~�u}F\�\�c�&��b|Ɍ�\��\0�Y\�1�\�\�\�F���\��w\Zc\�ڻ#�α�14d�5m.�H\�#[���\0�\�\�hc�XvƵ�\�DDDD^[\�Qq;�9� �\�g� W9��\0,bF�n\�߿�0�\0|{c\�\�\�\������id\��\�p\�dmv�\�<ú9\��H\�k �.��\��\n;���5\�/�\�k\�b\�\�DDDDDDDDDDDE �[�n \�ޗ\�}~��\�]��\���\0/�^/������>\�\�p\�o��}�\0\�\�\�H�~!�iФ` \�s\�<Xe\��\�\��\��\��ح��\���\�����\"\"\"\"\�\�\�Y\�[�i�\0ȱն&�\0�S.9?� �\\G�+�\�5�4�\�-?\�\n~ҹÎ*!���\��>Y�\�q2\���a\�\�\0�ߟv\�7\��~�Y@��������������\�у�x����$;�y���E�\�/�\'c\�!\�h�\���\�\�̗\�s\�\�\�osp\\a\�3\�u\�ghz\��oa�Lނ\�\�A\�������\��\�l+\0��\0}�nT�\�� \�a�E\n\"�\�(�ּdۖ�dc����nr\�5\�\�\\\�\�\�q�\�A7\�A�̟�lG\�*G\�\�o�\Z\�\�\�?#�q�c\��\�҉��϶1��\0|)ڢ\"\"\"\"\"\"\"\"\"\"\"(\����xJ\�i2\�g��\�\�s�\�r\�p\�#|��\0 �H\�}�\0\�\�\��Vsx7�\rW�o\��,\�\�\�Z#c�\Z҄�R\�\r\�HL�\�g\�\�\��1�ò\�7\�k�����\�\�[C�\��\���i�\0x�+���XG$�1�]˖9kl�3�Owe�,e\Z@\�π\"����\r�DDDDDDDDDDDDQ\��O\�\�\��L\�<j�fA\�_�e\�LJ5�\�\�\\٢\�ڟ9{�\�h��eJ\�}�\���\�s�\���<Ix\��s�w�q��f�O0M�\0�Gc?\�[:DDDDE�\�\Z\�n\'�(�\�̒�[G=se%�;?\���\"�]��� ��\�\��e\�6C\�]�0ֲ�\�\�\�\�?|h������������W�f8>ϱ�6;I\��dk\r\�@�_a\�C�(�h\�O|W\Z;�6%�!���G\���8\�L<�\�\��1\�\�Xx�\�d|i�\�\�\"���q`j�‰�\�y�1����ǶE��nk^\�7P�����\�T\�44s���k#���Ll��!�>\���0ӟ\��7\�\��\�^\�\�w������������������\�\�o��Ρ�������v\�2�80��1\�Z\���f}�7c\���>�\r4r��^�k\�[CS]M^\�;# \�\� �{\�\�5\��\0<9\�kp\�c9\�q�\�>�\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"�\�',4,0,'','','',''),(86,5,25,'9305bf01c3fdb20a','11789807665bf01c3fd8ccd829485384','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','image/jpeg',80,80,2356,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \0P\0P\0�\�\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0*\0\0\0\0\0\0\0 \n!#\"BC�\�\0\0\0?\0\�\�8\�8\�8㚑�\��1V�wZf��\�J�\�\�!���m�e\�Mg�ܑ|\\qb�tٙ�$[Q\��\�\�|\'��J�+\�_�Οy��d\�]�~\�\�N�\�M>et-e���M�s�2T9�\�4ZO\�4\Z] W�~?;J�&\�&�u\��約�f�}v\�\�+��\�3V\�\�;j\� \�\�*stn]��.���\�\� �\�;E�\\V�\�u0�\�EW}o� H{ �^8\�9{\�\����\��E�v�ػ\n4\�+\"J\�`kg�R�+\�U��\�l\�ƽ�)͔��ь|�Po�ީ\�<�yCӺhX\',�\�;Jõ�t0\�U?-M�̦\�\�R�Jc�X����q�XJ�\�c�#-�h\�qtF�X�U+TjLMV�N���\�+0A1 ^���\�\\4,Lx\�lp�c#\�0�ai�\�m�\' N1\�9\�o\����a��t\�\�2\�X�Ig�\�\�\�ֹ\�咁d�dl72��\�! m\�ߒz\�k6\�%b`ofS �dĭ Q��e\�\�\��㭗m�rٚ�\0Ll@\�{?D[\�ӳګh\�b �E�]e|�\�\�;eB.\�O�W��<T|}�Ix�$���\�Lm�^�\�:�xk�J\�����\�6�\"\�ӦU�5��,ﲇK�6H\�/,?�3�+(\�y\�|q\�1�\�Vط?�>�kڐ�H\�$�Ͳ&a\�DK�.P\�\\Vn\�\r����\\�k�\0Vq�\�\�m�%I^S���D�\���\�\�#�;q�4�������)�\�\�p\�\�\�S���\�\�hկJ\�-&\�Mz�g\�2�T���V:󣩛 x�\���lb��Xc\�!aǍ��ѯ\�B2����8G�6�X\�\�\�E\�z\�㟥:b6H�\�g\��Y^�ǘ���[^*\��`�)Y\�ҹ*aPL\�\�#�N?�rzq\�\�}�Ie\�i�\�!�}���Yy�Q�\�i֗�!\�\�B���\�+Nr�c8\�q\�\�{�ս�\��A�{�����>�^v}�v��DXz\��$�N\�\�Ă\�s\�\Z\�I�\�$M\�k�y\"X\"��\�$��� en�\�Z\�}j\��u%�:\���N\�F�E)jr�a�ÚC\�l�\�X\�%�SL� Hx3`�i\�ȧi\�GF�Iڠ#��\�zv\�o�\�\�%\�\�\�\\\�&\"\�AJ��}Q$\�$a��\�.�����8�>*ƌޖ~�\�c����\�B\�\�m]�cȢ~ڔ�\r��S\�\�\�cO\n�4�\�E\�ܦ@ \\\�)d\0\���vcGq\�\�\�ft�O4n�\�gan�\��\0TkHe\�Y\'\��:�S�\Z69���vI�\'���AG�\��ҥ�ͩn{\�\0]_\���\04�\�v\�k9~,<l{\�ֶ��R�\�>\�WX%c\��\r-}��\�5EJM���V���\� _��_\�2\���d��cӍ�[�W;L�w/2\r���\�V\�\��@\�RL�i\�\�ğ�\�5�cm#8�:�\\a�~B�0\�-m*tQh��_M�k�oR�Ш4�X�\�B�O���\�\���\�,l, H\�\�\�F3hdP��\�m8J�sǻy\�\n�o���:�t1�\�\��\�W-jtȬ\��\��\� e�1\�\�( \�\���wm�ɏi��֬�O�N\�³�r\�]��!\�J,} j\��Q��\�=�g\�\���Lu*\�H\�ҍ)�$-~�3Hd�k\��\�f����x\�\���8RU�%X’�\�J��{\�8\�=�g\�3�\�8\�\�sQ?-�ٯ*~j:M\�JP\�DuO@kw��ۘ�҈ ��\�D\�z\�^W(q�8ʃMv�a����\�\�Y!�\"�pm�a!!\�P\�5\�\�Tt~0X8Hp�������c\"�\�m�\0�� �D1ZhqFe�m\r�)\�\��\�?!v\�\�-�\�cc\�*���\�\�\�j\�5�\r\�0ۍa\�bgB<��u��\�ʾ�G�\�j\�`�d|h\�]\�X�i\�.\�\�v l\rs���n�\��2#җ!E�\�*2P�\�gS\�!�Z��\�뒱\�\�4��\n�uL�4A�!\�\�\�lݯ\��\0\��j��\0;zHd)��\Z\�%[��:ʑ?K\�0P��8�2E�#\0\�\0��mv��\�F��\�4>u�\��ɭG\�7\�e:ۥ\�K:@\0��\�Elv\��m{�\0� F�G\����q�\0|s>q\�s�\Z\�x\�R�ceE\'.\�\�\�-�,!M�`�\�njQq�����\�|peA�)�:�?���\�z�\�պ�0�H;��S�Qy\�C#�&���]Wa��SF[�\0RP\�l2�\�ul��\�VK�\�Sǎ8\�@\�z:W\������\�\�Ss\�o?~G`t�\�+w\�\�l\�\�W�U�\�S~�\0=��\�H� ��@\�$�g\�KM��\�d�+?�\�\�\� pv�����B�JT�W?q\�\�d1T[g\�vrsC:e\�\�\n����\�w\�\�]xvq�g⵲ҕ�\� \�;<�\�',5,0,'','','',''),(87,5,25,'9305bf01c3fdb20a','11789807665bf01c3fd8ccd829485384','2018-11-17 13:50:06','2018-11-17 13:50:06','','','Contact Photos','63436871415bf00e80dfe9c308856934-4.jpg?ts=1542459008','image/jpeg',48,48,1488,_binary '�\��\�\0JFIF\0\0H\0H\0\0�\�\0C\0��\0 \00\00\0�\�\0\Z\0\0\0\0\0\0\0\0\0\0\0\0\0 \n�\�\0(\0\0\0\0\0\0\0\0\0 \n\"1$%�\�\0\0\0?\0����8\�\�{����\0���݇\��<T�\�.\�Y\�\���\�0�\�\�K\�Ť*X2 |\�\�f\�\�Yys�G!�+��c��Tଲ�\�>����I�\�\�]U�n\�_Pf��\�-5��a.-�\�\�5�ۮ6B]e�W����\�]�\�~�:\'jjy3 6e�5�-M�G>\��u3v��k�\�x�\Z�x�J§��=�!�&��1�y�֙\���z\�\�>��\���\�<\�\�]e\�h�\rWQ�k���Ube��b�\�\���#\�:ӳJ\�\r\'�3[d�\0 �\'�\�R\�ҽ��RZi�sӵ�w?9\�Ԩ�gt�\�أ�\�[@Z�\�Ih3�Az\�&f� �\���r ��9!@�Ew\�~\�x\'Ju�U�\�\�X�U}�Y�y\�\�b�5\ZX�ݭP�\'\�्\r3Ђ�\��* D�k\�\�\�g��\�\�� \�{�\�\�\�UX�\�y�.��&��C#gk�-�8r�\�\�B\Z\�Ts�bNs\nh&&\�)䩦V���JC\�Z\�j��MC�xbR\�\�[�WM��\�5FR�m��P8آs�b���p�\ZCY�\�X�k\�0�r�ɟ�-\�����`9\�>\��.���k��I��\� �Lɻ�yܪa���Hgp)vI� ���Ϭ���\�\�\'\�\��uY\�\"I�ۖ…�a�\��دVFZ�\�Q�)q �:��\��\�::\�[\�\�*\�{��κog\�}�-�M{�\��M�o��)\���ő(ba+(\�>��e\�\�|q�N\\u8̶\�Y\�\�\� \��\�q\�\Z�\�\�\�|+�\�\�Z���5<\�1\'G�\�9\Z������\���flpV \�(GJ~�N\rɉ�k�!���35^��k��&7#o��T\�+�v\��)֤,�Q�t�ͺi�$\�b \'J�\�\��r�\�\��\0\���m\�[�O]ൟY�>\��\�\�\�p�6S_N��ቴk��N?|MN\�4,�^ J��1� \�\�b>\�l�\�{�hU��՚�ۭ)jdvvӢ��56��)�BT���5��5\�w�\\\�&kFk\�\�\�\�B�MXV\�}\\d�t\�l|\�9\�JD\�$�\\�y\r�q\�6PG[ [�Xδ@\�2���.!\�Ԥ+\�\��\�\�\�| ���H%\�ow>p�\�\n+yq\�\���=���Ƹ�c?�d�\�I�r����\�}k\�P�c4xa� v��VZa\�BZdq\�BZe�[F0�\�i��\r�8\�P�\�)\�1�c\�o3�ڴ\�e�\�\�Ü�\\+�5{$,�\�/?DT\�Y¼��@gǖ@��\�T۬��֜�YLjǪj\�\�/\�)R\�fH)M\�m\�ZW.\��\�k\�ppA?�Է�`���k\nV~�\n\�S�p�M�G�صrj�Ku��e+R\�[N]�5k4=�?\��\�S�Qp��\0�FU��\0o�6~b�\�\Z/[S!)���\\ E��\�{-� \\���\���8ZМ�\0�BS�\�\�>�\�',6,0,'','','',''); -/*!40000 ALTER TABLE `photo` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `poll` --- - -DROP TABLE IF EXISTS `poll`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `poll` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `q0` text, - `q1` text, - `q2` text, - `q3` text, - `q4` text, - `q5` text, - `q6` text, - `q7` text, - `q8` text, - `q9` text, - PRIMARY KEY (`id`), - KEY `uid` (`uid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Currently unused table for storing poll results'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `poll` --- - -LOCK TABLES `poll` WRITE; -/*!40000 ALTER TABLE `poll` DISABLE KEYS */; -/*!40000 ALTER TABLE `poll` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `poll_result` --- - -DROP TABLE IF EXISTS `poll_result`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `poll_result` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `poll_id` int(10) unsigned NOT NULL DEFAULT '0', - `choice` tinyint(3) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - KEY `poll_id` (`poll_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='data for polls - currently unused'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `poll_result` --- - -LOCK TABLES `poll_result` WRITE; -/*!40000 ALTER TABLE `poll_result` DISABLE KEYS */; -/*!40000 ALTER TABLE `poll_result` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `process` --- - -DROP TABLE IF EXISTS `process`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `process` ( - `pid` int(10) unsigned NOT NULL, - `command` varbinary(32) NOT NULL DEFAULT '', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - PRIMARY KEY (`pid`), - KEY `command` (`command`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Currently running system processes'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `process` --- - -LOCK TABLES `process` WRITE; -/*!40000 ALTER TABLE `process` DISABLE KEYS */; -/*!40000 ALTER TABLE `process` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `profile` --- - -DROP TABLE IF EXISTS `profile`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `profile` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Owner User id', - `profile-name` varchar(255) NOT NULL DEFAULT '' COMMENT 'Name of the profile', - `is-default` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Mark this profile as default profile', - `hide-friends` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Hide friend list from viewers of this profile', - `name` varchar(255) NOT NULL DEFAULT '', - `pdesc` varchar(255) NOT NULL DEFAULT '' COMMENT 'Title or description', - `dob` varchar(32) NOT NULL DEFAULT '0000-00-00' COMMENT 'Day of birth', - `address` varchar(255) NOT NULL DEFAULT '', - `locality` varchar(255) NOT NULL DEFAULT '', - `region` varchar(255) NOT NULL DEFAULT '', - `postal-code` varchar(32) NOT NULL DEFAULT '', - `country-name` varchar(255) NOT NULL DEFAULT '', - `hometown` varchar(255) NOT NULL DEFAULT '', - `gender` varchar(32) NOT NULL DEFAULT '', - `marital` varchar(255) NOT NULL DEFAULT '', - `with` text, - `howlong` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `sexual` varchar(255) NOT NULL DEFAULT '', - `politic` varchar(255) NOT NULL DEFAULT '', - `religion` varchar(255) NOT NULL DEFAULT '', - `pub_keywords` text, - `prv_keywords` text, - `likes` text, - `dislikes` text, - `about` text, - `summary` varchar(255) NOT NULL DEFAULT '', - `music` text, - `book` text, - `tv` text, - `film` text, - `interest` text, - `romance` text, - `work` text, - `education` text, - `contact` text, - `homepage` varchar(255) NOT NULL DEFAULT '', - `xmpp` varchar(255) NOT NULL DEFAULT '', - `photo` varchar(255) NOT NULL DEFAULT '', - `thumb` varchar(255) NOT NULL DEFAULT '', - `publish` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'publish default profile in local directory', - `net-publish` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'publish profile in global directory', - PRIMARY KEY (`id`), - KEY `uid_is-default` (`uid`,`is-default`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COMMENT='user profiles data'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `profile` --- - -LOCK TABLES `profile` WRITE; -/*!40000 ALTER TABLE `profile` DISABLE KEYS */; -INSERT INTO `profile` VALUES (1,1,'Standard',1,0,'admin','','0000-00-00','','','','','','','','',NULL,'0001-01-01 00:00:00','','','',NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'','','http://192.168.22.10/photo/profile/1.jpg','http://192.168.22.10/photo/avatar/1.jpg',0,0),(2,2,'default',1,0,'friendica1','','0000-00-00','','','','','','','','',NULL,'0001-01-01 00:00:00','','','',NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'','','http://192.168.22.10/photo/profile/2.jpg','http://192.168.22.10/photo/avatar/2.jpg',1,0),(3,3,'default',1,0,'friendica2','','0000-00-00','','','','','','','','',NULL,'0001-01-01 00:00:00','','','',NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'','','http://192.168.22.10/photo/profile/3.jpg','http://192.168.22.10/photo/avatar/3.jpg',0,0),(4,4,'default',1,0,'friendica3','','0000-00-00','','','','','','','','',NULL,'0001-01-01 00:00:00','','','',NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'','','http://192.168.22.10/photo/profile/4.jpg','http://192.168.22.10/photo/avatar/4.jpg',0,0),(5,5,'default',1,0,'friendica4','','0000-00-00','','','','','','','','',NULL,'0001-01-01 00:00:00','','','',NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'','','http://192.168.22.10/photo/profile/5.jpg','http://192.168.22.10/photo/avatar/5.jpg',0,0),(6,6,'default',1,0,'friendica5','','0000-00-00','','','','','','','','',NULL,'0001-01-01 00:00:00','','','',NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'','','http://192.168.22.10/photo/profile/6.jpg','http://192.168.22.10/photo/avatar/6.jpg',0,0); -/*!40000 ALTER TABLE `profile` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `profile_check` --- - -DROP TABLE IF EXISTS `profile_check`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `profile_check` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `cid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'contact.id', - `dfrn_id` varchar(255) NOT NULL DEFAULT '', - `sec` varchar(255) NOT NULL DEFAULT '', - `expire` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DFRN remote auth use'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `profile_check` --- - -LOCK TABLES `profile_check` WRITE; -/*!40000 ALTER TABLE `profile_check` DISABLE KEYS */; -/*!40000 ALTER TABLE `profile_check` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `push_subscriber` --- - -DROP TABLE IF EXISTS `push_subscriber`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `push_subscriber` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `callback_url` varchar(255) NOT NULL DEFAULT '', - `topic` varchar(255) NOT NULL DEFAULT '', - `nickname` varchar(255) NOT NULL DEFAULT '', - `push` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Retrial counter', - `last_update` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of last successful trial', - `next_try` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Next retrial date', - `renewed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of last subscription renewal', - `secret` varchar(255) NOT NULL DEFAULT '', - PRIMARY KEY (`id`), - KEY `next_try` (`next_try`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Used for OStatus: Contains feed subscribers'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `push_subscriber` --- - -LOCK TABLES `push_subscriber` WRITE; -/*!40000 ALTER TABLE `push_subscriber` DISABLE KEYS */; -/*!40000 ALTER TABLE `push_subscriber` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `queue` --- - -DROP TABLE IF EXISTS `queue`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `queue` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `cid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Message receiver', - `network` char(4) NOT NULL DEFAULT '' COMMENT 'Receiver''s network', - `guid` varchar(255) NOT NULL DEFAULT '' COMMENT 'Unique GUID of the message', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date, when the message was created', - `last` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of last trial', - `next` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Next retrial date', - `retrial` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Retrial counter', - `content` mediumtext, - `batch` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - KEY `last` (`last`), - KEY `next` (`next`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Queue for messages that couldn''t be delivered'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `queue` --- - -LOCK TABLES `queue` WRITE; -/*!40000 ALTER TABLE `queue` DISABLE KEYS */; -/*!40000 ALTER TABLE `queue` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `register` --- - -DROP TABLE IF EXISTS `register`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `register` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `hash` varchar(255) NOT NULL DEFAULT '', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `password` varchar(255) NOT NULL DEFAULT '', - `language` varchar(16) NOT NULL DEFAULT '', - `note` text, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='registrations requiring admin approval'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `register` --- - -LOCK TABLES `register` WRITE; -/*!40000 ALTER TABLE `register` DISABLE KEYS */; -/*!40000 ALTER TABLE `register` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `search` --- - -DROP TABLE IF EXISTS `search`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `search` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `term` varchar(255) NOT NULL DEFAULT '', - PRIMARY KEY (`id`), - KEY `uid` (`uid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `search` --- - -LOCK TABLES `search` WRITE; -/*!40000 ALTER TABLE `search` DISABLE KEYS */; -/*!40000 ALTER TABLE `search` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `session` --- - -DROP TABLE IF EXISTS `session`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `session` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `sid` varbinary(255) NOT NULL DEFAULT '', - `data` text, - `expire` int(10) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - KEY `sid` (`sid`(64)), - KEY `expire` (`expire`) -) ENGINE=InnoDB AUTO_INCREMENT=253 DEFAULT CHARSET=utf8mb4 COMMENT='web session storage'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `session` --- - -LOCK TABLES `session` WRITE; -/*!40000 ALTER TABLE `session` DISABLE KEYS */; -INSERT INTO `session` VALUES (250,_binary 'aoaha9prgkkb6ls04ccpaqtp27','sysmsg|a:0:{}sysmsg_info|a:0:{}last_updated|a:0:{}return_path|s:0:\"\";',1542647933); -/*!40000 ALTER TABLE `session` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `sign` --- - -DROP TABLE IF EXISTS `sign`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `sign` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `iid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'item.id', - `signed_text` mediumtext, - `signature` text, - `signer` varchar(255) NOT NULL DEFAULT '', - PRIMARY KEY (`id`), - UNIQUE KEY `iid` (`iid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Diaspora signatures'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `sign` --- - -LOCK TABLES `sign` WRITE; -/*!40000 ALTER TABLE `sign` DISABLE KEYS */; -/*!40000 ALTER TABLE `sign` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `term` --- - -DROP TABLE IF EXISTS `term`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `term` ( - `tid` int(10) unsigned NOT NULL AUTO_INCREMENT, - `oid` int(10) unsigned NOT NULL DEFAULT '0', - `otype` tinyint(3) unsigned NOT NULL DEFAULT '0', - `type` tinyint(3) unsigned NOT NULL DEFAULT '0', - `term` varchar(255) NOT NULL DEFAULT '', - `url` varchar(255) NOT NULL DEFAULT '', - `guid` varchar(255) NOT NULL DEFAULT '', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `global` tinyint(1) NOT NULL DEFAULT '0', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - PRIMARY KEY (`tid`), - KEY `oid_otype_type_term` (`oid`,`otype`,`type`,`term`(32)), - KEY `uid_otype_type_term_global_created` (`uid`,`otype`,`type`,`term`(32),`global`,`created`), - KEY `uid_otype_type_url` (`uid`,`otype`,`type`,`url`(64)), - KEY `guid` (`guid`(64)) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='item taxonomy (categories, tags, etc.) table'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `term` --- - -LOCK TABLES `term` WRITE; -/*!40000 ALTER TABLE `term` DISABLE KEYS */; -/*!40000 ALTER TABLE `term` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `thread` --- - -DROP TABLE IF EXISTS `thread`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `thread` ( - `iid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'sequential ID', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `contact-id` int(10) unsigned NOT NULL DEFAULT '0', - `owner-id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Item owner', - `author-id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Item author', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `commented` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `received` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `changed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00', - `wall` tinyint(1) NOT NULL DEFAULT '0', - `private` tinyint(1) NOT NULL DEFAULT '0', - `pubmail` tinyint(1) NOT NULL DEFAULT '0', - `moderated` tinyint(1) NOT NULL DEFAULT '0', - `visible` tinyint(1) NOT NULL DEFAULT '0', - `starred` tinyint(1) NOT NULL DEFAULT '0', - `ignored` tinyint(1) NOT NULL DEFAULT '0', - `post-type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Post type (personal note, bookmark, ...)', - `unseen` tinyint(1) NOT NULL DEFAULT '1', - `deleted` tinyint(1) NOT NULL DEFAULT '0', - `origin` tinyint(1) NOT NULL DEFAULT '0', - `forum_mode` tinyint(3) unsigned NOT NULL DEFAULT '0', - `mention` tinyint(1) NOT NULL DEFAULT '0', - `network` char(4) NOT NULL DEFAULT '', - `bookmark` tinyint(1) DEFAULT NULL, - PRIMARY KEY (`iid`), - KEY `uid_network_commented` (`uid`,`network`,`commented`), - KEY `uid_network_created` (`uid`,`network`,`created`), - KEY `uid_contactid_commented` (`uid`,`contact-id`,`commented`), - KEY `uid_contactid_created` (`uid`,`contact-id`,`created`), - KEY `contactid` (`contact-id`), - KEY `ownerid` (`owner-id`), - KEY `authorid` (`author-id`), - KEY `uid_created` (`uid`,`created`), - KEY `uid_commented` (`uid`,`commented`), - KEY `uid_wall_created` (`uid`,`wall`,`created`), - KEY `private_wall_origin_commented` (`private`,`wall`,`origin`,`commented`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Thread related data'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `thread` --- - -LOCK TABLES `thread` WRITE; -/*!40000 ALTER TABLE `thread` DISABLE KEYS */; -INSERT INTO `thread` VALUES (1,2,4,10,10,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:02:14','2018-11-17 13:51:35','2018-11-17 14:02:14',1,0,0,0,1,0,0,0,1,0,1,0,1,'dfrn',NULL),(2,0,10,10,10,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:03:07','2018-11-17 13:51:35','2018-11-17 14:03:07',0,0,0,0,1,0,0,0,1,0,0,0,0,'dfrn',NULL),(3,2,4,10,10,'2018-11-17 13:51:58','2018-11-17 13:51:58','2018-11-17 13:51:58','2018-11-17 13:51:58','2018-11-17 13:51:58',1,1,0,0,1,0,0,0,1,0,1,0,0,'dfrn',NULL),(6,3,14,10,10,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:03:08','2018-11-17 14:00:01','2018-11-17 14:03:08',0,0,0,0,1,0,0,0,1,0,0,0,1,'dfrn',NULL),(7,6,20,10,10,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:03:08','2018-11-17 14:00:02','2018-11-17 14:03:08',0,0,0,0,1,0,0,0,1,0,0,0,0,'dfrn',NULL),(8,5,18,10,10,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:03:08','2018-11-17 14:00:02','2018-11-17 14:03:08',0,0,0,0,1,0,0,0,1,0,0,0,1,'dfrn',NULL),(9,4,16,10,10,'2018-11-17 13:51:35','2018-11-17 13:51:35','2018-11-17 14:03:08','2018-11-17 14:00:02','2018-11-17 14:03:08',0,0,0,0,1,0,0,0,1,0,0,0,0,'dfrn',NULL),(10,5,18,10,10,'2018-11-17 13:51:58','2018-11-17 13:51:58','2018-11-17 14:00:02','2018-11-17 14:00:02','2018-11-17 14:00:02',0,1,0,0,1,0,0,0,1,0,0,0,0,'dfrn',NULL),(11,3,14,10,10,'2018-11-17 13:51:58','2018-11-17 13:51:58','2018-11-17 14:00:03','2018-11-17 14:00:02','2018-11-17 14:00:03',0,1,0,0,1,0,0,0,1,0,0,0,0,'dfrn',NULL),(26,5,7,11,11,'2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58',1,0,0,0,1,0,0,0,1,0,1,0,0,'dfrn',NULL),(27,0,11,11,11,'2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:02:58',0,0,0,0,1,0,0,0,1,0,0,0,0,'dfrn',NULL),(33,2,19,11,11,'2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:03:08','2018-11-17 14:03:08','2018-11-17 14:03:08',0,0,0,0,1,0,0,0,1,0,0,0,0,'dfrn',NULL),(39,6,24,11,11,'2018-11-17 14:02:58','2018-11-17 14:02:58','2018-11-17 14:03:08','2018-11-17 14:03:08','2018-11-17 14:03:08',0,0,0,0,1,0,0,0,1,0,0,0,0,'dfrn',NULL); -/*!40000 ALTER TABLE `thread` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `tokens` --- - -DROP TABLE IF EXISTS `tokens`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `tokens` ( - `id` varchar(40) NOT NULL, - `secret` text, - `client_id` varchar(20) NOT NULL DEFAULT '', - `expires` int(11) NOT NULL DEFAULT '0', - `scope` varchar(200) NOT NULL DEFAULT '', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OAuth usage'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `tokens` --- - -LOCK TABLES `tokens` WRITE; -/*!40000 ALTER TABLE `tokens` DISABLE KEYS */; -/*!40000 ALTER TABLE `tokens` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `user` --- - -DROP TABLE IF EXISTS `user`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `user` ( - `uid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `parent-uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'The parent user that has full control about this user', - `guid` varchar(64) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this user', - `username` varchar(255) NOT NULL DEFAULT '' COMMENT 'Name that this user is known by', - `password` varchar(255) NOT NULL DEFAULT '' COMMENT 'encrypted password', - `legacy_password` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Is the password hash double-hashed?', - `nickname` varchar(255) NOT NULL DEFAULT '' COMMENT 'nick- and user name', - `email` varchar(255) NOT NULL DEFAULT '' COMMENT 'the users email address', - `openid` varchar(255) NOT NULL DEFAULT '', - `timezone` varchar(128) NOT NULL DEFAULT '' COMMENT 'PHP-legal timezone', - `language` varchar(32) NOT NULL DEFAULT 'en' COMMENT 'default language', - `register_date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'timestamp of registration', - `login_date` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'timestamp of last login', - `default-location` varchar(255) NOT NULL DEFAULT '' COMMENT 'Default for item.location', - `allow_location` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1 allows to display the location', - `theme` varchar(255) NOT NULL DEFAULT '' COMMENT 'user theme preference', - `pubkey` text COMMENT 'RSA public key 4096 bit', - `prvkey` text COMMENT 'RSA private key 4096 bit', - `spubkey` text, - `sprvkey` text, - `verified` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'user is verified through email', - `blocked` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1 for user is blocked', - `blockwall` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Prohibit contacts to post to the profile page of the user', - `hidewall` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Hide profile details from unkown viewers', - `blocktags` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Prohibit contacts to tag the post of this user', - `unkmail` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Permit unknown people to send private mails to this user', - `cntunkmail` int(10) unsigned NOT NULL DEFAULT '10', - `notify-flags` smallint(5) unsigned NOT NULL DEFAULT '65535' COMMENT 'email notification options', - `page-flags` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'page/profile type', - `account-type` tinyint(3) unsigned NOT NULL DEFAULT '0', - `prvnets` tinyint(1) NOT NULL DEFAULT '0', - `pwdreset` varchar(255) DEFAULT NULL COMMENT 'Password reset request token', - `pwdreset_time` datetime DEFAULT NULL COMMENT 'Timestamp of the last password reset request', - `maxreq` int(10) unsigned NOT NULL DEFAULT '10', - `expire` int(10) unsigned NOT NULL DEFAULT '0', - `account_removed` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'if 1 the account is removed', - `account_expired` tinyint(1) NOT NULL DEFAULT '0', - `account_expires_on` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'timestamp when account expires and will be deleted', - `expire_notification_sent` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'timestamp of last warning of account expiration', - `def_gid` int(10) unsigned NOT NULL DEFAULT '0', - `allow_cid` mediumtext COMMENT 'default permission for this user', - `allow_gid` mediumtext COMMENT 'default permission for this user', - `deny_cid` mediumtext COMMENT 'default permission for this user', - `deny_gid` mediumtext COMMENT 'default permission for this user', - `openidserver` text, - PRIMARY KEY (`uid`), - KEY `nickname` (`nickname`(32)) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COMMENT='The local users'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `user` --- - -LOCK TABLES `user` WRITE; -/*!40000 ALTER TABLE `user` DISABLE KEYS */; -INSERT INTO `user` VALUES (1,0,'930bb26b-675b-f00a-1f35-2cc901636033','admin','$2y$10$fNbcWW.kB9LO1LxSzTkr4ugtn2IMwhuMv37p37KpUytn8.5bpjjba',0,'admin','admin@friendica.local','','UTC','en','2018-11-17 12:31:27','2018-11-17 12:34:21','',0,'','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyYmalhhmPJg0qwLjbeoL\nKgykA6idu8HtZkKWPpXZHHD9J0InLId7Ht3G9dSBIBbHpWhaoFHkI06PRaqiT3sY\n4yXPBWDuhnIzzbV5VbxXShzRCe0LzBMhvusf/74sQkqH64g7xsaSBipHHaUEa7yD\nv+xCoGtoSOcqGEBzesSH//sIl94IrkkN+/grb1ZSFFjQYWMLMWMD7Py/awcqOtCB\nJ6NnmcBVMK5CxyV+YN+C+dhUsf+LjvH7WE0uigvTlMG+lGfXHxl4/en8bcAQ/GEr\n1xfbDJuknxr+ckGFZeHtj6Noz1IRD7y+7rlTgbZTmOrCJKg38Br2m3tMGGhIU3t7\nSmrKn8qqf9HuyR83+7Cu+t8x24LuhTjGW2Z6KE5TqYacMu+to58MFH8lDOnoOxHA\nGWpi9kYPXSbO9mLwDNF3pue3bLusvGQnns9h38w8m1Q25nivKKvgVbOrdNaB6wUy\nFIDcqjlZOVIyZ24QWZck77Em/cCkEf1c9kV4f1VjwmyQ4apSPf6q92AHcBlbv7yI\nFhVbGMhEaMIT7PQgxi2F48YInnlNjQlk3yHv3sdjlYJvcHHlf2PsMXlRb1CzrFRf\nX6Uv7e1obwy+SsywkAq+sT4tfsPEw2mIL56cXw0licP2hjOIgzYD1xi8pZx3xsQP\nTjdpqBmCKfnzs+TCZIbXIQ8CAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDJiZqWGGY8mDSr\nAuNt6gsqDKQDqJ27we1mQpY+ldkccP0nQicsh3se3cb11IEgFselaFqgUeQjTo9F\nqqJPexjjJc8FYO6GcjPNtXlVvFdKHNEJ7QvMEyG+6x//vixCSofriDvGxpIGKkcd\npQRrvIO/7EKga2hI5yoYQHN6xIf/+wiX3giuSQ37+CtvVlIUWNBhYwsxYwPs/L9r\nByo60IEno2eZwFUwrkLHJX5g34L52FSx/4uO8ftYTS6KC9OUwb6UZ9cfGXj96fxt\nwBD8YSvXF9sMm6SfGv5yQYVl4e2Po2jPUhEPvL7uuVOBtlOY6sIkqDfwGvabe0wY\naEhTe3tKasqfyqp/0e7JHzf7sK763zHbgu6FOMZbZnooTlOphpwy762jnwwUfyUM\n6eg7EcAZamL2Rg9dJs72YvAM0Xem57dsu6y8ZCeez2HfzDybVDbmeK8oq+BVs6t0\n1oHrBTIUgNyqOVk5UjJnbhBZlyTvsSb9wKQR/Vz2RXh/VWPCbJDhqlI9/qr3YAdw\nGVu/vIgWFVsYyERowhPs9CDGLYXjxgieeU2NCWTfIe/ex2OVgm9wceV/Y+wxeVFv\nULOsVF9fpS/t7WhvDL5KzLCQCr6xPi1+w8TDaYgvnpxfDSWJw/aGM4iDNgPXGLyl\nnHfGxA9ON2moGYIp+fOz5MJkhtchDwIDAQABAoICAQCBBNFs0zPoCLx22gOEovcA\ntVTubqyDvXNgKrKKYF28Qm0eC9CORjFAolOznpYHV+35ayPRTHuTSsCXpdQAs9pL\n2DF+zP4GHegiAdIqW8c5z9bW1uTdgUXyNg2nKDSnP5Vh6DX0W7yxq7EZPkHlQqrJ\nW9OPZRM+0JX3LpN+/X/fFPL8Xg0KngQQ0V/lB8rF8dF89u38cNnbhjZ4qv6S5lY4\nbPhuylz/LB/d45fTJmNv1Njrlp/eI/V3IvnvMAEEUz/RO+TQqPr2+is6i2GUYBSz\nvzbhDGbH4H0R4fYnMgpmEQOQ7YW0oG1O4F+gQ3ujAm7FDte4o1pKURV27pOWtg9H\ngW6Omj+lUtGv3k91JCrjyzjeGpBjXfSyW5NJ95+JCJ0On9tznIK/CvrBQM2caowA\nOrB/qscrbbQc17Jm8fB8mwtS+yjNoAxa3cD8R5OigMZzze9LgvSU5Cg9WktNBAVf\n/pomQ7acOobmq/aoDY2XcXn1Tu6HElgKgE26aLYT5biji9XIFmDOb+yH7cwlGijm\nGtDSRkDxOVloEaz0y+E3lQWrGcgrteKXDg+VN5dsPQMNeXbl+KwI6XRPQcO/qjtI\n40I5tSLSHklZEvmUD8IqbR8anwknbRkq1+oF0W8gzRVuVIiYd6igmgujbXqHCsUG\nb0e67A83Tu1Huy8bIDDUqQKCAQEA+vWqW+bwetb89uZhIUt8W5q+aKz6Q6KhjvsM\nDz8UrumlR997ySgFbYG4AZHaRe8jLIVLpe55c3IIfJxT1cNJdF1q0Tgl2UtN092d\nOxm9+wyp7c66mnAQ+6ElOv7gTDvWu0Ui4u2mrtywcHmW80k+AtuLLovZ9+AO3j0k\nHxe4taqQDOLll1eR6HRUKQJWm2pKkURfWki6sIBxGZcWK2vvvWqQacrpKqNJbnEC\nkdQ20pK5h5HXYFS8Fj1rEPoOKukQWR26IMQ3tGwph9XGXPjsaArS4i1bs7ebChJO\noyGVYXnJNRDmYBHhyns3Bw3Y43bnMcTKkoqESnqT/eDaT7GTqwKCAQEAzZXUXLtM\n/JXTUizJ+rNMr618pctmkII45CwMtjoJRQdOONHTddvinO/Kpm7WuvXqZNbvH1Is\nF8bQ8R0NiI+4diDaHGsHI6+RAfxFARRzpp13CbB0f3P3kESifaCjw+mE3SAl8q5s\nmUWvKa83VEM/UJl45h33eLaRD58Ess0AWXW9SkWXYpqIMBYgms7aJpPVDHbCd0TJ\n3EeDnuewSKZoPyKfEQi6z/6BWQbXuS1zGdFWfF7ZtBLA6Wz9BJMNTlEysd9YIIzD\n+NM/V7ekL/uonS8wDpl4hnFsbhfEbQlBcVf6h9fTT5I+grxJ0EpDkBBNE0+cL0Dl\nk4X+zyJHIXSELQKCAQAcwBAoPyjFqeOJFZODEPbKN8wgidCR9wuzKaeUB5IDB9lb\nhorT3LXieb3u0BrFcEQDUbH87HkVdLbsL6ybDKhZoGogVeJgJnRgFT9yCdzt6eF9\n0PUnxDbt3OQ7AgAIO8K56Y25mahC2B2OhR9596YXBbfIOVVbRFvvsel1dm4+wa+H\nCmdrEykwDEOn/xCU9XRdeAvEeBiLJ+vNFrX/e3oXpSGuPQTBUbuT33Z/5mPxc8W1\ndkvKSWrS0W52n28IE3NAAlvUbSZEkS+g1CjJder/cF4Ac1nSGPK2EKrZnXtTk3Qt\nlCYQU3weikcfk8KJLJIH7ZeXei71qV1S9HOONbXJAoIBAQCvM2/OM0TRwTFdR5Q9\n1Y2V7ahbdrMKlh+7vBp9NYpuzGIKJC8sst411lkCa1UN8cL2ewE/1PyEqseno5XD\n+o8+BJM8Qq3L6LQQWBfKas6AgJNQq5MshvzEculzXHIT5K947wvH/IPKP0uen5bs\ndX7Axnn0yjb7JcML5/3ODsyscJ2HbTUtL/q92C2jIINi+vtGavMhR3ssAboWsuZV\nk5MlsvCSSLlDxmYfI6i2RBhiOTeWOBMZ1h2XEG2z90oQozwrv+XPn4bnR8gkjfkb\nd0Fj6zHuTzYahRDd5d1c+tVNradxGyoXFs+1BJd3LcLUREAbI+47ivfbOAdGKLUr\nuqtlAoIBAB+COxNh0eSLnradSSyFy42AjGPyXQ0sJkxh/UJLWh/H3/ww63iHlg3/\nPoacHF9GldCF4YP2pdV6ot6sbjDWDYeRMtJTPruo9irZwZDFL2PTntmoUfDWfhDX\n7qaKIh6Yqp644FGsz3ylPfjloCmHP3aS/mCHkZA6GjHXkzF6SJKVP14XZCw1dBw4\n0CWZOaWzrI37IkdLGHXF5A86PsgSjk7R0w4yh9We+xhev3e/dy0g0ng/2Y03dBza\n9MJ0T9wjCH86QsdPvZFsUDT2M2XDAyZ/Np9Cj7IYIuhGtvczg1EsKF8ofn7002ft\nHB+O/IlXJ5YQVCMXh1UYn96Cfxi2qrE=\n-----END PRIVATE KEY-----\n','-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ/QUrmHQ8M7vRU4vaV+uOHwP020+b/V\nB9X1/X8bJL1KGxW65DNS+I+KsEDVxBHGnj2PV06C92vFWDXW2NuwW5UCAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAn9BSuYdDwzu9FTi9\npX644fA/TbT5v9UH1fX9fxskvUobFbrkM1L4j4qwQNXEEcaePY9XToL3a8VYNdbY\n27BblQIDAQABAkALiCPAAXOxTck6E8sTew5qN0TKHan73qpfFQ4Csvm2stoJXqdm\nqCvSh3lTkwM4s7/QBf5HqARo9YLi1KeGgv7tAiEAzgKXKBjAUrtMM7qKsMzf2nJq\ncRMRxYcYpfVxTyTu9/MCIQDGmABX8F8WELIf5gm/Gypnj7cnNkiJYAzmooMvI3uI\nVwIgB4WusUceFqdCJA1mrQf+EILnAhP5LSY+ryikJ4iotSMCICKEgvLF/dD4/+zZ\nb/I+h4VOjngLUFpITpW7w29rDGqrAiEAqSUeJpF7Z91DghIaZwG16NM54g4QiMXU\nvNh4VvnxfE4=\n-----END PRIVATE KEY-----\n',1,0,0,0,0,0,10,703,0,0,0,NULL,NULL,10,0,0,0,'0001-01-01 00:00:00','0001-01-01 00:00:00',1,'','','','',''),(2,0,'930bb26b-585b-f00c-1225-b79618332648','friendica1','$2y$10$n5IJMWAKgemqtSLhDnr0JessKoR2JkbclSZfaFZAbI/ZtnE8XRUQS',0,'friendica1','friendica1@friendica.local','','UTC','en','2018-11-17 12:39:46','2018-11-17 14:01:54','',0,'','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmQR1Wmtv2KMZ5f5NTJMf\nRfX+1KXfhCKZaDgtL8/Trtb1ZXLq0tlBVhm29MI1F6cxZFhNlFyW6GZCeZFKX3FP\n2pFw03sEBTo5PCLso18EEl9kXV9cXoBMzINI3jIGnJiawq9PfIw5142jFBLOxiDS\nc/iNG6iFbq2qHwiQJjtp61BCFivIMZaHXqvtroakggjBH3EbRx+rZfeqjB8MRqOc\npXIqjc0lrHk8QGdXeuUAWsL2qUqHVNekLBXPnRcdMT8BxUmtBj0ccZ1IICLPFEzK\nr6DtqH5kE+aq9IcoMIEDjUhnyOAvFda8TlxX8D5SMFbrfJZDTypDqXHnSxHUS0Rd\nX06tLJZxMgqHspkxp6nzxk7JGPHKQmU6N0uqQb+i7dFlgC8QRLi79a1x019dvpAN\nRwbhGnn/pEU9Kn1JbYTAI6irBnHnlAUkpxmwSzRx5ncbNbhbniMD2/39IV1mztUh\nAyc262/cRRJAu8pEsPvc/pSijIyfrxJGYqF/uUcS5gbrY+wCjpYaBdzFxQEcD1Aq\nvXQGxi3sMRY9b1FJ+f3UTB7D9kIBCbwUNOXCjDCrOKZN6nxPLpKnfFsneHleUHa0\n+MRzI/vX78jQ1P4KgxPIiSktfrZitBpyzCC5O4ytiwqF2E8Ei0zE6OL2gm8yv7tB\n00ewnSBHzIpdnS51XuxxmIsCAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQCZBHVaa2/Yoxnl\n/k1Mkx9F9f7Upd+EIploOC0vz9Ou1vVlcurS2UFWGbb0wjUXpzFkWE2UXJboZkJ5\nkUpfcU/akXDTewQFOjk8IuyjXwQSX2RdX1xegEzMg0jeMgacmJrCr098jDnXjaMU\nEs7GINJz+I0bqIVuraofCJAmO2nrUEIWK8gxlodeq+2uhqSCCMEfcRtHH6tl96qM\nHwxGo5ylciqNzSWseTxAZ1d65QBawvapSodU16QsFc+dFx0xPwHFSa0GPRxxnUgg\nIs8UTMqvoO2ofmQT5qr0hygwgQONSGfI4C8V1rxOXFfwPlIwVut8lkNPKkOpcedL\nEdRLRF1fTq0slnEyCoeymTGnqfPGTskY8cpCZTo3S6pBv6Lt0WWALxBEuLv1rXHT\nX12+kA1HBuEaef+kRT0qfUlthMAjqKsGceeUBSSnGbBLNHHmdxs1uFueIwPb/f0h\nXWbO1SEDJzbrb9xFEkC7ykSw+9z+lKKMjJ+vEkZioX+5RxLmButj7AKOlhoF3MXF\nARwPUCq9dAbGLewxFj1vUUn5/dRMHsP2QgEJvBQ05cKMMKs4pk3qfE8ukqd8Wyd4\neV5QdrT4xHMj+9fvyNDU/gqDE8iJKS1+tmK0GnLMILk7jK2LCoXYTwSLTMTo4vaC\nbzK/u0HTR7CdIEfMil2dLnVe7HGYiwIDAQABAoICAAgzxfqf0bICJCxA8nHNXRrJ\n8ewCLDYQCLseb8WlVUqE+UiD3XSJ8sejvzvlgSUQcERZu2bdg7VXbe7IS/1LvKUR\nsMOVT4TcNx8zHA4x1K0LcfzTVMc4B2XbD7fhZJtWTs1qyk750UvtqrUzwOO79KwE\nwcOex/BD3N+m/NsfyjCz76byl9uYnw8DFk2JqB3UTE3cKUMpvm1L1leGfoj20jnI\nIeHSAlf5c7JcF8NdrSQwWTp/5Ts2B/XZAXUBPS5bm0OxDFZORk0MykX2t7T13NOH\nQ9YJWGH8tmM/L3dSIxearv2EjuGTzipBJvGY1Z0Du8HE6DzBHjliAqzyerfCJWMW\nQ5HJpbFulk5dWA4FTcewdmRcO2Y1aih1b+PZP1j6QLSLaCOD0tTiGKWwgCD5zZ4g\nKNUDtDGVd+jJdNlWcT8PYo+4f11kvmYjbA6hWWqfvosBZc9Pe0gcFE7XZErt2z3W\nIU6IJ9kymxbtN+tH2wg8Twwwue5cAWX/dnizXNyU6r93dmqFs/GQpU8yiGucKdvJ\nyBSPG+voxvTsGxnWWNze3kqLhF+/CwAv9qTx5HgCun4Q0pOyH/B0mS/GI9Pp5mB7\n0IqeNURprpR3NuiLWGZ+7GWXER2QzCsAzvr5wGfJXGpwSl7poNUz0z8FyrKjoSVN\ndV5WnHtAlXafrKNGyLlBAoIBAQDGQ6EFd5MHqpMJvtXcKDzXRLnHMkntJPa5wOT3\nBSgpQoI2eyFPA+8UbTy50UAQBJw6maYwRvRNlCsjScWvn3TvSUQmpM55fcq+8ELi\nEHsA+hzQj2Z8lokB3EOv1WygML6quRcHNjpFu7s3MbBjE+vRPUMpQwZy3jtiHHR1\nwZML3NP3WkDWQOxgAXDNPdJMlCA84vAziHa45ix7SsDD/MJzZyJB+0N94lMSdIig\nEc1y3HBL+dkTuxkj7qL23KBkR+umyOS1WeYGzsn5FzSLMGKXo3JMqoroYpkZzCo8\nYVSiCBBAPwsd52bBC46MISVbJ177pIJJpYZ3BURaq1GujPMhAoIBAQDFk7wCsYt2\nBVos0ma6f5rK8yZ/zHq0iktPyoRFNqQ80a51lNpAhVP+RYh/qyN822syYEp+P0Ln\nAmSeA9MGRhoqJIni+Xhdrz/pM3VPGQ9EMx1tiBpoOVK9bYiDJYJnynggJur3KK0g\nAphYRxHPoqm6xq4v1Rwz3Xovr6CAwL/w1KyBmc2hpR9GMd4D8jHlF/c9IAWMwTi/\nN81chHAjkJ4FM8Vd40lh67B+WRjglTMAirTBTVpmZF2jY/J9N0gHw/W1v1k8ccAW\nd6XjQZbN5lqmBi9uQkfO51UiCSOfxgP/ZRen0SU9GAl7J01MY7LWLAV8v/fceg7o\nFGo71OnLjoIrAoIBAQCiWtEqK+//8CO2cEqqnVytH39OapT1GDbeh+I3kkZ/+xGs\nUYpGLT+Dp6x5savXMh9JMXdQw1ndiX8Fx6yVk2trY8DmMEFQZb04PIFYpAxGEYq1\nEyjmz1Lkbh4TiB8K0r/gB++enT58yi2WFh+OEssiLhuoV1WZjPht8EVCBMFIjo4Z\nWRQNH18xgxx/RafHw+jeUyxF1vL5mKtGT0GpfHszi3oXNA3hsQs76qfTBKEL9Q4U\neUXVDXqZ3RogMy040Vhc3NfE1hgy7PWh/+msLXQfHt5Df8h+Yfdjk7fmeAGZKic8\npSOSWmLfpHoXsDDqA0SZpu52JpEFOA/we6hI2u1hAoIBAQCqS/Q5vh6e024uRAwX\no/UgCQSeEvmQs8LGO6BWqApYAcOFxY95HXKQMA6/PBuSeu2itix/NLfNtdpT+Kfj\nOHlE6cmPwcdluLA1qQzr6IWoGwa6ah2YyA/xBoAryiDkpTd1PxY3gu/2L0ZwkJFh\njqsNOkLZJ67vZW7zu0V0tK68PhOSgackNNcIAeODMzaeaFHKdddSwxjOeKKho+Wk\nQfpyMXVkv4t4w1WVEebHbNJRHT0/gBTzPH8ZXgScuRF04ArhZNTdrI4Mz4REpTv+\nrRZlE9++AZMzW2GdvJLgHCVF9TS2iSa3yggiBnYx6Z0zzS3NoQlbGDnRAAexGouJ\n0IORAoIBAQCiLTwdorP7TpLsqehqTTdytLhsJZG1LrsvVn48kMnqAV3mhZ4d8qIU\nV7fBAcN34khPJJhaBPeM5TPnb24f2gf6aJwrdrYxOh9TnPG2jKgTj/Uw9nIIQAc+\nMzSfyOfUrVkU6mRhZkHDhcZ0ddf3WEBvx4OfuBQnBnp4hkUxv0ENRGa6QDJwc7nW\n4wpzESMVnn1sBawKNTCfQQW5HtUmjn53mNFONj8zNPiznu1GBdnfRVXvg7xX1xYR\n6+FzsYExtYLoUTTU2vE7bNk8ISsUn31BG5YQG2r8SEufhX+0WmK1LiD/pqSX251O\nvQEVQxUlOK4eUVadLx32xaewnoNq/wsS\n-----END PRIVATE KEY-----\n','-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMEO95wRb6UY9g/EL3amXnD5fji96Xsv\nynqlnwjNG/Ev+xbOG/Tsq2gM/+0OcwDJF1uxdarNpJWyijcasgPM4EsCAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAwQ73nBFvpRj2D8Qv\ndqZecPl+OL3pey/KeqWfCM0b8S/7Fs4b9OyraAz/7Q5zAMkXW7F1qs2klbKKNxqy\nA8zgSwIDAQABAkB/gXcf6JQoIjhBaX0/i9nMG7u1lhhid8nu/vvuQCk4PSZrXSUR\ngoMzhfXWP8Tr0/lEnvcEYt0ZnGlmDo4dekPBAiEA5nXpl+18XxpUTT4ZISWU9R3s\ntm3CClxPP9fgYEeJEhkCIQDWc/ggG1xl0XbfzCRzZ7+vHpAKMJ0o1HqTV2W66tg6\nAwIhAISfAkgNwG6yJiU1QRzUFb5g9CGfU/TGXkytHFALmpOxAiEApIjxdGDJsWzW\nUbqktM6C6O8AAHFwAuWS7fz+Fj0cjNUCICoFCygiaJfMJ5ESX1lABlrpC0FGmfLm\nD/JR1LHwRZp+\n-----END PRIVATE KEY-----\n',1,0,0,0,0,0,10,703,0,0,0,NULL,NULL,10,0,0,0,'0001-01-01 00:00:00','0001-01-01 00:00:00',2,'','','','',''),(3,0,'930bb26b-155b-f00c-272b-7ee871449332','friendica2','$2y$10$eMcECTZ1DIgZb/TirrQjmOmdwLvyl.lVBpWtY//5MX34Dcy6G9HWG',0,'friendica2','friendica2@friendica.local','','UTC','en','2018-11-17 12:40:07','2018-11-17 13:53:11','',0,'','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwMWwwjqXtfQmCzLQmZ+D\ntRVdtv1Vq6DdjC/+aEP3UKLpp0nzNcsfT3U8Kejs23o0KpC+EVFXuWZqvxyeHoiZ\n+w9i1roJf2eSLBVeAjiEmLbI7wSfLBu+iA1x+X6+d9wxxAgzM7KHIBOghVCDussz\n4AaojP4Dx3Egsl1w+1j/ULUNCvf1wq9KLMMgJlnemC4cHfv+ObcxdisPezjVD9sg\nnvRLKyv6i8gm8csDwaHtHP6VNxc0JnauU6GIxBrDmlnpKYGb3rl3WLSvuiyzJYrr\nzKESnFINFKRLCG3m548OK+reRBDmgYbsZFJ57FS6YTa63268IwwtlRbRs8n8N7Mi\nO0jAXhRyZKRim6lkykIUjwlmIKfS2xl38k1kg5VLfPwZYAhiG6+JMcBlyj7hKU+4\nN9FKKfLlxtRz/g2kh81eHWEOXblEohpR/GbAhMF8h/tkHM+ze2TAbyEK1A+UWlWZ\n3olMRdt/awlAd657XqGVukYUg++GdEGkVyeWcCV3CwscbhiFAqpV/TWh6yARultJ\nvij/UQWi27yFY1v4EAactGL/V+zrmQSduKGd7jpHJe2XVS4DGuw+ThiDQc8gamlG\ndmZcPkVxChFqGpxGKXOr8uFWbYUG4Cj3iA4iV8XOlGUIN8uFtbWX/VyVHGNGDmGg\n60osshOegUJTNz8OBkZspvsCAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDAxbDCOpe19CYL\nMtCZn4O1FV22/VWroN2ML/5oQ/dQoumnSfM1yx9PdTwp6OzbejQqkL4RUVe5Zmq/\nHJ4eiJn7D2LWugl/Z5IsFV4COISYtsjvBJ8sG76IDXH5fr533DHECDMzsocgE6CF\nUIO6yzPgBqiM/gPHcSCyXXD7WP9QtQ0K9/XCr0oswyAmWd6YLhwd+/45tzF2Kw97\nONUP2yCe9EsrK/qLyCbxywPBoe0c/pU3FzQmdq5ToYjEGsOaWekpgZveuXdYtK+6\nLLMliuvMoRKcUg0UpEsIbebnjw4r6t5EEOaBhuxkUnnsVLphNrrfbrwjDC2VFtGz\nyfw3syI7SMBeFHJkpGKbqWTKQhSPCWYgp9LbGXfyTWSDlUt8/BlgCGIbr4kxwGXK\nPuEpT7g30Uop8uXG1HP+DaSHzV4dYQ5duUSiGlH8ZsCEwXyH+2Qcz7N7ZMBvIQrU\nD5RaVZneiUxF239rCUB3rnteoZW6RhSD74Z0QaRXJ5ZwJXcLCxxuGIUCqlX9NaHr\nIBG6W0m+KP9RBaLbvIVjW/gQBpy0Yv9X7OuZBJ24oZ3uOkcl7ZdVLgMa7D5OGINB\nzyBqaUZ2Zlw+RXEKEWoanEYpc6vy4VZthQbgKPeIDiJXxc6UZQg3y4W1tZf9XJUc\nY0YOYaDrSiyyE56BQlM3Pw4GRmym+wIDAQABAoICAQCebZqQdiEa+/WMPI3tw4g1\n+cJUUq3m6MVLomH+hOUr00geIYuNiUtJPTtd4j1PP4bB+MUMbIKhL4fJWxakV3Xd\nPM7pVGnb2F3sdv8U6ignbgmDTpQWZxLWs94Yw058KW6JAog6E540AY1qIzqv+LLA\nihhaD6VBczsA/ASPvZvPU4zNl+3Vu8RFN3QjsLZc8YBQMDrGakVvLYKCrbmFV3ze\nxj1E1NcLrEo9a7DBoXfC3YP6i8pjViR9PQOuz6Q0JXKXlxpoGJr6Pz0wz+3Hi/2w\n5ivqZxCzBzdXTSN46TwnYdabsBwRFbcP2Cy1ywiGPrmkSVi7oRWRMvjTPsxXZpRZ\nIBxOYmkjNvquIrnL9GaAxzSuHBK+wdlLbt8zbOzyhmNKkKuvw5659SeKAjka1S5Y\nWXYWoJrgivYDwinwFLVmiR7XkZ3qh26eobxOBowy49NyvZAwiMLoHet12+EWBgUD\nrfmP7yb1OnQj8J0+qvWT5+AbKwhV0wIcEaFWX7iIw4Zx5SbIbmHpTyM8hm7M9l34\ntaqVlgceTJZtu3CD12s79uPD3KN6N64e+xb/s9GAK1sZUAlM8m/VkzLspSQ451U9\nOYixiGx3VzJ3TWC9CwHAVc6E7z0lt6cuQA7Kn06X4MDdvn6Dtg2A32lg+KM5Fajz\nExz0i0dnUkZSBiAVkxbSMQKCAQEA8vKh3rNGGZ6ntj54ct82dd91YqtfHhHh707P\naFOMDAYssPDGjDjZPzxSVGzGMBlo7VvqHaHwMBqpULOwaijwpdNv5r2gy5/Lg22E\n8mDfjgzEaDUKkFWhMQ9ckevwY9bAAnR9YAdHUloMrIQyYsGg9Fu7BIkAmFDPFOeJ\n0IuMrkHPiePR7LuMykILCcuYP73nIVgIfMvbAe3wcZnrpYBu2zRb8EiV/mZwFwiW\n0d19d1LwoKLXuu036DvIfUTnPcapnnAE29PdOTWp1/Ni4EkeflxIHl/6hiKpkg6l\nxVVuYRVG1LQWViw7JGzrMf3WJ+bqaUFt4sBAsFI32/QeLBPJEwKCAQEAyyD4wTN8\n+T59JHsr09N7PIGjjW70oiu77OT4W0K/AF57r9F+IYKYn2v8S/1qS12qhrkFNhmG\n2Y0VLi/GOyDaxzEO/IgnlhIetf7SCKfvZf8JgAUEGdZJ7xJc5q4L7N8GgCA0Y/Tz\naarPHuo+T33EOXyArULBb/8IY+oUOeZQuDgsyEevMViaNkzZzOaWSKXFlpQqaXnz\nybUVCQ1BL/u7HRvhkpnc7uVwUWe5LqOsRRFdzWjyPIjpCjhBcE93O4j64sl177bj\nz9rTVbd3KNNIjSuEOB/q3/IdVj44wfrnYkI8z3aFc7q4XyFU8IbSiAlTvKYfKMsJ\nsHLKu0XrrluPeQKCAQEAmBailOq/0JwMu78B4k+wJTxdnQZRRl7FhO1eVB4xRvm6\nko44jWGtRrP5ilaJ/2R41la7Cg/tb//QzO+gWeUFOZpSrC078x025zDxkFZqvN9r\nOR0zXsXsYe0O816zn5y5mQ/ZyPrlgD1VP86GSGKU40RloGIv2CqGaLzF/qLNz+zt\nApJ3QW7rpVaQ2HH2/rhgb/RPY+iuUtfktQk5huMPAvUVNSgLljYEp7a9y+WPfNqU\nPsuSp7eHTz/Vs+4loPu0BbZ0pDVOgVkB2WnJFUVQ7KPSlglZqQ0cAI5g4lcoAWiz\nbcbLUOjhoVz6I9KXdWVOi9Pk+ZWHKZpe07hQByHftwKCAQAsJ6CrLqwN6f19/qBK\nTYBOaMfKqMHYtrUFC8jI3btzMxaj42ANnLvce7a+NfnzJAs7eeCeH/JmO/rMrWnj\n1IJ6Jjnhvx8LyiiO2zOA2jB59XR1NaHsk95Cb7VuF4tUFC7vjxCUYdy/rXeUesrM\nsMQE0wGNqCMwWznRrkJzS5NkWCGz75Evotjy0MXPephUdmR7FP4bK31I7WoDK7Rt\n38SO0U65dWTHMWy25VslvkJmSR4g1p1Bd2lg5VWkOkHq2R3gSnaugw0GU8T4rwbi\nAvuUZE87fASsZY7m/mOMFyRRAaECX/smawJE+5PhLQ16sLxZF6tSTMBwcKONDefr\nYM/RAoIBAHt/RB8DkdmLxU+CECiSP9NEb1DKwRNrbO6lmCf7yPQEuW/VzaFelJme\nQwOtt0qSF/v+mCma2el3+gtzSr99Xmn2B/1JrhXDppLW0vYvIb/4LgOkK0vsexp2\nwYtotIN2FmyMFlNo/QldtYd5N6ntGxZ98I6SrLGxldVYLehBvw8f0PN8K94VHxQl\n6xbT2gJoKuif6uGp3hRMShZIBjpud4QpTIns/cKswtrKYZXAEPIalVkk6PZpZePy\n19qswGwwCKXYldHL/u665EltvPcgqmsS8tabpHlZZWDQiawtLgClJlVHhhFAiXxc\nOVpxbVPdTHhTdGnA/6LsObTIpx8Xepw=\n-----END PRIVATE KEY-----\n','-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALAc4L4geDC9ql7gJ7vLsXzRbWWtbk6r\nUdL43r270lpO6Jk44dNIGdTUHVAPvTO/ff43mibgTftstJQXiSGBYM0CAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAsBzgviB4ML2qXuAn\nu8uxfNFtZa1uTqtR0vjevbvSWk7omTjh00gZ1NQdUA+9M799/jeaJuBN+2y0lBeJ\nIYFgzQIDAQABAkBC9ogB4uiwZ72bG5IgFuBivGLjUWFq6jtPg6915y+hhFOPEf5P\nDv4XOXv2JCu08ucXgTJyD7gemTk87AMlJKDBAiEA49uvDAc38w2v7Q9pqbMUAKGS\ndehF+CDILIi0OQE8ql0CIQDF3SIkmlubcwnQpzdCgw6q5jDuQXpKh5cGE14icw2J\nMQIhAIEzayFt4mq+QxgvmiFwepIVC8AxsaMNq5Oc/FwqeGS9AiAdPXmvORRym4SG\nzj9PV/jR7qSqgQimfPUnk7MkmiYU8QIgMok5JKEacVtyZzef6lPJCkQwWnR5430b\nE6sYMImFBas=\n-----END PRIVATE KEY-----\n',1,0,0,0,0,0,10,65535,0,0,0,NULL,NULL,10,0,0,0,'0001-01-01 00:00:00','0001-01-01 00:00:00',3,NULL,NULL,NULL,NULL,NULL),(4,0,'930bb26b-425b-f00c-3ce7-94f334620775','friendica3','$2y$10$6It1MPumdaHd32nWpPdgWuZljJ2ECZsPLhd8GTl5HNi0g4DNZl17i',0,'friendica3','friendica3@friendica.local','','UTC','en','2018-11-17 12:40:28','2018-11-17 13:47:24','',0,'','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvAs4TR4AI+nlBt8d7BHD\nViq6w3UslHqURRUo0+sfAE5RL45im2z+ryPag1K5dbs5pcoa6hfk9+EREgoWlwnX\nX/8UdkvkoHE6/JDFimuaK7pequwUQbQoOXkkBAyPtN8YhjfGM19CI5FIVByY+O8p\nO/lGls1h5bxYEIgjA0tTDw5FuhPtiw9SJAPtQs5Gueoe9y7VwXNLNenKI6r6/Kfo\nzgYKJS98ibCllMiDIY0ixZZqhsh5+oEAsGPaNtQSgw09fWyyDNUKOenC4NhhMWsY\nBtTgDOPkM1AgidQKny7wtfo04YCn13SZuU6cWXqCx2pTgxLpBRgNbfkf6/DerVEO\nh2/Fxx2oMrRqLox+kAj03zrKnto3n5cYASlmfeEmUBHtjc/qPbuEzm+FEJKTXkrg\njt0+xzTQxPr+oFMinACdTMu6J4lB6dGCJxbx/Dx6FcRKymUYGdLvZWITfKZAikRh\nX8Pll3bFExOk5ieOdBLRt5ujGHuMbV204qpUsL0kDU9/4aMnpJei4EZuw21ovDH1\nVchVjJS4fzsJkaDfA81+83ADHXU10+UJ7PXAq7U416nC/dr30Gp2cxYb1qELYe4W\nGXE9k857z1o3BevJi4smy0FeydVVEVJ/1SPhPcdKHIA6sfP+TzuvWk7zK+xDwdyb\no4/nVNHD26NC1mVTTAjR7t0CAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQC8CzhNHgAj6eUG\n3x3sEcNWKrrDdSyUepRFFSjT6x8ATlEvjmKbbP6vI9qDUrl1uzmlyhrqF+T34RES\nChaXCddf/xR2S+SgcTr8kMWKa5orul6q7BRBtCg5eSQEDI+03xiGN8YzX0IjkUhU\nHJj47yk7+UaWzWHlvFgQiCMDS1MPDkW6E+2LD1IkA+1Czka56h73LtXBc0s16coj\nqvr8p+jOBgolL3yJsKWUyIMhjSLFlmqGyHn6gQCwY9o21BKDDT19bLIM1Qo56cLg\n2GExaxgG1OAM4+QzUCCJ1AqfLvC1+jThgKfXdJm5TpxZeoLHalODEukFGA1t+R/r\n8N6tUQ6Hb8XHHagytGoujH6QCPTfOsqe2jeflxgBKWZ94SZQEe2Nz+o9u4TOb4UQ\nkpNeSuCO3T7HNNDE+v6gUyKcAJ1My7oniUHp0YInFvH8PHoVxErKZRgZ0u9lYhN8\npkCKRGFfw+WXdsUTE6TmJ450EtG3m6MYe4xtXbTiqlSwvSQNT3/hoyekl6LgRm7D\nbWi8MfVVyFWMlLh/OwmRoN8DzX7zcAMddTXT5Qns9cCrtTjXqcL92vfQanZzFhvW\noQth7hYZcT2TznvPWjcF68mLiybLQV7J1VURUn/VI+E9x0ocgDqx8/5PO69aTvMr\n7EPB3Jujj+dU0cPbo0LWZVNMCNHu3QIDAQABAoICAAiz2Doxbj47P98uijr3o3uk\nZJpRHOwONDhyPz53firMdRNnWobo52yBk0ZKmMyrCoLytIYq7uzN3LViBCOfT/lg\nW7kR0BXgx6MSrCG40xy89k6guFtGFCp8wb7yOeBcBs2HXUPZX703pwpFfIrgvp7I\n7YxjGum/6q9xLXWkkcZ7mZx/+Zla7yk9iUhzNXC7Ng2ofDoEtPFczX8TFaSFvM90\nFhocdX4Fz9Pv56mw13AfgvST6JlASSDgriOlcunfvf3E/wR7A4skl2FCglUAKM+A\nIJJYJaJ+TdMzHf659GfnmXTqOFpPSiH6UmANvGmwMQc648/Zih2RzvljX1rUCoED\nuV2Tt3+ygaCGsGQ4gEcT6TJVtehB7mEHngqwuGYvGMH1C6WSo07DIbljoB07VQyJ\nzEhJSXNJayTUDHiA47u4jOtC/c+oKC8q5qjeRztA4cKxUq1c1R8WV4ysClc3PdAa\nlzgo51iFgJ+/tdC6Y8XP6Yxs1KII6TUOeXFUodekCQgleYO5DTHgIhaXpQplzjFG\nGjyT7uFJSqzfJh6hoXq8V7U4DyFzk4HDv+ruC9Yul49RiRQW7gghMReMDa1c/TdW\nvg3q5BUzSU4qUZ9zNA5hbWZC8pKj6+alWlGszaMsQ1I/wX7932eNS/lXx3GfKtwn\nW0HvkH6gpLRH9vsB+2ohAoIBAQDuanWxy/QZ4c01M9EbieC3YHS/MsDNP9sF3S5v\naDbk4NvMK7iglmz0qe0lwQ7zRSZW+Gs2pX8LQezM7hKjoLxuhHYbQ0c2JgTsbO7N\nSij7ermaUXM0topP9jIJlKt+4QMuxh9RJrt4t8jawOha+o57q97RbvH4KnJvEzrK\nUNU8HWjCAnt5MazUFtJXzMjzZ6paG8KPsNjnh3eNVW3hoTcqueniG70CQT09VUlZ\n9r6km9mqlF/YwkoqRXtka3mZgUUjHxsxUwqRchvxL3DvLfSBoWmnrCKLu/3j+3Pk\nNV+g7CESUPrgycMqByFC5vWf7CyS+p/TLoQR9ZjOwkAh2MIpAoIBAQDJ6a8E9uGs\nZjGKiF52MjmqTVyWZgXhrVvnr/EZiCv010M1J41EuL/57b91z3PEdzWkK1e5fFZ9\nq3Y65A1XkI79Wy9I702dJVPJ+aKVPtHZhhQTq6r2zm2O+tpjXABmX+vIlSaZ+F3H\nkGqry5FFg5UwkCNvHHsDW4MUo/pKAC8OAqhFszKGRGNcZrxamVR95EMqZ9EYZ4Pf\n4HPl4Ajm4H1nbrbYB/vRD/rRru9ma1o6mlyQPSbMcHZNOMtmDGrDm/neaw4ZfNQH\nxubNoc3mX9kSTmjXv+z2Utv0cU664L8TQjMZ6YgQaxVFNGgz+SqM1FKXWdFemYvN\ndFOPtSyR8SWVAoIBAQDG6JD63jLwaP/AtFNwS07tDw83+Ur7spuzv72e+u5Zc/RM\n2ek2KWoLkb2lsvUbJwT+qFEijV558O10Z+erFk4/UkoLIs1FsuCGs7dkFMwuS0yQ\nIAYi42xvm/JRJfUSbP4vxuGX3d2osIRlZW41gTbgnRrP1mUP67H/U6bH5jqQ5eRh\ngJqtGTGc3NFuqQ66bDGm7eQb56p/N/kZND3xcYRKJEOp/gRp3i4Ofpos8XxKbzBh\nbVqtyCMCM2fn9vbDiCM7UxdnxmVZxT7ksPTix49nm1g/qJBFznja/Q3KRnFbG8XX\ntzIn2oz2Am7Ql0ozu2HQ2kH/eZ58MU/kqBHDa0lJAoIBAHltbNEKfBuG9eI/MrfY\naq+NiNH2FzFqZWwHdnKJXw4G6ycrWxzqEqIGpe7+zLtpibvqSP6G1SkMlbTC83cm\nu6eIT/6H0+Be024TEAC7X852gNp3kgCNknu7Rt0cNi1bIFxnvmg4YoWix1P7v6jT\ngkRLWtP2h9A0F7exCdO5GpNNa89G/mqa9DpcmofN0G9JeE8nUitgDYH05R5oxlG6\nzhAHGDUBUCKhfpDdqKGqi//UVzhzXkLym2LDdicv7oEm63UkYr1XQdhPePxPg5k5\nKT2GJC0kAij9GcR+4/8lLCQz2rGJrUdabtdItiYTgdBh3C2jWXOP2fC8NYimR2CZ\naqUCggEBAIqxsD8oj7Jr1EuQK8MT7BkKYQ47h1XNbkAkSMGwp99/F4omtPiAJ8v9\n/XgpOCMmeKvMzDmI2qMrXMZaXmlLE4pMYgOJcXxPv3Iz3b+zHPzlh1jV3IY/sLH1\nxVbzrqiMFxYsRWPd7qK/hnpyD0KZtXxQ7H0PLeCL1il3rfBI4LOXRRmpucDtxwam\nBzFWvxTXxvTnAmefrimmkS27R9OVjj+d3UIrF/NFXCk3rNPD+p92GEVp3zmvVJTB\nlsWY2eN1K1bRSXgsWTFFrnoE+nmJLWrZgX0idwEhvJZoc4VDzDwdv06LthiRW2uX\nSrA58lT8mdYpYCll/RfIRO8HjUf1cn4=\n-----END PRIVATE KEY-----\n','-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOJeVsCyW4oL0fq6ygm79aPI8Ifjsn2z\nsKCGKENPJJ2/MIHYAEkDUKPM0ZKrrFw8iEFHia09LmGbR+yQ7d0PRbcCAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEA4l5WwLJbigvR+rrK\nCbv1o8jwh+OyfbOwoIYoQ08knb8wgdgASQNQo8zRkqusXDyIQUeJrT0uYZtH7JDt\n3Q9FtwIDAQABAkB7YeI1K8H7L1AnMnJ29c0AlcCMwM4D99IY3KbLcTLLC2jKP2Bv\n9bOmcq7FTueJU2e4aPcT6DJ3aqjyGqLKaEM5AiEA/lV6JP2Btn1J6mI9JKeeDcNM\n3pSWtr34OVlEIDqk3L0CIQDj2faYNnFFqzprAWgRH9x76ZTge0pEA27ENW8nXicl\ngwIhAInNXHnwVTjAV61D/yb+HrgMSnkK/0ISWg0QncXsoGjtAiEAlTyU7Ft0U4p0\nR9PzAoxY0HxMe7+lA+kvqqnI9QMRJtsCIQCkMguxhDF2U4IOzqfYEUjBlChRTAGm\nI4LC6zsoApuyPQ==\n-----END PRIVATE KEY-----\n',1,0,0,0,0,0,10,65535,0,0,0,NULL,NULL,10,0,0,0,'0001-01-01 00:00:00','0001-01-01 00:00:00',4,NULL,NULL,NULL,NULL,NULL),(5,0,'930bb26b-485b-f00c-9705-875375530301','friendica4','$2y$10$EwYCtK8AOE/8pJBXBVHCEu6uCXpRfxIRO3QqRUvWMRPig9wfbKhCe',0,'friendica4','friendica4@friendica.local','','UTC','en','2018-11-17 12:41:59','2018-11-17 14:02:32','',0,'','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtOfQNRnGbzBy9Rc7gLAI\nrB5Fp2SBFfjRnd5g99HKWI3Amz5BXdcOWsgikVtwSVGDD8TGPj56qIlp+ctfYkPZ\nn5QSGfA3VS5eqWNfE9aG3XZAO7M7x2pKVaf79ciuYK0HQrmCeClB844x8rXDmW5m\n1k6Any22lpXHdDY8heR6O/uLIG9i/eRiD8tFMY3ATVkJ4MF5TY/m0ZGhHAMfK9dm\nkJzNvJc0cYe6kBmpDDmlJwObo75NfPBi3bqTaIZvTxda6lgWcuv/J1IR0fLhW8IJ\nbbXcd/fSNHV5zdqPmZsiu4+nx1xf+40J1v9+uKCCxH6UlUR9HLcCpYH6PDmoEkRk\n2WVPsU2+crVbY5cbNx08LVe6ZGl/onhTM35t2JBpo9ClgTSmpgEkRQsBebWNEKn3\n/y7Ib+/IywdomRUTgXVtKt5+90FdEhNwrba2CyD3dFW/CQCwx+363juCZr16EiKx\nbG5VJ1aIN8/My9feB9fklqyCpy0vkMI9NptQbtKntueETeLTqKlZ5uJJZJtd6S7z\nrTAd6vx5WLOMYlfQF2K7MVCwYUVfcIoWKxAg3SU+5sIG+cSrreT67wxt6k6sEEOw\npRZn3qZ13vPpO1mJelhqQeDZYutywYHjNj+L5TjCIZqIS129MZbqDJELkjTmckRV\nAZmzTHqCDXwd70IddYvuuJMCAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQC059A1GcZvMHL1\nFzuAsAisHkWnZIEV+NGd3mD30cpYjcCbPkFd1w5ayCKRW3BJUYMPxMY+PnqoiWn5\ny19iQ9mflBIZ8DdVLl6pY18T1obddkA7szvHakpVp/v1yK5grQdCuYJ4KUHzjjHy\ntcOZbmbWToCfLbaWlcd0NjyF5Ho7+4sgb2L95GIPy0UxjcBNWQngwXlNj+bRkaEc\nAx8r12aQnM28lzRxh7qQGakMOaUnA5ujvk188GLdupNohm9PF1rqWBZy6/8nUhHR\n8uFbwglttdx399I0dXnN2o+ZmyK7j6fHXF/7jQnW/364oILEfpSVRH0ctwKlgfo8\nOagSRGTZZU+xTb5ytVtjlxs3HTwtV7pkaX+ieFMzfm3YkGmj0KWBNKamASRFCwF5\ntY0Qqff/Lshv78jLB2iZFROBdW0q3n73QV0SE3CttrYLIPd0Vb8JALDH7freO4Jm\nvXoSIrFsblUnVog3z8zL194H1+SWrIKnLS+Qwj02m1Bu0qe254RN4tOoqVnm4klk\nm13pLvOtMB3q/HlYs4xiV9AXYrsxULBhRV9wihYrECDdJT7mwgb5xKut5PrvDG3q\nTqwQQ7ClFmfepnXe8+k7WYl6WGpB4Nli63LBgeM2P4vlOMIhmohLXb0xluoMkQuS\nNOZyRFUBmbNMeoINfB3vQh11i+64kwIDAQABAoICADL72fv9JaWUe/GC+KwN8IPB\njFPeyVqN41WgpKdzIpnOaWfXJcjyoQMIwGVC5eRj6pH5HP3R0fPJtmpF3L3u7VhB\n/M/+mTmSde87KEKJBT1I5FVu7/wFgqmdTC86vZpVaWRur8x5pDKl8oG6pEOLj8P6\nH9m8ombSE4I2/tulRqW9ALrFaZqwUMquuPN8RaQG4ffLzwoC8kRBzKv+XTyX2joL\nVxg9bPRKElQmRzRA0sCqDaUaLvB1NwfSW1Tr/lbF+ENvS/Rbem90e701vDmF9+5J\ngLb2yvEp4ogXfr0FscY2eEyBRjO4zfsfynDyG6iRHALtaG09TquidAmhHjL3v4vj\n08NrTSMQDtWNk7BW6APXd+U41uPZ54GF23q8N5wmgYUjDhl6nyw1cCEtqzm7DUYy\nQIDE4K4Bn5PSQJ/kBt9VPFZnl0zKV7YQ9ABSEbFy+RSCTtCdzBQZDm5DekBpgOiq\najbMoWByPWkX5SzFcMSflxQIz3jMGRCh5y4REAzpx9aNitl0OrgckoW/ZPK9R2CX\nlMgJQqVRmPshVugN0AWV5A299/Afh9icsjPOkRMhzcRvLUPAqYtXuJPFr6grnu4N\nAm6DZqWW0DRCK/D6NPaviB3838xhrSVGWUzlrS1IfoqTEx7ue8xmYMxzfbN7h+Rx\nA7CnXHpGSIFXGg+oSJJBAoIBAQDfniFJlBSgfiWzOsEXeQK+JtOVoPGiDisJPCLf\nbs08CRJXK5Wo8giK+9QDKfX3OS2ySZC1XlNtJ4kVCO74g3zAdHgo0FPy3d07z5rk\ntJDN5r6Xu4Cl2J1EJ0KWLopyejLoDXclegp4SwrP/q6ODBT4fYzb0cYncO1qGvuC\nNHTTQQip6/z8gkSzMKU7k8UF7WA9/ZCN8UzUc2g1QIjo/+IN6kDboazUStOS6mXl\noWOiLz955vsXkUyGgr1FNVqnWp3aMX8UCTYjo2e/AKTbsk5SosxfoRR5B8V5tnIc\nzZkS3dRY1t7lTtlW+vh58IO1jA6Mhc6Q7vG82QSJCh/EaRMxAoIBAQDPGkYZK4bX\njDEpIij6h9V6Hf4z+cq+qRzJLH1zS/GULA7/zzdde1oRzNbSEPLcHkxvEbGp/8Ic\nhOcPJJJ6mfbpBBkVwQvVRv4nixTP0Wg/bmexA25NzpEQKJ2ul5/raJ7aURivyqmX\nS0O3JXHsbwBFR7h+R9eVekAdOY2zcGAhcoeJ4pyUh2fCOp4jZ4mA8+xv4DaIcNYP\n9wJdFBjnAV40FkWkPHlmA8dq4M1WjkUg/pa2oixi1ik6U1to8QPK+YBY87Y6nf0J\nTAVpk71scobM9iwHn1FeqLnvPY0R5D99mxCuDiE3yqxdDzP2wIAvUuM891upsM1e\n0X5QIi7Mpa8DAoIBAAmivrx07Q6dYPKALaHdTQj0k1l3PfJFugUD2lzWYXGc0nV/\nI0vMYiHbCB+6xyaICDgOg3XNQrsJYRbO870xrUZ9vk/D6lokxUu2fm4sebDlqIDR\nS5HZ66zsJCpkhwK30Um+isvKnnjggu7DgrIMQzsR7efq+ibo7tILp5rMt9wCiWUJ\nDjWzR1KRXg1bKLpAqE0DiB8VrsHY1zy0MzIXFJ6U4YaVSOU89DD4eLuUYL60Wn/e\nPCOf1zRUneNFkUp01Sh5yYgLfZG7kNTiKjhtToKxES1tu3wboZ7FBdXH5jix5lyN\npb0r0KG23s4iVwqTpmzXtzb3lOMWVuOw0/2aqYECggEAVX1mBEvYbK+9N1qXidt6\nft9UqMXrMEsEy/Jmkqp9vYl2Y5h5JUifBIwG/U3rwntrV8n5CdC+oyEldDXHlX5q\n0wNTC4zVwqN8lHwwCh1KKCz99q8Q4GNttDrf5EtIw1c7g6lIRICnAwIZoMd/QHcN\nqIuTl+U2E8kUIDw6xyCTPhtV4dA+jH1ckmu6DalWtHl8Vy45tJbHdm2jdyKtqOYC\nqgOrmcEw57CVqAPGH325AYa2VguZwO7gs+fm6unag/X8SjvINGg1JJpR/aPz5Ile\nJctUn4zffPCvWBeTXRhYMRRKjV7dzXcHMZ7t92S9RUu069y75M9L52EZACEsKmQW\nWwKCAQBbgg1GcSFhYtPV7zQu7weVbRjSpLnPwJ9Z2JJgK/B54M87cmboTVb80Xb8\nN2eBPH6xHLUFfusNKZrxfr4hidngHOPtv0EEi2iosrM4LjVtPGlTF5BRT6vx+Kz3\n6RXuwDKshccea08kACzoO+izmyI5yOmUbyjS8EZn3h974fbageTJ7p8uoTWiiIjE\nPuxVlip1w9szT8Y27KyMu6Wfx13PMVmiHpCJQrgVb+Nz0nDr4NjMG68Ni3+Ehpyd\nMr7BmbmUXx/e1IJeHVPTdr2UytlOP+v8554ptSjaxLsKK5zjvtz3cVa7kMlC9vwK\nKWP6W8Y12pGv0k5BU1G/X2AxKnC9\n-----END PRIVATE KEY-----\n','-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKzscQ9MBRDJjrtOSHtdMraPA2k7P1IQ\nD3S567UtNCLUb11f1NyGbRZ7zI5qaQXlyrGTJbjgoefvAwHzkOCHEp0CAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEArOxxD0wFEMmOu05I\ne10yto8DaTs/UhAPdLnrtS00ItRvXV/U3IZtFnvMjmppBeXKsZMluOCh5+8DAfOQ\n4IcSnQIDAQABAkARzWm6VG41EzsRh3ao1Khy6PhF7iaPsT2WG8nrZhL2/tJoDWf+\nH1X9sJVr13FspBZJ4STsTYzOLIFvMGh+Umt1AiEA4T5qqvUJpTTKDj769gdzi55c\nNu2qVS2iy4Y8iVu9hssCIQDEiSDyrWwoVMp6VrAEig5r7LljOScBMbEfGP5pa9y3\nNwIhAMWXLpWn/X0akQHsR9UZ9keNdRGObfTo4r2tlV9dxiX/AiAuGGeE443pi7GN\nrgVMm0C0qWn1zrLKQehj/c211hmHUwIgJZvGs4i6wOvL+yqJF+XLZ77p/C3c2zE0\nv/BubG15+e4=\n-----END PRIVATE KEY-----\n',1,0,0,0,0,0,10,65535,0,0,0,NULL,NULL,10,0,0,0,'0001-01-01 00:00:00','0001-01-01 00:00:00',5,NULL,NULL,NULL,NULL,NULL),(6,0,'930bb26b-545b-f00c-b13c-f57634480673','friendica5','$2y$10$rQNI.gu2VrX5ubWItitluekmuLJNtBRIAWLAU.IaGETqGDfVpDNwC',0,'friendica5','friendica5@friendica.local','','UTC','en','2018-11-17 12:42:25','2018-11-17 13:48:59','',0,'','-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzbQgk0okIu48OTsuvI/j\nnTYfKREWuHx0Rkr/44zKv9NGOJItxb82OoK/59o4l2mkt3REOwEzsSeAUe8VjkFU\nnfmjTTg8GqDCQ07Bmux1lVdtyAIhqr3uMraS8bODUMRFnDSX39rYYUH+h7oBZ44k\nW2vGvnWKh8BYPmV+hAab8TuJBODrZy1z5A1lc9CSSoZCiEOSvO5tGgiTBWW/CUoC\n6jR/BqZy/jlbiuED/t1Hn8dKCyPkAUppFhVJgSiSaysLeQlGsw58QYvD4WJXWbGh\nOzBDyR5hmSPuRuCxWD0GkpCnZGtkLhrJHAhYysAvqlc6Oo+6leRuLq2S05cZI1cL\nwsjapgnIvPCSIm7OkFlEimqveMNTOKNbcyIHaq8kL3ZyUYWuygVndL9AdUhIEAkE\nOROFlAyv0fC0tbBhnsJ/SifvEGYOaO4eRB1mvvY2R+JU4gPXLWbeNSNrn4zpTdIL\n0pwDJvLAv+tgeheBz6fNyKqETeclMEuo+GUs3nB8zeO2ZJXwzAgqMt5/Vr27v8d7\nk+Cer7ydUT8QTlsRGTAjaWicDFPLlH9v2v15JEaDqjtIJ9kUdAaj+BnR3+j1x86g\nSrJa5SV4kdu/hduRtIfnhKTpu/ZnxhQzkWuu6gWtjCpLzTuaHybnh69rSz7CKoFU\nXnqm6IVFII/ny2a7I1KrMFECAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIJRQIBADANBgkqhkiG9w0BAQEFAASCCS8wggkrAgEAAoICAQDNtCCTSiQi7jw5\nOy68j+OdNh8pERa4fHRGSv/jjMq/00Y4ki3FvzY6gr/n2jiXaaS3dEQ7ATOxJ4BR\n7xWOQVSd+aNNODwaoMJDTsGa7HWVV23IAiGqve4ytpLxs4NQxEWcNJff2thhQf6H\nugFnjiRba8a+dYqHwFg+ZX6EBpvxO4kE4OtnLXPkDWVz0JJKhkKIQ5K87m0aCJMF\nZb8JSgLqNH8GpnL+OVuK4QP+3Uefx0oLI+QBSmkWFUmBKJJrKwt5CUazDnxBi8Ph\nYldZsaE7MEPJHmGZI+5G4LFYPQaSkKdka2QuGskcCFjKwC+qVzo6j7qV5G4urZLT\nlxkjVwvCyNqmCci88JIibs6QWUSKaq94w1M4o1tzIgdqryQvdnJRha7KBWd0v0B1\nSEgQCQQ5E4WUDK/R8LS1sGGewn9KJ+8QZg5o7h5EHWa+9jZH4lTiA9ctZt41I2uf\njOlN0gvSnAMm8sC/62B6F4HPp83IqoRN5yUwS6j4ZSzecHzN47ZklfDMCCoy3n9W\nvbu/x3uT4J6vvJ1RPxBOWxEZMCNpaJwMU8uUf2/a/XkkRoOqO0gn2RR0BqP4GdHf\n6PXHzqBKslrlJXiR27+F25G0h+eEpOm79mfGFDORa67qBa2MKkvNO5ofJueHr2tL\nPsIqgVReeqbohUUgj+fLZrsjUqswUQIDAQABAoICAQCEVefHGiGZX07bOtnccW1r\njJALaXUGhvp+5m0tRTyCoDdC2bgcyeDnT4qKbHeP4WUYqPHkS+enhtQk4f0qIZmA\ncEPAv/ba4qVXi+k98/XJeA+mZsimAb6mXZK3cFeAtGRcE/HJEA+4si4/v0h8CJQX\nRIT9rrzKjNG4gq8b3OyiCz0hKFoJbNJr2rp0AbC7xRg0ddSHO5Rw9Scwh76ZCUZK\nyi8WZisApoHgHNbnNhCIGDvoYtSih+6HSHabYzCfRXgCDBexxhXmTTZdX1j22THy\n1CAn2SXM0bLPYmp1a/04eVtXXUd76buMD0qgVXfUzH0ng6P0HptL6FrXSRPhCnUD\nWWhwDCDbaR44AtJrv/iUcbyBC1tmc0lncUaKdrd1PbZlSYa8OpYJNMetXauXTC7D\nGH52/rUJL6+7ImS4r4meuGdElXCMAPItUhnu/d5Nzr//68kHdPqeuBGloBhZAukf\n6d2R0NhRFHJEXbRgj+6nSZ2MQ9imVht/c/1XtP0I9M1oisb+vP9I4ZvdXIuTJt1S\n3DE/sm9fbnX6VZErKVw0+t2MapEGheJs59ysCSQYYqtWh+W5HYjExt9VEUv4bxAH\nH9UZTZ5b1HBdEVMG9nnimc6aQnNibFHfls7hPeHoiUo2dIBenCjKvPBkRwkELmLb\nmXOmfqVnDJt0VY18X2tniQKCAQEA8hSrV0XQh9nMMUkCCBnZbjwF/73jabeNsqfj\nGeHDz34zgZC5OFgLoZz7ExCmQvqDMYXgpuIbczTK64lGoFCscJtOMxCzL01Fom5N\nke8YQyIU3KvnHualHba683J2dEJgYXFmA3sZE5+PWk6mPgLZjCuVTDXzqUpKS++N\nXu2SXZJ2KcMpHf/6NsXV65BQWqQDCHm5llispfWhxQT0oDA6k4KTzBdenl3NQjb+\npLm+yrWxYb+jfLBVS5mon0ZGkhPAGFyw//IM5FOKYHIm3LF2i7t25Z4SdMrCDe9p\n0MWBB6Py7w7hIFTYcG5FI+OSKaqUsv1sFbXNUfUocEjV+8rXJwKCAQEA2YgAYIlQ\nVtWxflFJRzHgu6WSjo+/fW1IKJ/bJd3JVU1OYnkuSjX+AQK7Lie62ItideYa5yUv\nIgQerqW8NSkmXkpEtvYTMZjQ5DY2ArIynW04aCsMZHGCxPd3W1yg6zX7JGworNuT\n2HMhzGlL5jiewBUkexaeGDA7u6GsbFQkVKQDpgVuhvBrGCuP/38FkQC/HVBZ9b9w\nsnnQkgsFbD1E6kl0ZosGV+06tbL8fZBAn2lsEE2bdqsWhkF4Q72zzvliOYv/f+No\n0A0L4HL9lmqFbHE91W6VJ/Z6bfHfT52NSJmY/5KR/ube9cR84qYVVyvShX71mmpW\nZjaJvxKWH3EnxwKCAQEAiH1c6fUEEUScm4E1cwnYDQ4st7gBu75xVzTPl+0x8RCP\ny9Kki/8gd7vB2Er/4y3JwKdiNdWwcnFmpAyfVI6H22nFWodk8BuaUm3ssIZlYJyb\ntJv70PFsUWeQ2uhDn2M5YleElBvY1LaXJezIUJhcvmpoYDLfMikf4NatF8PNTZLh\nqsRNr4t/MVi0N4ADvkdRKnsvR3Sxy1TGJAaaQqNOs5Lg8CaRA6uRqm7Ffmz4BOUS\noTFi5U+ql9iIOV1vNreKDHJencCEwkvT7nMONEqes0Q8UlSgxVb4uNCvEbX5/SvU\nMjNqfUc5TZLuysBpzbJO6uh2A3ugyz/1z/FRLQl96wKCAQEAt1pzNuuG1Cp62UYa\nxe+8xW3iAlgXx9j9IYDcbyZqNYRbtZT+935bAu8SZu0GCNAzxbyWoI4vFDT0x7Da\n2tQ8iu1+zdjMhNmR+UnYbJ1XHGqbSPJAF8m1t9/+svt4h8mQTjr8bfcGv0MMEggO\n+ZZv+OfZQAboaur87kJv2z9xAAbfLGkXqJWtL0pIrcqbHoXKkSLRMNqUW1th+jdf\n8sQR+oi/nE9CoYpMGisrt4qHbdamR3eiunurGK7GeBLGJIb/zBG84kcEaZkVkbJb\nHRXcMHOi8uuqvWx79YASAkGCfNc6pvEcLgbbl7xup3vmMPu3Dt7clbNb7/u4T12T\nPB1csQKCAQEAsazmqFPObsV4AN3NUerk8RvtO2t3zSadTIBY4dQTCz1cxrFKlfkI\nNhdd8lAbnGdKYTs9wb6vIVaH4jGGHY0GJ6xJ4ZaGIKl8mbgAIS/9X9c1C/Val9Sl\nNLY+qjH1TuO7+Rynd2eO/rFzrERBMQKedpIdyfJrtW80Ve8gxi4PURaJzEtA7F9h\nsgR5eC5QybyOSfOGut+jHtWxm/hNxODgDQKE/h8K/vuaYrA1j7rwhlamut11gyHY\nBUK3n+LJvPg4SBlxPNiYL9Mra9HuRsNdyNLtFC/faQc+wmZzr+WriXTWMJ3dIZlo\nkZMVfloYaJzbknXvYD0eEyGEdY4gW3fWDg==\n-----END PRIVATE KEY-----\n','-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANCm6Jn8BHt5iX1j7dT884Y2+rof1IHF\nfqMA2F1ik0gOhmL84qJDKZPLBSNF5J+Yn3xP7U1N0/f9cBfu8ZTCAWMCAwEAAQ==\n-----END PUBLIC KEY-----\n','-----BEGIN PRIVATE KEY-----\nMIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEA0KbomfwEe3mJfWPt\n1Pzzhjb6uh/UgcV+owDYXWKTSA6GYvziokMpk8sFI0Xkn5iffE/tTU3T9/1wF+7x\nlMIBYwIDAQABAkAsQCm2do9QzH7PPAE1mYvgHArirFt6RjNMSKKac4x+zEtvjMRK\nZSiQfJybSfUrDKy1B1uC5Bm+K7f9Wx+xuh5BAiEA+xrz3SrQtWgYQ1Bf8fPXrD92\nNLkjbxBuAKaipUWmMUMCIQDUuBvPrmsWTDQuzvb1UrPlVk3EQGet91FvdalBe0xd\nYQIgeKlm7awZRlKS9iW1NQq7ZGXKY2Njh4cZlO590XU6ewkCIGzFA3uLfTh2mMxC\niebhdhlTqwopwJok92Ad8wEHsgGhAiEAhJeRwJy9lSwiqqqoQPbIeSdN9f76bwEP\nP54D1sDdkqg=\n-----END PRIVATE KEY-----\n',1,0,0,0,0,0,10,65535,0,0,0,NULL,NULL,10,0,0,0,'0001-01-01 00:00:00','0001-01-01 00:00:00',6,NULL,NULL,NULL,NULL,NULL); -/*!40000 ALTER TABLE `user` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `user-contact` --- - -DROP TABLE IF EXISTS `user-contact`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `user-contact` ( - `cid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Contact id of the linked public contact', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `blocked` tinyint(1) DEFAULT NULL COMMENT 'Contact is completely blocked for this user', - `ignored` tinyint(1) DEFAULT NULL COMMENT 'Posts from this contact are ignored', - `collapsed` tinyint(1) DEFAULT NULL COMMENT 'Posts from this contact are collapsed', - PRIMARY KEY (`uid`,`cid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='User specific public contact data'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `user-contact` --- - -LOCK TABLES `user-contact` WRITE; -/*!40000 ALTER TABLE `user-contact` DISABLE KEYS */; -/*!40000 ALTER TABLE `user-contact` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `user-item` --- - -DROP TABLE IF EXISTS `user-item`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `user-item` ( - `iid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Item id', - `uid` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'User id', - `hidden` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Marker to hide an item from the user', - `ignored` tinyint(1) DEFAULT NULL COMMENT 'Ignore this thread if set', - PRIMARY KEY (`uid`,`iid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='User specific item data'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `user-item` --- - -LOCK TABLES `user-item` WRITE; -/*!40000 ALTER TABLE `user-item` DISABLE KEYS */; -/*!40000 ALTER TABLE `user-item` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `userd` --- - -DROP TABLE IF EXISTS `userd`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `userd` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'sequential ID', - `username` varchar(255) NOT NULL, - PRIMARY KEY (`id`), - KEY `username` (`username`(32)) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Deleted usernames'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `userd` --- - -LOCK TABLES `userd` WRITE; -/*!40000 ALTER TABLE `userd` DISABLE KEYS */; -/*!40000 ALTER TABLE `userd` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `worker-ipc` --- - -DROP TABLE IF EXISTS `worker-ipc`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `worker-ipc` ( - `key` int(11) NOT NULL, - `jobs` tinyint(1) DEFAULT NULL COMMENT 'Flag for outstanding jobs', - PRIMARY KEY (`key`) -) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4 COMMENT='Inter process communication between the frontend and the worker'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `worker-ipc` --- - -LOCK TABLES `worker-ipc` WRITE; -/*!40000 ALTER TABLE `worker-ipc` DISABLE KEYS */; -/*!40000 ALTER TABLE `worker-ipc` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `workerqueue` --- - -DROP TABLE IF EXISTS `workerqueue`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `workerqueue` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Auto incremented worker task id', - `parameter` mediumblob COMMENT 'Task command', - `priority` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Task priority', - `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Creation date', - `pid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Process id of the worker', - `executed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Execution date', - `next_try` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Next retrial date', - `retrial` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Retrial counter', - `done` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Marked 1 when the task was done - will be deleted later', - PRIMARY KEY (`id`), - KEY `pid` (`pid`), - KEY `parameter` (`parameter`(64)), - KEY `priority_created_next_try` (`priority`,`created`,`next_try`), - KEY `done_priority_executed_next_try` (`done`,`priority`,`executed`,`next_try`), - KEY `done_executed_next_try` (`done`,`executed`,`next_try`), - KEY `done_priority_next_try` (`done`,`priority`,`next_try`), - KEY `done_next_try` (`done`,`next_try`) -) ENGINE=InnoDB AUTO_INCREMENT=224 DEFAULT CHARSET=utf8mb4 COMMENT='Background tasks queue entries'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `workerqueue` --- - -LOCK TABLES `workerqueue` WRITE; -/*!40000 ALTER TABLE `workerqueue` DISABLE KEYS */; -INSERT INTO `workerqueue` VALUES (91,_binary '[\"Queue\"]',50,'2018-11-17 13:50:01',2276,'2018-11-17 13:50:03','0001-01-01 00:00:00',0,1),(93,_binary '[\"DiscoverPoCo\",\"checkcontact\"]',40,'2018-11-17 13:50:01',2274,'2018-11-17 13:50:02','0001-01-01 00:00:00',0,1),(95,_binary '[\"CronJobs\",\"post_update\"]',40,'2018-11-17 13:50:01',2274,'2018-11-17 13:50:02','0001-01-01 00:00:00',0,1),(96,_binary '[\"CronJobs\",\"clear_cache\"]',40,'2018-11-17 13:50:01',2274,'2018-11-17 13:50:02','0001-01-01 00:00:00',0,1),(97,_binary '[\"CronJobs\",\"repair_diaspora\"]',40,'2018-11-17 13:50:01',2274,'2018-11-17 13:50:02','0001-01-01 00:00:00',0,1),(98,_binary '[\"CronJobs\",\"repair_database\"]',40,'2018-11-17 13:50:01',2274,'2018-11-17 13:50:02','0001-01-01 00:00:00',0,1),(99,_binary '[\"OnePoll\",15]',40,'2018-11-17 13:50:01',2278,'2018-11-17 13:50:03','0001-01-01 00:00:00',0,1),(100,_binary '[\"OnePoll\",17]',40,'2018-11-17 13:50:01',2280,'2018-11-17 13:50:03','0001-01-01 00:00:00',0,1),(101,_binary '[\"OnePoll\",19]',40,'2018-11-17 13:50:01',2276,'2018-11-17 13:50:03','0001-01-01 00:00:00',0,1),(102,_binary '[\"OnePoll\",21]',40,'2018-11-17 13:50:01',2274,'2018-11-17 13:50:04','0001-01-01 00:00:00',0,1),(103,_binary '[\"OnePoll\",14]',40,'2018-11-17 13:50:01',2276,'2018-11-17 13:50:05','0001-01-01 00:00:00',0,1),(104,_binary '[\"OnePoll\",23]',40,'2018-11-17 13:50:01',2278,'2018-11-17 13:50:05','0001-01-01 00:00:00',0,1),(105,_binary '[\"OnePoll\",16]',40,'2018-11-17 13:50:01',2280,'2018-11-17 13:50:05','0001-01-01 00:00:00',0,1),(106,_binary '[\"OnePoll\",22]',40,'2018-11-17 13:50:01',2274,'2018-11-17 13:50:05','0001-01-01 00:00:00',0,1),(107,_binary '[\"OnePoll\",18]',40,'2018-11-17 13:50:01',2278,'2018-11-17 13:50:05','0001-01-01 00:00:00',0,1),(108,_binary '[\"OnePoll\",25]',40,'2018-11-17 13:50:01',2276,'2018-11-17 13:50:05','0001-01-01 00:00:00',0,1),(109,_binary '[\"OnePoll\",20]',40,'2018-11-17 13:50:01',2280,'2018-11-17 13:50:05','0001-01-01 00:00:00',0,1),(110,_binary '[\"OnePoll\",24]',40,'2018-11-17 13:50:01',2274,'2018-11-17 13:50:05','0001-01-01 00:00:00',0,1),(111,_binary '[\"Notifier\",\"wall-new\",\"1\"]',20,'2018-11-17 13:51:35',2355,'2018-11-17 14:00:01','0001-01-01 00:00:00',0,1),(112,_binary '[\"CreateShadowEntry\",\"1\"]',20,'2018-11-17 13:51:35',2355,'2018-11-17 14:00:01','0001-01-01 00:00:00',0,1),(113,_binary '[\"Notifier\",\"wall-new\",\"3\"]',20,'2018-11-17 13:51:58',2357,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(114,_binary '[\"CreateShadowEntry\",\"3\"]',20,'2018-11-17 13:51:58',2355,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(115,_binary '[\"Notifier\",\"comment-new\",\"4\"]',20,'2018-11-17 13:53:37',2355,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(116,_binary '[\"CreateShadowEntry\",\"4\"]',20,'2018-11-17 13:53:37',2359,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(117,_binary '[\"Notifier\",\"comment-new\",\"5\"]',20,'2018-11-17 13:54:22',2359,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(118,_binary '[\"CreateShadowEntry\",\"5\"]',20,'2018-11-17 13:54:22',2373,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(119,_binary '[\"SpoolPost\"]',20,'2018-11-17 14:00:01',2357,'2018-11-17 14:00:03','0001-01-01 00:00:00',0,1),(120,_binary '[\"Cron\"]',30,'2018-11-17 14:00:01',2357,'2018-11-17 14:00:01','0001-01-01 00:00:00',0,1),(121,_binary '[\"Delivery\",\"wall-new\",\"1\",15]',20,'2018-11-17 13:51:35',2355,'2018-11-17 14:00:01','0001-01-01 00:00:00',0,1),(122,_binary '[\"Delivery\",\"wall-new\",\"1\",17]',20,'2018-11-17 13:51:35',2361,'2018-11-17 14:00:01','0001-01-01 00:00:00',0,1),(123,_binary '[\"Delivery\",\"wall-new\",\"1\",19]',20,'2018-11-17 13:51:35',2359,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(124,_binary '[\"Delivery\",\"wall-new\",\"1\",21]',20,'2018-11-17 13:51:35',2355,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(125,_binary '[\"Queue\"]',50,'2018-11-17 14:00:02',2357,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(126,_binary '[\"DiscoverPoCo\"]',40,'2018-11-17 14:00:02',2357,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(127,_binary '[\"DiscoverPoCo\",\"checkcontact\"]',40,'2018-11-17 14:00:02',2357,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(128,_binary '[\"CronJobs\",\"expire_and_remove_users\"]',30,'2018-11-17 14:00:02',2357,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(129,_binary '[\"CronJobs\",\"post_update\"]',40,'2018-11-17 14:00:02',2357,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(130,_binary '[\"CronJobs\",\"clear_cache\"]',40,'2018-11-17 14:00:02',2357,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(131,_binary '[\"CronJobs\",\"repair_diaspora\"]',40,'2018-11-17 14:00:02',2357,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(132,_binary '[\"CronJobs\",\"repair_database\"]',40,'2018-11-17 14:00:02',2357,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(133,_binary '[\"Delivery\",\"wall-new\",\"3\",15]',20,'2018-11-17 13:51:58',2357,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(134,_binary '[\"Delivery\",\"wall-new\",\"3\",19]',20,'2018-11-17 13:51:58',2361,'2018-11-17 14:00:02','0001-01-01 00:00:00',0,1),(135,_binary '[\"APDelivery\",\"comment-new\",\"4\",\"http:\\/\\/192.168.22.10\\/inbox\",3]',20,'2018-11-17 13:53:37',2355,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(136,_binary '[\"Delivery\",\"comment-new\",\"4\",10]',20,'2018-11-17 13:53:37',2359,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(137,_binary '[\"APDelivery\",\"comment-new\",\"5\",\"http:\\/\\/192.168.22.10\\/inbox\",5]',20,'2018-11-17 13:54:22',2359,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(138,_binary '[\"Delivery\",\"comment-new\",\"5\",10]',20,'2018-11-17 13:54:22',2377,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(139,_binary '[\"Notifier\",\"comment-import\",\"12\"]',20,'2018-11-17 14:00:04',2377,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(140,_binary '[\"Notifier\",\"comment-import\",\"14\"]',20,'2018-11-17 14:00:04',2377,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(141,_binary '[\"Delivery\",\"comment-import\",\"12\",15]',20,'2018-11-17 14:00:04',2377,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(142,_binary '[\"Delivery\",\"comment-import\",\"12\",17]',20,'2018-11-17 14:00:04',2377,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(143,_binary '[\"Delivery\",\"comment-import\",\"12\",19]',20,'2018-11-17 14:00:04',2355,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(144,_binary '[\"Delivery\",\"comment-import\",\"12\",21]',20,'2018-11-17 14:00:04',2377,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(145,_binary '[\"Delivery\",\"comment-import\",\"14\",15]',20,'2018-11-17 14:00:04',2359,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(146,_binary '[\"Delivery\",\"comment-import\",\"14\",17]',20,'2018-11-17 14:00:04',2355,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(147,_binary '[\"Delivery\",\"comment-import\",\"14\",19]',20,'2018-11-17 14:00:04',2359,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(148,_binary '[\"Delivery\",\"comment-import\",\"14\",21]',20,'2018-11-17 14:00:04',2377,'2018-11-17 14:00:04','0001-01-01 00:00:00',0,1),(149,_binary '[\"SpoolPost\"]',20,'2018-11-17 14:01:40',2393,'2018-11-17 14:01:40','0001-01-01 00:00:00',0,1),(150,_binary '[\"Cron\"]',30,'2018-11-17 14:01:40',2393,'2018-11-17 14:01:40','0001-01-01 00:00:00',0,1),(151,_binary '[\"Notifier\",\"activity-new\",\"22\"]',20,'2018-11-17 14:02:02',2410,'2018-11-17 14:03:06','0001-01-01 00:00:00',0,1),(152,_binary '[\"Notifier\",\"comment-new\",\"24\"]',20,'2018-11-17 14:02:15',2414,'2018-11-17 14:03:07','0001-01-01 00:00:00',0,1),(153,_binary '[\"CreateShadowEntry\",\"24\"]',20,'2018-11-17 14:02:15',2410,'2018-11-17 14:03:07','0001-01-01 00:00:00',0,1),(154,_binary '[\"Notifier\",\"wall-new\",\"26\"]',20,'2018-11-17 14:02:58',2412,'2018-11-17 14:03:08','0001-01-01 00:00:00',0,1),(155,_binary '[\"CreateShadowEntry\",\"26\"]',20,'2018-11-17 14:02:58',2410,'2018-11-17 14:03:08','0001-01-01 00:00:00',0,1),(156,_binary '[\"SpoolPost\"]',20,'2018-11-17 14:03:06',2416,'2018-11-17 14:03:08','0001-01-01 00:00:00',0,1),(157,_binary '[\"Cron\"]',30,'2018-11-17 14:03:06',2414,'2018-11-17 14:03:07','0001-01-01 00:00:00',0,1),(158,_binary '[\"APDelivery\",\"activity-new\",\"22\",\"http:\\/\\/192.168.22.10\\/inbox\",2]',20,'2018-11-17 14:02:02',2410,'2018-11-17 14:03:07','0001-01-01 00:00:00',0,1),(159,_binary '[\"Delivery\",\"activity-new\",\"22\",15]',20,'2018-11-17 14:02:02',2414,'2018-11-17 14:03:07','0001-01-01 00:00:00',0,1),(160,_binary '[\"Delivery\",\"activity-new\",\"22\",17]',20,'2018-11-17 14:02:02',2412,'2018-11-17 14:03:07','0001-01-01 00:00:00',0,1),(161,_binary '[\"Delivery\",\"activity-new\",\"22\",19]',20,'2018-11-17 14:02:02',2416,'2018-11-17 14:03:07','0001-01-01 00:00:00',0,1),(162,_binary '[\"Delivery\",\"activity-new\",\"22\",21]',20,'2018-11-17 14:02:02',2410,'2018-11-17 14:03:07','0001-01-01 00:00:00',0,1),(163,_binary '[\"Delivery\",\"wall-new\",\"26\",18]',20,'2018-11-17 14:02:58',2412,'2018-11-17 14:03:08','0001-01-01 00:00:00',0,1),(164,_binary '[\"Delivery\",\"wall-new\",\"26\",25]',20,'2018-11-17 14:02:58',2428,'2018-11-17 14:03:08','0001-01-01 00:00:00',0,1),(165,_binary '[\"APDelivery\",\"comment-new\",\"24\",\"http:\\/\\/192.168.22.10\\/inbox\",2]',20,'2018-11-17 14:02:15',2414,'2018-11-17 14:03:08','0001-01-01 00:00:00',0,1),(166,_binary '[\"Delivery\",\"comment-new\",\"24\",15]',20,'2018-11-17 14:02:15',2412,'2018-11-17 14:03:08','0001-01-01 00:00:00',0,1),(167,_binary '[\"Delivery\",\"comment-new\",\"24\",17]',20,'2018-11-17 14:02:15',2412,'2018-11-17 14:03:08','0001-01-01 00:00:00',0,1),(168,_binary '[\"Delivery\",\"comment-new\",\"24\",19]',20,'2018-11-17 14:02:15',2414,'2018-11-17 14:03:08','0001-01-01 00:00:00',0,1),(169,_binary '[\"Delivery\",\"comment-new\",\"24\",21]',20,'2018-11-17 14:02:15',2412,'2018-11-17 14:03:08','0001-01-01 00:00:00',0,1),(170,_binary '[\"SpoolPost\"]',20,'2018-11-17 14:10:01',2477,'2018-11-17 14:10:01','0001-01-01 00:00:00',0,1),(171,_binary '[\"Cron\"]',30,'2018-11-17 14:10:01',2477,'2018-11-17 14:10:01','0001-01-01 00:00:00',0,1),(172,_binary '[\"SpoolPost\"]',20,'2018-11-17 14:20:01',2490,'2018-11-17 14:20:01','0001-01-01 00:00:00',0,1),(173,_binary '[\"Cron\"]',30,'2018-11-17 14:20:01',2490,'2018-11-17 14:20:01','0001-01-01 00:00:00',0,1),(174,_binary '[\"Queue\"]',50,'2018-11-17 14:20:01',2490,'2018-11-17 14:20:02','0001-01-01 00:00:00',0,1),(175,_binary '[\"DiscoverPoCo\"]',40,'2018-11-17 14:20:01',2490,'2018-11-17 14:20:01','0001-01-01 00:00:00',0,1),(176,_binary '[\"DiscoverPoCo\",\"checkcontact\"]',40,'2018-11-17 14:20:01',2490,'2018-11-17 14:20:01','0001-01-01 00:00:00',0,1),(177,_binary '[\"CronJobs\",\"expire_and_remove_users\"]',30,'2018-11-17 14:20:01',2490,'2018-11-17 14:20:01','0001-01-01 00:00:00',0,1),(178,_binary '[\"CronJobs\",\"post_update\"]',40,'2018-11-17 14:20:01',2490,'2018-11-17 14:20:01','0001-01-01 00:00:00',0,1),(179,_binary '[\"CronJobs\",\"clear_cache\"]',40,'2018-11-17 14:20:01',2490,'2018-11-17 14:20:01','0001-01-01 00:00:00',0,1),(180,_binary '[\"CronJobs\",\"repair_diaspora\"]',40,'2018-11-17 14:20:01',2490,'2018-11-17 14:20:01','0001-01-01 00:00:00',0,1),(181,_binary '[\"CronJobs\",\"repair_database\"]',40,'2018-11-17 14:20:01',2490,'2018-11-17 14:20:01','0001-01-01 00:00:00',0,1),(182,_binary '[\"SpoolPost\"]',20,'2018-11-17 14:30:01',2513,'2018-11-17 14:30:01','0001-01-01 00:00:00',0,1),(183,_binary '[\"Cron\"]',30,'2018-11-17 14:30:01',2513,'2018-11-17 14:30:01','0001-01-01 00:00:00',0,1),(184,_binary '[\"Queue\"]',50,'2018-11-17 14:30:01',2513,'2018-11-17 14:30:01','0001-01-01 00:00:00',0,1),(185,_binary '[\"DiscoverPoCo\"]',40,'2018-11-17 14:30:01',2513,'2018-11-17 14:30:01','0001-01-01 00:00:00',0,1),(186,_binary '[\"DiscoverPoCo\",\"checkcontact\"]',40,'2018-11-17 14:30:01',2513,'2018-11-17 14:30:01','0001-01-01 00:00:00',0,1),(187,_binary '[\"CronJobs\",\"expire_and_remove_users\"]',30,'2018-11-17 14:30:01',2513,'2018-11-17 14:30:01','0001-01-01 00:00:00',0,1),(188,_binary '[\"CronJobs\",\"post_update\"]',40,'2018-11-17 14:30:01',2513,'2018-11-17 14:30:01','0001-01-01 00:00:00',0,1),(189,_binary '[\"CronJobs\",\"clear_cache\"]',40,'2018-11-17 14:30:01',2513,'2018-11-17 14:30:01','0001-01-01 00:00:00',0,1),(190,_binary '[\"CronJobs\",\"repair_diaspora\"]',40,'2018-11-17 14:30:01',2513,'2018-11-17 14:30:01','0001-01-01 00:00:00',0,1),(191,_binary '[\"CronJobs\",\"repair_database\"]',40,'2018-11-17 14:30:01',2513,'2018-11-17 14:30:01','0001-01-01 00:00:00',0,1),(192,_binary '[\"SpoolPost\"]',20,'2018-11-17 14:40:01',2578,'2018-11-17 14:40:01','0001-01-01 00:00:00',0,1),(193,_binary '[\"Cron\"]',30,'2018-11-17 14:40:01',2578,'2018-11-17 14:40:01','0001-01-01 00:00:00',0,1),(194,_binary '[\"Queue\"]',50,'2018-11-17 14:40:01',2578,'2018-11-17 14:40:01','0001-01-01 00:00:00',0,1),(195,_binary '[\"DiscoverPoCo\"]',40,'2018-11-17 14:40:01',2578,'2018-11-17 14:40:01','0001-01-01 00:00:00',0,1),(196,_binary '[\"DiscoverPoCo\",\"checkcontact\"]',40,'2018-11-17 14:40:01',2578,'2018-11-17 14:40:01','0001-01-01 00:00:00',0,1),(197,_binary '[\"CronJobs\",\"expire_and_remove_users\"]',30,'2018-11-17 14:40:01',2578,'2018-11-17 14:40:01','0001-01-01 00:00:00',0,1),(198,_binary '[\"CronJobs\",\"post_update\"]',40,'2018-11-17 14:40:01',2578,'2018-11-17 14:40:01','0001-01-01 00:00:00',0,1),(199,_binary '[\"CronJobs\",\"clear_cache\"]',40,'2018-11-17 14:40:01',2578,'2018-11-17 14:40:01','0001-01-01 00:00:00',0,1),(200,_binary '[\"CronJobs\",\"repair_diaspora\"]',40,'2018-11-17 14:40:01',2578,'2018-11-17 14:40:01','0001-01-01 00:00:00',0,1),(201,_binary '[\"CronJobs\",\"repair_database\"]',40,'2018-11-17 14:40:01',2578,'2018-11-17 14:40:01','0001-01-01 00:00:00',0,1),(202,_binary '[\"SpoolPost\"]',20,'2018-11-17 14:50:02',2601,'2018-11-17 14:50:02','0001-01-01 00:00:00',0,1),(203,_binary '[\"Cron\"]',30,'2018-11-17 14:50:02',2601,'2018-11-17 14:50:02','0001-01-01 00:00:00',0,1),(204,_binary '[\"Queue\"]',50,'2018-11-17 14:50:02',2603,'2018-11-17 14:50:03','0001-01-01 00:00:00',0,1),(205,_binary '[\"DiscoverPoCo\"]',40,'2018-11-17 14:50:02',2601,'2018-11-17 14:50:02','0001-01-01 00:00:00',0,1),(206,_binary '[\"DiscoverPoCo\",\"checkcontact\"]',40,'2018-11-17 14:50:02',2601,'2018-11-17 14:50:02','0001-01-01 00:00:00',0,1),(207,_binary '[\"CronJobs\",\"expire_and_remove_users\"]',30,'2018-11-17 14:50:02',2601,'2018-11-17 14:50:02','0001-01-01 00:00:00',0,1),(208,_binary '[\"CronJobs\",\"post_update\"]',40,'2018-11-17 14:50:02',2601,'2018-11-17 14:50:02','0001-01-01 00:00:00',0,1),(209,_binary '[\"CronJobs\",\"clear_cache\"]',40,'2018-11-17 14:50:02',2601,'2018-11-17 14:50:02','0001-01-01 00:00:00',0,1),(210,_binary '[\"CronJobs\",\"repair_diaspora\"]',40,'2018-11-17 14:50:02',2605,'2018-11-17 14:50:03','0001-01-01 00:00:00',0,1),(211,_binary '[\"CronJobs\",\"repair_database\"]',40,'2018-11-17 14:50:02',2603,'2018-11-17 14:50:03','0001-01-01 00:00:00',0,1),(212,_binary '[\"SpoolPost\"]',20,'2018-11-17 15:00:02',2665,'2018-11-17 15:00:02','0001-01-01 00:00:00',0,1),(213,_binary '[\"Cron\"]',30,'2018-11-17 15:00:02',2665,'2018-11-17 15:00:02','0001-01-01 00:00:00',0,1),(214,_binary '[\"Queue\"]',50,'2018-11-17 15:00:02',2665,'2018-11-17 15:00:02','0001-01-01 00:00:00',0,1),(215,_binary '[\"DiscoverPoCo\"]',40,'2018-11-17 15:00:02',2665,'2018-11-17 15:00:02','0001-01-01 00:00:00',0,1),(216,_binary '[\"DiscoverPoCo\",\"checkcontact\"]',40,'2018-11-17 15:00:02',2665,'2018-11-17 15:00:02','0001-01-01 00:00:00',0,1),(217,_binary '[\"CronJobs\",\"expire_and_remove_users\"]',30,'2018-11-17 15:00:02',2665,'2018-11-17 15:00:02','0001-01-01 00:00:00',0,1),(218,_binary '[\"CronJobs\",\"post_update\"]',40,'2018-11-17 15:00:02',2665,'2018-11-17 15:00:02','0001-01-01 00:00:00',0,1),(219,_binary '[\"CronJobs\",\"clear_cache\"]',40,'2018-11-17 15:00:02',2665,'2018-11-17 15:00:02','0001-01-01 00:00:00',0,1),(220,_binary '[\"CronJobs\",\"repair_diaspora\"]',40,'2018-11-17 15:00:02',2665,'2018-11-17 15:00:02','0001-01-01 00:00:00',0,1),(221,_binary '[\"CronJobs\",\"repair_database\"]',40,'2018-11-17 15:00:02',2665,'2018-11-17 15:00:02','0001-01-01 00:00:00',0,1),(222,_binary '[\"SpoolPost\"]',20,'2018-11-17 15:10:01',2770,'2018-11-17 15:10:01','0001-01-01 00:00:00',0,1),(223,_binary '[\"Cron\"]',30,'2018-11-17 15:10:01',2770,'2018-11-17 15:10:01','0001-01-01 00:00:00',0,1); -/*!40000 ALTER TABLE `workerqueue` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2018-11-17 15:19:01 From 219534e88c0931a92c56727c40dddfe0470e0a79 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Sun, 11 Jul 2021 14:37:17 +0000 Subject: [PATCH 066/108] Accepting "null" as parameter value --- src/Content/Text/BBCode.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 399e42955..5f9a3ee78 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1287,11 +1287,11 @@ class BBCode * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function convertForUriId($uriid, string $text = null, int $simple_html = self::INTERNAL) + public static function convertForUriId(int $uriid = null, string $text = null, int $simple_html = self::INTERNAL) { $try_oembed = ($simple_html == self::INTERNAL); - return self::convert($text, $try_oembed, $simple_html, false, $uriid ?? 0); + return self::convert($text ?? '', $try_oembed, $simple_html, false, $uriid ?? 0); } /** From e151a2dc41f4000d9fc48a8e01c42f7be6ac0ccc Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Mon, 12 Jul 2021 06:25:48 +0000 Subject: [PATCH 067/108] Fixes "Undefined index: nick" --- src/Model/Contact.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index a92a901cf..0e3de02d6 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -2211,10 +2211,10 @@ class Contact } if ((!empty($ret['addr']) && ($ret['addr'] != $contact['addr'])) || (!empty($ret['alias']) && ($ret['alias'] != $contact['alias']))) { - $ret['uri-date'] = DateTimeFormat::utcNow(); + $ret['uri-date'] = $updated; } - if (($ret['name'] != $contact['name']) || ($ret['nick'] != $contact['nick'])) { + if ((!empty($ret['name']) && ($ret['name'] != $contact['name'])) || (!empty($ret['nick']) && ($ret['nick'] != $contact['nick']))) { $ret['name-date'] = $updated; } From 002df6e8d1246a81ac60ac33ae31b7e7cb9da7a6 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Mon, 12 Jul 2021 07:02:01 +0000 Subject: [PATCH 068/108] Fix Uncaught TypeError: Argument 1 passed to Friendica\Model\Item::storeForUserByUriId() --- src/Worker/Notifier.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index e31141ea4..60ae65385 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -534,7 +534,7 @@ class Notifier foreach ($contacts as $contact) { // Direct delivery of local contacts - if ($target_uid = User::getIdForURL($contact['url'])) { + if (!in_array($cmd, [Delivery::RELOCATION, Delivery::SUGGESTION, Delivery::DELETION, Delivery::MAIL]) && $target_uid = User::getIdForURL($contact['url'])) { Logger::info('Direct delivery', ['uri-id' => $target_item['uri-id'], 'target' => $target_uid]); $fields = ['protocol' => Conversation::PARCEL_LOCAL_DFRN, 'direction' => Conversation::PUSH]; Item::storeForUserByUriId($target_item['uri-id'], $target_uid, $fields, $target_item['uid']); From e5c312a0660d83e0ef948905d92d052b4310b8ef Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Mon, 12 Jul 2021 14:11:51 +0000 Subject: [PATCH 069/108] Issue 10491: Possibility for simple shortening added --- mod/settings.php | 3 ++ src/Content/Text/Plaintext.php | 12 ++++-- src/Model/Item.php | 41 +++++++++++++++++++ src/Protocol/Diaspora.php | 1 + view/templates/settings/connectors.tpl | 1 + .../frio/templates/settings/connectors.tpl | 2 + 6 files changed, 57 insertions(+), 3 deletions(-) diff --git a/mod/settings.php b/mod/settings.php index e042ed8e8..c9350e68e 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -137,6 +137,7 @@ function settings_post(App $a) DI::pConfig()->set(local_user(), 'system', 'accept_only_sharer', intval($_POST['accept_only_sharer'])); DI::pConfig()->set(local_user(), 'system', 'disable_cw', intval($_POST['disable_cw'])); DI::pConfig()->set(local_user(), 'system', 'no_intelligent_shortening', intval($_POST['no_intelligent_shortening'])); + DI::pConfig()->set(local_user(), 'system', 'simple_shortening', intval($_POST['simple_shortening'])); DI::pConfig()->set(local_user(), 'system', 'attach_link_title', intval($_POST['attach_link_title'])); DI::pConfig()->set(local_user(), 'system', 'ostatus_autofriend', intval($_POST['snautofollow'])); DI::pConfig()->set(local_user(), 'ostatus', 'default_group', $_POST['group-selection']); @@ -546,6 +547,7 @@ function settings_content(App $a) $accept_only_sharer = intval(DI::pConfig()->get(local_user(), 'system', 'accept_only_sharer')); $disable_cw = intval(DI::pConfig()->get(local_user(), 'system', 'disable_cw')); $no_intelligent_shortening = intval(DI::pConfig()->get(local_user(), 'system', 'no_intelligent_shortening')); + $simple_shortening = intval(DI::pConfig()->get(local_user(), 'system', 'simple_shortening')); $attach_link_title = intval(DI::pConfig()->get(local_user(), 'system', 'attach_link_title')); $ostatus_autofriend = intval(DI::pConfig()->get(local_user(), 'system', 'ostatus_autofriend')); $default_group = DI::pConfig()->get(local_user(), 'ostatus', 'default_group'); @@ -612,6 +614,7 @@ function settings_content(App $a) '$accept_only_sharer' => ['accept_only_sharer', DI::l10n()->t('Accept only top level posts by contacts you follow'), $accept_only_sharer, DI::l10n()->t('The system does an auto completion of threads when a comment arrives. This has got the side effect that you can receive posts that had been started by a non-follower but had been commented by someone you follow. This setting deactivates this behaviour. When activated, you strictly only will receive posts from people you really do follow.')], '$disable_cw' => ['disable_cw', DI::l10n()->t('Disable Content Warning'), $disable_cw, DI::l10n()->t('Users on networks like Mastodon or Pleroma are able to set a content warning field which collapse their post by default. This disables the automatic collapsing and sets the content warning as the post title. Doesn\'t affect any other content filtering you eventually set up.')], '$no_intelligent_shortening' => ['no_intelligent_shortening', DI::l10n()->t('Disable intelligent shortening'), $no_intelligent_shortening, DI::l10n()->t('Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post.')], + '$simple_shortening' => ['simple_shortening', DI::l10n()->t('Enable simple text shortening'), $simple_shortening, DI::l10n()->t('Normally the system shortens posts at the next line feed. If this option is enabled then the system will shorten the text at the maximum character limit.')], '$attach_link_title' => ['attach_link_title', DI::l10n()->t('Attach the link title'), $attach_link_title, DI::l10n()->t('When activated, the title of the attached link will be added as a title on posts to Diaspora. This is mostly helpful with "remote-self" contacts that share feed content.')], '$ostatus_autofriend' => ['snautofollow', DI::l10n()->t("Automatically follow any GNU Social \x28OStatus\x29 followers/mentioners"), $ostatus_autofriend, DI::l10n()->t('If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user.')], '$default_group' => Group::displayGroupSelection(local_user(), $default_group, DI::l10n()->t("Default group for OStatus contacts")), diff --git a/src/Content/Text/Plaintext.php b/src/Content/Text/Plaintext.php index 1c602b2bf..45c35cb17 100644 --- a/src/Content/Text/Plaintext.php +++ b/src/Content/Text/Plaintext.php @@ -31,16 +31,22 @@ class Plaintext * * @param string $msg * @param int $limit + * @param int $uid * @return string * * @todo For Twitter URLs aren't shortened, but they have to be calculated as if. */ - public static function shorten($msg, $limit) + public static function shorten($msg, $limit, $uid = 0) { + $ellipsis = html_entity_decode("…", ENT_QUOTES, 'UTF-8'); + + if (!empty($uid) && DI::pConfig()->get($uid, 'system', 'simple_shortening')) { + return iconv_substr(iconv_substr(trim($msg), 0, $limit, "UTF-8"), 0, -3, "UTF-8") . $ellipsis; + } + $lines = explode("\n", $msg); $msg = ""; $recycle = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8'); - $ellipsis = html_entity_decode("…", ENT_QUOTES, 'UTF-8'); foreach ($lines as $row => $line) { if (iconv_strlen(trim($msg . "\n" . $line), "UTF-8") <= $limit) { $msg = trim($msg . "\n" . $line); @@ -241,7 +247,7 @@ class Plaintext } elseif (DI::pConfig()->get($item['uid'], 'system', 'no_intelligent_shortening')) { $post['url'] = $item['plink']; } - $msg = self::shorten($msg, $limit); + $msg = self::shorten($msg, $limit, $item['uid']); } } diff --git a/src/Model/Item.php b/src/Model/Item.php index 86b9270fe..990232fc4 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -38,6 +38,8 @@ use Friendica\Protocol\Activity; use Friendica\Protocol\ActivityPub; use Friendica\Protocol\Diaspora; use Friendica\Util\DateTimeFormat; +use Friendica\Util\HTTPSignature; +use Friendica\Util\LDSignature; use Friendica\Util\Map; use Friendica\Util\Network; use Friendica\Util\Proxy; @@ -542,25 +544,30 @@ class Item if (!empty($item['author-id']) && Contact::isBlocked($item['author-id'])) { Logger::notice('Author is blocked node-wide', ['author-link' => $item['author-link'], 'item-uri' => $item['uri']]); + self::remoteDelete($item); return false; } if (!empty($item['author-link']) && Network::isUrlBlocked($item['author-link'])) { Logger::notice('Author server is blocked', ['author-link' => $item['author-link'], 'item-uri' => $item['uri']]); + self::remoteDelete($item); return false; } if (!empty($item['owner-id']) && Contact::isBlocked($item['owner-id'])) { Logger::notice('Owner is blocked node-wide', ['owner-link' => $item['owner-link'], 'item-uri' => $item['uri']]); + self::remoteDelete($item); return false; } if (!empty($item['owner-link']) && Network::isUrlBlocked($item['owner-link'])) { Logger::notice('Owner server is blocked', ['owner-link' => $item['owner-link'], 'item-uri' => $item['uri']]); + self::remoteDelete($item); return false; } if (!empty($item['uid']) && !self::isAllowedByUser($item, $item['uid'])) { + self::remoteDelete($item); return false; } @@ -583,6 +590,40 @@ class Item return true; } + /** + * Try to delete the remote (unwanted) item + * + * @param array $item + */ + private static function remoteDelete(array $item) + { + if ($item['gravity'] == GRAVITY_PARENT) { + return; + } + return; + + $owner = User::getOwnerDataById($item['uid']); + $contact = Contact::getById($item['contact-id']); + + if (FContact::getByURL($contact['addr'], false)) { + Logger::info('Send Diaspora retraction for post', ['addr' => $contact['addr'], 'item' => $item]); + Diaspora::sendRetraction($item, $owner, $contact, in_array($item['private'], [self::UNLISTED, self::PUBLIC])); + } elseif ($profile = APContact::getByURL($contact['url'], false)) { + Logger::info('Send ActivityPub deletion for post', ['url' => $contact['url'], 'item' => $item]); + $data = ['@context' => ActivityPub::CONTEXT, + 'id' => $item['uri'] . '/Delete', + 'type' => 'Delete', + 'actor' => $owner['url'], + 'object' => ['type' => 'Tombstone', 'id' => $item['uri']], + 'to' => [$profile['url']]]; + + $signed = LDSignature::sign($data, $owner); + return HTTPSignature::transmit($signed, $profile['inbox'], $item['uid']); + } else { + Logger::info('Unsupported protocol for deletion', ['network' => $contact['network']]); + } + } + /** * Check if the item array is too old * diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 586b6e9ec..862bbca99 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -1495,6 +1495,7 @@ class Diaspora $contact = self::allowedContactByHandle($importer, $sender, true); if (!$contact) { + //self::sendRetraction($item, $owner, $contact, in_array($item['private'], [self::UNLISTED, self::PUBLIC])); return false; } diff --git a/view/templates/settings/connectors.tpl b/view/templates/settings/connectors.tpl index 08452b124..ef9cc2b95 100644 --- a/view/templates/settings/connectors.tpl +++ b/view/templates/settings/connectors.tpl @@ -14,6 +14,7 @@ {{include file="field_checkbox.tpl" field=$accept_only_sharer}} {{include file="field_checkbox.tpl" field=$disable_cw}} {{include file="field_checkbox.tpl" field=$no_intelligent_shortening}} + {{include file="field_checkbox.tpl" field=$simple_shortening}} {{include file="field_checkbox.tpl" field=$attach_link_title}} {{include file="field_checkbox.tpl" field=$ostatus_autofriend}} {{$default_group nofilter}} diff --git a/view/theme/frio/templates/settings/connectors.tpl b/view/theme/frio/templates/settings/connectors.tpl index 6818c66bd..88e4977e1 100644 --- a/view/theme/frio/templates/settings/connectors.tpl +++ b/view/theme/frio/templates/settings/connectors.tpl @@ -24,6 +24,8 @@ {{include file="field_checkbox.tpl" field=$no_intelligent_shortening}} + {{include file="field_checkbox.tpl" field=$simple_shortening}} + {{include file="field_checkbox.tpl" field=$attach_link_title}} {{include file="field_checkbox.tpl" field=$ostatus_autofriend}} From b80cca61e66e8eb24082a344d46039e847f8e570 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Mon, 12 Jul 2021 14:20:10 +0000 Subject: [PATCH 070/108] Added messages.po --- view/lang/C/messages.po | 766 ++++++++++++++++++++-------------------- 1 file changed, 388 insertions(+), 378 deletions(-) diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index e565fb164..6a0ce1f50 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2021.09-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-07-08 15:39+0000\n" +"POT-Creation-Date: 2021-07-12 14:10+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -49,178 +49,178 @@ msgstr "" msgid "Profile Photos" msgstr "" -#: include/conversation.php:196 +#: include/conversation.php:106 #, php-format msgid "%1$s poked %2$s" msgstr "" -#: include/conversation.php:228 src/Model/Item.php:2606 +#: include/conversation.php:138 src/Model/Item.php:2647 msgid "event" msgstr "" -#: include/conversation.php:231 include/conversation.php:240 mod/tagger.php:90 +#: include/conversation.php:141 include/conversation.php:150 mod/tagger.php:90 msgid "status" msgstr "" -#: include/conversation.php:236 mod/tagger.php:90 src/Model/Item.php:2608 +#: include/conversation.php:146 mod/tagger.php:90 src/Model/Item.php:2649 msgid "photo" msgstr "" -#: include/conversation.php:250 mod/tagger.php:123 +#: include/conversation.php:160 mod/tagger.php:123 #, php-format msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" -#: include/conversation.php:565 mod/photos.php:1469 src/Object/Post.php:226 +#: include/conversation.php:468 mod/photos.php:1469 src/Object/Post.php:226 msgid "Select" msgstr "" -#: include/conversation.php:566 mod/photos.php:1470 mod/settings.php:636 +#: include/conversation.php:469 mod/photos.php:1470 mod/settings.php:639 #: src/Module/Admin/Users/Active.php:139 src/Module/Admin/Users/Blocked.php:140 #: src/Module/Admin/Users/Index.php:153 src/Module/Contact.php:894 #: src/Module/Contact.php:1198 msgid "Delete" msgstr "" -#: include/conversation.php:601 src/Object/Post.php:453 src/Object/Post.php:454 +#: include/conversation.php:504 src/Object/Post.php:453 src/Object/Post.php:454 #, php-format msgid "View %s's profile @ %s" msgstr "" -#: include/conversation.php:614 src/Object/Post.php:441 +#: include/conversation.php:517 src/Object/Post.php:441 msgid "Categories:" msgstr "" -#: include/conversation.php:615 src/Object/Post.php:442 +#: include/conversation.php:518 src/Object/Post.php:442 msgid "Filed under:" msgstr "" -#: include/conversation.php:622 src/Object/Post.php:467 +#: include/conversation.php:525 src/Object/Post.php:467 #, php-format msgid "%s from %s" msgstr "" -#: include/conversation.php:637 +#: include/conversation.php:540 msgid "View in context" msgstr "" -#: include/conversation.php:639 include/conversation.php:1223 -#: mod/editpost.php:104 mod/message.php:204 mod/message.php:374 +#: include/conversation.php:542 include/conversation.php:1126 +#: mod/editpost.php:104 mod/message.php:204 mod/message.php:369 #: mod/photos.php:1535 mod/wallmessage.php:155 src/Module/Item/Compose.php:159 #: src/Object/Post.php:501 msgid "Please wait" msgstr "" -#: include/conversation.php:703 +#: include/conversation.php:606 msgid "remove" msgstr "" -#: include/conversation.php:708 +#: include/conversation.php:611 msgid "Delete Selected Items" msgstr "" -#: include/conversation.php:743 include/conversation.php:746 -#: include/conversation.php:749 include/conversation.php:752 +#: include/conversation.php:646 include/conversation.php:649 +#: include/conversation.php:652 include/conversation.php:655 #, php-format msgid "You had been addressed (%s)." msgstr "" -#: include/conversation.php:755 +#: include/conversation.php:658 #, php-format msgid "You are following %s." msgstr "" -#: include/conversation.php:758 +#: include/conversation.php:661 msgid "Tagged" msgstr "" -#: include/conversation.php:771 include/conversation.php:1115 -#: include/conversation.php:1153 +#: include/conversation.php:674 include/conversation.php:1018 +#: include/conversation.php:1056 #, php-format msgid "%s reshared this." msgstr "" -#: include/conversation.php:773 +#: include/conversation.php:676 msgid "Reshared" msgstr "" -#: include/conversation.php:773 +#: include/conversation.php:676 #, php-format msgid "Reshared by %s <%s>" msgstr "" -#: include/conversation.php:776 +#: include/conversation.php:679 #, php-format msgid "%s is participating in this thread." msgstr "" -#: include/conversation.php:779 +#: include/conversation.php:682 msgid "Stored" msgstr "" -#: include/conversation.php:782 +#: include/conversation.php:685 msgid "Global" msgstr "" -#: include/conversation.php:785 +#: include/conversation.php:688 msgid "Relayed" msgstr "" -#: include/conversation.php:785 +#: include/conversation.php:688 #, php-format msgid "Relayed by %s <%s>" msgstr "" -#: include/conversation.php:788 +#: include/conversation.php:691 msgid "Fetched" msgstr "" -#: include/conversation.php:788 +#: include/conversation.php:691 #, php-format msgid "Fetched because of %s <%s>" msgstr "" -#: include/conversation.php:948 view/theme/frio/theme.php:323 +#: include/conversation.php:851 view/theme/frio/theme.php:323 msgid "Follow Thread" msgstr "" -#: include/conversation.php:949 src/Model/Contact.php:1002 +#: include/conversation.php:852 src/Model/Contact.php:1045 msgid "View Status" msgstr "" -#: include/conversation.php:950 include/conversation.php:972 -#: src/Model/Contact.php:928 src/Model/Contact.php:994 -#: src/Model/Contact.php:1003 src/Module/Directory.php:166 +#: include/conversation.php:853 include/conversation.php:875 +#: src/Model/Contact.php:971 src/Model/Contact.php:1037 +#: src/Model/Contact.php:1046 src/Module/Directory.php:166 #: src/Module/Settings/Profile/Index.php:224 msgid "View Profile" msgstr "" -#: include/conversation.php:951 src/Model/Contact.php:1004 +#: include/conversation.php:854 src/Model/Contact.php:1047 msgid "View Photos" msgstr "" -#: include/conversation.php:952 src/Model/Contact.php:995 -#: src/Model/Contact.php:1005 +#: include/conversation.php:855 src/Model/Contact.php:1038 +#: src/Model/Contact.php:1048 msgid "Network Posts" msgstr "" -#: include/conversation.php:953 src/Model/Contact.php:996 -#: src/Model/Contact.php:1006 +#: include/conversation.php:856 src/Model/Contact.php:1039 +#: src/Model/Contact.php:1049 msgid "View Contact" msgstr "" -#: include/conversation.php:954 src/Model/Contact.php:1008 +#: include/conversation.php:857 src/Model/Contact.php:1051 msgid "Send PM" msgstr "" -#: include/conversation.php:955 src/Module/Admin/Blocklist/Contact.php:84 +#: include/conversation.php:858 src/Module/Admin/Blocklist/Contact.php:84 #: src/Module/Admin/Users/Active.php:140 src/Module/Admin/Users/Index.php:154 #: src/Module/Contact.php:633 src/Module/Contact.php:891 #: src/Module/Contact.php:1173 msgid "Block" msgstr "" -#: include/conversation.php:956 src/Module/Contact.php:634 +#: include/conversation.php:859 src/Module/Contact.php:634 #: src/Module/Contact.php:892 src/Module/Contact.php:1181 #: src/Module/Notifications/Introductions.php:113 #: src/Module/Notifications/Introductions.php:191 @@ -228,255 +228,255 @@ msgstr "" msgid "Ignore" msgstr "" -#: include/conversation.php:960 src/Object/Post.php:428 +#: include/conversation.php:863 src/Object/Post.php:428 msgid "Languages" msgstr "" -#: include/conversation.php:964 src/Model/Contact.php:1009 +#: include/conversation.php:867 src/Model/Contact.php:1052 msgid "Poke" msgstr "" -#: include/conversation.php:969 mod/follow.php:146 src/Content/Widget.php:76 -#: src/Model/Contact.php:997 src/Model/Contact.php:1010 +#: include/conversation.php:872 mod/follow.php:146 src/Content/Widget.php:76 +#: src/Model/Contact.php:1040 src/Model/Contact.php:1053 #: view/theme/vier/theme.php:172 msgid "Connect/Follow" msgstr "" -#: include/conversation.php:1100 +#: include/conversation.php:1003 #, php-format msgid "%s likes this." msgstr "" -#: include/conversation.php:1103 +#: include/conversation.php:1006 #, php-format msgid "%s doesn't like this." msgstr "" -#: include/conversation.php:1106 +#: include/conversation.php:1009 #, php-format msgid "%s attends." msgstr "" -#: include/conversation.php:1109 +#: include/conversation.php:1012 #, php-format msgid "%s doesn't attend." msgstr "" -#: include/conversation.php:1112 +#: include/conversation.php:1015 #, php-format msgid "%s attends maybe." msgstr "" -#: include/conversation.php:1121 +#: include/conversation.php:1024 msgid "and" msgstr "" -#: include/conversation.php:1124 +#: include/conversation.php:1027 #, php-format msgid "and %d other people" msgstr "" -#: include/conversation.php:1132 +#: include/conversation.php:1035 #, php-format msgid "<span %1$s>%2$d people</span> like this" msgstr "" -#: include/conversation.php:1133 +#: include/conversation.php:1036 #, php-format msgid "%s like this." msgstr "" -#: include/conversation.php:1136 +#: include/conversation.php:1039 #, php-format msgid "<span %1$s>%2$d people</span> don't like this" msgstr "" -#: include/conversation.php:1137 +#: include/conversation.php:1040 #, php-format msgid "%s don't like this." msgstr "" -#: include/conversation.php:1140 +#: include/conversation.php:1043 #, php-format msgid "<span %1$s>%2$d people</span> attend" msgstr "" -#: include/conversation.php:1141 +#: include/conversation.php:1044 #, php-format msgid "%s attend." msgstr "" -#: include/conversation.php:1144 +#: include/conversation.php:1047 #, php-format msgid "<span %1$s>%2$d people</span> don't attend" msgstr "" -#: include/conversation.php:1145 +#: include/conversation.php:1048 #, php-format msgid "%s don't attend." msgstr "" -#: include/conversation.php:1148 +#: include/conversation.php:1051 #, php-format msgid "<span %1$s>%2$d people</span> attend maybe" msgstr "" -#: include/conversation.php:1149 +#: include/conversation.php:1052 #, php-format msgid "%s attend maybe." msgstr "" -#: include/conversation.php:1152 +#: include/conversation.php:1055 #, php-format msgid "<span %1$s>%2$d people</span> reshared this" msgstr "" -#: include/conversation.php:1182 +#: include/conversation.php:1085 msgid "Visible to <strong>everybody</strong>" msgstr "" -#: include/conversation.php:1183 src/Module/Item/Compose.php:153 +#: include/conversation.php:1086 src/Module/Item/Compose.php:153 #: src/Object/Post.php:970 msgid "Please enter a image/video/audio/webpage URL:" msgstr "" -#: include/conversation.php:1184 +#: include/conversation.php:1087 msgid "Tag term:" msgstr "" -#: include/conversation.php:1185 src/Module/Filer/SaveTag.php:69 +#: include/conversation.php:1088 src/Module/Filer/SaveTag.php:69 msgid "Save to Folder:" msgstr "" -#: include/conversation.php:1186 +#: include/conversation.php:1089 msgid "Where are you right now?" msgstr "" -#: include/conversation.php:1187 +#: include/conversation.php:1090 msgid "Delete item(s)?" msgstr "" -#: include/conversation.php:1197 +#: include/conversation.php:1100 msgid "New Post" msgstr "" -#: include/conversation.php:1200 +#: include/conversation.php:1103 msgid "Share" msgstr "" -#: include/conversation.php:1201 mod/editpost.php:89 mod/photos.php:1381 +#: include/conversation.php:1104 mod/editpost.php:89 mod/photos.php:1381 #: src/Module/Contact/Poke.php:154 src/Object/Post.php:961 msgid "Loading..." msgstr "" -#: include/conversation.php:1202 mod/editpost.php:90 mod/message.php:202 -#: mod/message.php:371 mod/wallmessage.php:153 +#: include/conversation.php:1105 mod/editpost.php:90 mod/message.php:202 +#: mod/message.php:366 mod/wallmessage.php:153 msgid "Upload photo" msgstr "" -#: include/conversation.php:1203 mod/editpost.php:91 +#: include/conversation.php:1106 mod/editpost.php:91 msgid "upload photo" msgstr "" -#: include/conversation.php:1204 mod/editpost.php:92 +#: include/conversation.php:1107 mod/editpost.php:92 msgid "Attach file" msgstr "" -#: include/conversation.php:1205 mod/editpost.php:93 +#: include/conversation.php:1108 mod/editpost.php:93 msgid "attach file" msgstr "" -#: include/conversation.php:1206 src/Module/Item/Compose.php:145 +#: include/conversation.php:1109 src/Module/Item/Compose.php:145 #: src/Object/Post.php:962 msgid "Bold" msgstr "" -#: include/conversation.php:1207 src/Module/Item/Compose.php:146 +#: include/conversation.php:1110 src/Module/Item/Compose.php:146 #: src/Object/Post.php:963 msgid "Italic" msgstr "" -#: include/conversation.php:1208 src/Module/Item/Compose.php:147 +#: include/conversation.php:1111 src/Module/Item/Compose.php:147 #: src/Object/Post.php:964 msgid "Underline" msgstr "" -#: include/conversation.php:1209 src/Module/Item/Compose.php:148 +#: include/conversation.php:1112 src/Module/Item/Compose.php:148 #: src/Object/Post.php:965 msgid "Quote" msgstr "" -#: include/conversation.php:1210 src/Module/Item/Compose.php:149 +#: include/conversation.php:1113 src/Module/Item/Compose.php:149 #: src/Object/Post.php:966 msgid "Code" msgstr "" -#: include/conversation.php:1211 src/Module/Item/Compose.php:150 +#: include/conversation.php:1114 src/Module/Item/Compose.php:150 #: src/Object/Post.php:967 msgid "Image" msgstr "" -#: include/conversation.php:1212 src/Module/Item/Compose.php:151 +#: include/conversation.php:1115 src/Module/Item/Compose.php:151 #: src/Object/Post.php:968 msgid "Link" msgstr "" -#: include/conversation.php:1213 src/Module/Item/Compose.php:152 +#: include/conversation.php:1116 src/Module/Item/Compose.php:152 #: src/Object/Post.php:969 msgid "Link or Media" msgstr "" -#: include/conversation.php:1214 +#: include/conversation.php:1117 msgid "Video" msgstr "" -#: include/conversation.php:1215 mod/editpost.php:100 +#: include/conversation.php:1118 mod/editpost.php:100 #: src/Module/Item/Compose.php:155 msgid "Set your location" msgstr "" -#: include/conversation.php:1216 mod/editpost.php:101 +#: include/conversation.php:1119 mod/editpost.php:101 msgid "set location" msgstr "" -#: include/conversation.php:1217 mod/editpost.php:102 +#: include/conversation.php:1120 mod/editpost.php:102 msgid "Clear browser location" msgstr "" -#: include/conversation.php:1218 mod/editpost.php:103 +#: include/conversation.php:1121 mod/editpost.php:103 msgid "clear location" msgstr "" -#: include/conversation.php:1220 mod/editpost.php:117 +#: include/conversation.php:1123 mod/editpost.php:117 #: src/Module/Item/Compose.php:160 msgid "Set title" msgstr "" -#: include/conversation.php:1222 mod/editpost.php:119 +#: include/conversation.php:1125 mod/editpost.php:119 #: src/Module/Item/Compose.php:161 msgid "Categories (comma-separated list)" msgstr "" -#: include/conversation.php:1224 mod/editpost.php:105 +#: include/conversation.php:1127 mod/editpost.php:105 msgid "Permission settings" msgstr "" -#: include/conversation.php:1225 mod/editpost.php:134 mod/events.php:578 +#: include/conversation.php:1128 mod/editpost.php:134 mod/events.php:578 #: mod/photos.php:968 mod/photos.php:1334 msgid "Permissions" msgstr "" -#: include/conversation.php:1234 mod/editpost.php:114 +#: include/conversation.php:1137 mod/editpost.php:114 msgid "Public post" msgstr "" -#: include/conversation.php:1238 mod/editpost.php:125 mod/events.php:573 +#: include/conversation.php:1141 mod/editpost.php:125 mod/events.php:573 #: mod/photos.php:1380 mod/photos.php:1437 mod/photos.php:1512 #: src/Module/Item/Compose.php:154 src/Object/Post.php:971 msgid "Preview" msgstr "" -#: include/conversation.php:1242 mod/dfrn_request.php:642 mod/editpost.php:128 +#: include/conversation.php:1145 mod/dfrn_request.php:642 mod/editpost.php:128 #: mod/fbrowser.php:105 mod/fbrowser.php:134 mod/follow.php:152 #: mod/photos.php:1036 mod/photos.php:1142 mod/tagrm.php:37 mod/tagrm.php:129 #: mod/unfollow.php:100 src/Module/Contact.php:467 @@ -484,17 +484,17 @@ msgstr "" msgid "Cancel" msgstr "" -#: include/conversation.php:1249 mod/editpost.php:132 src/Model/Profile.php:510 +#: include/conversation.php:1152 mod/editpost.php:132 src/Model/Profile.php:510 #: src/Module/Contact.php:344 msgid "Message" msgstr "" -#: include/conversation.php:1250 mod/editpost.php:133 +#: include/conversation.php:1153 mod/editpost.php:133 #: src/Module/Settings/TwoFactor/Trusted.php:101 msgid "Browser" msgstr "" -#: include/conversation.php:1252 mod/editpost.php:136 +#: include/conversation.php:1155 mod/editpost.php:136 msgid "Open Compose page" msgstr "" @@ -828,7 +828,7 @@ msgstr "" #: mod/item.php:190 mod/item.php:917 mod/message.php:69 mod/message.php:112 #: mod/notes.php:44 mod/ostatus_subscribe.php:30 mod/photos.php:175 #: mod/photos.php:921 mod/repair_ostatus.php:31 mod/settings.php:47 -#: mod/settings.php:65 mod/settings.php:475 mod/suggest.php:34 +#: mod/settings.php:65 mod/settings.php:476 mod/suggest.php:34 #: mod/uimport.php:32 mod/unfollow.php:35 mod/unfollow.php:50 #: mod/unfollow.php:82 mod/wall_attach.php:78 mod/wall_attach.php:81 #: mod/wall_upload.php:99 mod/wall_upload.php:102 mod/wallmessage.php:35 @@ -926,21 +926,21 @@ msgstr "" msgid "Next" msgstr "" -#: mod/cal.php:280 mod/events.php:426 src/Model/Event.php:464 +#: mod/cal.php:280 mod/events.php:426 src/Model/Event.php:466 msgid "today" msgstr "" -#: mod/cal.php:281 mod/events.php:427 src/Model/Event.php:465 +#: mod/cal.php:281 mod/events.php:427 src/Model/Event.php:467 #: src/Util/Temporal.php:330 msgid "month" msgstr "" -#: mod/cal.php:282 mod/events.php:428 src/Model/Event.php:466 +#: mod/cal.php:282 mod/events.php:428 src/Model/Event.php:468 #: src/Util/Temporal.php:331 msgid "week" msgstr "" -#: mod/cal.php:283 mod/events.php:429 src/Model/Event.php:467 +#: mod/cal.php:283 mod/events.php:429 src/Model/Event.php:469 #: src/Util/Temporal.php:332 msgid "day" msgstr "" @@ -1115,11 +1115,11 @@ msgstr "" msgid "Invalid profile URL." msgstr "" -#: mod/dfrn_request.php:355 src/Model/Contact.php:2284 +#: mod/dfrn_request.php:355 src/Model/Contact.php:2341 msgid "Disallowed profile URL." msgstr "" -#: mod/dfrn_request.php:361 src/Model/Contact.php:2289 +#: mod/dfrn_request.php:361 src/Model/Contact.php:2346 #: src/Module/Friendica.php:80 msgid "Blocked domain" msgstr "" @@ -1236,7 +1236,7 @@ msgstr "" msgid "Save" msgstr "" -#: mod/editpost.php:94 mod/message.php:203 mod/message.php:372 +#: mod/editpost.php:94 mod/message.php:203 mod/message.php:367 #: mod/wallmessage.php:154 msgid "Insert web link" msgstr "" @@ -1328,8 +1328,8 @@ msgstr "" msgid "Description:" msgstr "" -#: mod/events.php:563 src/Model/Event.php:84 src/Model/Event.php:111 -#: src/Model/Event.php:473 src/Model/Event.php:960 src/Model/Profile.php:420 +#: mod/events.php:563 src/Model/Event.php:86 src/Model/Event.php:113 +#: src/Model/Event.php:475 src/Model/Event.php:962 src/Model/Profile.php:420 #: src/Module/Contact.php:654 src/Module/Directory.php:156 #: src/Module/Notifications/Introductions.php:172 #: src/Module/Profile/Profile.php:190 @@ -1344,7 +1344,7 @@ msgstr "" msgid "Share this event" msgstr "" -#: mod/events.php:575 mod/message.php:205 mod/message.php:373 +#: mod/events.php:575 mod/message.php:205 mod/message.php:368 #: mod/photos.php:950 mod/photos.php:1053 mod/photos.php:1338 #: mod/photos.php:1379 mod/photos.php:1436 mod/photos.php:1511 #: src/Module/Admin/Item/Source.php:65 src/Module/Contact.php:612 @@ -1657,15 +1657,15 @@ msgstr "" msgid "Send Private Message" msgstr "" -#: mod/message.php:194 mod/message.php:363 mod/wallmessage.php:144 +#: mod/message.php:194 mod/message.php:358 mod/wallmessage.php:144 msgid "To:" msgstr "" -#: mod/message.php:195 mod/message.php:364 mod/wallmessage.php:145 +#: mod/message.php:195 mod/message.php:359 mod/wallmessage.php:145 msgid "Subject:" msgstr "" -#: mod/message.php:199 mod/message.php:367 mod/wallmessage.php:151 +#: mod/message.php:199 mod/message.php:362 mod/wallmessage.php:151 #: src/Module/Invite.php:167 msgid "Your message:" msgstr "" @@ -1678,44 +1678,44 @@ msgstr "" msgid "Message not available." msgstr "" -#: mod/message.php:339 +#: mod/message.php:334 msgid "Delete message" msgstr "" -#: mod/message.php:341 mod/message.php:473 +#: mod/message.php:336 mod/message.php:468 msgid "D, d M Y - g:i A" msgstr "" -#: mod/message.php:356 mod/message.php:470 +#: mod/message.php:351 mod/message.php:465 msgid "Delete conversation" msgstr "" -#: mod/message.php:358 +#: mod/message.php:353 msgid "" "No secure communications available. You <strong>may</strong> be able to " "respond from the sender's profile page." msgstr "" -#: mod/message.php:362 +#: mod/message.php:357 msgid "Send Reply" msgstr "" -#: mod/message.php:444 +#: mod/message.php:439 #, php-format msgid "Unknown sender - %s" msgstr "" -#: mod/message.php:446 +#: mod/message.php:441 #, php-format msgid "You and %s" msgstr "" -#: mod/message.php:448 +#: mod/message.php:443 #, php-format msgid "%s and You" msgstr "" -#: mod/message.php:476 +#: mod/message.php:471 #, php-format msgid "%d message" msgid_plural "%d messages" @@ -2073,75 +2073,75 @@ msgstr "" msgid "Update" msgstr "" -#: mod/settings.php:200 +#: mod/settings.php:201 msgid "Failed to connect with email account using the settings provided." msgstr "" -#: mod/settings.php:229 +#: mod/settings.php:230 msgid "Contact CSV file upload error" msgstr "" -#: mod/settings.php:248 +#: mod/settings.php:249 msgid "Importing Contacts done" msgstr "" -#: mod/settings.php:261 +#: mod/settings.php:262 msgid "Relocate message has been send to your contacts" msgstr "" -#: mod/settings.php:273 +#: mod/settings.php:274 msgid "Passwords do not match." msgstr "" -#: mod/settings.php:281 src/Console/User.php:210 +#: mod/settings.php:282 src/Console/User.php:210 msgid "Password update failed. Please try again." msgstr "" -#: mod/settings.php:284 src/Console/User.php:213 +#: mod/settings.php:285 src/Console/User.php:213 msgid "Password changed." msgstr "" -#: mod/settings.php:287 +#: mod/settings.php:288 msgid "Password unchanged." msgstr "" -#: mod/settings.php:372 +#: mod/settings.php:373 msgid "Please use a shorter name." msgstr "" -#: mod/settings.php:375 +#: mod/settings.php:376 msgid "Name too short." msgstr "" -#: mod/settings.php:382 +#: mod/settings.php:383 msgid "Wrong Password." msgstr "" -#: mod/settings.php:387 +#: mod/settings.php:388 msgid "Invalid email." msgstr "" -#: mod/settings.php:393 +#: mod/settings.php:394 msgid "Cannot change to that email." msgstr "" -#: mod/settings.php:431 +#: mod/settings.php:432 msgid "Private forum has no privacy permissions. Using default privacy group." msgstr "" -#: mod/settings.php:434 +#: mod/settings.php:435 msgid "Private forum has no privacy permissions and no default privacy group." msgstr "" -#: mod/settings.php:453 +#: mod/settings.php:454 msgid "Settings were not updated." msgstr "" -#: mod/settings.php:494 +#: mod/settings.php:495 msgid "Connected Apps" msgstr "" -#: mod/settings.php:495 src/Module/Admin/Blocklist/Contact.php:90 +#: mod/settings.php:496 src/Module/Admin/Blocklist/Contact.php:90 #: src/Module/Admin/Users/Active.php:129 src/Module/Admin/Users/Blocked.php:130 #: src/Module/Admin/Users/Create.php:71 src/Module/Admin/Users/Deleted.php:88 #: src/Module/Admin/Users/Index.php:142 src/Module/Admin/Users/Index.php:162 @@ -2149,31 +2149,31 @@ msgstr "" msgid "Name" msgstr "" -#: mod/settings.php:496 src/Content/Nav.php:216 +#: mod/settings.php:497 src/Content/Nav.php:216 msgid "Home Page" msgstr "" -#: mod/settings.php:497 src/Module/Admin/Queue.php:78 +#: mod/settings.php:498 src/Module/Admin/Queue.php:78 msgid "Created" msgstr "" -#: mod/settings.php:498 +#: mod/settings.php:499 msgid "Remove authorization" msgstr "" -#: mod/settings.php:516 +#: mod/settings.php:517 msgid "Addon Settings" msgstr "" -#: mod/settings.php:517 +#: mod/settings.php:518 msgid "No Addon settings configured" msgstr "" -#: mod/settings.php:538 +#: mod/settings.php:539 msgid "Additional Features" msgstr "" -#: mod/settings.php:540 mod/settings.php:638 mod/settings.php:773 +#: mod/settings.php:541 mod/settings.php:641 mod/settings.php:776 #: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87 #: src/Module/Admin/Logs/Settings.php:82 src/Module/Admin/Site.php:568 #: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:66 @@ -2181,48 +2181,48 @@ msgstr "" msgid "Save Settings" msgstr "" -#: mod/settings.php:563 +#: mod/settings.php:565 msgid "Diaspora (Socialhome, Hubzilla)" msgstr "" -#: mod/settings.php:563 mod/settings.php:564 +#: mod/settings.php:565 mod/settings.php:566 msgid "enabled" msgstr "" -#: mod/settings.php:563 mod/settings.php:564 +#: mod/settings.php:565 mod/settings.php:566 msgid "disabled" msgstr "" -#: mod/settings.php:563 mod/settings.php:564 +#: mod/settings.php:565 mod/settings.php:566 #, php-format msgid "Built-in support for %s connectivity is %s" msgstr "" -#: mod/settings.php:564 +#: mod/settings.php:566 msgid "OStatus (GNU Social)" msgstr "" -#: mod/settings.php:595 +#: mod/settings.php:597 msgid "Email access is disabled on this site." msgstr "" -#: mod/settings.php:600 mod/settings.php:636 +#: mod/settings.php:602 mod/settings.php:639 msgid "None" msgstr "" -#: mod/settings.php:606 src/Module/BaseSettings.php:80 +#: mod/settings.php:608 src/Module/BaseSettings.php:80 msgid "Social Networks" msgstr "" -#: mod/settings.php:611 +#: mod/settings.php:613 msgid "General Social Media Settings" msgstr "" -#: mod/settings.php:612 +#: mod/settings.php:614 msgid "Accept only top level posts by contacts you follow" msgstr "" -#: mod/settings.php:612 +#: mod/settings.php:614 msgid "" "The system does an auto completion of threads when a comment arrives. This " "has got the side effect that you can receive posts that had been started by " @@ -2231,11 +2231,11 @@ msgid "" "posts from people you really do follow." msgstr "" -#: mod/settings.php:613 +#: mod/settings.php:615 msgid "Disable Content Warning" msgstr "" -#: mod/settings.php:613 +#: mod/settings.php:615 msgid "" "Users on networks like Mastodon or Pleroma are able to set a content warning " "field which collapse their post by default. This disables the automatic " @@ -2243,227 +2243,237 @@ msgid "" "any other content filtering you eventually set up." msgstr "" -#: mod/settings.php:614 +#: mod/settings.php:616 msgid "Disable intelligent shortening" msgstr "" -#: mod/settings.php:614 +#: mod/settings.php:616 msgid "" "Normally the system tries to find the best link to add to shortened posts. " "If this option is enabled then every shortened post will always point to the " "original friendica post." msgstr "" -#: mod/settings.php:615 +#: mod/settings.php:617 +msgid "Enable simple text shortening" +msgstr "" + +#: mod/settings.php:617 +msgid "" +"Normally the system shortens posts at the next line feed. If this option is " +"enabled then the system will shorten the text at the maximum character limit." +msgstr "" + +#: mod/settings.php:618 msgid "Attach the link title" msgstr "" -#: mod/settings.php:615 +#: mod/settings.php:618 msgid "" "When activated, the title of the attached link will be added as a title on " "posts to Diaspora. This is mostly helpful with \"remote-self\" contacts that " "share feed content." msgstr "" -#: mod/settings.php:616 +#: mod/settings.php:619 msgid "Automatically follow any GNU Social (OStatus) followers/mentioners" msgstr "" -#: mod/settings.php:616 +#: mod/settings.php:619 msgid "" "If you receive a message from an unknown OStatus user, this option decides " "what to do. If it is checked, a new contact will be created for every " "unknown user." msgstr "" -#: mod/settings.php:617 +#: mod/settings.php:620 msgid "Default group for OStatus contacts" msgstr "" -#: mod/settings.php:618 +#: mod/settings.php:621 msgid "Your legacy GNU Social account" msgstr "" -#: mod/settings.php:618 +#: mod/settings.php:621 msgid "" "If you enter your old GNU Social/Statusnet account name here (in the format " "user@domain.tld), your contacts will be added automatically. The field will " "be emptied when done." msgstr "" -#: mod/settings.php:621 +#: mod/settings.php:624 msgid "Repair OStatus subscriptions" msgstr "" -#: mod/settings.php:625 +#: mod/settings.php:628 msgid "Email/Mailbox Setup" msgstr "" -#: mod/settings.php:626 +#: mod/settings.php:629 msgid "" "If you wish to communicate with email contacts using this service " "(optional), please specify how to connect to your mailbox." msgstr "" -#: mod/settings.php:627 +#: mod/settings.php:630 msgid "Last successful email check:" msgstr "" -#: mod/settings.php:629 +#: mod/settings.php:632 msgid "IMAP server name:" msgstr "" -#: mod/settings.php:630 +#: mod/settings.php:633 msgid "IMAP port:" msgstr "" -#: mod/settings.php:631 +#: mod/settings.php:634 msgid "Security:" msgstr "" -#: mod/settings.php:632 +#: mod/settings.php:635 msgid "Email login name:" msgstr "" -#: mod/settings.php:633 +#: mod/settings.php:636 msgid "Email password:" msgstr "" -#: mod/settings.php:634 +#: mod/settings.php:637 msgid "Reply-to address:" msgstr "" -#: mod/settings.php:635 +#: mod/settings.php:638 msgid "Send public posts to all email contacts:" msgstr "" -#: mod/settings.php:636 +#: mod/settings.php:639 msgid "Action after import:" msgstr "" -#: mod/settings.php:636 src/Content/Nav.php:284 +#: mod/settings.php:639 src/Content/Nav.php:284 msgid "Mark as seen" msgstr "" -#: mod/settings.php:636 +#: mod/settings.php:639 msgid "Move to folder" msgstr "" -#: mod/settings.php:637 +#: mod/settings.php:640 msgid "Move to folder:" msgstr "" -#: mod/settings.php:651 +#: mod/settings.php:654 msgid "Unable to find your profile. Please contact your admin." msgstr "" -#: mod/settings.php:687 src/Content/Widget.php:536 +#: mod/settings.php:690 src/Content/Widget.php:536 msgid "Account Types" msgstr "" -#: mod/settings.php:688 +#: mod/settings.php:691 msgid "Personal Page Subtypes" msgstr "" -#: mod/settings.php:689 +#: mod/settings.php:692 msgid "Community Forum Subtypes" msgstr "" -#: mod/settings.php:696 src/Module/Admin/BaseUsers.php:106 +#: mod/settings.php:699 src/Module/Admin/BaseUsers.php:106 msgid "Personal Page" msgstr "" -#: mod/settings.php:697 +#: mod/settings.php:700 msgid "Account for a personal profile." msgstr "" -#: mod/settings.php:700 src/Module/Admin/BaseUsers.php:107 +#: mod/settings.php:703 src/Module/Admin/BaseUsers.php:107 msgid "Organisation Page" msgstr "" -#: mod/settings.php:701 +#: mod/settings.php:704 msgid "" "Account for an organisation that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:704 src/Module/Admin/BaseUsers.php:108 +#: mod/settings.php:707 src/Module/Admin/BaseUsers.php:108 msgid "News Page" msgstr "" -#: mod/settings.php:705 +#: mod/settings.php:708 msgid "" "Account for a news reflector that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:708 src/Module/Admin/BaseUsers.php:109 +#: mod/settings.php:711 src/Module/Admin/BaseUsers.php:109 msgid "Community Forum" msgstr "" -#: mod/settings.php:709 +#: mod/settings.php:712 msgid "Account for community discussions." msgstr "" -#: mod/settings.php:712 src/Module/Admin/BaseUsers.php:99 +#: mod/settings.php:715 src/Module/Admin/BaseUsers.php:99 msgid "Normal Account Page" msgstr "" -#: mod/settings.php:713 +#: mod/settings.php:716 msgid "" "Account for a regular personal profile that requires manual approval of " "\"Friends\" and \"Followers\"." msgstr "" -#: mod/settings.php:716 src/Module/Admin/BaseUsers.php:100 +#: mod/settings.php:719 src/Module/Admin/BaseUsers.php:100 msgid "Soapbox Page" msgstr "" -#: mod/settings.php:717 +#: mod/settings.php:720 msgid "" "Account for a public profile that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:720 src/Module/Admin/BaseUsers.php:101 +#: mod/settings.php:723 src/Module/Admin/BaseUsers.php:101 msgid "Public Forum" msgstr "" -#: mod/settings.php:721 +#: mod/settings.php:724 msgid "Automatically approves all contact requests." msgstr "" -#: mod/settings.php:724 src/Module/Admin/BaseUsers.php:102 +#: mod/settings.php:727 src/Module/Admin/BaseUsers.php:102 msgid "Automatic Friend Page" msgstr "" -#: mod/settings.php:725 +#: mod/settings.php:728 msgid "" "Account for a popular profile that automatically approves contact requests " "as \"Friends\"." msgstr "" -#: mod/settings.php:728 +#: mod/settings.php:731 msgid "Private Forum [Experimental]" msgstr "" -#: mod/settings.php:729 +#: mod/settings.php:732 msgid "Requires manual approval of contact requests." msgstr "" -#: mod/settings.php:740 +#: mod/settings.php:743 msgid "OpenID:" msgstr "" -#: mod/settings.php:740 +#: mod/settings.php:743 msgid "(Optional) Allow this OpenID to login to this account." msgstr "" -#: mod/settings.php:748 +#: mod/settings.php:751 msgid "Publish your profile in your local site directory?" msgstr "" -#: mod/settings.php:748 +#: mod/settings.php:751 #, php-format msgid "" "Your profile will be published in this node's <a href=\"%s\">local " @@ -2471,115 +2481,115 @@ msgid "" "system settings." msgstr "" -#: mod/settings.php:754 +#: mod/settings.php:757 #, php-format msgid "" "Your profile will also be published in the global friendica directories (e." "g. <a href=\"%s\">%s</a>)." msgstr "" -#: mod/settings.php:760 +#: mod/settings.php:763 #, php-format msgid "Your Identity Address is <strong>'%s'</strong> or '%s'." msgstr "" -#: mod/settings.php:771 +#: mod/settings.php:774 msgid "Account Settings" msgstr "" -#: mod/settings.php:779 +#: mod/settings.php:782 msgid "Password Settings" msgstr "" -#: mod/settings.php:780 src/Module/Register.php:149 +#: mod/settings.php:783 src/Module/Register.php:149 msgid "New Password:" msgstr "" -#: mod/settings.php:780 +#: mod/settings.php:783 msgid "" "Allowed characters are a-z, A-Z, 0-9 and special characters except white " "spaces, accentuated letters and colon (:)." msgstr "" -#: mod/settings.php:781 src/Module/Register.php:150 +#: mod/settings.php:784 src/Module/Register.php:150 msgid "Confirm:" msgstr "" -#: mod/settings.php:781 +#: mod/settings.php:784 msgid "Leave password fields blank unless changing" msgstr "" -#: mod/settings.php:782 +#: mod/settings.php:785 msgid "Current Password:" msgstr "" -#: mod/settings.php:782 +#: mod/settings.php:785 msgid "Your current password to confirm the changes" msgstr "" -#: mod/settings.php:783 +#: mod/settings.php:786 msgid "Password:" msgstr "" -#: mod/settings.php:783 +#: mod/settings.php:786 msgid "Your current password to confirm the changes of the email address" msgstr "" -#: mod/settings.php:786 +#: mod/settings.php:789 msgid "Delete OpenID URL" msgstr "" -#: mod/settings.php:788 +#: mod/settings.php:791 msgid "Basic Settings" msgstr "" -#: mod/settings.php:789 src/Module/Profile/Profile.php:144 +#: mod/settings.php:792 src/Module/Profile/Profile.php:144 msgid "Full Name:" msgstr "" -#: mod/settings.php:790 +#: mod/settings.php:793 msgid "Email Address:" msgstr "" -#: mod/settings.php:791 +#: mod/settings.php:794 msgid "Your Timezone:" msgstr "" -#: mod/settings.php:792 +#: mod/settings.php:795 msgid "Your Language:" msgstr "" -#: mod/settings.php:792 +#: mod/settings.php:795 msgid "" "Set the language we use to show you friendica interface and to send you " "emails" msgstr "" -#: mod/settings.php:793 +#: mod/settings.php:796 msgid "Default Post Location:" msgstr "" -#: mod/settings.php:794 +#: mod/settings.php:797 msgid "Use Browser Location:" msgstr "" -#: mod/settings.php:796 +#: mod/settings.php:799 msgid "Security and Privacy Settings" msgstr "" -#: mod/settings.php:798 +#: mod/settings.php:801 msgid "Maximum Friend Requests/Day:" msgstr "" -#: mod/settings.php:798 mod/settings.php:808 +#: mod/settings.php:801 mod/settings.php:811 msgid "(to prevent spam abuse)" msgstr "" -#: mod/settings.php:800 +#: mod/settings.php:803 msgid "Allow your profile to be searchable globally?" msgstr "" -#: mod/settings.php:800 +#: mod/settings.php:803 msgid "" "Activate this setting if you want others to easily find and follow you. Your " "profile will be searchable on remote systems. This setting also determines " @@ -2587,43 +2597,43 @@ msgid "" "indexed or not." msgstr "" -#: mod/settings.php:801 +#: mod/settings.php:804 msgid "Hide your contact/friend list from viewers of your profile?" msgstr "" -#: mod/settings.php:801 +#: mod/settings.php:804 msgid "" "A list of your contacts is displayed on your profile page. Activate this " "option to disable the display of your contact list." msgstr "" -#: mod/settings.php:802 +#: mod/settings.php:805 msgid "Hide your profile details from anonymous viewers?" msgstr "" -#: mod/settings.php:802 +#: mod/settings.php:805 msgid "" "Anonymous visitors will only see your profile picture, your display name and " "the nickname you are using on your profile page. Your public posts and " "replies will still be accessible by other means." msgstr "" -#: mod/settings.php:803 +#: mod/settings.php:806 msgid "Make public posts unlisted" msgstr "" -#: mod/settings.php:803 +#: mod/settings.php:806 msgid "" "Your public posts will not appear on the community pages or in search " "results, nor be sent to relay servers. However they can still appear on " "public feeds on remote servers." msgstr "" -#: mod/settings.php:804 +#: mod/settings.php:807 msgid "Make all posted pictures accessible" msgstr "" -#: mod/settings.php:804 +#: mod/settings.php:807 msgid "" "This option makes every posted picture accessible via the direct link. This " "is a workaround for the problem that most other networks can't handle " @@ -2631,209 +2641,209 @@ msgid "" "public on your photo albums though." msgstr "" -#: mod/settings.php:805 +#: mod/settings.php:808 msgid "Allow friends to post to your profile page?" msgstr "" -#: mod/settings.php:805 +#: mod/settings.php:808 msgid "" "Your contacts may write posts on your profile wall. These posts will be " "distributed to your contacts" msgstr "" -#: mod/settings.php:806 +#: mod/settings.php:809 msgid "Allow friends to tag your posts?" msgstr "" -#: mod/settings.php:806 +#: mod/settings.php:809 msgid "Your contacts can add additional tags to your posts." msgstr "" -#: mod/settings.php:807 +#: mod/settings.php:810 msgid "Permit unknown people to send you private mail?" msgstr "" -#: mod/settings.php:807 +#: mod/settings.php:810 msgid "" "Friendica network users may send you private messages even if they are not " "in your contact list." msgstr "" -#: mod/settings.php:808 +#: mod/settings.php:811 msgid "Maximum private messages per day from unknown people:" msgstr "" -#: mod/settings.php:810 +#: mod/settings.php:813 msgid "Default Post Permissions" msgstr "" -#: mod/settings.php:814 +#: mod/settings.php:817 msgid "Expiration settings" msgstr "" -#: mod/settings.php:815 +#: mod/settings.php:818 msgid "Automatically expire posts after this many days:" msgstr "" -#: mod/settings.php:815 +#: mod/settings.php:818 msgid "If empty, posts will not expire. Expired posts will be deleted" msgstr "" -#: mod/settings.php:816 +#: mod/settings.php:819 msgid "Expire posts" msgstr "" -#: mod/settings.php:816 +#: mod/settings.php:819 msgid "When activated, posts and comments will be expired." msgstr "" -#: mod/settings.php:817 +#: mod/settings.php:820 msgid "Expire personal notes" msgstr "" -#: mod/settings.php:817 +#: mod/settings.php:820 msgid "" "When activated, the personal notes on your profile page will be expired." msgstr "" -#: mod/settings.php:818 +#: mod/settings.php:821 msgid "Expire starred posts" msgstr "" -#: mod/settings.php:818 +#: mod/settings.php:821 msgid "" "Starring posts keeps them from being expired. That behaviour is overwritten " "by this setting." msgstr "" -#: mod/settings.php:819 +#: mod/settings.php:822 msgid "Expire photos" msgstr "" -#: mod/settings.php:819 +#: mod/settings.php:822 msgid "When activated, photos will be expired." msgstr "" -#: mod/settings.php:820 +#: mod/settings.php:823 msgid "Only expire posts by others" msgstr "" -#: mod/settings.php:820 +#: mod/settings.php:823 msgid "" "When activated, your own posts never expire. Then the settings above are " "only valid for posts you received." msgstr "" -#: mod/settings.php:823 +#: mod/settings.php:826 msgid "Notification Settings" msgstr "" -#: mod/settings.php:824 +#: mod/settings.php:827 msgid "Send a notification email when:" msgstr "" -#: mod/settings.php:825 +#: mod/settings.php:828 msgid "You receive an introduction" msgstr "" -#: mod/settings.php:826 +#: mod/settings.php:829 msgid "Your introductions are confirmed" msgstr "" -#: mod/settings.php:827 +#: mod/settings.php:830 msgid "Someone writes on your profile wall" msgstr "" -#: mod/settings.php:828 +#: mod/settings.php:831 msgid "Someone writes a followup comment" msgstr "" -#: mod/settings.php:829 +#: mod/settings.php:832 msgid "You receive a private message" msgstr "" -#: mod/settings.php:830 +#: mod/settings.php:833 msgid "You receive a friend suggestion" msgstr "" -#: mod/settings.php:831 +#: mod/settings.php:834 msgid "You are tagged in a post" msgstr "" -#: mod/settings.php:832 +#: mod/settings.php:835 msgid "You are poked/prodded/etc. in a post" msgstr "" -#: mod/settings.php:834 +#: mod/settings.php:837 msgid "Activate desktop notifications" msgstr "" -#: mod/settings.php:834 +#: mod/settings.php:837 msgid "Show desktop popup on new notifications" msgstr "" -#: mod/settings.php:836 +#: mod/settings.php:839 msgid "Text-only notification emails" msgstr "" -#: mod/settings.php:838 +#: mod/settings.php:841 msgid "Send text only notification emails, without the html part" msgstr "" -#: mod/settings.php:840 +#: mod/settings.php:843 msgid "Show detailled notifications" msgstr "" -#: mod/settings.php:842 +#: mod/settings.php:845 msgid "" "Per default, notifications are condensed to a single notification per item. " "When enabled every notification is displayed." msgstr "" -#: mod/settings.php:844 +#: mod/settings.php:847 msgid "Show notifications of ignored contacts" msgstr "" -#: mod/settings.php:846 +#: mod/settings.php:849 msgid "" "You don't see posts from ignored contacts. But you still see their comments. " "This setting controls if you want to still receive regular notifications " "that are caused by ignored contacts or not." msgstr "" -#: mod/settings.php:848 +#: mod/settings.php:851 msgid "Advanced Account/Page Type Settings" msgstr "" -#: mod/settings.php:849 +#: mod/settings.php:852 msgid "Change the behaviour of this account for special situations" msgstr "" -#: mod/settings.php:852 +#: mod/settings.php:855 msgid "Import Contacts" msgstr "" -#: mod/settings.php:853 +#: mod/settings.php:856 msgid "" "Upload a CSV file that contains the handle of your followed accounts in the " "first column you exported from the old account." msgstr "" -#: mod/settings.php:854 +#: mod/settings.php:857 msgid "Upload File" msgstr "" -#: mod/settings.php:856 +#: mod/settings.php:859 msgid "Relocate" msgstr "" -#: mod/settings.php:857 +#: mod/settings.php:860 msgid "" "If you have moved this profile from another server, and some of your " "contacts don't receive your updates, try pushing this button." msgstr "" -#: mod/settings.php:858 +#: mod/settings.php:861 msgid "Resend relocate message to contacts" msgstr "" @@ -3645,8 +3655,8 @@ msgid "" "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s" msgstr "" -#: src/Content/Text/BBCode.php:1108 src/Model/Item.php:3134 -#: src/Model/Item.php:3140 src/Model/Item.php:3141 +#: src/Content/Text/BBCode.php:1108 src/Model/Item.php:3175 +#: src/Model/Item.php:3181 src/Model/Item.php:3182 msgid "Link to source" msgstr "" @@ -3801,7 +3811,7 @@ msgstr "" msgid "Organisations" msgstr "" -#: src/Content/Widget.php:532 src/Model/Contact.php:1426 +#: src/Content/Widget.php:532 src/Model/Contact.php:1469 msgid "News" msgstr "" @@ -4187,137 +4197,137 @@ msgstr "" msgid "Could not connect to database." msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:432 +#: src/Core/L10n.php:377 src/Model/Event.php:434 #: src/Module/Settings/Display.php:178 msgid "Monday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:433 +#: src/Core/L10n.php:377 src/Model/Event.php:435 msgid "Tuesday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:434 +#: src/Core/L10n.php:377 src/Model/Event.php:436 msgid "Wednesday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:435 +#: src/Core/L10n.php:377 src/Model/Event.php:437 msgid "Thursday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:436 +#: src/Core/L10n.php:377 src/Model/Event.php:438 msgid "Friday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:437 +#: src/Core/L10n.php:377 src/Model/Event.php:439 msgid "Saturday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:431 +#: src/Core/L10n.php:377 src/Model/Event.php:433 #: src/Module/Settings/Display.php:178 msgid "Sunday" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:452 +#: src/Core/L10n.php:381 src/Model/Event.php:454 msgid "January" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:453 +#: src/Core/L10n.php:381 src/Model/Event.php:455 msgid "February" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:454 +#: src/Core/L10n.php:381 src/Model/Event.php:456 msgid "March" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:455 +#: src/Core/L10n.php:381 src/Model/Event.php:457 msgid "April" msgstr "" -#: src/Core/L10n.php:381 src/Core/L10n.php:401 src/Model/Event.php:443 +#: src/Core/L10n.php:381 src/Core/L10n.php:401 src/Model/Event.php:445 msgid "May" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:456 +#: src/Core/L10n.php:381 src/Model/Event.php:458 msgid "June" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:457 +#: src/Core/L10n.php:381 src/Model/Event.php:459 msgid "July" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:458 +#: src/Core/L10n.php:381 src/Model/Event.php:460 msgid "August" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:459 +#: src/Core/L10n.php:381 src/Model/Event.php:461 msgid "September" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:460 +#: src/Core/L10n.php:381 src/Model/Event.php:462 msgid "October" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:461 +#: src/Core/L10n.php:381 src/Model/Event.php:463 msgid "November" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:462 +#: src/Core/L10n.php:381 src/Model/Event.php:464 msgid "December" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:424 +#: src/Core/L10n.php:397 src/Model/Event.php:426 msgid "Mon" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:425 +#: src/Core/L10n.php:397 src/Model/Event.php:427 msgid "Tue" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:426 +#: src/Core/L10n.php:397 src/Model/Event.php:428 msgid "Wed" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:427 +#: src/Core/L10n.php:397 src/Model/Event.php:429 msgid "Thu" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:428 +#: src/Core/L10n.php:397 src/Model/Event.php:430 msgid "Fri" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:429 +#: src/Core/L10n.php:397 src/Model/Event.php:431 msgid "Sat" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:423 +#: src/Core/L10n.php:397 src/Model/Event.php:425 msgid "Sun" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:439 +#: src/Core/L10n.php:401 src/Model/Event.php:441 msgid "Jan" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:440 +#: src/Core/L10n.php:401 src/Model/Event.php:442 msgid "Feb" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:441 +#: src/Core/L10n.php:401 src/Model/Event.php:443 msgid "Mar" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:442 +#: src/Core/L10n.php:401 src/Model/Event.php:444 msgid "Apr" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:444 +#: src/Core/L10n.php:401 src/Model/Event.php:446 msgid "Jun" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:445 +#: src/Core/L10n.php:401 src/Model/Event.php:447 msgid "Jul" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:446 +#: src/Core/L10n.php:401 src/Model/Event.php:448 msgid "Aug" msgstr "" @@ -4325,15 +4335,15 @@ msgstr "" msgid "Sep" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:448 +#: src/Core/L10n.php:401 src/Model/Event.php:450 msgid "Oct" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:449 +#: src/Core/L10n.php:401 src/Model/Event.php:451 msgid "Nov" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:450 +#: src/Core/L10n.php:401 src/Model/Event.php:452 msgid "Dec" msgstr "" @@ -4622,150 +4632,150 @@ msgstr "" msgid "Legacy module file not found: %s" msgstr "" -#: src/Model/Contact.php:998 src/Model/Contact.php:1011 +#: src/Model/Contact.php:1041 src/Model/Contact.php:1054 msgid "UnFollow" msgstr "" -#: src/Model/Contact.php:1007 +#: src/Model/Contact.php:1050 msgid "Drop Contact" msgstr "" -#: src/Model/Contact.php:1017 src/Module/Admin/Users/Pending.php:107 +#: src/Model/Contact.php:1060 src/Module/Admin/Users/Pending.php:107 #: src/Module/Notifications/Introductions.php:111 #: src/Module/Notifications/Introductions.php:189 msgid "Approve" msgstr "" -#: src/Model/Contact.php:1422 +#: src/Model/Contact.php:1465 msgid "Organisation" msgstr "" -#: src/Model/Contact.php:1430 +#: src/Model/Contact.php:1473 msgid "Forum" msgstr "" -#: src/Model/Contact.php:2294 +#: src/Model/Contact.php:2351 msgid "Connect URL missing." msgstr "" -#: src/Model/Contact.php:2303 +#: src/Model/Contact.php:2360 msgid "" "The contact could not be added. Please check the relevant network " "credentials in your Settings -> Social Networks page." msgstr "" -#: src/Model/Contact.php:2346 +#: src/Model/Contact.php:2403 msgid "" "This site is not configured to allow communications with other networks." msgstr "" -#: src/Model/Contact.php:2347 src/Model/Contact.php:2360 +#: src/Model/Contact.php:2404 src/Model/Contact.php:2417 msgid "No compatible communication protocols or feeds were discovered." msgstr "" -#: src/Model/Contact.php:2358 +#: src/Model/Contact.php:2415 msgid "The profile address specified does not provide adequate information." msgstr "" -#: src/Model/Contact.php:2363 +#: src/Model/Contact.php:2420 msgid "An author or name was not found." msgstr "" -#: src/Model/Contact.php:2366 +#: src/Model/Contact.php:2423 msgid "No browser URL could be matched to this address." msgstr "" -#: src/Model/Contact.php:2369 +#: src/Model/Contact.php:2426 msgid "" "Unable to match @-style Identity Address with a known protocol or email " "contact." msgstr "" -#: src/Model/Contact.php:2370 +#: src/Model/Contact.php:2427 msgid "Use mailto: in front of address to force email check." msgstr "" -#: src/Model/Contact.php:2376 +#: src/Model/Contact.php:2433 msgid "" "The profile address specified belongs to a network which has been disabled " "on this site." msgstr "" -#: src/Model/Contact.php:2381 +#: src/Model/Contact.php:2438 msgid "" "Limited profile. This person will be unable to receive direct/personal " "notifications from you." msgstr "" -#: src/Model/Contact.php:2440 +#: src/Model/Contact.php:2497 msgid "Unable to retrieve contact information." msgstr "" -#: src/Model/Event.php:50 src/Model/Event.php:872 +#: src/Model/Event.php:52 src/Model/Event.php:874 #: src/Module/Debug/Localtime.php:36 msgid "l F d, Y \\@ g:i A" msgstr "" -#: src/Model/Event.php:77 src/Model/Event.php:94 src/Model/Event.php:471 -#: src/Model/Event.php:942 +#: src/Model/Event.php:79 src/Model/Event.php:96 src/Model/Event.php:473 +#: src/Model/Event.php:944 msgid "Starts:" msgstr "" -#: src/Model/Event.php:80 src/Model/Event.php:100 src/Model/Event.php:472 -#: src/Model/Event.php:946 +#: src/Model/Event.php:82 src/Model/Event.php:102 src/Model/Event.php:474 +#: src/Model/Event.php:948 msgid "Finishes:" msgstr "" -#: src/Model/Event.php:421 +#: src/Model/Event.php:423 msgid "all-day" msgstr "" -#: src/Model/Event.php:447 +#: src/Model/Event.php:449 msgid "Sept" msgstr "" -#: src/Model/Event.php:469 +#: src/Model/Event.php:471 msgid "No events to display" msgstr "" -#: src/Model/Event.php:588 +#: src/Model/Event.php:590 msgid "l, F j" msgstr "" -#: src/Model/Event.php:619 +#: src/Model/Event.php:621 msgid "Edit event" msgstr "" -#: src/Model/Event.php:620 +#: src/Model/Event.php:622 msgid "Duplicate event" msgstr "" -#: src/Model/Event.php:621 +#: src/Model/Event.php:623 msgid "Delete event" msgstr "" -#: src/Model/Event.php:873 +#: src/Model/Event.php:875 msgid "D g:i A" msgstr "" -#: src/Model/Event.php:874 +#: src/Model/Event.php:876 msgid "g:i A" msgstr "" -#: src/Model/Event.php:961 src/Model/Event.php:963 +#: src/Model/Event.php:963 src/Model/Event.php:965 msgid "Show map" msgstr "" -#: src/Model/Event.php:962 +#: src/Model/Event.php:964 msgid "Hide map" msgstr "" -#: src/Model/Event.php:1054 +#: src/Model/Event.php:1056 #, php-format msgid "%s's birthday" msgstr "" -#: src/Model/Event.php:1055 +#: src/Model/Event.php:1057 #, php-format msgid "Happy Birthday %s" msgstr "" @@ -4814,33 +4824,33 @@ msgstr "" msgid "Edit groups" msgstr "" -#: src/Model/Item.php:1660 +#: src/Model/Item.php:1701 #, php-format msgid "Detected languages in this post:\\n%s" msgstr "" -#: src/Model/Item.php:2610 +#: src/Model/Item.php:2651 msgid "activity" msgstr "" -#: src/Model/Item.php:2612 +#: src/Model/Item.php:2653 msgid "comment" msgstr "" -#: src/Model/Item.php:2615 +#: src/Model/Item.php:2656 msgid "post" msgstr "" -#: src/Model/Item.php:2729 +#: src/Model/Item.php:2770 #, php-format msgid "Content warning: %s" msgstr "" -#: src/Model/Item.php:3099 +#: src/Model/Item.php:3140 msgid "bytes" msgstr "" -#: src/Model/Item.php:3128 src/Model/Item.php:3129 +#: src/Model/Item.php:3169 src/Model/Item.php:3170 msgid "View on separate page" msgstr "" @@ -10458,7 +10468,7 @@ msgstr "" msgid "Show fewer" msgstr "" -#: src/Protocol/Diaspora.php:3434 +#: src/Protocol/Diaspora.php:3435 msgid "Attachments:" msgstr "" From aee652117c371edb3b80f2237cd1a9adbf4282aa Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Mon, 12 Jul 2021 14:28:13 +0000 Subject: [PATCH 071/108] Definiing parameter type --- src/Content/Text/Plaintext.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Content/Text/Plaintext.php b/src/Content/Text/Plaintext.php index 45c35cb17..e177ac387 100644 --- a/src/Content/Text/Plaintext.php +++ b/src/Content/Text/Plaintext.php @@ -36,7 +36,7 @@ class Plaintext * * @todo For Twitter URLs aren't shortened, but they have to be calculated as if. */ - public static function shorten($msg, $limit, $uid = 0) + public static function shorten(string $msg, int $limit, int $uid = 0) { $ellipsis = html_entity_decode("…", ENT_QUOTES, 'UTF-8'); From 299cff8c509ecfe4e58781a1d6a7d8d340efcc91 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Mon, 12 Jul 2021 20:06:35 +0000 Subject: [PATCH 072/108] Defining return value --- src/Content/Text/Plaintext.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Content/Text/Plaintext.php b/src/Content/Text/Plaintext.php index e177ac387..e635d727e 100644 --- a/src/Content/Text/Plaintext.php +++ b/src/Content/Text/Plaintext.php @@ -36,7 +36,7 @@ class Plaintext * * @todo For Twitter URLs aren't shortened, but they have to be calculated as if. */ - public static function shorten(string $msg, int $limit, int $uid = 0) + public static function shorten(string $msg, int $limit, int $uid = 0):string { $ellipsis = html_entity_decode("…", ENT_QUOTES, 'UTF-8'); From 1466afe3b2b3d88b53222145a4bf5257fc644c39 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Tue, 13 Jul 2021 06:06:08 +0000 Subject: [PATCH 073/108] Automatically subscribe to the followings of a given AP account --- mod/ostatus_subscribe.php | 47 ++++++++++++++----- mod/salmon.php | 19 -------- mod/settings.php | 10 +--- src/Model/User.php | 13 +---- view/templates/settings/connectors.tpl | 2 - .../frio/templates/settings/connectors.tpl | 4 -- 6 files changed, 39 insertions(+), 56 deletions(-) diff --git a/mod/ostatus_subscribe.php b/mod/ostatus_subscribe.php index 9e817eda9..9ff5c2052 100644 --- a/mod/ostatus_subscribe.php +++ b/mod/ostatus_subscribe.php @@ -22,7 +22,9 @@ use Friendica\App; use Friendica\Core\Protocol; use Friendica\DI; +use Friendica\Model\APContact; use Friendica\Model\Contact; +use Friendica\Protocol\ActivityPub; function ostatus_subscribe_content(App $a) { @@ -32,11 +34,11 @@ function ostatus_subscribe_content(App $a) // NOTREACHED } - $o = '<h2>' . DI::l10n()->t('Subscribing to OStatus contacts') . '</h2>'; + $o = '<h2>' . DI::l10n()->t('Subscribing to contacts') . '</h2>'; $uid = local_user(); - $counter = intval($_REQUEST['counter']); + $counter = intval($_REQUEST['counter'] ?? 0); if (DI::pConfig()->get($uid, 'ostatus', 'legacy_friends') == '') { @@ -51,17 +53,38 @@ function ostatus_subscribe_content(App $a) return $o . DI::l10n()->t('Couldn\'t fetch information for contact.'); } - $api = $contact['baseurl'] . '/api/'; + if ($contact['network'] == Protocol::OSTATUS) { + $api = $contact['baseurl'] . '/api/'; - // Fetching friends - $curlResult = DI::httpRequest()->get($api . 'statuses/friends.json?screen_name=' . $contact['nick']); + // Fetching friends + $curlResult = DI::httpRequest()->get($api . 'statuses/friends.json?screen_name=' . $contact['nick']); - if (!$curlResult->isSuccess()) { + if (!$curlResult->isSuccess()) { + DI::pConfig()->delete($uid, 'ostatus', 'legacy_contact'); + return $o . DI::l10n()->t('Couldn\'t fetch friends for contact.'); + } + + $friends = $curlResult->getBody(); + if (empty($friends)) { + DI::pConfig()->delete($uid, 'ostatus', 'legacy_contact'); + return $o . DI::l10n()->t('Couldn\'t fetch following contacts.'); + } + DI::pConfig()->set($uid, 'ostatus', 'legacy_friends', $friends); + } elseif ($apcontact = APContact::getByURL($contact['url'])) { + if (empty($apcontact['following'])) { + DI::pConfig()->delete($uid, 'ostatus', 'legacy_contact'); + return $o . DI::l10n()->t('Couldn\'t fetch remote profile.'); + } + $followings = ActivityPub::fetchItems($apcontact['following']); + if (empty($followings)) { + DI::pConfig()->delete($uid, 'ostatus', 'legacy_contact'); + return $o . DI::l10n()->t('Couldn\'t fetch following contacts.'); + } + DI::pConfig()->set($uid, 'ostatus', 'legacy_friends', json_encode($followings)); + } else { DI::pConfig()->delete($uid, 'ostatus', 'legacy_contact'); - return $o . DI::l10n()->t('Couldn\'t fetch friends for contact.'); + return $o . DI::l10n()->t('Unsupported network'); } - - DI::pConfig()->set($uid, 'ostatus', 'legacy_friends', $curlResult->getBody()); } $friends = json_decode(DI::pConfig()->get($uid, 'ostatus', 'legacy_friends')); @@ -82,13 +105,13 @@ function ostatus_subscribe_content(App $a) $friend = $friends[$counter++]; - $url = $friend->statusnet_profile_url; + $url = $friend->statusnet_profile_url ?? $friend; $o .= '<p>' . $counter . '/' . $total . ': ' . $url; $probed = Contact::getByURL($url); - if ($probed['network'] == Protocol::OSTATUS) { - $result = Contact::createFromProbe($a->user, $probed['url'], true, Protocol::OSTATUS); + if (in_array($probed['network'], Protocol::FEDERATED)) { + $result = Contact::createFromProbe($a->user, $probed['url']); if ($result['success']) { $o .= ' - ' . DI::l10n()->t('success'); } else { diff --git a/mod/salmon.php b/mod/salmon.php index 1e92980f1..52fce8073 100644 --- a/mod/salmon.php +++ b/mod/salmon.php @@ -169,24 +169,6 @@ function salmon_post(App $a, $xml = '') { intval($importer['uid']) ); - if (!DBA::isResult($r)) { - Logger::log('Author ' . $author_link . ' unknown to user ' . $importer['uid'] . '.'); - - if (DI::pConfig()->get($importer['uid'], 'system', 'ostatus_autofriend')) { - $result = Contact::createFromProbe($importer, $author_link); - - if ($result['success']) { - $r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND ( `url` = '%s' OR `alias` = '%s') - AND `uid` = %d LIMIT 1", - DBA::escape(Protocol::OSTATUS), - DBA::escape($author_link), - DBA::escape($author_link), - intval($importer['uid']) - ); - } - } - } - if (!empty($r[0]['gsid'])) { GServer::setProtocol($r[0]['gsid'], Post\DeliveryData::OSTATUS); } @@ -194,7 +176,6 @@ function salmon_post(App $a, $xml = '') { // Have we ignored the person? // If so we can not accept this post. - //if((DBA::isResult($r)) && (($r[0]['readonly']) || ($r[0]['rel'] == Contact::FOLLOWER) || ($r[0]['blocked']))) { if (DBA::isResult($r) && $r[0]['blocked']) { Logger::log('Ignoring this author.'); throw new \Friendica\Network\HTTPException\AcceptedException(); diff --git a/mod/settings.php b/mod/settings.php index c9350e68e..317f09201 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -139,8 +139,6 @@ function settings_post(App $a) DI::pConfig()->set(local_user(), 'system', 'no_intelligent_shortening', intval($_POST['no_intelligent_shortening'])); DI::pConfig()->set(local_user(), 'system', 'simple_shortening', intval($_POST['simple_shortening'])); DI::pConfig()->set(local_user(), 'system', 'attach_link_title', intval($_POST['attach_link_title'])); - DI::pConfig()->set(local_user(), 'system', 'ostatus_autofriend', intval($_POST['snautofollow'])); - DI::pConfig()->set(local_user(), 'ostatus', 'default_group', $_POST['group-selection']); DI::pConfig()->set(local_user(), 'ostatus', 'legacy_contact', $_POST['legacy_contact']); } elseif (!empty($_POST['imap-submit'])) { $mail_server = $_POST['mail_server'] ?? ''; @@ -549,15 +547,13 @@ function settings_content(App $a) $no_intelligent_shortening = intval(DI::pConfig()->get(local_user(), 'system', 'no_intelligent_shortening')); $simple_shortening = intval(DI::pConfig()->get(local_user(), 'system', 'simple_shortening')); $attach_link_title = intval(DI::pConfig()->get(local_user(), 'system', 'attach_link_title')); - $ostatus_autofriend = intval(DI::pConfig()->get(local_user(), 'system', 'ostatus_autofriend')); - $default_group = DI::pConfig()->get(local_user(), 'ostatus', 'default_group'); $legacy_contact = DI::pConfig()->get(local_user(), 'ostatus', 'legacy_contact'); if (!empty($legacy_contact)) { /// @todo Isn't it supposed to be a $a->internalRedirect() call? DI::page()['htmlhead'] = '<meta http-equiv="refresh" content="0; URL=' . DI::baseUrl().'/ostatus_subscribe?url=' . urlencode($legacy_contact) . '">'; } - + $settings_connectors = ''; Hook::callAll('connector_settings', $settings_connectors); @@ -616,9 +612,7 @@ function settings_content(App $a) '$no_intelligent_shortening' => ['no_intelligent_shortening', DI::l10n()->t('Disable intelligent shortening'), $no_intelligent_shortening, DI::l10n()->t('Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post.')], '$simple_shortening' => ['simple_shortening', DI::l10n()->t('Enable simple text shortening'), $simple_shortening, DI::l10n()->t('Normally the system shortens posts at the next line feed. If this option is enabled then the system will shorten the text at the maximum character limit.')], '$attach_link_title' => ['attach_link_title', DI::l10n()->t('Attach the link title'), $attach_link_title, DI::l10n()->t('When activated, the title of the attached link will be added as a title on posts to Diaspora. This is mostly helpful with "remote-self" contacts that share feed content.')], - '$ostatus_autofriend' => ['snautofollow', DI::l10n()->t("Automatically follow any GNU Social \x28OStatus\x29 followers/mentioners"), $ostatus_autofriend, DI::l10n()->t('If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user.')], - '$default_group' => Group::displayGroupSelection(local_user(), $default_group, DI::l10n()->t("Default group for OStatus contacts")), - '$legacy_contact' => ['legacy_contact', DI::l10n()->t('Your legacy GNU Social account'), $legacy_contact, DI::l10n()->t("If you enter your old GNU Social/Statusnet account name here \x28in the format user@domain.tld\x29, your contacts will be added automatically. The field will be emptied when done.")], + '$legacy_contact' => ['legacy_contact', DI::l10n()->t('Your legacy ActivityPub/GNU Social account'), $legacy_contact, DI::l10n()->t("If you enter your old account name from an ActivityPub based system or your GNU Social/Statusnet account name here (in the format user@domain.tld), your contacts will be added automatically. The field will be emptied when done.")], '$repair_ostatus_url' => DI::baseUrl() . '/repair_ostatus', '$repair_ostatus_text' => DI::l10n()->t('Repair OStatus subscriptions'), diff --git a/src/Model/User.php b/src/Model/User.php index 5d349ce69..3d76b0800 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -476,20 +476,11 @@ class User */ public static function getDefaultGroup($uid, $network = '') { - $default_group = 0; - - if ($network == Protocol::OSTATUS) { - $default_group = DI::pConfig()->get($uid, "ostatus", "default_group"); - } - - if ($default_group != 0) { - return $default_group; - } - $user = DBA::selectFirst('user', ['def_gid'], ['uid' => $uid]); - if (DBA::isResult($user)) { $default_group = $user["def_gid"]; + } else { + $default_group = 0; } return $default_group; diff --git a/view/templates/settings/connectors.tpl b/view/templates/settings/connectors.tpl index ef9cc2b95..adb4b249d 100644 --- a/view/templates/settings/connectors.tpl +++ b/view/templates/settings/connectors.tpl @@ -16,8 +16,6 @@ {{include file="field_checkbox.tpl" field=$no_intelligent_shortening}} {{include file="field_checkbox.tpl" field=$simple_shortening}} {{include file="field_checkbox.tpl" field=$attach_link_title}} - {{include file="field_checkbox.tpl" field=$ostatus_autofriend}} - {{$default_group nofilter}} {{include file="field_input.tpl" field=$legacy_contact}} <p><a href="{{$repair_ostatus_url}}">{{$repair_ostatus_text}}</a></p> diff --git a/view/theme/frio/templates/settings/connectors.tpl b/view/theme/frio/templates/settings/connectors.tpl index 88e4977e1..81d5219e8 100644 --- a/view/theme/frio/templates/settings/connectors.tpl +++ b/view/theme/frio/templates/settings/connectors.tpl @@ -28,10 +28,6 @@ {{include file="field_checkbox.tpl" field=$attach_link_title}} - {{include file="field_checkbox.tpl" field=$ostatus_autofriend}} - - {{$default_group nofilter}} - {{include file="field_input.tpl" field=$legacy_contact}} <p><a href="{{$repair_ostatus_url}}">{{$repair_ostatus_text}}</a></p> From 267b652857f09e73d06946c82788852e3c846838 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Tue, 13 Jul 2021 08:30:05 +0000 Subject: [PATCH 074/108] Improve how shared posting look on mobile apps --- src/Content/Text/BBCode.php | 2 +- src/Object/Api/Mastodon/Status.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 5f9a3ee78..1de3c0a68 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1057,7 +1057,7 @@ class BBCode switch ($simplehtml) { case self::API: $text = ($is_quote_share? '<br>' : '') . - '<p><b><a href="' . $attributes['link'] . '">' . html_entity_decode('♲ ', ENT_QUOTES, 'UTF-8') . ' ' . $author_contact['addr'] . "</a>:</b> </p>\n" . + '<b><a href="' . $attributes['link'] . '">' . html_entity_decode('♲ ', ENT_QUOTES, 'UTF-8') . ' ' . $author_contact['addr'] . "</a>:</b><br>\n" . '<blockquote class="shared_content">' . $content . '</blockquote>'; break; case self::DIASPORA: diff --git a/src/Object/Api/Mastodon/Status.php b/src/Object/Api/Mastodon/Status.php index 90e8732ce..468126b4e 100644 --- a/src/Object/Api/Mastodon/Status.php +++ b/src/Object/Api/Mastodon/Status.php @@ -131,7 +131,7 @@ class Status extends BaseDataTransferObject $this->muted = $userAttributes->muted; $this->bookmarked = $userAttributes->bookmarked; $this->pinned = $userAttributes->pinned; - $this->content = BBCode::convertForUriId($item['uri-id'], ($item['raw-body'] ?? $item['body']), BBCode::EXTERNAL); + $this->content = BBCode::convertForUriId($item['uri-id'], ($item['raw-body'] ?? $item['body']), BBCode::API); $this->reblog = $reblog; $this->application = $application->toArray(); $this->account = $account->toArray(); From 875a6b81eff1efe5847e560f0582b01ccf17a10d Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Tue, 13 Jul 2021 14:40:10 +0000 Subject: [PATCH 075/108] Improve links for API --- src/Content/Text/BBCode.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 1de3c0a68..d4ed50499 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -417,9 +417,9 @@ class BBCode if (empty($attach_data['url'])) { return $match[0]; } elseif (empty($attach_data['title']) || $no_link_desc) { - return "\n[url]" . $attach_data['url'] . "[/url]\n"; + return " \n[url]" . $attach_data['url'] . "[/url]\n"; } else { - return "\n[url=" . $attach_data['url'] . ']' . $attach_data['title'] . "[/url]\n"; + return " \n[url=" . $attach_data['url'] . ']' . $attach_data['title'] . "[/url]\n"; } }, $body); } @@ -1431,12 +1431,9 @@ class BBCode } while ($oldtext != $text); } - // Add HTML new lines - $text = str_replace("\n", '<br>', $text); - /// @todo Have a closer look at the different html modes // Handle attached links or videos - if ($simple_html == self::ACTIVITYPUB) { + if (in_array($simple_html, [self::API, self::ACTIVITYPUB])) { $text = self::removeAttachment($text); } elseif (!in_array($simple_html, [self::INTERNAL, self::EXTERNAL, self::CONNECTORS])) { $text = self::removeAttachment($text, true); @@ -1444,6 +1441,9 @@ class BBCode $text = self::convertAttachment($text, $simple_html, $try_oembed, [], $uriid); } + // Add HTML new lines + $text = str_replace("\n", '<br>', $text); + $nosmile = strpos($text, '[nosmile]') !== false; $text = str_replace('[nosmile]', '', $text); @@ -1749,7 +1749,7 @@ class BBCode } if (!$for_plaintext) { - if (in_array($simple_html, [self::OSTATUS, self::ACTIVITYPUB])) { + if (in_array($simple_html, [self::OSTATUS, self::API, self::ACTIVITYPUB])) { $text = preg_replace_callback("/\[url\](.*?)\[\/url\]/ism", 'self::convertUrlForActivityPubCallback', $text); $text = preg_replace_callback("/\[url\=(.*?)\](.*?)\[\/url\]/ism", 'self::convertUrlForActivityPubCallback', $text); } @@ -1782,7 +1782,7 @@ class BBCode $text = preg_replace("/#\[url\=.*?\]\^\[\/url\]\[url\=(.*?)\](.*?)\[\/url\]/i", "[bookmark=$1]$2[/bookmark]", $text); - if (in_array($simple_html, [self::API, self::OSTATUS, self::TWITTER])) { + if (in_array($simple_html, [self::OSTATUS, self::TWITTER])) { $text = preg_replace_callback("/([^#@!])\[url\=([^\]]*)\](.*?)\[\/url\]/ism", "self::expandLinksCallback", $text); //$Text = preg_replace("/[^#@!]\[url\=([^\]]*)\](.*?)\[\/url\]/ism", ' $2 [url]$1[/url]', $Text); $text = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", ' $2 [url]$1[/url]',$text); @@ -1821,7 +1821,7 @@ class BBCode * - [url=<anything>]#<term>[/url] */ $text = preg_replace_callback("/(?:#\[url\=[^\[\]]*\]|\[url\=[^\[\]]*\]#)(.*?)\[\/url\]/ism", function($matches) use ($simple_html) { - if ($simple_html == BBCode::ACTIVITYPUB) { + if ($simple_html == self::ACTIVITYPUB) { return '<a href="' . DI::baseUrl() . '/search?tag=' . rawurlencode($matches[1]) . '" data-tag="' . XML::escape($matches[1]) . '" rel="tag ugc">#' . XML::escape($matches[1]) . '</a>'; @@ -2115,7 +2115,7 @@ class BBCode { $ret = []; - BBCode::performWithEscapedTags($string, ['noparse', 'pre', 'code', 'img'], function ($string) use (&$ret) { + self::performWithEscapedTags($string, ['noparse', 'pre', 'code', 'img'], function ($string) use (&$ret) { // Convert hashtag links to hashtags $string = preg_replace('/#\[url\=([^\[\]]*)\](.*?)\[\/url\]/ism', '#$2 ', $string); @@ -2222,8 +2222,8 @@ class BBCode */ public static function setMentions($body, $profile_uid = 0, $network = '') { - BBCode::performWithEscapedTags($body, ['noparse', 'pre', 'code', 'img'], function ($body) use ($profile_uid, $network) { - $tags = BBCode::getTags($body); + self::performWithEscapedTags($body, ['noparse', 'pre', 'code', 'img'], function ($body) use ($profile_uid, $network) { + $tags = self::getTags($body); $tagged = []; $inform = ''; From ff8f350a4294a5589686810ae3766c7e4d4b0bf0 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Tue, 13 Jul 2021 20:37:06 +0000 Subject: [PATCH 076/108] Change the BBCode version --- src/Content/Text/BBCode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index d4ed50499..17e630a8f 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -51,7 +51,7 @@ use Friendica\Util\XML; class BBCode { // Update this value to the current date whenever changes are made to BBCode::convert - const VERSION = '2021-05-21'; + const VERSION = '2021-07-13'; const INTERNAL = 0; const EXTERNAL = 1; From 552642160787950c8046fd3311a1bb91a62c937e Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Mon, 12 Jul 2021 14:11:51 +0000 Subject: [PATCH 077/108] Issue 10491: Possibility for simple shortening added --- mod/settings.php | 3 +++ src/Content/Text/Plaintext.php | 12 +++++++++--- view/templates/settings/connectors.tpl | 1 + view/theme/frio/templates/settings/connectors.tpl | 2 ++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/mod/settings.php b/mod/settings.php index e042ed8e8..c9350e68e 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -137,6 +137,7 @@ function settings_post(App $a) DI::pConfig()->set(local_user(), 'system', 'accept_only_sharer', intval($_POST['accept_only_sharer'])); DI::pConfig()->set(local_user(), 'system', 'disable_cw', intval($_POST['disable_cw'])); DI::pConfig()->set(local_user(), 'system', 'no_intelligent_shortening', intval($_POST['no_intelligent_shortening'])); + DI::pConfig()->set(local_user(), 'system', 'simple_shortening', intval($_POST['simple_shortening'])); DI::pConfig()->set(local_user(), 'system', 'attach_link_title', intval($_POST['attach_link_title'])); DI::pConfig()->set(local_user(), 'system', 'ostatus_autofriend', intval($_POST['snautofollow'])); DI::pConfig()->set(local_user(), 'ostatus', 'default_group', $_POST['group-selection']); @@ -546,6 +547,7 @@ function settings_content(App $a) $accept_only_sharer = intval(DI::pConfig()->get(local_user(), 'system', 'accept_only_sharer')); $disable_cw = intval(DI::pConfig()->get(local_user(), 'system', 'disable_cw')); $no_intelligent_shortening = intval(DI::pConfig()->get(local_user(), 'system', 'no_intelligent_shortening')); + $simple_shortening = intval(DI::pConfig()->get(local_user(), 'system', 'simple_shortening')); $attach_link_title = intval(DI::pConfig()->get(local_user(), 'system', 'attach_link_title')); $ostatus_autofriend = intval(DI::pConfig()->get(local_user(), 'system', 'ostatus_autofriend')); $default_group = DI::pConfig()->get(local_user(), 'ostatus', 'default_group'); @@ -612,6 +614,7 @@ function settings_content(App $a) '$accept_only_sharer' => ['accept_only_sharer', DI::l10n()->t('Accept only top level posts by contacts you follow'), $accept_only_sharer, DI::l10n()->t('The system does an auto completion of threads when a comment arrives. This has got the side effect that you can receive posts that had been started by a non-follower but had been commented by someone you follow. This setting deactivates this behaviour. When activated, you strictly only will receive posts from people you really do follow.')], '$disable_cw' => ['disable_cw', DI::l10n()->t('Disable Content Warning'), $disable_cw, DI::l10n()->t('Users on networks like Mastodon or Pleroma are able to set a content warning field which collapse their post by default. This disables the automatic collapsing and sets the content warning as the post title. Doesn\'t affect any other content filtering you eventually set up.')], '$no_intelligent_shortening' => ['no_intelligent_shortening', DI::l10n()->t('Disable intelligent shortening'), $no_intelligent_shortening, DI::l10n()->t('Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post.')], + '$simple_shortening' => ['simple_shortening', DI::l10n()->t('Enable simple text shortening'), $simple_shortening, DI::l10n()->t('Normally the system shortens posts at the next line feed. If this option is enabled then the system will shorten the text at the maximum character limit.')], '$attach_link_title' => ['attach_link_title', DI::l10n()->t('Attach the link title'), $attach_link_title, DI::l10n()->t('When activated, the title of the attached link will be added as a title on posts to Diaspora. This is mostly helpful with "remote-self" contacts that share feed content.')], '$ostatus_autofriend' => ['snautofollow', DI::l10n()->t("Automatically follow any GNU Social \x28OStatus\x29 followers/mentioners"), $ostatus_autofriend, DI::l10n()->t('If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user.')], '$default_group' => Group::displayGroupSelection(local_user(), $default_group, DI::l10n()->t("Default group for OStatus contacts")), diff --git a/src/Content/Text/Plaintext.php b/src/Content/Text/Plaintext.php index 1c602b2bf..e635d727e 100644 --- a/src/Content/Text/Plaintext.php +++ b/src/Content/Text/Plaintext.php @@ -31,16 +31,22 @@ class Plaintext * * @param string $msg * @param int $limit + * @param int $uid * @return string * * @todo For Twitter URLs aren't shortened, but they have to be calculated as if. */ - public static function shorten($msg, $limit) + public static function shorten(string $msg, int $limit, int $uid = 0):string { + $ellipsis = html_entity_decode("…", ENT_QUOTES, 'UTF-8'); + + if (!empty($uid) && DI::pConfig()->get($uid, 'system', 'simple_shortening')) { + return iconv_substr(iconv_substr(trim($msg), 0, $limit, "UTF-8"), 0, -3, "UTF-8") . $ellipsis; + } + $lines = explode("\n", $msg); $msg = ""; $recycle = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8'); - $ellipsis = html_entity_decode("…", ENT_QUOTES, 'UTF-8'); foreach ($lines as $row => $line) { if (iconv_strlen(trim($msg . "\n" . $line), "UTF-8") <= $limit) { $msg = trim($msg . "\n" . $line); @@ -241,7 +247,7 @@ class Plaintext } elseif (DI::pConfig()->get($item['uid'], 'system', 'no_intelligent_shortening')) { $post['url'] = $item['plink']; } - $msg = self::shorten($msg, $limit); + $msg = self::shorten($msg, $limit, $item['uid']); } } diff --git a/view/templates/settings/connectors.tpl b/view/templates/settings/connectors.tpl index 08452b124..ef9cc2b95 100644 --- a/view/templates/settings/connectors.tpl +++ b/view/templates/settings/connectors.tpl @@ -14,6 +14,7 @@ {{include file="field_checkbox.tpl" field=$accept_only_sharer}} {{include file="field_checkbox.tpl" field=$disable_cw}} {{include file="field_checkbox.tpl" field=$no_intelligent_shortening}} + {{include file="field_checkbox.tpl" field=$simple_shortening}} {{include file="field_checkbox.tpl" field=$attach_link_title}} {{include file="field_checkbox.tpl" field=$ostatus_autofriend}} {{$default_group nofilter}} diff --git a/view/theme/frio/templates/settings/connectors.tpl b/view/theme/frio/templates/settings/connectors.tpl index 6818c66bd..88e4977e1 100644 --- a/view/theme/frio/templates/settings/connectors.tpl +++ b/view/theme/frio/templates/settings/connectors.tpl @@ -24,6 +24,8 @@ {{include file="field_checkbox.tpl" field=$no_intelligent_shortening}} + {{include file="field_checkbox.tpl" field=$simple_shortening}} + {{include file="field_checkbox.tpl" field=$attach_link_title}} {{include file="field_checkbox.tpl" field=$ostatus_autofriend}} From 708d7220acc7118db03bf6b01696d88ffc31c29d Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Mon, 12 Jul 2021 14:20:10 +0000 Subject: [PATCH 078/108] Added messages.po --- view/lang/C/messages.po | 766 ++++++++++++++++++++-------------------- 1 file changed, 388 insertions(+), 378 deletions(-) diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index e565fb164..6a0ce1f50 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2021.09-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-07-08 15:39+0000\n" +"POT-Creation-Date: 2021-07-12 14:10+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -49,178 +49,178 @@ msgstr "" msgid "Profile Photos" msgstr "" -#: include/conversation.php:196 +#: include/conversation.php:106 #, php-format msgid "%1$s poked %2$s" msgstr "" -#: include/conversation.php:228 src/Model/Item.php:2606 +#: include/conversation.php:138 src/Model/Item.php:2647 msgid "event" msgstr "" -#: include/conversation.php:231 include/conversation.php:240 mod/tagger.php:90 +#: include/conversation.php:141 include/conversation.php:150 mod/tagger.php:90 msgid "status" msgstr "" -#: include/conversation.php:236 mod/tagger.php:90 src/Model/Item.php:2608 +#: include/conversation.php:146 mod/tagger.php:90 src/Model/Item.php:2649 msgid "photo" msgstr "" -#: include/conversation.php:250 mod/tagger.php:123 +#: include/conversation.php:160 mod/tagger.php:123 #, php-format msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" -#: include/conversation.php:565 mod/photos.php:1469 src/Object/Post.php:226 +#: include/conversation.php:468 mod/photos.php:1469 src/Object/Post.php:226 msgid "Select" msgstr "" -#: include/conversation.php:566 mod/photos.php:1470 mod/settings.php:636 +#: include/conversation.php:469 mod/photos.php:1470 mod/settings.php:639 #: src/Module/Admin/Users/Active.php:139 src/Module/Admin/Users/Blocked.php:140 #: src/Module/Admin/Users/Index.php:153 src/Module/Contact.php:894 #: src/Module/Contact.php:1198 msgid "Delete" msgstr "" -#: include/conversation.php:601 src/Object/Post.php:453 src/Object/Post.php:454 +#: include/conversation.php:504 src/Object/Post.php:453 src/Object/Post.php:454 #, php-format msgid "View %s's profile @ %s" msgstr "" -#: include/conversation.php:614 src/Object/Post.php:441 +#: include/conversation.php:517 src/Object/Post.php:441 msgid "Categories:" msgstr "" -#: include/conversation.php:615 src/Object/Post.php:442 +#: include/conversation.php:518 src/Object/Post.php:442 msgid "Filed under:" msgstr "" -#: include/conversation.php:622 src/Object/Post.php:467 +#: include/conversation.php:525 src/Object/Post.php:467 #, php-format msgid "%s from %s" msgstr "" -#: include/conversation.php:637 +#: include/conversation.php:540 msgid "View in context" msgstr "" -#: include/conversation.php:639 include/conversation.php:1223 -#: mod/editpost.php:104 mod/message.php:204 mod/message.php:374 +#: include/conversation.php:542 include/conversation.php:1126 +#: mod/editpost.php:104 mod/message.php:204 mod/message.php:369 #: mod/photos.php:1535 mod/wallmessage.php:155 src/Module/Item/Compose.php:159 #: src/Object/Post.php:501 msgid "Please wait" msgstr "" -#: include/conversation.php:703 +#: include/conversation.php:606 msgid "remove" msgstr "" -#: include/conversation.php:708 +#: include/conversation.php:611 msgid "Delete Selected Items" msgstr "" -#: include/conversation.php:743 include/conversation.php:746 -#: include/conversation.php:749 include/conversation.php:752 +#: include/conversation.php:646 include/conversation.php:649 +#: include/conversation.php:652 include/conversation.php:655 #, php-format msgid "You had been addressed (%s)." msgstr "" -#: include/conversation.php:755 +#: include/conversation.php:658 #, php-format msgid "You are following %s." msgstr "" -#: include/conversation.php:758 +#: include/conversation.php:661 msgid "Tagged" msgstr "" -#: include/conversation.php:771 include/conversation.php:1115 -#: include/conversation.php:1153 +#: include/conversation.php:674 include/conversation.php:1018 +#: include/conversation.php:1056 #, php-format msgid "%s reshared this." msgstr "" -#: include/conversation.php:773 +#: include/conversation.php:676 msgid "Reshared" msgstr "" -#: include/conversation.php:773 +#: include/conversation.php:676 #, php-format msgid "Reshared by %s <%s>" msgstr "" -#: include/conversation.php:776 +#: include/conversation.php:679 #, php-format msgid "%s is participating in this thread." msgstr "" -#: include/conversation.php:779 +#: include/conversation.php:682 msgid "Stored" msgstr "" -#: include/conversation.php:782 +#: include/conversation.php:685 msgid "Global" msgstr "" -#: include/conversation.php:785 +#: include/conversation.php:688 msgid "Relayed" msgstr "" -#: include/conversation.php:785 +#: include/conversation.php:688 #, php-format msgid "Relayed by %s <%s>" msgstr "" -#: include/conversation.php:788 +#: include/conversation.php:691 msgid "Fetched" msgstr "" -#: include/conversation.php:788 +#: include/conversation.php:691 #, php-format msgid "Fetched because of %s <%s>" msgstr "" -#: include/conversation.php:948 view/theme/frio/theme.php:323 +#: include/conversation.php:851 view/theme/frio/theme.php:323 msgid "Follow Thread" msgstr "" -#: include/conversation.php:949 src/Model/Contact.php:1002 +#: include/conversation.php:852 src/Model/Contact.php:1045 msgid "View Status" msgstr "" -#: include/conversation.php:950 include/conversation.php:972 -#: src/Model/Contact.php:928 src/Model/Contact.php:994 -#: src/Model/Contact.php:1003 src/Module/Directory.php:166 +#: include/conversation.php:853 include/conversation.php:875 +#: src/Model/Contact.php:971 src/Model/Contact.php:1037 +#: src/Model/Contact.php:1046 src/Module/Directory.php:166 #: src/Module/Settings/Profile/Index.php:224 msgid "View Profile" msgstr "" -#: include/conversation.php:951 src/Model/Contact.php:1004 +#: include/conversation.php:854 src/Model/Contact.php:1047 msgid "View Photos" msgstr "" -#: include/conversation.php:952 src/Model/Contact.php:995 -#: src/Model/Contact.php:1005 +#: include/conversation.php:855 src/Model/Contact.php:1038 +#: src/Model/Contact.php:1048 msgid "Network Posts" msgstr "" -#: include/conversation.php:953 src/Model/Contact.php:996 -#: src/Model/Contact.php:1006 +#: include/conversation.php:856 src/Model/Contact.php:1039 +#: src/Model/Contact.php:1049 msgid "View Contact" msgstr "" -#: include/conversation.php:954 src/Model/Contact.php:1008 +#: include/conversation.php:857 src/Model/Contact.php:1051 msgid "Send PM" msgstr "" -#: include/conversation.php:955 src/Module/Admin/Blocklist/Contact.php:84 +#: include/conversation.php:858 src/Module/Admin/Blocklist/Contact.php:84 #: src/Module/Admin/Users/Active.php:140 src/Module/Admin/Users/Index.php:154 #: src/Module/Contact.php:633 src/Module/Contact.php:891 #: src/Module/Contact.php:1173 msgid "Block" msgstr "" -#: include/conversation.php:956 src/Module/Contact.php:634 +#: include/conversation.php:859 src/Module/Contact.php:634 #: src/Module/Contact.php:892 src/Module/Contact.php:1181 #: src/Module/Notifications/Introductions.php:113 #: src/Module/Notifications/Introductions.php:191 @@ -228,255 +228,255 @@ msgstr "" msgid "Ignore" msgstr "" -#: include/conversation.php:960 src/Object/Post.php:428 +#: include/conversation.php:863 src/Object/Post.php:428 msgid "Languages" msgstr "" -#: include/conversation.php:964 src/Model/Contact.php:1009 +#: include/conversation.php:867 src/Model/Contact.php:1052 msgid "Poke" msgstr "" -#: include/conversation.php:969 mod/follow.php:146 src/Content/Widget.php:76 -#: src/Model/Contact.php:997 src/Model/Contact.php:1010 +#: include/conversation.php:872 mod/follow.php:146 src/Content/Widget.php:76 +#: src/Model/Contact.php:1040 src/Model/Contact.php:1053 #: view/theme/vier/theme.php:172 msgid "Connect/Follow" msgstr "" -#: include/conversation.php:1100 +#: include/conversation.php:1003 #, php-format msgid "%s likes this." msgstr "" -#: include/conversation.php:1103 +#: include/conversation.php:1006 #, php-format msgid "%s doesn't like this." msgstr "" -#: include/conversation.php:1106 +#: include/conversation.php:1009 #, php-format msgid "%s attends." msgstr "" -#: include/conversation.php:1109 +#: include/conversation.php:1012 #, php-format msgid "%s doesn't attend." msgstr "" -#: include/conversation.php:1112 +#: include/conversation.php:1015 #, php-format msgid "%s attends maybe." msgstr "" -#: include/conversation.php:1121 +#: include/conversation.php:1024 msgid "and" msgstr "" -#: include/conversation.php:1124 +#: include/conversation.php:1027 #, php-format msgid "and %d other people" msgstr "" -#: include/conversation.php:1132 +#: include/conversation.php:1035 #, php-format msgid "<span %1$s>%2$d people</span> like this" msgstr "" -#: include/conversation.php:1133 +#: include/conversation.php:1036 #, php-format msgid "%s like this." msgstr "" -#: include/conversation.php:1136 +#: include/conversation.php:1039 #, php-format msgid "<span %1$s>%2$d people</span> don't like this" msgstr "" -#: include/conversation.php:1137 +#: include/conversation.php:1040 #, php-format msgid "%s don't like this." msgstr "" -#: include/conversation.php:1140 +#: include/conversation.php:1043 #, php-format msgid "<span %1$s>%2$d people</span> attend" msgstr "" -#: include/conversation.php:1141 +#: include/conversation.php:1044 #, php-format msgid "%s attend." msgstr "" -#: include/conversation.php:1144 +#: include/conversation.php:1047 #, php-format msgid "<span %1$s>%2$d people</span> don't attend" msgstr "" -#: include/conversation.php:1145 +#: include/conversation.php:1048 #, php-format msgid "%s don't attend." msgstr "" -#: include/conversation.php:1148 +#: include/conversation.php:1051 #, php-format msgid "<span %1$s>%2$d people</span> attend maybe" msgstr "" -#: include/conversation.php:1149 +#: include/conversation.php:1052 #, php-format msgid "%s attend maybe." msgstr "" -#: include/conversation.php:1152 +#: include/conversation.php:1055 #, php-format msgid "<span %1$s>%2$d people</span> reshared this" msgstr "" -#: include/conversation.php:1182 +#: include/conversation.php:1085 msgid "Visible to <strong>everybody</strong>" msgstr "" -#: include/conversation.php:1183 src/Module/Item/Compose.php:153 +#: include/conversation.php:1086 src/Module/Item/Compose.php:153 #: src/Object/Post.php:970 msgid "Please enter a image/video/audio/webpage URL:" msgstr "" -#: include/conversation.php:1184 +#: include/conversation.php:1087 msgid "Tag term:" msgstr "" -#: include/conversation.php:1185 src/Module/Filer/SaveTag.php:69 +#: include/conversation.php:1088 src/Module/Filer/SaveTag.php:69 msgid "Save to Folder:" msgstr "" -#: include/conversation.php:1186 +#: include/conversation.php:1089 msgid "Where are you right now?" msgstr "" -#: include/conversation.php:1187 +#: include/conversation.php:1090 msgid "Delete item(s)?" msgstr "" -#: include/conversation.php:1197 +#: include/conversation.php:1100 msgid "New Post" msgstr "" -#: include/conversation.php:1200 +#: include/conversation.php:1103 msgid "Share" msgstr "" -#: include/conversation.php:1201 mod/editpost.php:89 mod/photos.php:1381 +#: include/conversation.php:1104 mod/editpost.php:89 mod/photos.php:1381 #: src/Module/Contact/Poke.php:154 src/Object/Post.php:961 msgid "Loading..." msgstr "" -#: include/conversation.php:1202 mod/editpost.php:90 mod/message.php:202 -#: mod/message.php:371 mod/wallmessage.php:153 +#: include/conversation.php:1105 mod/editpost.php:90 mod/message.php:202 +#: mod/message.php:366 mod/wallmessage.php:153 msgid "Upload photo" msgstr "" -#: include/conversation.php:1203 mod/editpost.php:91 +#: include/conversation.php:1106 mod/editpost.php:91 msgid "upload photo" msgstr "" -#: include/conversation.php:1204 mod/editpost.php:92 +#: include/conversation.php:1107 mod/editpost.php:92 msgid "Attach file" msgstr "" -#: include/conversation.php:1205 mod/editpost.php:93 +#: include/conversation.php:1108 mod/editpost.php:93 msgid "attach file" msgstr "" -#: include/conversation.php:1206 src/Module/Item/Compose.php:145 +#: include/conversation.php:1109 src/Module/Item/Compose.php:145 #: src/Object/Post.php:962 msgid "Bold" msgstr "" -#: include/conversation.php:1207 src/Module/Item/Compose.php:146 +#: include/conversation.php:1110 src/Module/Item/Compose.php:146 #: src/Object/Post.php:963 msgid "Italic" msgstr "" -#: include/conversation.php:1208 src/Module/Item/Compose.php:147 +#: include/conversation.php:1111 src/Module/Item/Compose.php:147 #: src/Object/Post.php:964 msgid "Underline" msgstr "" -#: include/conversation.php:1209 src/Module/Item/Compose.php:148 +#: include/conversation.php:1112 src/Module/Item/Compose.php:148 #: src/Object/Post.php:965 msgid "Quote" msgstr "" -#: include/conversation.php:1210 src/Module/Item/Compose.php:149 +#: include/conversation.php:1113 src/Module/Item/Compose.php:149 #: src/Object/Post.php:966 msgid "Code" msgstr "" -#: include/conversation.php:1211 src/Module/Item/Compose.php:150 +#: include/conversation.php:1114 src/Module/Item/Compose.php:150 #: src/Object/Post.php:967 msgid "Image" msgstr "" -#: include/conversation.php:1212 src/Module/Item/Compose.php:151 +#: include/conversation.php:1115 src/Module/Item/Compose.php:151 #: src/Object/Post.php:968 msgid "Link" msgstr "" -#: include/conversation.php:1213 src/Module/Item/Compose.php:152 +#: include/conversation.php:1116 src/Module/Item/Compose.php:152 #: src/Object/Post.php:969 msgid "Link or Media" msgstr "" -#: include/conversation.php:1214 +#: include/conversation.php:1117 msgid "Video" msgstr "" -#: include/conversation.php:1215 mod/editpost.php:100 +#: include/conversation.php:1118 mod/editpost.php:100 #: src/Module/Item/Compose.php:155 msgid "Set your location" msgstr "" -#: include/conversation.php:1216 mod/editpost.php:101 +#: include/conversation.php:1119 mod/editpost.php:101 msgid "set location" msgstr "" -#: include/conversation.php:1217 mod/editpost.php:102 +#: include/conversation.php:1120 mod/editpost.php:102 msgid "Clear browser location" msgstr "" -#: include/conversation.php:1218 mod/editpost.php:103 +#: include/conversation.php:1121 mod/editpost.php:103 msgid "clear location" msgstr "" -#: include/conversation.php:1220 mod/editpost.php:117 +#: include/conversation.php:1123 mod/editpost.php:117 #: src/Module/Item/Compose.php:160 msgid "Set title" msgstr "" -#: include/conversation.php:1222 mod/editpost.php:119 +#: include/conversation.php:1125 mod/editpost.php:119 #: src/Module/Item/Compose.php:161 msgid "Categories (comma-separated list)" msgstr "" -#: include/conversation.php:1224 mod/editpost.php:105 +#: include/conversation.php:1127 mod/editpost.php:105 msgid "Permission settings" msgstr "" -#: include/conversation.php:1225 mod/editpost.php:134 mod/events.php:578 +#: include/conversation.php:1128 mod/editpost.php:134 mod/events.php:578 #: mod/photos.php:968 mod/photos.php:1334 msgid "Permissions" msgstr "" -#: include/conversation.php:1234 mod/editpost.php:114 +#: include/conversation.php:1137 mod/editpost.php:114 msgid "Public post" msgstr "" -#: include/conversation.php:1238 mod/editpost.php:125 mod/events.php:573 +#: include/conversation.php:1141 mod/editpost.php:125 mod/events.php:573 #: mod/photos.php:1380 mod/photos.php:1437 mod/photos.php:1512 #: src/Module/Item/Compose.php:154 src/Object/Post.php:971 msgid "Preview" msgstr "" -#: include/conversation.php:1242 mod/dfrn_request.php:642 mod/editpost.php:128 +#: include/conversation.php:1145 mod/dfrn_request.php:642 mod/editpost.php:128 #: mod/fbrowser.php:105 mod/fbrowser.php:134 mod/follow.php:152 #: mod/photos.php:1036 mod/photos.php:1142 mod/tagrm.php:37 mod/tagrm.php:129 #: mod/unfollow.php:100 src/Module/Contact.php:467 @@ -484,17 +484,17 @@ msgstr "" msgid "Cancel" msgstr "" -#: include/conversation.php:1249 mod/editpost.php:132 src/Model/Profile.php:510 +#: include/conversation.php:1152 mod/editpost.php:132 src/Model/Profile.php:510 #: src/Module/Contact.php:344 msgid "Message" msgstr "" -#: include/conversation.php:1250 mod/editpost.php:133 +#: include/conversation.php:1153 mod/editpost.php:133 #: src/Module/Settings/TwoFactor/Trusted.php:101 msgid "Browser" msgstr "" -#: include/conversation.php:1252 mod/editpost.php:136 +#: include/conversation.php:1155 mod/editpost.php:136 msgid "Open Compose page" msgstr "" @@ -828,7 +828,7 @@ msgstr "" #: mod/item.php:190 mod/item.php:917 mod/message.php:69 mod/message.php:112 #: mod/notes.php:44 mod/ostatus_subscribe.php:30 mod/photos.php:175 #: mod/photos.php:921 mod/repair_ostatus.php:31 mod/settings.php:47 -#: mod/settings.php:65 mod/settings.php:475 mod/suggest.php:34 +#: mod/settings.php:65 mod/settings.php:476 mod/suggest.php:34 #: mod/uimport.php:32 mod/unfollow.php:35 mod/unfollow.php:50 #: mod/unfollow.php:82 mod/wall_attach.php:78 mod/wall_attach.php:81 #: mod/wall_upload.php:99 mod/wall_upload.php:102 mod/wallmessage.php:35 @@ -926,21 +926,21 @@ msgstr "" msgid "Next" msgstr "" -#: mod/cal.php:280 mod/events.php:426 src/Model/Event.php:464 +#: mod/cal.php:280 mod/events.php:426 src/Model/Event.php:466 msgid "today" msgstr "" -#: mod/cal.php:281 mod/events.php:427 src/Model/Event.php:465 +#: mod/cal.php:281 mod/events.php:427 src/Model/Event.php:467 #: src/Util/Temporal.php:330 msgid "month" msgstr "" -#: mod/cal.php:282 mod/events.php:428 src/Model/Event.php:466 +#: mod/cal.php:282 mod/events.php:428 src/Model/Event.php:468 #: src/Util/Temporal.php:331 msgid "week" msgstr "" -#: mod/cal.php:283 mod/events.php:429 src/Model/Event.php:467 +#: mod/cal.php:283 mod/events.php:429 src/Model/Event.php:469 #: src/Util/Temporal.php:332 msgid "day" msgstr "" @@ -1115,11 +1115,11 @@ msgstr "" msgid "Invalid profile URL." msgstr "" -#: mod/dfrn_request.php:355 src/Model/Contact.php:2284 +#: mod/dfrn_request.php:355 src/Model/Contact.php:2341 msgid "Disallowed profile URL." msgstr "" -#: mod/dfrn_request.php:361 src/Model/Contact.php:2289 +#: mod/dfrn_request.php:361 src/Model/Contact.php:2346 #: src/Module/Friendica.php:80 msgid "Blocked domain" msgstr "" @@ -1236,7 +1236,7 @@ msgstr "" msgid "Save" msgstr "" -#: mod/editpost.php:94 mod/message.php:203 mod/message.php:372 +#: mod/editpost.php:94 mod/message.php:203 mod/message.php:367 #: mod/wallmessage.php:154 msgid "Insert web link" msgstr "" @@ -1328,8 +1328,8 @@ msgstr "" msgid "Description:" msgstr "" -#: mod/events.php:563 src/Model/Event.php:84 src/Model/Event.php:111 -#: src/Model/Event.php:473 src/Model/Event.php:960 src/Model/Profile.php:420 +#: mod/events.php:563 src/Model/Event.php:86 src/Model/Event.php:113 +#: src/Model/Event.php:475 src/Model/Event.php:962 src/Model/Profile.php:420 #: src/Module/Contact.php:654 src/Module/Directory.php:156 #: src/Module/Notifications/Introductions.php:172 #: src/Module/Profile/Profile.php:190 @@ -1344,7 +1344,7 @@ msgstr "" msgid "Share this event" msgstr "" -#: mod/events.php:575 mod/message.php:205 mod/message.php:373 +#: mod/events.php:575 mod/message.php:205 mod/message.php:368 #: mod/photos.php:950 mod/photos.php:1053 mod/photos.php:1338 #: mod/photos.php:1379 mod/photos.php:1436 mod/photos.php:1511 #: src/Module/Admin/Item/Source.php:65 src/Module/Contact.php:612 @@ -1657,15 +1657,15 @@ msgstr "" msgid "Send Private Message" msgstr "" -#: mod/message.php:194 mod/message.php:363 mod/wallmessage.php:144 +#: mod/message.php:194 mod/message.php:358 mod/wallmessage.php:144 msgid "To:" msgstr "" -#: mod/message.php:195 mod/message.php:364 mod/wallmessage.php:145 +#: mod/message.php:195 mod/message.php:359 mod/wallmessage.php:145 msgid "Subject:" msgstr "" -#: mod/message.php:199 mod/message.php:367 mod/wallmessage.php:151 +#: mod/message.php:199 mod/message.php:362 mod/wallmessage.php:151 #: src/Module/Invite.php:167 msgid "Your message:" msgstr "" @@ -1678,44 +1678,44 @@ msgstr "" msgid "Message not available." msgstr "" -#: mod/message.php:339 +#: mod/message.php:334 msgid "Delete message" msgstr "" -#: mod/message.php:341 mod/message.php:473 +#: mod/message.php:336 mod/message.php:468 msgid "D, d M Y - g:i A" msgstr "" -#: mod/message.php:356 mod/message.php:470 +#: mod/message.php:351 mod/message.php:465 msgid "Delete conversation" msgstr "" -#: mod/message.php:358 +#: mod/message.php:353 msgid "" "No secure communications available. You <strong>may</strong> be able to " "respond from the sender's profile page." msgstr "" -#: mod/message.php:362 +#: mod/message.php:357 msgid "Send Reply" msgstr "" -#: mod/message.php:444 +#: mod/message.php:439 #, php-format msgid "Unknown sender - %s" msgstr "" -#: mod/message.php:446 +#: mod/message.php:441 #, php-format msgid "You and %s" msgstr "" -#: mod/message.php:448 +#: mod/message.php:443 #, php-format msgid "%s and You" msgstr "" -#: mod/message.php:476 +#: mod/message.php:471 #, php-format msgid "%d message" msgid_plural "%d messages" @@ -2073,75 +2073,75 @@ msgstr "" msgid "Update" msgstr "" -#: mod/settings.php:200 +#: mod/settings.php:201 msgid "Failed to connect with email account using the settings provided." msgstr "" -#: mod/settings.php:229 +#: mod/settings.php:230 msgid "Contact CSV file upload error" msgstr "" -#: mod/settings.php:248 +#: mod/settings.php:249 msgid "Importing Contacts done" msgstr "" -#: mod/settings.php:261 +#: mod/settings.php:262 msgid "Relocate message has been send to your contacts" msgstr "" -#: mod/settings.php:273 +#: mod/settings.php:274 msgid "Passwords do not match." msgstr "" -#: mod/settings.php:281 src/Console/User.php:210 +#: mod/settings.php:282 src/Console/User.php:210 msgid "Password update failed. Please try again." msgstr "" -#: mod/settings.php:284 src/Console/User.php:213 +#: mod/settings.php:285 src/Console/User.php:213 msgid "Password changed." msgstr "" -#: mod/settings.php:287 +#: mod/settings.php:288 msgid "Password unchanged." msgstr "" -#: mod/settings.php:372 +#: mod/settings.php:373 msgid "Please use a shorter name." msgstr "" -#: mod/settings.php:375 +#: mod/settings.php:376 msgid "Name too short." msgstr "" -#: mod/settings.php:382 +#: mod/settings.php:383 msgid "Wrong Password." msgstr "" -#: mod/settings.php:387 +#: mod/settings.php:388 msgid "Invalid email." msgstr "" -#: mod/settings.php:393 +#: mod/settings.php:394 msgid "Cannot change to that email." msgstr "" -#: mod/settings.php:431 +#: mod/settings.php:432 msgid "Private forum has no privacy permissions. Using default privacy group." msgstr "" -#: mod/settings.php:434 +#: mod/settings.php:435 msgid "Private forum has no privacy permissions and no default privacy group." msgstr "" -#: mod/settings.php:453 +#: mod/settings.php:454 msgid "Settings were not updated." msgstr "" -#: mod/settings.php:494 +#: mod/settings.php:495 msgid "Connected Apps" msgstr "" -#: mod/settings.php:495 src/Module/Admin/Blocklist/Contact.php:90 +#: mod/settings.php:496 src/Module/Admin/Blocklist/Contact.php:90 #: src/Module/Admin/Users/Active.php:129 src/Module/Admin/Users/Blocked.php:130 #: src/Module/Admin/Users/Create.php:71 src/Module/Admin/Users/Deleted.php:88 #: src/Module/Admin/Users/Index.php:142 src/Module/Admin/Users/Index.php:162 @@ -2149,31 +2149,31 @@ msgstr "" msgid "Name" msgstr "" -#: mod/settings.php:496 src/Content/Nav.php:216 +#: mod/settings.php:497 src/Content/Nav.php:216 msgid "Home Page" msgstr "" -#: mod/settings.php:497 src/Module/Admin/Queue.php:78 +#: mod/settings.php:498 src/Module/Admin/Queue.php:78 msgid "Created" msgstr "" -#: mod/settings.php:498 +#: mod/settings.php:499 msgid "Remove authorization" msgstr "" -#: mod/settings.php:516 +#: mod/settings.php:517 msgid "Addon Settings" msgstr "" -#: mod/settings.php:517 +#: mod/settings.php:518 msgid "No Addon settings configured" msgstr "" -#: mod/settings.php:538 +#: mod/settings.php:539 msgid "Additional Features" msgstr "" -#: mod/settings.php:540 mod/settings.php:638 mod/settings.php:773 +#: mod/settings.php:541 mod/settings.php:641 mod/settings.php:776 #: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87 #: src/Module/Admin/Logs/Settings.php:82 src/Module/Admin/Site.php:568 #: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:66 @@ -2181,48 +2181,48 @@ msgstr "" msgid "Save Settings" msgstr "" -#: mod/settings.php:563 +#: mod/settings.php:565 msgid "Diaspora (Socialhome, Hubzilla)" msgstr "" -#: mod/settings.php:563 mod/settings.php:564 +#: mod/settings.php:565 mod/settings.php:566 msgid "enabled" msgstr "" -#: mod/settings.php:563 mod/settings.php:564 +#: mod/settings.php:565 mod/settings.php:566 msgid "disabled" msgstr "" -#: mod/settings.php:563 mod/settings.php:564 +#: mod/settings.php:565 mod/settings.php:566 #, php-format msgid "Built-in support for %s connectivity is %s" msgstr "" -#: mod/settings.php:564 +#: mod/settings.php:566 msgid "OStatus (GNU Social)" msgstr "" -#: mod/settings.php:595 +#: mod/settings.php:597 msgid "Email access is disabled on this site." msgstr "" -#: mod/settings.php:600 mod/settings.php:636 +#: mod/settings.php:602 mod/settings.php:639 msgid "None" msgstr "" -#: mod/settings.php:606 src/Module/BaseSettings.php:80 +#: mod/settings.php:608 src/Module/BaseSettings.php:80 msgid "Social Networks" msgstr "" -#: mod/settings.php:611 +#: mod/settings.php:613 msgid "General Social Media Settings" msgstr "" -#: mod/settings.php:612 +#: mod/settings.php:614 msgid "Accept only top level posts by contacts you follow" msgstr "" -#: mod/settings.php:612 +#: mod/settings.php:614 msgid "" "The system does an auto completion of threads when a comment arrives. This " "has got the side effect that you can receive posts that had been started by " @@ -2231,11 +2231,11 @@ msgid "" "posts from people you really do follow." msgstr "" -#: mod/settings.php:613 +#: mod/settings.php:615 msgid "Disable Content Warning" msgstr "" -#: mod/settings.php:613 +#: mod/settings.php:615 msgid "" "Users on networks like Mastodon or Pleroma are able to set a content warning " "field which collapse their post by default. This disables the automatic " @@ -2243,227 +2243,237 @@ msgid "" "any other content filtering you eventually set up." msgstr "" -#: mod/settings.php:614 +#: mod/settings.php:616 msgid "Disable intelligent shortening" msgstr "" -#: mod/settings.php:614 +#: mod/settings.php:616 msgid "" "Normally the system tries to find the best link to add to shortened posts. " "If this option is enabled then every shortened post will always point to the " "original friendica post." msgstr "" -#: mod/settings.php:615 +#: mod/settings.php:617 +msgid "Enable simple text shortening" +msgstr "" + +#: mod/settings.php:617 +msgid "" +"Normally the system shortens posts at the next line feed. If this option is " +"enabled then the system will shorten the text at the maximum character limit." +msgstr "" + +#: mod/settings.php:618 msgid "Attach the link title" msgstr "" -#: mod/settings.php:615 +#: mod/settings.php:618 msgid "" "When activated, the title of the attached link will be added as a title on " "posts to Diaspora. This is mostly helpful with \"remote-self\" contacts that " "share feed content." msgstr "" -#: mod/settings.php:616 +#: mod/settings.php:619 msgid "Automatically follow any GNU Social (OStatus) followers/mentioners" msgstr "" -#: mod/settings.php:616 +#: mod/settings.php:619 msgid "" "If you receive a message from an unknown OStatus user, this option decides " "what to do. If it is checked, a new contact will be created for every " "unknown user." msgstr "" -#: mod/settings.php:617 +#: mod/settings.php:620 msgid "Default group for OStatus contacts" msgstr "" -#: mod/settings.php:618 +#: mod/settings.php:621 msgid "Your legacy GNU Social account" msgstr "" -#: mod/settings.php:618 +#: mod/settings.php:621 msgid "" "If you enter your old GNU Social/Statusnet account name here (in the format " "user@domain.tld), your contacts will be added automatically. The field will " "be emptied when done." msgstr "" -#: mod/settings.php:621 +#: mod/settings.php:624 msgid "Repair OStatus subscriptions" msgstr "" -#: mod/settings.php:625 +#: mod/settings.php:628 msgid "Email/Mailbox Setup" msgstr "" -#: mod/settings.php:626 +#: mod/settings.php:629 msgid "" "If you wish to communicate with email contacts using this service " "(optional), please specify how to connect to your mailbox." msgstr "" -#: mod/settings.php:627 +#: mod/settings.php:630 msgid "Last successful email check:" msgstr "" -#: mod/settings.php:629 +#: mod/settings.php:632 msgid "IMAP server name:" msgstr "" -#: mod/settings.php:630 +#: mod/settings.php:633 msgid "IMAP port:" msgstr "" -#: mod/settings.php:631 +#: mod/settings.php:634 msgid "Security:" msgstr "" -#: mod/settings.php:632 +#: mod/settings.php:635 msgid "Email login name:" msgstr "" -#: mod/settings.php:633 +#: mod/settings.php:636 msgid "Email password:" msgstr "" -#: mod/settings.php:634 +#: mod/settings.php:637 msgid "Reply-to address:" msgstr "" -#: mod/settings.php:635 +#: mod/settings.php:638 msgid "Send public posts to all email contacts:" msgstr "" -#: mod/settings.php:636 +#: mod/settings.php:639 msgid "Action after import:" msgstr "" -#: mod/settings.php:636 src/Content/Nav.php:284 +#: mod/settings.php:639 src/Content/Nav.php:284 msgid "Mark as seen" msgstr "" -#: mod/settings.php:636 +#: mod/settings.php:639 msgid "Move to folder" msgstr "" -#: mod/settings.php:637 +#: mod/settings.php:640 msgid "Move to folder:" msgstr "" -#: mod/settings.php:651 +#: mod/settings.php:654 msgid "Unable to find your profile. Please contact your admin." msgstr "" -#: mod/settings.php:687 src/Content/Widget.php:536 +#: mod/settings.php:690 src/Content/Widget.php:536 msgid "Account Types" msgstr "" -#: mod/settings.php:688 +#: mod/settings.php:691 msgid "Personal Page Subtypes" msgstr "" -#: mod/settings.php:689 +#: mod/settings.php:692 msgid "Community Forum Subtypes" msgstr "" -#: mod/settings.php:696 src/Module/Admin/BaseUsers.php:106 +#: mod/settings.php:699 src/Module/Admin/BaseUsers.php:106 msgid "Personal Page" msgstr "" -#: mod/settings.php:697 +#: mod/settings.php:700 msgid "Account for a personal profile." msgstr "" -#: mod/settings.php:700 src/Module/Admin/BaseUsers.php:107 +#: mod/settings.php:703 src/Module/Admin/BaseUsers.php:107 msgid "Organisation Page" msgstr "" -#: mod/settings.php:701 +#: mod/settings.php:704 msgid "" "Account for an organisation that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:704 src/Module/Admin/BaseUsers.php:108 +#: mod/settings.php:707 src/Module/Admin/BaseUsers.php:108 msgid "News Page" msgstr "" -#: mod/settings.php:705 +#: mod/settings.php:708 msgid "" "Account for a news reflector that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:708 src/Module/Admin/BaseUsers.php:109 +#: mod/settings.php:711 src/Module/Admin/BaseUsers.php:109 msgid "Community Forum" msgstr "" -#: mod/settings.php:709 +#: mod/settings.php:712 msgid "Account for community discussions." msgstr "" -#: mod/settings.php:712 src/Module/Admin/BaseUsers.php:99 +#: mod/settings.php:715 src/Module/Admin/BaseUsers.php:99 msgid "Normal Account Page" msgstr "" -#: mod/settings.php:713 +#: mod/settings.php:716 msgid "" "Account for a regular personal profile that requires manual approval of " "\"Friends\" and \"Followers\"." msgstr "" -#: mod/settings.php:716 src/Module/Admin/BaseUsers.php:100 +#: mod/settings.php:719 src/Module/Admin/BaseUsers.php:100 msgid "Soapbox Page" msgstr "" -#: mod/settings.php:717 +#: mod/settings.php:720 msgid "" "Account for a public profile that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:720 src/Module/Admin/BaseUsers.php:101 +#: mod/settings.php:723 src/Module/Admin/BaseUsers.php:101 msgid "Public Forum" msgstr "" -#: mod/settings.php:721 +#: mod/settings.php:724 msgid "Automatically approves all contact requests." msgstr "" -#: mod/settings.php:724 src/Module/Admin/BaseUsers.php:102 +#: mod/settings.php:727 src/Module/Admin/BaseUsers.php:102 msgid "Automatic Friend Page" msgstr "" -#: mod/settings.php:725 +#: mod/settings.php:728 msgid "" "Account for a popular profile that automatically approves contact requests " "as \"Friends\"." msgstr "" -#: mod/settings.php:728 +#: mod/settings.php:731 msgid "Private Forum [Experimental]" msgstr "" -#: mod/settings.php:729 +#: mod/settings.php:732 msgid "Requires manual approval of contact requests." msgstr "" -#: mod/settings.php:740 +#: mod/settings.php:743 msgid "OpenID:" msgstr "" -#: mod/settings.php:740 +#: mod/settings.php:743 msgid "(Optional) Allow this OpenID to login to this account." msgstr "" -#: mod/settings.php:748 +#: mod/settings.php:751 msgid "Publish your profile in your local site directory?" msgstr "" -#: mod/settings.php:748 +#: mod/settings.php:751 #, php-format msgid "" "Your profile will be published in this node's <a href=\"%s\">local " @@ -2471,115 +2481,115 @@ msgid "" "system settings." msgstr "" -#: mod/settings.php:754 +#: mod/settings.php:757 #, php-format msgid "" "Your profile will also be published in the global friendica directories (e." "g. <a href=\"%s\">%s</a>)." msgstr "" -#: mod/settings.php:760 +#: mod/settings.php:763 #, php-format msgid "Your Identity Address is <strong>'%s'</strong> or '%s'." msgstr "" -#: mod/settings.php:771 +#: mod/settings.php:774 msgid "Account Settings" msgstr "" -#: mod/settings.php:779 +#: mod/settings.php:782 msgid "Password Settings" msgstr "" -#: mod/settings.php:780 src/Module/Register.php:149 +#: mod/settings.php:783 src/Module/Register.php:149 msgid "New Password:" msgstr "" -#: mod/settings.php:780 +#: mod/settings.php:783 msgid "" "Allowed characters are a-z, A-Z, 0-9 and special characters except white " "spaces, accentuated letters and colon (:)." msgstr "" -#: mod/settings.php:781 src/Module/Register.php:150 +#: mod/settings.php:784 src/Module/Register.php:150 msgid "Confirm:" msgstr "" -#: mod/settings.php:781 +#: mod/settings.php:784 msgid "Leave password fields blank unless changing" msgstr "" -#: mod/settings.php:782 +#: mod/settings.php:785 msgid "Current Password:" msgstr "" -#: mod/settings.php:782 +#: mod/settings.php:785 msgid "Your current password to confirm the changes" msgstr "" -#: mod/settings.php:783 +#: mod/settings.php:786 msgid "Password:" msgstr "" -#: mod/settings.php:783 +#: mod/settings.php:786 msgid "Your current password to confirm the changes of the email address" msgstr "" -#: mod/settings.php:786 +#: mod/settings.php:789 msgid "Delete OpenID URL" msgstr "" -#: mod/settings.php:788 +#: mod/settings.php:791 msgid "Basic Settings" msgstr "" -#: mod/settings.php:789 src/Module/Profile/Profile.php:144 +#: mod/settings.php:792 src/Module/Profile/Profile.php:144 msgid "Full Name:" msgstr "" -#: mod/settings.php:790 +#: mod/settings.php:793 msgid "Email Address:" msgstr "" -#: mod/settings.php:791 +#: mod/settings.php:794 msgid "Your Timezone:" msgstr "" -#: mod/settings.php:792 +#: mod/settings.php:795 msgid "Your Language:" msgstr "" -#: mod/settings.php:792 +#: mod/settings.php:795 msgid "" "Set the language we use to show you friendica interface and to send you " "emails" msgstr "" -#: mod/settings.php:793 +#: mod/settings.php:796 msgid "Default Post Location:" msgstr "" -#: mod/settings.php:794 +#: mod/settings.php:797 msgid "Use Browser Location:" msgstr "" -#: mod/settings.php:796 +#: mod/settings.php:799 msgid "Security and Privacy Settings" msgstr "" -#: mod/settings.php:798 +#: mod/settings.php:801 msgid "Maximum Friend Requests/Day:" msgstr "" -#: mod/settings.php:798 mod/settings.php:808 +#: mod/settings.php:801 mod/settings.php:811 msgid "(to prevent spam abuse)" msgstr "" -#: mod/settings.php:800 +#: mod/settings.php:803 msgid "Allow your profile to be searchable globally?" msgstr "" -#: mod/settings.php:800 +#: mod/settings.php:803 msgid "" "Activate this setting if you want others to easily find and follow you. Your " "profile will be searchable on remote systems. This setting also determines " @@ -2587,43 +2597,43 @@ msgid "" "indexed or not." msgstr "" -#: mod/settings.php:801 +#: mod/settings.php:804 msgid "Hide your contact/friend list from viewers of your profile?" msgstr "" -#: mod/settings.php:801 +#: mod/settings.php:804 msgid "" "A list of your contacts is displayed on your profile page. Activate this " "option to disable the display of your contact list." msgstr "" -#: mod/settings.php:802 +#: mod/settings.php:805 msgid "Hide your profile details from anonymous viewers?" msgstr "" -#: mod/settings.php:802 +#: mod/settings.php:805 msgid "" "Anonymous visitors will only see your profile picture, your display name and " "the nickname you are using on your profile page. Your public posts and " "replies will still be accessible by other means." msgstr "" -#: mod/settings.php:803 +#: mod/settings.php:806 msgid "Make public posts unlisted" msgstr "" -#: mod/settings.php:803 +#: mod/settings.php:806 msgid "" "Your public posts will not appear on the community pages or in search " "results, nor be sent to relay servers. However they can still appear on " "public feeds on remote servers." msgstr "" -#: mod/settings.php:804 +#: mod/settings.php:807 msgid "Make all posted pictures accessible" msgstr "" -#: mod/settings.php:804 +#: mod/settings.php:807 msgid "" "This option makes every posted picture accessible via the direct link. This " "is a workaround for the problem that most other networks can't handle " @@ -2631,209 +2641,209 @@ msgid "" "public on your photo albums though." msgstr "" -#: mod/settings.php:805 +#: mod/settings.php:808 msgid "Allow friends to post to your profile page?" msgstr "" -#: mod/settings.php:805 +#: mod/settings.php:808 msgid "" "Your contacts may write posts on your profile wall. These posts will be " "distributed to your contacts" msgstr "" -#: mod/settings.php:806 +#: mod/settings.php:809 msgid "Allow friends to tag your posts?" msgstr "" -#: mod/settings.php:806 +#: mod/settings.php:809 msgid "Your contacts can add additional tags to your posts." msgstr "" -#: mod/settings.php:807 +#: mod/settings.php:810 msgid "Permit unknown people to send you private mail?" msgstr "" -#: mod/settings.php:807 +#: mod/settings.php:810 msgid "" "Friendica network users may send you private messages even if they are not " "in your contact list." msgstr "" -#: mod/settings.php:808 +#: mod/settings.php:811 msgid "Maximum private messages per day from unknown people:" msgstr "" -#: mod/settings.php:810 +#: mod/settings.php:813 msgid "Default Post Permissions" msgstr "" -#: mod/settings.php:814 +#: mod/settings.php:817 msgid "Expiration settings" msgstr "" -#: mod/settings.php:815 +#: mod/settings.php:818 msgid "Automatically expire posts after this many days:" msgstr "" -#: mod/settings.php:815 +#: mod/settings.php:818 msgid "If empty, posts will not expire. Expired posts will be deleted" msgstr "" -#: mod/settings.php:816 +#: mod/settings.php:819 msgid "Expire posts" msgstr "" -#: mod/settings.php:816 +#: mod/settings.php:819 msgid "When activated, posts and comments will be expired." msgstr "" -#: mod/settings.php:817 +#: mod/settings.php:820 msgid "Expire personal notes" msgstr "" -#: mod/settings.php:817 +#: mod/settings.php:820 msgid "" "When activated, the personal notes on your profile page will be expired." msgstr "" -#: mod/settings.php:818 +#: mod/settings.php:821 msgid "Expire starred posts" msgstr "" -#: mod/settings.php:818 +#: mod/settings.php:821 msgid "" "Starring posts keeps them from being expired. That behaviour is overwritten " "by this setting." msgstr "" -#: mod/settings.php:819 +#: mod/settings.php:822 msgid "Expire photos" msgstr "" -#: mod/settings.php:819 +#: mod/settings.php:822 msgid "When activated, photos will be expired." msgstr "" -#: mod/settings.php:820 +#: mod/settings.php:823 msgid "Only expire posts by others" msgstr "" -#: mod/settings.php:820 +#: mod/settings.php:823 msgid "" "When activated, your own posts never expire. Then the settings above are " "only valid for posts you received." msgstr "" -#: mod/settings.php:823 +#: mod/settings.php:826 msgid "Notification Settings" msgstr "" -#: mod/settings.php:824 +#: mod/settings.php:827 msgid "Send a notification email when:" msgstr "" -#: mod/settings.php:825 +#: mod/settings.php:828 msgid "You receive an introduction" msgstr "" -#: mod/settings.php:826 +#: mod/settings.php:829 msgid "Your introductions are confirmed" msgstr "" -#: mod/settings.php:827 +#: mod/settings.php:830 msgid "Someone writes on your profile wall" msgstr "" -#: mod/settings.php:828 +#: mod/settings.php:831 msgid "Someone writes a followup comment" msgstr "" -#: mod/settings.php:829 +#: mod/settings.php:832 msgid "You receive a private message" msgstr "" -#: mod/settings.php:830 +#: mod/settings.php:833 msgid "You receive a friend suggestion" msgstr "" -#: mod/settings.php:831 +#: mod/settings.php:834 msgid "You are tagged in a post" msgstr "" -#: mod/settings.php:832 +#: mod/settings.php:835 msgid "You are poked/prodded/etc. in a post" msgstr "" -#: mod/settings.php:834 +#: mod/settings.php:837 msgid "Activate desktop notifications" msgstr "" -#: mod/settings.php:834 +#: mod/settings.php:837 msgid "Show desktop popup on new notifications" msgstr "" -#: mod/settings.php:836 +#: mod/settings.php:839 msgid "Text-only notification emails" msgstr "" -#: mod/settings.php:838 +#: mod/settings.php:841 msgid "Send text only notification emails, without the html part" msgstr "" -#: mod/settings.php:840 +#: mod/settings.php:843 msgid "Show detailled notifications" msgstr "" -#: mod/settings.php:842 +#: mod/settings.php:845 msgid "" "Per default, notifications are condensed to a single notification per item. " "When enabled every notification is displayed." msgstr "" -#: mod/settings.php:844 +#: mod/settings.php:847 msgid "Show notifications of ignored contacts" msgstr "" -#: mod/settings.php:846 +#: mod/settings.php:849 msgid "" "You don't see posts from ignored contacts. But you still see their comments. " "This setting controls if you want to still receive regular notifications " "that are caused by ignored contacts or not." msgstr "" -#: mod/settings.php:848 +#: mod/settings.php:851 msgid "Advanced Account/Page Type Settings" msgstr "" -#: mod/settings.php:849 +#: mod/settings.php:852 msgid "Change the behaviour of this account for special situations" msgstr "" -#: mod/settings.php:852 +#: mod/settings.php:855 msgid "Import Contacts" msgstr "" -#: mod/settings.php:853 +#: mod/settings.php:856 msgid "" "Upload a CSV file that contains the handle of your followed accounts in the " "first column you exported from the old account." msgstr "" -#: mod/settings.php:854 +#: mod/settings.php:857 msgid "Upload File" msgstr "" -#: mod/settings.php:856 +#: mod/settings.php:859 msgid "Relocate" msgstr "" -#: mod/settings.php:857 +#: mod/settings.php:860 msgid "" "If you have moved this profile from another server, and some of your " "contacts don't receive your updates, try pushing this button." msgstr "" -#: mod/settings.php:858 +#: mod/settings.php:861 msgid "Resend relocate message to contacts" msgstr "" @@ -3645,8 +3655,8 @@ msgid "" "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s" msgstr "" -#: src/Content/Text/BBCode.php:1108 src/Model/Item.php:3134 -#: src/Model/Item.php:3140 src/Model/Item.php:3141 +#: src/Content/Text/BBCode.php:1108 src/Model/Item.php:3175 +#: src/Model/Item.php:3181 src/Model/Item.php:3182 msgid "Link to source" msgstr "" @@ -3801,7 +3811,7 @@ msgstr "" msgid "Organisations" msgstr "" -#: src/Content/Widget.php:532 src/Model/Contact.php:1426 +#: src/Content/Widget.php:532 src/Model/Contact.php:1469 msgid "News" msgstr "" @@ -4187,137 +4197,137 @@ msgstr "" msgid "Could not connect to database." msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:432 +#: src/Core/L10n.php:377 src/Model/Event.php:434 #: src/Module/Settings/Display.php:178 msgid "Monday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:433 +#: src/Core/L10n.php:377 src/Model/Event.php:435 msgid "Tuesday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:434 +#: src/Core/L10n.php:377 src/Model/Event.php:436 msgid "Wednesday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:435 +#: src/Core/L10n.php:377 src/Model/Event.php:437 msgid "Thursday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:436 +#: src/Core/L10n.php:377 src/Model/Event.php:438 msgid "Friday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:437 +#: src/Core/L10n.php:377 src/Model/Event.php:439 msgid "Saturday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:431 +#: src/Core/L10n.php:377 src/Model/Event.php:433 #: src/Module/Settings/Display.php:178 msgid "Sunday" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:452 +#: src/Core/L10n.php:381 src/Model/Event.php:454 msgid "January" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:453 +#: src/Core/L10n.php:381 src/Model/Event.php:455 msgid "February" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:454 +#: src/Core/L10n.php:381 src/Model/Event.php:456 msgid "March" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:455 +#: src/Core/L10n.php:381 src/Model/Event.php:457 msgid "April" msgstr "" -#: src/Core/L10n.php:381 src/Core/L10n.php:401 src/Model/Event.php:443 +#: src/Core/L10n.php:381 src/Core/L10n.php:401 src/Model/Event.php:445 msgid "May" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:456 +#: src/Core/L10n.php:381 src/Model/Event.php:458 msgid "June" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:457 +#: src/Core/L10n.php:381 src/Model/Event.php:459 msgid "July" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:458 +#: src/Core/L10n.php:381 src/Model/Event.php:460 msgid "August" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:459 +#: src/Core/L10n.php:381 src/Model/Event.php:461 msgid "September" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:460 +#: src/Core/L10n.php:381 src/Model/Event.php:462 msgid "October" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:461 +#: src/Core/L10n.php:381 src/Model/Event.php:463 msgid "November" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:462 +#: src/Core/L10n.php:381 src/Model/Event.php:464 msgid "December" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:424 +#: src/Core/L10n.php:397 src/Model/Event.php:426 msgid "Mon" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:425 +#: src/Core/L10n.php:397 src/Model/Event.php:427 msgid "Tue" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:426 +#: src/Core/L10n.php:397 src/Model/Event.php:428 msgid "Wed" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:427 +#: src/Core/L10n.php:397 src/Model/Event.php:429 msgid "Thu" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:428 +#: src/Core/L10n.php:397 src/Model/Event.php:430 msgid "Fri" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:429 +#: src/Core/L10n.php:397 src/Model/Event.php:431 msgid "Sat" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:423 +#: src/Core/L10n.php:397 src/Model/Event.php:425 msgid "Sun" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:439 +#: src/Core/L10n.php:401 src/Model/Event.php:441 msgid "Jan" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:440 +#: src/Core/L10n.php:401 src/Model/Event.php:442 msgid "Feb" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:441 +#: src/Core/L10n.php:401 src/Model/Event.php:443 msgid "Mar" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:442 +#: src/Core/L10n.php:401 src/Model/Event.php:444 msgid "Apr" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:444 +#: src/Core/L10n.php:401 src/Model/Event.php:446 msgid "Jun" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:445 +#: src/Core/L10n.php:401 src/Model/Event.php:447 msgid "Jul" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:446 +#: src/Core/L10n.php:401 src/Model/Event.php:448 msgid "Aug" msgstr "" @@ -4325,15 +4335,15 @@ msgstr "" msgid "Sep" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:448 +#: src/Core/L10n.php:401 src/Model/Event.php:450 msgid "Oct" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:449 +#: src/Core/L10n.php:401 src/Model/Event.php:451 msgid "Nov" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:450 +#: src/Core/L10n.php:401 src/Model/Event.php:452 msgid "Dec" msgstr "" @@ -4622,150 +4632,150 @@ msgstr "" msgid "Legacy module file not found: %s" msgstr "" -#: src/Model/Contact.php:998 src/Model/Contact.php:1011 +#: src/Model/Contact.php:1041 src/Model/Contact.php:1054 msgid "UnFollow" msgstr "" -#: src/Model/Contact.php:1007 +#: src/Model/Contact.php:1050 msgid "Drop Contact" msgstr "" -#: src/Model/Contact.php:1017 src/Module/Admin/Users/Pending.php:107 +#: src/Model/Contact.php:1060 src/Module/Admin/Users/Pending.php:107 #: src/Module/Notifications/Introductions.php:111 #: src/Module/Notifications/Introductions.php:189 msgid "Approve" msgstr "" -#: src/Model/Contact.php:1422 +#: src/Model/Contact.php:1465 msgid "Organisation" msgstr "" -#: src/Model/Contact.php:1430 +#: src/Model/Contact.php:1473 msgid "Forum" msgstr "" -#: src/Model/Contact.php:2294 +#: src/Model/Contact.php:2351 msgid "Connect URL missing." msgstr "" -#: src/Model/Contact.php:2303 +#: src/Model/Contact.php:2360 msgid "" "The contact could not be added. Please check the relevant network " "credentials in your Settings -> Social Networks page." msgstr "" -#: src/Model/Contact.php:2346 +#: src/Model/Contact.php:2403 msgid "" "This site is not configured to allow communications with other networks." msgstr "" -#: src/Model/Contact.php:2347 src/Model/Contact.php:2360 +#: src/Model/Contact.php:2404 src/Model/Contact.php:2417 msgid "No compatible communication protocols or feeds were discovered." msgstr "" -#: src/Model/Contact.php:2358 +#: src/Model/Contact.php:2415 msgid "The profile address specified does not provide adequate information." msgstr "" -#: src/Model/Contact.php:2363 +#: src/Model/Contact.php:2420 msgid "An author or name was not found." msgstr "" -#: src/Model/Contact.php:2366 +#: src/Model/Contact.php:2423 msgid "No browser URL could be matched to this address." msgstr "" -#: src/Model/Contact.php:2369 +#: src/Model/Contact.php:2426 msgid "" "Unable to match @-style Identity Address with a known protocol or email " "contact." msgstr "" -#: src/Model/Contact.php:2370 +#: src/Model/Contact.php:2427 msgid "Use mailto: in front of address to force email check." msgstr "" -#: src/Model/Contact.php:2376 +#: src/Model/Contact.php:2433 msgid "" "The profile address specified belongs to a network which has been disabled " "on this site." msgstr "" -#: src/Model/Contact.php:2381 +#: src/Model/Contact.php:2438 msgid "" "Limited profile. This person will be unable to receive direct/personal " "notifications from you." msgstr "" -#: src/Model/Contact.php:2440 +#: src/Model/Contact.php:2497 msgid "Unable to retrieve contact information." msgstr "" -#: src/Model/Event.php:50 src/Model/Event.php:872 +#: src/Model/Event.php:52 src/Model/Event.php:874 #: src/Module/Debug/Localtime.php:36 msgid "l F d, Y \\@ g:i A" msgstr "" -#: src/Model/Event.php:77 src/Model/Event.php:94 src/Model/Event.php:471 -#: src/Model/Event.php:942 +#: src/Model/Event.php:79 src/Model/Event.php:96 src/Model/Event.php:473 +#: src/Model/Event.php:944 msgid "Starts:" msgstr "" -#: src/Model/Event.php:80 src/Model/Event.php:100 src/Model/Event.php:472 -#: src/Model/Event.php:946 +#: src/Model/Event.php:82 src/Model/Event.php:102 src/Model/Event.php:474 +#: src/Model/Event.php:948 msgid "Finishes:" msgstr "" -#: src/Model/Event.php:421 +#: src/Model/Event.php:423 msgid "all-day" msgstr "" -#: src/Model/Event.php:447 +#: src/Model/Event.php:449 msgid "Sept" msgstr "" -#: src/Model/Event.php:469 +#: src/Model/Event.php:471 msgid "No events to display" msgstr "" -#: src/Model/Event.php:588 +#: src/Model/Event.php:590 msgid "l, F j" msgstr "" -#: src/Model/Event.php:619 +#: src/Model/Event.php:621 msgid "Edit event" msgstr "" -#: src/Model/Event.php:620 +#: src/Model/Event.php:622 msgid "Duplicate event" msgstr "" -#: src/Model/Event.php:621 +#: src/Model/Event.php:623 msgid "Delete event" msgstr "" -#: src/Model/Event.php:873 +#: src/Model/Event.php:875 msgid "D g:i A" msgstr "" -#: src/Model/Event.php:874 +#: src/Model/Event.php:876 msgid "g:i A" msgstr "" -#: src/Model/Event.php:961 src/Model/Event.php:963 +#: src/Model/Event.php:963 src/Model/Event.php:965 msgid "Show map" msgstr "" -#: src/Model/Event.php:962 +#: src/Model/Event.php:964 msgid "Hide map" msgstr "" -#: src/Model/Event.php:1054 +#: src/Model/Event.php:1056 #, php-format msgid "%s's birthday" msgstr "" -#: src/Model/Event.php:1055 +#: src/Model/Event.php:1057 #, php-format msgid "Happy Birthday %s" msgstr "" @@ -4814,33 +4824,33 @@ msgstr "" msgid "Edit groups" msgstr "" -#: src/Model/Item.php:1660 +#: src/Model/Item.php:1701 #, php-format msgid "Detected languages in this post:\\n%s" msgstr "" -#: src/Model/Item.php:2610 +#: src/Model/Item.php:2651 msgid "activity" msgstr "" -#: src/Model/Item.php:2612 +#: src/Model/Item.php:2653 msgid "comment" msgstr "" -#: src/Model/Item.php:2615 +#: src/Model/Item.php:2656 msgid "post" msgstr "" -#: src/Model/Item.php:2729 +#: src/Model/Item.php:2770 #, php-format msgid "Content warning: %s" msgstr "" -#: src/Model/Item.php:3099 +#: src/Model/Item.php:3140 msgid "bytes" msgstr "" -#: src/Model/Item.php:3128 src/Model/Item.php:3129 +#: src/Model/Item.php:3169 src/Model/Item.php:3170 msgid "View on separate page" msgstr "" @@ -10458,7 +10468,7 @@ msgstr "" msgid "Show fewer" msgstr "" -#: src/Protocol/Diaspora.php:3434 +#: src/Protocol/Diaspora.php:3435 msgid "Attachments:" msgstr "" From 097eb9e83b4a91fb6069e81aac36dbc851201df2 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Wed, 14 Jul 2021 02:56:15 +0000 Subject: [PATCH 079/108] Updated messages.po --- view/lang/C/messages.po | 477 ++++++++++++++++++++-------------------- 1 file changed, 237 insertions(+), 240 deletions(-) diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 6a0ce1f50..d4a43080e 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2021.09-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-07-12 14:10+0000\n" +"POT-Creation-Date: 2021-07-14 02:55+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -39,8 +39,8 @@ msgstr "" #: include/api.php:4500 mod/photos.php:106 mod/photos.php:210 #: mod/photos.php:638 mod/photos.php:1042 mod/photos.php:1059 -#: mod/photos.php:1608 src/Model/User.php:1114 src/Model/User.php:1122 -#: src/Model/User.php:1130 src/Module/Settings/Profile/Photo/Crop.php:98 +#: mod/photos.php:1608 src/Model/User.php:1105 src/Model/User.php:1113 +#: src/Model/User.php:1121 src/Module/Settings/Profile/Photo/Crop.php:98 #: src/Module/Settings/Profile/Photo/Crop.php:114 #: src/Module/Settings/Profile/Photo/Crop.php:130 #: src/Module/Settings/Profile/Photo/Crop.php:176 @@ -75,7 +75,7 @@ msgstr "" msgid "Select" msgstr "" -#: include/conversation.php:469 mod/photos.php:1470 mod/settings.php:639 +#: include/conversation.php:469 mod/photos.php:1470 mod/settings.php:633 #: src/Module/Admin/Users/Active.php:139 src/Module/Admin/Users/Blocked.php:140 #: src/Module/Admin/Users/Index.php:153 src/Module/Contact.php:894 #: src/Module/Contact.php:1198 @@ -826,9 +826,9 @@ msgstr "" #: mod/api.php:52 mod/api.php:57 mod/dfrn_confirm.php:78 mod/editpost.php:37 #: mod/events.php:231 mod/follow.php:55 mod/follow.php:135 mod/item.php:185 #: mod/item.php:190 mod/item.php:917 mod/message.php:69 mod/message.php:112 -#: mod/notes.php:44 mod/ostatus_subscribe.php:30 mod/photos.php:175 +#: mod/notes.php:44 mod/ostatus_subscribe.php:32 mod/photos.php:175 #: mod/photos.php:921 mod/repair_ostatus.php:31 mod/settings.php:47 -#: mod/settings.php:65 mod/settings.php:476 mod/suggest.php:34 +#: mod/settings.php:65 mod/settings.php:474 mod/suggest.php:34 #: mod/uimport.php:32 mod/unfollow.php:35 mod/unfollow.php:50 #: mod/unfollow.php:82 mod/wall_attach.php:78 mod/wall_attach.php:81 #: mod/wall_upload.php:99 mod/wall_upload.php:102 mod/wallmessage.php:35 @@ -949,7 +949,7 @@ msgstr "" msgid "list" msgstr "" -#: mod/cal.php:297 src/Console/User.php:182 src/Model/User.php:676 +#: mod/cal.php:297 src/Console/User.php:182 src/Model/User.php:667 #: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74 #: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71 #: src/Module/Api/Twitter/ContactEndpoint.php:71 @@ -1730,39 +1730,51 @@ msgstr "" msgid "Personal notes are visible only by yourself." msgstr "" -#: mod/ostatus_subscribe.php:35 -msgid "Subscribing to OStatus contacts" +#: mod/ostatus_subscribe.php:37 +msgid "Subscribing to contacts" msgstr "" -#: mod/ostatus_subscribe.php:45 +#: mod/ostatus_subscribe.php:47 msgid "No contact provided." msgstr "" -#: mod/ostatus_subscribe.php:51 +#: mod/ostatus_subscribe.php:53 msgid "Couldn't fetch information for contact." msgstr "" -#: mod/ostatus_subscribe.php:61 +#: mod/ostatus_subscribe.php:64 msgid "Couldn't fetch friends for contact." msgstr "" -#: mod/ostatus_subscribe.php:79 mod/repair_ostatus.php:65 +#: mod/ostatus_subscribe.php:70 mod/ostatus_subscribe.php:81 +msgid "Couldn't fetch following contacts." +msgstr "" + +#: mod/ostatus_subscribe.php:76 +msgid "Couldn't fetch remote profile." +msgstr "" + +#: mod/ostatus_subscribe.php:86 +msgid "Unsupported network" +msgstr "" + +#: mod/ostatus_subscribe.php:102 mod/repair_ostatus.php:65 msgid "Done" msgstr "" -#: mod/ostatus_subscribe.php:93 +#: mod/ostatus_subscribe.php:116 msgid "success" msgstr "" -#: mod/ostatus_subscribe.php:95 +#: mod/ostatus_subscribe.php:118 msgid "failed" msgstr "" -#: mod/ostatus_subscribe.php:98 +#: mod/ostatus_subscribe.php:121 msgid "ignored" msgstr "" -#: mod/ostatus_subscribe.php:103 mod/repair_ostatus.php:71 +#: mod/ostatus_subscribe.php:126 mod/repair_ostatus.php:71 msgid "Keep this window open until done." msgstr "" @@ -2073,75 +2085,75 @@ msgstr "" msgid "Update" msgstr "" -#: mod/settings.php:201 +#: mod/settings.php:199 msgid "Failed to connect with email account using the settings provided." msgstr "" -#: mod/settings.php:230 +#: mod/settings.php:228 msgid "Contact CSV file upload error" msgstr "" -#: mod/settings.php:249 +#: mod/settings.php:247 msgid "Importing Contacts done" msgstr "" -#: mod/settings.php:262 +#: mod/settings.php:260 msgid "Relocate message has been send to your contacts" msgstr "" -#: mod/settings.php:274 +#: mod/settings.php:272 msgid "Passwords do not match." msgstr "" -#: mod/settings.php:282 src/Console/User.php:210 +#: mod/settings.php:280 src/Console/User.php:210 msgid "Password update failed. Please try again." msgstr "" -#: mod/settings.php:285 src/Console/User.php:213 +#: mod/settings.php:283 src/Console/User.php:213 msgid "Password changed." msgstr "" -#: mod/settings.php:288 +#: mod/settings.php:286 msgid "Password unchanged." msgstr "" -#: mod/settings.php:373 +#: mod/settings.php:371 msgid "Please use a shorter name." msgstr "" -#: mod/settings.php:376 +#: mod/settings.php:374 msgid "Name too short." msgstr "" -#: mod/settings.php:383 +#: mod/settings.php:381 msgid "Wrong Password." msgstr "" -#: mod/settings.php:388 +#: mod/settings.php:386 msgid "Invalid email." msgstr "" -#: mod/settings.php:394 +#: mod/settings.php:392 msgid "Cannot change to that email." msgstr "" -#: mod/settings.php:432 +#: mod/settings.php:430 msgid "Private forum has no privacy permissions. Using default privacy group." msgstr "" -#: mod/settings.php:435 +#: mod/settings.php:433 msgid "Private forum has no privacy permissions and no default privacy group." msgstr "" -#: mod/settings.php:454 +#: mod/settings.php:452 msgid "Settings were not updated." msgstr "" -#: mod/settings.php:495 +#: mod/settings.php:493 msgid "Connected Apps" msgstr "" -#: mod/settings.php:496 src/Module/Admin/Blocklist/Contact.php:90 +#: mod/settings.php:494 src/Module/Admin/Blocklist/Contact.php:90 #: src/Module/Admin/Users/Active.php:129 src/Module/Admin/Users/Blocked.php:130 #: src/Module/Admin/Users/Create.php:71 src/Module/Admin/Users/Deleted.php:88 #: src/Module/Admin/Users/Index.php:142 src/Module/Admin/Users/Index.php:162 @@ -2149,31 +2161,31 @@ msgstr "" msgid "Name" msgstr "" -#: mod/settings.php:497 src/Content/Nav.php:216 +#: mod/settings.php:495 src/Content/Nav.php:216 msgid "Home Page" msgstr "" -#: mod/settings.php:498 src/Module/Admin/Queue.php:78 +#: mod/settings.php:496 src/Module/Admin/Queue.php:78 msgid "Created" msgstr "" -#: mod/settings.php:499 +#: mod/settings.php:497 msgid "Remove authorization" msgstr "" -#: mod/settings.php:517 +#: mod/settings.php:515 msgid "Addon Settings" msgstr "" -#: mod/settings.php:518 +#: mod/settings.php:516 msgid "No Addon settings configured" msgstr "" -#: mod/settings.php:539 +#: mod/settings.php:537 msgid "Additional Features" msgstr "" -#: mod/settings.php:541 mod/settings.php:641 mod/settings.php:776 +#: mod/settings.php:539 mod/settings.php:635 mod/settings.php:770 #: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87 #: src/Module/Admin/Logs/Settings.php:82 src/Module/Admin/Site.php:568 #: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:66 @@ -2181,48 +2193,48 @@ msgstr "" msgid "Save Settings" msgstr "" -#: mod/settings.php:565 +#: mod/settings.php:561 msgid "Diaspora (Socialhome, Hubzilla)" msgstr "" -#: mod/settings.php:565 mod/settings.php:566 +#: mod/settings.php:561 mod/settings.php:562 msgid "enabled" msgstr "" -#: mod/settings.php:565 mod/settings.php:566 +#: mod/settings.php:561 mod/settings.php:562 msgid "disabled" msgstr "" -#: mod/settings.php:565 mod/settings.php:566 +#: mod/settings.php:561 mod/settings.php:562 #, php-format msgid "Built-in support for %s connectivity is %s" msgstr "" -#: mod/settings.php:566 +#: mod/settings.php:562 msgid "OStatus (GNU Social)" msgstr "" -#: mod/settings.php:597 +#: mod/settings.php:593 msgid "Email access is disabled on this site." msgstr "" -#: mod/settings.php:602 mod/settings.php:639 +#: mod/settings.php:598 mod/settings.php:633 msgid "None" msgstr "" -#: mod/settings.php:608 src/Module/BaseSettings.php:80 +#: mod/settings.php:604 src/Module/BaseSettings.php:80 msgid "Social Networks" msgstr "" -#: mod/settings.php:613 +#: mod/settings.php:609 msgid "General Social Media Settings" msgstr "" -#: mod/settings.php:614 +#: mod/settings.php:610 msgid "Accept only top level posts by contacts you follow" msgstr "" -#: mod/settings.php:614 +#: mod/settings.php:610 msgid "" "The system does an auto completion of threads when a comment arrives. This " "has got the side effect that you can receive posts that had been started by " @@ -2231,11 +2243,11 @@ msgid "" "posts from people you really do follow." msgstr "" -#: mod/settings.php:615 +#: mod/settings.php:611 msgid "Disable Content Warning" msgstr "" -#: mod/settings.php:615 +#: mod/settings.php:611 msgid "" "Users on networks like Mastodon or Pleroma are able to set a content warning " "field which collapse their post by default. This disables the automatic " @@ -2243,237 +2255,222 @@ msgid "" "any other content filtering you eventually set up." msgstr "" -#: mod/settings.php:616 +#: mod/settings.php:612 msgid "Disable intelligent shortening" msgstr "" -#: mod/settings.php:616 +#: mod/settings.php:612 msgid "" "Normally the system tries to find the best link to add to shortened posts. " "If this option is enabled then every shortened post will always point to the " "original friendica post." msgstr "" -#: mod/settings.php:617 +#: mod/settings.php:613 msgid "Enable simple text shortening" msgstr "" -#: mod/settings.php:617 +#: mod/settings.php:613 msgid "" "Normally the system shortens posts at the next line feed. If this option is " "enabled then the system will shorten the text at the maximum character limit." msgstr "" -#: mod/settings.php:618 +#: mod/settings.php:614 msgid "Attach the link title" msgstr "" -#: mod/settings.php:618 +#: mod/settings.php:614 msgid "" "When activated, the title of the attached link will be added as a title on " "posts to Diaspora. This is mostly helpful with \"remote-self\" contacts that " "share feed content." msgstr "" -#: mod/settings.php:619 -msgid "Automatically follow any GNU Social (OStatus) followers/mentioners" +#: mod/settings.php:615 +msgid "Your legacy ActivityPub/GNU Social account" msgstr "" -#: mod/settings.php:619 +#: mod/settings.php:615 msgid "" -"If you receive a message from an unknown OStatus user, this option decides " -"what to do. If it is checked, a new contact will be created for every " -"unknown user." +"If you enter your old account name from an ActivityPub based system or your " +"GNU Social/Statusnet account name here (in the format user@domain.tld), your " +"contacts will be added automatically. The field will be emptied when done." msgstr "" -#: mod/settings.php:620 -msgid "Default group for OStatus contacts" -msgstr "" - -#: mod/settings.php:621 -msgid "Your legacy GNU Social account" -msgstr "" - -#: mod/settings.php:621 -msgid "" -"If you enter your old GNU Social/Statusnet account name here (in the format " -"user@domain.tld), your contacts will be added automatically. The field will " -"be emptied when done." -msgstr "" - -#: mod/settings.php:624 +#: mod/settings.php:618 msgid "Repair OStatus subscriptions" msgstr "" -#: mod/settings.php:628 +#: mod/settings.php:622 msgid "Email/Mailbox Setup" msgstr "" -#: mod/settings.php:629 +#: mod/settings.php:623 msgid "" "If you wish to communicate with email contacts using this service " "(optional), please specify how to connect to your mailbox." msgstr "" -#: mod/settings.php:630 +#: mod/settings.php:624 msgid "Last successful email check:" msgstr "" -#: mod/settings.php:632 +#: mod/settings.php:626 msgid "IMAP server name:" msgstr "" -#: mod/settings.php:633 +#: mod/settings.php:627 msgid "IMAP port:" msgstr "" -#: mod/settings.php:634 +#: mod/settings.php:628 msgid "Security:" msgstr "" -#: mod/settings.php:635 +#: mod/settings.php:629 msgid "Email login name:" msgstr "" -#: mod/settings.php:636 +#: mod/settings.php:630 msgid "Email password:" msgstr "" -#: mod/settings.php:637 +#: mod/settings.php:631 msgid "Reply-to address:" msgstr "" -#: mod/settings.php:638 +#: mod/settings.php:632 msgid "Send public posts to all email contacts:" msgstr "" -#: mod/settings.php:639 +#: mod/settings.php:633 msgid "Action after import:" msgstr "" -#: mod/settings.php:639 src/Content/Nav.php:284 +#: mod/settings.php:633 src/Content/Nav.php:284 msgid "Mark as seen" msgstr "" -#: mod/settings.php:639 +#: mod/settings.php:633 msgid "Move to folder" msgstr "" -#: mod/settings.php:640 +#: mod/settings.php:634 msgid "Move to folder:" msgstr "" -#: mod/settings.php:654 +#: mod/settings.php:648 msgid "Unable to find your profile. Please contact your admin." msgstr "" -#: mod/settings.php:690 src/Content/Widget.php:536 +#: mod/settings.php:684 src/Content/Widget.php:536 msgid "Account Types" msgstr "" -#: mod/settings.php:691 +#: mod/settings.php:685 msgid "Personal Page Subtypes" msgstr "" -#: mod/settings.php:692 +#: mod/settings.php:686 msgid "Community Forum Subtypes" msgstr "" -#: mod/settings.php:699 src/Module/Admin/BaseUsers.php:106 +#: mod/settings.php:693 src/Module/Admin/BaseUsers.php:106 msgid "Personal Page" msgstr "" -#: mod/settings.php:700 +#: mod/settings.php:694 msgid "Account for a personal profile." msgstr "" -#: mod/settings.php:703 src/Module/Admin/BaseUsers.php:107 +#: mod/settings.php:697 src/Module/Admin/BaseUsers.php:107 msgid "Organisation Page" msgstr "" -#: mod/settings.php:704 +#: mod/settings.php:698 msgid "" "Account for an organisation that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:707 src/Module/Admin/BaseUsers.php:108 +#: mod/settings.php:701 src/Module/Admin/BaseUsers.php:108 msgid "News Page" msgstr "" -#: mod/settings.php:708 +#: mod/settings.php:702 msgid "" "Account for a news reflector that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:711 src/Module/Admin/BaseUsers.php:109 +#: mod/settings.php:705 src/Module/Admin/BaseUsers.php:109 msgid "Community Forum" msgstr "" -#: mod/settings.php:712 +#: mod/settings.php:706 msgid "Account for community discussions." msgstr "" -#: mod/settings.php:715 src/Module/Admin/BaseUsers.php:99 +#: mod/settings.php:709 src/Module/Admin/BaseUsers.php:99 msgid "Normal Account Page" msgstr "" -#: mod/settings.php:716 +#: mod/settings.php:710 msgid "" "Account for a regular personal profile that requires manual approval of " "\"Friends\" and \"Followers\"." msgstr "" -#: mod/settings.php:719 src/Module/Admin/BaseUsers.php:100 +#: mod/settings.php:713 src/Module/Admin/BaseUsers.php:100 msgid "Soapbox Page" msgstr "" -#: mod/settings.php:720 +#: mod/settings.php:714 msgid "" "Account for a public profile that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:723 src/Module/Admin/BaseUsers.php:101 +#: mod/settings.php:717 src/Module/Admin/BaseUsers.php:101 msgid "Public Forum" msgstr "" -#: mod/settings.php:724 +#: mod/settings.php:718 msgid "Automatically approves all contact requests." msgstr "" -#: mod/settings.php:727 src/Module/Admin/BaseUsers.php:102 +#: mod/settings.php:721 src/Module/Admin/BaseUsers.php:102 msgid "Automatic Friend Page" msgstr "" -#: mod/settings.php:728 +#: mod/settings.php:722 msgid "" "Account for a popular profile that automatically approves contact requests " "as \"Friends\"." msgstr "" -#: mod/settings.php:731 +#: mod/settings.php:725 msgid "Private Forum [Experimental]" msgstr "" -#: mod/settings.php:732 +#: mod/settings.php:726 msgid "Requires manual approval of contact requests." msgstr "" -#: mod/settings.php:743 +#: mod/settings.php:737 msgid "OpenID:" msgstr "" -#: mod/settings.php:743 +#: mod/settings.php:737 msgid "(Optional) Allow this OpenID to login to this account." msgstr "" -#: mod/settings.php:751 +#: mod/settings.php:745 msgid "Publish your profile in your local site directory?" msgstr "" -#: mod/settings.php:751 +#: mod/settings.php:745 #, php-format msgid "" "Your profile will be published in this node's <a href=\"%s\">local " @@ -2481,115 +2478,115 @@ msgid "" "system settings." msgstr "" -#: mod/settings.php:757 +#: mod/settings.php:751 #, php-format msgid "" "Your profile will also be published in the global friendica directories (e." "g. <a href=\"%s\">%s</a>)." msgstr "" -#: mod/settings.php:763 +#: mod/settings.php:757 #, php-format msgid "Your Identity Address is <strong>'%s'</strong> or '%s'." msgstr "" -#: mod/settings.php:774 +#: mod/settings.php:768 msgid "Account Settings" msgstr "" -#: mod/settings.php:782 +#: mod/settings.php:776 msgid "Password Settings" msgstr "" -#: mod/settings.php:783 src/Module/Register.php:149 +#: mod/settings.php:777 src/Module/Register.php:149 msgid "New Password:" msgstr "" -#: mod/settings.php:783 +#: mod/settings.php:777 msgid "" "Allowed characters are a-z, A-Z, 0-9 and special characters except white " "spaces, accentuated letters and colon (:)." msgstr "" -#: mod/settings.php:784 src/Module/Register.php:150 +#: mod/settings.php:778 src/Module/Register.php:150 msgid "Confirm:" msgstr "" -#: mod/settings.php:784 +#: mod/settings.php:778 msgid "Leave password fields blank unless changing" msgstr "" -#: mod/settings.php:785 +#: mod/settings.php:779 msgid "Current Password:" msgstr "" -#: mod/settings.php:785 +#: mod/settings.php:779 msgid "Your current password to confirm the changes" msgstr "" -#: mod/settings.php:786 +#: mod/settings.php:780 msgid "Password:" msgstr "" -#: mod/settings.php:786 +#: mod/settings.php:780 msgid "Your current password to confirm the changes of the email address" msgstr "" -#: mod/settings.php:789 +#: mod/settings.php:783 msgid "Delete OpenID URL" msgstr "" -#: mod/settings.php:791 +#: mod/settings.php:785 msgid "Basic Settings" msgstr "" -#: mod/settings.php:792 src/Module/Profile/Profile.php:144 +#: mod/settings.php:786 src/Module/Profile/Profile.php:144 msgid "Full Name:" msgstr "" -#: mod/settings.php:793 +#: mod/settings.php:787 msgid "Email Address:" msgstr "" -#: mod/settings.php:794 +#: mod/settings.php:788 msgid "Your Timezone:" msgstr "" -#: mod/settings.php:795 +#: mod/settings.php:789 msgid "Your Language:" msgstr "" -#: mod/settings.php:795 +#: mod/settings.php:789 msgid "" "Set the language we use to show you friendica interface and to send you " "emails" msgstr "" -#: mod/settings.php:796 +#: mod/settings.php:790 msgid "Default Post Location:" msgstr "" -#: mod/settings.php:797 +#: mod/settings.php:791 msgid "Use Browser Location:" msgstr "" -#: mod/settings.php:799 +#: mod/settings.php:793 msgid "Security and Privacy Settings" msgstr "" -#: mod/settings.php:801 +#: mod/settings.php:795 msgid "Maximum Friend Requests/Day:" msgstr "" -#: mod/settings.php:801 mod/settings.php:811 +#: mod/settings.php:795 mod/settings.php:805 msgid "(to prevent spam abuse)" msgstr "" -#: mod/settings.php:803 +#: mod/settings.php:797 msgid "Allow your profile to be searchable globally?" msgstr "" -#: mod/settings.php:803 +#: mod/settings.php:797 msgid "" "Activate this setting if you want others to easily find and follow you. Your " "profile will be searchable on remote systems. This setting also determines " @@ -2597,43 +2594,43 @@ msgid "" "indexed or not." msgstr "" -#: mod/settings.php:804 +#: mod/settings.php:798 msgid "Hide your contact/friend list from viewers of your profile?" msgstr "" -#: mod/settings.php:804 +#: mod/settings.php:798 msgid "" "A list of your contacts is displayed on your profile page. Activate this " "option to disable the display of your contact list." msgstr "" -#: mod/settings.php:805 +#: mod/settings.php:799 msgid "Hide your profile details from anonymous viewers?" msgstr "" -#: mod/settings.php:805 +#: mod/settings.php:799 msgid "" "Anonymous visitors will only see your profile picture, your display name and " "the nickname you are using on your profile page. Your public posts and " "replies will still be accessible by other means." msgstr "" -#: mod/settings.php:806 +#: mod/settings.php:800 msgid "Make public posts unlisted" msgstr "" -#: mod/settings.php:806 +#: mod/settings.php:800 msgid "" "Your public posts will not appear on the community pages or in search " "results, nor be sent to relay servers. However they can still appear on " "public feeds on remote servers." msgstr "" -#: mod/settings.php:807 +#: mod/settings.php:801 msgid "Make all posted pictures accessible" msgstr "" -#: mod/settings.php:807 +#: mod/settings.php:801 msgid "" "This option makes every posted picture accessible via the direct link. This " "is a workaround for the problem that most other networks can't handle " @@ -2641,209 +2638,209 @@ msgid "" "public on your photo albums though." msgstr "" -#: mod/settings.php:808 +#: mod/settings.php:802 msgid "Allow friends to post to your profile page?" msgstr "" -#: mod/settings.php:808 +#: mod/settings.php:802 msgid "" "Your contacts may write posts on your profile wall. These posts will be " "distributed to your contacts" msgstr "" -#: mod/settings.php:809 +#: mod/settings.php:803 msgid "Allow friends to tag your posts?" msgstr "" -#: mod/settings.php:809 +#: mod/settings.php:803 msgid "Your contacts can add additional tags to your posts." msgstr "" -#: mod/settings.php:810 +#: mod/settings.php:804 msgid "Permit unknown people to send you private mail?" msgstr "" -#: mod/settings.php:810 +#: mod/settings.php:804 msgid "" "Friendica network users may send you private messages even if they are not " "in your contact list." msgstr "" -#: mod/settings.php:811 +#: mod/settings.php:805 msgid "Maximum private messages per day from unknown people:" msgstr "" -#: mod/settings.php:813 +#: mod/settings.php:807 msgid "Default Post Permissions" msgstr "" -#: mod/settings.php:817 +#: mod/settings.php:811 msgid "Expiration settings" msgstr "" -#: mod/settings.php:818 +#: mod/settings.php:812 msgid "Automatically expire posts after this many days:" msgstr "" -#: mod/settings.php:818 +#: mod/settings.php:812 msgid "If empty, posts will not expire. Expired posts will be deleted" msgstr "" -#: mod/settings.php:819 +#: mod/settings.php:813 msgid "Expire posts" msgstr "" -#: mod/settings.php:819 +#: mod/settings.php:813 msgid "When activated, posts and comments will be expired." msgstr "" -#: mod/settings.php:820 +#: mod/settings.php:814 msgid "Expire personal notes" msgstr "" -#: mod/settings.php:820 +#: mod/settings.php:814 msgid "" "When activated, the personal notes on your profile page will be expired." msgstr "" -#: mod/settings.php:821 +#: mod/settings.php:815 msgid "Expire starred posts" msgstr "" -#: mod/settings.php:821 +#: mod/settings.php:815 msgid "" "Starring posts keeps them from being expired. That behaviour is overwritten " "by this setting." msgstr "" -#: mod/settings.php:822 +#: mod/settings.php:816 msgid "Expire photos" msgstr "" -#: mod/settings.php:822 +#: mod/settings.php:816 msgid "When activated, photos will be expired." msgstr "" -#: mod/settings.php:823 +#: mod/settings.php:817 msgid "Only expire posts by others" msgstr "" -#: mod/settings.php:823 +#: mod/settings.php:817 msgid "" "When activated, your own posts never expire. Then the settings above are " "only valid for posts you received." msgstr "" -#: mod/settings.php:826 +#: mod/settings.php:820 msgid "Notification Settings" msgstr "" -#: mod/settings.php:827 +#: mod/settings.php:821 msgid "Send a notification email when:" msgstr "" -#: mod/settings.php:828 +#: mod/settings.php:822 msgid "You receive an introduction" msgstr "" -#: mod/settings.php:829 +#: mod/settings.php:823 msgid "Your introductions are confirmed" msgstr "" -#: mod/settings.php:830 +#: mod/settings.php:824 msgid "Someone writes on your profile wall" msgstr "" -#: mod/settings.php:831 +#: mod/settings.php:825 msgid "Someone writes a followup comment" msgstr "" -#: mod/settings.php:832 +#: mod/settings.php:826 msgid "You receive a private message" msgstr "" -#: mod/settings.php:833 +#: mod/settings.php:827 msgid "You receive a friend suggestion" msgstr "" -#: mod/settings.php:834 +#: mod/settings.php:828 msgid "You are tagged in a post" msgstr "" -#: mod/settings.php:835 +#: mod/settings.php:829 msgid "You are poked/prodded/etc. in a post" msgstr "" -#: mod/settings.php:837 +#: mod/settings.php:831 msgid "Activate desktop notifications" msgstr "" -#: mod/settings.php:837 +#: mod/settings.php:831 msgid "Show desktop popup on new notifications" msgstr "" -#: mod/settings.php:839 +#: mod/settings.php:833 msgid "Text-only notification emails" msgstr "" -#: mod/settings.php:841 +#: mod/settings.php:835 msgid "Send text only notification emails, without the html part" msgstr "" -#: mod/settings.php:843 +#: mod/settings.php:837 msgid "Show detailled notifications" msgstr "" -#: mod/settings.php:845 +#: mod/settings.php:839 msgid "" "Per default, notifications are condensed to a single notification per item. " "When enabled every notification is displayed." msgstr "" -#: mod/settings.php:847 +#: mod/settings.php:841 msgid "Show notifications of ignored contacts" msgstr "" -#: mod/settings.php:849 +#: mod/settings.php:843 msgid "" "You don't see posts from ignored contacts. But you still see their comments. " "This setting controls if you want to still receive regular notifications " "that are caused by ignored contacts or not." msgstr "" -#: mod/settings.php:851 +#: mod/settings.php:845 msgid "Advanced Account/Page Type Settings" msgstr "" -#: mod/settings.php:852 +#: mod/settings.php:846 msgid "Change the behaviour of this account for special situations" msgstr "" -#: mod/settings.php:855 +#: mod/settings.php:849 msgid "Import Contacts" msgstr "" -#: mod/settings.php:856 +#: mod/settings.php:850 msgid "" "Upload a CSV file that contains the handle of your followed accounts in the " "first column you exported from the old account." msgstr "" -#: mod/settings.php:857 +#: mod/settings.php:851 msgid "Upload File" msgstr "" -#: mod/settings.php:859 +#: mod/settings.php:853 msgid "Relocate" msgstr "" -#: mod/settings.php:860 +#: mod/settings.php:854 msgid "" "If you have moved this profile from another server, and some of your " "contacts don't receive your updates, try pushing this button." msgstr "" -#: mod/settings.php:861 +#: mod/settings.php:855 msgid "Resend relocate message to contacts" msgstr "" @@ -4968,138 +4965,138 @@ msgstr "" msgid "Enter a valid existing folder" msgstr "" -#: src/Model/User.php:195 src/Model/User.php:1000 +#: src/Model/User.php:195 src/Model/User.php:991 msgid "SERIOUS ERROR: Generation of security keys failed." msgstr "" -#: src/Model/User.php:585 src/Model/User.php:618 +#: src/Model/User.php:576 src/Model/User.php:609 msgid "Login failed" msgstr "" -#: src/Model/User.php:650 +#: src/Model/User.php:641 msgid "Not enough information to authenticate" msgstr "" -#: src/Model/User.php:745 +#: src/Model/User.php:736 msgid "Password can't be empty" msgstr "" -#: src/Model/User.php:764 +#: src/Model/User.php:755 msgid "Empty passwords are not allowed." msgstr "" -#: src/Model/User.php:768 +#: src/Model/User.php:759 msgid "" "The new password has been exposed in a public data dump, please choose " "another." msgstr "" -#: src/Model/User.php:774 +#: src/Model/User.php:765 msgid "" "The password can't contain accentuated letters, white spaces or colons (:)" msgstr "" -#: src/Model/User.php:880 +#: src/Model/User.php:871 msgid "Passwords do not match. Password unchanged." msgstr "" -#: src/Model/User.php:887 +#: src/Model/User.php:878 msgid "An invitation is required." msgstr "" -#: src/Model/User.php:891 +#: src/Model/User.php:882 msgid "Invitation could not be verified." msgstr "" -#: src/Model/User.php:899 +#: src/Model/User.php:890 msgid "Invalid OpenID url" msgstr "" -#: src/Model/User.php:912 src/Security/Authentication.php:224 +#: src/Model/User.php:903 src/Security/Authentication.php:224 msgid "" "We encountered a problem while logging in with the OpenID you provided. " "Please check the correct spelling of the ID." msgstr "" -#: src/Model/User.php:912 src/Security/Authentication.php:224 +#: src/Model/User.php:903 src/Security/Authentication.php:224 msgid "The error message was:" msgstr "" -#: src/Model/User.php:918 +#: src/Model/User.php:909 msgid "Please enter the required information." msgstr "" -#: src/Model/User.php:932 +#: src/Model/User.php:923 #, php-format msgid "" "system.username_min_length (%s) and system.username_max_length (%s) are " "excluding each other, swapping values." msgstr "" -#: src/Model/User.php:939 +#: src/Model/User.php:930 #, php-format msgid "Username should be at least %s character." msgid_plural "Username should be at least %s characters." msgstr[0] "" msgstr[1] "" -#: src/Model/User.php:943 +#: src/Model/User.php:934 #, php-format msgid "Username should be at most %s character." msgid_plural "Username should be at most %s characters." msgstr[0] "" msgstr[1] "" -#: src/Model/User.php:951 +#: src/Model/User.php:942 msgid "That doesn't appear to be your full (First Last) name." msgstr "" -#: src/Model/User.php:956 +#: src/Model/User.php:947 msgid "Your email domain is not among those allowed on this site." msgstr "" -#: src/Model/User.php:960 +#: src/Model/User.php:951 msgid "Not a valid email address." msgstr "" -#: src/Model/User.php:963 +#: src/Model/User.php:954 msgid "The nickname was blocked from registration by the nodes admin." msgstr "" -#: src/Model/User.php:967 src/Model/User.php:975 +#: src/Model/User.php:958 src/Model/User.php:966 msgid "Cannot use that email." msgstr "" -#: src/Model/User.php:982 +#: src/Model/User.php:973 msgid "Your nickname can only contain a-z, 0-9 and _." msgstr "" -#: src/Model/User.php:990 src/Model/User.php:1047 +#: src/Model/User.php:981 src/Model/User.php:1038 msgid "Nickname is already registered. Please choose another." msgstr "" -#: src/Model/User.php:1034 src/Model/User.php:1038 +#: src/Model/User.php:1025 src/Model/User.php:1029 msgid "An error occurred during registration. Please try again." msgstr "" -#: src/Model/User.php:1061 +#: src/Model/User.php:1052 msgid "An error occurred creating your default profile. Please try again." msgstr "" -#: src/Model/User.php:1068 +#: src/Model/User.php:1059 msgid "An error occurred creating your self contact. Please try again." msgstr "" -#: src/Model/User.php:1073 +#: src/Model/User.php:1064 msgid "Friends" msgstr "" -#: src/Model/User.php:1077 +#: src/Model/User.php:1068 msgid "" "An error occurred creating your default contact group. Please try again." msgstr "" -#: src/Model/User.php:1306 +#: src/Model/User.php:1297 #, php-format msgid "" "\n" @@ -5107,7 +5104,7 @@ msgid "" "\t\t\tthe administrator of %2$s has set up an account for you." msgstr "" -#: src/Model/User.php:1309 +#: src/Model/User.php:1300 #, php-format msgid "" "\n" @@ -5144,12 +5141,12 @@ msgid "" "\t\tThank you and welcome to %4$s." msgstr "" -#: src/Model/User.php:1342 src/Model/User.php:1449 +#: src/Model/User.php:1333 src/Model/User.php:1440 #, php-format msgid "Registration details for %s" msgstr "" -#: src/Model/User.php:1362 +#: src/Model/User.php:1353 #, php-format msgid "" "\n" @@ -5165,12 +5162,12 @@ msgid "" "\t\t" msgstr "" -#: src/Model/User.php:1381 +#: src/Model/User.php:1372 #, php-format msgid "Registration at %s" msgstr "" -#: src/Model/User.php:1405 +#: src/Model/User.php:1396 #, php-format msgid "" "\n" @@ -5179,7 +5176,7 @@ msgid "" "\t\t\t" msgstr "" -#: src/Model/User.php:1413 +#: src/Model/User.php:1404 #, php-format msgid "" "\n" From bbebbb662a5f11f0ceaa3377bc62a2037b870816 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Wed, 14 Jul 2021 02:57:50 +0000 Subject: [PATCH 080/108] spaces removed --- mod/settings.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mod/settings.php b/mod/settings.php index 317f09201..7e0b2d53b 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -553,7 +553,7 @@ function settings_content(App $a) /// @todo Isn't it supposed to be a $a->internalRedirect() call? DI::page()['htmlhead'] = '<meta http-equiv="refresh" content="0; URL=' . DI::baseUrl().'/ostatus_subscribe?url=' . urlencode($legacy_contact) . '">'; } - + $settings_connectors = ''; Hook::callAll('connector_settings', $settings_connectors); @@ -849,7 +849,7 @@ function settings_content(App $a) '$importcontact' => DI::l10n()->t('Import Contacts'), '$importcontact_text' => DI::l10n()->t('Upload a CSV file that contains the handle of your followed accounts in the first column you exported from the old account.'), '$importcontact_button' => DI::l10n()->t('Upload File'), - '$importcontact_maxsize' => DI::config()->get('system', 'max_csv_file_size', 30720), + '$importcontact_maxsize' => DI::config()->get('system', 'max_csv_file_size', 30720), '$relocate' => DI::l10n()->t('Relocate'), '$relocate_text' => DI::l10n()->t("If you have moved this profile from another server, and some of your contacts don't receive your updates, try pushing this button."), '$relocate_button' => DI::l10n()->t("Resend relocate message to contacts"), From 0277589fbd28a7019fe167ec9955e5261bcac212 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Wed, 14 Jul 2021 02:59:29 +0000 Subject: [PATCH 081/108] Removed experimental code --- src/Model/Item.php | 41 --------------------------------------- src/Protocol/Diaspora.php | 1 - 2 files changed, 42 deletions(-) diff --git a/src/Model/Item.php b/src/Model/Item.php index 990232fc4..86b9270fe 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -38,8 +38,6 @@ use Friendica\Protocol\Activity; use Friendica\Protocol\ActivityPub; use Friendica\Protocol\Diaspora; use Friendica\Util\DateTimeFormat; -use Friendica\Util\HTTPSignature; -use Friendica\Util\LDSignature; use Friendica\Util\Map; use Friendica\Util\Network; use Friendica\Util\Proxy; @@ -544,30 +542,25 @@ class Item if (!empty($item['author-id']) && Contact::isBlocked($item['author-id'])) { Logger::notice('Author is blocked node-wide', ['author-link' => $item['author-link'], 'item-uri' => $item['uri']]); - self::remoteDelete($item); return false; } if (!empty($item['author-link']) && Network::isUrlBlocked($item['author-link'])) { Logger::notice('Author server is blocked', ['author-link' => $item['author-link'], 'item-uri' => $item['uri']]); - self::remoteDelete($item); return false; } if (!empty($item['owner-id']) && Contact::isBlocked($item['owner-id'])) { Logger::notice('Owner is blocked node-wide', ['owner-link' => $item['owner-link'], 'item-uri' => $item['uri']]); - self::remoteDelete($item); return false; } if (!empty($item['owner-link']) && Network::isUrlBlocked($item['owner-link'])) { Logger::notice('Owner server is blocked', ['owner-link' => $item['owner-link'], 'item-uri' => $item['uri']]); - self::remoteDelete($item); return false; } if (!empty($item['uid']) && !self::isAllowedByUser($item, $item['uid'])) { - self::remoteDelete($item); return false; } @@ -590,40 +583,6 @@ class Item return true; } - /** - * Try to delete the remote (unwanted) item - * - * @param array $item - */ - private static function remoteDelete(array $item) - { - if ($item['gravity'] == GRAVITY_PARENT) { - return; - } - return; - - $owner = User::getOwnerDataById($item['uid']); - $contact = Contact::getById($item['contact-id']); - - if (FContact::getByURL($contact['addr'], false)) { - Logger::info('Send Diaspora retraction for post', ['addr' => $contact['addr'], 'item' => $item]); - Diaspora::sendRetraction($item, $owner, $contact, in_array($item['private'], [self::UNLISTED, self::PUBLIC])); - } elseif ($profile = APContact::getByURL($contact['url'], false)) { - Logger::info('Send ActivityPub deletion for post', ['url' => $contact['url'], 'item' => $item]); - $data = ['@context' => ActivityPub::CONTEXT, - 'id' => $item['uri'] . '/Delete', - 'type' => 'Delete', - 'actor' => $owner['url'], - 'object' => ['type' => 'Tombstone', 'id' => $item['uri']], - 'to' => [$profile['url']]]; - - $signed = LDSignature::sign($data, $owner); - return HTTPSignature::transmit($signed, $profile['inbox'], $item['uid']); - } else { - Logger::info('Unsupported protocol for deletion', ['network' => $contact['network']]); - } - } - /** * Check if the item array is too old * diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 862bbca99..586b6e9ec 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -1495,7 +1495,6 @@ class Diaspora $contact = self::allowedContactByHandle($importer, $sender, true); if (!$contact) { - //self::sendRetraction($item, $owner, $contact, in_array($item['private'], [self::UNLISTED, self::PUBLIC])); return false; } From be18a59bd7c45e1e070259737b45f4047fe7ec65 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan <hypolite@mrpetovan.com> Date: Tue, 13 Jul 2021 23:02:11 -0400 Subject: [PATCH 082/108] Make last status parameter actually optional in Object\Api\Mastodon\Conversation --- src/Object/Api/Mastodon/Conversation.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Object/Api/Mastodon/Conversation.php b/src/Object/Api/Mastodon/Conversation.php index e0950e555..145fac94e 100644 --- a/src/Object/Api/Mastodon/Conversation.php +++ b/src/Object/Api/Mastodon/Conversation.php @@ -42,9 +42,9 @@ class Conversation extends BaseDataTransferObject /** * @var Status */ - protected $last_status = true; + protected $last_status = null; - public function __construct(string $id, array $accounts, bool $unread, \Friendica\Object\Api\Mastodon\Status $last_status) + public function __construct(string $id, array $accounts, bool $unread, Status $last_status = null) { $this->id = (string)$id; $this->accounts = $accounts; From 2ebebe9abc7a92266de0a4ba817af531cd50c551 Mon Sep 17 00:00:00 2001 From: RealKinetix <kinetix@isurf.ca> Date: Wed, 14 Jul 2021 10:15:19 -0700 Subject: [PATCH 083/108] Sanitize negative followers count on APContact Please see https://github.com/friendica/friendica/issues/9498#issuecomment-818894106 and related discussion regarding this - it appears it's possible for AP users, maybe just Mastodon users, to have a negative followers count. This causes fatal errors in Friendica, so I think we should sanitize this input. --- src/Model/APContact.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Model/APContact.php b/src/Model/APContact.php index aa5dbe2f7..971a48d9d 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -272,6 +272,11 @@ class APContact if (!empty($apcontact['followers'])) { $followers = ActivityPub::fetchContent($apcontact['followers']); + // Mastodon seriously allows for this condition? + // Jul 14 2021 - See https://mastodon.online/@goes11 for a negative followers count + if ($followers['totalItems'] < 0) { + $followers['totalItems'] = 0; + } if (!empty($followers['totalItems'])) { $apcontact['followers_count'] = $followers['totalItems']; } From c1db1c980efafee06ed05b9c758a82d47d8a1974 Mon Sep 17 00:00:00 2001 From: RealKinetix <kinetix@isurf.ca> Date: Wed, 14 Jul 2021 12:17:03 -0700 Subject: [PATCH 084/108] Fix indent to standards --- src/Model/APContact.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/APContact.php b/src/Model/APContact.php index 971a48d9d..eb34e502e 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -275,7 +275,7 @@ class APContact // Mastodon seriously allows for this condition? // Jul 14 2021 - See https://mastodon.online/@goes11 for a negative followers count if ($followers['totalItems'] < 0) { - $followers['totalItems'] = 0; + $followers['totalItems'] = 0; } if (!empty($followers['totalItems'])) { $apcontact['followers_count'] = $followers['totalItems']; From f16b1df83f28a68595df6174468d34dd53ae270e Mon Sep 17 00:00:00 2001 From: RealKinetix <kinetix@isurf.ca> Date: Wed, 14 Jul 2021 13:46:38 -0700 Subject: [PATCH 085/108] Adjust where the code is to avoid empty warning Shifted the code to avoid: PHP Warning: Undefined array key "totalItems" in /home/friendicadev/friendica/src/Model/APContact.php on line 277 --- src/Model/APContact.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Model/APContact.php b/src/Model/APContact.php index eb34e502e..64f45a845 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -272,12 +272,12 @@ class APContact if (!empty($apcontact['followers'])) { $followers = ActivityPub::fetchContent($apcontact['followers']); - // Mastodon seriously allows for this condition? - // Jul 14 2021 - See https://mastodon.online/@goes11 for a negative followers count - if ($followers['totalItems'] < 0) { - $followers['totalItems'] = 0; - } if (!empty($followers['totalItems'])) { + // Mastodon seriously allows for this condition? + // Jul 14 2021 - See https://mastodon.online/@goes11 for a negative followers count + if ($followers['totalItems'] < 0) { + $followers['totalItems'] = 0; + } $apcontact['followers_count'] = $followers['totalItems']; } } From a0107be2af513730fac9d1f83a57a92bd4d4f51c Mon Sep 17 00:00:00 2001 From: RealKinetix <kinetix@isurf.ca> Date: Wed, 14 Jul 2021 13:51:30 -0700 Subject: [PATCH 086/108] Negative numbers in following is a thing too Check & sanitize 'following' as well, as per: https://mastodon.social/@BLUW --- src/Model/APContact.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Model/APContact.php b/src/Model/APContact.php index 64f45a845..1ae34a40a 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -266,6 +266,11 @@ class APContact if (!empty($apcontact['following'])) { $following = ActivityPub::fetchContent($apcontact['following']); if (!empty($following['totalItems'])) { + // Mastodon seriously allows for this condition? + // Jul 14 2021 - See https://mastodon.social/@BLUW for a negative following count + if ($following['totalItems'] < 0) { + $following['totalItems'] = 0; + } $apcontact['following_count'] = $following['totalItems']; } } From 3a5523820cccf73f1702a384d80f4b6787d38553 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Thu, 15 Jul 2021 13:28:32 +0000 Subject: [PATCH 087/108] Legacy DFRN transport layer is removed --- database.sql | 46 +- doc/API-Friendica.md | 9 - doc/database.md | 1 - doc/database/db_challenge.md | 27 - doc/database/db_contact.md | 14 +- include/api.php | 64 -- mod/dfrn_confirm.php | 563 ------------------ mod/dfrn_notify.php | 276 +-------- mod/dfrn_poll.php | 527 +---------------- mod/dfrn_request.php | 653 --------------------- mod/follow.php | 22 +- mod/redir.php | 29 +- mod/unfollow.php | 3 - src/Database/DBStructure.php | 2 +- src/Model/Contact.php | 38 +- src/Model/Conversation.php | 2 +- src/Module/Notifications/Introductions.php | 8 +- src/Object/Notification/Introduction.php | 2 +- src/Protocol/DFRN.php | 441 +------------- src/Worker/Delivery.php | 10 +- src/Worker/OptimizeTables.php | 1 - static/dbstructure.config.php | 31 +- static/dbview.config.php | 16 - view/lang/C/messages.po | 489 +++++---------- view/templates/dfrn_req_confirm.tpl | 22 - view/templates/dfrn_request.tpl | 38 -- view/theme/frio/templates/dfrn_request.tpl | 40 -- 27 files changed, 199 insertions(+), 3175 deletions(-) delete mode 100644 doc/database/db_challenge.md delete mode 100644 mod/dfrn_confirm.php delete mode 100644 mod/dfrn_request.php delete mode 100644 view/templates/dfrn_req_confirm.tpl delete mode 100644 view/templates/dfrn_request.tpl delete mode 100644 view/theme/frio/templates/dfrn_request.tpl diff --git a/database.sql b/database.sql index 2e7a189b3..95e96a135 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2021.09-dev (Siberian Iris) --- DB_UPDATE_VERSION 1429 +-- DB_UPDATE_VERSION 1430 -- ------------------------------------------ @@ -117,7 +117,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( `self` boolean NOT NULL DEFAULT '0' COMMENT '1 if the contact is the user him/her self', `remote_self` boolean NOT NULL DEFAULT '0' COMMENT '', `rel` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'The kind of the relation between the user and the contact', - `duplex` boolean NOT NULL DEFAULT '0' COMMENT '', + `duplex` boolean NOT NULL DEFAULT '0' COMMENT 'Deprecated', `network` char(4) NOT NULL DEFAULT '' COMMENT 'Network of the contact', `protocol` char(4) NOT NULL DEFAULT '' COMMENT 'Protocol of the contact', `name` varchar(255) NOT NULL DEFAULT '' COMMENT 'Name that this contact is known by', @@ -133,9 +133,9 @@ CREATE TABLE IF NOT EXISTS `contact` ( `thumb` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo (thumb size)', `micro` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo (micro size)', `header` varchar(255) COMMENT 'Header picture', - `site-pubkey` text COMMENT '', - `issued-id` varchar(255) NOT NULL DEFAULT '' COMMENT '', - `dfrn-id` varchar(255) NOT NULL DEFAULT '' COMMENT '', + `site-pubkey` text COMMENT 'Deprecated', + `issued-id` varchar(255) NOT NULL DEFAULT '' COMMENT 'Deprecated', + `dfrn-id` varchar(255) NOT NULL DEFAULT '' COMMENT 'Deprecated', `url` varchar(255) NOT NULL DEFAULT '' COMMENT '', `nurl` varchar(255) NOT NULL DEFAULT '' COMMENT '', `uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the contact url', @@ -150,8 +150,8 @@ CREATE TABLE IF NOT EXISTS `contact` ( `confirm` varchar(255) COMMENT '', `subscribe` varchar(255) COMMENT '', `poco` varchar(255) COMMENT '', - `aes_allow` boolean NOT NULL DEFAULT '0' COMMENT '', - `ret-aes` boolean NOT NULL DEFAULT '0' COMMENT '', + `aes_allow` boolean NOT NULL DEFAULT '0' COMMENT 'Deprecated', + `ret-aes` boolean NOT NULL DEFAULT '0' COMMENT 'Deprecated', `usehub` boolean NOT NULL DEFAULT '0' COMMENT '', `subhub` boolean NOT NULL DEFAULT '0' COMMENT '', `hub-verify` varchar(255) NOT NULL DEFAULT '' COMMENT '', @@ -205,8 +205,6 @@ CREATE TABLE IF NOT EXISTS `contact` ( INDEX `nurl_uid` (`nurl`(128),`uid`), INDEX `nick_uid` (`nick`(128),`uid`), INDEX `attag_uid` (`attag`(96),`uid`), - INDEX `dfrn-id` (`dfrn-id`(64)), - INDEX `issued-id` (`issued-id`(64)), INDEX `network_uid_lastupdate` (`network`,`uid`,`last-update`), INDEX `uid_network_self_lastupdate` (`uid`,`network`,`self`,`last-update`), INDEX `uid_lastitem` (`uid`,`last-item`), @@ -462,20 +460,6 @@ CREATE TABLE IF NOT EXISTS `cache` ( INDEX `k_expires` (`k`,`expires`) ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Stores temporary data'; --- --- TABLE challenge --- -CREATE TABLE IF NOT EXISTS `challenge` ( - `id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID', - `challenge` varchar(255) NOT NULL DEFAULT '' COMMENT '', - `dfrn-id` varchar(255) NOT NULL DEFAULT '' COMMENT '', - `expire` int unsigned NOT NULL DEFAULT 0 COMMENT '', - `type` varchar(255) NOT NULL DEFAULT '' COMMENT '', - `last_update` varchar(255) NOT NULL DEFAULT '' COMMENT '', - PRIMARY KEY(`id`), - INDEX `expire` (`expire`) -) DEFAULT COLLATE utf8mb4_general_ci COMMENT=''; - -- -- TABLE config -- @@ -1684,7 +1668,6 @@ CREATE VIEW `post-user-view` AS SELECT `contact`.`uri-date` AS `uri-date`, `contact`.`avatar-date` AS `avatar-date`, `contact`.`thumb` AS `thumb`, - `contact`.`dfrn-id` AS `dfrn-id`, `post-user`.`author-id` AS `author-id`, `author`.`url` AS `author-link`, `author`.`addr` AS `author-addr`, @@ -1846,7 +1829,6 @@ CREATE VIEW `post-thread-user-view` AS SELECT `contact`.`uri-date` AS `uri-date`, `contact`.`avatar-date` AS `avatar-date`, `contact`.`thumb` AS `thumb`, - `contact`.`dfrn-id` AS `dfrn-id`, `post-thread-user`.`author-id` AS `author-id`, `author`.`url` AS `author-link`, `author`.`addr` AS `author-addr`, @@ -1993,7 +1975,6 @@ CREATE VIEW `post-view` AS SELECT `author`.`uri-date` AS `uri-date`, `author`.`avatar-date` AS `avatar-date`, `author`.`thumb` AS `thumb`, - `author`.`dfrn-id` AS `dfrn-id`, `post`.`author-id` AS `author-id`, `author`.`url` AS `author-link`, `author`.`addr` AS `author-addr`, @@ -2115,7 +2096,6 @@ CREATE VIEW `post-thread-view` AS SELECT `author`.`uri-date` AS `uri-date`, `author`.`avatar-date` AS `avatar-date`, `author`.`thumb` AS `thumb`, - `author`.`dfrn-id` AS `dfrn-id`, `post-thread`.`author-id` AS `author-id`, `author`.`url` AS `author-link`, `author`.`addr` AS `author-addr`, @@ -2270,7 +2250,6 @@ CREATE VIEW `owner-view` AS SELECT `contact`.`self` AS `self`, `contact`.`remote_self` AS `remote_self`, `contact`.`rel` AS `rel`, - `contact`.`duplex` AS `duplex`, `contact`.`network` AS `network`, `contact`.`protocol` AS `protocol`, `contact`.`name` AS `name`, @@ -2286,9 +2265,6 @@ CREATE VIEW `owner-view` AS SELECT `contact`.`thumb` AS `thumb`, `contact`.`micro` AS `micro`, `contact`.`header` AS `header`, - `contact`.`site-pubkey` AS `site-pubkey`, - `contact`.`issued-id` AS `issued-id`, - `contact`.`dfrn-id` AS `dfrn-id`, `contact`.`url` AS `url`, `contact`.`nurl` AS `nurl`, `contact`.`uri-id` AS `uri-id`, @@ -2302,8 +2278,6 @@ CREATE VIEW `owner-view` AS SELECT `contact`.`poll` AS `poll`, `contact`.`confirm` AS `confirm`, `contact`.`poco` AS `poco`, - `contact`.`aes_allow` AS `aes_allow`, - `contact`.`ret-aes` AS `ret-aes`, `contact`.`usehub` AS `usehub`, `contact`.`subhub` AS `subhub`, `contact`.`hub-verify` AS `hub-verify`, @@ -2547,12 +2521,6 @@ CREATE VIEW `account-user-view` AS SELECT `ucontact`.`subhub` AS `subhub`, `ucontact`.`hub-verify` AS `hub-verify`, `ucontact`.`reason` AS `reason`, - `ucontact`.`duplex` AS `dfrn-duplex`, - `ucontact`.`ret-aes` AS `dfrn-ret-aes`, - `ucontact`.`site-pubkey` AS `dfrn-site-pubkey`, - `ucontact`.`issued-id` AS `dfrn-issued-id`, - `ucontact`.`dfrn-id` AS `dfrn-id`, - `ucontact`.`aes_allow` AS `dfrn-aes_allow`, `contact`.`request` AS `dfrn-request`, `contact`.`notify` AS `dfrn-notify`, `contact`.`poll` AS `dfrn-poll`, diff --git a/doc/API-Friendica.md b/doc/API-Friendica.md index 62a71dc6b..af47638d2 100644 --- a/doc/API-Friendica.md +++ b/doc/API-Friendica.md @@ -689,15 +689,6 @@ General description of profile data in API returns: --- -### GET api/friendica/remoteauth - -Similar as /redir, redirects to `url` after DFRN authentication. - -#### Parameters - -- `c_url`: url of remote contact to auth to -- `url`: string, url to redirect after auth - ## Deprecated endpoints - POST api/statuses/mediap diff --git a/doc/database.md b/doc/database.md index 51f4ae5c6..b2f4e4322 100644 --- a/doc/database.md +++ b/doc/database.md @@ -15,7 +15,6 @@ Database Tables | [attach](help/database/db_attach) | file attachments | | [auth_codes](help/database/db_auth_codes) | OAuth usage | | [cache](help/database/db_cache) | Stores temporary data | -| [challenge](help/database/db_challenge) | | | [clients](help/database/db_clients) | OAuth usage | | [config](help/database/db_config) | main configuration storage | | [contact](help/database/db_contact) | contact table | diff --git a/doc/database/db_challenge.md b/doc/database/db_challenge.md deleted file mode 100644 index 161838909..000000000 --- a/doc/database/db_challenge.md +++ /dev/null @@ -1,27 +0,0 @@ -Table challenge -=========== - - - -Fields ------- - -| Field | Description | Type | Null | Key | Default | Extra | -| ----------- | ------------- | ------------ | ---- | --- | ------- | -------------- | -| id | sequential ID | int unsigned | NO | PRI | NULL | auto_increment | -| challenge | | varchar(255) | NO | | | | -| dfrn-id | | varchar(255) | NO | | | | -| expire | | int unsigned | NO | | 0 | | -| type | | varchar(255) | NO | | | | -| last_update | | varchar(255) | NO | | | | - -Indexes ------------- - -| Name | Fields | -| ------- | ------ | -| PRIMARY | id | -| expire | expire | - - -Return to [database documentation](help/database) diff --git a/doc/database/db_contact.md b/doc/database/db_contact.md index 5a97c6e4d..2d8d292ac 100644 --- a/doc/database/db_contact.md +++ b/doc/database/db_contact.md @@ -15,7 +15,7 @@ Fields | self | 1 if the contact is the user him/her self | boolean | NO | | 0 | | | remote_self | | boolean | NO | | 0 | | | rel | The kind of the relation between the user and the contact | tinyint unsigned | NO | | 0 | | -| duplex | | boolean | NO | | 0 | | +| duplex | Deprecated | boolean | NO | | 0 | | | network | Network of the contact | char(4) | NO | | | | | protocol | Protocol of the contact | char(4) | NO | | | | | name | Name that this contact is known by | varchar(255) | NO | | | | @@ -31,9 +31,9 @@ Fields | thumb | Link to the profile photo (thumb size) | varchar(255) | YES | | | | | micro | Link to the profile photo (micro size) | varchar(255) | YES | | | | | header | Header picture | varchar(255) | YES | | NULL | | -| site-pubkey | | text | YES | | NULL | | -| issued-id | | varchar(255) | NO | | | | -| dfrn-id | | varchar(255) | NO | | | | +| site-pubkey | Deprecated | text | YES | | NULL | | +| issued-id | Deprecated | varchar(255) | NO | | | | +| dfrn-id | Deprecated | varchar(255) | NO | | | | | url | | varchar(255) | NO | | | | | nurl | | varchar(255) | NO | | | | | uri-id | Id of the item-uri table entry that contains the contact url | int unsigned | YES | | NULL | | @@ -48,8 +48,8 @@ Fields | confirm | | varchar(255) | YES | | NULL | | | subscribe | | varchar(255) | YES | | NULL | | | poco | | varchar(255) | YES | | NULL | | -| aes_allow | | boolean | NO | | 0 | | -| ret-aes | | boolean | NO | | 0 | | +| aes_allow | Deprecated | boolean | NO | | 0 | | +| ret-aes | Deprecated | boolean | NO | | 0 | | | usehub | | boolean | NO | | 0 | | | subhub | | boolean | NO | | 0 | | | hub-verify | | varchar(255) | NO | | | | @@ -109,8 +109,6 @@ Indexes | nurl_uid | nurl(128), uid | | nick_uid | nick(128), uid | | attag_uid | attag(96), uid | -| dfrn-id | dfrn-id(64) | -| issued-id | issued-id(64) | | network_uid_lastupdate | network, uid, last-update | | uid_network_self_lastupdate | uid, network, self, last-update | | uid_lastitem | uid, last-item | diff --git a/include/api.php b/include/api.php index 951c2b3e5..1d1cdc8f6 100644 --- a/include/api.php +++ b/include/api.php @@ -4950,70 +4950,6 @@ function prepare_photo_data($type, $scale, $photo_id) return $data; } - -/** - * Similar as /mod/redir.php - * redirect to 'url' after dfrn auth - * - * Why this when there is mod/redir.php already? - * This use api_user() and api_login() - * - * params - * c_url: url of remote contact to auth to - * url: string, url to redirect after auth - */ -function api_friendica_remoteauth() -{ - $url = $_GET['url'] ?? ''; - $c_url = $_GET['c_url'] ?? ''; - - if ($url === '' || $c_url === '') { - throw new BadRequestException("Wrong parameters."); - } - - $c_url = Strings::normaliseLink($c_url); - - // traditional DFRN - - $contact = DBA::selectFirst('contact', [], ['uid' => api_user(), 'nurl' => $c_url]); - if (!DBA::isResult($contact)) { - throw new BadRequestException("Unknown contact"); - } - - $cid = $contact['id']; - - $dfrn_id = $contact['issued-id'] ?: $contact['dfrn-id']; - - if (($contact['network'] !== Protocol::DFRN) || empty($dfrn_id)) { - System::externalRedirect($url ?: $c_url); - } - - if ($contact['duplex'] && $contact['issued-id']) { - $orig_id = $contact['issued-id']; - $dfrn_id = '1:' . $orig_id; - } - if ($contact['duplex'] && $contact['dfrn-id']) { - $orig_id = $contact['dfrn-id']; - $dfrn_id = '0:' . $orig_id; - } - - $sec = Strings::getRandomHex(); - - $fields = ['uid' => api_user(), 'cid' => $cid, 'dfrn_id' => $dfrn_id, - 'sec' => $sec, 'expire' => time() + 45]; - DBA::insert('profile_check', $fields); - - Logger::info(API_LOG_PREFIX . 'for contact {contact}', ['module' => 'api', 'action' => 'friendica_remoteauth', 'contact' => $contact['name'], 'hey' => $sec]); - $dest = ($url ? '&destination_url=' . $url : ''); - - System::externalRedirect( - $contact['poll'] . '?dfrn_id=' . $dfrn_id - . '&dfrn_version=' . DFRN_PROTOCOL_VERSION - . '&type=profile&sec=' . $sec . $dest - ); -} -api_register_func('api/friendica/remoteauth', 'api_friendica_remoteauth', true); - /** * Return an item with announcer data if it had been announced * diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php deleted file mode 100644 index 47cc09326..000000000 --- a/mod/dfrn_confirm.php +++ /dev/null @@ -1,563 +0,0 @@ -<?php -/** - * @copyright Copyright (C) 2010-2021, the Friendica project - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. - * - * Friendship acceptance for DFRN contacts - * - * There are two possible entry points and three scenarios. - * - * 1. A form was submitted by our user approving a friendship that originated elsewhere. - * This may also be called from dfrn_request to automatically approve a friendship. - * - * 2. We may be the target or other side of the conversation to scenario 1, and will - * interact with that process on our own user's behalf. - * - * @see PDF with dfrn specs: https://github.com/friendica/friendica/blob/stable/spec/dfrn2.pdf - * You also find a graphic which describes the confirmation process at - * https://github.com/friendica/friendica/blob/stable/spec/dfrn2_contact_confirmation.png - */ - -use Friendica\App; -use Friendica\Core\Logger; -use Friendica\Core\Protocol; -use Friendica\Core\System; -use Friendica\Database\DBA; -use Friendica\DI; -use Friendica\Model\Contact; -use Friendica\Model\Group; -use Friendica\Model\Notification; -use Friendica\Model\User; -use Friendica\Protocol\Activity; -use Friendica\Util\Crypto; -use Friendica\Util\DateTimeFormat; -use Friendica\Util\Strings; -use Friendica\Util\XML; - -function dfrn_confirm_post(App $a, $handsfree = null) -{ - $node = null; - if (is_array($handsfree)) { - /* - * We were called directly from dfrn_request due to automatic friend acceptance. - * Any $_POST parameters we may require are supplied in the $handsfree array. - * - */ - $node = $handsfree['node']; - $a->interactive = false; // notice() becomes a no-op since nobody is there to see it - } elseif ($a->argc > 1) { - $node = $a->argv[1]; - } - - /* - * Main entry point. Scenario 1. Our user received a friend request notification (perhaps - * from another site) and clicked 'Approve'. - * $POST['source_url'] is not set. If it is, it indicates Scenario 2. - * - * We may also have been called directly from dfrn_request ($handsfree != null) due to - * this being a page type which supports automatic friend acceptance. That is also Scenario 1 - * since we are operating on behalf of our registered user to approve a friendship. - */ - if (empty($_POST['source_url'])) { - $uid = ($handsfree['uid'] ?? 0) ?: local_user(); - if (!$uid) { - notice(DI::l10n()->t('Permission denied.')); - return; - } - - $user = DBA::selectFirst('user', [], ['uid' => $uid]); - if (!DBA::isResult($user)) { - notice(DI::l10n()->t('Profile not found.')); - return; - } - - // These data elements may come from either the friend request notification form or $handsfree array. - if (is_array($handsfree)) { - Logger::log('Confirm in handsfree mode'); - $dfrn_id = $handsfree['dfrn_id']; - $intro_id = $handsfree['intro_id']; - $duplex = $handsfree['duplex']; - $cid = 0; - $hidden = intval($handsfree['hidden'] ?? 0); - } else { - $dfrn_id = Strings::escapeTags(trim($_POST['dfrn_id'] ?? '')); - $intro_id = intval($_POST['intro_id'] ?? 0); - $duplex = intval($_POST['duplex'] ?? 0); - $cid = intval($_POST['contact_id'] ?? 0); - $hidden = intval($_POST['hidden'] ?? 0); - } - - /* - * Ensure that dfrn_id has precedence when we go to find the contact record. - * We only want to search based on contact id if there is no dfrn_id, - * e.g. for OStatus network followers. - */ - if (strlen($dfrn_id)) { - $cid = 0; - } - - Logger::log('Confirming request for dfrn_id (issued) ' . $dfrn_id); - if ($cid) { - Logger::log('Confirming follower with contact_id: ' . $cid); - } - - /* - * The other person will have been issued an ID when they first requested friendship. - * Locate their record. At this time, their record will have both pending and blocked set to 1. - * There won't be any dfrn_id if this is a network follower, so use the contact_id instead. - */ - $r = q("SELECT * - FROM `contact` - WHERE ( - (`issued-id` != '' AND `issued-id` = '%s') - OR - (`id` = %d AND `id` != 0) - ) - AND `uid` = %d - AND `duplex` = 0 - LIMIT 1", - DBA::escape($dfrn_id), - intval($cid), - intval($uid) - ); - if (!DBA::isResult($r)) { - Logger::log('Contact not found in DB.'); - notice(DI::l10n()->t('Contact not found.')); - notice(DI::l10n()->t('This may occasionally happen if contact was requested by both persons and it has already been approved.')); - return; - } - - $contact = $r[0]; - - $contact_id = $contact['id']; - $relation = $contact['rel']; - $site_pubkey = $contact['site-pubkey']; - $dfrn_confirm = $contact['confirm']; - $aes_allow = $contact['aes_allow']; - $protocol = $contact['network']; - - /* - * Generate a key pair for all further communications with this person. - * We have a keypair for every contact, and a site key for unknown people. - * This provides a means to carry on relationships with other people if - * any single key is compromised. It is a robust key. We're much more - * worried about key leakage than anybody cracking it. - */ - $res = Crypto::newKeypair(4096); - - $private_key = $res['prvkey']; - $public_key = $res['pubkey']; - - // Save the private key. Send them the public key. - $fields = ['prvkey' => $private_key, 'protocol' => Protocol::DFRN]; - DBA::update('contact', $fields, ['id' => $contact_id]); - - $params = []; - - /* - * Per the DFRN protocol, we will verify both ends by encrypting the dfrn_id with our - * site private key (person on the other end can decrypt it with our site public key). - * Then encrypt our profile URL with the other person's site public key. They can decrypt - * it with their site private key. If the decryption on the other end fails for either - * item, it indicates tampering or key failure on at least one site and we will not be - * able to provide a secure communication pathway. - * - * If other site is willing to accept full encryption, (aes_allow is 1 AND we have php5.3 - * or later) then we encrypt the personal public key we send them using AES-256-CBC and a - * random key which is encrypted with their site public key. - */ - - $src_aes_key = random_bytes(64); - - $result = ''; - openssl_private_encrypt($dfrn_id, $result, $user['prvkey']); - - $params['dfrn_id'] = bin2hex($result); - $params['public_key'] = $public_key; - - $my_url = DI::baseUrl() . '/profile/' . $user['nickname']; - - openssl_public_encrypt($my_url, $params['source_url'], $site_pubkey); - $params['source_url'] = bin2hex($params['source_url']); - - if ($aes_allow && function_exists('openssl_encrypt')) { - openssl_public_encrypt($src_aes_key, $params['aes_key'], $site_pubkey); - $params['aes_key'] = bin2hex($params['aes_key']); - $params['public_key'] = bin2hex(openssl_encrypt($public_key, 'AES-256-CBC', $src_aes_key)); - } - - $params['dfrn_version'] = DFRN_PROTOCOL_VERSION; - if ($duplex == 1) { - $params['duplex'] = 1; - } - - if ($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY) { - $params['page'] = 1; - } - - if ($user['page-flags'] == User::PAGE_FLAGS_PRVGROUP) { - $params['page'] = 2; - } - - Logger::debug('Confirm: posting data', ['confirm' => $dfrn_confirm, 'parameter' => $params]); - - /* - * - * POST all this stuff to the other site. - * Temporarily raise the network timeout to 120 seconds because the default 60 - * doesn't always give the other side quite enough time to decrypt everything. - * - */ - - $res = DI::httpRequest()->post($dfrn_confirm, $params, [], 120)->getBody(); - - Logger::log(' Confirm: received data: ' . $res, Logger::DATA); - - // Now figure out what they responded. Try to be robust if the remote site is - // having difficulty and throwing up errors of some kind. - - $leading_junk = substr($res, 0, strpos($res, '<?xml')); - - $res = substr($res, strpos($res, '<?xml')); - if (!strlen($res)) { - // No XML at all, this exchange is messed up really bad. - // We shouldn't proceed, because the xml parser might choke, - // and $status is going to be zero, which indicates success. - // We can hardly call this a success. - notice(DI::l10n()->t('Response from remote site was not understood.')); - return; - } - - if (strlen($leading_junk) && DI::config()->get('system', 'debugging')) { - // This might be more common. Mixed error text and some XML. - // If we're configured for debugging, show the text. Proceed in either case. - notice(DI::l10n()->t('Unexpected response from remote site: ') . $leading_junk); - } - - if (stristr($res, "<status") === false) { - // wrong xml! stop here! - Logger::log('Unexpected response posting to ' . $dfrn_confirm); - notice(DI::l10n()->t('Unexpected response from remote site: ') . EOL . htmlspecialchars($res)); - return; - } - - $xml = XML::parseString($res); - $status = (int) $xml->status; - $message = XML::unescape($xml->message); // human readable text of what may have gone wrong. - switch ($status) { - case 0: - info(DI::l10n()->t("Confirmation completed successfully.")); - break; - case 1: - // birthday paradox - generate new dfrn-id and fall through. - $new_dfrn_id = Strings::getRandomHex(); - q("UPDATE contact SET `issued-id` = '%s' WHERE `id` = %d AND `uid` = %d", - DBA::escape($new_dfrn_id), - intval($contact_id), - intval($uid) - ); - - case 2: - notice(DI::l10n()->t("Temporary failure. Please wait and try again.")); - break; - case 3: - notice(DI::l10n()->t("Introduction failed or was revoked.")); - break; - } - - if (strlen($message)) { - notice(DI::l10n()->t('Remote site reported: ') . $message); - } - - if (($status == 0) && $intro_id) { - $intro = DBA::selectFirst('intro', ['note'], ['id' => $intro_id]); - if (DBA::isResult($intro)) { - DBA::update('contact', ['reason' => $intro['note']], ['id' => $contact_id]); - } - - // Success. Delete the notification. - DBA::delete('intro', ['id' => $intro_id]); - } - - if ($status != 0) { - return; - } - - /* - * We have now established a relationship with the other site. - * Let's make our own personal copy of their profile photo so we don't have - * to always load it from their site. - * - * We will also update the contact record with the nature and scope of the relationship. - */ - Contact::updateAvatar($contact_id, $contact['photo']); - - Logger::log('dfrn_confirm: confirm - imported photos'); - - $new_relation = Contact::FOLLOWER; - - if (($relation == Contact::SHARING) || ($duplex)) { - $new_relation = Contact::FRIEND; - } - - if (($relation == Contact::SHARING) && ($duplex)) { - $duplex = 0; - } - - $r = q("UPDATE `contact` SET `rel` = %d, - `name-date` = '%s', - `uri-date` = '%s', - `blocked` = 0, - `pending` = 0, - `duplex` = %d, - `hidden` = %d, - `network` = '%s' WHERE `id` = %d - ", - intval($new_relation), - DBA::escape(DateTimeFormat::utcNow()), - DBA::escape(DateTimeFormat::utcNow()), - intval($duplex), - intval($hidden), - DBA::escape(Protocol::DFRN), - intval($contact_id) - ); - - // reload contact info - $contact = DBA::selectFirst('contact', [], ['id' => $contact_id]); - - Group::addMember(User::getDefaultGroup($uid, $contact["network"]), $contact['id']); - - // Let's send our user to the contact editor in case they want to - // do anything special with this new friend. - if ($handsfree === null) { - DI::baseUrl()->redirect('contact/' . intval($contact_id)); - } else { - return; - } - //NOTREACHED - } - - /* - * End of Scenario 1. [Local confirmation of remote friend request]. - * - * Begin Scenario 2. This is the remote response to the above scenario. - * This will take place on the site that originally initiated the friend request. - * In the section above where the confirming party makes a POST and - * retrieves xml status information, they are communicating with the following code. - */ - if (!empty($_POST['source_url'])) { - // We are processing an external confirmation to an introduction created by our user. - $public_key = $_POST['public_key'] ?? ''; - $dfrn_id = hex2bin($_POST['dfrn_id'] ?? ''); - $source_url = hex2bin($_POST['source_url'] ?? ''); - $aes_key = $_POST['aes_key'] ?? ''; - $duplex = intval($_POST['duplex'] ?? 0); - $page = intval($_POST['page'] ?? 0); - - $forum = (($page == 1) ? 1 : 0); - $prv = (($page == 2) ? 1 : 0); - - Logger::notice('requestee contacted', ['node' => $node]); - - Logger::debug('request', ['POST' => $_POST]); - - // If $aes_key is set, both of these items require unpacking from the hex transport encoding. - - if (!empty($aes_key)) { - $aes_key = hex2bin($aes_key); - $public_key = hex2bin($public_key); - } - - // Find our user's account - $user = DBA::selectFirst('user', [], ['nickname' => $node]); - if (!DBA::isResult($user)) { - $message = DI::l10n()->t('No user record found for \'%s\' ', $node); - System::xmlExit(3, $message); // failure - // NOTREACHED - } - - $my_prvkey = $user['prvkey']; - $local_uid = $user['uid']; - - - if (!strstr($my_prvkey, 'PRIVATE KEY')) { - $message = DI::l10n()->t('Our site encryption key is apparently messed up.'); - System::xmlExit(3, $message); - } - - // verify everything - - $decrypted_source_url = ""; - openssl_private_decrypt($source_url, $decrypted_source_url, $my_prvkey); - - - if (!strlen($decrypted_source_url)) { - $message = DI::l10n()->t('Empty site URL was provided or URL could not be decrypted by us.'); - System::xmlExit(3, $message); - // NOTREACHED - } - - $contact = DBA::selectFirst('contact', [], ['url' => $decrypted_source_url, 'uid' => $local_uid]); - if (!DBA::isResult($contact)) { - if (strstr($decrypted_source_url, 'http:')) { - $newurl = str_replace('http:', 'https:', $decrypted_source_url); - } else { - $newurl = str_replace('https:', 'http:', $decrypted_source_url); - } - - $contact = DBA::selectFirst('contact', [], ['url' => $newurl, 'uid' => $local_uid]); - if (!DBA::isResult($contact)) { - // this is either a bogus confirmation (?) or we deleted the original introduction. - $message = DI::l10n()->t('Contact record was not found for you on our site.'); - System::xmlExit(3, $message); - return; // NOTREACHED - } - } - - $relation = $contact['rel']; - - // Decrypt all this stuff we just received - - $foreign_pubkey = $contact['site-pubkey']; - $dfrn_record = $contact['id']; - - if (!$foreign_pubkey) { - $message = DI::l10n()->t('Site public key not available in contact record for URL %s.', $decrypted_source_url); - System::xmlExit(3, $message); - } - - $decrypted_dfrn_id = ""; - openssl_public_decrypt($dfrn_id, $decrypted_dfrn_id, $foreign_pubkey); - - if (strlen($aes_key)) { - $decrypted_aes_key = ""; - openssl_private_decrypt($aes_key, $decrypted_aes_key, $my_prvkey); - $dfrn_pubkey = openssl_decrypt($public_key, 'AES-256-CBC', $decrypted_aes_key); - } else { - $dfrn_pubkey = $public_key; - } - - if (DBA::exists('contact', ['dfrn-id' => $decrypted_dfrn_id])) { - $message = DI::l10n()->t('The ID provided by your system is a duplicate on our system. It should work if you try again.'); - System::xmlExit(1, $message); // Birthday paradox - duplicate dfrn-id - // NOTREACHED - } - - $r = q("UPDATE `contact` SET `dfrn-id` = '%s', `pubkey` = '%s' WHERE `id` = %d", - DBA::escape($decrypted_dfrn_id), - DBA::escape($dfrn_pubkey), - intval($dfrn_record) - ); - if (!DBA::isResult($r)) { - $message = DI::l10n()->t('Unable to set your contact credentials on our system.'); - System::xmlExit(3, $message); - } - - // It's possible that the other person also requested friendship. - // If it is a duplex relationship, ditch the issued-id if one exists. - - if ($duplex) { - q("UPDATE `contact` SET `issued-id` = '' WHERE `id` = %d", - intval($dfrn_record) - ); - } - - // We're good but now we have to scrape the profile photo and send notifications. - $contact = DBA::selectFirst('contact', ['photo'], ['id' => $dfrn_record]); - if (DBA::isResult($contact)) { - $photo = $contact['photo']; - } else { - $photo = DI::baseUrl() . Contact::DEFAULT_AVATAR_PHOTO; - } - - Contact::updateAvatar($dfrn_record, $photo); - - Logger::log('dfrn_confirm: request - photos imported'); - - $new_relation = Contact::SHARING; - - if (($relation == Contact::FOLLOWER) || ($duplex)) { - $new_relation = Contact::FRIEND; - } - - if (($relation == Contact::FOLLOWER) && ($duplex)) { - $duplex = 0; - } - - $r = q("UPDATE `contact` SET - `rel` = %d, - `name-date` = '%s', - `uri-date` = '%s', - `blocked` = 0, - `pending` = 0, - `duplex` = %d, - `forum` = %d, - `prv` = %d, - `network` = '%s' WHERE `id` = %d - ", - intval($new_relation), - DBA::escape(DateTimeFormat::utcNow()), - DBA::escape(DateTimeFormat::utcNow()), - intval($duplex), - intval($forum), - intval($prv), - DBA::escape(Protocol::DFRN), - intval($dfrn_record) - ); - if (!DBA::isResult($r)) { // indicates schema is messed up or total db failure - $message = DI::l10n()->t('Unable to update your contact profile details on our system'); - System::xmlExit(3, $message); - } - - // Otherwise everything seems to have worked and we are almost done. Yay! - // Send an email notification - - Logger::log('dfrn_confirm: request: info updated'); - - $combined = null; - $r = q("SELECT `contact`.*, `user`.* - FROM `contact` - LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid` - WHERE `contact`.`id` = %d - LIMIT 1", - intval($dfrn_record) - ); - if (DBA::isResult($r)) { - $combined = $r[0]; - - if ($combined['notify-flags'] & Notification\Type::CONFIRM) { - $mutual = ($new_relation == Contact::FRIEND); - notification([ - 'type' => Notification\Type::CONFIRM, - 'otype' => Notification\ObjectType::INTRO, - 'verb' => ($mutual ? Activity::FRIEND : Activity::FOLLOW), - 'uid' => $combined['uid'], - 'cid' => $combined['id'], - 'link' => DI::baseUrl() . '/contact/' . $dfrn_record, - ]); - } - } - - System::xmlExit(0); // Success - return; // NOTREACHED - ////////////////////// End of this scenario /////////////////////////////////////////////// - } - - // somebody arrived here by mistake or they are fishing. Send them to the homepage. - DI::baseUrl()->redirect(); - // NOTREACHED -} diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index f43357fd4..f5a1d97bf 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -26,14 +26,12 @@ use Friendica\App; use Friendica\Core\Logger; use Friendica\Core\System; use Friendica\Database\DBA; -use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Conversation; -use Friendica\Model\User; +use Friendica\Network\HTTPException; use Friendica\Protocol\DFRN; use Friendica\Protocol\Diaspora; use Friendica\Util\Network; -use Friendica\Util\Strings; function dfrn_notify_post(App $a) { $postdata = Network::postdata(); @@ -53,148 +51,7 @@ function dfrn_notify_post(App $a) { salmon_post($a, $postdata); } } - - $dfrn_id = (!empty($_POST['dfrn_id']) ? Strings::escapeTags(trim($_POST['dfrn_id'])) : ''); - $dfrn_version = (!empty($_POST['dfrn_version']) ? (float) $_POST['dfrn_version'] : 2.0); - $challenge = (!empty($_POST['challenge']) ? Strings::escapeTags(trim($_POST['challenge'])) : ''); - $data = $_POST['data'] ?? ''; - $key = $_POST['key'] ?? ''; - $rino_remote = (!empty($_POST['rino']) ? intval($_POST['rino']) : 0); - $dissolve = (!empty($_POST['dissolve']) ? intval($_POST['dissolve']) : 0); - $perm = (!empty($_POST['perm']) ? Strings::escapeTags(trim($_POST['perm'])) : 'r'); - $ssl_policy = (!empty($_POST['ssl_policy']) ? Strings::escapeTags(trim($_POST['ssl_policy'])): 'none'); - $page = (!empty($_POST['page']) ? intval($_POST['page']) : 0); - - $forum = (($page == 1) ? 1 : 0); - $prv = (($page == 2) ? 1 : 0); - - $writable = (-1); - if ($dfrn_version >= 2.21) { - $writable = (($perm === 'rw') ? 1 : 0); - } - - $direction = (-1); - if (strpos($dfrn_id, ':') == 1) { - $direction = intval(substr($dfrn_id, 0, 1)); - $dfrn_id = substr($dfrn_id, 2); - } - - if (!DBA::exists('challenge', ['dfrn-id' => $dfrn_id, 'challenge' => $challenge])) { - Logger::log('could not match challenge to dfrn_id ' . $dfrn_id . ' challenge=' . $challenge); - System::xmlExit(3, 'Could not match challenge'); - } - - DBA::delete('challenge', ['dfrn-id' => $dfrn_id, 'challenge' => $challenge]); - - $user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]); - if (!DBA::isResult($user)) { - Logger::log('User not found for nickname ' . $a->argv[1]); - System::xmlExit(3, 'User not found'); - } - - // find the local user who owns this relationship. - $condition = []; - switch ($direction) { - case (-1): - $condition = ["(`issued-id` = ? OR `dfrn-id` = ?) AND `uid` = ?", $dfrn_id, $dfrn_id, $user['uid']]; - break; - case 0: - $condition = ['issued-id' => $dfrn_id, 'duplex' => true, 'uid' => $user['uid']]; - break; - case 1: - $condition = ['dfrn-id' => $dfrn_id, 'duplex' => true, 'uid' => $user['uid']]; - break; - default: - System::xmlExit(3, 'Invalid direction'); - break; // NOTREACHED - } - - $contact = DBA::selectFirst('contact', ['id'], $condition); - if (!DBA::isResult($contact)) { - Logger::log('contact not found for dfrn_id ' . $dfrn_id); - System::xmlExit(3, 'Contact not found'); - } - - // $importer in this case contains the contact record for the remote contact joined with the user record of our user. - $importer = DFRN::getImporter($contact['id'], $user['uid']); - - if ((($writable != (-1)) && ($writable != $importer['writable'])) || ($importer['forum'] != $forum) || ($importer['prv'] != $prv)) { - $fields = ['writable' => ($writable == (-1)) ? $importer['writable'] : $writable, - 'forum' => $forum, 'prv' => $prv]; - DBA::update('contact', $fields, ['id' => $importer['id']]); - - if ($writable != (-1)) { - $importer['writable'] = $writable; - } - $importer['forum'] = $page; - } - - - // if contact's ssl policy changed, update our links - - $importer = Contact::updateSslPolicy($importer, $ssl_policy); - - Logger::log('data: ' . $data, Logger::DATA); - - if ($dissolve == 1) { - // Relationship is dissolved permanently - Contact::remove($importer['id']); - Logger::log('relationship dissolved : ' . $importer['name'] . ' dissolved ' . $importer['username']); - System::xmlExit(0, 'relationship dissolved'); - } - - $rino = DI::config()->get('system', 'rino_encrypt'); - $rino = intval($rino); - - if (strlen($key)) { - - // if local rino is lower than remote rino, abort: should not happen! - // but only for $remote_rino > 1, because old code did't send rino version - if ($rino_remote > 1 && $rino < $rino_remote) { - Logger::log("rino version '$rino_remote' is lower than supported '$rino'"); - System::xmlExit(0, "rino version '$rino_remote' is lower than supported '$rino'"); - } - - $rawkey = hex2bin(trim($key)); - Logger::log('rino: md5 raw key: ' . md5($rawkey), Logger::DATA); - - $final_key = ''; - - if ($dfrn_version >= 2.1) { - if (($importer['duplex'] && strlen($importer['cprvkey'])) || !strlen($importer['cpubkey'])) { - openssl_private_decrypt($rawkey, $final_key, $importer['cprvkey']); - } else { - openssl_public_decrypt($rawkey, $final_key, $importer['cpubkey']); - } - } else { - if (($importer['duplex'] && strlen($importer['cpubkey'])) || !strlen($importer['cprvkey'])) { - openssl_public_decrypt($rawkey, $final_key, $importer['cpubkey']); - } else { - openssl_private_decrypt($rawkey, $final_key, $importer['cprvkey']); - } - } - - switch ($rino_remote) { - case 0: - case 1: - // we got a key. old code send only the key, without RINO version. - // we assume RINO 1 if key and no RINO version - $data = DFRN::aesDecrypt(hex2bin($data), $final_key); - break; - default: - Logger::log("rino: invalid sent version '$rino_remote'"); - System::xmlExit(0, "Invalid sent version '$rino_remote'"); - } - - Logger::log('rino: decrypted data: ' . $data, Logger::DATA); - } - - Logger::log('Importing post from ' . $importer['addr'] . ' to ' . $importer['nickname'] . ' with the RINO ' . $rino_remote . ' encryption.', Logger::DEBUG); - - $ret = DFRN::import($data, $importer, Conversation::PARCEL_LEGACY_DFRN, Conversation::PUSH); - System::xmlExit($ret, 'Processed'); - - // NOTREACHED + throw new HTTPException\BadRequestException(); } function dfrn_dispatch_public($postdata) @@ -261,132 +118,5 @@ function dfrn_dispatch_private($user, $postdata) } function dfrn_notify_content(App $a) { - - if (!empty($_GET['dfrn_id'])) { - - /* - * initial communication from external contact, $direction is their direction. - * If this is a duplex communication, ours will be the opposite. - */ - - $dfrn_id = Strings::escapeTags(trim($_GET['dfrn_id'])); - $rino_remote = (!empty($_GET['rino']) ? intval($_GET['rino']) : 0); - $type = ""; - $last_update = ""; - - Logger::log('new notification dfrn_id=' . $dfrn_id); - - $direction = (-1); - if (strpos($dfrn_id,':') == 1) { - $direction = intval(substr($dfrn_id,0,1)); - $dfrn_id = substr($dfrn_id,2); - } - - $hash = Strings::getRandomHex(); - - $status = 0; - - DBA::delete('challenge', ["`expire` < ?", time()]); - - $fields = ['challenge' => $hash, 'dfrn-id' => $dfrn_id, 'expire' => time() + 90, - 'type' => $type, 'last_update' => $last_update]; - DBA::insert('challenge', $fields); - - Logger::log('challenge=' . $hash, Logger::DATA); - - $user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]); - if (!DBA::isResult($user)) { - Logger::log('User not found for nickname ' . $a->argv[1]); - exit(); - } - - $condition = []; - switch ($direction) { - case (-1): - $condition = ["(`issued-id` = ? OR `dfrn-id` = ?) AND `uid` = ?", $dfrn_id, $dfrn_id, $user['uid']]; - $my_id = $dfrn_id; - break; - case 0: - $condition = ['issued-id' => $dfrn_id, 'duplex' => true, 'uid' => $user['uid']]; - $my_id = '1:' . $dfrn_id; - break; - case 1: - $condition = ['dfrn-id' => $dfrn_id, 'duplex' => true, 'uid' => $user['uid']]; - $my_id = '0:' . $dfrn_id; - break; - default: - $status = 1; - $my_id = ''; - break; - } - - $contact = DBA::selectFirst('contact', ['id'], $condition); - if (!DBA::isResult($contact)) { - Logger::log('contact not found for dfrn_id ' . $dfrn_id); - System::xmlExit(3, 'Contact not found'); - } - - // $importer in this case contains the contact record for the remote contact joined with the user record of our user. - $importer = DFRN::getImporter($contact['id'], $user['uid']); - if (empty($importer)) { - Logger::log('No importer data found for user ' . $a->argv[1] . ' and contact ' . $dfrn_id); - exit(); - } - - Logger::log("Remote rino version: ".$rino_remote." for ".$importer["url"], Logger::DATA); - - $challenge = ''; - $encrypted_id = ''; - $id_str = $my_id . '.' . mt_rand(1000,9999); - - $prv_key = trim($importer['cprvkey']); - $pub_key = trim($importer['cpubkey']); - $dplx = intval($importer['duplex']); - - if (($dplx && strlen($prv_key)) || (strlen($prv_key) && !strlen($pub_key))) { - openssl_private_encrypt($hash, $challenge, $prv_key); - openssl_private_encrypt($id_str, $encrypted_id, $prv_key); - } elseif (strlen($pub_key)) { - openssl_public_encrypt($hash, $challenge, $pub_key); - openssl_public_encrypt($id_str, $encrypted_id, $pub_key); - } else { - /// @TODO these kind of else-blocks are making the code harder to understand - $status = 1; - } - - $challenge = bin2hex($challenge); - $encrypted_id = bin2hex($encrypted_id); - - - $rino = DI::config()->get('system', 'rino_encrypt'); - $rino = intval($rino); - - Logger::log("Local rino version: ". $rino, Logger::DATA); - - // if requested rino is lower than enabled local rino, lower local rino version - // if requested rino is higher than enabled local rino, reply with local rino - if ($rino_remote < $rino) { - $rino = $rino_remote; - } - - if (($importer['rel'] && ($importer['rel'] != Contact::SHARING)) || ($importer['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) { - $perm = 'rw'; - } else { - $perm = 'r'; - } - - header("Content-type: text/xml"); - - echo '<?xml version="1.0" encoding="UTF-8"?>' . "\r\n" - . '<dfrn_notify>' . "\r\n" - . "\t" . '<status>' . $status . '</status>' . "\r\n" - . "\t" . '<dfrn_version>' . DFRN_PROTOCOL_VERSION . '</dfrn_version>' . "\r\n" - . "\t" . '<rino>' . $rino . '</rino>' . "\r\n" - . "\t" . '<perm>' . $perm . '</perm>' . "\r\n" - . "\t" . '<dfrn_id>' . $encrypted_id . '</dfrn_id>' . "\r\n" - . "\t" . '<challenge>' . $challenge . '</challenge>' . "\r\n" - . '</dfrn_notify>' . "\r\n"; - - exit(); - } + throw new HTTPException\NotFoundException(); } diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php index f0a8e855e..7fd3abbd9 100644 --- a/mod/dfrn_poll.php +++ b/mod/dfrn_poll.php @@ -20,536 +20,17 @@ */ use Friendica\App; -use Friendica\Core\Logger; -use Friendica\Core\Session; -use Friendica\Core\System; -use Friendica\Database\DBA; -use Friendica\DI; -use Friendica\Protocol\DFRN; use Friendica\Protocol\OStatus; -use Friendica\Util\Strings; -use Friendica\Util\XML; +use Friendica\Network\HTTPException; function dfrn_poll_init(App $a) { - DI::auth()->withSession($a); - - $dfrn_id = $_GET['dfrn_id'] ?? ''; - $type = ($_GET['type'] ?? '') ?: 'data'; - $last_update = $_GET['last_update'] ?? ''; - $destination_url = $_GET['destination_url'] ?? ''; - $challenge = $_GET['challenge'] ?? ''; - $sec = $_GET['sec'] ?? ''; - $dfrn_version = floatval(($_GET['dfrn_version'] ?? 0.0) ?: 2.0); - $quiet = !empty($_GET['quiet']); - - // Possibly it is an OStatus compatible server that requests a user feed - $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? ''; - if (($a->argc > 1) && ($dfrn_id == '') && !strstr($user_agent, 'Friendica')) { + if ($a->argc > 1) { $nickname = $a->argv[1]; header("Content-type: application/atom+xml"); + $last_update = $_GET['last_update'] ?? ''; echo OStatus::feed($nickname, $last_update, 10); exit(); } - - $direction = -1; - - if (strpos($dfrn_id, ':') == 1) { - $direction = intval(substr($dfrn_id, 0, 1)); - $dfrn_id = substr($dfrn_id, 2); - } - - $hidewall = false; - - if (($dfrn_id === '') && empty($_POST['dfrn_id'])) { - if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) { - throw new \Friendica\Network\HTTPException\ForbiddenException(); - } - - $user = ''; - if ($a->argc > 1) { - $r = q("SELECT `hidewall`,`nickname` FROM `user` WHERE `user`.`nickname` = '%s' LIMIT 1", - DBA::escape($a->argv[1]) - ); - if (!$r) { - throw new \Friendica\Network\HTTPException\NotFoundException(); - } - - $hidewall = ($r[0]['hidewall'] && !local_user()); - - $user = $r[0]['nickname']; - } - - Logger::log('dfrn_poll: public feed request from ' . $_SERVER['REMOTE_ADDR'] . ' for ' . $user); - header("Content-type: application/atom+xml"); - echo DFRN::feed('', $user, $last_update, 0, $hidewall); - exit(); - } - - if (($type === 'profile') && (!strlen($sec))) { - $sql_extra = ''; - switch ($direction) { - case -1: - $sql_extra = sprintf(" AND ( `dfrn-id` = '%s' OR `issued-id` = '%s' ) ", DBA::escape($dfrn_id), DBA::escape($dfrn_id)); - $my_id = $dfrn_id; - break; - case 0: - $sql_extra = sprintf(" AND `issued-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - $my_id = '1:' . $dfrn_id; - break; - case 1: - $sql_extra = sprintf(" AND `dfrn-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - $my_id = '0:' . $dfrn_id; - break; - default: - DI::baseUrl()->redirect(); - break; // NOTREACHED - } - - $r = q("SELECT `contact`.*, `user`.`username`, `user`.`nickname` - FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid` - WHERE `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - AND `user`.`nickname` = '%s' $sql_extra LIMIT 1", - DBA::escape($a->argv[1]) - ); - - if (DBA::isResult($r)) { - $s = DI::httpRequest()->fetch($r[0]['poll'] . '?dfrn_id=' . $my_id . '&type=profile-check'); - - Logger::log("dfrn_poll: old profile returns " . $s, Logger::DATA); - - if (strlen($s)) { - $xml = XML::parseString($s); - - if ((int)$xml->status === 1) { - $_SESSION['authenticated'] = 1; - $_SESSION['visitor_id'] = $r[0]['id']; - $_SESSION['visitor_home'] = $r[0]['url']; - $_SESSION['visitor_handle'] = $r[0]['addr']; - $_SESSION['visitor_visiting'] = $r[0]['uid']; - $_SESSION['my_url'] = $r[0]['url']; - $_SESSION['remote_comment'] = $r[0]['subscribe']; - - Session::setVisitorsContacts(); - - if (!$quiet) { - info(DI::l10n()->t('%1$s welcomes %2$s', $r[0]['username'], $r[0]['name'])); - } - - // Visitors get 1 day session. - $session_id = session_id(); - $expire = time() + 86400; - q("UPDATE `session` SET `expire` = '%s' WHERE `sid` = '%s'", - DBA::escape($expire), - DBA::escape($session_id) - ); - } - } - - $profile = (count($r) > 0 && isset($r[0]['nickname']) ? $r[0]['nickname'] : ''); - if (!empty($destination_url)) { - System::externalRedirect($destination_url); - } else { - DI::baseUrl()->redirect('profile/' . $profile); - } - } - DI::baseUrl()->redirect(); - } - - if ($type === 'profile-check' && $dfrn_version < 2.2) { - if ((strlen($challenge)) && (strlen($sec))) { - DBA::delete('profile_check', ["`expire` < ?", time()]); - $r = q("SELECT * FROM `profile_check` WHERE `sec` = '%s' ORDER BY `expire` DESC LIMIT 1", - DBA::escape($sec) - ); - if (!DBA::isResult($r)) { - System::xmlExit(3, 'No ticket'); - // NOTREACHED - } - - $orig_id = $r[0]['dfrn_id']; - if (strpos($orig_id, ':')) { - $orig_id = substr($orig_id, 2); - } - - $c = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", - intval($r[0]['cid']) - ); - if (!DBA::isResult($c)) { - System::xmlExit(3, 'No profile'); - } - - $contact = $c[0]; - - $sent_dfrn_id = hex2bin($dfrn_id); - $challenge = hex2bin($challenge); - - $final_dfrn_id = ''; - - if (($contact['duplex']) && strlen($contact['prvkey'])) { - openssl_private_decrypt($sent_dfrn_id, $final_dfrn_id, $contact['prvkey']); - openssl_private_decrypt($challenge, $decoded_challenge, $contact['prvkey']); - } else { - openssl_public_decrypt($sent_dfrn_id, $final_dfrn_id, $contact['pubkey']); - openssl_public_decrypt($challenge, $decoded_challenge, $contact['pubkey']); - } - - $final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.')); - - if (strpos($final_dfrn_id, ':') == 1) { - $final_dfrn_id = substr($final_dfrn_id, 2); - } - - if ($final_dfrn_id != $orig_id) { - Logger::log('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, Logger::DEBUG); - // did not decode properly - cannot trust this site - System::xmlExit(3, 'Bad decryption'); - } - - header("Content-type: text/xml"); - echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?><dfrn_poll><status>0</status><challenge>$decoded_challenge</challenge><sec>$sec</sec></dfrn_poll>"; - exit(); - // NOTREACHED - } else { - // old protocol - switch ($direction) { - case 1: - $dfrn_id = '0:' . $dfrn_id; - break; - case 0: - $dfrn_id = '1:' . $dfrn_id; - break; - default: - break; - } - - DBA::delete('profile_check', ["`expire` < ?", time()]); - $r = q("SELECT * FROM `profile_check` WHERE `dfrn_id` = '%s' ORDER BY `expire` DESC", - DBA::escape($dfrn_id)); - if (DBA::isResult($r)) { - System::xmlExit(1); - return; // NOTREACHED - } - System::xmlExit(0); - return; // NOTREACHED - } - } -} - -function dfrn_poll_post(App $a) -{ - $dfrn_id = $_POST['dfrn_id'] ?? ''; - $challenge = $_POST['challenge'] ?? ''; - $sec = $_POST['sec'] ?? ''; - $ptype = $_POST['type'] ?? ''; - $perm = ($_POST['perm'] ?? '') ?: 'r'; - $dfrn_version = floatval(($_GET['dfrn_version'] ?? 0.0) ?: 2.0); - - if ($ptype === 'profile-check') { - if (strlen($challenge) && strlen($sec)) { - Logger::log('dfrn_poll: POST: profile-check'); - - DBA::delete('profile_check', ["`expire` < ?", time()]); - $r = q("SELECT * FROM `profile_check` WHERE `sec` = '%s' ORDER BY `expire` DESC LIMIT 1", - DBA::escape($sec) - ); - if (!DBA::isResult($r)) { - System::xmlExit(3, 'No ticket'); - // NOTREACHED - } - - $orig_id = $r[0]['dfrn_id']; - if (strpos($orig_id, ':')) { - $orig_id = substr($orig_id, 2); - } - - $c = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", - intval($r[0]['cid']) - ); - if (!DBA::isResult($c)) { - System::xmlExit(3, 'No profile'); - } - - $contact = $c[0]; - - $sent_dfrn_id = hex2bin($dfrn_id); - $challenge = hex2bin($challenge); - - $final_dfrn_id = ''; - - if ($contact['duplex'] && strlen($contact['prvkey'])) { - openssl_private_decrypt($sent_dfrn_id, $final_dfrn_id, $contact['prvkey']); - openssl_private_decrypt($challenge, $decoded_challenge, $contact['prvkey']); - } else { - openssl_public_decrypt($sent_dfrn_id, $final_dfrn_id, $contact['pubkey']); - openssl_public_decrypt($challenge, $decoded_challenge, $contact['pubkey']); - } - - $final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.')); - - if (strpos($final_dfrn_id, ':') == 1) { - $final_dfrn_id = substr($final_dfrn_id, 2); - } - - if ($final_dfrn_id != $orig_id) { - Logger::log('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, Logger::DEBUG); - // did not decode properly - cannot trust this site - System::xmlExit(3, 'Bad decryption'); - } - - header("Content-type: text/xml"); - echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?><dfrn_poll><status>0</status><challenge>$decoded_challenge</challenge><sec>$sec</sec></dfrn_poll>"; - exit(); - // NOTREACHED - } - } - - $direction = -1; - if (strpos($dfrn_id, ':') == 1) { - $direction = intval(substr($dfrn_id, 0, 1)); - $dfrn_id = substr($dfrn_id, 2); - } - - $r = q("SELECT * FROM `challenge` WHERE `dfrn-id` = '%s' AND `challenge` = '%s' LIMIT 1", - DBA::escape($dfrn_id), - DBA::escape($challenge) - ); - - if (!DBA::isResult($r)) { - exit(); - } - - $last_update = $r[0]['last_update']; - - DBA::delete('challenge', ['dfrn-id' => $dfrn_id, 'challenge' => $challenge]); - - $sql_extra = ''; - switch ($direction) { - case -1: - $sql_extra = sprintf(" AND `issued-id` = '%s' ", DBA::escape($dfrn_id)); - break; - case 0: - $sql_extra = sprintf(" AND `issued-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - break; - case 1: - $sql_extra = sprintf(" AND `dfrn-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - break; - default: - DI::baseUrl()->redirect(); - break; // NOTREACHED - } - - $r = q("SELECT * FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 $sql_extra LIMIT 1"); - if (!DBA::isResult($r)) { - exit(); - } - - $contact = $r[0]; - $contact_id = $r[0]['id']; - - // Update the writable flag if it changed - Logger::debug('post request feed', ['post' => $_POST]); - if ($dfrn_version >= 2.21) { - if ($perm === 'rw') { - $writable = 1; - } else { - $writable = 0; - } - - if ($writable != $contact['writable']) { - q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d", - intval($writable), - intval($contact_id) - ); - } - } - - header("Content-type: application/atom+xml"); - $o = DFRN::feed($dfrn_id, $a->argv[1], $last_update, $direction); - echo $o; - exit(); -} - -function dfrn_poll_content(App $a) -{ - $dfrn_id = $_GET['dfrn_id'] ?? ''; - $type = ($_GET['type'] ?? '') ?: 'data'; - $last_update = $_GET['last_update'] ?? ''; - $destination_url = $_GET['destination_url'] ?? ''; - $sec = $_GET['sec'] ?? ''; - $dfrn_version = floatval(($_GET['dfrn_version'] ?? 0.0) ?: 2.0); - $quiet = !empty($_GET['quiet']); - - $direction = -1; - if (strpos($dfrn_id, ':') == 1) { - $direction = intval(substr($dfrn_id, 0, 1)); - $dfrn_id = substr($dfrn_id, 2); - } - - if ($dfrn_id != '') { - // initial communication from external contact - $hash = Strings::getRandomHex(); - - $status = 0; - - DBA::delete('challenge', ["`expire` < ?", time()]); - - if ($type !== 'profile') { - q("INSERT INTO `challenge` ( `challenge`, `dfrn-id`, `expire` , `type`, `last_update` ) - VALUES( '%s', '%s', '%s', '%s', '%s' ) ", - DBA::escape($hash), - DBA::escape($dfrn_id), - intval(time() + 60 ), - DBA::escape($type), - DBA::escape($last_update) - ); - } - - $sql_extra = ''; - switch ($direction) { - case -1: - if ($type === 'profile') { - $sql_extra = sprintf(" AND (`dfrn-id` = '%s' OR `issued-id` = '%s') ", DBA::escape($dfrn_id), DBA::escape($dfrn_id)); - } else { - $sql_extra = sprintf(" AND `issued-id` = '%s' ", DBA::escape($dfrn_id)); - } - - $my_id = $dfrn_id; - break; - case 0: - $sql_extra = sprintf(" AND `issued-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - $my_id = '1:' . $dfrn_id; - break; - case 1: - $sql_extra = sprintf(" AND `dfrn-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - $my_id = '0:' . $dfrn_id; - break; - default: - DI::baseUrl()->redirect(); - break; // NOTREACHED - } - - $nickname = $a->argv[1]; - - $r = q("SELECT `contact`.*, `user`.`username`, `user`.`nickname` - FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid` - WHERE `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - AND `user`.`nickname` = '%s' $sql_extra LIMIT 1", - DBA::escape($nickname) - ); - if (DBA::isResult($r)) { - $challenge = ''; - $encrypted_id = ''; - $id_str = $my_id . '.' . mt_rand(1000, 9999); - - if (($r[0]['duplex'] && strlen($r[0]['pubkey'])) || !strlen($r[0]['prvkey'])) { - openssl_public_encrypt($hash, $challenge, $r[0]['pubkey']); - openssl_public_encrypt($id_str, $encrypted_id, $r[0]['pubkey']); - } else { - openssl_private_encrypt($hash, $challenge, $r[0]['prvkey']); - openssl_private_encrypt($id_str, $encrypted_id, $r[0]['prvkey']); - } - - $challenge = bin2hex($challenge); - $encrypted_id = bin2hex($encrypted_id); - } else { - $status = 1; - $challenge = ''; - $encrypted_id = ''; - } - - if (($type === 'profile') && (strlen($sec))) { - // heluecht: I don't know why we don't fail immediately when the user or contact hadn't been found. - // Since it doesn't make sense to continue from this point on, we now fail here. This should be safe. - if (!DBA::isResult($r)) { - throw new \Friendica\Network\HTTPException\NotFoundException(); - } - - // URL reply - if ($dfrn_version < 2.2) { - $s = DI::httpRequest()->fetch($r[0]['poll'] - . '?dfrn_id=' . $encrypted_id - . '&type=profile-check' - . '&dfrn_version=' . DFRN_PROTOCOL_VERSION - . '&challenge=' . $challenge - . '&sec=' . $sec - ); - } else { - $s = DI::httpRequest()->post($r[0]['poll'], [ - 'dfrn_id' => $encrypted_id, - 'type' => 'profile-check', - 'dfrn_version' => DFRN_PROTOCOL_VERSION, - 'challenge' => $challenge, - 'sec' => $sec - ])->getBody(); - } - - Logger::log("dfrn_poll: sec profile: " . $s, Logger::DATA); - - if (strlen($s) && strstr($s, '<?xml')) { - $xml = XML::parseString($s); - - Logger::debug(' profile: parsed', ['xml' => $xml]); - - Logger::log('dfrn_poll: secure profile: challenge: ' . $xml->challenge . ' expecting ' . $hash); - Logger::log('dfrn_poll: secure profile: sec: ' . $xml->sec . ' expecting ' . $sec); - - if (((int) $xml->status == 0) && ($xml->challenge == $hash) && ($xml->sec == $sec)) { - $_SESSION['authenticated'] = 1; - $_SESSION['visitor_id'] = $r[0]['id']; - $_SESSION['visitor_home'] = $r[0]['url']; - $_SESSION['visitor_handle'] = $r[0]['addr']; - $_SESSION['visitor_visiting'] = $r[0]['uid']; - $_SESSION['my_url'] = $r[0]['url']; - $_SESSION['remote_comment'] = $r[0]['subscribe']; - - Session::setVisitorsContacts(); - - if (!$quiet) { - info(DI::l10n()->t('%1$s welcomes %2$s', $r[0]['username'], $r[0]['name'])); - } - - // Visitors get 1 day session. - $session_id = session_id(); - $expire = time() + 86400; - q("UPDATE `session` SET `expire` = '%s' WHERE `sid` = '%s'", - DBA::escape($expire), - DBA::escape($session_id) - ); - } - } - - $profile = ((DBA::isResult($r) && $r[0]['nickname']) ? $r[0]['nickname'] : $nickname); - - switch ($destination_url) { - case 'profile': - DI::baseUrl()->redirect('profile/' . $profile . '/profile'); - break; - case 'photos': - DI::baseUrl()->redirect('photos/' . $profile); - break; - case 'status': - case '': - DI::baseUrl()->redirect('profile/' . $profile); - break; - default: - $appendix = (strstr($destination_url, '?') ? '&redir=1' : '?redir=1'); - DI::baseUrl()->redirect($destination_url . $appendix); - break; - } - // NOTREACHED - } else { - // XML reply - header("Content-type: text/xml"); - echo '<?xml version="1.0" encoding="UTF-8"?>' . "\r\n" - . '<dfrn_poll>' . "\r\n" - . "\t" . '<status>' . $status . '</status>' . "\r\n" - . "\t" . '<dfrn_version>' . DFRN_PROTOCOL_VERSION . '</dfrn_version>' . "\r\n" - . "\t" . '<dfrn_id>' . $encrypted_id . '</dfrn_id>' . "\r\n" - . "\t" . '<challenge>' . $challenge . '</challenge>' . "\r\n" - . '</dfrn_poll>' . "\r\n"; - exit(); - // NOTREACHED - } - } + throw new HTTPException\BadRequestException(); } diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php deleted file mode 100644 index bdb5a8d2f..000000000 --- a/mod/dfrn_request.php +++ /dev/null @@ -1,653 +0,0 @@ -<?php -/** - * @copyright Copyright (C) 2010-2021, the Friendica project - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. - * - *Handles communication associated with the issuance of friend requests. - * - * @see PDF with dfrn specs: https://github.com/friendica/friendica/blob/stable/spec/dfrn2.pdf - * You also find a graphic which describes the confirmation process at - * https://github.com/friendica/friendica/blob/stable/spec/dfrn2_contact_request.png - */ - -use Friendica\App; -use Friendica\Core\Logger; -use Friendica\Core\Protocol; -use Friendica\Core\Renderer; -use Friendica\Core\Search; -use Friendica\Core\Session; -use Friendica\Core\System; -use Friendica\Database\DBA; -use Friendica\DI; -use Friendica\Model\Contact; -use Friendica\Model\Group; -use Friendica\Model\Notification; -use Friendica\Model\Profile; -use Friendica\Model\User; -use Friendica\Module\Security\Login; -use Friendica\Network\Probe; -use Friendica\Protocol\Activity; -use Friendica\Util\DateTimeFormat; -use Friendica\Util\Network; -use Friendica\Util\Strings; - -function dfrn_request_init(App $a) -{ - if ($a->argc > 1) { - $which = $a->argv[1]; - Profile::load($a, $which); - } - - return; -} - -/** - * Function: dfrn_request_post - * - * Purpose: - * Handles multiple scenarios. - * - * Scenario 1: - * Clicking 'submit' on a friend request page. - * - * Scenario 2: - * Following Scenario 1, we are brought back to our home site - * in order to link our friend request with our own server cell. - * After logging in, we click 'submit' to approve the linkage. - * - * @param App $a - * @throws ImagickException - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - */ -function dfrn_request_post(App $a) -{ - if ($a->argc != 2 || empty($a->profile)) { - Logger::log('Wrong count of argc or profiles: argc=' . $a->argc . ', profile()=' . count($a->profile ?? [])); - return; - } - - if (!empty($_POST['cancel'])) { - DI::baseUrl()->redirect(); - } - - /* - * Scenario 2: We've introduced ourself to another cell, then have been returned to our own cell - * to confirm the request, and then we've clicked submit (perhaps after logging in). - * That brings us here: - */ - if (!empty($_POST['localconfirm']) && ($_POST['localconfirm'] == 1)) { - // Ensure this is a valid request - if (local_user() && ($a->user['nickname'] == $a->argv[1]) && !empty($_POST['dfrn_url'])) { - $dfrn_url = Strings::escapeTags(trim($_POST['dfrn_url'])); - $aes_allow = !empty($_POST['aes_allow']); - $confirm_key = $_POST['confirm_key'] ?? ''; - $hidden = (!empty($_POST['hidden-contact']) ? intval($_POST['hidden-contact']) : 0); - $contact_record = null; - $blocked = 1; - $pending = 1; - - if (!empty($dfrn_url)) { - // Lookup the contact based on their URL (which is the only unique thing we have at the moment) - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' AND NOT `self` LIMIT 1", - intval(local_user()), - DBA::escape(Strings::normaliseLink($dfrn_url)) - ); - - if (DBA::isResult($r)) { - if (strlen($r[0]['dfrn-id'])) { - // We don't need to be here. It has already happened. - notice(DI::l10n()->t("This introduction has already been accepted.")); - return; - } else { - $contact_record = $r[0]; - } - } - - if (is_array($contact_record)) { - $r = q("UPDATE `contact` SET `ret-aes` = %d, hidden = %d WHERE `id` = %d", - intval($aes_allow), - intval($hidden), - intval($contact_record['id']) - ); - } else { - // Scrape the other site's profile page to pick up the dfrn links, key, fn, and photo - $parms = Probe::profile($dfrn_url); - - if (!count($parms)) { - notice(DI::l10n()->t('Profile location is not valid or does not contain profile information.')); - return; - } else { - if (empty($parms['fn'])) { - notice(DI::l10n()->t('Warning: profile location has no identifiable owner name.')); - } - if (empty($parms['photo'])) { - notice(DI::l10n()->t('Warning: profile location has no profile photo.')); - } - $invalid = Probe::validDfrn($parms); - if ($invalid) { - notice(DI::l10n()->tt("%d required parameter was not found at the given location", "%d required parameters were not found at the given location", $invalid)); - return; - } - } - - $dfrn_request = $parms['dfrn-request']; - - $photo = $parms["photo"]; - - // Escape the entire array - DBA::escapeArray($parms); - - // Create a contact record on our site for the other person - $r = q("INSERT INTO `contact` ( `uid`, `created`,`url`, `nurl`, `addr`, `name`, `nick`, `photo`, `site-pubkey`, - `request`, `confirm`, `notify`, `poll`, `network`, `aes_allow`, `hidden`, `blocked`, `pending`) - VALUES ( %d, '%s', '%s', '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d)", - intval(local_user()), - DateTimeFormat::utcNow(), - DBA::escape($dfrn_url), - DBA::escape(Strings::normaliseLink($dfrn_url)), - $parms['addr'], - $parms['fn'], - $parms['nick'], - $parms['photo'], - $parms['key'], - $parms['dfrn-request'], - $parms['dfrn-confirm'], - $parms['dfrn-notify'], - $parms['dfrn-poll'], - DBA::escape(Protocol::DFRN), - intval($aes_allow), - intval($hidden), - intval($blocked), - intval($pending) - ); - } - - if ($r) { - info(DI::l10n()->t("Introduction complete.")); - } - - $r = q("SELECT `id`, `network` FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `site-pubkey` = '%s' LIMIT 1", - intval(local_user()), - DBA::escape($dfrn_url), - $parms['key'] ?? '' // Potentially missing - ); - if (DBA::isResult($r)) { - Group::addMember(User::getDefaultGroup(local_user(), $r[0]["network"]), $r[0]['id']); - - if (isset($photo)) { - Contact::updateAvatar($r[0]["id"], $photo, true); - } - - $forward_path = "contact/" . $r[0]['id']; - } else { - $forward_path = "contact"; - } - - // Allow the blocked remote notification to complete - if (is_array($contact_record)) { - $dfrn_request = $contact_record['request']; - } - - if (!empty($dfrn_request) && strlen($confirm_key)) { - DI::httpRequest()->fetch($dfrn_request . '?confirm_key=' . $confirm_key); - } - - // (ignore reply, nothing we can do it failed) - DI::baseUrl()->redirect($forward_path); - return; // NOTREACHED - } - } - - // invalid/bogus request - notice(DI::l10n()->t('Unrecoverable protocol error.')); - DI::baseUrl()->redirect(); - return; // NOTREACHED - } - - /* - * Otherwise: - * - * Scenario 1: - * We are the requestee. A person from a remote cell has made an introduction - * on our profile web page and clicked submit. We will use their DFRN-URL to - * figure out how to contact their cell. - * - * Scrape the originating DFRN-URL for everything we need. Create a contact record - * and an introduction to show our user next time he/she logs in. - * Finally redirect back to the requestor so that their site can record the request. - * If our user (the requestee) later confirms this request, a record of it will need - * to exist on the requestor's cell in order for the confirmation process to complete.. - * - * It's possible that neither the requestor or the requestee are logged in at the moment, - * and the requestor does not yet have any credentials to the requestee profile. - * - * Who is the requestee? We've already loaded their profile which means their nickname should be - * in $a->argv[1] and we should have their complete info in $a->profile. - * - */ - if (empty($a->profile['uid'])) { - notice(DI::l10n()->t('Profile unavailable.')); - return; - } - - $nickname = $a->profile['nickname']; - $uid = $a->profile['uid']; - $maxreq = intval($a->profile['maxreq']); - $contact_record = null; - $failed = false; - $parms = null; - $blocked = 1; - $pending = 1; - - if (!empty($_POST['dfrn_url'])) { - // Block friend request spam - if ($maxreq) { - $r = q("SELECT * FROM `intro` WHERE `datetime` > '%s' AND `uid` = %d", - DBA::escape(DateTimeFormat::utc('now - 24 hours')), - intval($uid) - ); - if (DBA::isResult($r) && count($r) > $maxreq) { - notice(DI::l10n()->t('%s has received too many connection requests today.', $a->profile['name'])); - notice(DI::l10n()->t('Spam protection measures have been invoked.')); - notice(DI::l10n()->t('Friends are advised to please try again in 24 hours.')); - return; - } - } - - /* Cleanup old introductions that remain blocked. - * Also remove the contact record, but only if there is no existing relationship - */ - $r = q("SELECT `intro`.*, `intro`.`id` AS `iid`, `contact`.`id` AS `cid`, `contact`.`rel` - FROM `intro` LEFT JOIN `contact` on `intro`.`contact-id` = `contact`.`id` - WHERE `intro`.`blocked` = 1 AND `contact`.`self` = 0 - AND `intro`.`datetime` < UTC_TIMESTAMP() - INTERVAL 30 MINUTE " - ); - if (DBA::isResult($r)) { - foreach ($r as $rr) { - if (!$rr['rel']) { - DBA::delete('contact', ['id' => $rr['cid'], 'self' => false]); - } - DBA::delete('intro', ['id' => $rr['iid']]); - } - } - - $url = trim($_POST['dfrn_url']); - if (!strlen($url)) { - notice(DI::l10n()->t("Invalid locator")); - return; - } - - $hcard = ''; - - // Detect the network - $data = Contact::getByURL($url); - $network = $data["network"]; - - // Canonicalize email-style profile locator - $url = Probe::webfingerDfrn($data['url'] ?? $url, $hcard); - - if (substr($url, 0, 5) === 'stat:') { - // Every time we detect the remote subscription we define this as OStatus. - // We do this even if it is not OStatus. - // we only need to pass this through another section of the code. - if ($network != Protocol::DIASPORA) { - $network = Protocol::OSTATUS; - } - - $url = substr($url, 5); - } else { - $network = Protocol::DFRN; - } - - Logger::log('dfrn_request: url: ' . $url . ',network=' . $network, Logger::DEBUG); - - if ($network === Protocol::DFRN) { - $ret = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `self` = 0 LIMIT 1", - intval($uid), - DBA::escape($url) - ); - - if (DBA::isResult($ret)) { - if (strlen($ret[0]['issued-id'])) { - notice(DI::l10n()->t('You have already introduced yourself here.')); - return; - } elseif ($ret[0]['rel'] == Contact::FRIEND) { - notice(DI::l10n()->t('Apparently you are already friends with %s.', $a->profile['name'])); - return; - } else { - $contact_record = $ret[0]; - $parms = ['dfrn-request' => $ret[0]['request']]; - } - } - - $issued_id = Strings::getRandomHex(); - - if (is_array($contact_record)) { - // There is a contact record but no issued-id, so this - // is a reciprocal introduction from a known contact - $r = q("UPDATE `contact` SET `issued-id` = '%s' WHERE `id` = %d", - DBA::escape($issued_id), - intval($contact_record['id']) - ); - } else { - $url = Network::isUrlValid($url); - if (!$url) { - notice(DI::l10n()->t('Invalid profile URL.')); - DI::baseUrl()->redirect(DI::args()->getCommand()); - return; // NOTREACHED - } - - if (!Network::isUrlAllowed($url)) { - notice(DI::l10n()->t('Disallowed profile URL.')); - DI::baseUrl()->redirect(DI::args()->getCommand()); - return; // NOTREACHED - } - - if (Network::isUrlBlocked($url)) { - notice(DI::l10n()->t('Blocked domain')); - DI::baseUrl()->redirect(DI::args()->getCommand()); - return; // NOTREACHED - } - - $parms = Probe::profile(($hcard) ? $hcard : $url); - - if (!count($parms)) { - notice(DI::l10n()->t('Profile location is not valid or does not contain profile information.')); - DI::baseUrl()->redirect(DI::args()->getCommand()); - } else { - if (empty($parms['fn'])) { - notice(DI::l10n()->t('Warning: profile location has no identifiable owner name.')); - } - if (empty($parms['photo'])) { - notice(DI::l10n()->t('Warning: profile location has no profile photo.')); - } - $invalid = Probe::validDfrn($parms); - if ($invalid) { - notice(DI::l10n()->tt("%d required parameter was not found at the given location", "%d required parameters were not found at the given location", $invalid)); - - return; - } - } - - $parms['url'] = $url; - $parms['issued-id'] = $issued_id; - $photo = $parms["photo"]; - - DBA::escapeArray($parms); - $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `name`, `nick`, `issued-id`, `photo`, `site-pubkey`, - `request`, `confirm`, `notify`, `poll`, `network`, `blocked`, `pending` ) - VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )", - intval($uid), - DBA::escape(DateTimeFormat::utcNow()), - $parms['url'], - DBA::escape(Strings::normaliseLink($url)), - $parms['addr'], - $parms['fn'], - $parms['nick'], - $parms['issued-id'], - $parms['photo'], - $parms['key'], - $parms['dfrn-request'], - $parms['dfrn-confirm'], - $parms['dfrn-notify'], - $parms['dfrn-poll'], - DBA::escape(Protocol::DFRN), - intval($blocked), - intval($pending) - ); - - // find the contact record we just created - if ($r) { - $r = q("SELECT `id` FROM `contact` - WHERE `uid` = %d AND `url` = '%s' AND `issued-id` = '%s' LIMIT 1", - intval($uid), - $parms['url'], - $parms['issued-id'] - ); - if (DBA::isResult($r)) { - $contact_record = $r[0]; - Contact::updateAvatar($contact_record["id"], $photo, true); - } - } - } - if ($r === false) { - notice(DI::l10n()->t('Failed to update contact record.')); - return; - } - - $hash = Strings::getRandomHex() . (string) time(); // Generate a confirm_key - - if (is_array($contact_record)) { - q("INSERT INTO `intro` ( `uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime`) - VALUES ( %d, %d, 1, %d, '%s', '%s', '%s' )", - intval($uid), - intval($contact_record['id']), - intval(!empty($_POST['knowyou'])), - DBA::escape(Strings::escapeTags(trim($_POST['dfrn-request-message'] ?? ''))), - DBA::escape($hash), - DBA::escape(DateTimeFormat::utcNow()) - ); - } - - // This notice will only be seen by the requestor if the requestor and requestee are on the same server. - if (!$failed) { - info(DI::l10n()->t('Your introduction has been sent.')); - } - - // "Homecoming" - send the requestor back to their site to record the introduction. - $dfrn_url = bin2hex(DI::baseUrl()->get() . '/profile/' . $nickname); - $aes_allow = ((function_exists('openssl_encrypt')) ? 1 : 0); - - System::externalRedirect($parms['dfrn-request'] . "?dfrn_url=$dfrn_url" - . '&dfrn_version=' . DFRN_PROTOCOL_VERSION - . '&confirm_key=' . $hash - . (($aes_allow) ? "&aes_allow=1" : "") - ); - // NOTREACHED - // END $network === Protocol::DFRN - } elseif (($network != Protocol::PHANTOM) && ($url != "")) { - - /* Substitute our user's feed URL into $url template - * Send the subscriber home to subscribe - */ - // Diaspora needs the uri in the format user@domain.tld - // Diaspora will support the remote subscription in a future version - if ($network == Protocol::DIASPORA) { - $uri = urlencode($a->profile['addr']); - } else { - $uri = urlencode($a->profile['url']); - } - - $url = str_replace('{uri}', $uri, $url); - System::externalRedirect($url); - // NOTREACHED - // END $network != Protocol::PHANTOM - } else { - notice(DI::l10n()->t("Remote subscription can't be done for your network. Please subscribe directly on your system.")); - return; - } - } return; -} - -function dfrn_request_content(App $a) -{ - if ($a->argc != 2 || empty($a->profile)) { - return ""; - } - - // "Homecoming". Make sure we're logged in to this site as the correct user. Then offer a confirm button - // to send us to the post section to record the introduction. - if (!empty($_GET['dfrn_url'])) { - if (!local_user()) { - info(DI::l10n()->t("Please login to confirm introduction.")); - /* setup the return URL to come back to this page if they use openid */ - return Login::form(); - } - - // Edge case, but can easily happen in the wild. This person is authenticated, - // but not as the person who needs to deal with this request. - if ($a->user['nickname'] != $a->argv[1]) { - notice(DI::l10n()->t("Incorrect identity currently logged in. Please login to <strong>this</strong> profile.")); - return Login::form(); - } - - $dfrn_url = Strings::escapeTags(trim(hex2bin($_GET['dfrn_url']))); - $aes_allow = !empty($_GET['aes_allow']); - $confirm_key = $_GET['confirm_key'] ?? ''; - - // Checking fastlane for validity - if (!empty($_SESSION['fastlane']) && (Strings::normaliseLink($_SESSION["fastlane"]) == Strings::normaliseLink($dfrn_url))) { - $_POST["dfrn_url"] = $dfrn_url; - $_POST["confirm_key"] = $confirm_key; - $_POST["localconfirm"] = 1; - $_POST["hidden-contact"] = 0; - $_POST["submit"] = DI::l10n()->t('Confirm'); - - dfrn_request_post($a); - - exit(); - } - - $tpl = Renderer::getMarkupTemplate("dfrn_req_confirm.tpl"); - $o = Renderer::replaceMacros($tpl, [ - '$dfrn_url' => $dfrn_url, - '$aes_allow' => (($aes_allow) ? '<input type="hidden" name="aes_allow" value="1" />' : "" ), - '$hidethem' => DI::l10n()->t('Hide this contact'), - '$confirm_key' => $confirm_key, - '$welcome' => DI::l10n()->t('Welcome home %s.', $a->user['username']), - '$please' => DI::l10n()->t('Please confirm your introduction/connection request to %s.', $dfrn_url), - '$submit' => DI::l10n()->t('Confirm'), - '$uid' => $_SESSION['uid'], - '$nickname' => $a->user['nickname'], - 'dfrn_rawurl' => $_GET['dfrn_url'] - ]); - return $o; - } elseif (!empty($_GET['confirm_key'])) { - // we are the requestee and it is now safe to send our user their introduction, - // We could just unblock it, but first we have to jump through a few hoops to - // send an email, or even to find out if we need to send an email. - $intro = q("SELECT * FROM `intro` WHERE `hash` = '%s' LIMIT 1", - DBA::escape($_GET['confirm_key']) - ); - - if (DBA::isResult($intro)) { - $r = q("SELECT `contact`.*, `user`.* FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid` - WHERE `contact`.`id` = %d LIMIT 1", - intval($intro[0]['contact-id']) - ); - - $auto_confirm = false; - - if (DBA::isResult($r)) { - if ($r[0]['page-flags'] != User::PAGE_FLAGS_NORMAL && $r[0]['page-flags'] != User::PAGE_FLAGS_PRVGROUP) { - $auto_confirm = true; - } - - if (!$auto_confirm) { - notification([ - 'type' => Notification\Type::INTRO, - 'otype' => Notification\ObjectType::INTRO, - 'verb' => Activity::REQ_FRIEND, - 'uid' => $r[0]['uid'], - 'cid' => $r[0]['id'], - 'link' => DI::baseUrl() . '/notifications/intros', - ]); - } - - if ($auto_confirm) { - require_once 'mod/dfrn_confirm.php'; - $handsfree = [ - 'uid' => $r[0]['uid'], - 'node' => $r[0]['nickname'], - 'dfrn_id' => $r[0]['issued-id'], - 'intro_id' => $intro[0]['id'], - 'duplex' => (($r[0]['page-flags'] == User::PAGE_FLAGS_FREELOVE) ? 1 : 0), - ]; - dfrn_confirm_post($a, $handsfree); - } - } - - if (!$auto_confirm) { - - // If we are auto_confirming, this record will have already been nuked - // in dfrn_confirm_post() - - q("UPDATE `intro` SET `blocked` = 0 WHERE `hash` = '%s'", - DBA::escape($_GET['confirm_key']) - ); - } - } - - exit(); - } else { - // Normal web request. Display our user's introduction form. - if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) { - if (!DI::config()->get('system', 'local_block')) { - notice(DI::l10n()->t('Public access denied.')); - return; - } - } - - // Try to auto-fill the profile address - // At first look if an address was provided - // Otherwise take the local address - if (!empty($_GET['addr'])) { - $myaddr = hex2bin($_GET['addr']); - } elseif (!empty($_GET['address'])) { - $myaddr = $_GET['address']; - } elseif (local_user()) { - if (strlen(DI::baseUrl()->getUrlPath())) { - $myaddr = DI::baseUrl() . '/profile/' . $a->user['nickname']; - } else { - $myaddr = $a->user['nickname'] . '@' . substr(DI::baseUrl(), strpos(DI::baseUrl(), '://') + 3); - } - } else { - // last, try a zrl - $myaddr = Profile::getMyURL(); - } - - $target_addr = $a->profile['nickname'] . '@' . substr(DI::baseUrl(), strpos(DI::baseUrl(), '://') + 3); - - /* The auto_request form only has the profile address - * because nobody is going to read the comments and - * it doesn't matter if they know you or not. - */ - if ($a->profile['page-flags'] == User::PAGE_FLAGS_NORMAL) { - $tpl = Renderer::getMarkupTemplate('dfrn_request.tpl'); - } else { - $tpl = Renderer::getMarkupTemplate('auto_request.tpl'); - } - - $o = Renderer::replaceMacros($tpl, [ - '$header' => DI::l10n()->t('Friend/Connection Request'), - '$page_desc' => DI::l10n()->t('Enter your Webfinger address (user@domain.tld) or profile URL here. If this isn\'t supported by your system (for example it doesn\'t work with Diaspora), you have to subscribe to <strong>%s</strong> directly on your system', $target_addr), - '$invite_desc' => DI::l10n()->t('If you are not yet a member of the free social web, <a href="%s">follow this link to find a public Friendica node and join us today</a>.', Search::getGlobalDirectory() . '/servers'), - '$your_address' => DI::l10n()->t('Your Webfinger address or profile URL:'), - '$pls_answer' => DI::l10n()->t('Please answer the following:'), - '$submit' => DI::l10n()->t('Submit Request'), - '$cancel' => DI::l10n()->t('Cancel'), - - '$request' => 'dfrn_request/' . $a->argv[1], - '$name' => $a->profile['name'], - '$myaddr' => $myaddr, - - '$does_know_you' => ['knowyou', DI::l10n()->t('%s knows you', $a->profile['name'])], - '$addnote_field' => ['dfrn-request-message', DI::l10n()->t('Add a personal note:')], - ]); - return $o; - } -} diff --git a/mod/follow.php b/mod/follow.php index ed8e3aa5f..ac74d217b 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -118,18 +118,13 @@ function follow_content(App $a) $contact['url'] = $contact['addr']; } - if (($protocol === Protocol::DFRN) && !DBA::isResult($contact)) { - $request = $contact['request']; - $tpl = Renderer::getMarkupTemplate('dfrn_request.tpl'); - } else { - if (!empty($_REQUEST['auto'])) { - follow_process($a, $contact['url']); - } - - $request = DI::baseUrl() . '/follow'; - $tpl = Renderer::getMarkupTemplate('auto_request.tpl'); + if (!empty($_REQUEST['auto'])) { + follow_process($a, $contact['url']); } + $request = DI::baseUrl() . '/follow'; + $tpl = Renderer::getMarkupTemplate('auto_request.tpl'); + $owner = User::getOwnerDataById($uid); if (empty($owner)) { notice(DI::l10n()->t('Permission denied.')); @@ -139,9 +134,6 @@ function follow_content(App $a) $myaddr = $owner['url']; - // Makes the connection request for friendica contacts easier - $_SESSION['fastlane'] = $contact['url']; - $o = Renderer::replaceMacros($tpl, [ '$header' => DI::l10n()->t('Connect/Follow'), '$pls_answer' => DI::l10n()->t('Please answer the following:'), @@ -182,10 +174,6 @@ function follow_process(App $a, string $url) { $return_path = 'follow?url=' . urlencode($url); - // Makes the connection request for friendica contacts easier - // This is just a precaution if maybe this page is called somewhere directly via POST - $_SESSION['fastlane'] = $url; - $result = Contact::createFromProbe($a->user, $url, true); if ($result['success'] == false) { diff --git a/mod/redir.php b/mod/redir.php index 71db74e9a..2f97911dc 100644 --- a/mod/redir.php +++ b/mod/redir.php @@ -50,7 +50,7 @@ function redir_init(App $a) { throw new \Friendica\Network\HTTPException\BadRequestException(DI::l10n()->t('Bad Request.')); } - $fields = ['id', 'uid', 'nurl', 'url', 'addr', 'name', 'network', 'poll', 'issued-id', 'dfrn-id', 'duplex', 'pending']; + $fields = ['id', 'uid', 'nurl', 'url', 'addr', 'name']; $contact = DBA::selectFirst('contact', $fields, ['id' => $cid, 'uid' => [0, local_user()]]); if (!DBA::isResult($contact)) { throw new \Friendica\Network\HTTPException\NotFoundException(DI::l10n()->t('Contact not found.')); @@ -99,33 +99,6 @@ function redir_init(App $a) { } } - // Doing remote auth with dfrn. - if (local_user() && (!empty($contact['dfrn-id']) || !empty($contact['issued-id'])) && empty($contact['pending'])) { - $dfrn_id = $orig_id = (($contact['issued-id']) ? $contact['issued-id'] : $contact['dfrn-id']); - - if ($contact['duplex'] && $contact['issued-id']) { - $orig_id = $contact['issued-id']; - $dfrn_id = '1:' . $orig_id; - } - if ($contact['duplex'] && $contact['dfrn-id']) { - $orig_id = $contact['dfrn-id']; - $dfrn_id = '0:' . $orig_id; - } - - $sec = Strings::getRandomHex(); - - $fields = ['uid' => local_user(), 'cid' => $cid, 'dfrn_id' => $dfrn_id, - 'sec' => $sec, 'expire' => time() + 45]; - DBA::insert('profile_check', $fields); - - Logger::log('mod_redir: ' . $contact['name'] . ' ' . $sec, Logger::DEBUG); - - $dest = (!empty($url) ? '&destination_url=' . $url : ''); - - System::externalRedirect($contact['poll'] . '?dfrn_id=' . $dfrn_id - . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&type=profile&sec=' . $sec . $dest . $quiet); - } - if (empty($url)) { throw new \Friendica\Network\HTTPException\BadRequestException(DI::l10n()->t('Bad Request.')); } diff --git a/mod/unfollow.php b/mod/unfollow.php index aca17727b..97cb0e1a3 100644 --- a/mod/unfollow.php +++ b/mod/unfollow.php @@ -84,9 +84,6 @@ function unfollow_content(App $a) // NOTREACHED } - // Makes the connection request for friendica contacts easier - $_SESSION['fastlane'] = $contact['url']; - if (!empty($_REQUEST['auto'])) { unfollow_process($contact['url']); } diff --git a/src/Database/DBStructure.php b/src/Database/DBStructure.php index 477948728..a6d4061a7 100644 --- a/src/Database/DBStructure.php +++ b/src/Database/DBStructure.php @@ -81,7 +81,7 @@ class DBStructure $old_tables = ['fserver', 'gcign', 'gcontact', 'gcontact-relation', 'gfollower' ,'glink', 'item-delivery-data', 'item-activity', 'item-content', 'item_id', 'participation', 'poll', 'poll_result', 'queue', 'retriever_rule', - 'deliverq', 'dsprphotoq', 'ffinder', 'sign', 'spam', 'term', 'user-item', 'thread', 'item']; + 'deliverq', 'dsprphotoq', 'ffinder', 'sign', 'spam', 'term', 'user-item', 'thread', 'item', 'challenge']; $tables = DBA::selectToArray(['INFORMATION_SCHEMA' => 'TABLES'], ['TABLE_NAME'], ['TABLE_SCHEMA' => DBA::databaseName(), 'TABLE_TYPE' => 'BASE TABLE']); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 0e3de02d6..ab8a7db8c 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -811,13 +811,11 @@ class Contact } $protocol = $contact['network']; - if (($protocol == Protocol::DFRN) && !self::isLegacyDFRNContact($contact)) { - $protocol = Protocol::ACTIVITYPUB; + if (($protocol == Protocol::DFRN) && !empty($contact['protocol'])) { + $protocol = $contact['protocol']; } - if (($protocol == Protocol::DFRN) && $dissolve) { - DFRN::deliver($user, $contact, 'placeholder', true); - } elseif (in_array($protocol, [Protocol::OSTATUS, Protocol::DFRN])) { + if (in_array($protocol, [Protocol::OSTATUS, Protocol::DFRN])) { // create an unfollow slap $item = []; $item['verb'] = Activity::O_UNFOLLOW; @@ -2273,18 +2271,6 @@ class Contact return $id; } - /** - * Detects if a given contact array belongs to a legacy DFRN connection - * - * @param array $contact - * @return boolean - */ - public static function isLegacyDFRNContact($contact) - { - // Newer Friendica contacts are connected via AP, then these fields aren't set - return !empty($contact['dfrn-id']) || !empty($contact['issued-id']); - } - /** * Detects the communication protocol for a given contact url. * This is used to detect Friendica contacts that we can communicate via AP. @@ -2387,24 +2373,6 @@ class Contact $protocol = self::getProtocol($ret['url'], $ret['network']); - if (($protocol === Protocol::DFRN) && !DBA::isResult($contact)) { - if ($interactive) { - if (strlen(DI::baseUrl()->getUrlPath())) { - $myaddr = bin2hex(DI::baseUrl() . '/profile/' . $user['nickname']); - } else { - $myaddr = bin2hex($user['nickname'] . '@' . DI::baseUrl()->getHostname()); - } - - DI::baseUrl()->redirect($ret['request'] . "&addr=$myaddr"); - - // NOTREACHED - } - } elseif (DI::config()->get('system', 'dfrn_only') && ($ret['network'] != Protocol::DFRN)) { - $result['message'] = DI::l10n()->t('This site is not configured to allow communications with other networks.') . EOL; - $result['message'] .= DI::l10n()->t('No compatible communication protocols or feeds were discovered.') . EOL; - return $result; - } - // This extra param just confuses things, remove it if ($protocol === Protocol::DIASPORA) { $ret['url'] = str_replace('?absolute=true', '', $ret['url']); diff --git a/src/Model/Conversation.php b/src/Model/Conversation.php index 742d5230a..aa2faca50 100644 --- a/src/Model/Conversation.php +++ b/src/Model/Conversation.php @@ -38,7 +38,7 @@ class Conversation const PARCEL_SALMON = 3; const PARCEL_FEED = 4; // Deprecated const PARCEL_SPLIT_CONVERSATION = 6; - const PARCEL_LEGACY_DFRN = 7; + const PARCEL_LEGACY_DFRN = 7; // Deprecated const PARCEL_DIASPORA_DFRN = 8; const PARCEL_LOCAL_DFRN = 9; const PARCEL_DIRECT = 10; diff --git a/src/Module/Notifications/Introductions.php b/src/Module/Notifications/Introductions.php index 5ce9eb86f..878195931 100644 --- a/src/Module/Notifications/Introductions.php +++ b/src/Module/Notifications/Introductions.php @@ -135,13 +135,7 @@ class Introductions extends BaseNotifications $friend = ['duplex', DI::l10n()->t('Friend'), '1', $helptext2, true]; $follower = ['duplex', DI::l10n()->t('Subscriber'), '0', $helptext3, false]; - $contact = DBA::selectFirst('contact', ['network', 'protocol'], ['id' => $notification->getContactId()]); - - if (($contact['network'] != Protocol::DFRN) || ($contact['protocol'] == Protocol::ACTIVITYPUB)) { - $action = 'follow_confirm'; - } else { - $action = 'dfrn_confirm'; - } + $action = 'follow_confirm'; $header = $notification->getName(); diff --git a/src/Object/Notification/Introduction.php b/src/Object/Notification/Introduction.php index bb13ce3f2..2a2d90cda 100644 --- a/src/Object/Notification/Introduction.php +++ b/src/Object/Notification/Introduction.php @@ -286,7 +286,7 @@ class Introduction implements \JsonSerializable $this->knowYou = $data['knowYou'] ?? false; $this->note = $data['note'] ?? ''; $this->request = $data['request'] ?? ''; - $this->dfrnId = $data['dfrn_id'] ?? -1; + $this->dfrnId = -1; $this->addr = $data['addr'] ?? ''; $this->network = $data['network'] ?? ''; $this->uid = $data['uid'] ?? -1; diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index faae900b3..61f5bab62 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -23,9 +23,7 @@ namespace Friendica\Protocol; use DOMDocument; use DOMXPath; -use Friendica\App\BaseURL; use Friendica\Content\Text\BBCode; -use Friendica\Core\Hook; use Friendica\Core\Logger; use Friendica\Core\Protocol; use Friendica\Database\DBA; @@ -39,13 +37,10 @@ use Friendica\Model\Item; use Friendica\Model\ItemURI; use Friendica\Model\Mail; use Friendica\Model\Notification; -use Friendica\Model\PermissionSet; use Friendica\Model\Post; -use Friendica\Model\Post\Category; use Friendica\Model\Profile; use Friendica\Model\Tag; use Friendica\Model\User; -use Friendica\Model\Verb; use Friendica\Network\Probe; use Friendica\Util\Crypto; use Friendica\Util\DateTimeFormat; @@ -145,172 +140,6 @@ class DFRN return trim($doc->saveXML()); } - /** - * Generate an atom feed for the given user - * - * This function is called when another server is pulling data from the user feed. - * - * @param string $dfrn_id DFRN ID from the requesting party - * @param string $owner_nick Owner nick name - * @param string $last_update Date of the last update - * @param int $direction Can be -1, 0 or 1. - * @param boolean $onlyheader Output only the header without content? (Default is "no") - * - * @return string DFRN feed entries - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - * @throws \ImagickException - */ - public static function feed($dfrn_id, $owner_nick, $last_update, $direction = 0, $onlyheader = false) - { - $a = DI::app(); - - $sitefeed = ((strlen($owner_nick)) ? false : true); // not yet implemented, need to rewrite huge chunks of following logic - $public_feed = (($dfrn_id) ? false : true); - $starred = false; // not yet implemented, possible security issues - $converse = false; - - if ($public_feed && $a->argc > 2) { - for ($x = 2; $x < $a->argc; $x++) { - if ($a->argv[$x] == 'converse') { - $converse = true; - } - if ($a->argv[$x] == 'starred') { - $starred = true; - } - if ($a->argv[$x] == 'category' && $a->argc > ($x + 1) && strlen($a->argv[$x+1])) { - $category = $a->argv[$x+1]; - } - } - } - - // default permissions - anonymous user - - $sql_extra = sprintf(" AND `private` != %s ", Item::PRIVATE); - - $owner = DBA::selectFirst('owner-view', [], ['nickname' => $owner_nick]); - if (!DBA::isResult($owner)) { - Logger::log(sprintf('No contact found for nickname=%d', $owner_nick), Logger::WARNING); - exit(); - } - - $owner_id = $owner['uid']; - - if (!$public_feed) { - switch ($direction) { - case (-1): - $sql_extra = sprintf(" AND `issued-id` = '%s' ", DBA::escape($dfrn_id)); - break; - case 0: - $sql_extra = sprintf(" AND `issued-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - break; - case 1: - $sql_extra = sprintf(" AND `dfrn-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id)); - break; - default: - return false; - break; // NOTREACHED - } - - $contact = DBA::selectFirst('contact', [], ["NOT `blocked` AND `contact`.`uid` = ?" . $sql_extra, $owner_id]); - if (!DBA::isResult($contact)) { - Logger::notice('No contact found', ['uid' => $owner_id]); - exit(); - } - - $set = PermissionSet::get($owner_id, $contact['id']); - - if (!empty($set)) { - $sql_extra = " AND `psid` IN (" . implode(',', $set) .")"; - } else { - $sql_extra = sprintf(" AND `private` != %s", Item::PRIVATE); - } - } - - if (!strlen($last_update)) { - $last_update = 'now -30 days'; - } - - if (isset($category)) { - $sql_extra .= sprintf(" AND `uri-id` IN (SELECT `uri-id` FROM `category-view` WHERE `name` = '%s' AND `type` = %d AND `uid` = %d)", - DBA::escape(Strings::protectSprintf($category)), intval(Category::CATEGORY), intval($owner_id)); - } - - if ($public_feed && ! $converse) { - $sql_extra .= " AND `self` "; - } - - $check_date = DateTimeFormat::utc($last_update); - - $condition = ["`uid` = ? AND `wall` AND `changed` > ? AND `vid` != ? AND `visible`" . $sql_extra, - $owner_id, $check_date, Verb::getID(Activity::ANNOUNCE)]; - - $params = ['sort' => ['parent' => $public_feed, 'received']]; - $items = Post::selectToArray(Item::DELIVER_FIELDLIST, $condition, $params, ['limit' => 300]); - - /* - * Will check further below if this actually returned results. - * We will provide an empty feed if that is the case. - */ - - $doc = new DOMDocument('1.0', 'utf-8'); - $doc->formatOutput = true; - - $alternatelink = $owner['url']; - - if (isset($category)) { - $alternatelink .= "/category/".$category; - } - - if ($public_feed) { - $author = "dfrn:owner"; - } else { - $author = "author"; - } - - $root = self::addHeader($doc, $owner, $author, $alternatelink, true); - - /// @TODO This hook can't work anymore - // \Friendica\Core\Hook::callAll('atom_feed', $atom); - - if (!DBA::isResult($items) || $onlyheader) { - $atom = trim($doc->saveXML()); - - Hook::callAll('atom_feed_end', $atom); - - return $atom; - } - - foreach ($items as $item) { - // prevent private email from leaking. - if ($item['network'] == Protocol::MAIL) { - continue; - } - - // public feeds get html, our own nodes use bbcode - - if ($public_feed) { - $type = 'html'; - // catch any email that's in a public conversation and make sure it doesn't leak - if ($item['private'] == Item::PRIVATE) { - continue; - } - } else { - $type = 'text'; - } - - $entry = self::entry($doc, $type, $item, $owner, true); - if (isset($entry)) { - $root->appendChild($entry); - } - } - - $atom = trim($doc->saveXML()); - - Hook::callAll('atom_feed_end', $atom); - - return $atom; - } - /** * Generate an atom entry for a given uri id and user * @@ -1089,268 +918,6 @@ class DFRN return $entry; } - /** - * encrypts data via AES - * - * @param string $data The data that is to be encrypted - * @param string $key The AES key - * - * @return string encrypted data - */ - private static function aesEncrypt($data, $key) - { - return openssl_encrypt($data, 'aes-128-ecb', $key, OPENSSL_RAW_DATA); - } - - /** - * decrypts data via AES - * - * @param string $encrypted The encrypted data - * @param string $key The AES key - * - * @return string decrypted data - */ - public static function aesDecrypt($encrypted, $key) - { - return openssl_decrypt($encrypted, 'aes-128-ecb', $key, OPENSSL_RAW_DATA); - } - - /** - * Delivers the atom content to the contacts - * - * @param array $owner Owner record - * @param array $contact Contact record of the receiver - * @param string $atom Content that will be transmitted - * @param bool $dissolve (to be documented) - * - * @return int Deliver status. Negative values mean an error. - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - * @throws \ImagickException - * @todo Add array type-hint for $owner, $contact - */ - public static function deliver($owner, $contact, $atom, $dissolve = false) - { - $idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']); - - if ($contact['duplex'] && $contact['dfrn-id']) { - $idtosend = '0:' . $orig_id; - } - if ($contact['duplex'] && $contact['issued-id']) { - $idtosend = '1:' . $orig_id; - } - - $rino = DI::config()->get('system', 'rino_encrypt'); - $rino = intval($rino); - - Logger::log("Local rino version: ". $rino, Logger::DEBUG); - - $ssl_val = intval(DI::config()->get('system', 'ssl_policy')); - - switch ($ssl_val) { - case BaseURL::SSL_POLICY_FULL: - $ssl_policy = 'full'; - break; - case BaseURL::SSL_POLICY_SELFSIGN: - $ssl_policy = 'self'; - break; - case BaseURL::SSL_POLICY_NONE: - default: - $ssl_policy = 'none'; - break; - } - - $url = $contact['notify'] . '&dfrn_id=' . $idtosend . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . (($rino) ? '&rino='.$rino : ''); - - Logger::log('dfrn_deliver: ' . $url); - - $curlResult = DI::httpRequest()->get($url); - - if ($curlResult->isTimeout()) { - return -2; // timed out - } - - $xml = $curlResult->getBody(); - - $curl_stat = $curlResult->getReturnCode(); - if (empty($curl_stat)) { - return -3; // timed out - } - - Logger::log('dfrn_deliver: ' . $xml, Logger::DATA); - - if (empty($xml)) { - return 3; - } - - if (strpos($xml, '<?xml') === false) { - Logger::log('dfrn_deliver: no valid XML returned'); - Logger::log('dfrn_deliver: returned XML: ' . $xml, Logger::DATA); - return 3; - } - - $res = XML::parseString($xml); - - if (!is_object($res) || (intval($res->status) != 0) || !strlen($res->challenge) || !strlen($res->dfrn_id)) { - if (empty($res->status)) { - $status = 3; - } else { - $status = $res->status; - } - - return $status; - } - - $postvars = []; - $sent_dfrn_id = hex2bin((string) $res->dfrn_id); - $challenge = hex2bin((string) $res->challenge); - $perm = (($res->perm) ? $res->perm : null); - $dfrn_version = floatval($res->dfrn_version ?: 2.0); - $rino_remote_version = intval($res->rino); - $page = (($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? 1 : 0); - - Logger::log("Remote rino version: ".$rino_remote_version." for ".$contact["url"], Logger::DEBUG); - - if ($owner['page-flags'] == User::PAGE_FLAGS_PRVGROUP) { - $page = 2; - } - - $final_dfrn_id = ''; - - if ($perm) { - if ((($perm == 'rw') && !intval($contact['writable'])) - || (($perm == 'r') && intval($contact['writable'])) - ) { - DBA::update('contact', ['writable' => ($perm == 'rw')], ['id' => $contact['id']]); - - $contact['writable'] = (string) 1 - intval($contact['writable']); - } - } - - if (($contact['duplex'] && strlen($contact['pubkey'])) - || ($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY && strlen($contact['pubkey'])) - || ($contact['rel'] == Contact::SHARING && strlen($contact['pubkey'])) - ) { - openssl_public_decrypt($sent_dfrn_id, $final_dfrn_id, $contact['pubkey']); - openssl_public_decrypt($challenge, $postvars['challenge'], $contact['pubkey']); - } else { - openssl_private_decrypt($sent_dfrn_id, $final_dfrn_id, $contact['prvkey']); - openssl_private_decrypt($challenge, $postvars['challenge'], $contact['prvkey']); - } - - $final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.')); - - if (strpos($final_dfrn_id, ':') == 1) { - $final_dfrn_id = substr($final_dfrn_id, 2); - } - - if ($final_dfrn_id != $orig_id) { - Logger::log('dfrn_deliver: wrong dfrn_id.'); - // did not decode properly - cannot trust this site - return 3; - } - - $postvars['dfrn_id'] = $idtosend; - $postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION; - if ($dissolve) { - $postvars['dissolve'] = '1'; - } - - if ((($contact['rel']) && ($contact['rel'] != Contact::SHARING) && (! $contact['blocked'])) || ($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) { - $postvars['data'] = $atom; - $postvars['perm'] = 'rw'; - } else { - $postvars['data'] = str_replace('<dfrn:comment-allow>1', '<dfrn:comment-allow>0', $atom); - $postvars['perm'] = 'r'; - } - - $postvars['ssl_policy'] = $ssl_policy; - - if ($page) { - $postvars['page'] = $page; - } - - - if ($rino > 0 && $rino_remote_version > 0 && (! $dissolve)) { - Logger::log('rino version: '. $rino_remote_version); - - switch ($rino_remote_version) { - case 1: - $key = random_bytes(16); - $data = self::aesEncrypt($postvars['data'], $key); - break; - - default: - Logger::log("rino: invalid requested version '$rino_remote_version'"); - return -8; - } - - $postvars['rino'] = $rino_remote_version; - $postvars['data'] = bin2hex($data); - - if ($dfrn_version >= 2.1) { - if (($contact['duplex'] && strlen($contact['pubkey'])) - || ($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY && strlen($contact['pubkey'])) - || ($contact['rel'] == Contact::SHARING && strlen($contact['pubkey'])) - ) { - openssl_public_encrypt($key, $postvars['key'], $contact['pubkey']); - } else { - openssl_private_encrypt($key, $postvars['key'], $contact['prvkey']); - } - } else { - if (($contact['duplex'] && strlen($contact['prvkey'])) || ($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) { - openssl_private_encrypt($key, $postvars['key'], $contact['prvkey']); - } else { - openssl_public_encrypt($key, $postvars['key'], $contact['pubkey']); - } - } - - Logger::log('md5 rawkey ' . md5($postvars['key'])); - - $postvars['key'] = bin2hex($postvars['key']); - } - - - Logger::debug('dfrn_deliver', ['post' => $postvars]); - - $postResult = DI::httpRequest()->post($contact['notify'], $postvars); - - $xml = $postResult->getBody(); - - Logger::log('dfrn_deliver: ' . "RECEIVED: " . $xml, Logger::DATA); - - $curl_stat = $postResult->getReturnCode(); - if (empty($curl_stat) || empty($xml)) { - return -9; // timed out - } - - if (($curl_stat == 503) && stristr($postResult->getHeader(), 'retry-after')) { - return -10; - } - - if (strpos($xml, '<?xml') === false) { - Logger::log('dfrn_deliver: phase 2: no valid XML returned'); - Logger::log('dfrn_deliver: phase 2: returned XML: ' . $xml, Logger::DATA); - return 3; - } - - $res = XML::parseString($xml); - - if (!isset($res->status)) { - return -11; - } - - // Possibly old servers had returned an empty value when everything was okay - if (empty($res->status)) { - $res->status = 200; - } - - if (!empty($res->message)) { - Logger::log('Delivery returned status '.$res->status.' - '.$res->message, Logger::DEBUG); - } - - return intval($res->status); - } - /** * Transmits atom content to the contacts via the Diaspora transport layer * @@ -2618,12 +2185,8 @@ class DFRN Logger::log("Import DFRN message for user " . $importer["importer_uid"] . " from contact " . $importer["id"], Logger::DEBUG); - if (!empty($importer['gsid'])) { - if ($protocol == Conversation::PARCEL_DIASPORA_DFRN) { - GServer::setProtocol($importer['gsid'], Post\DeliveryData::DFRN); - } elseif ($protocol == Conversation::PARCEL_LEGACY_DFRN) { - GServer::setProtocol($importer['gsid'], Post\DeliveryData::LEGACY_DFRN); - } + if (!empty($importer['gsid']) && ($protocol == Conversation::PARCEL_DIASPORA_DFRN)) { + GServer::setProtocol($importer['gsid'], Post\DeliveryData::DFRN); } // is it a public forum? Private forums aren't exposed with this method diff --git a/src/Worker/Delivery.php b/src/Worker/Delivery.php index dad2ff7b3..e42b5a101 100644 --- a/src/Worker/Delivery.php +++ b/src/Worker/Delivery.php @@ -340,17 +340,9 @@ class Delivery self::deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup); return; } - } elseif ($cmd != self::RELOCATION) { + } else { // DFRN payload over Diaspora transport layer $deliver_status = DFRN::transmit($owner, $contact, $atom); - if (($deliver_status < 200) && (empty($server_protocol) || ($server_protocol == Model\Post\DeliveryData::LEGACY_DFRN))) { - // Legacy DFRN - $deliver_status = DFRN::deliver($owner, $contact, $atom); - $protocol = Model\Post\DeliveryData::LEGACY_DFRN; - } - } else { - $deliver_status = DFRN::deliver($owner, $contact, $atom); - $protocol = Model\Post\DeliveryData::LEGACY_DFRN; } Logger::info('DFRN Delivery', ['cmd' => $cmd, 'url' => $contact['url'], 'guid' => ($target_item['guid'] ?? '') ?: $target_item['id'], 'return' => $deliver_status]); diff --git a/src/Worker/OptimizeTables.php b/src/Worker/OptimizeTables.php index f98898660..c24d991b5 100644 --- a/src/Worker/OptimizeTables.php +++ b/src/Worker/OptimizeTables.php @@ -42,7 +42,6 @@ class OptimizeTables DBA::e("OPTIMIZE TABLE `auth_codes`"); DBA::e("OPTIMIZE TABLE `cache`"); - DBA::e("OPTIMIZE TABLE `challenge`"); DBA::e("OPTIMIZE TABLE `locks`"); DBA::e("OPTIMIZE TABLE `oembed`"); DBA::e("OPTIMIZE TABLE `parsed_url`"); diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 19688e698..8af6c16eb 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1429); + define('DB_UPDATE_VERSION', 1430); } return [ @@ -175,7 +175,7 @@ return [ "self" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 if the contact is the user him/her self"], "remote_self" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "rel" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "The kind of the relation between the user and the contact"], - "duplex" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], + "duplex" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Deprecated"], "network" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => "Network of the contact"], "protocol" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => "Protocol of the contact"], "name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Name that this contact is known by"], @@ -191,9 +191,9 @@ return [ "thumb" => ["type" => "varchar(255)", "default" => "", "comment" => "Link to the profile photo (thumb size)"], "micro" => ["type" => "varchar(255)", "default" => "", "comment" => "Link to the profile photo (micro size)"], "header" => ["type" => "varchar(255)", "comment" => "Header picture"], - "site-pubkey" => ["type" => "text", "comment" => ""], - "issued-id" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], - "dfrn-id" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], + "site-pubkey" => ["type" => "text", "comment" => "Deprecated"], + "issued-id" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Deprecated"], + "dfrn-id" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Deprecated"], "url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "nurl" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the contact url"], @@ -208,8 +208,8 @@ return [ "confirm" => ["type" => "varchar(255)", "comment" => ""], "subscribe" => ["type" => "varchar(255)", "comment" => ""], "poco" => ["type" => "varchar(255)", "comment" => ""], - "aes_allow" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], - "ret-aes" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], + "aes_allow" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Deprecated"], + "ret-aes" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Deprecated"], "usehub" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "subhub" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "hub-verify" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], @@ -265,8 +265,6 @@ return [ "nurl_uid" => ["nurl(128)", "uid"], "nick_uid" => ["nick(128)", "uid"], "attag_uid" => ["attag(96)", "uid"], - "dfrn-id" => ["dfrn-id(64)"], - "issued-id" => ["issued-id(64)"], "network_uid_lastupdate" => ["network", "uid", "last-update"], "uid_network_self_lastupdate" => ["uid", "network", "self", "last-update"], "uid_lastitem" => ["uid", "last-item"], @@ -524,21 +522,6 @@ return [ "k_expires" => ["k", "expires"], ] ], - "challenge" => [ - "comment" => "", - "fields" => [ - "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"], - "challenge" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], - "dfrn-id" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], - "expire" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => ""], - "type" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], - "last_update" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], - ], - "indexes" => [ - "PRIMARY" => ["id"], - "expire" => ["expire"], - ] - ], "config" => [ "comment" => "main configuration storage", "fields" => [ diff --git a/static/dbview.config.php b/static/dbview.config.php index bb2cd0f17..b2b9875c1 100644 --- a/static/dbview.config.php +++ b/static/dbview.config.php @@ -138,7 +138,6 @@ "uri-date" => ["contact", "uri-date"], "avatar-date" => ["contact", "avatar-date"], "thumb" => ["contact", "thumb"], - "dfrn-id" => ["contact", "dfrn-id"], "author-id" => ["post-user", "author-id"], "author-link" => ["author", "url"], "author-addr" => ["author", "addr"], @@ -298,7 +297,6 @@ "uri-date" => ["contact", "uri-date"], "avatar-date" => ["contact", "avatar-date"], "thumb" => ["contact", "thumb"], - "dfrn-id" => ["contact", "dfrn-id"], "author-id" => ["post-thread-user", "author-id"], "author-link" => ["author", "url"], "author-addr" => ["author", "addr"], @@ -443,7 +441,6 @@ "uri-date" => ["author", "uri-date"], "avatar-date" => ["author", "avatar-date"], "thumb" => ["author", "thumb"], - "dfrn-id" => ["author", "dfrn-id"], "author-id" => ["post", "author-id"], "author-link" => ["author", "url"], "author-addr" => ["author", "addr"], @@ -563,7 +560,6 @@ "uri-date" => ["author", "uri-date"], "avatar-date" => ["author", "avatar-date"], "thumb" => ["author", "thumb"], - "dfrn-id" => ["author", "dfrn-id"], "author-id" => ["post-thread", "author-id"], "author-link" => ["author", "url"], "author-addr" => ["author", "addr"], @@ -708,7 +704,6 @@ "self" => ["contact", "self"], "remote_self" => ["contact", "remote_self"], "rel" => ["contact", "rel"], - "duplex" => ["contact", "duplex"], "network" => ["contact", "network"], "protocol" => ["contact", "protocol"], "name" => ["contact", "name"], @@ -724,9 +719,6 @@ "thumb" => ["contact", "thumb"], "micro" => ["contact", "micro"], "header" => ["contact", "header"], - "site-pubkey" => ["contact", "site-pubkey"], - "issued-id" => ["contact", "issued-id"], - "dfrn-id" => ["contact", "dfrn-id"], "url" => ["contact", "url"], "nurl" => ["contact", "nurl"], "uri-id" => ["contact", "uri-id"], @@ -740,8 +732,6 @@ "poll" => ["contact", "poll"], "confirm" => ["contact", "confirm"], "poco" => ["contact", "poco"], - "aes_allow" => ["contact", "aes_allow"], - "ret-aes" => ["contact", "ret-aes"], "usehub" => ["contact", "usehub"], "subhub" => ["contact", "subhub"], "hub-verify" => ["contact", "hub-verify"], @@ -981,12 +971,6 @@ "subhub" => ["ucontact", "subhub"], "hub-verify" => ["ucontact", "hub-verify"], "reason" => ["ucontact", "reason"], - "dfrn-duplex" => ["ucontact", "duplex"], - "dfrn-ret-aes" => ["ucontact", "ret-aes"], - "dfrn-site-pubkey" => ["ucontact", "site-pubkey"], - "dfrn-issued-id" => ["ucontact", "issued-id"], - "dfrn-id" => ["ucontact", "dfrn-id"], - "dfrn-aes_allow" => ["ucontact", "aes_allow"], "dfrn-request" => ["contact", "request"], "dfrn-notify" => ["contact", "notify"], "dfrn-poll" => ["contact", "poll"], diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index d4a43080e..127423df4 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2021.09-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-07-14 02:55+0000\n" +"POT-Creation-Date: 2021-07-15 08:57+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -54,7 +54,7 @@ msgstr "" msgid "%1$s poked %2$s" msgstr "" -#: include/conversation.php:138 src/Model/Item.php:2647 +#: include/conversation.php:138 src/Model/Item.php:2606 msgid "event" msgstr "" @@ -62,7 +62,7 @@ msgstr "" msgid "status" msgstr "" -#: include/conversation.php:146 mod/tagger.php:90 src/Model/Item.php:2649 +#: include/conversation.php:146 mod/tagger.php:90 src/Model/Item.php:2608 msgid "photo" msgstr "" @@ -184,32 +184,32 @@ msgstr "" msgid "Follow Thread" msgstr "" -#: include/conversation.php:852 src/Model/Contact.php:1045 +#: include/conversation.php:852 src/Model/Contact.php:1043 msgid "View Status" msgstr "" #: include/conversation.php:853 include/conversation.php:875 -#: src/Model/Contact.php:971 src/Model/Contact.php:1037 -#: src/Model/Contact.php:1046 src/Module/Directory.php:166 +#: src/Model/Contact.php:969 src/Model/Contact.php:1035 +#: src/Model/Contact.php:1044 src/Module/Directory.php:166 #: src/Module/Settings/Profile/Index.php:224 msgid "View Profile" msgstr "" -#: include/conversation.php:854 src/Model/Contact.php:1047 +#: include/conversation.php:854 src/Model/Contact.php:1045 msgid "View Photos" msgstr "" -#: include/conversation.php:855 src/Model/Contact.php:1038 -#: src/Model/Contact.php:1048 +#: include/conversation.php:855 src/Model/Contact.php:1036 +#: src/Model/Contact.php:1046 msgid "Network Posts" msgstr "" -#: include/conversation.php:856 src/Model/Contact.php:1039 -#: src/Model/Contact.php:1049 +#: include/conversation.php:856 src/Model/Contact.php:1037 +#: src/Model/Contact.php:1047 msgid "View Contact" msgstr "" -#: include/conversation.php:857 src/Model/Contact.php:1051 +#: include/conversation.php:857 src/Model/Contact.php:1049 msgid "Send PM" msgstr "" @@ -223,7 +223,7 @@ msgstr "" #: include/conversation.php:859 src/Module/Contact.php:634 #: src/Module/Contact.php:892 src/Module/Contact.php:1181 #: src/Module/Notifications/Introductions.php:113 -#: src/Module/Notifications/Introductions.php:191 +#: src/Module/Notifications/Introductions.php:185 #: src/Module/Notifications/Notification.php:59 msgid "Ignore" msgstr "" @@ -232,12 +232,12 @@ msgstr "" msgid "Languages" msgstr "" -#: include/conversation.php:867 src/Model/Contact.php:1052 +#: include/conversation.php:867 src/Model/Contact.php:1050 msgid "Poke" msgstr "" -#: include/conversation.php:872 mod/follow.php:146 src/Content/Widget.php:76 -#: src/Model/Contact.php:1040 src/Model/Contact.php:1053 +#: include/conversation.php:872 mod/follow.php:138 src/Content/Widget.php:76 +#: src/Model/Contact.php:1038 src/Model/Contact.php:1051 #: view/theme/vier/theme.php:172 msgid "Connect/Follow" msgstr "" @@ -476,11 +476,10 @@ msgstr "" msgid "Preview" msgstr "" -#: include/conversation.php:1145 mod/dfrn_request.php:642 mod/editpost.php:128 -#: mod/fbrowser.php:105 mod/fbrowser.php:134 mod/follow.php:152 -#: mod/photos.php:1036 mod/photos.php:1142 mod/tagrm.php:37 mod/tagrm.php:129 -#: mod/unfollow.php:100 src/Module/Contact.php:467 -#: src/Module/RemoteFollow.php:110 +#: include/conversation.php:1145 mod/editpost.php:128 mod/fbrowser.php:105 +#: mod/fbrowser.php:134 mod/follow.php:144 mod/photos.php:1036 +#: mod/photos.php:1142 mod/tagrm.php:37 mod/tagrm.php:129 mod/unfollow.php:97 +#: src/Module/Contact.php:467 src/Module/RemoteFollow.php:110 msgid "Cancel" msgstr "" @@ -823,17 +822,17 @@ msgstr "" msgid "Please visit %s to approve or reject the request." msgstr "" -#: mod/api.php:52 mod/api.php:57 mod/dfrn_confirm.php:78 mod/editpost.php:37 -#: mod/events.php:231 mod/follow.php:55 mod/follow.php:135 mod/item.php:185 -#: mod/item.php:190 mod/item.php:917 mod/message.php:69 mod/message.php:112 -#: mod/notes.php:44 mod/ostatus_subscribe.php:32 mod/photos.php:175 -#: mod/photos.php:921 mod/repair_ostatus.php:31 mod/settings.php:47 -#: mod/settings.php:65 mod/settings.php:474 mod/suggest.php:34 -#: mod/uimport.php:32 mod/unfollow.php:35 mod/unfollow.php:50 -#: mod/unfollow.php:82 mod/wall_attach.php:78 mod/wall_attach.php:81 -#: mod/wall_upload.php:99 mod/wall_upload.php:102 mod/wallmessage.php:35 -#: mod/wallmessage.php:59 mod/wallmessage.php:96 mod/wallmessage.php:120 -#: src/Module/Attach.php:56 src/Module/BaseApi.php:81 src/Module/BaseApi.php:92 +#: mod/api.php:52 mod/api.php:57 mod/editpost.php:37 mod/events.php:231 +#: mod/follow.php:55 mod/follow.php:130 mod/item.php:185 mod/item.php:190 +#: mod/item.php:917 mod/message.php:69 mod/message.php:112 mod/notes.php:44 +#: mod/ostatus_subscribe.php:32 mod/photos.php:175 mod/photos.php:921 +#: mod/repair_ostatus.php:31 mod/settings.php:47 mod/settings.php:65 +#: mod/settings.php:474 mod/suggest.php:34 mod/uimport.php:32 +#: mod/unfollow.php:35 mod/unfollow.php:50 mod/unfollow.php:82 +#: mod/wall_attach.php:78 mod/wall_attach.php:81 mod/wall_upload.php:99 +#: mod/wall_upload.php:102 mod/wallmessage.php:35 mod/wallmessage.php:59 +#: mod/wallmessage.php:96 mod/wallmessage.php:120 src/Module/Attach.php:56 +#: src/Module/BaseApi.php:81 src/Module/BaseApi.php:92 #: src/Module/BaseApi.php:103 src/Module/BaseApi.php:114 #: src/Module/BaseNotifications.php:88 src/Module/Contact.php:385 #: src/Module/Contact/Advanced.php:43 src/Module/Delegation.php:118 @@ -886,7 +885,7 @@ msgid "No" msgstr "" #: mod/cal.php:46 mod/cal.php:50 mod/follow.php:38 mod/redir.php:34 -#: mod/redir.php:203 src/Module/Conversation/Community.php:194 +#: mod/redir.php:176 src/Module/Conversation/Community.php:194 #: src/Module/Debug/ItemBody.php:38 src/Module/Diaspora/Receive.php:51 #: src/Module/Item/Follow.php:42 src/Module/Item/Ignore.php:41 #: src/Module/Item/Pin.php:42 src/Module/Item/Pin.php:57 @@ -968,253 +967,13 @@ msgstr "" msgid "calendar" msgstr "" -#: mod/dfrn_confirm.php:84 src/Module/Profile/Profile.php:82 -msgid "Profile not found." -msgstr "" - -#: mod/dfrn_confirm.php:139 mod/redir.php:56 mod/redir.php:157 -#: src/Module/Contact/Advanced.php:53 src/Module/Contact/Advanced.php:104 -#: src/Module/Contact/Contacts.php:36 src/Module/FriendSuggest.php:54 -#: src/Module/FriendSuggest.php:93 src/Module/Group.php:105 -msgid "Contact not found." -msgstr "" - -#: mod/dfrn_confirm.php:140 -msgid "" -"This may occasionally happen if contact was requested by both persons and it " -"has already been approved." -msgstr "" - -#: mod/dfrn_confirm.php:241 -msgid "Response from remote site was not understood." -msgstr "" - -#: mod/dfrn_confirm.php:248 mod/dfrn_confirm.php:254 -msgid "Unexpected response from remote site: " -msgstr "" - -#: mod/dfrn_confirm.php:263 -msgid "Confirmation completed successfully." -msgstr "" - -#: mod/dfrn_confirm.php:275 -msgid "Temporary failure. Please wait and try again." -msgstr "" - -#: mod/dfrn_confirm.php:278 -msgid "Introduction failed or was revoked." -msgstr "" - -#: mod/dfrn_confirm.php:283 -msgid "Remote site reported: " -msgstr "" - -#: mod/dfrn_confirm.php:388 -#, php-format -msgid "No user record found for '%s' " -msgstr "" - -#: mod/dfrn_confirm.php:398 -msgid "Our site encryption key is apparently messed up." -msgstr "" - -#: mod/dfrn_confirm.php:409 -msgid "Empty site URL was provided or URL could not be decrypted by us." -msgstr "" - -#: mod/dfrn_confirm.php:425 -msgid "Contact record was not found for you on our site." -msgstr "" - -#: mod/dfrn_confirm.php:439 -#, php-format -msgid "Site public key not available in contact record for URL %s." -msgstr "" - -#: mod/dfrn_confirm.php:455 -msgid "" -"The ID provided by your system is a duplicate on our system. It should work " -"if you try again." -msgstr "" - -#: mod/dfrn_confirm.php:466 -msgid "Unable to set your contact credentials on our system." -msgstr "" - -#: mod/dfrn_confirm.php:522 -msgid "Unable to update your contact profile details on our system" -msgstr "" - -#: mod/dfrn_poll.php:136 mod/dfrn_poll.php:509 -#, php-format -msgid "%1$s welcomes %2$s" -msgstr "" - -#: mod/dfrn_request.php:113 -msgid "This introduction has already been accepted." -msgstr "" - -#: mod/dfrn_request.php:131 mod/dfrn_request.php:369 -msgid "Profile location is not valid or does not contain profile information." -msgstr "" - -#: mod/dfrn_request.php:135 mod/dfrn_request.php:373 -msgid "Warning: profile location has no identifiable owner name." -msgstr "" - -#: mod/dfrn_request.php:138 mod/dfrn_request.php:376 -msgid "Warning: profile location has no profile photo." -msgstr "" - -#: mod/dfrn_request.php:142 mod/dfrn_request.php:380 -#, php-format -msgid "%d required parameter was not found at the given location" -msgid_plural "%d required parameters were not found at the given location" -msgstr[0] "" -msgstr[1] "" - -#: mod/dfrn_request.php:180 -msgid "Introduction complete." -msgstr "" - -#: mod/dfrn_request.php:216 -msgid "Unrecoverable protocol error." -msgstr "" - -#: mod/dfrn_request.php:243 src/Module/RemoteFollow.php:54 -msgid "Profile unavailable." -msgstr "" - -#: mod/dfrn_request.php:264 -#, php-format -msgid "%s has received too many connection requests today." -msgstr "" - -#: mod/dfrn_request.php:265 -msgid "Spam protection measures have been invoked." -msgstr "" - -#: mod/dfrn_request.php:266 -msgid "Friends are advised to please try again in 24 hours." -msgstr "" - -#: mod/dfrn_request.php:290 src/Module/RemoteFollow.php:60 -msgid "Invalid locator" -msgstr "" - -#: mod/dfrn_request.php:326 -msgid "You have already introduced yourself here." -msgstr "" - -#: mod/dfrn_request.php:329 -#, php-format -msgid "Apparently you are already friends with %s." -msgstr "" - -#: mod/dfrn_request.php:349 -msgid "Invalid profile URL." -msgstr "" - -#: mod/dfrn_request.php:355 src/Model/Contact.php:2341 -msgid "Disallowed profile URL." -msgstr "" - -#: mod/dfrn_request.php:361 src/Model/Contact.php:2346 -#: src/Module/Friendica.php:80 -msgid "Blocked domain" -msgstr "" - -#: mod/dfrn_request.php:428 src/Module/Contact.php:157 -msgid "Failed to update contact record." -msgstr "" - -#: mod/dfrn_request.php:448 -msgid "Your introduction has been sent." -msgstr "" - -#: mod/dfrn_request.php:480 src/Module/RemoteFollow.php:72 -msgid "" -"Remote subscription can't be done for your network. Please subscribe " -"directly on your system." -msgstr "" - -#: mod/dfrn_request.php:496 -msgid "Please login to confirm introduction." -msgstr "" - -#: mod/dfrn_request.php:504 -msgid "" -"Incorrect identity currently logged in. Please login to <strong>this</" -"strong> profile." -msgstr "" - -#: mod/dfrn_request.php:518 mod/dfrn_request.php:533 -msgid "Confirm" -msgstr "" - -#: mod/dfrn_request.php:529 -msgid "Hide this contact" -msgstr "" - -#: mod/dfrn_request.php:531 -#, php-format -msgid "Welcome home %s." -msgstr "" - -#: mod/dfrn_request.php:532 -#, php-format -msgid "Please confirm your introduction/connection request to %s." -msgstr "" - -#: mod/dfrn_request.php:600 mod/display.php:179 mod/photos.php:835 -#: mod/videos.php:128 src/Module/Conversation/Community.php:188 -#: src/Module/Debug/Probe.php:39 src/Module/Debug/WebFinger.php:38 -#: src/Module/Directory.php:49 src/Module/Search/Index.php:50 -#: src/Module/Search/Index.php:55 +#: mod/display.php:179 mod/photos.php:835 mod/videos.php:128 +#: src/Module/Conversation/Community.php:188 src/Module/Debug/Probe.php:39 +#: src/Module/Debug/WebFinger.php:38 src/Module/Directory.php:49 +#: src/Module/Search/Index.php:50 src/Module/Search/Index.php:55 msgid "Public access denied." msgstr "" -#: mod/dfrn_request.php:636 src/Module/RemoteFollow.php:104 -msgid "Friend/Connection Request" -msgstr "" - -#: mod/dfrn_request.php:637 -#, php-format -msgid "" -"Enter your Webfinger address (user@domain.tld) or profile URL here. If this " -"isn't supported by your system (for example it doesn't work with Diaspora), " -"you have to subscribe to <strong>%s</strong> directly on your system" -msgstr "" - -#: mod/dfrn_request.php:638 src/Module/RemoteFollow.php:106 -#, php-format -msgid "" -"If you are not yet a member of the free social web, <a href=\"%s\">follow " -"this link to find a public Friendica node and join us today</a>." -msgstr "" - -#: mod/dfrn_request.php:639 src/Module/RemoteFollow.php:107 -msgid "Your Webfinger address or profile URL:" -msgstr "" - -#: mod/dfrn_request.php:640 mod/follow.php:147 src/Module/RemoteFollow.php:108 -msgid "Please answer the following:" -msgstr "" - -#: mod/dfrn_request.php:641 mod/follow.php:74 mod/unfollow.php:99 -#: src/Module/RemoteFollow.php:109 -msgid "Submit Request" -msgstr "" - -#: mod/dfrn_request.php:648 mod/follow.php:161 -#, php-format -msgid "%s knows you" -msgstr "" - -#: mod/dfrn_request.php:649 mod/follow.php:162 -msgid "Add a personal note:" -msgstr "" - #: mod/display.php:235 mod/display.php:320 msgid "The requested item doesn't exist or has been deleted." msgstr "" @@ -1331,7 +1090,7 @@ msgstr "" #: mod/events.php:563 src/Model/Event.php:86 src/Model/Event.php:113 #: src/Model/Event.php:475 src/Model/Event.php:962 src/Model/Profile.php:420 #: src/Module/Contact.php:654 src/Module/Directory.php:156 -#: src/Module/Notifications/Introductions.php:172 +#: src/Module/Notifications/Introductions.php:166 #: src/Module/Profile/Profile.php:190 msgid "Location:" msgstr "" @@ -1389,6 +1148,10 @@ msgstr "" msgid "Files" msgstr "" +#: mod/follow.php:74 mod/unfollow.php:96 src/Module/RemoteFollow.php:109 +msgid "Submit Request" +msgstr "" + #: mod/follow.php:84 msgid "You already added this contact." msgstr "" @@ -1405,29 +1168,42 @@ msgstr "" msgid "OStatus support is disabled. Contact can't be added." msgstr "" -#: mod/follow.php:148 mod/unfollow.php:97 +#: mod/follow.php:139 src/Module/RemoteFollow.php:108 +msgid "Please answer the following:" +msgstr "" + +#: mod/follow.php:140 mod/unfollow.php:94 msgid "Your Identity Address:" msgstr "" -#: mod/follow.php:149 mod/unfollow.php:103 +#: mod/follow.php:141 mod/unfollow.php:100 #: src/Module/Admin/Blocklist/Contact.php:100 src/Module/Contact.php:650 #: src/Module/Notifications/Introductions.php:108 -#: src/Module/Notifications/Introductions.php:183 +#: src/Module/Notifications/Introductions.php:177 msgid "Profile URL" msgstr "" -#: mod/follow.php:150 src/Module/Contact.php:660 -#: src/Module/Notifications/Introductions.php:176 +#: mod/follow.php:142 src/Module/Contact.php:660 +#: src/Module/Notifications/Introductions.php:170 #: src/Module/Profile/Profile.php:203 msgid "Tags:" msgstr "" -#: mod/follow.php:171 mod/unfollow.php:113 src/Module/BaseProfile.php:63 +#: mod/follow.php:153 +#, php-format +msgid "%s knows you" +msgstr "" + +#: mod/follow.php:154 +msgid "Add a personal note:" +msgstr "" + +#: mod/follow.php:163 mod/unfollow.php:110 src/Module/BaseProfile.php:63 #: src/Module/Contact.php:939 msgid "Status Messages and Posts" msgstr "" -#: mod/follow.php:203 +#: mod/follow.php:191 msgid "The contact could not be added." msgstr "" @@ -1628,7 +1404,7 @@ msgid "Message collection failure." msgstr "" #: mod/message.php:121 src/Module/Notifications/Introductions.php:114 -#: src/Module/Notifications/Introductions.php:155 +#: src/Module/Notifications/Introductions.php:149 #: src/Module/Notifications/Notification.php:56 msgid "Discard" msgstr "" @@ -2033,10 +1809,17 @@ msgstr "" msgid "{0} and %d others requested registration" msgstr "" -#: mod/redir.php:50 mod/redir.php:130 +#: mod/redir.php:50 mod/redir.php:103 msgid "Bad Request." msgstr "" +#: mod/redir.php:56 mod/redir.php:130 src/Module/Contact/Advanced.php:53 +#: src/Module/Contact/Advanced.php:104 src/Module/Contact/Contacts.php:36 +#: src/Module/FriendSuggest.php:54 src/Module/FriendSuggest.php:93 +#: src/Module/Group.php:105 +msgid "Contact not found." +msgstr "" + #: mod/removeme.php:63 msgid "User deleted their account" msgstr "" @@ -2912,15 +2695,15 @@ msgid "" "select \"Export account\"" msgstr "" -#: mod/unfollow.php:65 mod/unfollow.php:133 +#: mod/unfollow.php:65 mod/unfollow.php:130 msgid "You aren't following this contact." msgstr "" -#: mod/unfollow.php:71 mod/unfollow.php:139 +#: mod/unfollow.php:71 mod/unfollow.php:136 msgid "Unfollowing is currently not supported by your network." msgstr "" -#: mod/unfollow.php:95 +#: mod/unfollow.php:92 msgid "Disconnect/Unfollow" msgstr "" @@ -3652,8 +3435,8 @@ msgid "" "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s" msgstr "" -#: src/Content/Text/BBCode.php:1108 src/Model/Item.php:3175 -#: src/Model/Item.php:3181 src/Model/Item.php:3182 +#: src/Content/Text/BBCode.php:1108 src/Model/Item.php:3134 +#: src/Model/Item.php:3140 src/Model/Item.php:3141 msgid "Link to source" msgstr "" @@ -3808,7 +3591,7 @@ msgstr "" msgid "Organisations" msgstr "" -#: src/Content/Widget.php:532 src/Model/Contact.php:1469 +#: src/Content/Widget.php:532 src/Model/Contact.php:1467 msgid "News" msgstr "" @@ -4629,82 +4412,85 @@ msgstr "" msgid "Legacy module file not found: %s" msgstr "" -#: src/Model/Contact.php:1041 src/Model/Contact.php:1054 +#: src/Model/Contact.php:1039 src/Model/Contact.php:1052 msgid "UnFollow" msgstr "" -#: src/Model/Contact.php:1050 +#: src/Model/Contact.php:1048 msgid "Drop Contact" msgstr "" -#: src/Model/Contact.php:1060 src/Module/Admin/Users/Pending.php:107 +#: src/Model/Contact.php:1058 src/Module/Admin/Users/Pending.php:107 #: src/Module/Notifications/Introductions.php:111 -#: src/Module/Notifications/Introductions.php:189 +#: src/Module/Notifications/Introductions.php:183 msgid "Approve" msgstr "" -#: src/Model/Contact.php:1465 +#: src/Model/Contact.php:1463 msgid "Organisation" msgstr "" -#: src/Model/Contact.php:1473 +#: src/Model/Contact.php:1471 msgid "Forum" msgstr "" -#: src/Model/Contact.php:2351 +#: src/Model/Contact.php:2327 +msgid "Disallowed profile URL." +msgstr "" + +#: src/Model/Contact.php:2332 src/Module/Friendica.php:80 +msgid "Blocked domain" +msgstr "" + +#: src/Model/Contact.php:2337 msgid "Connect URL missing." msgstr "" -#: src/Model/Contact.php:2360 +#: src/Model/Contact.php:2346 msgid "" "The contact could not be added. Please check the relevant network " "credentials in your Settings -> Social Networks page." msgstr "" -#: src/Model/Contact.php:2403 -msgid "" -"This site is not configured to allow communications with other networks." -msgstr "" - -#: src/Model/Contact.php:2404 src/Model/Contact.php:2417 -msgid "No compatible communication protocols or feeds were discovered." -msgstr "" - -#: src/Model/Contact.php:2415 +#: src/Model/Contact.php:2383 msgid "The profile address specified does not provide adequate information." msgstr "" -#: src/Model/Contact.php:2420 +#: src/Model/Contact.php:2385 +msgid "No compatible communication protocols or feeds were discovered." +msgstr "" + +#: src/Model/Contact.php:2388 msgid "An author or name was not found." msgstr "" -#: src/Model/Contact.php:2423 +#: src/Model/Contact.php:2391 msgid "No browser URL could be matched to this address." msgstr "" -#: src/Model/Contact.php:2426 +#: src/Model/Contact.php:2394 msgid "" "Unable to match @-style Identity Address with a known protocol or email " "contact." msgstr "" -#: src/Model/Contact.php:2427 +#: src/Model/Contact.php:2395 msgid "Use mailto: in front of address to force email check." msgstr "" -#: src/Model/Contact.php:2433 +#: src/Model/Contact.php:2401 msgid "" "The profile address specified belongs to a network which has been disabled " "on this site." msgstr "" -#: src/Model/Contact.php:2438 +#: src/Model/Contact.php:2406 msgid "" "Limited profile. This person will be unable to receive direct/personal " "notifications from you." msgstr "" -#: src/Model/Contact.php:2497 +#: src/Model/Contact.php:2465 msgid "Unable to retrieve contact information." msgstr "" @@ -4821,33 +4607,33 @@ msgstr "" msgid "Edit groups" msgstr "" -#: src/Model/Item.php:1701 +#: src/Model/Item.php:1660 #, php-format msgid "Detected languages in this post:\\n%s" msgstr "" -#: src/Model/Item.php:2651 +#: src/Model/Item.php:2610 msgid "activity" msgstr "" -#: src/Model/Item.php:2653 +#: src/Model/Item.php:2612 msgid "comment" msgstr "" -#: src/Model/Item.php:2656 +#: src/Model/Item.php:2615 msgid "post" msgstr "" -#: src/Model/Item.php:2770 +#: src/Model/Item.php:2729 #, php-format msgid "Content warning: %s" msgstr "" -#: src/Model/Item.php:3140 +#: src/Model/Item.php:3099 msgid "bytes" msgstr "" -#: src/Model/Item.php:3169 src/Model/Item.php:3170 +#: src/Model/Item.php:3128 src/Model/Item.php:3129 msgid "View on separate page" msgstr "" @@ -4870,7 +4656,7 @@ msgid "Homepage:" msgstr "" #: src/Model/Profile.php:424 src/Module/Contact.php:658 -#: src/Module/Notifications/Introductions.php:174 +#: src/Module/Notifications/Introductions.php:168 msgid "About:" msgstr "" @@ -4888,7 +4674,7 @@ msgid "Atom feed" msgstr "" #: src/Model/Profile.php:516 src/Module/Contact.php:338 -#: src/Module/Notifications/Introductions.php:186 +#: src/Module/Notifications/Introductions.php:180 msgid "Network:" msgstr "" @@ -7393,6 +7179,10 @@ msgstr[1] "" msgid "Could not access contact record." msgstr "" +#: src/Module/Contact.php:157 +msgid "Failed to update contact record." +msgstr "" + #: src/Module/Contact.php:417 msgid "You can't block yourself" msgstr "" @@ -7592,7 +7382,7 @@ msgstr "" msgid "Awaiting connection acknowledge" msgstr "" -#: src/Module/Contact.php:642 src/Module/Notifications/Introductions.php:177 +#: src/Module/Contact.php:642 src/Module/Notifications/Introductions.php:171 msgid "Hide this contact from others" msgstr "" @@ -8781,7 +8571,7 @@ msgid "Hide Ignored Requests" msgstr "" #: src/Module/Notifications/Introductions.php:94 -#: src/Module/Notifications/Introductions.php:163 +#: src/Module/Notifications/Introductions.php:157 msgid "Notification type:" msgstr "" @@ -8819,11 +8609,11 @@ msgstr "" msgid "Subscriber" msgstr "" -#: src/Module/Notifications/Introductions.php:201 +#: src/Module/Notifications/Introductions.php:195 msgid "No introductions." msgstr "" -#: src/Module/Notifications/Introductions.php:202 +#: src/Module/Notifications/Introductions.php:196 #: src/Module/Notifications/Notifications.php:133 #, php-format msgid "No more %s notifications." @@ -8907,6 +8697,10 @@ msgstr "" msgid "No contacts." msgstr "" +#: src/Module/Profile/Profile.php:82 +msgid "Profile not found." +msgstr "" + #: src/Module/Profile/Profile.php:135 #, php-format msgid "" @@ -9108,10 +8902,28 @@ msgstr "" msgid "Your registration is pending approval by the site owner." msgstr "" +#: src/Module/RemoteFollow.php:54 +msgid "Profile unavailable." +msgstr "" + +#: src/Module/RemoteFollow.php:60 +msgid "Invalid locator" +msgstr "" + #: src/Module/RemoteFollow.php:67 msgid "The provided profile link doesn't seem to be valid" msgstr "" +#: src/Module/RemoteFollow.php:72 +msgid "" +"Remote subscription can't be done for your network. Please subscribe " +"directly on your system." +msgstr "" + +#: src/Module/RemoteFollow.php:104 +msgid "Friend/Connection Request" +msgstr "" + #: src/Module/RemoteFollow.php:105 #, php-format msgid "" @@ -9120,6 +8932,17 @@ msgid "" "or <strong>%s</strong> directly on your system." msgstr "" +#: src/Module/RemoteFollow.php:106 +#, php-format +msgid "" +"If you are not yet a member of the free social web, <a href=\"%s\">follow " +"this link to find a public Friendica node and join us today</a>." +msgstr "" + +#: src/Module/RemoteFollow.php:107 +msgid "Your Webfinger address or profile URL:" +msgstr "" + #: src/Module/Search/Index.php:54 msgid "Only logged in users are permitted to perform a search." msgstr "" @@ -10465,7 +10288,7 @@ msgstr "" msgid "Show fewer" msgstr "" -#: src/Protocol/Diaspora.php:3435 +#: src/Protocol/Diaspora.php:3434 msgid "Attachments:" msgstr "" @@ -10673,7 +10496,7 @@ msgstr "" msgid "%1$d %2$s ago" msgstr "" -#: src/Worker/Delivery.php:529 +#: src/Worker/Delivery.php:521 msgid "(no subject)" msgstr "" diff --git a/view/templates/dfrn_req_confirm.tpl b/view/templates/dfrn_req_confirm.tpl deleted file mode 100644 index 2e586ec33..000000000 --- a/view/templates/dfrn_req_confirm.tpl +++ /dev/null @@ -1,22 +0,0 @@ - - -<p id="dfrn-request-homecoming"> -{{$welcome}} -<br /> -{{$please}} - -</p> -<form id="dfrn-request-homecoming-form" action="dfrn_request/{{$nickname}}" method="post"> -<input type="hidden" name="dfrn_url" value="{{$dfrn_url}}" /> -<input type="hidden" name="confirm_key" value="{{$confirm_key}}" /> -<input type="hidden" name="localconfirm" value="1" /> -{{$aes_allow nofilter}} - -<label id="dfrn-request-homecoming-hide-label" for="dfrn-request-homecoming-hide">{{$hidethem}}</label> -<input type="checkbox" name="hidden-contact" value="1" /> - - -<div id="dfrn-request-homecoming-submit-wrapper"> -<input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="{{$submit}}" /> -</div> -</form> \ No newline at end of file diff --git a/view/templates/dfrn_request.tpl b/view/templates/dfrn_request.tpl deleted file mode 100644 index f1ef7c469..000000000 --- a/view/templates/dfrn_request.tpl +++ /dev/null @@ -1,38 +0,0 @@ -<h1>{{$header}}</h1> - -{{if !$myaddr}} -<p id="dfrn-request-intro"> - {{$page_desc nofilter}} -</p> -<p> - {{$invite_desc nofilter}} -</p> -{{/if}} - -<form action="{{$request}}" method="post"> - <div id="dfrn-request-url-wrapper"> - <label id="dfrn-url-label" for="dfrn-url">{{$your_address}}</label> -{{if $myaddr}} - {{$myaddr}} - <input type="hidden" name="dfrn_url" id="dfrn-url" value="{{$myaddr}}"> -{{else}} - <input type="text" name="dfrn_url" id="dfrn-url" size="32" value="{{$myaddr}}"> -{{/if}} - <div id="dfrn-request-url-end"></div> - </div> - - <p id="dfrn-request-options"> - {{$pls_answer}} - </p> - - <div id="dfrn-request-info-wrapper"> - {{include file="field_checkbox.tpl" field=$does_know_you}} - - {{include file="field_textarea.tpl" field=$addnote_field}} - </div> - - <div id="dfrn-request-submit-wrapper"> - <input type="submit" name="submit" id="dfrn-request-submit-button" value="{{$submit}}"> - <input type="submit" name="cancel" id="dfrn-request-cancel-button" value="{{$cancel}}"> - </div> -</form> diff --git a/view/theme/frio/templates/dfrn_request.tpl b/view/theme/frio/templates/dfrn_request.tpl deleted file mode 100644 index 65f84fd7c..000000000 --- a/view/theme/frio/templates/dfrn_request.tpl +++ /dev/null @@ -1,40 +0,0 @@ -<div class="generic-page-wrapper"> - <h1>{{$header}}</h1> - -{{if !$myaddr}} - <p id="dfrn-request-intro"> - {{$page_desc nofilter}} - </p> - <p> - {{$invite_desc nofilter}} - </p> -{{/if}} - - <form action="{{$request}}" method="post"> - <div id="dfrn-request-url-wrapper"> - <label id="dfrn-url-label" for="dfrn-url">{{$your_address}}</label> -{{if $myaddr}} - {{$myaddr}} - <input type="hidden" name="dfrn_url" id="dfrn-url" value="{{$myaddr}}"> -{{else}} - <input type="text" name="dfrn_url" id="dfrn-url" size="32" value="{{$myaddr}}"> -{{/if}} - <div id="dfrn-request-url-end"></div> - </div> - - <p id="dfrn-request-options"> - {{$pls_answer}} - </p> - - <div id="dfrn-request-info-wrapper"> - {{include file="field_checkbox.tpl" field=$does_know_you}} - - {{include file="field_textarea.tpl" field=$addnote_field}} - </div> - - <div id="dfrn-request-submit-wrapper"> - <input class="btn btn-primary" type="submit" name="submit" id="dfrn-request-submit-button" value="{{$submit}}"> - <input class="btn btn-default" type="submit" name="cancel" id="dfrn-request-cancel-button" value="{{$cancel}}"> - </div> - </form> -</div> From bca5238b41731f0554e3b924eb11efe3a59c6c02 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Thu, 15 Jul 2021 13:37:48 +0000 Subject: [PATCH 088/108] Removed test --- tests/legacy/ApiTest.php | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/tests/legacy/ApiTest.php b/tests/legacy/ApiTest.php index 34cf1e7c6..0f09756e4 100644 --- a/tests/legacy/ApiTest.php +++ b/tests/legacy/ApiTest.php @@ -3518,43 +3518,6 @@ class ApiTest extends FixtureTest $this->markTestIncomplete(); } - /** - * Test the api_friendica_remoteauth() function. - * - * @return void - */ - public function testApiFriendicaRemoteauth() - { - $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class); - api_friendica_remoteauth(); - } - - /** - * Test the api_friendica_remoteauth() function with an URL. - * - * @return void - */ - public function testApiFriendicaRemoteauthWithUrl() - { - $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class); - $_GET['url'] = 'url'; - $_GET['c_url'] = 'url'; - api_friendica_remoteauth(); - } - - /** - * Test the api_friendica_remoteauth() function with a correct URL. - * - * @return void - */ - public function testApiFriendicaRemoteauthWithCorrectUrl() - { - $this->markTestIncomplete("We can't use an assertion here because of App->redirect()."); - $_GET['url'] = 'url'; - $_GET['c_url'] = $this->selfUser['nurl']; - api_friendica_remoteauth(); - } - /** * Test the api_share_as_retweet() function. * From c1e681e0071119117a3d886746809fddbcefe78f Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Thu, 15 Jul 2021 17:42:03 +0000 Subject: [PATCH 089/108] Improved comment --- src/Model/Contact.php | 1 - src/Model/Conversation.php | 2 +- src/Model/Post/DeliveryData.php | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index ab8a7db8c..12cba0c08 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -38,7 +38,6 @@ use Friendica\Network\HTTPException; use Friendica\Network\Probe; use Friendica\Protocol\Activity; use Friendica\Protocol\ActivityPub; -use Friendica\Protocol\DFRN; use Friendica\Protocol\Diaspora; use Friendica\Protocol\OStatus; use Friendica\Protocol\Salmon; diff --git a/src/Model/Conversation.php b/src/Model/Conversation.php index aa2faca50..a485ac2d9 100644 --- a/src/Model/Conversation.php +++ b/src/Model/Conversation.php @@ -38,7 +38,7 @@ class Conversation const PARCEL_SALMON = 3; const PARCEL_FEED = 4; // Deprecated const PARCEL_SPLIT_CONVERSATION = 6; - const PARCEL_LEGACY_DFRN = 7; // Deprecated + const PARCEL_LEGACY_DFRN = 7; // @deprecated since version 2021.09 const PARCEL_DIASPORA_DFRN = 8; const PARCEL_LOCAL_DFRN = 9; const PARCEL_DIRECT = 10; diff --git a/src/Model/Post/DeliveryData.php b/src/Model/Post/DeliveryData.php index 5c7fdd4d3..df1a22ff4 100644 --- a/src/Model/Post/DeliveryData.php +++ b/src/Model/Post/DeliveryData.php @@ -41,7 +41,7 @@ class DeliveryData const ACTIVITYPUB = 1; const DFRN = 2; - const LEGACY_DFRN = 3; + const LEGACY_DFRN = 3; // @deprecated since version 2021.09 const DIASPORA = 4; const OSTATUS = 5; const MAIL = 6; From 209d4d0d6ade08d3491bef06f035ae36fbfefa6b Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Fri, 16 Jul 2021 14:45:29 +0000 Subject: [PATCH 090/108] DFRN endpoints moved, changelog entry added --- CHANGELOG | 1 + mod/dfrn_notify.php | 122 ------------------ src/Module/DFRN/Notify.php | 122 ++++++++++++++++++ mod/dfrn_poll.php => src/Module/DFRN/Poll.php | 19 +-- static/routes.config.php | 11 +- 5 files changed, 140 insertions(+), 135 deletions(-) delete mode 100644 mod/dfrn_notify.php create mode 100644 src/Module/DFRN/Notify.php rename mod/dfrn_poll.php => src/Module/DFRN/Poll.php (79%) diff --git a/CHANGELOG b/CHANGELOG index a69cfc015..cbbbee76d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Version 2021.09 (unreleased) Friendica Core Simplified the proxy mechanism. The proxy cache directory (/proxy) can now be removed [annando] + DFRN is now always handled with the Diaspora transport layer. The legacy DFRN transport layer is removed [annando] Version 2021.07 (2021-07-04) Friendica Core diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php deleted file mode 100644 index f5a1d97bf..000000000 --- a/mod/dfrn_notify.php +++ /dev/null @@ -1,122 +0,0 @@ -<?php -/** - * @copyright Copyright (C) 2010-2021, the Friendica project - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. - * - * The dfrn notify endpoint - * - * @see PDF with dfrn specs: https://github.com/friendica/friendica/blob/stable/spec/dfrn2.pdf - */ - -use Friendica\App; -use Friendica\Core\Logger; -use Friendica\Core\System; -use Friendica\Database\DBA; -use Friendica\Model\Contact; -use Friendica\Model\Conversation; -use Friendica\Network\HTTPException; -use Friendica\Protocol\DFRN; -use Friendica\Protocol\Diaspora; -use Friendica\Util\Network; - -function dfrn_notify_post(App $a) { - $postdata = Network::postdata(); - - if (empty($_POST) || !empty($postdata)) { - $data = json_decode($postdata); - if (is_object($data)) { - $nick = $a->argv[1] ?? ''; - - $user = DBA::selectFirst('user', [], ['nickname' => $nick, 'account_expired' => false, 'account_removed' => false]); - if (!DBA::isResult($user)) { - throw new \Friendica\Network\HTTPException\InternalServerErrorException(); - } - dfrn_dispatch_private($user, $postdata); - } elseif (!dfrn_dispatch_public($postdata)) { - require_once 'mod/salmon.php'; - salmon_post($a, $postdata); - } - } - throw new HTTPException\BadRequestException(); -} - -function dfrn_dispatch_public($postdata) -{ - $msg = Diaspora::decodeRaw($postdata, '', true); - if (!$msg) { - // We have to fail silently to be able to hand it over to the salmon parser - return false; - } - - // Fetch the corresponding public contact - $contact_id = Contact::getIdForURL($msg['author']); - if (empty($contact_id)) { - Logger::log('Contact not found for address ' . $msg['author']); - System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found'); - } - - $importer = DFRN::getImporter($contact_id); - - // This should never fail - if (empty($importer)) { - Logger::log('Contact not found for address ' . $msg['author']); - System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found'); - } - - Logger::log('Importing post from ' . $msg['author'] . ' with the public envelope.', Logger::DEBUG); - - // Now we should be able to import it - $ret = DFRN::import($msg['message'], $importer, Conversation::PARCEL_DIASPORA_DFRN, Conversation::RELAY); - System::xmlExit($ret, 'Done'); -} - -function dfrn_dispatch_private($user, $postdata) -{ - $msg = Diaspora::decodeRaw($postdata, $user['prvkey'] ?? ''); - if (!$msg) { - System::xmlExit(4, 'Unable to parse message'); - } - - // Check if the user has got this contact - $cid = Contact::getIdForURL($msg['author'], $user['uid']); - if (!$cid) { - // Otherwise there should be a public contact - $cid = Contact::getIdForURL($msg['author']); - if (!$cid) { - Logger::log('Contact not found for address ' . $msg['author']); - System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found'); - } - } - - $importer = DFRN::getImporter($cid, $user['uid']); - - // This should never fail - if (empty($importer)) { - Logger::log('Contact not found for address ' . $msg['author']); - System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found'); - } - - Logger::log('Importing post from ' . $msg['author'] . ' to ' . $user['nickname'] . ' with the private envelope.', Logger::DEBUG); - - // Now we should be able to import it - $ret = DFRN::import($msg['message'], $importer, Conversation::PARCEL_DIASPORA_DFRN, Conversation::PUSH); - System::xmlExit($ret, 'Done'); -} - -function dfrn_notify_content(App $a) { - throw new HTTPException\NotFoundException(); -} diff --git a/src/Module/DFRN/Notify.php b/src/Module/DFRN/Notify.php new file mode 100644 index 000000000..eb0434897 --- /dev/null +++ b/src/Module/DFRN/Notify.php @@ -0,0 +1,122 @@ +<?php +/** + * @copyright Copyright (C) 2010-2021, the Friendica project + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + */ + +namespace Friendica\Module\DFRN; + +use Friendica\BaseModule; +use Friendica\Core\Logger; +use Friendica\Core\System; +use Friendica\Model\Contact; +use Friendica\Model\Conversation; +use Friendica\Model\User; +use Friendica\Protocol\DFRN; +use Friendica\Protocol\Diaspora; +use Friendica\Util\Network; +use Friendica\Network\HTTPException; + +/** + * DFRN Notify + */ +class Notify extends BaseModule +{ + public static function post(array $parameters = []) + { + $postdata = Network::postdata(); + + if (empty($postdata)) { + throw new HTTPException\BadRequestException(); + } + + $data = json_decode($postdata); + if (is_object($data) && !empty($parameters['nickname'])) { + $user = User::getByNickname($parameters['nickname']); + if (empty($user)) { + throw new \Friendica\Network\HTTPException\InternalServerErrorException(); + } + self::dispatchPrivate($user, $postdata); + } elseif (!self::dispatchPublic($postdata)) { + require_once 'mod/salmon.php'; + salmon_post($a, $postdata); + } + } + + private static function dispatchPublic($postdata) + { + $msg = Diaspora::decodeRaw($postdata, '', true); + if (!$msg) { + // We have to fail silently to be able to hand it over to the salmon parser + return false; + } + + // Fetch the corresponding public contact + $contact_id = Contact::getIdForURL($msg['author']); + if (empty($contact_id)) { + Logger::notice('Contact not found', ['address' => $msg['author']]); + System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found'); + } + + // Fetch the importer (Mixture of sender and receiver) + $importer = DFRN::getImporter($contact_id); + if (empty($importer)) { + Logger::notice('Importer contact not found', ['address' => $msg['author']]); + System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found'); + } + + Logger::info('Importing post with the public envelope.', ['transmitter' => $msg['author']]); + + // Now we should be able to import it + $ret = DFRN::import($msg['message'], $importer, Conversation::PARCEL_DIASPORA_DFRN, Conversation::RELAY); + System::xmlExit($ret, 'Done'); + } + + private static function dispatchPrivate($user, $postdata) + { + $msg = Diaspora::decodeRaw($postdata, $user['prvkey'] ?? ''); + if (!$msg) { + System::xmlExit(4, 'Unable to parse message'); + } + + // Fetch the contact + $contact = Contact::getByURLForUser($msg['author'], $user['uid'], null, ['id', 'blocked', 'pending']); + if (empty($contact['id'])) { + Logger::notice('Contact not found', ['address' => $msg['author']]); + System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found'); + } + + if ($contact['pending'] || $contact['blocked']) { + Logger::notice('Contact is blocked or pending', ['address' => $msg['author'], 'contact' => $contact]); + System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found'); + } + + // Fetch the importer (Mixture of sender and receiver) + $importer = DFRN::getImporter($contact['id'], $user['uid']); + if (empty($importer)) { + Logger::notice('Importer contact not found for user', ['uid' => $user['uid'], 'cid' => $contact['id'], 'address' => $msg['author']]); + System::xmlExit(3, 'Contact ' . $msg['author'] . ' not found'); + } + + Logger::info('Importing post with the private envelope.', ['transmitter' => $msg['author'], 'receiver' => $user['nickname']]); + + // Now we should be able to import it + $ret = DFRN::import($msg['message'], $importer, Conversation::PARCEL_DIASPORA_DFRN, Conversation::PUSH); + System::xmlExit($ret, 'Done'); + } +} diff --git a/mod/dfrn_poll.php b/src/Module/DFRN/Poll.php similarity index 79% rename from mod/dfrn_poll.php rename to src/Module/DFRN/Poll.php index 7fd3abbd9..d9c7884ec 100644 --- a/mod/dfrn_poll.php +++ b/src/Module/DFRN/Poll.php @@ -19,18 +19,21 @@ * */ -use Friendica\App; -use Friendica\Protocol\OStatus; -use Friendica\Network\HTTPException; +namespace Friendica\Module\DFRN; -function dfrn_poll_init(App $a) +use Friendica\BaseModule; +use Friendica\Protocol\OStatus; + +/** + * DFRN Poll + */ +class Poll extends BaseModule { - if ($a->argc > 1) { - $nickname = $a->argv[1]; + public static function rawContent(array $parameters = []) + { header("Content-type: application/atom+xml"); $last_update = $_GET['last_update'] ?? ''; - echo OStatus::feed($nickname, $last_update, 10); + echo OStatus::feed($parameters['nickname'], $last_update, 10); exit(); } - throw new HTTPException\BadRequestException(); } diff --git a/static/routes.config.php b/static/routes.config.php index 6bc17c414..dfa7dad18 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -245,11 +245,12 @@ return [ '/hovercard' => [Module\Contact\Hovercard::class, [R::GET]], ], - '/credits' => [Module\Credits::class, [R::GET]], - - '/delegation'=> [Module\Delegation::class, [R::GET, R::POST]], - '/dirfind' => [Module\Search\Directory::class, [R::GET]], - '/directory' => [Module\Directory::class, [R::GET]], + '/credits' => [Module\Credits::class, [R::GET]], + '/delegation' => [Module\Delegation::class, [R::GET, R::POST]], + '/dfrn_notify[/{nickname}]' => [Module\DFRN\Notify::class, [R::POST]], + '/dfrn_poll/{nickname}' => [Module\DFRN\Poll::class, [R::GET]], + '/dirfind' => [Module\Search\Directory::class, [R::GET]], + '/directory' => [Module\Directory::class, [R::GET]], '/feed' => [ '/{nickname}' => [Module\Feed::class, [R::GET]], From feab53b58bd51f105c4c97a53914d7ad182c5e3c Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Sat, 17 Jul 2021 04:32:46 +0000 Subject: [PATCH 091/108] Issue 10506: Fix for multiple picture posts --- src/Model/Post/Media.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Model/Post/Media.php b/src/Model/Post/Media.php index 90f42a459..c0f09b8b9 100644 --- a/src/Model/Post/Media.php +++ b/src/Model/Post/Media.php @@ -224,7 +224,7 @@ class Media /** * Fetch media data from local resources - * @param array $media + * @param array $media * @return array media with added data */ private static function fetchLocalData(array $media) @@ -388,7 +388,7 @@ class Media foreach ($attachments as $attachment) { // Only store attachments that are part of the unshared body - if (Item::containsLink($unshared_body, $attachment['url'], $attachment['type'])) { + if (Item::containsLink($unshared_body, $attachment['preview'] ?? $attachment['url'], $attachment['type'])) { self::insert($attachment); } } From 89f7ee2cc58e48e3473a949c2d95e2dad1075171 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Sat, 17 Jul 2021 04:57:21 +0000 Subject: [PATCH 092/108] Prevent endless loop when updating contact by probe --- src/Model/Contact.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 12cba0c08..6cda3e72a 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -2117,7 +2117,7 @@ class Contact } if (Strings::normaliseLink($ret['url']) != Strings::normaliseLink($contact['url'])) { - $cid = self::getIdForURL($ret['url']); + $cid = self::getIdForURL($ret['url'], 0, false); if (!empty($cid) && ($cid != $id)) { Logger::notice('URL of contact changed.', ['id' => $id, 'new_id' => $cid, 'old' => $contact['url'], 'new' => $ret['url']]); return self::updateFromProbeArray($cid, $ret); From 596bb9fa7c0673fdc1919fac78c35ff63c2fcc2e Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Sat, 17 Jul 2021 05:25:04 +0000 Subject: [PATCH 093/108] Fixed wrong parameter --- src/Model/Contact.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 6cda3e72a..fe6fe55f3 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1808,7 +1808,7 @@ class Contact // User contacts use are updated through the public contacts if (($uid != 0) && !in_array($contact['network'], [Protocol::FEED, Protocol::MAIL])) { - $pcid = self::getIdForURL($contact['url'], false); + $pcid = self::getIdForURL($contact['url'], 0, false); if (!empty($pcid)) { Logger::debug('Update the private contact via the public contact', ['id' => $cid, 'uid' => $uid, 'public' => $pcid]); self::updateAvatar($pcid, $avatar, $force, true); From dd2abf254d1d0113eb8bb7221794a62bd76a5296 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Sat, 17 Jul 2021 07:55:19 +0000 Subject: [PATCH 094/108] Issue 10506 - again. Improved check for pictured in body --- src/Model/Item.php | 2 +- src/Model/Post/Media.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Model/Item.php b/src/Model/Item.php index 86b9270fe..b258e8647 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -2883,7 +2883,7 @@ class Item // @todo In the future we should make a single for the template engine with all media in it. This allows more flexibilty. foreach ($attachments['visual'] as $attachment) { - if (self::containsLink($item['body'], $attachment['url'], $attachment['type'])) { + if (self::containsLink($item['body'], $attachment['preview'] ?? $attachment['url'], $attachment['type'])) { continue; } diff --git a/src/Model/Post/Media.php b/src/Model/Post/Media.php index c0f09b8b9..801f192e9 100644 --- a/src/Model/Post/Media.php +++ b/src/Model/Post/Media.php @@ -637,7 +637,7 @@ class Media $body = preg_replace("/\s*\[attachment .*?\].*?\[\/attachment\]\s*/ism", '', $body); foreach (self::getByURIId($uriid, [self::IMAGE, self::AUDIO, self::VIDEO]) as $media) { - if (Item::containsLink($body, $media['url'], $media['type'])) { + if (Item::containsLink($body, $media['preview'] ?? $media['url'], $media['type'])) { continue; } From ea056b93fa30c7cde7f722a8ef111382d11ef544 Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Sat, 17 Jul 2021 20:27:18 +0000 Subject: [PATCH 095/108] Fix notice in events --- src/Model/Item.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Model/Item.php b/src/Model/Item.php index b258e8647..33bd861cc 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1033,9 +1033,9 @@ class Item $ev['guid'] = $item['guid']; $ev['plink'] = $item['plink']; $ev['network'] = $item['network']; - $ev['protocol'] = $item['protocol']; - $ev['direction'] = $item['direction']; - $ev['source'] = $item['source']; + $ev['protocol'] = $item['protocol'] ?? Conversation::PARCEL_UNKNOWN; + $ev['direction'] = $item['direction'] ?? Conversation::UNKNOWN; + $ev['source'] = $item['source'] ?? ''; $event = DBA::selectFirst('event', ['id'], ['uri' => $item['uri'], 'uid' => $item['uid']]); if (DBA::isResult($event)) { From f62f82df75ef96b8c8c09e5a9d3c090b00d352ac Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Sat, 17 Jul 2021 20:28:46 +0000 Subject: [PATCH 096/108] Move ActivityPub endpoints to an AP class --- src/Module/{ => ActivityPub}/Followers.php | 10 ++---- src/Module/{ => ActivityPub}/Following.php | 11 ++----- src/Module/{ => ActivityPub}/Inbox.php | 13 +++----- src/Module/{ => ActivityPub}/Objects.php | 2 +- src/Module/{ => ActivityPub}/Outbox.php | 10 ++---- src/Protocol/ActivityPub/Transmitter.php | 20 ++++++------ static/routes.config.php | 36 +++++++++++----------- 7 files changed, 43 insertions(+), 59 deletions(-) rename src/Module/{ => ActivityPub}/Followers.php (88%) rename src/Module/{ => ActivityPub}/Following.php (86%) rename src/Module/{ => ActivityPub}/Inbox.php (81%) rename src/Module/{ => ActivityPub}/Objects.php (99%) rename src/Module/{ => ActivityPub}/Outbox.php (88%) diff --git a/src/Module/Followers.php b/src/Module/ActivityPub/Followers.php similarity index 88% rename from src/Module/Followers.php rename to src/Module/ActivityPub/Followers.php index 932ebb47c..e1f1ccc4c 100644 --- a/src/Module/Followers.php +++ b/src/Module/ActivityPub/Followers.php @@ -19,10 +19,9 @@ * */ -namespace Friendica\Module; +namespace Friendica\Module\ActivityPub; use Friendica\BaseModule; -use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\User; use Friendica\Protocol\ActivityPub; @@ -34,15 +33,12 @@ class Followers extends BaseModule { public static function rawContent(array $parameters = []) { - $a = DI::app(); - - // @TODO: Replace with parameter from router - if (empty($a->argv[1])) { + if (empty($parameters['nickname'])) { throw new \Friendica\Network\HTTPException\NotFoundException(); } // @TODO: Replace with parameter from router - $owner = User::getOwnerDataByNick($a->argv[1]); + $owner = User::getOwnerDataByNick($parameters['nickname']); if (empty($owner)) { throw new \Friendica\Network\HTTPException\NotFoundException(); } diff --git a/src/Module/Following.php b/src/Module/ActivityPub/Following.php similarity index 86% rename from src/Module/Following.php rename to src/Module/ActivityPub/Following.php index 3070c5bfe..e9cb10be1 100644 --- a/src/Module/Following.php +++ b/src/Module/ActivityPub/Following.php @@ -19,10 +19,9 @@ * */ -namespace Friendica\Module; +namespace Friendica\Module\ActivityPub; use Friendica\BaseModule; -use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\User; use Friendica\Protocol\ActivityPub; @@ -34,15 +33,11 @@ class Following extends BaseModule { public static function rawContent(array $parameters = []) { - $a = DI::app(); - - // @TODO: Replace with parameter from router - if (empty($a->argv[1])) { + if (empty($parameters['nickname'])) { throw new \Friendica\Network\HTTPException\NotFoundException(); } - // @TODO: Replace with parameter from router - $owner = User::getOwnerDataByNick($a->argv[1]); + $owner = User::getOwnerDataByNick($parameters['nickname']); if (empty($owner)) { throw new \Friendica\Network\HTTPException\NotFoundException(); } diff --git a/src/Module/Inbox.php b/src/Module/ActivityPub/Inbox.php similarity index 81% rename from src/Module/Inbox.php rename to src/Module/ActivityPub/Inbox.php index 048edb5d0..36940cb2d 100644 --- a/src/Module/Inbox.php +++ b/src/Module/ActivityPub/Inbox.php @@ -19,7 +19,7 @@ * */ -namespace Friendica\Module; +namespace Friendica\Module\ActivityPub; use Friendica\BaseModule; use Friendica\Core\Logger; @@ -36,8 +36,6 @@ class Inbox extends BaseModule { public static function rawContent(array $parameters = []) { - $a = DI::app(); - $postdata = Network::postdata(); if (empty($postdata)) { @@ -51,13 +49,12 @@ class Inbox extends BaseModule $filename = 'failed-activitypub'; } $tempfile = tempnam(get_temppath(), $filename); - file_put_contents($tempfile, json_encode(['argv' => $a->argv, 'header' => $_SERVER, 'body' => $postdata], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)); - Logger::log('Incoming message stored under ' . $tempfile); + file_put_contents($tempfile, json_encode(['parameters' => $parameters, 'header' => $_SERVER, 'body' => $postdata], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)); + Logger::notice('Incoming message stored', ['file' => $tempfile]); } - // @TODO: Replace with parameter from router - if (!empty($a->argv[1])) { - $user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]); + if (!empty($parameters['nickname'])) { + $user = DBA::selectFirst('user', ['uid'], ['nickname' => $parameters['nickname']]); if (!DBA::isResult($user)) { throw new \Friendica\Network\HTTPException\NotFoundException(); } diff --git a/src/Module/Objects.php b/src/Module/ActivityPub/Objects.php similarity index 99% rename from src/Module/Objects.php rename to src/Module/ActivityPub/Objects.php index 8f1bbf2a5..f597b0905 100644 --- a/src/Module/Objects.php +++ b/src/Module/ActivityPub/Objects.php @@ -19,7 +19,7 @@ * */ -namespace Friendica\Module; +namespace Friendica\Module\ActivityPub; use Friendica\BaseModule; use Friendica\Core\Logger; diff --git a/src/Module/Outbox.php b/src/Module/ActivityPub/Outbox.php similarity index 88% rename from src/Module/Outbox.php rename to src/Module/ActivityPub/Outbox.php index 6e095b730..fe838960d 100644 --- a/src/Module/Outbox.php +++ b/src/Module/ActivityPub/Outbox.php @@ -19,10 +19,9 @@ * */ -namespace Friendica\Module; +namespace Friendica\Module\ActivityPub; use Friendica\BaseModule; -use Friendica\DI; use Friendica\Model\User; use Friendica\Protocol\ActivityPub; use Friendica\Util\HTTPSignature; @@ -34,14 +33,11 @@ class Outbox extends BaseModule { public static function rawContent(array $parameters = []) { - $a = DI::app(); - - // @TODO: Replace with parameter from router - if (empty($a->argv[1])) { + if (empty($parameters['nickname'])) { throw new \Friendica\Network\HTTPException\NotFoundException(); } - $owner = User::getOwnerDataByNick($a->argv[1]); + $owner = User::getOwnerDataByNick($parameters['nickname']); if (empty($owner)) { throw new \Friendica\Network\HTTPException\NotFoundException(); } diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index a65f85542..a65ebc8cd 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -235,26 +235,28 @@ class Transmitter */ public static function getOutbox($owner, $page = null, $requester = '') { - $public_contact = Contact::getIdForURL($owner['url']); - $condition = ['uid' => 0, 'contact-id' => $public_contact, - 'private' => [Item::PUBLIC, Item::UNLISTED]]; + $condition = ['private' => [Item::PUBLIC, Item::UNLISTED]]; if (!empty($requester)) { $requester_id = Contact::getIdForURL($requester, $owner['uid']); if (!empty($requester_id)) { $permissionSets = DI::permissionSet()->selectByContactId($requester_id, $owner['uid']); if (!empty($permissionSets)) { - $condition = ['uid' => $owner['uid'], 'origin' => true, - 'psid' => array_merge($permissionSets->column('id'), + $condition = ['psid' => array_merge($permissionSets->column('id'), [DI::permissionSet()->getIdFromACL($owner['uid'], '', '', '', '')])]; } } } $condition = array_merge($condition, - ['author-id' => $public_contact, - 'gravity' => [GRAVITY_PARENT, GRAVITY_COMMENT], - 'deleted' => false, 'visible' => true]); + ['uid' => $owner['uid'], + 'author-id' => Contact::getIdForURL($owner['url'], 0, false), + 'gravity' => [GRAVITY_PARENT, GRAVITY_COMMENT], + 'network' => Protocol::FEDERATED, + 'parent-network' => Protocol::FEDERATED, + 'origin' => true, + 'deleted' => false, + 'visible' => true]); $count = Post::count($condition); @@ -269,8 +271,6 @@ class Transmitter $data['type'] = 'OrderedCollectionPage'; $list = []; - $condition['parent-network'] = Protocol::NATIVE_SUPPORT; - $items = Post::select(['id'], $condition, ['limit' => [($page - 1) * 20, 20], 'order' => ['created' => true]]); while ($item = Post::fetch($items)) { $activity = self::createActivityFromItem($item['id'], true); diff --git a/static/routes.config.php b/static/routes.config.php index dfa7dad18..64a434665 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -266,14 +266,14 @@ return [ '/status_message/{guid}' => [Module\Diaspora\Fetch::class, [R::GET]], '/reshare/{guid}' => [Module\Diaspora\Fetch::class, [R::GET]], ], - '/filed' => [Module\Search\Filed::class, [R::GET]], - '/filer[/{id:\d+}]' => [Module\Filer\SaveTag::class, [R::GET]], - '/filerm/{id:\d+}' => [Module\Filer\RemoveTag::class, [R::GET]], - '/follow_confirm' => [Module\FollowConfirm::class, [R::GET, R::POST]], - '/followers/{owner}' => [Module\Followers::class, [R::GET]], - '/following/{owner}' => [Module\Following::class, [R::GET]], - '/friendica[/json]' => [Module\Friendica::class, [R::GET]], - '/friendica/inbox' => [Module\Inbox::class, [R::GET, R::POST]], + '/filed' => [Module\Search\Filed::class, [R::GET]], + '/filer[/{id:\d+}]' => [Module\Filer\SaveTag::class, [R::GET]], + '/filerm/{id:\d+}' => [Module\Filer\RemoveTag::class, [R::GET]], + '/follow_confirm' => [Module\FollowConfirm::class, [R::GET, R::POST]], + '/followers/{nickname}' => [Module\ActivityPub\Followers::class, [R::GET]], + '/following/{nickname}' => [Module\ActivityPub\Following::class, [R::GET]], + '/friendica[/json]' => [Module\Friendica::class, [R::GET]], + '/friendica/inbox' => [Module\ActivityPub\Inbox::class, [R::GET, R::POST]], '/fsuggest/{contact:\d+}' => [Module\FriendSuggest::class, [R::GET, R::POST]], @@ -288,12 +288,12 @@ return [ '/{group:\d+}/add/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]], '/{group:\d+}/remove/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]], ], - '/hashtag' => [Module\Hashtag::class, [R::GET]], - '/help[/{doc:.+}]' => [Module\Help::class, [R::GET]], - '/home' => [Module\Home::class, [R::GET]], - '/hcard/{profile}[/{action}]' => [Module\HoverCard::class, [R::GET]], - '/inbox[/{nickname}]' => [Module\Inbox::class, [R::GET, R::POST]], - '/invite' => [Module\Invite::class, [R::GET, R::POST]], + '/hashtag' => [Module\Hashtag::class, [R::GET]], + '/help[/{doc:.+}]' => [Module\Help::class, [R::GET]], + '/home' => [Module\Home::class, [R::GET]], + '/hcard/{profile}[/{action}]' => [Module\HoverCard::class, [R::GET]], + '/inbox[/{nickname}]' => [Module\ActivityPub\Inbox::class, [R::GET, R::POST]], + '/invite' => [Module\Invite::class, [R::GET, R::POST]], '/install' => [ '[/]' => [Module\Install::class, [R::GET, R::POST]], @@ -355,10 +355,10 @@ return [ '/h2b' => [Module\Oembed::class, [R::GET]], '/{hash}' => [Module\Oembed::class, [R::GET]], ], - '/outbox/{owner}' => [Module\Outbox::class, [R::GET]], - '/owa' => [Module\Owa::class, [R::GET]], - '/openid' => [Module\Security\OpenID::class, [R::GET]], - '/opensearch' => [Module\OpenSearch::class, [R::GET]], + '/outbox/{nickname}' => [Module\ActivityPub\Outbox::class, [R::GET]], + '/owa' => [Module\Owa::class, [R::GET]], + '/openid' => [Module\Security\OpenID::class, [R::GET]], + '/opensearch' => [Module\OpenSearch::class, [R::GET]], '/parseurl' => [Module\ParseUrl::class, [R::GET]], '/permission/tooltip/{type}/{id:\d+}' => [Module\PermissionTooltip::class, [R::GET]], From 2030691f9f557e312558d23e88b5e91644b39d6a Mon Sep 17 00:00:00 2001 From: Michael <heluecht@pirati.ca> Date: Sun, 18 Jul 2021 15:05:46 +0000 Subject: [PATCH 097/108] Improved event storing / improved performance when fetching events --- mod/events.php | 15 ++- src/Model/Event.php | 155 +++++++++++-------------- src/Model/Item.php | 6 +- src/Protocol/ActivityPub/Processor.php | 12 +- src/Protocol/DFRN.php | 5 +- 5 files changed, 95 insertions(+), 98 deletions(-) diff --git a/mod/events.php b/mod/events.php index 2bbf4e6a3..aabb608eb 100644 --- a/mod/events.php +++ b/mod/events.php @@ -206,9 +206,6 @@ function events_post(App $a) $datarray['deny_gid'] = $str_group_deny; $datarray['private'] = $private_event; $datarray['id'] = $event_id; - $datarray['network'] = Protocol::DFRN; - $datarray['protocol'] = Conversation::PARCEL_DIRECT; - $datarray['direction'] = Conversation::PUSH; if (intval($_REQUEST['preview'])) { $html = Event::getHTML($datarray); @@ -216,9 +213,17 @@ function events_post(App $a) exit(); } - $uri_id = Event::store($datarray); + $event_id = Event::store($datarray); - if (!$cid) { + $item = ['network' => Protocol::DFRN, 'protocol' => Conversation::PARCEL_DIRECT, 'direction' => Conversation::PUSH]; + $item = Event::getItemArrayForId($event_id, $item); + if (Item::insert($item)) { + $uri_id = $item['uri-id']; + } else { + $uri_id = 0; + } + + if (!$cid && $uri_id) { Worker::add(PRIORITY_HIGH, "Notifier", Delivery::POST, (int)$uri_id, (int)$uid); } diff --git a/src/Model/Event.php b/src/Model/Event.php index ed1cff9c3..924fc7eca 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -259,16 +259,6 @@ class Event */ public static function store($arr) { - $network = $arr['network'] ?? Protocol::DFRN; - $protocol = $arr['protocol'] ?? Conversation::PARCEL_UNKNOWN; - $direction = $arr['direction'] ?? Conversation::UNKNOWN; - $source = $arr['source'] ?? ''; - - unset($arr['network']); - unset($arr['protocol']); - unset($arr['direction']); - unset($arr['source']); - $event = []; $event['id'] = intval($arr['id'] ?? 0); $event['uid'] = intval($arr['uid'] ?? 0); @@ -294,28 +284,17 @@ class Event if ($event['finish'] < DBA::NULL_DATETIME) { $event['finish'] = DBA::NULL_DATETIME; } - $private = intval($arr['private'] ?? 0); - - if ($event['cid']) { - $conditions = ['id' => $event['cid']]; - } else { - $conditions = ['uid' => $event['uid'], 'self' => true]; - } - - $contact = DBA::selectFirst('contact', [], $conditions); - if (!DBA::isResult($contact)) { - Logger::warning('Contact not found', ['condition' => $conditions, 'callstack' => System::callstack(20)]); - } // Existing event being modified. if ($event['id']) { // has the event actually changed? $existing_event = DBA::selectFirst('event', ['edited'], ['id' => $event['id'], 'uid' => $event['uid']]); - if (!DBA::isResult($existing_event) || ($existing_event['edited'] === $event['edited'])) { - - $item = Post::selectFirst(['id'], ['event-id' => $event['id'], 'uid' => $event['uid']]); - - return DBA::isResult($item) ? $item['id'] : 0; + if (!DBA::isResult($existing_event)) { + return 0; + } + + if ($existing_event['edited'] === $event['edited']) { + return $event['id']; } $updated_fields = [ @@ -340,10 +319,6 @@ class Event $fields = ['body' => self::getBBCode($event), 'object' => $object, 'edited' => $event['edited']]; Item::update($fields, ['id' => $item['id']]); - - $uriid = $item['uri-id']; - } else { - $uriid = 0; } Hook::callAll('event_updated', $event['id']); @@ -351,60 +326,69 @@ class Event // New event. Store it. DBA::insert('event', $event); - $uriid = 0; - - // Don't create an item for birthday events - if ($event['type'] == 'event') { - $event['id'] = DBA::lastInsertId(); - - $item_arr = []; - - $item_arr['uid'] = $event['uid']; - $item_arr['contact-id'] = $event['cid']; - $item_arr['uri'] = $event['uri']; - $item_arr['uri-id'] = ItemURI::getIdByURI($event['uri']); - $item_arr['guid'] = $event['guid']; - $item_arr['plink'] = $arr['plink'] ?? ''; - $item_arr['post-type'] = Item::PT_EVENT; - $item_arr['wall'] = $event['cid'] ? 0 : 1; - $item_arr['contact-id'] = $contact['id']; - $item_arr['owner-name'] = $contact['name']; - $item_arr['owner-link'] = $contact['url']; - $item_arr['owner-avatar'] = $contact['thumb']; - $item_arr['author-name'] = $contact['name']; - $item_arr['author-link'] = $contact['url']; - $item_arr['author-avatar'] = $contact['thumb']; - $item_arr['title'] = ''; - $item_arr['allow_cid'] = $event['allow_cid']; - $item_arr['allow_gid'] = $event['allow_gid']; - $item_arr['deny_cid'] = $event['deny_cid']; - $item_arr['deny_gid'] = $event['deny_gid']; - $item_arr['private'] = $private; - $item_arr['visible'] = 1; - $item_arr['verb'] = Activity::POST; - $item_arr['object-type'] = Activity\ObjectType::EVENT; - $item_arr['post-type'] = Item::PT_EVENT; - $item_arr['origin'] = $event['cid'] === 0 ? 1 : 0; - $item_arr['body'] = self::getBBCode($event); - $item_arr['event-id'] = $event['id']; - $item_arr['network'] = $network; - $item_arr['protocol'] = $protocol; - $item_arr['direction'] = $direction; - $item_arr['source'] = $source; - - $item_arr['object'] = '<object><type>' . XML::escape(Activity\ObjectType::EVENT) . '</type><title>' . XML::escape($event['uri']) . ''; - $item_arr['object'] .= '' . XML::escape(self::getBBCode($event)) . ''; - $item_arr['object'] .= '' . "\n"; - - if (Item::insert($item_arr)) { - $uriid = $item_arr['uri-id']; - } - } + $event['id'] = DBA::lastInsertId(); Hook::callAll("event_created", $event['id']); } - return $uriid; + return $event['id']; + } + + public static function getItemArrayForId(int $event_id, array $item = []):array + { + if (empty($event_id)) { + return []; + } + + $event = DBA::selectFirst('event', [], ['id' => $event_id]); + if ($event['type'] != 'event') { + return []; + } + + if ($event['cid']) { + $conditions = ['id' => $event['cid']]; + } else { + $conditions = ['uid' => $event['uid'], 'self' => true]; + } + + $contact = DBA::selectFirst('contact', [], $conditions); + + $event['id'] = $event_id; + + $item['uid'] = $event['uid']; + $item['contact-id'] = $event['cid']; + $item['uri'] = $event['uri']; + $item['uri-id'] = ItemURI::getIdByURI($event['uri']); + $item['guid'] = $event['guid']; + $item['plink'] = $arr['plink'] ?? ''; + $item['post-type'] = Item::PT_EVENT; + $item['wall'] = $event['cid'] ? 0 : 1; + $item['contact-id'] = $contact['id']; + $item['owner-name'] = $contact['name']; + $item['owner-link'] = $contact['url']; + $item['owner-avatar'] = $contact['thumb']; + $item['author-name'] = $contact['name']; + $item['author-link'] = $contact['url']; + $item['author-avatar'] = $contact['thumb']; + $item['title'] = ''; + $item['allow_cid'] = $event['allow_cid']; + $item['allow_gid'] = $event['allow_gid']; + $item['deny_cid'] = $event['deny_cid']; + $item['deny_gid'] = $event['deny_gid']; + $item['private'] = intval($event['private'] ?? 0);; + $item['visible'] = 1; + $item['verb'] = Activity::POST; + $item['object-type'] = Activity\ObjectType::EVENT; + $item['post-type'] = Item::PT_EVENT; + $item['origin'] = $event['cid'] === 0 ? 1 : 0; + $item['body'] = self::getBBCode($event); + $item['event-id'] = $event['id']; + + $item['object'] = '' . XML::escape(Activity\ObjectType::EVENT) . '' . XML::escape($event['uri']) . ''; + $item['object'] .= '' . XML::escape(self::getBBCode($event)) . ''; + $item['object'] .= '' . "\n"; + + return $item; } /** @@ -519,8 +503,8 @@ class Event } // Query for the event by event id - $events = DBA::toArray(DBA::p("SELECT `event`.*, `post-user-view`.`id` AS `itemid` FROM `event` - LEFT JOIN `post-user-view` ON `post-user-view`.`event-id` = `event`.`id` AND `post-user-view`.`uid` = `event`.`uid` + $events = DBA::toArray(DBA::p("SELECT `event`.*, `post-user`.`id` AS `itemid` FROM `event` + LEFT JOIN `post-user` ON `post-user`.`event-id` = `event`.`id` AND `post-user`.`uid` = `event`.`uid` WHERE `event`.`uid` = ? AND `event`.`id` = ? $sql_extra", $owner_uid, $event_id)); @@ -557,9 +541,8 @@ class Event } // Query for the event by date. - // @todo Slow query (518 seconds to run), to be optimzed - $events = DBA::toArray(DBA::p("SELECT `event`.*, `post-user-view`.`id` AS `itemid` FROM `event` - LEFT JOIN `post-user-view` ON `post-user-view`.`event-id` = `event`.`id` AND `post-user-view`.`uid` = `event`.`uid` + $events = DBA::toArray(DBA::p("SELECT `event`.*, `post-user`.`id` AS `itemid` FROM `event` + LEFT JOIN `post-user` ON `post-user`.`event-id` = `event`.`id` AND `post-user`.`uid` = `event`.`uid` WHERE `event`.`uid` = ? AND `event`.`ignore` = ? AND ((NOT `adjust` AND (`finish` >= ? OR (`nofinish` AND `start` >= ?)) AND `start` <= ?) OR (`adjust` AND (`finish` >= ? OR (`nofinish` AND `start` >= ?)) AND `start` <= ?))" . $sql_extra, diff --git a/src/Model/Item.php b/src/Model/Item.php index 33bd861cc..4c2782f56 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1042,8 +1042,10 @@ class Item $ev['id'] = $event['id']; } - $item['event-id'] = Event::store($ev); - Logger::info('Event was stored', ['id' => $item['event-id']]); + $event_id = Event::store($ev); + $item = Event::getItemArrayForId($event_id, $item); + + Logger::info('Event was stored', ['id' => $event_id]); } } diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index f4892b6c0..d84453f73 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -396,6 +396,8 @@ class Processor * * @param array $activity Activity array * @param array $item + * + * @return int event id * @throws \Exception */ public static function createEvent($activity, $item) @@ -419,14 +421,16 @@ class Processor $event['direction'] = $item['direction']; $event['source'] = $item['source']; - $condition = ['uri' => $item['uri'], 'uid' => $item['uid']]; - $ev = DBA::selectFirst('event', ['id'], $condition); + $ev = DBA::selectFirst('event', ['id'], ['uri' => $item['uri'], 'uid' => $item['uid']]); if (DBA::isResult($ev)) { $event['id'] = $ev['id']; } $event_id = Event::store($event); + Logger::info('Event was stored', ['id' => $event_id]); + + return $event_id; } /** @@ -625,7 +629,9 @@ class Processor } if (($item['gravity'] != GRAVITY_ACTIVITY) && ($activity['object_type'] == 'as:Event')) { - self::createEvent($activity, $item); + $event_id = self::createEvent($activity, $item); + + $item = Event::getItemArrayForId($event_id, $item); } $item_id = Item::insert($item); diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 61f5bab62..3c28aca90 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -1976,8 +1976,9 @@ class DFRN } $event_id = Event::store($ev); - Logger::log("Event ".$event_id." was stored", Logger::DEBUG); - return; + Logger::info('Event was stored', ['id' => $event_id]); + + $item = Event::getItemArrayForId($event_id, $item); } } } From d8bf9c4601988216eb95d7a24288a440434454b0 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 18 Jul 2021 16:42:55 +0000 Subject: [PATCH 098/108] Prevent loop also when fetching the outbox --- src/Model/APContact.php | 23 +++++++++++++---------- src/Protocol/ActivityPub/Transmitter.php | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/Model/APContact.php b/src/Model/APContact.php index 1ae34a40a..e9500f85b 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -148,6 +148,19 @@ class APContact $url = $apcontact['url']; } + // Detect multiple fast repeating request to the same address + // See https://github.com/friendica/friendica/issues/9303 + $cachekey = 'apcontact:getByURL:' . $url; + $result = DI::cache()->get($cachekey); + if (!is_null($result)) { + Logger::notice('Multiple requests for the address', ['url' => $url, 'update' => $update, 'callstack' => System::callstack(20), 'result' => $result]); + if (!empty($fetched_contact)) { + return $fetched_contact; + } + } else { + DI::cache()->set($cachekey, System::callstack(20), Duration::FIVE_MINUTES); + } + $curlResult = HTTPSignature::fetchRaw($url); $failed = empty($curlResult) || empty($curlResult->getBody()) || (!$curlResult->isSuccess() && ($curlResult->getReturnCode() != 410)); @@ -171,16 +184,6 @@ class APContact return $fetched_contact; } - // Detect multiple fast repeating request to the same address - // See https://github.com/friendica/friendica/issues/9303 - $cachekey = 'apcontact:getByURL:' . $url; - $result = DI::cache()->get($cachekey); - if (!is_null($result)) { - Logger::notice('Multiple requests for the address', ['url' => $url, 'update' => $update, 'callstack' => System::callstack(20), 'result' => $result]); - } else { - DI::cache()->set($cachekey, System::callstack(20), Duration::FIVE_MINUTES); - } - $apcontact['url'] = $compacted['@id']; $apcontact['uuid'] = JsonLD::fetchElement($compacted, 'diaspora:guid', '@value'); $apcontact['type'] = str_replace('as:', '', JsonLD::fetchElement($compacted, '@type')); diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index a65f85542..c19dcf002 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -235,7 +235,7 @@ class Transmitter */ public static function getOutbox($owner, $page = null, $requester = '') { - $public_contact = Contact::getIdForURL($owner['url']); + $public_contact = Contact::getIdForURL($owner['url'], 0, false); $condition = ['uid' => 0, 'contact-id' => $public_contact, 'private' => [Item::PUBLIC, Item::UNLISTED]]; From 424a85bb9424d5b826734147add52f4d196f13c9 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 18 Jul 2021 18:54:25 +0000 Subject: [PATCH 099/108] Fetch local data without HTTP requests --- src/Model/APContact.php | 55 +++++++++++++++++++++++++----------- src/Protocol/ActivityPub.php | 2 -- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/src/Model/APContact.php b/src/Model/APContact.php index e9500f85b..a4c97f623 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -31,11 +31,13 @@ use Friendica\DI; use Friendica\Network\Probe; use Friendica\Protocol\ActivityNamespace; use Friendica\Protocol\ActivityPub; +use Friendica\Protocol\ActivityPub\Transmitter; use Friendica\Util\Crypto; use Friendica\Util\DateTimeFormat; use Friendica\Util\HTTPSignature; use Friendica\Util\JsonLD; use Friendica\Util\Network; +use Friendica\Util\Strings; class APContact { @@ -161,22 +163,31 @@ class APContact DI::cache()->set($cachekey, System::callstack(20), Duration::FIVE_MINUTES); } - $curlResult = HTTPSignature::fetchRaw($url); - $failed = empty($curlResult) || empty($curlResult->getBody()) || - (!$curlResult->isSuccess() && ($curlResult->getReturnCode() != 410)); - - if (!$failed) { - $data = json_decode($curlResult->getBody(), true); - $failed = empty($data) || !is_array($data); + if (Network::isLocalLink($url) && ($local_uid = User::getIdForURL($url))) { + $data = Transmitter::getProfile($local_uid); + $local_owner = User::getOwnerDataById($local_uid); } - if (!$failed && ($curlResult->getReturnCode() == 410)) { - $data = ['@context' => ActivityPub::CONTEXT, 'id' => $url, 'type' => 'Tombstone']; - } + if (empty($data)) { + $local_owner = []; - if ($failed) { - self::markForArchival($fetched_contact ?: []); - return $fetched_contact; + $curlResult = HTTPSignature::fetchRaw($url); + $failed = empty($curlResult) || empty($curlResult->getBody()) || + (!$curlResult->isSuccess() && ($curlResult->getReturnCode() != 410)); + + if (!$failed) { + $data = json_decode($curlResult->getBody(), true); + $failed = empty($data) || !is_array($data); + } + + if (!$failed && ($curlResult->getReturnCode() == 410)) { + $data = ['@context' => ActivityPub::CONTEXT, 'id' => $url, 'type' => 'Tombstone']; + } + + if ($failed) { + self::markForArchival($fetched_contact ?: []); + return $fetched_contact; + } } $compacted = JsonLD::compact($data); @@ -267,7 +278,11 @@ class APContact } if (!empty($apcontact['following'])) { - $following = ActivityPub::fetchContent($apcontact['following']); + if (!empty($local_owner)) { + $following = ActivityPub\Transmitter::getContacts($local_owner, [Contact::SHARING, Contact::FRIEND], 'following'); + } else { + $following = ActivityPub::fetchContent($apcontact['following']); + } if (!empty($following['totalItems'])) { // Mastodon seriously allows for this condition? // Jul 14 2021 - See https://mastodon.social/@BLUW for a negative following count @@ -279,7 +294,11 @@ class APContact } if (!empty($apcontact['followers'])) { - $followers = ActivityPub::fetchContent($apcontact['followers']); + if (!empty($local_owner)) { + $followers = ActivityPub\Transmitter::getContacts($local_owner, [Contact::FOLLOWER, Contact::FRIEND], 'followers'); + } else { + $followers = ActivityPub::fetchContent($apcontact['followers']); + } if (!empty($followers['totalItems'])) { // Mastodon seriously allows for this condition? // Jul 14 2021 - See https://mastodon.online/@goes11 for a negative followers count @@ -291,7 +310,11 @@ class APContact } if (!empty($apcontact['outbox'])) { - $outbox = ActivityPub::fetchContent($apcontact['outbox']); + if (!empty($local_owner)) { + $outbox = ActivityPub\Transmitter::getOutbox($local_owner); + } else { + $outbox = ActivityPub::fetchContent($apcontact['outbox']); + } if (!empty($outbox['totalItems'])) { $apcontact['statuses_count'] = $outbox['totalItems']; } diff --git a/src/Protocol/ActivityPub.php b/src/Protocol/ActivityPub.php index 134f69f4a..0f62ab537 100644 --- a/src/Protocol/ActivityPub.php +++ b/src/Protocol/ActivityPub.php @@ -22,8 +22,6 @@ namespace Friendica\Protocol; use Friendica\Core\Protocol; -use Friendica\Database\DBA; -use Friendica\DI; use Friendica\Model\APContact; use Friendica\Model\User; use Friendica\Util\HTTPSignature; From aa6313dee6b46353dc5d6a6b0b74449842357daf Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 19 Jul 2021 04:15:57 +0000 Subject: [PATCH 100/108] Improved detection for a local contact --- src/Model/APContact.php | 18 ++++++++++++++++-- src/Model/Contact.php | 7 +++++++ src/Network/Probe.php | 2 +- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/Model/APContact.php b/src/Model/APContact.php index a4c97f623..7bdde60c6 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -54,6 +54,20 @@ class APContact return []; } + if (Contact::isLocal($addr) && ($local_uid = User::getIdForURL($addr)) && ($local_owner = User::getOwnerDataById($local_uid))) { + $data = [ + 'addr' => $local_owner['addr'], + 'baseurl' => $local_owner['baseurl'], + 'url' => $local_owner['url'], + 'subscribe' => $local_owner['baseurl'] . '/follow?url={uri}']; + + if (!empty($local_owner['alias']) && ($local_owner['url'] != $local_owner['alias'])) { + $data['alias'] = $local_owner['alias']; + } + + return $data; + } + $data = ['addr' => $addr]; $template = 'https://' . $addr_parts[1] . '/.well-known/webfinger?resource=acct:' . urlencode($addr); $webfinger = Probe::webfinger(str_replace('{uri}', urlencode($addr), $template), 'application/jrd+json'); @@ -284,7 +298,7 @@ class APContact $following = ActivityPub::fetchContent($apcontact['following']); } if (!empty($following['totalItems'])) { - // Mastodon seriously allows for this condition? + // Mastodon seriously allows for this condition? // Jul 14 2021 - See https://mastodon.social/@BLUW for a negative following count if ($following['totalItems'] < 0) { $following['totalItems'] = 0; @@ -300,7 +314,7 @@ class APContact $followers = ActivityPub::fetchContent($apcontact['followers']); } if (!empty($followers['totalItems'])) { - // Mastodon seriously allows for this condition? + // Mastodon seriously allows for this condition? // Jul 14 2021 - See https://mastodon.online/@goes11 for a negative followers count if ($followers['totalItems'] < 0) { $followers['totalItems'] = 0; diff --git a/src/Model/Contact.php b/src/Model/Contact.php index fe6fe55f3..c68039643 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -453,6 +453,13 @@ class Contact */ public static function isLocal($url) { + if (!parse_url($url, PHP_URL_SCHEME)) { + $addr_parts = explode('@', $url); + if (count($addr_parts) == 2) { + return $addr_parts[1] == DI::baseUrl()->getHostname(); + } + } + return Strings::compareLink(self::getBasepath($url, true), DI::baseUrl()); } diff --git a/src/Network/Probe.php b/src/Network/Probe.php index e44a8d326..12a5b2692 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -333,7 +333,7 @@ class Probe public static function uri($uri, $network = '', $uid = -1) { // Local profiles aren't probed via network - if (empty($network) && strpos($uri, DI::baseUrl()->getHostname())) { + if (empty($network) && Contact::isLocal($uri)) { $data = self::localProbe($uri); if (!empty($data)) { return $data; From 01abea7c258ba45b348b93c89aabef5e653c21f4 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 19 Jul 2021 04:49:58 +0000 Subject: [PATCH 101/108] Don't probe non existing local contacts --- src/Network/Probe.php | 54 +++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/src/Network/Probe.php b/src/Network/Probe.php index 12a5b2692..9ee338e8f 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -2201,39 +2201,33 @@ class Probe */ private static function localProbe(string $url) { - $uid = User::getIdForURL($url); - if (empty($uid)) { - return []; - } + if ($uid = User::getIdForURL($url)) { + $profile = User::getOwnerDataById($uid); + $approfile = ActivityPub\Transmitter::getProfile($uid); - $profile = User::getOwnerDataById($uid); - if (empty($profile)) { - return []; - } + if (empty($profile['gsid'])) { + $profile['gsid'] = GServer::getID($approfile['generator']['url']); + } - $approfile = ActivityPub\Transmitter::getProfile($uid); - if (empty($approfile)) { - return []; + $data = ['name' => $profile['name'], 'nick' => $profile['nick'], 'guid' => $approfile['diaspora:guid'] ?? '', + 'url' => $profile['url'], 'addr' => $profile['addr'], 'alias' => $profile['alias'], + 'photo' => Contact::getAvatarUrlForId($profile['id'], $profile['updated']), + 'header' => $profile['header'] ? Contact::getHeaderUrlForId($profile['id'], $profile['updated']) : '', + 'account-type' => $profile['contact-type'], 'community' => ($profile['contact-type'] == User::ACCOUNT_TYPE_COMMUNITY), + 'keywords' => $profile['keywords'], 'location' => $profile['location'], 'about' => $profile['about'], + 'hide' => !$profile['net-publish'], 'batch' => '', 'notify' => $profile['notify'], + 'poll' => $profile['poll'], 'request' => $profile['request'], 'confirm' => $profile['confirm'], + 'subscribe' => $approfile['generator']['url'] . '/follow?url={uri}', 'poco' => $profile['poco'], + 'following' => $approfile['following'], 'followers' => $approfile['followers'], + 'inbox' => $approfile['inbox'], 'outbox' => $approfile['outbox'], + 'sharedinbox' => $approfile['endpoints']['sharedInbox'], 'network' => Protocol::DFRN, + 'pubkey' => $profile['upubkey'], 'baseurl' => $approfile['generator']['url'], 'gsid' => $profile['gsid'], + 'manually-approve' => in_array($profile['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP])]; + } else { + // Default values for non existing targets + $data = ['name' => $url, 'nick' => $url, 'url' => $url, 'network' => Protocol::PHANTOM, + 'photo' => DI::baseUrl() . Contact::DEFAULT_AVATAR_PHOTO]; } - - if (empty($profile['gsid'])) { - $profile['gsid'] = GServer::getID($approfile['generator']['url']); - } - - $data = ['name' => $profile['name'], 'nick' => $profile['nick'], 'guid' => $approfile['diaspora:guid'] ?? '', - 'url' => $profile['url'], 'addr' => $profile['addr'], 'alias' => $profile['alias'], - 'photo' => Contact::getAvatarUrlForId($profile['id'], $profile['updated']), - 'header' => $profile['header'] ? Contact::getHeaderUrlForId($profile['id'], $profile['updated']) : '', - 'account-type' => $profile['contact-type'], 'community' => ($profile['contact-type'] == User::ACCOUNT_TYPE_COMMUNITY), - 'keywords' => $profile['keywords'], 'location' => $profile['location'], 'about' => $profile['about'], - 'hide' => !$profile['net-publish'], 'batch' => '', 'notify' => $profile['notify'], - 'poll' => $profile['poll'], 'request' => $profile['request'], 'confirm' => $profile['confirm'], - 'subscribe' => $approfile['generator']['url'] . '/follow?url={uri}', 'poco' => $profile['poco'], - 'following' => $approfile['following'], 'followers' => $approfile['followers'], - 'inbox' => $approfile['inbox'], 'outbox' => $approfile['outbox'], - 'sharedinbox' => $approfile['endpoints']['sharedInbox'], 'network' => Protocol::DFRN, - 'pubkey' => $profile['upubkey'], 'baseurl' => $approfile['generator']['url'], 'gsid' => $profile['gsid'], - 'manually-approve' => in_array($profile['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP])]; return self::rearrangeData($data); } } From 2647514603852fe5fb9f47f0bf153dd20c124ce6 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 19 Jul 2021 06:14:14 +0000 Subject: [PATCH 102/108] Detection of local requests --- src/Model/Photo.php | 24 +++++++++++++----------- src/Network/HTTPRequest.php | 12 ++++++++++++ src/Util/Images.php | 13 +++++++++++-- 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/src/Model/Photo.php b/src/Model/Photo.php index 61fc2df4e..30e666898 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -804,30 +804,33 @@ class Photo } /** - * Returns the GUID from picture links + * Fetch the guid and scale from picture links * * @param string $name Picture link - * @return string GUID - * @throws \Exception + * @return array */ - public static function getGUID($name) + public static function getResourceData(string $name):array { $base = DI::baseUrl()->get(); $guid = str_replace([Strings::normaliseLink($base), '/photo/'], '', Strings::normaliseLink($name)); + if (parse_url($guid, PHP_URL_SCHEME)) { + return []; + } + $guid = self::stripExtension($guid); if (substr($guid, -2, 1) != "-") { - return ''; + return []; } $scale = intval(substr($guid, -1, 1)); if (!is_numeric($scale)) { - return ''; + return []; } $guid = substr($guid, 0, -2); - return $guid; + return ['guid' => $guid, 'scale' => $scale]; } /** @@ -839,13 +842,12 @@ class Photo */ public static function isLocal($name) { - $guid = self::getGUID($name); - - if (empty($guid)) { + $data = self::getResourceData($name); + if (empty($data)) { return false; } - return DBA::exists('photo', ['resource-id' => $guid]); + return DBA::exists('photo', ['resource-id' => $data['guid'], 'scale' => $data['scale']]); } /** diff --git a/src/Network/HTTPRequest.php b/src/Network/HTTPRequest.php index bd31ac1e1..622828b43 100644 --- a/src/Network/HTTPRequest.php +++ b/src/Network/HTTPRequest.php @@ -74,6 +74,10 @@ class HTTPRequest implements IHTTPRequest { $stamp1 = microtime(true); + if (Network::isLocalLink($url)) { + $this->logger->info('Local link', ['url' => $url, 'callstack' => System::callstack(20)]); + } + if (strlen($url) > 1000) { $this->logger->debug('URL is longer than 1000 characters.', ['url' => $url, 'callstack' => System::callstack(20)]); $this->profiler->saveTimestamp($stamp1, 'network'); @@ -226,6 +230,10 @@ class HTTPRequest implements IHTTPRequest { $stamp1 = microtime(true); + if (Network::isLocalLink($url)) { + $this->logger->info('Local link', ['url' => $url, 'callstack' => System::callstack(20)]); + } + if (Network::isUrlBlocked($url)) { $this->logger->info('Domain is blocked.' . ['url' => $url]); $this->profiler->saveTimestamp($stamp1, 'network'); @@ -328,6 +336,10 @@ class HTTPRequest implements IHTTPRequest */ public function finalUrl(string $url, int $depth = 1, bool $fetchbody = false) { + if (Network::isLocalLink($url)) { + $this->logger->info('Local link', ['url' => $url, 'callstack' => System::callstack(20)]); + } + if (Network::isUrlBlocked($url)) { $this->logger->info('Domain is blocked.', ['url' => $url]); return $url; diff --git a/src/Util/Images.php b/src/Util/Images.php index 7b11ea3f6..3b07aee2f 100644 --- a/src/Util/Images.php +++ b/src/Util/Images.php @@ -22,8 +22,8 @@ namespace Friendica\Util; use Friendica\Core\Logger; -use Friendica\Core\System; use Friendica\DI; +use Friendica\Model\Photo; /** * Image utilities @@ -184,7 +184,16 @@ class Images return $data; } - $img_str = DI::httpRequest()->fetch($url, 4); + if (Network::isLocalLink($url) && ($data = Photo::getResourceData($url))) { + $photo = Photo::getPhoto($data['guid'], $data['scale']); + if (!empty($photo)) { + $img_str = Photo::getImageDataForPhoto($photo); + } + } + + if (empty($img_str)) { + $img_str = DI::httpRequest()->fetch($url, 4); + } if (!$img_str) { return []; From fa00a4ee32a693459c0d000576afada7523e79d1 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 19 Jul 2021 06:19:13 +0000 Subject: [PATCH 103/108] Simplyfied picture fetching --- src/Util/Images.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Util/Images.php b/src/Util/Images.php index 3b07aee2f..dd4848606 100644 --- a/src/Util/Images.php +++ b/src/Util/Images.php @@ -185,7 +185,7 @@ class Images } if (Network::isLocalLink($url) && ($data = Photo::getResourceData($url))) { - $photo = Photo::getPhoto($data['guid'], $data['scale']); + $photo = Photo::selectFirst([], ['resource-id' => $data['guid'], 'scale' => $data['scale']]); if (!empty($photo)) { $img_str = Photo::getImageDataForPhoto($photo); } From f5a7b0141b6ea9199844d2b021bace30130df578 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 19 Jul 2021 06:55:23 +0000 Subject: [PATCH 104/108] Added todo --- src/Util/Images.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Util/Images.php b/src/Util/Images.php index dd4848606..bf84ee6c2 100644 --- a/src/Util/Images.php +++ b/src/Util/Images.php @@ -189,6 +189,7 @@ class Images if (!empty($photo)) { $img_str = Photo::getImageDataForPhoto($photo); } + // @todo Possibly add a check for locally stored files } if (empty($img_str)) { From 64026ed979efa38a3f092e1546fbbfd953cf66c0 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 19 Jul 2021 12:07:02 +0000 Subject: [PATCH 105/108] Simplify code --- src/Model/Contact.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index c68039643..20135a49e 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -455,9 +455,7 @@ class Contact { if (!parse_url($url, PHP_URL_SCHEME)) { $addr_parts = explode('@', $url); - if (count($addr_parts) == 2) { - return $addr_parts[1] == DI::baseUrl()->getHostname(); - } + return (count($addr_parts) == 2) && ($addr_parts[1] == DI::baseUrl()->getHostname()); } return Strings::compareLink(self::getBasepath($url, true), DI::baseUrl()); From 289a4dcba74dd7c4d355d3aa5453866e71392bd4 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 19 Jul 2021 16:15:06 +0000 Subject: [PATCH 106/108] Added missing app class (avoid fatal error) --- src/Module/DFRN/Notify.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Module/DFRN/Notify.php b/src/Module/DFRN/Notify.php index eb0434897..6aeb23417 100644 --- a/src/Module/DFRN/Notify.php +++ b/src/Module/DFRN/Notify.php @@ -24,6 +24,7 @@ namespace Friendica\Module\DFRN; use Friendica\BaseModule; use Friendica\Core\Logger; use Friendica\Core\System; +use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Conversation; use Friendica\Model\User; @@ -54,7 +55,7 @@ class Notify extends BaseModule self::dispatchPrivate($user, $postdata); } elseif (!self::dispatchPublic($postdata)) { require_once 'mod/salmon.php'; - salmon_post($a, $postdata); + salmon_post(DI::app(), $postdata); } } From f3131c62778817a98db6f8812e1f322fee3ed0ce Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Mon, 19 Jul 2021 14:00:31 -0400 Subject: [PATCH 107/108] Manually add Persian to post body language detection --- src/Model/Item.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Model/Item.php b/src/Model/Item.php index 4c2782f56..5a0c1066c 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1642,7 +1642,13 @@ class Item return ''; } - $ld = new Language(DI::l10n()->getAvailableLanguages()); + $availableLanguages = DI::l10n()->getAvailableLanguages(); + // See https://github.com/friendica/friendica/issues/10511 + // Persian is manually added to language detection until a persian translation is provided for the interface, at + // which point it will be automatically available through `getAvailableLanguages()` and this should be removed. + $availableLanguages['fa'] = 'fa'; + + $ld = new Language($availableLanguages); $languages = $ld->detect($naked_body)->limit(0, 3)->close(); if (is_array($languages)) { return json_encode($languages); From 9947b2e6e374d17c8779a9774ac4b0a5d818e53e Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 19 Jul 2021 23:14:16 +0000 Subject: [PATCH 108/108] Fix warning "class 'Friendica\Module\Objects' not found" --- static/routes.config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/routes.config.php b/static/routes.config.php index 64a434665..bfa46831d 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -348,7 +348,7 @@ return [ '/token' => [Module\OAuth\Token::class, [R::POST]], ], - '/objects/{guid}[/{activity}]' => [Module\Objects::class, [R::GET]], + '/objects/{guid}[/{activity}]' => [Module\ActivityPub\Objects::class, [R::GET]], '/oembed' => [ '/b2h' => [Module\Oembed::class, [R::GET]],